• 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 RE-Joining the Pirates

gianflores13

Sailor Apprentice
Hey guys, so I left the Pirates' services. I had the rank of Scourge of the Seven Seas. Joined privateering with the imperialistic nations. After some time I decided to go back to being a pirate. However, they won't allow me back in. I have a "Friendly" relation with them but the option to join the brotherhood is not present. I think it is worth nothing that this is the 3rd time I am going back to being pirate. What should I do? Or is it normally not allowed to be a turn-cloak too much?

:shrug:shrug

been sometime since I last played. Spent some time up in the mountains.
 
If I recall, you'll only be offered to join IF you don't have a Letter of Marque with the idea that they don't trust Privateers (for obvious reasons; Privateers tend to hunt Pirates).
But nobody is stopping you from getting a LoM after you joined the Pirates.

Not entirely certain that is the way it is now though, so can you upload the PROGRAM\DIALOGS\Isenbrandt Jurcksen_dialog.c file?
I'd like to double-check the exact logic that is in there now.

Also, if we decide the current logic should be changed, that can also be arranged.
 
The only dialog available in game are: 1) Business mister - Hostiles 2) I'm Leaving
 

Attachments

  • Isenbrandt Jurcksen_dialog.rar
    1.4 KB · Views: 126
Indeed I remembered correctly:
Code:
if (GetNationRelation2MainCharacter(PIRATE) != RELATION_ENEMY) // PB
{
if (GetLetterOfMarqueQuantity() == 0 && !HaveLetterOfMarque(PIRATE)) // PB
{
You need to:
- Not be hostile to the Pirates
- Have zero Letters of Marque
- Not already have a "Letter of Marque" from the Pirates

Maybe @Grey Roger has some suggestions on changes to make to this section of code.
For example: You can join the Pirates if you have zero LoMs or more than 1.
 
Can you show a screenshot of your F2>Nations Relations Interface?

Also, be sure to post a savegame just in case. Can't check it right now, but it's always good to have one available.
 
rela.jpg
rela.jpg
 

Attachments

  • -=Gian=- Nevis.rar
    899.1 KB · Views: 133
The relevant code is:
Code:
       dialog.text = DLG_TEXT[0];
       link.l1 = DLG_TEXT[1];
       link.l1.go = "exit";

       // NK -->
       if(GetNationRelation2MainCharacter(PIRATE) != RELATION_ENEMY && HaveLetterOfMarque(PIRATE)) // PB: Added LoM check
       {
         dialog.text = "I'm busy.";
       }
       // NK <--
       if (GetNationRelation2MainCharacter(PIRATE) != RELATION_ENEMY) // PB
       {
  if (GetLetterOfMarqueQuantity() == 0 && !HaveLetterOfMarque(PIRATE)) // PB
         {
           dialog.text = DLG_TEXT[34];
           link.l1 = DLG_TEXT[35];
           link.l1.go = "piratefun";
           link.l2 = DLG_TEXT[36];
           link.l2.go = "exit";
         }
       }
So indeed, if you have a Letter of Marque then Isenbrandt Jurcksen won't recruit you as he doesn't trust privateers.

This could be made period dependent, perhaps. Historically, in "Early Explorers" independent pirates didn't exist in the Caribbean, and even in "Spanish Main" the Brotherhood of the Coast were privateers of various nations, united in common cause of hatred of Spain and love of Spain's gold. From "Golden Age" onwards pirates became universal outlaws and wouldn't like privateers much. If anything, they'd trust someone with multiple LoM's less as someone with multiple LoM's is more likely to hunt pirates, that being the best way to earn favour with all his clients and avoid upsetting any of them or their allies.

However, looking at that screenshot, it seems that this character was in the service of France - this looks like the War of the League of Augsburg setup in which everyone else is allied against France, and our hero is hostile to all nations except France. But France is now Wary indicating that he's left France's service, so he should no longer have a Letter of Marque. And he's friendly to Pirates.
 
Last edited:
Execute this through console, then post your compile.log file here:
Code:
TraceAndLog("GetNationRelation2MainCharacter(PIRATE) = " + GetNationRelation2MainCharacter(PIRATE));
TraceAndLog("RELATION_ENEMY = " + RELATION_ENEMY);
TraceAndLog("GetLetterOfMarqueQuantity() = " + GetLetterOfMarqueQuantity() );
TraceAndLog("HaveLetterOfMarque(PIRATE) = " + HaveLetterOfMarque(PIRATE));
 
Just to be clear. to I have to trigger something before checking the compile log? Do I have to go to map, etc. Or as soon as I execute console I check the compile log?
 
Anyway here it is, hope I've executed the console correctly.

GetNationRelation2MainCharacter(PIRATE) = 0
RELATION_ENEMY = 2
GetLetterOfMarqueQuantity() = 0.
HaveLetterOfMarque(PIRATE) = 0
 

Attachments

  • compile.log
    362.9 KB · Views: 145
GetNationRelation2MainCharacter(PIRATE) = 0
RELATION_ENEMY = 2
GetLetterOfMarqueQuantity() = 0.
HaveLetterOfMarque(PIRATE) = 0

I think this is what you're asking for to see.
 
Anyway here it is, hope I've executed the console correctly.
Looks like you did:
Code:
GetNationRelation2MainCharacter(PIRATE) = 0
RELATION_ENEMY = 2
GetLetterOfMarqueQuantity() = 0.
HaveLetterOfMarque(PIRATE) = 0

And all of that seems quite correct. The only weird thing is the "0." which suggest it is a 'float' instead of an 'int' like it should be.
You could try to replace this:
Code:
if (GetLetterOfMarqueQuantity() == 0 && !HaveLetterOfMarque(PIRATE)) // PB
With this:
Code:
if (GetLetterOfMarqueQuantity() == 0.0 && !HaveLetterOfMarque(PIRATE)) // PB
Or:
Code:
if (makeint(GetLetterOfMarqueQuantity()) == 0 && !HaveLetterOfMarque(PIRATE)) // PB

What Storyline are you playing? Have you had any quest-related dealings with the guy?
 
Perhaps this would work to make the check for LoM's period dependent?
Code:
       if (GetNationRelation2MainCharacter(PIRATE) != RELATION_ENEMY && !HaveLetterOfMarque(PIRATE)) // PB
       {
            if (makeint(GetLetterOfMarqueQuantity()) == 0 || GetCurrentPeriod() < PERIOD_GOLDEN_AGE_OF_PIRACY) // PB + GR
           {
             dialog.text = DLG_TEXT[34];
             link.l1 = DLG_TEXT[35];
             link.l1.go = "piratefun";
             link.l2 = DLG_TEXT[36];
             link.l2.go = "exit";
           }
         }
By moving the check for not already having a Pirate LoM to the first condition, the second condition can then be changed to look at your period. If it's earlier than "Golden Age" then the Brethren are themselves privateers and don't mind if you're one as well.
 
Last edited:
if (GetLetterOfMarqueQuantity() == 0.0 && !HaveLetterOfMarque(PIRATE)) // PB

if (makeint(GetLetterOfMarqueQuantity()) == 0 && !HaveLetterOfMarque(PIRATE)) // PB

Where do I put these codes?

if (GetNationRelation2MainCharacter(PIRATE) != RELATION_ENEMY && !HaveLetterOfMarque(PIRATE)) // PB { if (GetLetterOfMarqueQuantity() == 0 || GetCurrentPeriod() < PERIOD_GOLDEN_AGE_OF_PIRACY) // PB + GR { dialog.text = DLG_TEXT[34]; link.l1 = DLG_TEXT[35]; link.l1.go = "piratefun"; link.l2 = DLG_TEXT[36]; link.l2.go = "exit"; } }

Console?



I play free play, btw.
 
Those are suggested edits to "PROGRAM\DIALOGS\Isenbrandt Jurcksen_dialog.c". Those posted by @Pieter Boelen should solve your problem. Mine is an addition which should not affect you as you're playing in the "Golden Age of Piracy" age, but should mean anyone who plays in "Early Explorers" or "Spanish Main" (any year up to 1679) can join Pirates while still having a Letter of Marque, the idea being that "pirates" in those earlier periods were privateers and had their own Letters of Marque. Easiest for you is to use one of those posted by @Pieter Boelen.
 
I play free play, btw.
Can't be storyline interference then.

Please try both my suggestions on your savegame and let me know if any of them work and, if so, which one.

By moving the check for not already having a Pirate LoM to the first condition, the second condition can then be changed to look at your period. If it's earlier than "Golden Age" then the Brethren are themselves privateers and don't mind if you're one as well.
Sounds like a good idea to me! Thanks. :onya
 
To be clear, after replacing said code by Pieter, I just F11 reinit to activate it, yes?

Thank you so much guys, you've always been such a great help, and it is much appreciated.
 
To be clear, after replacing said code by Pieter, I just F11 reinit to activate it, yes?
No need for Reinit. In this case, you don't even need to close the game inbetween.
Just change the code and try it again.
 
Back
Top