public MageGemTarget(Item mgem, TeiravonMobile from) : base(-1, false, TargetFlags.None)
 {
     m_Player = from;
     m_MGem   = (MageStaffGem)mgem;
     if (from.IsAquamancer())
     {
         MageClass = 1;
     }
     else if (from.IsAeromancer())
     {
         MageClass = 2;
     }
     else if (from.IsPyromancer())
     {
         MageClass = 3;
     }
     else if (from.IsNecromancer())
     {
         MageClass = 4;
     }
     else if (from.IsGeomancer())
     {
         MageClass = 5;
     }
 }
Example #2
0
        public MageSpell2Target(TeiravonMobile from) : base(-1, false, TargetFlags.Harmful)
        {
            if (from.IsGeomancer())
            {
                MageClass = 1;
            }
            else if (from.IsPyromancer())
            {
                MageClass = 2;
            }
            else if (from.IsAeromancer())
            {
                MageClass = 3;
            }
            else if (from.IsAquamancer())
            {
                MageClass = 4;
            }
            //else if (from.IsNecromancer())
            //	MageClass = 5;

            switch (MageClass)
            {
            case 1:
                phys = 100; fire = cold = pois = nrgy = 0;
                break;

            case 2:
                fire = 100; phys = cold = pois = nrgy = 0;
                break;

            case 3:
                nrgy = 100; phys = cold = pois = fire = 0;
                break;

            case 4:
                cold = 100; phys = fire = pois = nrgy = 0;
                break;
                //case 5:
                //	pois = 100; phys = fire = cold = nrgy = 0;
                //  effecthue = 2883;
                //	break;
            }
        }
        public void Target(IPoint3D p)
        {
            if (!Caster.CanSee(p))
            {
                Caster.SendLocalizedMessage(500237);                   // Target can not be seen.
            }
            else if (SpellHelper.CheckTown(p, Caster) && CheckSequence())
            {
                SpellHelper.Turn(Caster, p);

                if (p is Item)
                {
                    p = ((Item)p).GetWorldLocation();
                }

                ArrayList targets = new ArrayList();
                double    damage;
                Map       map            = Caster.Map;
                bool      playerVsPlayer = false;
                if (Caster is TeiravonMobile)
                {
                    TeiravonMobile tav = Caster as TeiravonMobile;

                    if (tav.IsAeromancer())
                    {
                        Elemental = Element.Air;
                        damage    = GetNewAosDamage(2, 2, 10, playerVsPlayer);
                        DoMeteorFall(Caster, p, Elemental, damage);
                        FinishSequence();
                        return;
                    }
                    else if (tav.IsAquamancer())
                    {
                        Elemental = Element.Water;
                        damage    = GetNewAosDamage(1, 1, 6, playerVsPlayer);
                        DoMeteorFall(Caster, p, Elemental, damage);
                        FinishSequence();
                        return;
                    }
                    else if (tav.IsGeomancer())
                    {
                        Elemental = Element.Earth;
                        damage    = GetNewAosDamage(2, 1, 4, playerVsPlayer);
                        DoMeteorFall(Caster, p, Elemental, damage);
                        FinishSequence();
                        return;
                    }
                    else if (tav.IsPyromancer())
                    {
                        Elemental = Element.Fire;

                        damage = GetNewAosDamage(12, 1, 5, playerVsPlayer);
                        DoMeteorFall(Caster, p, Elemental, damage);
                        FinishSequence();
                        return;
                    }
                }

                if (map != null)
                {
                    IPooledEnumerable eable = map.GetMobilesInRange(new Point3D(p), 2);

                    foreach (Mobile m in eable)
                    {
                        if (Caster != m && SpellHelper.ValidIndirectTarget(Caster, m) && Caster.CanBeHarmful(m, false))
                        {
                            targets.Add(m);

                            if (m.Player)
                            {
                                playerVsPlayer = true;
                            }
                        }
                    }

                    eable.Free();
                }



                if (Core.AOS)
                {
                    damage = GetNewAosDamage(48, 1, 5, Caster.Player && playerVsPlayer);
                }
                else
                {
                    damage = Utility.Random(27, 22);
                }

                if (targets.Count > 0)
                {
                    Effects.PlaySound(p, Caster.Map, 0x160);

                    if (Core.AOS && targets.Count > 1)
                    {
                        damage = (damage * 2) / targets.Count;
                    }
                    else if (!Core.AOS)
                    {
                        damage /= targets.Count;
                    }

                    for (int i = 0; i < targets.Count; ++i)
                    {
                        Mobile m = (Mobile)targets[i];

                        double toDeal = damage;

                        if (!Core.AOS && CheckResisted(m))
                        {
                            toDeal *= 0.5;

                            m.SendLocalizedMessage(501783);                               // You feel yourself resisting magical energy.
                        }

                        Caster.DoHarmful(m);
                        SpellHelper.Damage(this, m, toDeal, 0, 100, 0, 0, 0);

                        Caster.MovingParticles(m, 0x36D4, 7, 0, false, true, 9501, 1, 0, 0x100);
                    }
                }
            }

            FinishSequence();
        }
