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

Fixed Hornblower Storyline: Changes Required

And now I've run into another problem. Once again, it's "The Duchess and the Devil".

How it's supposed to start:
After dinner with the Dalrymples, you're introduced to the Duchess. You leave the building, talk to Midshipman Hunter, make your way to port and go to sea. The capture video triggers when you to to the worldmap.

What happens now:
After dinner with the Dalrymples, you're introduced to the Duchess. You leave the building, talk to Midshipman Hunter, and the capture video triggers immediately.
That worked fine before, didn't it? Do you have an old copy of quests_reaction.c around so you can check if this is because of any recent changes made?
 
This I time a passed the tunnel and first got to the academy. Open this time. No one there.
I get a serious feeling that not all cases have been covered. Which is the mayor part of questwriting.

Maybe you can tell me what you want at the end of Hornblower Grey Roger and I try just to add a few dialogs.
 
That worked fine before, didn't it? Do you have an old copy of quests_reaction.c around so you can check if this is because of any recent changes made?
It did work before. I've got one slightly earlier version, which I tried - same result. And I've got a version from Beta 3.4, which didn't work at all because of changes I didn't make - soldiers used to be equipped with "BLADE_SABER", now they're equipped with "blade4", so when I tried to use that old version, it crashed.

This I time a passed the tunnel and first got to the academy. Open this time. No one there.
I get a serious feeling that not all cases have been covered. Which is the mayor part of questwriting.

Maybe you can tell me what you want at the end of Hornblower Grey Roger and I try just to add a few dialogs.
As a minimum, maybe have a midshipman run up to Hornblower and tell him to report to Naval HQ, where Pellew then congratulates Hornblower on his new command. That at least makes sense of the transfer to Atropos, which at the moment looks like a wedding present from Mrs. Mason. xD

Which reminds me. Another change I made to "quests_reaction.c" was to comment out the Atropos line. Partly because it currently makes no sense, and partly because thanks to the new cargo mod, Atropos is supplied with minus lots of food and rum. Hotspur is at least usable. But by being commented out rather than removed entirely, Atropos can easily be re-activated when appropriate.

And, being still unable to decide whether to remove Sharpe from the Passenger list or leave him assigned to Hornblower, I simply asked Sharpe himself!

richard_sharpe@bridgetown said:
I must take the troops back to the barracks and report.
So that's settled - he and his men are removed when you return to Bridgetown after the first Guadeloupe mission.
 
It did work before. I've got one slightly earlier version, which I tried - same result. And I've got a version from Beta 3.4, which didn't work at all because of changes I didn't make - soldiers used to be equipped with "BLADE_SABER", now they're equipped with "blade4", so when I tried to use that old version, it crashed.
Replace BLADE_SABER (without quotation marks) with "blade4" (with quotation marks) and PISTOL_NORMAL with "pistol1" .
They are the same; I just got rid of the pointless and confusing #define lines that were in use before.

Which reminds me. Another change I made to "quests_reaction.c" was to comment out the Atropos line. Partly because it currently makes no sense, and partly because thanks to the new cargo mod, Atropos is supplied with minus lots of food and rum. Hotspur is at least usable. But by being commented out rather than removed entirely, Atropos can easily be re-activated when appropriate.
For the next release, I definitely want Atropos to be returned. I wouldn't worry about cargo craziness for now; either that will be sorted or we return it to Beta 3.4 state.

And, being still unable to decide whether to remove Sharpe from the Passenger list or leave him assigned to Hornblower, I simply asked Sharpe himself!

richard_sharpe@bridgetown said:So that's settled - he and his men are removed when you return to Bridgetown after the first Guadeloupe mission.
:rofl
 
I'd be happy for Atropos to return, which is why I only commented it out, rather than removing it outright. In fact, until the Duchess reared her head again, I was planning on using this as an excuse to learn how to write a simple quest, starting with dropping a midshipman onto Bridgetown street and have him give Hornblower the news. But I don't want to start adding extra stuff until I'm happy that existing stuff is working as it should... Meanwhile cargo can be fixed one way or another. Don't worry, Atropos will return when the time is right!
 
