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

Very probably, but that's not going to help you while you're trying to shoot up his ship. ;)
 
Not if you add the 'LAi_SetImmortal(characterFromID("Blackbeard"), false);' line so that you can shoot up the ship to weaken it before boarding. ;)

@Calico Jack: For a bit of fun, go to Cozumel and see if you can capture the Flying Dutchman. This should be possible if, in your code to set up the encounter, you do not have:
Code:
Character_SetAbordageEnable(characterFromID("Davy Jones"), false);
Then go to Cayman, talk to the governor, and do the "Elizabeth Shaw" side quest...
 
Not if you add the 'LAi_SetImmortal(characterFromID("Blackbeard"), false);' line so that you can shoot up the ship to weaken it before boarding. ;)
But still.... Is that a problem? Just means the Queen Anne's Revenge will be STUPIDLY difficult to capture!
You, of all people, should know how much of an enticing target that can make! :rofl
 
It probably wouldn't be that hard to capture, once you're properly equipped. Queen Anne's Revenge has a base crew of 420, about the same as a large frigate and slightly more than a fast war galleon. Provided you remember to poke Blackbeard himself once with a borgiablade to strip off his immortality and then press "1" to quick-equip something better, it should be considerably easier than, say, Silehard's flagship at the end of "Tales of a Sea Hawk".
 
It probably wouldn't be that hard to capture, once you're properly equipped. Queen Anne's Revenge has a base crew of 420, about the same as a large frigate and slightly more than a fast war galleon. Provided you remember to poke Blackbeard himself once with a borgiablade to strip off his immortality and then press "1" to quick-equip something better, it should be considerably easier than, say, Silehard's flagship at the end of "Tales of a Sea Hawk".
So: Is it a problem?

If this is considered a good idea, we could remove Blackbeard from the beach on Isla de Muerta and have him sailing around the QAR somewhere instead.
Only disadvantage then is that the third beach will be empty again. But who cares? :cheeky
 
I gave an improvement in the queen annes revenge of this quest because he disappeared

I would start the quest and leave it as the black pearl in the quest of nataniel halk but he was gone when I went to face him with the cursed black pearl(My favorite ship) just the two small ships that came with him appeared I think he sank to the fort
 
Last edited by a moderator:
I suppose eventually the fort could take care of any persistent NPC ships....
Unless their captains are immortal.
 
I did a test I started a campaign as cursed I started the quest I saw if he was in the place and I went to the map and away from the island I accelerated the time at maximum and I waited to give a good number of days it was a 65 days I returned to the island And he was there. I still think it's going to work out:aar
 
Last edited by a moderator:
I had a problem when I added the cursed black pearl sailing around the isla de muerta the first time the pearl was on the isla de muerta but when I went to nevis to buy food and sell the cargo of the ship the pearl and the revenge were the Two were in the same place
 
I'd need to see "compile.log" from just after you arrived at Nevis and met both ships. Also, can you upload whichever code file contains the quest code to set up the Queen Anne's Revenge and Black Pearl?
 
case "BlackBeard":
Group_CreateGroup("French_Squadron");
Group_AddCharacter("French_Squadron", "BlackBeard");
Group_SetGroupCommander("French_Squadron", "BlackBeard");
Group_SetTaskAttack("French_Squadron", PLAYER_GROUP, true);
Group_LockTask("French_Squadron");
Group_SetAddress("French_Squadron", "QuebradasCostillas", "Quest_ships", "Quest_Ship_12");
Sea_LoginGroupNow("French_Squadron");
characters[GetCharacterIndex("BlackBeard")].nosurrender = 2;
SetCharacterRelationBoth(GetCharacterIndex("BlackBeard"),GetMainCharacterIndex(),RELATION_ENEMY);
if(GetRMRelation(Pchar, PIRATE) > REL_WAR) SetRMRelation(Pchar, PIRATE, REL_WAR);
Character_SetAbordageEnable(characterFromID("BlackBeard"), true);

