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

Devlin Opera for the 65742th time

Okay, @Grey Roger , I'm motivated to work again...

So without much further ado, here's the current state of the quest, nothing is changed from last year yet. I guess the best thing would be if you could merge this into the latest state of the game so I can do a fresh update or even install which is up to date in every regard, then I can continue from there.

EDIT: I'll definitely need a new install, I've got a constant game crash.


Cool, ill try it out!
 
If you want to play first hand: When you get to Santiago, there's another choice of the three characters. So far, only choosing Beatrice leads somewhere and it's over as soon as you're reunited with your whole party and get a missing quest case reported.
 
Perhaps add the missing quest, even if it's just something like:
Code:
case "missing quest":
logit("More adventures for the Devlin family still to come!");
CloseQuestHeader("insert_questbook_title");
break;
It's tidier than an error message about a missing quest and can easily be replaced with real quest code when you get round to writing it.
 
Can do. Tuesday I could continue with polishing Beatrice's route, adding Blaze's and Bonnie's routes and the usual "debriefing" in the quest cabin, which is currently where it ends. But I'll need to make a fresh install because of the crashes and an update of the latest version of New Horizons.
 
In other news, I could start updating the story on this page here. Making a little walkthrough. Alright?

 
The walkthrough so far is written. Yesterday, I remember a whole part of the story I had envisioned for later, sadly I can't remember the names I wanted to give the hermit and his daughter. Tonight, I'll try to make a clean, new install of New Horizons, add the latest update (where do I find it again?) and then add my Devlin Opera stuff. Then I would be ready to continue with the quest.
 
Thanks for the walkthrough! It includes your new stuff, which means I'll need to get a new update out soon...

If you haven't already defined the hermit and his daughter then you can give them whatever names you want - if you can't remember what you originally planned to call them, make up new names. Personal experience is that this is one of the hardest part of story writing! One way I do it is to open "Characters_names.c", scroll to the relevant nation section, then close my eyes, scroll up and down a few times blindly, then point at the screen. That's the name of the character. Another is to start a FreePlay as the same nation as the character, wander around town, find a random walker whose name I like, then note it and use it for the character. And then there's this:
https://www.fantasynamegenerators.com/
As well as fantasy names, it can give names based on real world locations. Just remember to add any new names to "RESOURCE\INI\TEXTS\ENGLISH\Storyline\DevlinOpera\characters_names.txt".

You'll find links to the newest installation as well as the current update here:
Mod Release - Build 14 Gamma Version [Last update: 27th April 2022]
 
Okaydokay. One of my main problem with the names is that due to the time period, most of them are supposed to be spanish. It gets a bit boring I feel. So I'm always looking for chances to include french, british or other characters somehow. And of course, some of them are just silly inventions.

I'm not even sure if I have a story-specific name file. I'll see tonight.
 
New Horizons is up and running! Now I can do some work on Bonnie's route in Santiago de Cuba, which I hope people will find amusing.

@Grey Roger last year we briefly talked here about my wish to have a quest (Beatrice's route in Santiago) take place entirely at night. You already made some suggestions back then, but I'd be interested to hear your thoughts about this when you've seen first hand what I mean.
 
I'm already in trouble. Having the player join an NPC on the table in the tavern on Santiago does kinda work, but visually it clearly doesn't. :p The code is based on the Valentin Massoni drinking scene in the standard storyline. Anyone got an idea?
haha.png
 
Could you please post a code snippet, ill try to help you out :)

Code:
ChangeCharacterAddressGroup(pchar,"your location","locator group","locator");
ChangeCharacterAddressGroup(characterFromID("Your npc"), "your location", "locator group", "locator");

LAi_SetActorType(Pchar);
LAi_ActorSetSitMode(PChar);
LAi_ActorSetSitMode(CharacterFromID("Your npc"));

LAi_ActorWaitDialog(CharacterFromID("Your npc"), Pchar);
LAi_ActorDialog(pchar, characterFromID("Your npc"),"", 2.0, 2.0);

Is all that you should need...
 
Last edited:
I don't have my code with me here, but you can look at the Massoni code in Sea Hawk. There's a LaiFade that initiates two quest cases, one to put Pchar on the sit locator and one to initiate the dialogue. I want there to be two more Fades to interrupt the dialogue to show that time is passing. Pchar doesn't change locator anymore, but for some reason, the LaiFade in those instances still need to initiate two quest cases, with just one it gives me an error message for the whole quest_reaction! And that's how far I've got yesterday before going to bed around midnight. :p

Could there anything be wrong or different about the sit locators in the Santiago tavern? (which is a different model than standard PotC, probably TEHO I guess) Doesn't seem likel to me.
 
