//Samorost 1 Autosplitter by blazie //version 1.2.0, date 7. 9. 2024 //Fixes: Fixed autosplitter not working while resetting the game in a certain window state("Samorost1"){ uint Value: "Adobe AIR.dll", 0x00DCD3B8, 0xCFC, 0x4, 0x1B4, 0x1C, 0x99C; uint Start: "Adobe AIR.dll", 0xDCBDA0; //It's a direct adress, why it works, don't ask me } startup{ vars.SetChecker = 1; vars.isTiming = false; settings.Add("MAIN", true, "Splits"); settings.Add("Tree1", true, "Levels", "MAIN"); settings.Add("LEVEL1", true, "Skiing Hill", "Tree1"); settings.Add("LEVEL2", true, "Fishing Rock", "Tree1"); settings.Add("LEVEL3", true, "Bee Rock", "Tree1"); settings.Add("LEVEL4", true, "Worm Tree", "Tree1"); settings.Add("LEVEL5", true, "Anteater", "Tree1"); settings.Add("LEVEL6", true, "Engine Room", "Tree1"); settings.Add("END", true, "Lever (final input, stops the timer)", "Tree1"); settings.Add("Tree2", true, "Optional splits", "MAIN"); settings.Add("OPT2", true, "Ladder Split (When lightbulb man climbs the ladder)", "Tree2"); settings.Add("OPT3", true, "Squirrel Split (When the squirrel is clicked)", "Tree2"); } update{ if (current.Value != old.Value && vars.isTiming == true){ vars.SetChecker++; } if(current.Value != old.Value){ print("SetChecker = "+vars.SetChecker+", Value changed from ["+old.Value+"] to ["+current.Value); } if(current.Start != old.Start){ print("Start changed from ["+old.Start+"] to ["+current.Start); } } start{ if (current.Start == 8 && old.Start == 5 && vars.SetChecker == 1){ vars.isTiming = true; return true; } } split{ if(vars.SetChecker == 3 && old.Value != 1){ //Split to Level 1 return settings["LEVEL1"]; } if(vars.SetChecker == 4 && old.Value == 1){ //Split to Level 2 return settings["LEVEL2"]; } if(vars.SetChecker == 5 && old.Value != 1){ //Split to Level 3 return settings["LEVEL3"]; } if(vars.SetChecker == 6 && old.Value == 1){ //Ladder split return settings["OPT2"]; } if(vars.SetChecker == 7 && old.Value != 1){ //Split to Level 4 return settings["LEVEL4"]; } if(vars.SetChecker == 8 && old.Value == 1){ //Squirrel split return settings["OPT3"]; } if(vars.SetChecker == 9 && old.Value != 1){ //Split to Level 5 return settings["LEVEL5"]; } if(vars.SetChecker == 11 && old.Value != 1){ //Split to Level 6 return settings["LEVEL6"]; } if(vars.SetChecker == 12 && old.Value == 1){ //Ending split (click on the lever) vars.isTiming = false; vars.SetChecker = 1; return settings["END"]; } } onReset{ vars.isTiming = false; vars.SetChecker = 1; } exit{ vars.isTiming = false; vars.SetChecker = 1; }