• 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 Bug during Assassin's main quest storyline

HellSailor

Privateer
Storm Modder
Build Version: 14 Beta 4.0 (2nd December 2021 version).

I have found a bug during the Assassin's storyline. During the quest "The apprenticeship", after you succeed in rescuing Pelagius Lizarraga, you go to the Vice-Admiral in Havana to claim your reward, and continue the next part of the quest, which is in Hôpital fort, to kill an spanish traitor named Gabriel Brugera. After exiting the residence, Chico Cois talks to you and gives you stinkpots to deal with the guards.

The problem happens here. Chico should follow you after you exit the city and respawn next to you in the port. Unfortunately, when you check around, you see he's missing. This bug makes you unable to further continue the next quests, like "the Alliance", because you need him in order to trigger the next parts of the quest.

I checked the error log, and it shows that something is missing. Maybe the bug is there?

I also attached the save next to the event so you can try it.
 

Attachments

  • compile.log
    120.6 KB · Views: 62
  • error.log
    7.2 KB · Views: 68
  • system.log
    20.6 KB · Views: 67
  • -=Player=- QuickSave 232.zip
    1.1 MB · Views: 56
Something odd seems to have happened in your game. Chico Cois is supposed to be assigned as an officer at the start of the mission to rescue Pelagius Lizarraga. He's not an officer in your game; he's not even in your passenger list. You've been doing a lot of sidequests, but I don't think any of those would stop Chico Cois from being assigned as an officer. So the only way I can think of that would have prevented Chico Cois from becoming an officer in the first place would be if you had a full set of officers in your shore party at the time - the code puts Chico Cois into any free officer slot and fails if there isn't a free slot. (It can also fail if you have too many officers, passengers and prisoners total, which you don't, unless you've got rid of a lot of them since that mission.)

Put the attached "console.c" file into your "PROGRAM" folder. Load up that savegame and press F12. That should assign Chico Cois as an officer. After that, you're free to unassign and reassign him as you like, but just make sure he's in your party when you're about to do something related to the story. (Watch out if you recruit more officers from taverns. They are assigned straight to your party and can replace existing officers. If Chico Cois gets kicked out of your party by a new recruit, make sure to put him back.)

@Bartolomeu o Portugues: Chico Cois is assigned as your officer at case "spyoxbay" by this line:
Code:
SetOfficersIndex(PChar, -1, GetCharacterIndex("Chico Cois"));
Perhaps replace it with this:
Code:
SetOfficersIndex(PChar, 1, GetCharacterIndex("Chico Cois"));
That would force Chico Cois into your first officer slot, displacing any officer who is already there.
 

Attachments

  • console.c
    35.3 KB · Views: 61
Something odd seems to have happened in your game. Chico Cois is supposed to be assigned as an officer at the start of the mission to rescue Pelagius Lizarraga. He's not an officer in your game; he's not even in your passenger list. You've been doing a lot of sidequests, but I don't think any of those would stop Chico Cois from being assigned as an officer. So the only way I can think of that would have prevented Chico Cois from becoming an officer in the first place would be if you had a full set of officers in your shore party at the time - the code puts Chico Cois into any free officer slot and fails if there isn't a free slot. (It can also fail if you have too many officers, passengers and prisoners total, which you don't, unless you've got rid of a lot of them since that mission.)

Put the attached "console.c" file into your "PROGRAM" folder. Load up that savegame and press F12. That should assign Chico Cois as an officer. After that, you're free to unassign and reassign him as you like, but just make sure he's in your party when you're about to do something related to the story. (Watch out if you recruit more officers from taverns. They are assigned straight to your party and can replace existing officers. If Chico Cois gets kicked out of your party by a new recruit, make sure to put him back.)
Thanks, @Grey Roger! That fix solved the issue. From now on I will remember to be more careful about these things. Nevertheless, I also remember that this specific bug can also happen for other quests non-related to this storyline. Should we warn players about this potential bug as well to be more careful?

That would force Chico Cois into your first officer slot, displacing any officer who is already there.

I think that would be the best solution for any potential bugs involving essential NPCs for the quests.
 
Thanks, @Grey Roger! That fix solved the issue. From now on I will remember to be more careful about these things. Nevertheless, I also remember that this specific bug can also happen for other quests non-related to this storyline. Should we warn players about this potential bug as well to be more careful?
Can you think of another quest with a similar problem?

I do remember that Danielle Greene had a similar but different problem in "Tales of a Sea Hawk". She joins you as an officer, takes a specific slot and displaces any officer already there, and is made unremovable so that you can't unassign her. The snag there is that you can't reassign her either if she is displaced by a random recruit from a tavern. So scenes which require her to be present now check that she's still an officer, and if not, forcibly assign her and place her in the scene location. This approach is fine for storylines and not so fine for sidequests, as there's the potential for them to clash if they replace each other's officers.

Back to "Assassin", where Chico Cois is not made unremovable. That means you're free to unassign him and re-assign him as you see fit, and also means that if a random recruit in a tavern displaces him, you can put him back. You just need to remember to make sure he's an active officer when you're about to do something story-related. (He's also immortal for most of the story, making him very useful when you get into a fight!)
 
Can you think of another quest with a similar problem?
Right now I can't think of anything related to it, but I will play the game and keep an eye if something like this happens in another (side)quests. The only thing I can recall is that if a NPC quest character offers himself as an officer, but you are completely full of officers, even though you hire him, the game will not put him in your passenger list, thus losing him IF you reassign him for another officer of your list. But that is something to be expected when your passenger list is full. It's important to check the number of officers on your list!

