state("PLAY PAPERHEAD"){} startup { vars.Log = (Action<object>)(output => print("[Mouthwashing] " + output)); Assembly.Load(File.ReadAllBytes("Components/asl-help")).CreateInstance("Unity"); vars.Helper.GameName = "PAPERHEAD EP0"; vars.Helper.LoadSceneManager = true; dynamic[,] _settings = { { "ILMode", false, "Individual Level Splitting - Mode Toggle", null }, { "SplitsLevels", true, "Level Splits", null }, { "2", true, "Level 1", "SplitsLevels" }, { "3", true, "Level 2", "SplitsLevels" }, { "4", true, "Level 3", "SplitsLevels" }, { "5", true, "Level 4", "SplitsLevels" }, { "6", true, "Level 5", "SplitsLevels" }, { "6_end", true, "Level 6", "SplitsLevels"}, { "SplitsRankScreen", false, "Rank Screen Splits", null }, { "W4ke up", true, "Level 1 - W4ke Up", "SplitsRankScreen" }, { "Volunt33r", true, "Level 2 - Volunt33r", "SplitsRankScreen" }, { "0bject 808", true, "Level 3 - 0bject 808", "SplitsRankScreen" }, { "Church", true, "Level 4 - Church", "SplitsRankScreen" }, { "Drone", true, "Level 5 - Drone", "SplitsRankScreen" }, { "Host", true, "Level 6 - Host", "SplitsRankScreen" }, { "AutoReset", false, "Auto Reset on New Game or Load Last Checkpoint (IL Mode Only)", null }, }; vars.Helper.Settings.Create(_settings); vars.Helper.AlertLoadless(); vars.VisitedLevel = new List<string>(); } init { vars.Helper.TryLoad = (Func<dynamic, bool>)(mono => { var AD = mono["AutosplitData"]; vars.Helper["state"] = AD.Make<int>("state"); vars.Helper["stateName"] = AD.MakeString("stateName"); vars.Helper["stateID"] = AD.Make<int>("stateId"); vars.Helper["levelName"] = AD.MakeString("levelName"); vars.Helper["levelID"] = AD.Make<int>("levelID"); vars.Helper["isRunning"] = AD.Make<int>("isRunning"); return true; }); } start { if (settings["ILMode"]) { if (current.levelID == 1 && old.stateName == "Cinematic" && current.stateName == "Play") return true; if (current.levelID != 1 && old.stateName == "Loading" && current.stateName == "Play") return true; } return !settings["ILMode"] && old.state == 6 && current.state == 2; } onStart { vars.VisitedLevel.Clear(); } update { if (old.levelName != current.levelName) vars.Log("Level Name: " + current.levelName); } split { if (settings["ILMode"]) { return old.stateName == "Play" && current.stateName == "Victory" || current.levelID == 6 && old.stateName == "Play" && current.stateName == "Cinematic"; } else if (!settings["ILMode"]) { if (settings["SplitsLevels"] && old.levelID != current.levelID && settings[current.levelID.ToString()] && !vars.VisitedLevel.Contains(current.levelID.ToString())) { vars.VisitedLevel.Add(current.levelID.ToString()); return true; } if (settings["SplitsLevels"] && current.levelID == 6 && old.state == 2 && current.state == 6 && settings["6_end"] && !vars.VisitedLevel.Contains("6_end")) { vars.VisitedLevel.Add("6_end"); return true; } if (settings["SplitsRankScreen"] && old.state == 2 && current.state == 4 && settings[current.levelName.ToString()] && !vars.VisitedLevel.Contains(current.levelName.ToString())) { vars.VisitedLevel.Add(current.levelName.ToString()); return true; } if (settings["SplitsRankScreen"] && current.levelName == "Host" && old.state == 2 && current.state == 6 && settings[current.levelName.ToString()] && !vars.VisitedLevel.Contains(current.levelName.ToString())) { vars.VisitedLevel.Add(current.levelName.ToString()); return true; } } } isLoading { return current.state == 1 || current.state >= 3; } reset { if (settings["ILMode"]) { if (old.stateName == "Pause" && current.stateName == "Loading") return true; } else if (!settings["ILMode"]) { if (old.stateName != "Menu" && current.stateName == "Menu") return true; if (current.levelID == 1 && old.stateName == "Pause" && current.stateName == "Loading") return true; } }