• 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 Early Explorers Starting Options

Grey Roger

Sea Dog
Staff member
Administrator
Storm Modder
I'm not sure if Martinique should exist in "Early Explorers". Martinique isn't sure if Martinique should exist in "Early Explorers"! If you press F2 and scroll through the islands in "Colonies", it doesn't appear, but you can buy a map of it and you can sail to St. Pierre.

You can do the various side quests there, including "Baldweyn Coffier", "Patric and the Idols", "Saga of the Blaque Family" and "Sabine Matton". That latter one is amusing because Arnaud Matton's dialog assumes you're playing the standard storyline, which leads to this:
matton.jpg

In fact, England is allied to France and at war with Portugal in "Early Explorers", which means England would probably be happy if France attacked Sao Luis. Portugal wouldn't be happy, it's supposed to be at peace with France.

You can also do the mission to sink the pirate warship. When I talked to the governor and said I was there on business, his first reaction was to offer a normal ship-hunting quest, which I accepted, and then I said I was there on business again and he offered the mission to sink the warship. This is the Iceni Queen, a super-frigate which is an impressive ship in "Revolutions" or "Napoleonic" and pretty much rules the waves in "Early Explorers". I can't remember now whether I boarded it or it boarded me, but by this time I had battle armour and a good sword and so did Fred Bob, so the captain realised he had no chance and surrendered. When I returned to the governor I had the choices to get the reward for the ship-hunting quest or the Iceni Queen, and I made the mistake of taking the ship-hunting quest reward first. Next time I talked to the governor about business, he said this:
french_gov.jpg
Huh? I asked him about France's relations, he said France is at war with Holland, which is true. I went to Barbados on a treasure quest, then raised a French flag and returned to St. Pierre, where the governor still said he's at war with England, which is (a) false and (b) irrelevant as I had a French flag and no LoM or criminal record to prove otherwise. There's nothing for it. I'm going to have to capture something big and Spanish, then if the governor still wants a war with England, he's going to have one. Briefly. xD
 
As I mentioned in the other thread, it is nearly impossible to get sidequests and character appearance right for all potential variations and year and nation relations.
I wouldn't object to some things being rectified where possible, though.

The appearance of the Iceni Queen already has its own Bug Tracker entry: http://www.piratesahoy.net/threads/constitution-in-all-time-periods.25100/
Will be easily fixed, but I need to find the time to actually do some stuff.

Is this "At war with England" Standard Storyline sidequest-code? Check the governor's dialog file.

For the appearance in the Colonies Interface, check PROGRAM\INTERFACE\tradeBook.c (I think).
I had to do some SERIOUSLY BAD CODING in there to prevent disabled islands from showing up in Early Explorers.
It works but isn't even remotely flexible and doesn't update according to what is set in Periods.c . :modding
 
The appearance of the Iceni Queen already has its own Bug Tracker entry: http://www.piratesahoy.net/threads/constitution-in-all-time-periods.25100/
Will be easily fixed, but I need to find the time to actually do some stuff.
Yes, I remember that thread. My problem is that there seems to be a conflict with the regular ship hunting quest, so that having been paid for that, which then closed, I can't now get paid for the Iceni Queen.
Is this "At war with England" Standard Storyline sidequest-code? Check the governor's dialog file.
It's on line 21 of "Joseph Claude Le Moigne_dialog.h", which (once you've accounted for the header line and the fact that "dialog.c" files count from 0 up) translates to DLG_TEXT[19], which appears in case "quests". Right after that is some checking to see how far, if at all, you've progressed through the "english_war_ship" quest - what is now the Iceni Queen.

The dialog lines referring to general ship-hunting quests seem to start at line 121 in the dialog.h file, which would translate to DLG_TEXT[119], except that there doesn't seem to be any reference to DLG_TEXT[119] in "Joseph Claude Le Moigne_dialog.c". So I can't even see where ship-hunting quests are initiated, let alone why they get in the way of being paid for "english_war_ship". But you separated a lot of generic governor stuff from specific governor stuff, and ship-hunting quests are generic, so they're probably handled somewhere else.

But in case "quests", there is this:
Code:
      if (npchar.quest.english_war_ship == "2")
       {
         dialog.text = DLG_TEXT[24] + GetMyAddressForm(NPChar, PChar, ADDR_CIVIL, false, false) + DLG_TEXT[25];
         link.l1 = DLG_TEXT[26];
         link.l1.go = "english_war_ship_4";
         npchar.quest.english_war_ship = "done";
       }
