public bool CanUseAbility(IAbility ability) { // Units that can't act can't use any abilities if (!CanAct()) { return(false); } // Make sure this unit owns this ability instance if (!Abilities.Contains(ability)) { return(false); } // Ask the ability itself if it can be used. It'll check HP/SP cost, cooldown/warmup state, etc. return(ability.CanUseAbility()); }