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

Need Help Several minor bugs + questions

Maximum calibre is affected by the "Reinforced Hull" upgrade. Minimum crew is affected by changing from Portuguese to Pirate; Pirates get a 10% increase on minimum crew, Portuguese don't. But both of them get a 5% increase in maximum crew, so that shouldn't have been affected. It may be that the stats are being completely regenerated, in which case there will be some variation even if you don't change nation. Ship stats are always randomised a bit so that no two ships are ever exactly alike.
 
Ah, so It's not a bug after all? Than it's ok. Only turnrate is the question. By default in arcade mode ship turn rate set 3x from realistic. I changed that to 2. it probably the issue. But technically this shouldn't give me any trouble? Only interface turn rate value confusion? I mean. when it was set to 3x in arcade interface displayed original parameters of turn rate, not 3x value). Do all ships now will have x2 turn rate in ships screen? Or it's better to manually edit my 4 ships to right value?

And if 2x turn rate display is bug only affecting my ships interface because I set it to 2 (not exactly 1 like in realistic) than... badumtsss
In that case I need console (greatest invention of the humanity) commands to change ship parameters
 
Last edited:
Somehow now I'm stuck in interface screen (can't press anything except F1) after pressing passengers interface button. What could did that? Because I already reassigned half of my crew. Should I load or this bug is not a scary one?
You might have an error.log in your main game folder with some sort of explanation in it?

Also, how can I apply no reloading during fight setting? It seems it needs console command too
CANNOT_RELOAD_WHILE_FIGHTING in PROGRAM\InternalSettings.h only requires you to fully close and reopen the game.

Case 1: I'm friendly to Spain and England, and have no served nation ("Personal") . Portugal is neutral to Spain but hostile to me. I take a Spanish escort mission. We're attacked by a Portuguese ship.
Doesn't necessarily sound wrong? But having the ship hostile to the trader instead of the player does make more sense.

Case 2: I'm a pirate but have a French LoM. I take a French escort quest. At the destination, we're attacked by a Spanish ship. Spain is allied to France.
Because Spain IS hostile to Pirate, I assume? Ah yes, that doesn't sound very awesome.

In any case, I like your idea. Looking at the code now again, I assume I just stuck something in there to make it technically work.
But your idea is much better. :onya

But I've learned always to check attributes before using them, just in case. Paranoid programmer at work. xD
Correction: Good programmer at work!
You know what they say about assumptions, right? ;)

Maybe because any upgrades dissapeared? But prior to that I've got 2900 on my Corsair Frigate and now only 2000 which is lesser than 6-th rate tier 5 frigate.
That was after GiveShip2Character? That function gives you fully brand new ships, so they'll have different stats and no upgrades anymore.
It's admittedly a bit of a "rough" function when you just want to update the Realism Mode, but it's the only simple one I can think of...

Ah, so It's not a bug after all? Than it's ok. Only turnrate is the question. By default in arcade mode ship turn rate set 3x from realistic. I changed that to 2. it probably the issue. But technically this shouldn't give me any trouble? Only interface turn rate value confusion? I mean. when it was set to 3x in arcade interface displayed original parameters of turn rate, not 3x value). Do all ships now will have x2 turn rate in ships screen? Or it's better to manually edit my 4 ships to right value?
Are you playing with the Arcade or Realistic settings now?
The ARCADE_MULT_TURN setting applies to all ships, but doesn't show in any way in the interface.
 
You might have an error.log in your main game folder with some sort of explanation in it?
It was my stupidity only. Now I'm always backup files that I edit rather than try to extract it from 7zip)

CANNOT_RELOAD_WHILE_FIGHTING in PROGRAM\InternalSettings.h only requires you to fully close and reopen the game.
Should I set it to 0 value? And when fighting char shouldn't reload at all? Maybe I did something wrong then, going to try again

Are you playing with the Arcade or Realistic settings now?
The ARCADE_MULT_TURN setting applies to all ships, but doesn't show in any way in the interface.
Arcade (I modify InternalSettings to apply some realistic mode parameters). So, it's just interface bug then? Maybe I can decrease shown turn rate value through console by applying command after ships was changed with that code you gave to me?
Or just set it to 1 in Int.Settings, apply your console code to switch ships and then change it to 2 in Int.Settings, relaunch the game and F11? Or you shouldn't change turnrate in Int.Settings after switching ships to realistic ones with console?

Btw sorry for so many questions х) I can do nothing about it, I need answers :keith
 
