You are here

NWN2 OC Makeover SoZ Edition

22 posts / 0 new
Last post
Kshahdoo
NWN2 OC Makeover SoZ Edition

It looks like some of the mod's options don't work for me. I haven't checked the death system yet (yeah, I prefer just not letting my guys and girls to get below 0 hp), but the rest system doesn't obviously work. I mean, I have a vanilla NWN 2 rest system. There is a file mo_oc_options.2da, which should regulate death and rest systems, and all options are SoZ in it, but the game ignores it.

I have Windows 7 btw and GOG complete version of the game.

  • up
    50%
  • down
    50%
Aqvilinus

Check your in-game options. Rest and death systems work on the normal difficulty level and above.

  • up
    50%
  • down
    50%
Kshahdoo

Yes, I know it, as a D&D p&p system fan, I always use D&D core rules, even if they are sometimes too easy.

  • up
    50%
  • down
    50%
Aqvilinus

Are you sure you installed Makeover SoZ correctly? What mods do you have in your override folder? Kaedrin PrC, for example, overwrites core scripts responsible for resting.

  • up
    50%
  • down
    50%
Kshahdoo

Yes, of course I have Kaedrin's class and presriges packs. But as I've heard, they work alright with Makeover SoZ.

  • up
    50%
  • down
    50%
Aqvilinus

They aren't fully compatible. Read FAQ included with MO. For the rest system to work you have to merge different versions of k_mod_player_rest (standard module rest script) from both mods. It's not difficult - you have to add a call to Kaedrin's "ccs" rest script (with the ExecuteScript("scriptname") command...) in Makeover's version and remove/rename Kaedrin's one (otherwise it will overwrite Makeover's version, since the override folder has higher priority than the campaign folder). Don't forget to recompile the modified script. I don't know exact name of this ccs script (don't have access to my computer at the moment).

  • up
    50%
  • down
    50%
Kshahdoo

There are two files with the name k_mod_player_rest in Makeover: NCS and NSS, and there is only one in Kaedrin's - NCS. So as I understand, it's the script I gotta merge?

 

So I'm not even a noob, but much worse in NWN 2 scripting. As I understand, I gotta add a link (or call) in k_mod_player_rest.NSS file to Kaedrin's one, then copy a new script to a compiler (say, NWN 2 ToolSet), save and compile and get a NCS file, which then paste to Makeover folder?

 

Ah, yes, now I know how to compile files. But I still know nothing about how to add a call to the script.

  • up
    50%
  • down
    50%
Kshahdoo

Hey, guys, can anybody help noob to merge two scripts?

So, there is a file k_mod_player_rest.NCS from Kaedrin's pack in users/Documents/Neverwinter Nights 2/Override folder and there is the same file in NWN2 OC Makeover SoZ Edition folder

How to add a call to that Kaedrin's script in NSS Makeover script?

  • up
    50%
  • down
    50%
Aqvilinus

nss - source code of scripts (for humans);
ncs - compiled scripts (that the game actually uses).

Add these two lines at the very end of k_mod_player_rest.nss (before the last "}") from Makeover SoZ:

object oPC = GetLastPCRested();
ExecuteScript("ccs_player_rest",oPC);

and compile.

Rename somehow k_mod_player_rest.ncs from Kaedrin PrC (k_mod_player_rest_backup.ncs, for example). When you finish playing the OC and switch to custom modules, rename it back.

Note that Kaedrin PrC also overwrites some other standard module scripts k_* that are used by Makeover SoZ (there are 3-4 of them, IIRC). You have to modify them the similar way. Tell me their names and I write exactly what need to be added.

There are no other conflicts beside from that.


  • up
    50%
  • down
    50%
kevL's

here's a 2nd take; note that it goes in "finished" scope (unless i'm mistaken, or things have changed since the kPrC Pack v1.41 -- Aqvilinus, can you confirm this? )

- rename Kaedrin's k_mod_player_rest.ncs to k_mod_player_rest_BAK.ncs (or something)

- then modify Kaldor's k_mod_player_rest.nss in the campaign folder.

- add this line to the Makeover version, in the REST_EVENTTYPE_REST_FINISHED scope:

    ExecuteScript("ccs_player_rest", oPC);


- compile

 

  • Note that Kaedrin PrC also overwrites some other standard module scripts k_* that are used by Makeover SoZ (there are 3-4 of them, IIRC). You have to modify them the similar way. Please, have a look and tell me their names.

(!)

  • up
    50%
  • down
    50%
Aqvilinus

Yes, KevL seems to be right. I wrote it from memory and may have been mistaken.


  • up
    50%
  • down
    50%
Kshahdoo

So Makeover code looks like:

 

