fBaseXtensions.Game.Hero.Class.PlayerClass.ReturnAllUsableAbilities C# (CSharp) Method

ReturnAllUsableAbilities() private method

private ReturnAllUsableAbilities ( CacheUnit obj, bool IgnoreOutOfRange = false ) : List
obj fBaseXtensions.Cache.Internal.Objects.CacheUnit
IgnoreOutOfRange bool
return List
        internal List<Skill> ReturnAllUsableAbilities(CacheUnit obj, bool IgnoreOutOfRange = false)
        {
            //Reset default attack can use
            CanUseDefaultAttack = !Abilities.ContainsKey(DefaultAttack.Power) ? false : true;

            ConditionCriteraTypes criterias = ConditionCriteraTypes.All;

            //Although the unit is a cluster exception.. we should verify it is not a clustered object.
            if (obj.IsClusterException && obj.BeingIgnoredDueToClusterLogic)
            {
                criterias = ConditionCriteraTypes.SingleTarget;
            }

            List<Skill> UsableAbilities = new List<Skill>();
            foreach (var item in SortedAbilities)
            {
                //Check precast conditions
                if (!item.CheckPreCastConditionMethod()) continue;

                //Check Combat Conditions!
                if (!item.CheckCombatConditionMethod(conditions: criterias))
                {
                    continue;
                }

                //Check if we can execute or if it requires movement
                if (IgnoreOutOfRange)
                {
                    if (item.DestinationVector != FunkyGame.Hero.Position)
                        continue;
                }

                Skill ability = item;
                Skill.SetupAbilityForUse(ref ability, obj);
                UsableAbilities.Add(ability);
            }

            return UsableAbilities;
        }