public bool CanChooseMagicalAbility(MagicalAbility ability) { if (!Creature.Controlled) { return(true); } bool any = false; if (SpecialAbilities != null) { for (var index = 0; index < SpecialAbilities.Length; index++) { if (SpecialAbilities != null) { var a = SpecialAbilities[index]; if (!a.NaturalAbility) { any = true; break; } } } } if (HasSpecialMagicalAbility() && IsSpecialMagicalAbility(ability) && SpecialAbilities != null && SpecialAbilities.Length > 0 && any) { return(false); } return(true); }
public void RemoveSpecialMagicalAbility(MagicalAbility ability) { //SpecialAbilities = null; WeaponAbilities = null; Creature.Mastery = SkillName.Alchemy; // default }
public void RemoveAbility(MagicalAbility ability) { if ((MagicalAbility & ability) != 0) { MagicalAbility ^= ability; RemovePetAdvancement(ability); } }
public IEnumerable <object> EnumerateAllAbilities() { if (MagicalAbility != MagicalAbility.None) { for (var index = 0; index < PetTrainingHelper.MagicalAbilities.Length; index++) { MagicalAbility abil = PetTrainingHelper.MagicalAbilities[index]; if ((MagicalAbility & abil) != 0) { yield return(abil); } } } if (SpecialAbilities != null) { for (var index = 0; index < SpecialAbilities.Length; index++) { SpecialAbility abil = SpecialAbilities[index]; yield return(abil); } } if (AreaEffects != null) { for (var index = 0; index < AreaEffects.Length; index++) { AreaEffect effect = AreaEffects[index]; yield return(effect); } } if (WeaponAbilities != null) { for (var index = 0; index < WeaponAbilities.Length; index++) { WeaponAbility abil = WeaponAbilities[index]; yield return(abil); } } }
public void OnRemoveMagicalAbility(MagicalAbility oldAbility, MagicalAbility newAbility) { if ((oldAbility & MagicalAbility.Bushido) != 0) { if (HasAbility(WeaponAbility.WhirlwindAttack)) { RemoveAbility(WeaponAbility.WhirlwindAttack); } } if ((oldAbility & MagicalAbility.Ninjitsu) != 0) { if (HasAbility(WeaponAbility.FrenziedWhirlwind)) { RemoveAbility(WeaponAbility.FrenziedWhirlwind); } } }
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); }
public TrainingDefinition( Type type, Class classificaion, MagicalAbility magicalAbility, SpecialAbility[] specialAbility, WeaponAbility[] weaponAbility, AreaEffect[] areaEffect, int controlmin, int controlmax) { CreatureType = type; Class = Class; MagicalAbilities = magicalAbility; SpecialAbilities = specialAbility; WeaponAbilities = weaponAbility; AreaEffects = areaEffect; ControlSlotsMin = controlmin; ControlSlotsMax = controlmax; }
public bool AddAbility(MagicalAbility ability, bool advancement = true) { if (Creature.Controlled) { var oldAbility = MagicalAbility; if (IsSpecialMagicalAbility(oldAbility)) { RemoveSpecialMagicalAbility(oldAbility); } MagicalAbility = ability; } else { MagicalAbility |= ability; } OnAddAbility(ability, advancement); return(true); }
public void AddMagicalAbility(MagicalAbility ability) { if (IsSpecialMagicalAbility(ability)) { //SpecialAbilities = null; WeaponAbilities = null; Creature.AI = AIType.AI_Melee; } switch (ability) { case MagicalAbility.Piercing: Creature.Mastery = SkillName.Fencing; break; case MagicalAbility.Bashing: Creature.Mastery = SkillName.Macing; break; case MagicalAbility.Slashing: Creature.Mastery = SkillName.Swords; break; case MagicalAbility.BattleDefense: Creature.Mastery = SkillName.Parry; break; case MagicalAbility.WrestlingMastery: Creature.Mastery = SkillName.Wrestling; break; case MagicalAbility.Poisoning: if (Creature.Controlled && Creature.AI != AIType.AI_Melee) { Creature.AI = AIType.AI_Melee; } break; case MagicalAbility.Bushido: if (Creature.Controlled && Creature.AI != AIType.AI_Samurai) { Creature.AI = AIType.AI_Samurai; } if (!HasAbility(WeaponAbility.WhirlwindAttack)) { AddAbility(WeaponAbility.WhirlwindAttack, false); } break; case MagicalAbility.Ninjitsu: if (Creature.Controlled && Creature.AI != AIType.AI_Ninja) { Creature.AI = AIType.AI_Ninja; } if (!HasAbility(WeaponAbility.FrenziedWhirlwind)) { AddAbility(WeaponAbility.FrenziedWhirlwind, false); } break; case MagicalAbility.Discordance: if (Creature.Controlled && Creature.AI != AIType.AI_Melee) { Creature.AI = AIType.AI_Melee; } break; case MagicalAbility.Magery: case MagicalAbility.MageryMastery: if (Creature.Controlled && Creature.AI != AIType.AI_Mage) { Creature.AI = AIType.AI_Mage; } break; case MagicalAbility.Mysticism: if (Creature.Controlled && Creature.AI != AIType.AI_Mystic) { Creature.AI = AIType.AI_Mystic; } break; case MagicalAbility.Spellweaving: if (Creature.Controlled && Creature.AI != AIType.AI_Spellweaving) { Creature.AI = AIType.AI_Spellweaving; } break; case MagicalAbility.Chivalry: if (Creature.Controlled && Creature.AI != AIType.AI_Paladin) { Creature.AI = AIType.AI_Paladin; } break; case MagicalAbility.Necromage: if (Creature.Controlled && Creature.AI != AIType.AI_NecroMage) { Creature.AI = AIType.AI_NecroMage; } break; case MagicalAbility.Necromancy: if (Creature.Controlled && Creature.AI != AIType.AI_Necro) { Creature.AI = AIType.AI_Necro; } break; } }
public bool IsSpecialMagicalAbility(MagicalAbility ability) { return(ability != MagicalAbility.None && ability <= MagicalAbility.WrestlingMastery); }