state("Magicraft") { } startup { Assembly.Load(File.ReadAllBytes("Components/asl-help")).CreateInstance("Unity"); vars.Helper.GameName = "Magicraft"; vars.Helper.LoadSceneManager = true; vars.Helper.AlertLoadless(); settings.Add("MC", true, "Magicraft Splits"); settings.Add("ELBO", false, "Split after each Elite and Boss room", "MC"); settings.Add("FINAL", true, "Split on the run end screen after defeating the final boss", "MC"); } init { vars.Helper.TryLoad = (Func<dynamic, bool>)(mono => { vars.Helper["IGT"] = mono.Make<float>("DataMgr", "selectedWorldData", "timeuse"); vars.Helper["InBattle"] = mono.Make<bool>("DataMgr", "selectedWorldData", "inBattle7"); vars.Helper["Stage"] = mono.Make<int>("DataMgr", "selectedWorldData", "battleData7", "currentStage"); vars.Helper["FinishGame"] = mono.Make<bool>("UIBattleMgr", "Inst", "uiFinishBuildShow", "IsOpen"); return true; }); } start { return current.InBattle && !old.InBattle; } update { current.activeScene = vars.Helper.Scenes.Active.Name ?? old.activeScene; current.loadingScene = vars.Helper.Scenes.Loaded[0].Name ?? old.loadingScene; } split { if(current.Stage == old.Stage + 1) { return settings["ELBO"]; } if(current.FinishGame && !old.FinishGame) { return settings["FINAL"]; } } isLoading { return current.IGT == old.IGT; } gameTime { return TimeSpan.FromSeconds(current.IGT); } reset { return current.activeScene == "MainMenu" || current.activeScene == "Camp"; }