As a minimum, maybe have a midshipman run up to Hornblower and tell him to report to Naval HQ, where Pellew then congratulates Hornblower on his new command. That at least makes sense of the transfer to Atropos, which at the moment looks like a wedding present from Mrs. Mason. xD
Ok, I'll try to fix that if I ever manage to get there following the story.
 
Possibly one of these, from ""danielle_RepelEnglishAssault_exit"?
Code:
bQuestDisableMapEnter = true;
Island_SetReloadEnableGlobal("oxbay",false);
The locked boat ought to be enough. It's a big hint that you don't want to go to sea, and if you're determined to break the quest then there are other ways besides bypassing the lock by teleporting onto the ship...
This is the one I meant:
bQuestDisableSeaEnter = true/false;
 
Does anyone have a savegame close to the final scene which I can use.
Try this. It's from a previous playthrough so my most recent changes to "quests_reaction.c" won't have taken effect - Sharpe and his men are probably still present, and everyone is probably still at peace as a result of the treaty which led Hornblower to lose his ship and rank earlier in the story.

Meanwhile, I've still to find out why "The Duchess and the Devil" is skipping straight to the capture scene...
 

Attachments

  • -=Player=- Barbados.zip
    857.6 KB · Views: 79
Thanks Grey Roger, I'll see if this can speed up things.

I have been playing for hours and without getting to the end. The tunnels were
not the last part.
 
Meanwhile, I've still to find out why "The Duchess and the Devil" is skipping straight to the capture scene...
Fixed. Turns out that because you have a DirectSail quest update attribute added to the player character, the code didn't wait until you got onto the WorldMap.
PROGRAM\Locations\locations_loader.c:
Code:
  Event(EVENT_LOCATION_UNLOAD,"");
   DeleteAttribute(loc,"openboxes");           // NK 05-04-14
   DeleteAttribute(loc,"trapboxes");           // NK 05-04-14
   DeleteAttribute(loc,"jammed");             // PB: Lockpicks
   DeleteAttribute(mainCharacter, "Flags.waitdelay");   // PB: Just to make sure this is gone
   DeleteAttribute(mainCharacter, "directsail1.QuestCheckMapEnter"); // PB: This too <------------ ADD THIS LINE -------------
This ensures that the offending attribute is removed on every location reload ashore, while still remaining functional at sea.
It could be that this same problem is behind some weird effects reported in the Standard and Jack Sparrow storylines as well.
So perhaps those are now immediately back to normal as well. Maybe. Perhaps....
 
This is the one I meant:
bQuestDisableSeaEnter = true/false;
What advantage does this have compared to the current method of locking the boat? That now works properly with the added line to unlock it again, and in fact I put another lock/unlock pair around the second Guadeloupe mission. Does 'bQuestDisableSeaEnter' also prevent teleporting to the ship?

Fixed. Turns out that because you have a DirectSail quest update attribute added to the player character, the code didn't wait until you got onto the WorldMap.
PROGRAM\Locations\locations_loader.c:
Code:
  Event(EVENT_LOCATION_UNLOAD,"");
   DeleteAttribute(loc,"openboxes");           // NK 05-04-14
   DeleteAttribute(loc,"trapboxes");           // NK 05-04-14
   DeleteAttribute(loc,"jammed");             // PB: Lockpicks
   DeleteAttribute(mainCharacter, "Flags.waitdelay");   // PB: Just to make sure this is gone
   DeleteAttribute(mainCharacter, "directsail1.QuestCheckMapEnter"); // PB: This too <------------ ADD THIS LINE -------------
This ensures that the offending attribute is removed on every location reload ashore, while still remaining functional at sea.
It could be that this same problem is behind some weird effects reported in the Standard and Jack Sparrow storylines as well.
So perhaps those are now immediately back to normal as well. Maybe. Perhaps....
It certainly fixed the Duchess' problem because I tried it last night - thanks! :onya

