Inheritance: BaseClothing, IShipwreckedItem
        public static void ApplyAttributesTo(BaseHat hat, bool isRunicTool, int luckChance, int attributeCount, int min, int max)
        {
            m_IsRunicTool = isRunicTool;
            m_LuckChance  = luckChance;

            AosAttributes        primary   = hat.Attributes;
            AosArmorAttributes   secondary = hat.ClothingAttributes;
            AosElementAttributes resists   = hat.Resistances;

            m_Props.SetAll(false);

            for (int i = 0; i < attributeCount; ++i)
            {
                int random = GetUniqueRandom(19);

                if (random == -1)
                {
                    break;
                }

                switch (random)
                {
                case  0: ApplyAttribute(primary, min, max, AosAttribute.ReflectPhysical, 1, 15); break;

                case  1: ApplyAttribute(primary, min, max, AosAttribute.RegenHits, 1, 5); break;

                case  2: ApplyAttribute(primary, min, max, AosAttribute.RegenStam, 1, 5); break;

                case  3: ApplyAttribute(primary, min, max, AosAttribute.RegenMana, 1, 5); break;

                case  4: ApplyAttribute(primary, min, max, AosAttribute.NightSight, 1, 1); break;

                case  5: ApplyAttribute(primary, min, max, AosAttribute.BonusHits, 1, 50); break;

                case  6: ApplyAttribute(primary, min, max, AosAttribute.BonusStam, 1, 50); break;

                case  7: ApplyAttribute(primary, min, max, AosAttribute.BonusMana, 1, 50); break;

                case  8: ApplyAttribute(primary, min, max, AosAttribute.LowerManaCost, 1, 8); break;

                case  9: ApplyAttribute(primary, min, max, AosAttribute.LowerRegCost, 1, 20); break;

                case 10: ApplyAttribute(primary, min, max, AosAttribute.Luck, 1, 100); break;

                // case 11: ApplyAttribute( secondary,	min, max, AosArmorAttribute.LowerStatReq,		10, 100, 10 ); break;
                // case 12: ApplyAttribute( secondary,	min, max, AosArmorAttribute.SelfRepair,			1, 5 ); break;
                // case 13: ApplyAttribute( secondary,	min, max, AosArmorAttribute.DurabilityBonus,	10, 100, 10 ); break;
                case 14: ApplyAttribute(resists, min, max, AosElementAttribute.Physical, 1, 50); break;

                case 15: ApplyAttribute(resists, min, max, AosElementAttribute.Fire, 1, 50); break;

                case 16: ApplyAttribute(resists, min, max, AosElementAttribute.Cold, 1, 50); break;

                case 17: ApplyAttribute(resists, min, max, AosElementAttribute.Poison, 1, 50); break;

                case 18: ApplyAttribute(resists, min, max, AosElementAttribute.Energy, 1, 50); break;
                }
            }
        }
		public static void ApplyAttributesTo( BaseHat hat, int attributeCount, int min, int max )
		{
			ApplyAttributesTo( hat, false, 0, attributeCount, min, max );
		}
Beispiel #3
0
        private void Fill(int level)
        {
            TrapType  = TrapType.ExplosionTrap;
            TrapPower = level * 25;
            TrapLevel = level;
            Locked    = true;

            switch (level)
            {
            case 1:
                RequiredSkill = 36;
                break;

            case 2:
                RequiredSkill = 76;
                break;

            case 3:
                RequiredSkill = 84;
                break;

            case 4:
                RequiredSkill = 92;
                break;

            case 5:
                RequiredSkill = 100;
                break;

            case 6:
                RequiredSkill = 100;
                break;
            }

            LockLevel    = RequiredSkill - 10;
            MaxLockLevel = RequiredSkill + 40;

            DropItem(new Gold(level * 200));

            for (int i = 0; i < level; ++i)
            {
                DropItem(Loot.RandomScroll(0, 63, SpellbookType.Regular));
            }

            for (int i = 0; i < level * 2; ++i)
            {
                Item item;

                if (Core.AOS)
                {
                    item = Loot.RandomArmorOrShieldOrWeaponOrJewelry();
                }
                else
                {
                    item = Loot.RandomArmorOrShieldOrWeapon();
                }

                if (item != null && Core.HS && RandomItemGenerator.Enabled)
                {
                    int min, max;
                    TreasureMapChest.GetRandomItemStat(out min, out max);

                    RunicReforging.GenerateRandomItem(item, 0, min, max);

                    DropItem(item);
                    continue;
                }

                if (item is BaseWeapon)
                {
                    BaseWeapon weapon = (BaseWeapon)item;

                    if (Core.AOS)
                    {
                        int attributeCount;
                        int min, max;

                        GetRandomAOSStats(out attributeCount, out min, out max);

                        BaseRunicTool.ApplyAttributesTo(weapon, attributeCount, min, max);
                    }
                    else
                    {
                        weapon.DamageLevel     = (WeaponDamageLevel)Utility.Random(6);
                        weapon.AccuracyLevel   = (WeaponAccuracyLevel)Utility.Random(6);
                        weapon.DurabilityLevel = (WeaponDurabilityLevel)Utility.Random(6);
                    }

                    DropItem(item);
                }
                else if (item is BaseArmor)
                {
                    BaseArmor armor = (BaseArmor)item;

                    if (Core.AOS)
                    {
                        int attributeCount;
                        int min, max;

                        GetRandomAOSStats(out attributeCount, out min, out max);

                        BaseRunicTool.ApplyAttributesTo(armor, attributeCount, min, max);
                    }
                    else
                    {
                        armor.ProtectionLevel = (ArmorProtectionLevel)Utility.Random(6);
                        armor.Durability      = (ArmorDurabilityLevel)Utility.Random(6);
                    }

                    DropItem(item);
                }
                else if (item is BaseHat)
                {
                    BaseHat hat = (BaseHat)item;

                    if (Core.AOS)
                    {
                        int attributeCount;
                        int min, max;

                        GetRandomAOSStats(out attributeCount, out min, out max);

                        BaseRunicTool.ApplyAttributesTo(hat, attributeCount, min, max);
                    }

                    DropItem(item);
                }
                else if (item is BaseJewel)
                {
                    int attributeCount;
                    int min, max;

                    GetRandomAOSStats(out attributeCount, out min, out max);

                    BaseRunicTool.ApplyAttributesTo((BaseJewel)item, attributeCount, min, max);

                    DropItem(item);
                }
            }

            for (int i = 0; i < level; i++)
            {
                Item item = Loot.RandomPossibleReagent();
                item.Amount = Utility.RandomMinMax(40, 60);
                DropItem(item);
            }

            for (int i = 0; i < level; i++)
            {
                Item item = Loot.RandomGem();
                DropItem(item);
            }

            DropItem(new TreasureMap(level + 1, (Siege.SiegeShard ?  Map.Felucca : Utility.RandomBool() ? Map.Felucca : Map.Trammel)));
        }
Beispiel #4
0
        public static void ApplyAttributesTo(BaseHat hat, bool playerMade, int luckChance, int attributeCount, int min, int max)
        {
            int delta;

            if (min > max)
            {
                delta = min;
                min   = max;
                max   = delta;
            }

            if (!playerMade && RandomItemGenerator.Enabled)
            {
                RandomItemGenerator.GenerateRandomItem(hat, luckChance, attributeCount, min, max);
                return;
            }

            m_PlayerMade = playerMade;
            m_LuckChance = luckChance;

            AosAttributes        primary   = hat.Attributes;
            AosArmorAttributes   secondary = hat.ClothingAttributes;
            AosElementAttributes resists   = hat.Resistances;

            m_Props.SetAll(false);

            for (int i = 0; i < attributeCount; ++i)
            {
                int random = GetUniqueRandom(19);

                if (random == -1)
                {
                    break;
                }

                switch (random)
                {
                case 0:
                    ApplyAttribute(primary, min, max, AosAttribute.ReflectPhysical, 1, 15);
                    break;

                case 1:
                    ApplyAttribute(primary, min, max, AosAttribute.RegenHits, 1, 2);
                    break;

                case 2:
                    ApplyAttribute(primary, min, max, AosAttribute.RegenStam, 1, 3);
                    break;

                case 3:
                    ApplyAttribute(primary, min, max, AosAttribute.RegenMana, 1, 2);
                    break;

                case 4:
                    ApplyAttribute(primary, min, max, AosAttribute.NightSight, 1, 1);
                    break;

                case 5:
                    ApplyAttribute(primary, min, max, AosAttribute.BonusHits, 1, 5);
                    break;

                case 6:
                    ApplyAttribute(primary, min, max, AosAttribute.BonusStam, 1, 8);
                    break;

                case 7:
                    ApplyAttribute(primary, min, max, AosAttribute.BonusMana, 1, 8);
                    break;

                case 8:
                    ApplyAttribute(primary, min, max, AosAttribute.LowerManaCost, 1, 8);
                    break;

                case 9:
                    ApplyAttribute(primary, min, max, AosAttribute.LowerRegCost, 1, 20);
                    break;

                case 10:
                    ApplyAttribute(primary, min, max, AosAttribute.Luck, 1, 100);
                    break;

                case 11:
                    ApplyAttribute(secondary, min, max, AosArmorAttribute.LowerStatReq, 10, 100, 10);
                    break;

                case 12:
                    ApplyAttribute(secondary, min, max, AosArmorAttribute.SelfRepair, 1, 5);
                    break;

                case 13:
                    ApplyAttribute(secondary, min, max, AosArmorAttribute.DurabilityBonus, 10, 100, 10);
                    break;

                case 14:
                    ApplyAttribute(resists, min, max, AosElementAttribute.Physical, 1, 15);
                    break;

                case 15:
                    ApplyAttribute(resists, min, max, AosElementAttribute.Fire, 1, 15);
                    break;

                case 16:
                    ApplyAttribute(resists, min, max, AosElementAttribute.Cold, 1, 15);
                    break;

                case 17:
                    ApplyAttribute(resists, min, max, AosElementAttribute.Poison, 1, 15);
                    break;

                case 18:
                    ApplyAttribute(resists, min, max, AosElementAttribute.Energy, 1, 15);
                    break;
                }
            }
        }
        public IguanaCoveBossChest() : base(0xE43)
        {
            Name    = "a treasure chest -50-";
            Movable = true;
            Weight  = 1000.0;

            TrapPower = 0;
            Locked    = true;

            RequiredSkill = 50;
            LockLevel     = 50;
            MaxLockLevel  = 80;

/////////////////////////////////// Gold
            if (Utility.RandomDouble() < 0.25)
            {
                DropItem(new Gold(Utility.Random(250, 400)));
            }

/////////////////////////////////////// Jewelry

            if (Utility.RandomDouble() < 0.04)
            {
                DropItem(new Agate());
            }
            if (Utility.RandomDouble() < 0.04)
            {
                DropItem(new Beryl());
            }
            if (Utility.RandomDouble() < 0.04)
            {
                DropItem(new ChromeDiopside());
            }
            if (Utility.RandomDouble() < 0.04)
            {
                DropItem(new FireOpal());
            }
            if (Utility.RandomDouble() < 0.04)
            {
                DropItem(new MoonstoneCustom());
            }
            if (Utility.RandomDouble() < 0.04)
            {
                DropItem(new Onyx());
            }
            if (Utility.RandomDouble() < 0.04)
            {
                DropItem(new Opal());
            }
            if (Utility.RandomDouble() < 0.04)
            {
                DropItem(new Pearl());
            }
            if (Utility.RandomDouble() < 0.04)
            {
                DropItem(new TurquoiseCustom());
            }

            if (Utility.RandomDouble() < 0.03)
            {
                DropItem(new Bloodstone());
            }
            if (Utility.RandomDouble() < 0.03)
            {
                DropItem(new Citrine());
            }
            if (Utility.RandomDouble() < 0.03)
            {
                DropItem(new Demantoid());
            }
            if (Utility.RandomDouble() < 0.03)
            {
                DropItem(new Jasper());
            }
            if (Utility.RandomDouble() < 0.03)
            {
                DropItem(new Lolite());
            }
            if (Utility.RandomDouble() < 0.03)
            {
                DropItem(new Lupis());
            }
            if (Utility.RandomDouble() < 0.03)
            {
                DropItem(new Peridot());
            }
            if (Utility.RandomDouble() < 0.03)
            {
                DropItem(new Tsavorite());
            }
            if (Utility.RandomDouble() < 0.03)
            {
                DropItem(new Zircon());
            }

            if (Utility.RandomDouble() < 0.02)
            {
                DropItem(new Amber());
            }
            if (Utility.RandomDouble() < 0.02)
            {
                DropItem(new Amethyst());
            }
            if (Utility.RandomDouble() < 0.02)
            {
                DropItem(new Andalusite());
            }
            if (Utility.RandomDouble() < 0.02)
            {
                DropItem(new Chrysoberyl());
            }
            if (Utility.RandomDouble() < 0.02)
            {
                DropItem(new Garnet());
            }
            if (Utility.RandomDouble() < 0.02)
            {
                DropItem(new Jade());
            }
            if (Utility.RandomDouble() < 0.02)
            {
                DropItem(new Mandarin());
            }
            if (Utility.RandomDouble() < 0.02)
            {
                DropItem(new Morganite());
            }
            if (Utility.RandomDouble() < 0.02)
            {
                DropItem(new Paraiba());
            }
            if (Utility.RandomDouble() < 0.02)
            {
                DropItem(new TigerEye());
            }
            if (Utility.RandomDouble() < 0.02)
            {
                DropItem(new Tourmaline());
            }

            if (Utility.RandomDouble() < 0.01)
            {
                DropItem(new Alexandrite());
            }
            if (Utility.RandomDouble() < 0.01)
            {
                DropItem(new Ametrine());
            }
            if (Utility.RandomDouble() < 0.01)
            {
                DropItem(new Kunzite());
            }
            if (Utility.RandomDouble() < 0.01)
            {
                DropItem(new Ruby());
            }
            if (Utility.RandomDouble() < 0.01)
            {
                DropItem(new Sapphire());
            }
            if (Utility.RandomDouble() < 0.01)
            {
                DropItem(new Tanzanite());
            }
            if (Utility.RandomDouble() < 0.01)
            {
                DropItem(new Topaz());
            }
            if (Utility.RandomDouble() < 0.01)
            {
                DropItem(new Zultanite());
            }

            if (Utility.RandomDouble() < 0.01)
            {
                DropItem(new Diamond());
            }
            if (Utility.RandomDouble() < 0.01)
            {
                DropItem(new Emerald());
            }
            if (Utility.RandomDouble() < 0.01)
            {
                DropItem(new PinkQuartz());
            }
            if (Utility.RandomDouble() < 0.01)
            {
                DropItem(new StarSapphire());
            }

/////////////////////////////////////// Supplies

            switch (Utility.Random(18))
            {
            case 0: DropItem(new Board(80)); break;

            case 1: DropItem(new BoltOfCloth(80)); break;

            case 2: DropItem(new Bottle(80)); break;

            case 3: DropItem(new CopperWire(80)); break;

            case 4: DropItem(new Cotton(80)); break;

            case 5: DropItem(new DarkYarn(80)); break;

            case 6: DropItem(new Feather(80)); break;

            case 7: DropItem(new Flax(80)); break;

            case 8: DropItem(new Gears(80)); break;

            case 9: DropItem(new GoldWire(80)); break;

            case 10: DropItem(new IronIngot(80)); break;

            case 11: DropItem(new IronWire(80)); break;

            case 12: DropItem(new Leather(80)); break;

            case 13: DropItem(new LightYarn(80)); break;

            case 14: DropItem(new Shaft(80)); break;

            case 15: DropItem(new SilverWire(80)); break;

            case 16: DropItem(new SpoolOfThread(80)); break;

            case 17: DropItem(new Springs(80)); break;

            case 18: DropItem(new Wool(80)); break;
            }

            switch (Utility.Random(5))
            {
            case 0: DropItem(new ArcaneStone(25)); break;

            case 1: DropItem(new BeetleEgg(25)); break;

            case 2: DropItem(new DragonScale(25)); break;

            case 3: DropItem(new FishScale(25)); break;

            case 4: DropItem(new SerpentScale(25)); break;
            }

            Item ReagentLoot = Loot.RandomReagent();

            ReagentLoot.Amount = Utility.RandomMinMax(50, 100);
            DropItem(ReagentLoot);

            if (Utility.RandomDouble() < 0.05)
            {
                DropItem(new SackFlour());
            }

/////////////////////////////////////// Rare Items

            if (Utility.RandomDouble() < 0.01)
            {
                DropItem(new DyeTub());
            }

/////////////////////////////////////// LV 20-30
            if (Utility.RandomDouble() < 0.10)
            {
                BaseWeapon weapon = Loot.RandomWeapon(true);
                switch (Utility.Random(31))
                {
                case 0: weapon = new DoubleAxe(); break;                      // Lv20

                case 1: weapon = new TwoHandedAxe(); break;                   // Lv25

                case 2: weapon = new WarAxe(); break;                         // Lv30

                case 3: weapon = new CompositeBow(); break;                   // Lv20

                case 4: weapon = new EbonyCrossbow(); break;                  // Lv20

                case 5: weapon = new FireBow(); break;                        // Lv25

                case 6: weapon = new GrassBow(); break;                       // Lv25

                case 7: weapon = new IceBow(); break;                         // Lv25

                case 8: weapon = new LightningBow(); break;                   // Lv25

                case 9: weapon = new EbonyWarBow(); break;                    // Lv30

                case 10: weapon = new PistolCrossbow(); break;                // Lv30

                case 11: weapon = new EbonyDualDaggers(); break;              // Lv20

                case 12: weapon = new Tekagi(); break;                        // Lv25

                case 13: weapon = new ElvenSpellblade(); break;               // Lv30

                case 14: weapon = new WarMace(); break;                       // Lv20

                case 15: weapon = new Tessen(); break;                        // Lv25

                case 16: weapon = new HammerPick(); break;                    // Lv30

                case 17: weapon = new Spear(); break;                         // Lv20

                case 18: weapon = new BoneSpear(); break;                     // Lv25

                case 19: weapon = new BubbleStaff(); break;                   // Lv25

                case 20: weapon = new CrystalStaff(); break;                  // Lv25

                case 21: weapon = new EnergyStaff(); break;                   // Lv25

                case 22: weapon = new FireStaff(); break;                     // Lv25

                case 23: weapon = new VineStaff(); break;                     // Lv25

                case 24: weapon = new BlackStaff(); break;                    // Lv30

                case 25: weapon = new VikingSword(); break;                   // Lv20

                case 26: weapon = new Wakizashi(); break;                     // Lv20

                case 27: weapon = new Daisho(); break;                        // Lv30

                case 28: weapon = new EbonyScimitar(); break;                 // Lv30

                case 29: weapon = new RuneBlade(); break;                     // Lv30

                default: weapon = new Longsword(); break;                     // Lv20
                }

                BaseRunicTool.ApplyAttributesTo(weapon, 2, 5, 50);
                DropItem(weapon);
            }

/////////////////////////////////////// LV 18-27
            if (Utility.RandomDouble() < 0.10)
            {
                BaseArmor armor = Loot.RandomArmor(true);
                switch (Utility.Random(18))
                {
                case 0: armor = new HideFemaleChest(); break;                   // Lv18

                case 1: armor = new HideGloves(); break;                        // Lv18

                case 2: armor = new HideGorget(); break;                        // Lv18

                case 3: armor = new HidePants(); break;                         // Lv18

                case 4: armor = new HidePauldrons(); break;                     // Lv18

                case 5: armor = new StuddedDo(); break;                         // Lv21

                case 6: armor = new StuddedHaidate(); break;                    // Lv21

                case 7: armor = new StuddedHiroSode(); break;                   // Lv21

                case 8: armor = new StuddedMempo(); break;                      // Lv21

                case 9: armor = new StuddedSuneate(); break;                    // Lv21

                case 10: armor = new VikingStuddedArms(); break;                // Lv24

                case 11: armor = new VikingStuddedCap(); break;                 // Lv24

                case 12: armor = new VikingStuddedChest(); break;               // Lv24

                case 13: armor = new VikingStuddedLegs(); break;                // Lv24

                case 14: armor = new ChainChest(); break;                       // Lv27

                case 15: armor = new ChainCoif(); break;                        // Lv27

                case 16: armor = new ChainLegs(); break;                        // Lv27

                default: armor = new HideChest(); break;                        // Lv18
                }

                BaseRunicTool.ApplyAttributesTo(armor, 3, 5, 50);
                DropItem(armor);
            }

            if (Utility.RandomDouble() < 0.10)
            {
                BaseHat hat = Loot.RandomHat(true);
                BaseRunicTool.ApplyAttributesTo(hat, 3, 12, 15);
                DropItem(hat);
            }
            if (Utility.RandomDouble() < 0.10)
            {
                BaseClothing clothing = Loot.RandomClothing(true);
                BaseRunicTool.ApplyAttributesTo(clothing, 3, 12, 15);
                DropItem(clothing);
            }

            if (Utility.RandomDouble() < 0.05)
            {
                BaseShield shield1 = new MetalShield();
                if (Core.AOS)
                {
                    BaseRunicTool.ApplyAttributesTo(shield1, 3, 5, 50);
                }
                DropItem(shield1);
            }
            if (Utility.RandomDouble() < 0.05)
            {
                BaseShield shield2 = new WoodenKiteShield();
                if (Core.AOS)
                {
                    BaseRunicTool.ApplyAttributesTo(shield2, 3, 5, 50);
                }
                DropItem(shield2);
            }
            if (Utility.RandomDouble() < 0.05)
            {
                BaseShield shield3 = new MetalKiteShield();
                if (Core.AOS)
                {
                    BaseRunicTool.ApplyAttributesTo(shield3, 3, 5, 50);
                }
                DropItem(shield3);
            }

            if (Utility.RandomDouble() < 0.10)
            {
                BaseJewel bracelet = new SilverBracelet();
                if (Core.AOS)
                {
                    BaseRunicTool.ApplyAttributesTo(bracelet, 3, 12, 15);
                }
                DropItem(bracelet);
            }
            if (Utility.RandomDouble() < 0.10)
            {
                BaseJewel earrings = new SilverEarrings();
                if (Core.AOS)
                {
                    BaseRunicTool.ApplyAttributesTo(earrings, 3, 12, 15);
                }
                DropItem(earrings);
            }
            if (Utility.RandomDouble() < 0.10)
            {
                BaseJewel necklace = new SilverNecklace();
                if (Core.AOS)
                {
                    BaseRunicTool.ApplyAttributesTo(necklace, 3, 12, 15);
                }
                DropItem(necklace);
            }
            if (Utility.RandomDouble() < 0.10)
            {
                BaseJewel ring = new SilverRing();
                if (Core.AOS)
                {
                    BaseRunicTool.ApplyAttributesTo(ring, 3, 12, 15);
                }
                DropItem(ring);
            }
        }
