예제 #1
0
        public void RemoveAbility(SpecialAbility ability)
        {
            if (SpecialAbilities == null || !SpecialAbilities.Any(a => a == ability))
            {
                return;
            }

            var list = SpecialAbilities.ToList();

            list.Remove(ability);
            RemovePetAdvancement(ability);

            SpecialAbilities = list.ToArray();

            ColUtility.Free(list);
        }
예제 #2
0
        public bool CanChooseMagicalAbility(MagicalAbility ability)
        {
            if (!Creature.Controlled)
            {
                return(true);
            }

            if (HasSpecialMagicalAbility() &&
                IsSpecialMagicalAbility(ability) &&
                SpecialAbilities != null &&
                SpecialAbilities.Length > 0 &&
                SpecialAbilities.Any(a => !a.NaturalAbility))
            {
                return(false);
            }

            return(true);
        }
예제 #3
0
        public bool HasAbility(object o)
        {
            if (o is MagicalAbility)
            {
                return((MagicalAbility & (MagicalAbility)o) != 0);
            }

            if (o is SpecialAbility && SpecialAbilities != null)
            {
                return(SpecialAbilities.Any(a => a == (SpecialAbility)o));
            }

            if (o is AreaEffect && AreaEffects != null)
            {
                return(AreaEffects.Any(a => a == (AreaEffect)o));
            }

            if (o is WeaponAbility && WeaponAbilities != null)
            {
                return(WeaponAbilities.Any(a => a == (WeaponAbility)o));
            }

            return(false);
        }
예제 #4
0
        public bool AddAbility(SpecialAbility ability, bool advancement = true)
        {
            if (SpecialAbilities == null)
            {
                SpecialAbilities = new SpecialAbility[] { ability };
            }
            else if (!SpecialAbilities.Any(a => a == ability))
            {
                var temp = SpecialAbilities;

                SpecialAbilities = new SpecialAbility[temp.Length + 1];

                for (int i = 0; i < temp.Length; i++)
                {
                    SpecialAbilities[i] = temp[i];
                }

                SpecialAbilities[temp.Length] = ability;
            }

            OnAddAbility(ability, advancement);

            return(true);
        }
예제 #5
0
 public bool HasSpecialAbility(SpecialAbility ability)
 {
     return(SpecialAbilities != null && SpecialAbilities.Any(a => a == ability));
 }