Added CamOps Rank Salary Multipliers #3957
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Current Implementation
Currently, salaries appear to be mostly based on CamOps, with rank-based salary modifiers simplified to 'is this employee an officer or not'.
Problem
While a perfectly working system, it lacks granulality. Assuming no external modifiers, under the current system a Corporal and a Sergeant Major would both be paid identically. As would a Lieutenant and the Star Lord.
Solutions
Rank Based Multipliers
Using CamOps as a basis, I went through and updated
ranks.xml
to include RAW salary rank multipliers.Our rank system invents rank tiers, to ensure parity between different rank systems, so I used the ATOW:Companion SLDF rank listing to correlate across to mhq's rank tiers (E1, E2, E3, etc). Any gaps between rank tiers (where we invented additional tiers) I based the multiplier calculations on distance from the nearest RAW rank tier.
You can see my calculations here. Any Trait Point (TP) in red is one where I've extrapolated. Decimal TP means the distance between the last & next RAW rank tier is less than 1.
Star Pay for the Star Lord
Rank Tiers O15-O20 are reserved for supremely important people like the Star Lord and ilKhan. These ranks are beyond the scope of CamOps and ATOW and as such missing from their rank tables. In absence of RAW values I made some numbers up that seemed suitably big. After all, I doubt the Usurper Amaris would have gotten out of bed for less than 100k.
Removing Current Modifiers
After discussing it with the team on Discord, see here, it was decided that this new system should wholly replace the old.
Therefore, I've gone through and removed the old fixed Enlisted/Commissioned rank multipliers. I tested with old saves and nothing breaks if an old save is loaded. The system will just ignore the lines where Enlisted/Commissioned ranks are defined in the save file.
This removal is in-line with current CamOps printings, which have dropped the flat Commissioned Rank multipliers.
Updated Base Salary & Specialization Modifiers
Base Salary is as per CamOps with two exceptions: specialized conventional infantry and LAM pilots.
LAM pilots are absent from both the CamOps and ATOW salary tables. In prior versions we simply added the base salaries for MechWarriors and Aero pilots together. I opted, instead, to treat the 'aero' component as a secondary role (halving it). This changes LAM pilot base salary from 3,000 to 2,250.
Specialized Conventional Infantry are a bit of an odd duck. CamOps has their base salary at a fixed value, but due to how mhq handles Specialized CI it needs to be treated as a multiplier. I worked out that a multiplier of 1.28 reaches the exact value printed in the book, so that's what I went with.
Warrant Officers use the officer pay scale, this is inline with RAW from Field Manual: Comstar. I couldn't find any other mention of Warrant Officers, so that's what I went with.
Updated Salary Calculations
For the most part, our existing calculations were right where they needed to be. The biggest change was moving the multiplier from Specialized CI to be the first multiplier applied to the base salary. This replicates the base salary RAW and ensures we reach the right numbers.
One thing that does need to be mentioned. According to CamOps, rank salary modifiers for officers is calculates as
(Trait Points - 3) / 3 + 1
, enlisted personnel use(Trait Points - 3) / 6 + 1
. The problem is that at very low rank tiers (E1 and O1, especially) a weird edge case appears where enlisted personnel end up being paid more than their officers. I tweaked the officer calculation to(Trait Points - 3) / 3 + 2
which, for Regular-rated personnel, actually ends up with identical values to ATOW salary calculations. Roughly, this ends up having Lieutenants paid around the same as Sergeants (YMMV depending on your Rank System).Closes
Closes #3938