Add Actor.Guard
This commit is contained in:
@@ -27,12 +27,18 @@ namespace OpenRA.Mods.RA
|
||||
if (order.OrderString == "Guard")
|
||||
{
|
||||
var target = Target.FromActor(order.TargetActor);
|
||||
|
||||
GuardTarget(self, target);
|
||||
}
|
||||
}
|
||||
|
||||
public void GuardTarget(Actor self, Target target)
|
||||
{
|
||||
self.SetTargetLine(target, Color.Yellow);
|
||||
|
||||
var range = WRange.FromCells(target.Actor.Info.Traits.Get<GuardableInfo>().Range);
|
||||
self.QueueActivity(false, new AttackMove.AttackMoveActivity(self, self.Trait<IMove>().MoveFollow(self, target, range)));
|
||||
}
|
||||
}
|
||||
|
||||
public string VoicePhraseForOrder(Actor self, Order order)
|
||||
{
|
||||
|
||||
@@ -372,5 +372,17 @@ namespace OpenRA.Mods.RA.Scripting
|
||||
|
||||
factory.Trait<ProductionQueue>().ResolveOrder(factory, Order.StartProduction(factory, unit, (int)amount));
|
||||
}
|
||||
|
||||
[LuaGlobal]
|
||||
public void Guard(Actor guard, Actor target)
|
||||
{
|
||||
if (target.HasTrait<Guardable>())
|
||||
{
|
||||
var gt = guard.TraitOrDefault<Guard>();
|
||||
|
||||
if (gt != null)
|
||||
gt.GuardTarget(guard, Target.FromActor(target));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -187,6 +187,10 @@ Actor.ReturnToBase = function(actor, airfield)
|
||||
actor:QueueActivity(OpenRA.New("ReturnToBase", { actor, airfield }))
|
||||
end
|
||||
|
||||
Actor.Guard = function(actor, target)
|
||||
Internal.Guard(actor, target)
|
||||
end
|
||||
|
||||
Actor.Patrol = function(actor, waypoints, wait, loop)
|
||||
Utils.Do(waypoints, function(wpt)
|
||||
Actor.AttackMove(actor, wpt.Location, 3)
|
||||
|
||||
Reference in New Issue
Block a user