147 lines
No EOL
3.5 KiB
C#
147 lines
No EOL
3.5 KiB
C#
using System;
|
|
using Server;
|
|
using Server.Multis;
|
|
using Server.Network;
|
|
|
|
namespace Server.Items
|
|
{
|
|
public class Hold : Container
|
|
{
|
|
private int m_MaxWeightDefault = 1000;
|
|
private BaseBoat m_Boat;
|
|
|
|
public Hold( BaseBoat boat ) : base( 0x3EAE )
|
|
{
|
|
m_Boat = boat;
|
|
Movable = false;
|
|
|
|
m_MaxWeightDefault = 1000;
|
|
|
|
if ( boat is LargeDragonBoat ) m_MaxWeightDefault = 3200;
|
|
else if ( boat is MediumDragonBoat ) m_MaxWeightDefault = 2200;
|
|
else if ( boat is SmallDragonBoat ) m_MaxWeightDefault = 1400;
|
|
else if ( boat is LargeBoat ) m_MaxWeightDefault = 2600;
|
|
else if ( boat is MediumBoat ) m_MaxWeightDefault = 1800;
|
|
}
|
|
|
|
public override int DefaultMaxWeight{ get{ return m_MaxWeightDefault; } }
|
|
|
|
public Hold( Serial serial ) : base( serial )
|
|
{
|
|
}
|
|
|
|
public void SetFacing( Direction dir )
|
|
{
|
|
switch ( dir )
|
|
{
|
|
case Direction.East: ItemID = 0x3E65; break;
|
|
case Direction.West: ItemID = 0x3E93; break;
|
|
case Direction.North: ItemID = 0x3EAE; break;
|
|
case Direction.South: ItemID = 0x3EB9; break;
|
|
}
|
|
}
|
|
|
|
public override bool OnDragDrop( Mobile from, Item item )
|
|
{
|
|
if ( m_Boat == null || !m_Boat.Contains( from ) || m_Boat.IsMoving )
|
|
return false;
|
|
|
|
return base.OnDragDrop( from, item );
|
|
}
|
|
|
|
public override bool OnDragDropInto( Mobile from, Item item, Point3D p )
|
|
{
|
|
if ( m_Boat == null || !m_Boat.Contains( from ) || m_Boat.IsMoving )
|
|
return false;
|
|
|
|
return base.OnDragDropInto( from, item, p );
|
|
}
|
|
|
|
public override bool CheckItemUse( Mobile from, Item item )
|
|
{
|
|
if ( item != this && (m_Boat == null || !m_Boat.Contains( from ) || m_Boat.IsMoving) )
|
|
return false;
|
|
|
|
return base.CheckItemUse( from, item );
|
|
}
|
|
|
|
public override bool CheckLift( Mobile from, Item item, ref LRReason reject )
|
|
{
|
|
if ( m_Boat == null || !m_Boat.Contains( from ) || m_Boat.IsMoving )
|
|
return false;
|
|
|
|
return base.CheckLift( from, item, ref reject );
|
|
}
|
|
|
|
public override void OnAfterDelete()
|
|
{
|
|
if ( m_Boat != null )
|
|
m_Boat.Delete();
|
|
}
|
|
|
|
public override void OnDoubleClick( Mobile from )
|
|
{
|
|
if ( m_Boat == null || !m_Boat.Contains( from ) )
|
|
{
|
|
if ( m_Boat.TillerMan != null )
|
|
m_Boat.TillerMan.Say( 502490 ); // You must be on the ship to open the hold.
|
|
}
|
|
else if ( m_Boat.IsMoving )
|
|
{
|
|
if ( m_Boat.TillerMan != null )
|
|
m_Boat.TillerMan.Say( 502491 ); // I can not open the hold while the ship is moving.
|
|
}
|
|
else
|
|
{
|
|
base.OnDoubleClick( from );
|
|
}
|
|
}
|
|
|
|
public override bool IsDecoContainer
|
|
{
|
|
get{ return false; }
|
|
}
|
|
|
|
public override void Serialize( GenericWriter writer )
|
|
{
|
|
base.Serialize( writer );
|
|
|
|
writer.Write( (int) 0 );
|
|
|
|
writer.Write( m_Boat );
|
|
}
|
|
|
|
public override void Deserialize( GenericReader reader )
|
|
{
|
|
base.Deserialize( reader );
|
|
|
|
int version = reader.ReadInt();
|
|
|
|
switch ( version )
|
|
{
|
|
case 0:
|
|
{
|
|
m_Boat = reader.ReadItem() as BaseBoat;
|
|
|
|
if ( m_Boat == null || Parent != null )
|
|
{
|
|
Delete();
|
|
}
|
|
else
|
|
{
|
|
if ( m_Boat is LargeDragonBoat ) m_MaxWeightDefault = 3200;
|
|
else if ( m_Boat is MediumDragonBoat ) m_MaxWeightDefault = 2200;
|
|
else if ( m_Boat is SmallDragonBoat ) m_MaxWeightDefault = 1400;
|
|
else if ( m_Boat is LargeBoat ) m_MaxWeightDefault = 2600;
|
|
else if ( m_Boat is MediumBoat ) m_MaxWeightDefault = 1800;
|
|
else { m_MaxWeightDefault = 1000; }
|
|
}
|
|
|
|
Movable = false;
|
|
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} |