Last active
May 29, 2022 18:02
-
-
Save Dregu/f1b19e91989b93c908f2d2d642bf922c to your computer and use it in GitHub Desktop.
Noita Scriptable Auto Splitter (+seed/kill display) for LiveSplit
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
* Noita Scriptable Auto Splitter + seed display + kill counter | |
* Starts on spawn | |
* Splits on work | |
* Resets on death or new game | |
* | |
* You have to edit the logPath below to point to your installation for this to actually work, I don't know where your game is. | |
* Get https://github.com/hawkerm/LiveSplit.ASLVarViewer to display world seed and/or kill counter to your stream, mom or whatever. | |
*/ | |
state("noita") { | |
int foo: "noita.exe", 0; // stupid ASLVarViewer doesn't work without state variables | |
} | |
startup { | |
settings.Add("start", true, "Start"); | |
settings.Add("spawn", true, "when player spawns", "start"); | |
settings.Add("splits", true, "Split"); | |
settings.Add("work", true, "when you complete the work", "splits"); | |
settings.Add("reset", true, "Reset"); | |
settings.Add("dead", true, "when dead", "reset"); | |
settings.Add("newgame", true, "when starting game", "reset"); | |
} | |
init { | |
string logPath = "C:\\Steam\\steamapps\\common\\Noita\\logger.txt"; | |
try { | |
FileStream fs = new FileStream(logPath, FileMode.Open, FileAccess.Write, FileShare.ReadWrite); | |
fs.SetLength(0); | |
fs.Close(); | |
} catch { | |
print("Cant open log"); | |
} | |
vars.nextIsSeed = false; | |
vars.seed = ""; | |
vars.kills = 0; | |
vars.isPaused = false; | |
vars.line = ""; | |
vars.reader = new StreamReader(new FileStream(logPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)); | |
if (vars.reader != null) print("opened log"); | |
} | |
exit { | |
timer.IsGameTimePaused = true; | |
vars.reader = null; | |
} | |
update { | |
if (vars.reader == null) return false; | |
vars.line = vars.reader.ReadLine(); | |
if(vars.line != null && vars.line.StartsWith("Player killed someone!")) { | |
vars.kills++; | |
} else if (vars.line != null && vars.line.StartsWith("World seed:")) { | |
vars.seed = vars.line.Split(' ')[2]; | |
if(vars.seed == "") vars.nextIsSeed = true; | |
} else if (vars.nextIsSeed) { | |
vars.seed = vars.line; | |
vars.nextIsSeed = false; | |
} | |
} | |
start { | |
if(vars.line != null && vars.line.StartsWith("SpawnPlayer")) { | |
timer.IsGameTimePaused = false; | |
vars.kills = 0; | |
vars.dead = false; | |
return true; | |
} | |
} | |
reset { | |
if(vars.line != null && vars.line.StartsWith("World seed:")) { | |
return settings["newgame"]; | |
} | |
if(vars.line != null && vars.line.StartsWith("HandleEvent - Player Entity Destroyed")) { | |
return settings["dead"]; | |
} | |
} | |
split { | |
if (vars.line != null && vars.line.StartsWith("LUA: Sampo:")) { | |
return (settings["work"]); | |
} | |
} | |
isLoading { | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment