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

Solved Fixing the Pirate Hunting Quests

Hylie Pistof

Curmudgeon
QA Tester
Storm Modder
Pirate Legend
When you skipped paying the crew the first time and nothing happened, do you mean that the morale decreased, but no mutiny occurred? Or did REALLY nothing happen?
Did you get any Leadership skill increase the time you did pay?

Any chance you could play a storyline where you have different nation relations than the Standard one?
I had been thinking that the problem might occur from relation mismatches between the Standard storyline and others.
So while it WOULD match up in Standard, it might not in the others. Or something.


I was on the world map both times and saw no morale drop either time until after the mutiny. Then it showed really low but came up quickly.

Those missions go away in all story lines as I remember. I frankly quit bothering with them because by the time I had a decent ship the Governors were no longer offering them.
 
I was on the world map both times and saw no morale drop either time until after the mutiny. Then it showed really low but came up quickly.
I just did a quick test and the morale does decrease:
1. Start a New Game - Morale is "Normal"
2. Salary screen shows up very quickly; do not pay
3. Morale is now Poor

Those missions go away in all story lines as I remember. I frankly quit bothering with them because by the time I had a decent ship the Governors were no longer offering them.
But with my new code, the have one less reason not to show up. There is still ZERO reason for them to disappear when they worked before as far as I understand it.
Unless somehow the nation relations are getting screwed up. Could you upload a savegame of yours where a specific governor no longer offers them?
Then I'll do some tests in your scenario and see if I can convince him to do what we want him to again. :whipa
 
Good evening,

At the moment, my main intent is to try to fix issues that we've got and balance the game further.

That's perfectly understandable. I was just throwing in ideas.

Back to the subject, I can not remember hunting quests disappearing. I am not 100% sure, but I think even governors of enemy nations offered me those missions.
 
Back to the subject, I can not remember hunting quests disappearing. I am not 100% sure, but I think even governors of enemy nations offered me those missions.
According to the code, they shouldn't. But as far as I can tell, the code didn't work as intended before my fix as per above.
However, WITH the fix, this is how it should work:
- NO enemy governors should offer Pirate Hunting quests
- ALL other governors SHOULD offer Pirate Hunting quests
- No governor will offer one if there is one already active

If you see any evidence that the above is NOT the case with my new files, please let me know and post a savegame indicating the problem.
I'm hoping that'll allow me to do some testing on what you're experiencing.
 
I did not pay the crew again and saw their morale drop from 75? to 52? and then come up to 56 or so. Their next pay period should come up as soon as I leave this port I just arrived at.

I visited the Governor at Curacao but he had no mission for me. Perhaps declining one ends all of them. Here is a save as I'm leaving Curacao. Do you want the save of me entering Curacao?

I captured a Pirate ship rigged heavy brig after it surrendered by killing her Captain! :monkeydance That never happens so early in the game. I usually die 5-8 times before I start killing them. :ko Anyway, this ship has no description. Looking through the spyglass the only information is tier 5 and looking in the ships menu shows a picture but no name. It is PiratBrig50.
 

Attachments

  • -=Player=- Curaçao.7z
    491.8 KB · Views: 91
I visited the Governor at Curacao but he had no mission for me. Perhaps declining one ends all of them. Here is a save as I'm leaving Curacao. Do you want the save of me entering Curacao?
This is fine. Did a quick check and found that according to the code, you already have an active Pirate Hunting quest.
In your case, the problem comes because you DO have an "quest.generate_kill_quest" attribute. It is not the "nation relation" problem that I ran into during my own test.

Looks like this is how it works:
- The Pirate Hunting quests is generated BEFORE you agree or decline the quest
- When you refuse the quest, the following timer is engaged:
Code:
            pchar.quest.kill_pirate_refused_timer.win_condition.l1.date.day = GetAddingDataDay(0, 0, 3);
            pchar.quest.kill_pirate_refused_timer.win_condition.l1.date.month = GetAddingDataMonth(0, 0, 3);
            pchar.quest.kill_pirate_refused_timer.win_condition.l1.date.year = GetAddingDataYear(0, 0, 3);
- Once this timer expires, the relevant "quest.generate_kill_quest" attribute is deleted again
If I understand correctly, the intention is to make that time expire after 3 days. However, I suspect that for some reason that timer is not expiring quite as quickly as it should do.
I captured a Pirate ship rigged heavy brig after it surrendered by killing her Captain! :monkeydance That never happens so early in the game. I usually die 5-8 times before I start killing them. :ko Anyway, this ship has no description. Looking through the spyglass the only information is tier 5 and looking in the ships menu shows a picture but no name. It is PiratBrig50.
Cannot confirm, I'm afraid. She's displaying properly as "Sloop-of-War" for me. :facepalm

On that subject though, the following ships don't have any model descriptions:
- All versions of the Postillionen
- Empress
- La_Marianna (also no interface screenshot)
- US_PrinceNeufchatel
- All versions of the Volage
- PO_Trinity, RN_Trinity and NL_Trinity (also no interface screenshot)
- All versions of Essex have no interface screenshot
- All early Neptunus versions
- XemecVML (also no interface screenshot)
- HMS_Centurion (also no interface screenshot)