I don't have my code with me here, but you can look at the Massoni code in Sea Hawk. There's a LaiFade that initiates two quest cases, one to put Pchar on the sit locator and one to initiate the dialogue. I want there to be two more Fades to interrupt the dialogue to show that time is passing. Pchar doesn't change locator anymore, but for some reason, the LaiFade in those instances still need to initiate two quest cases, with just one it gives me an error message for the whole quest_reaction! And that's how far I've got yesterday before going to bed around midnight. :p

Could there anything be wrong or different about the sit locators in the Santiago tavern? (which is a different model than standard PotC, probably TEHO I guess) Doesn't seem likel to me.


C:
case "spawn":
            ChangeCharacterAddressGroup(characterFromID("NPC"), "pirate_tavern", "sit", "sit5");
            ChangeCharacterAddressGroup(Pchar, "pirate_tavern", "sit", "sit6");

           LAi_QuestDelay("sitandtalk", 0.2);
        break;
       
        case "sitandtalk":
            LAi_SetActorType(Pchar);
            LAi_ActorSetSitMode(characterFromID("NPC"));
            LAi_ActorSetSitMode(PChar);
         
            Characters[GetCharacterIndex("NPC")].dialog.currentnode = "SIT_FADE_DIAL"; //lEADS TO SIT_FADE_1
         
            LAi_ActorWaitDialog(CharacterFromID("NPC"), Pchar);
            LAi_ActorDialog(pchar, characterFromID("NPC"),"", 2.0, 2.0);
        break;

        case "SIT_FADE_1":
            LAi_Fade("sitandtalk_2", "");
        break;

        case "sitandtalk_2":
            Characters[GetCharacterIndex("NPC")].dialog.currentnode = "SIT_FADE_DIAL_2"; //lEADS TO SIT_FADE_2
         
            LAi_ActorWaitDialog(CharacterFromID("NPC"), Pchar);
            LAi_ActorDialog(pchar, characterFromID("NPC"),"", 2.0, 2.0);
        break;

        case "SIT_FADE_2":
            LAi_Fade("sitandtalk_3", "");
        break;


I hope i got your idea right, this is what i would do, didn't test but should work fine

Edit: added a LAi_QuestDelay
 
Last edited:
I don't have my code with me here, but you can look at the Massoni code in Sea Hawk. There's a LaiFade that initiates two quest cases, one to put Pchar on the sit locator and one to initiate the dialogue. I want there to be two more Fades to interrupt the dialogue to show that time is passing. Pchar doesn't change locator anymore, but for some reason, the LaiFade in those instances still need to initiate two quest cases, with just one it gives me an error message for the whole quest_reaction! And that's how far I've got yesterday before going to bed around midnight. :p
If you want to interrupt the dialog, I wouldn't use 'LAi_Fade'. Instead, I'd end the dialog at the point where the interruption happens, and use 'AddDialogExitQuest' in the dialog file to trigger a quest case, e.g.:
Code:
AddDialogExitQuest("dialog_interrupt");
Then, in "quests_reaction.c":
Code:
case "dialog_interrupt":
Logit(TranslateString("", "Time passes...");
LAi_QuestDelay("Resume_dialog", 5.0);
break;

case "Resume_dialog":
Characters[GetCharacterIndex("whoever_is_talking")].dialog.CurrentNode = "next_part";
LAi_ActorDialogNow(CharacterFromID("whoever_is_talking"),PChar,"",2.0);
break;
Replace "dialog_interrupt", "Resume_dialog", "whoever_is_talking" and "next_part" with whatever you want. Replace "Time passes..." as well if you like - and whatever you put there, add it into "RESOURCE\INI\TEXTS\ENGLISH\interface_strings.txt" so that our translators can find it and translate it for the benefit of anyone playing in Spanish, Russian or Polish.

Could there anything be wrong or different about the sit locators in the Santiago tavern? (which is a different model than standard PotC, probably TEHO I guess) Doesn't seem likel to me.
There was something very odd about a few of the "sit" locators in that, if a character was put on them, he became invisible; and if the player was put onto one of them, the whole room went dark. Rotating them a fraction of a degree solved that, and you should have the fixed locator file because it's in the January 2022 installer.

But it is indeed a different tavern model to anything else used in PoTC. Edit "InternalSettings.h", enable visible locators, then go into the tavern and see which locators are on which seats.

And don't use "Tales of a Sea Hawk" as an example, except possibly as an example of how not to write storyline code! "Assassin", "Bartolomeu" and "Hornblower" are relatively simple, linear storylines whose code is easy to follow, copy and adapt.
 
Last edited:
Thanks so far. @Sebrian that is mostly the same code I use. Essentially it is.

The thing I don't know at the moment and will text next is how a simple ChangeCharacterAddressGroup(Pchar, "Santiago_tavern", "sit", "sit2"); without a LAi_Fade or anything else works. I assume it would be an abrupt "jump" to the sit locator. In that case, the LAi_fade just looks a bit more fluent and elegant. Same for passing some time (which in my case doesn't really need to actually pass, as at the end of the dialogue it will go to nighttime. It just needs to fill certain "gaps" in the conversation, as it shows Balboa getting more and more drunk). I think the same Fade is also used for drinking or gambling with habitues at the tavern.

