public void DealDamage(IDamageType damage, GameObject causer = null) { damage.ChangeHealth(this, causer); var data = new DamageData(damage, causer); if (IsAlive()) { BroadcastMessage("OnReceiveDamage", data); } else { BroadcastMessage("OnDeath", data); } actual = Mathf.Clamp(actual, 0, max); }