#W# Initial Commit: Avatars Conquest
This commit is contained in:
commit
8eae46895e
7512 changed files with 416187 additions and 0 deletions
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 );
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue