• 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

I started new game now.. on outskirts I met a monk who i had to deliver a silver cross to Grenada to one of his brotherhood outside city walls.. that's after I chose "increase my HP" within the dialog.. so my HP is now 160..

so I go there, and outside the city walls of Grenada the other monk has the exact same dialog.. no option of completing this thing.. so I chose the same dialog and I ended up with 2 silver cross and he keeps saying "Deliver to outside city gate of grenada"... and from this 2nd cross I now have 320 HP lol

I can't even save game.. on save screen it says same thing "You cannot save.. deliver the holy relic......"

Anyone run into this problem before?
We might want to double-checking this one again....
 
  • Like
Reactions: A.H
I have only primary save file at the very start of the game.. just go forward towards near outskirt and monk will be walking around..

This time I tried again, but as said on opening post of this thread.. one monk lead me to another.. from spreightown, to jamaica shore, to bonaire... and each time I gain x2 HP... first time 160, then 320, now on 3rd monk I got 640HP...
Unfortunately not able to save the game during this occurance
 

Attachments

  • -=Player=- Nevis. Pirate Settlement port.rar
    441.3 KB · Views: 299
I have only primary save file at the very start of the game.. just go forward towards near outskirt and monk will be walking around..
Did the monk tell you where to bring the relic? Normally they tell you of a monk in a certain location who will take it back from you.
Did you try that yet?

In any case, I'll put this one on the to-do list to check properly when I can spare the time (e.g. not now ;) ).
In the meantime just avoid those monks.
 
Yes, first try monk said go outside gate in Grenada.. I did that & the monk there just opens a new dialog without anything saying about receiving the relic.

Second try, same thing but for jamaica shore.. which also nothing happens
 
I've never had any truck with Monks but I'll see if I can make any sense from reading the code. Looks like a good candidate for trying out that dialogue merge thing.
 
OK first observation is that it does look unfinished. There are three relics to choose from each supposed to give powers.

The first boost fighting prowess and skills doesn't appear (at the point in the code (monk_dialogue.c) where you get it) to do anything for you. I guess that could be a bit like someone else (or an item) contributing to your fighting ability and perhaps @Levis can suggest the requisite code to add (and later remove) the benefit - or where I look for it.

The second gives increased health and there is indeed code to do that (don't know yet how well it works). At least one of the bug reports does report increasing health per cross / encounter

The third "provides help when I'm in a desperate situation" (unspecified) - well fat chance cos again there is nothing doing. Any suggestions as to what might be appropriate - or indeed another improvement (luck and commerce perhaps?)

That presumes I can find what is going wrong with the relic return mechanism.
 
The first one should work, because the item has incredible skill modifiers:
Code:
  //------------------------------------------------------------------------------------SKILL ITEM SETTINGS-------------------------------------------
  // GENERAL:  ItemIndex  picIndex  Price  numneeded  leader  accuracy  repair  sneak  skiptrade
  //  |  itmID  modelID  |  rare  |  |  stack  |  fencing  |  cannons  |  defence  |  |  skiprand
  //  |  |  |  picTexture  |  |  MinLevel | indian  |  |  hidden |  |  sailing  |  grapple  | commerce  |  |  skipequip
  //-----------|---|------------|----------|---|----|----|------|----|----|---|--|------|---|---|---|---|---|---|---|---|---|-----|--|--|--|skipsell--
  // HOLY ITEMS: scheffnow
  //-----------|---|------------|----------|---|----|----|------|----|----|---|--|------|---|---|---|---|---|---|---|---|---|-----|--|--|--|----------
  n = InitItem(n,"holycross1", "",  8,  1, 0.01,  0,  0,  0,  1,  1, 1,  +4, +4, +1, +1, +1, +1, +1, +1, +1, +4,  1, 1, 1, 1);

I think the "help" one is already disabled? Not sure what that was intended to do.
 
The first one should work, because the item has incredible skill modifiers.
OK didn't occur to me they had different item characteristics

The monks are created in Oxbay_town", Redmond_shore_01"," Conceicao_town_exit", "Muelle_passage", "Falaise_de_fleur_shore_01", "QC_town_exit", "Douwesen_Jungle_02

However PChar.NoSave.ReleaseMonkLocation their location for returning the item is set to
FindTownName("Oxbay"),
FindIslandName("Redmond");
FindIslandName("Conceicao");
FindIslandName("Isla Muelle"),
FindTownName("Falaise de Fleur"),
FindIslandName("Quebradas Costillas");
FindIslandName("Douwesen")

Is it me or are these not apples and oranges? of course it doesn't matter if the check will find them

The required check before you get to return the relic is

PChar.NoSave.ReleaseMonkLocation == NPChar.town

so will this be true for the island cases? - I suspect not. This could then generate a sometimes works scenario depending where you are to return to island or town.

I guess I can set a trace in the code and see what it returns but if either @Pieter Boelen or @Levis know it will save me checking - or lead me to move on and look elsewhere for the problem.

EDIT or do these islands have the same town names so it will succeed? -sorry that's silly
 
Last edited:
I don't know 100% sure what it does so I reconmend using some traces.
 
In monks.c, monk.town is set as one of these:
Code:
#define MONK_OXBAY      "in the town of #slocname#"
#define MONK_REDMOND      "at the shore of #slocname#"
#define MONK_CONCEICAO    "near the citygates of #slocname#"
#define MONK_MUELLE      "on the causeway of #slocname#"
#define MONK_FLEUR      "somewhere in #slocname#"
#define MONK_QUEBRADAS    "on #slocname#"
#define MONK_DOUWESEN     "somewhere in the jungles of #slocname#"
Normal characters don't get that attribute.
GetRandomLocation also returns one of those same location descriptions.

The locname only used to fill in the #slocname# from what I can tell.
Might be more reliable if it would make use of normal location IDs for the code part.

According to monk_dialog.c, there should be some compile.log messages on what happens when you talk to these monks under different circumstances.
 
I turned off the save prohibition so I could save a whole series of monk quests with differing locations for testing adding some extra trace at the point you meet the monk required:checklist (actually I struck lucky and got the same monk to return it to i got it from (hmm -that shouldn't happen)).
In that case

trace (PChar.NoSave.ReleaseMonkLocation) gives in the town of Speightstown

trace (NPChar.town) gives in the town of #slocname# - so there's a problem right there! the equivalence test fails

trace (NPChar.location) just added to see if this can be easier to test gives Oxbay_town

I think the answer is to use the clever stuff for the dialogue of where to go (seems to work well) but as you say use normal location IDs to check you are in the right place for release of the item. So just another variable to store the requiste location in normal ID for the check and it should be good. :beer: Well I hope so
 
In that case, the current system might be made to work if you update the preprocessor for NPChar.town before saving it.
But using the location IDs is certainly a cleaner and better solution. :yes
 
Yes. If you go to the right monk you get to "shed your burden". I have also changed the item characteristics of the third cross to boost your commerce and sneak skills (a lot) - so have re-intoduced it as a choice (since it was described as three relics (and three is a "magic" number?) but reduced the first cross impact on sneak and some other +1 skills because it only says it will improve your combat. So getting there.

However visit a wrong monk and he will (as of last time I looked at it) still start you with another cross if you let him. I guess (hope) I will be in a position to post something fixed after the weekend (if saying that doesn't jinx the thing).
 
Yes. If you go to the right monk you get to "shed your burden". I have also changed the item characteristics of the third cross to boost your commerce and sneak skills (a lot) - so have re-intoduced it as a choice (since it was described as three relics (and three is a "magic" number?) but reduced the first cross impact on sneak and some other +1 skills because it only says it will improve your combat. So getting there.

However visit a wrong monk and he will (as of last time I looked at it) still start you with another cross if you let him. I guess (hope) I will be in a position to post something fixed after the weekend (if saying that doesn't jinx the thing).
That's great! Thanks for looking into it. :cheers

Stopping a monk giving you another cross when you already have one should be quite doable.
If you're having trouble with it, post here and I'm sure we can figure something out. :yes
 
That's great! Thanks for looking into it. :cheers

Stopping a monk giving you another cross when you already have one should be quite doable.


It's not just getting the cross it's the intention in the code to track if you've spoken to him before you get a different dialogue "It's you again..." also if you have seen a monk before then the dialogue "I've never seen you or your kind..." doesn't make sense - and have you had a cross before given it back but now want one again (on returning to the game or for some tricky point where you want the skill bonuses). All good stuff. I am pretty linear in working through such stuff :walkplankbut that's good because so is the code!!

If you're having trouble with it, post here and I'm sure we can figure something out. :yes

If it wasn't "trouble" :duel:I wouldn't be interested. If I get stuck I will pass it back rest assured, at the moment I am not stuck just getting on with my life.
 
I think I have resolved the Monk problems
:checklist
1) Non return of the item to a nominated monk
2) Other monks continuing to give further relics - rather than directing you to the monk to return the existing one.
3) first time dialogues with other monks ("I haven't seen anyone like you....")
4) change to cross item name type preventing taking or giving a relic
5) Third relic disbled
6) Retaking a relic later after returning the first one you had
7) Random monk choice could include returning the relic to the same monk as gave it to you..
8) Minor dialogue changes to suit.

I hope I haven't missed anything :unsure however there is obviously a lot of interaction there so it clearly needs some heavy testing.

So here are 5 files containing the related changes.

I have also downgraded the effects of the first cross and tried to balance the skill levels gained with the third. 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?

:rumgone

EDIT PS these files are not from the latet build - I wanted something stable 16th July I think but I doubt any of these files have changed recently (except perhaps for new items being added?)
 

Attachments

  • monks.7z
    65.1 KB · Views: 262
Last edited:
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.
 
Drat. Just remembered I have left this line in monks.c

PChar.NoSave.Init = false; //changed from true for logging

which should be changed back to

PChar.NoSave.Init = true;

when you look at the stuff tomorrow.
 
Back
Top