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

Included in Build Custom Pre-Defined Character Choices

Was the Nevis Pirate Settlement also Spanish? Didn't remember that.
Anyway, feel free to make those changes.

Your Corsair suggestion sounds good.
 
My mistake - I'd found this in "Periods.c":
Code:
period.Islands.QuebradasCostillas.Name = "Nuestra Senora de las Nieves";
period.Islands.QuebradasCostillas.smuggling_nation = SPAIN;
and mistook it for the assignment for the Pirate Settlement of Nevis (alias Quebradas Costillas), when it actually means the whole island. Charlestown is changed to be Spanish later:
Code:
period.Towns.Charlestown.Name = "Pueblo Carlos";
period.Towns.Charlestown.nation = SPAIN;
I'll have a wander round the Pirate Settlement some time with visible locators enabled and find somewhere suitable to hide the emissaries and tailors. (Possibly the house with the tunnel to Charlestown which plays a role in "Hornblower", unless you can think of any side quests which use it.)
 
No sidequests that I can think of. How about just putting them in the Pirate Leader House, though? At least that is a location that should be easily found by people.
Otherwise if these guys are in a location that players aren't familiar with, they might not notice that they exist. :facepalm
 
Another thought. What I'd like to have in the free play "StartStoryline.c" is some lines like "if (year > 1651) SetNationRelationBoth(HOLLAND, ENGLAND, RELATION_ENEMY);" so that if the chosen year is 1652 then it's the first Anglo-Dutch war so England and Holland are hostile. Other lines to put them at peace at a suitable time, and to handle some other beginnings and ends of wars. Specific stories such as "Bartolomeu" and "Hornblower" can look after international relations to suit themselves, either in "StartStoryline.c" or in "quests_reaction.c"; it's only the free play which could to with this. Then the default relations within a period could be set for the start of that period and lines like the above would set relations correct for whichever date the player chooses for the game.

If I remember correctly, Sid Meier's "Pirates" had Eleuthera as an English colony in the earliest period, and we could perhaps do likewise. Contrary to what is shown in "Periods.c", the Spanish did not own colonies there in the 16th century, and neither did anyone else - the Spanish had visited it and decimated the native population but didn't colonise it themselves, and the first colony was founded by a group of Puritans from Bermuda, the Eleutheran Adventurers, in 1648. Because an English (or Dutch) privateer in "Early Explorers" doesn't just need an emissary to give promotions, he'll also want a shipyard if he has any intention of getting some of the nicer ships. In particular, I don't see any way at the moment of getting hold of one of the English four-masted galleons other than by creating a specific character who starts out with one, or by stealing one from the English!
 
Another thought. What I'd like to have in the free play "StartStoryline.c" is some lines like "if (year > 1651) SetNationRelationBoth(HOLLAND, ENGLAND, RELATION_ENEMY);" so that if the chosen year is 1652 then it's the first Anglo-Dutch war so England and Holland are hostile. Other lines to put them at peace at a suitable time, and to handle some other beginnings and ends of wars. Specific stories such as "Bartolomeu" and "Hornblower" can look after international relations to suit themselves, either in "StartStoryline.c" or in "quests_reaction.c"; it's only the free play which could to with this. Then the default relations within a period could be set for the start of that period and lines like the above would set relations correct for whichever date the player chooses for the game.
You can do that in StartStoryline.c . Check globals.c for the correct year variables; I think it is iStartYear or something like that.
That variable should be accessible within StartStoryline.c so you can use it to correct the starting relations.

If I remember correctly, Sid Meier's "Pirates" had Eleuthera as an English colony in the earliest period, and we could perhaps do likewise. Contrary to what is shown in "Periods.c", the Spanish did not own colonies there in the 16th century, and neither did anyone else - the Spanish had visited it and decimated the native population but didn't colonise it themselves, and the first colony was founded by a group of Puritans from Bermuda, the Eleutheran Adventurers, in 1648. Because an English (or Dutch) privateer in "Early Explorers" doesn't just need an emissary to give promotions, he'll also want a shipyard if he has any intention of getting some of the nicer ships. In particular, I don't see any way at the moment of getting hold of one of the English four-masted galleons other than by creating a specific character who starts out with one, or by stealing one from the English!
Helps to offset your idea of Antigua no longer being accessible at all.
I think the main reason for it being Spanish is because the island name is Spanish. But that doesn't need to prevent it from being English-owned instead.
And an English colony is probably necessary for the Sir Francis Drake starting character.

