• New Horizons on Maelstrom
    Maelstrom New Horizons


    Visit our website www.piratehorizons.com to quickly find download links for the newest versions of our New Horizons mods Beyond New Horizons and Maelstrom New Horizons!

Fixed Corrected No-Save Monks

Awesome! I'll install your work tomorrow.

Indeed I remember the "list of skill contributions" is not continuously updated for performance reasons.
One way to force it is indeed opening the inventory screen.
Maybe we should include a line to update it whenever you gain or lose an item too.

Going to take a look at it already. Probably each time the skill changes it will be updated and on each area load.
 
There remains one rather large 'flaw' which I am sure @Pieter Boelen will know how to block rather than me searching elsewhere for the method.

The quicksave function is not disabled so there is no "burden". Just needs disabling where you take a relic and re-enabling on handing it back

EDIT looks like a blocking if (like some others) in DoQuickSave() in interface is the way to go?
 
Last edited:
The skills don't show in the character interface until you check your inventory I don't know if this is normal but I presume so. Do they take effect on receiving an item or do you need to sort of "enable" them by checking the inventory interface?
This is the function that needs to be called, I think:
Code:
UpdateSkillModifiers(chref);
Here's an idea for PROGRAM\Characters\CharacterUtilite.c:
Code:
    if(CheckAttribute(arItm, "skill") && !CheckAttribute(_refCharacter, "skiprecalcskill")) // NK 05-06-27 for auto change of
     {
       for(int sn = 0; sn < 10; sn++)
       {
         DeleteAttribute(&_refCharacter, "skill." + GetSkillName(sn) + ".mod");
         // Aconcagua: what was this called for???
         //GetCharacterSkill(&_refCharacter, GetSkillName(sn));
       }
       TraceAndLog("Updating skills!");
       UpdateSkillModifiers(_refCharacter); // PB: Always update skills
     }

Strangely enough, even after viewing my inventory, sometimes the skill contributions work.... and then sometimes I only get part of them (usually only Leadership).
Maybe @Levis has some thoughts on that one?

Going to take a look at it already. Probably each time the skill changes it will be updated and on each area load.
Each time it changes sounds fair enough. But on each location reload might cause the reloads to be more slow, no?

There remains one rather large 'flaw' which I am sure @Pieter Boelen will know how to block rather than me searching elsewhere for the method.

EDIT looks like a blocking if (like some others) in DoQuickSave() in interface is the way to go?
This seems to do the trick:
Code:
void DoQuickSave()
{
   if(bPlayVideoNow) return;
   ref PChar = GetMainCharacter();
   if(!IsEntity(PChar))
   {
     if(!IsEntity(&worldMap) && CharacterIsDead(PChar))  return;
   }
   // PW -->
   if (CheckAttribute(PChar,"NoSave.CarryRelic") == true && PChar.NoSave.CarryRelic != "none") {
     Log_SetStringToLog(TranslateString("","You can't save while carrying a holy relic! Give it to a monk") + " " + PChar.NoSave.ReleaseMonkLocation + "."); // NK
     return;
   }
   // PW <--
 
More weirdness:
- Apparently the skill contributions from "holycross1" CAN all work at the same time.
- But for "holycross3", I have only so far seen the "Leadership" part take effect and not the rest.
- While my UpdateSkillModifiers in TakeNItems DOES happen, it doesn't actually do what I want it to. Hopefully @Levis knows better how to update this all properly.
- When carrying a relic and talking to the "wrong monk", I have to press space TWICE to close the dialog; not harmful, but weird nonetheless.

I have also rewritten some things myself for simplicity. I'll include that in a ZIP later today.
 
Whenever this feature is ready to be tested properly, I don't mind trying it a bit ;) I like the changes that @pedrwyth has done to this feature :)
 
More weirdness:
- Apparently the skill contributions from "holycross1" CAN all work at the same time.
- But for "holycross3", I have only so far seen the "Leadership" part take effect and not the rest.

Weirdness is right! the commerce and luck skills for holycross3 show up every time for me when I take it and then look at the items interface for the update.

There was some odd "looping" going on -of which your double space might be a remnant- I'll have another look at that bit when the code is in the build
 
Hmm just checked what I uploaded where I had tweaked the luck and commerce bonus to +5 , in my game it is +4. Given the other cross had maximums of +4 I wonder if this is limited elsewhere hence you are seeing no effect. Perhaps drop them to +4 and see if they magically appear?

EDIT At both +5 they disappear for me too - sorry for that I was sure I had had one at least at that.
 
Last edited:
Hmm just checked what I uploaded where I had tweaked the luck and commerce bonus to +5 , in my game it is +4. Given the other cross had maximums of +4 I wonder if this is limited elsewhere hence you are seeing no effect. Perhaps drop them to +4 and see if they magically appear?

EDIT At both +5 they disappear for me too - sorry for that I was sure I had had one at least at that.
That is not actually a bad notion:
Code:
// Item skill increases
#define MAX_SKILL_INCREASE       4       // INT - The maximum number of skill points you can gain from items
;)

