• 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 Problems with "Bartolomeu o Portugues" storyline

Grey Roger

Sea Dog
Staff member
Administrator
Storm Modder
In "The Hunter", when you return to Sao Jorge after killing Arturo Campos, Augusto Queiroz is supposed to talk to you in port, before you go to report to the governor. He is supposed to become your officer after you have done things at San Salvador, which he can't do if you already have a full set of officers, so he won't be able to talk to you at Sao Jorge and the story breaks.

Initial report: http://www.piratesahoy.net/threads/augusto-queiroz-may-not-show-up.25091/
Problem line:
Code:
SetOfficersIndex(PChar, -1, GetCharacterIndex("Augusto Queiroz"));
Suggested fix:
Code:
SetOfficersIndex(PChar, 1, GetCharacterIndex("Augusto Queiroz"));
This forces Augusto Queiroz into your first companion slot, replacing anyone who was already there.

--

In "The Battle of Aguadilla", you are supposed to meet Daniel Montbars at the dock on La Tortue. Sometimes he talks to you but is invisible, and sometimes he fails to show up at all. Towards the end of the quest, you are supposed to talk to Bertrand Ogeron, Roxanne Lalliere and Arnaud Fontaines at the same dock and one or more of these may also fail to show up.

Initial report: http://www.piratesahoy.net/threads/missing-montbars.25114/
One problem is that both Daniel Montbars and Roxanne Lalliere are sent to "goto18", a locator which presumably was on the dock of the original La Tortue but which either is somewhere else or does not exist at all. Problem lines:
Code:
ChangeCharacterAddressGroup(characterFromID("Daniel Montbars"), "Tortuga_Port", "goto", "goto18");
...
ChangeCharacterAddressGroup(characterFromID("Roxanne Lalliere"), "Tortuga_Port", "goto", "goto18");
Suggested fix:
Code:
ChangeCharacterAddressGroup(characterFromID("Daniel Montbars"), "Tortuga_Port", "goto", "goto20");
...
ChangeCharacterAddressGroup(characterFromID("Roxanne Lalliere"), "Tortuga_Port", "goto", "goto19");
Both "goto19" and "goto20" do exist on the dock.
The reason characters fail to show up at all is that there are already a lot of characters in La Tortue and there may not be space for another one, let alone three more, especially if you have companion officers.

--

In "The Aztec Treasure", you meet Johan Elting in Vera Cruz tavern. His seat may already be taken.

Initial report: http://www.piratesahoy.net/threads/screenshots-thread.19554/page-46#post-508442
Problem: random extra characters in taverns.
Suggested solution: adding a ".vcskip" attribute at the appropriate time.
 
Thanks! :cheers

The reason characters fail to show up at all is that there are already a lot of characters in La Tortue and there may not be space for another one, let alone three more, especially if you have companion officers.
The .vcskip attribute might help for that too.
It is relatively easy to add/remove that as long as you know in which quest cases it should be done.
 
I tried adding a .vcskip before the scene in which you talk to Daniel Montbars and it didn't have any effect. The large number of people in La Tortue probably aren't random characters, they're generated by the "Tortuga Atmosphere" mod. Having said that, the savegame I've been using for testing is where I'm in La Tortue, having just spent the night in the tavern and now ready to visit the governor to start the "Battle of Aguadilla" quest. I don't know what would happen if the .vcskip was active before I arrived at La Tortue - would it prevent the "Tortuga Atmosphere" mod from generating the horde?
 

Attachments

  • -=Player=- Hispaniola. La Tortue port. August 24th, 1662 1.zip
    1.1 MB · Views: 110
As long as the .vcskip attribute is added to the player or the location before entering the location, it will take effect.

However, I can quite imagine that we didn't think to add the required check to the Tortuga Atmosphere mod.
That should be quite easily done in PROGRAM\QUESTS\quests_common.c though.
Just an if-statement around it will do. Ideally both the location AND the player should be checked for the attribute.
 
You know how to check such attributes and where to do it, which puts you two points ahead of me - go ahead. ;)

Is it possible to instead alter the "Tortuga Atmosphere" mod to reduce the number of people running around? That would fix the "Bartolomeu" storyline, also any existing stories which have the same problem, also any future stories which anyone might write involving Tortuga.
 
A line like this should do it:
Code:
lcn = locations[FindLocation(pchar.location);]
if(CheckAttribute(pchar, "vcskip") || CheckAttribute(lcn, "vcskip"))
This is again written from memory and especially the first line might not be entirely correct.
But it's something like that.
 
Is it possible to instead alter the "Tortuga Atmosphere" mod to reduce the number of people running around?
Yes it is. Or remove some of the other extra characters I added. Because the new larger Tortuga looked a little empty.
 
But if we add the vcskip check, we might not have to do that. :wp
 
Other way round - if we tone down the mod then we don't need to add vcskip lines in all quests that use Tortuga. :) It shouldn't need to be reduced much, if taking officers out of the active companions list is enough to make a difference. And you're never going to see all the people in Tortuga anyway...
 
Tortuga Atmosphere is usually 2x3 fighters, three ladies (for PotC film joke) and sometimes one running monk and skeleton.
Which ones do you want to get rid of? Now that Tortuga is larger, less fighters means you'll hardly notice them at all.
Getting rid of the ladies removes a feature that Bartolomeu and myself spent quite some time on and I'd really not like losing that joke unless we need to.
Same for the monk and skeleton.

Are we really arguing over removing functionality or putting in some if-statements? :shock
 
@Grey Roger, are there any bugs left here that you didn't already fix?

I think we still had to add that Tortuga vcskip check, right?
 
Yes, the Tortuga vcskip needs to be added, and so does the change to the "Tortuga Atmosphere" code to make it obey a vcskip.
 
Yes, the Tortuga vcskip needs to be added, and so does the change to the "Tortuga Atmosphere" code to make it obey a vcskip.
If I do the second part, could you find the place to put the lines in the quest code?
 
That should be possible. In fact, I think I did find the places to add the vcskip and corresponding disable, then took them back out when they didn't work.
 
Cool! I'll see about making the game understand it properly soon. Tonight if I manage it.
 
You may consider the vcskip attribute to affect Tortuga Atmosphere now too.
Tested on my own game version and seems to work. Will be in my next update, of course. :doff
 
In that case, if you haven't already added vcskip lines to "quests_reaction.c", try this. Without your fix to "Tortuga Atmosphere" they don't do much, but at least I've tested it and found that it doesn't have a game-breaking typo. :D

"Tortuga_port" should now have vcskip enabled throughout the whole "Battle of Aguadilla" chapter. It needs to be there pretty well at the beginning so that Daniel Montbars can show up, the next time you're at Tortuga is when Bertrand Ogeron is supposed to meet you on the dock, and then near the end everyone is on the dock so Ogeron can share out the loot. After that, normal service at Tortuga should resume.
 

Attachments

  • quests_reaction.c
    535.1 KB · Views: 115
In that case, if you haven't already added vcskip lines to "quests_reaction.c", try this. Without your fix to "Tortuga Atmosphere" they don't do much, but at least I've tested it and found that it doesn't have a game-breaking typo. :D
According to WinMerge, it is being added here:
Code:
    case "voir_Montbars_tortue":
       Locations[FindLocation("Tortuga_Port")].vcskip = true;
       DoQuestReloadToLocation("Tortuga_Port", "reload", "reload2" ,"voir_Montbars_tortue2");
       break;
But where is it supposed to be removed again?
 
It seems that when I found it didn't work, I removed the vcskip line but forgot to remove the disable line. So the disable will be in the older version of "quests_reaction.c" and won't show up in a WinMerge comparison with the newer one. Have a look at case "partager_goldbis3", which is pretty well the end of "Battle of Aguadilla" and by which point everyone who needs to appear at La Tortue dock has been there and said their pieces.
 
Back
Top