Is Eleuthera Spanish also in The Spanish Main? I think it is. So does it then go from England to Spain to England and finally to United States then?
Bit of colony ping-pong there.... :wp
 
The name "Eleuthera" is not Spanish. It was given by the English settlers. ;) It's from the Greek word for "freedom".

In "Spanish Main", at least, Eleuthera is split. Alice Town is English, Puerto la Cruz is Spanish. The "Bartolomeu" and "Assassin" storylines rely on this.

From what I read here, the United States didn't take it at all during our time periods:
Next, the English took tighter control of the islands, especially after the American War of Independence. After their defeat, many Englishmen did not want to remain in the United States. Therefore, many emigrated with their slaves to the Bahamas, causing the white population of the Bahamas to double, and the black population to triple. The British subjects were given land, to aid their start in their new country.
I suspect the only reason America takes over Eleuthera during the later periods is that in reality it didn't have any colonies in our part of the Caribbean, putting it in the same position as England in "Early Explorers". So really I'm just suggesting the same solution for both problems. ;)
 
From what I read here, the United States didn't take it at all during our time periods:I suspect the only reason America takes over Eleuthera during the later periods is that in reality it didn't have any colonies in our part of the Caribbean, putting it in the same position as England in "Early Explorers".
That is exactly the reason. And sounds fine to me. :doff
 
Back to my earlier question: how do I find the year, as in "if (year > 1651) SetNationRelationBoth(HOLLAND, ENGLAND, RELATION_ENEMY);"? ;)
 
The variable to use is defined somewhere near the top of globals.c, if I recall.
 
