• 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 - Capture Spanish Fort Bug

lucho1392

Sailor Apprentice
In this part:
Fight with Spanish. (Kennedy and Bush are wounded).

One prisoner tries to kill Sharpe (auto)

Lt. Quelp saves Sharpe.

Nothing happens, you can see Quelp and Spanish soldier Bugged (one above the other).

UPDATE: Well looks like if you load the save game that is on deck the quest continues, but try to load the previous one and see how it goes.
 

Attachments

  • logfiles.rar
    4.8 KB · Views: 106
  • Hornblower.rar
    1.2 MB · Views: 103
I don't recall this being a problem when I played through "Hornblower". Even more odd is the report that if you reload the savegame from on deck then it works but if you reload the earlier savegame then it doesn't.

In any case, I probably won't be able to do anything with the savegames because I'm currently still using a now obsolete version of the game. It's either that or install the newest version, then play through the entire story again in order to get to the part where I can check what I'm doing to the next bit.

@lucho1392: When the problem occurs, does Sharpe say anything? In particular, the line "The Colonel is dead and it looks like the ship is ours.", to which you're supposed to reply "LOOK OUT SHARPE!". If you reload the game from the deck, does this exchange happen?

"compile.log" shows that the quest reaches the case "Sharpe_in_danger". That's supposed to set up the above dialog with Sharpe, and the dialog is then supposed to lead to case "Sharpe_in_danger2", but "compile.log" does not show that.

The reason Quelp and the soldier appear together is that they're set to be on the same spot:
Code:
      ChangeCharacterAddressGroup(characterFromID("Lt. Uriah Quelp"), "Quest_ShipDeck6XX", "goto", "goto15");
      sld = LAi_CreateFantomCharacter(false, 0, true, true, 0.25, Nations[SPAIN].fantomModel.m1, "goto", "goto15");
The Spanish soldier is then supposed to charge at Sharpe just after you talk to Sharpe:
Code:
     case "Sharpe_in_danger2":
        LAi_ActorRunToLocator(characterFromID("soldier1SP"), "goto", "goto18", "Try_kill_Sharpe", 0.0);
     break;
 
