From b638eb7f1e488d2a30dc8602b4474943118f3ed7 Mon Sep 17 00:00:00 2001 From: IllianiCBT Date: Wed, 24 Apr 2024 17:04:07 -0500 Subject: [PATCH 01/12] Adjusted force generation calculations to help balance StratCon OpFors --- .../mission/AtBDynamicScenarioFactory.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/MekHQ/src/mekhq/campaign/mission/AtBDynamicScenarioFactory.java b/MekHQ/src/mekhq/campaign/mission/AtBDynamicScenarioFactory.java index e37d86c295..ac4cf78d83 100644 --- a/MekHQ/src/mekhq/campaign/mission/AtBDynamicScenarioFactory.java +++ b/MekHQ/src/mekhq/campaign/mission/AtBDynamicScenarioFactory.java @@ -370,8 +370,14 @@ public static int generateForce(AtBDynamicScenario scenario, AtBContract contrac // determine generation parameters int forceBV = 0; + + double forceMultiplier = getDifficultyMultiplier(campaign); + forceTemplate.setForceMultiplier(forceMultiplier); + int forceBVBudget = (int) (effectiveBV * forceTemplate.getForceMultiplier()); + int forceUnitBudget = 0; + if (forceTemplate.getGenerationMethod() == ForceGenerationMethod.UnitCountScaled.ordinal()) { forceUnitBudget = (int) (effectiveUnitCount * forceTemplate.getForceMultiplier()); } else if ((forceTemplate.getGenerationMethod() == ForceGenerationMethod.FixedUnitCount.ordinal()) || @@ -504,6 +510,19 @@ public static int generateForce(AtBDynamicScenario scenario, AtBContract contrac generatedEntities.remove(Compute.randomInt(generatedEntities.size())); } + if (forceTemplate.getGenerationMethod() == ForceGenerationMethod.BVScaled.ordinal()) { + // remove random units until forceBV is below 110% of forceBVBudget + while (((double) forceBV / forceBVBudget) > 1.1) { + generatedEntities.remove(Compute.randomInt(generatedEntities.size())); + + // update forceBV + for (Entity entity : generatedEntities) { + forceBV += entity.calculateBattleValue(); + ; + } + } + } + // "flavor" feature - fill up APCs with infantry List transportedEntities = fillTransports(scenario, generatedEntities, factionCode, skill, quality, campaign); generatedEntities.addAll(transportedEntities); From afa5da302b57086dac644d29b99049c4605f2760 Mon Sep 17 00:00:00 2001 From: IllianiCBT Date: Wed, 24 Apr 2024 17:05:17 -0500 Subject: [PATCH 02/12] Adjusted force generation calculations to help balance StratCon OpFors --- MekHQ/src/mekhq/campaign/mission/AtBDynamicScenarioFactory.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MekHQ/src/mekhq/campaign/mission/AtBDynamicScenarioFactory.java b/MekHQ/src/mekhq/campaign/mission/AtBDynamicScenarioFactory.java index ac4cf78d83..7f55f0620f 100644 --- a/MekHQ/src/mekhq/campaign/mission/AtBDynamicScenarioFactory.java +++ b/MekHQ/src/mekhq/campaign/mission/AtBDynamicScenarioFactory.java @@ -82,7 +82,7 @@ public class AtBDynamicScenarioFactory { BombType.B_LG, BombType.B_ARROW, BombType.B_HOMING, BombType.B_TAG }; private static final int[] validBotAABombs = { BombType.B_RL, BombType.B_LAA, BombType.B_AAA }; - private static final int[] minimumBVPercentage = { 50, 60, 70, 80, 90, 100 }; + private static final int[] minimumBVPercentage = { 50, 55, 60, 70, 75, 80 }; // target number for 2d6 roll of infantry being upgraded to battle armor, indexed by dragoons rating private static final int[] infantryToBAUpgradeTNs = { 12, 10, 8, 6, 4, 2 }; From 928e4c665caf623f8ee3626589e9f856fc01703e Mon Sep 17 00:00:00 2001 From: IllianiCBT Date: Wed, 24 Apr 2024 17:40:40 -0500 Subject: [PATCH 03/12] Further adjustments --- .../mekhq/campaign/mission/AtBDynamicScenarioFactory.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/MekHQ/src/mekhq/campaign/mission/AtBDynamicScenarioFactory.java b/MekHQ/src/mekhq/campaign/mission/AtBDynamicScenarioFactory.java index 7f55f0620f..ed8b33ae89 100644 --- a/MekHQ/src/mekhq/campaign/mission/AtBDynamicScenarioFactory.java +++ b/MekHQ/src/mekhq/campaign/mission/AtBDynamicScenarioFactory.java @@ -82,7 +82,7 @@ public class AtBDynamicScenarioFactory { BombType.B_LG, BombType.B_ARROW, BombType.B_HOMING, BombType.B_TAG }; private static final int[] validBotAABombs = { BombType.B_RL, BombType.B_LAA, BombType.B_AAA }; - private static final int[] minimumBVPercentage = { 50, 55, 60, 70, 75, 80 }; + private static final int[] minimumBVPercentage = { 50, 65, 70, 80, 90, 100 }; // target number for 2d6 roll of infantry being upgraded to battle armor, indexed by dragoons rating private static final int[] infantryToBAUpgradeTNs = { 12, 10, 8, 6, 4, 2 }; @@ -506,13 +506,13 @@ public static int generateForce(AtBDynamicScenario scenario, AtBContract contrac } // chop out random units until we drop down to our unit count budget - while (forceUnitBudget > 0 && generatedEntities.size() > forceUnitBudget) { + while ((forceUnitBudget > 0) && (generatedEntities.size() > forceUnitBudget)) { generatedEntities.remove(Compute.randomInt(generatedEntities.size())); } if (forceTemplate.getGenerationMethod() == ForceGenerationMethod.BVScaled.ordinal()) { // remove random units until forceBV is below 110% of forceBVBudget - while (((double) forceBV / forceBVBudget) > 1.1) { + while ((generatedEntities.size() > 1) && (((double) forceBV / forceBVBudget)) > 1.1) { generatedEntities.remove(Compute.randomInt(generatedEntities.size())); // update forceBV From 0a2451935e42d1d64181961988cc3291012e47e0 Mon Sep 17 00:00:00 2001 From: Daniel L- <103902653+IllianiCBT@users.noreply.github.com> Date: Wed, 24 Apr 2024 18:13:33 -0500 Subject: [PATCH 04/12] Update AtBDynamicScenarioFactory.java I have no idea why these changes weren't in the original Push --- MekHQ/src/mekhq/campaign/mission/AtBDynamicScenarioFactory.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MekHQ/src/mekhq/campaign/mission/AtBDynamicScenarioFactory.java b/MekHQ/src/mekhq/campaign/mission/AtBDynamicScenarioFactory.java index ed8b33ae89..20d2b129b6 100644 --- a/MekHQ/src/mekhq/campaign/mission/AtBDynamicScenarioFactory.java +++ b/MekHQ/src/mekhq/campaign/mission/AtBDynamicScenarioFactory.java @@ -82,7 +82,7 @@ public class AtBDynamicScenarioFactory { BombType.B_LG, BombType.B_ARROW, BombType.B_HOMING, BombType.B_TAG }; private static final int[] validBotAABombs = { BombType.B_RL, BombType.B_LAA, BombType.B_AAA }; - private static final int[] minimumBVPercentage = { 50, 65, 70, 80, 90, 100 }; + private static final int[] minimumBVPercentage = { 50, 55, 60, 70, 75, 80 }; // target number for 2d6 roll of infantry being upgraded to battle armor, indexed by dragoons rating private static final int[] infantryToBAUpgradeTNs = { 12, 10, 8, 6, 4, 2 }; From 5d72ae867c62c7765095dab50c4d1b06d467719b Mon Sep 17 00:00:00 2001 From: IllianiCBT Date: Wed, 24 Apr 2024 20:59:22 -0500 Subject: [PATCH 05/12] Added scenario modifiers to the Campaign Options settings, allowing users to adjust their maximum number, appearance chance, and BV Cap values. --- .../CampaignOptionsDialog.properties | 7 +++ MekHQ/src/mekhq/campaign/CampaignOptions.java | 39 ++++++++++++ .../mekhq/gui/panes/CampaignOptionsPane.java | 59 +++++++++++++++++++ 3 files changed, 105 insertions(+) diff --git a/MekHQ/resources/mekhq/resources/CampaignOptionsDialog.properties b/MekHQ/resources/mekhq/resources/CampaignOptionsDialog.properties index ceaa4eda73..f95e1734da 100644 --- a/MekHQ/resources/mekhq/resources/CampaignOptionsDialog.properties +++ b/MekHQ/resources/mekhq/resources/CampaignOptionsDialog.properties @@ -603,6 +603,13 @@ chkUseStratCon.text=Use StratCon campaign rules chkUseStratCon.toolTipText=An update of the AtB ruleset. Highly experimental. lblSkillLevel.text=Skill Level lblSkillLevel.toolTipText=This is the difficulty level for generated scenarios.
Values above Elite are not recommended. +lblScenarioMod.text=Random Scenario Modifiers +lblScenarioModMax.text=Maximum: +lblScenarioModMax.toolTipText=This is the maximum number of random scenario mods that can spawn on for a single Scenario. Excludes fixed modifiers. +lblScenarioModChance.text=Chance +lblScenarioModChance.toolTipText=This is the percentage chance for a random scenario mod to appear for a Scenario +lblScenarioModBV.text=BV Cap +lblScenarioModBV.toolTipText=This is the percentage of total BV that can be used for each scenario mods. This also affects fixed modifiers. chkUseShareSystem.text=Use share system chkUseShareSystem.toolTipText=All personnel have a stake in the unit. This system lowers profits but can increase retention. chkSharesExcludeLargeCraft.text=Exclude large craft from share value diff --git a/MekHQ/src/mekhq/campaign/CampaignOptions.java b/MekHQ/src/mekhq/campaign/CampaignOptions.java index ce5ca9d473..193929b484 100644 --- a/MekHQ/src/mekhq/campaign/CampaignOptions.java +++ b/MekHQ/src/mekhq/campaign/CampaignOptions.java @@ -474,6 +474,9 @@ public static String getTransitUnitName(final int unit) { private boolean usePlanetaryConditions; private int fixedMapChance; private int spaUpgradeIntensity; + private int scenarioModMax; + private int scenarioModChance; + private int scenarioModBV; //endregion Against the Bot Tab //endregion Variable Declarations @@ -978,6 +981,9 @@ public CampaignOptions() { useWeatherConditions = true; useLightConditions = true; usePlanetaryConditions = false; + setScenarioModMax(3); + setScenarioModChance(25); + setScenarioModBV(50); //endregion Against the Bot Tab } //endregion Constructors @@ -3480,6 +3486,30 @@ public void setSpaUpgradeIntensity(final int spaUpgradeIntensity) { this.spaUpgradeIntensity = spaUpgradeIntensity; } + public int getScenarioModMax() { + return scenarioModMax; + } + + public void setScenarioModMax(final int scenarioModMax) { + this.scenarioModMax = scenarioModMax; + } + + public int getScenarioModChance() { + return scenarioModChance; + } + + public void setScenarioModChance(final int scenarioModChance) { + this.scenarioModChance = scenarioModChance; + } + + public int getScenarioModBV() { + return scenarioModBV; + } + + public void setScenarioModBV(final int scenarioModBV) { + this.scenarioModBV = scenarioModBV; + } + //region File IO public void writeToXml(final PrintWriter pw, int indent) { MHQXMLUtility.writeSimpleXMLOpenTag(pw, indent++, "campaignOptions"); @@ -3861,6 +3891,9 @@ public void writeToXml(final PrintWriter pw, int indent) { MHQXMLUtility.writeSimpleXMLTag(pw, indent, "opForLocalUnitChance", getOpForLocalUnitChance()); MHQXMLUtility.writeSimpleXMLTag(pw, indent, "fixedMapChance", fixedMapChance); MHQXMLUtility.writeSimpleXMLTag(pw, indent, "spaUpgradeIntensity", spaUpgradeIntensity); + MHQXMLUtility.writeSimpleXMLTag(pw, indent, "scenarioModMax", scenarioModMax); + MHQXMLUtility.writeSimpleXMLTag(pw, indent, "scenarioModChance", scenarioModChance); + MHQXMLUtility.writeSimpleXMLTag(pw, indent, "scenarioModBV", scenarioModBV); MHQXMLUtility.writeSimpleXMLTag(pw, indent, "planetTechAcquisitionBonus", planetTechAcquisitionBonus); MHQXMLUtility.writeSimpleXMLTag(pw, indent, "planetIndustryAcquisitionBonus", planetIndustryAcquisitionBonus); @@ -4689,6 +4722,12 @@ public static CampaignOptions generateCampaignOptionsFromXml(Node wn, Version ve retVal.fixedMapChance = Integer.parseInt(wn2.getTextContent().trim()); } else if (wn2.getNodeName().equalsIgnoreCase("spaUpgradeIntensity")) { retVal.setSpaUpgradeIntensity(Integer.parseInt(wn2.getTextContent().trim())); + } else if (wn2.getNodeName().equalsIgnoreCase("scenarioModMax")) { + retVal.setScenarioModMax(Integer.parseInt(wn2.getTextContent().trim())); + } else if (wn2.getNodeName().equalsIgnoreCase("scenarioModChance")) { + retVal.setScenarioModChance(Integer.parseInt(wn2.getTextContent().trim())); + } else if (wn2.getNodeName().equalsIgnoreCase("scenarioModBV")) { + retVal.setScenarioModBV(Integer.parseInt(wn2.getTextContent().trim())); //region Legacy // Removed in 0.49.* diff --git a/MekHQ/src/mekhq/gui/panes/CampaignOptionsPane.java b/MekHQ/src/mekhq/gui/panes/CampaignOptionsPane.java index 0d386ccd4f..399d38cdaf 100644 --- a/MekHQ/src/mekhq/gui/panes/CampaignOptionsPane.java +++ b/MekHQ/src/mekhq/gui/panes/CampaignOptionsPane.java @@ -516,6 +516,9 @@ public class CampaignOptionsPane extends AbstractMHQTabbedPane { private JCheckBox chkUseWeatherConditions; private JCheckBox chkUseLightConditions; private JCheckBox chkUsePlanetaryConditions; + private JSpinner spnScenarioModMax; + private JSpinner spnScenarioModChance; + private JSpinner spnScenarioModBV; //endregion Against the Bot Tab //endregion Variable Declarations @@ -3041,6 +3044,56 @@ private JScrollPane createAgainstTheBotTab() { gridBagConstraints.anchor = GridBagConstraints.NORTHWEST; panSubAtBScenario.add(panSPAUpgradeIntensity, gridBagConstraints); + JPanel panScenarioMod = new JPanel(); + JLabel lblScenarioMod = new JLabel(resources.getString("lblScenarioMod.text")); + panScenarioMod.add(lblScenarioMod); + gridBagConstraints.gridx = 0; + gridBagConstraints.gridy = yTablePosition++; + gridBagConstraints.gridwidth = 2; + gridBagConstraints.fill = GridBagConstraints.NONE; + gridBagConstraints.insets = new Insets(0, 5, 5, 5); + gridBagConstraints.anchor = GridBagConstraints.NORTHWEST; + panSubAtBScenario.add(panScenarioMod, gridBagConstraints); + + JLabel lblScenarioModMax = new JLabel(resources.getString("lblScenarioModMax.text")); + lblScenarioModMax.setToolTipText(resources.getString("lblScenarioModMax.toolTipText")); + spnScenarioModMax = new JSpinner(new SpinnerNumberModel(3, 0, 10, 1)); + panScenarioMod.add(lblScenarioModMax); + panScenarioMod.add(spnScenarioModMax); + gridBagConstraints.gridx = 0; + gridBagConstraints.gridy = yTablePosition++; + gridBagConstraints.gridwidth = 2; + gridBagConstraints.fill = GridBagConstraints.NONE; + gridBagConstraints.insets = new Insets(0, 5, 5, 5); + gridBagConstraints.anchor = GridBagConstraints.NORTHWEST; + panSubAtBScenario.add(panScenarioMod, gridBagConstraints); + + JLabel lblScenarioModChance = new JLabel(resources.getString("lblScenarioModChance.text")); + lblScenarioModChance.setToolTipText(resources.getString("lblScenarioModChance.toolTipText")); + spnScenarioModChance = new JSpinner(new SpinnerNumberModel(25, 5, 100, 5)); + panScenarioMod.add(lblScenarioModChance); + panScenarioMod.add(spnScenarioModChance); + gridBagConstraints.gridx = 0; + gridBagConstraints.gridy = yTablePosition++; + gridBagConstraints.gridwidth = 2; + gridBagConstraints.fill = GridBagConstraints.NONE; + gridBagConstraints.insets = new Insets(0, 5, 5, 5); + gridBagConstraints.anchor = GridBagConstraints.NORTHWEST; + panSubAtBScenario.add(panScenarioMod, gridBagConstraints); + + JLabel lblScenarioModBV = new JLabel(resources.getString("lblScenarioModBV.text")); + lblScenarioModBV.setToolTipText(resources.getString("lblScenarioModBV.toolTipText")); + spnScenarioModBV = new JSpinner(new SpinnerNumberModel(50, 5, 100, 5)); + panScenarioMod.add(lblScenarioModBV); + panScenarioMod.add(spnScenarioModBV); + gridBagConstraints.gridx = 0; + gridBagConstraints.gridy = yTablePosition++; + gridBagConstraints.gridwidth = 2; + gridBagConstraints.fill = GridBagConstraints.NONE; + gridBagConstraints.insets = new Insets(0, 5, 5, 5); + gridBagConstraints.anchor = GridBagConstraints.NORTHWEST; + panSubAtBScenario.add(panScenarioMod, gridBagConstraints); + JScrollPane scrAtB = new JScrollPane(panAtB); scrAtB.setPreferredSize(new Dimension(500, 410)); return scrAtB; @@ -6431,6 +6484,9 @@ public void setOptions(@Nullable CampaignOptions options, chkAdjustPlayerVehicles.setSelected(options.isAdjustPlayerVehicles()); spnFixedMapChance.setValue(options.getFixedMapChance()); spnSPAUpgradeIntensity.setValue(options.getSpaUpgradeIntensity()); + spnScenarioModMax.setValue(options.getScenarioModMax()); + spnScenarioModChance.setValue(options.getScenarioModChance()); + spnScenarioModBV.setValue(options.getScenarioModBV()); chkRegionalMechVariations.setSelected(options.isRegionalMechVariations()); chkAttachedPlayerCamouflage.setSelected(options.isAttachedPlayerCamouflage()); chkPlayerControlsAttachedUnits.setSelected(options.isPlayerControlsAttachedUnits()); @@ -6842,6 +6898,9 @@ public void updateOptions() { options.setOpForLocalUnitChance((Integer) spnOpForLocalForceChance.getValue()); options.setFixedMapChance((Integer) spnFixedMapChance.getValue()); options.setSpaUpgradeIntensity((Integer) spnSPAUpgradeIntensity.getValue()); + options.setScenarioModMax((Integer) spnScenarioModMax.getValue()); + options.setScenarioModChance((Integer) spnScenarioModChance.getValue()); + options.setScenarioModBV((Integer) spnScenarioModBV.getValue()); options.setUseDropShips(chkUseDropShips.isSelected()); for (int i = 0; i < spnAtBBattleChance.length; i++) { From 5d028814b433c215a7dbe6e6941b4f5c5f38d4c6 Mon Sep 17 00:00:00 2001 From: IllianiCBT Date: Wed, 24 Apr 2024 21:23:55 -0500 Subject: [PATCH 06/12] Updated scenario modifiers and force generation The function `setScenarioModifiers` and the method `generateForce` were updated. The former was adjusted to use a random number within a provided range, instead of a hardcoded value, when setting scenario modifiers. The latter was altered to use a boolean parameter, `isScenarioModifier`, allowing the method to distinguish if the force generation is triggered by a scenario modifier or not. --- .../mission/AtBDynamicScenarioFactory.java | 47 ++++++++++++------- .../atb/AtBScenarioModifierApplicator.java | 2 +- .../stratcon/StratconRulesManager.java | 2 +- 3 files changed, 31 insertions(+), 20 deletions(-) diff --git a/MekHQ/src/mekhq/campaign/mission/AtBDynamicScenarioFactory.java b/MekHQ/src/mekhq/campaign/mission/AtBDynamicScenarioFactory.java index 20d2b129b6..d04bc001ea 100644 --- a/MekHQ/src/mekhq/campaign/mission/AtBDynamicScenarioFactory.java +++ b/MekHQ/src/mekhq/campaign/mission/AtBDynamicScenarioFactory.java @@ -256,7 +256,7 @@ private static int generateForces(AtBDynamicScenario scenario, AtBContract contr generatedLanceCount += generateFixedForce(scenario, contract, campaign, forceTemplate); } else { generatedLanceCount += generateForce(scenario, contract, campaign, - effectiveBV, effectiveUnitCount, weightClass, forceTemplate); + effectiveBV, effectiveUnitCount, weightClass, forceTemplate, false); } } } @@ -314,10 +314,12 @@ public static int generateFixedForce(AtBDynamicScenario scenario, AtBContract co * @param effectiveUnitCount The effective unit count, up to this point, of player and allied units * @param weightClass The maximum weight class of the units to generate (ignored ) * @param forceTemplate The force template to use to generate the force + * @param isScenarioModifier true if the source of generateForce() was a scenario modifier * @return How many "lances" or other individual units were generated. */ public static int generateForce(AtBDynamicScenario scenario, AtBContract contract, Campaign campaign, - int effectiveBV, int effectiveUnitCount, int weightClass, ScenarioForceTemplate forceTemplate) { + int effectiveBV, int effectiveUnitCount, int weightClass, + ScenarioForceTemplate forceTemplate, boolean isScenarioModifier) { // don't generate forces flagged as player-supplied if (forceTemplate.getGenerationMethod() == ForceGenerationMethod.PlayerSupplied.ordinal()) { return 0; @@ -376,6 +378,10 @@ public static int generateForce(AtBDynamicScenario scenario, AtBContract contrac int forceBVBudget = (int) (effectiveBV * forceTemplate.getForceMultiplier()); + if (isScenarioModifier) { + forceBVBudget = forceBVBudget * campaign.getCampaignOptions().getScenarioModBV(); + } + int forceUnitBudget = 0; if (forceTemplate.getGenerationMethod() == ForceGenerationMethod.UnitCountScaled.ordinal()) { @@ -905,26 +911,31 @@ private static void setScenarioMap(AtBDynamicScenario scenario, int mapChance) { * * @param scenario */ - public static void setScenarioModifiers(AtBDynamicScenario scenario) { - // this is hardcoded for now, but the eventual plan is to let the user configure how many modifiers - // they want applied - int numModsRoll = Compute.d6(2); + public static void setScenarioModifiers(Campaign campaign, AtBDynamicScenario scenario) { int numMods = 0; - if (numModsRoll >= 11) { - numMods = 3; - } else if (numModsRoll >= 9) { - numMods = 2; - } else if (numModsRoll >= 7) { - numMods = 1; - } + boolean addMods = true; + int modMax = campaign.getCampaignOptions().getScenarioModMax(); + int modChance = campaign.getCampaignOptions().getScenarioModChance() - 1; - for (int x = 0; x < numMods; x++) { - AtBScenarioModifier scenarioMod = AtBScenarioModifier.getRandomBattleModifier(scenario.getTemplate().mapParameters.getMapLocation()); + if (modMax != 0) { + while (addMods) { + if (Compute.randomInt(100) >= modChance) { + numMods++; - scenario.addScenarioModifier(scenarioMod); + if (numMods >= modMax) { + addMods = false; + } + } + } - if (scenarioMod.getBlockFurtherEvents()) { - break; + for (int x = 0; x < numMods; x++) { + AtBScenarioModifier scenarioMod = AtBScenarioModifier.getRandomBattleModifier(scenario.getTemplate().mapParameters.getMapLocation()); + + scenario.addScenarioModifier(scenarioMod); + + if (scenarioMod.getBlockFurtherEvents()) { + break; + } } } } diff --git a/MekHQ/src/mekhq/campaign/mission/atb/AtBScenarioModifierApplicator.java b/MekHQ/src/mekhq/campaign/mission/atb/AtBScenarioModifierApplicator.java index 40f68f8b2e..7594954756 100644 --- a/MekHQ/src/mekhq/campaign/mission/atb/AtBScenarioModifierApplicator.java +++ b/MekHQ/src/mekhq/campaign/mission/atb/AtBScenarioModifierApplicator.java @@ -64,7 +64,7 @@ private static void postAddForce(Campaign campaign, AtBDynamicScenario scenario, int deploymentZone = AtBDynamicScenarioFactory.calculateDeploymentZone(templateToApply, scenario, templateToApply.getForceName()); AtBDynamicScenarioFactory.generateForce(scenario, scenario.getContract(campaign), campaign, - effectiveBV, effectiveUnitCount, EntityWeightClass.WEIGHT_ASSAULT, templateToApply); + effectiveBV, effectiveUnitCount, EntityWeightClass.WEIGHT_ASSAULT, templateToApply, true); // the most recently added bot force is the one we just generated BotForce generatedBotForce = scenario.getBotForce(scenario.getNumBots() - 1); diff --git a/MekHQ/src/mekhq/campaign/stratcon/StratconRulesManager.java b/MekHQ/src/mekhq/campaign/stratcon/StratconRulesManager.java index b177720743..7f5a40bddf 100644 --- a/MekHQ/src/mekhq/campaign/stratcon/StratconRulesManager.java +++ b/MekHQ/src/mekhq/campaign/stratcon/StratconRulesManager.java @@ -779,7 +779,7 @@ static StratconScenario generateScenario(Campaign campaign, AtBContract contract scenario.setRequiredScenario(true); } - AtBDynamicScenarioFactory.setScenarioModifiers(scenario.getBackingScenario()); + AtBDynamicScenarioFactory.setScenarioModifiers(campaign, scenario.getBackingScenario()); scenario.setCurrentState(ScenarioState.UNRESOLVED); setScenarioDates(track, campaign, scenario); From f3def63e4262b08f78667f04eac0c86bfde705da Mon Sep 17 00:00:00 2001 From: IllianiCBT Date: Thu, 25 Apr 2024 00:21:50 -0500 Subject: [PATCH 07/12] Update scenario modifiers and implement BV cap override Changes mainly involve modifying whether a component contributes to the map size or battle value (BV), and also includes the addition of an override BV cap in some scenarios. --- .../data/scenariomodifiers/AlliedASFAce01.xml | 5 ++-- .../scenariomodifiers/AlliedAirGarrison.xml | 2 +- .../scenariomodifiers/AlliedAirSupport.xml | 2 +- .../AlliedAirSupportBombers.xml | 2 +- .../scenariomodifiers/AlliedArtyGarrison.xml | 2 +- .../data/scenariomodifiers/AlliedCavLance.xml | 5 ++-- .../scenariomodifiers/AlliedGroundSupport.xml | 2 +- .../data/scenariomodifiers/AlliedHorseCav.xml | 7 ++--- .../scenariomodifiers/AlliedMechAceCRD.xml | 7 ++--- .../scenariomodifiers/AlliedMechAceGLT.xml | 7 ++--- .../scenariomodifiers/AlliedMechAceGOL.xml | 7 ++--- .../scenariomodifiers/AlliedMechAceOTT.xml | 7 ++--- .../scenariomodifiers/AlliedMechAceTBT.xml | 7 ++--- .../scenariomodifiers/AlliedMechGarrison.xml | 2 +- .../AlliedMechReinforcements.xml | 2 +- .../AlliedReinforcements.xml | 2 +- .../AlliedTankReinforcements.xml | 2 +- .../scenariomodifiers/AlliedTraineesAir.xml | 2 +- .../AlliedTraineesGround.xml | 2 +- .../data/scenariomodifiers/ArmednArmored.xml | 2 +- MekHQ/data/scenariomodifiers/BadEvent.xml | 1 - MekHQ/data/scenariomodifiers/BadIntelAir.xml | 2 +- .../data/scenariomodifiers/BadIntelGround.xml | 2 +- .../scenariomodifiers/EnemyAceMechARC2R.xml | 6 ++-- .../data/scenariomodifiers/EnemyAirPatrol.xml | 2 +- .../scenariomodifiers/EnemyAirSupport.xml | 2 +- .../EnemyAirSupportBombers.xml | 2 +- .../data/scenariomodifiers/EnemyDropship.xml | 2 +- .../EnemyFieldArtyOffboard.xml | 6 ++-- MekHQ/data/scenariomodifiers/EnemyHotDrop.xml | 2 +- .../EnemyMechReinforcements.xml | 2 +- .../scenariomodifiers/EnemyReinforcements.xml | 2 +- .../EnemyTankReinforcements.xml | 2 +- .../scenariomodifiers/FacilityAlliedEvac.xml | 2 +- .../GroundedEnemyDropship.xml | 2 +- .../HostileBVBudgetIncrease.xml | 2 +- .../scenariomodifiers/HouseOfficerAir.xml | 4 +-- .../scenariomodifiers/HouseOfficerGround.xml | 2 +- .../scenariomodifiers/IntegratedAlliesAir.xml | 4 +-- .../IntegratedAlliesGround.xml | 4 +-- MekHQ/data/scenariomodifiers/LiaisonAir.xml | 4 +-- .../data/scenariomodifiers/LiaisonGround.xml | 4 +-- .../scenariomodifiers/LocalGarrisonBoats.xml | 2 +- .../LocalGarrisonInfantry.xml | 2 +- .../OverwhelmingEnemyAirReinforcements.xml | 3 +- .../OverwhelmingEnemyGroundReinforcements.xml | 3 +- .../scenariomodifiers/PiratesIncomingAir.xml | 3 +- .../PiratesIncomingGround.xml | 3 +- .../scenariomodifiers/PiratesPresentAir.xml | 3 +- .../PiratesPresentGround.xml | 3 +- .../scenariomodifiers/PrimaryAlliesAir.xml | 1 + .../scenariomodifiers/PrimaryAlliesGround.xml | 1 + .../CampaignOptionsDialog.properties | 4 +-- .../mission/AtBDynamicScenarioFactory.java | 2 +- .../mission/ScenarioForceTemplate.java | 30 +++++++++++++++---- 55 files changed, 108 insertions(+), 89 deletions(-) diff --git a/MekHQ/data/scenariomodifiers/AlliedASFAce01.xml b/MekHQ/data/scenariomodifiers/AlliedASFAce01.xml index cf681a7130..b25d4db619 100644 --- a/MekHQ/data/scenariomodifiers/AlliedASFAce01.xml +++ b/MekHQ/data/scenariomodifiers/AlliedASFAce01.xml @@ -12,7 +12,7 @@ -2 2 false - true + false true true false @@ -21,10 +21,9 @@ -1 1 1.0 - 4 Allied ASF Ace 5 - AlliedASFAceHvy.mul + AlliedASFAceHvy.mul 1 4 0 diff --git a/MekHQ/data/scenariomodifiers/AlliedAirGarrison.xml b/MekHQ/data/scenariomodifiers/AlliedAirGarrison.xml index 1b5c0df539..7704c9d1a0 100644 --- a/MekHQ/data/scenariomodifiers/AlliedAirGarrison.xml +++ b/MekHQ/data/scenariomodifiers/AlliedAirGarrison.xml @@ -8,7 +8,7 @@ -3 0 false - true + false true false false diff --git a/MekHQ/data/scenariomodifiers/AlliedAirSupport.xml b/MekHQ/data/scenariomodifiers/AlliedAirSupport.xml index 87b910b323..68d82cac7a 100644 --- a/MekHQ/data/scenariomodifiers/AlliedAirSupport.xml +++ b/MekHQ/data/scenariomodifiers/AlliedAirSupport.xml @@ -9,7 +9,7 @@ -3 false false - false + true false false diff --git a/MekHQ/data/scenariomodifiers/AlliedAirSupportBombers.xml b/MekHQ/data/scenariomodifiers/AlliedAirSupportBombers.xml index 5a8c27eb30..5848fb60c1 100644 --- a/MekHQ/data/scenariomodifiers/AlliedAirSupportBombers.xml +++ b/MekHQ/data/scenariomodifiers/AlliedAirSupportBombers.xml @@ -9,7 +9,7 @@ -3 false false - false + true false false diff --git a/MekHQ/data/scenariomodifiers/AlliedArtyGarrison.xml b/MekHQ/data/scenariomodifiers/AlliedArtyGarrison.xml index b29d5f1924..c590b9c4db 100644 --- a/MekHQ/data/scenariomodifiers/AlliedArtyGarrison.xml +++ b/MekHQ/data/scenariomodifiers/AlliedArtyGarrison.xml @@ -12,7 +12,7 @@ 1 0 false - true + false true false false diff --git a/MekHQ/data/scenariomodifiers/AlliedCavLance.xml b/MekHQ/data/scenariomodifiers/AlliedCavLance.xml index 4e2a144fbe..149d3c1bf2 100644 --- a/MekHQ/data/scenariomodifiers/AlliedCavLance.xml +++ b/MekHQ/data/scenariomodifiers/AlliedCavLance.xml @@ -12,7 +12,7 @@ -2 3 false - true + false true true false @@ -21,10 +21,9 @@ -1 1 1.0 - 4 Allied Cavalry Lance 5 - AlliedCavLance.mul + AlliedCavLance.mul 1 4 0 diff --git a/MekHQ/data/scenariomodifiers/AlliedGroundSupport.xml b/MekHQ/data/scenariomodifiers/AlliedGroundSupport.xml index bb7f83c448..c80153f8c6 100644 --- a/MekHQ/data/scenariomodifiers/AlliedGroundSupport.xml +++ b/MekHQ/data/scenariomodifiers/AlliedGroundSupport.xml @@ -13,7 +13,7 @@ -3 true false - false + true false 1 diff --git a/MekHQ/data/scenariomodifiers/AlliedHorseCav.xml b/MekHQ/data/scenariomodifiers/AlliedHorseCav.xml index 27ea0f8a8b..30806ed428 100644 --- a/MekHQ/data/scenariomodifiers/AlliedHorseCav.xml +++ b/MekHQ/data/scenariomodifiers/AlliedHorseCav.xml @@ -12,19 +12,18 @@ -2 0 false - true + false true - true + false false 5 -1 1 1.0 - 4 Allied Light Brigade Horse Cavalry 5 - MercThe600.mul + MercThe600.mul 1 4 0 diff --git a/MekHQ/data/scenariomodifiers/AlliedMechAceCRD.xml b/MekHQ/data/scenariomodifiers/AlliedMechAceCRD.xml index a8a491d8db..16c8f8b127 100644 --- a/MekHQ/data/scenariomodifiers/AlliedMechAceCRD.xml +++ b/MekHQ/data/scenariomodifiers/AlliedMechAceCRD.xml @@ -12,19 +12,18 @@ -2 2 false - true + false true - true + false false 5 -1 1 1.0 - 4 Allied Mech Ace 5 - AlliedCRDAce.mul + AlliedCRDAce.mul 1 4 0 diff --git a/MekHQ/data/scenariomodifiers/AlliedMechAceGLT.xml b/MekHQ/data/scenariomodifiers/AlliedMechAceGLT.xml index 42a0b0027e..847051bc25 100644 --- a/MekHQ/data/scenariomodifiers/AlliedMechAceGLT.xml +++ b/MekHQ/data/scenariomodifiers/AlliedMechAceGLT.xml @@ -12,19 +12,18 @@ -2 2 false - true + false true - true + false false 5 -1 1 1.0 - 4 Allied Mech Ace 5 - AlliedGLTAce.mul + AlliedGLTAce.mul 1 4 0 diff --git a/MekHQ/data/scenariomodifiers/AlliedMechAceGOL.xml b/MekHQ/data/scenariomodifiers/AlliedMechAceGOL.xml index 10d7248db7..3a1e1c12fc 100644 --- a/MekHQ/data/scenariomodifiers/AlliedMechAceGOL.xml +++ b/MekHQ/data/scenariomodifiers/AlliedMechAceGOL.xml @@ -12,19 +12,18 @@ -2 2 false - true + false true - true + false false 5 -1 1 1.0 - 4 Allied Mech Ace 5 - AlliedGOLAce.mul + AlliedGOLAce.mul 1 4 0 diff --git a/MekHQ/data/scenariomodifiers/AlliedMechAceOTT.xml b/MekHQ/data/scenariomodifiers/AlliedMechAceOTT.xml index aeba840140..4024fd1e46 100644 --- a/MekHQ/data/scenariomodifiers/AlliedMechAceOTT.xml +++ b/MekHQ/data/scenariomodifiers/AlliedMechAceOTT.xml @@ -12,19 +12,18 @@ -2 2 false - true + false true - true + false false 5 -1 1 1.0 - 4 Allied Mech Ace 5 - AlliedOTTAce.mul + AlliedOTTAce.mul 1 4 0 diff --git a/MekHQ/data/scenariomodifiers/AlliedMechAceTBT.xml b/MekHQ/data/scenariomodifiers/AlliedMechAceTBT.xml index a5c25e0ffb..385c7042ad 100644 --- a/MekHQ/data/scenariomodifiers/AlliedMechAceTBT.xml +++ b/MekHQ/data/scenariomodifiers/AlliedMechAceTBT.xml @@ -12,19 +12,18 @@ -2 2 false - true + false true - true + false false 5 -1 1 1.0 - 4 Allied Mech Ace 5 - AlliedTBTAce.mul + AlliedTBTAce.mul 1 4 0 diff --git a/MekHQ/data/scenariomodifiers/AlliedMechGarrison.xml b/MekHQ/data/scenariomodifiers/AlliedMechGarrison.xml index 0757a19c8f..22426eb61f 100644 --- a/MekHQ/data/scenariomodifiers/AlliedMechGarrison.xml +++ b/MekHQ/data/scenariomodifiers/AlliedMechGarrison.xml @@ -12,7 +12,7 @@ 0 0 false - true + false true false false diff --git a/MekHQ/data/scenariomodifiers/AlliedMechReinforcements.xml b/MekHQ/data/scenariomodifiers/AlliedMechReinforcements.xml index 18e63a6413..bc3e29fb20 100644 --- a/MekHQ/data/scenariomodifiers/AlliedMechReinforcements.xml +++ b/MekHQ/data/scenariomodifiers/AlliedMechReinforcements.xml @@ -13,7 +13,7 @@ -3 true false - false + true false 1 diff --git a/MekHQ/data/scenariomodifiers/AlliedReinforcements.xml b/MekHQ/data/scenariomodifiers/AlliedReinforcements.xml index 671c098b59..d4d7c53a5a 100644 --- a/MekHQ/data/scenariomodifiers/AlliedReinforcements.xml +++ b/MekHQ/data/scenariomodifiers/AlliedReinforcements.xml @@ -13,7 +13,7 @@ -3 true false - false + true false 1 diff --git a/MekHQ/data/scenariomodifiers/AlliedTankReinforcements.xml b/MekHQ/data/scenariomodifiers/AlliedTankReinforcements.xml index 9f6596171f..b97260cbe7 100644 --- a/MekHQ/data/scenariomodifiers/AlliedTankReinforcements.xml +++ b/MekHQ/data/scenariomodifiers/AlliedTankReinforcements.xml @@ -13,7 +13,7 @@ -3 true false - false + true false 1 diff --git a/MekHQ/data/scenariomodifiers/AlliedTraineesAir.xml b/MekHQ/data/scenariomodifiers/AlliedTraineesAir.xml index 6022ac29f4..c5f5d62985 100644 --- a/MekHQ/data/scenariomodifiers/AlliedTraineesAir.xml +++ b/MekHQ/data/scenariomodifiers/AlliedTraineesAir.xml @@ -14,7 +14,7 @@ false false true - true + false false 5 diff --git a/MekHQ/data/scenariomodifiers/AlliedTraineesGround.xml b/MekHQ/data/scenariomodifiers/AlliedTraineesGround.xml index 40ee4a15fc..31ab068085 100644 --- a/MekHQ/data/scenariomodifiers/AlliedTraineesGround.xml +++ b/MekHQ/data/scenariomodifiers/AlliedTraineesGround.xml @@ -14,7 +14,7 @@ false false true - true + false false 5 diff --git a/MekHQ/data/scenariomodifiers/ArmednArmored.xml b/MekHQ/data/scenariomodifiers/ArmednArmored.xml index 8dae59c0ec..f0c1932299 100644 --- a/MekHQ/data/scenariomodifiers/ArmednArmored.xml +++ b/MekHQ/data/scenariomodifiers/ArmednArmored.xml @@ -4,5 +4,5 @@ PreForceGeneration Opposing 1 - -1 + 1 \ No newline at end of file diff --git a/MekHQ/data/scenariomodifiers/BadEvent.xml b/MekHQ/data/scenariomodifiers/BadEvent.xml index 9d3d68ea88..c990af1448 100644 --- a/MekHQ/data/scenariomodifiers/BadEvent.xml +++ b/MekHQ/data/scenariomodifiers/BadEvent.xml @@ -4,5 +4,4 @@ PreForceGeneration Opposing 1 - -1 \ No newline at end of file diff --git a/MekHQ/data/scenariomodifiers/BadIntelAir.xml b/MekHQ/data/scenariomodifiers/BadIntelAir.xml index e04c0069de..5bf8f99295 100644 --- a/MekHQ/data/scenariomodifiers/BadIntelAir.xml +++ b/MekHQ/data/scenariomodifiers/BadIntelAir.xml @@ -9,7 +9,7 @@ 0 true false - false + true false 1 diff --git a/MekHQ/data/scenariomodifiers/BadIntelGround.xml b/MekHQ/data/scenariomodifiers/BadIntelGround.xml index b41cf70292..de94d32f25 100644 --- a/MekHQ/data/scenariomodifiers/BadIntelGround.xml +++ b/MekHQ/data/scenariomodifiers/BadIntelGround.xml @@ -13,7 +13,7 @@ 0 true false - false + true false 1 diff --git a/MekHQ/data/scenariomodifiers/EnemyAceMechARC2R.xml b/MekHQ/data/scenariomodifiers/EnemyAceMechARC2R.xml index c6aeba5830..55836996ca 100644 --- a/MekHQ/data/scenariomodifiers/EnemyAceMechARC2R.xml +++ b/MekHQ/data/scenariomodifiers/EnemyAceMechARC2R.xml @@ -18,13 +18,13 @@ false 5 - 0 + -1 2 Enemy Mech Ace 5 - aceARC2R.mul + aceARC2R.mul 1 - 4 + 4 75 0 diff --git a/MekHQ/data/scenariomodifiers/EnemyAirPatrol.xml b/MekHQ/data/scenariomodifiers/EnemyAirPatrol.xml index 84f9f84897..9be64ec4e1 100644 --- a/MekHQ/data/scenariomodifiers/EnemyAirPatrol.xml +++ b/MekHQ/data/scenariomodifiers/EnemyAirPatrol.xml @@ -9,7 +9,7 @@ 2 true false - false + true false 1 diff --git a/MekHQ/data/scenariomodifiers/EnemyAirSupport.xml b/MekHQ/data/scenariomodifiers/EnemyAirSupport.xml index 475e8dc90d..b37cb06860 100644 --- a/MekHQ/data/scenariomodifiers/EnemyAirSupport.xml +++ b/MekHQ/data/scenariomodifiers/EnemyAirSupport.xml @@ -9,7 +9,7 @@ -3 true false - false + true false 1 diff --git a/MekHQ/data/scenariomodifiers/EnemyAirSupportBombers.xml b/MekHQ/data/scenariomodifiers/EnemyAirSupportBombers.xml index 6bc2d6ea66..31342aefd2 100644 --- a/MekHQ/data/scenariomodifiers/EnemyAirSupportBombers.xml +++ b/MekHQ/data/scenariomodifiers/EnemyAirSupportBombers.xml @@ -9,7 +9,7 @@ -3 true false - false + true false 1 diff --git a/MekHQ/data/scenariomodifiers/EnemyDropship.xml b/MekHQ/data/scenariomodifiers/EnemyDropship.xml index c751768f54..40fc9277c8 100644 --- a/MekHQ/data/scenariomodifiers/EnemyDropship.xml +++ b/MekHQ/data/scenariomodifiers/EnemyDropship.xml @@ -9,7 +9,7 @@ 0 false false - false + true false false diff --git a/MekHQ/data/scenariomodifiers/EnemyFieldArtyOffboard.xml b/MekHQ/data/scenariomodifiers/EnemyFieldArtyOffboard.xml index dd67129339..67e1400c65 100644 --- a/MekHQ/data/scenariomodifiers/EnemyFieldArtyOffboard.xml +++ b/MekHQ/data/scenariomodifiers/EnemyFieldArtyOffboard.xml @@ -13,7 +13,7 @@ 0 false false - true + false false true @@ -22,9 +22,9 @@ 2 Enemy Offboard Field Arty 5 - EnemyOffFieldArty.mul + EnemyOffFieldArty.mul 1 - 4 + 4 75 0 diff --git a/MekHQ/data/scenariomodifiers/EnemyHotDrop.xml b/MekHQ/data/scenariomodifiers/EnemyHotDrop.xml index daa93e9fb6..a103936c6b 100644 --- a/MekHQ/data/scenariomodifiers/EnemyHotDrop.xml +++ b/MekHQ/data/scenariomodifiers/EnemyHotDrop.xml @@ -13,7 +13,7 @@ -3 false false - false + true false 10 diff --git a/MekHQ/data/scenariomodifiers/EnemyMechReinforcements.xml b/MekHQ/data/scenariomodifiers/EnemyMechReinforcements.xml index fa4a4e0b33..a8a33b1c79 100644 --- a/MekHQ/data/scenariomodifiers/EnemyMechReinforcements.xml +++ b/MekHQ/data/scenariomodifiers/EnemyMechReinforcements.xml @@ -13,7 +13,7 @@ -3 true false - false + true false 1 diff --git a/MekHQ/data/scenariomodifiers/EnemyReinforcements.xml b/MekHQ/data/scenariomodifiers/EnemyReinforcements.xml index 6a40834a79..76f9d51361 100644 --- a/MekHQ/data/scenariomodifiers/EnemyReinforcements.xml +++ b/MekHQ/data/scenariomodifiers/EnemyReinforcements.xml @@ -13,7 +13,7 @@ -3 true false - false + true false 1 diff --git a/MekHQ/data/scenariomodifiers/EnemyTankReinforcements.xml b/MekHQ/data/scenariomodifiers/EnemyTankReinforcements.xml index 5b86aba7a9..6ebef84960 100644 --- a/MekHQ/data/scenariomodifiers/EnemyTankReinforcements.xml +++ b/MekHQ/data/scenariomodifiers/EnemyTankReinforcements.xml @@ -13,7 +13,7 @@ -3 true false - false + true false 1 diff --git a/MekHQ/data/scenariomodifiers/FacilityAlliedEvac.xml b/MekHQ/data/scenariomodifiers/FacilityAlliedEvac.xml index 90bca4824d..d497588461 100644 --- a/MekHQ/data/scenariomodifiers/FacilityAlliedEvac.xml +++ b/MekHQ/data/scenariomodifiers/FacilityAlliedEvac.xml @@ -8,7 +8,7 @@ -1 0 true - true + false true false false diff --git a/MekHQ/data/scenariomodifiers/GroundedEnemyDropship.xml b/MekHQ/data/scenariomodifiers/GroundedEnemyDropship.xml index ff8ca3aa16..9e6eec6f52 100644 --- a/MekHQ/data/scenariomodifiers/GroundedEnemyDropship.xml +++ b/MekHQ/data/scenariomodifiers/GroundedEnemyDropship.xml @@ -13,7 +13,7 @@ 0 false false - false + true false false diff --git a/MekHQ/data/scenariomodifiers/HostileBVBudgetIncrease.xml b/MekHQ/data/scenariomodifiers/HostileBVBudgetIncrease.xml index 3cf0ca0a37..280bf8d5eb 100644 --- a/MekHQ/data/scenariomodifiers/HostileBVBudgetIncrease.xml +++ b/MekHQ/data/scenariomodifiers/HostileBVBudgetIncrease.xml @@ -3,5 +3,5 @@ false PreForceGeneration Opposing - -1 + 1 \ No newline at end of file diff --git a/MekHQ/data/scenariomodifiers/HouseOfficerAir.xml b/MekHQ/data/scenariomodifiers/HouseOfficerAir.xml index bf68d28e91..e1693bbdfa 100644 --- a/MekHQ/data/scenariomodifiers/HouseOfficerAir.xml +++ b/MekHQ/data/scenariomodifiers/HouseOfficerAir.xml @@ -8,9 +8,9 @@ 9 0 false - true + false true - true + false false 5 diff --git a/MekHQ/data/scenariomodifiers/HouseOfficerGround.xml b/MekHQ/data/scenariomodifiers/HouseOfficerGround.xml index 61e5889c08..73d4fefe6a 100644 --- a/MekHQ/data/scenariomodifiers/HouseOfficerGround.xml +++ b/MekHQ/data/scenariomodifiers/HouseOfficerGround.xml @@ -13,7 +13,7 @@ 0 false false - false + true false false diff --git a/MekHQ/data/scenariomodifiers/IntegratedAlliesAir.xml b/MekHQ/data/scenariomodifiers/IntegratedAlliesAir.xml index 1d358e8626..2b744c3cfa 100644 --- a/MekHQ/data/scenariomodifiers/IntegratedAlliesAir.xml +++ b/MekHQ/data/scenariomodifiers/IntegratedAlliesAir.xml @@ -9,8 +9,8 @@ 0 false false - false - true + true + false false 5 diff --git a/MekHQ/data/scenariomodifiers/IntegratedAlliesGround.xml b/MekHQ/data/scenariomodifiers/IntegratedAlliesGround.xml index a6b5a473ca..3d7c8d9e18 100644 --- a/MekHQ/data/scenariomodifiers/IntegratedAlliesGround.xml +++ b/MekHQ/data/scenariomodifiers/IntegratedAlliesGround.xml @@ -13,8 +13,8 @@ 0 false false - false - true + true + false false 5 diff --git a/MekHQ/data/scenariomodifiers/LiaisonAir.xml b/MekHQ/data/scenariomodifiers/LiaisonAir.xml index f8245b5305..4415fbcfa4 100644 --- a/MekHQ/data/scenariomodifiers/LiaisonAir.xml +++ b/MekHQ/data/scenariomodifiers/LiaisonAir.xml @@ -9,8 +9,8 @@ 0 false false - false - true + true + false false 5 diff --git a/MekHQ/data/scenariomodifiers/LiaisonGround.xml b/MekHQ/data/scenariomodifiers/LiaisonGround.xml index 85d9b27914..f8cd89d632 100644 --- a/MekHQ/data/scenariomodifiers/LiaisonGround.xml +++ b/MekHQ/data/scenariomodifiers/LiaisonGround.xml @@ -13,8 +13,8 @@ 0 false false - false - true + true + false false 5 diff --git a/MekHQ/data/scenariomodifiers/LocalGarrisonBoats.xml b/MekHQ/data/scenariomodifiers/LocalGarrisonBoats.xml index 3c1b849c47..fc7c5d51a3 100644 --- a/MekHQ/data/scenariomodifiers/LocalGarrisonBoats.xml +++ b/MekHQ/data/scenariomodifiers/LocalGarrisonBoats.xml @@ -13,7 +13,7 @@ 0 false false - false + true false 0 diff --git a/MekHQ/data/scenariomodifiers/LocalGarrisonInfantry.xml b/MekHQ/data/scenariomodifiers/LocalGarrisonInfantry.xml index d646bafbc0..b388c6a3c3 100644 --- a/MekHQ/data/scenariomodifiers/LocalGarrisonInfantry.xml +++ b/MekHQ/data/scenariomodifiers/LocalGarrisonInfantry.xml @@ -13,7 +13,7 @@ 0 false false - false + true false 10 diff --git a/MekHQ/data/scenariomodifiers/OverwhelmingEnemyAirReinforcements.xml b/MekHQ/data/scenariomodifiers/OverwhelmingEnemyAirReinforcements.xml index ec62793221..50dafcdfaa 100644 --- a/MekHQ/data/scenariomodifiers/OverwhelmingEnemyAirReinforcements.xml +++ b/MekHQ/data/scenariomodifiers/OverwhelmingEnemyAirReinforcements.xml @@ -13,7 +13,7 @@ -3 true false - false + true false 1 @@ -28,6 +28,7 @@ 5 -1 + true 2 1.0 Opfor Aerospace Reinforcements diff --git a/MekHQ/data/scenariomodifiers/OverwhelmingEnemyGroundReinforcements.xml b/MekHQ/data/scenariomodifiers/OverwhelmingEnemyGroundReinforcements.xml index 8e6d88048a..3181884c86 100644 --- a/MekHQ/data/scenariomodifiers/OverwhelmingEnemyGroundReinforcements.xml +++ b/MekHQ/data/scenariomodifiers/OverwhelmingEnemyGroundReinforcements.xml @@ -13,7 +13,7 @@ -3 true false - false + true false 1 @@ -28,6 +28,7 @@ 5 -1 + true 2 1.0 Opfor Ground Reinforcements diff --git a/MekHQ/data/scenariomodifiers/PiratesIncomingAir.xml b/MekHQ/data/scenariomodifiers/PiratesIncomingAir.xml index 6e5ddefe12..9aba5591eb 100644 --- a/MekHQ/data/scenariomodifiers/PiratesIncomingAir.xml +++ b/MekHQ/data/scenariomodifiers/PiratesIncomingAir.xml @@ -9,7 +9,7 @@ -3 true false - false + true false 1 @@ -24,6 +24,7 @@ 5 -1 + true 3 1.0 Unidentified Hostiles diff --git a/MekHQ/data/scenariomodifiers/PiratesIncomingGround.xml b/MekHQ/data/scenariomodifiers/PiratesIncomingGround.xml index eb7a15393b..4251c00659 100644 --- a/MekHQ/data/scenariomodifiers/PiratesIncomingGround.xml +++ b/MekHQ/data/scenariomodifiers/PiratesIncomingGround.xml @@ -13,7 +13,7 @@ -3 true false - false + true false 1 @@ -28,6 +28,7 @@ 5 -1 + true 3 1.0 Unidentified Hostiles diff --git a/MekHQ/data/scenariomodifiers/PiratesPresentAir.xml b/MekHQ/data/scenariomodifiers/PiratesPresentAir.xml index 1f0fa80b03..7c0ae0b66a 100644 --- a/MekHQ/data/scenariomodifiers/PiratesPresentAir.xml +++ b/MekHQ/data/scenariomodifiers/PiratesPresentAir.xml @@ -9,7 +9,7 @@ 0 true false - false + true false 1 @@ -24,6 +24,7 @@ 5 -1 + true 3 1.0 Unidentified Hostiles diff --git a/MekHQ/data/scenariomodifiers/PiratesPresentGround.xml b/MekHQ/data/scenariomodifiers/PiratesPresentGround.xml index 45fded4854..5647c33a18 100644 --- a/MekHQ/data/scenariomodifiers/PiratesPresentGround.xml +++ b/MekHQ/data/scenariomodifiers/PiratesPresentGround.xml @@ -13,7 +13,7 @@ 0 true false - false + true false 1 @@ -28,6 +28,7 @@ 5 -1 + true 3 1.0 Unidentified Hostiles diff --git a/MekHQ/data/scenariomodifiers/PrimaryAlliesAir.xml b/MekHQ/data/scenariomodifiers/PrimaryAlliesAir.xml index a7bc906783..115a8d10ae 100644 --- a/MekHQ/data/scenariomodifiers/PrimaryAlliesAir.xml +++ b/MekHQ/data/scenariomodifiers/PrimaryAlliesAir.xml @@ -15,6 +15,7 @@ 5 -1 + true 1 1.0 Allied Force diff --git a/MekHQ/data/scenariomodifiers/PrimaryAlliesGround.xml b/MekHQ/data/scenariomodifiers/PrimaryAlliesGround.xml index 2f9c66af4d..74bb13fc1b 100644 --- a/MekHQ/data/scenariomodifiers/PrimaryAlliesGround.xml +++ b/MekHQ/data/scenariomodifiers/PrimaryAlliesGround.xml @@ -19,6 +19,7 @@ 5 -1 + true 1 1.0 Allied Force diff --git a/MekHQ/resources/mekhq/resources/CampaignOptionsDialog.properties b/MekHQ/resources/mekhq/resources/CampaignOptionsDialog.properties index f95e1734da..382f0a2073 100644 --- a/MekHQ/resources/mekhq/resources/CampaignOptionsDialog.properties +++ b/MekHQ/resources/mekhq/resources/CampaignOptionsDialog.properties @@ -607,9 +607,9 @@ lblScenarioMod.text=Random Scenario Modifiers lblScenarioModMax.text=Maximum: lblScenarioModMax.toolTipText=This is the maximum number of random scenario mods that can spawn on for a single Scenario. Excludes fixed modifiers. lblScenarioModChance.text=Chance -lblScenarioModChance.toolTipText=This is the percentage chance for a random scenario mod to appear for a Scenario +lblScenarioModChance.toolTipText=This is the percentage chance for a random scenario mod to appear for a Scenario. lblScenarioModBV.text=BV Cap -lblScenarioModBV.toolTipText=This is the percentage of total BV that can be used for each scenario mods. This also affects fixed modifiers. +lblScenarioModBV.toolTipText=This is the percentage of total BV that can be used for each scenario mods. This affects fixed modifiers, but can be overridden by certain modifiers chkUseShareSystem.text=Use share system chkUseShareSystem.toolTipText=All personnel have a stake in the unit. This system lowers profits but can increase retention. chkSharesExcludeLargeCraft.text=Exclude large craft from share value diff --git a/MekHQ/src/mekhq/campaign/mission/AtBDynamicScenarioFactory.java b/MekHQ/src/mekhq/campaign/mission/AtBDynamicScenarioFactory.java index d04bc001ea..aed74dc365 100644 --- a/MekHQ/src/mekhq/campaign/mission/AtBDynamicScenarioFactory.java +++ b/MekHQ/src/mekhq/campaign/mission/AtBDynamicScenarioFactory.java @@ -378,7 +378,7 @@ public static int generateForce(AtBDynamicScenario scenario, AtBContract contrac int forceBVBudget = (int) (effectiveBV * forceTemplate.getForceMultiplier()); - if (isScenarioModifier) { + if ((isScenarioModifier) && (!forceTemplate.getOverrideBvCap())) { forceBVBudget = forceBVBudget * campaign.getCampaignOptions().getScenarioModBV(); } diff --git a/MekHQ/src/mekhq/campaign/mission/ScenarioForceTemplate.java b/MekHQ/src/mekhq/campaign/mission/ScenarioForceTemplate.java index 4a2cb4cc1b..8f04aa76d0 100644 --- a/MekHQ/src/mekhq/campaign/mission/ScenarioForceTemplate.java +++ b/MekHQ/src/mekhq/campaign/mission/ScenarioForceTemplate.java @@ -140,11 +140,17 @@ public enum ForceGenerationMethod { */ FixedUnitCount, + /** + * Option to override the BV cap when generating the force. When the overrideBvCap option is true, + * the BV cap is ignored and the force is generated without any restriction on the BV value. + */ + OverrideBvCap, + /** * Either assigned by player from TO&E or a minimum fixed number of units; */ PlayerOrFixedUnitCount, - + /** * Using one or more fixed MULs */ @@ -310,6 +316,11 @@ public enum SynchronizedDeploymentType { */ private int fixedUnitCount = 0; + /** + * Whether to override the Scenario Mod BV Cap, assigned in Campaign Options + */ + private boolean overrideBvCap = false; + /** * The "generation bucket" to which this force template is assigned. * Forces within a particular "generation bucket" will be generated at the same time, taking into account @@ -354,12 +365,12 @@ public enum SynchronizedDeploymentType { * e.g. "Good Intel". */ private boolean subjectToRandomRemoval = true; - + /** * A file name of a MUL */ private String fixedMul; - + @Override public ScenarioForceTemplate clone() { return new ScenarioForceTemplate(this); @@ -417,6 +428,7 @@ public ScenarioForceTemplate(ScenarioForceTemplate forceDefinition) { contributesToMapSize = forceDefinition.contributesToMapSize; actualDeploymentZone = forceDefinition.actualDeploymentZone; fixedUnitCount = forceDefinition.fixedUnitCount; + overrideBvCap = forceDefinition.overrideBvCap; generationOrder = forceDefinition.generationOrder; allowAeroBombs = forceDefinition.allowAeroBombs; startingAltitude = forceDefinition.startingAltitude; @@ -509,6 +521,10 @@ public int getFixedUnitCount() { return fixedUnitCount; } + public boolean getOverrideBvCap() { + return overrideBvCap; + } + public boolean getAllowAeroBombs() { return allowAeroBombs; } @@ -605,6 +621,10 @@ public void setFixedUnitCount(int fixedUnitCount) { this.fixedUnitCount = fixedUnitCount; } + public void setOverrideBvCap(boolean overrideBvCap) { + this.overrideBvCap = overrideBvCap; + } + public void setGenerationOrder(int generationOrder) { this.generationOrder = generationOrder; } @@ -624,7 +644,7 @@ public void setStartingAltitude(int startingAltitude) { public void setDeployOffboard(boolean deployOffBoard) { this.deployOffBoard = deployOffBoard; } - + public boolean isSubjectToRandomRemoval() { return subjectToRandomRemoval; } @@ -632,7 +652,7 @@ public boolean isSubjectToRandomRemoval() { public void setSubjectToRandomRemoval(boolean subjectToRandomRemoval) { this.subjectToRandomRemoval = subjectToRandomRemoval; } - + @Nullable public String getFixedMul() { return fixedMul; From 3ab8a473123cf9005dddf818fa47e0ae11f5b8f5 Mon Sep 17 00:00:00 2001 From: IllianiCBT Date: Thu, 25 Apr 2024 00:37:26 -0500 Subject: [PATCH 08/12] Fixed logic bug. The BV Cap override check has been inverted in AtBDynamicScenarioFactory to handle cases where the scenario modifier is present. Now, when the override is true, a log message is printed and the BV budget is modified accordingly. This is intended to provide better logging and managing of BV Cap overrides. --- .../src/mekhq/campaign/mission/AtBDynamicScenarioFactory.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/MekHQ/src/mekhq/campaign/mission/AtBDynamicScenarioFactory.java b/MekHQ/src/mekhq/campaign/mission/AtBDynamicScenarioFactory.java index aed74dc365..c98a1eb872 100644 --- a/MekHQ/src/mekhq/campaign/mission/AtBDynamicScenarioFactory.java +++ b/MekHQ/src/mekhq/campaign/mission/AtBDynamicScenarioFactory.java @@ -378,7 +378,8 @@ public static int generateForce(AtBDynamicScenario scenario, AtBContract contrac int forceBVBudget = (int) (effectiveBV * forceTemplate.getForceMultiplier()); - if ((isScenarioModifier) && (!forceTemplate.getOverrideBvCap())) { + if ((isScenarioModifier) && (forceTemplate.getOverrideBvCap())) { + LogManager.getLogger().info("{} is overriding the BV Cap", forceTemplate); forceBVBudget = forceBVBudget * campaign.getCampaignOptions().getScenarioModBV(); } From c9d72cb3efa4290e569092a1c9fccd5e07290146 Mon Sep 17 00:00:00 2001 From: IllianiCBT Date: Thu, 25 Apr 2024 00:53:49 -0500 Subject: [PATCH 09/12] Fixed potential infinite loop in setScenarioModifiers() This commit eliminates the possibility of an infinite loop when adding modifiers in the AtBDynamicScenarioFactory class. This is achieved by setting the 'addMods' flag to false when the conditional statement isn't met. --- MekHQ/src/mekhq/campaign/mission/AtBDynamicScenarioFactory.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/MekHQ/src/mekhq/campaign/mission/AtBDynamicScenarioFactory.java b/MekHQ/src/mekhq/campaign/mission/AtBDynamicScenarioFactory.java index c98a1eb872..2050b73a96 100644 --- a/MekHQ/src/mekhq/campaign/mission/AtBDynamicScenarioFactory.java +++ b/MekHQ/src/mekhq/campaign/mission/AtBDynamicScenarioFactory.java @@ -926,6 +926,8 @@ public static void setScenarioModifiers(Campaign campaign, AtBDynamicScenario sc if (numMods >= modMax) { addMods = false; } + } else { + addMods = false; } } From 1632372fb7b13533aee243c6eb14b77c8486d465 Mon Sep 17 00:00:00 2001 From: IllianiCBT Date: Sun, 2 Jun 2024 22:38:57 -0500 Subject: [PATCH 10/12] Rolled back changes to scenario modifiers --- MekHQ/data/scenariomodifiers/AlliedASFAce01.xml | 3 ++- MekHQ/data/scenariomodifiers/AlliedAirGarrison.xml | 2 +- MekHQ/data/scenariomodifiers/AlliedAirSupport.xml | 2 +- MekHQ/data/scenariomodifiers/AlliedAirSupportBombers.xml | 2 +- MekHQ/data/scenariomodifiers/AlliedArtyGarrison.xml | 2 +- MekHQ/data/scenariomodifiers/AlliedCavLance.xml | 3 ++- MekHQ/data/scenariomodifiers/AlliedGroundSupport.xml | 2 +- MekHQ/data/scenariomodifiers/AlliedHorseCav.xml | 5 +++-- MekHQ/data/scenariomodifiers/AlliedMechAceCRD.xml | 5 +++-- MekHQ/data/scenariomodifiers/AlliedMechAceGLT.xml | 5 +++-- MekHQ/data/scenariomodifiers/AlliedMechAceGOL.xml | 5 +++-- MekHQ/data/scenariomodifiers/AlliedMechAceOTT.xml | 5 +++-- MekHQ/data/scenariomodifiers/AlliedMechAceTBT.xml | 5 +++-- MekHQ/data/scenariomodifiers/AlliedMechGarrison.xml | 2 +- MekHQ/data/scenariomodifiers/AlliedMechReinforcements.xml | 2 +- MekHQ/data/scenariomodifiers/AlliedReinforcements.xml | 2 +- MekHQ/data/scenariomodifiers/AlliedTankReinforcements.xml | 2 +- MekHQ/data/scenariomodifiers/AlliedTraineesAir.xml | 2 +- MekHQ/data/scenariomodifiers/AlliedTraineesGround.xml | 2 +- MekHQ/data/scenariomodifiers/ArmednArmored.xml | 2 +- MekHQ/data/scenariomodifiers/BadEvent.xml | 1 + MekHQ/data/scenariomodifiers/BadIntelAir.xml | 2 +- MekHQ/data/scenariomodifiers/BadIntelGround.xml | 2 +- MekHQ/data/scenariomodifiers/EnemyAceMechARC2R.xml | 2 +- MekHQ/data/scenariomodifiers/EnemyAirPatrol.xml | 2 +- MekHQ/data/scenariomodifiers/EnemyAirSupport.xml | 2 +- MekHQ/data/scenariomodifiers/EnemyAirSupportBombers.xml | 2 +- MekHQ/data/scenariomodifiers/EnemyDropship.xml | 2 +- MekHQ/data/scenariomodifiers/EnemyFieldArtyOffboard.xml | 2 +- MekHQ/data/scenariomodifiers/EnemyHotDrop.xml | 2 +- MekHQ/data/scenariomodifiers/EnemyMechReinforcements.xml | 2 +- MekHQ/data/scenariomodifiers/EnemyReinforcements.xml | 2 +- MekHQ/data/scenariomodifiers/EnemyTankReinforcements.xml | 2 +- MekHQ/data/scenariomodifiers/FacilityAlliedEvac.xml | 2 +- MekHQ/data/scenariomodifiers/GroundedEnemyDropship.xml | 2 +- MekHQ/data/scenariomodifiers/HostileBVBudgetIncrease.xml | 2 +- MekHQ/data/scenariomodifiers/HouseOfficerAir.xml | 4 ++-- MekHQ/data/scenariomodifiers/HouseOfficerGround.xml | 2 +- MekHQ/data/scenariomodifiers/IntegratedAlliesAir.xml | 4 ++-- MekHQ/data/scenariomodifiers/IntegratedAlliesGround.xml | 4 ++-- MekHQ/data/scenariomodifiers/LiaisonAir.xml | 4 ++-- MekHQ/data/scenariomodifiers/LiaisonGround.xml | 4 ++-- MekHQ/data/scenariomodifiers/LocalGarrisonBoats.xml | 2 +- MekHQ/data/scenariomodifiers/LocalGarrisonInfantry.xml | 2 +- .../scenariomodifiers/OverwhelmingEnemyAirReinforcements.xml | 2 +- .../OverwhelmingEnemyGroundReinforcements.xml | 2 +- MekHQ/data/scenariomodifiers/PiratesIncomingAir.xml | 2 +- MekHQ/data/scenariomodifiers/PiratesIncomingGround.xml | 2 +- MekHQ/data/scenariomodifiers/PiratesPresentAir.xml | 2 +- MekHQ/data/scenariomodifiers/PiratesPresentGround.xml | 2 +- 50 files changed, 69 insertions(+), 60 deletions(-) diff --git a/MekHQ/data/scenariomodifiers/AlliedASFAce01.xml b/MekHQ/data/scenariomodifiers/AlliedASFAce01.xml index b25d4db619..b98218a077 100644 --- a/MekHQ/data/scenariomodifiers/AlliedASFAce01.xml +++ b/MekHQ/data/scenariomodifiers/AlliedASFAce01.xml @@ -12,7 +12,7 @@ -2 2 false - false + true true true false @@ -21,6 +21,7 @@ -1 1 1.0 + 4 Allied ASF Ace 5 AlliedASFAceHvy.mul diff --git a/MekHQ/data/scenariomodifiers/AlliedAirGarrison.xml b/MekHQ/data/scenariomodifiers/AlliedAirGarrison.xml index 7704c9d1a0..1b5c0df539 100644 --- a/MekHQ/data/scenariomodifiers/AlliedAirGarrison.xml +++ b/MekHQ/data/scenariomodifiers/AlliedAirGarrison.xml @@ -8,7 +8,7 @@ -3 0 false - false + true true false false diff --git a/MekHQ/data/scenariomodifiers/AlliedAirSupport.xml b/MekHQ/data/scenariomodifiers/AlliedAirSupport.xml index 68d82cac7a..87b910b323 100644 --- a/MekHQ/data/scenariomodifiers/AlliedAirSupport.xml +++ b/MekHQ/data/scenariomodifiers/AlliedAirSupport.xml @@ -9,7 +9,7 @@ -3 false false - true + false false false diff --git a/MekHQ/data/scenariomodifiers/AlliedAirSupportBombers.xml b/MekHQ/data/scenariomodifiers/AlliedAirSupportBombers.xml index 5848fb60c1..5a8c27eb30 100644 --- a/MekHQ/data/scenariomodifiers/AlliedAirSupportBombers.xml +++ b/MekHQ/data/scenariomodifiers/AlliedAirSupportBombers.xml @@ -9,7 +9,7 @@ -3 false false - true + false false false diff --git a/MekHQ/data/scenariomodifiers/AlliedArtyGarrison.xml b/MekHQ/data/scenariomodifiers/AlliedArtyGarrison.xml index c590b9c4db..b29d5f1924 100644 --- a/MekHQ/data/scenariomodifiers/AlliedArtyGarrison.xml +++ b/MekHQ/data/scenariomodifiers/AlliedArtyGarrison.xml @@ -12,7 +12,7 @@ 1 0 false - false + true true false false diff --git a/MekHQ/data/scenariomodifiers/AlliedCavLance.xml b/MekHQ/data/scenariomodifiers/AlliedCavLance.xml index 149d3c1bf2..9a190812c8 100644 --- a/MekHQ/data/scenariomodifiers/AlliedCavLance.xml +++ b/MekHQ/data/scenariomodifiers/AlliedCavLance.xml @@ -12,7 +12,7 @@ -2 3 false - false + true true true false @@ -21,6 +21,7 @@ -1 1 1.0 + 4 Allied Cavalry Lance 5 AlliedCavLance.mul diff --git a/MekHQ/data/scenariomodifiers/AlliedGroundSupport.xml b/MekHQ/data/scenariomodifiers/AlliedGroundSupport.xml index c80153f8c6..bb7f83c448 100644 --- a/MekHQ/data/scenariomodifiers/AlliedGroundSupport.xml +++ b/MekHQ/data/scenariomodifiers/AlliedGroundSupport.xml @@ -13,7 +13,7 @@ -3 true false - true + false false 1 diff --git a/MekHQ/data/scenariomodifiers/AlliedHorseCav.xml b/MekHQ/data/scenariomodifiers/AlliedHorseCav.xml index 30806ed428..cc31f48ac7 100644 --- a/MekHQ/data/scenariomodifiers/AlliedHorseCav.xml +++ b/MekHQ/data/scenariomodifiers/AlliedHorseCav.xml @@ -12,15 +12,16 @@ -2 0 false - false + true true - false + true false 5 -1 1 1.0 + 4 Allied Light Brigade Horse Cavalry 5 MercThe600.mul diff --git a/MekHQ/data/scenariomodifiers/AlliedMechAceCRD.xml b/MekHQ/data/scenariomodifiers/AlliedMechAceCRD.xml index 16c8f8b127..40e240aa19 100644 --- a/MekHQ/data/scenariomodifiers/AlliedMechAceCRD.xml +++ b/MekHQ/data/scenariomodifiers/AlliedMechAceCRD.xml @@ -12,15 +12,16 @@ -2 2 false - false + true true - false + true false 5 -1 1 1.0 + 4 Allied Mech Ace 5 AlliedCRDAce.mul diff --git a/MekHQ/data/scenariomodifiers/AlliedMechAceGLT.xml b/MekHQ/data/scenariomodifiers/AlliedMechAceGLT.xml index 847051bc25..923b312835 100644 --- a/MekHQ/data/scenariomodifiers/AlliedMechAceGLT.xml +++ b/MekHQ/data/scenariomodifiers/AlliedMechAceGLT.xml @@ -12,15 +12,16 @@ -2 2 false - false + true true - false + true false 5 -1 1 1.0 + 4 Allied Mech Ace 5 AlliedGLTAce.mul diff --git a/MekHQ/data/scenariomodifiers/AlliedMechAceGOL.xml b/MekHQ/data/scenariomodifiers/AlliedMechAceGOL.xml index 3a1e1c12fc..a1cb05b34b 100644 --- a/MekHQ/data/scenariomodifiers/AlliedMechAceGOL.xml +++ b/MekHQ/data/scenariomodifiers/AlliedMechAceGOL.xml @@ -12,15 +12,16 @@ -2 2 false - false + true true - false + true false 5 -1 1 1.0 + 4 Allied Mech Ace 5 AlliedGOLAce.mul diff --git a/MekHQ/data/scenariomodifiers/AlliedMechAceOTT.xml b/MekHQ/data/scenariomodifiers/AlliedMechAceOTT.xml index 4024fd1e46..4b599319c0 100644 --- a/MekHQ/data/scenariomodifiers/AlliedMechAceOTT.xml +++ b/MekHQ/data/scenariomodifiers/AlliedMechAceOTT.xml @@ -12,15 +12,16 @@ -2 2 false - false + true true - false + true false 5 -1 1 1.0 + 4 Allied Mech Ace 5 AlliedOTTAce.mul diff --git a/MekHQ/data/scenariomodifiers/AlliedMechAceTBT.xml b/MekHQ/data/scenariomodifiers/AlliedMechAceTBT.xml index 385c7042ad..26a1ccfc47 100644 --- a/MekHQ/data/scenariomodifiers/AlliedMechAceTBT.xml +++ b/MekHQ/data/scenariomodifiers/AlliedMechAceTBT.xml @@ -12,15 +12,16 @@ -2 2 false - false + true true - false + true false 5 -1 1 1.0 + 4 Allied Mech Ace 5 AlliedTBTAce.mul diff --git a/MekHQ/data/scenariomodifiers/AlliedMechGarrison.xml b/MekHQ/data/scenariomodifiers/AlliedMechGarrison.xml index 22426eb61f..0757a19c8f 100644 --- a/MekHQ/data/scenariomodifiers/AlliedMechGarrison.xml +++ b/MekHQ/data/scenariomodifiers/AlliedMechGarrison.xml @@ -12,7 +12,7 @@ 0 0 false - false + true true false false diff --git a/MekHQ/data/scenariomodifiers/AlliedMechReinforcements.xml b/MekHQ/data/scenariomodifiers/AlliedMechReinforcements.xml index bc3e29fb20..18e63a6413 100644 --- a/MekHQ/data/scenariomodifiers/AlliedMechReinforcements.xml +++ b/MekHQ/data/scenariomodifiers/AlliedMechReinforcements.xml @@ -13,7 +13,7 @@ -3 true false - true + false false 1 diff --git a/MekHQ/data/scenariomodifiers/AlliedReinforcements.xml b/MekHQ/data/scenariomodifiers/AlliedReinforcements.xml index d4d7c53a5a..671c098b59 100644 --- a/MekHQ/data/scenariomodifiers/AlliedReinforcements.xml +++ b/MekHQ/data/scenariomodifiers/AlliedReinforcements.xml @@ -13,7 +13,7 @@ -3 true false - true + false false 1 diff --git a/MekHQ/data/scenariomodifiers/AlliedTankReinforcements.xml b/MekHQ/data/scenariomodifiers/AlliedTankReinforcements.xml index b97260cbe7..9f6596171f 100644 --- a/MekHQ/data/scenariomodifiers/AlliedTankReinforcements.xml +++ b/MekHQ/data/scenariomodifiers/AlliedTankReinforcements.xml @@ -13,7 +13,7 @@ -3 true false - true + false false 1 diff --git a/MekHQ/data/scenariomodifiers/AlliedTraineesAir.xml b/MekHQ/data/scenariomodifiers/AlliedTraineesAir.xml index c5f5d62985..6022ac29f4 100644 --- a/MekHQ/data/scenariomodifiers/AlliedTraineesAir.xml +++ b/MekHQ/data/scenariomodifiers/AlliedTraineesAir.xml @@ -14,7 +14,7 @@ false false true - false + true false 5 diff --git a/MekHQ/data/scenariomodifiers/AlliedTraineesGround.xml b/MekHQ/data/scenariomodifiers/AlliedTraineesGround.xml index 31ab068085..40ee4a15fc 100644 --- a/MekHQ/data/scenariomodifiers/AlliedTraineesGround.xml +++ b/MekHQ/data/scenariomodifiers/AlliedTraineesGround.xml @@ -14,7 +14,7 @@ false false true - false + true false 5 diff --git a/MekHQ/data/scenariomodifiers/ArmednArmored.xml b/MekHQ/data/scenariomodifiers/ArmednArmored.xml index f0c1932299..1cbc1325a1 100644 --- a/MekHQ/data/scenariomodifiers/ArmednArmored.xml +++ b/MekHQ/data/scenariomodifiers/ArmednArmored.xml @@ -4,5 +4,5 @@ PreForceGeneration Opposing 1 - 1 + -1 \ No newline at end of file diff --git a/MekHQ/data/scenariomodifiers/BadEvent.xml b/MekHQ/data/scenariomodifiers/BadEvent.xml index c990af1448..9d3d68ea88 100644 --- a/MekHQ/data/scenariomodifiers/BadEvent.xml +++ b/MekHQ/data/scenariomodifiers/BadEvent.xml @@ -4,4 +4,5 @@ PreForceGeneration Opposing 1 + -1 \ No newline at end of file diff --git a/MekHQ/data/scenariomodifiers/BadIntelAir.xml b/MekHQ/data/scenariomodifiers/BadIntelAir.xml index 5bf8f99295..e04c0069de 100644 --- a/MekHQ/data/scenariomodifiers/BadIntelAir.xml +++ b/MekHQ/data/scenariomodifiers/BadIntelAir.xml @@ -9,7 +9,7 @@ 0 true false - true + false false 1 diff --git a/MekHQ/data/scenariomodifiers/BadIntelGround.xml b/MekHQ/data/scenariomodifiers/BadIntelGround.xml index de94d32f25..b41cf70292 100644 --- a/MekHQ/data/scenariomodifiers/BadIntelGround.xml +++ b/MekHQ/data/scenariomodifiers/BadIntelGround.xml @@ -13,7 +13,7 @@ 0 true false - true + false false 1 diff --git a/MekHQ/data/scenariomodifiers/EnemyAceMechARC2R.xml b/MekHQ/data/scenariomodifiers/EnemyAceMechARC2R.xml index 55836996ca..1ab91f3df0 100644 --- a/MekHQ/data/scenariomodifiers/EnemyAceMechARC2R.xml +++ b/MekHQ/data/scenariomodifiers/EnemyAceMechARC2R.xml @@ -18,7 +18,7 @@ false 5 - -1 + 0 2 Enemy Mech Ace 5 diff --git a/MekHQ/data/scenariomodifiers/EnemyAirPatrol.xml b/MekHQ/data/scenariomodifiers/EnemyAirPatrol.xml index 9be64ec4e1..84f9f84897 100644 --- a/MekHQ/data/scenariomodifiers/EnemyAirPatrol.xml +++ b/MekHQ/data/scenariomodifiers/EnemyAirPatrol.xml @@ -9,7 +9,7 @@ 2 true false - true + false false 1 diff --git a/MekHQ/data/scenariomodifiers/EnemyAirSupport.xml b/MekHQ/data/scenariomodifiers/EnemyAirSupport.xml index b37cb06860..475e8dc90d 100644 --- a/MekHQ/data/scenariomodifiers/EnemyAirSupport.xml +++ b/MekHQ/data/scenariomodifiers/EnemyAirSupport.xml @@ -9,7 +9,7 @@ -3 true false - true + false false 1 diff --git a/MekHQ/data/scenariomodifiers/EnemyAirSupportBombers.xml b/MekHQ/data/scenariomodifiers/EnemyAirSupportBombers.xml index 31342aefd2..6bc2d6ea66 100644 --- a/MekHQ/data/scenariomodifiers/EnemyAirSupportBombers.xml +++ b/MekHQ/data/scenariomodifiers/EnemyAirSupportBombers.xml @@ -9,7 +9,7 @@ -3 true false - true + false false 1 diff --git a/MekHQ/data/scenariomodifiers/EnemyDropship.xml b/MekHQ/data/scenariomodifiers/EnemyDropship.xml index 40fc9277c8..c751768f54 100644 --- a/MekHQ/data/scenariomodifiers/EnemyDropship.xml +++ b/MekHQ/data/scenariomodifiers/EnemyDropship.xml @@ -9,7 +9,7 @@ 0 false false - true + false false false diff --git a/MekHQ/data/scenariomodifiers/EnemyFieldArtyOffboard.xml b/MekHQ/data/scenariomodifiers/EnemyFieldArtyOffboard.xml index 67e1400c65..7b88fbc57c 100644 --- a/MekHQ/data/scenariomodifiers/EnemyFieldArtyOffboard.xml +++ b/MekHQ/data/scenariomodifiers/EnemyFieldArtyOffboard.xml @@ -13,7 +13,7 @@ 0 false false - false + true false true diff --git a/MekHQ/data/scenariomodifiers/EnemyHotDrop.xml b/MekHQ/data/scenariomodifiers/EnemyHotDrop.xml index a103936c6b..daa93e9fb6 100644 --- a/MekHQ/data/scenariomodifiers/EnemyHotDrop.xml +++ b/MekHQ/data/scenariomodifiers/EnemyHotDrop.xml @@ -13,7 +13,7 @@ -3 false false - true + false false 10 diff --git a/MekHQ/data/scenariomodifiers/EnemyMechReinforcements.xml b/MekHQ/data/scenariomodifiers/EnemyMechReinforcements.xml index a8a33b1c79..fa4a4e0b33 100644 --- a/MekHQ/data/scenariomodifiers/EnemyMechReinforcements.xml +++ b/MekHQ/data/scenariomodifiers/EnemyMechReinforcements.xml @@ -13,7 +13,7 @@ -3 true false - true + false false 1 diff --git a/MekHQ/data/scenariomodifiers/EnemyReinforcements.xml b/MekHQ/data/scenariomodifiers/EnemyReinforcements.xml index 76f9d51361..6a40834a79 100644 --- a/MekHQ/data/scenariomodifiers/EnemyReinforcements.xml +++ b/MekHQ/data/scenariomodifiers/EnemyReinforcements.xml @@ -13,7 +13,7 @@ -3 true false - true + false false 1 diff --git a/MekHQ/data/scenariomodifiers/EnemyTankReinforcements.xml b/MekHQ/data/scenariomodifiers/EnemyTankReinforcements.xml index 6ebef84960..5b86aba7a9 100644 --- a/MekHQ/data/scenariomodifiers/EnemyTankReinforcements.xml +++ b/MekHQ/data/scenariomodifiers/EnemyTankReinforcements.xml @@ -13,7 +13,7 @@ -3 true false - true + false false 1 diff --git a/MekHQ/data/scenariomodifiers/FacilityAlliedEvac.xml b/MekHQ/data/scenariomodifiers/FacilityAlliedEvac.xml index d497588461..90bca4824d 100644 --- a/MekHQ/data/scenariomodifiers/FacilityAlliedEvac.xml +++ b/MekHQ/data/scenariomodifiers/FacilityAlliedEvac.xml @@ -8,7 +8,7 @@ -1 0 true - false + true true false false diff --git a/MekHQ/data/scenariomodifiers/GroundedEnemyDropship.xml b/MekHQ/data/scenariomodifiers/GroundedEnemyDropship.xml index 9e6eec6f52..ff8ca3aa16 100644 --- a/MekHQ/data/scenariomodifiers/GroundedEnemyDropship.xml +++ b/MekHQ/data/scenariomodifiers/GroundedEnemyDropship.xml @@ -13,7 +13,7 @@ 0 false false - true + false false false diff --git a/MekHQ/data/scenariomodifiers/HostileBVBudgetIncrease.xml b/MekHQ/data/scenariomodifiers/HostileBVBudgetIncrease.xml index 280bf8d5eb..3cf0ca0a37 100644 --- a/MekHQ/data/scenariomodifiers/HostileBVBudgetIncrease.xml +++ b/MekHQ/data/scenariomodifiers/HostileBVBudgetIncrease.xml @@ -3,5 +3,5 @@ false PreForceGeneration Opposing - 1 + -1 \ No newline at end of file diff --git a/MekHQ/data/scenariomodifiers/HouseOfficerAir.xml b/MekHQ/data/scenariomodifiers/HouseOfficerAir.xml index e1693bbdfa..bf68d28e91 100644 --- a/MekHQ/data/scenariomodifiers/HouseOfficerAir.xml +++ b/MekHQ/data/scenariomodifiers/HouseOfficerAir.xml @@ -8,9 +8,9 @@ 9 0 false - false + true true - false + true false 5 diff --git a/MekHQ/data/scenariomodifiers/HouseOfficerGround.xml b/MekHQ/data/scenariomodifiers/HouseOfficerGround.xml index 73d4fefe6a..61e5889c08 100644 --- a/MekHQ/data/scenariomodifiers/HouseOfficerGround.xml +++ b/MekHQ/data/scenariomodifiers/HouseOfficerGround.xml @@ -13,7 +13,7 @@ 0 false false - true + false false false diff --git a/MekHQ/data/scenariomodifiers/IntegratedAlliesAir.xml b/MekHQ/data/scenariomodifiers/IntegratedAlliesAir.xml index 2b744c3cfa..1d358e8626 100644 --- a/MekHQ/data/scenariomodifiers/IntegratedAlliesAir.xml +++ b/MekHQ/data/scenariomodifiers/IntegratedAlliesAir.xml @@ -9,8 +9,8 @@ 0 false false - true - false + false + true false 5 diff --git a/MekHQ/data/scenariomodifiers/IntegratedAlliesGround.xml b/MekHQ/data/scenariomodifiers/IntegratedAlliesGround.xml index 3d7c8d9e18..a6b5a473ca 100644 --- a/MekHQ/data/scenariomodifiers/IntegratedAlliesGround.xml +++ b/MekHQ/data/scenariomodifiers/IntegratedAlliesGround.xml @@ -13,8 +13,8 @@ 0 false false - true - false + false + true false 5 diff --git a/MekHQ/data/scenariomodifiers/LiaisonAir.xml b/MekHQ/data/scenariomodifiers/LiaisonAir.xml index 4415fbcfa4..f8245b5305 100644 --- a/MekHQ/data/scenariomodifiers/LiaisonAir.xml +++ b/MekHQ/data/scenariomodifiers/LiaisonAir.xml @@ -9,8 +9,8 @@ 0 false false - true - false + false + true false 5 diff --git a/MekHQ/data/scenariomodifiers/LiaisonGround.xml b/MekHQ/data/scenariomodifiers/LiaisonGround.xml index f8cd89d632..85d9b27914 100644 --- a/MekHQ/data/scenariomodifiers/LiaisonGround.xml +++ b/MekHQ/data/scenariomodifiers/LiaisonGround.xml @@ -13,8 +13,8 @@ 0 false false - true - false + false + true false 5 diff --git a/MekHQ/data/scenariomodifiers/LocalGarrisonBoats.xml b/MekHQ/data/scenariomodifiers/LocalGarrisonBoats.xml index fc7c5d51a3..3c1b849c47 100644 --- a/MekHQ/data/scenariomodifiers/LocalGarrisonBoats.xml +++ b/MekHQ/data/scenariomodifiers/LocalGarrisonBoats.xml @@ -13,7 +13,7 @@ 0 false false - true + false false 0 diff --git a/MekHQ/data/scenariomodifiers/LocalGarrisonInfantry.xml b/MekHQ/data/scenariomodifiers/LocalGarrisonInfantry.xml index b388c6a3c3..d646bafbc0 100644 --- a/MekHQ/data/scenariomodifiers/LocalGarrisonInfantry.xml +++ b/MekHQ/data/scenariomodifiers/LocalGarrisonInfantry.xml @@ -13,7 +13,7 @@ 0 false false - true + false false 10 diff --git a/MekHQ/data/scenariomodifiers/OverwhelmingEnemyAirReinforcements.xml b/MekHQ/data/scenariomodifiers/OverwhelmingEnemyAirReinforcements.xml index 50dafcdfaa..f72be09905 100644 --- a/MekHQ/data/scenariomodifiers/OverwhelmingEnemyAirReinforcements.xml +++ b/MekHQ/data/scenariomodifiers/OverwhelmingEnemyAirReinforcements.xml @@ -13,7 +13,7 @@ -3 true false - true + false false 1 diff --git a/MekHQ/data/scenariomodifiers/OverwhelmingEnemyGroundReinforcements.xml b/MekHQ/data/scenariomodifiers/OverwhelmingEnemyGroundReinforcements.xml index 3181884c86..e86ae50127 100644 --- a/MekHQ/data/scenariomodifiers/OverwhelmingEnemyGroundReinforcements.xml +++ b/MekHQ/data/scenariomodifiers/OverwhelmingEnemyGroundReinforcements.xml @@ -13,7 +13,7 @@ -3 true false - true + false false 1 diff --git a/MekHQ/data/scenariomodifiers/PiratesIncomingAir.xml b/MekHQ/data/scenariomodifiers/PiratesIncomingAir.xml index 9aba5591eb..840b660edd 100644 --- a/MekHQ/data/scenariomodifiers/PiratesIncomingAir.xml +++ b/MekHQ/data/scenariomodifiers/PiratesIncomingAir.xml @@ -9,7 +9,7 @@ -3 true false - true + false false 1 diff --git a/MekHQ/data/scenariomodifiers/PiratesIncomingGround.xml b/MekHQ/data/scenariomodifiers/PiratesIncomingGround.xml index 4251c00659..58ae95a9ab 100644 --- a/MekHQ/data/scenariomodifiers/PiratesIncomingGround.xml +++ b/MekHQ/data/scenariomodifiers/PiratesIncomingGround.xml @@ -13,7 +13,7 @@ -3 true false - true + false false 1 diff --git a/MekHQ/data/scenariomodifiers/PiratesPresentAir.xml b/MekHQ/data/scenariomodifiers/PiratesPresentAir.xml index 7c0ae0b66a..c5e4bf796e 100644 --- a/MekHQ/data/scenariomodifiers/PiratesPresentAir.xml +++ b/MekHQ/data/scenariomodifiers/PiratesPresentAir.xml @@ -9,7 +9,7 @@ 0 true false - true + false false 1 diff --git a/MekHQ/data/scenariomodifiers/PiratesPresentGround.xml b/MekHQ/data/scenariomodifiers/PiratesPresentGround.xml index 5647c33a18..3f7985c9b9 100644 --- a/MekHQ/data/scenariomodifiers/PiratesPresentGround.xml +++ b/MekHQ/data/scenariomodifiers/PiratesPresentGround.xml @@ -13,7 +13,7 @@ 0 true false - true + false false 1 From 353c8bdcbb0251121890b96beaeb3d19c75b0d39 Mon Sep 17 00:00:00 2001 From: IllianiCBT Date: Sun, 2 Jun 2024 22:46:40 -0500 Subject: [PATCH 11/12] fix: adjusted forceBV scaling criteria in AtBDynamicScenarioFactory.java - Increased acceptable forceBV to 125% of forceBVBudget from 110% --- .../mekhq/campaign/mission/AtBDynamicScenarioFactory.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/MekHQ/src/mekhq/campaign/mission/AtBDynamicScenarioFactory.java b/MekHQ/src/mekhq/campaign/mission/AtBDynamicScenarioFactory.java index 25160c11cc..048ac33786 100644 --- a/MekHQ/src/mekhq/campaign/mission/AtBDynamicScenarioFactory.java +++ b/MekHQ/src/mekhq/campaign/mission/AtBDynamicScenarioFactory.java @@ -30,10 +30,10 @@ import megamek.codeUtilities.StringUtility; import megamek.common.*; import megamek.common.annotations.Nullable; -import megamek.common.planetaryconditions.Atmosphere; import megamek.common.enums.Gender; import megamek.common.enums.SkillLevel; import megamek.common.icons.Camouflage; +import megamek.common.planetaryconditions.Atmosphere; import megamek.common.util.fileUtils.MegaMekFile; import megamek.utilities.BoardClassifier; import mekhq.MHQConstants; @@ -518,8 +518,8 @@ public static int generateForce(AtBDynamicScenario scenario, AtBContract contrac } if (forceTemplate.getGenerationMethod() == ForceGenerationMethod.BVScaled.ordinal()) { - // remove random units until forceBV is below 110% of forceBVBudget - while ((generatedEntities.size() > 1) && (((double) forceBV / forceBVBudget)) > 1.1) { + // remove random units until forceBV is below 125% of forceBVBudget + while ((generatedEntities.size() > 1) && (((double) forceBV / forceBVBudget)) > 1.25) { generatedEntities.remove(Compute.randomInt(generatedEntities.size())); // update forceBV From 3c9c62ba8265ac5d649f37122e117d4a3deacf30 Mon Sep 17 00:00:00 2001 From: IllianiCBT Date: Sun, 2 Jun 2024 23:04:17 -0500 Subject: [PATCH 12/12] refactor: simplified battle value calculation in AtBDynamicScenarioFactory --- .../mekhq/campaign/mission/AtBDynamicScenarioFactory.java | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/MekHQ/src/mekhq/campaign/mission/AtBDynamicScenarioFactory.java b/MekHQ/src/mekhq/campaign/mission/AtBDynamicScenarioFactory.java index 048ac33786..42877e010f 100644 --- a/MekHQ/src/mekhq/campaign/mission/AtBDynamicScenarioFactory.java +++ b/MekHQ/src/mekhq/campaign/mission/AtBDynamicScenarioFactory.java @@ -523,10 +523,9 @@ public static int generateForce(AtBDynamicScenario scenario, AtBContract contrac generatedEntities.remove(Compute.randomInt(generatedEntities.size())); // update forceBV - for (Entity entity : generatedEntities) { - forceBV += entity.calculateBattleValue(); - ; - } + forceBV += generatedEntities.stream() + .mapToInt(Entity::calculateBattleValue) + .sum(); } }