Ejemplo n.º 1
0
		public LordYoshimitsu() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
		{
			SpeechHue = Utility.RandomDyedHue();
			Title = "the ninja";
			Hue = Utility.RandomSkinHue();
			Female = false;
			BodyValue = 400;
			Name = "Yoshimitsu";

			SetStr( 350 );
			SetDex( 100 );
			SetInt( 50 );

			SetHits( 2000 );

			SetDamage( 10, 23 );

			SetSkill( SkillName.Fencing, 66.0, 97.5 );
			SetSkill( SkillName.Macing, 65.0, 87.5 );
			SetSkill( SkillName.MagicResist, 25.0, 47.5 );
			SetSkill( SkillName.Swords, 65.0, 87.5 );
			SetSkill( SkillName.Tactics, 65.0, 87.5 );
			SetSkill( SkillName.Wrestling, 15.0, 37.5 );

			LeatherNinjaHood nh = new LeatherNinjaHood();
			nh.Hue = 1175;
			AddItem( nh );

			LeatherNinjaMitts nm = new LeatherNinjaMitts();
			nm.Hue = 1175;
			AddItem( nm );

			LeatherNinjaJacket nj = new LeatherNinjaJacket();
			nj.Hue = 1175;
			AddItem( nj );

			LeatherNinjaPants np = new LeatherNinjaPants();
			np.Hue = 1175;
			AddItem( np );

			NinjaTabi nt = new NinjaTabi();
			nt.Hue = 1175;
			AddItem( nt );

			Daisho d = new Daisho();
			AddItem( d );

			Fame = 5000;
			Karma = -5000;
		}
Ejemplo n.º 2
0
        public override void OnTalk(PlayerMobile player, bool contextMenu)
        {
            QuestSystem qs = player.Quest;

            if (qs.GetType() == ParentQuestSystem)
            {
                if (HaochisTrialsQuest.HasLostHaochisKatana(player))
                {
                    qs.AddConversation(new LostSwordConversation());
                    return;
                }

                QuestObjective obj = qs.FindObjective(typeof(FindHaochiObjective));

                if (obj != null && !obj.Completed)
                {
                    obj.Complete();
                    return;
                }

                obj = qs.FindObjective(typeof(FirstTrialReturnObjective));

                if (obj != null && !obj.Completed)
                {
                    player.AddToBackpack(new LeatherDo());
                    obj.Complete();
                    return;
                }

                obj = qs.FindObjective(typeof(SecondTrialReturnObjective));

                if (obj != null && !obj.Completed)
                {
                    if (((SecondTrialReturnObjective)obj).Dragon)
                        player.AddToBackpack(new LeatherSuneate());

                    obj.Complete();
                    return;
                }

                obj = qs.FindObjective(typeof(ThirdTrialReturnObjective));

                if (obj != null && !obj.Completed)
                {
                    player.AddToBackpack(new LeatherHiroSode());
                    obj.Complete();
                    return;
                }

                obj = qs.FindObjective(typeof(FourthTrialReturnObjective));

                if (obj != null && !obj.Completed)
                {
                    if (!((FourthTrialReturnObjective)obj).KilledCat)
                    {
                        Container cont = GetNewContainer();
                        cont.DropItem(new LeatherHiroSode());
                        cont.DropItem(new JinBaori());
                        player.AddToBackpack(cont);
                    }

                    obj.Complete();
                    return;
                }

                obj = qs.FindObjective(typeof(FifthTrialReturnObjective));

                if (obj != null && !obj.Completed)
                {
                    Container pack = player.Backpack;
                    if (pack != null)
                    {
                        Item katana = pack.FindItemByType(typeof(HaochisKatana));
                        if (katana != null)
                        {
                            katana.Delete();
                            obj.Complete();

                            obj = qs.FindObjective(typeof(FifthTrialIntroObjective));
                            if (obj != null && ((FifthTrialIntroObjective)obj).StolenTreasure)
                                qs.AddConversation(new SixthTrialIntroConversation(true));
                            else
                                qs.AddConversation(new SixthTrialIntroConversation(false));
                        }
                    }

                    return;
                }

                obj = qs.FindObjective(typeof(SixthTrialReturnObjective));

                if (obj != null && !obj.Completed)
                {
                    obj.Complete();
                    return;
                }

                obj = qs.FindObjective(typeof(SeventhTrialReturnObjective));

                if (obj != null && !obj.Completed)
                {
                    BaseWeapon weapon = new Daisho();
                    BaseRunicTool.ApplyAttributesTo(weapon, Utility.Random(1, 3), 10, 30);
                    player.AddToBackpack(weapon);

                    BaseArmor armor = new LeatherDo();
                    BaseRunicTool.ApplyAttributesTo(armor, Utility.Random(1, 3), 10, 20);
                    player.AddToBackpack(armor);

                    obj.Complete();
                    return;
                }
            }
        }
