using Server.Items; namespace Server.Engines.MLQuests.Items { public static class RewardBag { public static void Fill( Container c, int itemCount, double talismanChance ) { c.Hue = Utility.RandomNondyedHue(); int done = 0; if ( Utility.RandomDouble() < talismanChance ) { c.DropItem( new RandomTalisman() ); ++done; } for ( ; done < itemCount; ++done ) { Item loot = null; switch ( Utility.Random( 5 ) ) { case 0: loot = Loot.RandomWeapon( false, true ); break; case 1: loot = Loot.RandomArmor( false, true ); break; case 2: loot = Loot.RandomRangedWeapon( false, true ); break; case 3: loot = Loot.RandomJewelry(); break; case 4: loot = Loot.RandomHat( false ); break; } if ( loot == null ) continue; Enhance( loot ); c.DropItem( loot ); } } public static void Enhance( Item loot ) { if (loot is BaseWeapon weapon) { BaseRunicTool.ApplyAttributesTo( weapon, Utility.RandomMinMax( 1, 5 ), 10, 80 ); return; } if (loot is BaseArmor armor) { BaseRunicTool.ApplyAttributesTo( armor, Utility.RandomMinMax( 1, 5 ), 10, 80 ); } if (loot is BaseJewel jewel) { BaseRunicTool.ApplyAttributesTo(jewel, Utility.RandomMinMax( 1, 5 ), 10, 80 ); } } } public class SmallBagOfTrinkets : Bag { [Constructible] public SmallBagOfTrinkets() { RewardBag.Fill( this, 1, 0.0 ); } public SmallBagOfTrinkets( Serial serial ) : base( serial ) { } public override void Serialize( GenericWriter writer ) { base.Serialize( writer ); writer.Write( (int)0 ); // version } public override void Deserialize( GenericReader reader ) { base.Deserialize( reader ); int version = reader.ReadInt(); } } public class BagOfTrinkets : Bag { [Constructible] public BagOfTrinkets() { RewardBag.Fill( this, 2, 0.05 ); } public BagOfTrinkets( Serial serial ) : base( serial ) { } public override void Serialize( GenericWriter writer ) { base.Serialize( writer ); writer.Write( (int)0 ); // version } public override void Deserialize( GenericReader reader ) { base.Deserialize( reader ); int version = reader.ReadInt(); } } public class BagOfTreasure : Bag { [Constructible] public BagOfTreasure() { RewardBag.Fill( this, 3, 0.20 ); } public BagOfTreasure( Serial serial ) : base( serial ) { } public override void Serialize( GenericWriter writer ) { base.Serialize( writer ); writer.Write( (int)0 ); // version } public override void Deserialize( GenericReader reader ) { base.Deserialize( reader ); int version = reader.ReadInt(); } } public class LargeBagOfTreasure : Bag { [Constructible] public LargeBagOfTreasure() { RewardBag.Fill( this, 4, 0.50 ); } public LargeBagOfTreasure( Serial serial ) : base( serial ) { } public override void Serialize( GenericWriter writer ) { base.Serialize( writer ); writer.Write( (int)0 ); // version } public override void Deserialize( GenericReader reader ) { base.Deserialize( reader ); int version = reader.ReadInt(); } } public class RewardStrongbox : WoodenBox { [Constructible] public RewardStrongbox() { RewardBag.Fill( this, 5, 1.0 ); } public RewardStrongbox( Serial serial ) : base( serial ) { } public override void Serialize( GenericWriter writer ) { base.Serialize( writer ); writer.Write( (int)0 ); // version } public override void Deserialize( GenericReader reader ) { base.Deserialize( reader ); int version = reader.ReadInt(); } } }