Hmm.... I wonder if that is because of an officer type that is now set at game start and then never updated again.Despite this, Hornblower is still labelled as "Navigator" all the way through.
Of course it isn't meant to be doing that.
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!
Quick links for Beyond New Horizons
- Download latest version
- Wiki
- FAQ
- Report bugs here
- Bug Tracker on Github
Quick links for Maelstrom
- Download the latest version of Maelstrom
- Download the latest version of ERAS II
- Download the latest version of New Horizons on Maelstrom
Quick links for PotC: New Horizons
- Download latest version
- Wiki
- FAQ
- Report bugs here
Thanks to YOUR votes, GOG.com now sells:
- Sea Dogs
- Sea Dogs: Caribbean Tales
- Sea Dogs: City of Abandoned Ships
Vote now to add Pirates of the Caribbean to the list!
Quick links for AoP2: Gentlemen of Fortune 2
- Downloads and info
- ModDB Profile
- Forums Archive
A Pirate Podcast with Interviews
Music, Comedy and all things Pirate!
- Episode Guide - About - Subscribe -
- Twitter - Facebook - iTunes - Android -
- Youtube - Fill the Coffers -
Hmm.... I wonder if that is because of an officer type that is now set at game start and then never updated again.Despite this, Hornblower is still labelled as "Navigator" all the way through.
Him changing to a captain type when you assign him to another ship is, of course, correct.And apparently Bush is a captain. (Which he was for a while. I managed to board something and put him in command of it as he wasn't needed for quest purposes at the time.)
There is some code that assigns random citizens to an officer type of some kind. Most of them become citizen but a few become doctor.Meanwhile, if I start a new game, Midshipman Archie Kennedy is a citizen. Clayton is a surgeon. So is Sharpe - well, he is an expert at battlefield amputations.
What's shown at the top of the character interface is the character's rank. That's why I arranged for Hornblower to be promoted to rank 3 when Pellew confirms his commission. Rank 2 is currently defined as "Acting Lieutenant" and after that point Hornblower isn't acting any more, so promoting him to rank 3 means he's now "Lieutenant".For the player showing Navigator even after removing "isnotcaptain", can you force the player to LOOSE his navy status?
There are two things at play here:
- The REAL player "captain type", which actually affects the game
- The player "officer type" that is probably being set once at game start and then never updated afterwards
One of those two is shown at the top of the F2>Character Interface and the other is shown in the bottom-right corner.
I can't remember which of the two goes where, but you could check that in PROGRAM\INTERFACE\character.c .
He was removed from his command when I sold the prize ship he'd been commanding.Him changing to a captain type when you assign him to another ship is, of course, correct.
But I assume he was removed from his command at some point again? How exactly did he get removed as captain?
How do I do that?There is some code that assigns random citizens to an officer type of some kind. Most of them become citizen but a few become doctor.
Sounds like that is being run on your quest characters, while of course that is not intended.
Simplest solution may be to give them an appropriate officer type in the character init files.
Indeed the character rank does override the "Captain Type" at the top for navy officers and privateers.What's shown at the top of the character interface is the character's rank.
And he stayed captain type then? That's a definite bug!He was removed from his command when I sold the prize ship he'd been commanding.
Add a line:How do I do that?
ch.quest.officertype = OFFIC_TYPE_QUARTERMASTER;
"Not much" or "nothing at all"? The player captain type CAN, of course, change during the game if you get a LoM or lose it, for example.The player officertype doesn't do much, but it does need to be there.
I haven't got as far as getting the LoM - that only happens very near the end. (It was at the end until I added my extension.) What's failing to change my status from "Navigator" to "Captain" and back is the "PChar.isnotcaptain" attribute. Regardless of whether that's true or false, I remain a "Navigator"."Not much" or "nothing at all"? The player captain type CAN, of course, change during the game if you get a LoM or lose it, for example.
At the moment that doesn't update the player officer type, which I think is what @Grey Roger noticed in the interface.
I haven't got as far as getting the LoM - that only happens very near the end. (It was at the end until I added my extension.) What's failing to change my status from "Navigator" to "Captain" and back is the "PChar.isnotcaptain" attribute. Regardless of whether that's true or false, I remain a "Navigator".
So the officer type needs to be there for the player character despite not doing anything. And I need to add a 'ch.quest.officertype' to every character definition in "Story.c" in an attempt to force them to appropriate officer types regardless of this calculation.
This may help:I haven't got as far as getting the LoM - that only happens very near the end. (It was at the end until I added my extension.) What's failing to change my status from "Navigator" to "Captain" and back is the "PChar.isnotcaptain" attribute. Regardless of whether that's true or false, I remain a "Navigator".
DeleteAttribute(pchar, "isnotcaptain");
So those Hornblower quest characters for whatever reason do NOT get the "isofficer" attribute so for them before they are initialized.If the character has the isofficer attribute it will get an usable officertype (like first mate etc).
if (!CheckAttribute(GameInterface.strings,"OfficerType"))
{
// SUBTITLE: Officer type
GameInterface.strings.OfficerType = XI_ConvertString(GetAttribute(xi_refCharacter, "quest.officertype"));
// TITLE: Indicate character type/category
if (IsMainCharacter(xi_refCharacter))
{
GameInterface.strings.fakeTitle = XI_ConvertString(GetAttribute(xi_refCharacter, "quest.officertype"));
GameInterface.strings.OfficerType = XI_ConvertString(GetCaptainType(xi_refCharacter)); // PB: Indicate Player Type as subtitle to ensure it ALWAYS displays
}
I was wondering if that might be the case. But I was looking at other things and never got round to replacing 'PChar.isnotcaptain = false;' with 'DeleteAttribute(Pchar, "isnotcaptain");'.This may help:
The way it is coded, it doesn't actually check if the attribute is true or not;Code:DeleteAttribute(pchar, "isnotcaptain");
I'm afraid I was lazy and checked only if the attribute is there at all....
The attribute is set true twice - once in "Storyline.c" and once at "Find_lodgings". It is set false twice - "A_new_Quest_Line" and "Set_up_the_quest1". And then it is deleted entirely at "assigned_to_atropos5". The logic is as follows: you start out as not a captain, become a captain when you receive Retribution, stop being a captain when you're decommissioned, become a captain again when you receive Hotspur, and are permanently a captain when you receive Atropos and switch to free-play.BTW: I see three points where the "not captain status" is removed, but only one where it is restored.
Should it not be restored one time less than it is removed? Am I missing something?
I did that already in my own game version. So then indeed that last call may be deleted.Of course, if the two 'PChar.isnotcaptain = false;' lines are replaced by 'DeleteAttribute(pchar, "isnotcaptain");' then the final 'DeleteAttribute' won't be needed, leaving a total of two settings and two removals.
Indeed, that can easily be done. Don't remember why I set it to false in the first place.However, the line handing you Atropos is 'GiveShip2Character(pchar, "HMS_Greyhound", "Atropos", -1, ENGLAND, true, false);'. That "false" means she won't get default supplies, so you may want to change it to "true".
Bush shouldn't be affected by that in any way, right?I haven't had time yet to go back and see what happens to Bush after the change to 'DeleteAttribute'.