public static void RemoveEffect(Mobile m) { if (!WeakenSpell.IsUnderEffects(m)) { m.RemoveStatMod("[Magic] Str Curse"); } if (!ClumsySpell.IsUnderEffects(m)) { m.RemoveStatMod("[Magic] Dex Curse"); } if (!FeeblemindSpell.IsUnderEffects(m)) { m.RemoveStatMod("[Magic] Int Curse"); } BuffInfo.RemoveBuff(m, BuffIcon.Curse); if (m_UnderEffect.ContainsKey(m)) { Timer t = m_UnderEffect[m]; if (t != null) { t.Stop(); } m_UnderEffect.Remove(m); } m.UpdateResistances(); }
private void EndHeal() { if (Context.ContainsKey(Healer)) Context.Remove(Healer); if (Patient != Healer && Patient.InRange(Healer.Location, 2)) { Healer.PlaySound(0x57); if (EnchantedApple.GetTotalCurses(Patient) == 0) Healer.SendLocalizedMessage(500968); // You apply the bandages, but they barely help. else Healer.SendLocalizedMessage(500969); // You finish applying the bandages. EvilOmenSpell.TryEndEffect(Patient); StrangleSpell.RemoveCurse(Patient); CorpseSkinSpell.RemoveCurse(Patient); WeakenSpell.RemoveEffects(Patient); FeeblemindSpell.RemoveEffects(Patient); ClumsySpell.RemoveEffects(Patient); CurseSpell.RemoveEffect(Patient); MortalStrike.EndWound(Patient); BloodOathSpell.RemoveCurse(Patient); MindRotSpell.ClearMindRotScalar(Patient); SpellPlagueSpell.RemoveFromList(Patient); SleepSpell.EndSleep(Patient); BuffInfo.RemoveBuff(Patient, BuffIcon.MassCurse); } else { Healer.SendLocalizedMessage(500295); // You are too far away to do that. } }
public static void AddEffect(Mobile m, TimeSpan duration, int strOffset, int dexOffset, int intOffset) { if (m == null) { return; } if (m_UnderEffect.ContainsKey(m)) { m_UnderEffect[m].Stop(); m_UnderEffect[m] = null; } // my spell is stronger, so lets remove the lesser spell if (WeakenSpell.IsUnderEffects(m) && SpellHelper.GetCurseOffset(m, StatType.Str) <= strOffset) { WeakenSpell.RemoveEffects(m, false); } if (ClumsySpell.IsUnderEffects(m) && SpellHelper.GetCurseOffset(m, StatType.Dex) <= dexOffset) { ClumsySpell.RemoveEffects(m, false); } if (FeeblemindSpell.IsUnderEffects(m) && SpellHelper.GetCurseOffset(m, StatType.Int) <= intOffset) { FeeblemindSpell.RemoveEffects(m, false); } m_UnderEffect[m] = Timer.DelayCall <Mobile>(duration, RemoveEffect, m); //= new CurseTimer(m, duration, strOffset, dexOffset, intOffset); m.UpdateResistances(); }
}// A tasty bite of the enchanted apple lifts all curses from your soul. public override bool Eat(Mobile from) { if (!IsUnderInfluence(from, FoodID)) { if (CoolingDown(from, FoodID)) { from.SendLocalizedMessage(1151180); // You must wait a while before eating another enchanted apple. } else { from.PlaySound(0xF6); from.PlaySound(0x1F7); from.FixedParticles(0x3709, 1, 30, 9963, 13, 3, EffectLayer.Head); IEntity mfrom = new Entity(Serial.Zero, new Point3D(from.X, from.Y, from.Z - 10), from.Map); IEntity mto = new Entity(Serial.Zero, new Point3D(from.X, from.Y, from.Z + 50), from.Map); Effects.SendMovingParticles(mfrom, mto, 0x2255, 1, 0, false, false, 13, 3, 9501, 1, 0, EffectLayer.Head, 0x100); if (Core.SA) { int totalCurses = GetTotalCurses(from); if (totalCurses > 2 && totalCurses > Utility.Random(10)) { from.SendLocalizedMessage(1150174); // The apple was not strong enough to purify you. Consume(); return(false); } } EvilOmenSpell.TryEndEffect(from); StrangleSpell.RemoveCurse(from); CorpseSkinSpell.RemoveCurse(from); WeakenSpell.RemoveEffects(from); FeeblemindSpell.RemoveEffects(from); ClumsySpell.RemoveEffects(from); CurseSpell.RemoveEffect(from); MortalStrike.EndWound(from); BloodOathSpell.RemoveCurse(from); MindRotSpell.ClearMindRotScalar(from); SpellPlagueSpell.RemoveFromList(from); SleepSpell.EndSleep(from); BuffInfo.RemoveBuff(from, BuffIcon.MassCurse); from.SendLocalizedMessage(EatMessage); StartInfluence(from, FoodID, Duration, Cooldown); Consume(); return(true); } } return(false); }
public Spell CheckCurse() { Mobile foe = this.m_Mobile.Combatant as Mobile; if (foe == null) { return(null); } StatMod mod = foe.GetStatMod("[Magic] Int Curse"); if (mod != null) { return(null); } if (this.m_Mobile.Skills[SkillName.Magery].Value >= 40.0) { return(new CurseSpell(this.m_Mobile, null)); } int whichone = 1; Spell spell = null; if ((mod = foe.GetStatMod("[Magic] Str Curse")) != null) { whichone++; } if ((mod = this.m_Mobile.GetStatMod("[Magic] Dex Curse")) != null) { whichone++; } switch (whichone) { case 1: spell = new FeeblemindSpell(this.m_Mobile, null); break; case 2: spell = new WeakenSpell(this.m_Mobile, null); break; case 3: spell = new ClumsySpell(this.m_Mobile, null); break; } return(spell); }
public virtual Spell DoCombo(Mobile c) { Spell spell = null; if (m_Combo == 0) { spell = new ExplosionSpell(m_Mobile, null); ++m_Combo; // Move to next spell } else if (m_Combo == 1) { spell = new WeakenSpell(m_Mobile, null); ++m_Combo; // Move to next spell } else if (m_Combo == 2) { if (!c.Poisoned) { spell = new PoisonSpell(m_Mobile, null); } ++m_Combo; // Move to next spell } if (m_Combo == 3 && spell == null) { switch (Utility.Random(3)) { default: case 0: { if (c.Int < c.Dex) { spell = new FeeblemindSpell(m_Mobile, null); } else { spell = new ClumsySpell(m_Mobile, null); } ++m_Combo; // Move to next spell break; } case 1: { spell = new EnergyBoltSpell(m_Mobile, null); m_Combo = -1; // Reset combo state break; } case 2: { spell = new FlameStrikeSpell(m_Mobile, null); m_Combo = -1; // Reset combo state break; } } } else if (m_Combo == 4 && spell == null) { spell = new MindBlastSpell(m_Mobile, null); m_Combo = -1; } return(spell); }
public static int RemoveCurses(Mobile m) { int curseLevel = 0; if (SleepSpell.IsUnderSleepEffects(m)) { SleepSpell.EndSleep(m); curseLevel += 2; } if (EvilOmenSpell.TryEndEffect(m)) { curseLevel += 1; } if (StrangleSpell.RemoveCurse(m)) { curseLevel += 2; } if (CorpseSkinSpell.RemoveCurse(m)) { curseLevel += 3; } if (CurseSpell.UnderEffect(m)) { CurseSpell.RemoveEffect(m); curseLevel += 4; } if (BloodOathSpell.RemoveCurse(m)) { curseLevel += 3; } if (MindRotSpell.HasMindRotScalar(m)) { MindRotSpell.ClearMindRotScalar(m); curseLevel += 2; } if (SpellPlagueSpell.HasSpellPlague(m)) { SpellPlagueSpell.RemoveFromList(m); curseLevel += 4; } if (FeeblemindSpell.IsUnderEffects(m)) { FeeblemindSpell.RemoveEffects(m); curseLevel += 1; } if (ClumsySpell.IsUnderEffects(m)) { ClumsySpell.RemoveEffects(m); curseLevel += 1; } if (WeakenSpell.IsUnderEffects(m)) { WeakenSpell.RemoveEffects(m); curseLevel += 1; } if (MortalStrike.IsWounded(m)) { MortalStrike.EndWound(m); curseLevel += 2; } BuffInfo.RemoveBuff(m, BuffIcon.Clumsy); BuffInfo.RemoveBuff(m, BuffIcon.FeebleMind); BuffInfo.RemoveBuff(m, BuffIcon.Weaken); BuffInfo.RemoveBuff(m, BuffIcon.Curse); BuffInfo.RemoveBuff(m, BuffIcon.MassCurse); BuffInfo.RemoveBuff(m, BuffIcon.MortalStrike); BuffInfo.RemoveBuff(m, BuffIcon.Mindrot); BuffInfo.RemoveBuff(m, BuffIcon.CorpseSkin); BuffInfo.RemoveBuff(m, BuffIcon.Strangle); BuffInfo.RemoveBuff(m, BuffIcon.EvilOmen); return(curseLevel); }
public void Target(Mobile m) { if (CheckBSequence(m)) { SpellHelper.Turn(Caster, m); /* Attempts to remove all Curse effects from Target. * Curses include Mage spells such as Clumsy, Weaken, Feeblemind and Paralyze * as well as all Necromancer curses. * Chance of removing curse is affected by Caster's Karma. */ int chance = 0; if (Caster.Karma < -5000) { chance = 0; } else if (Caster.Karma < 0) { chance = (int)Math.Sqrt(20000 + Caster.Karma) - 122; } else if (Caster.Karma < 5625) { chance = (int)Math.Sqrt(Caster.Karma) + 25; } else { chance = 100; } if (chance > Utility.Random(100)) { m.PlaySound(0xF6); m.PlaySound(0x1F7); m.FixedParticles(0x3709, 1, 30, 9963, 13, 3, EffectLayer.Head); IEntity from = new Entity(Serial.Zero, new Point3D(m.X, m.Y, m.Z - 10), Caster.Map); IEntity to = new Entity(Serial.Zero, new Point3D(m.X, m.Y, m.Z + 50), Caster.Map); Effects.SendMovingParticles(from, to, 0x2255, 1, 0, false, false, 13, 3, 9501, 1, 0, EffectLayer.Head, 0x100); m.Paralyzed = false; EvilOmenSpell.TryEndEffect(m); StrangleSpell.RemoveCurse(m); CorpseSkinSpell.RemoveCurse(m); CurseSpell.RemoveEffect(m); MortalStrike.EndWound(m); WeakenSpell.RemoveEffects(m); FeeblemindSpell.RemoveEffects(m); ClumsySpell.RemoveEffects(m); BloodOathSpell.RemoveCurse(m); MindRotSpell.ClearMindRotScalar(m); SpellPlagueSpell.RemoveFromList(m); BuffInfo.RemoveBuff(m, BuffIcon.MassCurse); } else { m.PlaySound(0x1DF); } } FinishSequence(); }
public static int GetTotalCurses(Mobile m) { int curses = 0; if (EvilOmenSpell.UnderEffects(m)) { curses++; } if (StrangleSpell.UnderEffects(m)) { curses++; } if (CorpseSkinSpell.IsUnderEffects(m)) { curses++; } if (BloodOathSpell.GetBloodOath(m) != null) { curses++; } if (MindRotSpell.HasMindRotScalar(m)) { curses++; } if (SpellPlagueSpell.HasSpellPlague(m)) { curses++; } if (SleepSpell.IsUnderSleepEffects(m)) { curses++; } if (CurseSpell.UnderEffect(m)) { curses++; } if (FeeblemindSpell.IsUnderEffects(m)) { curses++; } if (ClumsySpell.IsUnderEffects(m)) { curses++; } if (WeakenSpell.IsUnderEffects(m)) { curses++; } return(curses); }
public bool ApplyStatEffect(PlayerMobile Wearer, bool bStr, bool bDex, bool bInt, int change) { Spell spell = null; if (Wearer == null) { return(false); } // Try to apply bless to all stats int BlessOffset = change; bool AppliedStr = false; bool AppliedInt = false; bool AppliedDex = false; if (bStr) { if (BlessOffset > 0) { spell = new StrengthSpell(Wearer, null); } else { spell = new WeakenSpell(Wearer, null); } if (Wearer.Region.OnBeginSpellCast(Wearer, spell) == false) { Wearer.SendMessage("The magic normally within this object seems absent."); return(false); } AppliedStr = AddStatBonus(Wearer, BlessOffset, StatType.Str, TimeSpan.Zero); } if (bInt) { if (BlessOffset > 0) { spell = new CunningSpell(Wearer, null); } else { spell = new FeeblemindSpell(Wearer, null); } if (Wearer.Region.OnBeginSpellCast(Wearer, spell) == false) { Wearer.SendMessage("The magic normally within this object seems absent."); return(false); } AppliedInt = AddStatBonus(Wearer, BlessOffset, StatType.Int, TimeSpan.Zero); } if (bDex) { if (BlessOffset > 0) { spell = new AgilitySpell(Wearer, null); } else { spell = new ClumsySpell(Wearer, null); } if (Wearer.Region.OnBeginSpellCast(Wearer, spell) == false) { Wearer.SendMessage("The magic normally within this object seems absent."); return(false); } AppliedDex = AddStatBonus(Wearer, BlessOffset, StatType.Dex, TimeSpan.Zero); } Wearer.CheckStatTimers(); // If any stats were adjusted, start timer to remove the stats after effect expires // return that spell was successful if (AppliedStr || AppliedInt || AppliedDex) /* 7/25/04 smerX */ { if (m_StatEffectTimer != null) { m_StatEffectTimer.Stop(); m_StatEffectTimer = null; } m_StatEffectTimer = new MagicEffectTimer(Wearer, this, TimeSpan.FromSeconds(120)); m_StatEffectTimer.Start(); return(true); } else { return(false); } }