Next question: how do I set where the ship will appear? I've found this in "StartStoryline.c":
Code:
switch(sti(PChar.nation))
{
     case ENGLAND:
       loadPort = "Oxbay_port";
       rldLocator_Port = "reload2";
     break;
I put a condition in there so that if it's "Early Explorers" then you go to Pirate Settlement port, Nuestra Senora de las Nieves ("Early Explorers" version of Nevis) instead. But the ship is still at "Oxbay_port"...
 
Normally you would use a SetCharacterShipLocation line (memory again, so... check spelling), which you can find references in PROGRAM\console.c for example.
However, that doesn't seem to be used for the start of the game.
I vaguely remember once seeing some related code, but couldn't find it again a while back when I went looking for it.

Perhaps @pedrwyth would have an idea. It used to be like that for an American start, but his work on the tutorial did fix it.
 
Perhaps @pedrwyth would have an idea. It used to be like that for an American start, but his work on the tutorial did fix it.

I suspect it may be case "Tut_ReloadToOxbayPort": in the turorial section of both_reaction.c which controls where you emerge (and it certainly controls where the ships are put via PlaceFleetNearShore(loadPort); That would be why @Pieter Boelen was emerging at Oxbay after setting the value to Eleuthera in StartStoryline.c and I fixed it by working through each switch case in the tutorial (without knowingly doing so). I'm not sure how being a REBEL allows you to emerge at QC (which it does) because I can't see a relevant check at this point in both_reaction.c. However I was only concerned with what happened if you were a loyal American.

The only other thing is the calls work via original port names ie QC_port and preprocessor deals with putting the correct name in place.

That said I thought you had decided on Eleuthera for the English at that time?
 
Last edited:
I'm not sure how being a REBEL allows you to emerge at QC (which it does) because I can't see a relevant check at this point in both_reaction.c.
Your nation is overridden and set to PIRATE and pirates start at Nevis.

I suspect it may be case "Tut_ReloadToOxbayPort": in the turorial section of both_reaction.c which controls where you emerge (and it certainly controls where the ships are put via PlaceFleetNearShore(loadPort);
That is probably it. I never really used the PlaceFleetNearShore function, but I suspect then that it contains a call to SetCharacterShipLocation . :yes
 
So if so it looks like the easiest solution for any character is to temporarily set their NATION to allow positioning at the required location (if one of the stock locations) through the tutorial (or skip tutorial) rather than having to work through each (of many) switch conditions with a reset via an IF statement to their required Nation at the end of the tutorial (or after stormy start). I think this will work with Eleuthera by choosing AMERICA as the NATION although it will need changing from Spanish to English in Early Explorers.
 
Last edited:
Skipping the tutorial for specific player types is something I have already put in place.
It works through this code in Robert Fletcher's dialog file:
Code:
      case "start":
         switch(CharPlayerType)
         {
           case PLAYER_TYPE_NAVAL_OFFICER:
             dialog.text = "Congratulations on your promotion, Mr. " + GetMyLastName(pchar) + ". You are hereby required and directed to sink, burn or take as a prize all enemy ships that you can.";
             link.l1 = "Aye aye, sir! I will set sail as soon as I arrive in port.";
             link.l1.go = "stormystart";
           break;

           case PLAYER_TYPE_ROGUE:
             dialog.text = "Captain, are you sure you want to do this? You know that what you did wasn't entirely honourable.";
             link.l1 = "The lady knew what she was doing. If her brother cannot deal with that, then he can deal with ME!";
             link.l1.go = "stormystart";
           break;

           case PLAYER_TYPE_GAMBLER:
             dialog.text = "Captain, while we are happy serve under you, we have no ill will towards our previous commander. He is just an unlucky man.";
             link.l1 = "He accused me of cheating! How dare he do such a thing? I'll make him pay for that.";
             link.l1.go = "stormystart";
           break;

           case PLAYER_TYPE_AGENT:
             dialog.text = "You are hereby ordered to go undercover in a hostile town and make as many problems for our enemies as you can. It will be dangerous and I do not expect we will see each other again.";
             link.l1 = "Understood, Sir. From here on, I will be on my own.";
             link.l1.go = "stormystart";
           break;

           case PLAYER_TYPE_CURSED:
             dialog.text = "Captain, all the coins we found have been stashed in the weaponslocker just like you ordered. But it seems some are missing, sir! One of the crew must have taken them.";
             link.l1 = "Is that so? Before we know it, they will be scattered all over the Caribbean and we'll have a hard time getting them back! I will go ashore straight away to start the search.";
             link.l1.go = "stormystart";
           break;

           dialog.text = DLG_TEXT[0];
           link.l1 = DLG_TEXT[1];
           link.l1.go = "intro2";
           link.l2 = DLG_TEXT[2];
           link.l2.go = "start1";
           link.l3 = DLG_TEXT[3];
           link.l3.go = "stormystart";
         }
         SetFleetInTown("Oxbay", "pchar");
         PChar.vcskip = true;
       break;
It then goes on with this code in both_reaction.c:
Code:
      switch(CharPlayerType)
       {
         case PLAYER_TYPE_NAVAL_OFFICER:
           LAi_QuestDelay("Custom_Start",1.0);
         break;

         case PLAYER_TYPE_ROGUE:
           LAi_QuestDelay("Custom_Start",1.0);
         break;

         case PLAYER_TYPE_GAMBLER:
           LAi_QuestDelay("Custom_Start",1.0);
         break;

         case PLAYER_TYPE_AGENT:
           LAi_QuestDelay("Custom_Start",1.0);
         break;

         case PLAYER_TYPE_CURSED:
           LAi_QuestDelay("Custom_Start",1.0);
         break;

         // The Diamond: Evil Stormy Start -->
         if (GetDifficulty() == DIFFICULTY_SWASHBUCKLER) {
           PChar.skill.Leadership = 1;
           PChar.skill.Fencing = 1;
           PChar.skill.Sailing = 1;
           PChar.skill.Accuracy = 1;
           PChar.skill.Cannons = 1;
           PChar.skill.Grappling = 1;
           PChar.skill.Repair = 1;
           PChar.skill.Defence = 1;
           PChar.skill.Commerce = 1;
           PChar.skill.Sneak = 1;
           PChar.skill.freeskill = 0;

           GiveShip2Character(PChar,"Tartane2","Leaky Bucket",-1,sti(PChar.nation),true,true);
           PChar.Ship.SP = MakeInt(GetCharacterShipSP(PChar) * 3 / 5); // Evil Stormy Start further damages sails

           PChar.money = 0;
           PChar.wealth = 0;
         }
         // The Diamond: Evil Stormy Start <--

         LAi_QuestDelay("TavernSitWaiting", 1.0);   // lets Malcolm disappear
         LAi_QuestDelay("stormystart2", 2.0);     // starts the next case
       }
And then the case "Custom_Start" afterwards.

While it is possible to make an exception only for Mr. Drake, perhaps this behaviour can be linked to the "Corsair" player type.
So "Corsair" will be "start at Nevis" and "start with a LoM of your chosen nation".
Is that an idea?

Code for giving a LoM, if you were still looking for it:
Code:
ReceiveLetterOfMarque(ENGLAND);
 
OK so some character types skip the tutorial completely and the rest can dismiss Malcolm if they choose. A bit of pot luck for the novice (but perhaps the concept is only experienced players will jump into free play options - probably true).

Having a look at how it plays out if you choose navy and the standard character (ie not a different pre-defined character) you don't get a ship although you are set down in the right place for nation choice. I went to the town hall to see if that gave you something but it just seemed standard dialogue (I am Captain of the ."). Each of the other types I tried you do get a ship. EDIT There may be a clue in the fact you are a Midshipman?

Some of the questbook start entries have things weird stuff like w165{ or weapo{ at the end of them too.

On a minor note
case PLAYER_TYPE_GAMBLER:
dialog.text = "Captain, while we are happy serve under you, we have no ill will towards our previous commander. He is just an unlucky man.";

should be "while we are happy to serve under you" or "while we will happily serve under you"
 
Last edited:
Some of the questbook start entries have things weird stuff like w165{ or weapo{ at the end of them too.
It seems to be a common problem/bug. I have seen it a lot of times in the GoldBug.
 
OK so some character types skip the tutorial completely and the rest can dismiss Malcolm if they choose. A bit of pot luck for the novice (but perhaps the concept is only experienced players will jump into free play options - probably true).
As I figure it, we cannot have a fully custom start AND the tutorial.
If players really want/need the tutorial, that is technically what the Standard Storyline is for.
Some custom start options do keep the tutorial, but that is more because they need some sort of default start.

Having a look at how it plays out if you choose navy and the standard character (ie not a different pre-defined character) you don't get a ship although you are set down in the right place for nation choice. I went to the town hall to see if that gave you something but it just seemed standard dialogue (I am Captain of the ."). Each of the other types I tried you do get a ship. EDIT There may be a clue in the fact you are a Midshipman?
Is that with the latest ZIP as well? I did notice before Midshipmen didn't get a ship (because they didn't get promoted in the StartStoryline loop), but I fixed that a while back as well.

Some of the questbook start entries have things weird stuff like w165{ or weapo{ at the end of them too.
Which ones are those? I don't remember seeing that before. :confused:

On a minor note
case PLAYER_TYPE_GAMBLER:
dialog.text = "Captain, while we are happy serve under you, we have no ill will towards our previous commander. He is just an unlucky man.";

should be "while we are happy to serve under you" or "while we will happily serve under you"
Ah, that does look like a bit of a typo in my part. Please fix! :cheeky
 
As I figure it, we cannot have a fully custom start AND the tutorial.
If players really want/need the tutorial, that is technically what the Standard Storyline is for.
Some custom start options do keep the tutorial, but that is more because they need some sort of default start.

Yeh that's fine and indeed Will Turner as swordmaster with the Flying Dutchman does look odd going into a tutorial. Probably any selected "character" and therefore their type should skip (so explorer and merchant should be included in skips too, given Corsair is going to be via Drake?) and then only if you choose an otherwise unused player type do you get the tutorial (as a place setting function) - for which in BBF it should be possible to add another dialogue choice upfront to allow you off the ship when you skip it but also skip all the other cases to avoid shop,tavern,shipyard and spyglass nonsense.

Is that with the latest ZIP as well? I did notice before Midshipmen didn't get a ship (because they didn't get promoted in the StartStoryline loop), but I fixed that a while back as well.

I think so I have it as downloaded 1 june which is later than the date of the zip at the top of 14 3.5 WIP (or is there a separate zip somewhere else?) but I'll do another download just to be sure rather than waste your time if it is fixed

Which ones are those? I don't remember seeing that before. :confused:

Agent, Cursed and Navy - I don't know if this is consistent
 
Back
Top