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

I thought you wanted the one with the light brown hull, to look like Thousand Sunny? That one is here:
Index of /potc/Grey Roger/Thousand Sunny
You will need to do most of the work for that.

My black and cream basic version can now be found here:
http://piratesahoy.bowengames.com/potc/Grey Roger/RN_Interceptor.zip
That should contain everything - modified "Ships_init.c", "pictures.ini", "ShipModels_descriptions"; model, texture, and interface picture. The ship will only normally show up in the "Revolutions" and "Napoleonic" periods. But if you assign it to a character in your storyline code then it will appear anyway.
 
Oh yes that i Know.

I plan to put a Icon on me Protraits Pics, but where can put it. Which position is free?

I think I will put it down left or down right.
After playing the game to remind me what goes where on the 256 size portrait, I would say that the only free area is top left. Character stats are across the bottom and the officer's job icon is top right.
 
@Grey Roger
Me Ship change tell me what you think:
1. The Fast Brig will be Going Merry and
2. Thousend Sunny will be Brigantina1, this Ship can be bought in Pirate Shipyard.

@Grey Roger What think You about that change. If you have a other Idee for Thousand sunny let me know.
Please can you change Texture Colors of the Ship like you doe it for the HMS Interceptor for me? Cu ük
 
I may have a go if I have time, otherwise you can do it yourself. The file you want is "RESOURCE\Textures\ships\bortoutbrig4.tga.tx". As usual, use TX Convertor to convert that file to .tga format which Photoshop can read. Go round various areas using Photoshop's Polygonal Lasso Tool (or whichever other selection tool you prefer, but that's the one I use as it gives me best control over exactly what I'm selecting). Copy and paste an area, such as the dark brown main hull. Then use the Brightness/Contrast and Hue/Saturation controls to change the colour to light brown or whatever you want. Pick out the areas you want to change to white, and the areas you want to change to red, and do the same thing. When you've finished, save the whole thing back as .tga format to a new file, e.g. "Thousand_Sun.tga" - as usual, the filename must be the same length as the original, in this case 12 characters, the same as "bortoutbrig4". Then use TX Convertor to convert that new file to .tga.tx format which the game uses.

You'll also need to make a copy of the model files. Copy the entire folder "RESOURCE\MODELS\Ships\Brigantina1" to a new folder, perhaps "RESOURCE\MODELS\Ships\ThousandSunny" - the file name here can be whatever you like. In that copied folder, rename all the files to match, e.g. "Brigantina1.gm" becomes "ThousandSunny.gm", "Brigantina1_deck.gm" becomes "ThousandSunny_deck.gm", etc. Use Hex Editor to edit "ThousandSunny.gm" and change the texture file name from "bortoutbrig4" to whatever you called your new texture file.

And then edit "Ships_init.c", "pictures.ini" and "ShipModels_descriptions" to add new entries for "ThousandSunny".
 
Sos @Grey Roger
I have big problems to change the Color like you doe it for me with the Interceptor Ship.

The red Part that have I made but the other part with the color of the Hull. There is a problem for me to fix it. Need help.

@Grey Roger need your good help with the Ship Texture Work. I can't make the Hull color.
 
Last edited:
Try this. As before, you'll need to add it to "Ships_init.c" as well as add entries in "RESOURCE\INI\TEXTS\ENGLISH\ShipModels_descriptions.txt" and "RESOURCE\INI\INTERFACES\pictures.ini".
 

Attachments

  • RESOURCE.zip
    555.1 KB · Views: 62
That zip contains both the texture file and the model to use it. If you already have a model then you'll need to rename the texture file from "Thous_Sunny1.tga.tx" to whichever file name your model expects to use.
 
Yes have sow it thanks.
@Grey Roger and @Pieter Boelen

I Need a free empty House on Turks or on LaTurga where i can put for me Story a Informationen Guy with Dialog. Doe you have A Idee which one i can use, it should by in
The Town ara.

Ps: I like to put the Information Guy into the Tortuga_StoneHouse siting on a Tabel. BUT I don't find this House on Tortuga.

Cu
PK
 
Last edited:
Define the character in one of your files in "PROGRAM\Storyline\NewPirateAge\Characters". In his definition, include lines like this:
Code:
   ch.Ship.Name = "Naughty Ship";
   ch.Ship.Type = "BlackPearl";
   ch.Ship.Stopped = true;
   ch.skipRM = true;
ch.Ship.Name can be whatever you like, that's the ship's name.
ch.Ship.Type will be copied from one of the refShip.Name lines in "PROGRAM\Ships\Ships_init.c".
I'm not sure how important ch.Ship.Stopped = true; is; I've seen it in similar definitions in other storylines, so I've used it in mine as well.
ch.skipRM = true; means you will not be penalised for sinking the ship. Normally if you sink a ship, the nation which owns that ship gets upset and so do any nations allied to it. This line prevents that, so if the ship is a pirate, attacking it won't upset your status with the rest of the pirates. If you want the pirates (or whichever nation owns the ship) to take notice, leave that line out.

