From 6527d7751b25884dad94f4640c0dd8e86abf60ab Mon Sep 17 00:00:00 2001 From: abcdefg30 Date: Thu, 28 May 2015 23:56:44 +0200 Subject: [PATCH] Expose a Attack method to lua --- .../Scripting/Properties/CombatProperties.cs | 15 +++++++++++++++ .../Scripting/Properties/PlaneProperties.cs | 13 ------------- 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/OpenRA.Mods.Common/Scripting/Properties/CombatProperties.cs b/OpenRA.Mods.Common/Scripting/Properties/CombatProperties.cs index 6f843ed438..71b7c471c6 100644 --- a/OpenRA.Mods.Common/Scripting/Properties/CombatProperties.cs +++ b/OpenRA.Mods.Common/Scripting/Properties/CombatProperties.cs @@ -23,11 +23,13 @@ namespace OpenRA.Mods.Common.Scripting public class CombatProperties : ScriptActorProperties, Requires, Requires { readonly IMove move; + readonly AttackBase attackBase; public CombatProperties(ScriptContext context, Actor self) : base(context, self) { move = self.Trait(); + attackBase = self.Trait(); } [ScriptActorPropertyActivity] @@ -73,5 +75,18 @@ namespace OpenRA.Mods.Common.Scripting using (var f = func.CopyReference() as LuaFunction) Self.QueueActivity(new CallFunc(() => PatrolUntil(waypoints, f, wait))); } + + [Desc("Attack the target actor. The target actor needs to be visible.")] + public void Attack(Actor targetActor, bool allowMove = true) + { + var target = Target.FromActor(targetActor); + if (!target.IsValidFor(Self) || target.Type == TargetType.FrozenActor) + Log.Write("lua", "{1} is an invalid target for {0}!", Self, targetActor); + + if (!targetActor.HasTrait() && !Self.Owner.CanTargetActor(targetActor)) + Log.Write("lua", "{1} is not revealed for player {0}!", Self.Owner, targetActor); + + attackBase.AttackTarget(target, true, allowMove); + } } } diff --git a/OpenRA.Mods.Common/Scripting/Properties/PlaneProperties.cs b/OpenRA.Mods.Common/Scripting/Properties/PlaneProperties.cs index 919c5149f9..a49f21039f 100644 --- a/OpenRA.Mods.Common/Scripting/Properties/PlaneProperties.cs +++ b/OpenRA.Mods.Common/Scripting/Properties/PlaneProperties.cs @@ -35,17 +35,4 @@ namespace OpenRA.Mods.Common.Scripting Self.QueueActivity(new ReturnToBase(Self, airfield)); } } - - [ScriptPropertyGroup("Combat")] - public class PlaneCombatProperties : ScriptActorProperties, Requires - { - public PlaneCombatProperties(ScriptContext context, Actor self) - : base(context, self) { } - - [Desc("Fly an attack against the target actor.")] - public void Attack(Actor target) - { - Self.QueueActivity(new FlyAttack(Self, Target.FromActor(target))); - } - } } \ No newline at end of file