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

Hook's fixes

Intermediate scaled map, nearing final version.

Eleuthera, Isla Mona and Nevis were taken from the actual island models using the gm viewer, so their size and shape should be accurate. There's... um... some water damage on the lower right of the map, so part of the mainland has been obliterated. :)

This one is sized so that the 45 degree lines on the map are actually 45 degrees, which makes a good display for outside the game.. It would be wider when viewed in the game... unless possibly you're not using a wide screen monitor. Hm, maybe we can fix that.... :D

Hook
 

Attachments

  • map_scale30 rc1.jpg
    map_scale30 rc1.jpg
    256.1 KB · Views: 132
What happened there? :shock

There wasn't enough mainland to fill the rest of the map. :) Basically, the model ends about the point where the "damage" begins anyway.

Ok, the latest version of the Navigator's Report:

Code:
== Navigator's report:
== Navigator's report:  The time is 11:01
== Navigator's report:  We are sailing NWbN at 9.2 knots
== Navigator's report:
== Navigator's report:  The closest islands are:
== Navigator's report:  Puerto Rico     distance: 4141 yards SEbS  67 minutes
== Navigator's report:  Isla Mona       distance: 6577 yards SSW  2 hours
== Navigator's report:  Hispaniola      distance: 9592 yards W  3 hours
== Navigator's report:
== Navigator's report:  The closest landfalls are:
== Navigator's report:  Puerto Rico     San Juan Fort     distance: 3308 yards  SEbS  53 minutes
== Navigator's report:  Hispaniola      Cape Francos      distance: 6326 yards  W  2 hours
== Navigator's report:
== Navigator's report:  Our Destination is:
== Navigator's report:  Turks           Grand Turk        distance: 13605 yards  NWbN  4 hours
== Navigator's report:
== Navigator's report:  Island transition to Hispaniola is 1089 yards W 17 minutes
== Navigator's report:

I've been wanting to add the destination to the report almost from the beginning. Right now it's a placeholder, the destination is hard coded. Eventually destinations will be set by a dialog with the navigator.

Right now it displays the full report. The information can be reduced by a combination of game difficulty, compass and sextant availability, the presence of an actual navigator, realism, whatever. The island transition information is crucial, but you could say "Island Transition is 1089 yards W 17 minutes" if you didn't want the name of the island. It's set up so you can do the same thing with the "Captain, we are approaching Hispaniola" where you could say "land" or just "island transition". The player needs to know he's approaching transition so he can prepare for it.

If you do any sailing with the nav report, you'll find there are times you want to let it display every couple of minutes, turn it off, or to display the last report. This can be done with one key command. I think people will find the nav report very useful.

Next, a report from Iron Man mode. :)

Hook
 
I've been wanting to add the destination to the report almost from the beginning. Right now it's a placeholder, the destination is hard coded. Eventually destinations will be set by a dialog with the navigator.
Very interesting!
Apart from being part of the report, would that have any other gameplay purpose?
 
Apart from being part of the report, would that have any other gameplay purpose?

I'll let you look at these two reports and decide.

This is from Iron Man, at Curacao, destination Turks.

Code:
== Navigator's report:
== Navigator's report:  The time is 13:15
== Navigator's report:  We are sailing NEbN at 10.5 knots
== Navigator's report:
== Navigator's report:  The closest islands are:
== Navigator's report:  Curaçao         distance: 1359 yards NE  58 minutes
== Navigator's report:  Aruba           distance: 10453 yards WNW  7 hours
== Navigator's report:  Bonaire         distance: 11254 yards ESE  8 hours
== Navigator's report:
== Navigator's report:  The closest landfalls are:
== Navigator's report:  Curaçao         Willemstad Port   distance: 68 yards  SSW  3 minutes
== Navigator's report:  Bonaire         Crab Cliffs       distance: 9200 yards  ESE  7 hours
== Navigator's report:
== Navigator's report:  Our Destination is:
== Navigator's report:  Turks           Grand Turk        distance: 87391 yards  NbW  62 hours
== Navigator's report:
== Navigator's report:  Island transition to Bonaire is 4566 yards ESE 3 hours
== Navigator's report:

And this one is from the intermediate scale map, with a bit more speed.

