• 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!

Problems with "Help Two Pirates" sidequest

Grey Roger

Sea Dog
Staff member
Administrator
Storm Modder
I've rescued Capitaine Chevalle's crew and returned to Tortuga, where I get a questbook entry about Will Turner organising an expedition and suggesting I visit his house. When I do, I'm stuck, the reason being I'm waiting for Will Turner to talk to me, which he won't be doing because he isn't there.

Is there any reason for this line to be in the "Jack Sparrow" version of "blaze_dialog.c"?
Code:
    case "Where Chevalle":
       Dialog.Text = DLG_TEXT[285];
       Link.l1 = " ";
       Link.l1.go = "exit";
       AddDialogExitQuest("Jackpot_start_search"); // <-- This line
       AddQuestRecord("Chevalle", 11);
   break;
That's what's causing the trouble - "Jackpot_start_search" is the opening of the standard "Silver Train" sidequest, which writes the questbook entry and unlocks Will Turner's house.

Ignoring that advice, then, I head for the tavern and talk to the keeper, who tells me a French captain was seen heading for the brothel. (I normally have them enabled in "Options", partly in case I'm playing a storyline which needs them and partly as an alternative place to spend a night. :D) Upstairs are Chevalle and Villaneuva, who don't say much but suddenly I've got a new ship and a new quest. Here's why:
Code:
               if (IsBrothelEnabled())
               {
                   ChangeCharacterAddressGroup(CharacterFromID("Captaine Chevalle"), "Tortuga_Brothel_room", "goto", "locator2");
                   Pchar.quest.meetturner.win_condition.l1 = "location";
                   Pchar.quest.meetturner.win_condition.l1.location = "Tortuga_Brothel_room";
                   PChar.quest.meetturner.win_condition = "MeetTurner";
               }
So quest case "MeetTurner" is triggered. The snag is that not only does "MeetTurner" exist in "both_reaction.c", it is also the quest case for the standard version in "quests_side.c", and it's probably the latter which takes precedence. The only way I can progress the quest is to actively talk to Villaneuva myself.

I've tried correcting this by commenting out that 'AddDialogExitQuest' line in "blaze_dialog.c", and renaming the quest case in "both_reaction.c" to "MeetVillanueva". That seems to have done the trick - I don't get the misleading questbook line about Will Turner, and when I go to the brothel room, Villaneuva is the one to initiate dialog, in which he introduces the quest properly. Assuming this doesn't break anything further along in the storyline, this sidequest should now work a bit better. (It probably originally worked correctly. Originally the standard sidequests were only available in "Tales of a Sea Hawk" so there was no confusion. I suspect this hasn't worked properly since all the sidequests were separated out.)
 
Storyline quest cases should take precedence over generic ones with the same name.
We've had issues with that before, but I thought they were fixed ages ago. :shock

If you want to be sure, put a different Trace statement in both versions, then see which statement actually gets logged to compile.log .
 
Really?:shock

I still remember when I did the quest, but I didn't have this problem ...
You won't have had a problem if you didn't go into Will Turner's house, which you're not supposed to do in the "Helping Two Pirates" version. But I'm trying to make the storyline relatively idiot-proof, which means I need to act like an idiot, so when I see a questbook telling me to go to Will Turner's house, I think "Wonderful, I'm playing Jack Sparrow, now I get to meet Will Turner". :pirate07: (Actually, that's not quite true. What I really thought was "That's the regular Silver Train quest - isn't that supposed to be disabled? What happens if I try to follow it?" It broke, of course.)
 
Storyline quest cases should take precedence over generic ones with the same name.
We've had issues with that before, but I thought they were fixed ages ago. :shock

If you want to be sure, put a different Trace statement in both versions, then see which statement actually gets logged to compile.log .
Or just rename the local one so there's no chance of confusion. Besides, I don't need a trace statement. One version has Will Turner try to talk to you, the other has Eduardo Villanueva try to talk to you. If Eduardo Villanueva does not try to talk to you, guess which one has just been called. :D After the renaming, Eduardo Villanueva did talk to me.

Another piece of weirdness was near the end, when we'd looted the silver and returned to Tortuga, and the two pirates start fighting over who's going to take over La Licorne. That's when I saw an error message that case "/*Eduardo_retail*/" had not been found. Someone decided to call case "Eduardo_retail" with a 'LAi_QuestDelay' command instead, and must have thought that putting comment markers round the quest name would prevent it from being used:
Code:
LAi_ActorAnimation(characterFromID("Captaine Chevalle"), "attack_2", "/*Eduardo_retail*/", 0.0);
Removing the redundant quest name entirely put an end to that error.

Then Francois de Hadoque suggests that you and he leave them to it and go off to Turks Island. Remember how there's a bit of Storyteller dialog in which you can turn into Guy Verbinski and have the option to do some more sailing before the 10 year delay? This is what triggers it. Right after you arrive at Turks Island, you teleport to Tortuga tavern, turn into Guy Verbinski, and get the option to ask what happens to Jack in his new ship. If you take that, you teleport back to Turks Island and resume play as Jack Sparrow. Francois de Hadoque splits the loot with you, then you're on your own and can do what you want. And that's why the "Sao Feng's Bodyguards" side quest is going to be investigated next...
 
So apparently there is something wrong in the order that quest cases are found.
Should be possible to rectify that by editing quests.c .
 
Back
Top