Doesn't necessarily sound wrong? But having the ship hostile to the trader instead of the player does make more sense.
The destination is chosen to be friendly to the trader. (Or to be Pirate.) You are friendly to the trader's nation, otherwise the tavern keeper wouldn't have made the contact in the first place. When you get to the destination, you'll be under a friendly flag, or you'll be fighting the local fort. You might not be personally friendly with the destination. (Example: towards the end of "Ardent", you probably have both English and Spanish LoM, so your served nation is "Personal". You're still not friendly to either Portugal or Holland. Holland is allied to Spain and Portugal is neutral.) If the enemy ship is set to be hostile to your served nation, it could therefore belong to the nation whose port you're trying to enter. If you set a flag hostile to it, the local fort will attack you, and so will the merchant if you didn't previously tell him you'll be using false flags. If you don't set a flag hostile to it, you're either firing at a friendly ship or you're not defending yourself at all.

Correction: Good programmer at work!
You know what they say about assumptions, right? ;)
In this case, it's not much of an assumption because I checked "PROGRAM\Characters\init\CommonQuest.c" to see that "Quest Trader" does have a default nation defined, and "GenerateConvoyQuest()" changes it to something appropriate. But just in case someone does something odd to quest traders some time in the future...
 
Should I set it to 0 value? And when fighting char shouldn't reload at all? Maybe I did something wrong then, going to try again
You say you are already on Arcade Game Mode, right? But you want to NOT be able to reload while you've got your sword drawn?
If so, set it to '2'.

Arcade (I modify InternalSettings to apply some realistic mode parameters). So, it's just interface bug then? Maybe I can decrease shown turn rate value through console by applying command after ships was changed with that code you gave to me?
Or just set it to 1 in Int.Settings, apply your console code to switch ships and then change it to 2 in Int.Settings, relaunch the game and F11? Or you shouldn't change turnrate in Int.Settings after switching ships to realistic ones with console?
I'm not entirely sure if I understand what you want. These two options are mainly intended to make Arcade Game Mode faster than Realistic:
Code:
#define ARCADE_MULT_TURN            3.0         // FLOAT - this multiplies base ship-turn-rate, default: 3
#define ARCADE_MULT_SPEED             2            // INT - Shipspeed if you set the menu "Options/Sailing mode" to ARCADE MODE
                                                // 1: Same speed as in "Realistic Mode"
                                                // 2: Twice as fast (default setting)
                                                // 3: 3x as fast etc.
I think this was already in the original game. Then many years later, somebody decided to also change the ship behaviour depending on the realism mode.
So now we've got a silly "double" method of controlling the ship behaviour. :facepalm

If you want the full Realistic Game Mode experience (so REALISTIC_SHIP_INERTIA on 1), then you might want to set those two multipliers to 1.0 .

In fact... @Grey Roger, how about changing this in PROGRAM\SEA_AI\AIShip.c from this:
Code:
// NK switch to using defines -->
    if (iRealismMode == 0)
    {
        arCharShip.MaxSpeedZ = ARCADE_MULT_SPEED * stf(arCharShip.MaxSpeedZ);
        arCharShip.MaxSpeedY =    ARCADE_MULT_TURN* stf(arCharShip.MaxSpeedY);
    }
// NK <--
To this:
Code:
// NK switch to using defines -->
    if (iRealismMode == 0 && !REALISTIC_SHIP_INERTIA) // <---------------- change on this line -------------------
    {
        arCharShip.MaxSpeedZ = ARCADE_MULT_SPEED * stf(arCharShip.MaxSpeedZ);
        arCharShip.MaxSpeedY =    ARCADE_MULT_TURN* stf(arCharShip.MaxSpeedY);
    }
// NK <--
Would that make more sense...?

