state("Valley") { bool loading: "mono.dll", 0x261110, 0x538, 0x70; int levelID: "mono.dll", 0x261A68, 0xC0, 0xE70; bool notEnded: "Valley.exe", 0x11916C0; int controlHelper: "Valley.exe", 0x129D3F0, 0x458, 0x100, 0xB0, 0x490; int altControlHelper: "Valley.exe", 0x01281660, 0x168, 0x88, 0x100, 0xD0, 0x358; } reset{ bool ret = (old.levelID < current.levelID && current.levelID == 4 && old.levelID != 0); if(settings["dbg"] && ret){ print("[Valley AutoSplitter] -----------------------------"); print("[Valley AutoSplitter] Reset Block Positive Hit:"); print("[Valley AutoSplitter] Old LevelID: " + old.levelID.ToString()); print("[Valley AutoSplitter] Current LevelID: " + current.levelID.ToString()); } return ret; } start{ bool ret = current.levelID == 4 && !current.loading && ((!settings["altctrl"] && old.controlHelper == 0 && current.controlHelper == 1) || (settings["altctrl"] && old.altControlHelper == 0 && current.altControlHelper == 1)); if(settings["dbg"] && ret){ print("[Valley AutoSplitter] -----------------------------"); print("[Valley AutoSplitter] Start Block Positive Hit:"); print("[Valley AutoSplitter] Current LevelID: " + current.levelID.ToString()); print("[Valley AutoSplitter] Current Loading: " + current.loading.ToString()); if(!settings["altctrl"]){ print("[Valley AutoSplitter] Old controlHelper: " + old.controlHelper.ToString()); print("[Valley AutoSplitter] Current controlHelper: " + current.controlHelper.ToString()); } else { print("[Valley AutoSplitter] Old controlHelper: " + old.altControlHelper.ToString()); print("[Valley AutoSplitter] Current controlHelper: " + current.altControlHelper.ToString()); } } return ret; } split{ bool ret = (old.levelID != current.levelID && old.levelID > 3 && current.levelID > 3) || //Split Between Levels (current.levelID == 12 && !current.loading && !current.notEnded && old.notEnded != current.notEnded ); //Split on Last Level if(settings["dbg"] && ret){ print("[Valley AutoSplitter] -----------------------------"); print("[Valley AutoSplitter] Split Block Positive Hit:"); print("[Valley AutoSplitter] Old LevelID: " + old.levelID.ToString()); print("[Valley AutoSplitter] New LevelID: " + current.levelID.ToString()); print("[Valley AutoSplitter] Loading: " + current.loading.ToString()); print("[Valley AutoSplitter] New Not Ended: " + current.notEnded.ToString()); print("[Valley AutoSplitter] Old Not Ended: " + old.notEnded.ToString()); } return ret; } isLoading{ if(settings["dbg"] && old.loading != current.loading){ print("[Valley AutoSplitter] -----------------------------"); print("[Valley AutoSplitter] Loading: " + current.loading.ToString()); } return current.loading; } startup{ settings.Add("dbg", false, "Enable Debug Mode"); settings.SetToolTip("dbg", "When enabled, debug messages will be printed which can be viewed using DbgView filtering by \"[Valley AutoSplitter]\"."); settings.Add("altctrl", false, "Use Alt Start Pointer"); settings.SetToolTip("altctrl", "Switches Pointer Paths to Use"); }