From d1bdc94b16b31d09e3f889eb84ca18db3f97714d Mon Sep 17 00:00:00 2001 From: IllianiCBT Date: Mon, 7 Apr 2025 12:27:00 -0500 Subject: [PATCH 1/2] Fixed Infinite Loop in `getAvailableForceIDs` - Updated the condition in `StratconRulesManager` to include a check for the `bypassRoleRestrictions` flag when determining if suitable forces are empty. - Prevented unintended infinite fallback to `getAvailableForceIDs` in the event no suitable forces exist, even with restrictions relaxed. --- MekHQ/src/mekhq/campaign/stratcon/StratconRulesManager.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MekHQ/src/mekhq/campaign/stratcon/StratconRulesManager.java b/MekHQ/src/mekhq/campaign/stratcon/StratconRulesManager.java index edcf36a3b0..b2f31f0319 100644 --- a/MekHQ/src/mekhq/campaign/stratcon/StratconRulesManager.java +++ b/MekHQ/src/mekhq/campaign/stratcon/StratconRulesManager.java @@ -2412,7 +2412,7 @@ public static List getAvailableForceIDs(Campaign campaign, AtBContract } } - if (suitableForces.isEmpty()) { + if (suitableForces.isEmpty() && !bypassRoleRestrictions) { suitableForces = getAvailableForceIDs(campaign, contract, true); } From e99e8324228a13bc69b106a0d4ad302a79f8a534 Mon Sep 17 00:00:00 2001 From: IllianiCBT Date: Mon, 7 Apr 2025 12:34:04 -0500 Subject: [PATCH 2/2] Improved Logging for Stratcon Force Selection - Added detailed logging to indicate when no suitable combat teams are found. --- .../mekhq/campaign/stratcon/StratconRulesManager.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/MekHQ/src/mekhq/campaign/stratcon/StratconRulesManager.java b/MekHQ/src/mekhq/campaign/stratcon/StratconRulesManager.java index b2f31f0319..7a726db1b1 100644 --- a/MekHQ/src/mekhq/campaign/stratcon/StratconRulesManager.java +++ b/MekHQ/src/mekhq/campaign/stratcon/StratconRulesManager.java @@ -2412,8 +2412,14 @@ public static List getAvailableForceIDs(Campaign campaign, AtBContract } } - if (suitableForces.isEmpty() && !bypassRoleRestrictions) { - suitableForces = getAvailableForceIDs(campaign, contract, true); + if (suitableForces.isEmpty()) { + if (!bypassRoleRestrictions) { + logger.info("No suitable combat teams found for contract {}. Relaxing restrictions", contract.getId()); + suitableForces = getAvailableForceIDs(campaign, contract, true); + } else { + logger.info("No suitable combat teams found for contract {} despite relaxed restrictions." + + " Scenario generation will likely be skipped.", contract.getId()); + } } return suitableForces;