public void Target(Mobile m) { if (!Caster.CanSee(m) || m.Hidden) { Caster.SendLocalizedMessage(500237); // Target can not be seen. } else if (CheckBSequence(m)) { SpellHelper.Turn(Caster, m); SpellHelper.AddStatBonus(Caster, m, StatType.Str); SpellHelper.DisableSkillCheck = true; SpellHelper.AddStatBonus(Caster, m, StatType.Dex); SpellHelper.AddStatBonus(Caster, m, StatType.Int); SpellHelper.DisableSkillCheck = false; bool enhancedSpellcast = SpellHelper.IsEnhancedSpell(Caster, m, EnhancedSpellbookType.Wizard, false, true); int spellHue = PlayerEnhancementPersistance.GetSpellHueFor(Caster, HueableSpell.Bless); if (enhancedSpellcast) { m.FixedParticles(0x373A, 10, 30, 5018, spellHue, 0, EffectLayer.Waist); m.PlaySound(0x1EA); } else { m.FixedParticles(0x373A, 10, 15, 5018, spellHue, 0, EffectLayer.Waist); m.PlaySound(0x1EA); } } FinishSequence(); }
public void Target(Mobile mobile) { if (!Caster.CanSee(mobile) || mobile.Hidden) { Caster.SendLocalizedMessage(500237); // Target can not be seen. } else if (CheckHSequence(mobile)) { SpellHelper.Turn(Caster, mobile); SpellHelper.CheckReflect((int)this.Circle, Caster, ref mobile); SpellHelper.AddStatCurse(Caster, mobile, StatType.Dex); CheckMagicResist(mobile); if (mobile.Spell != null) { mobile.Spell.OnCasterHurt(); } mobile.Paralyzed = false; int spellHue = PlayerEnhancementPersistance.GetSpellHueFor(Caster, HueableSpell.Clumsy); mobile.FixedParticles(0x3779, 10, 15, 5002, spellHue, 0, EffectLayer.Head); mobile.PlaySound(0x1DF); } FinishSequence(); }
public override void OnCast() { if (CheckSequence()) { bool enhancedSpellcast = SpellHelper.IsEnhancedSpell(Caster, null, EnhancedSpellbookType.Summoner, false, true); BaseCreature summon = new SummonedFireElemental(); summon.StoreBaseSummonValues(); double duration = 4.0 * Caster.Skills[SkillName.Magery].Value; if (enhancedSpellcast) { duration *= SpellHelper.EnhancedSummonDurationMultiplier; summon.DamageMin = (int)((double)summon.DamageMin * SpellHelper.EnhancedSummonDamageMultiplier); summon.DamageMax = (int)((double)summon.DamageMax * SpellHelper.EnhancedSummonDamageMultiplier); summon.SetHitsMax((int)((double)summon.HitsMax * SpellHelper.EnhancedSummonHitPointsMultiplier)); summon.Hits = summon.HitsMax; } summon.SetDispelResistance(Caster, enhancedSpellcast, 0); int spellHue = PlayerEnhancementPersistance.GetSpellHueFor(Caster, HueableSpell.FireElemental); summon.Hue = spellHue; SpellHelper.Summon(summon, Caster, 0x217, TimeSpan.FromSeconds(duration), false, false); } FinishSequence(); }
public void Target(Mobile mobile) { BaseCreature bc_Creature = mobile as BaseCreature; if (!Caster.CanSee(mobile) || mobile.Hidden) { Caster.SendLocalizedMessage(500237); // Target can not be seen. } else if (bc_Creature == null || !bc_Creature.IsDispellable) { Caster.SendLocalizedMessage(1005049); // That cannot be dispelled. } else if (CheckHSequence(mobile)) { SpellHelper.Turn(Caster, mobile); int spellHue = PlayerEnhancementPersistance.GetSpellHueFor(Caster, HueableSpell.Dispel); Caster.DoHarmful(bc_Creature); if (Caster is PlayerMobile) { bc_Creature.ResolveDispel(Caster, true, spellHue); } else { bc_Creature.ResolveDispel(Caster, false, spellHue); } } FinishSequence(); }
public InternalItem(Mobile caster, int itemID, Point3D loc, Map map, TimeSpan duration) : base(itemID) { Visible = false; Movable = false; Light = LightType.Circle300; int spellHue = PlayerEnhancementPersistance.GetSpellHueFor(caster, HueableSpell.ParalyzeField); Hue = spellHue; MoveToWorld(loc, map); if (caster.InLOS(this)) { Visible = true; } else { Delete(); } if (Deleted) { return; } m_Caster = caster; m_Timer = new InternalTimer(this, duration); m_Timer.Start(); m_End = DateTime.UtcNow + duration; }
public static void Shielded(Mobile mobile) { if (mobile == null) { return; } mobile.PlaySound(0x64B); //0x456 mobile.FixedEffect(0x37B9, 10, 5); int projectiles = 4; for (int a = 0; a < projectiles; a++) { int spellHue = PlayerEnhancementPersistance.GetSpellHueFor(mobile, HueableSpell.MagicReflect); Point3D newLocation = new Point3D(mobile.X + Utility.RandomList(-1, 1), mobile.Y + Utility.RandomList(-1, 1), mobile.Z); SpellHelper.AdjustField(ref newLocation, mobile.Map, 12, false); TimedStatic timedStatic = new TimedStatic(0x3779, .5); if (spellHue == 0) { timedStatic.Hue = Utility.RandomList(2587, 2570, 2576, 2623, 2572, 2615, 2515, 2505, 2499, 2500, 2117, 2618); } else { timedStatic.Hue = spellHue; } timedStatic.Name = "dissipated energy"; timedStatic.MoveToWorld(newLocation, mobile.Map); } }
public static void ApplyEffect(Mobile Caster, Mobile mobile) { SpellHelper.AddStatCurse(Caster, mobile, StatType.Str); SpellHelper.DisableSkillCheck = true; SpellHelper.AddStatCurse(Caster, mobile, StatType.Dex); SpellHelper.AddStatCurse(Caster, mobile, StatType.Int); SpellHelper.DisableSkillCheck = false; Timer t = (Timer)m_UnderEffect[mobile]; if (Caster.Player && mobile.Player && t == null) { TimeSpan duration = SpellHelper.GetDuration(Caster, mobile); m_UnderEffect[mobile] = t = Timer.DelayCall(duration, new TimerStateCallback(RemoveEffect), mobile); mobile.UpdateResistances(); } if (mobile.Spell != null) { mobile.Spell.OnCasterHurt(); } mobile.Paralyzed = false; int spellHue = PlayerEnhancementPersistance.GetSpellHueFor(Caster, HueableSpell.Curse); mobile.FixedParticles(0x374A, 10, 15, 5028, spellHue, 0, EffectLayer.Waist); mobile.PlaySound(0x1E1); }
public void Target(Mobile m) { if (!m.CanSee(m) || m.Hidden) { Caster.SendLocalizedMessage(500237); // Target can not be seen. } else if (m.MagicDamageAbsorb > 0) { Caster.SendLocalizedMessage(1005559); // This spell is already in effect. } else if (!m.CanBeginAction(typeof(DefensiveSpell))) { Caster.SendMessage("The spell will not adhere to them at this time."); // The spell will not adhere to you at this time. } else if (CheckBSequence(m)) { if (Caster.MagicDamageAbsorb >= 0) { int value = 0; bool enhancedSpellcast = SpellHelper.IsEnhancedSpell(Caster, null, EnhancedSpellbookType.Wizard, false, true); //Spirit Speak Bonus int spiritSpeakBonus = (int)(Math.Floor(8 * Caster.Skills[SkillName.SpiritSpeak].Value / 100)); value += spiritSpeakBonus; if (enhancedSpellcast) { value += 8; } int spellHue = PlayerEnhancementPersistance.GetSpellHueFor(Caster, HueableSpell.MagicReflect); if (enhancedSpellcast) { m.FixedParticles(0x375A, 10, 30, 5037, spellHue, 0, EffectLayer.Waist); m.PlaySound(0x1E9); } else { m.FixedParticles(0x375A, 10, 15, 5037, spellHue, 0, EffectLayer.Waist); m.PlaySound(0x1E9); } if (value < 1) { value = 1; } m.MagicDamageAbsorb = value; } } FinishSequence(); }
public void Target(IPoint3D p) { if (!Caster.CanSee(p)) { Caster.SendLocalizedMessage(500237); // Target can not be seen. } else if (SpellHelper.CheckTown(p, Caster) && CheckSequence()) { SpellHelper.Turn(Caster, p); SpellHelper.GetSurfaceTop(ref p); List <Mobile> targets = new List <Mobile>(); Map map = Caster.Map; if (map != null) { IPooledEnumerable eable = map.GetMobilesInRange(new Point3D(p), 3); foreach (Mobile m in eable) { if (SpellHelper.ValidIndirectTarget(Caster, m) && Caster.CanSee(m) && Caster.CanBeHarmful(m, false)) { targets.Add(m); } } eable.Free(); } int spellHue = PlayerEnhancementPersistance.GetSpellHueFor(Caster, HueableSpell.MassCurse); for (int i = 0; i < targets.Count; ++i) { Mobile mobile = targets[i]; CheckMagicResist(mobile); Caster.DoHarmful(mobile); SpellHelper.AddStatCurse(Caster, mobile, StatType.Str); SpellHelper.AddStatCurse(Caster, mobile, StatType.Dex); SpellHelper.AddStatCurse(Caster, mobile, StatType.Int); if (mobile.Spell != null) { mobile.Spell.OnCasterHurt(); } mobile.Paralyzed = false; mobile.FixedParticles(0x374A, 10, 15, 5028, spellHue, 0, EffectLayer.Waist); mobile.PlaySound(0x1FB); } } FinishSequence(); }
public void Target(Mobile m) { if (!m.CanSee(m) || m.Hidden) { Caster.SendLocalizedMessage(500237); // Target can not be seen. } if (!m.CanBeginAction(typeof(ReactiveArmorSpell))) { Caster.SendMessage("The spell will not adhere to them at this time."); } else if (CheckBSequence(m)) { int value = (int)(m.Skills[SkillName.Magery].Value); value /= 3; if (value < 0) { value = 1; } else if (value > 20) { value = 20; } bool enhancedSpellcast = SpellHelper.IsEnhancedSpell(Caster, null, EnhancedSpellbookType.Wizard, false, true); int spellHue = PlayerEnhancementPersistance.GetSpellHueFor(Caster, HueableSpell.ReactiveArmor); //Spirit Speak Bonus value += (int)(20 * (Caster.Skills[SkillName.SpiritSpeak].Value / 100)); if (enhancedSpellcast) { value += 20; m.FixedParticles(0x376A, 9, 64, 5008, spellHue, 0, EffectLayer.Waist); m.PlaySound(0x1F2); } else { m.FixedParticles(0x376A, 9, 32, 5008, spellHue, 0, EffectLayer.Waist); m.PlaySound(0x1F2); } m.MeleeDamageAbsorb = value; m.BeginAction(typeof(ReactiveArmorSpell)); Timer.DelayCall(TimeSpan.FromMinutes(0.5), delegate { m.EndAction(typeof(ReactiveArmorSpell)); }); } FinishSequence(); }
public void Target(IPoint3D p, Mobile from) { if (!Caster.CanSee(p)) { Caster.SendLocalizedMessage(500237); // Target can not be seen. } else if (CheckSequence()) { SpellHelper.Turn(Caster, p); SpellHelper.GetSurfaceTop(ref p); List <Mobile> targets = new List <Mobile>(); Map map = Caster.Map; if (map != null) { IPooledEnumerable eable = map.GetMobilesInRange(new Point3D(p), 8); foreach (Mobile m in eable) { if (m is BaseCreature && ((BaseCreature)m).Summoned && Caster.CanBeHarmful(m, false)) { targets.Add(m); } } eable.Free(); } int spellHue = PlayerEnhancementPersistance.GetSpellHueFor(Caster, HueableSpell.MassDispel); for (int i = 0; i < targets.Count; ++i) { Mobile m = targets[i]; BaseCreature bc_Creature = m as BaseCreature; if (bc_Creature == null) { continue; } Caster.DoHarmful(m); bc_Creature.ResolveDispel(Caster, false, spellHue); } } FinishSequence(); }
public void Target(IPoint3D p) { Map map = Caster.Map; SpellHelper.GetSurfaceTop(ref p); if (map == null || !map.CanSpawnMobile(p.X, p.Y, p.Z) || BaseBoat.FindBoatAt(p, map) != null) { Caster.SendLocalizedMessage(501942); // That location is blocked. } else if (SpellHelper.CheckTown(p, Caster) && CheckSequence()) { bool enhancedSpellcast = SpellHelper.IsEnhancedSpell(Caster, null, EnhancedSpellbookType.Summoner, false, true); BaseCreature summon = new BladeSpirits(); summon.StoreBaseSummonValues(); double duration = 2.0 * Caster.Skills[SkillName.Magery].Value; if (enhancedSpellcast) { duration *= SpellHelper.EnhancedSummonDurationMultiplier; summon.DamageMin = (int)((double)summon.DamageMin * SpellHelper.EnhancedSummonDamageMultiplier); summon.DamageMax = (int)((double)summon.DamageMax * SpellHelper.EnhancedSummonDamageMultiplier); summon.SetHitsMax((int)((double)summon.HitsMax * SpellHelper.EnhancedSummonHitPointsMultiplier)); summon.Hits = summon.HitsMax; } summon.SetDispelResistance(Caster, enhancedSpellcast, 0); int spellHue = PlayerEnhancementPersistance.GetSpellHueFor(Caster, HueableSpell.BladeSpirits); summon.Hue = spellHue; BaseCreature.Summon(summon, false, Caster, new Point3D(p), 0x212, TimeSpan.FromSeconds(duration)); } FinishSequence(); }
public void Target(Mobile m) { if (!Caster.CanSee(m) || m.Hidden) { Caster.SendLocalizedMessage(500237); // Target can not be seen. } else if (CheckBSequence(m)) { SpellHelper.Turn(Caster, m); Poison p = m.Poison; if (p != null) { double chanceToCure = (Caster.Skills[SkillName.Magery].Value * 0.75) + (110.0 - (p.Level + 1) * 33.0); chanceToCure /= 100; if (chanceToCure > Utility.RandomDouble()) { if (m.CurePoison(Caster)) { if (Caster != m) { Caster.SendLocalizedMessage(1010058); // You have cured the target of all poisons! } m.SendLocalizedMessage(1010059); // You have been cured of all poisons. } } else { m.SendLocalizedMessage(1010060); // You have failed to cure your target! } } int spellHue = PlayerEnhancementPersistance.GetSpellHueFor(Caster, HueableSpell.Cure); m.FixedParticles(0x373A, 10, 15, 5012, spellHue, 0, EffectLayer.Waist); m.PlaySound(0x1E0); } FinishSequence(); }
public void Target(Mobile m) { if (!m.CanSee(m) || m.Hidden) { m.SendLocalizedMessage(500237); // Target can not be seen. } else if (CheckBSequence(m)) { SpellHelper.Turn(Caster, m); int val = (int)(m.Skills[SkillName.Magery].Value / 10.0 + 1); if (m.BeginAction(typeof(ProtectionSpell))) { Caster.DoBeneficial(m); m.VirtualArmorMod += val; new InternalTimer(m, Caster, val).Start(); bool enhancedSpellcast = SpellHelper.IsEnhancedSpell(Caster, m, EnhancedSpellbookType.Wizard, false, true); int spellHue = PlayerEnhancementPersistance.GetSpellHueFor(Caster, HueableSpell.Protection); if (enhancedSpellcast) { m.FixedParticles(0x375A, 9, 40, 5027, spellHue, 0, EffectLayer.Waist); m.PlaySound(0x1F7); } else { m.FixedParticles(0x375A, 9, 20, 5027, spellHue, 0, EffectLayer.Waist); m.PlaySound(0x1F7); } } } FinishSequence(); }
public InternalItem(Point3D loc, Map map, Mobile caster) : base(128) { Visible = false; Movable = false; //Player Enhancement Customization: Geomancer if (PlayerEnhancementPersistance.IsCustomizationEntryActive(caster, CustomizationType.Geomancer)) { ItemID = 376; } int spellHue = PlayerEnhancementPersistance.GetSpellHueFor(caster, HueableSpell.WallOfStone); Hue = spellHue; MoveToWorld(loc, map); if (caster.InLOS(this)) { Visible = true; } else { Delete(); } if (Deleted) { return; } m_Timer = new InternalTimer(this, TimeSpan.FromSeconds(10.0)); m_Timer.Start(); m_End = DateTime.UtcNow + TimeSpan.FromSeconds(10.0); }
public void Target(Mobile mobile) { if (!Caster.CanSee(mobile) || mobile.Hidden) { Caster.SendLocalizedMessage(500237); // Target can not be seen. } else if (CheckHSequence(mobile)) { SpellHelper.Turn(Caster, mobile); SpellHelper.CheckReflect((int)this.Circle, Caster, ref mobile); double damage = (double)Utility.RandomMinMax(30, 45); double damageBonus = 0; if (mobile is BaseCreature) { damageBonus += .5; } CheckMagicResist(mobile); bool enhancedSpellcast = SpellHelper.IsEnhancedSpell(Caster, mobile, EnhancedSpellbookType.Fire, true, true); Boolean chargedSpellcast = SpellHelper.IsChargedSpell(Caster, mobile, true, Scroll != null); Boolean isTamedTarget = SpellHelper.IsTamedTarget(Caster, mobile); int spellHue = PlayerEnhancementPersistance.GetSpellHueFor(Caster, HueableSpell.Flamestrike); if (enhancedSpellcast) { if (isTamedTarget) { damageBonus += SpellHelper.EnhancedSpellTamedCreatureBonus; } else { damageBonus += SpellHelper.EnhancedSpellBonus; } } if (chargedSpellcast) { if (isTamedTarget) { damageBonus += SpellHelper.ChargedSpellTamedCreatureBonus; } else { damageBonus += SpellHelper.ChargedSpellBonus; } mobile.FixedParticles(0x3709, 10, 60, 5052, spellHue, 0, EffectLayer.LeftFoot); mobile.PlaySound(0x208); } else { mobile.FixedParticles(0x3709, 10, 30, 5052, spellHue, 0, EffectLayer.LeftFoot); mobile.PlaySound(0x208); } damage *= GetDamageScalar(mobile, damageBonus); SpellHelper.Damage(this, Caster, mobile, damage); } FinishSequence(); }
public void Target(IPoint3D p) { if (!Caster.CanSee(p)) { Caster.SendLocalizedMessage(500237); // Target can not be seen. } else if (SpellHelper.CheckTown(p, Caster) && CheckSequence()) { bool enhancedSpellcast = false; Boolean chargedSpellcast = false; int spellHue = PlayerEnhancementPersistance.GetSpellHueFor(Caster, HueableSpell.MeteorSwarm); int radius = 3; if (Caster is BaseCreature) { radius += (int)(Math.Floor((Caster.Skills[SkillName.Magery].Value - 75) / 25)); } SpellHelper.Turn(Caster, p); if (p is Item) { p = ((Item)p).GetWorldLocation(); } Map map = Caster.Map; IPooledEnumerable nearbyMobiles = map.GetMobilesInRange(new Point3D(p), radius); Queue m_Queue = new Queue(); int targetCount = 0; bool playerVsCreatureOccurred = false; if (targetCount > 0) { Effects.PlaySound(p, Caster.Map, 0x160); } foreach (Mobile mobile in nearbyMobiles) { if (mobile == Caster) { continue; } if (Caster is BaseCreature) { if (!SpecialAbilities.MonsterCanDamage(Caster, mobile)) { continue; } } if (!Caster.CanBeHarmful(mobile, false)) { continue; } if (Caster is PlayerMobile && mobile is BaseCreature) { playerVsCreatureOccurred = true; } targetCount++; m_Queue.Enqueue(mobile); } nearbyMobiles.Free(); if (playerVsCreatureOccurred) { enhancedSpellcast = SpellHelper.IsEnhancedSpell(Caster, null, EnhancedSpellbookType.Fire, false, true); chargedSpellcast = SpellHelper.IsChargedSpell(Caster, null, false, Scroll != null); } while (m_Queue.Count > 0) { Mobile mobile = (Mobile)m_Queue.Dequeue(); double damage = (double)Utility.RandomMinMax(15, 20); double damageBonus = 0; CheckMagicResist(mobile); Boolean isTamedTarget = SpellHelper.IsTamedTarget(Caster, mobile); if (enhancedSpellcast && mobile is BaseCreature) { if (isTamedTarget) { damageBonus += SpellHelper.EnhancedSpellTamedCreatureBonus; } else { damageBonus += SpellHelper.EnhancedSpellBonus; } } if (chargedSpellcast && mobile is BaseCreature) { if (isTamedTarget) { damageBonus += SpellHelper.ChargedSpellTamedCreatureBonus; } else { damageBonus += SpellHelper.ChargedSpellBonus; } Caster.MovingParticles(mobile, 0x36D4, 5, 0, false, true, spellHue, 0, 9501, 1, 0, 0x100); Caster.MovingParticles(mobile, 0x36D4, 9, 0, false, true, spellHue, 0, 9501, 1, 0, 0x100); } else { Caster.MovingParticles(mobile, 0x36D4, 7, 0, false, true, spellHue, 0, 9501, 1, 0, 0x100); } BaseCreature bc_Target = mobile as BaseCreature; PlayerMobile pm_Target = mobile as PlayerMobile; if (bc_Target != null) { if (bc_Target.BoatOccupied != null) { damage *= BaseBoat.shipBasedAoESpellDamageToCreatureScalar; } } if (pm_Target != null) { if (pm_Target.BoatOccupied != null) { damage *= BaseBoat.shipBasedAoESpellDamageToPlayerScalar; } } damage *= GetDamageScalar(mobile, damageBonus); SpellHelper.Damage(this, Caster, mobile, damage); } } FinishSequence(); }
public void Target(IPoint3D p) { IPoint3D orig = p; Map map = Caster.Map; SpellHelper.GetSurfaceTop(ref p); Point3D pP = new Point3D(p); WarpBlockerTotem recallBlocker = WarpBlockerTotem.RecallBlockerTriggered(Caster, WarpBlockerTotem.MovementMode.TeleportIn, pP, Caster.Map); if (recallBlocker != null) { if (recallBlocker.PreventTeleportInResponse != "") { Caster.SendMessage(recallBlocker.PreventTeleportInResponse); } else { Caster.SendMessage(WarpBlockerTotem.DefaultTeleportInResponse); } } else if (Server.Misc.WeightOverloading.IsOverloaded(Caster)) { Caster.SendLocalizedMessage(502359, "", 0x22); // Thou art too encumbered to move. } else if (!SpellHelper.CheckTravel(Caster, TravelCheckType.TeleportFrom)) { Caster.SendLocalizedMessage(501942); // That location is blocked. } else if (!SpellHelper.CheckTravel(Caster, map, pP, TravelCheckType.TeleportTo)) { Caster.SendLocalizedMessage(501942); // That location is blocked. } else if (map == null || !map.CanSpawnMobile(p.X, p.Y, p.Z)) { Caster.SendLocalizedMessage(501942); // That location is blocked. } else if (SpellHelper.CheckMulti(pP, map)) { Caster.SendLocalizedMessage(501942); // That location is blocked. } else { if (CheckSequence()) { SpellHelper.Turn(Caster, orig); Mobile m = Caster; Point3D from = m.Location; Point3D to = pP; m.Location = to; m.ProcessDelta(); int spellHue = PlayerEnhancementPersistance.GetSpellHueFor(Caster, HueableSpell.Teleport); if (m.Player) { Effects.SendLocationParticles(EffectItem.Create(from, m.Map, EffectItem.DefaultDuration), 0x3728, 10, 10, spellHue, 0, 2023, 0); //Player Enhancement Customization: Blink bool blink = PlayerEnhancementPersistance.IsCustomizationEntryActive(Caster, CustomizationType.Blink); if (blink) { int distance = Utility.GetDistance(from, to); Point3D effectStep = from; for (int a = 0; a < distance + 1; a++) { Timer.DelayCall(TimeSpan.FromSeconds(a * .05), delegate { if (m == null) { return; } Direction direction = Utility.GetDirection(effectStep, to); effectStep = SpecialAbilities.GetPointByDirection(effectStep, direction); Effects.SendLocationParticles(EffectItem.Create(effectStep, m.Map, EffectItem.DefaultDuration), 0x3728, 10, 10, spellHue, 0, 2023, 0); m.PlaySound(0x5C6); }); } } else { Effects.SendLocationParticles(EffectItem.Create(to, m.Map, EffectItem.DefaultDuration), 0x3728, 10, 10, spellHue, 0, 2023, 0); m.PlaySound(0x1FE); } } else { m.FixedParticles(0x376A, 9, 32, 0x13AF, spellHue, 0, EffectLayer.Waist); m.PlaySound(0x1FE); } IPooledEnumerable eable = m.GetItemsInRange(0); foreach (Item item in eable) { if (item is Server.Spells.Sixth.ParalyzeFieldSpell.InternalItem || item is Server.Spells.Fifth.PoisonFieldSpell.InternalItem || item is Server.Spells.Fourth.FireFieldSpell.FireFieldItem) { item.OnMoveOver(m); } } eable.Free(); m.BeginAction(typeof(TeleportSpell)); Timer.DelayCall(TimeSpan.FromSeconds(6), delegate { m.EndAction(typeof(TeleportSpell)); }); } } FinishSequence(); }
public void Target(Mobile mobile) { if (!Caster.CanSee(mobile) || mobile.Hidden) { Caster.SendLocalizedMessage(500237); // Target can not be seen. } else if (CheckHSequence(mobile)) { Mobile source = Caster; SpellHelper.Turn(Caster, mobile); SpellHelper.CheckReflect((int)this.Circle, ref source, ref mobile); double damage = (double)Utility.RandomMinMax(20, 35); double damageBonus = 0; CheckMagicResist(mobile); bool enhancedSpellcast = SpellHelper.IsEnhancedSpell(Caster, mobile, EnhancedSpellbookType.Fire, true, true); Boolean chargedSpellcast = SpellHelper.IsChargedSpell(Caster, mobile, true, Scroll != null); Boolean isTamedTarget = SpellHelper.IsTamedTarget(Caster, mobile); int spellHue = PlayerEnhancementPersistance.GetSpellHueFor(Caster, HueableSpell.EnergyBolt); if (enhancedSpellcast) { if (isTamedTarget) { damageBonus += SpellHelper.EnhancedSpellTamedCreatureBonus; } else { damageBonus += SpellHelper.EnhancedSpellBonus; } } if (enhancedSpellcast) { if (isTamedTarget) { damageBonus += SpellHelper.EnhancedSpellTamedCreatureBonus; } else { damageBonus += SpellHelper.EnhancedSpellBonus; } } if (chargedSpellcast) { if (isTamedTarget) { damageBonus += SpellHelper.ChargedSpellTamedCreatureBonus; } else { damageBonus += SpellHelper.ChargedSpellBonus; } } Timer.DelayCall(TimeSpan.FromSeconds(2.5), delegate { if (!SpecialAbilities.Exists(mobile)) { return; } if (chargedSpellcast) { mobile.FixedParticles(0x36BD, 20, 20, 5044, spellHue, 0, EffectLayer.Head); mobile.PlaySound(0x307); } else { mobile.FixedParticles(0x36BD, 20, 10, 5044, spellHue, 0, EffectLayer.Head); mobile.PlaySound(0x307); } damage *= GetDamageScalar(mobile, damageBonus); SpellHelper.Damage(this, Caster, mobile, damage); }); } FinishSequence(); }
public void Target(IPoint3D p) { Map map = Caster.Map; SpellHelper.GetSurfaceTop(ref p); if (map == null || !map.CanSpawnMobile(p.X, p.Y, p.Z) || BaseBoat.FindBoatAt(p, map) != null) { Caster.SendLocalizedMessage(501942); // That location is blocked. } else if (SpellHelper.CheckTown(p, Caster) && CheckSequence()) { // Here's a little Napoleon Dynamite easter egg for IPY! if (Utility.RandomDouble() < 0.005) //if ( true ) { EnergyVortex tina = new EnergyVortex(); Slime ham = new Slime(); tina.Name = "Tina"; tina.Body = 0xDC; tina.Hue = 0; tina.Frozen = true; ham.Name = "Ham"; ham.Hue = 0x76; ham.Frozen = true; bool validLocation = false; Point3D tinaLocation = new Point3D(p.X, p.Y, p.Z); Point3D hamLocation = new Point3D(); // Find a suitable location for Ham to spawn. for (int j = 0; !validLocation && j < 10; ++j) { int x = tinaLocation.X + 1; int y = tinaLocation.Y + 1; int z = map.GetAverageZ(x, y); if (validLocation = map.CanFit(x, y, tinaLocation.Z, 16, false, false)) { hamLocation = new Point3D(x, y, tinaLocation.Z); } else if (validLocation = map.CanFit(x, y, z, 16, false, false)) { hamLocation = new Point3D(x, y, z); } } BaseCreature.Summon(tina, false, Caster, tinaLocation, 0x212, TimeSpan.FromSeconds(10.0)); BaseCreature.Summon(ham, false, Caster, hamLocation, 0, TimeSpan.FromSeconds(10.0)); List <Mobile> mobs = new List <Mobile>(); mobs.Add(tina); mobs.Add(ham); // Wait 5 seconds, then make Tina talk. Timer.DelayCall(TimeSpan.FromSeconds(5.0), new TimerStateCallback(BeginAction), mobs); // Wait 8 seconds, then make Tina and Ham recall. Timer.DelayCall(TimeSpan.FromSeconds(8.0), new TimerStateCallback(EndAction), mobs); } else { bool enhancedSpellcast = SpellHelper.IsEnhancedSpell(Caster, null, EnhancedSpellbookType.Summoner, false, true); BaseCreature summon = new EnergyVortex(); summon.StoreBaseSummonValues(); double duration = 2.0 * Caster.Skills[SkillName.Magery].Value; if (enhancedSpellcast) { duration *= SpellHelper.EnhancedSummonDurationMultiplier; summon.DamageMin = (int)((double)summon.DamageMin * SpellHelper.EnhancedSummonDamageMultiplier); summon.DamageMax = (int)((double)summon.DamageMax * SpellHelper.EnhancedSummonDamageMultiplier); summon.SetHitsMax((int)((double)summon.HitsMax * SpellHelper.EnhancedSummonHitPointsMultiplier)); summon.Hits = summon.HitsMax; } summon.SetDispelResistance(Caster, enhancedSpellcast, 0); int spellHue = PlayerEnhancementPersistance.GetSpellHueFor(Caster, HueableSpell.EnergyVortex); summon.Hue = spellHue; BaseCreature.Summon(summon, false, Caster, new Point3D(p), 0x212, TimeSpan.FromSeconds(duration)); } } FinishSequence(); }
public void Target(Mobile mobile) { if (!Caster.CanSee(mobile) || mobile.Hidden) { Caster.SendLocalizedMessage(500237); // Target can not be seen. } else if (CheckHSequence(mobile)) { Mobile source = Caster; SpellHelper.Turn(source, mobile); SpellHelper.CheckReflect((int)this.Circle, ref source, ref mobile); double damage = (double)Utility.RandomMinMax(3, 5); double damageBonus = 0; CheckMagicResist(mobile); bool enhancedSpellcast = SpellHelper.IsEnhancedSpell(Caster, mobile, EnhancedSpellbookType.Fire, true, true); Boolean chargedSpellcast = SpellHelper.IsChargedSpell(Caster, mobile, true, Scroll != null); Boolean isTamedTarget = SpellHelper.IsTamedTarget(Caster, mobile); int spellHue = PlayerEnhancementPersistance.GetSpellHueFor(Caster, HueableSpell.MagicArrow); if (enhancedSpellcast) { if (isTamedTarget) { damageBonus += SpellHelper.EnhancedSpellTamedCreatureBonus; } else { damageBonus += SpellHelper.EnhancedSpellBonus; } } if (chargedSpellcast) { if (isTamedTarget) { damageBonus += SpellHelper.ChargedSpellTamedCreatureBonus; } else { damageBonus += SpellHelper.ChargedSpellBonus; } source.MovingParticles(mobile, 0x36E4, 3, 0, false, true, spellHue, 0, 3006, 4006, 0, 0); source.MovingParticles(mobile, 0x36E4, 7, 0, false, true, spellHue, 0, 3006, 4006, 0, 0); source.PlaySound(0x1E5); } else { source.MovingParticles(mobile, 0x36E4, 5, 0, false, true, spellHue, 0, 3006, 4006, 0, 0); source.PlaySound(0x1E5); } damage *= GetDamageScalar(mobile, damageBonus); SpellHelper.Damage(this, Caster, mobile, damage); } FinishSequence(); }
public void Target(Mobile m) { bool validTarget = true; PlayerMobile playerTarget = m as PlayerMobile; if (!Caster.CanSee(m) || m.Hidden) { Caster.SendLocalizedMessage(500237); // Target can not be seen. validTarget = false; } else if (m == Caster) { Caster.SendLocalizedMessage(501039); // Thou can not resurrect thyself. validTarget = false; } else if (!Caster.Alive) { Caster.SendLocalizedMessage(501040); // The resurrecter must be alive. validTarget = false; } else if (m.Alive) { Caster.SendLocalizedMessage(501041); // Target is not dead. validTarget = false; } else if (!Caster.InRange(m, 1)) { Caster.SendLocalizedMessage(501042); // Target is not close enough. validTarget = false; } else if (!m.Player) { Caster.SendLocalizedMessage(501043); // Target is not a being. validTarget = false; } else if (m.Map == null || !m.Map.CanFit(m.Location, 16, false, false)) { Caster.SendLocalizedMessage(501042); // Target can not be resurrected at that location. m.SendLocalizedMessage(502391); // Thou can not be resurrected there! validTarget = false; } if (validTarget) { if (CheckBSequence(m, true)) { SpellHelper.Turn(Caster, m); int spellHue = PlayerEnhancementPersistance.GetSpellHueFor(Caster, HueableSpell.WaterElemental); m.PlaySound(0x214); m.FixedEffect(0x376A, 10, 16, spellHue, 0); m.SendGump(new ResurrectGump(m, Caster)); } } FinishSequence(); }
//Removed by IPY // Archcure is now 1/4th of a second faster //public override TimeSpan CastDelayBase{ get{ return base.CastDelayBase - TimeSpan.FromSeconds( 0.25 ); } } public void Target(IPoint3D p) { if (!Caster.CanSee(p)) { Caster.SendLocalizedMessage(500237); // Target can not be seen. } else if (CheckSequence()) { SpellHelper.Turn(Caster, p); SpellHelper.GetSurfaceTop(ref p); List <Mobile> targets = new List <Mobile>(); Map map = Caster.Map; if (map != null) { IPooledEnumerable eable = map.GetMobilesInRange(new Point3D(p), 3); foreach (Mobile m in eable) { if (Caster.CanBeBeneficial(m, false)) { targets.Add(m); } } eable.Free(); } Effects.PlaySound(p, Caster.Map, 0x299); if (targets.Count > 0) { int cured = 0; int spellHue = PlayerEnhancementPersistance.GetSpellHueFor(Caster, HueableSpell.ArchCure); for (int i = 0; i < targets.Count; ++i) { Mobile m = targets[i]; if (m.Player) // UOAC : No flagging when doing AC around a monster. { Caster.DoBeneficial(m); } if (m.CurePoison(Caster)) { ++cured; } m.FixedParticles(0x373A, 10, 15, 5012, spellHue, 0, EffectLayer.Waist); m.PlaySound(0x1E0); } if (cured > 0) { Caster.SendLocalizedMessage(1010058); // You have cured the target of all poisons! } } } FinishSequence(); }
public void Target(Mobile mobile) { if (!Caster.CanSee(mobile) || mobile.Hidden) { Caster.SendLocalizedMessage(500237); // Target can not be seen. } else if (CheckHSequence(mobile)) { Mobile from = Caster, target = mobile; SpellHelper.Turn(from, target); SpellHelper.CheckReflect((int)this.Circle, ref from, ref target); double damage = (double)Utility.RandomMinMax(10, 20); double damageBonus = 0; CheckMagicResist(mobile); bool enhancedSpellcast = SpellHelper.IsEnhancedSpell(Caster, mobile, EnhancedSpellbookType.Warlock, true, true); Boolean chargedSpellcast = SpellHelper.IsChargedSpell(Caster, mobile, true, Scroll != null); Boolean isTamedTarget = SpellHelper.IsTamedTarget(Caster, mobile); int spellHue = PlayerEnhancementPersistance.GetSpellHueFor(Caster, HueableSpell.MindBlast); if (enhancedSpellcast) { if (isTamedTarget) { damageBonus += SpellHelper.EnhancedSpellTamedCreatureBonus; } else { damageBonus += SpellHelper.EnhancedSpellBonus; } } if (chargedSpellcast) { if (isTamedTarget) { damageBonus += SpellHelper.ChargedSpellTamedCreatureBonus; } else { damageBonus += SpellHelper.ChargedSpellBonus; } from.FixedParticles(0x374A, 10, 30, 2038, spellHue, 0, EffectLayer.Head); target.FixedParticles(0x374A, 10, 30, 5038, spellHue, 0, EffectLayer.Head); target.PlaySound(0x213); } else { from.FixedParticles(0x374A, 10, 15, 2038, spellHue, 0, EffectLayer.Head); target.FixedParticles(0x374A, 10, 15, 5038, spellHue, 0, EffectLayer.Head); target.PlaySound(0x213); } damage *= GetDamageScalar(mobile, damageBonus); SpellHelper.Damage(this, Caster, mobile, damage); } FinishSequence(); }
public void Target(IPoint3D p) { if (!Caster.CanSee(p)) { Caster.SendLocalizedMessage(500237); // Target can not be seen. } else if (CheckSequence()) { SpellHelper.Turn(Caster, p); SpellHelper.GetSurfaceTop(ref p); List <Mobile> targets = new List <Mobile>(); Map map = Caster.Map; if (map != null) { IPooledEnumerable eable = map.GetMobilesInRange(new Point3D(p), Core.AOS ? 2 : 3); foreach (Mobile m in eable) { if (Caster.CanBeBeneficial(m, false)) { targets.Add(m); } } eable.Free(); } if (Core.AOS) { Party party = Party.Get(Caster); for (int i = 0; i < targets.Count; ++i) { Mobile m = targets[i]; if (m == Caster || (party != null && party.Contains(m))) { Caster.DoBeneficial(m); Spells.Second.ProtectionSpell.Toggle(Caster, m); } } } else { Effects.PlaySound(p, Caster.Map, 0x299); int val = (int)(Caster.Skills[SkillName.Magery].Value / 10.0 + 1); bool chargeUsed = false; for (int i = 0; i < targets.Count; ++i) { Mobile m = targets[i]; if (m.BeginAction(typeof(ProtectionSpell))) { if (m.Player) { Caster.DoBeneficial(m); } m.VirtualArmorMod += val; new InternalTimer(m, Caster, val).Start(); bool enhancedSpellcast = SpellHelper.IsEnhancedSpell(Caster, null, EnhancedSpellbookType.Wizard, false, false); if (enhancedSpellcast) { chargeUsed = true; } int spellHue = PlayerEnhancementPersistance.GetSpellHueFor(Caster, HueableSpell.ArchProtection); if (enhancedSpellcast) { m.FixedParticles(0x375A, 9, 40, 5027, spellHue, 0, EffectLayer.Waist); m.PlaySound(0x1F7); } else { m.FixedParticles(0x375A, 9, 20, 5027, spellHue, 0, EffectLayer.Waist); m.PlaySound(0x1F7); } } } if (chargeUsed) { if (Caster.FindItemOnLayer(Layer.OneHanded) is EnhancedSpellbook) { EnhancedSpellbook spellbook = Caster.FindItemOnLayer(Layer.OneHanded) as EnhancedSpellbook; if (spellbook != null) { spellbook.OnSpellCast(Caster); } } } } } FinishSequence(); }