Example #1
0
    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();
    }