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

Ideas for the future!

inigomontoya-480x640.jpg

Is that Andre the Giant in the Back? Awesome!
 
About the maps we can buy in the shops, they could be improved adding also the roads and not just the towns and shores.... For instance, the Pirate fort in Bonaire thanks to the roads, it would be easier to choose the best shore to moor to go there... Same thing for the Buccaneer camp....
BTW: Don't ask me to do that xD I'm not really good for working on images and I have a quest to finish anyway. However, if people like the idea and anyone else is interested in doing that.....
 
One big snag is that the maps don't correspond all that well to the game. For example, on Bonaire, you leave town and pass the waterfall. The first exit on the left takes you to Crab Cliffs. The second exit to the left leads to Rheims' house. The third exit to the left takes you to the pirate fort, and you continue straight ahead to Palm Beach. Try drawing a road like that on this map, taking particular note that Crab Cliffs is supposed to be the nearer beach and the exit is supposed to be to the left...
mapDouwesen.jpg
 
Maybe the 3D locations don't need to represent ALL the locations, so you could draw a road that twists and turns far more than you do in the game?
 
Maybe the 3D locations don't need to represent ALL the locations, so you could draw a road that twists and turns far more than you do in the game?
Yeah, since the game kinda makes use of "portals" instead of "seamless travel". So the person that would create the road design (in the maps), would be free to draw the needed path to fit in the locations' sites (in the maps).
 
Certainly the route from Kralendijk to Palm Beach would need to be long and only a few locations along the way are playable. Maybe you can't cut straight across the island because either the jungle or the mountains are impenetrable. But no matter how you draw the road, the exit to Crab Cliffs is going to be on the wrong side. ;)

It also removes the element of exploration for new players. Imagine you're playing PoTC:NH for the first time. You're cruising around Hispaniola and find a beach - where does this lead? After landing, you proceed through some jungle and... hey, there's a buccaneers' camp here!
 
Certainly the route from Kralendijk to Palm Beach would need to be long and only a few locations along the way are playable. Maybe you can't cut straight across the island because either the jungle or the mountains are impenetrable. But no matter how you draw the road, the exit to Crab Cliffs is going to be on the wrong side. ;)
I wonder what that map would look like.
If it really does defy all laws of logic, should perhaps the shores be swapped around so that it IS possible?

It also removes the element of exploration for new players. Imagine you're playing PoTC:NH for the first time. You're cruising around Hispaniola and find a beach - where does this lead? After landing, you proceed through some jungle and... hey, there's a buccaneers' camp here!
Isn't that the purpose of buying maps?
 
Here is a random idea, When captains offer to surrender in the cabin. would it possible for them to surrender their weapons? Adding a dialogue tree about that or simple enabling you to take their weapons? Also when you loose an officer to melee, why are the only dead characters that can be looted. Clearly in reality their equipment would be recovered like the dead crew's.
 
When captains offer to surrender in the cabin. would it possible for them to surrender their weapons? Adding a dialogue tree about that or simple enabling you to take their weapons?
Should be possible.

Also when you loose an officer to melee, why are the only dead characters that can be looted. Clearly in reality their equipment would be recovered like the dead crew's.
I'm not sure what to do about that one.
Of course it could be done, but probably it is intentionally not like that right now.
If you can always loot your own stuff back, there's little risk of ever losing it and gives less incentive to keep your officers alive.
Also, the enemies never loot, which gives a bit of an (unfair?) advantage to three player.
 
When I sail using Ironman mode, there are two things that bother me currently:


1. I have no real way of estimating how much crew is on an enemy ship (except for a very rough approximation based on the tier, but I don't know enough about each ship type to do this effectively, and there's no way you can sense how much crew is lost during battle). Would it be possible to have an option in the game preferences to allow very rough estimations of crew (and perhaps even hull and rigging/sail) when looking through a spyglass?

I tried going to Realistic mode and fiddle with "InternalSettings.h", but even with "ONSEA_DATA_DISABLED" set to "0", I didn't get any info on crew through my common spyglass.


2. I sometimes go afk for a while when the ship is crossing between islands. It would be really nice to have access to some kind of log over all the messages you've gotten (i.e. stuff floating close by or "sail ho" and "land ho" in whatever direction). I started looking in "compile.log" for this, but it also contains stuff that I don't want to know - which diminishes immersion.
 
