It looks like the Status() function is returning the same value repeatedly causing the code to be run over and over.
Try setting and checking a global variable:
if ((ComboLock.Status() == eLockStatusCorrect) && (GetGlobalInt(300) != 1)) {
Display("Woot!");
SetGlobalInt(300, 1);
}
else if ((ComboLock.Status() == eLockStatusWrong) && (GetGlobalInt(300) != 2)) {
PlaySound(4);
SetGlobalInt(300, 2);
}
Then in the code for the interaction you may want to put:
SetGlobalInt(300, 0);
I hope this helps (Seeing as I should be doing my English homework and then going to bed).