I do remember that Danielle Greene had a similar but different problem in "Tales of a Sea Hawk". She joins you as an officer, takes a specific slot and displaces any officer already there, and is made unremovable so that you can't unassign her. The snag there is that you can't reassign her either if she is displaced by a random recruit from a tavern. So scenes which require her to be present now check that she's still an officer, and if not, forcibly assign her and place her in the scene location. This approach is fine for storylines and not so fine for sidequests, as there's the potential for them to clash if they replace each other's officers.
I will keep an eye on this on my gameplays if something like this happens.
 
Right now I can't think of anything related to it, but I will play the game and keep an eye if something like this happens in another (side)quests. The only thing I can recall is that if a NPC quest character offers himself as an officer, but you are completely full of officers, even though you hire him, the game will not put him in your passenger list, thus losing him IF you reassign him for another officer of your list. But that is something to be expected when your passenger list is full. It's important to check the number of officers on your list!
That depends on what you mean by "completely full of officers". You can only have three officers in your party. If a new officer does the same as Chico Cois and tries to be assigned to any free slot, it will fail if there is no free slot. At least some quests also explicitly assign the officer as a passenger, not normally necessary because assigning an officer already does that, but it makes sure the character is at least in your passenger list and ready to be assigned to your party when you want.

And you can only have 32 officers, prisoners and passengers total. Any attempt to assign a further officer or passenger will fail. You're not at that point yet in your savegame, but you're liable to reach it if you keep recruiting...
 
The limit on 32 passengers/prisoners/officers isn't a bug, it's a limitation.

As for your original problem of Chico Cois not being an officer, do you remember if you had three officers assigned to your party around the time you returned from Cayman and were given the mission to find Pelagius Lizarraga?

As the "Assassin" storyline is the work of @Bartolomeu o Portugues who is still active on the forum, I'm hoping he'll comment, or approve the possible fix in post #2.
 
As for your original problem of Chico Cois not being an officer, do you remember if you had three officers assigned to your party around the time you returned from Cayman and were given the mission to find Pelagius Lizarraga?
Yes, I remember it clearly. I usually like to go very well escorted, because sometimes I find conflict with other NPC's, and they can obliterate me with their unload of pistols. Now I restarted the campaign again, due to having several crashes on my game (non-related to the campaign), I left a couple of blank spaces for my companions, and this time, Chico Cois appeared as my officer, and in the passenger list. So everything is perfect.
 
Something odd seems to have happened in your game. Chico Cois is supposed to be assigned as an officer at the start of the mission to rescue Pelagius Lizarraga. He's not an officer in your game; he's not even in your passenger list. You've been doing a lot of sidequests, but I don't think any of those would stop Chico Cois from being assigned as an officer. So the only way I can think of that would have prevented Chico Cois from becoming an officer in the first place would be if you had a full set of officers in your shore party at the time - the code puts Chico Cois into any free officer slot and fails if there isn't a free slot. (It can also fail if you have too many officers, passengers and prisoners total, which you don't, unless you've got rid of a lot of them since that mission.)

Put the attached "console.c" file into your "PROGRAM" folder. Load up that savegame and press F12. That should assign Chico Cois as an officer. After that, you're free to unassign and reassign him as you like, but just make sure he's in your party when you're about to do something related to the story. (Watch out if you recruit more officers from taverns. They are assigned straight to your party and can replace existing officers. If Chico Cois gets kicked out of your party by a new recruit, make sure to put him back.)

@Bartolomeu o Portugues: Chico Cois is assigned as your officer at case "spyoxbay" by this line:
Code:
SetOfficersIndex(PChar, -1, GetCharacterIndex("Chico Cois"));
Perhaps replace it with this:
Code:
SetOfficersIndex(PChar, 1, GetCharacterIndex("Chico Cois"));
That would force Chico Cois into your first officer slot, displacing any officer who is already there.
I agree of course
 
Thanks, @Bartolomeu o Portugues! :cheers In fact, I'm going to try a trick which I used for assigning a ship companion in "Ardent". 'SetOfficerIndex" is an integer function and returns various results depending on what happened. In particular, if 'SetOfficersIndex(PChar, -1, GetCharacterIndex("Chico Cois"))' fails because there is no free slot, it returns the index for Chico Cois. So:
Code:
if(SetOfficersIndex(PChar, -1, GetCharacterIndex("Chico Cois")) == GetCharacterIndex("Chico Cois")) SetOfficersIndex(PChar, 1, GetCharacterIndex("Chico Cois"));
... should try to assign Chico to any free slot, and if that fails then force him into slot 1. So if you have one or two officers in any positions but still have any slot free, Chico will take it.

Edit: it works. I'm in the habit of saving game just before leaving port, and not overwriting the save unless I'm back in the same port or at least on the same island. Last time I played, I'd done the first mission to Cayman, never visited Cayman again for the rest of the story, and therefore still had the save in Cayman after I'd killed the fort commander and was about to return to Havana. So I loaded that, recruited three officers, returned to Havana, and Chico duly kicked officer number 1 out of his slot. Then I did it again but this time only recruited one officer, whom I put into slot 1. Chico cooperated and went into slot 2.
 
Last edited:
Back
Top