#W# Initial Commit: Avatars Conquest
This commit is contained in:
commit
8eae46895e
7512 changed files with 416187 additions and 0 deletions
774
Scripts/Items/Containers/Container.cs
Normal file
774
Scripts/Items/Containers/Container.cs
Normal file
|
|
@ -0,0 +1,774 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Server.Multis;
|
||||
using Server.Mobiles;
|
||||
using Server.Network;
|
||||
using Server.ContextMenus;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
public abstract class BaseContainer : Container
|
||||
{
|
||||
public override int DefaultMaxWeight
|
||||
{
|
||||
get
|
||||
{
|
||||
if ( IsSecure )
|
||||
return 0;
|
||||
|
||||
return base.DefaultMaxWeight;
|
||||
}
|
||||
}
|
||||
|
||||
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, int plusItems, int plusWeight )
|
||||
{
|
||||
if ( this.IsSecure && !BaseHouse.CheckHold( m, this, item, message, checkItems, plusItems, plusWeight ) )
|
||||
return false;
|
||||
|
||||
return base.CheckHold( m, item, message, checkItems, plusItems, plusWeight );
|
||||
}
|
||||
|
||||
public override bool CheckItemUse( Mobile from, Item item )
|
||||
{
|
||||
if ( IsDecoContainer && item is BaseBook )
|
||||
return true;
|
||||
|
||||
return base.CheckItemUse( from, item );
|
||||
}
|
||||
|
||||
public override void GetContextMenuEntries( Mobile from, List<ContextMenuEntry> 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 ) )
|
||||
{
|
||||
if ( dropped is VendorRentalContract || ( dropped is Container && ((Container)dropped).FindItemByType( typeof( VendorRentalContract ) ) != null ) )
|
||||
{
|
||||
from.SendLocalizedMessage( 1062492 ); // You cannot place a rental contract in a locked down container.
|
||||
return false;
|
||||
}
|
||||
|
||||
if ( !house.LockDown( from, dropped, false ) )
|
||||
return false;
|
||||
}
|
||||
|
||||
List<Item> list = this.Items;
|
||||
|
||||
for ( int i = 0; i < list.Count; ++i )
|
||||
{
|
||||
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 ) )
|
||||
{
|
||||
if ( item is VendorRentalContract || ( item is Container && ((Container)item).FindItemByType( typeof( VendorRentalContract ) ) != null ) )
|
||||
{
|
||||
from.SendLocalizedMessage( 1062492 ); // You cannot place a rental contract in a locked down container.
|
||||
return false;
|
||||
}
|
||||
|
||||
if ( !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 override void UpdateTotal( Item sender, TotalType type, int delta )
|
||||
{
|
||||
base.UpdateTotal( sender, type, delta );
|
||||
|
||||
if ( type == TotalType.Weight && RootParent is Mobile )
|
||||
((Mobile) RootParent).InvalidateProperties();
|
||||
}
|
||||
|
||||
public override void OnDoubleClick( Mobile from )
|
||||
{
|
||||
if ( from.AccessLevel > AccessLevel.Player || from.InRange( this.GetWorldLocation(), 2 ) || this.RootParent is PlayerVendor )
|
||||
Open( from );
|
||||
else
|
||||
from.LocalOverheadMessage( MessageType.Regular, 0x3B2, 1019045 ); // I can't reach that.
|
||||
}
|
||||
|
||||
public virtual void Open( Mobile from )
|
||||
{
|
||||
DisplayTo( from );
|
||||
}
|
||||
|
||||
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 CreatureBackpack : Backpack //Used on BaseCreature
|
||||
{
|
||||
[Constructable]
|
||||
public CreatureBackpack( string name )
|
||||
{
|
||||
Name = name;
|
||||
Layer = Layer.Backpack;
|
||||
Hue = 5;
|
||||
Weight = 3.0;
|
||||
}
|
||||
|
||||
public override void AddNameProperty( ObjectPropertyList list )
|
||||
{
|
||||
if ( Name != null )
|
||||
list.Add( 1075257, Name ); // Contents of ~1_PETNAME~'s pack.
|
||||
else
|
||||
base.AddNameProperty( list );
|
||||
}
|
||||
|
||||
public override void OnItemRemoved( Item item )
|
||||
{
|
||||
if ( Items.Count == 0 )
|
||||
this.Delete();
|
||||
|
||||
base.OnItemRemoved( item );
|
||||
}
|
||||
|
||||
public override bool OnDragLift( Mobile from )
|
||||
{
|
||||
if ( from.AccessLevel > AccessLevel.Player )
|
||||
return true;
|
||||
|
||||
from.SendLocalizedMessage( 500169 ); // You cannot pick that up.
|
||||
return false;
|
||||
}
|
||||
|
||||
public override bool OnDragDropInto( Mobile from, Item item, Point3D p )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
public override bool TryDropItem( Mobile from, Item dropped, bool sendFullMessage )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
public CreatureBackpack( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
|
||||
writer.Write( (int) 1 ); // version
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
|
||||
int version = reader.ReadInt();
|
||||
|
||||
if ( version == 0 )
|
||||
Weight = 13.0;
|
||||
}
|
||||
}
|
||||
|
||||
public class StrongBackpack : Backpack //Used on Pack animals
|
||||
{
|
||||
[Constructable]
|
||||
public StrongBackpack()
|
||||
{
|
||||
Layer = Layer.Backpack;
|
||||
Weight = 13.0;
|
||||
}
|
||||
|
||||
public override bool CheckHold( Mobile m, Item item, bool message, bool checkItems, int plusItems, int plusWeight )
|
||||
{
|
||||
return base.CheckHold( m, item, false, checkItems, plusItems, plusWeight );
|
||||
}
|
||||
|
||||
public override int DefaultMaxWeight{ get{ return 1600; } }
|
||||
|
||||
public override bool CheckContentDisplay( Mobile from )
|
||||
{
|
||||
object root = this.RootParent;
|
||||
|
||||
if ( root is BaseCreature && ((BaseCreature)root).Controlled && ((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) 1 ); // version
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
|
||||
int version = reader.ReadInt();
|
||||
|
||||
if ( version == 0 )
|
||||
Weight = 13.0;
|
||||
}
|
||||
}
|
||||
|
||||
public class Backpack : BaseContainer, IDyable
|
||||
{
|
||||
[Constructable]
|
||||
public Backpack() : base( 0xE75 )
|
||||
{
|
||||
Layer = Layer.Backpack;
|
||||
Weight = 3.0;
|
||||
}
|
||||
|
||||
public override int DefaultMaxWeight
|
||||
{
|
||||
get { return base.DefaultMaxWeight; }
|
||||
}
|
||||
|
||||
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) 1 ); // version
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
|
||||
int version = reader.ReadInt();
|
||||
|
||||
if ( version == 0 && ItemID == 0x9B2 )
|
||||
ItemID = 0xE75;
|
||||
}
|
||||
}
|
||||
|
||||
public class Pouch : TrapableContainer
|
||||
{
|
||||
[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 class Bag : BaseContainer, IDyable
|
||||
{
|
||||
[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();
|
||||
}
|
||||
}
|
||||
|
||||
[Flipable( 0x2115, 0x2116 )]
|
||||
public class BigBag : BaseContainer, IDyable
|
||||
{
|
||||
[Constructable]
|
||||
public BigBag() : base( 0x2115 )
|
||||
{
|
||||
Name = "bag";
|
||||
Weight = 2.0;
|
||||
Hue = 0x49E;
|
||||
}
|
||||
|
||||
public BigBag( 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
|
||||
{
|
||||
[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
|
||||
{
|
||||
[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
|
||||
{
|
||||
[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
|
||||
{
|
||||
[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
|
||||
{
|
||||
[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
|
||||
{
|
||||
[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
|
||||
{
|
||||
[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
|
||||
{
|
||||
[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
|
||||
{
|
||||
[Constructable]
|
||||
public MetalBox() : base( 0x9A8 )
|
||||
{
|
||||
}
|
||||
|
||||
public MetalBox( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
|
||||
writer.Write( (int) 1 ); // version
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
|
||||
int version = reader.ReadInt();
|
||||
|
||||
if ( version == 0 && Weight == 3 )
|
||||
Weight = -1;
|
||||
}
|
||||
}
|
||||
|
||||
[DynamicFliping]
|
||||
[Flipable( 0x9AB, 0xE7C )]
|
||||
public class MetalChest : LockableContainer
|
||||
{
|
||||
[Constructable]
|
||||
public MetalChest() : base( 0x9AB )
|
||||
{
|
||||
}
|
||||
|
||||
public MetalChest( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
|
||||
writer.Write( (int) 1 ); // version
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
|
||||
int version = reader.ReadInt();
|
||||
|
||||
if ( version == 0 && Weight == 25 )
|
||||
Weight = -1;
|
||||
}
|
||||
}
|
||||
|
||||
[DynamicFliping]
|
||||
[Flipable( 0xE41, 0xE40 )]
|
||||
public class MetalGoldenChest : LockableContainer
|
||||
{
|
||||
[Constructable]
|
||||
public MetalGoldenChest() : base( 0xE41 )
|
||||
{
|
||||
}
|
||||
|
||||
public MetalGoldenChest( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
|
||||
writer.Write( (int) 1 ); // version
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
|
||||
int version = reader.ReadInt();
|
||||
|
||||
if ( version == 0 && Weight == 25 )
|
||||
Weight = -1;
|
||||
}
|
||||
}
|
||||
|
||||
[Furniture]
|
||||
[Flipable( 0xe43, 0xe42 )]
|
||||
public class WoodenChest : LockableContainer
|
||||
{
|
||||
[Constructable]
|
||||
public WoodenChest() : base( 0xe43 )
|
||||
{
|
||||
Weight = 2.0;
|
||||
}
|
||||
|
||||
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();
|
||||
|
||||
if ( Weight == 15.0 )
|
||||
Weight = 2.0;
|
||||
}
|
||||
}
|
||||
}
|
||||
267
Scripts/Items/Containers/FurnitureContainer.cs
Normal file
267
Scripts/Items/Containers/FurnitureContainer.cs
Normal file
|
|
@ -0,0 +1,267 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Server;
|
||||
using Server.Multis;
|
||||
using Server.Network;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
[Furniture]
|
||||
[Flipable( 0xa97, 0xa99, 0xa98, 0xa9a, 0xa9b, 0xa9c )]
|
||||
public class FullBookcase : BaseContainer
|
||||
{
|
||||
[Constructable]
|
||||
public FullBookcase() : base( 0xA97 )
|
||||
{
|
||||
Weight = 1.0;
|
||||
}
|
||||
|
||||
public FullBookcase( 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( 0xa9d, 0xa9e )]
|
||||
public class EmptyBookcase : BaseContainer
|
||||
{
|
||||
[Constructable]
|
||||
public EmptyBookcase() : base( 0xA9D )
|
||||
{
|
||||
}
|
||||
|
||||
public EmptyBookcase( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
|
||||
writer.Write( (int) 1 ); // version
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
|
||||
if ( version == 0 && Weight == 1.0 )
|
||||
Weight = -1;
|
||||
}
|
||||
}
|
||||
|
||||
[Furniture]
|
||||
[Flipable( 0xa2c, 0xa34 )]
|
||||
public class Drawer : BaseContainer
|
||||
{
|
||||
[Constructable]
|
||||
public Drawer() : base( 0xA2C )
|
||||
{
|
||||
Weight = 1.0;
|
||||
}
|
||||
|
||||
public Drawer( 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( 0xa30, 0xa38 )]
|
||||
public class FancyDrawer : BaseContainer
|
||||
{
|
||||
[Constructable]
|
||||
public FancyDrawer() : base( 0xA30 )
|
||||
{
|
||||
Weight = 1.0;
|
||||
}
|
||||
|
||||
public FancyDrawer( 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( 0xa4f, 0xa53 )]
|
||||
public class Armoire : BaseContainer
|
||||
{
|
||||
[Constructable]
|
||||
public Armoire() : base( 0xA4F )
|
||||
{
|
||||
Weight = 1.0;
|
||||
}
|
||||
|
||||
public override void DisplayTo( Mobile m )
|
||||
{
|
||||
if ( DynamicFurniture.Open( this, m ) )
|
||||
base.DisplayTo( m );
|
||||
}
|
||||
|
||||
public Armoire( 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();
|
||||
|
||||
DynamicFurniture.Close( this );
|
||||
}
|
||||
}
|
||||
|
||||
[Furniture]
|
||||
[Flipable( 0xa4d, 0xa51 )]
|
||||
public class FancyArmoire : BaseContainer
|
||||
{
|
||||
[Constructable]
|
||||
public FancyArmoire() : base( 0xA4D )
|
||||
{
|
||||
Weight = 1.0;
|
||||
}
|
||||
|
||||
public override void DisplayTo( Mobile m )
|
||||
{
|
||||
if ( DynamicFurniture.Open( this, m ) )
|
||||
base.DisplayTo( m );
|
||||
}
|
||||
|
||||
public FancyArmoire( 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();
|
||||
|
||||
DynamicFurniture.Close( this );
|
||||
}
|
||||
}
|
||||
|
||||
public class DynamicFurniture
|
||||
{
|
||||
private static Dictionary<Container, Timer> m_Table = new Dictionary<Container, Timer>();
|
||||
|
||||
public static bool Open( Container c, Mobile m )
|
||||
{
|
||||
if ( m_Table.ContainsKey( c ) )
|
||||
{
|
||||
c.SendRemovePacket();
|
||||
Close( c );
|
||||
c.Delta( ItemDelta.Update );
|
||||
c.ProcessDelta();
|
||||
return false;
|
||||
}
|
||||
|
||||
if ( c is Armoire || c is FancyArmoire )
|
||||
{
|
||||
Timer t = new FurnitureTimer( c, m );
|
||||
t.Start();
|
||||
m_Table[c] = t;
|
||||
|
||||
switch ( c.ItemID )
|
||||
{
|
||||
case 0xA4D: c.ItemID = 0xA4C; break;
|
||||
case 0xA4F: c.ItemID = 0xA4E; break;
|
||||
case 0xA51: c.ItemID = 0xA50; break;
|
||||
case 0xA53: c.ItemID = 0xA52; break;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public static void Close( Container c )
|
||||
{
|
||||
Timer t = null;
|
||||
|
||||
m_Table.TryGetValue( c, out t );
|
||||
|
||||
if ( t != null )
|
||||
{
|
||||
t.Stop();
|
||||
m_Table.Remove( c );
|
||||
}
|
||||
|
||||
if ( c is Armoire || c is FancyArmoire )
|
||||
{
|
||||
switch ( c.ItemID )
|
||||
{
|
||||
case 0xA4C: c.ItemID = 0xA4D; break;
|
||||
case 0xA4E: c.ItemID = 0xA4F; break;
|
||||
case 0xA50: c.ItemID = 0xA51; break;
|
||||
case 0xA52: c.ItemID = 0xA53; break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public class FurnitureTimer : Timer
|
||||
{
|
||||
private Container m_Container;
|
||||
private Mobile m_Mobile;
|
||||
|
||||
public FurnitureTimer( Container c, Mobile m ) : base( TimeSpan.FromSeconds( 0.5 ), TimeSpan.FromSeconds( 0.5 ) )
|
||||
{
|
||||
Priority = TimerPriority.TwoFiftyMS;
|
||||
|
||||
m_Container = c;
|
||||
m_Mobile = m;
|
||||
}
|
||||
|
||||
protected override void OnTick()
|
||||
{
|
||||
if ( m_Mobile.Map != m_Container.Map || !m_Mobile.InRange( m_Container.GetWorldLocation(), 3 ) )
|
||||
DynamicFurniture.Close( m_Container );
|
||||
}
|
||||
}
|
||||
}
|
||||
677
Scripts/Items/Containers/HouseCrates.cs
Normal file
677
Scripts/Items/Containers/HouseCrates.cs
Normal file
|
|
@ -0,0 +1,677 @@
|
|||
using System;
|
||||
using Server;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
[Furniture]
|
||||
public class CratePlain : BaseContainer
|
||||
{
|
||||
[Constructable]
|
||||
public CratePlain() : base( 0x1A7F )
|
||||
{
|
||||
Weight = 1.0;
|
||||
Name = "crate";
|
||||
Hue = 0x49E;
|
||||
}
|
||||
|
||||
public CratePlain( 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]
|
||||
public class CrateCarpenter : BaseContainer
|
||||
{
|
||||
[Constructable]
|
||||
public CrateCarpenter() : base( 0x1A80 )
|
||||
{
|
||||
Weight = 1.0;
|
||||
Name = "crate";
|
||||
Hue = 0x49E;
|
||||
}
|
||||
|
||||
public CrateCarpenter( 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]
|
||||
public class CrateJewels : BaseContainer
|
||||
{
|
||||
[Constructable]
|
||||
public CrateJewels() : base( 0x1A81 )
|
||||
{
|
||||
Weight = 1.0;
|
||||
Name = "crate";
|
||||
Hue = 0x49E;
|
||||
}
|
||||
|
||||
public CrateJewels( 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]
|
||||
public class CrateWizard : BaseContainer
|
||||
{
|
||||
[Constructable]
|
||||
public CrateWizard() : base( 0x1A84 )
|
||||
{
|
||||
Weight = 1.0;
|
||||
Name = "crate";
|
||||
Hue = 0x49E;
|
||||
}
|
||||
|
||||
public CrateWizard( 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]
|
||||
public class CrateSmithing : BaseContainer
|
||||
{
|
||||
[Constructable]
|
||||
public CrateSmithing() : base( 0x1A85 )
|
||||
{
|
||||
Weight = 1.0;
|
||||
Name = "crate";
|
||||
Hue = 0x49E;
|
||||
}
|
||||
|
||||
public CrateSmithing( 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]
|
||||
public class CrateProvisions : BaseContainer
|
||||
{
|
||||
[Constructable]
|
||||
public CrateProvisions() : base( 0x1A89 )
|
||||
{
|
||||
Weight = 1.0;
|
||||
Name = "crate";
|
||||
Hue = 0x49E;
|
||||
}
|
||||
|
||||
public CrateProvisions( 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]
|
||||
public class CrateTailor : BaseContainer
|
||||
{
|
||||
[Constructable]
|
||||
public CrateTailor() : base( 0x1A8A )
|
||||
{
|
||||
Weight = 1.0;
|
||||
Name = "crate";
|
||||
Hue = 0x49E;
|
||||
}
|
||||
|
||||
public CrateTailor( 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]
|
||||
public class CrateMaps : BaseContainer
|
||||
{
|
||||
[Constructable]
|
||||
public CrateMaps() : base( 0x1A8C )
|
||||
{
|
||||
Weight = 1.0;
|
||||
Name = "crate";
|
||||
Hue = 0x49E;
|
||||
}
|
||||
|
||||
public CrateMaps( 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]
|
||||
public class CrateSailing : BaseContainer
|
||||
{
|
||||
[Constructable]
|
||||
public CrateSailing() : base( 0x1A8D )
|
||||
{
|
||||
Weight = 1.0;
|
||||
Name = "crate";
|
||||
Hue = 0x49E;
|
||||
}
|
||||
|
||||
public CrateSailing( 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]
|
||||
public class CrateInn : BaseContainer
|
||||
{
|
||||
[Constructable]
|
||||
public CrateInn() : base( 0x1A8E )
|
||||
{
|
||||
Weight = 1.0;
|
||||
Name = "crate";
|
||||
Hue = 0x49E;
|
||||
}
|
||||
|
||||
public CrateInn( 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]
|
||||
public class CrateArms : BaseContainer
|
||||
{
|
||||
[Constructable]
|
||||
public CrateArms() : base( 0x1A8F )
|
||||
{
|
||||
Weight = 1.0;
|
||||
Name = "crate";
|
||||
Hue = 0x49E;
|
||||
}
|
||||
|
||||
public CrateArms( 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]
|
||||
public class CrateStable : BaseContainer
|
||||
{
|
||||
[Constructable]
|
||||
public CrateStable() : base( 0x1A90 )
|
||||
{
|
||||
Weight = 1.0;
|
||||
Name = "crate";
|
||||
Hue = 0x49E;
|
||||
}
|
||||
|
||||
public CrateStable( 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]
|
||||
public class CrateFletcher : BaseContainer
|
||||
{
|
||||
[Constructable]
|
||||
public CrateFletcher() : base( 0x1A91 )
|
||||
{
|
||||
Weight = 1.0;
|
||||
Name = "crate";
|
||||
Hue = 0x49E;
|
||||
}
|
||||
|
||||
public CrateFletcher( 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]
|
||||
public class CrateMeat : BaseContainer
|
||||
{
|
||||
[Constructable]
|
||||
public CrateMeat() : base( 0x1A97 )
|
||||
{
|
||||
Weight = 1.0;
|
||||
Name = "crate";
|
||||
Hue = 0x49E;
|
||||
}
|
||||
|
||||
public CrateMeat( 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]
|
||||
public class CrateTinker : BaseContainer
|
||||
{
|
||||
[Constructable]
|
||||
public CrateTinker() : base( 0x1A98 )
|
||||
{
|
||||
Weight = 1.0;
|
||||
Name = "crate";
|
||||
Hue = 0x49E;
|
||||
}
|
||||
|
||||
public CrateTinker( 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]
|
||||
public class CratePotions : BaseContainer
|
||||
{
|
||||
[Constructable]
|
||||
public CratePotions() : base( 0x1AA3 )
|
||||
{
|
||||
Weight = 1.0;
|
||||
Name = "crate";
|
||||
Hue = 0x49E;
|
||||
}
|
||||
|
||||
public CratePotions( 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]
|
||||
public class CrateFood : BaseContainer
|
||||
{
|
||||
[Constructable]
|
||||
public CrateFood() : base( 0x1AEE )
|
||||
{
|
||||
Weight = 1.0;
|
||||
Name = "crate";
|
||||
Hue = 0x49E;
|
||||
}
|
||||
|
||||
public CrateFood( 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]
|
||||
public class CrateGold : BaseContainer
|
||||
{
|
||||
[Constructable]
|
||||
public CrateGold() : base( 0x1AEF )
|
||||
{
|
||||
Weight = 1.0;
|
||||
Name = "crate";
|
||||
Hue = 0x49E;
|
||||
}
|
||||
|
||||
public CrateGold( 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]
|
||||
public class CrateBard : BaseContainer
|
||||
{
|
||||
[Constructable]
|
||||
public CrateBard() : base( 0x1AF0 )
|
||||
{
|
||||
Weight = 1.0;
|
||||
Name = "crate";
|
||||
Hue = 0x49E;
|
||||
}
|
||||
|
||||
public CrateBard( 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]
|
||||
public class CrateWax : BaseContainer
|
||||
{
|
||||
[Constructable]
|
||||
public CrateWax() : base( 0x1AF1 )
|
||||
{
|
||||
Weight = 1.0;
|
||||
Name = "crate";
|
||||
Hue = 0x49E;
|
||||
}
|
||||
|
||||
public CrateWax( 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]
|
||||
public class CrateBooks : BaseContainer
|
||||
{
|
||||
[Constructable]
|
||||
public CrateBooks() : base( 0x1AF2 )
|
||||
{
|
||||
Weight = 1.0;
|
||||
Name = "crate";
|
||||
Hue = 0x49E;
|
||||
}
|
||||
|
||||
public CrateBooks( 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]
|
||||
public class CrateBows : BaseContainer
|
||||
{
|
||||
[Constructable]
|
||||
public CrateBows() : base( 0x1AFC )
|
||||
{
|
||||
Weight = 1.0;
|
||||
Name = "crate";
|
||||
Hue = 0x49E;
|
||||
}
|
||||
|
||||
public CrateBows( 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]
|
||||
public class CrateHealer : BaseContainer
|
||||
{
|
||||
[Constructable]
|
||||
public CrateHealer() : base( 0x1AFD )
|
||||
{
|
||||
Weight = 1.0;
|
||||
Name = "crate";
|
||||
Hue = 0x49E;
|
||||
}
|
||||
|
||||
public CrateHealer( 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]
|
||||
public class CrateTavern : BaseContainer
|
||||
{
|
||||
[Constructable]
|
||||
public CrateTavern() : base( 0x1AFE )
|
||||
{
|
||||
Weight = 1.0;
|
||||
Name = "crate";
|
||||
Hue = 0x49E;
|
||||
}
|
||||
|
||||
public CrateTavern( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
50
Scripts/Items/Containers/InnChest.cs
Normal file
50
Scripts/Items/Containers/InnChest.cs
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
using System;
|
||||
using Server;
|
||||
using Server.Mobiles;
|
||||
using Server.Regions;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
[Flipable(0x0E42, 0x0E43)]
|
||||
public class InnChest : Item
|
||||
{
|
||||
[Constructable]
|
||||
public InnChest() : base(0x0E42)
|
||||
{
|
||||
Name = "Inn Chest";
|
||||
Movable = false;
|
||||
}
|
||||
|
||||
public override void OnDoubleClick(Mobile from)
|
||||
{
|
||||
if ( from.Region is InnRegion && from.InRange( this.GetWorldLocation(), 4 ) )
|
||||
{
|
||||
InnBox box = from.InnBox;
|
||||
if (box != null)
|
||||
{
|
||||
box.Open();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
from.SendLocalizedMessage( 502138 ); // That is too far away for you to use
|
||||
}
|
||||
}
|
||||
|
||||
public InnChest( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
414
Scripts/Items/Containers/LockableContainer.cs
Normal file
414
Scripts/Items/Containers/LockableContainer.cs
Normal file
|
|
@ -0,0 +1,414 @@
|
|||
using System;
|
||||
using Server.Network;
|
||||
using Server.Items;
|
||||
using Server.Misc;
|
||||
using Server.Engines.Craft;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
public abstract class LockableContainer : TrapableContainer, ILockable, ILockpickable, ICraftable, IShipwreckedItem
|
||||
{
|
||||
private bool m_Locked;
|
||||
private int m_LockLevel, m_MaxLockLevel, m_RequiredSkill;
|
||||
private uint m_KeyValue;
|
||||
private Mobile m_Picker;
|
||||
private bool m_TrapOnLockpick;
|
||||
|
||||
[CommandProperty( AccessLevel.GameMaster )]
|
||||
public Mobile Picker
|
||||
{
|
||||
get
|
||||
{
|
||||
return m_Picker;
|
||||
}
|
||||
set
|
||||
{
|
||||
m_Picker = value;
|
||||
}
|
||||
}
|
||||
|
||||
[CommandProperty( AccessLevel.GameMaster )]
|
||||
public int MaxLockLevel
|
||||
{
|
||||
get
|
||||
{
|
||||
return m_MaxLockLevel;
|
||||
}
|
||||
set
|
||||
{
|
||||
m_MaxLockLevel = value;
|
||||
}
|
||||
}
|
||||
|
||||
[CommandProperty( AccessLevel.GameMaster )]
|
||||
public int LockLevel
|
||||
{
|
||||
get
|
||||
{
|
||||
return m_LockLevel;
|
||||
}
|
||||
set
|
||||
{
|
||||
m_LockLevel = value;
|
||||
}
|
||||
}
|
||||
|
||||
[CommandProperty( AccessLevel.GameMaster )]
|
||||
public int RequiredSkill
|
||||
{
|
||||
get
|
||||
{
|
||||
return m_RequiredSkill;
|
||||
}
|
||||
set
|
||||
{
|
||||
m_RequiredSkill = value;
|
||||
}
|
||||
}
|
||||
|
||||
[CommandProperty( AccessLevel.GameMaster )]
|
||||
public virtual bool Locked
|
||||
{
|
||||
get
|
||||
{
|
||||
return m_Locked;
|
||||
}
|
||||
set
|
||||
{
|
||||
m_Locked = value;
|
||||
|
||||
if ( m_Locked )
|
||||
m_Picker = null;
|
||||
|
||||
InvalidateProperties();
|
||||
}
|
||||
}
|
||||
|
||||
[CommandProperty( AccessLevel.GameMaster )]
|
||||
public uint KeyValue
|
||||
{
|
||||
get
|
||||
{
|
||||
return m_KeyValue;
|
||||
}
|
||||
set
|
||||
{
|
||||
m_KeyValue = value;
|
||||
}
|
||||
}
|
||||
|
||||
public override bool TrapOnOpen
|
||||
{
|
||||
get
|
||||
{
|
||||
return !m_TrapOnLockpick;
|
||||
}
|
||||
}
|
||||
|
||||
[CommandProperty( AccessLevel.GameMaster )]
|
||||
public bool TrapOnLockpick
|
||||
{
|
||||
get
|
||||
{
|
||||
return m_TrapOnLockpick;
|
||||
}
|
||||
set
|
||||
{
|
||||
m_TrapOnLockpick = value;
|
||||
}
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
|
||||
writer.Write( (int) 6 ); // version
|
||||
|
||||
writer.Write( m_IsShipwreckedItem );
|
||||
|
||||
writer.Write( (bool) m_TrapOnLockpick );
|
||||
|
||||
writer.Write( (int) m_RequiredSkill );
|
||||
|
||||
writer.Write( (int) m_MaxLockLevel );
|
||||
|
||||
writer.Write( m_KeyValue );
|
||||
writer.Write( (int) m_LockLevel );
|
||||
writer.Write( (bool) m_Locked );
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
|
||||
int version = reader.ReadInt();
|
||||
|
||||
switch ( version )
|
||||
{
|
||||
case 6:
|
||||
{
|
||||
m_IsShipwreckedItem = reader.ReadBool();
|
||||
|
||||
goto case 5;
|
||||
}
|
||||
case 5:
|
||||
{
|
||||
m_TrapOnLockpick = reader.ReadBool();
|
||||
|
||||
goto case 4;
|
||||
}
|
||||
case 4:
|
||||
{
|
||||
m_RequiredSkill = reader.ReadInt();
|
||||
|
||||
goto case 3;
|
||||
}
|
||||
case 3:
|
||||
{
|
||||
m_MaxLockLevel = reader.ReadInt();
|
||||
|
||||
goto case 2;
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
m_KeyValue = reader.ReadUInt();
|
||||
|
||||
goto case 1;
|
||||
}
|
||||
case 1:
|
||||
{
|
||||
m_LockLevel = reader.ReadInt();
|
||||
|
||||
goto case 0;
|
||||
}
|
||||
case 0:
|
||||
{
|
||||
if ( version < 3 )
|
||||
m_MaxLockLevel = 100;
|
||||
|
||||
if ( version < 4 )
|
||||
{
|
||||
if ( (m_MaxLockLevel - m_LockLevel) == 40 )
|
||||
{
|
||||
m_RequiredSkill = m_LockLevel + 6;
|
||||
m_LockLevel = m_RequiredSkill - 10;
|
||||
m_MaxLockLevel = m_RequiredSkill + 39;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_RequiredSkill = m_LockLevel;
|
||||
}
|
||||
}
|
||||
|
||||
m_Locked = reader.ReadBool();
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public LockableContainer( int itemID ) : base( itemID )
|
||||
{
|
||||
m_MaxLockLevel = 100;
|
||||
}
|
||||
|
||||
public LockableContainer( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
|
||||
public override bool CheckContentDisplay( Mobile from )
|
||||
{
|
||||
return !m_Locked && base.CheckContentDisplay( from );
|
||||
}
|
||||
|
||||
public override bool TryDropItem( Mobile from, Item dropped, bool sendFullMessage )
|
||||
{
|
||||
if ( from.AccessLevel < AccessLevel.GameMaster && m_Locked )
|
||||
{
|
||||
from.SendLocalizedMessage( 501747 ); // It appears to be locked.
|
||||
return false;
|
||||
}
|
||||
|
||||
return base.TryDropItem( from, dropped, sendFullMessage );
|
||||
}
|
||||
|
||||
public override bool OnDragDropInto( Mobile from, Item item, Point3D p )
|
||||
{
|
||||
if ( from.AccessLevel < AccessLevel.GameMaster && m_Locked )
|
||||
{
|
||||
from.SendLocalizedMessage( 501747 ); // It appears to be locked.
|
||||
return false;
|
||||
}
|
||||
|
||||
return base.OnDragDropInto( from, item, p );
|
||||
}
|
||||
|
||||
public override bool CheckLift( Mobile from, Item item, ref LRReason reject )
|
||||
{
|
||||
if ( !base.CheckLift( from, item, ref reject ) )
|
||||
return false;
|
||||
|
||||
if ( item != this && from.AccessLevel < AccessLevel.GameMaster && m_Locked )
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public override bool CheckItemUse( Mobile from, Item item )
|
||||
{
|
||||
if ( !base.CheckItemUse( from, item ) )
|
||||
return false;
|
||||
|
||||
if ( item != this && from.AccessLevel < AccessLevel.GameMaster && m_Locked )
|
||||
{
|
||||
from.LocalOverheadMessage( MessageType.Regular, 0x3B2, 1019045 ); // I can't reach that.
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public override bool DisplaysContent{ get{ return !m_Locked; } }
|
||||
|
||||
public virtual bool CheckLocked( Mobile from )
|
||||
{
|
||||
bool inaccessible = false;
|
||||
|
||||
if ( m_Locked )
|
||||
{
|
||||
int number;
|
||||
|
||||
if ( from.AccessLevel >= AccessLevel.GameMaster )
|
||||
{
|
||||
number = 502502; // That is locked, but you open it with your godly powers.
|
||||
}
|
||||
else
|
||||
{
|
||||
number = 501747; // It appears to be locked.
|
||||
inaccessible = true;
|
||||
}
|
||||
|
||||
from.Send( new MessageLocalized( Serial, ItemID, MessageType.Regular, 0x3B2, 3, number, "", "" ) );
|
||||
}
|
||||
|
||||
return inaccessible;
|
||||
}
|
||||
|
||||
public override void OnTelekinesis( Mobile from )
|
||||
{
|
||||
if ( CheckLocked( from ) )
|
||||
{
|
||||
Effects.SendLocationParticles( EffectItem.Create( Location, Map, EffectItem.DefaultDuration ), 0x376A, 9, 32, 5022 );
|
||||
Effects.PlaySound( Location, Map, 0x1F5 );
|
||||
return;
|
||||
}
|
||||
|
||||
base.OnTelekinesis( from );
|
||||
}
|
||||
|
||||
public override void OnDoubleClickSecureTrade( Mobile from )
|
||||
{
|
||||
if ( CheckLocked( from ) )
|
||||
return;
|
||||
|
||||
base.OnDoubleClickSecureTrade( from );
|
||||
}
|
||||
|
||||
public override void Open( Mobile from )
|
||||
{
|
||||
if ( CheckLocked( from ) )
|
||||
return;
|
||||
|
||||
base.Open( from );
|
||||
}
|
||||
|
||||
public override void OnSnoop( Mobile from )
|
||||
{
|
||||
if ( CheckLocked( from ) )
|
||||
return;
|
||||
|
||||
base.OnSnoop( from );
|
||||
}
|
||||
|
||||
public virtual void LockPick( Mobile from )
|
||||
{
|
||||
Locked = false;
|
||||
Picker = from;
|
||||
|
||||
if ( this.TrapOnLockpick && ExecuteTrap( from ) )
|
||||
{
|
||||
this.TrapOnLockpick = false;
|
||||
}
|
||||
}
|
||||
|
||||
public override void AddNameProperties( ObjectPropertyList list )
|
||||
{
|
||||
base.AddNameProperties( list );
|
||||
|
||||
if ( m_IsShipwreckedItem )
|
||||
list.Add( 1041645 ); // recovered from a shipwreck
|
||||
}
|
||||
|
||||
public override void OnSingleClick( Mobile from )
|
||||
{
|
||||
base.OnSingleClick( from );
|
||||
|
||||
if ( m_IsShipwreckedItem )
|
||||
LabelTo( from, 1041645 ); //recovered from a shipwreck
|
||||
}
|
||||
|
||||
#region ICraftable Members
|
||||
|
||||
public int OnCraft( int quality, bool makersMark, Mobile from, CraftSystem craftSystem, Type typeRes, BaseTool tool, CraftItem craftItem, int resHue )
|
||||
{
|
||||
if ( SkillCheck.TestTrade( from, Trades.Tinkering, -5.0, 15.0 ) )
|
||||
{
|
||||
from.SendLocalizedMessage( 500636 ); // Your tinker skill was sufficient to make the item lockable.
|
||||
|
||||
Key key = new Key( KeyType.Copper, Key.RandomValue() );
|
||||
|
||||
KeyValue = key.KeyValue;
|
||||
DropItem( key );
|
||||
|
||||
double tinkering = SkillCheck.TradeSkill( from, Trades.Tinkering, false );
|
||||
int level = (int)(tinkering * 0.8);
|
||||
|
||||
RequiredSkill = level - 4;
|
||||
LockLevel = level - 14;
|
||||
MaxLockLevel = level + 35;
|
||||
|
||||
if ( LockLevel == 0 )
|
||||
LockLevel = -1;
|
||||
else if ( LockLevel > 95 )
|
||||
LockLevel = 95;
|
||||
|
||||
if ( RequiredSkill > 95 )
|
||||
RequiredSkill = 95;
|
||||
|
||||
if ( MaxLockLevel > 95 )
|
||||
MaxLockLevel = 95;
|
||||
}
|
||||
else
|
||||
{
|
||||
from.SendLocalizedMessage( 500637 ); // Your tinker skill was insufficient to make the item lockable.
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region IShipwreckedItem Members
|
||||
|
||||
private bool m_IsShipwreckedItem;
|
||||
|
||||
[CommandProperty( AccessLevel.GameMaster )]
|
||||
public bool IsShipwreckedItem
|
||||
{
|
||||
get { return m_IsShipwreckedItem; }
|
||||
set { m_IsShipwreckedItem = value; }
|
||||
}
|
||||
#endregion
|
||||
|
||||
}
|
||||
}
|
||||
170
Scripts/Items/Containers/Strongbox.cs
Normal file
170
Scripts/Items/Containers/Strongbox.cs
Normal file
|
|
@ -0,0 +1,170 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Server;
|
||||
using Server.Multis;
|
||||
using Server.Network;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
[FlipableAttribute( 0xE80, 0x9A8 )]
|
||||
public class StrongBox : BaseContainer, IChopable
|
||||
{
|
||||
private Mobile m_Owner;
|
||||
private BaseHouse m_House;
|
||||
|
||||
public override double DefaultWeight{ get{ return 100; } }
|
||||
public override int LabelNumber { get { return 1023712; } }
|
||||
|
||||
public StrongBox( Mobile owner, BaseHouse house ) : base( 0xE80 )
|
||||
{
|
||||
m_Owner = owner;
|
||||
m_House = house;
|
||||
|
||||
MaxItems = 25;
|
||||
}
|
||||
|
||||
[CommandProperty( AccessLevel.GameMaster )]
|
||||
public Mobile Owner
|
||||
{
|
||||
get
|
||||
{
|
||||
return m_Owner;
|
||||
}
|
||||
set
|
||||
{
|
||||
m_Owner = value;
|
||||
InvalidateProperties();
|
||||
}
|
||||
}
|
||||
|
||||
public override int DefaultMaxWeight{ get{ return 0; } }
|
||||
|
||||
public StrongBox( Serial serial ) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
|
||||
writer.Write( (int) 0 ); // version
|
||||
|
||||
writer.Write( m_Owner );
|
||||
writer.Write( m_House );
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
|
||||
int version = reader.ReadInt();
|
||||
|
||||
switch ( version )
|
||||
{
|
||||
case 0:
|
||||
{
|
||||
m_Owner = reader.ReadMobile();
|
||||
m_House = reader.ReadItem() as BaseHouse;
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
Timer.DelayCall( TimeSpan.FromSeconds( 1.0 ), new TimerCallback( Validate ) );
|
||||
}
|
||||
|
||||
private void Validate()
|
||||
{
|
||||
if ( m_Owner != null && m_House != null && !m_House.IsCoOwner( m_Owner ) )
|
||||
{
|
||||
Console.WriteLine( "Warning: Destroying strongbox of {0}", m_Owner.Name );
|
||||
Destroy();
|
||||
}
|
||||
}
|
||||
|
||||
public override bool Decays
|
||||
{
|
||||
get
|
||||
{
|
||||
if ( m_House != null && m_Owner != null && !m_Owner.Deleted )
|
||||
return !m_House.IsCoOwner( m_Owner );
|
||||
else
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public override TimeSpan DecayTime
|
||||
{
|
||||
get
|
||||
{
|
||||
return TimeSpan.FromMinutes( 30.0 );
|
||||
}
|
||||
}
|
||||
|
||||
public override void AddNameProperty( ObjectPropertyList list )
|
||||
{
|
||||
if ( m_Owner != null )
|
||||
list.Add( 1042887, m_Owner.Name ); // a strong box owned by ~1_OWNER_NAME~
|
||||
else
|
||||
base.AddNameProperty( list );
|
||||
}
|
||||
|
||||
public override void OnSingleClick( Mobile from )
|
||||
{
|
||||
if ( m_Owner != null )
|
||||
{
|
||||
LabelTo( from, 1042887, m_Owner.Name ); // a strong box owned by ~1_OWNER_NAME~
|
||||
|
||||
if ( CheckContentDisplay( from ) )
|
||||
LabelTo( from, "({0} items, {1} stones)", TotalItems, TotalWeight );
|
||||
}
|
||||
else
|
||||
{
|
||||
base.OnSingleClick( from );
|
||||
}
|
||||
}
|
||||
|
||||
public override bool IsAccessibleTo( Mobile m )
|
||||
{
|
||||
if ( m_Owner == null || m_Owner.Deleted || m_House == null || m_House.Deleted || m.AccessLevel >= AccessLevel.GameMaster )
|
||||
return true;
|
||||
|
||||
return m == m_Owner && m_House.IsCoOwner( m ) && base.IsAccessibleTo( m );
|
||||
}
|
||||
|
||||
private void Chop( Mobile from )
|
||||
{
|
||||
Effects.PlaySound( Location, Map, 0x3B3 );
|
||||
from.SendLocalizedMessage( 500461 ); // You destroy the item.
|
||||
Destroy();
|
||||
}
|
||||
|
||||
public void OnChop( Mobile from )
|
||||
{
|
||||
if ( m_House != null && !m_House.Deleted && m_Owner != null && !m_Owner.Deleted )
|
||||
{
|
||||
if ( from == m_Owner || m_House.IsOwner( from ) )
|
||||
Chop( from );
|
||||
}
|
||||
else
|
||||
{
|
||||
Chop( from );
|
||||
}
|
||||
}
|
||||
|
||||
public Container ConvertToStandardContainer()
|
||||
{
|
||||
Container metalBox = new MetalBox();
|
||||
List<Item> subItems = new List<Item>( Items );
|
||||
|
||||
foreach ( Item subItem in subItems )
|
||||
{
|
||||
metalBox.AddItem( subItem );
|
||||
}
|
||||
|
||||
this.Delete();
|
||||
|
||||
return metalBox;
|
||||
}
|
||||
}
|
||||
}
|
||||
272
Scripts/Items/Containers/TrapableContainer.cs
Normal file
272
Scripts/Items/Containers/TrapableContainer.cs
Normal file
|
|
@ -0,0 +1,272 @@
|
|||
using System;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
public enum TrapType
|
||||
{
|
||||
None,
|
||||
MagicTrap,
|
||||
ExplosionTrap,
|
||||
DartTrap,
|
||||
PoisonTrap
|
||||
}
|
||||
|
||||
public abstract class TrapableContainer : BaseContainer, ITelekinesisable
|
||||
{
|
||||
private TrapType m_TrapType;
|
||||
private int m_TrapPower;
|
||||
private int m_TrapLevel;
|
||||
|
||||
[CommandProperty( AccessLevel.GameMaster )]
|
||||
public TrapType TrapType
|
||||
{
|
||||
get
|
||||
{
|
||||
return m_TrapType;
|
||||
}
|
||||
set
|
||||
{
|
||||
m_TrapType = value;
|
||||
}
|
||||
}
|
||||
|
||||
[CommandProperty( AccessLevel.GameMaster )]
|
||||
public int TrapPower
|
||||
{
|
||||
get
|
||||
{
|
||||
return m_TrapPower;
|
||||
}
|
||||
set
|
||||
{
|
||||
m_TrapPower = value;
|
||||
}
|
||||
}
|
||||
|
||||
[CommandProperty( AccessLevel.GameMaster )]
|
||||
public int TrapLevel
|
||||
{
|
||||
get
|
||||
{
|
||||
return m_TrapLevel;
|
||||
}
|
||||
set
|
||||
{
|
||||
m_TrapLevel = value;
|
||||
}
|
||||
}
|
||||
|
||||
public virtual bool TrapOnOpen{ get{ return true; } }
|
||||
|
||||
public TrapableContainer( int itemID ) : base( itemID )
|
||||
{
|
||||
}
|
||||
|
||||
public TrapableContainer( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
|
||||
private void SendMessageTo( Mobile to, int number, int hue )
|
||||
{
|
||||
if ( Deleted || !to.CanSee( this ) )
|
||||
return;
|
||||
|
||||
to.Send( new Network.MessageLocalized( Serial, ItemID, Network.MessageType.Regular, hue, 3, number, "", "" ) );
|
||||
}
|
||||
|
||||
private void SendMessageTo( Mobile to, string text, int hue )
|
||||
{
|
||||
if ( Deleted || !to.CanSee( this ) )
|
||||
return;
|
||||
|
||||
to.Send( new Network.UnicodeMessage( Serial, ItemID, Network.MessageType.Regular, hue, 3, "ENU", "", text ) );
|
||||
}
|
||||
|
||||
public virtual bool ExecuteTrap( Mobile from )
|
||||
{
|
||||
if ( m_TrapType != TrapType.None )
|
||||
{
|
||||
Point3D loc = this.GetWorldLocation();
|
||||
Map facet = this.Map;
|
||||
|
||||
if ( from.AccessLevel >= AccessLevel.GameMaster )
|
||||
{
|
||||
SendMessageTo( from, "That is trapped, but you open it with your godly powers.", 0x3B2 );
|
||||
return false;
|
||||
}
|
||||
|
||||
switch ( m_TrapType )
|
||||
{
|
||||
case TrapType.ExplosionTrap:
|
||||
{
|
||||
SendMessageTo( from, 502999, 0x3B2 ); // You set off a trap!
|
||||
|
||||
if ( from.InRange( loc, 3 ) )
|
||||
{
|
||||
int damage;
|
||||
|
||||
if ( m_TrapLevel > 0 )
|
||||
damage = Utility.RandomMinMax( 10, 30 ) * m_TrapLevel;
|
||||
else
|
||||
damage = m_TrapPower;
|
||||
|
||||
Ultima.Damage( from, damage );
|
||||
|
||||
// Your skin blisters from the heat!
|
||||
from.LocalOverheadMessage( Network.MessageType.Regular, 0x2A, 503000 );
|
||||
}
|
||||
|
||||
Effects.SendLocationEffect( loc, facet, 0x36BD, 15, 10 );
|
||||
Effects.PlaySound( loc, facet, 0x307 );
|
||||
|
||||
break;
|
||||
}
|
||||
case TrapType.MagicTrap:
|
||||
{
|
||||
if ( from.InRange( loc, 1 ) )
|
||||
from.Damage( m_TrapPower );
|
||||
|
||||
Effects.PlaySound( loc, Map, 0x307 );
|
||||
|
||||
Effects.SendLocationEffect( new Point3D( loc.X - 1, loc.Y, loc.Z ), Map, 0x36BD, 15 );
|
||||
Effects.SendLocationEffect( new Point3D( loc.X + 1, loc.Y, loc.Z ), Map, 0x36BD, 15 );
|
||||
|
||||
Effects.SendLocationEffect( new Point3D( loc.X, loc.Y - 1, loc.Z ), Map, 0x36BD, 15 );
|
||||
Effects.SendLocationEffect( new Point3D( loc.X, loc.Y + 1, loc.Z ), Map, 0x36BD, 15 );
|
||||
|
||||
Effects.SendLocationEffect( new Point3D( loc.X + 1, loc.Y + 1, loc.Z + 11 ), Map, 0x36BD, 15 );
|
||||
|
||||
break;
|
||||
}
|
||||
case TrapType.DartTrap:
|
||||
{
|
||||
SendMessageTo( from, 502999, 0x3B2 ); // You set off a trap!
|
||||
|
||||
if ( from.InRange( loc, 3 ) )
|
||||
{
|
||||
int damage;
|
||||
|
||||
if ( m_TrapLevel > 0 )
|
||||
damage = Utility.RandomMinMax( 5, 15 ) * m_TrapLevel;
|
||||
else
|
||||
damage = m_TrapPower;
|
||||
|
||||
Ultima.Damage( from, damage );
|
||||
|
||||
// A dart imbeds itself in your flesh!
|
||||
from.LocalOverheadMessage( Network.MessageType.Regular, 0x62, 502998 );
|
||||
}
|
||||
|
||||
Effects.PlaySound( loc, facet, 0x223 );
|
||||
|
||||
break;
|
||||
}
|
||||
case TrapType.PoisonTrap:
|
||||
{
|
||||
SendMessageTo( from, 502999, 0x3B2 ); // You set off a trap!
|
||||
|
||||
if ( from.InRange( loc, 3 ) )
|
||||
{
|
||||
Poison poison = Poison.Lesser;
|
||||
|
||||
if ( this is LootChest )
|
||||
{
|
||||
LootChest chest = (LootChest)this;
|
||||
|
||||
switch ( chest.Level )
|
||||
{
|
||||
case 1: poison = Poison.Lesser; break;
|
||||
case 2: poison = Poison.Regular; break;
|
||||
case 3: poison = Poison.Greater; break;
|
||||
case 4: poison = Poison.Deadly; break;
|
||||
}
|
||||
Ultima.Damage( from, (int)(m_TrapPower/2) );
|
||||
}
|
||||
else if ( m_TrapLevel > 0 )
|
||||
{
|
||||
poison = Poison.GetPoison( Math.Max( 0, Math.Min( 4, m_TrapLevel - 1 ) ) );
|
||||
}
|
||||
else
|
||||
{
|
||||
Ultima.Damage( from, m_TrapPower );
|
||||
poison = Poison.Greater;
|
||||
}
|
||||
|
||||
from.ApplyPoison( from, poison );
|
||||
|
||||
// You are enveloped in a noxious green cloud!
|
||||
from.LocalOverheadMessage( Network.MessageType.Regular, 0x44, 503004 );
|
||||
}
|
||||
|
||||
Effects.SendLocationEffect( loc, facet, 0x113A, 10, 20 );
|
||||
Effects.PlaySound( loc, facet, 0x231 );
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
m_TrapType = TrapType.None;
|
||||
m_TrapPower = 0;
|
||||
m_TrapLevel = 0;
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public virtual void OnTelekinesis( Mobile from )
|
||||
{
|
||||
Effects.SendLocationParticles( EffectItem.Create( Location, Map, EffectItem.DefaultDuration ), 0x376A, 9, 32, 5022 );
|
||||
Effects.PlaySound( Location, Map, 0x1F5 );
|
||||
|
||||
if( this.TrapOnOpen )
|
||||
{
|
||||
ExecuteTrap( from );
|
||||
}
|
||||
}
|
||||
|
||||
public override void Open( Mobile from )
|
||||
{
|
||||
if ( !this.TrapOnOpen || !ExecuteTrap( from ) )
|
||||
base.Open( from );
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
|
||||
writer.Write( (int) 2 ); // version
|
||||
|
||||
writer.Write( (int) m_TrapLevel );
|
||||
|
||||
writer.Write( (int) m_TrapPower );
|
||||
writer.Write( (int) m_TrapType );
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
|
||||
int version = reader.ReadInt();
|
||||
|
||||
switch ( version )
|
||||
{
|
||||
case 2:
|
||||
{
|
||||
m_TrapLevel = reader.ReadInt();
|
||||
goto case 1;
|
||||
}
|
||||
case 1:
|
||||
{
|
||||
m_TrapPower = reader.ReadInt();
|
||||
goto case 0;
|
||||
}
|
||||
case 0:
|
||||
{
|
||||
m_TrapType = (TrapType)reader.ReadInt();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue