• 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 Officers' salaries in Brave Black Flag

Does this mean that they start out with 0 salary and then keep increasing as they level up?
That is what I saw when I tested this last week and, after thinking about it a bit, that did seem like reasonable behaviour to me.
I even marked this as "Not a Bug" at the time, but @jsv suggested that you should double check that it IS actually behaving as intended
and wouldn't have unwanted side-effects in its current state.
 
@Levis: What about similar situations in other storylines? Hornblower may have something similar, but I'm not sure.

Also, adding the officers is done within this if-statement which is now lost:
Code:
if (GetMySimpleName(PChar) == "Julian McAllister" && iNation == ENGLAND)
Problem is that particular 'iNation' no longer exists when you get to both_reaction.c .

But maybe this will do the trick:
Code:
  if (CharPlayerType == PLAYER_TYPE_REBEL)  
       {
         AddQuestRecord(questRecord, 3);

         if (GetMySimpleName(PChar) == "Julian McAllister" && GetRMRelation(PChar, ENGLAND) == REL_MIN)
         {
           //Levis setting up the officers right:

           // First Mate
           NPChar = characterFromID("William Sullivan");
           NPChar.location = PChar.location; //To allow init to complete
           InitCharacterSkills(NPChar);
           AddPassenger(pchar, NPChar, -1);
           LAi_SetOfficerType(NPChar);
           if(GetDifficulty() < DIFFICULTY_ADVENTURER) NPChar.quest.OfficerPrice = 0; //Levis easier difficulty starts with cheap officers

           // Navigator
           NPChar = characterFromID("David O'Hara");
           NPChar.location = PChar.location; //To allow init to complete
           InitCharacterSkills(NPChar);
           AddPassenger(pchar, NPChar, -1);
           LAi_SetOfficerType(NPChar);
           if(GetDifficulty() < DIFFICULTY_ADVENTURER) NPChar.quest.OfficerPrice = 0; //Levis easier difficulty starts with cheap officers

           // Gunner
           NPChar = characterFromID("Brian Darcy");
           NPChar.location = PChar.location; //To allow init to complete
           InitCharacterSkills(NPChar);
           AddPassenger(pchar, NPChar, -1);
           LAi_SetOfficerType(NPChar);
           if(GetDifficulty() < DIFFICULTY_ADVENTURER) NPChar.quest.OfficerPrice = 0; //Levis easier difficulty starts with cheap officers

           // Boatswain
           NPChar = characterFromID("Killian Kildare");
           NPChar.location = PChar.location; //To allow init to complete
           InitCharacterSkills(NPChar);
           AddPassenger(pchar, NPChar, -1);
           LAi_SetOfficerType(NPChar);
           if(GetDifficulty() < DIFFICULTY_ADVENTURER) NPChar.quest.OfficerPrice = 0; //Levis easier difficulty starts with cheap officers

           // Surgeon
           NPChar = characterFromID("Emily Butler");
           NPChar.location = PChar.location; //To allow init to complete
           InitCharacterSkills(NPChar);
           AddPassenger(pchar, NPChar, -1);
           LAi_SetOfficerType(NPChar);
           if(GetDifficulty() < DIFFICULTY_ADVENTURER) NPChar.quest.OfficerPrice = 0; //Levis easier difficulty starts with cheap officers

           // Carpenter
           NPChar = characterFromID("Uriah O'Bannon");
           NPChar.location = PChar.location; //To allow init to complete
           InitCharacterSkills(NPChar);
           AddPassenger(pchar, NPChar, -1);
           LAi_SetOfficerType(NPChar);
           if(GetDifficulty() < DIFFICULTY_ADVENTURER) NPChar.quest.OfficerPrice = 0; //Levis easier difficulty starts with cheap officers

           // Quartermaster
           NPChar = characterFromID("Angus Calhoun");
           NPChar.location = PChar.location; //To allow init to complete
           InitCharacterSkills(NPChar);
           AddPassenger(pchar, NPChar, -1);
           LAi_SetOfficerType(NPChar);
           if(GetDifficulty() < DIFFICULTY_ADVENTURER) NPChar.quest.OfficerPrice = 0; //Levis easier difficulty starts with cheap officers
         }
       }
       else                     AddQuestRecord(questRecord, 1);

Are those officers REALLY added to the tutorial cabin when the story starts? That'll be crowded! :shock
 
hmmm will change that next week, for now some people will have bonus officers :p.
No they aren't added there. Theire location is just set to that but that aren't logged in.
Problem is I can't init them earlier because a lot of things just aren't initialized yet so I had to move it to the quest code.
 
what if you rename the characters? You wont get the officers anymore then?
I think it would be better to set some kind of attribute in the start params to define you get the bonus officers or not. Or maybe even have a attribute for each of them so you could in theory give one to other characters too. You could even add a name to this attribute and have the officer be renamed to that just like its done with malcolm
 
what if you rename the characters? You wont get the officers anymore then?
No, you won't. The "Brave Black Flag" start is linked to the player name and that changes all sorts of stuff.
Wouldn't make sense anyway, since you MUST be Irish and Rebel to England for it to do make sense.

It can always be made nicer and prettier. But I don't really see the need.
These conditions are fine by me and seem to be working.
 
Guess I take this as a confirmation it also works
 
It seems to me this does NOT work. Started Brave Black Flag in highest difficulty and the officer salaries are still zero.
 
ARGH....found out what the problem was...
The IsEntity check seems to fail on those characters ....
 
Ah, so the recent attempted fix broke this one again. :facepalm

Is it possible to just do a straight function call for those specific characters to initialize them properly?
Or loop through all passengers to initialize them on each reload in case they haven't been done yet?
 
Ah, so the recent attempted fix broke this one again. :facepalm

Is it possible to just do a straight function call for those specific characters to initialize them properly?
Or loop through all passengers to initialize them on each reload in case they haven't been done yet?
A straight function call was done. but this same function call is used in create character where the enitity problem occured ...

I now changed the line which caused the errors to this:
Code:
if(!CreateEntity(&character, character.model.entity)) return false;

First it was just this
Code:
CreateEntity(&character, character.model.entity);

It might still give 1 error message in the error log but it should prevent the rest from causing errors
 
A straight function call was done. but this same function call is used in create character where the enitity problem occured ...

I now changed the line which caused the errors to this:
Code:
if(!CreateEntity(&character, character.model.entity)) return false;

First it was just this
Code:
CreateEntity(&character, character.model.entity);

It might still give 1 error message in the error log but it should prevent the rest from causing errors
Not entirely sure I understand the difference there.
You're aborting the "character loading code" early if they fail to load?
 
Back
Top