Probably the best solution is to disable any sidequests that allow you to hire officers until AFTER the main Hornblower quest has completed.
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 -
The actual function use for the pirates isn't HaveLetterOfMarque but a different one. Can't remember by the top of my head.Perhaps at the moment, but someone writing a mod in future may find a function called "HaveLetterOfMarque" and want to use it to check if you do in fact have a LoM. Or someone might want to change pirate behaviour again and have them tolerate a LoM but hate genuine commissioned officers.
Besides, check "PROGRAM\DIALOGS\governor.c", then tell me again that "HaveLetterOfMarque" is only used by pirates.![]()
StorePassengers("Blaze");
RestorePassengers("Blaze");
// PB -->
bool HaveAnyLetterOfMarque()
{
ref PChar = GetMainCharacter();
if (CheckAttribute(pchar, "professionalnavy")) return true; // <---------- ADD THIS LINE ------------
for (int i=0; i<NATIONS_QUANTITY; i++)
{
if (i == PIRATE) continue;
if (HaveLetterOfMarque(i)) return true;
}
return false;
}
// PB <--
if(mNation == PIRATE)
{
if(CheckAttribute(char, "professionalnavy"))
return false; // Add this and the line above
if(!HaveAnyLetterOfMarque()) return true; // PB: Makes more sense
// if(rep <= TRADEREP_WAR) return true;
}
SetActualRMRelation("French_Squadron", REL_WAR);
Indeed I would imagine that each StorePassengers must have a RestorePassengers line before the next StorePassengers.First guess for where to put a "RestorePassengers" line would be at "Repair_to_Jamaica", as that's where "The Duchess and the Devil" ends and "Land Battle" begins. What's got me confused is that there are two "StorePassengers" lines - it may be necessary to put a "RestorePassengers" line right before the second "StorePassengers", depending on what "StorePassengers" actually does and whether the second one would cause the original passengers to be pushed out of wherever they're stored by the first one. Or possibly comment out the second "StorePassengers" line and see if anyone joins you back in prison who should not be there.
Very true. As far as the game is concerned, officers and passengers are the same thing. You can probably assign an officer type to Virginie as well, for example. Who knows? Perhaps she makes a good bosun?Officers aren't the only problem. If you've taken a side quest which involves a passenger and then get captured, that quest can't complete. Of particular concern is "Saga of the Blaque Family" - you could visit St. Pierre and start the quest while you're on the way from Nevis to Bridgetown to collect Quelp and Bracegirdle very early in the story, but you don't often get to Kingston until you need to take Wellesley and Foster there after "Tunnel of Trouble". Right after that is "Examination for Lieutenant", and right after that is "The Duchess and the Devil", which means if you collect Marc Blaque around this time, you're going to lose him...
Brilliant; thanks for doing this!More updates to "quests_reaction.c":
At case "war_with_france", Britain is at war with France, Spain and Holland; so is Portugal; and with the addition of a few "SetActualRMRelation" lines, so are you personally.
At case "Deliver_the_documents", they're all neutral again.
Various characters are removed from the Passengers list when no longer required. More may need to go when I get to the end of the story and I see who else is still there that should not be...
That does indeed look like a very bad line of code. SetActualRMRelation works between nations, but "French_Squadron" is not a nation.There was a peculiar bug whereby, when you approach Martinique to attack the Temeraire, you become hostile to Britain! The only line around there which does anything to relations is this in "French_Battle_Setup":I commented this out and tried the battle again; that did the trick, you no longer become hostile to Britain, and Temeraire still attacks because I'm flying a British flag. It would probably attack if you're flying Personal flag too, since the above changes make sure you're at war with France. You could probably approach in peace by flying a false French flag, but since the whole point of this mission is to destroy Temeraire, you'd presumably only do that in order to get into a favourable position before hoisting British or Personal flag and starting the battle.Code:SetActualRMRelation("French_Squadron", REL_WAR);
I know you can't assign her as commander of a prize ship because I tried. It doesn't complain about skills or anything, it just doesn't let you assign her.Very true. As far as the game is concerned, officers and passengers are the same thing. You can probably assign an officer type to Virginie as well, for example. Who knows? Perhaps she makes a good bosun?![]()
Someone already reported the list of passengers here. From that list:Brilliant; thanks for doing this!![]()
That makes sense. Anyway, the battle works with that line commented out because I tried it.That does indeed look like a very bad line of code. SetActualRMRelation works between nations, but "French_Squadron" is not a nation.
"England" is a default of sorts in the code, so possibly because you are asking the game to set you hostile to something it doesn't understand, it figures it will set you hostile to the default England instead.
Not so good!![]()
My first impression is that they should be removed as well. They aren't even in the films or books at all and having too many companions to support you might make Free Play not quite challenging enough.Sharpe and his men: undecided about them. On the one hand, they're army, not marines, so perhaps ought to be removed until needed for some future quest. On the other hand, they were assigned to your ship for the Guadeloupe action and could stay with you for future free-play action on land.
case "Land_Guedeloupe_for_Hogan":
LAi_SetOfficerType(characterFromID("Teresa Moreno"));
pchar.quest.To_Guadeloupe_shore_Hogan.win_condition.l1 = "location";
Pchar.quest.To_Guadeloupe_shore_Hogan.win_condition.l1.character = Pchar.id;
pchar.quest.To_Guadeloupe_shore_Hogan.win_condition.l1.location = "Guadeloupe_shore_01";
pchar.quest.To_Guadeloupe_shore_Hogan.win_condition = "To_Guadeloupe_shore_Hogan";
break;
If I recall, I have found code before that wasn't references anywhere at all. Might be from some idea that SJG never got round to finishing.Talking of Guadeloupe, I found this:I can't find any call to "Land_Guedeloupe_for_Hogan", nor any variant involving a correct spelling of "Guadeloupe". So whatever that section is supposed to be doing, it's probably not doing it...Code:case "Land_Guedeloupe_for_Hogan": LAi_SetOfficerType(characterFromID("Teresa Moreno")); pchar.quest.To_Guadeloupe_shore_Hogan.win_condition.l1 = "location"; Pchar.quest.To_Guadeloupe_shore_Hogan.win_condition.l1.character = Pchar.id; pchar.quest.To_Guadeloupe_shore_Hogan.win_condition.l1.location = "Guadeloupe_shore_01"; pchar.quest.To_Guadeloupe_shore_Hogan.win_condition = "To_Guadeloupe_shore_Hogan"; break;