• 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 Dialogue Gender Overhaul

If you want to do some quest writing, there are (at least) two openings. "Devlin Opera" has been unfinished for a long time. Or, for something smaller to get you started, have you tried playing the "Help the Lady" sidequest? That's the one in which you meet Armand Delacroix, meaning you get to try out his new dialog. It ends with him telling you to look for a letter back at the Pirate Settlement, presumably leading to another quest with Armand and Estrella - but at present there is no letter and no follow-up quest...

I'd advise not making sweeping changes to the "standard" storyline. It's the original PoTC game storyline and is still recognisable. Being something of a traditionalist, I for one would rather like it to stay that way. ;) But apparently the original game writers wanted to make it playable as Danielle, so making the dialog use placeholders and having the main NPC change to Nathaniel Hawk if you're female would fit in well.

You could also try copying an existing sidequest. Change names and locations, change dialogs to make your version more distinct, and go on from there. (Ever talked to Rys Bloom? Ever talked to Fred Bob? Rather similar, aren't they? ;))
 
Haven't been able to keep up with all the rapid progress here, but I want to pitch in anyway to say I really enjoy seeing stuff happening here.
Keep up the good work! :woot
 
If you want to do some quest writing, there are (at least) two openings. "Devlin Opera" has been unfinished for a long time. Or, for something smaller to get you started, have you tried playing the "Help the Lady" sidequest? That's the one in which you meet Armand Delacroix, meaning you get to try out his new dialog. It ends with him telling you to look for a letter back at the Pirate Settlement, presumably leading to another quest with Armand and Estrella - but at present there is no letter and no follow-up quest...

I'd advise not making sweeping changes to the "standard" storyline. It's the original PoTC game storyline and is still recognisable. Being something of a traditionalist, I for one would rather like it to stay that way. ;) But apparently the original game writers wanted to make it playable as Danielle, so making the dialog use placeholders and having the main NPC change to Nathaniel Hawk if you're female would fit in well.

