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

Information aboute The New Pirate Age - Update! [WIP]

@Grey Roger
Ok! Silvers Rayleigh will be on CUPA in the Priate City(Puerto Principe)
in the Tavner on Punta de Maisi.
There is no Pirate City Puerto Principe, unless you have created it. The only two towns on Cuba are Havana and Santiago. Punta de Maisi is a beach, not a town, and has no tavern. There is "Smugglers_Fort", a place which looks like a village and is a little way out from Havana, but that's completely empty - there is no tavern here either.

Or Silvers Rayleigh will sit in the Tavern in Alice Town
That can work. If you're playing in the "Golden Age of Piracy" period, Alice Town is English, in which case you can leave Silvers Rayleigh with 'LAi_group_MoveCharacter(ch, "ENGLAND_CITIZENS");'. You'll still want to edit "InternalSettings.h" to make locators visible, go to the tavern, and find the name of a locator where you want him to sit.
 
Here Where are the Officer are Sitting in the Tavern:

* Pirate Red-Hair Shanks of St. Martin / Marigot Tavern
* Pireat Trafalgar D. Water Law off Antiugua / St. Johns Tavern
* Pirate Silvers Rayleigh off Martinique / St. Pierre
 
Last edited:
Hm Ok then i must find a maybe a ather place.
How about you do what I suggested:
Walk around with VISIBLE_LOCATORS set to 1, find a nice tavern you like and use Console to tell you the location ID.
 
It's called Falaise de Fleur; that was the name in the unmodded game.
You don't notice that inside the game anymore, but the code still refers to it.
 
Ah ok thanks!

I am thing about to put more sitting Officiers in my update!
* Nevis / Charlestown Tavern - Roronoa Zoro [First Mate]
* Brababdos / Brigdetown Tavern - Nico Robin [Quartermaster]
* Brababdos / Speightstown Tavern - Nami [Navigator]
* Jamaica /Port Roaly Tavern - Sanji
* Martinique / St. Pierre Tavern[SitSit7] - Tony Chopper [Surgeon]]
* Cayman / Grand Cayman Tavern - Franky [Carpenter]
* Hispanol / Santo Domingo Tavern - Lysop [Gunner]



* Antigua / St. Johans Tavern[SitSit13] - Trafalgar D. Water Law
* Turks / Grand Turk Tavern - Silvers Rayleigh
* St. Martin / Marigot Tavern[SitSit5] - Red-Hair Shanks
 
How about you get one actually working first?
Once you do that, you'll know how to add them and then you can do whatever you want.
No need to announce your grand plans on the forum of instead of thinking about things, you can DO things! ;)
 
I announce it because if any Island has a other Dateiname!

@Pieter Boelen place can you check this:
ch.old.name = "Trafalgar ";
ch.old.lastname = "D. Law";
ch.name = TranslateString("","Trafalgar");
ch.lastname = TranslateString("","D. Law");
ch.id = "Trafalgar D. Law";
ch.model = "9S_Law";
ch.sex = "man";
ch.loyality = 15;
ch.alignment = "SitSit13";
ch.sound_type = "seaman";
GiveItem2Character(ch, "bladeC40");
ch.equip.blade = "bladeC40";
ch.location = "SantJohns_tavern";
ch.location.group = "Sit";
ch.location.locator = "Sit13";
ch.homelocation = "SantJohns_tavern";
ch.homelocation.group = "sit";
ch.homelocation.locator = "sit13";
ch.Dialog.Filename = "Enc_Officer_dialog.c";
ch.greeting = "";
ch.rank = 1;
ch.reputation = "45";
TakeNItems(ch,"medical1", Rand(4)+1);
ch.experience = CalculateExperienceFromRank(1)+ (CalculateExperienceFromRank(1)/10 + rand(500));
ch.skill.Leadership = "5";
ch.skill.Fencing = "5";
ch.skill.Sailing = "4";
ch.skill.Accuracy = "1";
ch.skill.Cannons = "1";
ch.skill.Grappling = "4";
ch.skill.Repair = "3";
ch.skill.Defence = "4";
ch.skill.Commerce = "0";
ch.skill.Sneak = "3";
ch.money = "0";
ch.quest.help = "0";
ch.quest.dialog = "0";
LAi_SetSitType(ch);
LAi_group_MoveCharacter(ch, "ENGLAND_CITIZENS");
ch.HPBonus = 100; // KevAtl 08-26-2007 to correct for game giving low HP
ch.isOfficer = true;
AddGameCharacter(n, ch);
 
Last edited:
I announce it because if any Island has a other Dateiname!
Yes, all the islands which were in the original game still use their old names for coding. Also, in the original game, each town had the same name as the island, except for one where there were two towns on the same island.
  • Old name = New island name / new town name
  • Conceicao = La Grenade / Sao Jorge (*)
  • Falaise de Fleur = Martinique / St. Pierre
  • Redmond = Jamaica / Port Royale (*)
  • Isla Muelle = Puerto Rico / San Juan
  • Douwesen = Bonaire / Kralendijk
  • Oxbay = Barbados / Speightstown
    • Greenford = Bridgetown
  • Quebradas Costillas = Nevis / Pirate Settlement
    • Charlestown did not exist in the original game so has no old name, but it's on island Quebradas Costillas / Nevis
  • Khael Roa = Cozumel (no town on either the old or new island)