if(GetRMRelation(Pchar, FRANCE) > REL_WAR) SetRMRelation(Pchar, FRANCE, REL_WAR);
UpdateRelations();

Pchar.quest.FrenchShipDestroyed.win_condition.l1 = "NPC_death";
Pchar.quest.FrenchShipDestroyed.win_condition.l1.character = "BlackBeard";
Pchar.quest.FrenchShipDestroyed.win_condition = "FrenchShipDestroyed";
break;


case "The_Cursed_Ship":
Group_CreateGroup("French_Squadron");
Group_AddCharacter("French_Squadron", "Barbossa");
Group_SetGroupCommander("French_Squadron", "Barbossa");
Group_SetTaskAttack("French_Squadron", PLAYER_GROUP, true);
Group_LockTask("French_Squadron");
Group_SetAddress("French_Squadron", "IslaDeMuerte", "Quest_ships", "Quest_Ship_12");
Sea_LoginGroupNow("French_Squadron");
characters[GetCharacterIndex("Barbossa")].nosurrender = 2;
SetCharacterRelationBoth(GetCharacterIndex("Barbossa"),GetMainCharacterIndex(),RELATION_ENEMY);
if(GetRMRelation(Pchar, PIRATE) > REL_WAR) SetRMRelation(Pchar, PIRATE, REL_WAR);
Character_SetAbordageEnable(characterFromID("Barbossa"), true);

if(GetRMRelation(Pchar, FRANCE) > REL_WAR) SetRMRelation(Pchar, FRANCE, REL_WAR);
UpdateRelations();

Pchar.quest.FrenchShipDestroyed.win_condition.l1 = "NPC_death";
Pchar.quest.FrenchShipDestroyed.win_condition.l1.character = "Barbossa";
Pchar.quest.FrenchShipDestroyed.win_condition = "FrenchShipDestroyed";
break;

Every time I change anything besides the name of the character and the island the game crash
Every time I change anything beyond the name of the character and the island the game crash
I tried to differentiate them as the code of the two quest but the game crash
I did not understand anything in compile.log
 
Last edited by a moderator:
You should probably change the names of the groups - replace "French_Squadron" with something different. Use different group names for Blackbeard and Barbossa. My guess is that because you're assigning both of them to "French Squadron", that is why you meet both of them at once.

Look at this code:
Code:
Pchar.quest.FrenchShipDestroyed.win_condition.l1 = "NPC_death";
Pchar.quest.FrenchShipDestroyed.win_condition.l1.character = "BlackBeard";
Pchar.quest.FrenchShipDestroyed.win_condition = "FrenchShipDestroyed";
This sets up a check for when Blackbeard has been defeated. When he is, it triggers quest case "FrenchShipDestroyed". But you have an identical piece of code, only it's looking for Barbossa to be defeated. If you sail to Isla de Muerta and then to Nevis, the condition for Blackbeard will overwrite the condition for Barbossa - the battle will end if you defeat Blackbeard, regardless of whether Barbossa is still afloat.

Basically, you need to make the two pieces of code distinct so they don't confuse each other. Try something like this:
Code:
case "BlackBeard":
Group_CreateGroup("Blackbeard_ship");
Group_AddCharacter("Blackbeard_ship", "BlackBeard");
Group_SetGroupCommander("Blackbeard_ship", "BlackBeard");
Group_SetTaskAttack("Blackbeard_ship", PLAYER_GROUP, true);
Group_LockTask("Blackbeard_ship");
Group_SetAddress("Blackbeard_ship", "QuebradasCostillas", "Quest_ships", "Quest_Ship_12");
Sea_LoginGroupNow("Blackbeard_ship");
characters[GetCharacterIndex("BlackBeard")].nosurrender = 2;
Characters[GetCharacterIndex("BlackBeard")].recognized = true;
Character_SetAbordageEnable(characterFromID("BlackBeard"), true);
UpdateRelations();

