state("Mullet Mad Jack") { } startup { Assembly.Load(File.ReadAllBytes("Components/asl-help")).CreateInstance("Unity"); vars.Helper.GameName = "Mullet Mad Jack"; vars.Helper.LoadSceneManager = true; vars.Helper.AlertLoadless(); vars.totalIGT = new TimeSpan(); settings.Add("MMJ", true, "Mullet Mad Jack"); settings.Add("CAMPAIGN", true, "Campaign Splits", "MMJ"); settings.Add("FLOORS", false, "Split after each Floor", "CAMPAIGN"); settings.Add("CHAPTERS", true, "Split on each Chapter Select Screen", "CAMPAIGN"); } init { vars.Splits = new HashSet<string>(); vars.Helper.TryLoad = (Func<dynamic, bool>)(mono => { vars.Helper["Floor"] = mono.Make<int>("MMC", "instance", "floorNumber"); vars.Helper["ChapComplete"] = mono.Make<bool>("MadMulletCopTM", "instance", "onChapterCompleteScreen"); vars.Helper["GameSession"] = mono.Make<float>("MainPlayer", "totalGameSessionTime"); return true; }); } update { current.ActiveScene = vars.Helper.Scenes.Active.Name ?? old.ActiveScene; } start { return current.GameSession > 0.0f && old.GameSession == 0.0f; } split { if(current.Floor > old.Floor && settings["FLOORS"]) { return true && vars.Log("Floor Cleared"); } if(current.ChapComplete && !old.ChapComplete && settings["CHAPTERS"]) { return true; } } gameTime { return TimeSpan.FromSeconds(current.GameSession); } reset { return current.ActiveScene == "TITLE" && old.ActiveScene != "TITLE"; }