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

Unconfirmed Bug Minor issue with time skip during Artois' quest

Kara Korsan

Sailor
This one had been sitting in the back of my head for a long time. Shame I've forgotten about it until now.

As you know, if you don't push Artois about the treasure, he gets shot later on and takes two weeks to recuperate. Now, I once got to this part of the quest on December, 1961, and after the time skip, it was January, 1961. I basically discovered time travel.

Apparently, it not only sends you fourteen days into the future, it also puts a full month on top of it: getting Artois shot in, say, 6th of January, 1962 means you get him back in 20th of February, 1962. But that's only a temporary problem; when you take to the sea and bring up the world map, the date seems to fix itself. The point it actually becomes annoying is, it has the potential to mess up with your timed quests - most notably, Artois' quest itself. It's guaranteed to cause the quest to fail if it sends you back in time. You're supposed to take care of the donation part in a month, but the moment you hit the sea lane, you're already ten months too late.

I don't know if any other time skips come with similar problems as well; I'm not even sure if there *are* any other time skips in this game. It's a very minor issue, but I wanted to bring it up all the same, just in case you'd like to look into it.
 
The problem is probably this in "quests_side.c":
Code:
       case "exit_doctor_good":
           environment.date.day = GetAddingDataDay(0,0,14);
           environment.date.month = GetAddingDataMonth(0,0,14);
           environment.date.year = GetAddingDataYear(0,0,14);
           AddQuestRecord("artois", 16);
           homelocation = pchar.quest.location;
           homelocator = pchar.quest.locator;
           DoQuestReloadToLocation(homelocation, "reload", homelocator, "final_talk_with_artois");
           Officersreaction("good");
           ChangeCharacterReputation(pchar, 2);
       break;
Looking at some other code for changing date, it seems that changing "environment.date" isn't enough, "worldMap.date" needs to change as well. There are functions to do this and the easiest one to make you wait 14 days is probably 'WaitDate("", 0, 0, 14, 0, 0)'.

Try putting this into "PROGRAM\QUESTS", then replay the "Artois Voysey" quest. For preference, if you have a savegame from shortly before Artois gets shot, use that, then you don't have to replay the whole lot.

Edit: to avoid daily updates which could cause your crew to starve, use 'SetCurrentDate(GetAddingDataDay(0,0,14), GetAddingDataMonth(0,0,14), GetAddingDataYear(0,0,14));' instead of 'WaitDate("", 0, 0, 14, 0, 0)'.
 

Attachments

  • quests_side.c
    739 KB · Views: 163
Last edited:
Except for the message spam, which should be expected since you're actually waiting instead of just tinkering with the calendar, everything works perfectly. Thanks for taking time to fix it, Grey Roger!
 
Try downloading it again - I've changed the function for the date change to 'SetCurrentDate', which changes the date and does nothing else. The message spam is daily updates, which is fine if you were prepared for this and have plenty of food and rum in your ship. Otherwise you might find that two weeks later, you have a healthy Artois and a half-dead crew!
 
Good of you to think about the morale! I don't expect everyone else to be lazy like myself and turn everything related to maintenance off, so people might have been in for a nasty surprise.
 
I didn't think about morale or starvation until you mentioned the flood of messages, so it's a good thing that you did!

The quest code has been like that since the stock game, so this bug must have gone unnoticed for the whole history of PoTC so far! It doesn't cause the donation to fail; I've done this quest several times in the past and, provided I got to Port Royale within a month, I was able to make the donation in time. The timer only starts when you pick up the treasure on Bonaire beach, so you'll already have been to sea and corrected the time. The exception might be if you dock at Kralendijk, Artois is shot, you look after him for two weeks, then go straight to the treasure - but I've done that at least once as well without any problem.
 
Exactly. The quest fails if you're already on Bonaire when Artois gets shot and you claim the treasure before taking anchor and giving the game a chance to turn back the time. Should be far enough into the end of the year, as well, so it puts you back at the beginning of the same year. The way I managed to put those two conditions together and fail the quest, it's almost as if the game is trying to tell me something. Oh, well.

Also the matter of merchant fetch quests. The calendar rolls back, then you go take a quest from a storekeeper on the island and set sail. Suddenly it's December and your logbook is saying perhaps you should fetch the cargo all the same, even though you've failed to do it on time already.
 
Back
Top