#W# Initial Commit: Avatars Conquest

This commit is contained in:
WarrentyExpired 2026-07-04 10:35:30 -04:00
commit 5df497787a
7510 changed files with 416048 additions and 0 deletions

View 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;
}
}
}

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

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

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

View 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
}
}

View 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;
}
}
}

View 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;
}
}
}
}
}