• 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 Jack Sparrow - Relations Throughout Storyline (including turning PIRATE!)

Talisman

Smuggler
Storm Modder
In the latest release of Beta 4

In Jack Sparrow Story

I am sailing to Turks to talk to Sao Feng - after meeting Davy Jones and being given the Black Pearl.

The Turks fort is firing on me again - Black Pearl has pirate Flag when I get it from Davy Jones.

I think this is the same bug as before that was fixed and has reappeared. :mad:

Save is after getting Black Pearl - sailing away for Far Beach, Barbados - going to Turks.

No error log generated.

:drunk
 

Attachments

  • -=Player=- Open Sea November 25th, 1740.7z
    527.9 KB · Views: 145
  • compile.log
    8.3 KB · Views: 158
  • system.log
    2.6 KB · Views: 154
From compile.log:
Code:
FLAGS: The 'Grand Turk Fort' turned hostile as they have recognized us
That is not the same problem as last time, because that one was:
Code:
FLAGS: The 'Grand Turk Fort' turned hostile based on their relation to pirates

Can you show a screenshot of your F2>Nations Relations Interface?
This should only be possible if you actually ARE hostile to the pirates.
 
Screen Shots of F2 > Nations Relations Screens At Meeting Davy Jones and at Start of Game.


:cheers
 

Attachments

  • PotC JS Relations at Davy Jones.jpg
    PotC JS Relations at Davy Jones.jpg
    279.4 KB · Views: 176
  • PotC JS Relations at Start.jpg
    PotC JS Relations at Start.jpg
    288.5 KB · Views: 154
the're hostile toward you so actually everything is going fine :p. they just detected you flying a false flag :p.
 
the're hostile toward you so actually everything is going fine :p. they just detected you flying a false flag :p.


That is true :yes

And I can always get round it in this case by landing at a beach and going through the jungle.

I am just not sure what is going to happen when I have to go to Tortuga ( might give this a try straight from meeting Davy Jones ) - since there are no beaches on Tortuga Island :eek:

:ship
 
Screen Shots of F2 > Nations Relations Screens At Meeting Davy Jones and at Start of Game.
You ARE hostile to the Pirates, so it SHOULD be possible to be recognized.
However, your fame level is "Unrecognized", so this should NOT happen very often. I am getting the impression that it DOES for you. Am I right?
If so, is it ALL the time or once in a while? Perhaps the code forces your false flag to be recognized all the time, which obviously would mess things up pretty bad.
Do you reckon that is affecting you?

Additionally, is there any story reason why you should actually be FRIENDLY to the Pirates at that point?
I think that does happen at some point for Jack Sparrow, but probably later. Right?

As for Tortuga, indeed that IS a Pirate town in the Jack Sparrow storyline, but not in any of the others as it was historically French.
But if the chance of being recognized is low, that does not need to be a problem.
Also, if absolutely required for quest purposes, it is possible to temporarily set your false flags to ALWAYS be believed.
That would get you in for sure. :yes
 
You ARE hostile to the Pirates, so it SHOULD be possible to be recognized.
However, your fame level is "Unrecognized", so this should NOT happen very often. I am getting the impression that it DOES for you. Am I right?
If so, is it ALL the time or once in a while? Perhaps the code forces your false flag to be recognized all the time, which obviously would mess things up pretty bad.
Do you reckon that is affecting you?

I am not sure it is happening too often - perhaps I just notice it when it does :yes

Additionally, is there any story reason why you should actually be FRIENDLY to the Pirates at that point?
I think that does happen at some point for Jack Sparrow, but probably later. Right?

1) --- When you meet Davy Jones and he gives you the Black Pearl dialog is:

Code:
JS-- "Very well, I accept your terms. [THINKS: Thirteen years, that's more than enough time to get out of the conditions.] ",

Davy-- "So be it... You are now a member of the Brotherhood of Pirates. You may wish to reaquaint yourself with Captain Barbossa.",

So I think Jack is now actually a Pirate - perhaps his Served Nation should be changed by Davy Jones at this point.

