Beispiel #1
0
        public override bool OnBeforeDeath()
        {
            if (!NoKillAwards)
            {
                // genova: flag powerscrolls.
                if (GeNovaXML.Flags_Active(XMLNames.PowerScrolls))
                {
                    GivePowerScrolls();
                }

                Map map = this.Map;

                if (map != null)
                {
                    for (int x = -12; x <= 12; ++x)
                    {
                        for (int y = -12; y <= 12; ++y)
                        {
                            double dist = Math.Sqrt(x * x + y * y);

                            if (dist <= 12)
                            {
                                new GoodiesTimer(map, X + x, Y + y).Start();
                            }
                        }
                    }
                }
            }

            return(base.OnBeforeDeath());
        }
Beispiel #2
0
        private bool ActiveProperty(string propertyName)
        {
            if (!GeNovaXML.CustomRace_Active)
            {
                return(false);
            }

            return(GeNovaXML.CustomRace_Property_Active(this._player.Race.Name, propertyName));
        }
Beispiel #3
0
        public OrcBrute() : base(AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4)
        {
            Body = 189;

            Name        = "an orc brute";
            BaseSoundID = 0x45A;

            SetStr(767, 945);
            SetDex(66, 75);
            SetInt(46, 70);

            SetHits(476, 552);

            SetDamage(20, 25);

            SetDamageType(ResistanceType.Physical, 100);

            SetResistance(ResistanceType.Physical, 45, 55);
            SetResistance(ResistanceType.Fire, 40, 50);
            SetResistance(ResistanceType.Cold, 25, 35);
            SetResistance(ResistanceType.Poison, 25, 35);
            SetResistance(ResistanceType.Energy, 25, 35);

            SetSkill(SkillName.Macing, 90.1, 100.0);
            SetSkill(SkillName.MagicResist, 125.1, 140.0);
            SetSkill(SkillName.Tactics, 90.1, 100.0);
            SetSkill(SkillName.Wrestling, 90.1, 100.0);

            Fame  = 15000;
            Karma = -15000;

            VirtualArmor = 50;

            PackItem(new ShadowIronOre(25));
            PackItem(new IronIngot(10));

            if (0.05 > Utility.RandomDouble())
            {
                PackItem(new OrcishKinMask());
            }

            if (0.2 > Utility.RandomDouble())
            {
                PackItem(new BolaBall());
            }

            // genova: lote randomico.
            if (!GeNovaXML.Flags_Active(XMLNames.Vendors))
            {
                ModelRandomItems randomItem = new RandomFarmableItems(this);
                randomItem.AddItemsInLoot();
                randomItem = new RandomCraftItem(this);
                randomItem.AddItemsInLoot();
            }
        }
Beispiel #4
0
        public OrcBomber() : base(AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4)
        {
            Body = 182;

            Name        = "an orc bomber";
            BaseSoundID = 0x45A;

            SetStr(147, 215);
            SetDex(91, 115);
            SetInt(61, 85);

            SetHits(95, 123);

            SetDamage(1, 8);

            SetDamageType(ResistanceType.Physical, 75);
            SetDamageType(ResistanceType.Fire, 25);

            SetResistance(ResistanceType.Physical, 25, 35);
            SetResistance(ResistanceType.Fire, 30, 40);
            SetResistance(ResistanceType.Cold, 15, 25);
            SetResistance(ResistanceType.Poison, 15, 20);
            SetResistance(ResistanceType.Energy, 25, 30);

            SetSkill(SkillName.MagicResist, 70.1, 85.0);
            SetSkill(SkillName.Swords, 60.1, 85.0);
            SetSkill(SkillName.Tactics, 75.1, 90.0);
            SetSkill(SkillName.Wrestling, 60.1, 85.0);

            Fame  = 2500;
            Karma = -2500;

            VirtualArmor = 30;

            PackItem(new SulfurousAsh(Utility.RandomMinMax(6, 10)));
            PackItem(new MandrakeRoot(Utility.RandomMinMax(6, 10)));
            PackItem(new BlackPearl(Utility.RandomMinMax(6, 10)));
            PackItem(new MortarPestle());
            PackItem(new LesserExplosionPotion());

            if (0.2 > Utility.RandomDouble())
            {
                PackItem(new BolaBall());
            }

            // genova: lote randomico.
            if (!GeNovaXML.Flags_Active(XMLNames.Vendors))
            {
                ModelRandomItems randomItem = new RandomFarmableItems(this);
                randomItem.AddItemsInLoot();
                randomItem = new RandomCraftItem(this);
                randomItem.AddItemsInLoot();
            }
        }
