• 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 Curse of Cortez: Character HP reduced to 20 HP permanently

To be sure: Just in case that makes a difference, what difficulty level do you play on?
 
You may have to close the game before your profile shows. Assuming it does indeed have a save in it.
The profiles system can be a bit dodgy like that.

Pieter, is it possible to transfer save files between profiles? I think what happened was that I changed the personal flag after renaming the profile, and it's name got reset back to "player".
 
Pieter, is it possible to transfer save files between profiles? I think what happened was that I changed the personal flag after renaming the profile, and it's name got reset back to "player".
You could try to change "-=this text=-" in the savegame names. But I cannot guarantee that will work.
If not, then I don't know any simple way by the top of my head.
 
@Talisman: Have you got any clue what this code is for in the Jack Sparrow storyline?
Code:
    case "On_to_the_Tailors":
       AddQuestRecord("My Early Days",2);
       ChangeCharacterAddress(characterfromID("Lieutenant Bligh"),"none", "");
        pchar.experience = CalculateExperienceFromRank(sti(PChar.rank));   // PB: I don't think this is necessary
        ChangeHPBonus(pchar, sti(pchar.chr_ai.hp_max));             // PB: And this would arbitrarily double the player HP
        ResetHP(pchar);                             // PB: Is this "instant healing" necessary?
I propose to get rid of it.
 
@Odieman and @Black Iron Oyster: I think I fixed it. In PROGRAM\Characters\Leveling.c find:
Code:
int ChangeHPBonus(ref chr, int offset)
{
   if(CheckAttribute(chr, "HPBonus")) offset += sti(chr.HPBonus);
   if(offset > sti(chr.chr_ai.hp_max)) //Never have a HPbonus larger then the max HP
   {
     offset = sti(chr.chr_ai.hp_max) - 1;
   }
   chr.HPBonus = offset;
   return sti(offset);
}
Replace with:
Code:
int ChangeHPBonus(ref chr, int offset)
{
   if(CheckAttribute(chr, "HPBonus")) offset += sti(chr.HPBonus);
   chr.HPBonus = offset;
   return sti(offset);
}
I have no clue why those lines were there, but they were definitely messing up my Curse of Cortez! :whipa
 
@Talisman: Have you got any clue what this code is for in the Jack Sparrow storyline?
Code:
    case "On_to_the_Tailors":
       AddQuestRecord("My Early Days",2);
       ChangeCharacterAddress(characterfromID("Lieutenant Bligh"),"none", "");
        pchar.experience = CalculateExperienceFromRank(sti(PChar.rank));   // PB: I don't think this is necessary
        ChangeHPBonus(pchar, sti(pchar.chr_ai.hp_max));             // PB: And this would arbitrarily double the player HP
        ResetHP(pchar);                             // PB: Is this "instant healing" necessary?
I propose to get rid of it.


I don't know - it has been there since at least Beta 2.5 :shrug

:cheers
 
Well, if there's no apparent reason, then gone it is!
Thanks for confirming.
 
@Talisman: Have you got any clue what this code is for in the Jack Sparrow storyline?
Code:
    case "On_to_the_Tailors":
       AddQuestRecord("My Early Days",2);
       ChangeCharacterAddress(characterfromID("Lieutenant Bligh"),"none", "");
        pchar.experience = CalculateExperienceFromRank(sti(PChar.rank));   // PB: I don't think this is necessary
        ChangeHPBonus(pchar, sti(pchar.chr_ai.hp_max));             // PB: And this would arbitrarily double the player HP
        ResetHP(pchar);                             // PB: Is this "instant healing" necessary?
I propose to get rid of it.


I just had a look in Program\storyline\JackSparrow\characters\init\TempQuest.c

the case "On_to_the_Tailors" is just before you meet Annabella Brinkley outside Speightstown tavern - after talking to Brock inside the tavern.

in TempQuest.c

some of the people have the line LAi_SetHP(ch, 100.0, 100.0); to set their Hp but Annabella Brinkley does not & as she is about to become a passenger of the player perhaps that code was there to give her some HP. :shrug

The characters in TempQuest.c that don't have that LAi_SetHP(ch, 100.0, 100.0); or similar line appear to be ones that don't become passengers or officers of the player.

:drunk
 
That code I quoted applied to the player character though.
I think I might know what it was; could be a leftover from the player rank being manually increased at that point.
It looks similar to some outcommented code from Devlin Opera.

If that is indeed what it was, then there was some stuff missing in the Jack Sparrow example.
Either way, it shouldn't be needed.
 
@Pieter Boelen, just tested the fix here and it worked perfectly.
In Charlestown used the console to give myself a mysterious coin and get cursed.

This time the HP went from 100 to 400 (300+) as intended
Cortez Curse HP Fix 1.png

At day the HP reverted back to the normal 100
Cortez Curse HP Fix 2.png

The other night I decided to mess up with the guards
Cortez Curse HP Fix 3.png

Was knocked out by them eventually and woke up at the tavern back to normal state with 100HP, killed the people at tavern and normal 7HP increase
Cortez Curse HP Fix 4.png

After that, I got my self curious to see if I would be given the same 7 HP if I leveled up in skeleton form, and it was so.
Cortez Curse HP Fix 5.png

Poor english soldiers ain't as lucky as me, eh? Arr!
Cortez Curse HP Fix 6.png
Can't even count how many :duel:

The fix works perfectly! :dance :onya
 
Back
Top