If it is not possible to change Served Nation in the middle of a game then perhaps when the story starts his Served Nation should be Personal and not Britain. And all the other Nations should be neutral towards him rather than some of them being hostile as now because of his British loyalty. After all he is new to the Caribbean and no one knows him so they should all be watching him to see what he does before deciding to be hostile or friendly.:shrug

2) --- After you meet Davy Jones you can do the Pirate Lord side quests which implies you are friendly with pirates - and if you have been working for Mings & the Brotherhood that also implies you are friendly with at least some pirates - or whatever they wish to call themselves:D


As for Tortuga, indeed that IS a Pirate town in the Jack Sparrow storyline, but not in any of the others as it was historically French.
But if the chance of being recognized is low, that does not need to be a problem.
Also, if absolutely required for quest purposes, it is possible to temporarily set your false flags to ALWAYS be believed.
That would get you in for sure. :yes

I think it was fixed in an earlier version of Build 14 that Tortuga would be Pirate and always accept Pirate Flags in Jack Sparrow.
There does not appear to be a problem with Tortuga - I have just tried twice sailing there directly after meeting Davy Jones - sailed in and moored with no problems both times on sunny days with very good visability.

logs attached

:drunk
 

Attachments

  • compile.log
    16.6 KB · Views: 155
  • system.log
    72.6 KB · Views: 143
I am not sure it is happening too often - perhaps I just notice it when it does :yes
Possibly. I did load your "Martinique savegame" and got recognized nearly immediately with a detection chance that was either crazy HIGH or crazy LOW.
Either way, it seemed strange to me with such a low Fame level, so I've done a small rewrite now so we'll get more details next time.
Hopefully that will help us figure out what is going on.


1) --- When you meet Davy Jones and he gives you the Black Pearl dialog is:

Code:
JS-- "Very well, I accept your terms. [THINKS: Thirteen years, that's more than enough time to get out of the conditions.] ",

Davy-- "So be it... You are now a member of the Brotherhood of Pirates. You may wish to reaquaint yourself with Captain Barbossa.",
So I think Jack is now actually a Pirate - perhaps his Served Nation should be changed by Davy Jones at this point.

If it is not possible to change Served Nation in the middle of a game then perhaps when the story starts his Served Nation should be Personal and not Britain. And all the other Nations should be neutral towards him rather than some of them being hostile as now because of his British loyalty. After all he is new to the Caribbean and no one knows him so they should all be watching him to see what he does before deciding to be hostile or friendly.:shrug
Changing Served Nation is mid-game is VERY possible and in fact already happens based on player actions.

Here's the relevant code from Davy Jones' dialog file:
Code:
    case "ForDavyJones7":
       dialog.text = DLG_TEXT[50];
       link.l1 = DLG_TEXT[51];
       link.l1.go = "ForDavyJones9";
       SetShipRemovable(pchar, true);
       if (PreprocessText("#scursed_ship#") == "Black Pearl")
         GiveShip2Character(pchar,"UncursedPearl",PreprocessText("#scursed_ship#"),-1,PIRATE,TRUE,TRUE);
       else
         GiveShip2Character(pchar,"CrimsonBlood", PreprocessText("#scursed_ship#"),-1,PIRATE,TRUE,TRUE);
       SetCharacterShipLocation(Pchar, "Oxbay_shore_01");
       HoistFlag(PIRATE);
That is indeed NOT enough! HoistFlag serves very little purpose there and does NOT actually make you a pirate.
There are several options here:

Code:
SetServedNation(PIRATE);
This sets your served nation to PIRATE, which marks you as a traitor in non-pirate ports but does NOT actually make the pirates friendly to you.
Code:
SetRMRelation(PChar, PIRATE, RELATION_FRIEND);
This DOES make the Pirates friendly.
Code:
ReceiveLetterOfMarque(iNation);
Gives you Rank 0 with the Pirates, but also does NOT make you friendly (because normally you need to be friendly before you can trigger this).
Code:
JoinNavy(PIRATE);
Does the same as above, but also sets your relations AS the pirates (=hostile to EVERYONE!) and gives you Pirate boarder models too.
Code:
AddDialogExitQuest("piratefun");
Does the same as above, but also:
- Renames the pirates to "Brethren of the Coast"
- Changes the Tortuga and Nevis Pirate Settlement "governors" to pirate governors so you can gain ranks with them
- Makes the Nevis blacksmith more useful

