This commit is contained in:
Paul Chote
2010-06-16 21:06:09 +12:00
parent 1088e30158
commit a0e4e40eaf
3 changed files with 12 additions and 13 deletions

View File

@@ -33,16 +33,16 @@ namespace OpenRA.Mods.RA.Activities
public IActivity Tick(Actor self) public IActivity Tick(Actor self)
{ {
if (target == null || target.IsDead) return NextActivity; if (target == null || target.IsDead) return NextActivity;
var damage = -self.Info.Traits.Get<EngineerCaptureInfo>().EngineerDamage;
if (self.Owner.Stances[ target.Owner ] == Stance.Ally) if (self.Owner.Stances[ target.Owner ] == Stance.Ally)
{ {
if (target.Health == target.Info.Traits.Get<OwnedActorInfo>().HP) if (target.Health == target.Info.Traits.Get<OwnedActorInfo>().HP)
return NextActivity; return NextActivity;
target.InflictDamage(self, -EngineerCapture.EngineerDamage, null); target.InflictDamage(self, damage, null);
} }
else else
{ {
if (target.Health - EngineerCapture.EngineerDamage <= 0) if (target.Health - damage <= 0)
{ {
target.World.AddFrameEndTask(w => target.World.AddFrameEndTask(w =>
{ // momentarily remove from world so the ownership queries don't get confused { // momentarily remove from world so the ownership queries don't get confused
@@ -54,10 +54,10 @@ namespace OpenRA.Mods.RA.Activities
t.OnCapture(target, self); t.OnCapture(target, self);
}); });
target.InflictDamage(self, target.Health - EngineerCapture.EngineerDamage, null); target.InflictDamage(self, target.Health - damage, null);
} }
else else
target.InflictDamage(self, EngineerCapture.EngineerDamage, null); target.InflictDamage(self, damage, null);
} }
// the engineer is sacrificed. // the engineer is sacrificed.

View File

@@ -1,4 +1,4 @@
#region Copyright & License Information #region Copyright & License Information
/* /*
* Copyright 2007,2009,2010 Chris Forbes, Robert Pepperell, Matthew Bowra-Dean, Paul Chote, Alli Witheford. * Copyright 2007,2009,2010 Chris Forbes, Robert Pepperell, Matthew Bowra-Dean, Paul Chote, Alli Witheford.
* This file is part of OpenRA. * This file is part of OpenRA.
@@ -24,11 +24,13 @@ using OpenRA.Traits.Activities;
namespace OpenRA.Mods.RA namespace OpenRA.Mods.RA
{ {
class EngineerCaptureInfo : TraitInfo<EngineerCapture> { } class EngineerCaptureInfo : TraitInfo<EngineerCapture>
{
public readonly int EngineerDamage = 300;
}
class EngineerCapture : IIssueOrder, IResolveOrder class EngineerCapture : IIssueOrder, IResolveOrder
{ {
public const int EngineerDamage = 300; // todo: push into rules, as a weapon
public Order IssueOrder(Actor self, int2 xy, MouseInput mi, Actor underCursor) public Order IssueOrder(Actor self, int2 xy, MouseInput mi, Actor underCursor)
{ {
@@ -39,7 +41,7 @@ namespace OpenRA.Mods.RA
// todo: other bits // todo: other bits
if (underCursor.Owner == null) return null; // don't allow capturing of bridges, etc. if (underCursor.Owner == null) return null; // don't allow capturing of bridges, etc.
var isCapture = underCursor.Health <= EngineerDamage && var isCapture = underCursor.Health <= self.Info.Traits.Get<EngineerCaptureInfo>().EngineerDamage &&
self.Owner.Stances[underCursor.Owner] != Stance.Ally; self.Owner.Stances[underCursor.Owner] != Stance.Ally;
return new Order(isCapture ? "Capture" : "Infiltrate", return new Order(isCapture ? "Capture" : "Infiltrate",

View File

@@ -120,14 +120,11 @@ E6:
Unit: Unit:
HP: 25 HP: 25
Speed: 4 Speed: 4
AttackBase:
PrimaryWeapon: Chemspray
PrimaryOffset: 0,0,0,-5
FireDelay: 3
TakeCover: TakeCover:
Passenger: Passenger:
ColorOfCargoPip: Yellow ColorOfCargoPip: Yellow
EngineerCapture: EngineerCapture:
EngineerDamage: 9999999
-AutoTarget: -AutoTarget:
RMBO: RMBO: