Skip to content

Commit

Permalink
Merge pull request #4509 from IllianiCBT/turnover_methodRemoval
Browse files Browse the repository at this point in the history
Removed Turnover Target Number Method Configuration
  • Loading branch information
IllianiCBT authored Jul 31, 2024
2 parents 712fb53 + 90fc1b4 commit cc1e80c
Show file tree
Hide file tree
Showing 6 changed files with 9 additions and 361 deletions.
14 changes: 1 addition & 13 deletions MekHQ/resources/mekhq/resources/CampaignOptionsDialog.properties
Original file line number Diff line number Diff line change
Expand Up @@ -130,19 +130,13 @@ personnelPanel.title=Personnel
turnoverAndRetentionPanel.title=Turnover and Retention

## Header
chkUseRetirementDateTracking.text=Track Departure Date
chkUseRetirementDateTracking.toolTipText=Track the date of a person's departure from the unit.
chkUseRandomRetirement.text=Enable Employee Turnover
chkUseRandomRetirement.toolTipText=Determines whether personnel will randomly leave the unit.

## Settings
turnoverAndRetentionSettingsPanel.title=Settings
lblTurnoverTargetNumberMethod.text=Turnover Target Number Method
lblTurnoverTargetNumberMethod.toolTipText=This is the method used to determine the base target number for turnover checks.
lblTurnoverFixedTargetNumber.text=Fixed Target Number
lblTurnoverFixedTargetNumber.text=Target Number
lblTurnoverFixedTargetNumber.toolTipText=The base target number for turnover checks.
lblTurnoverDifficulty.text=Turnover Difficulty
lblTurnoverDifficulty.toolTipText=Increases or decreases the difficulty of turnover target numbers.
lblTurnoverFrequency.text=Turnover Frequency
lblTurnoverFrequency.toolTipText=How frequently should Turnover checks be prompted?
chkUseContractCompletionRandomRetirement.text=Use Contract Completion Turnover Rolls
Expand Down Expand Up @@ -687,17 +681,11 @@ lblTaxesPercentage.toolTipText=<html><body style='width: 300px'>The percentage o
\ Tax amount is based on profits recorded at the end of the financial term.\
\ Profits are calculated by comparing current funds against those from the prior financial term (or company starting funds).\
\ Starting Capital and End of Term Carryover sums are excluded from profit calculations.</body></html>
chkUseNotMercenaryExemption.text=Non-Mercenary Exemption
chkUseNotMercenaryExemption.toolTipText=Campaigns belonging to non-mercenary factions are exempt from paying taxes.
chkUseClanExemption.text=Clan Exemption
chkUseClanExemption.toolTipText=Campaigns belonging to a 'Clan' faction are exempt from paying taxes.