So now the character has a ship. You need to put it somewhere. First look at "PROGRAM\ISLANDS\Islands_init.c", find the town or beach you want to use, and find the locator corresponding to it. For example, suppose you want to put the ship somewhere near Port Royale. That's on Jamaica - but remember, the game refers to both Port Royale and island Jamaica as "Redmond". So, in "Islands_init.c", we find a block which starts:
Code:
       rIsland.id = "Redmond";
       rIsland.model = "redmond";
And part way down that block:
Code:
       rIsland.reload.l1.label = "#stown_name# Port"; // KK
       rIsland.reload.l1.name = "reload_2";
       rIsland.reload.l1.go = "REDMOND_PORT";
       rIsland.reload.l1.emerge = "sea_1";
       rIsland.reload.l1.radius = 600.0;
       rIsland.reload.l1.pic = 7;
       rIsland.reload.l1.tex = "t1";
       rIsland.reload.l1.goto_enable = false; // Screwface: Disable Sail-To
So "Redmond Port", alias Port Royale, is at locator "reload_2". Now use TOOL, set it to look at "RESOURCE\MODELS\Islands\Redmond.gm", then examine its locators. Find "reload_2" and look at its co-ordinates. Then find another locator with co-ordinates somewhere near it. That locator is where you want to put Barbossa. (I needed an encounter near Port Royale in my own storyline and found "quest_ship_13" was close enough.)

To set up the encounter:
Code:
           Group_CreateGroup("Enemy_fleet");
           Group_AddCharacter("Enemy_fleet", "Barbossa");
           Group_SetGroupCommander("Enemy_fleet", "Barbossa");
           Group_SetTaskAttack("Enemy_fleet",  PLAYER_GROUP, true);
           Group_LockTask("Enemy_fleet");
           Group_SetAddress("Enemy_fleet", "Redmond", "quest_ships", "quest_ship_13");
           Group_SetPursuitGroup("Enemy_fleet", PLAYER_GROUP);  // Optional
           characters[GetCharacterIndex("Barbossa")].nosurrender = 2;  // Optional
           Character_SetAbordageEnable(characterFromID("Barbossa"), false);  // Optional
           PChar.quest.Jamaica_battle_over.win_condition.l1 = "NPC_death";
           Pchar.quest.Jamaica_battle_over.win_condition.l1.character = "Barbossa";
           pchar.quest.Jamaica_battle_over.win_condition.l2 = "SeaEnter";
           Pchar.quest.Jamaica_battle_over.win_condition = "Jamaica_battle_over";
You need to create a group, even if it's just one ship. I'm not 100% sure what all the lines do; I've played other storylines and side quests, noted where they have sea battles, and copied their code. :D You can call the group whatever you like, so long as you use the same name for this whole encounter and don't use it again for another group elsewhere in your story.

The Group_SetAddress line is where you put in the group and locator names you found by using TOOL on the island of your choice.

The PChar.quest.Jamaica_battle_over lines set up the next quest case, which will happen when you have defeated Barbossa. You can rename them from "Jamaica_battle_over" to whatever you like.

The Group_SetPursuitGroup line is optional. If that line is there, the enemy ship will appear right next to you, regardless of where you put it in the Group_SetAddress line. (It will do that anyway if you give a locator which does not exist.) If you want the enemy ship to stay where you put it, leave this line out. (And make sure you got the locator right! I know this from personal experience...)

The characters[GetCharacterIndex("Barbossa")].nosurrender = 2; line is also optional. It means the enemy ship will not surrender, no matter how badly damaged or how low its crew morale falls.

Character_SetAbordageEnable(characterFromID("Barbossa"), false); is optional. It means you can not board the enemy ship. If you've ever played the "Elizabeth Shaw" sidequest and wondered why you can never board and capture the Flying Dutchman, this is why.
 
Yes, the same way you have been putting characters anywhere else. Go there with "VISIBLE_LOCATORS" set to 1 and find a suitable locator. Either use "console.c" to find the tavern's name as described by @Pieter Boelen before, or look through "PROGRAM\Locations\init\Eleuthera.c" to find it. Then use exactly the same commands as you used to put someone in Nevis Pirate Settlement tavern, but change all the names to match this character and location.

