// Define the executable and variables state("BRAINPC") { int timer : "BRAINPC.EXE", 0xDD7C; int level : "BRAINPC.EXE", 0xD9F0; int status : "BRAINPC.EXE", 0xDD80; } startup { // Needed in `update` to reset an `Ended` timer vars.TimerModel = new TimerModel { CurrentState = timer }; } start { if (vars.gameStarted) { print("New game"); return true; } } split { if (!vars.inGame) { print("Game Over"); return true; } if (vars.levelChanged) { print("Split"); return true; } } reset { if (vars.firstLevel) { if (vars.levelChanged) { print("Restarting from another level"); return true; } if (vars.timerStarted) { print("Restarting from first level"); return true; } } } update { vars.inGame == current.status == 1; vars.firstLevel = current.level == 1; vars.levelChanged = current.level != old.level; vars.timerStarted = current.timer > old.timer; vars.gameStarted = vars.inGame && vars.firstLevel && vars.timerStarted; if (timer.CurrentPhase == TimerPhase.Ended && settings.ResetEnabled && vars.gameStarted) { print("Restarting from main menu"); vars.TimerModel.Reset(); // Reset `Ended` timer } }