Convert damage modifiers to integer percentages.

This commit is contained in:
Paul Chote
2014-08-09 21:27:37 +12:00
parent c5519a7f3b
commit 0425416ce2
11 changed files with 59 additions and 27 deletions

View File

@@ -50,16 +50,17 @@ namespace OpenRA.Mods.RA.Activities
if (target.Type != TargetType.Actor)
return;
// Invulnerable actors can't be demolished
var modifier = (float)target.Actor.TraitsImplementing<IDamageModifier>()
.Concat(self.Owner.PlayerActor.TraitsImplementing<IDamageModifier>())
.Select(t => t.GetDamageModifier(self, null)).Product();
var demolishable = target.Actor.TraitOrDefault<IDemolishable>();
if (demolishable == null || !demolishable.IsValidTarget(target.Actor, self))
return;
if (modifier > 0)
var modifiers = target.Actor.TraitsImplementing<IDamageModifier>()
.Concat(self.Owner.PlayerActor.TraitsImplementing<IDamageModifier>())
.Select(t => t.GetDamageModifier(self, null));
if (Util.ApplyPercentageModifiers(100, modifiers) > 0)
demolishable.Demolish(target.Actor, self);
}));
});