state("Habilis"){} startup { vars.Log = (Action<object>)(output => print("[Habilis] " + output)); Assembly.Load(File.ReadAllBytes("Components/asl-help")).CreateInstance("Unity"); vars.Helper.GameName = "Habilis"; vars.Helper.LoadSceneManager = true; dynamic[,] _settings = { { "Splits", true, "Splits", null }, { "0", true, "Level 1", "Splits" }, { "1", true, "Level 2", "Splits" }, { "2", true, "Level 3", "Splits" }, { "3", true, "Level 4", "Splits" }, { "4", true, "Level 5", "Splits" }, { "5", true, "Level 6", "Splits" }, { "6", true, "Level 7 (End)", "Splits" }, }; vars.Helper.Settings.Create(_settings); vars.Helper.AlertLoadless(); vars.VisitedLevel = new List<string>(); } init { vars.Helper.TryLoad = (Func<dynamic, bool>)(mono => { var ASD = mono["Assembly-CSharp-firstpass", "AutoSplitData"]; vars.Helper["gameStarted"] = mono.Make<bool>(ASD, "Instance", "gameStarted"); vars.Helper["finalText"] = mono.Make<bool>(ASD, "Instance", "finalText"); vars.Helper["gameEnded"] = mono.Make<bool>(ASD, "Instance", "gameEnded"); vars.Helper["levelIndex"] = mono.Make<int>(ASD, "Instance", "levelIndex"); return true; }); current.activeScene = ""; current.levelIndex = -1; } start { return current.gameStarted; } onStart { vars.VisitedLevel.Clear(); } update { if(current.levelIndex != old.levelIndex) vars.Log("levelIndex: " + current.levelIndex); if(!String.IsNullOrWhiteSpace(vars.Helper.Scenes.Active.Name)) current.activeScene = vars.Helper.Scenes.Active.Name; if(current.activeScene != old.activeScene) vars.Log("active: Old: \"" + old.activeScene + "\", Current: \"" + current.activeScene + "\""); } split { if (old.levelIndex != current.levelIndex && current.levelIndex == -1 && settings[old.levelIndex.ToString()] && !vars.VisitedLevel.Contains(old.levelIndex.ToString())) { vars.VisitedLevel.Add(old.levelIndex.ToString()); return settings[old.levelIndex.ToString()]; } if (current.levelIndex == 6 && current.finalText == true && settings[old.levelIndex.ToString()] && !vars.VisitedLevel.Contains(old.levelIndex.ToString())) { vars.VisitedLevel.Add(old.levelIndex.ToString()); return true; } } isLoading { return current.activeScene == "loading"; } reset { return current.activeScene == "Habilis - Title Screen"; }