state("Far Far Away From Here") { // level id static int levelID : 0x72F408; // alive state with pointers int isAlive : "Far Far Away From Here.exe", 0x511A60, 0x0, 0x10, 0x8C, 0x10, 0x108, 0x8, 0x2C0; // scuffed way to search did the user reset or not its acctually just 4 bytes after the alive state int restartWatch : "Far Far Away From Here.exe", 0x511A60, 0x0, 0x10, 0x8C, 0x10, 0x108, 0x8, 0x2C4; } startup { // start with -1 so its an impossible level vars.lastLevel = -1; } update { // debugging use debugviewer // print("[ASL DEBUG] Lvl: " + current.levelID + " | Watch: " + current.restartWatch.ToString("X")); } reset { // reset if ur in menu if (current.levelID == 7 && vars.lastLevel != 7) { vars.lastLevel = 7; return true; } // reset on 1 causes the time to reset if (current.levelID == 1) { // checking for reset with the scuffed way to check for reset if (current.restartWatch != old.restartWatch) { return true; } } } start { // starting if (current.levelID == 1) { if (vars.lastLevel == 7 || vars.lastLevel == -1) { vars.lastLevel = current.levelID; return true; } if (old.isAlive == 0 && current.isAlive == 1) { vars.lastLevel = current.levelID; return true; } if (current.restartWatch != old.restartWatch) { vars.lastLevel = current.levelID; return true; } } } split { if (current.levelID != vars.lastLevel && vars.lastLevel != -1) { int prev = vars.lastLevel; vars.lastLevel = current.levelID; // dont split on menu if (current.levelID != 7 && prev != 7) { return true; } } } init { vars.lastLevel = current.levelID; }