From 754419b04660ec7133255553edc7359929e6bf68 Mon Sep 17 00:00:00 2001 From: UlyssesSockdrawer Date: Tue, 8 Oct 2024 19:04:08 +0100 Subject: [PATCH 1/3] Check if force is combat force Suggestion from Illiani in the discord that might get non-combat flag in TO&E to work. --- MekHQ/src/mekhq/campaign/stratcon/StratconRulesManager.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/MekHQ/src/mekhq/campaign/stratcon/StratconRulesManager.java b/MekHQ/src/mekhq/campaign/stratcon/StratconRulesManager.java index dbb37eb785..7544927855 100644 --- a/MekHQ/src/mekhq/campaign/stratcon/StratconRulesManager.java +++ b/MekHQ/src/mekhq/campaign/stratcon/StratconRulesManager.java @@ -1125,6 +1125,10 @@ public static List getAvailableForceIDs(int unitType, Campaign campaign continue; } + if (!force.isCombatForce()) { + continue; + } + int primaryUnitType = force.getPrimaryUnitType(campaign); boolean noReinforcementRestriction = !reinforcements || (reinforcements && (getReinforcementType(force.getId(), currentTrack, campaign, From 1c781ae9dc8d842493ff1df50238d79cd02f2016 Mon Sep 17 00:00:00 2001 From: UlyssesSockdrawer Date: Tue, 8 Oct 2024 19:16:05 +0100 Subject: [PATCH 2/3] Check if force is not top level Also added some comments, and another bit of code suggested by Illiani --- MekHQ/src/mekhq/campaign/stratcon/StratconRulesManager.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/MekHQ/src/mekhq/campaign/stratcon/StratconRulesManager.java b/MekHQ/src/mekhq/campaign/stratcon/StratconRulesManager.java index 7544927855..6285430d5a 100644 --- a/MekHQ/src/mekhq/campaign/stratcon/StratconRulesManager.java +++ b/MekHQ/src/mekhq/campaign/stratcon/StratconRulesManager.java @@ -1125,10 +1125,16 @@ public static List getAvailableForceIDs(int unitType, Campaign campaign continue; } + //checks if force is flagged as combat in TOE if (!force.isCombatForce()) { continue; } + //checks if force is not top level (suggested by Illiani) + if (force.getFormationLevel().getDepth() != 0) { + continue; + } + int primaryUnitType = force.getPrimaryUnitType(campaign); boolean noReinforcementRestriction = !reinforcements || (reinforcements && (getReinforcementType(force.getId(), currentTrack, campaign, From 4e727905aacc6c643f12689709af7b98758b51b8 Mon Sep 17 00:00:00 2001 From: UlyssesSockdrawer Date: Tue, 8 Oct 2024 20:52:25 +0100 Subject: [PATCH 3/3] Change where we check if force is combat flagged With some help and use of debugger, we found the bit where it steps through each force to check the flag. I've tested this with the debugger and it looks to work in a test campaign but needs solid testing. --- .../mekhq/campaign/stratcon/StratconRulesManager.java | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/MekHQ/src/mekhq/campaign/stratcon/StratconRulesManager.java b/MekHQ/src/mekhq/campaign/stratcon/StratconRulesManager.java index 6285430d5a..628f367427 100644 --- a/MekHQ/src/mekhq/campaign/stratcon/StratconRulesManager.java +++ b/MekHQ/src/mekhq/campaign/stratcon/StratconRulesManager.java @@ -1087,6 +1087,7 @@ public static List getAvailableForceIDs(Campaign campaign) { .mapToInt(key -> key) .mapToObj(campaign::getForce).filter(force -> (force != null) && !force.isDeployed() + && force.isCombatForce() && !forcesInTracks.contains(force.getId())) .map(Force::getId) .collect(Collectors.toList()); @@ -1125,16 +1126,6 @@ public static List getAvailableForceIDs(int unitType, Campaign campaign continue; } - //checks if force is flagged as combat in TOE - if (!force.isCombatForce()) { - continue; - } - - //checks if force is not top level (suggested by Illiani) - if (force.getFormationLevel().getDepth() != 0) { - continue; - } - int primaryUnitType = force.getPrimaryUnitType(campaign); boolean noReinforcementRestriction = !reinforcements || (reinforcements && (getReinforcementType(force.getId(), currentTrack, campaign,