• 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 Correcting "Early Explorers" Period

I was thinking along the lines of "if you don't have a LoM, but are attacking other nation' ships, that constitutes an act of piracy.
Right now that isn't handled quite like that. It is all part of your Served Nation/False Flag suggestions.
Yes, that too. Of course, for that to be any use, NPC merchants would also need to be programmed not to fire first, otherwise they're pirates too. :pirateraft

It displays when you face the character below the portrait in the upper-left corner, but indeed NOT in the dialog.
I'm thinking of making SetRankTitle store the title in pchar.title = "whatever"; and then always append that for the GetMyName(sp?) function.
That way it is independent from the actual rank but still generic in a way. Does that sound like an option?
If it means 'SetRankTitle' will cause the character's title to appear before his rank, yes. It means Francis Drake will be Sir Francis Drake, at least until he gets another promotion, and also means Captain Sir Edward Pellew will identify himself as that within the game as well as in the video. It also means I don't need to change "Nk.c" to add "Sir" to "Francis" for Drake.
 
Yes, that too. Of course, for that to be any use, NPC merchants would also need to be programmed not to fire first, otherwise they're pirates too. :pirateraft
Technically also true. Though if you're hostile to the merchant and come close, I don't see why they shouldn't be allowed to immediately fire in defense.
You have no business being that close, after all! But they shouldn't ever pursue, really.

If it means 'SetRankTitle' will cause the character's title to appear before his rank, yes. It means Francis Drake will be Sir Francis Drake, at least until he gets another promotion, and also means Captain Sir Edward Pellew will identify himself as that within the game as well as in the video. It also means I don't need to change "Nk.c" to add "Sir" to "Francis" for Drake.
It means the 'SetRankTitle' call in NK.c needs to remain and will actually have more of a visible effect. I hope....
 
Here's a new sword, @Grey Roger.

Could you write a description for it and also adapt the side quest texts ?

Can I get the model and texture files for this so I can fit it into the Moulin side quest?

Alternatively, can someone else who has the files edit:
"PROGRAM\quests\quest_side.c", specifically case "jelaifini", replace "blade34+2" with whatever this sword is called;
"RESOURCE\INI\TEXTS\ENGLISH\QUESTBOOK\Moulin.txt", possibly replacing line 10 with something more specific to this sword. (These will need to come from here)

"PROGRAM\ITEMS\initItems.c" and "RESOURCE\INI\TEXTS\ENGLISH\ItemsDescribe.txt" to add entries for the sword, if they are not already there in preparation for the next update. (Get the updated versions from here.)
 
If it means 'SetRankTitle' will cause the character's title to appear before his rank, yes. It means Francis Drake will be Sir Francis Drake, at least until he gets another promotion, and also means Captain Sir Edward Pellew will identify himself as that within the game as well as in the video. It also means I don't need to change "Nk.c" to add "Sir" to "Francis" for Drake.
I think I got it! Good thing you encouraged me to check up on this, because all NPCs with ranks had privateer names instead of navy ones.
That's.... uhm.... not very good for the Hornblower storyline. Corrected now.

Characters' FULL NAME is now shown as header in the dialog interface. That does include titles but does NOT include rank names.
Additionally, the title is also mentioned now in various dialogs. So not only will you be a "Sir", you'll actually notice that as well! :wp
 
Note that while I do seem to have the functionality working for the privateer titles (still needs to be confirmed through testing, of course),
I kept the rank where Drake becomes "Sir" as @Grey Roger set it up.
However, that does NOT match with the current privateering ranks.
So you first become "Knight" (at rank 3) and then become "Sir" a fair bit later (at rank 6).
Now THERE's some logic for you! :oops:

I'm hoping Grey Roger can tweak the various rank names so that it makes sense across the board. :cheeky
 
Completely independent privateer ranks are now working in this update: http://www.piratesahoy.net/threads/build-14-beta-3-5-internal-wip-for-testing.24817
This is still to be improved on though as per the above posts.

Keep a good eye on what navy and privateer ranks are displayed throughout the game.
They should all be OK, but you never do know....

Also, the fame level in F2>Nations Relations no longer uses pirate terms.
 
You can find the privateering ranks in the attached file. You're welcome to make any adjustments you see fit.

I also removed all "complex" characters from the navy titles because those characters didn't display in the interface at all. :(
Try this. I've copied naval ranks up to 6 into the "rNation.Titles" slots and moved all the noble titles down, so that an English privateer will become Knight at rank 7 and Marquess at rank 12. I've left Pirates as they were, being varying levels of fame. America alone continues with military rank to level 7, Commodore; all subsequent titles are now political, including Representative, Senator and Governor.

You didn't get all the "complex" characters. Portugal had quite a few. Not any more. :D
 