Beispiel #5
0
        public EvilMageLord() : base(AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4)
        {
            Name = NameList.RandomName("evil mage lord");
            Body = Utility.RandomList(125, 126);

            PackItem(new Robe(Utility.RandomMetalHue()));
            PackItem(new WizardsHat(Utility.RandomMetalHue()));

            SetStr(81, 105);
            SetDex(191, 215);
            SetInt(126, 150);

            SetHits(49, 63);

            SetDamage(5, 10);

            SetDamageType(ResistanceType.Physical, 100);

            SetResistance(ResistanceType.Physical, 35, 40);
            SetResistance(ResistanceType.Fire, 30, 40);
            SetResistance(ResistanceType.Cold, 30, 40);
            SetResistance(ResistanceType.Poison, 30, 40);
            SetResistance(ResistanceType.Energy, 30, 40);

            SetSkill(SkillName.EvalInt, 80.2, 100.0);
            SetSkill(SkillName.Magery, 95.1, 100.0);
            SetSkill(SkillName.Meditation, 27.5, 50.0);
            SetSkill(SkillName.MagicResist, 77.5, 100.0);
            SetSkill(SkillName.Tactics, 65.0, 87.5);
            SetSkill(SkillName.Wrestling, 20.3, 80.0);

            Fame  = 10500;
            Karma = -10500;

            VirtualArmor = 16;
            PackReg(23);
            if (Utility.RandomBool())
            {
                PackItem(new Shoes());
            }
            else
            {
                PackItem(new Sandals());
            }

            // genova: lote randomico.
            if (!GeNovaXML.Flags_Active(XMLNames.Vendors))
            {
                ModelRandomItems randomItem = new RandomMagicalItem(this);
                randomItem.AddItemsInLoot();
            }
        }
Beispiel #6
0
        public override void OnDeath(Container c)
        {
            base.OnDeath(c);

            // Genova: flag artefatos.
            if (GeNovaXML.Flags_Active(XMLNames.Artifacts))
            {
                if (!Summoned && !NoKillAwards && DemonKnight.CheckArtifactChance(this))
                {
                    DemonKnight.DistributeArtifact(this);
                }
            }
        }
Beispiel #7
0
        public OrcishMage() : base(AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4)
        {
            Name        = "an orcish mage";
            Body        = 140;
            BaseSoundID = 0x45A;

            SetStr(116, 150);
            SetDex(91, 115);
            SetInt(161, 185);

            SetHits(70, 90);

            SetDamage(4, 14);

            SetDamageType(ResistanceType.Physical, 100);

            SetResistance(ResistanceType.Physical, 25, 35);
            SetResistance(ResistanceType.Fire, 30, 40);
            SetResistance(ResistanceType.Cold, 20, 30);
            SetResistance(ResistanceType.Poison, 30, 40);
            SetResistance(ResistanceType.Energy, 30, 40);

            SetSkill(SkillName.EvalInt, 60.1, 72.5);
            SetSkill(SkillName.Magery, 60.1, 72.5);
            SetSkill(SkillName.MagicResist, 60.1, 75.0);
            SetSkill(SkillName.Tactics, 50.1, 65.0);
            SetSkill(SkillName.Wrestling, 40.1, 50.0);

            Fame  = 3000;
            Karma = -3000;

            VirtualArmor = 30;


            PackReg(6);

            if (0.05 > Utility.RandomDouble())
            {
                PackItem(new OrcishKinMask());
            }

            // genova: lote randomico.
            if (!GeNovaXML.Flags_Active(XMLNames.Vendors))
            {
                ModelRandomItems randomItem = new RandomFarmableItems(this);
                randomItem.AddItemsInLoot();
                randomItem = new RandomCraftItem(this);
                randomItem.AddItemsInLoot();
            }
        }
