• 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 Hoist the colors (For the 125431th time)

There might be a way to put a model of the Black Pearl permanently there. In that case, you would not need the 'SetCharacterShipLocation' command - you don't want to see the Pearl both at sea and lying on its side on the sand! I'd need to see your updated "QuestLocations.c" file with "fake Khael Roa shore" added.

I wouldn't bother so much with it right now, it's not in any way significant for the story if players ship is on shore or not :)

using:
SetCharacterShipLocation(PChar, "fake Khael Roa shore");

Has set the ship near enough anyways, so i think it's good enough for now.

By the way, @Jack Rackham

Almost forgot to mention, few little bugs with indian village location, there is this fantom door and missing textures, both seen in the screenshot below :)
 

Attachments

  • Untitled12.png
    Untitled12.png
    2.3 MB · Views: 79
Go to the Indian village and save game, then quit. Start PoTC, load that savegame, then quit again. Have a look at "system.log". That should tell you which texture files are missing.

The reason for saving, quitting, starting with the savegame and then quitting again, is that a few other places put messages about missing textures into "system.log", though the textures aren't really needed - the model files for those places are modified versions of files from other games which needed the files in question, so the model files still look for the files even though the PoTC version doesn't use them. Go to Santiago or Tortuga, quit game and look at "system.log", and you'll see what I mean.
 
Are you sure you have included all the textures I uploaded? They are in "Sebrian locations part 2". The missing texture seems to be canopy.tga.
There are also two invisible files there. One may be the one making the hut door disappear.
 
Go to the Indian village and save game, then quit. Start PoTC, load that savegame, then quit again. Have a look at "system.log". That should tell you which texture files are missing.

The reason for saving, quitting, starting with the savegame and then quitting again, is that a few other places put messages about missing textures into "system.log", though the textures aren't really needed - the model files for those places are modified versions of files from other games which needed the files in question, so the model files still look for the files even though the PoTC version doesn't use them. Go to Santiago or Tortuga, quit game and look at "system.log", and you'll see what I mean.

I will do this when i get home from work.

@Jack Rackham I'm pretty certain i dropped all the files in correctly, i will double check later!
 
If I remove canopy.tga, invisible01_0016.tga and invisible01_000018.tga from my game I get exactly the bugs you showed.
 
If I remove canopy.tga, invisible01_0016.tga and invisible01_000018.tga from my game I get exactly the bugs you showed.

Indeed i was missing those files, maybe i got confused between two of my game's installations, sorry for the bother, my bad! :ko
 
That's for sure! I spent around 40 minutes and rewrote some of my code because one dialogue just wouldn't trigger right, wih no errors in the log, then i realised that i have set

Code:
Characters[GetCharacterIndex("Mr. Gibbs")].Dialog.Filename = "Enc_Officer_dialog.c";

Somewhere before, and just forgot to point it back to the needed filename, hate it when this happens when coding xD
 
A lot of the time spent writing quests is figuring out why something doesn't work!

If Mr. Gibbs is using "Enc_Officer_dialog.c" (which he will be after case "findecotbp"), the player can fire him. Or he might have been killed. Perhaps define another character and keep him in reserve, so that if Mr. Gibbs can't be present due to being dead or unemployed, this other character can spawn somewhere nearby to have the dialog.

Or Mr. Gibbs might be a passenger but not assigned as an active officer; or he may be in command of a companion ship. In that case you could spawn him nearby, have the dialog, then make him disappear.
 
A lot of the time spent writing quests is figuring out why something doesn't work!

If Mr. Gibbs is using "Enc_Officer_dialog.c" (which he will be after case "findecotbp"), the player can fire him. Or he might have been killed. Perhaps define another character and keep him in reserve, so that if Mr. Gibbs can't be present due to being dead or unemployed, this other character can spawn somewhere nearby to have the dialog.

Or Mr. Gibbs might be a passenger but not assigned as an active officer; or he may be in command of a companion ship. In that case you could spawn him nearby, have the dialog, then make him disappear.

I have not tought about this fully yet, Gibbs is really important to the story, so there are a few options, either make him immortal, set to be only avaliable as a passanger or just end the quest if he gets killed (but this could get tricky real fast...)
 
Ahoy there!

