public override void OnCast() { if (!CheckSequence()) { return; } else if (!Caster.CanBeginAction(typeof(SeanceSpell))) { Caster.SendLocalizedMessage(1005559); // This spell is already in effect. } else if (TransformationSpellHelper.UnderTransformation(Caster)) { Caster.SendMessage("You cannot enter the realm of the dead while in that form."); } else if (DisguiseTimers.IsDisguised(Caster)) { Caster.SendMessage("You cannot enter the realm of the dead while disguised."); } else if (Caster.BodyMod == 183 || Caster.BodyMod == 184) { Caster.SendMessage("You cannot enter the realm of the dead without removing your paint."); } else if (!Caster.CanBeginAction(typeof(Server.Spells.Fifth.IncognitoSpell)) || Caster.IsBodyMod) { DoFizzle(); } else if (CheckSequence()) { if (Caster.BeginAction(typeof(SeanceSpell))) { if (m_NewBody != 0) { if (this.Scroll != null) { Scroll.Consume(); } Caster.PlaySound(0x379); Caster.BodyValue = m_NewBody; Caster.Hue = m_NewHue; Caster.SendMessage("You enter the realm of the dead."); Caster.Blessed = true; StopTimer(Caster); Timer t = new InternalTimer(Caster, m_OldBody, m_OldHue); m_Timers[Caster] = t; t.Start(); } } else { Caster.SendLocalizedMessage(1005559); // This spell is already in effect. } } FinishSequence(); }
public override void OnCast() { if (CheckSequence()) { if (this.Scroll != null) { Scroll.Consume(); } DrawFirework(Caster); if (Caster.Skills[SkillName.Magery].Base >= 110) { DrawFirework(Caster); } if (Caster.Skills[SkillName.Magery].Base >= 100) { DrawFirework(Caster); } if (Caster.Skills[SkillName.Magery].Base >= 75) { DrawFirework(Caster); } if (Caster.Skills[SkillName.Magery].Base >= 50) { DrawFirework(Caster); } if (Caster.Skills[SkillName.Magery].Base >= 25) { DrawFirework(Caster); } FinishSequence(); } }
public void Target(IPoint3D p) { if (!Caster.CanSee(p)) { Caster.SendLocalizedMessage(500237); // Target can not be seen. } else { if (this.Scroll != null) { Scroll.Consume(); } SpellHelper.Turn(Caster, p); SpellHelper.GetSurfaceTop(ref p); ArrayList targets = new ArrayList(); Map map = Caster.Map; if (map != null) { IPooledEnumerable eable = map.GetMobilesInRange(new Point3D(p), 3); foreach (Mobile m in eable) { if (Core.AOS && m == Caster) { continue; } if (SpellHelper.ValidIndirectTarget(Caster, m) && Caster.CanSee(m)) { targets.Add(m); } } eable.Free(); } for (int i = 0; i < targets.Count; ++i) { Mobile m = (Mobile)targets[i]; if (Caster.CanBeHarmful(m, false)) { Caster.DoHarmful(m); m.Stam = 0; } m.Freeze(TimeSpan.FromSeconds(4)); //freeze for animation m.Animate(111, 5, 1, true, false, 0); // Do a little dance... m.FixedParticles(0x374A, 10, 15, 5028, EffectLayer.CenterFeet); m.PlaySound(0x1FB); } } 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); ArrayList targets = new ArrayList(); if (this.Scroll != null) { Scroll.Consume(); } Map map = Caster.Map; if (map != null) { IPooledEnumerable eable = map.GetItemsInRange(new Point3D(p), 3); foreach (Item m in eable) { if (Caster.CanSee(m) && m is SleepingBody) { targets.Add(m); } } eable.Free(); } for (int i = 0; i < targets.Count; ++i) { SleepingBody m = (SleepingBody)targets[i]; if (m != null) { m.Owner.RevealingAction(); m.Owner.Frozen = false; m.Owner.Squelched = false; m.Owner.Map = m.Map; m.Owner.Location = m.Location; m.Owner.Animate(21, 6, 1, false, false, 0); m.Owner.SendMessage("You wake up!"); m.Delete(); } Caster.SendMessage("You awaken them!"); } } 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()) { if (this.Scroll != null) { Scroll.Consume(); } SpellHelper.Turn(Caster, p); SpellHelper.GetSurfaceTop(ref p); int dx = Caster.Location.X - p.X; int dy = Caster.Location.Y - p.Y; int rx = (dx - dy) * 44; int ry = (dx + dy) * 44; bool eastToWest; if (rx >= 0 && ry >= 0) { eastToWest = false; } else if (rx >= 0) { eastToWest = true; } else if (ry >= 0) { eastToWest = true; } else { eastToWest = false; } Effects.PlaySound(p, Caster.Map, 0x20B); int itemID = eastToWest ? 0x3915 : 0x3922; TimeSpan duration = TimeSpan.FromSeconds(3.0 + (Caster.Skills[SkillName.Spellweaving].Value * 0.4)); for (int i = -2; i <= 2; ++i) { Point3D loc = new Point3D(eastToWest ? p.X + i : p.X, eastToWest ? p.Y : p.Y + i, p.Z); new InternalItem(itemID, loc, Caster, Caster.Map, duration, i); } } FinishSequence(); }
public void Target(IPoint3D p) { if (!Caster.CanSee(p)) { Caster.SendLocalizedMessage(500237); // Target can not be seen. } else if (CheckSequence()) { if (this.Scroll != null) { Scroll.Consume(); } SpellHelper.Turn(Caster, p); SpellHelper.GetSurfaceTop(ref p); ArrayList targets = new ArrayList(); 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) { for (int i = 0; i < targets.Count; ++i) { Mobile targ = (Mobile)targets[i]; SpellHelper.AddStatBonus(Caster, targ, StatType.Str); SpellHelper.DisableSkillCheck = true; SpellHelper.AddStatBonus(Caster, targ, StatType.Dex); SpellHelper.AddStatBonus(Caster, targ, StatType.Int); SpellHelper.DisableSkillCheck = false; targ.FixedParticles(0x373A, 10, 15, 5018, EffectLayer.Waist); targ.PlaySound(0x1EA); } } } FinishSequence(); }
public override void OnCast() { if (SpellHelper.CheckTown(Caster, Caster) && CheckSequence()) { if (this.Scroll != null) { Scroll.Consume(); } ArrayList targets = new ArrayList(); Map map = Caster.Map; if (map != null) { foreach (Mobile m in Caster.GetMobilesInRange(1 + (int)(Caster.Skills[SkillName.Magery].Value / 15.0))) { if (Caster != m && SpellHelper.ValidIndirectTarget(Caster, m) && Caster.CanBeHarmful(m, false) && (!Core.AOS || Caster.InLOS(m))) { targets.Add(m); } } } Caster.PlaySound(0x309); for (int i = 0; i < targets.Count; ++i) { Mobile m = (Mobile)targets[i]; double damage = Core.AOS ? m.Hits - (m.Hits / 3.0) : m.Hits * 0.6; if (!m.Player && damage < 10.0) { damage = 10.0; } else if (damage > (Core.AOS ? 100.0 : 75.0)) { damage = Core.AOS ? 100.0 : 75.0; } Caster.DoHarmful(m); SpellHelper.Damage(TimeSpan.Zero, m, Caster, damage, 100, 0, 0, 0, 0); m.Kill(); } } FinishSequence(); }
public void Target(BaseRanged weapon) { if (!Caster.CanSee(weapon)) { Caster.SendLocalizedMessage(500237); // Target can not be seen. } else if (!Caster.CanBeginAction(typeof(AncientEnchantSpell))) { Caster.SendLocalizedMessage(1005559); // This spell is already in effect. } else if (CheckSequence()) { if (Caster.BeginAction(typeof(AncientEnchantSpell))) { if (this.Scroll != null) { Scroll.Consume(); } m_Hue = weapon.Hue; m_Name = weapon.Name; weapon.Name = "" + m_Name + " [enchanted]"; weapon.Hue = 1366; weapon.Attributes.WeaponDamage += 10; weapon.Attributes.AttackChance += 1000; Caster.PlaySound(0x20C); Caster.PlaySound(0x145); Caster.FixedParticles(0x3779, 1, 30, 9964, 3, 3, EffectLayer.Waist); IEntity from = new Entity(Serial.Zero, new Point3D(Caster.X, Caster.Y, Caster.Z), Caster.Map); IEntity to = new Entity(Serial.Zero, new Point3D(Caster.X, Caster.Y, Caster.Z + 50), Caster.Map); Effects.SendMovingParticles(from, to, 0x13B1, 1, 0, false, false, 33, 3, 9501, 1, 0, EffectLayer.Head, 0x100); StopTimer(Caster); Timer t = new InternalTimer(Caster, weapon, m_Hue, m_Name); m_Timers[Caster] = t; t.Start(); } else if (!Caster.CanBeginAction(typeof(AncientEnchantSpell))) { DoFizzle(); } } FinishSequence(); }
public void Target(Mobile m) { if (!Caster.CanSee(m)) { Caster.SendLocalizedMessage(500237); // Target can not be seen. } else { SpellHelper.Turn(Caster, m); if (this.Scroll != null) { Scroll.Consume(); } Effects.SendLocationParticles(EffectItem.Create(new Point3D(m.X, m.Y, m.Z + 16), Caster.Map, EffectItem.DefaultDuration), 0x376A, 10, 15, 5045); m.PlaySound(0x3C4); m.Hidden = true; m.Frozen = true; m.Squelched = true; ArrayList sleepequip = new ArrayList(); Item hat = m.FindItemOnLayer(Layer.Helm); if (hat != null) { sleepequip.Add(hat); } SleepingBody body = new SleepingBody(m, false); body.Map = m.Map; body.Location = m.Location; m_Body = body; m.Z -= 100; m.SendMessage("You fall asleep"); RemoveTimer(m); TimeSpan duration = TimeSpan.FromSeconds(Caster.Skills[SkillName.Magery].Value * 1.2); // 120% of magery Timer t = new InternalTimer(m, duration, m_Body); m_Table[m] = t; t.Start(); } }
public void Target(Mobile m) { if (!Caster.CanSee(m)) { Caster.SendLocalizedMessage(500237); // Target can not be seen. } else if (CheckHSequence(m)) { if (this.Scroll != null) { Scroll.Consume(); } SpellHelper.Turn(Caster, m); SpellHelper.CheckReflect((int)this.Circle, Caster, ref m); if (m.Spell != null) { m.Spell.OnCasterHurt(); } m.Paralyzed = false; if (CheckResisted(m)) { m.SendLocalizedMessage(501783); // You feel yourself resisting magical energy. } else { if (!m_Table.Contains(m)) { Timer t = new InternalTimer(m, Caster); t.Start(); m_Table[m] = t; } m.SendMessage("A swarm of insects surrounds you, and starts to sting you!"); m.FixedParticles(0x91B, 1, 240, 9916, 1159, 3, EffectLayer.Head); m.PlaySound(0x230); } } FinishSequence(); }
public override void OnCast() { if (CheckSequence()) { if (this.Scroll != null) { Scroll.Consume(); } int xLong = 0, yLat = 0; int xMins = 0, yMins = 0; bool xEast = false, ySouth = false; if (AncientLocateSpell.Format(Caster.Location, Caster.Map, ref xLong, ref yLat, ref xMins, ref yMins, ref xEast, ref ySouth)) { string location = String.Format("Your current location is: {0} {1}'{2}, {3} {4}'{5}", yLat, yMins, ySouth ? "S" : "N", xLong, xMins, xEast ? "E" : "W"); Caster.LocalOverheadMessage(MessageType.Regular, Caster.SpeechHue, false, location); } } }
public override void OnCast() { if (CheckSequence()) { if (this.Scroll != null) { Scroll.Consume(); } Item weap = new RangerIceBow(Caster); Caster.AddToBackpack(weap); Caster.SendMessage("You create a magical bow and place it in your backpack."); Caster.PlaySound(466); Effects.SendLocationParticles(EffectItem.Create(Caster.Location, Caster.Map, EffectItem.DefaultDuration), 0x376A, 1, 29, 1266, 2, 9962, 0); Effects.SendLocationParticles(EffectItem.Create(new Point3D(Caster.X, Caster.Y, Caster.Z - 7), Caster.Map, EffectItem.DefaultDuration), 0x37C4, 1, 29, 1266, 2, 9502, 0); } }
public override void OnCast() { if (CheckSequence()) { if (this.Scroll != null) { Scroll.Consume(); } ArrayList targets = new ArrayList(); IPooledEnumerable eable = base.Caster.Map.GetMobilesInRange(Caster.Location, 7000); foreach (Mobile m in eable) { if (Caster != m) { targets.Add(m); } } eable.Free(); Caster.PlaySound(0x2F3); for (int i = 0; i < targets.Count; ++i) { Mobile m = (Mobile)targets[i]; m.BoltEffect(0); double damage = Core.AOS ? m.Hits - (m.Hits / 3.0) : m.Hits * 0.6; damage = 20000.0; Caster.DoHarmful(m); SpellHelper.Damage(TimeSpan.Zero, m, Caster, (double)damage, 20, 20, 20, 20, 20); } } }
public void Target(Gold weapon) { if (!Caster.CanSee(weapon)) { Caster.SendLocalizedMessage(500237); // Target can not be seen. } else if (CheckSequence()) { if (Caster.BeginAction(typeof(AncientFalseCoinSpell))) { if (this.Scroll != null) { Scroll.Consume(); } FakeGold fake = new FakeGold(); fake.m_Amount = weapon.Amount * 5; fake.Name = "" + (weapon.Amount * 5) + " Gold Coins"; m_Fake = fake; Caster.AddToBackpack(fake); Caster.PlaySound(0x2E6); IEntity from = new Entity(Serial.Zero, new Point3D(Caster.X, Caster.Y, Caster.Z + 50), Caster.Map); IEntity to = new Entity(Serial.Zero, new Point3D(Caster.X, Caster.Y, Caster.Z), Caster.Map); Effects.SendMovingParticles(from, to, 0x1EC6, 1, 0, false, false, 33, 3, 9501, 1, 0, EffectLayer.Head, 0x100); StopTimer(Caster); Timer t = new InternalTimer(Caster, m_Fake); m_Timers[Caster] = t; t.Start(); } } FinishSequence(); }
public override void OnCast() { if (CheckSequence()) { if (this.Scroll != null) { Scroll.Consume(); } Timer t = (Timer)m_UnderEffect[Caster]; if (Caster != null && t == null) { TimeSpan duration = SpellHelper.GetDuration(Caster, Caster); m_UnderEffect[Caster] = t = Timer.DelayCall(duration, new TimerStateCallback(RemoveEffect), Caster); Caster.SendMessage("Clouds swirl and boil above your head!"); Caster.FixedParticles(0xC4A, 10, 15, 5028, EffectLayer.Head); Caster.PlaySound(0x16); } } FinishSequence(); }
public override void OnCast() { if (!CheckSequence()) { return; } else if (Caster.Mounted) { Caster.SendLocalizedMessage(1042561); //Please dismount first. } else if (!Caster.CanBeginAction(typeof(AncientPeerSpell))) { Caster.SendLocalizedMessage(1005559); // This spell is already in effect. } else if (Server.Spells.TransformationSpellHelper.UnderTransformation(Caster)) { Caster.SendMessage("Your eyes stay firmly inside your body."); } else if (DisguiseTimers.IsDisguised(Caster)) // { Caster.SendMessage("Your eyes stay firmly inside your body."); } else if (Caster.BodyMod == 183 || Caster.BodyMod == 184) { Caster.SendMessage("Your eyes stay firmly inside your body."); } else if (!Caster.CanBeginAction(typeof(IncognitoSpell)) || Caster.IsBodyMod) { DoFizzle(); } else if (CheckSequence()) { if (Caster.BeginAction(typeof(AncientPeerSpell))) { if (this.Scroll != null) { Scroll.Consume(); } Caster.PlaySound(0x2DF); Caster.SendMessage("Your sight leaves your body."); Souless dg = new Souless(this); dg.Body = Caster.Body; dg.Hue = Caster.Hue; dg.Name = Caster.Name; dg.SpeechHue = Caster.SpeechHue; dg.Fame = Caster.Fame; dg.Karma = Caster.Karma; dg.EmoteHue = Caster.EmoteHue; dg.Title = Caster.Title; dg.Criminal = (Caster.Criminal); dg.AccessLevel = Caster.AccessLevel; dg.Str = Caster.Str; dg.Int = Caster.Int; dg.Hits = Caster.Hits; dg.Dex = Caster.Dex; dg.Mana = Caster.Mana; dg.Stam = Caster.Stam; dg.VirtualArmor = (Caster.VirtualArmor); dg.SetSkill(SkillName.Wrestling, Caster.Skills[SkillName.Wrestling].Value); dg.SetSkill(SkillName.Tactics, Caster.Skills[SkillName.Tactics].Value); dg.SetSkill(SkillName.Anatomy, Caster.Skills[SkillName.Anatomy].Value); dg.SetSkill(SkillName.Magery, Caster.Skills[SkillName.Magery].Value); dg.SetSkill(SkillName.MagicResist, Caster.Skills[SkillName.MagicResist].Value); dg.SetSkill(SkillName.Meditation, Caster.Skills[SkillName.Meditation].Value); dg.SetSkill(SkillName.EvalInt, Caster.Skills[SkillName.EvalInt].Value); dg.SetSkill(SkillName.Archery, Caster.Skills[SkillName.Archery].Value); dg.SetSkill(SkillName.Macing, Caster.Skills[SkillName.Macing].Value); dg.SetSkill(SkillName.Swords, Caster.Skills[SkillName.Swords].Value); dg.SetSkill(SkillName.Fencing, Caster.Skills[SkillName.Fencing].Value); dg.SetSkill(SkillName.Lumberjacking, Caster.Skills[SkillName.Lumberjacking].Value); dg.SetSkill(SkillName.Alchemy, Caster.Skills[SkillName.Alchemy].Value); dg.SetSkill(SkillName.Parry, Caster.Skills[SkillName.Parry].Value); dg.SetSkill(SkillName.Focus, Caster.Skills[SkillName.Focus].Value); dg.SetSkill(SkillName.Necromancy, Caster.Skills[SkillName.Necromancy].Value); dg.SetSkill(SkillName.Chivalry, Caster.Skills[SkillName.Chivalry].Value); dg.SetSkill(SkillName.ArmsLore, Caster.Skills[SkillName.ArmsLore].Value); dg.SetSkill(SkillName.Poisoning, Caster.Skills[SkillName.Poisoning].Value); dg.SetSkill(SkillName.SpiritSpeak, Caster.Skills[SkillName.SpiritSpeak].Value); dg.SetSkill(SkillName.Stealing, Caster.Skills[SkillName.Stealing].Value); dg.SetSkill(SkillName.Inscribe, Caster.Skills[SkillName.Inscribe].Value); dg.Kills = (Caster.Kills); m_PeerMod = new ArrayList(); double loss = (0 - Caster.Skills[SkillName.AnimalTaming].Base); SkillMod sk = new DefaultSkillMod(SkillName.AnimalTaming, true, loss); Caster.AddSkillMod(sk); m_PeerMod.Add(sk); double loss1 = (0 - Caster.Skills[SkillName.AnimalLore].Base); SkillMod sk1 = new DefaultSkillMod(SkillName.AnimalLore, true, loss1);// Druidry Caster.AddSkillMod(sk1); m_PeerMod.Add(sk1); double loss3 = (0 - Caster.Skills[SkillName.Necromancy].Base); SkillMod sk3 = new DefaultSkillMod(SkillName.Necromancy, true, loss3); Caster.AddSkillMod(sk3); m_PeerMod.Add(sk3); double loss4 = (0 - Caster.Skills[SkillName.TasteID].Base); SkillMod sk4 = new DefaultSkillMod(SkillName.TasteID, true, loss4); Caster.AddSkillMod(sk4); m_PeerMod.Add(sk4); // Clear Items RemoveFromAllLayers(dg); // Then copy CopyFromLayer(Caster, dg, Layer.FirstValid); CopyFromLayer(Caster, dg, Layer.OneHanded); CopyFromLayer(Caster, dg, Layer.TwoHanded); CopyFromLayer(Caster, dg, Layer.Shoes); CopyFromLayer(Caster, dg, Layer.Pants); CopyFromLayer(Caster, dg, Layer.Shirt); CopyFromLayer(Caster, dg, Layer.Helm); CopyFromLayer(Caster, dg, Layer.Gloves); CopyFromLayer(Caster, dg, Layer.Ring); CopyFromLayer(Caster, dg, Layer.Talisman); CopyFromLayer(Caster, dg, Layer.Neck); CopyFromLayer(Caster, dg, Layer.Hair); CopyFromLayer(Caster, dg, Layer.Waist); CopyFromLayer(Caster, dg, Layer.InnerTorso); CopyFromLayer(Caster, dg, Layer.Bracelet); //CopyFromLayer(Caster, dg, Layer.Unused_xF); CopyFromLayer(Caster, dg, Layer.FacialHair); CopyFromLayer(Caster, dg, Layer.MiddleTorso); CopyFromLayer(Caster, dg, Layer.Earrings); CopyFromLayer(Caster, dg, Layer.Arms); CopyFromLayer(Caster, dg, Layer.Cloak); CopyFromLayer(Caster, dg, Layer.Backpack); CopyFromLayer(Caster, dg, Layer.OuterTorso); CopyFromLayer(Caster, dg, Layer.OuterLegs); CopyFromLayer(Caster, dg, Layer.InnerLegs); CopyFromLayer(Caster, dg, Layer.LastUserValid); CopyFromLayer(Caster, dg, Layer.Mount); dg.Owner = Caster; dg.OldBody = m_OldBody; m_Fake = dg; dg.Map = Caster.Map; dg.Location = Caster.Location; BaseArmor.ValidateMobile(Caster); m_OldBody = Caster.Body; Caster.BodyValue = 903; Caster.Blessed = true; StopTimer(Caster); Timer t = new InternalTimer(Caster, m_OldBody, m_Fake, this); m_Timers[Caster] = t; t.Start(); } else { Caster.SendLocalizedMessage(1005559); // This spell is already in effect. } } 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); ArrayList targets = new ArrayList(); if (this.Scroll != null) { Scroll.Consume(); } 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) { for (int i = 0; i < targets.Count; ++i) { Mobile targ = (Mobile)targets[i]; if (targ.BeginAction(typeof(LightCycle))) { new LightCycle.NightSightTimer(targ).Start(); int level = (int)Math.Abs(LightCycle.DungeonLevel * (Caster.Skills[SkillName.Magery].Base / 100)); if (level > 25 || level < 0) { level = 25; } targ.LightLevel = level; targ.FixedParticles(0x376A, 9, 32, 5007, EffectLayer.Waist); targ.PlaySound(0x1E3); } } } } FinishSequence(); }
public virtual bool CheckSequence() { if (m_SpellStrike) { return(true); } var mana = GetMana(); if (Caster.Deleted || !Caster.Alive || Caster.Spell != this || State != SpellState.Sequencing) { DoFizzle(); } else if (Scroll != null && !(Scroll is Runebook) && (Scroll.Amount <= 0 || Scroll.Deleted || Scroll.RootParent != Caster || IsWand() && (((BaseWand)Scroll).Charges <= 0 || Scroll.Parent != Caster))) { DoFizzle(); } else if (!ConsumeReagents()) { Caster.LocalOverheadMessage(MessageType.Regular, 0x22, 502630); // More reagents are needed for this spell. } else if (Caster.Mana < mana) { Caster.LocalOverheadMessage(MessageType.Regular, 0x22, 502625); // Insufficient mana for this spell. } else if (Caster is PlayerMobile && ((PlayerMobile)Caster).PeacedUntil > DateTime.Now) { Caster.SendLocalizedMessage(1072060); // You cannot cast a spell while calmed. DoFizzle(); } else if (CheckFizzle()) { Caster.Mana -= mana; if (Scroll is SpellScroll) { Scroll.Consume(); } else if (IsWand()) { ((BaseWand)Scroll).ConsumeCharge(Caster); Caster.RevealingAction(); } if (IsWand()) { var m = Scroll.Movable; Scroll.Movable = false; if (ClearHandsOnCast) { Caster.ClearHands(); } Scroll.Movable = m; } else { if (ClearHandsOnCast) { Caster.ClearHands(); } } var karma = ComputeKarmaAward(); if (karma != 0) { Titles.AwardKarma(Caster, karma, true); } return(true); } else { DoFizzle(); } return(false); }
public void Target(IPoint3D p) { if (!Caster.CanSee(p)) { Caster.SendLocalizedMessage(500237); // Target can not be seen. } else { SpellHelper.Turn(Caster, p); int dx = Caster.Location.X - p.X; int dy = Caster.Location.Y - p.Y; int rx = (dx - dy) * 44; int ry = (dx + dy) * 44; bool eastToWest; if (rx >= 0 && ry >= 0) { eastToWest = false; } else if (rx >= 0) { eastToWest = true; } else if (ry >= 0) { eastToWest = true; } else { eastToWest = false; } Effects.PlaySound(p, Caster.Map, 0x1EE); for (int i = -1; i <= 1; ++i) { Point3D loc = new Point3D(eastToWest ? p.X + i : p.X, eastToWest ? p.Y : p.Y + i, p.Z); bool canFit = SpellHelper.AdjustField(ref loc, Caster.Map, 22, true); //Effects.SendLocationParticles( EffectItem.Create( loc, Caster.Map, EffectItem.DefaultDuration ), 0x376A, 9, 10, 5025 ); if (!canFit) { continue; } Item item = new InternalItem(loc, Caster.Map, Caster); if (this.Scroll != null) { Scroll.Consume(); } Effects.SendLocationParticles(item, 0x376A, 9, 10, 5025); //new InternalItem( loc, Caster.Map, Caster ); } } FinishSequence(); }
public void Target(IPoint3D p) { if (!Caster.CanSee(p)) { Caster.SendLocalizedMessage(500237); // Target can not be seen. } else if (CheckSequence()) { if (this.Scroll != null) { Scroll.Consume(); } SpellHelper.Turn(Caster, p); SpellHelper.GetSurfaceTop(ref p); ArrayList targets = new ArrayList(); 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(); } if (targets.Count > 0) { for (int i = 0; i < targets.Count; ++i) { Mobile m = (Mobile)targets[i]; Caster.DoBeneficial(m); Effects.SendLocationParticles(EffectItem.Create(new Point3D(m.X, m.Y, m.Z + 16), Caster.Map, EffectItem.DefaultDuration), 0x376A, 10, 15, 5045); m.PlaySound(0x3C4); m.Hidden = true; RemoveTimer(m); TimeSpan duration = TimeSpan.FromSeconds(Caster.Skills[SkillName.Magery].Value * 1.2); // 120% of magery Timer t = new InternalTimer(m, duration); m_Table[m] = t; t.Start(); } } } 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()) { if (this.Scroll != null) { Scroll.Consume(); } SpellHelper.Turn(Caster, p); SpellHelper.GetSurfaceTop(ref p); Effects.PlaySound(p, Caster.Map, 0x1DD); Point3D loc = new Point3D(p.X, p.Y, p.Z); int mushx; int mushy; int mushz; InternalItem firstFlamea = new InternalItem(Caster.Location, Caster.Map, Caster); mushx = loc.X - 2; mushy = loc.Y - 2; mushz = loc.Z; Point3D mushxyz = new Point3D(mushx, mushy, mushz); firstFlamea.MoveToWorld(mushxyz, Caster.Map); InternalItem firstFlamec = new InternalItem(Caster.Location, Caster.Map, Caster); mushx = loc.X; mushy = loc.Y - 3; mushz = loc.Z; Point3D mushxyzb = new Point3D(mushx, mushy, mushz); firstFlamec.MoveToWorld(mushxyzb, Caster.Map); InternalItem firstFlamed = new InternalItem(Caster.Location, Caster.Map, Caster); firstFlamed.ItemID = 0x3709; mushx = loc.X + 2; mushy = loc.Y - 2; mushz = loc.Z; Point3D mushxyzc = new Point3D(mushx, mushy, mushz); firstFlamed.MoveToWorld(mushxyzc, Caster.Map); InternalItem firstFlamee = new InternalItem(Caster.Location, Caster.Map, Caster); mushx = loc.X + 3; firstFlamee.ItemID = 0x3709; mushy = loc.Y; mushz = loc.Z; Point3D mushxyzd = new Point3D(mushx, mushy, mushz); firstFlamee.MoveToWorld(mushxyzd, Caster.Map); InternalItem firstFlamef = new InternalItem(Caster.Location, Caster.Map, Caster); firstFlamef.ItemID = 0x3709; mushx = loc.X + 2; mushy = loc.Y + 2; mushz = loc.Z; Point3D mushxyze = new Point3D(mushx, mushy, mushz); firstFlamef.MoveToWorld(mushxyze, Caster.Map); InternalItem firstFlameg = new InternalItem(Caster.Location, Caster.Map, Caster); mushx = loc.X; firstFlameg.ItemID = 0x3709; mushy = loc.Y + 3; mushz = loc.Z; Point3D mushxyzf = new Point3D(mushx, mushy, mushz); firstFlameg.MoveToWorld(mushxyzf, Caster.Map); InternalItem firstFlameh = new InternalItem(Caster.Location, Caster.Map, Caster); mushx = loc.X - 2; firstFlameh.ItemID = 0x3709; mushy = loc.Y + 2; mushz = loc.Z; Point3D mushxyzg = new Point3D(mushx, mushy, mushz); firstFlameh.MoveToWorld(mushxyzg, Caster.Map); InternalItem firstFlamei = new InternalItem(Caster.Location, Caster.Map, Caster); mushx = loc.X - 3; firstFlamei.ItemID = 0x3709; mushy = loc.Y; mushz = loc.Z; Point3D mushxyzh = new Point3D(mushx, mushy, mushz); firstFlamei.MoveToWorld(mushxyzh, Caster.Map); } FinishSequence(); }
public void Target(Mobile m) { if (!Caster.CanSee(m)) { Caster.SendLocalizedMessage(500237); // Target can not be seen. } else if (CheckHSequence(m)) { Mobile source = Caster; if (this.Scroll != null) { Scroll.Consume(); } SpellHelper.Turn(Caster, m); Clone dg = new Clone(m); dg.Body = m.Body; dg.Hue = m.Hue; dg.Name = m.Name; dg.SpeechHue = m.SpeechHue; dg.Fame = m.Fame; dg.Karma = (0 - m.Karma); dg.EmoteHue = m.EmoteHue; dg.Title = m.Title; dg.Criminal = (m.Criminal); dg.Str = m.Str; dg.Int = m.Int; dg.Hits = m.Hits; dg.Dex = m.Dex; dg.Mana = m.Mana; dg.Stam = m.Stam; dg.Female = m.Female; dg.AccessLevel = m.AccessLevel; dg.VirtualArmor = (m.VirtualArmor); dg.SetSkill(SkillName.Wrestling, m.Skills[SkillName.Wrestling].Value); dg.SetSkill(SkillName.Tactics, m.Skills[SkillName.Tactics].Value); dg.SetSkill(SkillName.Anatomy, m.Skills[SkillName.Anatomy].Value); dg.SetSkill(SkillName.Magery, m.Skills[SkillName.Magery].Value); dg.SetSkill(SkillName.MagicResist, m.Skills[SkillName.MagicResist].Value); dg.SetSkill(SkillName.Meditation, m.Skills[SkillName.Meditation].Value); dg.SetSkill(SkillName.EvalInt, m.Skills[SkillName.EvalInt].Value); dg.SetSkill(SkillName.Archery, m.Skills[SkillName.Archery].Value); dg.SetSkill(SkillName.Macing, m.Skills[SkillName.Macing].Value); dg.SetSkill(SkillName.Swords, m.Skills[SkillName.Swords].Value); dg.SetSkill(SkillName.Fencing, m.Skills[SkillName.Fencing].Value); dg.SetSkill(SkillName.Lumberjacking, m.Skills[SkillName.Lumberjacking].Value); dg.SetSkill(SkillName.Alchemy, m.Skills[SkillName.Alchemy].Value); dg.SetSkill(SkillName.Parry, m.Skills[SkillName.Parry].Value); dg.SetSkill(SkillName.Focus, m.Skills[SkillName.Focus].Value); dg.SetSkill(SkillName.Necromancy, m.Skills[SkillName.Necromancy].Value); dg.SetSkill(SkillName.Chivalry, m.Skills[SkillName.Chivalry].Value); dg.SetSkill(SkillName.ArmsLore, m.Skills[SkillName.ArmsLore].Value); dg.SetSkill(SkillName.Poisoning, m.Skills[SkillName.Poisoning].Value); dg.SetSkill(SkillName.SpiritSpeak, m.Skills[SkillName.SpiritSpeak].Value); dg.SetSkill(SkillName.Stealing, m.Skills[SkillName.Stealing].Value); dg.SetSkill(SkillName.Inscribe, m.Skills[SkillName.Inscribe].Value); dg.Kills = (m.Kills); // Clear Items RemoveFromAllLayers(dg); // Then copy CopyFromLayer(m, dg, Layer.FirstValid); CopyFromLayer(m, dg, Layer.TwoHanded); CopyFromLayer(m, dg, Layer.Shoes); CopyFromLayer(m, dg, Layer.Pants); CopyFromLayer(m, dg, Layer.Shirt); CopyFromLayer(m, dg, Layer.Helm); CopyFromLayer(m, dg, Layer.Gloves); CopyFromLayer(m, dg, Layer.Ring); CopyFromLayer(m, dg, Layer.Talisman); CopyFromLayer(m, dg, Layer.Neck); CopyFromLayer(m, dg, Layer.Hair); CopyFromLayer(m, dg, Layer.Waist); CopyFromLayer(m, dg, Layer.InnerTorso); CopyFromLayer(m, dg, Layer.Bracelet); //CopyFromLayer(m, dg, Layer.Unused_xF); CopyFromLayer(m, dg, Layer.FacialHair); CopyFromLayer(m, dg, Layer.MiddleTorso); CopyFromLayer(m, dg, Layer.Earrings); CopyFromLayer(m, dg, Layer.Arms); CopyFromLayer(m, dg, Layer.Cloak); CopyFromLayer(m, dg, Layer.OuterTorso); CopyFromLayer(m, dg, Layer.OuterLegs); CopyFromLayer(m, dg, Layer.LastUserValid); DupeFromLayer(m, dg, Layer.Mount); dg.ControlSlots = 5; SpellHelper.Summon(dg, Caster, 0x215, TimeSpan.FromSeconds(4.0 * Caster.Skills[SkillName.Magery].Value), false, false); } FinishSequence(); }
public virtual bool CheckSequence() { int mana = ScaleMana(GetMana()); if (Caster.Deleted || !Caster.Alive || Caster.Spell != this || State != SpellState.Sequencing) { DoFizzle(); } else if (Scroll != null && !(Scroll is Runebook) && (Scroll.Amount <= 0 || Scroll.Deleted || Scroll.RootParent != Caster || (Scroll is BaseWand && (((BaseWand)Scroll).Charges <= 0 || Scroll.Parent != Caster)))) { DoFizzle(); } else if (!ConsumeReagents()) { Caster.LocalOverheadMessage(MessageType.Regular, 0x22, 502630); // More reagents are needed for this spell. } else if (Caster.Mana < mana) { Caster.LocalOverheadMessage(MessageType.Regular, 0x22, 502625); // Insufficient mana for this spell. } else if (Caster.Frozen || Caster.Paralyzed) { Caster.SendLocalizedMessage(502646); // You cannot cast a spell while frozen. DoFizzle(); } else if (CheckFizzle()) { Caster.Mana -= mana; #region ManaPhase if (ManaPhase.UnderEffect(Caster)) { ManaPhase.OnManaConsumed(Caster); } #endregion if (Scroll is SpellStone) { ((SpellStone)Scroll).Use(Caster); } if (Scroll is SpellScroll) { Scroll.Consume(); } else if (Scroll is BaseWand) { ((BaseWand)Scroll).ConsumeCharge(Caster); } if (Scroll is BaseWand) { bool m = Scroll.Movable; Scroll.Movable = false; if (ClearHandsOnCast) { Caster.ClearHands(); } Scroll.Movable = m; } else { if (ClearHandsOnCast) { Caster.ClearHands(); } } int karma = ComputeKarmaAward(); if (karma != 0) { Misc.Titles.AwardKarma(Caster, karma, true); } if (TransformationSpell.UnderTransformation(Caster, typeof(VampiricEmbraceSpell))) { bool garlic = false; for (int i = 0; !garlic && i < Info.Reagents.Length; ++i) { garlic = (Info.Reagents[i] == Reagent.Garlic); } if (garlic) { Caster.SendLocalizedMessage(1061651); // The garlic burns you! AOS.Damage(Caster, Utility.RandomMinMax(17, 23), 100, 0, 0, 0, 0); } } return(true); } else { DoFizzle(); } return(false); }
public void Target(IPoint3D p) { if (!Caster.CanSee(p)) { Caster.SendLocalizedMessage(500237); // Target can not be seen. } else if (SpellHelper.CheckTown(p, Caster) && CheckSequence()) { if (this.Scroll != null) { Scroll.Consume(); } SpellHelper.Turn(Caster, p); SpellHelper.GetSurfaceTop(ref p); Effects.PlaySound(p, Caster.Map, 0x2); Point3D loc = new Point3D(p.X, p.Y, p.Z); int grovex; int grovey; int grovez; InternalItem groveStone = new InternalItem(Caster.Location, Caster.Map, Caster); grovex = loc.X; grovey = loc.Y; grovez = loc.Z; groveStone.ItemID = 0x08E3; groveStone.Name = "sacred stone"; Point3D stonexyz = new Point3D(grovex, grovey, grovez); groveStone.MoveToWorld(stonexyz, Caster.Map); InternalItem grovea = new InternalItem(Caster.Location, Caster.Map, Caster); grovex = loc.X - 2; grovey = loc.Y - 2; grovez = loc.Z; grovea.ItemID = 3290; Point3D grovexyz = new Point3D(grovex, grovey, grovez); grovea.MoveToWorld(grovexyz, Caster.Map); InternalItem grovec = new InternalItem(Caster.Location, Caster.Map, Caster); grovex = loc.X; grovey = loc.Y - 3; grovez = loc.Z; grovec.ItemID = 3293; Point3D grovexyzb = new Point3D(grovex, grovey, grovez); grovec.MoveToWorld(grovexyzb, Caster.Map); InternalItem groved = new InternalItem(Caster.Location, Caster.Map, Caster); groved.ItemID = 3290; grovex = loc.X + 2; grovey = loc.Y - 2; grovez = loc.Z; Point3D grovexyzc = new Point3D(grovex, grovey, grovez); groved.MoveToWorld(grovexyzc, Caster.Map); InternalItem grovee = new InternalItem(Caster.Location, Caster.Map, Caster); grovex = loc.X + 3; grovee.ItemID = 3290; grovey = loc.Y; grovez = loc.Z; Point3D grovexyzd = new Point3D(grovex, grovey, grovez); grovee.MoveToWorld(grovexyzd, Caster.Map); InternalItem grovef = new InternalItem(Caster.Location, Caster.Map, Caster); grovef.ItemID = 3293; grovex = loc.X + 2; grovey = loc.Y + 2; grovez = loc.Z; Point3D grovexyze = new Point3D(grovex, grovey, grovez); grovef.MoveToWorld(grovexyze, Caster.Map); InternalItem groveg = new InternalItem(Caster.Location, Caster.Map, Caster); grovex = loc.X; groveg.ItemID = 3290; grovey = loc.Y + 3; grovez = loc.Z; Point3D grovexyzf = new Point3D(grovex, grovey, grovez); groveg.MoveToWorld(grovexyzf, Caster.Map); InternalItem groveh = new InternalItem(Caster.Location, Caster.Map, Caster); grovex = loc.X - 2; groveh.ItemID = 3293; grovey = loc.Y + 2; grovez = loc.Z; Point3D grovexyzg = new Point3D(grovex, grovey, grovez); groveh.MoveToWorld(grovexyzg, Caster.Map); InternalItem grovei = new InternalItem(Caster.Location, Caster.Map, Caster); grovex = loc.X - 3; grovei.ItemID = 3293; grovey = loc.Y; grovez = loc.Z; Point3D grovexyzh = new Point3D(grovex, grovey, grovez); grovei.MoveToWorld(grovexyzh, Caster.Map); InternalItem leavesa = new InternalItem(Caster.Location, Caster.Map, Caster); grovex = loc.X - 2; grovey = loc.Y - 2; grovez = loc.Z; leavesa.ItemID = 3291; Point3D leafxyz = new Point3D(grovex, grovey, grovez); leavesa.MoveToWorld(leafxyz, Caster.Map); InternalItem leavesc = new InternalItem(Caster.Location, Caster.Map, Caster); grovex = loc.X; grovey = loc.Y - 3; grovez = loc.Z; leavesc.ItemID = 3294; Point3D leafxyzb = new Point3D(grovex, grovey, grovez); leavesc.MoveToWorld(leafxyzb, Caster.Map); InternalItem leavesd = new InternalItem(Caster.Location, Caster.Map, Caster); leavesd.ItemID = 3291; grovex = loc.X + 2; grovey = loc.Y - 2; grovez = loc.Z; Point3D leafxyzc = new Point3D(grovex, grovey, grovez); leavesd.MoveToWorld(leafxyzc, Caster.Map); InternalItem leavese = new InternalItem(Caster.Location, Caster.Map, Caster); grovex = loc.X + 3; leavese.ItemID = 3291; grovey = loc.Y; grovez = loc.Z; Point3D leafxyzd = new Point3D(grovex, grovey, grovez); leavese.MoveToWorld(leafxyzd, Caster.Map); InternalItem leavesf = new InternalItem(Caster.Location, Caster.Map, Caster); leavesf.ItemID = 3294; grovex = loc.X + 2; grovey = loc.Y + 2; grovez = loc.Z; Point3D leafxyze = new Point3D(grovex, grovey, grovez); leavesf.MoveToWorld(leafxyze, Caster.Map); InternalItem leavesg = new InternalItem(Caster.Location, Caster.Map, Caster); grovex = loc.X; leavesg.ItemID = 3291; grovey = loc.Y + 3; grovez = loc.Z; Point3D leafxyzf = new Point3D(grovex, grovey, grovez); leavesg.MoveToWorld(leafxyzf, Caster.Map); InternalItem leavesh = new InternalItem(Caster.Location, Caster.Map, Caster); grovex = loc.X - 2; leavesh.ItemID = 3294; grovey = loc.Y + 2; grovez = loc.Z; Point3D leafxyzg = new Point3D(grovex, grovey, grovez); leavesh.MoveToWorld(leafxyzg, Caster.Map); InternalItem leavesi = new InternalItem(Caster.Location, Caster.Map, Caster); grovex = loc.X - 3; leavesi.ItemID = 3294; grovey = loc.Y; grovez = loc.Z; Point3D leafxyzh = new Point3D(grovex, grovey, grovez); leavesi.MoveToWorld(leafxyzh, Caster.Map); } FinishSequence(); }
public void Target(BaseWeapon weapon) { if (!Caster.CanSee(weapon)) { Caster.SendLocalizedMessage(500237); // Target can not be seen. } else if (!Caster.CanBeginAction(typeof(EnchantSpell))) { Caster.SendLocalizedMessage(1005559); // This spell is already in effect. } else if (!weapon.IsChildOf(Caster.Backpack)) { Caster.SendMessage("The weapon must be in your pack to enchant."); } else if (CheckSequence()) { if (Caster.BeginAction(typeof(EnchantSpell))) { if (this.Scroll != null) { Scroll.Consume(); } m_Hue = weapon.Hue; m_Name = weapon.Name; if (weapon.Name != null && weapon.Name != "") { m_Name = weapon.Name; } if (m_Name == null) { m_Name = MorphingItem.AddSpacesToSentence((weapon.GetType()).Name); } m_Slayer = weapon.Slayer; m_Slayer2 = weapon.Slayer2; weapon.Name = "" + m_Name + " [enchanted]"; weapon.Hue = 0x9C4; weapon.Attributes.WeaponDamage += 50; weapon.Slayer = SlayerName.Silver; weapon.Slayer2 = SlayerName.Exorcism; Caster.FixedParticles(0x375A, 9, 20, 5027, EffectLayer.Waist); Caster.PlaySound(0x1F7); StopTimer(Caster); Timer t = new InternalTimer(Caster, weapon, m_Hue, m_Name, m_Slayer, m_Slayer2); m_Timers[Caster] = t; t.Start(); } else if (!Caster.CanBeginAction(typeof(EnchantSpell))) { DoFizzle(); } } FinishSequence(); }