Beispiel #6
0
        public MongbatHideoutTreasureChest2() : base(0xE43)
        {
            Name    = "a treasure chest -50-";
            Movable = true;
            Weight  = 1000.0;

            TrapPower = 0;
            Locked    = true;

            RequiredSkill = 50;
            LockLevel     = 50;
            MaxLockLevel  = 80;

/////////////////////////////////// Gold
            if (Utility.RandomDouble() < 0.25)
            {
                DropItem(new Gold(Utility.Random(20, 300)));
            }

/////////////////////////////////////// Supplies

            switch (Utility.Random(18))
            {
            case 0: DropItem(new Board(70)); break;

            case 1: DropItem(new BoltOfCloth(70)); break;

            case 2: DropItem(new Bottle(70)); break;

            case 3: DropItem(new CopperWire(70)); break;

            case 4: DropItem(new Cotton(70)); break;

            case 5: DropItem(new DarkYarn(70)); break;

            case 6: DropItem(new Feather(70)); break;

            case 7: DropItem(new Flax(70)); break;

            case 8: DropItem(new Gears(70)); break;

            case 9: DropItem(new GoldWire(70)); break;

            case 10: DropItem(new IronIngot(70)); break;

            case 11: DropItem(new IronWire(70)); break;

            case 12: DropItem(new Leather(70)); break;

            case 13: DropItem(new LightYarn(70)); break;

            case 14: DropItem(new Shaft(70)); break;

            case 15: DropItem(new SilverWire(70)); break;

            case 16: DropItem(new SpoolOfThread(70)); break;

            case 17: DropItem(new Springs(70)); break;

            case 18: DropItem(new Wool(70)); break;
            }

            switch (Utility.Random(5))
            {
            case 0: DropItem(new BeetleEgg(25)); break;

            case 1: DropItem(new FishScale(25)); break;

            case 2: DropItem(new Nirnroot(25)); break;

            case 3: DropItem(new SerpentScale(25)); break;

            case 4: DropItem(new ThunderStone(25)); break;
            }

            Item ReagentLoot = Loot.RandomReagent();

            ReagentLoot.Amount = Utility.RandomMinMax(10, 15);
            DropItem(ReagentLoot);

            if (Utility.RandomDouble() < 0.05)
            {
                DropItem(new SackFlour());
            }

/////////////////////////////////////// Rare Items

            if (Utility.RandomDouble() < 0.01)
            {
                DropItem(new DyeTub());
            }

/////////////////////////////////////// LV 10-20
/////////////////////////////////////// LV 10-25 for staves
            if (Utility.RandomDouble() < 0.10)
            {
                BaseWeapon weapon = Loot.RandomWeapon(true);
                switch (Utility.Random(28))
                {
                case 0: weapon = new BattleAxe(); break;                   // Lv10

                case 1: weapon = new DoubleAxe(); break;                   // Lv20

                case 2: weapon = new MagicalShortbow(); break;             // Lv10

                case 3: weapon = new RepeatingCrossbow(); break;           // Lv10

                case 4: weapon = new ButcherKnife(); break;                // Lv10

                case 5: weapon = new CompositeBow(); break;                // Lv20

                case 6: weapon = new EbonyCrossbow(); break;               // Lv20

                case 7: weapon = new EbonyDagger(); break;                 // Lv10

                case 8: weapon = new Sai(); break;                         // Lv15

                case 9: weapon = new EbonyDualDaggers(); break;            // Lv20

                case 10: weapon = new Maul(); break;                       // Lv10

                case 11: weapon = new Scepter(); break;                    // Lv15

                case 12: weapon = new WarMace(); break;                    // Lv20

                case 13: weapon = new Pilum(); break;                      // Lv10

                case 14: weapon = new Pike(); break;                       // Lv15

                case 15: weapon = new Spear(); break;                      // Lv20

                case 16: weapon = new QuarterStaff(); break;               // Lv10

                case 17: weapon = new ReptilianStaff(); break;             // Lv15

                case 18: weapon = new BubbleStaff(); break;                // Lv25

                case 19: weapon = new CrystalStaff(); break;               // Lv25

                case 20: weapon = new EnergyStaff(); break;                // Lv25

                case 21: weapon = new FireStaff(); break;                  // Lv25

                case 22: weapon = new VineStaff(); break;                  // Lv25

                case 23: weapon = new EbonyRapier(); break;                // Lv10

                case 24: weapon = new Scimitar(); break;                   // Lv10

                case 25: weapon = new Longsword(); break;                  // Lv20

                case 26: weapon = new VikingSword(); break;                // Lv20

                default: weapon = new Wakizashi(); break;                  // Lv20
                }

                switch (Utility.Random(14))
                {
                case 0: weapon.Attributes.AttackChance = Utility.RandomMinMax(1, 5); break;

                case 1: weapon.Attributes.DefendChance = Utility.RandomMinMax(1, 5); break;

                case 2: weapon.Attributes.Luck = Utility.RandomMinMax(1, 10); break;

                case 3: weapon.Attributes.WeaponSpeed = Utility.RandomMinMax(1, 25); break;

                case 4: weapon.WeaponAttributes.HitDispel = Utility.RandomMinMax(2, 10); break;

                case 5: weapon.WeaponAttributes.HitFireball = Utility.RandomMinMax(2, 10); break;

                case 6: weapon.WeaponAttributes.HitHarm = Utility.RandomMinMax(2, 10); break;

                case 7: weapon.WeaponAttributes.HitLeechHits = Utility.RandomMinMax(2, 10); break;

                case 8: weapon.WeaponAttributes.HitLeechMana = Utility.RandomMinMax(2, 10); break;

                case 9: weapon.WeaponAttributes.HitLeechStam = Utility.RandomMinMax(2, 10); break;

                case 10: weapon.WeaponAttributes.HitLightning = Utility.RandomMinMax(2, 10); break;

                case 11: weapon.WeaponAttributes.HitLowerAttack = Utility.RandomMinMax(2, 10); break;

                case 12: weapon.WeaponAttributes.HitLowerDefend = Utility.RandomMinMax(2, 10); break;

                default: weapon.Attributes.WeaponDamage = Utility.RandomMinMax(1, 10); break;
                }

                switch (Utility.Random(14))
                {
                case 0: weapon.Attributes.AttackChance = Utility.RandomMinMax(1, 5); break;

                case 1: weapon.Attributes.DefendChance = Utility.RandomMinMax(1, 5); break;

                case 2: weapon.Attributes.Luck = Utility.RandomMinMax(1, 10); break;

                case 3: weapon.Attributes.WeaponSpeed = Utility.RandomMinMax(1, 25); break;

                case 4: weapon.WeaponAttributes.HitDispel = Utility.RandomMinMax(2, 10); break;

                case 5: weapon.WeaponAttributes.HitFireball = Utility.RandomMinMax(2, 10); break;

                case 6: weapon.WeaponAttributes.HitHarm = Utility.RandomMinMax(2, 10); break;

                case 7: weapon.WeaponAttributes.HitLeechHits = Utility.RandomMinMax(2, 10); break;

                case 8: weapon.WeaponAttributes.HitLeechMana = Utility.RandomMinMax(2, 10); break;

                case 9: weapon.WeaponAttributes.HitLeechStam = Utility.RandomMinMax(2, 10); break;

                case 10: weapon.WeaponAttributes.HitLightning = Utility.RandomMinMax(2, 10); break;

                case 11: weapon.WeaponAttributes.HitLowerAttack = Utility.RandomMinMax(2, 10); break;

                case 12: weapon.WeaponAttributes.HitLowerDefend = Utility.RandomMinMax(2, 10); break;

                default: weapon.Attributes.WeaponDamage = Utility.RandomMinMax(1, 10); break;
                }

                DropItem(weapon);
            }

/////////////////////////////////////// LV 12-18
            if (Utility.RandomDouble() < 0.10)
            {
                BaseArmor armor = Loot.RandomArmor(true);
                switch (Utility.Random(19))
                {
                case 0: armor = new ChitinArms(); break;                         // Lv12

                case 1: armor = new ChitinChest(); break;                        // Lv12

                case 2: armor = new ChitinGloves(); break;                       // Lv12

                case 3: armor = new ChitinGorget(); break;                       // Lv12

                case 4: armor = new ChitinHelmet(); break;                       // Lv12

                case 5: armor = new ChitinLegs(); break;                         // Lv12

                case 6: armor = new FemaleStuddedChest(); break;                 // Lv15

                case 7: armor = new StuddedArms(); break;                        // Lv15

                case 8: armor = new StuddedBustierArms(); break;                 // Lv15

                case 9: armor = new StuddedChest(); break;                       // Lv15

                case 10: armor = new StuddedGloves(); break;                     // Lv15

                case 11: armor = new StuddedGorget(); break;                     // Lv15

                case 12: armor = new StuddedLegs(); break;                       // Lv15

                case 13: armor = new HideFemaleChest(); break;                   // Lv18

                case 14: armor = new HideGloves(); break;                        // Lv18

                case 15: armor = new HideGorget(); break;                        // Lv18

                case 16: armor = new HidePants(); break;                         // Lv18

                case 17: armor = new HidePauldrons(); break;                     // Lv18

                default: armor = new HideChest(); break;                         // Lv18
                }

                BaseRunicTool.ApplyAttributesTo(armor, 3, 5, 50);
                DropItem(armor);
            }

            if (Utility.RandomDouble() < 0.10)
            {
                BaseHat hat = Loot.RandomHat(true);
                BaseRunicTool.ApplyAttributesTo(hat, 3, 5, 10);
                DropItem(hat);
            }
            if (Utility.RandomDouble() < 0.10)
            {
                BaseClothing clothing = Loot.RandomClothing(true);
                BaseRunicTool.ApplyAttributesTo(clothing, 3, 5, 10);
                DropItem(clothing);
            }

            if (Utility.RandomDouble() < 0.05)
            {
                BaseShield shield1 = new MetalShield();
                if (Core.AOS)
                {
                    BaseRunicTool.ApplyAttributesTo(shield1, 3, 5, 50);
                }
                DropItem(shield1);
            }
            if (Utility.RandomDouble() < 0.05)
            {
                BaseShield shield2 = new WoodenKiteShield();
                if (Core.AOS)
                {
                    BaseRunicTool.ApplyAttributesTo(shield2, 3, 5, 50);
                }
                DropItem(shield2);
            }
            if (Utility.RandomDouble() < 0.05)
            {
                BaseShield shield3 = new MetalKiteShield();
                if (Core.AOS)
                {
                    BaseRunicTool.ApplyAttributesTo(shield3, 3, 5, 50);
                }
                DropItem(shield3);
            }

            if (Utility.RandomDouble() < 0.10)
            {
                BaseJewel bracelet = new SilverBracelet();
                if (Core.AOS)
                {
                    BaseRunicTool.ApplyAttributesTo(bracelet, 3, 5, 10);
                }
                DropItem(bracelet);
            }
            if (Utility.RandomDouble() < 0.10)
            {
                BaseJewel earrings = new SilverEarrings();
                if (Core.AOS)
                {
                    BaseRunicTool.ApplyAttributesTo(earrings, 3, 5, 10);
                }
                DropItem(earrings);
            }
            if (Utility.RandomDouble() < 0.10)
            {
                BaseJewel necklace = new SilverNecklace();
                if (Core.AOS)
                {
                    BaseRunicTool.ApplyAttributesTo(necklace, 3, 5, 10);
                }
                DropItem(necklace);
            }
            if (Utility.RandomDouble() < 0.10)
            {
                BaseJewel ring = new SilverRing();
                if (Core.AOS)
                {
                    BaseRunicTool.ApplyAttributesTo(ring, 3, 5, 10);
                }
                DropItem(ring);
            }
        }
        public BleakWindTunnelsChest1() : base(0xE43)
        {
            Name    = "a treasure chest -50-";
            Hue     = 1151;
            Movable = true;
            Weight  = 1000.0;

            TrapPower = 0;
            Locked    = true;

            RequiredSkill = 50;
            LockLevel     = 50;
            MaxLockLevel  = 80;

/////////////////////////////////// Gold
            if (Utility.RandomDouble() < 0.25)
            {
                DropItem(new Gold(Utility.Random(20, 300)));
            }

            if (Utility.RandomDouble() < 0.15)
            {
                DropItem(new TurquoiseCustom());
            }

            Item GemLoot = Loot.RandomGem();

            DropItem(GemLoot);

/////////////////////////////////////// Recipe Scrolls
/////////////////////////////////// Ingredients
            if (Utility.RandomDouble() < 0.10)
            {
                DropItem(new BagOfSugarRecipe(5001));
            }

            if (Utility.RandomDouble() < 0.10)
            {
                DropItem(new CocoaButterRecipe(5004));
            }

            if (Utility.RandomDouble() < 0.10)
            {
                DropItem(new CocoaLiquorRecipe(5005));
            }

            if (Utility.RandomDouble() < 0.10)
            {
                DropItem(new DoughRecipe(5002));
            }

            if (Utility.RandomDouble() < 0.10)
            {
                DropItem(new SackFlourRecipe(5000));
            }

            if (Utility.RandomDouble() < 0.10)
            {
                DropItem(new SweetDoughRecipe(5003));
            }
/////////////////////////////////// Random
            if (Utility.RandomDouble() < 0.10)
            {
                DropItem(new RandomBakingRecipe(Utility.RandomMinMax(5501, 5550)));
            }

            if (Utility.RandomDouble() < 0.10)
            {
                DropItem(new RandomBoilingRecipe(Utility.RandomMinMax(5601, 5626)));
            }

            if (Utility.RandomDouble() < 0.10)
            {
                DropItem(new RandomIngredientsRecipe(Utility.RandomMinMax(5000, 5005)));
            }

            if (Utility.RandomDouble() < 0.10)
            {
                DropItem(new RandomOilsRecipe(Utility.RandomMinMax(5101, 5105)));
            }

            if (Utility.RandomDouble() < 0.10)
            {
                DropItem(new RandomPreparationsRecipe(Utility.RandomMinMax(5401, 5435)));
            }

            if (Utility.RandomDouble() < 0.10)
            {
                DropItem(new RandomRawMeatPrepRecipe(Utility.RandomMinMax(5301, 5342)));
            }

            if (Utility.RandomDouble() < 0.10)
            {
                DropItem(new RandomSaucesRecipe(Utility.RandomMinMax(5201, 5208)));
            }
/////////////////////////////////// Misc
            if (Utility.RandomDouble() < 0.10)
            {
                DropItem(new HarpyEggSoupRecipe(5019));
            }

            if (Utility.RandomDouble() < 0.10)
            {
                DropItem(new UnbakedQuicheRecipe(5019));
            }

/////////////////////////////////////// Supplies

            switch (Utility.Random(19))
            {
            case 0: DropItem(new Board(90)); break;

            case 1: DropItem(new BoltOfCloth(90)); break;

            case 2: DropItem(new Bottle(90)); break;

            case 3: DropItem(new CopperWire(90)); break;

            case 4: DropItem(new Cotton(90)); break;

            case 5: DropItem(new DarkYarn(90)); break;

            case 6: DropItem(new Feather(90)); break;

            case 7: DropItem(new Flax(90)); break;

            case 8: DropItem(new Gears(90)); break;

            case 9: DropItem(new GoldWire(90)); break;

            case 10: DropItem(new IronIngot(90)); break;

            case 11: DropItem(new IronWire(90)); break;

            case 12: DropItem(new Leather(90)); break;

            case 13: DropItem(new LightYarn(90)); break;

            case 14: DropItem(new Shaft(90)); break;

            case 15: DropItem(new SilverWire(90)); break;

            case 16: DropItem(new SpoolOfThread(90)); break;

            case 17: DropItem(new Springs(90)); break;

            case 18: DropItem(new Wool(90)); break;
            }

            switch (Utility.Random(5))
            {
            case 0: DropItem(new ArcaneStone(25)); break;

            case 1: DropItem(new DiamondDust(25)); break;

            case 2: DropItem(new ElementalDust(25)); break;

            case 3: DropItem(new SpiderEgg(25)); break;

            case 4: DropItem(new ThunderStone(25)); break;
            }

            Item ReagentLoot = Loot.RandomReagent();

            ReagentLoot.Amount = 50;
            DropItem(ReagentLoot);

            if (Utility.RandomDouble() < 0.05)
            {
                DropItem(new SackFlour());
            }

/////////////////////////////////////// Rare Items

            if (Utility.RandomDouble() < 0.01)
            {
                DropItem(new DyeTub());
            }

            if (Utility.RandomDouble() < 0.05)
            {
                BaseWeapon weapon = Loot.RandomWeapon(true);
                BaseRunicTool.ApplyAttributesTo(weapon, 2, 5, 10);
                weapon.Hue = 1151;
                weapon.WeaponAttributes.HitHarm = 5;
                DropItem(weapon);
            }
            if (Utility.RandomDouble() < 0.05)
            {
                BaseArmor armor = Loot.RandomArmor(true);
                BaseRunicTool.ApplyAttributesTo(armor, 2, 5, 10);
                armor.Hue       = 1151;
                armor.ColdBonus = 10;
                DropItem(armor);
            }
            if (Utility.RandomDouble() < 0.05)
            {
                BaseHat hat = Loot.RandomHat(true);
                BaseRunicTool.ApplyAttributesTo(hat, 2, 5, 10);
                hat.Hue = 1151;
                hat.Resistances.Cold = 10;
                DropItem(hat);
            }
            if (Utility.RandomDouble() < 0.05)
            {
                BaseClothing clothing = Loot.RandomClothing(true);
                BaseRunicTool.ApplyAttributesTo(clothing, 2, 5, 10);
                clothing.Hue = 1151;
                clothing.Resistances.Cold = 10;
                DropItem(clothing);
            }
            if (Utility.RandomDouble() < 0.05)
            {
                BaseShield shield = new MercenaryShield();
                if (Core.AOS)
                {
                    BaseRunicTool.ApplyAttributesTo(shield, 2, 5, 10);
                }
                shield.Hue       = 1151;
                shield.ColdBonus = 10;
                DropItem(shield);
            }
            if (Utility.RandomDouble() < 0.05)
            {
                BaseJewel bracelet = new SilverBracelet();
                if (Core.AOS)
                {
                    BaseRunicTool.ApplyAttributesTo(bracelet, 2, 5, 10);
                }
                bracelet.Hue = 1151;
                bracelet.Resistances.Cold = 10;
                DropItem(bracelet);
            }
            if (Utility.RandomDouble() < 0.05)
            {
                BaseJewel earrings = new SilverEarrings();
                if (Core.AOS)
                {
                    BaseRunicTool.ApplyAttributesTo(earrings, 2, 5, 10);
                }
                earrings.Hue = 1151;
                earrings.Resistances.Cold = 10;
                DropItem(earrings);
            }
            if (Utility.RandomDouble() < 0.05)
            {
                BaseJewel necklace = new SilverNecklace();
                if (Core.AOS)
                {
                    BaseRunicTool.ApplyAttributesTo(necklace, 2, 5, 10);
                }
                necklace.Hue = 1151;
                necklace.Resistances.Cold = 10;
                DropItem(necklace);
            }
            if (Utility.RandomDouble() < 0.05)
            {
                BaseJewel ring = new SilverRing();
                if (Core.AOS)
                {
                    BaseRunicTool.ApplyAttributesTo(ring, 2, 5, 10);
                }
                ring.Hue = 1151;
                ring.Resistances.Cold = 10;
                DropItem(ring);
            }
        }