EDIT: Yep, that definitely helps! :onya
 
@pedrwyth : Was there anything further to be done on this one? The main issues I'm aware of:
- Strange loops so that you have to press space twice
- Skill modifiers don't take effect immediately, but only after opening the Inventory screen
- When doubling your health, you get an onscreen message which I'm not sure it's necessary

Anything I'm forgetting?
 
That was it I think.

So I have found and removed the loop (my reset of case to avoid early dialogue was also resetting the exit case until this monk was that monk ie once round the loop). Added your UpdateSkillModifiers(PChar) call when you receive or lose the relevant holy crosses which updates the skills dynamically. Commented out the onscreen health message.

Here is the relevant dialogue file with the changes.

You might like to double check once you're back near your game - but otherwise just wants testing
 

Attachments

  • monk_dialog.7z
    3 KB · Views: 250
You might like to double check once you're back near your game - but otherwise just wants testing
Quick test suggests that it's working now! :cheers

I think we can consider this truly "Fixed" at long last, though of course further play testing is always welcome.
 
I understand that the game limits to total number of shill modifiers for each skill to 4 for all items and books combined. This may be the reason that they do not show up if you already have some skill enhancing items. Are these Holycross skill modifiers to be added above this maximum of +4 or as part of them?
 
Are these Holycross skill modifiers to be added above this maximum of +4 or as part of them?

All I have been trying to do is fix the functionality as was - which sits within the limits of the additional skills system and the holy cross additions are therefore part of the +4 maximum (which I learned about as part of the process!).

I think from some dates within the code this mod was added fairly early on (it is also limited to the original islands - another clue) and possibly before many of the other skill bonus items became available. As it stands it is only of any real use early in the game (before you can collect many of the other modifiers) and again that would be why you meet the first monk immediately on entering Speightstown at the beginning of standard storyline. This of course is circumvented a little by the multitude of possible starts now available -
although there is another monk near the Nevis start too

It looks like it would be possible (if a bit messy to code since multiple skills are affected) to make the holy cross additional skills outwith the normal skills items additions (always staying at only up to maximum skill level) to give it a role to play for longer, but given the (needed) encouragement to "save your game regularly" doubt that it has any realistic use for most players unless the stability of the game is pretty much guaranteed. So no plans to work on this for now
 
I understand that the game limits to total number of shill modifiers for each skill to 4 for all items and books combined. This may be the reason that they do not show up if you already have some skill enhancing items. Are these Holycross skill modifiers to be added above this maximum of +4 or as part of them?
As part of them, for the time being. The "4 is the max" thing was my doing a good few years back,
since I figured getting enough skill-enhancing items to give a level 1 character 10 for all skills doesn't make for very good and realistic gameplay.
It is a toggle in InternalSettings.h though, so the responsible code can easily be found and modified if desired.

