diff --git a/OpenRa.Game/OpenRa.Game.csproj b/OpenRa.Game/OpenRa.Game.csproj index d90d1bacc1..b2a8e53483 100644 --- a/OpenRa.Game/OpenRa.Game.csproj +++ b/OpenRa.Game/OpenRa.Game.csproj @@ -118,6 +118,7 @@ + diff --git a/OpenRa.Game/Traits/AttackOmni.cs b/OpenRa.Game/Traits/AttackOmni.cs new file mode 100644 index 0000000000..526cc1bc2b --- /dev/null +++ b/OpenRa.Game/Traits/AttackOmni.cs @@ -0,0 +1,35 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace OpenRa.Traits +{ + class AttackOmniInfo : AttackBaseInfo + { + public override object Create(Actor self) { return new AttackOmni(self); } + } + + class AttackOmni : AttackBase, INotifyBuildComplete + { + bool buildComplete = false; + public void BuildingComplete(Actor self) { buildComplete = true; } + + public AttackOmni(Actor self) : base(self) { } + + public override void Tick(Actor self) + { + base.Tick(self); + + if (!CanAttack(self)) return; + if (self.traits.Contains() && !buildComplete) return; + + DoAttack(self); + } + + protected override void QueueAttack(Actor self, Order order) + { + target = order.TargetActor; + } + } +}