Beispiel #1
0
        protected override void InflictDamage(Actor victim, Actor firedBy, HitShapeInfo hitshapeInfo, IEnumerable <int> damageModifiers)
        {
            var healthInfo = victim.Info.TraitInfo <HealthInfo>();
            var damage     = Util.ApplyPercentageModifiers(healthInfo.HP, damageModifiers.Append(Damage, DamageVersus(victim, hitshapeInfo)));

            victim.InflictDamage(firedBy, new Damage(damage, DamageTypes));
        }
Beispiel #2
0
        protected override void InflictDamage(Actor victim, Actor firedBy, HitShapeInfo hitshapeInfo, IEnumerable <int> damageModifiers)
        {
            var warpable = victim.TraitOrDefault <Warpable>();

            if (warpable == null)
            {
                return;
            }

            var damage = Util.ApplyPercentageModifiers(Damage, damageModifiers.Append(DamageVersus(victim, hitshapeInfo)));

            warpable.AddDamage(damage, firedBy);
        }
Beispiel #3
0
        public int DamageVersus(Actor victim, HitShapeInfo shapeInfo)
        {
            // If no Versus values are defined, DamageVersus would return 100 anyway, so we might as well do that early.
            if (Versus.Count == 0)
            {
                return(100);
            }

            var armor = victim.TraitsImplementing <Armor>()
                        .Where(a => !a.IsTraitDisabled && a.Info.Type != null && Versus.ContainsKey(a.Info.Type) &&
                               (shapeInfo.ArmorTypes == default(BitSet <ArmorType>) || shapeInfo.ArmorTypes.Contains(a.Info.Type)))
                        .Select(a => Versus[a.Info.Type]);

            return(Util.ApplyPercentageModifiers(100, armor));
        }
        protected virtual void InflictDamage(Actor victim, Actor firedBy, HitShapeInfo hitshapeInfo, IEnumerable <int> damageModifiers)
        {
            var damage = Util.ApplyPercentageModifiers(Damage, damageModifiers.Append(DamageVersus(victim, hitshapeInfo)));

            victim.InflictDamage(firedBy, new Damage(damage, DamageTypes));
        }