Attachments

  • nations_init.c
    41.4 KB · Views: 100
You probably didn't know that as well as being a privateer in the service of Queen Elizabeth I, Francis Drake is also an agent of the Temporal Police. Having received a report of another anomaly, he's brought the perpetrator to justice:
ships.jpg

That's Will Turner's ship from the "Silver Train" side quest. Where is it given to him? The Aurora shouldn't exist before "Colonial Powers" so I'd like to put a condition in there to give Will something more appropriate to earlier periods. (Technically it shouldn't exist in "Napoleonic" either, but the Fast Merchantman does and it's basically an Aurora with reduced armament and increased cargo, so it's not impossible that Will got one of those and reversed the modification...)
 
Try this. I've copied naval ranks up to 6 into the "rNation.Titles" slots and moved all the noble titles down, so that an English privateer will become Knight at rank 7 and Marquess at rank 12. I've left Pirates as they were, being varying levels of fame. America alone continues with military rank to level 7, Commodore; all subsequent titles are now political, including Representative, Senator and Governor.
Brilliant! :woot
I like your custom titles for the USA too. Much more appropriate than the English royal ones I stuck in there. :onya

You didn't get all the "complex" characters. Portugal had quite a few. Not any more. :D
I left those in on purpose because I *think* those actually work. The other complex characters might work too if we put in something similar.
But for those ones, I don't know what to put in.... Still to be figured out. :facepalm

That's Will Turner's ship from the "Silver Train" side quest. Where is it given to him? The Aurora shouldn't exist before "Colonial Powers" so I'd like to put a condition in there to give Will something more appropriate to earlier periods. (Technically it shouldn't exist in "Napoleonic" either, but the Fast Merchantman does and it's basically an Aurora with reduced armament and increased cargo, so it's not impossible that Will got one of those and reversed the modification...)
Confirmed. PROGRAM\Characters\init\SideQuest.c:
Code:
  ch.old.name = "Will";
   ch.old.lastname = "Turner";
   ch.name = TranslateString("","Will");
   ch.lastname = TranslateString("","Turner");
   ch.id     = "Will Turner";
   ch.nation   = ENGLAND;
   ch.sound_type = "seaman";
   ch.model   = "Will";
   ch.sex = "man";
   GiveItem2Character(ch, "blade18");
   ch.equip.blade = "blade18";
   GiveItem2Character(ch, "pistol5");
   ch.equip.gun = "pistol5";
   //JRH ammo mod -->
   TakenItems(ch, "gunpowder", 6);
   TakenItems(ch, "pistolbullets", 6);
   //JRH ammo mod <--
   ch.location   = "none";
   ch.location.group = "";
   ch.location.locator = "";
   ch.Dialog.Filename = "Will Turner_dialog.c";
   ch.Ship.Name = "The Adventurer";
   ch.Ship.Type =    "Corvette2";
Clearly no period dependency there.

Search that file for "ch.Ship.Type" to find any other inappropriate assignments.
Based on a quick look, there are probably some more similar issues. There are also two in PROGRAM\Characters\Officers.c .
 
Of the other officers in there, most have ships which aren't too badly out - barques, brigs etc. The Vogelstruijs is wrong for "Early Explorers", but then so is the entire side quest. Then there's "NL_Amsterdam", you can perhaps suggest what you want your namesake to use in earlier periods. ;)

And I'm not sure what to do about the Mefisto. First thought was PiratFastGal, but that's Roche Brasiliano's ship. Maybe use it for various early period pirate ships because there are several references to "PiratFrigateSup" which also shouldn't exist in "Early Explorers" or "Spanish Main".

Edit: file deleted, updated version with period-correct Amsterdam uploaded in a later post.
 
Last edited:
A "Pieter Boelen" who is NOT the captain of the Amsterdam? Where's the fun in that? :razz

Very well then... The "NL_Derfflinger" will do. As long as she's still called the "Amsterdam". :rolleyes:
 
A "Pieter Boelen" who is NOT the captain of the Amsterdam? Where's the fun in that? :razz

Very well then... The "NL_Derfflinger" will do. As long as she's still called the "Amsterdam". :rolleyes:
I'm not changing any ship names! Will Turner's ship is still The Adventurer, "Pieter Boelen" still has Amsterdam, but now they only need to worry about Spaniards, not the Temporal Police. :D
 

Attachments

  • SideQuest.c
    148.9 KB · Views: 81
Unless Pieter already had them and included them in the latest update, yes.
 
Many characters in town have been renamed to match the current nationality of the town. This includes storekeepers, shipyard owners etc., as well as local citizens. It does not include the ladies standing around outside the town hall in Palo Brasil, which is Spanish in "Early Explorers" and Dutch Kralendijk in other periods. The ladies still have their Dutch names.

Is there a variable which can be used to give a character's correct name, the same way #sRedmond#" gives the correct name for Port Royale? The questbook entry for "Help the Church" uses variables for town and island names, but not for characters, so it says I'm helping Father Bernard in Villa de la Vega.
 
Many characters in town have been renamed to match the current nationality of the town. This includes storekeepers, shipyard owners etc., as well as local citizens. It does not include the ladies standing around outside the town hall in Palo Brasil, which is Spanish in "Early Explorers" and Dutch Kralendijk in other periods. The ladies still have their Dutch names.
That might be because characters with the .questch attribute don't get their names changed randomly.
Simple solution in this case might be to remove that attribute for them from PROGRAM\Characters\init\Douwesen.c (I think they're in that file and not in SideQuest.c).

Is there a variable which can be used to give a character's correct name, the same way #sRedmond#" gives the correct name for Port Royale? The questbook entry for "Help the Church" uses variables for town and island names, but not for characters, so it says I'm helping Father Bernard in Villa de la Vega.
It is possible by defining whatever "preprocessor" you want to use prior to the questbook entry being written.
A recent example by @pedrwyth is in PROGRAM\DIALOGS\Malcolm Hatcher_dialog.c near the top.
There a random "enemy nation" is defined, which is placed on the spot of the variable in the English\*_dialog.c file.
Does that help?
 
That might be because characters with the .questch attribute don't get their names changed randomly.
Simple solution in this case might be to remove that attribute for them from PROGRAM\Characters\init\Douwesen.c (I think they're in that file and not in SideQuest.c).
Strangely enough, they are in "SideQuest.c" (right at the top, in fact), though Toff Oreman's daughter and all characters associated with that quest are in "Douwesen.c".

So, in "SideQuest.c", in the entry for each of the women by the town hall is this:
Code:
ch.questchar = true;//MAXIMUS: identifier for captives
What does that comment about captives mean? Is something else likely to break if this attribute is removed? Perhaps put a condition "if (GetCurrentPeriod() != PERIOD_EARLY_EXPLORERS)" around that line; if there's some other quest which requires the attribute to be set, it should then be fine provided it doesn't take place in "Early Explorers".

It is possible by defining whatever "preprocessor" you want to use prior to the questbook entry being written.
A recent example by @pedrwyth is in PROGRAM\DIALOGS\Malcolm Hatcher_dialog.c near the top.
There a random "enemy nation" is defined, which is placed on the spot of the variable in the English\*_dialog.c file.
Does that help?
Not really. For one thing, I'm guessing the line you mean is 'Preprocessor_Add("enemy",GetNationDescByType(iNation));' in case "start" but I've no idea what that does. For another, preprocessors aren't involved at the moment because the priests' names are hard-coded into the questbook entry:
Father Bernard is the head of the church in #sRedmond# on #sisland_Redmond#. He asked me to find evidence to prove whether the priest named Father Jerald is guilty or not.
But "Father Bernard" must have a variable identifier somewhere because he's not Father Bernard when you go to talk to him, and the same applies to Father Jerald.
 
So, in "SideQuest.c", in the entry for each of the women by the town hall is this:
Code:
ch.questchar = true;//MAXIMUS: identifier for captives
What does that comment about captives mean? Is something else likely to break if this attribute is removed? Perhaps put a condition "if (GetCurrentPeriod() != PERIOD_EARLY_EXPLORERS)" around that line; if there's some other quest which requires the attribute to be set, it should then be fine provided it doesn't take place in "Early Explorers".
The comment means that it is used to prevent enemy quest captains from getting messed up when they're captured. Or something.
That doesn't apply here, because I don't think you'll ever see any of those three ladies as enemy ship captain. ;)

Not really. For one thing, I'm guessing the line you mean is 'Preprocessor_Add("enemy",GetNationDescByType(iNation));' in case "start" but I've no idea what that does. For another, preprocessors aren't involved at the moment because the priests' names are hard-coded into the questbook entry:But "Father Bernard" must have a variable identifier somewhere because he's not Father Bernard when you go to talk to him, and the same applies to Father Jerald.
They probably get their names randomized because of the nation change. That means that their ch.name and ch.lastname get changed but ch.id of course always remains the same.

So you'd probably need to do something like this:
Preprocessor_Add("FatherBernard", GetMySimpleName(CharacterFromID("Father Bernard")));
Just prior to writing the appropriate questbook entry.
Then you should be able to use something like #sFather Bernard# to fill in his actual name.
I'm writing all this from memory right now, so you have to double-check the syntax.
If you look at Malcolm's dialog.h file, you should see where and how this "enemy" preprocessor is used.
 
Back
Top