Esempio n. 1
0
        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();
        }
Esempio n. 2
0
        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();
            }
        }
Esempio n. 3
0
        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();
        }
Esempio n. 5
0
        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();
        }
Esempio n. 7
0
        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();
        }
Esempio n. 9
0
        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();
            }
        }
Esempio n. 10
0
        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();
        }
Esempio n. 11
0
        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);
                }
            }
        }
Esempio n. 12
0
        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);
                }
            }
        }
Esempio n. 14
0
        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();
        }
Esempio n. 15
0
        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();
        }
Esempio n. 16
0
        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();
        }
Esempio n. 17
0
        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();
        }
Esempio n. 18
0
        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);
        }
Esempio n. 19
0
        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();
        }
Esempio n. 21
0
        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();
        }
Esempio n. 22
0
        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();
        }
Esempio n. 23
0
        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();
        }
Esempio n. 25
0
        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();
        }