Beispiel #8
0
            protected override void OnTarget(Mobile from, object target)
            {
                Item item = target as Item;
                Type type = item.GetType();

                if (item is BaseArmor || item is BaseWeapon || item is BaseHat || item is BaseJewel || item is BaseTalisman || item is BaseQuiver || item is Spellbook)
                {
                    if (Runescribing.GetProps(item) >= 7)
                    {
                        from.SendMessage("This item cannot be enhanced any further");
                    }
                    else if (item.ChantSlots >= 3)
                    {
                        from.SendMessage("This item cannot handle any more enhancments.");
                    }
                    else if (Runescribing.CheckBlacklist(type) == true)
                    {
                        from.SendMessage("This item cannot be enhanced.");
                    }
                    else
                    {
                        int value = m_Rune.BaseAmount;
                        int max   = m_Rune.MaxAmount;

                        if (item is BaseArmor)
                        {
                            BaseArmor i = item as BaseArmor;

                            if (i.Attributes.CastRecovery + value <= max)
                            {
                                i.Attributes.CastRecovery += value;
                            }
                            else
                            {
                                i.Attributes.CastRecovery = max;
                            }
                        }

                        if (item is BaseWeapon)
                        {
                            BaseWeapon i = item as BaseWeapon;

                            if (i.Attributes.CastRecovery + value <= max)
                            {
                                i.Attributes.CastRecovery += value;
                            }
                            else
                            {
                                i.Attributes.CastRecovery = max;
                            }
                        }

                        if (item is BaseHat)
                        {
                            BaseHat i = item as BaseHat;

                            if (i.Attributes.CastRecovery + value <= max)
                            {
                                i.Attributes.CastRecovery += value;
                            }
                            else
                            {
                                i.Attributes.CastRecovery = max;
                            }
                        }

                        if (item is BaseJewel)
                        {
                            BaseJewel i = item as BaseJewel;

                            if (i.Attributes.CastRecovery + value <= max)
                            {
                                i.Attributes.CastRecovery += value;
                            }
                            else
                            {
                                i.Attributes.CastRecovery = max;
                            }
                        }

                        if (item is BaseTalisman)
                        {
                            BaseTalisman i = item as BaseTalisman;

                            if (i.Attributes.CastRecovery + value <= max)
                            {
                                i.Attributes.CastRecovery += value;
                            }
                            else
                            {
                                i.Attributes.CastRecovery = max;
                            }
                        }

                        if (item is BaseQuiver)
                        {
                            BaseQuiver i = item as BaseQuiver;

                            if (i.Attributes.CastRecovery + value <= max)
                            {
                                i.Attributes.CastRecovery += value;
                            }
                            else
                            {
                                i.Attributes.CastRecovery = max;
                            }
                        }

                        if (item is Spellbook)
                        {
                            Spellbook i = item as Spellbook;

                            if (i.Attributes.CastRecovery + value <= max)
                            {
                                i.Attributes.CastRecovery += value;
                            }
                            else
                            {
                                i.Attributes.CastRecovery = max;
                            }
                        }

                        item.ChantSlots += 1;
                        m_Rune.Delete();
                    }
                }
                else
                {
                    from.SendMessage("You cannot use this enhancement on that.");
                }
            }
        public AmazonTreeSettlementTreasureChest() : base(0xE43)
        {
            Name    = "a treasure chest -10-";
            Movable = true;
            Weight  = 1000.0;

            TrapPower = 0;
            Locked    = true;

            RequiredSkill = 10;
            LockLevel     = 10;
            MaxLockLevel  = 15;

            // Gold
            if (Utility.RandomDouble() < 0.25)
            {
                DropItem(new Gold(Utility.Random(15, 200)));
            }

/////////////////////////////////////// Supplies

            if (Utility.RandomDouble() < 0.10)
            {
                DropItem(new Arrow(Utility.Random(2, 6)));
            }

            if (Utility.RandomDouble() < 0.10)
            {
                DropItem(new Bolt(Utility.Random(2, 6)));
            }

            Item ReagentLoot = Loot.RandomReagent();

            ReagentLoot.Amount = Utility.Random(2, 6);
            DropItem(ReagentLoot);

            if (Utility.RandomDouble() < 0.10)
            {
                DropItem(new Bandage(Utility.Random(2, 6)));
            }

            if (Utility.RandomDouble() < 0.10)
            {
                DropItem(new Bedroll());
            }

            if (Utility.RandomDouble() < 0.10)
            {
                DropItem(new Bottle(Utility.Random(2, 6)));
            }

            if (Utility.RandomDouble() < 0.10)
            {
                DropItem(new Lockpick(Utility.Random(2, 6)));
            }

            Item PotionLoot = Loot.RandomPotion();

            DropItem(PotionLoot);

/////////////////////////////////////// Tools

            if (Utility.RandomDouble() < 0.10)
            {
                DropItem(new FishingPole());
            }

            if (Utility.RandomDouble() < 0.10)
            {
                DropItem(new Shovel());
            }

            if (Utility.RandomDouble() < 0.10)
            {
                DropItem(new Skillet());
            }

/////////////////////////////////////// Rare Items

            if (Utility.RandomDouble() < 0.01)
            {
                DropItem(new DyeTub());
            }

            if (Utility.RandomDouble() < 0.05)
            {
                DropItem(new AmazonianFighterBelt());
            }
            if (Utility.RandomDouble() < 0.05)
            {
                DropItem(new AmazonianFighterBoots());
            }
            if (Utility.RandomDouble() < 0.05)
            {
                DropItem(new AmazonianFighterBustier());
            }
            if (Utility.RandomDouble() < 0.05)
            {
                DropItem(new AmazonianFighterGloves());
            }
            if (Utility.RandomDouble() < 0.05)
            {
                DropItem(new AmazonianFighterHelmet());
            }

            if (Utility.RandomDouble() < 0.10)
            {
                BaseWeapon weapon = Loot.RandomWeapon(true);
                switch (Utility.Random(21))
                {
                case 0: weapon = new Hatchet(); break;

                case 1: weapon = new Bow(); break;

                case 2: weapon = new Crossbow(); break;

                case 3: weapon = new Club(); break;

                case 4: weapon = new Mace(); break;

                case 5: weapon = new Maul(); break;

                case 6: weapon = new Pitchfork(); break;

                case 7: weapon = new ShortSpear(); break;

                case 8: weapon = new GnarledStaff(); break;

                case 9: weapon = new ShepherdsCrook(); break;

                case 10: weapon = new Cutlass(); break;

                case 11: weapon = new Katana(); break;

                case 12: weapon = new Kryss(); break;

                case 13: weapon = new Scimitar(); break;

                case 14: weapon = new AssassinSpike(); break;

                case 15: weapon = new DiamondMace(); break;

                case 16: weapon = new Leafblade(); break;

                case 17: weapon = new MagicalShortbow(); break;

                case 18: weapon = new RadiantScimitar(); break;

                case 19: weapon = new WildStaff(); break;

                default: weapon = new Dagger(); break;
                }

                BaseRunicTool.ApplyAttributesTo(weapon, 2, 10, 15);
                weapon.DamageLevel     = (WeaponDamageLevel)Utility.Random(2);
                weapon.AccuracyLevel   = (WeaponAccuracyLevel)Utility.Random(2);
                weapon.DurabilityLevel = (WeaponDurabilityLevel)Utility.Random(2);
                weapon.Quality         = WeaponQuality.Regular;

                DropItem(weapon);
            }

            if (Utility.RandomDouble() < 0.10)
            {
                BaseArmor armor = Loot.RandomArmor(true);
                switch (Utility.Random(10))
                {
                case 0: armor = new FemaleLeatherChest(); break;

                case 1: armor = new LeatherBustierArms(); break;

                case 2: armor = new LeatherArms(); break;

                case 3: armor = new LeatherCap(); break;

                case 4: armor = new LeatherGloves(); break;

                case 5: armor = new LeatherGorget(); break;

                case 6: armor = new LeatherLegs(); break;

                case 7: armor = new LeatherShorts(); break;

                case 8: armor = new LeatherSkirt(); break;

                default: armor = new LeatherChest(); break;
                }

                BaseRunicTool.ApplyAttributesTo(armor, 3, 10, 15);
                armor.ProtectionLevel = (ArmorProtectionLevel)Utility.Random(3);
                armor.Durability      = (ArmorDurabilityLevel)Utility.Random(3);
                armor.Quality         = ArmorQuality.Regular;

                DropItem(armor);
            }

            if (Utility.RandomDouble() < 0.10)
            {
                BaseHat hat = Loot.RandomHat(true);
                switch (Utility.Random(5))
                {
                case 0: hat = new BearMask(); break;

                case 1: hat = new DeerMask(); break;

                case 2: hat = new FeatheredHat(); break;

                case 3: hat = new WizardsHat(); break;

                default: hat = new TribalMask(); break;
                }

                BaseRunicTool.ApplyAttributesTo(hat, 3, 10, 15);

                DropItem(hat);
            }

            if (Utility.RandomDouble() < 0.10)
            {
                BaseClothing clothing = Loot.RandomClothing(true);
                BaseRunicTool.ApplyAttributesTo(clothing, 3, 10, 15);

                DropItem(clothing);
            }

            if (Utility.RandomDouble() < 0.10)
            {
                BaseShield shield = new MetalShield();
                if (Core.AOS)
                {
                    BaseRunicTool.ApplyAttributesTo(shield, 3, 10, 15);
                }

                DropItem(shield);
            }

            if (Utility.RandomDouble() < 0.10)
            {
                BaseJewel bracelet = new GoldBracelet();
                if (Core.AOS)
                {
                    BaseRunicTool.ApplyAttributesTo(bracelet, 3, 10, 15);
                }

                DropItem(bracelet);
            }

            if (Utility.RandomDouble() < 0.10)
            {
                BaseJewel earrings = new GoldEarrings();
                if (Core.AOS)
                {
                    BaseRunicTool.ApplyAttributesTo(earrings, 3, 10, 15);
                }

                DropItem(earrings);
            }

            if (Utility.RandomDouble() < 0.10)
            {
                BaseJewel necklace = new GoldNecklace();
                if (Core.AOS)
                {
                    BaseRunicTool.ApplyAttributesTo(necklace, 3, 10, 15);
                }

                DropItem(necklace);
            }

            if (Utility.RandomDouble() < 0.10)
            {
                BaseJewel ring = new GoldRing();
                if (Core.AOS)
                {
                    BaseRunicTool.ApplyAttributesTo(ring, 3, 10, 15);
                }

                DropItem(ring);
            }
        }
 private static void ApplyResistance( BaseHat hat, int min, int max, ResistanceType res, int low, int high )
 {
     switch ( res )
     {
         case ResistanceType.Physical: hat.Resistances.Physical += Scale( min, max, low, high ); break;
         case ResistanceType.Fire: hat.Resistances.Fire += Scale( min, max, low, high ); break;
         case ResistanceType.Cold: hat.Resistances.Cold += Scale( min, max, low, high ); break;
         case ResistanceType.Poison: hat.Resistances.Poison += Scale( min, max, low, high ); break;
         case ResistanceType.Energy: hat.Resistances.Energy += Scale( min, max, low, high ); break;
     }
 }
        public ArenaTreasureChest() : base(0xE41)
        {
            Name = "Arena Champion";
            Hue  = 1161;

            DropItem(new ChampionStatue());

            DropItem(new Gold(Utility.RandomMinMax(1000, 2000)));
            DropItem(new Gold(Utility.RandomMinMax(1000, 2000)));
            DropItem(new Gold(Utility.RandomMinMax(1000, 2000)));
            DropItem(new Gold(Utility.RandomMinMax(1000, 2000)));
            DropItem(new Gold(Utility.RandomMinMax(1000, 2000)));
            DropItem(new Gold(Utility.RandomMinMax(1000, 2000)));
            DropItem(new Gold(Utility.RandomMinMax(1000, 2000)));
            DropItem(new Gold(Utility.RandomMinMax(1000, 2000)));
            DropItem(new Gold(Utility.RandomMinMax(1000, 2000)));
            DropItem(new Gold(Utility.RandomMinMax(1000, 2000)));

            {
                int chance = Utility.Random(5);

                switch (chance)
                {
                case 0:
                {
                    Map        map    = this.Map;
                    BaseWeapon weapon = Loot.RandomWeapon();
                    BaseRunicTool.ApplyAttributesTo(weapon, 4, 10, 50);
                    DropItem(weapon);
                    break;
                }

                case 1:
                {
                    Map       map   = this.Map;
                    BaseArmor armor = Loot.RandomArmor();
                    BaseRunicTool.ApplyAttributesTo(armor, 4, 10, 50);
                    DropItem(armor);
                    break;
                }

                case 2:
                {
                    BaseJewel jewel = Loot.RandomJewelry();
                    BaseRunicTool.ApplyAttributesTo(jewel, 4, 10, 50);
                    DropItem(jewel);
                    break;
                }

                case 3:
                {
                    Map     map = this.Map;
                    BaseHat hat = Loot.RandomHat();
                    BaseRunicTool.ApplyAttributesTo(hat, 4, 10, 50);
                    DropItem(hat);
                    break;
                }

                case 4:
                {
                    BaseWand wand = Loot.RandomWand();
                    DropItem(wand);
                    break;
                }
                }


                switch (Utility.Random(32))
                {
                default:
                case 0: DropItem(new VoiceOfTheFallenKing()); break;

                case 1: DropItem(new TunicOfFire()); break;

                case 2: DropItem(new SpiritOfTheTotem()); break;

                case 3: DropItem(new ShadowDancerLeggings()); break;

                case 4: DropItem(new OrnateCrownOfTheHarrower()); break;

                case 5: DropItem(new LeggingsOfBane()); break;

                case 6: DropItem(new JackalsCollar()); break;

                case 7: DropItem(new InquisitorsResolution()); break;

                case 8: DropItem(new HuntersHeaddress()); break;

                case 9: DropItem(new HelmOfInsight()); break;

                case 10: DropItem(new HatOfTheMagi()); break;

                case 11: DropItem(new GauntletsOfNobility()); break;

                case 12: DropItem(new DivineCountenance()); break;

                case 13: DropItem(new ArmorOfFortune()); break;

                case 14: DropItem(new ArcaneShield()); break;

                case 15: DropItem(new Aegis()); break;

                case 16: DropItem(new ZyronicClaw()); break;

                case 17: DropItem(new TitansHammer()); break;

                case 18: DropItem(new TheTaskmaster()); break;

                case 19: DropItem(new TheDragonSlayer()); break;

                case 20: DropItem(new StaffOfTheMagi()); break;

                case 21: DropItem(new SerpentsFang()); break;

                case 22: DropItem(new LegacyOfTheDreadLord()); break;

                case 23: DropItem(new BreathOfTheDead()); break;

                case 24: DropItem(new BoneCrusher()); break;

                case 25: DropItem(new BladeOfTheRighteous()); break;

                case 26: DropItem(new BladeOfInsanity()); break;

                case 27: DropItem(new AxeOfTheHeavens()); break;

                case 28: DropItem(new RingOfTheVile()); break;

                case 29: DropItem(new RingOfTheElements()); break;

                case 30: DropItem(new OrnamentOfTheMagician()); break;

                case 31: DropItem(new BraceletOfHealth()); break;
                }

                switch (Utility.Random(32))
                {
                default:
                case 0: DropItem(new VoiceOfTheFallenKing()); break;

                case 1: DropItem(new TunicOfFire()); break;

                case 2: DropItem(new SpiritOfTheTotem()); break;

                case 3: DropItem(new ShadowDancerLeggings()); break;

                case 4: DropItem(new OrnateCrownOfTheHarrower()); break;

                case 5: DropItem(new LeggingsOfBane()); break;

                case 6: DropItem(new JackalsCollar()); break;

                case 7: DropItem(new InquisitorsResolution()); break;

                case 8: DropItem(new HuntersHeaddress()); break;

                case 9: DropItem(new HelmOfInsight()); break;

                case 10: DropItem(new HatOfTheMagi()); break;

                case 11: DropItem(new GauntletsOfNobility()); break;

                case 12: DropItem(new DivineCountenance()); break;

                case 13: DropItem(new ArmorOfFortune()); break;

                case 14: DropItem(new ArcaneShield()); break;

                case 15: DropItem(new Aegis()); break;

                case 16: DropItem(new ZyronicClaw()); break;

                case 17: DropItem(new TitansHammer()); break;

                case 18: DropItem(new TheTaskmaster()); break;

                case 19: DropItem(new TheDragonSlayer()); break;

                case 20: DropItem(new StaffOfTheMagi()); break;

                case 21: DropItem(new SerpentsFang()); break;

                case 22: DropItem(new LegacyOfTheDreadLord()); break;

                case 23: DropItem(new BreathOfTheDead()); break;

                case 24: DropItem(new BoneCrusher()); break;

                case 25: DropItem(new BladeOfTheRighteous()); break;

                case 26: DropItem(new BladeOfInsanity()); break;

                case 27: DropItem(new AxeOfTheHeavens()); break;

                case 28: DropItem(new RingOfTheVile()); break;

                case 29: DropItem(new RingOfTheElements()); break;

                case 30: DropItem(new OrnamentOfTheMagician()); break;

                case 31: DropItem(new BraceletOfHealth()); break;
                }

                switch (Utility.Random(32))
                {
                default:
                case 0: DropItem(new VoiceOfTheFallenKing()); break;

                case 1: DropItem(new TunicOfFire()); break;

                case 2: DropItem(new SpiritOfTheTotem()); break;

                case 3: DropItem(new ShadowDancerLeggings()); break;

                case 4: DropItem(new OrnateCrownOfTheHarrower()); break;

                case 5: DropItem(new LeggingsOfBane()); break;

                case 6: DropItem(new JackalsCollar()); break;

                case 7: DropItem(new InquisitorsResolution()); break;

                case 8: DropItem(new HuntersHeaddress()); break;

                case 9: DropItem(new HelmOfInsight()); break;

                case 10: DropItem(new HatOfTheMagi()); break;

                case 11: DropItem(new GauntletsOfNobility()); break;

                case 12: DropItem(new DivineCountenance()); break;

                case 13: DropItem(new ArmorOfFortune()); break;

                case 14: DropItem(new ArcaneShield()); break;

                case 15: DropItem(new Aegis()); break;

                case 16: DropItem(new ZyronicClaw()); break;

                case 17: DropItem(new TitansHammer()); break;

                case 18: DropItem(new TheTaskmaster()); break;

                case 19: DropItem(new TheDragonSlayer()); break;

                case 20: DropItem(new StaffOfTheMagi()); break;

                case 21: DropItem(new SerpentsFang()); break;

                case 22: DropItem(new LegacyOfTheDreadLord()); break;

                case 23: DropItem(new BreathOfTheDead()); break;

                case 24: DropItem(new BoneCrusher()); break;

                case 25: DropItem(new BladeOfTheRighteous()); break;

                case 26: DropItem(new BladeOfInsanity()); break;

                case 27: DropItem(new AxeOfTheHeavens()); break;

                case 28: DropItem(new RingOfTheVile()); break;

                case 29: DropItem(new RingOfTheElements()); break;

                case 30: DropItem(new OrnamentOfTheMagician()); break;

                case 31: DropItem(new BraceletOfHealth()); break;
                }
            }
        }
        public void ApplyAttributesTo( BaseHat hat )
        {
            CraftResourceInfo resInfo = CraftResources.GetInfo( m_Resource );

            if (resInfo == null)
                return;

            CraftAttributeInfo attrs = resInfo.AttributeInfo;

            if (attrs == null)
                return;

            int attributeCount = Utility.RandomMinMax( attrs.RunicMinAttributes, attrs.RunicMaxAttributes );
            int min = attrs.RunicMinIntensity;
            int max = attrs.RunicMaxIntensity;

            ApplyAttributesTo( hat, true, 0, attributeCount, min, max);
        }
Beispiel #13
0
        private static void CheckMaxAttributes( BaseHat hat )
        {
            int props = 0;

            foreach( int i in Enum.GetValues(typeof( AosAttribute ) ) )
                if ( hat.Attributes[ (AosAttribute)i ] > 0 ) ++props;

            foreach( int i in Enum.GetValues(typeof( AosArmorAttribute ) ) )
                if ( (AosArmorAttribute)i != AosArmorAttribute.LowerStatReq && hat.ClothingAttributes[ (AosArmorAttribute)i ] > 0 ) ++props;

            if ( props >= SpellCraftConfig.MaxPropsAllowed )
                throw new SpellCraftException( MsgNums.MaxProperties );
        }
Beispiel #14
0
        private static void CheckItem( Mobile m, BaseHat hat, bool addingAttribute )
        {
            if ( !((Item)hat).IsChildOf( m ) )
                throw new SpellCraftException( MsgNums.BackPack );

            if ( !SpellCraftConfig.ArtifactCraftable && hat.ArtifactRarity > 0 )
                throw new SpellCraftException( MsgNums.Artifact );

            if ( addingAttribute )
                CheckMaxAttributes( hat );
        }
Beispiel #15
0
        protected override void GenerateTreasure()
        {
            DropItem(new Gold(600, 900));

            List <Item> gems = new List <Item>();

            for (int i = 0; i < 9; i++)
            {
                Item gem     = Loot.RandomGem();
                Type gemType = gem.GetType();

                foreach (Item listGem in gems)
                {
                    if (listGem.GetType() == gemType)
                    {
                        listGem.Amount++;
                        gem.Delete();
                        break;
                    }
                }

                if (!gem.Deleted)
                {
                    gems.Add(gem);
                }
            }

            foreach (Item gem in gems)
            {
                DropItem(gem);
            }

            if (0.2 > Utility.RandomDouble())
            {
                DropItem(new BagOfReagents(50));
            }

            for (int i = 0; i < 2; i++)
            {
                Item item = Loot.RandomArmorOrShieldOrWeaponOrJewelry();

                if (item is BaseWeapon)
                {
                    BaseWeapon weapon = (BaseWeapon)item;

                    int attributeCount;
                    int min, max;

                    GetRandomAOSStats(out attributeCount, out min, out max);

                    BaseRunicTool.ApplyAttributesTo(weapon, attributeCount, min, max);

                    DropItem(item);
                }
                else if (item is BaseArmor)
                {
                    BaseArmor armor = (BaseArmor)item;

                    int attributeCount;
                    int min, max;

                    GetRandomAOSStats(out attributeCount, out min, out max);

                    BaseRunicTool.ApplyAttributesTo(armor, attributeCount, min, max);

                    DropItem(item);
                }
                else if (item is BaseHat)
                {
                    BaseHat hat = (BaseHat)item;

                    int attributeCount;
                    int min, max;

                    GetRandomAOSStats(out attributeCount, out min, out max);

                    BaseRunicTool.ApplyAttributesTo(hat, attributeCount, min, max);

                    DropItem(item);
                }
                else if (item is BaseJewel)
                {
                    int attributeCount;
                    int min, max;

                    GetRandomAOSStats(out attributeCount, out min, out max);

                    BaseRunicTool.ApplyAttributesTo((BaseJewel)item, attributeCount, min, max);

                    DropItem(item);
                }
            }

            Solution = new PuzzleChestSolution();
        }
