// Made by Biksel // thanks to rythin for reliable resets, Frank for updating the start after the cutscene was added // asl-help by ero (https://github.com/just-ero/asl-help/) state("The Big Catch Tacklebox") {} startup { Assembly.Load(File.ReadAllBytes("Components/asl-help")).CreateInstance("Unity"); settings.Add("start", true, "Start on spawn"); settings.Add("split_capture", true, "Split on capturable"); settings.Add("split_whistle", false, "Split on acquiring the whistle"); settings.Add("categories", true, "Categories: "); settings.Add("split_10", true, "Split on returning 10 fish", "categories"); settings.Add("split_26", false, "Split on returning 26 fish (All Fish)", "categories"); settings.Add("split_scales", false, "Split on collecting the final collectable (100%)", "categories"); settings.Add("reset", true, "Reset on entering new file"); } init { vars.Helper.TryLoad = (Func<dynamic, bool>)(mono => { //vars.Helper["IGT"] = mono.Make<double>("Manager", "_instance", "_timeManagement", "_fixedGameTimeScaled"); //vars.Helper["paused"] = mono.Make<bool>("Manager", "_instance", "_timeManagement", "_gamePaused"); //vars.Helper["start"] = mono.Make<int>("Manager", "_instance", "_sceneLoader", "_currentLoadIndex"); vars.Helper["fileTime"] = mono.Make<float>("Manager", "_instance", "_saveManager", "_currentSaveData", "_inGameTime"); vars.Helper["captures"] = mono.Make<int>("Manager", "_instance", "_saveManager", "_currentSaveData", "_cachedCapturablesCapturedCount"); vars.Helper["turnedIn"] = mono.Make<int>("Manager", "_instance", "_saveManager", "_currentSaveData", "_cachedCapturesTurnedInCount"); vars.Helper["newSave"] = mono.Make<bool>("Manager", "_instance", "_saveManager", "_currentSaveData", "_newSave"); vars.Helper["active"] = mono.Make<int>("Manager", "_instance", "_primaryPlayerMachine", "_characterArt", "_currentOutfit"); vars.Helper["trad"] = mono.Make<int>("Manager", "_instance", "_primaryPlayerMachine", "_characterArt", "_traditionalOutfit"); vars.Helper["cutscene"] = mono.Make<bool>("Manager", "_instance", "_cutsceneCoordinator", "_cutscenePlaying", "_value"); vars.Helper["coins"] = mono.Make<int>("Manager", "_instance", "_saveManager", "_currentSaveData", "_cachedCurrentCoinCount"); vars.Helper["whistle"] = mono.Make<bool>("Manager", "_instance", "_primaryPlayerMachine", "_hasWhistle", "_value"); return true; }); vars.splitTimer = new Stopwatch(); vars.queueSplit = false; } update { //if(old.start != current.start) print("Start: " + old.start + " -> " + current.start); //if(old.paused != current.paused) print("Paused: " + old.paused + " -> " + current.paused); //if(old.fileTime != current.fileTime) print("fileTime: " + old.fileTime + " -> " + current.fileTime); if (vars.splitTimer.ElapsedMilliseconds > 1000) vars.splitTimer.Reset(); if(old.captures != current.captures) print("captures: " + old.captures + " -> " + current.captures); if(old.turnedIn != current.turnedIn) print("turnedIn: " + old.turnedIn + " -> " + current.turnedIn); if(old.active != current.active) print("active: " + old.active + " -> " + current.active); if(old.newSave != current.newSave) print("newSave: " + old.newSave + " -> " + current.newSave); if (vars.splitTimer.ElapsedMilliseconds > 0 ) print(vars.splitTimer.ElapsedMilliseconds + ""); //print((old.turnedIn == 9 && current.turnedIn == 10) + ""); if ((old.turnedIn == 9 && current.turnedIn == 10 && settings["split_10"]) || (old.turnedIn == 25 && current.turnedIn == 26 && settings["split_26"])) { vars.queueSplit = true; vars.splitTimer.Start(); } } onStart { vars.splitTimer.Reset(); } onSplit { vars.splitTimer.Reset(); vars.queueSplit = false; } start { return old.cutscene && !current.cutscene && current.captures == 0 && current.coins == 0 && settings["start"]; } split { return (current.captures - old.captures == 1 && settings["split_capture"]) || (settings["split_whistle"] && !old.whistle && current.whistle) || (settings["split_10"] && vars.queueSplit && vars.splitTimer.ElapsedMilliseconds > 466) || (settings["split_26"] && vars.queueSplit && vars.splitTimer.ElapsedMilliseconds > 466)|| (settings["split_scales"] && old.active != current.active && current.active == current.trad && current.active != 0); } reset { return old.fileTime > 1f && current.fileTime == 0f && settings["reset"] && current.newSave; }