Beispiel #8
0
        public EvilMage() : base(AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4)
        {
            Name  = NameList.RandomName("evil mage");
            Title = "the evil mage";
            Body  = 124;

            SetStr(81, 105);
            SetDex(91, 115);
            SetInt(96, 120);

            SetHits(49, 63);

            SetDamage(5, 10);

            SetDamageType(ResistanceType.Physical, 100);

            SetResistance(ResistanceType.Physical, 15, 20);
            SetResistance(ResistanceType.Fire, 5, 10);
            SetResistance(ResistanceType.Poison, 5, 10);
            SetResistance(ResistanceType.Energy, 5, 10);

            SetSkill(SkillName.EvalInt, 75.1, 100.0);
            SetSkill(SkillName.Magery, 75.1, 100.0);
            SetSkill(SkillName.MagicResist, 75.0, 97.5);
            SetSkill(SkillName.Tactics, 65.0, 87.5);
            SetSkill(SkillName.Wrestling, 20.2, 60.0);

            Fame  = 2500;
            Karma = -2500;

            VirtualArmor = 16;
            PackReg(6);
            PackItem(new Robe(Utility.RandomNeutralHue()));                 // TODO: Proper hue
            PackItem(new Sandals());

            // genova: lote randomico.
            if (!GeNovaXML.Flags_Active(XMLNames.Vendors))
            {
                ModelRandomItems randomItem = new RandomMagicalItem(this);
                randomItem.AddItemsInLoot();
            }
        }
Beispiel #9
0
        public Orc() : base(AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4)
        {
            Name        = NameList.RandomName("orc");
            Body        = 17;
            BaseSoundID = 0x45A;

            SetStr(96, 120);
            SetDex(81, 105);
            SetInt(36, 60);

            SetHits(58, 72);

            SetDamage(5, 7);

            SetDamageType(ResistanceType.Physical, 100);

            SetResistance(ResistanceType.Physical, 25, 30);
            SetResistance(ResistanceType.Fire, 20, 30);
            SetResistance(ResistanceType.Cold, 10, 20);
            SetResistance(ResistanceType.Poison, 10, 20);
            SetResistance(ResistanceType.Energy, 20, 30);

            SetSkill(SkillName.MagicResist, 50.1, 75.0);
            SetSkill(SkillName.Tactics, 55.1, 80.0);
            SetSkill(SkillName.Wrestling, 50.1, 70.0);

            Fame  = 1500;
            Karma = -1500;

            VirtualArmor = 28;

            switch (Utility.Random(20))
            {
            case 0: PackItem(new Scimitar()); break;

            case 1: PackItem(new Katana()); break;

            case 2: PackItem(new WarMace()); break;

            case 3: PackItem(new WarHammer()); break;

            case 4: PackItem(new Kryss()); break;

            case 5: PackItem(new Pitchfork()); break;
            }

            PackItem(new ThighBoots());

            switch (Utility.Random(3))
            {
            case 0: PackItem(new Ribs()); break;

            case 1: PackItem(new Shaft()); break;

            case 2: PackItem(new Candle()); break;
            }

            if (0.2 > Utility.RandomDouble())
            {
                PackItem(new BolaBall());
            }

            // genova: lote randomico.
            if (!GeNovaXML.Flags_Active(XMLNames.Vendors))
            {
                ModelRandomItems randomItem = new RandomFarmableItems(this);
                randomItem.AddItemsInLoot();
                randomItem = new RandomCraftItem(this);
                randomItem.AddItemsInLoot();
            }
        }