1. I have no real way of estimating how much crew is on an enemy ship (except for a very rough approximation based on the tier, but I don't know enough about each ship type to do this effectively, and there's no way you can sense how much crew is lost during battle). Would it be possible to have an option in the game preferences to allow very rough estimations of crew (and perhaps even hull and rigging/sail) when looking through a spyglass?

I tried going to Realistic mode and fiddle with "InternalSettings.h", but even with "ONSEA_DATA_DISABLED" set to "0", I didn't get any info on crew through my common spyglass.
At the moment, most settings can only make your game more realistic, not less.
But there is an exception:
Code:
bool DisableReloadWhileFighting() // PB: To allow CANNOT_RELOAD_WHILE_FIGHTING to override the Realism Mode
{
    if (CANNOT_RELOAD_WHILE_FIGHTING == 0)    return false;
    if (CANNOT_RELOAD_WHILE_FIGHTING == 2)    return true;
    if (iRealismMode>0)                        return true;
                                            return false;
}
The spyglass code itself is in PROGRAM\BATTLE_INTERFACE\ispyglass.c:
Code:
    if(iRealismMode>1 || ONSEA_DATA_DISABLED) {  //Screwface : No infos in realistic mod // KK ship type and nation become quite obvious from some distances
        if (Ship_GetGroupID(chref) != PLAYER_GROUP) shipName = chref.Ship.Name;
        distance = Ship_GetDistance2D(mchref, chref);
        if (distance < GetCharVisibilityRange(mchref, 3)) // Ship type, nation AND name shown inside CLOSE range
        {
            SendMessage(&objISpyGlass,"lsslllflll",MSG_ISG_UPDATE, shipName, shipType, -1, -1, -1, -1.0, -1, -1, shipNation);
            SendMessage(&objISpyGlass,"ll",MSG_ISG_VISIBLE, true);
        }
        else
        {
            if (distance < GetCharVisibilityRange(mchref, 2)) // Ship type and nation shown inside MEDIUM range
            {
                SendMessage(&objISpyGlass,"lsslllflll",MSG_ISG_UPDATE, "", shipType, -1, -1, -1, -1.0, -1, -1, shipNation);
                SendMessage(&objISpyGlass,"ll",MSG_ISG_VISIBLE, true);
            }
            else
            {
                if (distance < GetCharVisibilityRange(mchref, 1)) // Ship type is visible inside LONG range
                {
                    SendMessage(&objISpyGlass,"lsslllflll",MSG_ISG_UPDATE, "", shipType, -1, -1, -1, -1.0, -1, -1, -1);
                    SendMessage(&objISpyGlass,"ll",MSG_ISG_VISIBLE, true);
                }
            }
        }
    } else {
        SendMessage(&objISpyGlass,"lsslllflll",MSG_ISG_UPDATE, shipName, shipType, shipHull, shipSail, shipCrew, shipSpeed, shipCannons, shipCharge, shipNation);
        SendMessage(&objISpyGlass,"ll",MSG_ISG_VISIBLE,true);
    }
By tweaking that code (and possibly by doing something similar to the 'Cannot Reload While Fighting'), you should be able to change the game to do what you want. :doff

2. I sometimes go afk for a while when the ship is crossing between islands. It would be really nice to have access to some kind of log over all the messages you've gotten (i.e. stuff floating close by or "sail ho" and "land ho" in whatever direction). I started looking in "compile.log" for this, but it also contains stuff that I don't want to know - which diminishes immersion.
You can find there those logs are sent to the screen in PROGRAM\CCCdirectsail.c by searching for 'GetBearingFromShip16'.
You can write stuff to the Ship's Log with this function:
Code:
// Write a new log entry to the ship's log
// logTitle: Title of the log entry
// logEntry: Text of the log entry
// logCategory: "General", "Battle", "Ship", "Personal", "Notes"
// bVisible: if log entry is visible (e.g. the news is known to the character) 
void WriteNewLogEntry(string logTitle, string logEntry, string logCategory, bool bVisible)
Maybe using that would be an option? I do wonder if you might not end up with excessive log entries then, but you'll find out soon enough when you try. :cheeky
 
I'm not sure what to do about that one.
Of course it could be done, but probably it is intentionally not like that right now.
If you can always loot your own stuff back, there's little risk of ever losing it and gives less incentive to keep your officers alive.
Also, the enemies never loot, which gives a bit of an (unfair?) advantage to three player.
Maybe the enemy did loot your officer. OK, not really, partly because he does not then have the nice armour and weapons which you gave the officer, and he does not then use them against you; and partly because you still don't get the equipment back when you kill him. But it's as good an excuse as any until someone figures out why officers can't be looted. :D