So Jack's story continues! I rewrote cannibal island part of the quest, adding more action and filled in gaps in the story so it all makes sense from Jack's POV, quite happy with how it turned out. It's all complete and pretty much leaves player where he has to sail to Tia Dalma's swamp again with Will Turner. :doff

Some minor tweaks and dialogues are left to do, i will update my first post soon with everything needed, with additional fixes and optimization for my previous quests as well.

I will attach the quest reaction code with what i have done so far.
 

Attachments

  • quests_reaction.c
    477.8 KB · Views: 64
Thanks, @Sebrian! :cheers

I'm now playing "Hoist the Colours" from the start, partly because I don't fully trust jump-starts and partly to check for any bugs or oddities still needing to be fixed, whether caused by the DMC extension or not. I've so far found one of each. The one not related to DMC is when, during the "Billy Brock" version of "Early Days", you meet Bootstrap Bill near Tortuga tavern. He spawns on a locator which was probably fine in the older version of Tortuga in use when the story was first written, and which is now so far away that you can't see him when he talks to you. I simply found an alternative locator near the tavern and set him to spawn there instead.

The DMC-related oddity is when Cutler Beckett has told you to go to Muscetto Cove to pick up cargo, Tia Dalma tells you that the cargo is slaves, and you have to fight three characters before she sells you the compass. Those three characters are "Pirates_1", "Pirates_2" and "Pirates_3", who previously had 'LAi_NoRebirthEnable' set so that they wouldn't show up again after being killed. That's no longer set so that they can reappear in Turks prison, but it also means that when I go into St. Johns to get free cargo from the naval store and then return to the beach, one of them is back on his feet. I've no idea why the whole lot aren't there, but in any case, it's a simple fix to set their location to "None" when the fight is over.

The new version of "quests_reaction.c" sets both Joshamee Gibbs and Anamaria to be immortal, presumably so they can't be killed before doing more quest stuff during DMC. Fair enough, but be aware that this gives the player a big advantage. Even one temporarily immortal officer can be a big help, as you'll find if you play "Ardent" - right at the start you have to fight three prison guards, a lot easier if you hide behind the immortal Indian warrior. But several other storylines give you one immortal officer, e.g. Danielle in "Tales of a Sea Hawk". With two long-term immortals, you should be able to survive pretty well anything by hiding behind them! (Does Anamaria appear in the film "Dead Man's Chest"?)
 
Hey Roger!

he DMC-related oddity is when Cutler Beckett has told you to go to Muscetto Cove to pick up cargo, Tia Dalma tells you that the cargo is slaves, and you have to fight three characters before she sells you the compass. Those three characters are "Pirates_1", "Pirates_2" and "Pirates_3", who previously had 'LAi_NoRebirthEnable' set so that they wouldn't show up again after being killed. That's no longer set so that they can reappear in Turks prison, but it also means that when I go into St. Johns to get free cargo from the naval store and then return to the beach, one of them is back on his feet. I've no idea why the whole lot aren't there, but in any case, it's a simple fix to set their location to "None" when the fight is over.

Yes, this was very much expected, i think we even talked about it before. but i forgot to fix it :D

C:
case "back_to_Tia_Dalma":
            pchar.quest.back_to_Tia_Dalma_failed.over = "yes";
           
            ChangeCharacterAddress(characterFromID("Pirates_1"), "None", "");
            ChangeCharacterAddress(characterFromID("Pirates_2"), "None", "");
            ChangeCharacterAddress(characterFromID("Pirates_3"), "None", "");

            if(AUTO_SKILL_SYSTEM)
            {
                AddPartyExpChar(pchar, "Leadership", 5000);
                AddPartyExpChar(pchar, "Sneak", 50);
            }
            else { AddPartyExp(pchar, 5000); }

            LAi_ActorDialog(characterFromID("Tia Dalma"),PChar,"",10.0,1.0);
            Characters[GetCharacterIndex("Tia Dalma")].dialog.currentnode = "speaktoTiaagain";
        break;

fixed in my version too now.

The new version of "quests_reaction.c" sets both Joshamee Gibbs and Anamaria to be immortal, presumably so they can't be killed before doing more quest stuff during DMC. Fair enough, but be aware that this gives the player a big advantage. Even one temporarily immortal officer can be a big help, as you'll find if you play "Ardent" - right at the start you have to fight three prison guards, a lot easier if you hide behind the immortal Indian warrior. But several other storylines give you one immortal officer, e.g. Danielle in "Tales of a Sea Hawk". With two long-term immortals, you should be able to survive pretty well anything by hiding behind them! (Does Anamaria appear in the film "Dead Man's Chest"?)