Especially for Jack Sparrow, I think that final option there WOULD be the most appropriate one.
Unless we want to still leave it up to the player to officially join the pirates or not. But the dialog DOES suggest that has already happened.
We could rewrite it so Davy Jones says "You will now be welcomed by the Brotherhood of Pirates" instead, if you think that is a good idea.

But generally speaking, this does sound like it should fit with Jack Sparrow quite well.
My main concern is whether it is OK to have the storyline set ALL non-pirate nations hostile to you at that point.
Do you have any thoughts on that one?

I think it was fixed in an earlier version of Build 14 that Tortuga would be Pirate and always accept Pirate Flags in Jack Sparrow.
There does not appear to be a problem with Tortuga - I have just tried twice sailing there directly after meeting Davy Jones - sailed in and moored with no problems both times on sunny days with very good visability.
Tortuga IS Pirate only for Jack Sparrow. In any other storyline, Tortuga is French but does accept those friendly with the Pirates AND flying a Pirate flag.
This does mean that if you fly a Pirate flag into Tortuga, but are HOSTILE to the Pirates, you should still be able to be recognized for this.
 
My main concern is whether it is OK to have the storyline set ALL non-pirate nations hostile to you at that point.
Do you have any thoughts on that one?

That could be a problem when playing the Pirate Lord Side Quests & Lucas & Justine :yes - try getting into Havana , even with Capt Maggee to support you :rofl

My prefered option is :-

....... when the story starts his Served Nation should be Personal and not Britain. And all the other Nations should be neutral towards him rather than some of them being hostile as now because of his British loyalty. After all he is new to the Caribbean and no one knows him so they should all be watching him to see what he does before deciding to be hostile or friendly.

rather than having a change when you meet Davy Jones - but this is just a personal choice and others may feel differently. :yes


:drunk
 
Thread renamed for accuracy. The "being recognized by the fort" is part of Needs Testing - Sea Relations: Behaviour for Recognizing False Flags | PiratesAhoy! - Pirate Games | Reviews | News | Forum

That could be a problem when playing the Pirate Lord Side Quests & Lucas & Justine :yes - try getting into Havana , even with Capt Maggee to support you :rofl
False flags are then pretty much your only option. Or seeking pardons from nations again after joining the pirates.
Might end up with some quite exciting pirate escapes though!

My prefered option is :-
....... when the story starts his Served Nation should be Personal and not Britain. And all the other Nations should be neutral towards him rather than some of them being hostile as now because of his British loyalty. After all he is new to the Caribbean and no one knows him so they should all be watching him to see what he does before deciding to be hostile or friendly.

rather than having a change when you meet Davy Jones - but this is just a personal choice and others may feel differently. :yes
By default, joining the pirates DOES cause a change in your nation relations (Pirates turn friendly, everyone else turns hostile), regardless of your prior relations.
And while you could indeed start out as Personal, once you join the EITC, technically your loyalty should shift to England, no?
Of course that is short-lived and you become a famous pirate after that.

Some options....

Prior to turning Pirate:
1. Keep as-is: You start English with actual English relations
2. Start game as Personal, so only the pirates are hostile but none of the other nations are.
Then you turn English when you join the EITC and DO follow English relations from that point
3. Start game as Personal, then turn English when you join the EITC, but only set Served Nation to England and set England friendly, but keep all other nations Neutral too
4. You don't need to become in ANY way English once you join the EITC (not sold on this idea....)

When turning Pirate after the Davy Jones encounter:
1. Keep as-is: Only hoist pirate flag and don't change any nation relations (no good :no )
2. Officially join pirates, so you turn all-out pirate and everyone hates you afterwards: Plenty false flags required to continue the story!
3. When you turn pirate, set the Pirates neutral and Served Nation to PIRATE. This allows the player to officially join the Brotherhood as per #2 above, but does NOT enforce this.
4. When you turn pirate, DO enforce the "full joining", but override the nation relations to be neutral to everyone, friendly to Pirate and hostile to England only

