Forums  /  System Shock 2  /  I started working on an autosplitter
  EllieceraptorEllieceraptor

So I started running this just a few days ago because System Shock 2 is the best game of all time and I like speedrunning. I also like autosplitting! Thus I decided to try my hand at creating my first one.

It's very basic still and doesn't include load removal. You also can't reset properly if you try to on earth. Probably most significantly, I can't quite figure out how to make it split at the end, since going to the main menu doesn't unload the string for the currently loaded level. Any help to fix these things would be greatly appreciated.

The ASL script: http://pastebin.com/SqwhVSvh or https://github.com/IndelibleRaven/SystemShock2AS/blob/master/System%20Shock%202.asl

Mucus.MiddletonMucus.Middleton likes this. 
  JakePlisskenSDAJakePlisskenSDA

Hi Ellieceraptor, this looks awesome! I just tested and it seems to be working great except for the issues you mentioned. I don't know much about autosplitting, but is it possible to use the trigger for the final cutscene for the final split? I assume you renamed the cutscene video files to prevent them from playing, but it might be worth looking into. As far as the timer restarting, I know most autosplitters define an int levelNumber and then use current and old function calls to split rather than hard coding each level in. For example:

{
int levelNumber : 0x00DA1E38, 0x124;
}
split
{
return current.levelNumber > old.levelNumber;
}

and so on. That might work, but I don't know it's applicable for this specific game. Best of luck!

 
  EllieceraptorEllieceraptor

Great to hear that it's working for other people!

I thought about trying to use the final cutscene and did manage to track down the address for it, but unfortunately to no avail. The cutscene seems to have to actually play and even then the splitter did not seem to catch it. I'll try messing around with it some more!

And the reason I've chosen not to use that method is because we go through several maps on each floor, which I presume would mean the splitter would autosplit constantly. There are quite a few things I would like to fix, such as having the splitter recognize whether you got the invulnerability glitch or not before splitting between MedSci and Engineering. I'll keep hammering away on this thing while slowly wrapping my head around Cheat Engine!

 
  EllieceraptorEllieceraptor

Made some small quality of life updates to it while I try and figure out how to autosplit at the end and including load removal. You can now choose where you want the game to split in the LiveSplit UI. If anybody wants to add or change splits, please let me know and I'll add them!

Now, all I need to do is wrap my head around Cheat Engine and be creative..

http://pastebin.com/SqwhVSvh

 
  EllieceraptorEllieceraptor

The autosplitter is now integrated into LiveSplit! I haven't done any proper work on it in a bit, but I still intend to figure load removal, final split and other things out.

 
  straightbozostraightbozo

i felt kind of like modifying the script for AMNGID just in case someone wanted an autosplitter for it, here you go!

https://www.mediafire.com/?522olpebaaya4dc

also i still didnt solve the autosplitter for the end, i'm not the smartest person for that X)

 
  Mucus.MiddletonMucus.Middleton

Sorry for being really late to pretty much everything, but Ellieceraptor, do you mind if you could share the address of the final cutscene?

 
  EllieceraptorEllieceraptor

Sorry for being extremely late, but I updated the autosplitter to work with the latest patch. If anybody has any issues, please let me know and I'll try to get around to looking into it.

 
  Psych0sisPsych0sis

Not sure if anyone even still cares about this game anymore, but I went ahead and updated Ellie's autosplitter for 2.47 as well as added in a load removing function (as far as I can tell, I only tested it with quicksave/loads and hard saves/loads).

If there's any issues lemme know.

https://drive.google.com/file/d/12yEK3pP1UIxlFowY7G6460gVTT1Zm9ch/view?usp=sharing

SkejvenSkejven likes this. 
  Psych0sisPsych0sis

By the way, I imagine I can easily add in a line to make it split on the final cutscene. From what I read, do you guys change your cutscene filenames so they don't play? Or do they just not play at all? (on the later versions of newdark they easily should)

I already found the string value for cutscenes, and I'd imagine even if the cutscene doesn't play, it still tries to play it and the value will still change to it (this is how it works in thief, anyway).

straightbozostraightbozo likes this. 
  straightbozostraightbozo

i still care but real life has consumed time i would usually spend. we change the name of the "cutscenes" folder in the ss2 directory in order to make cutscenes not play.

 
  Psych0sisPsych0sis

Right, if I could get a save seconds before the final bossfight (or even during it at like 5% hp or something wink wink) I could test it out real quick. It should still register as trying to grab "cs3" so it should be easy to add it in.

 
  straightbozostraightbozo

here's a save where you just click once to kill shodan. grenade launcher already aimed at it. this is v2.45 if it matters, i can reproduce it on 2.47 if need be. thank you for doing this

https://drive.google.com/file/d/1pKz5QNlGUhI2-nNIzUYFPZ_I8ny5OokK/view?usp=sharing

 
  TheShaltyTheShalty

But I don't think, that SHODAN is the only one split that doesn't work. I think that BOTM split doesn't work properly either.

 
  Psych0sisPsych0sis

Does patch matter much for this game? Like 2.45 vs. 2.47? In terms of speedrunning I mean. I can update the one I posted to accommodate for all versions of SS2 people use to run if you want, though if there's no difference between versions, I'll probably limit it.

 
  Psych0sisPsych0sis

Alright, after some tinkering, I think I've got everything set. It now splits on final cutscene playing after defeating shodan for ease of knowing exact time etc.

Turns out, changing the folder name makes it not call the cutscene at all, so this was an issue. My solution at first was to just keep cutscene folder name the same as it should be, and just delete every file BUT "cs3" and "credits" (cs3 being the last cutscene that plays on defeating shodan and credits being... the credits) Kept "credits" in because I was going to tell everyone to watch the credits on the main menu after every run completion/defeat of shodan to reset the value, otherwise it would instantly split upon entering shodan.mis and mess everything up! This would be annoying and seemed stupid, so I kept on looking.

Finally found a cutscene byte that switched to 0 only when cutscenes were being played. This means you can keep ALL the cutscenes in if you want, you won't lose anytime to watching them during that half second it takes to mash through them! Or you can just remove everything BUT cs3 and not have to worry about anything.

I also removed the reset function because, and maybe I'm just overthinking it, but it was a pain in the ass to get it to reset properly if you reset during the earth portion of the run. I don't run the game (for now) so maybe resets during that segment are nonexistent and never happen cause its ezpz, but I removed it anyway, so now you just have to manually reset if you fail your run. I can easily add it back in if I was indeed overthinking it.

As for now, this works on 1.47 only. I can easily fix it up for other versions if it's necessary. It's also worth noting this works on the assumption you actually have a "recreation" and "command" split, so if you don't have those splits in your setup you probably should add them (they'd be in between hydro and rick if you somehow don't know). Otherwise, you'd have to remove some lines of the ASL file yourself to fit for your setup.

https://drive.google.com/file/d/1MM4D5TUo3x7m405OgerXI8edIyoW2_lt/view?usp=sharing

Please let me know if there's any issues 🙂

Mucus.MiddletonMucus.Middleton likes this.