Beispiel #10
0
        public OrcCaptain() : base(AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4)
        {
            Name        = NameList.RandomName("orc");
            Body        = 7;
            BaseSoundID = 0x45A;

            SetStr(111, 145);
            SetDex(101, 135);
            SetInt(86, 110);

            SetHits(67, 87);

            SetDamage(5, 15);

            SetDamageType(ResistanceType.Physical, 100);

            SetResistance(ResistanceType.Physical, 30, 35);
            SetResistance(ResistanceType.Fire, 10, 20);
            SetResistance(ResistanceType.Cold, 15, 25);
            SetResistance(ResistanceType.Poison, 5, 10);
            SetResistance(ResistanceType.Energy, 5, 10);

            SetSkill(SkillName.MagicResist, 70.1, 85.0);
            SetSkill(SkillName.Swords, 70.1, 95.0);
            SetSkill(SkillName.Tactics, 85.1, 100.0);

            Fame  = 2500;
            Karma = -2500;

            VirtualArmor = 34;

            // TODO: Skull?
            switch (Utility.Random(7))
            {
            case 0: PackItem(new Arrow()); break;

            case 1: PackItem(new Lockpick()); break;

            case 2: PackItem(new Shaft()); break;

            case 3: PackItem(new Ribs()); break;

            case 4: PackItem(new Bandage()); break;

            case 5: PackItem(new BeverageBottle(BeverageType.Wine)); break;

            case 6: PackItem(new Jug(BeverageType.Cider)); break;
            }

            if (Core.AOS)
            {
                PackItem(Loot.RandomNecromancyReagent());
            }

            // genova: lote randomico.
            if (!GeNovaXML.Flags_Active(XMLNames.Vendors))
            {
                ModelRandomItems randomItem = new RandomFarmableItems(this);
                randomItem.AddItemsInLoot();
                randomItem = new RandomCraftItem(this);
                randomItem.AddItemsInLoot();
            }
        }
Beispiel #11
0
        public override bool OnBeforeDeath()
        {
            if (m_TrueForm)
            {
                List <DamageStore> rights = BaseCreature.GetLootingRights(this.DamageEntries, this.HitsMax);

                for (int i = rights.Count - 1; i >= 0; --i)
                {
                    DamageStore ds = rights[i];

                    if (ds.m_HasRight && ds.m_Mobile is PlayerMobile)
                    {
                        PlayerMobile.ChampionTitleInfo.AwardHarrowerTitle((PlayerMobile)ds.m_Mobile);
                    }
                }

                if (!NoKillAwards)
                {
                    // genova: flag powerscrolls.
                    if (GeNovaXML.Flags_Active(XMLNames.PowerScrolls))
                    {
                        GivePowerScrolls();
                    }

                    Map map = this.Map;

                    if (map != null)
                    {
                        for (int x = -16; x <= 16; ++x)
                        {
                            for (int y = -16; y <= 16; ++y)
                            {
                                double dist = Math.Sqrt(x * x + y * y);

                                if (dist <= 16)
                                {
                                    new GoodiesTimer(map, X + x, Y + y).Start();
                                }
                            }
                        }
                    }

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

                        if (!m.Deleted)
                        {
                            m.Kill();
                        }
                    }

                    m_Tentacles.Clear();

                    if (m_GateItem != null)
                    {
                        m_GateItem.Delete();
                    }
                }

                return(base.OnBeforeDeath());
            }
            else
            {
                Morph();
                return(false);
            }
        }