@Grey Roger the problem is that with "Sea Hawk" I know the storyline in and out, which I can't say about the other three. So if I use any quest events as reference it will most likely be from stock game content.

As for the sit locators and the whole room going dark: Does it look like the same problem in my screenshot?
 
Thanks so far. @Sebrian that is mostly the same code I use. Essentially it is.

The thing I don't know at the moment and will text next is how a simple ChangeCharacterAddressGroup(Pchar, "Santiago_tavern", "sit", "sit2"); without a LAi_Fade or anything else works. I assume it would be an abrupt "jump" to the sit locator. In that case, the LAi_fade just looks a bit more fluent and elegant. Same for passing some time (which in my case doesn't really need to actually pass, as at the end of the dialogue it will go to nighttime. It just needs to fill certain "gaps" in the conversation, as it shows Balboa getting more and more drunk). I think the same Fade is also used for drinking or gambling with habitues at the tavern.

@Grey Roger the problem is that with "Sea Hawk" I know the storyline in and out, which I can't say about the other three. So if I use any quest events as reference it will most likely be from stock game content.

As for the sit locators and the whole room going dark: Does it look like the same problem in my screenshot?
'LAi_fade' should indeed work for placing the player character; that's how the code for drinking in a tavern does it as well.

The problem in the screenshot does indeed look like the problem I had - I didn't take a screenshot, but that's what I saw when I was trying to fix various problems with drinking:
Drinking in a tavern
And if I remember correctly, locator "sit2" was indeed one of the trouble-makers. But I thought I'd fixed it by the rotation trick. See if you can put the player and Rocoso Balboa on a different pair of locators. If it's night time, avoid "sit12" because the tavern's resident drunk/gambler sits there. Also avoid locator "sit11", in group "sit2" so that random visitors can't spawn there, because that's the one opposite "sit12" where you'll sit to face said resident.
 
We've touched the subject of sit locators in Santiago on page 10 of this thread, posts #188 and #189. And yes, sit2 is exactly the locator you mentioned when first describing the problem! I'll try with other sit locators in the tavern. A vcskip is already in effect during the quest stuff, so this should give me some options.
 
Using different locators fixed every problem. Luckily switching the table isn't a big deal for those two.

newtable.png

Now I'm stuck at the following quest case. It has been a long time and I kinda forogt everything about actor type and other character types. Basically PChar is set to actor type at the table, then they are transported outside, both should be standing and Balboa should talk to PChar but he is still sitting and he doesn't initiate the dialogue.

Code:
        case "Bonnie_and_Balboa_on_the_town":
                        DoQuestReloadToLocation("Santiago_port", "goto", "goto46", "Bonnie_and_Balboa_on_the_town2")
            ChangeCharacterAddressGroup(characterFromID("Rocoso Balboa"), "Santiago_port", "officers", "reload3_2");

            LAi_SetActorType(characterFromID("Rocoso_Balboa"));
            LAi_ActorSetStayMode(characterFromID("Rocoso_Balboa"));
            LAi_ActorSetStayMode(pchar);
        break;

        case "Bonnie_and_Balboa_on_the_town2":
            Characters[GetCharacterIndex("Rocoso Balboa")].Dialog.CurrentNode = "extrem_drunk";
            LAi_ActorDialog(characterFromID("Rocoso Balboa"), Pchar, "", 1.0, 0);
            LAi_SetPlayerType(pchar);
        break;

If anybody wants to help otherwise
1) Go to Turks and visit Short Jack Gold. Everybody at his meeting should have a brand new piratey voice clip. But for some reason, a certain Bartholomew Roberts is still talking like a dutch shipyard owner. This has been around for a long time and I never made it a priority to look at it.
2) In general, are the unique voice clips for Blaze and Bonnie, Emmanuel Devlin, Rico Diaz and Toni and Ernesto Haraldo okay?
3) Play until Santiago or use the jumpstart, choose Beatrice to go talk to the navigator. There's a new mini quest and I'd be glad about a few opinions for final fixes and adjustements.
 
Try putting 'LAi_SetActorType(characterFromID("Rocoso_Balboa"));' right before the 'LAi_ActorDialog' in case "Bonnie_and_Balboa_on_the_town2".

If that doesn't work, play up to that point, then post "compile.log".
 
Back
Top