Ejemplo n.º 3
0
        public override void OnTalk( PlayerMobile player, bool contextMenu )
        {
            Direction = this.GetDirectionTo( player );

            QuestSystem qs = player.Quest;

            if ( qs is HaochisTrialsQuest )
            {
                HaochisTrialsQuest htq = qs as HaochisTrialsQuest;

                if ( qs.IsObjectiveInProgress( typeof( SpeakToDaimyoHaochiObjective ) ) )
                {
                    QuestObjective obj = qs.FindObjective( typeof( SpeakToDaimyoHaochiObjective ) );

                    if ( obj != null )
                    {
                        obj.Complete();
                    }

                    qs.AddConversation( new DaimyoHaochiBeginConversation() );

                    qs.AddObjective( new FollowGreenPathObjective() );
                }

                if ( qs.IsObjectiveInProgress( typeof( KillRoninsOrSoulsObjective ) ) )
                {
                    bool ronins = false;

                    if ( htq.KilledRonins > htq.KilledSouls )
                    {
                        ronins = true;
                    }

                    if ( ronins )
                    {
                        qs.AddConversation( new ContinueSlayingRoninsConversation() );
                    }
                    else if ( htq.KilledSouls > 0 )
                    {
                        qs.AddConversation( new ContinueSlayingSoulsConversation() );
                    }
                }

                if ( qs.IsObjectiveInProgress( typeof( FirstTrialCompleteObjective ) ) )
                {
                    QuestObjective obj = qs.FindObjective( typeof( FirstTrialCompleteObjective ) );

                    if ( obj != null )
                    {
                        obj.Complete();
                    }

                    if ( htq.KilledRonins == 3 )
                    {
                        qs.AddConversation( new ThanksForRoninsConversation() );
                    }

                    if ( htq.KilledSouls == 3 )
                    {
                        qs.AddConversation( new ThanksForSoulsConversation() );
                    }

                    player.AddToBackpack( new LeatherDo() );

                    qs.AddObjective( new FollowYellowPathObjective() );
                }

                if ( qs.IsObjectiveInProgress( typeof( SecondTrialCompleteObjective ) ) )
                {
                    QuestObjective obj = qs.FindObjective( typeof( SecondTrialCompleteObjective ) );

                    if ( obj != null )
                    {
                        obj.Complete();
                    }

                    if ( htq.Opponent == OpponentType.FierceDragon )
                    {
                        qs.AddConversation( new DragonConversation() );
                    }

                    if ( htq.Opponent == OpponentType.DeadlyImp )
                    {
                        qs.AddConversation( new ImpConversation() );
                    }

                    player.AddToBackpack( new LeatherSuneate() );

                    qs.AddObjective( new FollowBluePathObjective() );
                }

                if ( qs.IsObjectiveInProgress( typeof( ThirdTrialCompleteObjective ) ) )
                {
                    QuestObjective obj = qs.FindObjective( typeof( ThirdTrialCompleteObjective ) );

                    if ( obj != null )
                    {
                        obj.Complete();
                    }

                    qs.AddConversation( new HaochiSmilesConversation() );

                    player.AddToBackpack( new LeatherHiroSode() );

                    qs.AddObjective( new FollowRedPathObjective() );
                }

                if ( qs.IsObjectiveInProgress( typeof( MadeChoiceObjective ) ) )
                {
                    QuestObjective obj = qs.FindObjective( typeof( MadeChoiceObjective ) );

                    if ( obj != null )
                    {
                        obj.Complete();
                    }

                    if ( htq.Choice == ChoiceType.Gold )
                    {
                        qs.AddConversation( new RespectForGoldConversation() );
                    }

                    if ( htq.Choice == ChoiceType.Cats )
                    {
                        qs.AddConversation( new RespectForCatsConversation() );
                    }

                    Bag bag = new Bag();

                    bag.Hue = 0x660;

                    bag.DropItem( new LeatherHiroSode() );
                    bag.DropItem( new JinBaori() );

                    player.AddToBackpack( bag );

                    qs.AddObjective( new RetrieveKatanaObjective() );
                }

                if ( qs.IsObjectiveInProgress( typeof( GiveSwordDaimyoObjective ) ) )
                {
                    List<Item> list = player.Backpack.Items;

                    DaimyoHaochisKatana katana = null;

                    for ( int i = 0; i < list.Count; i++ )
                    {
                        if ( list[i] is DaimyoHaochisKatana )
                        {
                            katana = list[i] as DaimyoHaochisKatana;

                            break;
                        }
                    }

                    if ( katana == null )
                    {
                        qs.AddConversation( new WithoutSwordConversation() );
                    }
                    else
                    {
                        katana.Delete();

                        QuestObjective obj = qs.FindObjective( typeof( GiveSwordDaimyoObjective ) );

                        if ( obj != null )
                        {
                            obj.Complete();
                        }

                        qs.AddConversation( new ThanksForSwordConversation() );

                        qs.AddObjective( new LightCandleObjective() );
                    }
                }

                if ( qs.IsObjectiveInProgress( typeof( CandleCompleteObjective ) ) )
                {
                    QuestObjective obj = qs.FindObjective( typeof( CandleCompleteObjective ) );

                    if ( obj != null )
                    {
                        obj.Complete();
                    }

                    qs.AddConversation( new WellDoneConversation() );

                    qs.AddObjective( new KillNinjaObjective() );
                }

                if ( qs.IsObjectiveInProgress( typeof( ExecutionsCompleteObjective ) ) )
                {
                    QuestObjective obj = qs.FindObjective( typeof( ExecutionsCompleteObjective ) );

                    if ( obj != null )
                    {
                        obj.Complete();
                    }

                    qs.AddConversation( new FirewellConversation() );

                    BaseWeapon weapon = new Daisho();

                    BaseRunicTool.ApplyAttributesTo( weapon, Utility.Random( 1, 3 ), 10, 30 );

                    player.AddToBackpack( weapon );

                    BaseArmor armor = new LeatherDo();

                    BaseRunicTool.ApplyAttributesTo( armor, Utility.Random( 1, 3 ), 10, 20 );

                    player.AddToBackpack( armor );

                    qs.Complete();
                }
            }
        }
