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

Feature Request Discussion about captain and crew bonusses

@Pillat @Joer

Yes, I would tend to agree. Crew rank should not be linked to ship tier itself though, I'd prefer it linked directly to the actual number of crewmen on board (rather than theoritical maximum), modified by morale and captain type.

The function I quoted above is the one that does it, the question is what version was that created and what was there beforehand. We might be able to try going back to an older function if someone could find it.
 
@Pillat do you by any chance have an old install or files that would have the old function from those past betas? So we could see what it used to be exactly? I suspect it would be in the CreateOfficer file.
 
I hope somebody can test the 28 July version to confirm if this indeed changed afterwards or not.

Using the actual relative crew sizes makes perfect sense and should happen.
 
@Pieter Boelen I used version control the get the July 28th version from gitlab:

Code:
int GetBoardingCrewRank(ref Crewmember)
{   
int crank = sti(Crewmember.rank);  
int rank = crank*0.6 + 0.2*rand(crank);  
rank += GetOfficTypeRankBonus(Crewmember.quest.officertype);   
if(rank < 1) rank = 1;   
return rank; }

Sorry about formatting, cut and paste and such. Looks the same for that part.

Maybe something else is happening where crewmember.rank is determined? None of this system was created or edited by me, so I really don't know.
 
As it happens, I have the files of March version still on my PC as a backup. :D
 

Attachments

  • LAi_CreateOfficer.c
    6.2 KB · Views: 168
My assumption is that if indeed the behaviour seems different between the ZIP compared to the EXE, then probably something related to the new Captain generation somehow has affected ship boarding.
@Levis, do you have any thoughts?
 
@Pieter Boelen Yes it does look like that may be the case, looking at @Joer 's file it has the same formula as quoted above, and that one is from March.

Here is Joer's March version:
int GetBoardingCrewRank(ref Crewmember)
{
int crank = sti(Crewmember.rank);
int rank = crank*0.6 + 0.2*rand(crank);

Maybe something else changed with new captain generation, maybe earlier? Everything comes from that, in all the versions, since they all have basically the same formula after that that I quoted above. Most people are reporting a difference with much older version, so it's not clear when the problem arose.
 
Last edited:
@Pieter Boelen Here's the line from LAi_boarding that interacts with that from the latest version:

chr = LAi_CreateFantomCharacterRk(false, GetBoardingCrewRank(boarding_enemy), false, officertype, true, BOARDER_HAS_GUN_PROB, model, "rld", enLocType + locnum); //Changed by Levis


EDIT: Ok back to work now, may not emerge for awhile, can't afford to take any more long lunches like this for a long time. This one is outside my knowledge level anyway. :)
 
Last edited:
All we need are conformation on whether it changed between EXE and ZIP.
And then @Levis would probably need to have a look at it.
 
BTW , something related to the boarding topic: You should consider giving the player's officers some HP bonus. I did that in officertypes_ini and now it actually makes sense to stick with good officers. Before they were just meat, not clever enough to defend themselves and would often die after a few fights. Now they are still dumb meat, but at least they have enough HP to compensate that.

And something other I just encountered: Is there any reason that some ships get destroyed by the "Hand of God" after they got boarded?
 
BTW , something related to the boarding topic: You should consider giving the player's officers some HP bonus. I did that in officertypes_ini and now it actually makes sense to stick with good officers. Before they were just meat, not clever enough to defend themselves and would often die after a few fights. Now they are still dumb meat, but at least they have enough HP to compensate that.
Officers can get as much HP as the player. So they should be able to keep themselves alive sort-of equally well.
It is possible to use the Apothecary to give them a HP bonus though.

Is there any reason that some ships get destroyed by the "Hand of God" after they got boarded?
Maybe in very specific circumstances? What exactly was the sequence of events there?
 
Yes, but since they arent clever enough to fight reasonable, they usually die at boardings with high number of crewmen. I gave specifically the First Mate and Master at Arms a huge HP bonus, and now I dont always have to rescue them in boardings.

Nothing special. It was a Kreyser Frigate which was part of a scratch patrol which attacked me. I defeated all and the Kreyser was the last one so I decided to board her. They surrendered after I initiated the boarding and I was friendly, meaning I spared them. About 5 seconds after I left the transfer screen, the ship got sunk by the 'Hand of God'. It was still in a pretty good condition, so it really made no sense. Maybe it was implemented years ago for tiding up memory? Thats the only explanation I have. :unsure
 
Ships should not be intentionally cleared while they're still in the scene. :no

So she still had plenty Hull HP left?
No storm and no crashing into anything? If so, I have no explanation either.
 
the function @Tingyun posted is called like this for enemies:
Code:
GetBoardingCrewRank(boarding_enemy)

so it will look at the captain rank, this rank is tied to the ship tier. This used to be the case also before. But @Tingyun changed the formula for shipcaptains to be more extreme so high level ships have a higher level captain. this way the boarding crew has also become better.
I know we discussed this a lot already but since then nothing has been done to actually make it right.
I would need to look at the discussion about boarding again to see how the boarders should be determined.
 
I would need to look at the discussion about boarding again to see how the boarders should be determined.
I posted a link to my final summary earlier this week. Should be floating around the forum somewhere.
 
the function @Tingyun posted is called like this for enemies:
Code:
GetBoardingCrewRank(boarding_enemy)

so it will look at the captain rank, this rank is tied to the ship tier. This used to be the case also before. But @Tingyun changed the formula for shipcaptains to be more extreme so high level ships have a higher level captain. this way the boarding crew has also become better.
I know we discussed this a lot already but since then nothing has been done to actually make it right.
I would need to look at the discussion about boarding again to see how the boarders should be determined.


Huh? I did NOT change the formula for captain kevel and tier, all I did was give a difficulty modifier, - 4 landlubber, +4 sea dog, +8 swashbuckler.

I doubt everyone reporting is playing on swashbuckler, and even if they were, that maximum bonus would be no more than the equivlant of 1 tier move up. I told everyone I made this change earlier in this thread (described the exact mechanics and the modifiers at each difficulty level), but noted it wouldn't account for the reports.

Even if Ansel, Joer, and Pillat are all playing on swashbuckler (and I do not think all of them are), it still isn't near enough to account for what they are reporting. In particular Pillat describes in detail how he is experiencing the problem and what he wants to change, no way it comes from that small difficulty modifier.

(I did correct the math in the COMMENTS to the formula to actually correctly say what it means to the user reading the code, but that obviously didn't create the problem. The original comments giving example levels were incorrect and underestimated. Maybe that is where the idea comes from that I changed things? But I did not touch the base captain generation formula, I just explained it better in the comments)

The source of this problem definiatelly lies elsewhere, and not in that difficulty modifier.
 
About the boarding: Just don't tie crewstats to ship or captain at all. Only navy crewmen should have a slight buff and merchant crewmen a slight debuff compared to pirates. That would make sense. Everything else should just be calculated by crewsize and morale.

About that Hand of God thing: Well, this frigate was in pretty good condition, about 70% Hull. Though she had a mast broken I think. Most of the other ships I board and then get sunk usually have 50% Hull or less left. But none of them in a condition where you'd say "oh, they will never reach the next port"
I think that this is only with ships that got boarded after they surrendered. I guess it happens in 1 of 4 or 5 cases.

Yes, Tinyguns difficulty modifier cant be the devil here. I play on marine and even on landlubber enemy crews are undefeatable at the beginning
 
Back
Top