The destination is chosen to be friendly to the trader. (Or to be Pirate.) You are friendly to the trader's nation, otherwise the tavern keeper wouldn't have made the contact in the first place. When you get to the destination, you'll be under a friendly flag, or you'll be fighting the local fort. You might not be personally friendly with the destination. (Example: towards the end of "Ardent", you probably have both English and Spanish LoM, so your served nation is "Personal". You're still not friendly to either Portugal or Holland. Holland is allied to Spain and Portugal is neutral.) If the enemy ship is set to be hostile to your served nation, it could therefore belong to the nation whose port you're trying to enter. If you set a flag hostile to it, the local fort will attack you, and so will the merchant if you didn't previously tell him you'll be using false flags. If you don't set a flag hostile to it, you're either firing at a friendly ship or you're not defending yourself at all.
Indeed that does sound needlessly annoying.
And since the enemy is probably there waiting for the trader, it makes complete sense for that enemy to be hostile to the trader. :onya
 
I'm not entirely sure if I understand what you want. These two options are mainly intended to make Arcade Game Mode faster than Realistic:
I want to try 2.0 turnrate with realistic speed and ship behavior. And I don't know what should I do to prevent interface bug when 2.0 turnrate applies visually in ships screen (and it shows x2 value than it should be because I edited turnrate in Int.Settings from 3 to 2 and then apply console command to change ships).
Or... maybe just set it to 1 too? Hmmm.
 
And still, is it ok that even after corsair upgrade frigate got only nearly 2400 capacity. Which still lesser than upgraded tier 5 frigate. And capacities come in odd numbers when I apply console command.. Like not 2950 (it was like this), but something like 2441, 3556 and so on
 
In fact... @Grey Roger, how about changing this in PROGRAM\SEA_AI\AIShip.c from this:
Code:
// NK switch to using defines -->
    if (iRealismMode == 0)
    {
        arCharShip.MaxSpeedZ = ARCADE_MULT_SPEED * stf(arCharShip.MaxSpeedZ);
        arCharShip.MaxSpeedY =    ARCADE_MULT_TURN* stf(arCharShip.MaxSpeedY);
    }
// NK <--
To this:
Code:
// NK switch to using defines -->
    if (iRealismMode == 0 && !REALISTIC_SHIP_INERTIA) // <---------------- change on this line -------------------
    {
        arCharShip.MaxSpeedZ = ARCADE_MULT_SPEED * stf(arCharShip.MaxSpeedZ);
        arCharShip.MaxSpeedY =    ARCADE_MULT_TURN* stf(arCharShip.MaxSpeedY);
    }
// NK <--
Would that make more sense...?
Yes, especially since "Ships_init.c" already uses a double check:
Code:
if(iRealismMode>0 || REALISTIC_SHIP_INERTIA){
<realistic speed, turn rate and inertia>
}else{
<arcade speed, turn rate and inertia>
}
May as well make them use similar conditions for consistency.

@SSD: try putting this into "PROGRAM\SEA_AI". It might fix the problem with the captain of a merchant ship you're escorting, you attack, and it surrenders. This requires that you have installed the latest update archive because it also makes use of newly revised damage control abilities. Go to the "Characters" interface, click on "Abilities" and scroll down. If you have "Basic Damage Control", "Advanced Damage Control" and "Professional Damage Control" then you have the required update. If you have "Basic Ship Defence", "Advanced Ship Defence" and "Professional Ship Defence" then I'll need to make another version of "AIShip.c" based on an older version.
 

Attachments

  • AIShip.c
    223.8 KB · Views: 107
I want to try 2.0 turnrate with realistic speed and ship behavior. And I don't know what should I do to prevent interface bug when 2.0 turnrate applies visually in ships screen (and it shows x2 value than it should be because I edited turnrate in Int.Settings from 3 to 2 and then apply console command to change ships).
Or... maybe just set it to 1 too? Hmmm.
It's just a global modifier which applies to all ships equally.
It doesn't have much meaning for in the interface, which is probably why it isn't taken into account there.
I suppose it would be possible to code that in, but I'm not sure it's worth the effort.

And capacities come in odd numbers when I apply console command.. Like not 2950 (it was like this), but something like 2441, 3556 and so on
Probably just randomisation at work. :shrug
 
  • Like
Reactions: SSD
And still, is it ok that even after corsair upgrade frigate got only nearly 2400 capacity. Which still lesser than upgraded tier 5 frigate. And capacities come in odd numbers when I apply console command.. Like not 2950 (it was like this), but something like 2441, 3556 and so on
Upgrades are also random. Sometimes you get lucky and have a big improvement. And sometimes you don't. Perhaps the tier 5 frigate got lucky and the corsair frigate didn't.
 
@SSD: try putting this into "PROGRAM\SEA_AI". It might fix the problem with the captain of a merchant ship you're escorting, you attack, and it surrenders. This requires that you have installed the latest update archive because it also makes use of newly revised damage control abilities. Go to the "Characters" interface, click on "Abilities" and scroll down. If you have "Basic Damage Control", "Advanced Damage Control" and "Professional Damage Control" then you have the required update. If you have "Basic Ship Defence", "Advanced Ship Defence" and "Professional Ship Defence" then I'll need to make another version of "AIShip.c" based on an older version.
I've got latest build version with fixes, so I'll try this out and see if it helps. Thanks)

