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)); }
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); }
public UnitAttackedEvent(Unit attacker, Unit target, ProcessedAttack processedAttack) { Attacker = attacker; Target = target; ProcessedAttack = processedAttack; }
public UnitHealedEvent(Unit healer, Unit target, ProcessedAttack processedAttack) { Healer = healer; Target = target; ProcessedAttack = processedAttack; }