ModernUO/Scripts/Engines/MLQuests/Items/RewardBags.cs
2018-09-14 08:41:38 -07:00

199 lines
3.8 KiB
C#

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