Beispiel #16
0
        public static void Fill(LockableContainer cont, int level)
        {
            cont.Movable = false;
            cont.Locked  = true;

            if (level == 0)
            {
                cont.DropItem(new Gold(Utility.RandomMinMax(50, 100)));

                if (Utility.RandomDouble() < 0.75)
                {
                    cont.DropItem(new TreasureMap(0, Map.Trammel));
                }
            }
            else
            {
                cont.TrapType  = TrapType.ExplosionTrap;
                cont.TrapPower = level * 25;
                cont.TrapLevel = level;

                switch (level)
                {
                case 1: cont.Serrure = SerrureQuality.Simple; break;

                case 2: cont.Serrure = SerrureQuality.Moyenne; break;

                case 3: cont.Serrure = SerrureQuality.Bonne; break;

                case 4: cont.Serrure = SerrureQuality.TresBonne; break;

                case 5: cont.Serrure = SerrureQuality.Excellente; break;

                case 6: cont.Serrure = SerrureQuality.Impossible; break;
                }


                cont.DropItem(new Gold(level * 1000));

                for (int i = 0; i < level * 5; ++i)
                {
                    cont.DropItem(Loot.RandomScroll(0, 63, SpellbookType.Regular));
                }

                for (int i = 0; i < level * 6; ++i)
                {
                    Item item;

                    if (Core.AOS)
                    {
                        item = Loot.RandomArmorOrShieldOrWeaponOrJewelry();
                    }
                    else
                    {
                        item = Loot.RandomArmorOrShieldOrWeapon();
                    }

                    if (item is BaseWeapon)
                    {
                        BaseWeapon weapon = (BaseWeapon)item;

                        if (Core.AOS)
                        {
                            int attributeCount;
                            int min, max;

                            GetRandomAOSStats(out attributeCount, out min, out max);

                            BaseRunicTool.ApplyAttributesTo(weapon, attributeCount, min, max);
                        }
                        else
                        {
                            weapon.DamageLevel     = (WeaponDamageLevel)Utility.Random(6);
                            weapon.AccuracyLevel   = (WeaponAccuracyLevel)Utility.Random(6);
                            weapon.DurabilityLevel = (WeaponDurabilityLevel)Utility.Random(6);
                        }

                        cont.DropItem(item);
                    }
                    else if (item is BaseArmor)
                    {
                        BaseArmor armor = (BaseArmor)item;

                        if (Core.AOS)
                        {
                            int attributeCount;
                            int min, max;

                            GetRandomAOSStats(out attributeCount, out min, out max);

                            BaseRunicTool.ApplyAttributesTo(armor, attributeCount, min, max);
                        }
                        else
                        {
                            armor.ProtectionLevel = (ArmorProtectionLevel)Utility.Random(6);
                            armor.Durability      = (ArmorDurabilityLevel)Utility.Random(6);
                        }

                        cont.DropItem(item);
                    }
                    else if (item is BaseHat)
                    {
                        BaseHat hat = (BaseHat)item;

                        if (Core.AOS)
                        {
                            int attributeCount;
                            int min, max;

                            GetRandomAOSStats(out attributeCount, out min, out max);

                            BaseRunicTool.ApplyAttributesTo(hat, attributeCount, min, max);
                        }

                        cont.DropItem(item);
                    }
                    else if (item is BaseJewel)
                    {
                        int attributeCount;
                        int min, max;

                        GetRandomAOSStats(out attributeCount, out min, out max);

                        BaseRunicTool.ApplyAttributesTo((BaseJewel)item, attributeCount, min, max);

                        cont.DropItem(item);
                    }
                }
            }

            int reagents;

            if (level == 0)
            {
                reagents = 12;
            }
            else
            {
                reagents = level * 3;
            }

            for (int i = 0; i < reagents; i++)
            {
                Item item = Loot.RandomPossibleReagent();
                item.Amount = Utility.RandomMinMax(40, 60);
                cont.DropItem(item);
            }

            int gems;

            if (level == 0)
            {
                gems = 2;
            }
            else
            {
                gems = level * 3;
            }

            for (int i = 0; i < gems; i++)
            {
                Item item = Loot.RandomGem();
                cont.DropItem(item);
            }

            if (level == 6 && Core.AOS)
            {
                cont.DropItem((Item)Activator.CreateInstance(m_Artifacts[Utility.Random(m_Artifacts.Length)]));
            }
        }
        public TerathanIslandTreasureChest() : base(0x2DF1)
        {
            Name    = "a treasure chest -30-";
            Movable = true;
            Hue     = 285;
            Weight  = 1000.0;

            TrapPower = 0;
            Locked    = true;

            RequiredSkill = 30;
            LockLevel     = 30;
            MaxLockLevel  = 35;

            // Gold
            if (Utility.RandomDouble() < 0.25)
            {
                DropItem(new Gold(Utility.Random(45, 450)));
            }

/////////////////////////////////////// Books

            if (Utility.RandomDouble() < 0.10)
            {
                DropItem(new TamersHandbookVol1());
            }

            if (Utility.RandomDouble() < 0.10)
            {
                DropItem(new TamersHandbookVol2());
            }

            if (Utility.RandomDouble() < 0.10)
            {
                DropItem(new TamersHandbookVol3());
            }

            if (Utility.RandomDouble() < 0.10)
            {
                DropItem(new TamersHandbookVol4());
            }

            if (Utility.RandomDouble() < 0.10)
            {
                DropItem(new TamersHandbookVol5());
            }

/////////////////////////////////////// Meats

            if (Utility.RandomDouble() < 0.15)
            {
                DropItem(new Bacon());
            }
            if (Utility.RandomDouble() < 0.15)
            {
                DropItem(new Sausage());
            }

/////////////////////////////////////// Eating Utensils

            if (Utility.RandomDouble() < 0.08)
            {
                DropItem(new KnifeLeft());
            }
            if (Utility.RandomDouble() < 0.08)
            {
                DropItem(new KnifeRight());
            }
            if (Utility.RandomDouble() < 0.08)
            {
                DropItem(new PewterMug());
            }
            if (Utility.RandomDouble() < 0.08)
            {
                DropItem(new Plate());
            }
            if (Utility.RandomDouble() < 0.08)
            {
                DropItem(new SpoonLeft());
            }
            if (Utility.RandomDouble() < 0.08)
            {
                DropItem(new SpoonRight());
            }

/////////////////////////////////////// Jewelry

            if (Utility.RandomDouble() < 0.04)
            {
                DropItem(new Agate());
            }
            if (Utility.RandomDouble() < 0.04)
            {
                DropItem(new Beryl());
            }
            if (Utility.RandomDouble() < 0.04)
            {
                DropItem(new ChromeDiopside());
            }
            if (Utility.RandomDouble() < 0.04)
            {
                DropItem(new FireOpal());
            }
            if (Utility.RandomDouble() < 0.04)
            {
                DropItem(new MoonstoneCustom());
            }
            if (Utility.RandomDouble() < 0.04)
            {
                DropItem(new Onyx());
            }
            if (Utility.RandomDouble() < 0.04)
            {
                DropItem(new Opal());
            }
            if (Utility.RandomDouble() < 0.04)
            {
                DropItem(new Pearl());
            }
            if (Utility.RandomDouble() < 0.04)
            {
                DropItem(new TurquoiseCustom());
            }

            if (Utility.RandomDouble() < 0.03)
            {
                DropItem(new Bloodstone());
            }
            if (Utility.RandomDouble() < 0.03)
            {
                DropItem(new Citrine());
            }
            if (Utility.RandomDouble() < 0.03)
            {
                DropItem(new Demantoid());
            }
            if (Utility.RandomDouble() < 0.03)
            {
                DropItem(new Jasper());
            }
            if (Utility.RandomDouble() < 0.03)
            {
                DropItem(new Lolite());
            }
            if (Utility.RandomDouble() < 0.03)
            {
                DropItem(new Lupis());
            }
            if (Utility.RandomDouble() < 0.03)
            {
                DropItem(new Peridot());
            }
            if (Utility.RandomDouble() < 0.03)
            {
                DropItem(new Tsavorite());
            }
            if (Utility.RandomDouble() < 0.03)
            {
                DropItem(new Zircon());
            }


/////////////////////////////////////// Supplies

            if (Utility.RandomDouble() < 0.15)
            {
                DropItem(new Arrow(Utility.Random(17, 22)));
            }

            if (Utility.RandomDouble() < 0.15)
            {
                DropItem(new Bolt(Utility.Random(17, 22)));
            }

            Item ReagentLoot = Loot.RandomReagent();

            ReagentLoot.Amount = Utility.Random(17, 22);
            DropItem(ReagentLoot);

            if (Utility.RandomDouble() < 0.15)
            {
                DropItem(new Bandage(Utility.Random(17, 22)));
            }

            if (Utility.RandomDouble() < 0.15)
            {
                DropItem(new Bedroll());
            }

            if (Utility.RandomDouble() < 0.15)
            {
                DropItem(new Bottle(Utility.Random(17, 22)));
            }

            if (Utility.RandomDouble() < 0.15)
            {
                DropItem(new Lockpick(Utility.Random(17, 22)));
            }

            Item PotionLoot = Loot.RandomPotion();

            DropItem(PotionLoot);

            if (Utility.RandomDouble() < 0.20)
            {
                DropItem(new LesserPoisonPotion());
            }

            if (Utility.RandomDouble() < 0.15)
            {
                DropItem(new PoisonPotion());
            }

/////////////////////////////////////// Tools

            if (Utility.RandomDouble() < 0.15)
            {
                DropItem(new FishingPole());
            }

            if (Utility.RandomDouble() < 0.15)
            {
                DropItem(new Shovel());
            }

            if (Utility.RandomDouble() < 0.15)
            {
                DropItem(new Skillet());
            }

/////////////////////////////////////// Rare Items

            if (Utility.RandomDouble() < 0.01)
            {
                DropItem(new DyeTub());
            }

            if (Utility.RandomDouble() < 0.15)
            {
                BaseWeapon weapon = Loot.RandomWeapon(true);
                switch (Utility.Random(38))
                {
                case 0: weapon = new Hatchet(); break;

                case 1: weapon = new Bow(); break;

                case 2: weapon = new Crossbow(); break;

                case 3: weapon = new Club(); break;

                case 4: weapon = new Mace(); break;

                case 5: weapon = new Maul(); break;

                case 6: weapon = new Pitchfork(); break;

                case 7: weapon = new ShortSpear(); break;

                case 8: weapon = new GnarledStaff(); break;

                case 9: weapon = new ShepherdsCrook(); break;

                case 10: weapon = new Cutlass(); break;

                case 11: weapon = new Katana(); break;

                case 12: weapon = new Kryss(); break;

                case 13: weapon = new Scimitar(); break;

                case 14: weapon = new AssassinSpike(); break;

                case 15: weapon = new DiamondMace(); break;

                case 16: weapon = new Leafblade(); break;

                case 17: weapon = new MagicalShortbow(); break;

                case 18: weapon = new RadiantScimitar(); break;

                case 19: weapon = new WildStaff(); break;

                case 20: weapon = new Axe(); break;

                case 21: weapon = new ExecutionersAxe(); break;

                case 22: weapon = new Pickaxe(); break;

                case 23: weapon = new TwoHandedAxe(); break;

                case 24: weapon = new WarAxe(); break;

                case 25: weapon = new HeavyCrossbow(); break;

                case 26: weapon = new HammerPick(); break;

                case 27: weapon = new WarMace(); break;

                case 28: weapon = new Spear(); break;

                case 29: weapon = new WarFork(); break;

                case 30: weapon = new BlackStaff(); break;

                case 31: weapon = new QuarterStaff(); break;

                case 32: weapon = new Longsword(); break;

                case 33: weapon = new ElvenCompositeLongbow(); break;

                case 34: weapon = new ElvenMachete(); break;

                case 35: weapon = new ElvenSpellblade(); break;

                case 36: weapon = new RuneBlade(); break;

                default: weapon = new Dagger(); break;
                }

                BaseRunicTool.ApplyAttributesTo(weapon, 2, 22, 25);
                weapon.Hue = 285;

                weapon.WeaponAttributes.HitLeechStam = 5;
                weapon.Attributes.BonusHits          = 10;

                DropItem(weapon);
            }

            if (Utility.RandomDouble() < 0.15)
            {
                BaseArmor armor = Loot.RandomArmor(true);
                switch (Utility.Random(13))
                {
                case 0: armor = new FemaleStuddedChest(); break;

                case 1: armor = new StuddedArms(); break;

                case 2: armor = new StuddedBustierArms(); break;

                case 3: armor = new StuddedGloves(); break;

                case 4: armor = new StuddedGorget(); break;

                case 5: armor = new ChainCoif(); break;

                case 6: armor = new ChainChest(); break;

                case 7: armor = new ChainLegs(); break;

                case 8: armor = new RingmailArms(); break;

                case 9: armor = new RingmailChest(); break;

                case 10: armor = new RingmailGloves(); break;

                case 11: armor = new RingmailLegs(); break;

                default: armor = new StuddedChest(); break;
                }

                BaseRunicTool.ApplyAttributesTo(armor, 3, 22, 25);
                armor.Hue = 285;

                armor.Attributes.WeaponDamage = 3;

                DropItem(armor);
            }

            if (Utility.RandomDouble() < 0.15)
            {
                BaseHat hat = Loot.RandomHat(true);
                switch (Utility.Random(5))
                {
                case 0: hat = new BearMask(); break;

                case 1: hat = new DeerMask(); break;

                case 2: hat = new FeatheredHat(); break;

                case 3: hat = new WizardsHat(); break;

                default: hat = new TribalMask(); break;
                }

                BaseRunicTool.ApplyAttributesTo(hat, 3, 22, 25);
                hat.Hue = 285;

                hat.Attributes.BonusHits   = 10;
                hat.Attributes.SpellDamage = 5;
                hat.Resistances.Energy     = 10;

                DropItem(hat);
            }

            if (Utility.RandomDouble() < 0.15)
            {
                BaseClothing clothing = Loot.RandomClothing(true);
                BaseRunicTool.ApplyAttributesTo(clothing, 3, 22, 25);
                clothing.Hue = 285;

                clothing.Attributes.BonusHits    = 5;
                clothing.Attributes.DefendChance = 3;
                clothing.Resistances.Physical    = 5;

                DropItem(clothing);
            }

            if (Utility.RandomDouble() < 0.15)
            {
                BaseShield shield = new WoodenKiteShield();
                if (Core.AOS)
                {
                    BaseRunicTool.ApplyAttributesTo(shield, 3, 22, 25);
                }
                shield.Hue = 285;

                shield.Attributes.BonusHits = 10;

                DropItem(shield);
            }

            if (Utility.RandomDouble() < 0.15)
            {
                BaseJewel bracelet = new GoldBracelet();
                if (Core.AOS)
                {
                    BaseRunicTool.ApplyAttributesTo(bracelet, 3, 22, 25);
                }
                bracelet.Hue = 285;

                bracelet.Attributes.WeaponDamage = 5;
                bracelet.Attributes.DefendChance = 2;
                bracelet.Resistances.Fire        = 5;

                DropItem(bracelet);
            }

            if (Utility.RandomDouble() < 0.15)
            {
                BaseJewel earrings = new SilverEarrings();
                if (Core.AOS)
                {
                    BaseRunicTool.ApplyAttributesTo(earrings, 3, 22, 25);
                }
                earrings.Hue = 285;

                earrings.Attributes.WeaponDamage = 5;
                earrings.Attributes.DefendChance = 3;
                earrings.Resistances.Cold        = 5;

                DropItem(earrings);
            }

            if (Utility.RandomDouble() < 0.15)
            {
                BaseJewel necklace = new GoldNecklace();
                if (Core.AOS)
                {
                    BaseRunicTool.ApplyAttributesTo(necklace, 3, 22, 25);
                }
                necklace.Hue = 285;

                necklace.Attributes.WeaponDamage = 5;
                necklace.Attributes.DefendChance = 5;
                necklace.Resistances.Energy      = 5;

                DropItem(necklace);
            }

            if (Utility.RandomDouble() < 0.15)
            {
                BaseJewel ring = new SilverRing();
                if (Core.AOS)
                {
                    BaseRunicTool.ApplyAttributesTo(ring, 3, 22, 25);
                }
                ring.Hue = 285;

                ring.Attributes.WeaponDamage = 5;
                ring.Attributes.DefendChance = 2;
                ring.Resistances.Poison      = 5;

                DropItem(ring);
            }
        }
        public OphidianPalaceChest() : base(0x2DF1)
        {
            Name    = "a treasure chest -45-";
            Movable = true;
            Weight  = 1000.0;

            TrapPower = 0;
            Locked    = true;

            RequiredSkill = 45;
            LockLevel     = 45;
            MaxLockLevel  = 50;

            // Gold
            if (Utility.RandomDouble() < 0.25)
            {
                DropItem(new Gold(Utility.Random(125, 450)));
            }

/////////////////////////////////////// Jewelry

            Item GemLoot = Loot.RandomGem();

            DropItem(GemLoot);

            if (Utility.RandomDouble() < 0.04)
            {
                DropItem(new Agate());
            }
            if (Utility.RandomDouble() < 0.04)
            {
                DropItem(new Beryl());
            }
            if (Utility.RandomDouble() < 0.04)
            {
                DropItem(new ChromeDiopside());
            }
            if (Utility.RandomDouble() < 0.04)
            {
                DropItem(new FireOpal());
            }
            if (Utility.RandomDouble() < 0.04)
            {
                DropItem(new MoonstoneCustom());
            }
            if (Utility.RandomDouble() < 0.04)
            {
                DropItem(new Onyx());
            }
            if (Utility.RandomDouble() < 0.04)
            {
                DropItem(new Opal());
            }
            if (Utility.RandomDouble() < 0.04)
            {
                DropItem(new Pearl());
            }
            if (Utility.RandomDouble() < 0.04)
            {
                DropItem(new TurquoiseCustom());
            }

            if (Utility.RandomDouble() < 0.03)
            {
                DropItem(new Bloodstone());
            }
            if (Utility.RandomDouble() < 0.03)
            {
                DropItem(new Citrine());
            }
            if (Utility.RandomDouble() < 0.03)
            {
                DropItem(new Demantoid());
            }
            if (Utility.RandomDouble() < 0.03)
            {
                DropItem(new Jasper());
            }
            if (Utility.RandomDouble() < 0.03)
            {
                DropItem(new Lolite());
            }
            if (Utility.RandomDouble() < 0.03)
            {
                DropItem(new Lupis());
            }
            if (Utility.RandomDouble() < 0.03)
            {
                DropItem(new Peridot());
            }
            if (Utility.RandomDouble() < 0.03)
            {
                DropItem(new Tsavorite());
            }
            if (Utility.RandomDouble() < 0.03)
            {
                DropItem(new Zircon());
            }

            if (Utility.RandomDouble() < 0.02)
            {
                DropItem(new Amber());
            }
            if (Utility.RandomDouble() < 0.02)
            {
                DropItem(new Amethyst());
            }
            if (Utility.RandomDouble() < 0.02)
            {
                DropItem(new Andalusite());
            }
            if (Utility.RandomDouble() < 0.02)
            {
                DropItem(new Chrysoberyl());
            }
            if (Utility.RandomDouble() < 0.02)
            {
                DropItem(new Garnet());
            }
            if (Utility.RandomDouble() < 0.02)
            {
                DropItem(new Jade());
            }
            if (Utility.RandomDouble() < 0.02)
            {
                DropItem(new Mandarin());
            }
            if (Utility.RandomDouble() < 0.02)
            {
                DropItem(new Morganite());
            }
            if (Utility.RandomDouble() < 0.02)
            {
                DropItem(new Paraiba());
            }
            if (Utility.RandomDouble() < 0.02)
            {
                DropItem(new TigerEye());
            }
            if (Utility.RandomDouble() < 0.02)
            {
                DropItem(new Tourmaline());
            }

            if (Utility.RandomDouble() < 0.01)
            {
                DropItem(new Alexandrite());
            }
            if (Utility.RandomDouble() < 0.01)
            {
                DropItem(new Ametrine());
            }
            if (Utility.RandomDouble() < 0.01)
            {
                DropItem(new Kunzite());
            }
            if (Utility.RandomDouble() < 0.01)
            {
                DropItem(new Ruby());
            }
            if (Utility.RandomDouble() < 0.01)
            {
                DropItem(new Sapphire());
            }
            if (Utility.RandomDouble() < 0.01)
            {
                DropItem(new Tanzanite());
            }
            if (Utility.RandomDouble() < 0.01)
            {
                DropItem(new Topaz());
            }
            if (Utility.RandomDouble() < 0.01)
            {
                DropItem(new Zultanite());
            }

            if (Utility.RandomDouble() < 0.01)
            {
                DropItem(new Diamond());
            }
            if (Utility.RandomDouble() < 0.01)
            {
                DropItem(new Emerald());
            }
            if (Utility.RandomDouble() < 0.01)
            {
                DropItem(new PinkQuartz());
            }
            if (Utility.RandomDouble() < 0.01)
            {
                DropItem(new StarSapphire());
            }

/////////////////////////////////////// Supplies

            Item ReagentLoot1 = Loot.RandomReagent();

            ReagentLoot1.Amount = Utility.Random(25, 35);
            DropItem(ReagentLoot1);

            Item ReagentLoot2 = Loot.RandomReagent();

            ReagentLoot2.Amount = Utility.Random(25, 35);
            DropItem(ReagentLoot2);

            Item ReagentLoot3 = Loot.RandomReagent();

            ReagentLoot3.Amount = Utility.Random(25, 35);
            DropItem(ReagentLoot3);

            if (Utility.RandomDouble() < 0.15)
            {
                DropItem(new Arrow(Utility.Random(17, 22)));
            }

            if (Utility.RandomDouble() < 0.15)
            {
                DropItem(new Bolt(Utility.Random(17, 22)));
            }

            Item ReagentLoot = Loot.RandomReagent();

            ReagentLoot.Amount = Utility.Random(17, 22);
            DropItem(ReagentLoot);

            if (Utility.RandomDouble() < 0.15)
            {
                DropItem(new Bandage(Utility.Random(17, 22)));
            }

            if (Utility.RandomDouble() < 0.15)
            {
                DropItem(new Bedroll());
            }

            if (Utility.RandomDouble() < 0.15)
            {
                DropItem(new Bottle(Utility.Random(17, 22)));
            }

            if (Utility.RandomDouble() < 0.15)
            {
                DropItem(new Lockpick(Utility.Random(17, 22)));
            }

            if (Utility.RandomDouble() < 0.20)
            {
                DropItem(new GreaterCurePotion());
            }

            if (Utility.RandomDouble() < 0.15)
            {
                DropItem(new GreaterHealPotion());
            }

            Item PotionLoot1 = Loot.RandomPotion();

            DropItem(PotionLoot1);

            Item PotionLoot2 = Loot.RandomPotion();

            DropItem(PotionLoot2);

            Item PotionLoot3 = Loot.RandomPotion();

            DropItem(PotionLoot3);

/////////////////////////////////////// Tools

            if (Utility.RandomDouble() < 0.15)
            {
                DropItem(new FishingPole());
            }

            if (Utility.RandomDouble() < 0.15)
            {
                DropItem(new Shovel());
            }

            if (Utility.RandomDouble() < 0.15)
            {
                DropItem(new Skillet());
            }

/////////////////////////////////////// Rare Items

            if (Utility.RandomDouble() < 0.01)
            {
                DropItem(new DyeTub());
            }

            if (Utility.RandomDouble() < 0.01)
            {
                DropItem(new SuperRod());
            }

            if (Utility.RandomDouble() < 0.15)
            {
                BaseWeapon weapon1 = Loot.RandomWeapon(true);
                BaseRunicTool.ApplyAttributesTo(weapon1, 5, 30, 35);

                DropItem(weapon1);
            }
            if (Utility.RandomDouble() < 0.15)
            {
                BaseWeapon weapon2 = Loot.RandomWeapon(true);
                BaseRunicTool.ApplyAttributesTo(weapon2, 5, 30, 35);

                DropItem(weapon2);
            }
            if (Utility.RandomDouble() < 0.15)
            {
                BaseWeapon weapon3 = Loot.RandomWeapon(true);
                BaseRunicTool.ApplyAttributesTo(weapon3, 5, 30, 35);

                DropItem(weapon3);
            }
            if (Utility.RandomDouble() < 0.15)
            {
                BaseArmor armor1 = Loot.RandomArmor(true);
                BaseRunicTool.ApplyAttributesTo(armor1, 5, 30, 35);

                DropItem(armor1);
            }
            if (Utility.RandomDouble() < 0.15)
            {
                BaseArmor armor2 = Loot.RandomArmor(true);
                BaseRunicTool.ApplyAttributesTo(armor2, 5, 30, 35);

                DropItem(armor2);
            }
            if (Utility.RandomDouble() < 0.15)
            {
                BaseArmor armor3 = Loot.RandomArmor(true);
                BaseRunicTool.ApplyAttributesTo(armor3, 5, 30, 35);

                DropItem(armor3);
            }
            if (Utility.RandomDouble() < 0.15)
            {
                BaseHat hat = Loot.RandomHat(true);
                switch (Utility.Random(5))
                {
                case 0: hat = new BearMask(); break;

                case 1: hat = new DeerMask(); break;

                case 2: hat = new FeatheredHat(); break;

                case 3: hat = new WizardsHat(); break;

                default: hat = new TribalMask(); break;
                }

                BaseRunicTool.ApplyAttributesTo(hat, 5, 30, 35);

                DropItem(hat);
            }

            if (Utility.RandomDouble() < 0.15)
            {
                BaseClothing clothing1 = Loot.RandomClothing(true);
                BaseRunicTool.ApplyAttributesTo(clothing1, 5, 30, 35);

                DropItem(clothing1);
            }

            if (Utility.RandomDouble() < 0.15)
            {
                BaseClothing clothing2 = Loot.RandomClothing(true);
                BaseRunicTool.ApplyAttributesTo(clothing2, 5, 30, 35);

                DropItem(clothing2);
            }

            if (Utility.RandomDouble() < 0.15)
            {
                BaseShield shield1 = new JewelShield();
                if (Core.AOS)
                {
                    BaseRunicTool.ApplyAttributesTo(shield1, 5, 30, 35);
                }

                DropItem(shield1);
            }
            if (Utility.RandomDouble() < 0.15)
            {
                BaseShield shield2 = new ScarabShield();
                if (Core.AOS)
                {
                    BaseRunicTool.ApplyAttributesTo(shield2, 4, 25, 35);
                }

                DropItem(shield2);
            }

            if (Utility.RandomDouble() < 0.15)
            {
                BaseJewel bracelet = new GoldBracelet();
                if (Core.AOS)
                {
                    BaseRunicTool.ApplyAttributesTo(bracelet, 5, 30, 35);
                }

                DropItem(bracelet);
            }

            if (Utility.RandomDouble() < 0.15)
            {
                BaseJewel earrings = new SilverEarrings();
                if (Core.AOS)
                {
                    BaseRunicTool.ApplyAttributesTo(earrings, 5, 30, 35);
                }

                DropItem(earrings);
            }

            if (Utility.RandomDouble() < 0.15)
            {
                BaseJewel necklace = new GoldNecklace();
                if (Core.AOS)
                {
                    BaseRunicTool.ApplyAttributesTo(necklace, 5, 30, 35);
                }

                DropItem(necklace);
            }

            if (Utility.RandomDouble() < 0.15)
            {
                BaseJewel ring = new SilverRing();
                if (Core.AOS)
                {
                    BaseRunicTool.ApplyAttributesTo(ring, 5, 30, 35);
                }

                DropItem(ring);
            }
        }
Beispiel #19
0
 public static void MarkHat( Mobile crafter, BaseHat hat )
 {
     if ( false == hat.PlayerConstructed
         && (crafter.Skills[SkillName.Inscribe]).Value == SpellCraftConfig.MaximumSkillValue
         && (crafter.Skills[SkillName.Alchemy]).Value == SpellCraftConfig.MaximumSkillValue
         && Utility.RandomDouble() < SpellCraftConfig.CraftersMarkChance )
     {
         hat.PlayerConstructed = true;
         hat.Crafter = crafter;
     }
 }
Beispiel #20
0
        private void Fill(int level)
        {
            TrapType  = TrapType.ExplosionTrap;
            TrapPower = level * 25;
            TrapLevel = level;
            Locked    = true;

            switch (level)
            {
            case 1: RequiredSkill = 36; break;

            case 2: RequiredSkill = 76; break;

            case 3: RequiredSkill = 84; break;

            case 4: RequiredSkill = 92; break;

            case 5: RequiredSkill = 100; break;
            }

            LockLevel    = RequiredSkill - 10;
            MaxLockLevel = RequiredSkill + 40;

            DropItem(new Gold(level * 200));

            for (int i = 0; i < level; ++i)
            {
                DropItem(Loot.RandomScroll(0, 63, SpellbookType.Regular));
            }

            for (int i = 0; i < level * 2; ++i)
            {
                Item item;

                if (Core.AOS)
                {
                    item = Loot.RandomArmorOrShieldOrWeaponOrJewelry();
                }
                else
                {
                    item = Loot.RandomArmorOrShieldOrWeapon();
                }

                if (item is BaseWeapon)
                {
                    BaseWeapon weapon = (BaseWeapon)item;

                    if (Core.AOS)
                    {
                        int attributeCount;
                        int min, max;

                        GetRandomAOSStats(out attributeCount, out min, out max);
                    }
                    else
                    {
                        weapon.DamageLevel     = (WeaponDamageLevel)Utility.Random(6);
                        weapon.AccuracyLevel   = (WeaponAccuracyLevel)Utility.Random(6);
                        weapon.DurabilityLevel = (WeaponDurabilityLevel)Utility.Random(6);
                    }

                    DropItem(item);
                }
                else if (item is BaseArmor)
                {
                    BaseArmor armor = (BaseArmor)item;

                    if (Core.AOS)
                    {
                        int attributeCount;
                        int min, max;

                        GetRandomAOSStats(out attributeCount, out min, out max);
                    }

                    DropItem(item);
                }
                else if (item is BaseHat)
                {
                    BaseHat hat = (BaseHat)item;

                    if (Core.AOS)
                    {
                        int attributeCount;
                        int min, max;

                        GetRandomAOSStats(out attributeCount, out min, out max);
                    }

                    DropItem(item);
                }
                else if (item is BaseJewel)
                {
                    int attributeCount;
                    int min, max;

                    GetRandomAOSStats(out attributeCount, out min, out max);

                    DropItem(item);
                }
            }

            for (int i = 0; i < level; i++)
            {
                Item item = Loot.RandomPossibleReagent();
                item.Amount = Utility.RandomMinMax(40, 60);
                DropItem(item);
            }

            for (int i = 0; i < level; i++)
            {
                Item item = Loot.RandomGem();
                DropItem(item);
            }

            DropItem(new TreasureMap(level + 1, (Utility.RandomBool() ? Map.Felucca : Map.Trammel)));
        }