This was a real debate for me...

What idea i have right now would be: make characters immortal when already in a quest location, like when player arrives to cannibal island shore etc. and make them mortal again when back to sea after the quest location. I will think about it some more and try to find a solution, it will be some more work to write "if character x dies" but nothing is undoable.

I will have to replay COTB and see how it handles quest officers. Or you could suggest the best approach as you already are playing it again ;)

About Anamaria... she does not appear in DMC film, instead of her there usually is a random crew member or the guy with a parrot (forgot his name), but she is a cool character, and she is brought up a lot more in the COTB quest that we have compared to the original movie, and i quite like that!

I have no idea why she does not appear in any other films, maybe her actor didn't want to continue or something, but i prefer to use her character instead of random crew members, and as you said, we don't have to follow what the movie does 100%, so i decided it would be best to use her for the game.

I will attach file with the progress again, it has a finished shore escape scene, and some more fixes (it's just easy for me to download it from here, as i'm doing it from several pc's)

P.S

I think some of my quests could get weird if you have additional officers, what is the best way to remove any other officers that player might have and disallow to assign them back during the quest scenes ?
 

Attachments

  • quests_reaction.c
    483.7 KB · Views: 47
Code:
case "back_to_Tia_Dalma":
            pchar.quest.back_to_Tia_Dalma_failed.over = "yes";
        
            ChangeCharacterAddress(characterFromID("Pirates_1"), "None", "");
            ChangeCharacterAddress(characterFromID("Pirates_2"), "None", "");
            ChangeCharacterAddress(characterFromID("Pirates_3"), "None", "");
Better would be:
Code:
Characters[GetCharacterIndex("Pirates_1")].location = 0;
Characters[GetCharacterIndex("Pirates_2")].location = 0;
Characters[GetCharacterIndex("Pirates_3")].location = 0;
Using 'ChangeCharacterAddress' makes them vanish right away - you kill all three, then the bodies disappear in front of your eyes. The other method leaves them where they are until you leave the area, then they're gone when you return.

This was a real debate for me...

What idea i have right now would be: make characters immortal when already in a quest location, like when player arrives to cannibal island shore etc. and make them mortal again when back to sea after the quest location. I will think about it some more and try to find a solution, it will be some more work to write "if character x dies" but nothing is undoable.

I will have to replay COTB and see how it handles quest officers. Or you could suggest the best approach as you already are playing it again ;)
It doesn't check for Joshamee Gibbs (or Anamaria) being killed at all. But they don't have 'LAi_NoRebirthEnable' set, so if they're killed, they're no longer available as officers until the quest puts them back in the game. "Hornblower" does the same with a lot of characters, including Sharpe's riflemen. Pretend they weren't really killed, only wounded, and have healed when they reappear. xD


For "Ardent", I wrote contingencies for what happens if Lucia de la Vega is killed. She plays a key part in the "Convoy Strike" quest; if she's dead, the quest can still proceed but there are differences. Much later on, you've been arrested and Lucia helps you escape; if she's unavailable due to being dead or due to something you did earlier, someone else helps you instead.

About Anamaria... she does not appear in DMC film, instead of her there usually is a random crew member or the guy with a parrot (forgot his name), but she is a cool character, and she is brought up a lot more in the COTB quest that we have compared to the original movie, and i quite like that!
That's partly because the story depicts Jack's life before the film started; and partly because it's clear in the film that they have previous history, so the game shows some of it.

The point is, if Anamaria is not shown in DMC then you could leave her as a regular officer and create some other character who only appears for quest scenes. Or, if you want Anamaria, you could do something like this:
Code:
if(IsOfficer(CharacterFromID("Annamaria")) || IsCompanion(CharacterFromID("Annamaria")) || IsPassenger(CharacterFromID("Annamaria"))) PChar.quest.scene_player = "Annamaria";
else PChar.quest.scene_player = "Other_Guy";
Then, instead of doing things specifically with Anamaria, do them with 'CharacterFromID(PChar.quest.scene_player)'. If Anamaria is with you somewhere (an active officer, an inactive officer or commanding a companion ship), she'll appear in the scene, otherwise Other_Guy will do the job instead. (Replace "Other_Guy" and "scene_player" with whatever you prefer.)