It's just a global modifier which applies to all ships equally.
It doesn't have much meaning for in the interface, which is probably why it isn't taken into account there.
I suppose it would be possible to code that in, but I'm not sure it's worth the effort.
But what causes the 2x turnrate to display then? oO Can I firstly apply your command and only then change this modifier in file? Because I'm quite sure it does the x2 value in interface after console command (going to confirm my theory now and test with 1 ship turnrate in Int.Settings
Probably just randomisation at work. :shrug
It doesn't work good. Maybe.... by hand of God
i can make this through console?
 
Upgrades are also random. Sometimes you get lucky and have a big improvement. And sometimes you don't. Perhaps the tier 5 frigate got lucky and the corsair frigate didn't.
It's Arabella (Peter Blood's ship) after all. Cool person even in game btw, but I can tell if he's gonna try to be too good rather than he is than it won't be too good for him. Because good but dead pirate always worse than alive and not so good. Or perhaps not thinking of mutiny at all and it should be ok, matey. Just sayin :cheers
 
(going to confirm my theory now and test with 1 ship turnrate in Int.Settings
Yep. I think that's what causing it. So, is it going to be ok if I apply realistic ship behavior, speed and turnrate, execute console and then change turnrate to 2.0?

Whoops. It doesn't work with my last save where I already have x2 turnrate shown. no idea why, but it works ok with save where I didn't execute console command yet.

Now I don't know what causing this at all. Because when I set 3.0 turnrate in Int.Sett. and load save with not messed up turnrate value it didn't became 3x turnrate after console command
 
Last edited:
But what causes the 2x turnrate to display then? oO Can I firstly apply your command and only then change this modifier in file? Because I'm quite sure it does the x2 value in interface after console command (going to confirm my theory now and test with 1 ship turnrate in Int.Settings
The ships_init.c changed values do display, but the internal settings ones don't.
It's admittedly quite silly, but that's the way it is for now.

Until you go through all spots where they're displayed and add the modifiers there too. ;)
 
The ships_init.c changed values do display, but the internal settings ones don't.
It's admittedly quite silly, but that's the way it is for now.

Until you go through all spots where they're displayed and add the modifiers there too.
It confuses me the most that in one save it works perfectly now but in second (where I already executed command and get x2 values) it didn't set right numbers.
 
Now I'm totally confused lol. Because if it's the right turnrate value than why in other save it setting it to half amount of it. :8q
 

Attachments

  • Screenshot_2357.png
    Screenshot_2357.png
    4.8 KB · Views: 111
Figured out. Realistic ship inertia do this. So, which one is right and which one is bugged, can you tell me please?

turnrate = 2.0
speed = 1
realistic_inertia = 1

Also: merchant dialogue still empty after replacing file
Can I get rid of that citizen passenger and what causes it to appear instead of officer from one of my ships?
 

Attachments

  • Screenshot_2353.png
    Screenshot_2353.png
    1 MB · Views: 126
  • Screenshot_2356.png
    Screenshot_2356.png
    1.1 MB · Views: 156
Last edited:
Put this into "console.c", just below the 'int limit;' line:
Code:
DumpAttributes(characterFromID("Quest trader"));
Talk to the merchant. Press F12 to activate the console. Then post "compile.log", "system.log", and "error.log" if it exists.

About the citizen passenger:
If he's still in command of a ship, put someone else in command of it. Then assign the citizen as one of your party officers. When you go to another area, he should appear, and you should then be able to talk to him and fire him. I've no idea how he got there. What does he look like?
 
If he's still in command of a ship, put someone else in command of it. Then assign the citizen as one of your party officers. When you go to another area, he should appear, and you should then be able to talk to him and fire him. I've no idea how he got there. What does he look like?
Should I? I changed his model so he could appear and citizen from lvl 1 with all 1 skills suddenly became officer with nice stats (gunner as I assigned him to that role). Magic. Also hired another officer in tavern to test, sail to world map and back. No bugs. No duplicated officers after hire from tavernkeeper either (for now).
It somehow infiltrated my ship, killed one of my officers and took his place. A spy, an alien? That thing from the film with the same name? Should I be aware?!

122e46d1792dt.jpg


b602af617cc9t.jpg


10a38d34be71t.jpg

Put this into "console.c", just below the 'int limit;' line:
Code:
DumpAttributes(characterFromID("Quest trader"));
Talk to the merchant. Press F12 to activate the console. Then post "compile.log", "system.log", and "error.log" if it exists.
Attached
 

Attachments

  • compile.log
    4.5 KB · Views: 126
  • system.log
    1.2 KB · Views: 106
Back
Top