diff --git a/mods/ra/maps/allies-03a/allies03a.lua b/mods/ra/maps/allies-03a/allies03a.lua index 8b0b424462..f53dd2d2e8 100644 --- a/mods/ra/maps/allies-03a/allies03a.lua +++ b/mods/ra/maps/allies-03a/allies03a.lua @@ -253,7 +253,11 @@ InitTriggers = function() Trigger.OnAllKilled(bridges, function() player.MarkCompletedObjective(KillBridges) player.MarkCompletedObjective(TanyaSurvive) - player.MarkCompletedObjective(FreePrisoners) + + -- The prisoners are free once their guards are dead + if PGuard1.IsDead and PGuard2.IsDead then + player.MarkCompletedObjective(FreePrisoners) + end end) local oilPumps = ussr.GetActorsByType("v19") diff --git a/mods/ra/maps/allies-03b/allies03b.lua b/mods/ra/maps/allies-03b/allies03b.lua index 0e84732442..953e6ded13 100644 --- a/mods/ra/maps/allies-03b/allies03b.lua +++ b/mods/ra/maps/allies-03b/allies03b.lua @@ -355,6 +355,14 @@ InitTriggers = function() end end) + -- The engineers need to leave the enemy base to count as 'freed' + Trigger.OnExitedProximityTrigger(BaseCameraWaypoint.CenterPosition, WDist.New(7 * 1024), function(a, id) + if a.Type == "hacke6" and not EngisFreed then + EngisFreed = true + Trigger.RemoveProximityTrigger(id) + end + end) + Trigger.AfterDelay(0, function() local bridges = Utils.Where(Map.ActorsInWorld, function(actor) return actor.Type == "bridge1" or actor.Type == "bridge2" end) ExplodingBridge = bridges[1] @@ -362,7 +370,11 @@ InitTriggers = function() Trigger.OnAllKilled(bridges, function() player.MarkCompletedObjective(KillBridges) player.MarkCompletedObjective(TanyaSurvive) - player.MarkCompletedObjective(FreePrisoners) + + -- The medic is freed once his guard is dead + if MediFreed and MediGuard.IsDead and EngisFreed then + player.MarkCompletedObjective(FreePrisoners) + end end) end) end