fix exploitable support powers
This commit is contained in:
@@ -50,7 +50,7 @@ namespace OpenRA.Traits
|
||||
public int TotalTime { get { return (int)(Info.ChargeTime * 60 * 25); } }
|
||||
public bool IsUsed;
|
||||
public bool IsAvailable;
|
||||
public bool IsReady { get { return RemainingTime == 0; } }
|
||||
public bool IsReady { get { return IsAvailable && RemainingTime == 0; } }
|
||||
public readonly Player Owner;
|
||||
|
||||
bool notifiedCharging;
|
||||
|
||||
@@ -42,6 +42,8 @@ namespace OpenRA.Mods.RA
|
||||
|
||||
public void ResolveOrder(Actor self, Order order)
|
||||
{
|
||||
if (!IsAvailable) return;
|
||||
|
||||
if (order.OrderString == "Airstrike")
|
||||
{
|
||||
var startPos = Owner.World.ChooseRandomEdgeCell();
|
||||
|
||||
@@ -44,6 +44,8 @@ namespace OpenRA.Mods.RA
|
||||
|
||||
public void ResolveOrder(Actor self, Order order)
|
||||
{
|
||||
if (!IsAvailable) return;
|
||||
|
||||
if (order.OrderString == "IronCurtain")
|
||||
{
|
||||
if (self.Owner == self.World.LocalPlayer)
|
||||
|
||||
@@ -45,6 +45,8 @@ namespace OpenRA.Mods.RA
|
||||
|
||||
public void ResolveOrder(Actor self, Order order)
|
||||
{
|
||||
if (!IsAvailable) return;
|
||||
|
||||
if (order.OrderString == "ParatroopersActivate")
|
||||
{
|
||||
if (self.Owner == self.World.LocalPlayer)
|
||||
|
||||
@@ -41,6 +41,8 @@ namespace OpenRA.Mods.RA
|
||||
|
||||
public void ResolveOrder(Actor self, Order order)
|
||||
{
|
||||
if (!IsAvailable) return;
|
||||
|
||||
if (order.OrderString == "SonarPulse")
|
||||
{
|
||||
// TODO: Reveal submarines
|
||||
|
||||
@@ -44,6 +44,8 @@ namespace OpenRA.Mods.RA
|
||||
|
||||
public void ResolveOrder(Actor self, Order order)
|
||||
{
|
||||
if (!IsAvailable) return;
|
||||
|
||||
if (order.OrderString == "SpyPlane")
|
||||
{
|
||||
FinishActivate();
|
||||
|
||||
@@ -35,16 +35,12 @@ namespace OpenRA.Mods.RA.SupportPowers
|
||||
class ChronoshiftPower : SupportPower, IResolveOrder
|
||||
{
|
||||
public ChronoshiftPower(Actor self, ChronoshiftPowerInfo info) : base(self, info) { }
|
||||
protected override void OnBeginCharging() { Sound.PlayToPlayer(Owner, "chrochr1.aud"); }
|
||||
protected override void OnFinishCharging() { Sound.PlayToPlayer(Owner, "chrordy1.aud"); }
|
||||
protected override void OnActivate()
|
||||
{
|
||||
Game.controller.orderGenerator = new SelectTarget();
|
||||
Sound.Play("slcttgt1.aud");
|
||||
}
|
||||
protected override void OnActivate() { Game.controller.orderGenerator = new SelectTarget(); }
|
||||
|
||||
public void ResolveOrder(Actor self, Order order)
|
||||
{
|
||||
if (!IsAvailable) return;
|
||||
|
||||
if (order.OrderString == "ChronosphereSelect" && self.Owner == self.World.LocalPlayer)
|
||||
{
|
||||
Game.controller.orderGenerator = new SelectDestination(order.TargetActor);
|
||||
@@ -67,7 +63,7 @@ namespace OpenRA.Mods.RA.SupportPowers
|
||||
var chronosphere = self.World.Queries
|
||||
.OwnedBy[self.Owner]
|
||||
.WithTrait<Chronosphere>()
|
||||
.Select(x=>x.Actor).FirstOrDefault();
|
||||
.Select(x => x.Actor).FirstOrDefault();
|
||||
|
||||
bool success = order.TargetActor.traits.Get<Chronoshiftable>().Activate(order.TargetActor,
|
||||
order.TargetLocation,
|
||||
|
||||
@@ -43,6 +43,8 @@ namespace OpenRA.Mods.RA.SupportPowers
|
||||
|
||||
public void ResolveOrder(Actor self, Order order)
|
||||
{
|
||||
if (!IsAvailable) return;
|
||||
|
||||
if (order.OrderString == "NuclearMissile")
|
||||
{
|
||||
var silo = self.World.Queries.OwnedBy[self.Owner]
|
||||
|
||||
@@ -22,6 +22,9 @@ Player:
|
||||
TechLevel: 12
|
||||
Duration: 3
|
||||
KillCargo: yes
|
||||
SelectTargetSound: slcttgt1.aud
|
||||
BeginChargeSound: chrochr1.aud
|
||||
EndChargeSound: chrordy1.aud
|
||||
IronCurtainPower:
|
||||
Image: infxicon
|
||||
ChargeTime: 11
|
||||
|
||||
Reference in New Issue
Block a user