We make a lot of use of Game.Interactive = false, mainly on doors.
on "LeftClick"
{
Game.Interactive = false;
//Display the open door
//Play the door sound
Sleep(1000);
Game.ChangeScene(destination scene);
Game.Interactive = true;
}
With the above routine, Game.Interactive = false; was used because the documentation says it disables user input. But as several of our testers have found, Game.Interactive = false can be defeated. If the player clicks again during that routine (i.e. double-click), the ChangeScene takes place, but the Game.Interactive = true; isn't obeyed and the player is left permanently with the egg timer.
Our workaround is to disable the hotspot before the Game.Interactive = false; thus:
on "LeftClick"
{
var a = Scene.GetNode("open_door");
a.Active = false;
Game.Interactive = false;
//Display the open door
//Play the door sound
Sleep(1000);
Game.ChangeScene(destination scene);
Game.Interactive = true;
}
So as to disable input locally before doing it at a Game object level. Then it seems impossible to cause the hang.