ModernUO/Scripts/Engines/Khaldun/KhaldunPitTeleporter.cs
2018-09-14 12:56:58 -07:00

106 lines
2.2 KiB
C#

namespace Server.Items
{
public class KhaldunPitTeleporter : Item
{
private bool m_Active;
private Point3D m_PointDest;
private Map m_MapDest;
[CommandProperty( AccessLevel.GameMaster )]
public bool Active
{
get => m_Active;
set => m_Active = value;
}
[CommandProperty( AccessLevel.GameMaster )]
public Point3D PointDest
{
get => m_PointDest;
set => m_PointDest = value;
}
[CommandProperty( AccessLevel.GameMaster )]
public Map MapDest
{
get => m_MapDest;
set => m_MapDest = value;
}
public override int LabelNumber => 1016511; // the floor of the cavern seems to have collapsed here - a faint light is visible at the bottom of the pit
[Constructible]
public KhaldunPitTeleporter() : this( new Point3D( 5451, 1374, 0 ), Map.Felucca )
{
}
[Constructible]
public KhaldunPitTeleporter( Point3D pointDest, Map mapDest ) : base( 0x053B )
{
Movable = false;
Hue = 1;
m_Active = true;
m_PointDest = pointDest;
m_MapDest = mapDest;
}
public KhaldunPitTeleporter( Serial serial ) : base( serial )
{
}
public override void OnDoubleClick( Mobile m )
{
if ( !m_Active )
return;
Map map = m_MapDest;
if ( map == null || map == Map.Internal )
map = m.Map;
Point3D p = m_PointDest;
if ( p == Point3D.Zero )
p = m.Location;
if ( m.InRange( this, 3 ) )
{
Mobiles.BaseCreature.TeleportPets( m, m_PointDest, m_MapDest );
m.MoveToWorld( m_PointDest, m_MapDest );
}
else
{
m.SendLocalizedMessage( 1019045 ); // I can't reach that.
}
}
public override void OnDoubleClickDead( Mobile m )
{
OnDoubleClick( m );
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int)0 ); // version
writer.Write( m_Active );
writer.Write( m_PointDest );
writer.Write( m_MapDest );
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
m_Active = reader.ReadBool();
m_PointDest = reader.ReadPoint3D();
m_MapDest = reader.ReadMap();
}
}
}