Beispiel #12
0
        public void GivePowerScrolls()
        {
            List <Mobile>      toGive = new List <Mobile>();
            List <DamageStore> rights = BaseCreature.GetLootingRights(this.DamageEntries, this.HitsMax);

            for (int i = rights.Count - 1; i >= 0; --i)
            {
                DamageStore ds = rights[i];

                if (ds.m_HasRight)
                {
                    toGive.Add(ds.m_Mobile);
                }
            }

            if (toGive.Count == 0)
            {
                return;
            }

            // Randomize
            for (int i = 0; i < toGive.Count; ++i)
            {
                int    rand = Utility.Random(toGive.Count);
                Mobile hold = toGive[i];
                toGive[i]    = toGive[rand];
                toGive[rand] = hold;
            }

            for (int i = 0; i < 16; ++i)
            {
                int    level;
                double random = Utility.RandomDouble();

                if (0.1 >= random)
                {
                    level = 25;
                }
                else if (0.25 >= random)
                {
                    level = 20;
                }
                else if (0.45 >= random)
                {
                    level = 15;
                }
                else if (0.70 >= random)
                {
                    level = 10;
                }
                else
                {
                    level = 5;
                }

                Mobile m = toGive[i % toGive.Count];

                // genova: flag StatusCapScrolls
                if (GeNovaXML.Flags_Active(XMLNames.StatusCapScrolls))
                {
                    m.SendLocalizedMessage(1049524); // You have received a scroll of power!
                    m.AddToBackpack(new StatCapScroll(225 + level));
                }

                if (m is PlayerMobile)
                {
                    PlayerMobile pm = (PlayerMobile)m;

                    for (int j = 0; j < pm.JusticeProtectors.Count; ++j)
                    {
                        Mobile prot = (Mobile)pm.JusticeProtectors[j];

                        if (prot.Map != m.Map || prot.Kills >= 5 || prot.Criminal || !JusticeVirtue.CheckMapRegion(m, prot))
                        {
                            continue;
                        }

                        int chance = 0;

                        switch (VirtueHelper.GetLevel(prot, VirtueName.Justice))
                        {
                        case VirtueLevel.Seeker: chance = 60; break;

                        case VirtueLevel.Follower: chance = 80; break;

                        case VirtueLevel.Knight: chance = 100; break;
                        }

                        // genova: flag StatusCapScrolls
                        if (chance > Utility.Random(100) && GeNovaXML.Flags_Active(XMLNames.StatusCapScrolls))
                        {
                            prot.SendLocalizedMessage(1049368);                               // You have been rewarded for your dedication to Justice!
                            prot.AddToBackpack(new StatCapScroll(225 + level));
                        }
                    }
                }
            }
        }
        public OrcishLord() : base(AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4)
        {
            Name        = "an orcish lord";
            Body        = 138;
            BaseSoundID = 0x45A;

            SetStr(147, 215);
            SetDex(91, 115);
            SetInt(61, 85);

            SetHits(95, 123);

            SetDamage(4, 14);

            SetDamageType(ResistanceType.Physical, 100);

            SetResistance(ResistanceType.Physical, 25, 35);
            SetResistance(ResistanceType.Fire, 30, 40);
            SetResistance(ResistanceType.Cold, 20, 30);
            SetResistance(ResistanceType.Poison, 30, 40);
            SetResistance(ResistanceType.Energy, 30, 40);

            SetSkill(SkillName.MagicResist, 70.1, 85.0);
            SetSkill(SkillName.Swords, 60.1, 85.0);
            SetSkill(SkillName.Tactics, 75.1, 90.0);
            SetSkill(SkillName.Wrestling, 60.1, 85.0);

            Fame  = 2500;
            Karma = -2500;

            switch (Utility.Random(5))
            {
            case 0: PackItem(new Lockpick());  break;

            case 1: PackItem(new MortarPestle()); break;

            case 2: PackItem(new Bottle()); break;

            case 3: PackItem(new RawRibs()); break;

            case 4: PackItem(new Shovel()); break;
            }

            PackItem(new RingmailChest());

            if (0.3 > Utility.RandomDouble())
            {
                PackItem(Loot.RandomPossibleReagent());
            }

            if (0.2 > Utility.RandomDouble())
            {
                PackItem(new BolaBall());
            }

            // genova: lote randomico.
            if (!GeNovaXML.Flags_Active(XMLNames.Vendors))
            {
                ModelRandomItems randomItem = new RandomFarmableItems(this);
                randomItem.AddItemsInLoot();
                randomItem = new RandomCraftItem(this);
                randomItem.AddItemsInLoot();
            }
        }