As for the enemy captain surrendering his sword, that's going to be a bit more complicated than it seems at first. Remember that, once he's a prisoner in your hold, you have the option to execute him. He then asks to be allowed to fight, and if you agree, you duel him - incidentally giving you one way to get his sword already. If you've already taken his sword then he's just going to stand there like a dummy, and you're going to get a massive hit to your reputation if you hit him. Which is fair enough, except that you might not remember that you've already taken his sword. Unless you look closely and see he's unarmed, you might think you're being honourable by giving him the chance to duel, and then be stuck with having to kill him while he's unarmed.
 
Maybe the enemy did loot your officer. OK, not really, partly because he does not then have the nice armour and weapons which you gave the officer, and he does not then use them against you; and partly because you still don't get the equipment back when you kill him. But it's as good an excuse as any until someone figures out why officers can't be looted. :D
I tried to find the reason, but my quick search quickly resulted in my brain getting fried.
That whole 'CORPSEMODE' code is just - so - convoluted!
I'd expect the most relevant file would be PROGRAM\Loc_ai\LAi_events.c, but I can't find any obvious exception there for characters in the player party.

As for the enemy captain surrendering his sword, that's going to be a bit more complicated than it seems at first. Remember that, once he's a prisoner in your hold, you have the option to execute him. He then asks to be allowed to fight, and if you agree, you duel him - incidentally giving you one way to get his sword already. If you've already taken his sword then he's just going to stand there like a dummy, and you're going to get a massive hit to your reputation if you hit him. Which is fair enough, except that you might not remember that you've already taken his sword. Unless you look closely and see he's unarmed, you might think you're being honourable by giving him the chance to duel, and then be stuck with having to kill him while he's unarmed.
In theory, when you duel him later, there could be a check included to see if he's got weapons and, if not, force the player to give him new weapons before the duel.
But indeed, it does get more complicated that way.
 
Or, you could simply not choose to execute him. If you could implant the weapons surrender through dialogue you as the player could allow him to keep his weapon. Although in reality the idea an armed prisoner in your hold is probably not realistic unless he has given his parole. Something. It possible the context of the game.
 
At the moment, most settings can only make your game more realistic, not less.
But there is an exception:
Code:
bool DisableReloadWhileFighting() // PB: To allow CANNOT_RELOAD_WHILE_FIGHTING to override the Realism Mode
{
    if (CANNOT_RELOAD_WHILE_FIGHTING == 0)    return false;
    if (CANNOT_RELOAD_WHILE_FIGHTING == 2)    return true;
    if (iRealismMode>0)                        return true;
                                            return false;
}
The spyglass code itself is in PROGRAM\BATTLE_INTERFACE\ispyglass.c:
Code:
    if(iRealismMode>1 || ONSEA_DATA_DISABLED) {  //Screwface : No infos in realistic mod // KK ship type and nation become quite obvious from some distances
        if (Ship_GetGroupID(chref) != PLAYER_GROUP) shipName = chref.Ship.Name;
        distance = Ship_GetDistance2D(mchref, chref);
        if (distance < GetCharVisibilityRange(mchref, 3)) // Ship type, nation AND name shown inside CLOSE range
        {
            SendMessage(&objISpyGlass,"lsslllflll",MSG_ISG_UPDATE, shipName, shipType, -1, -1, -1, -1.0, -1, -1, shipNation);
            SendMessage(&objISpyGlass,"ll",MSG_ISG_VISIBLE, true);
        }
        else
        {
            if (distance < GetCharVisibilityRange(mchref, 2)) // Ship type and nation shown inside MEDIUM range
            {
                SendMessage(&objISpyGlass,"lsslllflll",MSG_ISG_UPDATE, "", shipType, -1, -1, -1, -1.0, -1, -1, shipNation);
                SendMessage(&objISpyGlass,"ll",MSG_ISG_VISIBLE, true);
            }
            else
            {
                if (distance < GetCharVisibilityRange(mchref, 1)) // Ship type is visible inside LONG range
                {
                    SendMessage(&objISpyGlass,"lsslllflll",MSG_ISG_UPDATE, "", shipType, -1, -1, -1, -1.0, -1, -1, -1);
                    SendMessage(&objISpyGlass,"ll",MSG_ISG_VISIBLE, true);
                }
            }
        }
    } else {
        SendMessage(&objISpyGlass,"lsslllflll",MSG_ISG_UPDATE, shipName, shipType, shipHull, shipSail, shipCrew, shipSpeed, shipCannons, shipCharge, shipNation);
        SendMessage(&objISpyGlass,"ll",MSG_ISG_VISIBLE,true);
    }