Since the "No Save Monks" are a bit of a special case, I wouldn't mind their crosses being in addition to the "4 is the max" limit.
Whether that is actually wise to do now from a game stability point of view, I'm not sure.... :oops:
 
One more improvement for the "double Space" issue to close the dialog sometimes.
Replace this:
Code:
  if (CheckAttribute(PChar,"NoSave.LastMonk") && PChar.NoSave.LastMonk != PChar.NoSave.ThisMonk && Dialog.CurrentNode != "exit")
   {
//---> PW once monks have got to relic choice case skip early dialogue / shared dialogue file
     if (CheckAttribute(PChar,"NoSave.CarryRelic") && PChar.NoSave.CarryRelic != "none")
     {
       Dialog.CurrentNode = "Next time after select_relic";
     }
     if (CheckAttribute(PChar,"NoSave.CarryRelic") && PChar.NoSave.CarryRelic == "none")
     {
       Dialog.CurrentNode = "Next time after reject_relic";
     }
   }
  // <--- PW end - once monks have got to relic case skip early dialogue / shared dialogue file
With this:
Code:
  if (CheckAttribute(PChar,"NoSave.LastMonk") && PChar.NoSave.LastMonk != PChar.NoSave.ThisMonk)
   {
//---> PW once monks have got to relic choice case skip early dialogue / shared dialogue file
     if (CheckAttribute(PChar,"NoSave.CarryRelic") && PChar.NoSave.CarryRelic != "none")
     {
       NextDiag.CurrentNode = "Next time after select_relic";
     }
     if (CheckAttribute(PChar,"NoSave.CarryRelic") && PChar.NoSave.CarryRelic == "none")
     {
       NextDiag.CurrentNode = "Next time after reject_relic";
     }
   }
  // <--- PW end - once monks have got to relic case skip early dialogue / shared dialogue file
This seems to work without the extra exception for the "exit" case.
 
Even if I'd probably never use it.
I like my Save buttons. :cheeky

Same here - not wanting to lose the ability to save game, I avoid the monks entirely.

Very sensible, my approach too.

However I had also thought about adding a slight get out clause via introducing a restricted way to save -one of EITHER talking to one of the monks (they are only on the original islands) giving a quick save option in dialogue OR (and my preference) if you seek sanctuary on consecrated ground you can save (ie any church). I say consecrated ground because I would exempt the Maltese Abbey from this (I think of it as an abandoned de-consecrated site anyway - just crawling with undead). Whichever way would of course need explaining in the dialogue.

I still doubt I would use the option unless I desperately needed the health boost for some particular scenario but then I didn't originally fix it for myself anyway.

The items with skill enhancers could still get the tweak that they are outside the normal 4 limit but increased HP should always be useful so perhaps that would be enough to give some later use - since later you may well not need skill bonuses so much and early on might be overpowered (the original reason for the limit)?
 
However I had also thought about adding a slight get out clause via introducing a restricted way to save -one of EITHER talking to one of the monks (they are only on the original islands) giving a quick save option in dialogue OR (and my preference) if you seek sanctuary on consecrated ground you can save (ie any church). I say consecrated ground because I would exempt the Maltese Abbey from this (I think of it as an abandoned de-consecrated site anyway - just crawling with undead). Whichever way would of course need explaining in the dialogue.
Isn't there already an option in BuildSettings to allow saving only at specific locations?
I've got a faint memory of seeing that...

The items with skill enhancers could still get the tweak that they are outside the normal 4 limit but increased HP should always be useful so perhaps that would be enough to give some later use - since later you may well not need skill bonuses so much and early on might be overpowered (the original reason for the limit)?
I added the limit because otherwise gaining skills through experience could hardly serve a purpose anymore at all.

It's a bit of a shame really that the game only goes up to 10 points.
If it went up to 100, it'd be quite the different story...
 
Back
Top