Pchar.quest.BlackbeardDestroyed.win_condition.l1 = "NPC_death";
Pchar.quest.BlackbeardDestroyed.win_condition.l1.character = "BlackBeard";
Pchar.quest.BlackbeardDestroyed.win_condition = "BlackbeardDestroyed";
break;


case "The_Cursed_Ship":
Group_CreateGroup("Cursed_Ship");
Group_AddCharacter("Cursed_Ship", "Barbossa");
Group_SetGroupCommander("Cursed_Ship", "Barbossa");
Group_SetTaskAttack("Cursed_Ship", PLAYER_GROUP, true);
Group_LockTask("Cursed_Ship");
Group_SetAddress("Cursed_Ship", "IslaDeMuerte", "Quest_ships", "Quest_Ship_12");
Sea_LoginGroupNow("Cursed_Ship");
characters[GetCharacterIndex("Barbossa")].nosurrender = 2;
Characters[GetCharacterIndex("Barbossa")].recognized = true;
Character_SetAbordageEnable(characterFromID("Barbossa"), true);
UpdateRelations();

Pchar.quest.Cursed_ShipDestroyed.win_condition.l1 = "NPC_death";
Pchar.quest.Cursed_ShipDestroyed.win_condition.l1.character = "Barbossa";
Pchar.quest.Cursed_ShipDestroyed.win_condition = "Cursed_ShipDestroyed";
break;
At the moment you presumably have a piece of code which starts:
Code:
case "FrenchShipDestroyed":
Make a second copy of that section. Change one to:
Code:
case "BlackbeardDestroyed":
and the other to:
Code:
case "Cursed_ShipDestroyed":
Relations code has been rewritten. 'SetCharacterRelationBoth' doesn't work as it did. Instead, 'Characters[GetCharacterIndex("Barbossa")].recognized = true;' will turn Barbossa hostile to you.

This code:
Code:
if(GetRMRelation(Pchar, FRANCE) > REL_WAR) SetRMRelation(Pchar, FRANCE, REL_WAR);
turns France hostile to you. That makes sense in "Hornblower" as France has just declared war on Britain at that point in the story; it makes little sense here unless you want France to get upset because you're attacking Blackbeard or Barbossa! Likewise:
Code:
if(GetRMRelation(Pchar, PIRATE) > REL_WAR) SetRMRelation(Pchar, PIRATE, REL_WAR);
turns Pirates hostile to you, which might make sense as you're attacking a couple of legendary pirates, but does mean that you don't want to do this quest if you have joined the Brotherhood on Nevis.
 
thank you

There's a way to make the barbossa be hostile to everyone.?
 
Last edited by a moderator:
He's a pirate (presumably wherever you've defined the character, you've included 'ch.nation = PIRATE;') which means he'll be hostile to all nations apart from Pirates. He'll be hostile to you, regardless of what nation you are, because of the line 'Characters[GetCharacterIndex("Barbossa")].recognized = true;'.
 
For some reason when I start the quest a message appears in the corner of the screen written ERROR missing characte id: Barbossa
I checked the names on the models and the name is right.
this time i have no ideia whats happening this time
 
The model "Barbossa" might exist, but the character does not. You can meet him in storylines such as "Tales of a Sea Hawk" because they have folders such as "PROGRAM\Storyline\standard\characters\init", in which are the files that define the characters in the story. Look in "PROGRAM\Storyline\standard\characters\init\Story.c", where you'll find his definition. Copy that into "PROGRAM\Storyline\FreePlay\characters\init\TempQuestEnemy.c".

The reason you haven't seen a similar error for Blackbeard is that he is defined in "PROGRAM\Characters\init\CommonQuest.c" so that he can appear on the beach of Isla de Muerte in all storylines. But if you put Barbossa's definition in that file, you'll get errors if you play any storyline which already has its own definition for him.
 
not worked still the same error i need to star a new campaing ?

now work tanks for helping
 
Last edited by a moderator:
Back
Top