The lockpicking has _definitely_ been a divisive mechanic in the game. Broadly I liked the challenge of things but having a DDR challenge at the end of a platforming segment was targeting a very _specific_ cross section of players.
Honestly, it's been forever since I've looked at this code (and I'd probably tackle it differently now) but if you want to see how I went about implementing it here's the object that contained all of the logic for the lockpicking: http://bit.ly/STlockpicking
You should be able to drop that into your project and start messing with it if you want.
The core of it uses an enum for up/down/left/right inputs (which allows it to be used when referencing ds_lists to check for code input errors).
Then the object uses two ds_list objects. One is generated when the object is created AND whenever an incorrect input is made (which is what happens when the pins shuffle). The second ds_list is dynamically made as you make inputs.
At each step the object cycles through both ds_lists and checks to make sure they are the same. If it detects a missmatch then it shuffles things, resets the code and starts the process over.