public void ExecuteAttack(CharacterManager attacker, CharacterManager defender) { if (!defender.isDead()) { double damage = GameLogicManager.CalculateDamage(attacker, defender); defender.ApplyDamage(damage); // check abilities that trigger on attack AbilityManager.CheckTriggeredAbilitiesActivation(TriggeredTriggerType.OnInflictedAttack, attacker, defender); AbilityManager.CheckTriggeredAbilitiesActivation(TriggeredTriggerType.OnReceivedAttack, defender, attacker); if (defender.isDead()) { // check abilities that trigger on death AbilityManager.CheckTriggeredAbilitiesActivation(TriggeredTriggerType.OnKill, attacker, defender); AbilityManager.CheckTriggeredAbilitiesActivation(TriggeredTriggerType.OnDeath, defender, attacker); // check again in case of resurrection if (defender.isDead()) { Kill(defender); } } if (defender.gameObject.CompareTag("Player")) { UpdateHealthBar(); } } }