public ProcessedAttack RunAttack(Unit attacker, Unit defender) { var attack = CalculateAttack(attacker); var processedAttack = AttackProcessor.ProcessAttack(attack, defender.Stats); defender.ApplyDamageToTarget(processedAttack); return(processedAttack); }
public async Task <bool> ExecuteSpell(Spell spell, Vector2 target) { var unit = Level.GetUnitAt(target); if (unit == null) { return(false); } var stats = StatsComputer.ComputeStats(spell.Effects.ToArray()); var attack = AttackGenerator.GenerateAttack(stats); var processedAttack = AttackProcessor.ProcessAttack(attack, unit.Unit.Stats); unit.Unit.ApplyDamageToTarget(processedAttack); return(true); }