Skip to content

Commit 3f21dd9

Browse files
committed
Decision day updates
Slowed down internal reinforcements slightly Made capture defender internal reinforcements have a money limit so they scale with faction gold costs. Also let them have up to 5 units (for cheaper factions) and gave them a chance to spawn light units instead of CQB sometimes (depending on difficulty) Removed a bunker bit crate from dday ini, and cleaned up some cruft by resaving it
1 parent ad277ff commit 3f21dd9

File tree

3 files changed

+14
-4141
lines changed

3 files changed

+14
-4141
lines changed

Data/Missions.rte/Activities/DecisionDay.lua

Lines changed: 8 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -221,7 +221,7 @@ function DecisionDay:StartActivity(isNewGame)
221221

222222
self.aiData = {};
223223
self.aiData.externalSpawnTimer = Timer(120000 / self.difficultyRatio);
224-
self.aiData.internalReinforcementsTimer = Timer(90000 / self.difficultyRatio);
224+
self.aiData.internalReinforcementsTimer = Timer(100000 / self.difficultyRatio);
225225
self.aiData.internalReinforcementLimit = 12 * self.difficultyRatio;
226226
self.aiData.numberOfInternalReinforcementsCreated = 0;
227227
self.aiData.internalReinforcementPositionsCalculationCoroutines = {};
@@ -1404,18 +1404,14 @@ function DecisionDay:UpdateAIDecisions()
14041404
for _, internalReinforcementPosition in pairs(self.internalReinforcementsData[bunkerRegionData.bunkerId].positions) do
14051405
if box:IsWithinBox(internalReinforcementPosition) then
14061406
internalReinforcementPositionsToEnemyTargets[internalReinforcementPosition] = {};
1407-
table.insert(internalReinforcementPositionsToEnemyTargets[internalReinforcementPosition], captureAreaCenter);
1408-
if self.difficultyRatio > 0.5 then
1409-
table.insert(internalReinforcementPositionsToEnemyTargets[internalReinforcementPosition], captureAreaCenter);
1410-
end
1411-
if self.difficultyRatio >= (1 + RangeRand(-0.25, 0.25)) then
1407+
for i = 1, 5 do
14121408
table.insert(internalReinforcementPositionsToEnemyTargets[internalReinforcementPosition], captureAreaCenter);
14131409
end
14141410
break;
14151411
end
14161412
end
14171413
end
1418-
self:CreateInternalReinforcements("CQB", internalReinforcementPositionsToEnemyTargets);
1414+
self:CreateInternalReinforcements(math.random() < self.difficultyRatio * 0.75 and "CQB" or "Light", internalReinforcementPositionsToEnemyTargets, nil, 450 * self.difficultyRatio);
14191415
end
14201416

14211417
bunkerRegionData.aiRegionDefenseTimer:Reset();
@@ -2100,7 +2096,7 @@ function DecisionDay:CreateInternalReinforcements(loadout, internalReinforcement
21002096

21012097
print("Internal reinforcement position "..tostring(internalReinforcementPosition).." has "..tostring(#enemyTargetsForPosition).." enemy targets!")
21022098

2103-
local numberOfInternalReinforcementsToCreateAtPosition = math.min(#enemyTargetsForPosition, 3);
2099+
local numberOfInternalReinforcementsToCreateAtPosition = math.min(#enemyTargetsForPosition, 5);
21042100
if numberOfInternalReinforcementsToCreateAtPosition == 1 and math.random() < (self.difficultyRatio * 0.5) then
21052101
numberOfInternalReinforcementsToCreateAtPosition = 2;
21062102
if math.random() < (self.difficultyRatio * 0.1) then
@@ -2118,14 +2114,13 @@ function DecisionDay:CreateInternalReinforcements(loadout, internalReinforcement
21182114
else
21192115
internalReinforcement = self:CreateInfantry(self.aiTeam);
21202116
end
2121-
print("Creating internal reinforcement "..internalReinforcement.PresetName.." who costs "..tostring(internalReinforcement:GetTotalValue(self.aiTeamTech, 1)))
21222117
internalReinforcement.Team = self.aiTeam;
21232118
internalReinforcement.Pos = internalReinforcementPosition;
2124-
if numberOfInternalReinforcementsToCreateAtPosition == 2 then
2125-
internalReinforcement.Pos.X = internalReinforcement.Pos.X + (i == 1 and -10 or 10);
2126-
elseif numberOfInternalReinforcementsToCreateAtPosition == 3 then
2127-
internalReinforcement.Pos.X = internalReinforcement.Pos.X - 30 + (i * 15);
2119+
if numberOfInternalReinforcementsToCreateAtPosition > 1 then
2120+
local leftmostSpawnOffset = 20;
2121+
internalReinforcement.Pos.X = internalReinforcement.Pos.X - leftmostSpawnOffset + ((i - 1) * ((leftmostSpawnOffset * 2) / (numberOfInternalReinforcementsToCreateAtPosition - 1)));
21282122
end
2123+
print("Creating internal reinforcement "..internalReinforcement.PresetName.." who costs "..tostring(internalReinforcement:GetTotalValue(self.aiTeamTech, 1)).. " at "..tostring(internalReinforcement.Pos))
21292124
if internalReinforcement:IsInGroup("Actors - Turrets") then
21302125
internalReinforcement.AIMode = Actor.AIMODE_SENTRY;
21312126
else

0 commit comments

Comments
 (0)