@@ -42,7 +42,16 @@ function DecisionDay:SetupInternalReinforcementsData()
4242 for bunkerRegionName , bunkerRegionData in pairs (self .bunkerRegions ) do
4343 if bunkerRegionData .internalReinforcementsArea then
4444 for box in bunkerRegionData .internalReinforcementsArea .Boxes do
45- self .internalReinforcementsData [bunkerRegionData .bunkerId ].area :AddBox (box );
45+ local shouldAddBox = true ;
46+ for internalReinforcementsAreaBox in self .internalReinforcementsData [bunkerRegionData .bunkerId ].area .Boxes do
47+ if internalReinforcementsAreaBox :IsWithinBox (box .Center ) then
48+ shouldAddBox = false ;
49+ break ;
50+ end
51+ end
52+ if shouldAddBox then
53+ self .internalReinforcementsData [bunkerRegionData .bunkerId ].area :AddBox (box );
54+ end
4655 end
4756 end
4857 end
@@ -777,8 +786,10 @@ function DecisionDay:ResumeLoadedGame()
777786 end
778787 end
779788
780- self :UpdateLZAreas ();
781- self :UpdateAlliedAttackersWaypoint ();
789+ if self .currentStage >= self .stages .frontBunkerCaptured then
790+ self :UpdateLZAreas ();
791+ self :UpdateAlliedAttackersWaypoint ();
792+ end
782793end
783794
784795function DecisionDay :DoGameOverCheck ()
@@ -2071,7 +2082,7 @@ function DecisionDay:UpdateActivity()
20712082
20722083 self :UpdateCurrentStage ();
20732084
2074- if self .WinnerTeam == nil then
2085+ if self .WinnerTeam == - 1 then
20752086 self :UpdateCamera ();
20762087 end
20772088
@@ -2257,18 +2268,21 @@ function DecisionDay:CalculateInternalReinforcementPositionsToEnemyTargets(bunke
22572268 coroutine.yield (); -- Yield after initial setup, so we can set up our coroutines separately from running them.
22582269 end
22592270
2271+ local numberOfPathsCalculated = 0 ;
22602272 for _ , enemyToTarget in ipairs (enemiesToTarget ) do
22612273 if MovableMan :ValidMO (enemyToTarget ) then
22622274 local internalReinforcementPositionForEnemy ;
22632275 local pathLengthFromClosestInternalReinforcementPositionToEnemy = SceneMan .SceneWidth * SceneMan .SceneHeight ;
22642276 local enemyToTargetPos = enemyToTarget .Pos ;
22652277 for _ , internalReinforcementPosition in pairs (self .internalReinforcementsData [bunkerId ].positions ) do
2266- if SceneMan :ShortestDistance (internalReinforcementPosition , enemyToTargetPos , false ):MagnitudeIsLessThan (500 ) then
2267- local pathLengthFromInternalReinforcementPositionToEnemy = SceneMan .Scene :CalculatePath (internalReinforcementPosition , enemyToTargetPos , false , GetPathFindingDefaultDigStrength (), self .aiTeam );
2268- if pathLengthFromInternalReinforcementPositionToEnemy < pathLengthFromClosestInternalReinforcementPositionToEnemy then
2269- internalReinforcementPositionForEnemy = internalReinforcementPosition ;
2270- pathLengthFromClosestInternalReinforcementPositionToEnemy = pathLengthFromInternalReinforcementPositionToEnemy ;
2271- end
2278+ print (" Calculating path from internalReinforcementPosition at " .. tostring (internalReinforcementPosition ) .. " to enemy target at " .. tostring (enemyToTargetPos ).. " . Shortest distance magnitude is " .. tostring (SceneMan :ShortestDistance (internalReinforcementPosition , enemyToTargetPos , false ).Magnitude ));
2279+ local pathLengthFromInternalReinforcementPositionToEnemy = SceneMan .Scene :CalculatePath (internalReinforcementPosition , enemyToTargetPos , false , GetPathFindingDefaultDigStrength (), self .aiTeam );
2280+ if pathLengthFromInternalReinforcementPositionToEnemy < pathLengthFromClosestInternalReinforcementPositionToEnemy then
2281+ internalReinforcementPositionForEnemy = internalReinforcementPosition ;
2282+ pathLengthFromClosestInternalReinforcementPositionToEnemy = pathLengthFromInternalReinforcementPositionToEnemy ;
2283+ end
2284+ numberOfPathsCalculated = numberOfPathsCalculated + 1 ;
2285+ if numberOfPathsCalculated % 3 == 0 and coroutine.running () then
22722286 coroutine.yield ();
22732287 end
22742288 end
0 commit comments