So to clarify: CAN the problem be replicated from the savegame posted in the opening post?
If not, we may have to consider this "Cannot Replicate". For all we know, it was a random fluke. Those happen. :(
 
Then there will remain no news until someone does post a savegame. :shrug
 
When the problem occurs, does Sharpe say anything? In particular, the line "The Colonel is dead and it looks like the ship is ours.", to which you're supposed to reply "LOOK OUT SHARPE!". If you reload the game from the deck, does this exchange happen?

"compile.log" shows that the quest reaches the case "Sharpe_in_danger". That's supposed to set up the above dialog with Sharpe, and the dialog is then supposed to lead to case "Sharpe_in_danger2", but "compile.log" does not show that.

The reason Quelp and the soldier appear together is that they're set to be on the same spot:
Code:
      ChangeCharacterAddressGroup(characterFromID("Lt. Uriah Quelp"), "Quest_ShipDeck6XX", "goto", "goto15");
      sld = LAi_CreateFantomCharacter(false, 0, true, true, 0.25, Nations[SPAIN].fantomModel.m1, "goto", "goto15");
The Spanish soldier is then supposed to charge at Sharpe just after you talk to Sharpe:
Code:
     case "Sharpe_in_danger2":
        LAi_ActorRunToLocator(characterFromID("soldier1SP"), "goto", "goto18", "Try_kill_Sharpe", 0.0);
     break;

I did look at the saved game on the deck (back when it was posted) and it continued fine following the steps described by @Grey Roger including the "look out Sharpe" and the rushing soldier getting shot. The "earlier" save seemed to be on a beach and I had no idea from there how to get to the on-board scene - didn't seem to be an icon to board ship but I didn't try too hard to search for it - never played the storyline. The saved games are in the first post.
 
I can't remember for sure whether there was a boat, but if not, pretend there's one in the usual place and walk to it. Here's the relevant code:
Code:
    case "Recapture_the_Renown":
       AddQuestRecord("Mutiny", 8);
       Pchar.quest.Recapture_the_Renown2.win_condition.l1 = "locator";
       Pchar.quest.Recapture_the_Renown2.win_condition.l1.character = Pchar.id;
       Pchar.quest.Recapture_the_Renown2.win_condition.l1.location = "Cuba_Shore_04";
       Pchar.quest.Recapture_the_Renown2.win_condition.l1.locator_group = "reload";
       Pchar.quest.Recapture_the_Renown2.win_condition.l1.locator = "boat";
       Pchar.quest.Recapture_the_Renown2.win_condition = "Recapture_the_Renown2";
     break;
So the trigger for the boarding and recapture is you being where the boat would normally be.

If the boat isn't there, I've no idea how to make it appear...

From that savegame, who else was on the beach with you? Some of your sailors ought to be there, in particular Matthews as he's the one who is either about to tell you that the Spanish have captured the Renown or has already done so before the savegame was created. If you're on a beach which looks like the one on Puerto Rico then you need to move along to one end - if you're facing the sea as if you've just come down one of the paths from the fort, then head off to the right, then you should teleport to the next beach where Matthews will tell you the news.
 
If the boat isn't there, I've no idea how to make it appear...
The player ship must be set to that location prior to the player actually reloading there.
If not, then the reload will work, but the ship and boat appear there until after the next reload.
 
I can't remember for sure whether there was a boat, but if not, pretend there's one in the usual place and walk to it. Here's the relevant code:
Code:
    case "Recapture_the_Renown":
       AddQuestRecord("Mutiny", 8);
       Pchar.quest.Recapture_the_Renown2.win_condition.l1 = "locator";
       Pchar.quest.Recapture_the_Renown2.win_condition.l1.character = Pchar.id;
       Pchar.quest.Recapture_the_Renown2.win_condition.l1.location = "Cuba_Shore_04";
       Pchar.quest.Recapture_the_Renown2.win_condition.l1.locator_group = "reload";
       Pchar.quest.Recapture_the_Renown2.win_condition.l1.locator = "boat";
       Pchar.quest.Recapture_the_Renown2.win_condition = "Recapture_the_Renown2";
     break;
So the trigger for the boarding and recapture is you being where the boat would normally be.

If the boat isn't there, I've no idea how to make it appear...

From that savegame, who else was on the beach with you? Some of your sailors ought to be there, in particular Matthews as he's the one who is either about to tell you that the Spanish have captured the Renown or has already done so before the savegame was created. If you're on a beach which looks like the one on Puerto Rico then you need to move along to one end - if you're facing the sea as if you've just come down one of the paths from the fort, then head off to the right, then you should teleport to the next beach where Matthews will tell you the news.

Ok reloaded the beach, it's the beach below the rope bridge, there are two officers there, Kennedy and Bush but no sign of Matthews (or other sailors) - because they are on the next beach. The end of beach reload did not happen automatically (nor a door icon to indicate that I might need to activate something) but once on the locator I could trigger it - I would have thought it was intended to be automatic at that point. Pre-teleport whilst wandering around the first beach the - the last entry in the compile log reads

Reload: Process started for locator_name = reload4 and lockedReloadLocator = reload4

However once activated by pressing return whilst on locator4 a door icon is seen and reloads to next beach and then via the boat locator the gameplay proceeds to re-take the ship, the warning to Sharpe etc.
So as far as locking on-board it is "Can't replicate" I suppose

However worryingly on both beaches pressing return gives an icon for HMS Renown which if you try to re-load to ship via that you go back to a ship full of English with a dialogue for with passing soldiers of "shall we wait" etc - which looks like the ship in its pre-Spanish capture state. I suspect that is the real issue trying to be reported in this thread. So the reload to ship has not been locked out when it needs to be, because you're stuck if you use it.

Hope that is clear enough and helps?
 
Interesting. Of course the "reload to ship" icon is pretty much always available, unless you really don't have a ship.
That can make for some crazy situations when your ship is on another island for whatever reason and you manage to teleport there.
And having a quest scene "permanently in place" there would be even worse.

So what to be done?
- Quest scene should be REMOVED after the first time so it doesn't loop
- Prevent reload to ship if certain conditions apply? (eg. "reload disabled for quest purposes" or "vcskip enabled" or "ship at another island"???)
- Ensure reloads during quest scene are straightforward so that the manual one through the [Enter] menu won't be needed?
 
I'm part way through a playthrough of "Hornblower" now, as a check to see if anything has been broken by Beta 4. You're about to post a new version which means I'm going to have to start over. If I ever get as far as the attack on the Spanish fort, I'll see what needs to be done there...

How do I disable return to ship?
 
I'm part way through a playthrough of "Hornblower" now, as a check to see if anything has been broken by Beta 4. You're about to post a new version which means I'm going to have to start over.
You were still on the 5 Nov version, right? Trust me; compared to the 15 Nov version, starting a new game will be a GOOD thing. :wp

How do I disable return to ship?
You mean the option through the [Enter] menu? I'm not entirely sure.
I think a "disable fast travel" toggle exists that should affect that too. But I can't check right now.
 
Yes, there is 'DisableFastTravel(true | false)'. I'm going to see what happens if I put one of those at case "Arrival_at_Playa_de_Sabana". (There's already a 'DisableFastTravel(false);' at "Burials_over_now_Redmond" which marks the end of the Renown recapture, but no corresponding 'DisableFastTravel(true);' since case "Back_in_Prison_from_Indy", and that's all the way back at "The Devil and the Duchess".)

Indeed I am currently using the 5th November version, having had no difficulty in resisting installing the 15th November version. ;) So I've got as far as completing "Tunnel of Trouble". It seems that "Dreadnought" Foster is going to have to wait somewhat longer than anticipated for his ride to Kingston if I'm going to install a later version and start over...
 