Beispiel #21
0
        public MongbatHideoutTreasureChest1() : base(0xE43)
        {
            Name    = "a treasure chest -40-";
            Movable = true;
            Weight  = 1000.0;

            TrapPower = 0;
            Locked    = true;

            RequiredSkill = 40;
            LockLevel     = 40;
            MaxLockLevel  = 80;

/////////////////////////////////// Gold
            if (Utility.RandomDouble() < 0.25)
            {
                DropItem(new Gold(Utility.Random(20, 300)));
            }

/////////////////////////////////////// Supplies

            switch (Utility.Random(19))
            {
            case 0: DropItem(new Board(60)); break;

            case 1: DropItem(new BoltOfCloth(60)); break;

            case 2: DropItem(new Bottle(60)); break;

            case 3: DropItem(new CopperWire(60)); break;

            case 4: DropItem(new Cotton(60)); break;

            case 5: DropItem(new DarkYarn(60)); break;

            case 6: DropItem(new Feather(60)); break;

            case 7: DropItem(new Flax(60)); break;

            case 8: DropItem(new Gears(60)); break;

            case 9: DropItem(new GoldWire(60)); break;

            case 10: DropItem(new IronIngot(60)); break;

            case 11: DropItem(new IronWire(60)); break;

            case 12: DropItem(new Leather(60)); break;

            case 13: DropItem(new LightYarn(60)); break;

            case 14: DropItem(new Shaft(60)); break;

            case 15: DropItem(new SilverWire(60)); break;

            case 16: DropItem(new SpoolOfThread(60)); break;

            case 17: DropItem(new Springs(60)); break;

            case 18: DropItem(new Wool(60)); break;
            }

            switch (Utility.Random(5))
            {
            case 0: DropItem(new BeetleEgg(15)); break;

            case 1: DropItem(new FishScale(15)); break;

            case 2: DropItem(new Nirnroot(15)); break;

            case 3: DropItem(new SerpentScale(15)); break;

            case 4: DropItem(new ThunderStone(15)); break;
            }

            Item ReagentLoot = Loot.RandomReagent();

            ReagentLoot.Amount = Utility.RandomMinMax(5, 10);
            DropItem(ReagentLoot);

            if (Utility.RandomDouble() < 0.05)
            {
                DropItem(new SackFlour());
            }

/////////////////////////////////////// Rare Items

            if (Utility.RandomDouble() < 0.01)
            {
                DropItem(new DyeTub());
            }

/////////////////////////////////////// LV 1-15
            if (Utility.RandomDouble() < 0.10)
            {
                BaseWeapon weapon = Loot.RandomWeapon(true);
                switch (Utility.Random(36))
                {
                case 0: weapon = new Hatchet(); break;                     // Lv1

                case 1: weapon = new Axe(); break;                         // Lv5

                case 2: weapon = new BattleAxe(); break;                   // Lv10

                case 3: weapon = new Bow(); break;                         // Lv1

                case 4: weapon = new Crossbow(); break;                    // Lv1

                case 5: weapon = new Balestra(); break;                    // Lv5

                case 6: weapon = new ElvenLeafBow(); break;                // Lv5

                case 7: weapon = new MagicalShortbow(); break;             // Lv10

                case 8: weapon = new RepeatingCrossbow(); break;           // Lv10

                case 9: weapon = new SkinningKnife(); break;               // Lv1

                case 10: weapon = new Cleaver(); break;                    // Lv5

                case 11: weapon = new Dagger(); break;                     // Lv5

                case 12: weapon = new ButcherKnife(); break;               // Lv10

                case 13: weapon = new EbonyDagger(); break;                // Lv10

                case 14: weapon = new Sai(); break;                        // Lv15

                case 15: weapon = new Club(); break;                       // Lv1

                case 16: weapon = new Nunchaku(); break;                   // Lv1

                case 17: weapon = new Mace(); break;                       // Lv5

                case 18: weapon = new Maul(); break;                       // Lv10

                case 19: weapon = new Scepter(); break;                    // Lv15

                case 20: weapon = new Pitchfork(); break;                  // Lv1

                case 21: weapon = new ShortSpear(); break;                 // Lv5

                case 22: weapon = new Pilum(); break;                      // Lv10

                case 23: weapon = new Pike(); break;                       // Lv15

                case 24: weapon = new GnarledStaff(); break;               // Lv1

                case 25: weapon = new ShepherdsCrook(); break;             // Lv1

                case 26: weapon = new QuarterStaff(); break;               // Lv10

                case 27: weapon = new ReptilianStaff(); break;             // Lv15

                case 28: weapon = new Bokuto(); break;                     // Lv1

                case 29: weapon = new BoneHarvester(); break;              // Lv1

                case 30: weapon = new Cutlass(); break;                    // Lv1

                case 31: weapon = new ElvenMachete(); break;               // Lv1

                case 32: weapon = new Kryss(); break;                      // Lv1

                case 33: weapon = new EbonyRapier(); break;                // Lv10

                case 34: weapon = new Scimitar(); break;                   // Lv10

                default: weapon = new Leafblade(); break;                  // Lv1
                }

                switch (Utility.Random(14))
                {
                case 0: weapon.Attributes.AttackChance = Utility.RandomMinMax(1, 5); break;

                case 1: weapon.Attributes.DefendChance = Utility.RandomMinMax(1, 5); break;

                case 2: weapon.Attributes.Luck = Utility.RandomMinMax(1, 10); break;

                case 3: weapon.Attributes.WeaponSpeed = Utility.RandomMinMax(1, 25); break;

                case 4: weapon.WeaponAttributes.HitDispel = Utility.RandomMinMax(2, 10); break;

                case 5: weapon.WeaponAttributes.HitFireball = Utility.RandomMinMax(2, 10); break;

                case 6: weapon.WeaponAttributes.HitHarm = Utility.RandomMinMax(2, 10); break;

                case 7: weapon.WeaponAttributes.HitLeechHits = Utility.RandomMinMax(2, 10); break;

                case 8: weapon.WeaponAttributes.HitLeechMana = Utility.RandomMinMax(2, 10); break;

                case 9: weapon.WeaponAttributes.HitLeechStam = Utility.RandomMinMax(2, 10); break;

                case 10: weapon.WeaponAttributes.HitLightning = Utility.RandomMinMax(2, 10); break;

                case 11: weapon.WeaponAttributes.HitLowerAttack = Utility.RandomMinMax(2, 10); break;

                case 12: weapon.WeaponAttributes.HitLowerDefend = Utility.RandomMinMax(2, 10); break;

                default: weapon.Attributes.WeaponDamage = Utility.RandomMinMax(1, 10); break;
                }

                DropItem(weapon);
            }

/////////////////////////////////////// LV 1-15
            if (Utility.RandomDouble() < 0.10)
            {
                BaseArmor armor = Loot.RandomArmor(true);
                switch (Utility.Random(39))
                {
                case 0: armor = new LeatherArms(); break;                       // Lv1

                case 1: armor = new LeatherBustierArms(); break;                // Lv1

                case 2: armor = new LeatherCap(); break;                        // Lv1

                case 3: armor = new LeatherChest(); break;                      // Lv1

                case 4: armor = new LeatherGloves(); break;                     // Lv1

                case 5: armor = new LeatherGorget(); break;                     // Lv1

                case 6: armor = new LeatherLegs(); break;                       // Lv1

                case 7: armor = new LeatherShorts(); break;                     // Lv1

                case 8: armor = new LeatherSkirt(); break;                      // Lv1

                case 9: armor = new FemaleLeafChest(); break;                   // Lv1

                case 10: armor = new LeafArms(); break;                         // Lv3

                case 11: armor = new LeafChest(); break;                        // Lv3

                case 12: armor = new LeafGloves(); break;                       // Lv3

                case 13: armor = new LeafGorget(); break;                       // Lv3

                case 14: armor = new LeafLegs(); break;                         // Lv3

                case 15: armor = new LeafTonlet(); break;                       // Lv3

                case 16: armor = new LeatherDo(); break;                        // Lv6

                case 17: armor = new LeatherHaidate(); break;                   // Lv6

                case 18: armor = new LeatherHiroSode(); break;                  // Lv6

                case 19: armor = new LeatherJingasa(); break;                   // Lv6

                case 20: armor = new LeatherMempo(); break;                     // Lv6

                case 21: armor = new LeatherNinjaHood(); break;                 // Lv6

                case 22: armor = new LeatherNinjaJacket(); break;               // Lv6

                case 23: armor = new LeatherNinjaMitts(); break;                // Lv6

                case 24: armor = new LeatherNinjaPants(); break;                // Lv6

                case 25: armor = new LeatherSuneate(); break;                   // Lv6

                case 26: armor = new EbonsilkArms(); break;                     // Lv9

                case 27: armor = new EbonsilkChest(); break;                    // Lv9

                case 28: armor = new EbonsilkGloves(); break;                   // Lv9

                case 29: armor = new EbonsilkGorget(); break;                   // Lv9

                case 30: armor = new EbonsilkLegs(); break;                     // Lv9

                case 31: armor = new EbonsilkTiara(); break;                    // Lv9

                case 32: armor = new ChitinArms(); break;                       // Lv12

                case 33: armor = new ChitinChest(); break;                      // Lv12

                case 34: armor = new ChitinGloves(); break;                     // Lv12

                case 35: armor = new ChitinGorget(); break;                     // Lv12

                case 36: armor = new ChitinHelmet(); break;                     // Lv12

                case 37: armor = new ChitinLegs(); break;                       // Lv12

                default: armor = new FemaleLeatherChest(); break;               // Lv1
                }

                BaseRunicTool.ApplyAttributesTo(armor, 3, 5, 50);
                DropItem(armor);
            }

            if (Utility.RandomDouble() < 0.05)
            {
                BaseHat hat = Loot.RandomHat(true);
                BaseRunicTool.ApplyAttributesTo(hat, 3, 5, 10);
                DropItem(hat);
            }
            if (Utility.RandomDouble() < 0.05)
            {
                BaseClothing clothing = Loot.RandomClothing(true);
                BaseRunicTool.ApplyAttributesTo(clothing, 3, 5, 10);
                DropItem(clothing);
            }

            if (Utility.RandomDouble() < 0.05)
            {
                BaseShield shield1 = new Buckler();
                if (Core.AOS)
                {
                    BaseRunicTool.ApplyAttributesTo(shield1, 3, 5, 50);
                }
                DropItem(shield1);
            }
            if (Utility.RandomDouble() < 0.05)
            {
                BaseShield shield2 = new WoodenShield();
                if (Core.AOS)
                {
                    BaseRunicTool.ApplyAttributesTo(shield2, 3, 5, 50);
                }
                DropItem(shield2);
            }
            if (Utility.RandomDouble() < 0.05)
            {
                BaseShield shield3 = new AmmoniteShield();
                if (Core.AOS)
                {
                    BaseRunicTool.ApplyAttributesTo(shield3, 3, 5, 50);
                }
                DropItem(shield3);
            }
            if (Utility.RandomDouble() < 0.05)
            {
                BaseShield shield4 = new BronzeShield();
                if (Core.AOS)
                {
                    BaseRunicTool.ApplyAttributesTo(shield4, 3, 5, 50);
                }
                DropItem(shield4);
            }
            if (Utility.RandomDouble() < 0.05)
            {
                BaseShield shield5 = new MetalShield();
                if (Core.AOS)
                {
                    BaseRunicTool.ApplyAttributesTo(shield5, 3, 5, 50);
                }
                DropItem(shield5);
            }
            if (Utility.RandomDouble() < 0.05)
            {
                BaseShield shield6 = new WoodenKiteShield();
                if (Core.AOS)
                {
                    BaseRunicTool.ApplyAttributesTo(shield6, 3, 5, 50);
                }
                DropItem(shield6);
            }

            if (Utility.RandomDouble() < 0.05)
            {
                BaseJewel bracelet = new SilverBracelet();
                if (Core.AOS)
                {
                    BaseRunicTool.ApplyAttributesTo(bracelet, 3, 5, 10);
                }
                DropItem(bracelet);
            }
            if (Utility.RandomDouble() < 0.05)
            {
                BaseJewel earrings = new SilverEarrings();
                if (Core.AOS)
                {
                    BaseRunicTool.ApplyAttributesTo(earrings, 3, 5, 10);
                }
                DropItem(earrings);
            }
            if (Utility.RandomDouble() < 0.05)
            {
                BaseJewel necklace = new SilverNecklace();
                if (Core.AOS)
                {
                    BaseRunicTool.ApplyAttributesTo(necklace, 3, 5, 10);
                }
                DropItem(necklace);
            }
            if (Utility.RandomDouble() < 0.05)
            {
                BaseJewel ring = new SilverRing();
                if (Core.AOS)
                {
                    BaseRunicTool.ApplyAttributesTo(ring, 3, 5, 10);
                }
                DropItem(ring);
            }
        }
Beispiel #22
0
        public static void Fill(LockableContainer cont, int luck, int level, bool isSos)
        {
            cont.Movable = false;
            cont.Locked  = true;
            int numberItems;

            if (level == 0)
            {
                cont.LockLevel = 0; // Can't be unlocked

                cont.DropItem(new Gold(Utility.RandomMinMax(50, 100)));

                if (Utility.RandomDouble() < 0.75)
                {
                    cont.DropItem(new TreasureMap(0, Map.Trammel));
                }
            }
            else
            {
                cont.TrapType  = TrapType.ExplosionTrap;
                cont.TrapPower = level * 25;
                cont.TrapLevel = level;

                switch (level)
                {
                case 1:
                    cont.RequiredSkill = 5;
                    break;

                case 2:
                    cont.RequiredSkill = 45;
                    break;

                case 3:
                    cont.RequiredSkill = 65;
                    break;

                case 4:
                    cont.RequiredSkill = 75;
                    break;

                case 5:
                    cont.RequiredSkill = 75;
                    break;

                case 6:
                    cont.RequiredSkill = 80;
                    break;

                case 7:
                    cont.RequiredSkill = 80;
                    break;
                }

                cont.LockLevel    = cont.RequiredSkill - 10;
                cont.MaxLockLevel = cont.RequiredSkill + 40;

                cont.DropItem(new Gold(level * 5000));

                for (int i = 0; i < level * 5; ++i)
                {
                    cont.DropItem(Loot.RandomScroll(0, 63));
                }

                double propsScale = 1.0;
                if (Core.SE)
                {
                    switch (level)
                    {
                    case 1:
                        numberItems = 32;
                        propsScale  = 0.5625;
                        break;

                    case 2:
                        numberItems = 40;
                        propsScale  = 0.6875;
                        break;

                    case 3:
                        numberItems = 48;
                        propsScale  = 0.875;
                        break;

                    case 4:
                        numberItems = 56;
                        break;

                    case 5:
                        numberItems = 64;
                        break;

                    case 6:
                        numberItems = 72;
                        break;

                    case 7:
                        numberItems = 80;
                        break;

                    default:
                        numberItems = 0;
                        break;
                    }
                }
                else
                {
                    numberItems = level * 6;
                }

                for (int i = 0; i < numberItems; ++i)
                {
                    Item item;

                    item = Loot.RandomArmorOrShieldOrWeapon();

                    if (item is BaseWeapon)
                    {
                        BaseWeapon weapon = (BaseWeapon)item;

                        weapon.DamageLevel     = (WeaponDamageLevel)Utility.Random(6);
                        weapon.AccuracyLevel   = (WeaponAccuracyLevel)Utility.Random(6);
                        weapon.DurabilityLevel = (WeaponDurabilityLevel)Utility.Random(6);

                        cont.DropItem(item);
                    }
                    else if (item is BaseArmor)
                    {
                        BaseArmor armor = (BaseArmor)item;

                        armor.ProtectionLevel = (ArmorProtectionLevel)Utility.Random(6);
                        armor.Durability      = (ArmorDurabilityLevel)Utility.Random(6);

                        cont.DropItem(item);
                    }
                    else if (item is BaseHat)
                    {
                        BaseHat hat = (BaseHat)item;

                        cont.DropItem(item);
                    }
                    else if (item is BaseJewel)
                    {
                        cont.DropItem(item);
                    }
                }
            }

            int reagents;

            if (level == 0)
            {
                reagents = 12;
            }
            else
            {
                reagents = level + 1;
            }

            for (int i = 0; i < reagents; i++)
            {
                Item item = Loot.RandomReagent();
                item.Amount = Utility.RandomMinMax(40, 60);
                cont.DropItem(item);
            }

            int gems;

            if (level == 0)
            {
                gems = 2;
            }
            else
            {
                gems = (level * 3) + 1;
            }

            for (int i = 0; i < gems; i++)
            {
                Item item = Loot.RandomGem();
                cont.DropItem(item);
            }

            Item arty    = null;
            Item special = null;

            if (isSos)
            {
                if (0.009 * level > Utility.RandomDouble())
                {
                    special = new TreasureMap(Utility.RandomMinMax(level, Math.Min(7, level + 1)), cont.Map);
                }
            }
            else
            {
                if (level >= 7)
                {
                    if (0.25 > Utility.RandomDouble())
                    {
                        special = GetRandomSpecial(level, cont.Map);
                    }
                }
                else if (level >= 6)
                {
                    if (0.10 > Utility.RandomDouble())
                    {
                        special = GetRandomSpecial(level, cont.Map);
                    }
                }
                else if (level >= 5)
                {
                    if (0.25 > Utility.RandomDouble())
                    {
                        special = GetRandomSpecial(level, cont.Map);
                    }
                }
                else if (.10 > Utility.RandomDouble())
                {
                    special = GetRandomSpecial(level, cont.Map);
                }
            }

            if (special != null)
            {
                cont.DropItem(special);
            }
        }
        public IguanaCoveTreasureChest1() : base(0xE43)
        {
            Name    = "a treasure chest -40-";
            Movable = true;
            Weight  = 1000.0;

            TrapPower = 0;
            Locked    = true;

            RequiredSkill = 40;
            LockLevel     = 40;
            MaxLockLevel  = 80;

/////////////////////////////////// Gold
            if (Utility.RandomDouble() < 0.25)
            {
                DropItem(new Gold(Utility.Random(20, 300)));
            }

/////////////////////////////////////// Supplies

            switch (Utility.Random(19))
            {
            case 0: DropItem(new Board(70)); break;

            case 1: DropItem(new BoltOfCloth(70)); break;

            case 2: DropItem(new Bottle(70)); break;

            case 3: DropItem(new CopperWire(70)); break;

            case 4: DropItem(new Cotton(70)); break;

            case 5: DropItem(new DarkYarn(70)); break;

            case 6: DropItem(new Feather(70)); break;

            case 7: DropItem(new Flax(70)); break;

            case 8: DropItem(new Gears(70)); break;

            case 9: DropItem(new GoldWire(70)); break;

            case 10: DropItem(new IronIngot(70)); break;

            case 11: DropItem(new IronWire(70)); break;

            case 12: DropItem(new Leather(70)); break;

            case 13: DropItem(new LightYarn(70)); break;

            case 14: DropItem(new Shaft(70)); break;

            case 15: DropItem(new SilverWire(70)); break;

            case 16: DropItem(new SpoolOfThread(70)); break;

            case 17: DropItem(new Springs(70)); break;

            case 18: DropItem(new Wool(70)); break;
            }

            switch (Utility.Random(5))
            {
            case 0: DropItem(new ArcaneStone(15)); break;

            case 1: DropItem(new BeetleEgg(15)); break;

            case 2: DropItem(new DragonScale(15)); break;

            case 3: DropItem(new FishScale(15)); break;

            case 4: DropItem(new SerpentScale(15)); break;
            }

            Item ReagentLoot = Loot.RandomReagent();

            ReagentLoot.Amount = Utility.RandomMinMax(5, 10);
            DropItem(ReagentLoot);

            if (Utility.RandomDouble() < 0.05)
            {
                DropItem(new SackFlour());
            }

/////////////////////////////////////// Rare Items

            if (Utility.RandomDouble() < 0.01)
            {
                DropItem(new DyeTub());
            }

/////////////////////////////////////// LV 20-30
            if (Utility.RandomDouble() < 0.10)
            {
                BaseWeapon weapon = Loot.RandomWeapon(true);
                switch (Utility.Random(31))
                {
                case 0: weapon = new DoubleAxe(); break;                      // Lv20

                case 1: weapon = new TwoHandedAxe(); break;                   // Lv25

                case 2: weapon = new WarAxe(); break;                         // Lv30

                case 3: weapon = new CompositeBow(); break;                   // Lv20

                case 4: weapon = new EbonyCrossbow(); break;                  // Lv20

                case 5: weapon = new FireBow(); break;                        // Lv25

                case 6: weapon = new GrassBow(); break;                       // Lv25

                case 7: weapon = new IceBow(); break;                         // Lv25

                case 8: weapon = new LightningBow(); break;                   // Lv25

                case 9: weapon = new EbonyWarBow(); break;                    // Lv30

                case 10: weapon = new PistolCrossbow(); break;                // Lv30

                case 11: weapon = new EbonyDualDaggers(); break;              // Lv20

                case 12: weapon = new Tekagi(); break;                        // Lv25

                case 13: weapon = new ElvenSpellblade(); break;               // Lv30

                case 14: weapon = new WarMace(); break;                       // Lv20

                case 15: weapon = new Tessen(); break;                        // Lv25

                case 16: weapon = new HammerPick(); break;                    // Lv30

                case 17: weapon = new Spear(); break;                         // Lv20

                case 18: weapon = new BoneSpear(); break;                     // Lv25

                case 19: weapon = new BubbleStaff(); break;                   // Lv25

                case 20: weapon = new CrystalStaff(); break;                  // Lv25

                case 21: weapon = new EnergyStaff(); break;                   // Lv25

                case 22: weapon = new FireStaff(); break;                     // Lv25

                case 23: weapon = new VineStaff(); break;                     // Lv25

                case 24: weapon = new BlackStaff(); break;                    // Lv30

                case 25: weapon = new VikingSword(); break;                   // Lv20

                case 26: weapon = new Wakizashi(); break;                     // Lv20

                case 27: weapon = new Daisho(); break;                        // Lv30

                case 28: weapon = new EbonyScimitar(); break;                 // Lv30

                case 29: weapon = new RuneBlade(); break;                     // Lv30

                default: weapon = new Longsword(); break;                     // Lv20
                }

                BaseRunicTool.ApplyAttributesTo(weapon, 2, 5, 50);
                DropItem(weapon);
            }

/////////////////////////////////////// LV 18-27
            if (Utility.RandomDouble() < 0.10)
            {
                BaseArmor armor = Loot.RandomArmor(true);
                switch (Utility.Random(18))
                {
                case 0: armor = new HideFemaleChest(); break;                   // Lv18

                case 1: armor = new HideGloves(); break;                        // Lv18

                case 2: armor = new HideGorget(); break;                        // Lv18

                case 3: armor = new HidePants(); break;                         // Lv18

                case 4: armor = new HidePauldrons(); break;                     // Lv18

                case 5: armor = new StuddedDo(); break;                         // Lv21

                case 6: armor = new StuddedHaidate(); break;                    // Lv21

                case 7: armor = new StuddedHiroSode(); break;                   // Lv21

                case 8: armor = new StuddedMempo(); break;                      // Lv21

                case 9: armor = new StuddedSuneate(); break;                    // Lv21

                case 10: armor = new VikingStuddedArms(); break;                // Lv24

                case 11: armor = new VikingStuddedCap(); break;                 // Lv24

                case 12: armor = new VikingStuddedChest(); break;               // Lv24

                case 13: armor = new VikingStuddedLegs(); break;                // Lv24

                case 14: armor = new ChainChest(); break;                       // Lv27

                case 15: armor = new ChainCoif(); break;                        // Lv27

                case 16: armor = new ChainLegs(); break;                        // Lv27

                default: armor = new HideChest(); break;                        // Lv18
                }

                BaseRunicTool.ApplyAttributesTo(armor, 3, 5, 50);
                DropItem(armor);
            }

            if (Utility.RandomDouble() < 0.05)
            {
                BaseHat hat = Loot.RandomHat(true);
                BaseRunicTool.ApplyAttributesTo(hat, 3, 12, 15);
                DropItem(hat);
            }
            if (Utility.RandomDouble() < 0.05)
            {
                BaseClothing clothing = Loot.RandomClothing(true);
                BaseRunicTool.ApplyAttributesTo(clothing, 3, 12, 15);
                DropItem(clothing);
            }

            if (Utility.RandomDouble() < 0.05)
            {
                BaseShield shield1 = new Buckler();
                if (Core.AOS)
                {
                    BaseRunicTool.ApplyAttributesTo(shield1, 3, 5, 50);
                }
                DropItem(shield1);
            }
            if (Utility.RandomDouble() < 0.05)
            {
                BaseShield shield2 = new WoodenShield();
                if (Core.AOS)
                {
                    BaseRunicTool.ApplyAttributesTo(shield2, 3, 5, 50);
                }
                DropItem(shield2);
            }
            if (Utility.RandomDouble() < 0.05)
            {
                BaseShield shield3 = new AmmoniteShield();
                if (Core.AOS)
                {
                    BaseRunicTool.ApplyAttributesTo(shield3, 3, 5, 50);
                }
                DropItem(shield3);
            }
            if (Utility.RandomDouble() < 0.05)
            {
                BaseShield shield4 = new BronzeShield();
                if (Core.AOS)
                {
                    BaseRunicTool.ApplyAttributesTo(shield4, 3, 5, 50);
                }
                DropItem(shield4);
            }
            if (Utility.RandomDouble() < 0.05)
            {
                BaseShield shield5 = new MetalShield();
                if (Core.AOS)
                {
                    BaseRunicTool.ApplyAttributesTo(shield5, 3, 5, 50);
                }
                DropItem(shield5);
            }
            if (Utility.RandomDouble() < 0.05)
            {
                BaseShield shield6 = new WoodenKiteShield();
                if (Core.AOS)
                {
                    BaseRunicTool.ApplyAttributesTo(shield6, 3, 5, 50);
                }
                DropItem(shield6);
            }

            if (Utility.RandomDouble() < 0.05)
            {
                BaseJewel bracelet = new SilverBracelet();
                if (Core.AOS)
                {
                    BaseRunicTool.ApplyAttributesTo(bracelet, 3, 12, 15);
                }
                DropItem(bracelet);
            }
            if (Utility.RandomDouble() < 0.05)
            {
                BaseJewel earrings = new SilverEarrings();
                if (Core.AOS)
                {
                    BaseRunicTool.ApplyAttributesTo(earrings, 3, 12, 15);
                }
                DropItem(earrings);
            }
            if (Utility.RandomDouble() < 0.05)
            {
                BaseJewel necklace = new SilverNecklace();
                if (Core.AOS)
                {
                    BaseRunicTool.ApplyAttributesTo(necklace, 3, 12, 15);
                }
                DropItem(necklace);
            }
            if (Utility.RandomDouble() < 0.05)
            {
                BaseJewel ring = new SilverRing();
                if (Core.AOS)
                {
                    BaseRunicTool.ApplyAttributesTo(ring, 3, 12, 15);
                }
                DropItem(ring);
            }
        }