Ejemplo n.º 4
0
        public StoneBurrowMinesBossChest() : base(0xE43)
        {
            Name    = "a treasure chest -60-";
            Movable = true;
            Weight  = 1000.0;

            TrapPower = 0;
            Locked    = true;

            RequiredSkill = 60;
            LockLevel     = 60;
            MaxLockLevel  = 80;

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

/////////////////////////////////////// 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());
            }

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

            if (Utility.RandomDouble() < 0.15)
            {
                DropItem(new BlackGear(Utility.Random(10, 15)));
            }

            if (Utility.RandomDouble() < 0.15)
            {
                DropItem(new BronzeGear(Utility.Random(10, 15)));
            }

            if (Utility.RandomDouble() < 0.15)
            {
                DropItem(new CrimsonGear(Utility.Random(10, 15)));
            }

/////////////////////////////////////// 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.10)
            {
                BaseShield shield1 = new ElvenShield();
                if (Core.AOS)
                {
                    BaseRunicTool.ApplyAttributesTo(shield1, 3, 5, 50);
                }
                DropItem(shield1);
            }
            if (Utility.RandomDouble() < 0.10)
            {
                BaseShield shield2 = new InfantryShield();
                if (Core.AOS)
                {
                    BaseRunicTool.ApplyAttributesTo(shield2, 3, 5, 50);
                }
                DropItem(shield2);
            }
            if (Utility.RandomDouble() < 0.10)
            {
                BaseShield shield3 = new SpiderShield();
                if (Core.AOS)
                {
                    BaseRunicTool.ApplyAttributesTo(shield3, 3, 5, 50);
                }
                DropItem(shield3);
            }
            if (Utility.RandomDouble() < 0.10)
            {
                BaseShield shield4 = new GrassShield();
                if (Core.AOS)
                {
                    BaseRunicTool.ApplyAttributesTo(shield4, 3, 5, 50);
                }
                DropItem(shield4);
            }

            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);
            }
        }
        public WhisperingHollowChest1() : 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(45, 450)));
            }

/////////////////////////////////////// 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(25, 50);
            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 ElvenShield();
                if (Core.AOS)
                {
                    BaseRunicTool.ApplyAttributesTo(shield1, 3, 5, 50);
                }
                DropItem(shield1);
            }
            if (Utility.RandomDouble() < 0.05)
            {
                BaseShield shield2 = new InfantryShield();
                if (Core.AOS)
                {
                    BaseRunicTool.ApplyAttributesTo(shield2, 3, 5, 50);
                }
                DropItem(shield2);
            }
            if (Utility.RandomDouble() < 0.05)
            {
                BaseShield shield3 = new SpiderShield();
                if (Core.AOS)
                {
                    BaseRunicTool.ApplyAttributesTo(shield3, 3, 5, 50);
                }
                DropItem(shield3);
            }

            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);
            }
        }