This also protects your quest from a player who puts Anamaria in command of a companion ship and then leaves it berthed somewhere. For good measure, you could have a second backup character to stand in for Joshamee Gibbs if he's unavailable.

I think some of my quests could get weird if you have additional officers, what is the best way to remove any other officers that player might have and disallow to assign them back during the quest scenes ?
You'd need to explain why the other officers aren't there. (Remember how, in "Tales of a Sea Hawk", Danielle tells you that you don't want to take everyone with you when you're sneaking into Silehard's bedroom?) Use:
Code:
StorePassengers(PChar.id);
... to remove all officers and passengers. Later:
Code:
RestorePassengers(PChar.id);
... will put them all back.
 
Last edited:
Using 'ChangeCharacterAddress' makes them vanish right away - you kill all three, then the bodies disappear in front of your eyes. The other method leaves them where they are until you leave the area, then they're gone when you return.

Nice to know, done, thanks!

You'd need to explain why the other officers aren't there. (Remember how, in "Tales of a Sea Hawk", Danielle tells you that you don't want to take everyone with you when you're sneaking into Silehard's bedroom?)

This is no problem, as Jack is exploring an island, and most of the crew has to stay and guard the ship, so i will just mention in the story that it's best to procced as a small group to not draw attention (as characters don't know what awaits them).

I'm now playing "Hoist the Colours" from the start, partly because I don't fully trust jump-starts

I think after you have tested my first quest you may use jump starts, as i won't touch characters or anything from COTB later on, and to do next parts of the quest you will need to start a new game yet again as i add many more locations etc. :drunk


Last code upload before the final one, reorganized and finished up code for bootstrap's meeting scene (characters ship's deck checks mostly)
 

Attachments

  • quests_reaction.c
    485.5 KB · Views: 45
Last edited:
As promised, first post updated, and ill attach the link here as well!

I have tested it all as much as my time allowed, it should be bug free, but who knows :D might need to add some more foolproofing, i did do it as much as i could think of, but it's hard to say without more testing.


@Grey Roger i have not fixed the locator issue in COTB that you mentioned in my version, the download includes all of your dialogue fixes but does not inculde Bosun or Dutchman's new deck, as i'm not there yet to need it.

As always waiting on the much needed feedback, i think the story is pretty neat so far ;)


Download
 
Last edited:
Thanks, @Sebrian! :onya

I've already changed the locator for Bootstrap Bill as well as adding the code to make "Pirates_1" and his mates disappear. So I'll simply use WinMerge to make a version with your new DMC stuff plus anything else I do to CotBP.
 
Good news i have made a fresh install and played through my story again, everything seems to be in order, few dialogue and questbook fixes were needed, so ill update my download links as well. There was an error in the log regarding seadogs.c line 735-744 but i'm not sure if it's related to my quest, i didn't save the log by mistake, ill try to get it again :D
 

Attachments

  • Dead mans chest.txt
    1.6 KB · Views: 50
  • Tia Dalma_dialog.h
    6 KB · Views: 62
C:
RUNTIME ERROR - file: seadogs.c; line: 735
Save - ARef to non existing attributes branch
RUNTIME ERROR - file: seadogs.c; line: 735
Save - ARef to non existing attributes branch
RUNTIME ERROR - file: seadogs.c; line: 735
Save - ARef to non existing attributes branch
RUNTIME ERROR - file: seadogs.c; line: 735
Save - ARef to non existing attributes branch


Got it again, it appears even when playing Justine Le Moigne’s Disappearance which i'm doing right now. And keeps on showing up after all the time :confused:

And speaking of foolproofing, now when playing Justine Le Moigne’s Disappearance, again, i realise that it's in a pretty shabby place even compared to my code, for example in the scene where you teleport to deck and talk with Tia Dalma and Davy Jone's (the one which previously lead to a commented out dalma's shack) fast travel is not disabled, so you can pretty much just nope out of there even by accident and break the whole quest xD
 

Attachments

  • error.log
    364 bytes · Views: 43
Back
Top