public void ApplyHealingEffect(EffectTickedEvent eventData)
        {
            var healAmount = (int)Math.Round(eventData.ActiveEffect.GetStackedPotency());

            eventData.Unit.ApplyHealingToTarget(healAmount);

            var defense = new Damage
            {
                Type  = eventData.ActiveEffect.Effect.GetApplicableDamageType(),
                Value = eventData.Unit.Stats.GetDefenseFor(eventData.ActiveEffect.Effect.EffectType)
            };

            var damage = new Damage
            {
                Type  = defense.Type,
                Value = eventData.ActiveEffect.GetStackedPotency() + defense.Value
            };

            var processedAttack = new ProcessedAttack(new List <Damage> {
                damage
            }, new List <Damage>()
            {
                defense
            });

            EventSystem.Publish(new UnitHealedEvent(eventData.Unit, eventData.Unit, processedAttack));
        }
Пример #2
0
        public static void ApplyDamageToTarget(this ICharacter character, ProcessedAttack attack)
        {
            var summedAttack = attack.DamageDone.Sum(x => x.Value);
            var totalDamage  = (int)Math.Round(summedAttack);

            if (totalDamage < 0)
            {
                totalDamage = 0;
            }
            character.State.DeductHealth(totalDamage);
        }
Пример #3
0
 public UnitAttackedEvent(Unit attacker, Unit target, ProcessedAttack processedAttack)
 {
     Attacker        = attacker;
     Target          = target;
     ProcessedAttack = processedAttack;
 }
Пример #4
0
 public UnitHealedEvent(Unit healer, Unit target, ProcessedAttack processedAttack)
 {
     Healer          = healer;
     Target          = target;
     ProcessedAttack = processedAttack;
 }