Beispiel #24
0
            protected override void OnTarget(Mobile from, object targeted)
            {
                if (this.m_Powder.Deleted || this.m_Powder.UsesRemaining <= 0)
                {
                    from.SendLocalizedMessage(1049086); // You have used up your powder of temperament.
                    return;
                }

                if (targeted is IDurability && targeted is Item)
                {
                    IDurability wearable = (IDurability)targeted;
                    Item        item     = (Item)targeted;

                    if (!wearable.CanFortify)
                    {
                        from.SendLocalizedMessage(1049083); // You cannot use the powder on that item.
                        return;
                    }

                    #region SF Imbuing
                    if (item is BaseArmor)
                    {
                        BaseArmor Ti = (BaseArmor)item as BaseArmor;
                        if (Ti.Attributes.Brittle > 0)
                        {
                            from.SendLocalizedMessage(1149799);   // That cannot be used on brittle items.
                            return;
                        }
                    }
                    else if (item is BaseJewel)
                    {
                        BaseJewel Ti = (BaseJewel)item as BaseJewel;
                        if (Ti.Attributes.Brittle > 0)
                        {
                            from.SendLocalizedMessage(1149799);   // That cannot be used on brittle items.
                            return;
                        }
                    }
                    else if (item is BaseHat)
                    {
                        BaseHat Ti = (BaseHat)item as BaseHat;
                        if (Ti.Attributes.Brittle > 0)
                        {
                            from.SendLocalizedMessage(1149799);   // That cannot be used on brittle items.
                            return;
                        }
                    }
                    else if (item is BaseWeapon)
                    {
                        BaseWeapon Ti = (BaseWeapon)item as BaseWeapon;
                        if (Ti.Attributes.Brittle > 0)
                        {
                            from.SendLocalizedMessage(1149799);   // That cannot be used on brittle items.
                            return;
                        }
                    }
                    #endregion


                    if ((item.IsChildOf(from.Backpack) || (Core.ML && item.Parent == from)) && this.m_Powder.IsChildOf(from.Backpack))
                    {
                        int origMaxHP = wearable.MaxHitPoints;
                        int origCurHP = wearable.HitPoints;

                        if (origMaxHP > 0)
                        {
                            int initMaxHP = Core.AOS ? 255 : wearable.InitMaxHits;

                            wearable.UnscaleDurability();

                            if (wearable.MaxHitPoints < initMaxHP)
                            {
                                int bonus = initMaxHP - wearable.MaxHitPoints;

                                if (bonus > 10)
                                {
                                    bonus = 10;
                                }

                                wearable.MaxHitPoints += bonus;
                                wearable.HitPoints    += bonus;

                                wearable.ScaleDurability();

                                if (wearable.MaxHitPoints > 255)
                                {
                                    wearable.MaxHitPoints = 255;
                                }
                                if (wearable.HitPoints > 255)
                                {
                                    wearable.HitPoints = 255;
                                }

                                if (wearable.MaxHitPoints > origMaxHP)
                                {
                                    from.SendLocalizedMessage(1049084); // You successfully use the powder on the item.
                                    from.PlaySound(0x247);

                                    --this.m_Powder.UsesRemaining;

                                    if (this.m_Powder.UsesRemaining <= 0)
                                    {
                                        from.SendLocalizedMessage(1049086); // You have used up your powder of fortifying.
                                        this.m_Powder.Delete();
                                    }
                                }
                                else
                                {
                                    wearable.MaxHitPoints = origMaxHP;
                                    wearable.HitPoints    = origCurHP;
                                    from.SendLocalizedMessage(1049085); // The item cannot be improved any further.
                                }
                            }
                            else
                            {
                                from.SendLocalizedMessage(1049085); // The item cannot be improved any further.
                                wearable.ScaleDurability();
                            }
                        }
                        else
                        {
                            from.SendLocalizedMessage(1049083); // You cannot use the powder on that item.
                        }
                    }
                    else
                    {
                        from.SendLocalizedMessage(1042001); // That must be in your pack for you to use it.
                    }
                }
                else
                {
                    from.SendLocalizedMessage(1049083); // You cannot use the powder on that item.
                }
            }
Beispiel #25
0
        public ChestOfHeirlooms() : base(0x2811)
        {
            Locked        = true;
            LockLevel     = 95;
            MaxLockLevel  = 140;
            RequiredSkill = 95;

            TrapType  = TrapType.ExplosionTrap;
            TrapLevel = 10;
            TrapPower = 100;

            GumpID = 0x10B;

            for (int i = 0; i < 10; ++i)
            {
                Item item = Loot.ChestOfHeirloomsContains();


                if (item is BaseWeapon)
                {
                    BaseWeapon weapon = (BaseWeapon)item;

                    if (Core.AOS)
                    {
                        int attributeCount = Utility.RandomMinMax(1, 5);
                        int min            = 20;
                        int max            = 80;

                        BaseRunicTool.ApplyAttributesTo(weapon, attributeCount, min, max);
                    }
                    else
                    {
                        weapon.DamageLevel     = (WeaponDamageLevel)Utility.Random(6);
                        weapon.AccuracyLevel   = (WeaponAccuracyLevel)Utility.Random(6);
                        weapon.DurabilityLevel = (WeaponDurabilityLevel)Utility.Random(6);
                    }

                    DropItem(item);
                }
                else if (item is BaseArmor)
                {
                    BaseArmor armor = (BaseArmor)item;

                    if (Core.AOS)
                    {
                        int attributeCount = Utility.RandomMinMax(1, 5);
                        int min            = 20;
                        int max            = 80;

                        BaseRunicTool.ApplyAttributesTo(armor, attributeCount, min, max);
                    }
                    else
                    {
                        armor.ProtectionLevel = (ArmorProtectionLevel)Utility.Random(6);
                        armor.Durability      = (ArmorDurabilityLevel)Utility.Random(6);
                    }

                    DropItem(item);
                }
                else if (item is BaseHat)
                {
                    BaseHat hat = (BaseHat)item;

                    if (Core.AOS)
                    {
                        int attributeCount = Utility.RandomMinMax(1, 5);
                        int min            = 20;
                        int max            = 80;

                        BaseRunicTool.ApplyAttributesTo(hat, attributeCount, min, max);
                    }

                    DropItem(item);
                }
                else if (item is BaseJewel)
                {
                    int attributeCount = Utility.RandomMinMax(1, 5);
                    int min            = 20;
                    int max            = 80;

                    BaseRunicTool.ApplyAttributesTo((BaseJewel)item, attributeCount, min, max);

                    DropItem(item);
                }
            }
        }
        private void Fill(int level)
        {
            this.TrapType  = TrapType.ExplosionTrap;
            this.TrapPower = level * 25;
            this.TrapLevel = level;
            this.Locked    = true;

            switch (level)
            {
            case 1:
                this.RequiredSkill = 36;
                break;

            case 2:
                this.RequiredSkill = 76;
                break;

            case 3:
                this.RequiredSkill = 84;
                break;

            case 4:
                this.RequiredSkill = 92;
                break;

            case 5:
                this.RequiredSkill = 100;
                break;
            }

            this.LockLevel    = this.RequiredSkill - 10;
            this.MaxLockLevel = this.RequiredSkill + 40;

            this.DropItem(new Gold(level * 200));

            for (int i = 0; i < level; ++i)
            {
                this.DropItem(Loot.RandomScroll(0, 63, SpellbookType.Regular));
            }

            for (int i = 0; i < level * 2; ++i)
            {
                Item item;

                if (Core.AOS)
                {
                    item = Loot.RandomArmorOrShieldOrWeaponOrJewelry();
                }
                else
                {
                    item = Loot.RandomArmorOrShieldOrWeapon();
                }

                if (item is BaseWeapon)
                {
                    BaseWeapon weapon = (BaseWeapon)item;

                    if (Core.AOS)
                    {
                        int attributeCount;
                        int min, max;

                        GetRandomAOSStats(out attributeCount, out min, out max);

                        BaseRunicTool.ApplyAttributesTo(weapon, attributeCount, min, max);
                    }
                    else
                    {
                        weapon.DamageLevel     = (WeaponDamageLevel)Utility.Random(6);
                        weapon.AccuracyLevel   = (WeaponAccuracyLevel)Utility.Random(6);
                        weapon.DurabilityLevel = (WeaponDurabilityLevel)Utility.Random(6);
                    }

                    this.DropItem(item);
                }
                else if (item is BaseArmor)
                {
                    BaseArmor armor = (BaseArmor)item;

                    if (Core.AOS)
                    {
                        int attributeCount;
                        int min, max;

                        GetRandomAOSStats(out attributeCount, out min, out max);

                        BaseRunicTool.ApplyAttributesTo(armor, attributeCount, min, max);
                    }
                    else
                    {
                        armor.ProtectionLevel = (ArmorProtectionLevel)Utility.Random(6);
                        armor.Durability      = (ArmorDurabilityLevel)Utility.Random(6);
                    }

                    this.DropItem(item);
                }
                else if (item is BaseHat)
                {
                    BaseHat hat = (BaseHat)item;

                    if (Core.AOS)
                    {
                        int attributeCount;
                        int min, max;

                        GetRandomAOSStats(out attributeCount, out min, out max);

                        BaseRunicTool.ApplyAttributesTo(hat, attributeCount, min, max);
                    }

                    this.DropItem(item);
                }
                else if (item is BaseJewel)
                {
                    int attributeCount;
                    int min, max;

                    GetRandomAOSStats(out attributeCount, out min, out max);

                    BaseRunicTool.ApplyAttributesTo((BaseJewel)item, attributeCount, min, max);

                    this.DropItem(item);
                }
            }

            for (int i = 0; i < level; i++)
            {
                Item item = Loot.RandomPossibleReagent();
                item.Amount = Utility.RandomMinMax(40, 60);
                this.DropItem(item);
            }

            for (int i = 0; i < level; i++)
            {
                Item item = Loot.RandomGem();
                this.DropItem(item);
            }

            this.DropItem(new TreasureMap(level + 1, (Utility.RandomBool() ? Map.Felucca : Map.Trammel)));
            //  this.DropItem(new PowerScroll(), 120);


            switch (Utility.Random(2))
            {
            case 0:   break;

            case 1:
                switch (Utility.Random(38))
                {
                case 0: DropItem(new PowerScroll(SkillName.Swords, 120)); break;

                case 1: DropItem(new PowerScroll(SkillName.Fencing, 120)); break;

                case 2: DropItem(new PowerScroll(SkillName.Archery, 120)); break;

                case 3: DropItem(new PowerScroll(SkillName.Parry, 120)); break;

                case 4: DropItem(new PowerScroll(SkillName.Tactics, 120)); break;

                case 5: DropItem(new PowerScroll(SkillName.Anatomy, 120)); break;

                case 6: DropItem(new PowerScroll(SkillName.Healing, 120)); break;

                case 7: DropItem(new PowerScroll(SkillName.Magery, 120)); break;

                case 8: DropItem(new PowerScroll(SkillName.Meditation, 120)); break;

                case 9: DropItem(new PowerScroll(SkillName.EvalInt, 120)); break;

                case 10: DropItem(new PowerScroll(SkillName.MagicResist, 120)); break;

                case 11: DropItem(new PowerScroll(SkillName.AnimalTaming, 120)); break;

                case 12: DropItem(new PowerScroll(SkillName.AnimalLore, 120)); break;

                case 13: DropItem(new PowerScroll(SkillName.Veterinary, 120)); break;

                case 14: DropItem(new PowerScroll(SkillName.Musicianship, 120)); break;

                case 15: DropItem(new PowerScroll(SkillName.Provocation, 120)); break;

                case 16: DropItem(new PowerScroll(SkillName.Discordance, 120)); break;

                case 17: DropItem(new PowerScroll(SkillName.Peacemaking, 120)); break;

                case 18: DropItem(new PowerScroll(SkillName.Chivalry, 120)); break;

                case 19: DropItem(new PowerScroll(SkillName.Focus, 120)); break;

                case 20: DropItem(new PowerScroll(SkillName.Necromancy, 120)); break;

                case 21: DropItem(new PowerScroll(SkillName.Stealing, 120)); break;

                case 22: DropItem(new PowerScroll(SkillName.Stealth, 120)); break;

                case 23: DropItem(new PowerScroll(SkillName.Macing, 120)); break;

                case 24: DropItem(new PowerScroll(SkillName.Wrestling, 120)); break;

                case 25: DropItem(new PowerScroll(SkillName.Blacksmith, 120)); break;

                case 26: DropItem(new PowerScroll(SkillName.Tailoring, 120)); break;

                case 27: DropItem(new PowerScroll(SkillName.Tinkering, 120)); break;

                case 28: DropItem(new PowerScroll(SkillName.Mining, 120)); break;

                case 29: DropItem(new PowerScroll(SkillName.Carpentry, 120)); break;

                case 30: DropItem(new PowerScroll(SkillName.Alchemy, 120)); break;

                case 31: DropItem(new PowerScroll(SkillName.Fletching, 120)); break;

                case 32: DropItem(new PowerScroll(SkillName.Inscribe, 120)); break;

                case 33: DropItem(new PowerScroll(SkillName.Cooking, 120)); break;

                case 34: DropItem(new PowerScroll(SkillName.Cartography, 120)); break;

                case 35: DropItem(new PowerScroll(SkillName.Lumberjacking, 120)); break;

                case 36: DropItem(new PowerScroll(SkillName.Lockpicking, 120)); break;

                case 37: DropItem(new PowerScroll(SkillName.Fishing, 120)); break;
                }
                break;
            }
        }
Beispiel #27
0
        public static void Fill(Mobile from, LockableContainer cont, int level, bool isSos)
        {
            var map  = from.Map;
            var luck = from is PlayerMobile ? ((PlayerMobile)from).RealLuck : from.Luck;

            cont.Movable = false;
            cont.Locked  = true;
            int count;

            if (level == 0)
            {
                cont.LockLevel = 0; // Can't be unlocked

                cont.DropItem(new Gold(Utility.RandomMinMax(50, 100)));

                if (Utility.RandomDouble() < 0.75)
                {
                    cont.DropItem(new TreasureMap(0, Map.Trammel));
                }
            }
            else
            {
                cont.TrapType  = TrapType.ExplosionTrap;
                cont.TrapPower = level * 25;
                cont.TrapLevel = level;

                switch (level)
                {
                case 1:
                    cont.RequiredSkill = 5;
                    break;

                case 2:
                    cont.RequiredSkill = 45;
                    break;

                case 3:
                    cont.RequiredSkill = 65;
                    break;

                case 4:
                    cont.RequiredSkill = 75;
                    break;

                case 5:
                    cont.RequiredSkill = 75;
                    break;

                case 6:
                    cont.RequiredSkill = 80;
                    break;

                case 7:
                    cont.RequiredSkill = 80;
                    break;
                }

                cont.LockLevel    = cont.RequiredSkill - 10;
                cont.MaxLockLevel = cont.RequiredSkill + 40;

                #region Gold
                cont.DropItem(new Gold(isSos ? level * 10000 : level * 5000));
                #endregion

                #region Scrolls
                if (isSos)
                {
                    switch (level)
                    {
                    default: count = 20; break;

                    case 0:
                    case 1: count = Utility.RandomMinMax(2, 5); break;

                    case 2: count = Utility.RandomMinMax(10, 15); break;
                    }
                }
                else
                {
                    count = level * 5;
                }

                for (int i = 0; i < count; ++i)
                {
                    cont.DropItem(Loot.RandomScroll(0, 63, SpellbookType.Regular));
                }
                #endregion

                #region Magical Items
                double propsScale = 1.0;

                switch (level)
                {
                case 1:
                    count      = isSos ? Utility.RandomMinMax(2, 6) : 32;
                    propsScale = 0.5625;
                    break;

                case 2:
                    count      = isSos ? Utility.RandomMinMax(10, 15) : 40;
                    propsScale = 0.6875;
                    break;

                case 3:
                    count      = isSos ? Utility.RandomMinMax(15, 20) : 48;
                    propsScale = 0.875;
                    break;

                case 4:
                    count = isSos ? Utility.RandomMinMax(15, 20) : 56;
                    break;

                case 5:
                    count = isSos ? Utility.RandomMinMax(15, 20) : 64;
                    break;

                case 6:
                    count = isSos ? Utility.RandomMinMax(15, 20) : 72;
                    break;

                case 7:
                    count = isSos ? Utility.RandomMinMax(15, 20) : 80;
                    break;

                default:
                    count = 0;
                    break;
                }

                for (int i = 0; i < count; ++i)
                {
                    Item item;

                    item = Loot.RandomArmorOrShieldOrWeaponOrJewelry();

                    if (item != null && RandomItemGenerator.Enabled)
                    {
                        int min, max;
                        GetRandomItemStat(out min, out max, propsScale);

                        RunicReforging.GenerateRandomItem(item, luck, min, max, map);

                        cont.DropItem(item);
                    }
                    else if (item is BaseWeapon)
                    {
                        BaseWeapon weapon = (BaseWeapon)item;

                        int attributeCount;
                        int min, max;

                        GetRandomAOSStats(out attributeCount, out min, out max);

                        BaseRunicTool.ApplyAttributesTo(weapon, attributeCount, min, max);

                        cont.DropItem(item);
                    }
                    else if (item is BaseArmor)
                    {
                        BaseArmor armor = (BaseArmor)item;

                        int attributeCount;
                        int min, max;

                        GetRandomAOSStats(out attributeCount, out min, out max);

                        BaseRunicTool.ApplyAttributesTo(armor, attributeCount, min, max);

                        cont.DropItem(item);
                    }
                    else if (item is BaseHat)
                    {
                        BaseHat hat = (BaseHat)item;

                        int attributeCount;
                        int min, max;

                        GetRandomAOSStats(out attributeCount, out min, out max);

                        BaseRunicTool.ApplyAttributesTo(hat, attributeCount, min, max);

                        cont.DropItem(item);
                    }
                    else if (item is BaseJewel)
                    {
                        int attributeCount;
                        int min, max;

                        GetRandomAOSStats(out attributeCount, out min, out max);

                        BaseRunicTool.ApplyAttributesTo((BaseJewel)item, attributeCount, min, max);

                        cont.DropItem(item);
                    }
                }
            }
            #endregion

            #region Reagents
            if (isSos)
            {
                switch (level)
                {
                default: count = Utility.RandomMinMax(45, 60); break;

                case 0:
                case 1: count = Utility.RandomMinMax(15, 20); break;

                case 2: count = Utility.RandomMinMax(25, 40); break;
                }
            }
            else
            {
                count = level == 0 ? 12 : Utility.RandomMinMax(40, 60) * (level + 1);
            }

            for (int i = 0; i < count; i++)
            {
                cont.DropItemStacked(Loot.RandomPossibleReagent());
            }
            #endregion

            #region Gems
            if (level == 0)
            {
                count = 2;
            }
            else
            {
                count = (level * 3) + 1;
            }

            for (int i = 0; i < count; i++)
            {
                cont.DropItem(Loot.RandomGem());
            }
            #endregion

            #region Imbuing Ingreds
            if (level > 1)
            {
                Item item = Loot.Construct(m_ImbuingIngreds[Utility.Random(m_ImbuingIngreds.Length)]);

                item.Amount = level;
                cont.DropItem(item);
            }
            #endregion

            Item arty    = null;
            Item special = null;

            if (isSos)
            {
                if (0.004 * level > Utility.RandomDouble())
                {
                    arty = Loot.Construct(m_SOSArtifacts);
                }
                if (0.006 * level > Utility.RandomDouble())
                {
                    special = Loot.Construct(m_SOSDecor);
                }
                else if (0.009 * level > Utility.RandomDouble())
                {
                    special = new TreasureMap(Utility.RandomMinMax(level, Math.Min(7, level + 1)), cont.Map);
                }
            }
            else
            {
                if (level >= 7)
                {
                    if (0.025 > Utility.RandomDouble())
                    {
                        special = Loot.Construct(m_LevelSevenOnly);
                    }
                    else if (0.10 > Utility.RandomDouble())
                    {
                        special = Loot.Construct(m_LevelFiveToSeven);
                    }
                    else if (0.25 > Utility.RandomDouble())
                    {
                        special = GetRandomSpecial(level, cont.Map);
                    }

                    arty = Loot.Construct(m_Artifacts);
                }
                else if (level >= 6)
                {
                    if (0.025 > Utility.RandomDouble())
                    {
                        special = Loot.Construct(m_LevelFiveToSeven);
                    }
                    else if (0.20 > Utility.RandomDouble())
                    {
                        special = GetRandomSpecial(level, cont.Map);
                    }

                    arty = Loot.Construct(m_Artifacts);
                }
                else if (level >= 5)
                {
                    if (0.005 > Utility.RandomDouble())
                    {
                        special = Loot.Construct(m_LevelFiveToSeven);
                    }
                    else if (0.15 > Utility.RandomDouble())
                    {
                        special = GetRandomSpecial(level, cont.Map);
                    }
                }
                else if (.10 > Utility.RandomDouble())
                {
                    special = GetRandomSpecial(level, cont.Map);
                }
            }

            if (arty != null)
            {
                Container pack = new Backpack();
                pack.Hue = 1278;

                pack.DropItem(arty);
                cont.DropItem(pack);
            }

            if (special != null)
            {
                cont.DropItem(special);
            }

            int rolls = 2;

            if (level >= 5)
            {
                rolls += level - 2;
            }

            RefinementComponent.Roll(cont, rolls, 0.10);
        }
