@@ -77,8 +77,8 @@ function BunkerBreach:SetupDefenderBrains()
7777
7878 -- Add defender brains, either using the Brain area or picking randomly from those created by deployments.
7979 if SceneMan .Scene :HasArea (" Brain" ) then
80- for actor in MovableMan .Actors do
81- if actor . Team == self . defenderTeam and actor :IsInGroup (" Brains" ) then
80+ for actor in MovableMan .AddedActors do
81+ if actor :IsInGroup (" Brains" ) then
8282 actor .ToDelete = true ;
8383 end
8484 end
@@ -141,35 +141,52 @@ function BunkerBreach:SetupDefenderActors()
141141 local techID = PresetMan :GetModuleID (self :GetTeamTech (self .defenderTeam ));
142142 local crabToHumanSpawnRatio = self :GetCrabToHumanSpawnRatio (techID );
143143
144- for _ , loadoutName in pairs ({" Light" , " Heavy" , " Sniper" , " Engineer" , " Mecha" , " Turret" }) do
144+ local loadoutNames = {" Light" , " Heavy" , " Sniper" , " Engineer" , " Mecha" , " Turret" };
145+
146+ local hasSpawnAreas = false ;
147+ for _ , loadoutName in pairs (loadoutNames ) do
145148 if SceneMan .Scene :HasArea (loadoutName .. " Defenders" ) then
146- local defenderArea = SceneMan .Scene :GetOptionalArea (loadoutName .. " Defenders" );
147- if defenderArea ~= nil then
148- for defenderBox in defenderArea .Boxes do
149- local guard ;
150- if loadoutName == " Mecha" or loadoutName == " Turret" then
151- guard = crabToHumanSpawnRatio > 0 and self :CreateCrab (techID , loadoutName == " Turret" ) or self :CreateInfantry (techID , " Heavy" );
152- else
153- guard = self :CreateInfantry (techID , loadoutName );
154- end
155- if guard then
156- guard .Pos = defenderBox .Center ;
157- guard .Team = self .defenderTeam ;
158- guard .AIMode = Actor .AIMODE_SENTRY ;
159- if loadoutName == " Engineer" then
160- guard .AIMode = Actor .AIMODE_GOLDDIG ;
149+ hasSpawnAreas = true ;
150+ end
151+ end
152+
153+ for actor in MovableMan .AddedActors do
154+ if not actor :IsInGroup (" Brains" ) and not actor :IsInGroup (" Bunker Systems - Automovers" ) then
155+ if hasSpawnAreas then
156+ actor .ToDelete = true ;
157+ elseif actor .Team ~= self .defenderTeam then
158+ MovableMan :ChangeActorTeam (actor , self .defenderTeam );
159+ end
160+ end
161+ end
162+
163+ if hasSpawnAreas then
164+ for _ , loadoutName in pairs ({" Light" , " Heavy" , " Sniper" , " Engineer" , " Mecha" , " Turret" }) do
165+ if SceneMan .Scene :HasArea (loadoutName .. " Defenders" ) then
166+ hasSpawnAreas = true ;
167+ local defenderArea = SceneMan .Scene :GetOptionalArea (loadoutName .. " Defenders" );
168+ if defenderArea ~= nil then
169+ for defenderBox in defenderArea .Boxes do
170+ local guard ;
171+ if loadoutName == " Mecha" or loadoutName == " Turret" then
172+ guard = crabToHumanSpawnRatio > 0 and self :CreateCrab (techID , loadoutName == " Turret" ) or self :CreateInfantry (techID , " Heavy" );
173+ else
174+ guard = self :CreateInfantry (techID , loadoutName );
175+ end
176+ if guard then
177+ guard .Pos = defenderBox .Center ;
178+ guard .Team = self .defenderTeam ;
179+ guard .AIMode = Actor .AIMODE_SENTRY ;
180+ if loadoutName == " Engineer" then
181+ guard .AIMode = Actor .AIMODE_GOLDDIG ;
182+ end
183+ MovableMan :AddActor (guard );
161184 end
162- MovableMan :AddActor (guard );
163185 end
164186 end
165187 end
166188 end
167189 end
168- for actor in MovableMan .AddedActors do
169- if actor .Team ~= self .defenderTeam and not actor :IsInGroup (" Brains" ) and not actor :IsInGroup (" Bunker Systems - Automovers" ) then
170- MovableMan :ChangeActorTeam (actor , self .defenderTeam );
171- end
172- end
173190end
174191
175192function BunkerBreach :SetupFogOfWar ()
@@ -241,12 +258,12 @@ function BunkerBreach:StartActivity(isNewGame)
241258
242259 self :SetupAIVariables ();
243260
244- self :SetupHumanAttackerBrains ();
245-
246261 self :SetupDefenderBrains ();
247262
248263 self :SetupDefenderActors ();
249264
265+ self :SetupHumanAttackerBrains ();
266+
250267 self :SetupFogOfWar ();
251268 else
252269 self :ResumeLoadedGame ();
0 commit comments