Code:
== Navigator's report:
== Navigator's report:  The time is 13:15
== Navigator's report:  We are sailing NbW at 16.6 knots
== Navigator's report:
== Navigator's report:  The closest islands are:
== Navigator's report:  Curaçao         distance: 509 yards SEbS  5 minutes
== Navigator's report:  Aruba           distance: 5080 yards WbN  45 minutes
== Navigator's report:  Bonaire         distance: 5825 yards ESE  52 minutes
== Navigator's report:
== Navigator's report:  The closest landfalls are:
== Navigator's report:  Curaçao         Willemstad Port   distance: 701 yards  SbW  6 minutes
== Navigator's report:  Aruba           Oranjestad Port   distance: 4545 yards  W  41 minutes
== Navigator's report:
== Navigator's report:  Our Destination is:
== Navigator's report:  Turks           Grand Turk        distance: 42789 yards  NbW  6 hours
== Navigator's report:
== Navigator's report:  Island transition to Bonaire is 1920 yards SEbE 17 minutes
== Navigator's report:

Iron Man at 13.7 knots was a mere 47 hours. :)

Given the time scales, it would take 1.2 real time hours to sail 6 hours on the intermediate map, and in Iron Man, 4 hours to sail 62 hours, 3 hours to sail 47 hours. You can calculate how much time compression is needed in each case. I didn't try it with the normal map, but given the scale change, the distance would change that 6 hours to about 4, or 45 minutes real time.

Personally, I find this information useful, since I don't use time compression.

We can compare game times as well. Normal map, sailing at 10.5 knots, that trip would take almost 7 game days. Iron man would take 2.5 game days. Assuming my math is correct... 42,800 yards intermediate scale is 28,500 yards normal scale, 2026 yards per nautical mile, 10.5 knots, one game day each 12 minutes real time. Iron man, 87,400 yards, 2026 yards per nautical mile, 10.5 knots, one game day each 4 minutes real time.

Round it off: 30,000 yards normal, 45,000 yards intermediate, 90,000 yards Iron Man. At 10.5 knots it's 7 days normal, 10.6 days intermediate, 2.6 days Iron Man. Close enough... distances are 3 times normal for Iron Man, game time runs 3 times faster (4 minutes per game hour Iron Man vs 12 minutes per game hour normal).

Hook
 
Apart from being part of the report, would that have any other gameplay purpose?

I thought of one. If you have to be somewhere and have a strict time limit, it will tell you if you're going to make it at the current wind speed. I haven't seen any strict time limits yet, but I'm playing the easiest difficulty. :D

I finally gave up and added a wind cheat to the console. So sue me. :)

Hook
 
There are no hugely strict time limits that I remember. Only sinds fairly loose ones.
They're not difficulty dependent either.

Didn't you already add a Wind Cheat for the console years ago?
SetNextWind was yours and I think I left that in the console file in case anyone would want to use it.
 