By tweaking that code (and possibly by doing something similar to the 'Cannot Reload While Fighting'), you should be able to change the game to do what you want. :doff

Doesn't "if(iRealismMode>1 || ONSEA_DATA_DISABLED)" only activate this part if I had "1" for "ONSEA_DATA_DISABLED" in "InternalSettings.h"?

With Realistic mode on and "ONSEA_DATA_DISABLED" set to "0" it gives me (approximate) values for hull and sail, and even speed for some reason, but not crew.

Changing the above code to include crew doesn't change anything for me.


You can find there those logs are sent to the screen in PROGRAM\CCCdirectsail.c by searching for 'GetBearingFromShip16'.
You can write stuff to the Ship's Log with this function:
Code:
// Write a new log entry to the ship's log
// logTitle: Title of the log entry
// logEntry: Text of the log entry
// logCategory: "General", "Battle", "Ship", "Personal", "Notes"
// bVisible: if log entry is visible (e.g. the news is known to the character)
void WriteNewLogEntry(string logTitle, string logEntry, string logCategory, bool bVisible)
Maybe using that would be an option? I do wonder if you might not end up with excessive log entries then, but you'll find out soon enough when you try. :cheeky

This works wonders, thanks!

I inserted:

Code:
WriteNewLogEntry("Land sighted", "Land has been sighted " + GetBearingFromShip16(dir-stf(pchar.ship.ang.y)), "Ship", true)

and

Code:
WriteNewLogEntry("Sail sighted", "Sail has been sighted " + GetBearingFromShip16(Degree2Radian(bearing)), "Ship", true)

in appropriate areas.

I tested it quickly, and at least the "Land sighted" log works. I'll have to wait and see for the "Sail sighted".
 
Doesn't "if(iRealismMode>1 || ONSEA_DATA_DISABLED)" only activate this part if I had "1" for "ONSEA_DATA_DISABLED" in "InternalSettings.h"?

With Realistic mode on and "ONSEA_DATA_DISABLED" set to "0" it gives me (approximate) values for hull and sail, and even speed for some reason, but not crew.

Changing the above code to include crew doesn't change anything for me.
Oh wait, look in the 'else' section of that code I quoted.
Apparently the crew variable I always '-1' (because you can't tell from outside), but your should be able to find the '-1' that corresponds to the crew from that 'else' statement and put that in the 'if' section.
If that makes any sense...?

This works wonders, thanks!

I inserted:

Code:
WriteNewLogEntry("Land sighted", "Land has been sighted " + GetBearingFromShip16(dir-stf(pchar.ship.ang.y)), "Ship", true)
and

Code:
WriteNewLogEntry("Sail sighted", "Sail has been sighted " + GetBearingFromShip16(Degree2Radian(bearing)), "Ship", true)
in appropriate areas.

I tested it quickly, and at least the "Land sighted" log works. I'll have to wait and see for the "Sail sighted".
If you're happy with how that works, perhaps it could be added to the main mod.
If @Grey Roger thinks it's a good addition.
 
Doesn't "if(iRealismMode>1 || ONSEA_DATA_DISABLED)" only activate this part if I had "1" for "ONSEA_DATA_DISABLED" in "InternalSettings.h"?

With Realistic mode on and "ONSEA_DATA_DISABLED" set to "0" it gives me (approximate) values for hull and sail, and even speed for some reason, but not crew.
Even in "Realistic" mode and "ONSEA_DATA_DISABLED" set to 0, you'll need a superior or masterwork spyglass to show crew numbers.

If you're happy with how that works, perhaps it could be added to the main mod.
If @Grey Roger thinks it's a good addition.
I will defer to other people's opinions. Has anyone else any view on automatically adding log entries for every sail sighting even if it doesn't lead to an encounter, and for every land sighting even if you don't visit the land?

Perhaps control it with a variable in "InternalSettings.h", so that the extra log entries are only added if that variable is set to 1?
 
Back
Top