# Shares
sharesPanel.title=Shares System
chkUseShareSystem.text=Use Shares
chkUseShareSystem.toolTipText=Gives personnel a stake in the unit. This system lowers profits but can increase retention.
chkSharesExcludeLargeCraft.text=Large Craft Exemption
chkSharesExcludeLargeCraft.toolTipText=Exclude large craft from net worth when calculating share value.
chkSharesForAll.text=All Personnel Have Shares
chkSharesForAll.toolTipText=All combat and support personnel have shares rather than just MechWarriors
##end Finances Tab
Expand Down
26 changes: 0 additions & 26 deletions MekHQ/src/mekhq/campaign/CampaignOptions.java
Original file line number Diff line number Diff line change
Expand Up @@ -278,8 +278,6 @@ public static String getTransitUnitName(final int unit) {
// Retirement
private boolean useRandomRetirement;

private TurnoverTargetNumberMethod turnoverTargetNumberMethod;
private SkillLevel turnoverDifficulty;
private int turnoverFixedTargetNumber;
private boolean aeroRecruitsHaveUnits;
private boolean trackOriginalUnit;
Expand Down Expand Up @@ -960,8 +958,6 @@ public CampaignOptions() {
//region Turnover and Retention
// Retirement
setUseRandomRetirement(false);
setTurnoverTargetNumberMethod(TurnoverTargetNumberMethod.FIXED);
setTurnoverDifficulty(SkillLevel.REGULAR);
setTurnoverFrequency(TurnoverFrequency.MONTHLY);
setTurnoverFixedTargetNumber(3);
setAeroRecruitsHaveUnits(false);
Expand Down Expand Up @@ -1854,22 +1850,6 @@ public void setUseRandomRetirement(final boolean useRandomRetirement) {
this.useRandomRetirement = useRandomRetirement;
}

public TurnoverTargetNumberMethod getTurnoverTargetNumberMethod() {
return turnoverTargetNumberMethod;
}

public void setTurnoverTargetNumberMethod (final TurnoverTargetNumberMethod turnoverTargetNumberMethod) {
this.turnoverTargetNumberMethod = turnoverTargetNumberMethod;
}

public SkillLevel getTurnoverDifficulty() {
return turnoverDifficulty;
}

public void setTurnoverDifficulty (final SkillLevel turnoverDifficulty) {
this.turnoverDifficulty = turnoverDifficulty;
}

public TurnoverFrequency getTurnoverFrequency() {
return turnoverFrequency;
}
Expand Down Expand Up @@ -4649,8 +4629,6 @@ public void writeToXml(final PrintWriter pw, int indent) {

//region Retirement
MHQXMLUtility.writeSimpleXMLTag(pw, indent, "useRandomRetirement", isUseRandomRetirement());
MHQXMLUtility.writeSimpleXMLTag(pw, indent, "turnoverTargetNumberMethod", getTurnoverTargetNumberMethod().name());
MHQXMLUtility.writeSimpleXMLTag(pw, indent, "turnoverDifficulty", getTurnoverDifficulty().name());
MHQXMLUtility.writeSimpleXMLTag(pw, indent, "turnoverBaseTn", getTurnoverFixedTargetNumber());
MHQXMLUtility.writeSimpleXMLTag(pw, indent, "turnoverFrequency", getTurnoverFrequency().name());
MHQXMLUtility.writeSimpleXMLTag(pw, indent, "aeroRecruitsHaveUnits", isAeroRecruitsHaveUnits());
Expand Down Expand Up @@ -5635,10 +5613,6 @@ public static CampaignOptions generateCampaignOptionsFromXml(Node wn, Version ve
//region Turnover and Retention
} else if (wn2.getNodeName().equalsIgnoreCase("useRandomRetirement")) {
retVal.setUseRandomRetirement(Boolean.parseBoolean(wn2.getTextContent().trim()));
} else if (wn2.getNodeName().equalsIgnoreCase("turnoverTargetNumberMethod")) {
retVal.setTurnoverTargetNumberMethod(TurnoverTargetNumberMethod.valueOf(wn2.getTextContent().trim()));
} else if (wn2.getNodeName().equalsIgnoreCase("turnoverDifficulty")) {
retVal.setTurnoverDifficulty(SkillLevel.valueOf(wn2.getTextContent().trim()));
} else if (wn2.getNodeName().equalsIgnoreCase("turnoverBaseTn")) {
retVal.setTurnoverFixedTargetNumber(Integer.parseInt(wn2.getTextContent().trim()));
} else if (wn2.getNodeName().equalsIgnoreCase("turnoverFrequency")) {
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -90,9 +90,6 @@ public class RetirementDefectionTracker {
private static Person mechWarriorCommander;
private static Integer mechWarriorCommanderModifier;

private Integer hrSkill;
private Integer difficulty;

private final ResourceBundle resources = ResourceBundle.getBundle("mekhq.resources.RetirementDefectionTracker");

public RetirementDefectionTracker() {
Expand All @@ -104,7 +101,7 @@ public RetirementDefectionTracker() {

/**
* Computes the target for retirement rolls for all eligible personnel; this includes
* all active personnel who are not dependents, prisoners, or bondsmen.
* all active personnel who aren’t dependents, prisoners, or bondsmen.
*
* @param mission The contract that is being resolved; if the retirement roll is not due to
* contract resolutions (e.g., &gt; 12 months since last roll), this can be null.
Expand All @@ -118,11 +115,6 @@ public Map<UUID, TargetRoll> getTargetNumbers(final @Nullable Mission mission, f
rollRequired.add(mission.getId());
}

if (!campaign.getCampaignOptions().getTurnoverTargetNumberMethod().isFixed()) {
setHrSkill(campaign);
getDifficultyModifier(campaign);
}

if (campaign.getCampaignOptions().isUseManagementSkill()) {
getManagementSkillValues(campaign);
}
Expand Down Expand Up @@ -413,28 +405,6 @@ private boolean isHostileTerritory(Campaign campaign) {
return false;
}

/**
* Sets the HR skill averaged across all Admin/HR personnel.
*
* @param campaign the Campaign object to get personnel from.
*/
private void setHrSkill(Campaign campaign) {
int hrPersonnelCount = (int) campaign.getActivePersonnel().stream()
.filter(person -> (!person.getPrisonerStatus().isPrisoner()) && (!person.getPrisonerStatus().isPrisonerDefector()))
.filter(person -> (person.getPrimaryRole().isAdministratorHR()) || (person.getSecondaryRole().isAdministratorHR()))
.count();

if (hrPersonnelCount != 0) {
if (campaign.getCampaignOptions().getTurnoverTargetNumberMethod().isNegotiation()) {
hrSkill = getCombinedSkillValues(campaign, SkillType.S_NEG) / hrPersonnelCount;
} else if (campaign.getCampaignOptions().getTurnoverTargetNumberMethod().isAdministration()) {
hrSkill = getCombinedSkillValues(campaign, SkillType.S_ADMIN) / hrPersonnelCount;
}
} else {
hrSkill = 0;
}
}

/**
* Calculates the management skill modifier for a person
*
Expand Down Expand Up @@ -697,78 +667,17 @@ public static int getCombinedSkillValues(Campaign campaign, String skillType) {
return combinedSkillValues;
}

/**
* Returns a difficulty modifier based on the turnover difficulty campaign setting.
*
* @param campaign the current campaign
*/
private void getDifficultyModifier(Campaign campaign) {
switch (campaign.getCampaignOptions().getTurnoverDifficulty()) {
case NONE:
difficulty = -3;
break;
case ULTRA_GREEN:
difficulty = -2;
break;
case GREEN:
difficulty = -1;
break;
case REGULAR:
difficulty = 0;
break;
case VETERAN:
difficulty = 1;
break;
case ELITE:
difficulty = 2;
break;
case HEROIC:
difficulty = 3;
break;
case LEGENDARY:
difficulty = 4;
break;
}
}

/**
* This method calculates the base target number.
*
* @param campaign the campaign for which the base target number is calculated
* @return the base target number
*/
private int getBaseTargetNumber(Campaign campaign, Person person) {
if (!campaign.getCampaignOptions().getTurnoverTargetNumberMethod().isFixed()) {
int targetNumber;

// we use 'shellPerson' as we have no way to ensure 'person' has the necessary skills, and we'll get an NPE if they don't
Person shellPerson = new Person(campaign);

if (campaign.getCampaignOptions().getTurnoverTargetNumberMethod().isNegotiation()) {
shellPerson.addSkill(SkillType.S_NEG, 1, 0);
targetNumber = shellPerson.getSkills().getSkill(SkillType.S_NEG).getType().getTarget();
} else {
shellPerson.addSkill(SkillType.S_ADMIN, 1, 0);
targetNumber = shellPerson.getSkills().getSkill(SkillType.S_ADMIN).getType().getTarget();
}

if ((campaign.getCampaignOptions().isUseLoyaltyModifiers()) && (campaign.getCampaignOptions().isUseHideLoyalty())) {
int loyaltyScore = person.getLoyalty();

if (person.isCommander()) {
loyaltyScore += 2;
}

return targetNumber - hrSkill + difficulty + person.getLoyaltyModifier(loyaltyScore);
} else {
return targetNumber - hrSkill + difficulty;
}
if ((campaign.getCampaignOptions().isUseLoyaltyModifiers()) && (campaign.getCampaignOptions().isUseHideLoyalty())) {
return campaign.getCampaignOptions().getTurnoverFixedTargetNumber() + person.getLoyalty();
} else {
if ((campaign.getCampaignOptions().isUseLoyaltyModifiers()) && (campaign.getCampaignOptions().isUseHideLoyalty())) {
return campaign.getCampaignOptions().getTurnoverFixedTargetNumber() + person.getLoyalty();
} else {
return campaign.getCampaignOptions().getTurnoverFixedTargetNumber();
}
return campaign.getCampaignOptions().getTurnoverFixedTargetNumber();
}
}

Expand Down
Loading

0 comments on commit cc1e80c

Please sign in to comment.