Beispiel #28
0
        public RatmenFortressBossChest() : base(0x2DF2)
        {
            Name    = "a boss treasure chest -25-";
            Movable = true;
            Weight  = 1000.0;

            TrapPower = 0;
            Locked    = true;

            RequiredSkill = 25;
            LockLevel     = 25;
            MaxLockLevel  = 30;

            // Gold
            if (Utility.RandomDouble() < 0.50)
            {
                DropItem(new Gold(Utility.Random(250, 400)));
            }

/////////////////////////////////////// Jewelry

            if (Utility.RandomDouble() < 0.04)
            {
                DropItem(new Agate());
            }
            if (Utility.RandomDouble() < 0.04)
            {
                DropItem(new Beryl());
            }
            if (Utility.RandomDouble() < 0.04)
            {
                DropItem(new ChromeDiopside());
            }
            if (Utility.RandomDouble() < 0.04)
            {
                DropItem(new FireOpal());
            }
            if (Utility.RandomDouble() < 0.04)
            {
                DropItem(new MoonstoneCustom());
            }
            if (Utility.RandomDouble() < 0.04)
            {
                DropItem(new Onyx());
            }
            if (Utility.RandomDouble() < 0.04)
            {
                DropItem(new Opal());
            }
            if (Utility.RandomDouble() < 0.04)
            {
                DropItem(new Pearl());
            }
            if (Utility.RandomDouble() < 0.04)
            {
                DropItem(new TurquoiseCustom());
            }

            if (Utility.RandomDouble() < 0.03)
            {
                DropItem(new Bloodstone());
            }
            if (Utility.RandomDouble() < 0.03)
            {
                DropItem(new Citrine());
            }
            if (Utility.RandomDouble() < 0.03)
            {
                DropItem(new Demantoid());
            }
            if (Utility.RandomDouble() < 0.03)
            {
                DropItem(new Jasper());
            }
            if (Utility.RandomDouble() < 0.03)
            {
                DropItem(new Lolite());
            }
            if (Utility.RandomDouble() < 0.03)
            {
                DropItem(new Lupis());
            }
            if (Utility.RandomDouble() < 0.03)
            {
                DropItem(new Peridot());
            }
            if (Utility.RandomDouble() < 0.03)
            {
                DropItem(new Tsavorite());
            }
            if (Utility.RandomDouble() < 0.03)
            {
                DropItem(new Zircon());
            }

            if (Utility.RandomDouble() < 0.02)
            {
                DropItem(new Amber());
            }
            if (Utility.RandomDouble() < 0.02)
            {
                DropItem(new Amethyst());
            }
            if (Utility.RandomDouble() < 0.02)
            {
                DropItem(new Andalusite());
            }
            if (Utility.RandomDouble() < 0.02)
            {
                DropItem(new Chrysoberyl());
            }
            if (Utility.RandomDouble() < 0.02)
            {
                DropItem(new Garnet());
            }
            if (Utility.RandomDouble() < 0.02)
            {
                DropItem(new Jade());
            }
            if (Utility.RandomDouble() < 0.02)
            {
                DropItem(new Mandarin());
            }
            if (Utility.RandomDouble() < 0.02)
            {
                DropItem(new Morganite());
            }
            if (Utility.RandomDouble() < 0.02)
            {
                DropItem(new Paraiba());
            }
            if (Utility.RandomDouble() < 0.02)
            {
                DropItem(new TigerEye());
            }
            if (Utility.RandomDouble() < 0.02)
            {
                DropItem(new Tourmaline());
            }

            if (Utility.RandomDouble() < 0.01)
            {
                DropItem(new Alexandrite());
            }
            if (Utility.RandomDouble() < 0.01)
            {
                DropItem(new Ametrine());
            }
            if (Utility.RandomDouble() < 0.01)
            {
                DropItem(new Kunzite());
            }
            if (Utility.RandomDouble() < 0.01)
            {
                DropItem(new Ruby());
            }
            if (Utility.RandomDouble() < 0.01)
            {
                DropItem(new Sapphire());
            }
            if (Utility.RandomDouble() < 0.01)
            {
                DropItem(new Tanzanite());
            }
            if (Utility.RandomDouble() < 0.01)
            {
                DropItem(new Topaz());
            }
            if (Utility.RandomDouble() < 0.01)
            {
                DropItem(new Zultanite());
            }

            if (Utility.RandomDouble() < 0.01)
            {
                DropItem(new Diamond());
            }
            if (Utility.RandomDouble() < 0.01)
            {
                DropItem(new Emerald());
            }
            if (Utility.RandomDouble() < 0.01)
            {
                DropItem(new PinkQuartz());
            }
            if (Utility.RandomDouble() < 0.01)
            {
                DropItem(new StarSapphire());
            }

/////////////////////////////////////// Supplies

            if (Utility.RandomDouble() < 0.15)
            {
                DropItem(new Arrow(Utility.Random(35, 50)));
            }

            if (Utility.RandomDouble() < 0.15)
            {
                DropItem(new Bolt(Utility.Random(35, 50)));
            }

            Item ReagentLoot = Loot.RandomReagent();

            ReagentLoot.Amount = Utility.Random(35, 40);
            DropItem(ReagentLoot);

            if (Utility.RandomDouble() < 0.15)
            {
                DropItem(new Bandage(Utility.Random(25, 40)));
            }

            if (Utility.RandomDouble() < 0.15)
            {
                DropItem(new Bedroll());
            }

            if (Utility.RandomDouble() < 0.15)
            {
                DropItem(new Bottle(Utility.Random(15, 25)));
            }

            if (Utility.RandomDouble() < 0.15)
            {
                DropItem(new Lockpick(Utility.Random(15, 25)));
            }

            Item PotionLoot1 = Loot.RandomPotion();

            DropItem(PotionLoot1);

            Item PotionLoot2 = Loot.RandomPotion();

            DropItem(PotionLoot2);

            Item PotionLoot3 = Loot.RandomPotion();

            DropItem(PotionLoot3);

/////////////////////////////////////// Tools

            if (Utility.RandomDouble() < 0.15)
            {
                DropItem(new FishingPole());
            }

            if (Utility.RandomDouble() < 0.15)
            {
                DropItem(new Shovel());
            }

            if (Utility.RandomDouble() < 0.15)
            {
                DropItem(new Skillet());
            }

/////////////////////////////////////// Rare Items

            if (Utility.RandomDouble() < 0.01)
            {
                DropItem(new DyeTub());
            }

            if (Utility.RandomDouble() < 0.20)
            {
                BaseWeapon weapon = Loot.RandomWeapon(true);
                switch (Utility.Random(38))
                {
                case 0: weapon = new Hatchet(); break;

                case 1: weapon = new Bow(); break;

                case 2: weapon = new Crossbow(); break;

                case 3: weapon = new Club(); break;

                case 4: weapon = new Mace(); break;

                case 5: weapon = new Maul(); break;

                case 6: weapon = new Pitchfork(); break;

                case 7: weapon = new ShortSpear(); break;

                case 8: weapon = new GnarledStaff(); break;

                case 9: weapon = new ShepherdsCrook(); break;

                case 10: weapon = new Cutlass(); break;

                case 11: weapon = new Katana(); break;

                case 12: weapon = new Kryss(); break;

                case 13: weapon = new Scimitar(); break;

                case 14: weapon = new AssassinSpike(); break;

                case 15: weapon = new DiamondMace(); break;

                case 16: weapon = new Leafblade(); break;

                case 17: weapon = new MagicalShortbow(); break;

                case 18: weapon = new RadiantScimitar(); break;

                case 19: weapon = new WildStaff(); break;

                case 20: weapon = new Axe(); break;

                case 21: weapon = new ExecutionersAxe(); break;

                case 22: weapon = new Pickaxe(); break;

                case 23: weapon = new TwoHandedAxe(); break;

                case 24: weapon = new WarAxe(); break;

                case 25: weapon = new HeavyCrossbow(); break;

                case 26: weapon = new HammerPick(); break;

                case 27: weapon = new WarMace(); break;

                case 28: weapon = new Spear(); break;

                case 29: weapon = new WarFork(); break;

                case 30: weapon = new BlackStaff(); break;

                case 31: weapon = new QuarterStaff(); break;

                case 32: weapon = new Longsword(); break;

                case 33: weapon = new ElvenCompositeLongbow(); break;

                case 34: weapon = new ElvenMachete(); break;

                case 35: weapon = new ElvenSpellblade(); break;

                case 36: weapon = new RuneBlade(); break;

                default: weapon = new Dagger(); break;
                }

                BaseRunicTool.ApplyAttributesTo(weapon, 5, 15, 20);

                DropItem(weapon);
            }

            if (Utility.RandomDouble() < 0.20)
            {
                BaseArmor armor = Loot.RandomArmor(true);
                switch (Utility.Random(13))
                {
                case 0: armor = new FemaleStuddedChest(); break;

                case 1: armor = new StuddedArms(); break;

                case 2: armor = new StuddedBustierArms(); break;

                case 3: armor = new StuddedGloves(); break;

                case 4: armor = new StuddedGorget(); break;

                case 5: armor = new ChainCoif(); break;

                case 6: armor = new ChainChest(); break;

                case 7: armor = new ChainLegs(); break;

                case 8: armor = new RingmailArms(); break;

                case 9: armor = new RingmailChest(); break;

                case 10: armor = new RingmailGloves(); break;

                case 11: armor = new RingmailLegs(); break;

                default: armor = new StuddedChest(); break;
                }

                BaseRunicTool.ApplyAttributesTo(armor, 5, 15, 20);

                DropItem(armor);
            }

            if (Utility.RandomDouble() < 0.20)
            {
                BaseHat hat = Loot.RandomHat(true);
                switch (Utility.Random(5))
                {
                case 0: hat = new BearMask(); break;

                case 1: hat = new DeerMask(); break;

                case 2: hat = new FeatheredHat(); break;

                case 3: hat = new WizardsHat(); break;

                default: hat = new TribalMask(); break;
                }

                BaseRunicTool.ApplyAttributesTo(hat, 5, 15, 20);

                DropItem(hat);
            }

            if (Utility.RandomDouble() < 0.20)
            {
                BaseClothing clothing = Loot.RandomClothing(true);
                BaseRunicTool.ApplyAttributesTo(clothing, 5, 15, 20);

                DropItem(clothing);
            }

            if (Utility.RandomDouble() < 0.20)
            {
                BaseShield shield = new HeaterShield();
                if (Core.AOS)
                {
                    BaseRunicTool.ApplyAttributesTo(shield, 5, 15, 20);
                }

                DropItem(shield);
            }

            if (Utility.RandomDouble() < 0.20)
            {
                BaseJewel bracelet = new SilverBracelet();
                if (Core.AOS)
                {
                    BaseRunicTool.ApplyAttributesTo(bracelet, 5, 15, 20);
                }

                DropItem(bracelet);
            }

            if (Utility.RandomDouble() < 0.20)
            {
                BaseJewel earrings = new SilverEarrings();
                if (Core.AOS)
                {
                    BaseRunicTool.ApplyAttributesTo(earrings, 5, 15, 20);
                }

                DropItem(earrings);
            }

            if (Utility.RandomDouble() < 0.20)
            {
                BaseJewel necklace = new SilverNecklace();
                if (Core.AOS)
                {
                    BaseRunicTool.ApplyAttributesTo(necklace, 5, 15, 20);
                }

                DropItem(necklace);
            }

            if (Utility.RandomDouble() < 0.20)
            {
                BaseJewel ring = new SilverRing();
                if (Core.AOS)
                {
                    BaseRunicTool.ApplyAttributesTo(ring, 5, 15, 20);
                }

                DropItem(ring);
            }
        }
Beispiel #29
0
        private void Fill(int level)
        {
            TrapType  = TrapType.ExplosionTrap;
            TrapPower = level * 25;
            TrapLevel = level;
            Locked    = true;

            switch (level)
            {
            case 1: Serrure = SerrureQuality.Simple; break;

            case 2: Serrure = SerrureQuality.Moyenne; break;

            case 3: Serrure = SerrureQuality.Bonne; break;

            case 4: Serrure = SerrureQuality.TresBonne; break;

            case 5: Serrure = SerrureQuality.Excellente; break;
            }


            DropItem(new Gold(level * 200));

            for (int i = 0; i < level; ++i)
            {
                DropItem(Loot.RandomScroll(0, 63, SpellbookType.Regular));
            }

            for (int i = 0; i < level * 2; ++i)
            {
                Item item;

                if (Core.AOS)
                {
                    item = Loot.RandomArmorOrShieldOrWeaponOrJewelry();
                }
                else
                {
                    item = Loot.RandomArmorOrShieldOrWeapon();
                }

                if (item is BaseWeapon)
                {
                    BaseWeapon weapon = (BaseWeapon)item;

                    if (Core.AOS)
                    {
                        int attributeCount;
                        int min, max;

                        GetRandomAOSStats(out attributeCount, out min, out max);

                        BaseRunicTool.ApplyAttributesTo(weapon, attributeCount, min, max);
                    }
                    else
                    {
                        weapon.DamageLevel     = (WeaponDamageLevel)Utility.Random(6);
                        weapon.AccuracyLevel   = (WeaponAccuracyLevel)Utility.Random(6);
                        weapon.DurabilityLevel = (WeaponDurabilityLevel)Utility.Random(6);
                    }

                    DropItem(item);
                }
                else if (item is BaseArmor)
                {
                    BaseArmor armor = (BaseArmor)item;

                    if (Core.AOS)
                    {
                        int attributeCount;
                        int min, max;

                        GetRandomAOSStats(out attributeCount, out min, out max);

                        BaseRunicTool.ApplyAttributesTo(armor, attributeCount, min, max);
                    }
                    else
                    {
                        armor.ProtectionLevel = (ArmorProtectionLevel)Utility.Random(6);
                        armor.Durability      = (ArmorDurabilityLevel)Utility.Random(6);
                    }

                    DropItem(item);
                }
                else if (item is BaseHat)
                {
                    BaseHat hat = (BaseHat)item;

                    if (Core.AOS)
                    {
                        int attributeCount;
                        int min, max;

                        GetRandomAOSStats(out attributeCount, out min, out max);

                        BaseRunicTool.ApplyAttributesTo(hat, attributeCount, min, max);
                    }

                    DropItem(item);
                }
                else if (item is BaseJewel)
                {
                    int attributeCount;
                    int min, max;

                    GetRandomAOSStats(out attributeCount, out min, out max);

                    BaseRunicTool.ApplyAttributesTo((BaseJewel)item, attributeCount, min, max);

                    DropItem(item);
                }
            }

            for (int i = 0; i < level; i++)
            {
                Item item = Loot.RandomPossibleReagent();
                item.Amount = Utility.RandomMinMax(40, 60);
                DropItem(item);
            }

            for (int i = 0; i < level; i++)
            {
                Item item = Loot.RandomGem();
                DropItem(item);
            }

            DropItem(new TreasureMap(level + 1, (Utility.RandomBool() ? Map.Felucca : Map.Trammel)));
        }
Beispiel #30
0
        public static void Fill(LockableContainer cont, int level)
        {
            cont.Movable = false;
            cont.Locked  = true;
            int numberItems;

            if (level == 0)
            {
                cont.LockLevel = 0;                 // Can't be unlocked

                cont.DropItem(new Gold(Utility.RandomMinMax(50, 100)));

                if (Utility.RandomDouble() < 0.75)
                {
                    cont.DropItem(new TreasureMap(0, Map.Trammel));
                }
            }
            else
            {
                cont.TrapType  = TrapType.ExplosionTrap;
                cont.TrapPower = level * 25;
                cont.TrapLevel = level;

                switch (level)
                {
                case 1: cont.RequiredSkill = 36; break;

                case 2: cont.RequiredSkill = 76; break;

                case 3: cont.RequiredSkill = 84; break;

                case 4: cont.RequiredSkill = 92; break;

                case 5: cont.RequiredSkill = 100; break;

                case 6: cont.RequiredSkill = 100; break;
                }

                cont.LockLevel    = cont.RequiredSkill - 10;
                cont.MaxLockLevel = cont.RequiredSkill + 40;

                //Publish 67 gold change
                //if ( Core.SA )
                //	cont.DropItem( new Gold( level * 5000 ) );
                //else
                cont.DropItem(new Gold(level * 1000));

                for (int i = 0; i < level * 5; ++i)
                {
                    cont.DropItem(Loot.RandomScroll(0, 63, SpellbookType.Regular));
                }

                if (Core.SE)
                {
                    switch (level)
                    {
                    case 1: numberItems = 5; break;

                    case 2: numberItems = 10; break;

                    case 3: numberItems = 15; break;

                    case 4: numberItems = 38; break;

                    case 5: numberItems = 50; break;

                    case 6: numberItems = 60; break;

                    default: numberItems = 0; break;
                    }
                    ;
                }
                else
                {
                    numberItems = level * 6;
                }

                for (int i = 0; i < numberItems; ++i)
                {
                    Item item;

                    if (Core.AOS)
                    {
                        item = Loot.RandomArmorOrShieldOrWeaponOrJewelry();
                    }
                    else
                    {
                        item = Loot.RandomArmorOrShieldOrWeapon();
                    }

                    if (item is BaseWeapon)
                    {
                        BaseWeapon weapon = (BaseWeapon)item;

                        if (Core.AOS)
                        {
                            int attributeCount;
                            int min, max;

                            GetRandomAOSStats(out attributeCount, out min, out max);

                            BaseRunicTool.ApplyAttributesTo(weapon, attributeCount, min, max);
                        }
                        else
                        {
                            weapon.DamageLevel     = (WeaponDamageLevel)Utility.Random(6);
                            weapon.AccuracyLevel   = (WeaponAccuracyLevel)Utility.Random(6);
                            weapon.DurabilityLevel = (WeaponDurabilityLevel)Utility.Random(6);
                        }

                        item.ItemValue = GearScore.GetItemValue(item);
                        cont.DropItem(item);
                    }
                    else if (item is BaseArmor)
                    {
                        BaseArmor armor = (BaseArmor)item;

                        if (Core.AOS)
                        {
                            int attributeCount;
                            int min, max;

                            GetRandomAOSStats(out attributeCount, out min, out max);

                            BaseRunicTool.ApplyAttributesTo(armor, attributeCount, min, max);
                        }
                        else
                        {
                            armor.ProtectionLevel = (ArmorProtectionLevel)Utility.Random(6);
                            armor.Durability      = (ArmorDurabilityLevel)Utility.Random(6);
                        }

                        item.ItemValue = GearScore.GetItemValue(item);
                        cont.DropItem(item);
                    }
                    else if (item is BaseHat)
                    {
                        BaseHat hat = (BaseHat)item;

                        if (Core.AOS)
                        {
                            int attributeCount;
                            int min, max;

                            GetRandomAOSStats(out attributeCount, out min, out max);

                            BaseRunicTool.ApplyAttributesTo(hat, attributeCount, min, max);
                        }

                        item.ItemValue = GearScore.GetItemValue(item);
                        cont.DropItem(item);
                    }
                    else if (item is BaseJewel)
                    {
                        int attributeCount;
                        int min, max;

                        GetRandomAOSStats(out attributeCount, out min, out max);

                        BaseRunicTool.ApplyAttributesTo((BaseJewel)item, attributeCount, min, max);

                        item.ItemValue = GearScore.GetItemValue(item);
                        cont.DropItem(item);
                    }
                }
            }

            int reagents;

            if (level == 0)
            {
                reagents = 12;
            }
            else
            {
                reagents = level * 3;
            }

            for (int i = 0; i < reagents; i++)
            {
                Item item = Loot.RandomPossibleReagent();
                item.Amount = Utility.RandomMinMax(40, 60);
                cont.DropItem(item);
            }

            int gems;

            if (level == 0)
            {
                gems = 2;
            }
            else
            {
                gems = level * 3;
            }

            for (int i = 0; i < gems; i++)
            {
                Item item = Loot.RandomGem();
                cont.DropItem(item);
            }

            int bonus = level * 2;

            if (level > 0 && Utility.Random(100) < 15 + bonus)
            {
                switch (Utility.Random(6))
                {
                case 1: cont.DropItem(BaseReward.FletcherRecipe()); break;

                case 2: cont.DropItem(BaseReward.TailorRecipe()); break;

                case 3: cont.DropItem(BaseReward.SmithRecipe()); break;

                case 4: cont.DropItem(BaseReward.TinkerRecipe()); break;

                case 5: cont.DropItem(BaseReward.CarpRecipe()); break;

                case 6: cont.DropItem(new RecipeScroll(Utility.RandomMinMax(10001, 10001))); break;
                }
            }

            if (level == 6 && Core.AOS)
            {
                cont.DropItem((Item)Activator.CreateInstance(m_Artifacts[Utility.Random(m_Artifacts.Length)]));
            }
        }
		public static void ApplyAttributesTo( BaseHat hat, bool isRunicTool, int luckChance, int attributeCount, int min, int max )
		{
			m_IsRunicTool = isRunicTool;
			m_LuckChance = luckChance;

			AosAttributes primary = hat.Attributes;
			AosArmorAttributes secondary = hat.ClothingAttributes;
			AosElementAttributes resists = hat.Resistances;

			m_Props.SetAll( false );

			for ( int i = 0; i < attributeCount; ++i )
			{
				int random = GetUniqueRandom( 19 );

				if ( random == -1 )
					break;

				switch ( random )
				{
					case  0: ApplyAttribute( primary,	min, max, AosAttribute.ReflectPhysical,			1, 15 ); break;
					case  1: ApplyAttribute( primary,	min, max, AosAttribute.RegenHits,				1, 2 ); break;
					case  2: ApplyAttribute( primary,	min, max, AosAttribute.RegenStam,				1, 3 ); break;
					case  3: ApplyAttribute( primary,	min, max, AosAttribute.RegenMana,				1, 2 ); break;
					case  4: ApplyAttribute( primary,	min, max, AosAttribute.NightSight,				1, 1 ); break;
					case  5: ApplyAttribute( primary,	min, max, AosAttribute.BonusHits,				1, 5 ); break;
					case  6: ApplyAttribute( primary,	min, max, AosAttribute.BonusStam,				1, 8 ); break;
					case  7: ApplyAttribute( primary,	min, max, AosAttribute.BonusMana,				1, 8 ); break;
					case  8: ApplyAttribute( primary,	min, max, AosAttribute.LowerManaCost,			1, 8 ); break;
					case  9: ApplyAttribute( primary,	min, max, AosAttribute.LowerRegCost,			1, 20 ); break;
					case 10: ApplyAttribute( primary,	min, max, AosAttribute.Luck,					1, 100 ); break;
					case 11: ApplyAttribute( secondary,	min, max, AosArmorAttribute.LowerStatReq,		10, 100, 10 ); break;
					case 12: ApplyAttribute( secondary,	min, max, AosArmorAttribute.SelfRepair,			1, 5 ); break;
					case 13: ApplyAttribute( secondary,	min, max, AosArmorAttribute.DurabilityBonus,	10, 100, 10 ); break;
					case 14: ApplyAttribute( resists,	min, max, AosElementAttribute.Physical,			1, 15 ); break;
					case 15: ApplyAttribute( resists,	min, max, AosElementAttribute.Fire,				1, 15 ); break;
					case 16: ApplyAttribute( resists,	min, max, AosElementAttribute.Cold,				1, 15 ); break;
					case 17: ApplyAttribute( resists,	min, max, AosElementAttribute.Poison,			1, 15 ); break;
					case 18: ApplyAttribute( resists,	min, max, AosElementAttribute.Energy,			1, 15 ); break;
				}
			}
		}
