public void Attack(ICombatant attacker, ICombatant defender) { if (CanAttack(attacker, defender)) { attack_happening = true; attacker.NoteAttack(); int dealt = attacker.DealDamage(defender, attacker.attack); if (defender.retaliate) { defender.DealDamage(attacker, defender.attack); } attack_happening = false; AfterAttackTriggerInfo info = new AfterAttackTriggerInfo(attacker, defender, dealt); Creature creature = attacker as Creature; if (creature != null) { AddTriggersToStack(creature.abilities.GetLocalTriggers(info)); } AddTriggersToStack(trigger_manager.GetTriggers(info)); } ResolveStack(); }