Also, I think some model descriptions need editing now that we changed some paint schemes.
 
If I understand correctly, the intention is to make that time expire after 3 days. However, I suspect that for some reason that timer is not expiring quite as quickly as it should do.
Problem found and fixed! In PROGRAM\QUESTS\quests_common.c find:
Code:
        case "kill_pirate_refused":
            pchar.quest.kill_pirate_refused_timer.win_condition.l1 = "Timer";
            pchar.quest.kill_pirate_refused_timer.win_condition.l1.date.day = GetAddingDataDay(0, 0, 3);
            pchar.quest.kill_pirate_refused_timer.win_condition.l1.date.month = GetAddingDataMonth(0, 0, 3);
            pchar.quest.kill_pirate_refused_timer.win_condition.l1.date.year = GetAddingDataYear(0, 0, 3);
            pchar.quest.generate_cokill_pirate_refused_timernvoy_quest.win_condition = "kill_pirate_refused_timer";
        break;
 
        case "kill_pirate_refused_2":
            //Log_SetStringToLog("kill_pirate_refused_2");
            pchar.quest.kill_pirate_refused_timer.win_condition.l1 = "Timer";
            pchar.quest.kill_pirate_refused_timer.win_condition.l1.date.day = GetAddingDataDay(0, 0, 3);
            pchar.quest.kill_pirate_refused_timer.win_condition.l1.date.month = GetAddingDataMonth(0, 0, 3);
            pchar.quest.kill_pirate_refused_timer.win_condition.l1.date.year = GetAddingDataYear(0, 0, 3);
            pchar.quest.generate_cokill_pirate_refused_timernvoy_quest.win_condition = "kill_pirate_refused_timer";
            DeleteQuestHeader("hunting");
            DeleteQuestAttribute("hunting");
        break;
Replace with:
Code:
        case "kill_pirate_refused":
            pchar.quest.kill_pirate_refused_timer.win_condition.l1 = "Timer";
            pchar.quest.kill_pirate_refused_timer.win_condition.l1.date.day = GetAddingDataDay(0, 0, 3);
            pchar.quest.kill_pirate_refused_timer.win_condition.l1.date.month = GetAddingDataMonth(0, 0, 3);
            pchar.quest.kill_pirate_refused_timer.win_condition.l1.date.year = GetAddingDataYear(0, 0, 3);
            pchar.quest.kill_pirate_refused_timer.win_condition = "kill_pirate_refused_timer";
        break;
 
        case "kill_pirate_refused_2":
            //Log_SetStringToLog("kill_pirate_refused_2");
            pchar.quest.kill_pirate_refused_timer.win_condition.l1 = "Timer";
            pchar.quest.kill_pirate_refused_timer.win_condition.l1.date.day = GetAddingDataDay(0, 0, 3);
            pchar.quest.kill_pirate_refused_timer.win_condition.l1.date.month = GetAddingDataMonth(0, 0, 3);
            pchar.quest.kill_pirate_refused_timer.win_condition.l1.date.year = GetAddingDataYear(0, 0, 3);
            pchar.quest.kill_pirate_refused_timer.win_condition = "kill_pirate_refused_timer";
            DeleteQuestHeader("hunting");
            DeleteQuestAttribute("hunting");
        break;
There was a bit of a typo in those last lines. This should work.
However, that does not fix your savegame. To do that, execute this line through console:
Code:
DeleteAttribute(pchar, "quest.generate_kill_quest");
That will put a proper end to the Pirate Hunting quests becoming permanently unavailable.
Now, whenever you decline such a quest, you should be able to get another one 3 days later. I tested this in your savegame and it works now. :yes
 
Cheers,

after reading this, I just looked into the pirate hunting quests in my game here. When I decline one, I can ask for another immediately after declining the first. That is without the changes Pieter posted above.

And I found another problem:
I get no new pistol shots and powder when going aboard my ship. I can not remember that from my other careers. Is this a specific matter with the 1550 epoch, or maybe the reloading is tied to something else?
 
Ok, just waking up. Will change that code when my eyes start focusing.

That's a Sloop-of-war now?

Skyworm: That is normal for all periods when you do not have a gunner. Make one of your officers a gunner.
 
after reading this, I just looked into the pirate hunting quests in my game here. When I decline one, I can ask for another immediately after declining the first. That is without the changes Pieter posted above.
That... doesn't make sense? I just tested myself and I definitely had to wait three days now.
My fix above only ensures that it takes three days instead of an infinity of not being able to take new ones.

And I found another problem:
I get no new pistol shots and powder when going aboard my ship. I can not remember that from my other careers. Is this a specific matter with the 1550 epoch, or maybe the reloading is tied to something else?
You get it automatically only if you have a gunner. Otherwise you have to get it from your ammo locker yourself.
Edit: Hylie beat me to it! :whipa

Ok, just waking up. Will change that code when my eyes start focusing.
:rofl