(*) Islands and towns marked like this have different names in Build 14 depending on the period in which you're playing. The names given here are those used in the "Golden Age of Pirates" period, as I believe that's the period you're using. You can find the other names by looking in "PROGRAM\Periods.c".

@Pieter Boelen place can you check this:
ch.old.name = "Trafalgar ";
ch.old.lastname = "D. Law";
ch.name = TranslateString("","Trafalgar");
ch.lastname = TranslateString("","D. Law");
ch.id = "Trafalgar D. Law";
ch.model = "9S_Law";
ch.sex = "man";
ch.loyality = 15;
ch.alignment = "SitSit13";
ch.sound_type = "seaman";
GiveItem2Character(ch, "bladeC40");
ch.equip.blade = "bladeC40";
ch.location = "SantJohns_tavern";
ch.location.group = "Sit";
ch.location.locator = "Sit13";
ch.homelocation = "SantJohns_tavern";
ch.homelocation.group = "sit";
ch.homelocation.locator = "sit13";
ch.Dialog.Filename = "Enc_Officer_dialog.c";
ch.greeting = "";
ch.rank = 1;
ch.reputation = "45";
TakeNItems(ch,"medical1", Rand(4)+1);
ch.experience = CalculateExperienceFromRank(1)+ (CalculateExperienceFromRank(1)/10 + rand(500));
ch.skill.Leadership = "5";
ch.skill.Fencing = "5";
ch.skill.Sailing = "4";
ch.skill.Accuracy = "1";
ch.skill.Cannons = "1";
ch.skill.Grappling = "4";
ch.skill.Repair = "3";
ch.skill.Defence = "4";
ch.skill.Commerce = "0";
ch.skill.Sneak = "3";
ch.money = "0";
ch.quest.help = "0";
ch.quest.dialog = "0";
LAi_SetSitType(ch);
LAi_group_MoveCharacter(ch, "ENGLAND_CITIZENS");
ch.HPBonus = 100; // KevAtl 08-26-2007 to correct for game giving low HP
ch.isOfficer = true;
AddGameCharacter(n, ch);
The model name can be anything you like, it does not have to resemble the name of the model on which it is based. The texture file which goes with it, however, must have exactly the same length file name as the original. So you could call the model "Law.gm", "Trafalgar.gm", "Trafalgar Law.gm" or anything else. But as all "9S" texture files have names 8 characters long, e.g. "9S_Nat_a.tga.tx", yours must also be 8 letters long. It does not need to contain "9S", though that does not do any harm. You could call it "9S_Law_T.tga.tx", "Traf_Law.tga.tx", or anything else 8 characters long. But "9S_Law.tga.tx" will not work.

I'm not sure what 'ch.alignment' is supposed to do, but I'd be willing to bet that "SitSit13" is not a useful value for it.

You're giving him "blade_C40". Presumably this is a new weapon you're introducing into the game?

For the "location" lines, "SantJohns_tavern" does not exist. Check "PROGRAM\Locations\init\Antigua.c" - you'll find that the tavern is "Antigua_Tavern".

You may want to add a 'ch.quest.officertype' line to define what sort of officer Trafalgar D. Law will be. You can find a list of valid officer types in "PROGRAM\Characters\officers.c". For example, to make him a first mate, add 'ch.quest.officertype = OFFIC_TYPE_FIRSTMATE;'.
 
Ok. Thanks!
@Grey Roger
The Texture is called: 9s_Law-2.tga.tx

ch.old.name = "Trafalgar ";
ch.old.lastname = "D. Law";
ch.name = TranslateString("","Trafalgar");
ch.lastname = TranslateString("","D. Law");
ch.id = "Trafalgar D. Law";
ch.model = "Trafalgar Law";
ch.sex = "man";
ch.loyality = 15;
ch.alignment = "SitSit13";
ch.sound_type = "seaman";
GiveItem2Character(ch, "bladeC40");
ch.equip.blade = "bladeC40";
ch.location = "Antigua_Tavern";
ch.location.group = "Sit";
ch.location.locator = "Sit13";
ch.homelocation = "Antigua_Tavern";
ch.homelocation.group = "sit";
ch.homelocation.locator = "sit13";
ch.Dialog.Filename = "Enc_Officer_dialog.c";
ch.greeting = "";
ch.rank = 1;
ch.reputation = "45";
TakeNItems(ch,"medical1", Rand(4)+1);
ch.experience = CalculateExperienceFromRank(1)+ (CalculateExperienceFromRank(1)/10 + rand(500));
ch.skill.Leadership = "5";
ch.skill.Fencing = "5";
ch.skill.Sailing = "4";
ch.skill.Accuracy = "1";
ch.skill.Cannons = "1";
ch.skill.Grappling = "4";
ch.skill.Repair = "3";
ch.skill.Defence = "4";
ch.skill.Commerce = "0";
ch.skill.Sneak = "3";
ch.money = "0";
ch.quest.help = "0";
ch.quest.dialog = "0";
ch.quest.officertype = OFFIC_TYPE_FIRSTMATE;'.
LAi_SetSitType(ch);
LAi_group_MoveCharacter(ch, "ENGLAND_CITIZENS");
ch.HPBonus = 100; // KevAtl 08-26-2007 to correct for game giving low HP
ch.isOfficer = true;
AddGameCharacter(n, ch);
 