As a suggestion, try playing one or two of the existing storylines. That may give you some idea of what can be done. If you want to do something similar, look in the storyline code and try to work out how it was done there. "Hornblower" is a good one to try, as its storyline code is a bit easier to follow than some others. Though Hornblower is a very different character from Monkey D. Luffy, being a British naval officer rather than a pirate, there are some similarities to what you're doing. Very early on, he goes into a building, talks to someone, then gets a couple of officers. A bit later on, there's a sea battle near Martinique (or Falaise de Fleur, which is what program code calls it). I copied the code from that when I was writing one of the sea battles in my own storyline, and you could do the same.
 
Last edited:
Ah ok good. Thanks.

@Grey Roger and @Pieter Boelen
A other Quest: What Code did I need for:
I would love to do that when I hire the character Lysop to hijack him with his ship the Going Merry, so I can then switch to the Going Merry.

I hope you understand me.
 
Last edited:
Which tavern? The exact code for dealing with rumours is different for some of them.
 
I like to make that
In Tavern of st. Domingo is a rumor that on Santiago lives a legendary Chef ‍ called Sanji.

And in the Tavern of Havanna should be the Rumors: That on In Port Royl life a good Carpenter.
 
You can find out who is in which tavern by looking in "PROGRAM\Characters\init\Taverns.c". In Santo Domingo is Rodrigo Ramos, so look at "PROGRAM\DIALOGS\Rodrigo Ramos_dialog.c" and "PROGRAM\DIALOGS\ENGLISH\Rodrigo Ramos_dialog.h". In "Rodrigo Ramos_dialog.c", find this section:
Code:
       case "quests":
           iTest = 0;
           dialog.snd = "Voice\CLBU\CLBU007";
           dialog.text = DLG_TEXT[26];
           if (checkQuestAttribute("mayan_temple", "find_guide"))
           {
               link.l9 = DLG_TEXT[57];
               link.l9.go = "temple_guide";
           }
           if (!CheckQuestAttribute("generate_convoy_quest_progress", "begin") && npchar.work != lastspeak_date)
           {
               link.l10 = DLG_TEXT[27];
               link.l10.go = "convoy";
           }
           link.l99 = DLG_TEXT[28];
           link.l99.go = "node_1";
       break;
The bit about "mayan_temple" is mine, it's part of my "Ardent" storyline. At the relevant part of "quests_reaction.c" is this line:
Code:
PChar.quest.mayan_temple = "find_guide";
It sets the attribute "mayan_temple" to be "find_guide". So the dialog code line ' if (checkQuestAttribute("mayan_temple", "find_guide"))' looks for that attribute.

The number in the 'DLG_TEXT' line refers to a line in "PROGRAM\DIALOGS\ENGLISH\Rodrigo Ramos_dialog.h". But that file starts with the line 'string DLG_TEXT[60] = {'. Also, the line count in whichever program you're using to edit "Rodrigo Ramos_dialog.h" probably starts counting at 1, but program code starts counting at 0. So there is always a difference of 2 between what is shown in "Rodrigo Ramos_dialog.c" and the line number of the text in "Rodrigo Ramos_dialog.h". For example, Rodrigo starts this part of the dialog with DLG_TEXT[26], so add 2 to 26, and you're looking at line 28 of "Rodrigo Ramos_dialog.h": "Indeed! And what business is that?" If quest attribute "mayan_temple" is set to "find_guide" then you're playing the "Ardent" storyline and have just reached the part in the story where you have something to ask him. DLG_TEXT[57] is text line 59: "I'm looking for someone who knows his way around the jungle, who has perhaps found an old temple." And if you choose that line in the dialog, the code then moves to case "temple_guide".

You can therefore add your own section. In your "quests_reaction.c", have a line which sets a quest attribute. You can call it whatever you like, and set it to whatever value you like, e.g.
Code:
PChar.quest.talk_about_Sanji = "true";
In "Rodrigo Ramos_dialog.c", in the "quests" section, add something like this:
Code:
           if (checkQuestAttribute("talk_about_Sanji", "true"))
           {
               link.l9 = DLG_TEXT[60];
               link.l9.go = "talk_about_Sanji";
           }
This uses the same link number as I did for my code. That's fine. You can't be playing both "Ardent" and "New Pirate Age" at the same time, they're different storylines!

And further down:
Code:
       case "talk_about_Sanji":
           dialog.text = DLG_TEXT[61];
           link.l1 = DLG_TEXT[62];
           link.l1.go = "Exit";
       break;

Now add three lines to "Rodrigo Ramos_dialog.c", at the bottom but above the final "}". You can see that all text lines are enclosed in quote marks and end with a comma, so make yours the same. These lines will be where you can ask him if he knows about officers, then he tells you about Sanji, and you thank him. Finally, right at the top of "Rodrigo Ramos_dialog.h", add 3 to the number because you've just added 3 new text lines.
 
Last edited:
Back
Top