ModernUO/Scripts/Engines/Khaldun/KhaldunPitTeleporter.cs

90 lines
1.9 KiB
C#

namespace Server.Items
{
public class KhaldunPitTeleporter : Item
{
[CommandProperty( AccessLevel.GameMaster )]
public bool Active { get; set; }
[CommandProperty( AccessLevel.GameMaster )]
public Point3D PointDest { get; set; }
[CommandProperty( AccessLevel.GameMaster )]
public Map MapDest { get; set; }
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;
Active = true;
PointDest = pointDest;
MapDest = mapDest;
}
public KhaldunPitTeleporter( Serial serial ) : base( serial )
{
}
public override void OnDoubleClick( Mobile m )
{
if ( !Active )
return;
Map map = MapDest;
if ( map == null || map == Map.Internal )
map = m.Map;
Point3D p = PointDest;
if ( p == Point3D.Zero )
p = m.Location;
if ( m.InRange( this, 3 ) )
{
Mobiles.BaseCreature.TeleportPets( m, PointDest, MapDest );
m.MoveToWorld( PointDest, 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( Active );
writer.Write( PointDest );
writer.Write( MapDest );
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
Active = reader.ReadBool();
PointDest = reader.ReadPoint3D();
MapDest = reader.ReadMap();
}
}
}