diff --git a/OpenRA.Mods.RA/AutoTarget.cs b/OpenRA.Mods.RA/AutoTarget.cs index 5b0a380807..552473e420 100644 --- a/OpenRA.Mods.RA/AutoTarget.cs +++ b/OpenRA.Mods.RA/AutoTarget.cs @@ -37,6 +37,7 @@ namespace OpenRA.Mods.RA public UnitStance stance; [Sync] public int stanceNumber { get { return (int)stance; } } public UnitStance predictedStance; /* NOT SYNCED: do not refer to this anywhere other than UI code */ + [Sync] public int AggressorID; public AutoTarget(Actor self, AutoTargetInfo info) { @@ -68,6 +69,8 @@ namespace OpenRA.Mods.RA if (e.Damage < 0) return; // don't retaliate against healers + AggressorID = (int)e.Attacker.ActorID; + attack.AttackTarget(Target.FromActor(e.Attacker), false, Info.AllowMovement && stance != UnitStance.Defend); } @@ -134,4 +137,16 @@ namespace OpenRA.Mods.RA [Desc("Will not get automatically targeted by enemy (like walls)")] class AutoTargetIgnoreInfo : TraitInfo { } class AutoTargetIgnore { } + + public class DebugRetiliateAgainstAggressorInfo : ITraitInfo, Requires + { + public object Create(ActorInitializer init) { return new DebugRetiliateAgainstAggressor(init.self); } + } + + public class DebugRetiliateAgainstAggressor : ISync + { + readonly AutoTarget a; + public DebugRetiliateAgainstAggressor(Actor self){ a = self.Trait(); } + [Sync] public int Aggressor { get { return a.AggressorID; } } + } }