352 lines
10 KiB
C#
352 lines
10 KiB
C#
// Treasure Chest Pack - Version 0.99I
|
|
// By Nerun
|
|
|
|
using Server;
|
|
using Server.Items;
|
|
using Server.Multis;
|
|
using Server.Network;
|
|
using System;
|
|
|
|
namespace Server.Items
|
|
{
|
|
|
|
// ---------- [Level 1] ----------
|
|
// Large, Medium and Small Crate
|
|
[FlipableAttribute( 0xe3e, 0xe3f )]
|
|
public class TreasureLevel1 : BaseTreasureChestMod
|
|
{
|
|
public override int DefaultGumpID{ get{ return 0x49; } }
|
|
|
|
[Constructable]
|
|
public TreasureLevel1() : base( Utility.RandomList( 0xE3C, 0xE3E, 0x9a9 ) )
|
|
{
|
|
RequiredSkill = 52;
|
|
LockLevel = this.RequiredSkill - Utility.Random( 1, 10 );
|
|
MaxLockLevel = this.RequiredSkill;
|
|
TrapType = TrapType.MagicTrap;
|
|
TrapPower = 1 * Utility.Random( 1, 25 );
|
|
|
|
DropItem(new Gold(30, 100));
|
|
DropItem(new Bolt(10));
|
|
DropItem(Loot.RandomClothing());
|
|
|
|
AddLoot(Loot.RandomWeapon());
|
|
AddLoot(Loot.RandomArmorOrShield());
|
|
AddLoot(Loot.RandomJewelry());
|
|
|
|
for (int i = Utility.Random(3) + 1; i > 0; i--) // random 1 to 3
|
|
DropItem( Loot.RandomGem() );
|
|
}
|
|
|
|
public TreasureLevel1( 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();
|
|
}
|
|
}
|
|
|
|
// ---------- [Level 1 Hybrid] ----------
|
|
// Large, Medium and Small Crate
|
|
[FlipableAttribute( 0xe3e, 0xe3f )]
|
|
public class TreasureLevel1h : BaseTreasureChestMod
|
|
{
|
|
public override int DefaultGumpID{ get{ return 0x49; } }
|
|
|
|
[Constructable]
|
|
public TreasureLevel1h() : base( Utility.RandomList( 0xE3C, 0xE3E, 0x9a9 ) )
|
|
{
|
|
RequiredSkill = 56;
|
|
LockLevel = this.RequiredSkill - Utility.Random( 1, 10 );
|
|
MaxLockLevel = this.RequiredSkill;
|
|
TrapType = TrapType.MagicTrap;
|
|
TrapPower = 1 * Utility.Random( 1, 25 );
|
|
|
|
DropItem( new Gold( 10, 40 ) );
|
|
DropItem( new Bolt( 5 ) );
|
|
switch ( Utility.Random( 2 ))
|
|
{
|
|
case 0: DropItem( new Shoes( Utility.Random( 1, 2 ) ) ); break;
|
|
case 1: DropItem( new Sandals( Utility.Random( 1, 2 ) ) ); break;
|
|
}
|
|
|
|
switch ( Utility.Random( 3 ))
|
|
{
|
|
case 0: DropItem( new BeverageBottle(BeverageType.Ale) ); break;
|
|
case 1: DropItem( new BeverageBottle(BeverageType.Liquor) ); break;
|
|
case 2: DropItem( new Jug(BeverageType.Cider) ); break;
|
|
}
|
|
}
|
|
|
|
public TreasureLevel1h( 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();
|
|
}
|
|
}
|
|
|
|
// ---------- [Level 2] ----------
|
|
// Large, Medium and Small Crate
|
|
// Wooden, Metal and Metal Golden Chest
|
|
// Keg and Barrel
|
|
[FlipableAttribute( 0xe43, 0xe42 )]
|
|
public class TreasureLevel2 : BaseTreasureChestMod
|
|
{
|
|
[Constructable]
|
|
public TreasureLevel2() : base( Utility.RandomList( 0xe3c, 0xE3E, 0x9a9, 0xe42, 0x9ab, 0xe40, 0xe7f, 0xe77 ) )
|
|
{
|
|
RequiredSkill = 72;
|
|
LockLevel = this.RequiredSkill - Utility.Random( 1, 10 );
|
|
MaxLockLevel = this.RequiredSkill;
|
|
TrapType = TrapType.MagicTrap;
|
|
TrapPower = 2 * Utility.Random( 1, 25 );
|
|
|
|
DropItem( new Gold( 70, 100 ) );
|
|
DropItem( new Arrow( 10 ) );
|
|
DropItem( Loot.RandomPotion() );
|
|
for( int i = Utility.Random( 1, 2 ); i > 1; i-- )
|
|
{
|
|
Item ReagentLoot = Loot.RandomReagent();
|
|
ReagentLoot.Amount = Utility.Random( 1, 2 );
|
|
DropItem( ReagentLoot );
|
|
}
|
|
if (Utility.RandomBool()) //50% chance
|
|
for (int i = Utility.Random(8) + 1; i > 0; i--)
|
|
DropItem(Loot.RandomScroll(0, 39, SpellbookType.Regular));
|
|
|
|
if (Utility.RandomBool()) //50% chance
|
|
for (int i = Utility.Random(6) + 1; i > 0; i--)
|
|
DropItem( Loot.RandomGem() );
|
|
}
|
|
|
|
public TreasureLevel2( 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();
|
|
}
|
|
}
|
|
|
|
// ---------- [Level 3] ----------
|
|
// Wooden, Metal and Metal Golden Chest
|
|
[FlipableAttribute( 0x9ab, 0xe7c )]
|
|
public class TreasureLevel3 : BaseTreasureChestMod
|
|
{
|
|
public override int DefaultGumpID{ get{ return 0x4A; } }
|
|
|
|
[Constructable]
|
|
public TreasureLevel3() : base( Utility.RandomList( 0x9ab, 0xe40, 0xe42 ) )
|
|
{
|
|
RequiredSkill = 84;
|
|
LockLevel = this.RequiredSkill - Utility.Random( 1, 10 );
|
|
MaxLockLevel = this.RequiredSkill;
|
|
TrapType = TrapType.MagicTrap;
|
|
TrapPower = 3 * Utility.Random( 1, 25 );
|
|
|
|
DropItem( new Gold( 180, 240 ) );
|
|
DropItem( new Arrow( 10 ) );
|
|
|
|
for( int i = Utility.Random( 1, 3 ); i > 1; i-- )
|
|
{
|
|
Item ReagentLoot = Loot.RandomReagent();
|
|
ReagentLoot.Amount = Utility.Random( 1, 9 );
|
|
DropItem( ReagentLoot );
|
|
}
|
|
|
|
for ( int i = Utility.Random( 1, 3 ); i > 1; i-- )
|
|
DropItem( Loot.RandomPotion() );
|
|
|
|
if ( 0.67 > Utility.RandomDouble() ) //67% chance = 2/3
|
|
for (int i = Utility.Random(12) + 1; i > 0; i--)
|
|
DropItem(Loot.RandomScroll(0, 47, SpellbookType.Regular));
|
|
|
|
if ( 0.67 > Utility.RandomDouble() ) //67% chance = 2/3
|
|
for (int i = Utility.Random(9) + 1; i > 0; i--)
|
|
DropItem( Loot.RandomGem() );
|
|
|
|
for( int i = Utility.Random( 1, 3 ); i > 1; i-- )
|
|
DropItem( Loot.RandomWand() );
|
|
|
|
// Magical ArmorOrWeapon
|
|
for( int i = Utility.Random( 1, 3 ); i > 1; i-- )
|
|
{
|
|
Item item = Loot.RandomArmorOrShieldOrWeapon();
|
|
|
|
if (!Core.AOS)
|
|
{
|
|
if (item is BaseWeapon)
|
|
{
|
|
BaseWeapon weapon = (BaseWeapon)item;
|
|
weapon.DamageLevel = (WeaponDamageLevel)Utility.Random(3);
|
|
weapon.AccuracyLevel = (WeaponAccuracyLevel)Utility.Random(3);
|
|
weapon.DurabilityLevel = (WeaponDurabilityLevel)Utility.Random(3);
|
|
weapon.Quality = ItemQuality.Normal;
|
|
}
|
|
else if (item is BaseArmor)
|
|
{
|
|
BaseArmor armor = (BaseArmor)item;
|
|
armor.ProtectionLevel = (ArmorProtectionLevel)Utility.Random(3);
|
|
armor.Durability = (ArmorDurabilityLevel)Utility.Random(3);
|
|
armor.Quality = ItemQuality.Normal;
|
|
}
|
|
}
|
|
else
|
|
AddLoot(item);
|
|
}
|
|
|
|
for( int i = Utility.Random( 1, 2 ); i > 1; i-- )
|
|
AddLoot( Loot.RandomClothing() );
|
|
|
|
for( int i = Utility.Random( 1, 2 ); i > 1; i-- )
|
|
AddLoot(Loot.RandomJewelry());
|
|
|
|
// Magic clothing (not implemented)
|
|
|
|
// Magic jewelry (not implemented)
|
|
}
|
|
|
|
public TreasureLevel3( 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();
|
|
}
|
|
}
|
|
|
|
// ---------- [Level 4] ----------
|
|
// Wooden, Metal and Metal Golden Chest
|
|
[FlipableAttribute( 0xe41, 0xe40 )]
|
|
public class TreasureLevel4 : BaseTreasureChestMod
|
|
{
|
|
[Constructable]
|
|
public TreasureLevel4() : base( Utility.RandomList( 0xe40, 0xe42, 0x9ab ) )
|
|
{
|
|
RequiredSkill = 92;
|
|
LockLevel = this.RequiredSkill - Utility.Random( 1, 10 );
|
|
MaxLockLevel = this.RequiredSkill;
|
|
TrapType = TrapType.MagicTrap;
|
|
TrapPower = 4 * Utility.Random( 1, 25 );
|
|
|
|
DropItem( new Gold( 200, 400 ) );
|
|
DropItem( new BlankScroll( Utility.Random( 1, 4 ) ) );
|
|
|
|
for( int i = Utility.Random( 1, 4 ); i > 1; i-- )
|
|
{
|
|
Item ReagentLoot = Loot.RandomReagent();
|
|
ReagentLoot.Amount = Utility.Random( 6, 12 );
|
|
DropItem( ReagentLoot );
|
|
}
|
|
|
|
for ( int i = Utility.Random( 1, 4 ); i > 1; i-- )
|
|
DropItem( Loot.RandomPotion() );
|
|
|
|
if ( 0.75 > Utility.RandomDouble() ) //75% chance = 3/4
|
|
for (int i = Utility.RandomMinMax(8,16); i > 0; i--)
|
|
DropItem(Loot.RandomScroll(0, 47, SpellbookType.Regular));
|
|
|
|
if ( 0.75 > Utility.RandomDouble() ) //75% chance = 3/4
|
|
for (int i = Utility.RandomMinMax(6,12) + 1; i > 0; i--)
|
|
DropItem( Loot.RandomGem() );
|
|
|
|
for( int i = Utility.Random( 1, 4 ); i > 1; i-- )
|
|
DropItem( Loot.RandomWand() );
|
|
|
|
// Magical ArmorOrWeapon
|
|
for( int i = Utility.Random( 1, 4 ); i > 1; i-- )
|
|
{
|
|
Item item = Loot.RandomArmorOrShieldOrWeapon();
|
|
|
|
if (!Core.AOS)
|
|
{
|
|
if (item is BaseWeapon)
|
|
{
|
|
BaseWeapon weapon = (BaseWeapon)item;
|
|
weapon.DamageLevel = (WeaponDamageLevel)Utility.Random(4);
|
|
weapon.AccuracyLevel = (WeaponAccuracyLevel)Utility.Random(4);
|
|
weapon.DurabilityLevel = (WeaponDurabilityLevel)Utility.Random(4);
|
|
weapon.Quality = ItemQuality.Normal;
|
|
}
|
|
else if (item is BaseArmor)
|
|
{
|
|
BaseArmor armor = (BaseArmor)item;
|
|
armor.ProtectionLevel = (ArmorProtectionLevel)Utility.Random(4);
|
|
armor.Durability = (ArmorDurabilityLevel)Utility.Random(4);
|
|
armor.Quality = ItemQuality.Normal;
|
|
}
|
|
}
|
|
else
|
|
AddLoot(item);
|
|
}
|
|
|
|
for( int i = Utility.Random( 1, 2 ); i > 1; i-- )
|
|
AddLoot( Loot.RandomClothing() );
|
|
|
|
for( int i = Utility.Random( 1, 2 ); i > 1; i-- )
|
|
AddLoot( Loot.RandomJewelry() );
|
|
}
|
|
|
|
public TreasureLevel4( 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();
|
|
}
|
|
}
|
|
|
|
} |