new AttackLoyalty, range and stay alive option for Capture
AttackLoyalty for d2k Deviator which captures units also shooting a fake missile (see issue #2251) CaptureActor now supports Generals styles gameplay but is disabled by default (see issue #2274) fixes the annoyance that engineers will not take the shortest root to the building by the way removing ProvidesCustomPrerequisite because it's tooltip messages relies on hardcoded hacks
This commit is contained in:
committed by
Chris Forbes
parent
c2321e3eea
commit
e89ee2c131
@@ -1,6 +1,6 @@
|
||||
#region Copyright & License Information
|
||||
/*
|
||||
* Copyright 2007-2011 The OpenRA Developers (see AUTHORS)
|
||||
* Copyright 2007-2012 The OpenRA Developers (see AUTHORS)
|
||||
* This file is part of OpenRA, which is free software. It is made
|
||||
* available to you under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation. For more information,
|
||||
@@ -10,6 +10,7 @@
|
||||
|
||||
using System.Linq;
|
||||
using OpenRA.Traits;
|
||||
using OpenRA.Mods.RA.Move;
|
||||
|
||||
namespace OpenRA.Mods.RA.Activities
|
||||
{
|
||||
@@ -25,9 +26,6 @@ namespace OpenRA.Mods.RA.Activities
|
||||
if (target == null || !target.IsInWorld || target.IsDead()) return NextActivity;
|
||||
if (target.Owner == self.Owner) return NextActivity;
|
||||
|
||||
if( !target.OccupiesSpace.OccupiedCells().Any( x => x.First == self.Location ) )
|
||||
return NextActivity;
|
||||
|
||||
var capturable = target.TraitOrDefault<Capturable>();
|
||||
if (capturable != null && capturable.CaptureInProgress && capturable.Captor.Owner.Stances[self.Owner] == Stance.Ally)
|
||||
return NextActivity;
|
||||
@@ -36,8 +34,14 @@ namespace OpenRA.Mods.RA.Activities
|
||||
if (sellable != null && sellable.Selling)
|
||||
return NextActivity;
|
||||
|
||||
target.Trait<Capturable>().BeginCapture(target, self);
|
||||
self.World.AddFrameEndTask(w => self.Destroy());
|
||||
var captures = self.TraitOrDefault<Captures>();
|
||||
var capturesInfo = self.Info.Traits.Get<CapturesInfo>();
|
||||
if (captures != null && Combat.IsInRange(self.CenterLocation, capturesInfo.Range, target))
|
||||
target.Trait<Capturable>().BeginCapture(target, self);
|
||||
else
|
||||
return Util.SequenceActivities(self.Trait<Mobile>().MoveWithinRange(Target.FromActor(target), capturesInfo.Range), this);
|
||||
if (capturesInfo != null && capturesInfo.wastedAfterwards)
|
||||
self.World.AddFrameEndTask(w => self.Destroy());
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user