Beispiel #32
0
        private void Fill(int level)
        {
            TrapType  = TrapType.ExplosionTrap;
            TrapPower = level * 25;
            TrapLevel = level;
            Locked    = true;

            switch (level)
            {
            case 1:
                RequiredSkill = 36;
                break;

            case 2:
                RequiredSkill = 76;
                break;

            case 3:
                RequiredSkill = 84;
                break;

            case 4:
                RequiredSkill = 92;
                break;

            case 5:
                RequiredSkill = 100;
                break;

            case 6:
                RequiredSkill = 100;
                break;
            }

            LockLevel    = RequiredSkill - 10;
            MaxLockLevel = RequiredSkill + 40;

            DropItem(new Gold(level * 200));

            for (int i = 0; i < level; ++i)
            {
                DropItem(Loot.RandomScroll(0, 63));
            }

            for (int i = 0; i < level * 2; ++i)
            {
                Item item;

                item = Loot.RandomArmorOrShieldOrWeapon();

                if (item is BaseWeapon)
                {
                    BaseWeapon weapon = (BaseWeapon)item;

                    weapon.DamageLevel     = (WeaponDamageLevel)Utility.Random(6);
                    weapon.AccuracyLevel   = (WeaponAccuracyLevel)Utility.Random(6);
                    weapon.DurabilityLevel = (WeaponDurabilityLevel)Utility.Random(6);

                    DropItem(item);
                }
                else if (item is BaseArmor)
                {
                    BaseArmor armor = (BaseArmor)item;

                    armor.ProtectionLevel = (ArmorProtectionLevel)Utility.Random(6);
                    armor.Durability      = (ArmorDurabilityLevel)Utility.Random(6);

                    DropItem(item);
                }
                else if (item is BaseHat)
                {
                    BaseHat hat = (BaseHat)item;

                    DropItem(item);
                }
                else if (item is BaseJewel)
                {
                    DropItem(item);
                }
            }

            for (int i = 0; i < level; i++)
            {
                Item item = Loot.RandomReagent();
                item.Amount = Utility.RandomMinMax(40, 60);
                DropItem(item);
            }

            for (int i = 0; i < level; i++)
            {
                Item item = Loot.RandomGem();
                DropItem(item);
            }

            DropItem(new TreasureMap(level + 1, (Utility.RandomBool() ? Map.Felucca : Map.Trammel)));
        }
Beispiel #33
0
        public static void Fill(LockableContainer cont, int level)
        {
            cont.Movable = false;
            cont.Locked  = true;
            int numberItems;

            if (level == 0)
            {
                cont.LockLevel = 0;                 // Can't be unlocked

                cont.DropItem(new Gold(Utility.RandomMinMax(50, 100)));

                if (Utility.RandomDouble() < 0.75)
                {
                    cont.DropItem(new TreasureMap(0, Map.Felucca));
                }
            }
            else
            {
                cont.TrapType  = TrapType.ExplosionTrap;
                cont.TrapPower = level * 25;
                cont.TrapLevel = level;

                switch (level)
                {
                case 1: cont.RequiredSkill = 36; break;

                case 2: cont.RequiredSkill = 76; break;

                case 3: cont.RequiredSkill = 84; break;

                case 4: cont.RequiredSkill = 92; break;

                case 5: cont.RequiredSkill = 100; break;

                case 6: cont.RequiredSkill = 100; break;
                }

                cont.LockLevel    = cont.RequiredSkill - 10;
                cont.MaxLockLevel = cont.RequiredSkill + 40;

                //Publish 67 gold change
                //if ( Core.SA )
                //	cont.DropItem( new Gold( level * 5000 ) );
                //else
                cont.DropItem(new Gold(level * 1000));

                for (int i = 0; i < level * 5; ++i)
                {
                    cont.DropItem(Loot.RandomScroll(0, 63, SpellbookType.Regular));
                }

                numberItems = level * 6;

                for (int i = 0; i < numberItems; ++i)
                {
                    Item item = Loot.RandomArmorOrShieldOrWeapon();

                    if (item is BaseWeapon)
                    {
                        BaseWeapon weapon = (BaseWeapon)item;

                        weapon.DamageLevel     = (WeaponDamageLevel)Utility.Random(6);
                        weapon.AccuracyLevel   = (WeaponAccuracyLevel)Utility.Random(6);
                        weapon.DurabilityLevel = (WeaponDurabilityLevel)Utility.Random(6);

                        cont.DropItem(item);
                    }
                    else if (item is BaseArmor)
                    {
                        BaseArmor armor = (BaseArmor)item;

                        armor.ProtectionLevel = (ArmorProtectionLevel)Utility.Random(6);
                        armor.Durability      = (ArmorDurabilityLevel)Utility.Random(6);

                        cont.DropItem(item);
                    }
                    else if (item is BaseHat)
                    {
                        BaseHat hat = (BaseHat)item;

                        cont.DropItem(item);
                    }
                    else if (item is BaseJewel)
                    {
                        int attributeCount;
                        int min, max;

                        GetRandomAOSStats(out attributeCount, out min, out max);

                        BaseRunicTool.ApplyAttributesTo(attributeCount);

                        cont.DropItem(item);
                    }
                }
            }

            int reagents;

            if (level == 0)
            {
                reagents = 12;
            }
            else
            {
                reagents = level * 3;
            }

            for (int i = 0; i < reagents; i++)
            {
                Item item = Loot.RandomPossibleReagent();
                item.Amount = Utility.RandomMinMax(40, 60);
                cont.DropItem(item);
            }

            int gems;

            if (level == 0)
            {
                gems = 2;
            }
            else
            {
                gems = level * 3;
            }

            for (int i = 0; i < gems; i++)
            {
                Item item = Loot.RandomGem();
                cont.DropItem(item);
            }
        }
Beispiel #34
0
        public FortressCalcifinaTreasureChest1() : base(0xE43)
        {
            Name    = "a treasure chest -25-";
            Movable = true;
            Weight  = 1000.0;

            TrapPower = 0;
            Locked    = true;

            RequiredSkill = 25;
            LockLevel     = 25;
            MaxLockLevel  = 30;

            // Gold
            if (Utility.RandomDouble() < 0.25)
            {
                DropItem(new Gold(Utility.Random(40, 400)));
            }

/////////////////////////////////////// Supplies

            if (Utility.RandomDouble() < 0.15)
            {
                DropItem(new Arrow(Utility.Random(15, 20)));
            }

            if (Utility.RandomDouble() < 0.15)
            {
                DropItem(new Bolt(Utility.Random(15, 20)));
            }

            Item ReagentLoot = Loot.RandomReagent();

            ReagentLoot.Amount = Utility.Random(15, 20);
            DropItem(ReagentLoot);

            if (Utility.RandomDouble() < 0.15)
            {
                DropItem(new Bandage(Utility.Random(15, 20)));
            }

            if (Utility.RandomDouble() < 0.15)
            {
                DropItem(new Bedroll());
            }

            if (Utility.RandomDouble() < 0.15)
            {
                DropItem(new Bottle(Utility.Random(15, 20)));
            }

            if (Utility.RandomDouble() < 0.15)
            {
                DropItem(new Lockpick(Utility.Random(15, 20)));
            }

            Item PotionLoot = Loot.RandomPotion();

            DropItem(PotionLoot);

/////////////////////////////////////// Tools

            if (Utility.RandomDouble() < 0.15)
            {
                DropItem(new FishingPole());
            }

            if (Utility.RandomDouble() < 0.15)
            {
                DropItem(new Shovel());
            }

            if (Utility.RandomDouble() < 0.15)
            {
                DropItem(new Skillet());
            }

/////////////////////////////////////// Rare Items

            if (Utility.RandomDouble() < 0.01)
            {
                DropItem(new DyeTub());
            }

            if (Utility.RandomDouble() < 0.15)
            {
                BaseWeapon weapon = Loot.RandomWeapon(true);
                switch (Utility.Random(38))
                {
                case 0: weapon = new Hatchet(); break;

                case 1: weapon = new Bow(); break;

                case 2: weapon = new Crossbow(); break;

                case 3: weapon = new Club(); break;

                case 4: weapon = new Mace(); break;

                case 5: weapon = new Maul(); break;

                case 6: weapon = new Pitchfork(); break;

                case 7: weapon = new ShortSpear(); break;

                case 8: weapon = new GnarledStaff(); break;

                case 9: weapon = new ShepherdsCrook(); break;

                case 10: weapon = new Cutlass(); break;

                case 11: weapon = new Katana(); break;

                case 12: weapon = new Kryss(); break;

                case 13: weapon = new Scimitar(); break;

                case 14: weapon = new AssassinSpike(); break;

                case 15: weapon = new DiamondMace(); break;

                case 16: weapon = new Leafblade(); break;

                case 17: weapon = new MagicalShortbow(); break;

                case 18: weapon = new RadiantScimitar(); break;

                case 19: weapon = new WildStaff(); break;

                case 20: weapon = new Axe(); break;

                case 21: weapon = new ExecutionersAxe(); break;

                case 22: weapon = new Pickaxe(); break;

                case 23: weapon = new TwoHandedAxe(); break;

                case 24: weapon = new WarAxe(); break;

                case 25: weapon = new HeavyCrossbow(); break;

                case 26: weapon = new HammerPick(); break;

                case 27: weapon = new WarMace(); break;

                case 28: weapon = new Spear(); break;

                case 29: weapon = new WarFork(); break;

                case 30: weapon = new BlackStaff(); break;

                case 31: weapon = new QuarterStaff(); break;

                case 32: weapon = new Longsword(); break;

                case 33: weapon = new ElvenCompositeLongbow(); break;

                case 34: weapon = new ElvenMachete(); break;

                case 35: weapon = new ElvenSpellblade(); break;

                case 36: weapon = new RuneBlade(); break;

                default: weapon = new Dagger(); break;
                }

                BaseRunicTool.ApplyAttributesTo(weapon, 4, 18, 22);

                DropItem(weapon);
            }

            if (Utility.RandomDouble() < 0.15)
            {
                BaseArmor armor = Loot.RandomArmor(true);
                switch (Utility.Random(13))
                {
                case 0: armor = new FemaleStuddedChest(); break;

                case 1: armor = new StuddedArms(); break;

                case 2: armor = new StuddedBustierArms(); break;

                case 3: armor = new StuddedGloves(); break;

                case 4: armor = new StuddedGorget(); break;

                case 5: armor = new ChainCoif(); break;

                case 6: armor = new ChainChest(); break;

                case 7: armor = new ChainLegs(); break;

                case 8: armor = new RingmailArms(); break;

                case 9: armor = new RingmailChest(); break;

                case 10: armor = new RingmailGloves(); break;

                case 11: armor = new RingmailLegs(); break;

                default: armor = new StuddedChest(); break;
                }

                BaseRunicTool.ApplyAttributesTo(armor, 4, 18, 22);

                DropItem(armor);
            }

            if (Utility.RandomDouble() < 0.15)
            {
                BaseHat hat = Loot.RandomHat(true);
                switch (Utility.Random(5))
                {
                case 0: hat = new BearMask(); break;

                case 1: hat = new DeerMask(); break;

                case 2: hat = new FeatheredHat(); break;

                case 3: hat = new WizardsHat(); break;

                default: hat = new TribalMask(); break;
                }

                BaseRunicTool.ApplyAttributesTo(hat, 4, 18, 22);

                DropItem(hat);
            }

            if (Utility.RandomDouble() < 0.15)
            {
                BaseClothing clothing = Loot.RandomClothing(true);
                BaseRunicTool.ApplyAttributesTo(clothing, 4, 18, 22);

                DropItem(clothing);
            }

            if (Utility.RandomDouble() < 0.15)
            {
                BaseShield shield = new MetalKiteShield();
                if (Core.AOS)
                {
                    BaseRunicTool.ApplyAttributesTo(shield, 4, 18, 22);
                }

                DropItem(shield);
            }

            if (Utility.RandomDouble() < 0.15)
            {
                BaseJewel bracelet = new GoldBracelet();
                if (Core.AOS)
                {
                    BaseRunicTool.ApplyAttributesTo(bracelet, 4, 18, 22);
                }

                DropItem(bracelet);
            }

            if (Utility.RandomDouble() < 0.15)
            {
                BaseJewel earrings = new SilverEarrings();
                if (Core.AOS)
                {
                    BaseRunicTool.ApplyAttributesTo(earrings, 4, 18, 22);
                }

                DropItem(earrings);
            }

            if (Utility.RandomDouble() < 0.15)
            {
                BaseJewel necklace = new GoldNecklace();
                if (Core.AOS)
                {
                    BaseRunicTool.ApplyAttributesTo(necklace, 4, 18, 22);
                }

                DropItem(necklace);
            }

            if (Utility.RandomDouble() < 0.15)
            {
                BaseJewel ring = new SilverRing();
                if (Core.AOS)
                {
                    BaseRunicTool.ApplyAttributesTo(ring, 4, 18, 22);
                }

                DropItem(ring);
            }
        }
Beispiel #35
0
        public static void Fill(LockableContainer cont, int luck, int level, bool isSos, Map map)
        {
            cont.Movable = false;
            cont.Locked  = true;
            int numberItems;

            if (level == 0)
            {
                cont.LockLevel = 0; // Can't be unlocked

                cont.DropItem(new Gold(Utility.RandomMinMax(50, 100)));

                if (Utility.RandomDouble() < 0.75)
                {
                    cont.DropItem(new TreasureMap(0, Map.Trammel));
                }
            }
            else
            {
                cont.TrapType  = TrapType.ExplosionTrap;
                cont.TrapPower = level * 25;
                cont.TrapLevel = level;

                switch (level)
                {
                case 1:
                    cont.RequiredSkill = 5;
                    break;

                case 2:
                    cont.RequiredSkill = 45;
                    break;

                case 3:
                    cont.RequiredSkill = 65;
                    break;

                case 4:
                    cont.RequiredSkill = 75;
                    break;

                case 5:
                    cont.RequiredSkill = 75;
                    break;

                case 6:
                    cont.RequiredSkill = 80;
                    break;

                case 7:
                    cont.RequiredSkill = 80;
                    break;
                }

                cont.LockLevel    = cont.RequiredSkill - 10;
                cont.MaxLockLevel = cont.RequiredSkill + 40;

                cont.DropItem(new Gold(level * 5000));

                for (int i = 0; i < level * 5; ++i)
                {
                    cont.DropItem(Loot.RandomScroll(0, 63, SpellbookType.Regular));
                }

                double propsScale = 1.0;
                if (Core.SE)
                {
                    switch (level)
                    {
                    case 1:
                        numberItems = 32;
                        propsScale  = 0.5625;
                        break;

                    case 2:
                        numberItems = 40;
                        propsScale  = 0.6875;
                        break;

                    case 3:
                        numberItems = 48;
                        propsScale  = 0.875;
                        break;

                    case 4:
                        numberItems = 56;
                        break;

                    case 5:
                        numberItems = 64;
                        break;

                    case 6:
                        numberItems = 72;
                        break;

                    case 7:
                        numberItems = 80;
                        break;

                    default:
                        numberItems = 0;
                        break;
                    }
                }
                else
                {
                    numberItems = level * 6;
                }

                for (int i = 0; i < numberItems; ++i)
                {
                    Item item;

                    if (Core.AOS)
                    {
                        item = Loot.RandomArmorOrShieldOrWeaponOrJewelry();
                    }
                    else
                    {
                        item = Loot.RandomArmorOrShieldOrWeapon();
                    }

                    if (item != null && Core.HS && RandomItemGenerator.Enabled)
                    {
                        int min, max;
                        GetRandomItemStat(out min, out max, propsScale);

                        RunicReforging.GenerateRandomItem(item, luck, min, max, map);

                        cont.DropItem(item);
                    }
                    else if (item is BaseWeapon)
                    {
                        BaseWeapon weapon = (BaseWeapon)item;

                        if (Core.AOS)
                        {
                            int attributeCount;
                            int min, max;

                            GetRandomAOSStats(out attributeCount, out min, out max);

                            BaseRunicTool.ApplyAttributesTo(weapon, attributeCount, min, max);
                        }
                        else
                        {
                            weapon.DamageLevel     = (WeaponDamageLevel)Utility.Random(6);
                            weapon.AccuracyLevel   = (WeaponAccuracyLevel)Utility.Random(6);
                            weapon.DurabilityLevel = (WeaponDurabilityLevel)Utility.Random(6);
                        }

                        cont.DropItem(item);
                    }
                    else if (item is BaseArmor)
                    {
                        BaseArmor armor = (BaseArmor)item;

                        if (Core.AOS)
                        {
                            int attributeCount;
                            int min, max;

                            GetRandomAOSStats(out attributeCount, out min, out max);

                            BaseRunicTool.ApplyAttributesTo(armor, attributeCount, min, max);
                        }
                        else
                        {
                            armor.ProtectionLevel = (ArmorProtectionLevel)Utility.Random(6);
                            armor.Durability      = (ArmorDurabilityLevel)Utility.Random(6);
                        }

                        cont.DropItem(item);
                    }
                    else if (item is BaseHat)
                    {
                        BaseHat hat = (BaseHat)item;

                        if (Core.AOS)
                        {
                            int attributeCount;
                            int min, max;

                            GetRandomAOSStats(out attributeCount, out min, out max);

                            BaseRunicTool.ApplyAttributesTo(hat, attributeCount, min, max);
                        }

                        cont.DropItem(item);
                    }
                    else if (item is BaseJewel)
                    {
                        int attributeCount;
                        int min, max;

                        GetRandomAOSStats(out attributeCount, out min, out max);

                        BaseRunicTool.ApplyAttributesTo((BaseJewel)item, attributeCount, min, max);

                        cont.DropItem(item);
                    }
                }
            }

            int reagents;

            if (level == 0)
            {
                reagents = 12;
            }
            else
            {
                reagents = level + 1;
            }

            for (int i = 0; i < reagents; i++)
            {
                Item item = Loot.RandomPossibleReagent();
                item.Amount = Utility.RandomMinMax(40, 60);
                cont.DropItem(item);
            }

            int gems;

            if (level == 0)
            {
                gems = 2;
            }
            else
            {
                gems = (level * 3) + 1;
            }

            for (int i = 0; i < gems; i++)
            {
                Item item = Loot.RandomGem();
                cont.DropItem(item);
            }

            if (level > 1)
            {
                Item item = Loot.Construct(m_ImbuingIngreds[Utility.Random(m_ImbuingIngreds.Length)]);

                item.Amount = level;
                cont.DropItem(item);
            }

            Item arty    = null;
            Item special = null;

            if (isSos)
            {
                if (0.004 * level > Utility.RandomDouble())
                {
                    arty = Loot.Construct(m_SOSArtifacts);
                }
                if (0.006 * level > Utility.RandomDouble())
                {
                    special = Loot.Construct(m_SOSDecor);
                }
                else if (0.009 * level > Utility.RandomDouble())
                {
                    special = new TreasureMap(Utility.RandomMinMax(level, Math.Min(7, level + 1)), cont.Map);
                }
            }
            else
            {
                if (level >= 7)
                {
                    if (0.025 > Utility.RandomDouble())
                    {
                        special = Loot.Construct(m_LevelSevenOnly);
                    }
                    else if (0.10 > Utility.RandomDouble())
                    {
                        special = Loot.Construct(m_LevelFiveToSeven);
                    }
                    else if (0.25 > Utility.RandomDouble())
                    {
                        special = GetRandomSpecial(level, cont.Map);
                    }

                    arty = Loot.Construct(m_Artifacts);
                }
                else if (level >= 6)
                {
                    if (0.025 > Utility.RandomDouble())
                    {
                        special = Loot.Construct(m_LevelFiveToSeven);
                    }
                    else if (0.10 > Utility.RandomDouble())
                    {
                        special = GetRandomSpecial(level, cont.Map);
                    }

                    arty = Loot.Construct(m_Artifacts);
                }
                else if (level >= 5)
                {
                    if (0.05 > Utility.RandomDouble())
                    {
                        special = Loot.Construct(m_LevelFiveToSeven);
                    }
                    else if (0.25 > Utility.RandomDouble())
                    {
                        special = GetRandomSpecial(level, cont.Map);
                    }
                }
                else if (.10 > Utility.RandomDouble())
                {
                    special = GetRandomSpecial(level, cont.Map);
                }
            }

            if (arty != null)
            {
                Container pack = new Backpack();
                pack.Hue = 1278;

                pack.DropItem(arty);
                cont.DropItem(pack);
            }

            if (special != null)
            {
                cont.DropItem(special);
            }

            if (Core.SA)
            {
                int rolls = 2;

                if (level >= 5)
                {
                    rolls += level - 2;
                }

                RefinementComponent.Roll(cont, rolls, 0.10);
            }
        }
            protected override void OnTarget(Mobile from, object target)
            {
                Item item = target as Item;
                Type type = item.GetType();

                if (item is BaseArmor || item is BaseHat || item is BaseWeapon)
                {
                    if (Runescribing.GetProps(item) >= 7)
                    {
                        from.SendMessage("This item cannot be enhanced any further");
                    }
                    else if (item.ChantSlots >= 3)
                    {
                        from.SendMessage("This item cannot handle any more enhancments.");
                    }
                    else if (Runescribing.CheckBlacklist(type) == true)
                    {
                        from.SendMessage("This item cannot be enhanced.");
                    }
                    else
                    {
                        int value = m_Rune.BaseAmount;
                        int max   = m_Rune.MaxAmount;

                        if (item is BaseArmor)
                        {
                            BaseArmor i = item as BaseArmor;

                            if (i.ArmorAttributes.DurabilityBonus + value <= max)
                            {
                                i.ArmorAttributes.DurabilityBonus += value;
                            }
                            else
                            {
                                i.ArmorAttributes.DurabilityBonus = max;
                            }
                        }

                        if (item is BaseHat)
                        {
                            BaseHat i = item as BaseHat;

                            if (i.ClothingAttributes.DurabilityBonus + value <= max)
                            {
                                i.ClothingAttributes.DurabilityBonus += value;
                            }
                            else
                            {
                                i.ClothingAttributes.DurabilityBonus = max;
                            }
                        }

                        if (item is BaseWeapon)
                        {
                            BaseWeapon i = item as BaseWeapon;

                            if (i.WeaponAttributes.DurabilityBonus + value <= max)
                            {
                                i.WeaponAttributes.DurabilityBonus += value;
                            }
                            else
                            {
                                i.WeaponAttributes.DurabilityBonus = max;
                            }
                        }

                        item.ChantSlots += 1;
                        m_Rune.Delete();
                    }
                }
                else
                {
                    from.SendMessage("You cannot use this enhancement on that.");
                }
            }
Beispiel #37
0
 public static void ApplyAttributesTo(BaseHat hat, int attributeCount, int min, int max)
 {
     ApplyAttributesTo(hat, false, 0, attributeCount, min, max);
 }
Beispiel #38
0
 public static void ApplyAttribute( Mobile from, BookOfSpellCrafts book, int craftId, BaseHat hat, AosElementAttribute attribute, int minimum, int maximum )
 {
     CheckItem( from, hat, ( hat.Resistances[ attribute ] == 0 ) );
     UseMagicJewels( from, book, hat, SpellCraftConfig.MagicJewelRequirements[craftId] );
     int scalar = ComputeSkillScalar( from );
     ApplyAttribute( hat.Resistances, SpellCraftConfig.MinimumIntensity * scalar, SpellCraftConfig.MaximumIntensity * scalar, attribute, minimum, maximum );
     MarkHat( from, hat );
 }