public virtual void FireSkill(ActiveSkill skill) { if (Energy < skill.EnergyCost) { return; } if (skill.Owner.IsSkillReleased) { return; } BeforeFireSkill?.Invoke(skill); AddEN(-skill.EnergyCost); skill.Owner.IsSkillReleased = true; skill.Fire(); OnFireSkill?.Invoke(skill); AfterFireSkill?.Invoke(skill); }