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

Need Help Is it possible to add famous ships sail arround the specific islands with accurate captains??

@Calico Jack: Can you upload both the file in which Jack Sparrow's character is defined, and the file containing the quest code? Also upload "compile.log" and, if it exists, "error.log".

Using the same ID as an existing character won't cause the character to fail to appear, though the game might get confused and use the wrong character. There used to be two characters with ID "Gillian Atterbury":
Fixed - Two characters, one ID
They both showed up, one in Port Royale and the other on Cayman. But if you'd tried to write a quest involving the one in Port Royale, it would have been the Cayman one who appeared up in your quest.
 
the quest was just a test to see if everything worked so just try to spawn jack near nevis
 

Attachments

  • TempQuestEnemy.c
    18.5 KB · Views: 169
  • quests_reaction.c
    46.6 KB · Views: 178
One error in "quests_reaction.c":
Code:
Group_AddCharacter("Blackpearl", "Sparrow);
There's a quote mark missing at the end of "Sparrow".

You've used 'Pchar.quest.BlackbeardDestroyed' as the trigger for the ends of several battles. I'd recommend changing them to different labels. Using the same label won't cause an error but it may mean that one of the quests which is supposed to be triggered by sinking a ship won't be triggered because its trigger has been re-used. In order of appearance in "quests_reaction.c", 'Pchar.quest.BlackbeardDestroyed' is used for Blackbeard, Silehard and Sparrow. As Sparrow's battle is the last one defined, that's the one which will take effect. So my guess is that nothing will happen when you sink Blackbeard, Silehard's battle won't trigger at all. Personally I generally use the name of the quest being triggered as the label for the trigger, so that, for example, instead of:
Code:
                Pchar.quest.BlackbeardDestroyed.win_condition.l1 = "NPC_death";
                Pchar.quest.BlackbeardDestroyed.win_condition.l1.character = "Robert Christopher Silehard";
                Pchar.quest.BlackbeardDestroyed.win_condition = "RobertChristopherSileharddDestroyed";
I'd have:
Code:
                Pchar.quest.RobertChristopherSileharddDestroyed.win_condition.l1 = "NPC_death";
                Pchar.quest.RobertChristopherSileharddDestroyed.win_condition.l1.character = "Robert Christopher Silehard";
                Pchar.quest.RobertChristopherSileharddDestroyed.win_condition = "RobertChristopherSileharddDestroyed";

And then you'll need to define case "RobertChristopherSileharddDestroyed" for what happens when you defeat him...
 
shame that I missed my old quest reaction I had done several side quests for legendary pirates

I refactored the jack sparrow in the temq.ques.enemy. alert to details and made the changes you spoke now worked perfectly I can start doing the quest I wanted
 
Can you explain to me what this is in the ships.ini file?
//Period
refShip.period.0 = 0.0; //
refShip.period.1 = 0.0; //
refShip.period.2 = 0.0; //
refShip.period.3 = 0.8; //
refShip.period.4 = 0.6; //
refShip.period.5 = 0.2; //
//Nation
refShip.england = 0.2; //
refShip.france = 0.5; //
refShip.holland = 0.5; //
refShip.portugal = 0.5; //
refShip.pirate = 0.0; //
refShip.spain = 0.2; //
refShip.america = 0.0; //
refShip.sweden = 0.1; //


Is it the nations that are going to have this type of boat?


Is it the nations that are going to have this type of boat?
and where can I find the id of the character models?
 
Last edited:
The lines with nation names do indeed show which nations can use this ship. The 'refShip.period' lines show the periods in which the ship can appear. The numbers give some idea of how likely the ship is to appear.

So in this example, the ship can appear in "Colonial Powers", "Revolutions", and occasionally in "Napoleonic". Anyone except pirates and Americans can use it, though you're more likely to see a French, Dutch or Portuguese one. You may encounter this ship while playing the "Tales of a Sea Hawk" storyline but you'll never see it during FreePlay unless you change the start date, because by default FreePlay starts in "Golden Age of Piracy" ('refShip.period.2').
 
In "Animation View", click on "Settings" -> "Textures location", then find the folder where the relevant textures are stored. For characters, that will be "RESOURCE\Textures\Characters".
 
well i have created a lot of known pirates as bartolomeu rogers jack rackham and etc i put some on walking in the streets of pirate setlements and in tavernas and etc using mary wood as base so the player can join with these pirates.
but as I love these legendary pirates sailing around I put some scattered around the pirate ports of the caribbean but some will end up spawning in a very bad places as jack sparrow spawns in front of the fort of hispanoila would have a way to put him spawning near tortuga? or just not in the face of the spanish fort. and in turks have a way to put the pirates near the fort like a defensive fleet ?
 
@Grey Roger, do you already know how to place quest ships on specific locators?
Or do I need to look it up? I know it's possible and I think that would help.

EDIT: Looked it up and found a good example in quests_common.c:
Code:
        case "prepare_for_kill_pirate":
            //NK, use fantom calls way up top.
            Group_AddCharacter("Story_Pirate", "Quest pirate");
            //Log_SetStringToLog("prepare_for_kill_pirate");
            Group_SetGroupCommander("Story_Pirate", "Quest pirate");
            Group_SetTaskAttack("Story_Pirate", PLAYER_GROUP, true);
            //Group_SetAddress("Story_Pirate", Characters[GetMainCharacterIndex()].location, "Quest_ships", "Quest_ship_3");
            Group_SetAddress("Story_Pirate", Pchar.location, "Quest_ships", GetRandomQuestShipLocator(pchar.location)); // PB: Add some variety

            Group_LockTask("Story_Pirate");
'Group_SetAddress' should do the trick.

The example also calls this function of mine from NK.c:
Code:
string GetRandomQuestShipLocator(string islandstr)
{
    int quest_locators = 0;
    switch(islandstr)
    {
    //    case "Antigua":                    quest_locators = 15;    break;
        case "Aruba":                    quest_locators =  8;    break;
        case "Colombia":                quest_locators = 10;    break;
    //    case "Cayman":                    quest_locators = 15;    break;
    //    case "Conceicao":                quest_locators = 15;    break;
    //    case "Cuba":                    quest_locators = 15;    break;
        case "Curacao":                    quest_locators =  8;    break;
        case "Douwesen":                quest_locators = 12;    break;
        case "Eleuthera":                quest_locators = 10;    break;
        case "FalaiseDeFleur":            quest_locators = 22;    break;
    //    case "Hispaniola":                quest_locators = 15;    break;
    //    case "Guadeloupe":                quest_locators = 15;    break;
        case "IslaDeMuerte":            quest_locators =  7;    break;
        case "IslaMona":                quest_locators =  7;    break;
    //    case "IslaMuelle":                quest_locators = 15;    break;
        case "KhaelRoa":                quest_locators =  8;    break;
        case "Oxbay":                    quest_locators = 27;    break;
        case "QuebradasCostillas":        quest_locators = 11;    break;
        case "Redmond":                    quest_locators = 26;    break;
    //    case "SaintMartin":                quest_locators = 15;    break;
    //    case "Turks":                    quest_locators = 15;    break;
    //    case "Battle_Rocks":            quest_locators = 15;    break;
        case "Colombia":                quest_locators = 10;    break;
        quest_locators = 15;
    }
    return "Quest_Ship_"  + (1 + rand(quest_locators-1));            //random position
}
But that is not necessary.
 
Last edited:
i got it this is what decides the spawn point
"Quest_ships", "Quest_Ship_8"); just get the right number for blackbeard is this one
// case "Antigua": quest_locators = 15; break;
case "Aruba": quest_locators = 8; break;
case "Colombia": quest_locators = 10; break;
// case "Cayman": quest_locators = 15; break;
// case "Conceicao": quest_locators = 15; break;
// case "Cuba": quest_locators = 15; break;
case "Curacao": quest_locators = 8; break;
case "Douwesen": quest_locators = 12; break;
case "Eleuthera": quest_locators = 10; break;
case "FalaiseDeFleur": quest_locators = 22; break;
// case "Hispaniola": quest_locators = 15; break;
// case "Guadeloupe": quest_locators = 15; break;
case "IslaDeMuerte": quest_locators = 7; break;
case "IslaMona": quest_locators = 7; break;
// case "IslaMuelle": quest_locators = 15; break;
case "KhaelRoa": quest_locators = 8; break;
case "Oxbay": quest_locators = 27; break;
case "QuebradasCostillas": quest_locators = 11; break;
case "Redmond": quest_locators = 26; break;
// case "SaintMartin": quest_locators = 15; break;
// case "Turks": quest_locators = 15; break;
// case "Battle_Rocks": quest_locators = 15; break;
case "Colombia": quest_locators = 10; break;
quest_locators = 15;
now is testing each one
 
Back
Top