public void RemoveAbility(WeaponAbility ability) { if (WeaponAbilities == null || !WeaponAbilities.Any(a => a == ability)) { return; } var list = WeaponAbilities.ToList(); list.Remove(ability); RemovePetAdvancement(ability); WeaponAbilities = list.ToArray(); ColUtility.Free(list); }
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); }
public bool AddAbility(WeaponAbility ability, bool advancement = true) { if (WeaponAbilities == null) { WeaponAbilities = new WeaponAbility[] { ability }; } else if (!WeaponAbilities.Any(a => a == ability)) { var temp = WeaponAbilities; WeaponAbilities = new WeaponAbility[temp.Length + 1]; for (int i = 0; i < temp.Length; i++) { WeaponAbilities[i] = temp[i]; } WeaponAbilities[temp.Length] = ability; } OnAddAbility(ability, advancement); return(true); }