#4 seems a bit dodgy to me, because that probably would not take into account whatever nations you pissed off prior to that point.
That being said, getting a ship from Davy Jones doesn't sound like an actual major act of piracy, does it?
Should there be some sort of REAL reason added to the story why Jack Sparrow should be considered a pirate by ALL nations?

Especially the whole "impersonating a Spanish naval officer" sidequest thing should not be necessary if Spain doesn't hate you,
so it does seem to me that Jack needs to be considered more of a pirate than "just being hated by England" for the whole Beckett/EITC debacle.
After all, if Jack Sparrow shouldn't be considered an all-out pirate by the end of the story, then who should?
"Pirate" is pretty much THE thing that he is known for!!! :razz
 
For reference, here are some of the relevant sections of code:

Starting Game Relations for Guy Verbinski in StartStoryline.c:
Code:
  // PB: Modify Default Relations
   SetRelationsAsNation(PIRATE);   // Starting character is a pirate (is overridden later on for Jack Sparrow)
Actual Starting Game relations for Jack Sparrow in quests_reaction.c:
Code:
    case "TotBB_HtC3":
       // Set up actual beginning
       PChar.name = "Jack";
       PChar.lastname = "Sparrow";
       GiveModel2Player("47YoungJack",true);
       GiveModel2Player("depp",false);       // PB: For those players who REALLY can't wait
       GiveShip2Character(pchar,"Cutter2","Spreading Freedom",-1,ENGLAND,true,true);
       SetCharacterShipLocation(Pchar, "Cayman_port");
       SetCurrentTime(14.00, 0);
       pchar.jack = "Early_days";
       SetRelationsAsNation(ENGLAND); // PB: Set nations as per selected flag
       PChar.Flags.Pirate = 6; // PB: Jack Sparrow Pirate Flag
       PChar.Flags.Pirate.texture = 0;
First task for Beckett:
Code:
    case "And_now_an_Offer2":
       pchar.originalmoney = pchar.money; // PB: Actual profit required
       AddMoneyToCharacter(pchar, +10000);
       dialog.text = DLG_TEXT[50];
       link.l1 = DLG_TEXT[51];
       link.l1.go = "And_now_an_Offer3";
     break;

OFFICIALLY joining the EITC and getting the paperwork required in Cutler Beckett_dialog.c:
Code:
    case "Reckoning_best_result3":
       AddMoneyToCharacter(pchar, +5000);
       GiveItem2Character(Pchar,"EITC_Passport");
[...]
    case "Redmond_meet_after_Mings6":
       GiveItem2Character(Pchar,"EITC_Passport");
Time to become a Pirate in Davy Jones_dialog.c:
Code:
    case "ForDavyJones7":
       dialog.text = DLG_TEXT[50];
       link.l1 = DLG_TEXT[51];
       link.l1.go = "ForDavyJones9";
       SetShipRemovable(pchar, true);
       if (PreprocessText("#scursed_ship#") == "Black Pearl")
         GiveShip2Character(pchar,"UncursedPearl",PreprocessText("#scursed_ship#"),-1,PIRATE,TRUE,TRUE);
       else
         GiveShip2Character(pchar,"CrimsonBlood", PreprocessText("#scursed_ship#"),-1,PIRATE,TRUE,TRUE);
       SetCharacterShipLocation(Pchar, "Oxbay_shore_01");
       HoistFlag(PIRATE);

