• 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 Hours are days in 3D sailing

Grey Roger

Sea Dog
Staff member
Administrator
Storm Modder
In 3D sailing, whenever the hour changes, so does the day. The time goes straight from Wednesday 10th 10:59 to Thursday 11th 11:00.

I have both an older version of Beta 3.5 and an installation of Beta 3.4, as well as the up to date version of Beta 3.5 in which I've been doing my work on "Hornblower". Both versions of Beta 3.5 do this, and it's not limited to "Hornblower" because as a test I started the older Beta 3.5 with a new game of "Nelson's First Command" and saw the same problem. I've no idea how up to date that version of Beta 3.5 is, though the fact that I started "Nelson's First Command" and not a generic free-play may be a clue. Beta 3.4 did not show the problem, so it's something which has been done to Beta 3.5.
 
This is not a bug and has been like that for a long, long time. The problem is that the worldmap and 3D sailing mode don't use the same scale at all.
So where a voyage in DirectSail between two islands might take several hours, the same voyage on the worldmap would take several days.
To get those two durations more in line with each other, it was decided to add one day for each hour spent at sea.
Of course this doesn't make any logical sense, but was the simplest solution.

However, this is rectified with the Open Sea Mod that scales up the 3D sailing mode so that it does match relatively well with the worldmap.
This is enabled automatically with Iron Man Mode on, but if you use Arcade/Realistic Game Mode, you have to enable it manually at the top of PROGRAM\InternalSettings.h .
Since that corrects the scale difference between 3D sailing mode and the worldmap, it also removes the "one day for each hour" work-around.

I suspect you may have changed that before, but installing the latest update overwrote your copy of InternalSettings.h and undid whatever changes you made there.
This is assuming you play Realistic Game Mode, which I think you do....
 
I do play "Realistic" game mode, and have never tried to change this because I never noticed it before. Having a day pass every hour is far too harsh and has now made DirectSail useless for me. I didn't always use DirectSail anyway because I have limited time in which to play PoTC and don't fancy spending most of it watching empty ocean, plus the risk of the occasional warp when you leave the area of the current island. But now I'm abandoning it entirely.

As I said, this didn't happen when I tried my installation of Beta 3.4, so the change must have been made in Beta 3.5.

I tried Open Sea once. As well as opening up the range at which battles start, it also means when I approach an island, I'm way out from the island and have to spend ages getting to the port, especially if I haven't found a map of the island for sale yet and can't Sail-To the port. See previous comment about limited time in which to play.
 
I can guarantee you that it didn't change between Beta 3.4 and Beta 3.5 . If you play Realistic Game Mode with Open Sea Mod OFF, then the day-adding-on-the-hour happens always.
It has been like that since Build 13, as far as I remember and is something @Hook did back in the days.

I can certainly relate to having little time available. When the Open Sea Mod was made, we found the relevant line of code responsible for this.
Refer to this post: http://www.piratesahoy.net/threads/open-sea-mod-and-realism-settings.18384/#post-415822
Editing/getting rid of that in your game version should take care of it.
But be aware that any DirectSail voyage you do will then be SUBSTANTIALLY shorter than a worldmap one.

Can we think of a better way of handling this? What I would like myself is to have that day-adding occur ONLY if you are at a certain distance from the islands.
So if you use worldmap all the time and remain close to the islands at all times, then it wouldn't affect you at all.

Alternatively, create a setting that completely disables DirectSail and also gets rid of the day-adding line. But I don't particularly like that solution either.
You cna already toggle DirectSail on/off in mid-game using the [0]-key.
Perhaps we can link the day-adding line to that as well so that if you toggled DirectSail off, then the day-adding no longer happens either.
That sounds at least fair. There is also the "DirectSail is off" message that happens a lot in that case, so perhaps that should be reduced then as well.
 
ICan we think of a better way of handling this? What I would like myself is to have that day-adding occur ONLY if you are at a certain distance from the islands.
Perhaps have it only happen if you're in open sea, i.e. no island nearby? And disable it during battle. You shouldn't be chasing an enemy ship and suddenly find that it's tomorrow. xD
Perhaps we can link the day-adding line to that as well so that if you toggled DirectSail off, then the day-adding no longer happens either.
That sounds at least fair. There is also the "DirectSail is off" message that happens a lot in that case, so perhaps that should be reduced then as well.
Yes, that seems fair. If you're not trying to use DirectSail to get from one island to another in silly time, either because you've disabled DirectSail or because it's been disabled for you (e.g. ship-hunting quest), then time should pass normally.
 