That dialog is:
"I heard about your defeat of the Corsair warship. Congratulations, <insert name here>". It was a brilliant victory!"
"I am happy to serve you and France, sir, but I would like to receive my reward for eliminating that Pirate Corvette before taking on a next assignment."
I saw that, it was the other choice besides accepting the reward for the ship-hunting quest. By not picking it, I missed the branch to "english_war_ship_4", which is where you get the payment and the quest closes. Whatever gives the reward for the ship-hunting quest must have set Joseph Claude De Moigne's dialog pointer back to a default position, which when you talk about business is the line about war with England unless another quest (e.g. "Girl Won in a Card Game") has been activated.
 
The dialog lines referring to general ship-hunting quests seem to start at line 121 in the dialog.h file, which would translate to DLG_TEXT[119], except that there doesn't seem to be any reference to DLG_TEXT[119] in "Joseph Claude Le Moigne_dialog.c". So I can't even see where ship-hunting quests are initiated, let alone why they get in the way of being paid for "english_war_ship". But you separated a lot of generic governor stuff from specific governor stuff, and ship-hunting quests are generic, so they're probably handled somewhere else.
You are very much correct. The file is "governor_dialog.c" if I recall.
The lines in the .h file related to that aren't used any longer. I didn't remove them because that would throw everything else out of whack. :wp

I saw that, it was the other choice besides accepting the reward for the ship-hunting quest. By not picking it, I missed the branch to "english_war_ship_4", which is where you get the payment and the quest closes. Whatever gives the reward for the ship-hunting quest must have set Joseph Claude De Moigne's dialog pointer back to a default position, which when you talk about business is the line about war with England unless another quest (e.g. "Girl Won in a Card Game") has been activated.
You can try a DumpAttributes on him and check his Dialog.CurrentNode which should tell you what he's currently at.
Then hopefully you can use that to track down how that got set.
 
