Updating SKS and PRR to use DMFI 1.09

Per recommendation from @Carlo in Updates to SKS1, I started down the path of updating DMFI 1.07 to 1.09 in SKS1. I ran into a few complications related to PRR.

As I was documenting my progress, I figured I’d share. Sorry in advance for the long post.

Step 1: Import the erf into your module. Overwrite the following files when prompted

I got an unexpected error about missing assets. I’m assuming this is either a known issue or nothing to be concerned about.

Otherwise, I was able to import with no issues.

Step 2: Make a new neutral faction and assign “The Voice” and “Settings Adjuster” to that faction.

NO ISSUES. While SKS relies heavily on factions, I know that the merchant faction is left as neutral. I’m thinking that creating a new faction is not needed here.

Step 3: If you had a prior version of the wands in place - DELETE NW_IO_GENERIC

NO ISSUES. Curious to see where this might create improvements.

Step 4: If you are updating from DMFI version 1.07 or 1.08a, you may delete the following scripts.


Step 5: As of NWN patch 1.64, caching of scripts is no longer necessary


Step 6: Add dmfi_onclienter as your handler for the module-level OnClientEnter event

NO ISSUES (mostly). As I had a custom onenter script that strips new characters of items and gold and allows them to purchase new items, I just added the DMFI call at the end of this script.

See below for PRR issues.

Step 7: Add dmfi_onplychat as your handler for the module-level OnPlayerChat event


Step 8: If you want to use the DMFI rest system introduced in 1.08, add dmfi_onrest as your handler for the module-level OnPlayerRest event.


Step 9: If you want to use the persistence support for Knat’s NBDE…


The main issue I ran into was in Step 6, I suddenly found that my OnClientEnter script was throwing errors in _prr_main.

First these two lines were throwing errors:

const string HASH_INDEX = "#i!j$k%l{&M/n(o)p=q?r^Xs`Tu'v]AwBxCyDzE1F2-G3t;4I}5Y:J6_K7+Z[Lm9N\ l0kOjPhQ,gRfSeHdU8cVbWa.";
const int HASH_PRIME = 3021377;

These are related to NBDE and it was pretty quick to find that the newer version of that script included in DMFI had those fixes, whereas the version I had pulled in with PRR way back in the day didn’t. So I commented them out and that seems to make the compiler happy. As these are nbde fixes, that seemed like the correct scope anyway.

Next I found that calls to NBDE_FlushSingleCampaignDatabase were throwing errors. Starting over, copying the old nbde script to sublime and comparing the two lead me to see that this was renamed to NBDE_FlushCampaignDatabase. Updating those function references seemed to resolve the compile errors.

Now, honestly, I think I had just added those calls as a way to support persistent worlds and it was never used in the module. As I didn’t ever work with PWs and none ever used PRR, I doubt it even worked. Looking around the module, I was not using them in SKS.

A quick build and test of the module shows that everything is working. As my whiskey glass and patience are both empty, I’m saving my work and calling it a night. I’ll continue to test more tomorrow, but so far no major issues. I look forward to posting issues then. :slight_smile:

Here’s the DM standing in the _DMFI area deciding what to do next.