Resurrecting a dead character in The Witcher 1

2018-07-16
>

Backstory

Note - this post contains spoilers for the Witcher games.

In Witcher 1 there’s a quest - All the King’s Men. During this quest you meet a guy who, like all good spies tend to do, tells you that he’s spying for certain people. Afterwards, there’s an engagement in which guards claim that he’s now effectively fired, showing edicts proving so. The only problem is that some of them aren’t signed, which makes the spy very suspicious.

Now here you have three choices - you can either help the spy, the guards, or walk away. The latter options will end with the spy dying.

The only problem is - this choice is ignored completely by Witcher 3 effectively making the first option canon no matter what you chose.

What happened was - I chose the option to walk away. After all, this supposedly isn’t really my problem. Witchers are meant to be neutral - petty politics aren’t my problem. Few days later though, I somehow learned about the Witcher 3 situation (probably from some forum). This made me think - if my choice’s results are predetermined, I might as well play the ‘canon’ way as to not break continuity for myself when I’ll be playing the second game.

The problem at this point was that I had already played quite a few hours and completed quite a bit of content in between. Sadly the game is not good enough for me to consider replaying all that, so I considered the alternative - reset the quest progress somehow. Since the game doesn’t offer a console, I would need to do this using a savegame editor.

The Witcher save games

The Witcher uses the old BioWare engine, whose save games are effectively archives containing binary files (structs) with data, most of them being in the GFF format. What’s interesting that the save games contain data about all of the quests in the game, even those not encountered yet. The save games also seem to contain some translation data for the codex entries, which I found weird because I would expect this kind of data to be located in the game files, not save files.

As for tools that can work with this format - there’s a save game editor written in Java, that can be found here. Sadly the editor doesn’t do what we want it to do. It can read the save, change our stats, manage our inventory and read our quest log, but it can’t actually modify the quest log. Apparently the reason for this was that the author couldn’t figure out how the quest system works.

The solution appeared to be obvious - extract the relevant .qst file from an older save, replace the one in my newer save, repack it and load it. Sounds good, right?

Quest marked as progressed

Riiight?

Quest was set to the old stage since Thaler was marked as dead

Oh.

Reviving Thaler

It seems that the flag that determines quest state was attached to his state of well being and not me leaving the area. In hindsight, I probably should’ve expected this (especially when other games like the ones from The Elder Scrolls series do the same thing) and I guess I was kind of naively hoping that changing the phase would resurrect him or something. Oh well.

To avoid having problems with phases I loaded an older save, made the choice I want and extracted the .qst file from that. As expected this worked and got me on the right phase. The problem now was finding a way to resurrect Thaler because otherwise I couldn’t proceed with it - he just wasn’t where he should be (he should have been in the chair the Wealthy townsman is sitting in)

Quest is in the correct phase but there's no Thaler sitting where he should be

So the next step was modifying the actual save file. The first problem - finding something that can actually edit the files.

Well, whoever said that the internet is forever clearly never actually used it for more than a few years. The internet is full of dead links and data just disappearing. Turns out someone has to pay for all those servers, and at some point everyone will end up deciding against it. Huh.

That said, some files do end up being found, like this upload of the GFF editor from 2015. Afterwards the second problem - which file do we edit? There’s save.qdb, save_<number>.smm, some .sav files… After poking a while I deduced that the file I was looking for was the .smm one.

There you could just search for the character name. The trick was though, that while all of the data structures were in English, the names of the characters were in Polish. Once you realise this, finding the right structs and fixing the problem was fairly simple. I extracted the save data from the old save and changed the new save from this -

Data structure from the new save

to this -

Data structure from the old save

Save, repack, load in-game and there we go -

Thaler alive and well

Geralt can now officially add ‘necromancer’ to his long list of titles.

As far as the in-game effects go, you’re able to talk to him and proceed with the quest as intended. When imported in Witcher 2, the game will consider Thaler alive and will spawn the related NPCs. The only downside is that you’ll have the codex entry you unlocked upon his death. Fixing this should be trivial, but honestly it’s not worth the effort and changes nothing (just look up the codex variations on the Witcher wiki).