Marked this as "Feature Request".

Perhaps have it only happen if you're in open sea, i.e. no island nearby?
You mean when there is no island in the scene at all? That doesn't work, because DirectSail doesn't function in that case in the first place. :(
I'd like distance-dependent but that is not going to be easy.

Yes, that seems fair. If you're not trying to use DirectSail to get from one island to another in silly time, either because you've disabled DirectSail or because it's been disabled for you (e.g. ship-hunting quest), then time should pass normally.
So let's see then.... This shouldn't happen if:
- Open Sea Mod is ON (already in place)
- DirectSail is manually toggled off using the [0]-key
- You are in battle
- You are in a scene that doesn't have an island in it (e.g. went from worldmap into 3D sailing mode without an island) as DirectSail doesn't function there

Also:
- Reduce "screen spamming" from the DirectSail toggled off message

Does that sound like a good place to start for now?
 
Yeah, that one hour = one day thing has been around forever and actually worked fairly well. I hardly ever timed out on a merchant mission. But I will take the Open Sea mod in a heartbeat.
 
You mean when there is no island in the scene at all? That doesn't work, because DirectSail doesn't function in that case in the first place. :(
What happens if you start from, say, Jamaica, and try to DirectSail to Bonaire? Won't DirectSail then go to a scene without an island? There's a lot of open sea between Jamaica and Bonaire...
So let's see then.... This shouldn't happen if:
- Open Sea Mod is ON (already in place)
- DirectSail is manually toggled off using the [0]-key
- You are in battle
- You are in a scene that doesn't have an island in it (e.g. went from worldmap into 3D sailing mode without an island) as DirectSail doesn't function there
Almost. I'd say that if you're in a scene which has no island and you're not in a battle, that's the one situation in which days should pass more quickly. Though if DirectSail can't get you into or out of that situation then you probably won't be there for long anyway - there's nothing to do, nobody to fight, so you may as well go to worldmap and head to somewhere interesting!

I wouldn't mind having a day pass every hour if you actually covered a day's worth of distance. It's the fact that the coast is close by, a day suddenly passes and the coast is still close by, that ruins the game. Of course, you wouldn't want such a 24 hour teleport to happen in the middle of a battle - well, not unless you're losing. xD

But I have used DirectSail to make journeys in short times, usually because a deadline was due and I couldn't fulfil it without cheating that way. That, in fact, is how I found out about it this time - I'd taken a fetch quest which was due in 12 days, figured I could DirectSail from Jamaica to Cayman and back, and found I couldn't. On a previous occasion I was only able to complete part of the "Hard Labours of an Assassin" quest in time by doing a long DirectSail. That would probably have been Beta 3.1; it was certainly some version of Build 14. And it would have been Realistic mode, Adventurer difficulty, as that's how I always play.
 
What happens if you start from, say, Jamaica, and try to DirectSail to Bonaire? Won't DirectSail then go to a scene without an island? There's a lot of open sea between Jamaica and Bonaire...
No, never. The island remains in the scene, even if it is so far away that you can't see it anymore.
Without the island, there is no reference point and the whole DirectSail cannot work.
A long-distance sail used to be handled with an extra "fake" island in the middle of the archipelago in Build 13, but that is no longer used.

Almost. I'd say that if you're in a scene which has no island and you're not in a battle, that's the one situation in which days should pass more quickly. Though if DirectSail can't get you into or out of that situation then you probably won't be there for long anyway - there's nothing to do, nobody to fight, so you may as well go to worldmap and head to somewhere interesting!
You don't get anywhere that way, so I don't think we need to specifically add days there either.

In any case, this has been the same ever since Build 13. Admittedly far from ideal, though. I'll see if I can put some conditions on it so it doesn't always happen.
We're probably never going to get WorldMap and DirectSail travel times perfectly in line.
 
PROGRAM\BATTLE_INTERFACE\LogInterface.c:
Code:
          // LDH added for direct sailing - 02Jan09
           if (ACCURATE_NAVIGATION && theMinute == 0 && theHour != 0)
           {
             // Do daily update but not if we're in battle
             if ( !bDisableMapEnter )   // LDH added 27Jan09
             {
               Trace("== Directsail added a day to sailing time");
               if(iRealismMode<2 && !OPEN_SEA_MOD) // turned off for open sea mod stljeffbb Jan 15 2012
                 WaitDate("", 0, 0, 1, 0, 0); // "", years, months, days, hours, minutes
             }
           }
Will be replaced with:
Code:
          // LDH added for direct sailing - 02Jan09
           if (ACCURATE_NAVIGATION && theMinute == 0 && theHour != 0)
           {
             // Do daily update
             if (OPEN_SEA_MOD)                AddHour = false;   // Turned off for open sea mod stljeffbb Jan 15 2012
             if (!DirectsailCheck(false))          AddHour = false;   // PB: But not if DirectSail isn't active
             if (AddHour)   // LDH added 27Jan09
             {
               Trace("== Directsail added a day to sailing time");
               WaitDate("", 0, 0, 1, 0, 0); // "", years, months, days, hours, minutes
             }
           }
This requires some changes elsewhere, so you need to wait for the next update.
Anyway, because it now uses the actual DirectsailCheck function, the hour-adding will ONLY happen if it is possible for a DirectSail update to be done.
Since DirectSail is the whole reason for it existing, it doesn't need to happen if DirectSail isn't active.

So @Grey Roger and @Hylie Pistof, do you reckon this would be good enough as a fix?
I suppose we'll find out through gameplay once it is actually available....

On a vaguely related subject:
Code:
  // PB: No DirectSail during Pirate Hunting Quests to prevent breaking them -->
   // UPDATE: This appears not to be necessary; the target ship remains even on heavy DirectSailing
   if( GetAttribute(pchar, "quest.generate_kill_quest") == "begin" && !CheckAttribute(pchar, "quest.kill_pirate_refused_timer") && GetAttribute(pchar, "quest.generate_kill_quest.destination") == pchar.location)
   {
     if (ActualUpdate) LogIt("Governor Ship Hunting quest active, DirectSail disabled to prevent target ship from disappearing");
     return false;
   }
   // PB: No DirectSail during Pirate Hunting Quests to prevent breaking them <--
Based on my comment there, we might as well disable that check. Anyone here who has any recent experience with Governor Ship Hunting Quests?
 
I'd prefer to go the other way and prevent DirectSail when any battle is in progress, not just ship-hunting. It is very annoying to be chasing down an enemy ship, you're almost in range to board, and then you get "Land Ho!".
 
I'm happy with the Open Sea mod as the standard system has the islands too close together, but it does make for fast game play. This is fine by me.

The only ship hunting I have done is that frigate off Martinique and it has always worked well.
 
I'd prefer to go the other way and prevent DirectSail when any battle is in progress, not just ship-hunting. It is very annoying to be chasing down an enemy ship, you're almost in range to board, and then you get "Land Ho!".
That is already the case. The only time you might get Land Ho when approaching an enemy ship is after that ship has surrendered and there aren't actually any hostile ships around.
DirectSail is disabled whenever the worldmap is disabled, which happens when you are in battle.
 
I'm happy with the Open Sea mod as the standard system has the islands too close together, but it does make for fast game play. This is fine by me.
Then this doesn't apply to you at all. Because you use Open Sea Mod, the day-adding doesn't happen for you.

The only ship hunting I have done is that frigate off Martinique and it has always worked well.
That is a specific quest ship and therefore different.
 
Code:
. Day Adding on the Hour skipped if DirectSail is not active by Pieter Boelen
Have these changes actually helped on this issue? Can we consider this matter Solved now?
 
This correctly disabled with OPEN_SEA_MOD set to 1 but NOT on Iron Man Mode.
That is unintentional and I'll fix that when I get home tonight.
 
PROGRAM\BATTLE_INTERFaCE\LogInterface.c find:
Code:
            // Do daily update
             if (OPEN_SEA_MOD)                AddHour = false;   // Turned off for open sea mod stljeffbb Jan 15 2012
Below this, add the missing line:
Code:
            if (iRealismMode>1)              AddHour = false;   // PB: Turned off for Iron Man Mode
That should put an end to this again like before.
 
Back
Top