diff --git a/MekHQ/docs/Personnel Modules/Turnover & Retention Module.pdf b/MekHQ/docs/Personnel Modules/Turnover & Retention Module.pdf index 2d072eac14..27adf50d92 100644 Binary files a/MekHQ/docs/Personnel Modules/Turnover & Retention Module.pdf and b/MekHQ/docs/Personnel Modules/Turnover & Retention Module.pdf differ diff --git a/MekHQ/src/mekhq/campaign/ResolveScenarioTracker.java b/MekHQ/src/mekhq/campaign/ResolveScenarioTracker.java index 60d3d8f27c..6a3fb160d1 100644 --- a/MekHQ/src/mekhq/campaign/ResolveScenarioTracker.java +++ b/MekHQ/src/mekhq/campaign/ResolveScenarioTracker.java @@ -1475,6 +1475,7 @@ public void resolveScenario(ScenarioStatus resolution, String report) { person.getHyperlinkedName())); } + // prisoners should generate with lower than average loyalty, so only roll 2d6 person.generateLoyalty(Compute.d6(2)); } else { continue; diff --git a/MekHQ/src/mekhq/campaign/personnel/Person.java b/MekHQ/src/mekhq/campaign/personnel/Person.java index cd1fb0567d..81c7e9cf91 100644 --- a/MekHQ/src/mekhq/campaign/personnel/Person.java +++ b/MekHQ/src/mekhq/campaign/personnel/Person.java @@ -3800,7 +3800,7 @@ public void fixReferences(final Campaign campaign) { * @throws IllegalArgumentException if the provided roll is not between 3 and 18 */ public void generateLoyalty(int roll) { - if (roll == 3) { + if (roll <= 3) { setLoyalty(3); } else if (roll == 4) { setLoyalty(2); @@ -3812,7 +3812,7 @@ public void generateLoyalty(int roll) { setLoyalty(-1); } else if (roll == 17) { setLoyalty(-2); - } else if (roll == 18){ + } else if (roll >= 18){ setLoyalty(-3); } else { throw new IllegalArgumentException("Invalid roll in mekhq/campaign/personnel/Person.java/generateLoyalty: " + roll); diff --git a/MekHQ/src/mekhq/campaign/personnel/education/EducationController.java b/MekHQ/src/mekhq/campaign/personnel/education/EducationController.java index daafb53cdd..0eaf6ad072 100644 --- a/MekHQ/src/mekhq/campaign/personnel/education/EducationController.java +++ b/MekHQ/src/mekhq/campaign/personnel/education/EducationController.java @@ -816,10 +816,12 @@ private static void processGraduation(Campaign campaign, Person person, Academy person.setEduHighestEducation(EducationLevel.parseFromInt(educationLevel)); } - if ((academy.isReeducationCamp()) && (campaign.getCampaignOptions().isUseReeducationCamps())) { - if (!Objects.equals(person.getOriginFaction(), campaign.getFaction())) { + if (academy.isReeducationCamp()) { + if (campaign.getCampaignOptions().isUseReeducationCamps()) { person.setOriginFaction(campaign.getFaction()); } + + person.generateLoyalty(Compute.d6(4)); } }