Regardless of whether @Jack Rackham writes a transition from storyline to free-play, I'm probably going to have a go at writing one myself, just as a basic lesson in how quests work.
 
What advantage does this have compared to the current method of locking the boat? That now works properly with the added line to unlock it again, and in fact I put another lock/unlock pair around the second Guadeloupe mission. Does 'bQuestDisableSeaEnter' also prevent teleporting to the ship?
If I recall, it prevents you from reloading to sea. So you may be able to get on your ship's deck, but you can't get into 3D Sailing Mode.

Regardless of whether @Jack Rackham writes a transition from storyline to free-play, I'm probably going to have a go at writing one myself, just as a basic lesson in how quests work.
Always a good idea. :onya
 
Regardless of whether @@Jack Rackham writes a transition from storyline to free-play, I'm probably going to have a go at writing one myself, just as a basic lesson in how quests work.
I'm a very busy modder, so: Do you want help or not?
 
I might need help as I've never written a quest, but it will be more along the lines of "What does this do?" rather than "Can you write this for me?" Starting with, what do these do?
ChangeCharacterAddress
ChangeCharacterAddressGroup
LAi_SetActorType
LAi_SetOfficerType
LAi_ActorDialog
LAi_ActorGoToLocator
LAi_QuestDelay

These seem to be the key operations in making someone appear, and I'd rather know how they work than simply copy and paste them from other case sections.

Not directly related to what I'm trying to do to the end game, but I'm guessing that:
Code:
ChangeCharacterAddress(characterFromID("Dreadnought Foster"), "None", "");
in the right place will finally get rid of Dreadnought Foster. As things are now, he's permanently stuck on the pier in Kingston.
 
Last edited:
I might need help as I've never written a quest, but it will be more along the lines of "What does this do?" rather than "Can you write this for me?"
fa88b41b24b0d86298a2b7b4aa404fe8.jpg

^ Much more better!

If Jack Rackham can give you the answers to your questions, that would free me up a bit to do other things.
And if you do most of the work yourself, you learn more and hopefully it wouldn't be too hard on Jack either.

Not directly related to what I'm trying to do to the end game, but I'm guessing that:
Code:
ChangeCharacterAddress(characterFromID("Dreadnought Foster"), "None", "");
in the right place will finally get rid of Dreadnought Foster. As things are now, he's permanently stuck on the pier in Kingston.
It should do, though I'm used to seeing ChangeCharacterAddressGroup in that context.
Serves the same purpose though. :yes
 
Here's what I've done so far at the end of Hornblower. Use the savegame you sent me and check it out.

You can always use
ChangeCharacterAddressGroup(characterFromID("Archie Kennedy"), "Mrs. Mason's House", "reload", "reload1");
ChangeCharacterAddressGroup(characterFromID("Archie Kennedy"), "none", "", "");

to make a charcter do a lot of things (like walk to a certain poit) you have to set him to actortype first:
LAi_SetActorType(pchar);
LAi_ActorGoToLocator((Pchar), "goto", "goto1", "Mother_tells2", 4.0);

LAi_SetOfficerType(characterFromID("Lt. Eccleston"));
makes him follow you everywhere, He doesn't have to be an officer.


a typical dialog block:
characters[GetCharacterIndex("Archie Kennedy")].dialog.CurrentNode = "naval_HQ_Bridgetown";
LAi_SetActorType(characterFromID("Archie Kennedy"));
characters[GetCharacterIndex("Archie Kennedy")].Dialog.Filename = "Archie Kennedy_dialog.c";
LAi_ActorDialogNow(characterFromID("Archie Kennedy"),PChar,"",1.0);
LAi_ActorDialog(characterFromID("Archie Kennedy"),PChar,"",5.0,5.0);
 

Attachments

  • JRH Hornblower files.7z
    64.1 KB · Views: 87
Back
Top