if (debugmode)
    {
        string sType = "";
        if (nType == REST_EVENTTYPE_REST_CANCELLED)
            sType = "CANCELLED";
        else if (nType == REST_EVENTTYPE_REST_FINISHED)
            sType = "FINISHED";
        else if (nType == REST_EVENTTYPE_REST_INVALID)
            sType = "INVALID";
        else if (nType == REST_EVENTTYPE_REST_STARTED)
            sType = "STARTED";
        else sType = "Unknown";
        sType = sType + " [" + IntToString(nType) + "]";
        DebugMessage("bb_mod_player_rest: Last Rester (dm): " + GetFirstName(oLPCR) + " " + sType);
        PrettyDebug("bb_mod_player_rest: Last Rester (pd): " + GetFirstName(oLPCR) + " " + sType);
        SendMessageToPC(oPC,"bb_mod_player_rest (sm): Last Rester: " + GetFirstName(oLPCR) + " " + sType);
        AssignCommand(oPC, SpeakString("bb_mod_player_rest (ss): Last Rester: " + GetFirstName(oLPCR) + " " + sType, TALKVOLUME_TALK));
    }
        
    if (nType == REST_EVENTTYPE_REST_FINISHED )
    {
        advanceTime(8); // advance time 8 hours while resting
        SendMessageToPC (oPC, "You slept 8 hours and are fully rested.");
        SetLocalInt (oPC, "i_TI_LastRest", GetHourTimeZero()); // Set Last Rest Time on FirstPC
    } // end if (nType == REST_EVENTTYPE_REST_FINISHED )
    
    else if (nType == REST_EVENTTYPE_REST_STARTED)

 

So where should I add ExecuteScript("ccs_player_rest", oPC); line?

 

As to other Kaedrin's k_mod files, there are 7 of them overall (without the rest one): k_mod_hb, k_mod_heartbeat, k_mod_pc_loaded, k_mod_player_equip, k_mod_player_levelup, k_mod_player_unequip, k_mod_start

To me, they don't affect the gameplay, I wonna get. Of course, I can mistake.

  • up
    50%
  • down
    50%
Kshahdoo

So I inserted the line and got something like this:

  if (nType == REST_EVENTTYPE_REST_FINISHED )
    {
        advanceTime(8); // advance time 8 hours while resting
        SendMessageToPC (oPC, "You slept 8 hours and are fully rested.");
        SetLocalInt (oPC, "i_TI_LastRest", GetHourTimeZero()); // Set Last Rest Time on FirstPC
    ExecuteScript("ccs_player_rest", oPC);
    } // end if (nType == REST_EVENTTYPE_REST_FINISHED )

 

Resting has started to work differently for sure: now I can't even rest in Sunken Flagon - it says, you can't rest in artificially made places.

  • up
    50%
  • down
    50%
Aqvilinus

Now, in order to get other makeover features (like the item level restriction), you need to edit and recompile k_mod_heartbeat.nss, k_mod_pc_loaded.nss, k_mod_player_equip.nss.


Here are lines that must be added at the end of the corresponding files:
k_mod_heartbeat.nss --> ExecuteScript("cmi_mod_hb", OBJECT_SELF);
k_mod_pc_loaded.nss --> ExecuteScript("ccs_pc_loaded", oPC);
k_mod_player_equip.nss --> ExecuteScript("ccs_player_equip", oPC);

Don't forget to rename Kaedrin's versions of these files.


  • up
    50%
  • down
    50%
Kshahdoo

So I did that script above right?

 

And thank you a lot for your help!

  • up
    50%
  • down
    50%
Aqvilinus

Yes, If you want to rest in the city area, you have to speak with an innkeeper and rent a room now (in Neverwinter - with Ophala from Moonstone Mask).

You're welcome!


  • up
    50%
  • down
    50%
Kshahdoo

There is Meditation option as well, which is the same as vanilla rest. Of course, character can meditate only one by one, but still can whenever wnd wherever they want.

  • up
    50%
  • down
    50%
Kshahdoo

So now I have some problems with the mod. 1st, Elanee got damaged for 8 points every time, the party comes to a new location. 2nd. Buffs don't survive a location change as well. At least, stoneskin needs to be recasted on every location change.

  • up
    50%
  • down
    50%
kevL's

the damage is likely caused by wearing a +Con item, while using the kPrC Pack. There may be an option (in Kaedrin's cmi_options.2da) to disable something about "UseConstitutionFix" (or something like that) ...

tbh, my rather ancient version of the kPrC shows that 'k_mod_player_rest' has other code -- outside of 'ccs_player_rest' -- that tries to handle it. But that aspect doesn't work quite right either, although newer versions may have a better workaround for the problem

(+Con could be used as an exploit, by transitioning areas etc., effectively gaining unlimited Temporary Hitpoints)

so... I suggest looking for the option and try turning it off. Or try taking off +Con items*. Or, well, just deal with it (no offense /shrug.)

To get things working right between the Makeover and the kPrC Pack'd require a proper and perhaps lengthy integration.


*spellbuffs with +Con probly also trigger the bug(s).



2nd option: Take Aqvilinus' advice and update the other k_mod_* scripts

  • up
    50%
  • down
    50%
Kshahdoo

I'd updated all other scripts before started to play, so problems happened with updated version. And I've been using Kaedrin's pack for a few years in different modules, never had such a problem.

  • up
    50%
  • down
    50%
kevL's

was just trying to splash out some pseudo-random information. /shrug

the source for newer versions of the kPrC is unavailable, as far as i'm aware.

  • up
    50%
  • down
    50%
Aqvilinus

the problem is probably related to k_mod_player_equip (reapplying all buffs, con problems). If you don't care about the item level restriction option from Makeover, I'd suggest you to return Kaedrin's version of this script. Or follow KevL's advice and try playing without +con items/check cmi_options.2da.


  • up
    50%
  • down
    50%