TimeSplitters Wiki
TimeSplitters Wiki

I've been playing around with Future Perfect on an emulator, as part of a personal quest to get the Machine Wars-exclusive robot AI into MapMaker, and found some stuff relating to the characters.

First of all, the Prometheuses and Inseticks you fight in the Machine Wars are entirely separate characters from their arcade versions, and their unique AI behaviour perfectly carries over into MapMaker, as with the NPC SentryBots in TS2. Most annoyingly, this means you can save them as part of the custom bot set for the map, and load it later without any problems whatsoever - so, as with the NPC SentryBots in TS2, there is no reason why we must be stuck with the inferior AI the arcade characters use instead. Unfortunately, the Insetick SK/10 has no hidden NPC version at all, so they are stuck with the boring AI until I figure out how to change that.

Secondly, the amount of Dr Lancets and Private Hicks in the character index is far too abundant for my liking. There are two extra Lancets hidden away, one virtually identical to the normal version, and another who emits Jack Sprocket noises. Much like the extra bald Ivor Baddic, neither of them (Or any of the unused characters) have names; but I did find two strings, STR_CHR_FF2_SCIENTIST and STR_CHR_NF1_TEMPSCIENTIST, alongside the regular character names in the memory. Presumably these Lancets are therefore the Something to Crow About weapon researchers and an unused Breaking and Entering doctor/technician.

There are exactly six non-playable Private Hicks in the index, all of them five-stars for some reason. Other than the special Story one, with his unique voice, they're just the remnants of the Artic Force from the beta - each one uses Snow's, Nikolai's, Shivers', not Frost's and White's voice, respectively - the Frost one uses a possibly unique voice that I couldn't recognise, but I have no reason to doubt that the character's supposed to be her. On a related note, in addition to Night, Shock and Black, Lt. Shade also shows up in exactly the same broken state as the others. Pvt. Coal does not appear in the index at all, and Sgt. Shock doesn't seem to have his TS2 voice anymore.

I also found two Prometheus SD/7 clones, a Prison Officer clone and a Henchman clone, but there doesn't seem to be anything particularly interesting about any of them. There is a single two-star Monkey clone who I assume to be the remnant of the mythical Girlfriend Monkey.

What I did find, is the reason why the Nobby Peters army exists - as it turns out, characters like Tommy Jenkins, Pulov Yuran and Deadwina don't actually exist. The entirety of the Castle Guard shares a single character ID, the British Army shares another, Edwina/Deadwina share their own. Strudel shares Khallos' ID, but I'm relatively certain Strudel is just an invisible Khallos and not actually a proper character.

---

After more experimenting, I've found how the game differentiates between Nobby Peters and Sapper Johnson - there's a secondary bodygroup system, that allows for the swapping of heads and names on specific models, where having an entirely separate character would be wasteful. So far, the only sets of characters I've found that use this are the Castle Guard, British Army, ghost children, Smith brothers, and the SecuriDroid XP. Technically speaking, Harry Tipper in Arcade has his own bodygroup, which is permanently set to 1 - there's no visual difference, but bodygroup 0 Tipper is unnamed.

A fun thing you can do is set the bodygroup to something invalid, like No. 5 of the British Army, which simply results in a completely headless soldier trying to kill you. You can also access a secret character - the ever elusive, long saught after SecuriDroid XP angry face.

SecuriDroid XP3 ingame

---

I am back with more TSFP character data

So, last time, my personal quest to put the official Story-mode turbo-big-boy Prometheus/Insetick AI into MapMaker succeeded, but I was stuck trying to transfer that AI over to the other robots, namely Insetick SK/10. Well, I did manage to accomplish that as well - but the reality of TSFP's inner workings is, as ever, completely ridiculous. The AI seem to have three separate variables controlling them:

Variable A is seemingly the AI type; 0 is human, 1 is zombie, 2 is timesplitter and 3 is robot. However, because of the other variables, the only thing it seems to actually change is the flinching animation.

Variable B is the animation set and impact FX used by the character. This is what makes the difference between a Dr Lancet and a Dr Pustule, and seems to be tied directly to character ID, so each character has it's own unique list of animations stored somewhere.

Variable C is the behaviour package that controls the unique properties of the AI. Once again, it's tied to character ID, and is the answer to fixing the missing side-stepping and custom stances of the Machine Wars robots.

Combining all these things together, it is actually possible to entirely change a human into a robot, or robot into a zombie, or zombie into a timesplitter. Sadly, a lot of other story-specific things, specifically zombie sprints, or custom boss AI for Princess/Goliaths, seems to be another tiny flag set somewhere, and for some reason the memory used for each bot is distributed over a wide chunk of the memory so it's really difficult to find them.

I'm also trying to find the actual location of the data table used to set all of these tiny flags for the character index. It'd be really nice if instead of editing each individual AI's RAM every time I load a MapMaker map to change these things, I could just edit the character data ROM a single time - but it still eludes me even now. I've noticed that the character name strings cease to exist when you load into a game, and don't show up on anywhere in the files either - which leads me to believe the character data is assigned manually via code somewhere, instead of an actual database, which needlessly complicates everything, as usual.