There are also various SetRMRelation calls in the Jack Sparrow storyline files, including ones related to the sidequests:
- France becomes hostile when attacking the 'Volcano' (When does this happen? Isn't that the Hornblower storyline???)
- Pirates become hostile for the chase between the Interceptor and Black Pearl
- Spain becomes Neutral after completing the 'Lucas' sidequest
- Pirates become Neutral through various storyline jump-starts
- England becomes Neutral through the Gentleman Jocard sidequest

What I am distinctly MISSING here:
- Pirates becoming Neutral when NOT using the storyline jump-starts
- England becoming Hostile after the whole Beckett/EITC debacle
- Other nations becoming hostile become Jack Sparrow is a pirate
 
Some additional thoughts:

- I *could* adapt the "JoinNavy" function so that it behaves different for joining the pirates in Arcade Game Mode.
This would then become similar to the "Rebel start" change I made for @Jason in the Free Play storyline:
Code:
      if(iRealismMode == 0)   SetRelationsAsNation(PERSONAL_NATION);               // Don't keep original nation relations on Arcade Game Mode
       if(iNation != PIRATE)   SetRMRelation(PChar, PIRATE, REL_AFTERATTACK);           // You saved a group of pirates from torture and death
       SetRMRelation(PChar, iNation, REL_MIN);                           // You are a traitor to the crown
This would need some adapting though, so we could change it to "original served nation turns hostile" and "pirates turn friendly".
If your original served nation is personal or pirate already, then a random nation could be chosen to become hostile.
After all, if you turn pirate, then SOMEBODY must turn hostile, no???

- England technically turn hostile in THIS quests_reaction.c case, which is just prior to the deal with Davy Jones:
Code:
    case "sunk_wench":
       GiveShip2Character(pchar,"HMS_Bounty","Lindesfarne",ENGLAND,-1,true,true);
       HoistFlag(PERSONAL_NATION);
       PChar.Flags.Personal = 3; // PB: EITC Flag
       PChar.Flags.Personal.texture = 3;
     break;
Actually, perhaps the whole "joining the pirates" thing should occur ONLY if you accept the deal.
But if you decline, England should still turn hostile, no? You still double-crossed Beckett, after all.

- It seems that none of these dialog cases in Beckett's dialog file are used at all:
Code:
    case "Captured_on_Oxbay2":
       dialog.text = DLG_TEXT[210] + pchar.lastname + DLG_TEXT[211];
       Link.l1 = DLG_TEXT[212];
       Link.l1.go = "Captured_on_Oxbay3";
     break;

     case "Captured_on_Oxbay3":
       dialog.text = DLG_TEXT[213];
       Link.l1 = DLG_TEXT[214];
       Link.l1.go = "Captured_on_Oxbay4";
     break;

     case "Captured_on_Oxbay4":
       dialog.text = DLG_TEXT[215];
       Link.l1 = DLG_TEXT[216];
       Link.l1.go = "exit_captured_on_Oxbay";
     break;

- I don't think we need to make the Jack Sparrow storyline too friendly for non-pirate players.
You're playing JACK SPARROW! You should expect to be a ruddy, bloody pirate!
It is deliberately advertised as such with the flag in the Select Storyline interface! :cheeky

From my side, I reckon the best way to deal with this though is to:
1. Set England hostile when the Wench is burned
2. Set the Pirates friendly when you accept the deal with Davy Jones
3. Change the dialog with Davy Jones to indicate that you now CAN join the Pirate Brotherhood at Nevis IF YOU WISH!
That allows deliberate player choice there, but WILL still turn ALL nations hostile if you choose to do so.

Being hated by all nations could make for interesting piratey gameplay though.
You'll be needing lots of false flags and avoid sailing in under any forts' cannons. Back doors required.
That is certainly not as simple as would normally be the case, but it IS piratey so this could actually be a good thing.
We could even have some sidequests REQUIRE that you are in the Pirate Brotherhood; that might make sense for those Pirate Lords ones, no?

- For game start, we could set the player neutral/wary with all nations; at least on Arcade Game Mode.
(Perhaps Personal Nation start should have all nations Wary, rather than Neutral?)
Then have England turn neutral for the first mission for Beckett and have them turn friendly once you fully join the EITC.
That would prevent any FULL RESETTING of nation relations in mid-game because we found that calling SetRelationsAsNation during the game isn't a very good idea anyway.

I do like it when changes to nations relations make sense in the context of the storylines.
That definitely makes it feel much more like the game world and the story go hand in hand.
@Grey Roger did a nice job with that for Hornblower! But Jack Sparrow clearly needs some more attention there.... :wp
 
- It seems that none of these dialog cases in Beckett's dialog file are used at all:
Code:
    case "Captured_on_Oxbay2":
       dialog.text = DLG_TEXT[210] + pchar.lastname + DLG_TEXT[211];
       Link.l1 = DLG_TEXT[212];
       Link.l1.go = "Captured_on_Oxbay3";
     break;

     case "Captured_on_Oxbay3":
       dialog.text = DLG_TEXT[213];
       Link.l1 = DLG_TEXT[214];
       Link.l1.go = "Captured_on_Oxbay4";
     break;

     case "Captured_on_Oxbay4":
       dialog.text = DLG_TEXT[215];
       Link.l1 = DLG_TEXT[216];
       Link.l1.go = "exit_captured_on_Oxbay";
     break;


case "Captured_on_Oxbay2": this case follows on from

Code:
case "Captured_on_Oxbay10":
       dialog.text = DLG_TEXT[229];
       Link.l1 = DLG_TEXT[230];
       Link.l1.go = "Captured_on_Oxbay2";

in Cutler Beckett-dialog.c

looks like things got a bit out of order - or confused here . :cheeky
 
If you get the chance, I'd welcome feedback on my above suggestions.
I think I've got a fairly good idea of what approach to take, but I might not have time to do it until the weekend.
So if you have any further comments or suggestions before that, I can still take them into account. :cheeky

case "Captured_on_Oxbay2": this case follows on from

Code:
case "Captured_on_Oxbay10":
       dialog.text = DLG_TEXT[229];
       Link.l1 = DLG_TEXT[230];
       Link.l1.go = "Captured_on_Oxbay2";

in Cutler Beckett-dialog.c

looks like things got a bit out of order - or confused here . :cheeky
But is THAT called from somewhere then?
 
If you get the chance, I'd welcome feedback on my above suggestions.
I think I've got a fairly good idea of what approach to take, but I might not have time to do it until the weekend.
So if you have any further comments or suggestions before that, I can still take them into account. :cheeky



But is THAT called from somewhere then?

I will be away till day after tomorrow -- I will think about your suggestions while away and should have a reply by the weekend. :checklist

My own prefered option is currently the one I gave in Post #9

in Cutler_Beckett_dialog.c

The Quests_reaction.c calls "Captured_on_Oxbay5":

here
Code:
  case "return_to_lighthouse_and_Annamaria2":
       StorePassengers(PChar.id);
       HoistFlag(ENGLAND);
       LAi_SetActorType(PChar);
       LAi_ActorTurnToCharacter(Pchar, characterFromID("Cutler Beckett"));
       characters[GetCharacterIndex("Cutler Beckett")].Dialog.Filename = "Cutler Beckett_dialog.c";
       LAi_SetActorType(characterFromID("Cutler Beckett"));
       LAi_ActorDialog(characterFromID("Cutler Beckett"),PChar,"player_back",10.0,10.0);
       Characters[GetCharacterIndex("Cutler Beckett")].dialog.currentnode = "Captured_on_Oxbay5";

then the order of the cases in the dialog file is:

"Captured_on_Oxbay5":
"Captured_on_Oxbay6";
"Captured_on_Oxbay7";
"Captured_on_Oxbay9";
"Captured_on_Oxbay10";
"Captured_on_Oxbay2";
"Captured_on_Oxbay3";
"Captured_on_Oxbay4";
"exit_captured_on_Oxbay";


EDIT :- Perhaps this thread should be moved out of the Bug Tracker ( into the Build Mod Forum perhaps ) to give it a bit more visablilty and hopefully some more comments from others.


:type1
 
Last edited:
This weekend I'll probably have time to make some further improvements.
If anyone has feedback on any of the above, SAY SO AS SOON AS POSSIBLE!
If I hear nothing, I'll do whatever sounds right to me and you guys can comment on it after its implementation.
But to prevent me wasting time doing stuff that has to be redone later, I prefer to have feedback in advance so I can do it all only once.... :wp
 
I agree with @Talisman if davy jones says you are part of the brotherhood you should be friendly
 
I agree with @Talisman if davy jones says you are part of the brotherhood you should be friendly
Obviously you DO need to become friendly with the Pirates at that stage; there is no doubt there.
It is more of a question of what else should be happening. By definition: When you actually JOIN the pirates, you become HOSTILE to everyone else.
That is a bit of a bigger step, of course! :shock
 
Back
Top