Last edited:
I'm not sure what 'ch.alignment' is supposed to do, but I'd be willing to bet that "SitSit13" is not a useful value for it.
That can only be "bad" or "good", if I recall.
Does basically nothing for now.

For the "location" lines, "SantJohns_tavern" does not exist. Check "PROGRAM\Locations\init\Antigua.c" - you'll find that the tavern is "Antigua_Tavern".
@pirateking: Remember what I said about typos?
Because even if that location did exist, that's a typo right there.
BE CAREFUL!

Also, if you would do what I suggested three(!) times by now, you would use the Console which will absolutely give you a VALID location ID.

I've got to admit I'm beginning to get quite annoyed here.
Either actually TAKE MY ADVICE or stop asking questions if you aren't going to actually do something with the answers anyway!

You can also check your own code simply by adding it to the game and seeing what happens.
That's what all of us do first when we don't know stuff as well.
"Trial and error" is how you learn.
If you keep a backup of your original files, you can't mess things up too badly.
 
The ch.alignment line still does not have a proper value. Looking at some officer definitions in other storylines, that line does not seem to be required. Where it is used, the values are either "good" or "bad". Trafalgar D. Law is presumably supposed to be one of your heroes, so you could change it to ch.alignment = "good";.

The ch.greeting line has no assigned value. You can either go through "RESOURCE\INI\ALIASES\Greetings_alias.ini" and pick one that seems suitable, or edit the file to create your own greeting and then use that.

Another line which you may want to add to all your characters is ch.questchar = true;. Without that, the system may do random things to the character's skills, abilities and level.

You copied a little too much for the ch.quest.officertype line! Remove the '. from the end.
 
The texture file is not mentioned in the character definition here. The ch.model line refers to "Trafalgar Law", so in "RESOURCE\MODELS\Characters" there must be file "Trafalgar Law.gm", and in "RESOURCE\MODELS\Heads" must be "h_Trafalgar Law.gm". Use Hex Editor:
http://www.piratesahoy.cloud/repository/Tools/Modeling+Texturing/HEX Editor.zip
Edit both these files to change the texture file name. Here is how Hex Editor will look if "Trafalgar Law.gm" is a copy of "9S_Pir.gm":
hexedit1.jpg

I've outlined the texture file name - that red rectangle won't appear on the real Hex Editor screen. This is where you change it to use your new texture file name. So here is how it will look after you change the texture file name to "9S_Law_2":
hexedit2.jpg

And that's why the texture file name must be exactly the right length - it must exactly replace the original name.
 
You copied a little too much for the ch.quest.officertype line! Remove the '. from the end.
Just a thought: add a space in your posts after any line of code.
That's what I often do to avoid people accidentally copying any trailing periods.

The texture file is not mentioned in the character definition here. The ch.model line refers to "Trafalgar Law", so in "RESOURCE\MODELS\Characters" there must be file "Trafalgar Law.gm", and in "RESOURCE\MODELS\Heads" must be "h_Trafalgar Law.gm". Use Hex Editor:
http://www.piratesahoy.cloud/repository/Tools/Modeling+Texturing/HEX Editor.zip
Edit both these files to change the texture file name. Here is how Hex Editor will look if "Trafalgar Law.gm" is a copy of "9S_Pir.gm":
View attachment 29398

I've outlined the texture file name - that red rectangle won't appear on the real Hex Editor screen. This is where you change it to use your new texture file name. So here is how it will look after you change the texture file name to "9S_Law_2":
View attachment 29399

And that's why the texture file name must be exactly the right length - it must exactly replace the original name.
That looks like a good tutorial! Can you make a thread for that so it doesn't get lost?

@Grey Roger
I need a List of alle Island with Old Name and New Name and City,
but not only whicht have Change.
Towntable.c and islands.c contain the actual name conversion code, if I recall.
 
The original game only had 8 islands, which I listed in post #91. So those are the only ones which have old names.

Other islands and towns change their names depending on which period you're playing in. Look at "PROGRAM\Periods.c" to see how towns and a couple of islands have different names in different periods, especially in "Early Explorers" when Spain owns almost everything.

You can also look through "PROGRAM\Towns\InitTowns.c". This is where all the towns are listed. For each one, ctown.id is the name used for the town in coding; and ctown.island is the name of the island on which that town is located, as used for coding.
 
Back
Top