public void DoAttack() { Attack = ((IAbleToAttack)Attacker).RollAttack(); Defense = Defender.RollDefense(); if (!Attack.AttackMissed() && Attack.GetRange() >= Attacker.DistanceFrom(Defender)) { var dmg = Attack.GetDamage(); var def = Defense.GetDefense(); int result = dmg - def; if (result < 0) { result = 0; } Defender.TakeDamage(result); } Attacker.ActualAction = new MoveAction(); }
public DefenseResult RollDefense() { var result = new DefenseResult(); foreach (var dice in defenseDices) { dice.RollDefense(); result.DefenseDices.Add(dice); } return result; }
public override void UseIt(DefenseResult defense, int diceIndex) { SetDefenseDice(diceIndex); UseAbility(defense); }
private void UseAbility(DefenseResult defense) { defense.RerollSpecificDice(DiceIndex); }
public virtual void UseIt(DefenseResult defense, int diceIndex) { }