Example #4
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;


                SpellHelper.Turn(source, m);

                SpellHelper.CheckReflect((int)this.Circle, ref source, ref m);

                double damage;

                if (Caster is TeiravonMobile)
                {
                    TeiravonMobile tav = Caster as TeiravonMobile;

                    if (tav.IsAeromancer())
                    {
                        damage = GetNewAosDamage(19, 1, 5, Caster.Player && m.Player);
                        source.MovingParticles(m, 0x3728, 12, 0, false, false, 9502, 4019, 0x160);
                        source.PlaySound(0x5C7);

                        SpellHelper.Damage(this, m, damage, 0, 0, 50, 0, 50);
                        new Gust(tav, m).MoveToWorld(m.Location, m.Map);
                        FinishSequence();
                        return;
                    }
                    if (tav.IsGeomancer())
                    {
                        damage = GetNewAosDamage(21, 1, 5, Caster.Player && m.Player);
                        int randRock = Utility.RandomList(0x1364, 0x1365, 0x1366, 0x1366);
                        source.MovingParticles(m, randRock, 12, 0, false, false, 0x1E00, 0x1E00, 0x13B);
                        source.PlaySound(0x5BF);

                        SpellHelper.GeoDamage(this, m, damage);
                        m.Freeze(TimeSpan.FromSeconds(1));
                        FinishSequence();
                        return;
                    }

                    if (tav.IsAquamancer())
                    {
                        XmlData x = (XmlData)XmlAttach.FindAttachmentOnMobile(Caster, typeof(XmlData), "Cryomancer");
                        if (x != null && CheckSequence())
                        {
                            damage = GetNewAosDamage(20, 1, 5, Caster.Player && m.Player);
                            source.MovingParticles(m, 0x3678, 12, 5, false, false, 0x377a, 0x377a, 0x390);
                            source.PlaySound(0x390);

                            SpellHelper.Damage(this, m, damage, 0, 0, 100, 0, 0);
                            FinishSequence();
                            m.Send(SpeedMode.Walk);


                            TavChill chill = XmlAttach.FindAttachmentOnMobile(m, typeof(TavChill), "chill") as TavChill;

                            if (chill != null)
                            {
                                chill.Expiration = TimeSpan.FromSeconds(3);
                                chill.DoChill();
                            }
                            else
                            {
                                TavChill newchill = new TavChill(5);
                                newchill.Name = "chill";
                                XmlAttach.AttachTo(m, newchill);
                            }
                            return;
                        }
                        else
                        {
                            damage = GetNewAosDamage(25, 1, 5, Caster.Player && m.Player);
                            source.MovingParticles(m, 0x34FF, 12, 5, false, false, 0x377a, 0x377a, 0x027);
                            source.PlaySound(0x026);

                            SpellHelper.Damage(this, m, damage, 0, 0, 100, 0, 0);
                            FinishSequence();
                            return;
                        }
                    }

                    if (tav.IsPyromancer())
                    {
                        damage = GetNewAosDamage(5, 1, 5, Caster.Player && m.Player);
                        source.MovingParticles(m, 0x36D4, 7, 0, false, true, 9502, 4019, 0x160);
                        source.PlaySound(Core.AOS ? 0x15E : 0x44B);

                        SpellHelper.Damage(this, m, damage, 0, 100, 0, 0, 0);
                        int   burntimes = 2 + Utility.Random(5);
                        Timer m_Timer   = new IgniteTimer(tav, m, 1, burntimes, DateTime.Now + TimeSpan.FromSeconds(0.5));
                        m_Timer.Start();
                        FinishSequence();
                        return;
                    }
                }

                if (Core.AOS)
                {
                    damage = GetNewAosDamage(19, 1, 5, Caster.Player && m.Player);
                }
                else
                {
                    damage = Utility.Random(10, 7);

                    if (CheckResisted(m))
                    {
                        damage *= 0.75;

                        m.SendLocalizedMessage(501783);                           // You feel yourself resisting magical energy.
                    }

                    damage *= GetDamageScalar(m);
                }

                source.MovingParticles(m, 0x36D4, 7, 0, false, true, 9502, 4019, 0x160);
                source.PlaySound(Core.AOS ? 0x15E : 0x44B);

                SpellHelper.Damage(this, m, damage, 0, 100, 0, 0, 0);
            }

            FinishSequence();
        }
        public MSGemGump(Mobile from, Item msgem, MageStaff mstaff) : base(0, 0)
        {
            m_Player = (TeiravonMobile)from;
            gem      = (MageStaffGem)msgem;
            staff    = (MageStaff)mstaff;

            m_Player.CloseGump(typeof(MSGemGump));

            int x  = 140;
            int y  = 170;
            int x2 = 116;
            int y2 = 173;
            int i  = 1;

            this.Closable   = false;
            this.Disposable = false;
            this.Dragable   = true;
            this.Resizable  = false;

            AddPage(0);
            AddBackground(70, 80, 350, 325, 3600);
            AddBackground(95, 125, 300, 255, 9350);

            AddHtml(200, 100, 600, 20, "<basefont size=\"8\" color=\"#ffffff\">Mage Staff Gem</basefont>", false, false);
            AddLabel(155, 135, 150, "Choose your Mage Staff Power:");

            AddLabel(x, y + (20 * i), 150, "Mana Reneration");
            AddButton(x2, y2 + (20 * i), 2224, 2224, 1, GumpButtonType.Reply, 0);
            i++;
            AddLabel(x, y + (20 * i), 150, "Increased Spell Damage");
            AddButton(x2, y2 + (20 * i), 2224, 2224, 2, GumpButtonType.Reply, 0);
            i++;
            if (staff.WeaponAttributes.MageWeapon < 30)
            {
                AddLabel(x, y + (20 * i), 150, "Mage Weapon");
                AddButton(x2, y2 + (20 * i), 2224, 2224, 3, GumpButtonType.Reply, 0);
                i++;
            }
            AddLabel(x, y + (20 * i), 150, "Faster Casting");
            AddButton(x2, y2 + (20 * i), 2224, 2224, 4, GumpButtonType.Reply, 0);
            i++;
            AddLabel(x, y + (20 * i), 150, "Faster Cast Recovery");
            AddButton(x2, y2 + (20 * i), 2224, 2224, 5, GumpButtonType.Reply, 0);
            i++;
            if (m_Player.IsAquamancer())
            {
                AddLabel(x, y + (20 * i), 150, "Hit Harm");
                AddButton(x2, y2 + (20 * i), 2224, 2224, 6, GumpButtonType.Reply, 0);
                i++;
                AddLabel(x, y + (20 * i), 150, "Hit Cold Area");
                AddButton(x2, y2 + (20 * i), 2224, 2224, 7, GumpButtonType.Reply, 0);
                i++;
                AddLabel(x, y + (20 * i), 150, "Cold Resist");
                AddButton(x2, y2 + (20 * i), 2224, 2224, 8, GumpButtonType.Reply, 0);
                i++;
            }
            else if (m_Player.IsAeromancer())
            {
                AddLabel(x, y + (20 * i), 150, "Hit Lightning");
                AddButton(x2, y2 + (20 * i), 2224, 2224, 9, GumpButtonType.Reply, 0);
                i++;
                AddLabel(x, y + (20 * i), 150, "Hit Energy Area");
                AddButton(x2, y2 + (20 * i), 2224, 2224, 10, GumpButtonType.Reply, 0);
                i++;
                AddLabel(x, y + (20 * i), 150, "Energy Resist");
                AddButton(x2, y2 + (20 * i), 2224, 2224, 11, GumpButtonType.Reply, 0);
                i++;
            }
            else if (m_Player.IsPyromancer())
            {
                AddLabel(x, y + (20 * i), 150, "Hit Fireball");
                AddButton(x2, y2 + (20 * i), 2224, 2224, 12, GumpButtonType.Reply, 0);
                i++;
                AddLabel(x, y + (20 * i), 150, "Hit Fire Area");
                AddButton(x2, y2 + (20 * i), 2224, 2224, 13, GumpButtonType.Reply, 0);
                i++;
                AddLabel(x, y + (20 * i), 150, "Fire Resist");
                AddButton(x2, y2 + (20 * i), 2224, 2224, 14, GumpButtonType.Reply, 0);
                i++;
            }
            else if (m_Player.IsNecromancer())
            {
                AddLabel(x, y + (20 * i), 150, "Hit Dispel");
                AddButton(x2, y2 + (20 * i), 2224, 2224, 15, GumpButtonType.Reply, 0);
                i++;
                AddLabel(x, y + (20 * i), 150, "Hit Poison Area");
                AddButton(x2, y2 + (20 * i), 2224, 2224, 16, GumpButtonType.Reply, 0);
                i++;
                AddLabel(x, y + (20 * i), 150, "Poison Resist");
                AddButton(x2, y2 + (20 * i), 2224, 2224, 17, GumpButtonType.Reply, 0);
                i++;
            }
            else if (m_Player.IsGeomancer())
            {
                AddLabel(x, y + (20 * i), 150, "Hit Magic Arrow");
                AddButton(x2, y2 + (20 * i), 2224, 2224, 18, GumpButtonType.Reply, 0);
                i++;
                AddLabel(x, y + (20 * i), 150, "Hit Physical Area");
                AddButton(x2, y2 + (20 * i), 2224, 2224, 19, GumpButtonType.Reply, 0);
                i++;
                AddLabel(x, y + (20 * i), 150, "Physical Resist");
                AddButton(x2, y2 + (20 * i), 2224, 2224, 20, GumpButtonType.Reply, 0);
                i++;
            }
        }
