Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[WIP] Resupply Module #5158

Draft
wants to merge 123 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from 108 commits
Commits
Show all changes
123 commits
Select commit Hold shift + click to select a range
4ab0f32
Add SupplyDrop class for managing campaign supply drops
IllianiCBT Oct 23, 2024
f5321e0
Add SupplyDrops feature to campaign
IllianiCBT Oct 24, 2024
8ee73cd
Remove bonus parts feature
IllianiCBT Oct 24, 2024
90a081a
Refactor ResolveScenarioWizardDialog constructor
IllianiCBT Oct 24, 2024
a2a9e35
Update copyright years to 2024
IllianiCBT Oct 24, 2024
40c1000
Refactored getWeight method in SupplyDrops
IllianiCBT Oct 24, 2024
81305fc
Add support for converting remaining points to Supply Drops
IllianiCBT Oct 24, 2024
29229d0
Update SupplyDrops logic for historical accuracy and bug fixes
IllianiCBT Oct 24, 2024
bdc42e1
Refactor SupplyDrops to include enemy units and parts
IllianiCBT Oct 24, 2024
6897fb3
Add ComStar interest-based suspicious death mechanic
IllianiCBT Oct 25, 2024
5c1753c
Removed suspicious death logic and moved SupplyDrops
IllianiCBT Oct 25, 2024
efd259b
Add new classes and update supply drop handling
IllianiCBT Oct 25, 2024
4694aa4
Merge branch 'refs/heads/master' into supplyDrops
IllianiCBT Oct 25, 2024
fa18c5e
Refactor supply drop and status update messaging.
IllianiCBT Oct 26, 2024
2da6f31
Refactor SupplyDrop dialog handling and message creation
IllianiCBT Oct 26, 2024
123e103
Reduce interception chance and clean up supply text
IllianiCBT Oct 26, 2024
9fb834a
Refactor: Rename SupplyDrop to Resupply and reorganize package
IllianiCBT Oct 26, 2024
1b9c804
Refactor resupply mission handling
IllianiCBT Oct 27, 2024
7d0b2f3
Refactored resupply process in Campaign.java
IllianiCBT Oct 27, 2024
e6dcc28
Merge branch 'refs/heads/master' into supplyDrops
IllianiCBT Oct 27, 2024
8822f43
Edited in final text
IllianiCBT Oct 27, 2024
6b14d7a
Finished final text so generic status updates
IllianiCBT Oct 27, 2024
6249dd7
Improve intercepted convoy message logic
IllianiCBT Oct 27, 2024
28d3044
Added final text for statusUpdateEnemyCritical events
IllianiCBT Oct 27, 2024
e33438e
Add placeholder tags in Resupply.properties
IllianiCBT Oct 28, 2024
81a3265
Refactor resupply package structure and enhance resupply logic
IllianiCBT Oct 28, 2024
c84b109
Remove commented-out resupply code
IllianiCBT Oct 28, 2024
fa8ae4d
Update convoy interception handling and messaging
IllianiCBT Oct 28, 2024
70ae6a3
Refactor Resupply class and update resource file
IllianiCBT Oct 28, 2024
7d03abf
Merge branch 'refs/heads/stratCon_utility' into supplyDrops
IllianiCBT Oct 28, 2024
7091502
Refactored convoy interception scenario generation
IllianiCBT Oct 28, 2024
34ad0ce
Add scenario template to StratCon emergency convoy defense
IllianiCBT Oct 28, 2024
c7a0841
Add Emergency Convoy Defense scenario template
IllianiCBT Oct 28, 2024
322f7a4
Merge branch 'refs/heads/fg3_balancing' into supplyDrops
IllianiCBT Oct 28, 2024
5bbb51d
Refactor Convoy Defense scenario template
IllianiCBT Oct 28, 2024
a9ee577
Fix resupply logic and refactor scenario completion
IllianiCBT Oct 28, 2024
3bbe1f8
Add resupply management for independent contracts
IllianiCBT Oct 29, 2024
573727d
Merge branch 'refs/heads/master' into supplyDrops
IllianiCBT Oct 29, 2024
8e1e921
Merge branch 'refs/heads/master' into supplyDrops
IllianiCBT Oct 29, 2024
947ce95
Introduce player-managed convoys and improve StratCon scenarios
IllianiCBT Oct 29, 2024
5147875
Remove getPlayerConvoy method and update scenario templates
IllianiCBT Oct 30, 2024
f60547e
Refactored convoy handling and personnel status update logic
IllianiCBT Oct 30, 2024
ce74ce9
Refactored convoy force unit handling to prevent concurrent modificat…
IllianiCBT Oct 30, 2024
a49520b
Add SupplyDrop class for managing campaign supply drops
IllianiCBT Oct 23, 2024
8243e3b
Add SupplyDrops feature to campaign
IllianiCBT Oct 24, 2024
08b9aa5
Remove bonus parts feature
IllianiCBT Oct 24, 2024
6d84c25
Refactor ResolveScenarioWizardDialog constructor
IllianiCBT Oct 24, 2024
60133f7
Update copyright years to 2024
IllianiCBT Oct 24, 2024
efe6c12
Refactored getWeight method in SupplyDrops
IllianiCBT Oct 24, 2024
4e31f60
Add support for converting remaining points to Supply Drops
IllianiCBT Oct 24, 2024
e7082d4
Update SupplyDrops logic for historical accuracy and bug fixes
IllianiCBT Oct 24, 2024
b4c3c32
Refactor SupplyDrops to include enemy units and parts
IllianiCBT Oct 24, 2024
1f4f57a
Add ComStar interest-based suspicious death mechanic
IllianiCBT Oct 25, 2024
d14270d
Removed suspicious death logic and moved SupplyDrops
IllianiCBT Oct 25, 2024
aef6e2c
Add new classes and update supply drop handling
IllianiCBT Oct 25, 2024
eaf1aa6
Refactor supply drop and status update messaging.
IllianiCBT Oct 26, 2024
8f35ebb
Refactor SupplyDrop dialog handling and message creation
IllianiCBT Oct 26, 2024
fa7d795
Reduce interception chance and clean up supply text
IllianiCBT Oct 26, 2024
5ba13d8
Refactor: Rename SupplyDrop to Resupply and reorganize package
IllianiCBT Oct 26, 2024
e6bd7bf
Refactor resupply mission handling
IllianiCBT Oct 27, 2024
51eec2d
Refactored resupply process in Campaign.java
IllianiCBT Oct 27, 2024
f97df53
Edited in final text
IllianiCBT Oct 27, 2024
6cca118
Finished final text so generic status updates
IllianiCBT Oct 27, 2024
1e4229d
Improve intercepted convoy message logic
IllianiCBT Oct 27, 2024
c13ced2
Added final text for statusUpdateEnemyCritical events
IllianiCBT Oct 27, 2024
a2ae287
Add placeholder tags in Resupply.properties
IllianiCBT Oct 28, 2024
e2840f7
Refactor resupply package structure and enhance resupply logic
IllianiCBT Oct 28, 2024
14cdb27
Update convoy interception handling and messaging
IllianiCBT Oct 28, 2024
90dd2f3
Refactor Resupply class and update resource file
IllianiCBT Oct 28, 2024
d96fcdd
Refactored convoy interception scenario generation
IllianiCBT Oct 28, 2024
f16164e
Add scenario template to StratCon emergency convoy defense
IllianiCBT Oct 28, 2024
77d38ba
Add Emergency Convoy Defense scenario template
IllianiCBT Oct 28, 2024
ca9db59
Refactor Convoy Defense scenario template
IllianiCBT Oct 28, 2024
798552b
Fix resupply logic and refactor scenario completion
IllianiCBT Oct 28, 2024
319743c
Add resupply management for independent contracts
IllianiCBT Oct 29, 2024
6e9dc7a
Introduce player-managed convoys and improve StratCon scenarios
IllianiCBT Oct 29, 2024
c9cc178
Remove getPlayerConvoy method and update scenario templates
IllianiCBT Oct 30, 2024
f3ba999
Refactored convoy handling and personnel status update logic
IllianiCBT Oct 30, 2024
984a954
Refactored convoy force unit handling to prevent concurrent modificat…
IllianiCBT Oct 30, 2024
0953eb1
Merge remote-tracking branch 'origin/supplyDrops' into supplyDrops
IllianiCBT Oct 30, 2024
9766df6
Refactor resupply dialog and improve convoy handling
IllianiCBT Oct 30, 2024
b136e07
Add StratconCoords parameter to convoy interception
IllianiCBT Oct 30, 2024
4fbaf61
Add method to set convoy status recursively
IllianiCBT Oct 30, 2024
2c1a7ea
Reorder import statements for market-related classes
IllianiCBT Oct 30, 2024
6136ce5
Add Javadoc comments and make method access modifiers private
IllianiCBT Oct 30, 2024
6080eff
Remove excessive whitespace from Resupply.properties
IllianiCBT Oct 30, 2024
c30da4d
Refactor "StratconTrackState" usage in Resupply class
IllianiCBT Oct 30, 2024
d95bfdd
Add fatigue increase mechanism for independent convoys
IllianiCBT Oct 30, 2024
f235e9a
Refactored fatigue calculation in resupply mission.
IllianiCBT Oct 30, 2024
d7a461f
Finalized `statusUpdateEnemyCritical` and `statusUpdateEnemyStalemate…
IllianiCBT Oct 30, 2024
294566a
Finalized `statusUpdateEnemyDominating` text
IllianiCBT Oct 30, 2024
49dc198
Finalized `statusUpdateEnemyOverwhelming` text
IllianiCBT Oct 31, 2024
df191c7
Add smuggler interactions and refactor resupply dialog.
IllianiCBT Oct 31, 2024
5ed6396
Update documentation and smuggler fee calculation
IllianiCBT Oct 31, 2024
fe25a93
Refactored swindle message generation
IllianiCBT Oct 31, 2024
3f79d54
Remove debug log statement from AtBContract.java
IllianiCBT Oct 31, 2024
d4aae13
Fixed infantry survival logic in Campaign.java
IllianiCBT Oct 31, 2024
396f148
Fix convoy pluralization in resupply details
IllianiCBT Oct 31, 2024
a7ef3d7
Delete unused `comStarInterest.java` and refactor `starLeagueCache.java`
IllianiCBT Oct 31, 2024
3121f81
Limited intact units to actual count available
IllianiCBT Oct 31, 2024
428836f
Refactored StarLeagueCache for flexibility in cache types
IllianiCBT Oct 31, 2024
264f529
Add dud cache dialog generation to StarLeagueCache
IllianiCBT Nov 1, 2024
dccdc2c
Add proposals for hidden Star League caches
IllianiCBT Nov 1, 2024
ae7a8ed
Refactor resupply to simplify and remove unit handling
IllianiCBT Nov 1, 2024
0deec39
Remove redundant Resupply constructor parameters
IllianiCBT Nov 1, 2024
f8c0e89
Refactor and enhance resupply contract messaging
IllianiCBT Nov 1, 2024
f2cb529
Update convoy resupply process and refactor code
IllianiCBT Nov 1, 2024
02fa093
Refactored string formatting and improved switch statement.
IllianiCBT Nov 1, 2024
0f0801a
Fix potential bug in resupply weight calculation
IllianiCBT Nov 1, 2024
d77008d
Adjusted resupply multiplier for AmmoBin parts
IllianiCBT Nov 1, 2024
409ea01
Remove convoy error message and update resupply logic.
IllianiCBT Nov 3, 2024
46109de
Add Procurement Class and Improve Resupply Logic
IllianiCBT Nov 3, 2024
d1547ba
Refactor nullability annotations for consistency
IllianiCBT Nov 3, 2024
31717a6
Implement targeted convoy defense scenarios
IllianiCBT Nov 3, 2024
bb701ad
Prevent incorrect convoy message creation when conditions fail
IllianiCBT Nov 3, 2024
96be946
Correct typos in comment sentences
IllianiCBT Nov 3, 2024
2d89265
history.txt Updates
HammerGS Nov 4, 2024
b2ad061
Add scenario type handling for resupply and roleplay items
IllianiCBT Nov 4, 2024
3259fa1
Refactor access to stratConScenarioType
IllianiCBT Nov 4, 2024
b30a781
Merge branch 'MegaMek:master' into supplyDrops
IllianiCBT Nov 4, 2024
9bebc3e
Merge remote-tracking branch 'origin/supplyDrops' into supplyDrops
IllianiCBT Nov 4, 2024
6e28db0
Refactor random selection and loop length
IllianiCBT Nov 4, 2024
2cc5bda
Refactored resupply logic and added scenario types
IllianiCBT Nov 4, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
145 changes: 145 additions & 0 deletions MekHQ/data/scenariotemplates/Chasing a Rumor.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,145 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ScenarioTemplate>
<name>Chasing a Rumor</name>
<shortBriefing>Fight to secure the hidden cache</shortBriefing>
<detailedBriefing>Intel suggests there is a hidden cache in this region. Unfortunately, enemy forces seem to have caught wind of this intel. The objective is to either destroy or force them to retreat. At least 50% of the enemy must be neutralized, while maintaining 50% of friendly forces.

If this scenario is lost, so too is the hidden cache.</detailedBriefing>
<mapParameters>
<allowedTerrainTypes />
<allowRotation>false</allowRotation>
<baseHeight>0</baseHeight>
<baseWidth>0</baseWidth>
<heightScalingIncrement>5</heightScalingIncrement>
<mapLocation>AllGroundTerrain</mapLocation>
<useStandardAtBSizing>true</useStandardAtBSizing>
<widthScalingIncrement>5</widthScalingIncrement>
</mapParameters>
<scenarioForces>
<entry>
<key>Player</key>
<value>
<actualDeploymentZone>-1</actualDeploymentZone>
<allowAeroBombs>false</allowAeroBombs>
<allowedUnitType>-2</allowedUnitType>
<arrivalTurn>0</arrivalTurn>
<canReinforceLinked>true</canReinforceLinked>
<contributesToBV>true</contributesToBV>
<contributesToMapSize>true</contributesToMapSize>
<contributesToUnitCount>true</contributesToUnitCount>
<deployOffboard>false</deployOffboard>
<deploymentZones>
<deploymentZone>0</deploymentZone>
<deploymentZone>1</deploymentZone>
<deploymentZone>2</deploymentZone>
<deploymentZone>3</deploymentZone>
<deploymentZone>4</deploymentZone>
<deploymentZone>5</deploymentZone>
<deploymentZone>6</deploymentZone>
<deploymentZone>7</deploymentZone>
<deploymentZone>8</deploymentZone>
<deploymentZone>9</deploymentZone>
<deploymentZone>10</deploymentZone>
</deploymentZones>
<destinationZone>5</destinationZone>
<fixedUnitCount>0</fixedUnitCount>
<forceAlignment>0</forceAlignment>
<forceMultiplier>1.0</forceMultiplier>
<forceName>Player</forceName>
<generationMethod>0</generationMethod>
<generationOrder>1</generationOrder>
<maxWeightClass>4</maxWeightClass>
<minWeightClass>0</minWeightClass>
<retreatThreshold>50</retreatThreshold>
<startingAltitude>0</startingAltitude>
<syncDeploymentType>None</syncDeploymentType>
<useArtillery>false</useArtillery>
</value>
</entry>
<entry>
<key>OpFor</key>
<value>
<actualDeploymentZone>-1</actualDeploymentZone>
<allowAeroBombs>false</allowAeroBombs>
<allowedUnitType>-2</allowedUnitType>
<arrivalTurn>0</arrivalTurn>
<canReinforceLinked>true</canReinforceLinked>
<contributesToBV>false</contributesToBV>
<contributesToMapSize>true</contributesToMapSize>
<contributesToUnitCount>false</contributesToUnitCount>
<deployOffboard>false</deployOffboard>
<deploymentZones />
<destinationZone>5</destinationZone>
<fixedUnitCount>0</fixedUnitCount>
<forceAlignment>2</forceAlignment>
<forceMultiplier>2.0</forceMultiplier>
<forceName>OpFor</forceName>
<generationMethod>1</generationMethod>
<generationOrder>5</generationOrder>
<maxWeightClass>4</maxWeightClass>
<minWeightClass>0</minWeightClass>
<retreatThreshold>50</retreatThreshold>
<startingAltitude>0</startingAltitude>
<syncDeploymentType>OppositeEdge</syncDeploymentType>
<syncedForceName>Player</syncedForceName>
<useArtillery>false</useArtillery>
</value>
</entry>
</scenarioForces>
<scenarioObjectives>
<scenarioObjective>
<associatedForceNames>
<associatedForceName>OpFor</associatedForceName>
</associatedForceNames>
<associatedUnitIDs />
<successEffects>
<successEffect>
<effectType>ScenarioVictory</effectType>
<effectScaling>Fixed</effectScaling>
<howMuch>1</howMuch>
</successEffect>
</successEffects>
<failureEffects>
<failureEffect>
<effectType>ScenarioDefeat</effectType>
<effectScaling>Fixed</effectScaling>
<howMuch>1</howMuch>
</failureEffect>
</failureEffects>
<additionalDetails />
<description>Destroy or rout 50% of the following force(s) and unit(s):</description>
<destinationEdge>NONE</destinationEdge>
<objectiveCriterion>ForceWithdraw</objectiveCriterion>
<percentage>50</percentage>
<timeLimitAtMost>true</timeLimitAtMost>
<timeLimitType>None</timeLimitType>
</scenarioObjective>
<scenarioObjective>
<associatedForceNames>
<associatedForceName>Player</associatedForceName>
</associatedForceNames>
<associatedUnitIDs />
<successEffects>
<successEffect>
<effectType>ScenarioVictory</effectType>
<effectScaling>Fixed</effectScaling>
<howMuch>1</howMuch>
</successEffect>
</successEffects>
<failureEffects>
<failureEffect>
<effectType>ScenarioDefeat</effectType>
<effectScaling>Fixed</effectScaling>
<howMuch>1</howMuch>
</failureEffect>
</failureEffects>
<additionalDetails />
<description>Preserve 50% of the following force(s) and unit(s):</description>
<destinationEdge>NONE</destinationEdge>
<objectiveCriterion>Preserve</objectiveCriterion>
<percentage>50</percentage>
<timeLimitAtMost>true</timeLimitAtMost>
<timeLimitType>None</timeLimitType>
</scenarioObjective>
</scenarioObjectives>
</ScenarioTemplate>
Original file line number Diff line number Diff line change
@@ -0,0 +1,139 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ScenarioTemplate>
<name>Emergency Convoy Defense</name>
<shortBriefing>Prevent your resupply falling into the hands of the enemy.</shortBriefing>
<detailedBriefing>The convoy carrying your resupply has come under attack. Ensure the supplies do not fall into enemy hands by destroying 50% of enemy forces. Preserving friendly forces is a secondary priority.</detailedBriefing>
<isHostileFacility>false</isHostileFacility>
<isAlliedFacility>false</isAlliedFacility>
<mapParameters>
<allowedTerrainTypes />
<allowRotation>false</allowRotation>
<baseHeight>0</baseHeight>
<baseWidth>0</baseWidth>
<heightScalingIncrement>5</heightScalingIncrement>
<mapLocation>AllGroundTerrain</mapLocation>
<useStandardAtBSizing>true</useStandardAtBSizing>
<widthScalingIncrement>5</widthScalingIncrement>
</mapParameters>
<scenarioForces>
<entry>
<key>Player</key>
<value>
<actualDeploymentZone>-1</actualDeploymentZone>
<allowAeroBombs>false</allowAeroBombs>
<allowedUnitType>-2</allowedUnitType>
<arrivalTurn>0</arrivalTurn>
<canReinforceLinked>true</canReinforceLinked>
<contributesToBV>true</contributesToBV>
<contributesToMapSize>true</contributesToMapSize>
<contributesToUnitCount>true</contributesToUnitCount>
<deployOffboard>false</deployOffboard>
<deploymentZones>
<deploymentZone>10</deploymentZone>
</deploymentZones>
<destinationZone>4</destinationZone>
<fixedUnitCount>0</fixedUnitCount>
<forceAlignment>0</forceAlignment>
<forceMultiplier>1.0</forceMultiplier>
<forceName>Player</forceName>
<generationMethod>0</generationMethod>
<generationOrder>1</generationOrder>
<maxWeightClass>4</maxWeightClass>
<minWeightClass>0</minWeightClass>
<objectiveLinkedForces />
<retreatThreshold>0</retreatThreshold>
<startingAltitude>0</startingAltitude>
<syncDeploymentType>None</syncDeploymentType>
<useArtillery>false</useArtillery>
</value>
</entry>
<entry>
<key>OpFor</key>
<value>
<actualDeploymentZone>-1</actualDeploymentZone>
<allowAeroBombs>false</allowAeroBombs>
<allowedUnitType>1</allowedUnitType>
<arrivalTurn>0</arrivalTurn>
<canReinforceLinked>true</canReinforceLinked>
<contributesToBV>false</contributesToBV>
<contributesToMapSize>true</contributesToMapSize>
<contributesToUnitCount>false</contributesToUnitCount>
<deployOffboard>false</deployOffboard>
<deploymentZones>
<deploymentZone>0</deploymentZone>
</deploymentZones>
<destinationZone>5</destinationZone>
<fixedUnitCount>0</fixedUnitCount>
<forceAlignment>2</forceAlignment>
<forceMultiplier>2.0</forceMultiplier>
<forceName>OpFor</forceName>
<generationMethod>1</generationMethod>
<generationOrder>5</generationOrder>
<maxWeightClass>4</maxWeightClass>
<minWeightClass>1</minWeightClass>
<objectiveLinkedForces />
<retreatThreshold>50</retreatThreshold>
<startingAltitude>0</startingAltitude>
<syncDeploymentType>None</syncDeploymentType>
<useArtillery>false</useArtillery>
</value>
</entry>
</scenarioForces>
<scenarioObjectives>
<scenarioObjective>
<associatedForceNames>
<associatedForceName>OpFor</associatedForceName>
</associatedForceNames>
<associatedUnitIDs />
<successEffects>
<successEffect>
<effectType>ScenarioVictory</effectType>
<effectScaling>Fixed</effectScaling>
<howMuch>3</howMuch>
</successEffect>
</successEffects>
<failureEffects>
<failureEffect>
<effectType>ScenarioDefeat</effectType>
<effectScaling>Fixed</effectScaling>
<howMuch>3</howMuch>
</failureEffect>
</failureEffects>
<additionalDetails />
<description>Destroy or rout 50% of the following force(s) and unit(s):</description>
<destinationEdge>NONE</destinationEdge>
<objectiveCriterion>ForceWithdraw</objectiveCriterion>
<percentage>50</percentage>
<timeLimit>0</timeLimit>
<timeLimitAtMost>true</timeLimitAtMost>
<timeLimitType>None</timeLimitType>
</scenarioObjective>
<scenarioObjective>
<associatedForceNames>
<associatedForceName>Player</associatedForceName>
</associatedForceNames>
<associatedUnitIDs />
<successEffects>
<successEffect>
<effectType>ScenarioVictory</effectType>
<effectScaling>Fixed</effectScaling>
<howMuch>1</howMuch>
</successEffect>
</successEffects>
<failureEffects>
<failureEffect>
<effectType>ScenarioDefeat</effectType>
<effectScaling>Fixed</effectScaling>
<howMuch>1</howMuch>
</failureEffect>
</failureEffects>
<additionalDetails />
<description>Preserve 50% of the following force(s) and unit(s):</description>
<destinationEdge>NONE</destinationEdge>
<objectiveCriterion>Preserve</objectiveCriterion>
<percentage>50</percentage>
<timeLimitAtMost>true</timeLimitAtMost>
<timeLimitType>None</timeLimitType>
</scenarioObjective>
</scenarioObjectives>
</ScenarioTemplate>
Loading