You could also try copying an existing sidequest. Change names and locations, change dialogs to make your version more distinct, and go on from there. (Ever talked to Rys Bloom? Ever talked to Fred Bob? Rather similar, aren't they? ;))

Alright, that's fair enough, I won't make any drastic changes (maybe just for personal use) xD Gonna have a look at the smaller scale quests and see if I can make sense of it!

Haven't been able to keep up with all the rapid progress here, but I want to pitch in anyway to say I really enjoy seeing stuff happening here.
Keep up the good work! :woot
Thanks! xD It's really fun; I've hardly been able to tear myself from the screen send help

Also found another "sir" I missed in Thomas O'Reileys dialog, uploading the updated files! Either I've been really lucky in finding all the mistakes in just a few hours of play, or there are a lot of mistakes :shock EDIT: Another mistake in the same file, updated it againEDIT2: Found another 30 sec later, gonna go with "lots of mistakes"
 

Attachments

  • Thomas O'Reily_dialog.h
    12.3 KB · Views: 164
  • Thomas O'Reily_dialog.c
    22.7 KB · Views: 170
  • Habitue_dialog.h
    5.5 KB · Views: 139
Last edited:
Another correction in "Peter Blowhorn_dialog.h". "brake" is what you do to stop a car, it's not what you do to a pirate's bones. :D
 

Attachments

  • Peter Blowhorn_dialog.h
    5.8 KB · Views: 146
Another correction in "Peter Blowhorn_dialog.h". "brake" is what you do to stop a car, it's not what you do to a pirate's bones. :D
That is very true xD added another file to my last post too about 1 second before you posted, in case you missed it. I was so thorough too, and yet.. :p
 
That is very true xD added another file to my last post too about 1 second before you posted, in case you missed it. I was so thorough too, and yet.. :p
I know the feeling. The reason you didn't need to do much work on the priests is that I already did them while I was playing the "Strange Things Going On" sidequest. The reason you had to do anything at all to "Father Bernard_dialog" is that I missed one or two things to be corrected. :oops:
 
I'm finally not finding errors in every other conversation anymore :p but I encountered another pronoun I missed in the distasteful Enc_rapers, uploading the updated files! :checklist
 

Attachments

  • Enc_Rapers_dialog.h
    867 bytes · Views: 139
  • Enc_Rapers_dialog.c
    2.1 KB · Views: 167
the distasteful Enc_rapers
Distasteful indeed. :ko

That was originally a stock game feature, that was unfinished and disabled in the released game.
Considering it's a Disney game, that definitely makes sense....
 
A few more needed corrections:
"Friedrich Corleis_dialog.c", "Cabinfight_dialog.c", "anacleto_dialog.c", "Artois Voysey_dialog.c": missing ")"
"Jacobus Colijn_dialog.c": missing ","
"Gunsmith_dialog.c": doesn't use the usual "PChar" and "NPChar" variables.

It occurs to me that "Devlin Opera" is particularly suited to your talents. Apart from being an unfinished storyline which needs someone to finish it, as far as I can tell it's an attempt to import the storyline from "Age of Pirates: Caribbean Tales". That one gives you the choice of playing Beatrice or Blaze Devlin. Whichever one you play, you'll meet the other one during the story. The PoTC version assumes you're playing Beatrice and the dialog is written accordingly, which puts it in need of the same sort of overhaul, albeit in the other direction, so to speak.
 

Attachments

  • Friedrich Corleis_dialog.c
    12.6 KB · Views: 164
  • Cabinfight_dialog.c
    44.2 KB · Views: 152
  • Jacobus Colijn_dialog.c
    8 KB · Views: 138
  • anacleto_dialog.c
    6.8 KB · Views: 140
  • Artois Voysey_dialog.c
    4.8 KB · Views: 135
  • Gunsmith_dialog.c
    23.8 KB · Views: 118
as far as I can tell it's an attempt to import the storyline from "Age of Pirates: Caribbean Tales"
That is how it started when @konradk added it to test the concept of the "Storylines" system for the New Horizons mod.
Then @Short Jack Gold took the opening scene and took it in all sorts of interesting new directions.
Then he continued to made most of the Jack Sparrow and Hornblower storylines instead, leaving Devlin as just the opening.
 
Distasteful indeed. :ko

That was originally a stock game feature, that was unfinished and disabled in the released game.
Considering it's a Disney game, that definitely makes sense....

I'd probably have kept it out if it were up to me, but it is what it is :shrug

A few more needed corrections:
"Friedrich Corleis_dialog.c", "Cabinfight_dialog.c", "anacleto_dialog.c", "Artois Voysey_dialog.c": missing ")"
"Jacobus Colijn_dialog.c": missing ","
"Gunsmith_dialog.c": doesn't use the usual "PChar" and "NPChar" variables.

It occurs to me that "Devlin Opera" is particularly suited to your talents. Apart from being an unfinished storyline which needs someone to finish it, as far as I can tell it's an attempt to import the storyline from "Age of Pirates: Caribbean Tales". That one gives you the choice of playing Beatrice or Blaze Devlin. Whichever one you play, you'll meet the other one during the story. The PoTC version assumes you're playing Beatrice and the dialog is written accordingly, which puts it in need of the same sort of overhaul, albeit in the other direction, so to speak.

Syntax symbols are the worst, I knew I mustve missed some :modding I did know about the gunsmith one, but I must have missed fixing it when I did the blacksmith ones which have the same quirk

I'll definitively have a look at Devlin opera! gonna see how far it's gotten and what I can do with the story, I haven't played caribbean tales yet. did Short Jack Gold deviate enough to take it other directions? :p

Oh, another question I had on my mind! Is it possible to make an actorless dialog, i.e. a dialog with yourself? To like describe a scene to the player without using LogIt, but without an exposition fairy telling you what you see?
 
Last edited:
Yes. 'LAi_ActorSelfDialog' works very much like 'LAi_ActorDialog' but has no timing parameters. Example:
Code:
           LAi_SetActorType(pchar);
           Pchar.dialog.filename = "LaCroix_dialog.c";
           Pchar.dialog.currentnode = "logbook";
           LAi_ActorSelfDialog(Pchar, "player_back");
The line 'PChar.dialog.filename = "<filename>";' is optional. If no such line is included, the files used by the dialog are "blaze_dialog.c" and "blaze_dialog.h". 'currentnode' points to a case in "blaze_dialog.c" just as it does for any other dialog. Case "player_back" is defined in "PROGRAM\QUESTS\quests_common.c"; it puts you back to player mode and resets the dialog filename to "blaze_dialog.c".

You can trigger a different quest case instead of "player_back", provided that quest case is defined somewhere. If you do, your quest case must also put you back to player mode, otherwise you'll be stuck to the spot forever! If you changed the dialog filename, you should also reset it to "blaze_dialog.c" because sidequests also use 'LAi_ActorSelfDialog' and will break if you've left the dialog filename set to something else. I often use dialogs to trigger quest cases - look at the "Ardent" storyline for examples of that.
 
Yes. 'LAi_ActorSelfDialog' works very much like 'LAi_ActorDialog' but has no timing parameters. Example:
Code:
           LAi_SetActorType(pchar);
           Pchar.dialog.filename = "LaCroix_dialog.c";
           Pchar.dialog.currentnode = "logbook";
           LAi_ActorSelfDialog(Pchar, "player_back");
The line 'PChar.dialog.filename = "<filename>";' is optional. If no such line is included, the files used by the dialog are "blaze_dialog.c" and "blaze_dialog.h". 'currentnode' points to a case in "blaze_dialog.c" just as it does for any other dialog. Case "player_back" is defined in "PROGRAM\QUESTS\quests_common.c"; it puts you back to player mode and resets the dialog filename to "blaze_dialog.c".

You can trigger a different quest case instead of "player_back", provided that quest case is defined somewhere. If you do, your quest case must also put you back to player mode, otherwise you'll be stuck to the spot forever! If you changed the dialog filename, you should also reset it to "blaze_dialog.c" because sidequests also use 'LAi_ActorSelfDialog' and will break if you've left the dialog filename set to something else. I often use dialogs to trigger quest cases - look at the "Ardent" storyline for examples of that.

Right, thanks :D Not sure I 100% got it, but now that I know what I'm looking for I can probably figure it out! :p otherwise I'll come crawling back for more help I guess :type1
 
I'd probably have kept it out if it were up to me, but it is what it is :shrug
It was restored before I ever joined this forum, so somewhere in the first year.
I'm no big fan of removing content that other people added.
But if somebody wants to link it to the "Brothel Mod" that defaults to OFF, that is perfectly fine by me. :doff
 
It was restored before I ever joined this forum, so somewhere in the first year.
I'm no big fan of removing content that other people added.
But if somebody wants to link it to the "Brothel Mod" that defaults to OFF, that is perfectly fine by me. :doff
Yeah, that is definitely not a battle I wanna take :p

I can't be sure I read the functions right since I'm still very new at this, but would something like this work?
Code:
    LandEncTemplate[n].enc2.type = "ENC_RAPERS";
    LandEncTemplate[n].enc2.chance = 0.1;
    LandEncTemplate[n].enc2.StartTime = 16;
    LandEncTemplate[n].enc2.EndTime = 6;
    switch(IsBrothelEnabled){
        case 0:
            LandEncTemplate[n].enc2.chance = 0;
        break;
    }
 
Yeah, that is definitely not a battle I wanna take :p
There's nobody left to battle with. I suppose I'm kind-of the person "in charge" these days and I'm OK with it. ;)

I can't be sure I read the functions right since I'm still very new at this, but would something like this work?
Very close. Try this:
Code:
    LandEncTemplate[n].enc2.type = "ENC_RAPERS";
    LandEncTemplate[n].enc2.StartTime = 16;
    LandEncTemplate[n].enc2.EndTime = 6;
    if(IsBrothelEnabled())
            LandEncTemplate[n].enc2.chance = 0.1;
    else
            LandEncTemplate[n].enc2.chance = 0;
'IsBrothelEnabled' is a function without inputs and therefore requires the extra '(' and ')' after it.
Replacing the 'switch' with 'if' is just a choice. Either should work equally well. :doff
 
There's nobody left to battle with. I suppose I'm kind-of the person "in charge" these days and I'm OK with it. ;)
sorry if I came across as a bit combative, I'm damaged from less friendly modding communities :love while I'm being sincere anyway I gotta praise how very good this community really is:flower

Very close. Try this:
Code:
    LandEncTemplate[n].enc2.type = "ENC_RAPERS";
    LandEncTemplate[n].enc2.StartTime = 16;
    LandEncTemplate[n].enc2.EndTime = 6;
    if(IsBrothelEnabled())
            LandEncTemplate[n].enc2.chance = 0.1;
    else
            LandEncTemplate[n].enc2.chance = 0;
'IsBrothelEnabled' is a function without inputs and therefore requires the extra '(' and ')' after it.
Replacing the 'switch' with 'if' is just a choice. Either should work equally well. :doff

Aaah, so that's how it works! I've looked at the inputless functions and wondered how in the world to use them.
The if/else looks nice and clean, but for the sake of learning, would a switch version still use "case 0:" and "case 1:" since it's a bool, or how do I tell it what to look for?

Anyway, I'm attaching the LandEnc_init with the brothel check. it's a teeny tiny change, but I hope it's of use :)


This is kinda turning into "Teach Daisy to Code" instead of the original topic :p I'll create a new thread for the quest coding when it's got some more meat I guess, but for now I hope it's fine; another thing I came across are NPChar.quest.help or PChar.quest.alignment, which don't seem to be defined anywhere but in the characters themselves, frex ch.quest.help in officers for Fred Bob and Rys. Are they not tied to a quest per se?
 

Attachments

  • LandEnc_init.c
    27.4 KB · Views: 142
sorry if I came across as a bit combative, I'm damaged from less friendly modding communities :love while I'm being sincere anyway I gotta praise how very good this community really is:flower
Thank you for the kind words!
I will admit we don't have a perfect track record here either, but we do aim to make this an actual good place to be. :cheers

The if/else looks nice and clean, but for the sake of learning, would a switch version still use "case 0:" and "case 1:" since it's a bool, or how do I tell it what to look for?
I think your proposed switch would work perfectly fine. :yes

This is kinda turning into "Teach Daisy to Code" instead of the original topic :p I'll create a new thread for the quest coding when it's got some more meat I guess, but for now I hope it's fine; another thing I came across are NPChar.quest.help or PChar.quest.alignment, which don't seem to be defined anywhere but in the characters themselves, frex ch.quest.help in officers for Fred Bob and Rys. Are they not tied to a quest per se?
I think "help" is related to those specific quests.

"alignment" is virtually meaningless, but could become very crucial if ever the Reputation idea I've got leaves my brain and makes its way into the game.
As it is, it is part of unfinished stock game functionality that should technically work after @pedrwyth fixed it up, but it basically never triggered.
 
Adding to @DeathDaisy's dialog upgrades, try these for a slight new twist to "Tales of a Sea Hawk". "StartStoryline.c" goes into "PROGRAM\Storyline\standard". "Greetings_alias.ini" goes into "RESOURCE\INI\ALIASES" and contains a definition for "Gr_Nathaniel" needed by "StartStoryline.c".

"StartStoryline.c" does this:
Code:
    if (PChar.sex == "woman")
   {
       ch = CharacterFromID("Danielle");
       ch.name = TranslateString("","Nathaniel");
       ch.lastname = TranslateString("","Hawk");
       ch.model.animation = "man";
       ch.sex = "man";
       ch.greeting = "Gr_Nathaniel";
       switch(Rand(4))           // For a bit of fun, give Nathaniel a random choice of "Blaze" outfit
           {
           case 0: SetModelFromID(ch, "Blaze"); break;
           case 1: SetModelFromID(ch, "Blaze4"); break;
           case 2: SetModelFromID(ch, "Blaze5"); break;
           case 3: SetModelFromID(ch, "Blaze6"); break;
           case 4: SetModelFromID(ch, "Blaze7"); break;
           }
   }
If you're playing a female character, "Danielle" becomes Nathaniel Hawk, who gets a choice of clothes. There are several "Blaze" models differing only in the colour of the vest and trousers.

I haven't played the storyline far enough yet for Nathaniel to make a scheduled appearance, but for test purposes, a bit of console magic allows him to make a very early unscheduled appearance:
nathaniel_danielle.jpg

The irony is not lost on me. By definition the player character ID is always "Blaze", and I didn't bother changing the NPC's ID so it's still "Danielle". Pick the right model for yourself and "Blaze" becomes Danielle while "Danielle" becomes Blaze. xD
 

Attachments

  • StartStoryline.c
    11.7 KB · Views: 149
  • Greetings_alias.ini
    48.8 KB · Views: 143
Back
Top