Add an `Undamaged' damagestate to simplify things related to healing.

This commit is contained in:
Paul Chote
2010-07-30 01:22:41 +12:00
parent 87d2071007
commit 98ac5a036f
10 changed files with 27 additions and 29 deletions

View File

@@ -39,25 +39,19 @@ namespace OpenRA.Mods.RA
{
if (order.OrderString != "EngineerRepair") return null;
if (order.TargetActor == null) return null;
var health = order.TargetActor.traits.GetOrDefault<Health>();
if (health == null) return null;
return (health.HP == health.MaxHP) ? "goldwrench-blocked" : "goldwrench";
return (order.TargetActor.GetExtendedDamageState() == ExtendedDamageState.Undamaged) ? "goldwrench-blocked" : "goldwrench";
}
public string VoicePhraseForOrder(Actor self, Order order)
{
var health = order.TargetActor.traits.GetOrDefault<Health>();
if (health == null) return null;
return (order.OrderString == "EngineerRepair"
&& health.HP < health.MaxHP) ? "Attack" : null;
return (order.OrderString == "EngineerRepair"
&& order.TargetActor.GetExtendedDamageState() != ExtendedDamageState.Undamaged) ? "Attack" : null;
}
public void ResolveOrder(Actor self, Order order)
{
var health = order.TargetActor.traits.GetOrDefault<Health>();
if (health == null) return;
if (order.OrderString == "EngineerRepair" && health.HP < health.MaxHP)
if (order.OrderString == "EngineerRepair"
&& order.TargetActor.GetExtendedDamageState() != ExtendedDamageState.Undamaged)
{
if (self.Owner == self.World.LocalPlayer)
self.World.AddFrameEndTask(w =>