protected Ability(AbilityType type, string name, int cooldown, int id) { ID = id; Type = type; Name = name; Cooldown = cooldown; CurrentCooldown = 0; OnAwake += () => { Validator = new AbilityUseValidator(this); Active.Phase.PhaseFinished += () => { if (CurrentCooldown > 0) { CurrentCooldown--; } }; Owner = ParentCharacter.Owner; AfterUseFinish += () => ParentCharacter.InvokeAfterAbilityUse(this); }; }