That's a Sloop-of-war now?
That's what my game is telling me when I just checked. :shrug
 
Cheers,

aye, that`s true with the gunner. Usually I immediately recruit one, but this time, wehen I decided to play a merchant, I decided I wouldn't need a gunner - at least not at my first voyage. With a gunner, it works fine.

Now about pirate hunt missions:
Just tried it again. I tal to governor about business, he offers me to sink a pirate ship, I answer that I am afraid I can't help him. Then again talked to him, he offerd me to sink another ship. Declined again. Did this a lot of times. And I did not use Pieters changes.

I stumbled about another matter concerning that:
I used the Jack Aubrey story to do that, and startet pirate hunting right at Eleuthere, for the americans.
The pirate ship the Governors Harbour-governor points to spawns right under the forts cannons, and is sunk immediately by the fort.
Perhaps it should be located elsewhere ...
This is the same with the pirate hunting quest givven by the governor of Alice Town. Same spawn location.

Edit:
I just did Pieters changes regarding the pirate hnting quest.

Now it is 3 days if I decline a quest, before getting a new one.
Also, if I successully do a pirate hunting quest, it is also 3 days, until I can get the next one.
 
Now about pirate hunt missions:
Just tried it again. I tal to governor about business, he offers me to sink a pirate ship, I answer that I am afraid I can't help him. Then again talked to him, he offerd me to sink another ship. Declined again. Did this a lot of times. And I did not use Pieters changes.
Are you also not using the file from Post #2 in this thread?
Because you are an English character in that storyline and the USA are at war with England.
As such, Cole Arkwright is an enemy governor and they should never give you any Pirate Hunting missions.
I just checked myself and he doesn't give me one at the start of the game.

As for the location where the pirate is generated, this is defined in PROGRAM\QUESTS\quests_common.c with this line:
Code:
Group_SetAddress("Story_Pirate", Pchar.location, "Quest_ships", "Quest_ship_12");
Try replacing with:
Code:
Group_SetAddress("Story_Pirate", Pchar.location, "Quest_ships", "Quest_ship_"+rand(11)+1);
I'm not at all sure if this will work though. Would be an interesting experiment. :doff
 
Just tried it again. I tal to governor about business, he offers me to sink a pirate ship, I answer that I am afraid I can't help him. Then again talked to him, he offerd me to sink another ship. Declined again. Did this a lot of times. And I did not use Pieters changes.
Made a test: Paid the governor some good money to set my relations with the USA to Neutral.
Now he DOES offer me a Pirate Hunting quest. But when I decline, he doesn't offer it again straight away.
 
Same here Pieter.

And I did exactly the same as you, used the cheats to give me some money, and reset my relations to USA to neutral. Then started to quest for him. Easy going with the fort doing all the work for me :pirate41:
 
About that console............where does this line go?

DeleteAttribute(pchar, "quest.generate_kill_quest");
 
About that console............where does this line go?
Below this:
Code:
void ExecuteConsole()
{
    ref pchar = GetMainCharacter();
    if (!bSeaActive) ref lcn = &Locations[FindLocation(pchar.location)];
    ref ch;
    int i;
    int limit;
And F12 to execute.
 
Hello again!

Are you also not using the file from Post #2 in this thread?

You mean that b14-b2-wip1.zip? I was using that. And true, I did not get any quests of the governor until I reset my relations to USA.

As for the location where the pirate is generated, this is defined in PROGRAM\QUESTS\quests_common.c with this
...
Would be an interesting experiment. :doff

Unfortunately it did not work. The ships location looked almost the same to me, as did its fate. Gunned to pieces by the fort with one shot.
 
You mean that b14-b2-wip1.zip? I was using that. And true, I did not get any quests of the governor until I reset my relations to USA.
And then when he offered the job, you declined it and he offered you another one straight away? That's not right.
I do know that he would give you another job straight after completing the previous one.

Unfortunately it did not work. The ships location looked almost the same to me, as did its fate. Gunned to pieces by the fort with one shot.
Try this instead:
Code:
Group_SetAddress("Story_Pirate", Pchar.location, "Quest_ships", "Quest_ship_"+rand(9)+1);
Turns out the Eleuthera island model doesn't HAVE up to 12 quest ship locators. I suspect that was part of the problem.
This should use all locators between 1 and 10 randomly, which all exist on Eleuthera.
 
Hello!

And then when he offered the job, you declined it and he offered you another one straight away? That's not right.
I do know that he would give you another job straight after completing the previous one.
But that was what happened. Now with your changes, it's 3 days. If I take the quest and sink the ship, it's 3 days before I get another. If I decline, it's 3 days before I get another. I'm fine with that. Not much realistic sinking 20 pirate a day :dance

Try this instead: ....
Turns out the Eleuthera island model doesn't HAVE up to 12 quest ship locators. I suspect that was part of the problem.
This should use all locators between 1 and 10 randomly, which all exist on Eleuthera.
Will try and report back.

Report:
No effect. The poor pirate schooner Nebraska appeared right in front of the fort, and was sunk immediately.
:pirate41:
 
Back
Top