Just to be clear here, the only work by J Norrington that is in the current modpack update is his changes to the weights of the various cannon types.
His work on cargo capacities is NOT in there anymore.
Instead, I have written some code to automatically mess around with the cargo capacities in ships_init.c based on the original Beta 3.4 values.
That is now done as follows:
CREW:
- Calculate minimum and maximum crew as per Hook's suggestions posted in 2009. See here:
http://www.piratesahoy.net/threads/some-notes-on-setting-the-ships-crew-numbers.13282/#post-506868
- If the ships_init.c values are lower than these calculated values, override the ships_init.c values with these instead.
That should prevent perpetually undercrewed ships that simply cannot fit the crew that they need to operate.
CARGO:
- Calculate the weight taken up by a standard "Auto Buy" supply purchase.
- If the ships_init.c capacity is lower than that, override it with the calculated value.
That should ensure every ship in the game can actually fit the "Auto Buy" supplies in the cargo hold.
NAVY ALTERNATE:
- For navy ships only, the "auto buy" supplies are based on DOUBLE the number of days at sea to assume that they can spend longer without resupplying.
- Only 1/3rd of the ships_init.c capacity is added on top of this to prevent navy ships from getting extra cargo carrying capacity compared to the other ships.
CANNONS AND CREW:
- The weight required for cannons and crew is added to the ships' capacity afterwards.
So the capacities you see in the game are:
- Merchant/versatile capacity =
ships_init.c value (with a minimum enforced based on "Auto Buy") + crew weight + default cannon weight
- Navy capacity =
Double "Auto Buy" capacity + 1/3rd ships_init.c value + crew weight + default cannon weight
All of this is handled
after the actual ships_init.c entry definitions and can therefore easily be tweaked or disabled completely for all ships in the game.
INTENTION FOR FUTURE:
The current situation is intended to be temporary. If we go through with this mod, it would be my intention to have the ships_init.c capacity values represent the "free space for cargo".
Space required for standard supplies, crew and default cannons would be calculated afterwards and added to this.
RANDOMIZATION:
One thing that makes this whole process REALLY fuzzy is the randomization that is applied to the ships in the game itself.
You have the national ship modifiers (from the top of ships_init.c) which are used as scalars on the ships_init.c values.
However, these apparently serve as a "maximum" of sorts as every time the same ship is generated with the same nationality, the stats will be different.
Sometimes this is a little bit different, sometimes more. This can be avoided for individual ships (using the
refShip.unique = true; line) or the code responsible could be disabled altogether.
Does any of the above make any sense to you guys?