What's a DumpAttributes? And even if I do find his Dialog.CurrentNode (which I can guess anyway, it's probably "quests" if he keeps talking about war with England), that won't help me figure out why the generic governor code is interfering with it. The simple workround is to reload my savegame from where I'm standing on St. Pierre pier about to go and hunt down both ships, get them both, then this time claim the reward on the Iceni Queen first. (And hope that doesn't foul up the reward and closing for the ship-hunting quest.)

Basically, it's a side effect of splitting generic governor stuff from specific governor stuff. :p
 
What's a DumpAttributes?
See here, point #5:
http://www.piratesahoy.net/threads/modding-tips-tricks.24942/

And even if I do find his Dialog.CurrentNode (which I can guess anyway, it's probably "quests" if he keeps talking about war with England), that won't help me figure out why the generic governor code is interfering with it.
It probably is indeed "quests". But the sidequest and the "ship hunting" quest should be completely separate from each other.
Compare the French governor's "quests" node with the "governor_dialog.c" quest case. Basically those two get combined.

Basically, it's a side effect of splitting generic governor stuff from specific governor stuff. :p
Not sure about that. Maybe the problem existed before, but nobody actually did them at the same time.
 
I can't remember exactly what I did with the Colonies Interface, but it is related to these lines in PROGRAM\INTERFACE\TradeBook.c:
Code:
int islandsortorder[22] = {3,4,5,15,17,19,8,16,1,14,10,9,2,12,6,13,11,0,20,21};         // LDH sort islands 22Feb09
int islandsortorder_early[22] = {3,4,5,19,8,16,1,14,10,9,2,6,13,0,20,21,11,12,15,17};     // LDH sort islands 22Feb09
I probably moved the index numbers for all disabled islands to the back so that they don't interfere with the normal Colonies.
All disabled islands are skipped while scrolling through them.
However, if the sortorder doesn't match with the disabled islands, you may see islands that are disabled and miss out on ones that are still active.
As far as I remember, Martinique was never disabled on purpose by me so should appear just fine.

It looks like the "My country is at war with England" line is the default behaviour for when no quests are available:
Code:
    case "quests":
       dialog.text = DLG_TEXT[19] + GetMyAddressForm(NPChar, PChar, ADDR_CIVIL, false, false) + DLG_TEXT[20];
       link.l1 = DLG_TEXT[21];
       link.l1.go = "exit";
That should DEFINITELY be changed in "Joseph Claude Le Moigne_dialog.h" as it is not at all guaranteed to be always true! :shock
I'm changing it to the regular default of:
Code:
"I'm sorry, but I don't have anything to talk about right now",

The reason why no normal ship hunting job shows up for you is probably because you just completed one.
It takes about 3 days before another becomes available.

This is probably the REAL killer though:
Code:
      if (npchar.quest.english_war_ship == "2")
       {
         dialog.text = DLG_TEXT[24] + GetMyAddressForm(NPChar, PChar, ADDR_CIVIL, false, false) + DLG_TEXT[25];
         link.l1 = DLG_TEXT[26];
         link.l1.go = "english_war_ship_4";
         npchar.quest.english_war_ship = "done"; // <---- THIS LINE ------
       }
Note that gets executed EVEN IF YOU DO NOT SELECT THAT OPTION!
So as far as the governor is concerned, you're already done with that quest and he doesn't need to discuss it again.
However, that line is ALSO further down, where I figure it SHOULD be:
Code:
    case "english_war_ship_4":
       dialog.text = DLG_TEXT[77];
       link.l1 = DLG_TEXT[78];
       link.l1.go = "exit";
       PlayStereoSound("INTERFACE\took_item.wav");
       AddMoneyToCharacter(pchar, 5000);
       if(AUTO_SKILL_SYSTEM)
       {
         AddPartyExpChar(pchar, "Leadership", 1500);
         AddPartyExpChar(pchar, "Sneak", 15);
       }
       else { AddPartyExp(pchar, 1500); }
       npchar.quest.english_war_ship = "done";
       AddQuestRecord("Hire_by_france_for_defeat_england_corvette", 3);
       CloseQuestHeader("Hire_by_france_for_defeat_england_corvette");
     break;
So the first version of that line can be removed to prevent any problems in the future.

This will not fix your savegame, so the simplest way to close the quest is to temporarily replace this:
Code:
if (npchar.quest.english_war_ship == "2")
With this:
Code:
if (true)
After that, everything should pretty much be back to normal. :yes
 
Going further, when I start the game in Early Explorers, Martinique DOES show up in the Colonies Interface.
So it not appearing is probably an issue unique to your own game because you disabled different islands.
Should be fixable by changing that islandsortorder_early variable.
 
The reason why no normal ship hunting job shows up for you is probably because you just completed one.
It takes about 3 days before another becomes available.
I didn't even think of that problem. ;) What bothered me was that I couldn't get paid for the Iceni Queen and there was no way to close that quest.
This is probably the REAL killer though:
Code:
      if (npchar.quest.english_war_ship == "2")
       {
         dialog.text = DLG_TEXT[24] + GetMyAddressForm(NPChar, PChar, ADDR_CIVIL, false, false) + DLG_TEXT[25];
         link.l1 = DLG_TEXT[26];
         link.l1.go = "english_war_ship_4";
         npchar.quest.english_war_ship = "done"; // <---- THIS LINE ------
       }
Note that gets executed EVEN IF YOU DO NOT SELECT THAT OPTION!
So as far as the governor is concerned, you're already done with that quest and he doesn't need to discuss it again.
However, that line is ALSO further down, where I figure it SHOULD be:
Code:
    case "english_war_ship_4":
       dialog.text = DLG_TEXT[77];
       link.l1 = DLG_TEXT[78];
       link.l1.go = "exit";
       PlayStereoSound("INTERFACE\took_item.wav");
       AddMoneyToCharacter(pchar, 5000);
       if(AUTO_SKILL_SYSTEM)
       {
         AddPartyExpChar(pchar, "Leadership", 1500);
         AddPartyExpChar(pchar, "Sneak", 15);
       }
       else { AddPartyExp(pchar, 1500); }
       npchar.quest.english_war_ship = "done";
       AddQuestRecord("Hire_by_france_for_defeat_england_corvette", 3);
       CloseQuestHeader("Hire_by_france_for_defeat_england_corvette");
     break;
So the first version of that line can be removed to prevent any problems in the future.

This will not fix your savegame, so the simplest way to close the quest is to temporarily replace this:
Code:
if (npchar.quest.english_war_ship == "2")
With this:
Code:
if (true)
After that, everything should pretty much be back to normal. :yes
Thanks for the consideration, but I had a savegame from just before I went to sea to hunt down both the Iceni Queen and the random ship. I reloaded that, got both ships, then returned to port and did the same as last time, i.e. claimed the reward for the generic ship-hunting quest first. This time I was able to get paid for the Iceni Queen and close its quest as well, so the fix was successful. :onya
 
Going further, when I start the game in Early Explorers, Martinique DOES show up in the Colonies Interface.
So it not appearing is probably an issue unique to your own game because you disabled different islands.
Should be fixable by changing that islandsortorder_early variable.
Where are the numbers which correspond to each island defined? I can't put "islandsortorder_early" in order unless I know which order to put them in. ;)
 
Where are the numbers which correspond to each island defined? I can't put "islandsortorder_early" in order unless I know which order to put them in. ;)
I think the order is the same that they're listed in PROGRAM\ISLANDS\islands_init.c .
 
As I mentioned in the other thread, it is nearly impossible to get sidequests and character appearance right for all potential variations and year and nation relations.
I wouldn't object to some things being rectified where possible, though.
Arnaud Matton is particularly bad because his dialog refers specifically not only to war between England and France, but also to the capture of Speightstown, which only happens in one story:
Code:
"I'm sure you're aware that relations between England and France aren't exactly warm.",
"True, and the French capture of #sOxbay# didn't help matters.",
"Yes, well... we're not talking about the policy of our governor.",
"Just what are talking about?",
"As I was saying, relations between France and England are strained. I'm afraid England may soon resort to force.",
How about this instead:
Code:
I'm sure you're aware that France has its enemies.",
"True, this is not exactly a time of peace and goodwill.",
"Yes, well... we're not talking about world peace.",
"Just what are we talking about?",
"As I was saying, France is at war.  I'm afraid that #sFalaise de Fleur# may soon be attacked.",
That should be sufficiently vague to work regardless of who France's enemies are, doesn't refer to a specific incident, but still gives Arnaud Matton enough grounds to have Sabine evacuated.
 
I can't remember exactly what I did with the Colonies Interface, but it is related to these lines in PROGRAM\INTERFACE\TradeBook.c:
Code:
int islandsortorder[22] = {3,4,5,15,17,19,8,16,1,14,10,9,2,12,6,13,11,0,20,21};         // LDH sort islands 22Feb09
int islandsortorder_early[22] = {3,4,5,19,8,16,1,14,10,9,2,6,13,0,20,21,11,12,15,17};     // LDH sort islands 22Feb09
I probably moved the index numbers for all disabled islands to the back so that they don't interfere with the normal Colonies.
All disabled islands are skipped while scrolling through them.
However, if the sortorder doesn't match with the disabled islands, you may see islands that are disabled and miss out on ones that are still active.
I've disabled Antigua in my version. Antigua is 13. Martinique is 0. Apparently once the scrolling gets to a disabled island, it quits, which is why Martinique didn't appear. It didn't simply skip the wrong island and display something it shouldn't - no island which is disabled, including Antigua, appeared either. With 13 and 0 swapped so that 13 is the first of all the disabled islands and 0 is the last of the non-disabled ones, Martinique now shows up as it should. :onya
 
I've disabled Antigua in my version. Antigua is 13. Martinique is 0. Apparently once the scrolling gets to a disabled island, it quits, which is why Martinique didn't appear. It didn't simply skip the wrong island and display something it shouldn't - no island which is disabled, including Antigua, appeared either. With 13 and 0 swapped so that 13 is the first of all the disabled islands and 0 is the last of the non-disabled ones, Martinique now shows up as it should. :onya
So all enabled islands show again and the disabled ones are missing like they should? NICE! :woot
 
They do provided all the disabled islands are moved to the end of the list. I tried an experiment - I moved 13 to the start of the list. That blocked everything from showing up on the "Colonies" interface. This is probably why you moved all disabled islands to the back of the list!
 
That must have been it. I couldn't remember why I set that up the way I did (because it is admittedly embarssingly stupid coding),
but I probably got annoyed with not being able to make it work properly and went for the easy solution. :facepalm

Anyway, I think that means there is no more "Early Explorers Martinique problem" anymore.
So... FIXED! :cheeky
 
@Grey Roger: Some new stuff for Periods.c:
Code:
    case PERIOD_EARLY_EXPLORERS:
       ChangeCharacterAddressGroup(characterFromID("English Emissary"), "Tortuga_Townhall",  "goto","goto2");
       ChangeCharacterAddressGroup(characterFromID("Dutch Emissary"),  "Tortuga_Townhall",  "Sit", "Sit1");
       ChangeCharacterAddressGroup(characterFromID("English Tailor"),  "Tortuga_store",  "barmen","bar2");
       ChangeCharacterAddressGroup(characterFromID("Dutch Tailor"),  "Tortuga_StoneHouse","reload","reload2");

       if (Items_FindItem("mapGuadeloupe", &item) >= 0) {
         item.skiptrade = true;
         item.skipsell  = true;
       }
       if (Items_FindItem("mapSaintMartin", &item) >= 0) {
         item.skiptrade = true;
         item.skipsell  = true;
       }
       if (Items_FindItem("mapAruba", &item) >= 0) {
         item.skiptrade = true;
         item.skipsell  = true;
       }
       if (Items_FindItem("mapCuracao", &item) >= 0) {
         item.skiptrade = true;
         item.skipsell  = true;
       }
       if (Items_FindItem("mapAntigua", &item) >= 0) {
         item.skiptrade = true;
         item.skipsell  = true;
       }
       if (Items_FindItem("musketbullets", &item) >= 0) {
         item.rare  = 0.00;
         item.skiptrade = true;
         item.skipsell  = true;
       }
     break;
Quite hard to find a spot for those tailors, because the town itself is so crowded that no more character fit.
 
Except they're only there in Early Explorers. :facepalm

Anyway, you'd certainly be welcome to improve on the above! :bow
 
Back
Top