Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added CamOps Rank Salary Multipliers #3957

Merged
merged 6 commits into from
Apr 30, 2024

Conversation

IllianiCBT
Copy link
Collaborator

@IllianiCBT IllianiCBT commented Apr 3, 2024

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

Copy link

codecov bot commented Apr 3, 2024

Codecov Report

Attention: Patch coverage is 16.66667% with 10 lines in your changes are missing coverage. Please review.

Project coverage is 10.65%. Comparing base (aace8ff) to head (749422b).
Report is 12 commits behind head on master.

Files Patch % Lines
MekHQ/src/mekhq/campaign/personnel/Person.java 0.00% 10 Missing ⚠️
Additional details and impacted files
@@             Coverage Diff              @@
##             master    #3957      +/-   ##
============================================
- Coverage     10.65%   10.65%   -0.01%     
+ Complexity     5528     5526       -2     
============================================
  Files           837      837              
  Lines        114294   114251      -43     
  Branches      17188    17186       -2     
============================================
- Hits          12176    12170       -6     
+ Misses       100890   100853      -37     
  Partials       1228     1228              

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@IllianiCBT IllianiCBT self-assigned this Apr 3, 2024
@IllianiCBT IllianiCBT added Personnel Personnel-related Issues Finances labels Apr 3, 2024
@HammerGS HammerGS merged commit 707a231 into MegaMek:master Apr 30, 2024
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Rank
3 participants