From aa910207903b53232288749dc3b775fcb8de5bfc Mon Sep 17 00:00:00 2001 From: Oliver Brakmann Date: Sun, 15 Jun 2014 12:36:19 +0200 Subject: [PATCH 1/3] Do not discard activity queue when FlyAttack completes. Fixes #4482. --- OpenRA.Mods.RA/Air/FlyAttack.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/OpenRA.Mods.RA/Air/FlyAttack.cs b/OpenRA.Mods.RA/Air/FlyAttack.cs index 703a98ae8c..f77fd2de1b 100755 --- a/OpenRA.Mods.RA/Air/FlyAttack.cs +++ b/OpenRA.Mods.RA/Air/FlyAttack.cs @@ -22,11 +22,11 @@ namespace OpenRA.Mods.RA.Air public override Activity Tick(Actor self) { if (!target.IsValidFor(self)) - Cancel(self); + return NextActivity; var limitedAmmo = self.TraitOrDefault(); if (limitedAmmo != null && !limitedAmmo.HasAmmo()) - Cancel(self); + return NextActivity; var attack = self.TraitOrDefault(); if (attack != null) From c12527e866883c4ff2a11d0503ed2434cfb70ad5 Mon Sep 17 00:00:00 2001 From: Oliver Brakmann Date: Sun, 22 Jun 2014 13:58:33 +0200 Subject: [PATCH 2/3] Remove workaround for #4482 from 'Intervention' mission --- mods/ra/maps/intervention/mission.lua | 17 ++--------------- 1 file changed, 2 insertions(+), 15 deletions(-) diff --git a/mods/ra/maps/intervention/mission.lua b/mods/ra/maps/intervention/mission.lua index d5700b24dc..4950c8d1cb 100644 --- a/mods/ra/maps/intervention/mission.lua +++ b/mods/ra/maps/intervention/mission.lua @@ -77,7 +77,6 @@ FollowWaypoints = function(team, waypoints) end PlaneExitMap = function(actor, exitPoint) - Actor.Stop(actor) Actor.Fly(actor, exitPoint.CenterPosition) Actor.FlyOffMap(actor) Actor.RemoveSelf(actor) @@ -94,15 +93,9 @@ BaseRaid = function() local flight = Team.New(Reinforcements.ReinforceAir(soviets, BaseRaidAircraft, BaseRaidEntrypoint, BaseRaidWpts[1], Utils.Seconds(1))) FollowWaypoints(flight, BaseRaidWpts) - -- this is a workaround for bug #4482 - Actor.OnDamaged(target, function() - Team.Do(flight, function(plane) - PlaneExitMap(plane, VillageRaidEntrypoint) - end) - end) - Team.Do(flight, function(plane) Actor.FlyAttackActor(plane, target) + PlaneExitMap(plane, VillageRaidEntrypoint) end) OpenRA.RunAfterDelay(BaseRaidInterval, BaseRaid) @@ -124,15 +117,9 @@ VillageRaid = function() local flight = Team.New(Reinforcements.ReinforceAir(soviets, VillageRaidAircraft, VillageRaidEntrypoint, VillageRaidWpts[1], Utils.Seconds(1))) FollowWaypoints(flight, VillageRaidWpts) - -- this is a workaround for bug #4482 - Actor.OnDamaged(target, function() - Team.Do(flight, function(actor) - PlaneExitMap(actor, BaseRaidEntrypoint) - end) - end) - Team.Do(flight, function(plane) Actor.FlyAttackActor(plane, target) + PlaneExitMap(plane, BaseRaidEntrypoint) end) OpenRA.RunAfterDelay(VillageRaidInterval, VillageRaid) From cf2fad673d6827b12f17b4e06337944ceb898415 Mon Sep 17 00:00:00 2001 From: Oliver Brakmann Date: Sun, 22 Jun 2014 13:59:16 +0200 Subject: [PATCH 3/3] Fix issue with capturing enemy buildings in 'Intervention' mission The onDamaged event handler would still fire after an enemy building had been captured. Fixed by checking the owner before starting repairs. Thanks to Microbit for showing me that people actually did that. --- mods/ra/maps/intervention/mission.lua | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/mods/ra/maps/intervention/mission.lua b/mods/ra/maps/intervention/mission.lua index 4950c8d1cb..45001e7564 100644 --- a/mods/ra/maps/intervention/mission.lua +++ b/mods/ra/maps/intervention/mission.lua @@ -188,7 +188,9 @@ SetupWorld = function() Utils.Do(Actor.ActorsWithTrait("RepairableBuilding"), function(building) if Actor.Owner(building) == soviets then Actor.OnDamaged(building, function(b) - Actor.RepairBuilding(b) + if Actor.Owner(b) == soviets then + Actor.RepairBuilding(b) + end end) end end)