A few quests have time limits. Cargo and convoy quests are limited, as are the missions for the "Hard Labours of an Assassin" side quest. (If you're playing the 23rd September or 7th October versions with the near-permanent easterly winds, good luck completing a cargo quest if it starts at Port Royale and finishes at Charlestown. xD)

I don't see 'SetNextWind' in "console.c", but it certainly exists and is used in "Tales of a Sea Hawk" to make sure you have a fighting chance of getting away from Speightstown with Rabel Yverneau's ship.
 
A few quests have time limits. Cargo and convoy quests are limited, as are the missions for the "Hard Labours of an Assassin" side quest.
True. I don't think any of them are particularly strict though.
Not like is apparently the case in SD:TEHO.

I don't see 'SetNextWind' in "console.c"
Should be an outcommented line right below 'SetNextWeather', if I remember correctly.
 
@Pieter Boelen and @Grey Roger, I used Wind_Cheat() from NK.c. I just wanted something quick and dirty so I wouldn't end up under 6 knots... again. The last time was a nice leisurely sail, but I don't wanna be forced to do it when I'm doing testing. Especially sailing from Turks to Cayman. :)

Oh yeah... SetNextWeather("Clear"); I remember some of that.

Yeah, some of the missions in TEHO are pretty strict, to the point you probably can't complete them if you sail on the world map all the time. I had navigating region boundaries down to a science *and* an art, could cut the time in half. I went through several packages of postit notes keeping ships's logs. "One hour at 6.2 knots, 6.2 NM, 18.6 NM total, 7.3 NM to region boundary." Of course their "nautical miles" were about 300 yards. You had to go to the world map to cross a region boundary.

...it certainly exists and is used in "Tales of a Sea Hawk" to make sure you have a fighting chance of getting away from Speightstown with Rabel Yverneau's ship.

Oh, I do remember that one. I kept going back into the tavern until the grass was blowing around wildly, indicating there was sufficient wind to get away. I don't think it works quite that way today though, although using fast travel will reset the winds to some extent.

And near-permanent easterly winds? Didn't I mention elsewhere that trade winds might not be such a good idea? :) I like the concept, but it's going to take some thought to make it balanced and playable as a game. Actually, that's one of the things I'm thinking about during those long sails at normal time. I'm tellin' ya, randnorm() can be manipulated in various ways to get almost any effect you want, with the result feeling quite natural. I think I implemented that originally to determine the random spread of cannonballs, and I'd already used it in other games.

Hook
 
Oh, I do remember that one.
Of course you remember! I'm pretty darn sure it was you who created that SetNextWind function in the first place. ;)

And near-permanent easterly winds? Didn't I mention elsewhere that trade winds might not be such a good idea? :)
It was an experiment done a few months ago before you returned.
But I'm indeed not convinced it should make its way into the main modpack files just yet.
 
Some good news.

I figured out what you have to do to get the reload locators for your ships to point the ship in the right direction. I've fixed Charlestown, Nevis and Grand Turks.

Copy and paste the following lines to your console:

Code:
// Fix bad reload locators for Nevis and Turks, wrong direction for .ay
//  Should work by fixing islands_init.c, but may not run preprocessor correctly,
//  needs to run IslandsInit() in console for changes to apply
TraceAndLog("*** Fixing ship direction at ports");
for (i=0 ; i<ISLANDS_QUANTITY ; i++)
{
    if ( Islands[i].id == "QuebradasCostillas" )
    {
        Islands[i].reload.l1.ships.l0.ay = 3.0;
        TraceAndLog("** Fixed Nevis");
    }
    if ( Islands[i].id == "Turks" )
    {
        Islands[i].reload.l1.ships.l0.ay = 3.0;
        TraceAndLog("** Fixed Turks");
    }
    if ( Islands[i].id == "Conceicao" )
    {
        Islands[i].reload.l1.ships.l0.ay = -1.5;
        TraceAndLog("** Fixed Grenada");
    }
}

Press the F12 key, make sure it said "Executed Console", then comment those lines out. It should save when you save the game, so you'd only have to do it once for each saved game with the bad reload directions.

You can do this with any bad reload locator direction. The value of 0.0 points south, 3.14 points north... it's in radians. You just have to know what the game calls the island you're trying to fix. If it's not the first city, change "L1" to a "L2" or higher and experiment until you get the right one... I think the "L0" should be correct for any of them. If I can get a complete list of these, I'll write the code to fix them.

It appears that worldmap_init doesn't always match what's in Islands[]. If you change worldmap_init, you'll have to run wdmInit() in the console for any changes to apply. Changes to islands_init.c require InitIslands() to be run, but that may not work right, although it should be OK if you're starting a new game.

Edit: Added Grenada
Attached is a list of the locators, which should help if you need to fix one.

Hook
 

Attachments

  • Reload Locations.txt
    3.3 KB · Views: 124
Last edited:
Is that for the direction in 3D Sailing Mode?
I think @Jack Rackham once tried to fix that for Havanna, Cuba but it didn't want to work at the time.
 
Is that for the direction in 3D Sailing Mode?

That's the one. It fixes the problem where at Charlestown you're facing into the very narrow inlet with no way to maneuver. I made you point out of the harbor.

Finding the fix for the problem wasn't straightforward. I tried a number of solutions, and this one worked the best. I don't think any of these bad reload locators have the .ship. attribute, but you only have to set the .ay value for it to work. I'm guessing it takes the coordinates from another part of the Islands[] variable. I noticed I had a lot of these fixes in islands_init.c already. I'll put my new fixes in that file, but I think they'll only apply to a new game.

You mean I gotta sail to *Havana*!! I'm at Guadeloupe now. I'll get there by Christmas. :) It's June in the game.

I've got saved games at most of the ports, so I may be able to find and fix most of these quickly.

Hook
 
:)

Easy Peasy.

Code:
        if ( Islands[i].id == "Cuba" )
        {
            Islands[i].reload.l2.ships.l0.ay = 3.0;
            TraceAndLog("** Fixed Havana");
        }

Just took a couple of minutes. Add that one with the others in the code above.

I'm gonna guess that you can fix it semi-permanently in islands_init.c using lines similar to what I've already got there.

Hook
 
Back
Top