public bool CheckSpellTargetMultiple(Mobile from, Object target) { if (this is SpellTemplate || this is AuraEffect) { #region multiple auras if (this is AuraEffect && target is Mobile) { AuraEffect ae = (AuraEffect)this; byte purebin = ae.GetPureBin(); Console.WriteLine(purebin); //if(ae.Unpure == true) return true; ArrayList al1 = new ArrayList(); foreach (Mobile.AuraReleaseTimer art1 in (target as Mobile).Auras) { AuraEffect af = art1.ae; if (af.Aura == ae.Aura) { if (af.Id > ae.Id) { return(false); } else { al1.Add(art1); } } } foreach (Mobile.AuraReleaseTimer art2 in al1) { (target as Mobile).ReleaseAura(art2); } } #endregion #region target is dead if (target is Mobile) { if ((target as Mobile).Dead == true) { return(false); } } #endregion } else { Console.WriteLine("Ability/Teach spell casted - Id: " + this.Id); } return(true); }
public bool CheckSpell(Mobile from, Object target) { if (this is SpellTemplate || this is AuraEffect) { #region multiple auras if (this is AuraEffect && target is Mobile) { AuraEffect ae = (AuraEffect)this; byte purebin = ae.GetPureBin(); Console.WriteLine(purebin); //if(ae.Unpure == true) return true; ArrayList al1 = new ArrayList(); foreach (Mobile.AuraReleaseTimer art1 in (target as Mobile).Auras) { AuraEffect af = art1.ae; if (af.Aura == ae.Aura) { if (af.Id > ae.Id) { (from as Character).SpellFaillure(SpellFailedReason.AMorePowerfulSpellAlreadyActive); return(false); } else { al1.Add(art1); } } } foreach (Mobile.AuraReleaseTimer art2 in al1) { (target as Mobile).ReleaseAura(art2); } } #endregion #region silence test if (from.ForceSilence) { from.SpellFaillure(SpellFailedReason.CanDoWhileSilenced); return(false); } #endregion #region avoid cast foreach (Mobile.AuraReleaseTimer art in from.Auras) { if (art.aura.AvoidCastMagicClass != 0) { if (AbilityClasses.abilityClasses[(int)Id] == art.aura.AvoidCastMagicClass) { from.SpellFaillure(SpellFailedReason.YouCantDoThatYet); return(false); } } } #endregion #region Mana test if (!(from is Character) || (from as Character).Player.AccessLevel == AccessLevels.PlayerLevel) { if ((this as SpellTemplate).GetManaCost(from) > from.Mana) { from.SpellFaillure(SpellFailedReason.NotEnoughMana); return(false); } } #endregion #region invalid target if ((SpellTemplate.SpellEffects[this.Id] is SingleTargetSpellEffect) && !(target is Mobile || target is Character)) { from.SpellFaillure(SpellFailedReason.InvalidTarget); return(false); } if ((SpellTemplate.SpellEffects[this.Id] is OnSingleTargetItemSpellEffect) && !(target is Items.Item)) { from.SpellFaillure(SpellFailedReason.InvalidTarget); return(false); } if ((SpellTemplate.SpellEffects[this.Id] is TargetXYZSpellEffect) && !(target == null)) { from.SpellFaillure(SpellFailedReason.InvalidTarget); return(false); } if ((SpellTemplate.SpellEffects[this.Id] is OnSelfSpellEffect) && target != from) { from.SpellFaillure(SpellFailedReason.InvalidTarget); return(false); } if ((SpellTemplate.SpellEffects[this.Id] is GameObjectTargetSpellEffect) && target is GameObject) { from.SpellFaillure(SpellFailedReason.InvalidTarget); return(false); } #endregion #region Standing if (from is Character) { int st = (int)from.StandState; st = st & 0xffff; StandStates s = (StandStates)st; if (s != StandStates.Standing) { from.SpellFaillure(SpellFailedReason.YouHaveToStandingToDoThat); return(false); } } #endregion #region caster is dead if (from.Dead == true) { from.SpellFaillure(SpellFailedReason.YouAreDead); return(false); } #endregion #region have spell if (!from.HaveSpell(this.Id)) { from.SpellFaillure(SpellFailedReason.SpellNotLearned); return(false); } #endregion #region level test if (from is Character) { if (!((from as Character).AccountLevel == AccessLevels.Admin || (from as Character).AccountLevel == AccessLevels.GM)) { if (from.Level < (this as SpellTemplate).RequieredLevel) { from.SpellFaillure(SpellFailedReason.YouAreNotEnoughLevel); return(false); } } } else { if (this is SpellTemplate || this is AuraEffect) { if (from.Level < (this as SpellTemplate).RequieredLevel) { from.SpellFaillure(SpellFailedReason.YouAreNotEnoughLevel); return(false); } } } #endregion #region target type if (SpecificSpellTargets.specificSpellTargets[(int)this.Id] != 0 && target is Mobile) { int k = (int)SpecificSpellTargets.specificSpellTargets[(int)this.Id]; int j = k; Mobile mob = (Mobile)target; Console.WriteLine(" " + j + " "); j &= mob.NpcType; Console.WriteLine(" " + j + " " + mob.NpcType); if ((j == 0)) { from.SpellFaillure(SpellFailedReason.RequiredExoticAmno); Console.WriteLine("upppppps"); return(false); } } #endregion } else { Console.WriteLine("Ability/Teach spell casted - Id: " + this.Id); } return(true); }
public bool CheckSpellTarget(Mobile from, Object target) { if (this is SpellTemplate || this is AuraEffect) { #region multiple auras if (this is AuraEffect && target is Mobile) { AuraEffect ae = (AuraEffect)this; byte purebin = ae.GetPureBin(); Console.WriteLine(purebin); //if(ae.Unpure == true) return true; ArrayList al1 = new ArrayList(); foreach (Mobile.AuraReleaseTimer art1 in (target as Mobile).Auras) { AuraEffect af = art1.ae; if (af.Aura == ae.Aura) { if (af.Id > ae.Id) { (from as Character).SpellFaillure(SpellFailedReason.AMorePowerfulSpellAlreadyActive); return(false); } else { al1.Add(art1); } } } foreach (Mobile.AuraReleaseTimer art2 in al1) { (target as Mobile).ReleaseAura(art2); } } #endregion #region invalid target if ((SpellTemplate.SpellEffects[this.Id] is SingleTargetSpellEffect) && !(target is Mobile || target is Character)) { from.SpellFaillure(SpellFailedReason.InvalidTarget); return(false); } if ((SpellTemplate.SpellEffects[this.Id] is OnSingleTargetItemSpellEffect) && !(target is Items.Item)) { from.SpellFaillure(SpellFailedReason.InvalidTarget); return(false); } if ((SpellTemplate.SpellEffects[this.Id] is TargetXYZSpellEffect) && !(target == null)) { from.SpellFaillure(SpellFailedReason.InvalidTarget); return(false); } if ((SpellTemplate.SpellEffects[this.Id] is OnSelfSpellEffect) && target != from) { from.SpellFaillure(SpellFailedReason.InvalidTarget); return(false); } if ((SpellTemplate.SpellEffects[this.Id] is GameObjectTargetSpellEffect) && target is GameObject) { from.SpellFaillure(SpellFailedReason.InvalidTarget); return(false); } #endregion #region target is dead if (target is Mobile) { if ((target as Mobile).Dead == true) { from.SpellFaillure(SpellFailedReason.YouAreDead); return(false); } } #endregion } else { Console.WriteLine("Ability/Teach spell casted - Id: " + this.Id); } return(true); }