Long before I was adoring some awesome-looking houses in The Elder Scrolls IV: Oblivion and waxing teary-eyed over how frigging awesome the Deepscorn Hollow is (please don’t laugh), I was already working on some high-quality player character housing in my favourite games. Specifically, Neverwinter Nights.

Would it have been awesome if you could just return to your character’s home after a long and challenging adventure, and drop your loot in the chests or put them on the shelf, then head off to another exciting adventure without worrying about your character’s encumbrance limits?

Oh yes, you can do it! You could do just about anything in NWN, except achieve any sort of persistence. Once the module starts, all you have is the ability to save/restore games and export your character; you can’t restart the module with another character and expect everything in the module to be exactly as you left it with another character. You needed external hacks to do that. And oh boy oh boy, did people ever hack in all sorts of weird persistence hacks using the scripting API and some more evil methods like latching another program on the server process (as far as I understood it). Since we’re only doing this for single player, we can probably do some more gore-filled methods instead.

So, here’s an article that’s long overdue. I was going to post this to my crappy lil’ Neverwinter Nights site when tons of people were still actively playing the game (they probably still are, I just haven’t been checking on them), but I never got around to. I probably did in some form, but never posted the guide on the site and I’m not going to start looking.

Without further ado: a guide on how to create your own persistent houses in Neverwinter Nights.

…oh wait, maybe further ado is warranted. The reason why I’m posting this now is that, well, it hasn’t been posted, I was arsed to write an article, and furthermore, I was reminded of this article’s absence by stumbling on something that bugged me for a while. In a way, this is yet another of those weird “Chris-chan isn’t quite as original as he thinks he is” articles. In case people haven’t watched Chris’s antics online, about a year ago, Chris was posting videos about his LiTtL3BiGPLaN_e_t “Collector’s Case”, and how one can overcome the limitations of one’s player profile (you can only carry up to so much crap, it seems) by creating custom levels and storing all that crap there.

PS3 fans will probably scream that this idea is kind of obvious once you notice that it’s possible to do just that. The rest of the people can just scream that LittleBigPlanet sux0rtz® and PC folks did that AGES ago in other games, so LBP still is, and shall remain, something that just doesn’t convince us to rush out and buy PS3s. Excuse me while I go back playing Oblivion on Xbox360. With the DLC.</blatant trolling>

So yes, the idea is old. Very old. I had the same idea years ago. How many years ago? Wellll…

% ls -l "modules/Ilmryn's Home 0005.mod"  
-rw-r--r-- 1 wwwwolf users 568276 22.3.2003 modules/Ilmryn's Home 0005.mod

…and it wasn’t even my idea. I had seen that people did the same thing in MUDs. I wanted that in NWN.

I have to remind you that the following guide is a hack based on the original NWN capabilities. In 2003, this was the only sane and easy way to achieve persistence. Nowadays, when NWN also supports true persistence via database (including GetCampaign(), SetCampaign(), StoreCampaignObject(), RetrieveCampaignObject(), etc), this could probably be done more elegantly with a little bit of scripting. This one doesn’t require scripting, just dead-stupid recklessness and good backups.

First, we need a few programs. You obviously need the Aurora Toolset. You also need an editor for NWN files. TlkEdit is pretty damn good.

First, construct your amazing home using Aurora. For a rhetorical example, ‘m building an shop for an alchemist character of mine from my short stories. You obviously need a bunch of shelves and crates and whatnot - just remember to remove their scripts and make them “Plot” so you won’t accidentally blow them up.

Then, just save the module! Now, you can just go and play the game. Adore your home, set things up, put your loot in shelves, and then comes the crucial part - save the game, and save your character.

After this, you can easily open up the module in TlkEdit. Here’s how the module looks like when opened in TlkEdit:

Your save game appears in “saves” and has a bunch of files. There’s “screen.tga”, “player.bic”, “portrait.tga”, “saveinfo.txt” and a file that’s basically a copy of your module file, except with the file extension .sav. You may notice it could be a big bigger than the original file.

The “area” etries have changed, obviously. The biggest change happened in module.ifo. Yep, if you extract the “module.ifo” entry from both, you’ll notice there’s a whole bunch of new stuff:

  • Mod_PlayerList
  • Mod_TURDList
  • EventQueue
  • VarTable
  • Mod_Tokens
  • …and lastly, a rather interesting and tell-tale change: Mod_IsSaveGame is set to 1, rather than 0.

The most spacious part is, of course, the module’s current player list (Mod_PlayerList) which tells where you are and what the characters are. This may look familiar if you’ve opened up an exported character in an editor. You don’t want to have player list around in a .mod file; The game got really confused last I tried. Who knows what it’d try to do now!

Make a copy of the .sav file (And call it “My Home 0002.mod”). Extract module.ifo, and remove all these new entries from the file - and change Mod_IsSaveGame to 0.Delete module.ifo from the module and import your new module.ifo in. Save the module. Copy it to the “modules” directory in NWN. For extra sanity checking, you may want to open this new module in toolset and run the verification thingamabob and save it again.

Now open up NWN, and start up the game, pick the character you exported, and the new module. Shazam! All of the stuff in the module should still be where they were when you saved the game.

Hopefully this guide is helpful.