Example #6
0
        public void Target(Mobile m)
        {
            if (!Caster.CanSee(m))
            {
                Caster.SendLocalizedMessage(500237);                   // Target can not be seen.
            }
            else if (CheckHSequence(m))
            {
                SpellHelper.Turn(Caster, m);

                SpellHelper.CheckReflect((int)this.Circle, Caster, ref m);

                double damage;


                if (Caster is TeiravonMobile)
                {
                    TeiravonMobile tav = Caster as TeiravonMobile;

                    if (tav.IsAeromancer())
                    {
                        damage = GetNewAosDamage(48, 1, 5, Caster.Player && m.Player);
                        //m.FixedParticles(0x37CC, 10, 202, 5052, EffectLayer.LeftFoot);
                        m.FixedParticles(0x37C, 6, 15, 5052, 2693, 1, EffectLayer.LeftFoot);
                        m.PlaySound(0x5CE);

                        SpellHelper.Damage(this, m, damage, 0, 0, 50, 0, 50);
                        new Gust(tav, m).MoveToWorld(m.Location, m.Map);
                        FinishSequence();
                        return;
                    }
                    if (tav.IsGeomancer())
                    {
                        damage = GetNewAosDamage(48, 1, 5, Caster.Player && m.Player);
                        Caster.MovingParticles(m, 0x11B6, 5, 0, true, false, 0x1E00, 0x1E00, 0x13B);
                        m.PlaySound(0x21E);

                        SpellHelper.GeoDamage(this, m, damage);
                        m.Freeze(TimeSpan.FromSeconds(2.5));
                        FinishSequence();
                        return;
                    }

                    if (tav.IsAquamancer())
                    {
                        damage = GetNewAosDamage(45, 1, 25, Caster.Player && m.Player);
                        m.FixedParticles(0x3789, 30, 20, 5052, EffectLayer.CenterFeet);
                        m.PlaySound(0x026);

                        SpellHelper.Damage(this, m, damage, 0, 0, 100, 0, 0);
                        FinishSequence();
                        return;
                    }

                    if (tav.IsPyromancer())
                    {
                        damage = GetNewAosDamage(45, 1, 5, Caster.Player && m.Player);
                        m.FixedParticles(0x3709, 10, 30, 5052, EffectLayer.LeftFoot);
                        m.PlaySound(0x208);
                        SpellHelper.Damage(this, m, damage, 0, 100, 0, 0, 0);
                        int   burntimes = 2 + Utility.Random(3);
                        Timer m_Timer   = new IgniteTimer(tav, m, 1, burntimes, DateTime.Now + TimeSpan.FromSeconds(1.5));
                        m_Timer.Start();
                        FinishSequence();
                        return;
                    }
                }



                if (Core.AOS)
                {
                    damage = GetNewAosDamage(48, 1, 5, Caster.Player && m.Player);
                }
                else
                {
                    damage = Utility.Random(27, 22);

                    if (CheckResisted(m))
                    {
                        damage *= 0.6;

                        m.SendLocalizedMessage(501783);                           // You feel yourself resisting magical energy.
                    }

                    damage *= GetDamageScalar(m);
                }

                m.FixedParticles(0x3709, 10, 30, 5052, EffectLayer.LeftFoot);
                m.PlaySound(0x208);

                SpellHelper.Damage(this, m, damage, 0, 100, 0, 0, 0);
            }

            FinishSequence();
        }