I've reached (and indeed, passed) this part of the story. I couldn't replicate the original problem (Spanish soldier fails to attack Quelp). For a while I thought I couldn't replicate the second problem either (auto teleport from rope bridge beach to landing beach fails). I'd saved game just before leaving the fort for the last time after charges are set, so I could check something else I'd found in the code (when the fort blows, if you then cross the rope bridge you are supposed to die), then repeatedly tried loading this, going down to the beach, through to the landing beach and recapturing Renown, and there was no problem. However, if I save game on the rope bridge beach, quit game, and load that savegame, then the auto-teleport does fail; I need to walk up to the place where you're supposed to teleport and press Space to get to the landing beach. Rope bridge beach is officially known as "Prison_shore", landing beach is "Cuba_shore_04". The teleport isn't controlled by quest code, it's always supposed to be automatic - here's the relevant part of "PROGRAM\Locations\init\Cuba.c", specifically the section defining "Prison_shore":
Code:
   Locations[n].reload.l1.name = "reload4";
   Locations[n].reload.l1.go = "Cuba_Shore_04";
   Locations[n].reload.l1.emerge = "reload3";
   Locations[n].reload.l1.autoreload = "1";
   Locations[n].reload.l1.label = "Playa de Sabana";
However, since it's been reported as a bug, I've put a bit into Hornblower's "quests_reaction.c" to teleport you to "Cuba_shore_04" and the next quest section if you get close to "reload4". No more pressing Space even if you loaded a savegame from "Prison_shore"!

And the 'DisableFastTravel' had the intended effect, you can't teleport to Renown now.

Updated "quests_reaction.c" available here:
Hornblower updates
 
Last edited:
Back
Top