using System;
using System.Collections;
using Server.Multis;
using Server.Mobiles;
using Server.Network;
namespace Server.Items
{
public abstract class BaseContainer : Container
{
public BaseContainer( int itemID ) : base( itemID )
{
}
public override bool IsAccessibleTo( Mobile m )
{
if ( !BaseHouse.CheckAccessible( m, this ) )
return false;
return base.IsAccessibleTo( m );
}
public override bool CheckHold( Mobile m, Item item, bool message, bool checkItems )
{
if ( !BaseHouse.CheckHold( m, this, item, message, checkItems ) )
return false;
return base.CheckHold( m, item, message, checkItems );
}
public override void GetContextMenuEntries( Mobile from, ArrayList list )
{
base.GetContextMenuEntries( from, list );
SetSecureLevelEntry.AddTo( from, this, list );
}
public override bool TryDropItem( Mobile from, Item dropped, bool sendFullMessage )
{
if ( !CheckHold( from, dropped, sendFullMessage, true ) )
return false;
BaseHouse house = BaseHouse.FindHouseAt( this );
if ( house != null && house.IsLockedDown( this ) && !house.LockDown( from, dropped, false ) )
return false;
ArrayList list = this.Items;
for ( int i = 0; i < list.Count; ++i )
{
Item item = (Item)list[i];
if ( !(item is Container) && item.StackWith( from, dropped, false ) )
return true;
}
DropItem( dropped );
return true;
}
public override bool OnDragDropInto( Mobile from, Item item, Point3D p )
{
if ( !CheckHold( from, item, true, true ) )
return false;
BaseHouse house = BaseHouse.FindHouseAt( this );
if ( house != null && house.IsLockedDown( this ) && !house.LockDown( from, item, false ) )
return false;
item.Location = new Point3D( p.X, p.Y, 0 );
AddItem( item );
from.SendSound( GetDroppedSound( item ), GetWorldLocation() );
return true;
}
public BaseContainer( Serial serial ) : base( serial )
{
}
/* Note: base class insertion; we cannot serialize anything here */
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
}
}
public class StrongBackpack : Backpack
{
[Constructable]
public StrongBackpack()
{
Layer = Layer.Backpack;
Weight = 3.0;
}
public override int MaxWeight{ get{ return 1600; } }
public override bool CheckContentDisplay( Mobile from )
{
object root = this.RootParent;
if ( root is BaseCreature && ((BaseCreature)root).Controled && ((BaseCreature)root).ControlMaster == from )
return true;
return base.CheckContentDisplay( from );
}
public StrongBackpack( 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 Backpack : BaseContainer, IDyable
{
public override int DefaultGumpID{ get{ return 0x3C; } }
public override int DefaultDropSound{ get{ return 0x48; } }
public override Rectangle2D Bounds
{
get{ return new Rectangle2D( 44, 65, 142, 94 ); }
}
[Constructable]
public Backpack() : base( 0x9B2 )
{
Layer = Layer.Backpack;
Weight = 3.0;
}
public Backpack( Serial serial ) : base( serial )
{
}
public bool Dye( Mobile from, DyeTub sender )
{
if ( Deleted ) return false;
Hue = sender.DyedHue;
return true;
}
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 Pouch : TrapableContainer
{
public override int DefaultGumpID{ get{ return 0x3C; } }
public override int DefaultDropSound{ get{ return 0x48; } }
public override Rectangle2D Bounds
{
get{ return new Rectangle2D( 44, 65, 142, 94 ); }
}
[Constructable]
public Pouch() : base( 0xE79 )
{
Weight = 1.0;
}
public Pouch( 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 abstract class BaseBagBall : BaseContainer, IDyable
{
public override int DefaultGumpID{ get{ return 0x3D; } }
public override int DefaultDropSound{ get{ return 0x48; } }
public override Rectangle2D Bounds
{
get{ return new Rectangle2D( 29, 34, 108, 94 ); }
}
public BaseBagBall( int itemID ) : base( itemID )
{
Weight = 1.0;
}
public BaseBagBall( Serial serial ) : base( serial )
{
}
public bool Dye( Mobile from, DyeTub sender )
{
if ( Deleted )
return false;
Hue = sender.DyedHue;
return true;
}
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 SmallBagBall : BaseBagBall
{
[Constructable]
public SmallBagBall() : base( 0x2256 )
{
}
public SmallBagBall( 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 LargeBagBall : BaseBagBall
{
[Constructable]
public LargeBagBall() : base( 0x2257 )
{
}
public LargeBagBall( 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 Bag : BaseContainer, IDyable
{
public override int DefaultGumpID{ get{ return 0x3D; } }
public override int DefaultDropSound{ get{ return 0x48; } }
public override Rectangle2D Bounds
{
get{ return new Rectangle2D( 29, 34, 108, 94 ); }
}
[Constructable]
public Bag() : base( 0xE76 )
{
Weight = 2.0;
}
public Bag( Serial serial ) : base( serial )
{
}
public bool Dye( Mobile from, DyeTub sender )
{
if ( Deleted ) return false;
Hue = sender.DyedHue;
return true;
}
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 Barrel : BaseContainer
{
public override int DefaultGumpID{ get{ return 0x3E; } }
public override int DefaultDropSound{ get{ return 0x42; } }
public override Rectangle2D Bounds
{
get{ return new Rectangle2D( 33, 36, 109, 112 ); }
}
[Constructable]
public Barrel() : base( 0xE77 )
{
Weight = 25.0;
}
public Barrel( 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();
if ( Weight == 0.0 )
Weight = 25.0;
}
}
public class Keg : BaseContainer
{
public override int DefaultGumpID{ get{ return 0x3E; } }
public override int DefaultDropSound{ get{ return 0x42; } }
public override Rectangle2D Bounds
{
get{ return new Rectangle2D( 33, 36, 109, 112 ); }
}
[Constructable]
public Keg() : base( 0xE7F )
{
Weight = 15.0;
}
public Keg( 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 PicnicBasket : BaseContainer
{
public override int DefaultGumpID{ get{ return 0x3F; } }
public override int DefaultDropSound{ get{ return 0x4F; } }
public override Rectangle2D Bounds
{
get{ return new Rectangle2D( 19, 47, 163, 76 ); }
}
[Constructable]
public PicnicBasket() : base( 0xE7A )
{
Weight = 2.0; // Stratics doesn't know weight
}
public PicnicBasket( 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 Basket : BaseContainer
{
public override int DefaultGumpID{ get{ return 0x41; } }
public override int DefaultDropSound{ get{ return 0x4F; } }
public override Rectangle2D Bounds
{
get{ return new Rectangle2D( 35, 38, 110, 78 ); }
}
[Constructable]
public Basket() : base( 0x990 )
{
Weight = 1.0; // Stratics doesn't know weight
}
public Basket( 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();
}
}
[Furniture]
[Flipable( 0x9AA, 0xE7D )]
public class WoodenBox : LockableContainer
{
public override int DefaultGumpID{ get{ return 0x43; } }
public override int DefaultDropSound{ get{ return 0x42; } }
public override Rectangle2D Bounds
{
get{ return new Rectangle2D( 16, 51, 168, 73 ); }
}
[Constructable]
public WoodenBox() : base( 0x9AA )
{
Weight = 4.0;
}
public WoodenBox( 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();
}
}
[Furniture]
[Flipable( 0x9A9, 0xE7E )]
public class SmallCrate : LockableContainer
{
public override int DefaultGumpID{ get{ return 0x44; } }
public override int DefaultDropSound{ get{ return 0x42; } }
public override Rectangle2D Bounds
{
get{ return new Rectangle2D( 20, 10, 150, 90 ); }
}
[Constructable]
public SmallCrate() : base( 0x9A9 )
{
Weight = 2.0;
}
public SmallCrate( 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();
if ( Weight == 4.0 )
Weight = 2.0;
}
}
[Furniture]
[Flipable( 0xE3F, 0xE3E )]
public class MediumCrate : LockableContainer
{
public override int DefaultGumpID{ get{ return 0x44; } }
public override int DefaultDropSound{ get{ return 0x42; } }
public override Rectangle2D Bounds
{
get{ return new Rectangle2D( 20, 10, 150, 90 ); }
}
[Constructable]
public MediumCrate() : base( 0xE3F )
{
Weight = 2.0;
}
public MediumCrate( 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();
if ( Weight == 6.0 )
Weight = 2.0;
}
}
[Furniture]
[Flipable( 0xE3D, 0xE3C )]
public class LargeCrate : LockableContainer
{
public override int DefaultGumpID{ get{ return 0x44; } }
public override int DefaultDropSound{ get{ return 0x42; } }
public override Rectangle2D Bounds
{
get{ return new Rectangle2D( 20, 10, 150, 90 ); }
}
[Constructable]
public LargeCrate() : base( 0xE3D )
{
Weight = 1.0;
}
public LargeCrate( 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();
if ( Weight == 8.0 )
Weight = 1.0;
}
}
[DynamicFliping]
[Flipable( 0x9A8, 0xE80 )]
public class MetalBox : LockableContainer
{
public override int DefaultGumpID{ get{ return 0x4B; } }
public override int DefaultDropSound{ get{ return 0x42; } }
public override Rectangle2D Bounds
{
get{ return new Rectangle2D( 16, 51, 168, 73 ); }
}
[Constructable]
public MetalBox() : base( 0x9A8 )
{
Weight = 3.0; // TODO: Real weight
}
public MetalBox( 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();
}
}
[DynamicFliping]
[Flipable( 0x9AB, 0xE7C )]
public class MetalChest : LockableContainer
{
public override int DefaultGumpID{ get{ return 0x4A; } }
public override int DefaultDropSound{ get{ return 0x42; } }
public override Rectangle2D Bounds
{
get{ return new Rectangle2D( 18, 105, 144, 73 ); }
}
[Constructable]
public MetalChest() : base( 0x9AB )
{
Weight = 25.0; // TODO: Real weight
}
public MetalChest( 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();
}
}
[DynamicFliping]
[Flipable( 0xE41, 0xE40 )]
public class MetalGoldenChest : LockableContainer
{
public override int DefaultGumpID{ get{ return 0x42; } }
public override int DefaultDropSound{ get{ return 0x42; } }
public override Rectangle2D Bounds
{
get{ return new Rectangle2D( 18, 105, 144, 73 ); }
}
[Constructable]
public MetalGoldenChest() : base( 0xE41 )
{
Weight = 25.0; // TODO: Real weight
}
public MetalGoldenChest( 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();
}
}
[Furniture]
[Flipable( 0xe43, 0xe42 )]
public class WoodenChest : LockableContainer
{
public override int DefaultGumpID{ get{ return 0x49; } }
public override int DefaultDropSound{ get{ return 0x42; } }
public override Rectangle2D Bounds
{
get{ return new Rectangle2D( 18, 105, 144, 73 ); }
}
[Constructable]
public WoodenChest() : base( 0xe43 )
{
Weight = 2.0; // TODO: Real weight
}
public WoodenChest( 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();
}
[Furniture]
[Flipable( 0x280B, 0x280C )]
public class PlainWoodenChest : LockableContainer
{
public override int DefaultGumpID{ get{ return 0x109; } }
public override int DefaultDropSound{ get{ return 0x42; } }
public override Rectangle2D Bounds
{
get{ return new Rectangle2D( 18, 105, 144, 73 ); }
}
[Constructable]
public PlainWoodenChest() : base( 0x280B )
{
Weight = 15.0; // TODO: Real weight
}
public PlainWoodenChest( 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();
}
}
[Furniture]
[Flipable( 0x280D, 0x280E )]
public class OrnateWoodenChest : LockableContainer
{
public override int DefaultGumpID{ get{ return 0x10B; } }
public override int DefaultDropSound{ get{ return 0x42; } }
public override Rectangle2D Bounds
{
get{ return new Rectangle2D( 18, 105, 144, 73 ); }
}
[Constructable]
public OrnateWoodenChest() : base( 0x280D )
{
Weight = 15.0; // TODO: Real weight
}
public OrnateWoodenChest( 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();
}
}
[Furniture]
[Flipable( 0x280F, 0x2810 )]
public class GildedWoodenChest : LockableContainer
{
public override int DefaultGumpID{ get{ return 0x10A; } }
public override int DefaultDropSound{ get{ return 0x42; } }
public override Rectangle2D Bounds
{
get{ return new Rectangle2D( 18, 105, 144, 73 ); }
}
[Constructable]
public GildedWoodenChest() : base( 0x280F )
{
Weight = 15.0; // TODO: Real weight
}
public GildedWoodenChest( 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();
}
}
[Furniture]
[Flipable( 0x2811, 0x2812 )]
public class WoodenFootLocker : LockableContainer
{
public override int DefaultGumpID{ get{ return 0x10C; } }
public override int DefaultDropSound{ get{ return 0x42; } }
public override Rectangle2D Bounds
{
get{ return new Rectangle2D( 18, 105, 144, 73 ); }
}
[Constructable]
public WoodenFootLocker() : base( 0x2811 )
{
Weight = 5.0; // TODO: Real weight
}
public WoodenFootLocker( 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();
}
}
[Furniture]
[Flipable( 0x2813, 0x2814 )]
public class FinishedWoodenChest : LockableContainer
{
public override int DefaultGumpID{ get{ return 0x10D; } }
public override int DefaultDropSound{ get{ return 0x42; } }
public override Rectangle2D Bounds
{
get{ return new Rectangle2D( 18, 105, 144, 73 ); }
}
[Constructable]
public FinishedWoodenChest() : base( 0x2813 )
{
Weight = 15.0; // TODO: Real weight
}
public FinishedWoodenChest( 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();
}
}
}}