public class DarkSigniaTele : BaseTeleporter
{
private Point3D m_DestLoc;
private Map m_DestMap;
private bool m_AllowCreatures;
private bool m_TelePets;
[CommandProperty( AccessLevel.GameMaster )]
public Point3D Location
{
get { return m_DestLoc; }
set { m_DestLoc = value; InvalidateProperties(); }
}
[CommandProperty( AccessLevel.GameMaster )]
public Map Map
{
get { return m_DestMap; }
set { m_DestMap = value; InvalidateProperties(); }
}
[CommandProperty( AccessLevel.GameMaster )]
public bool AllowCreatures
{
get { return m_AllowCreatures; }
set { m_AllowCreatures = value; InvalidateProperties(); }
}
[CommandProperty( AccessLevel.GameMaster )]
public bool TelePets
{
get { return m_TelePets; }
set { m_TelePets = value; InvalidateProperties(); }
}
[Constructable]
public DarkSigniaTele()
{
Visible = false;
Hue = 56;
Movable = false;
Weight = 1.0;
Name = "Dark Signia Teleporter";
}
public DarkSigniaTele( Serial serial ) : base( serial )
{
}
public override bool OnMoveOver( Mobile m )
{
Container pack = m.Backpack;
if (pack == null)
return true;
if( !m_AllowCreatures && !m.Player )
return true;
Item items = m.FindItemOnLayer( Layer.Talisman );
if (items != null && items.Length > 0)
{
foreach (Item item in items)
if( m_TelePets )
{
Server.Mobiles.BaseCreature.TeleportPets( m, m_DestLoc, m_DestMap );
}
m.PlaySound(0x1F7);
m.MoveToWorld( m_DestLoc, m_DestMap );
return false;
}
m.SendMessage( " You must have a Dark Signia to enter!" );
return true;
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // version
writer.Write( m_DestLoc );
writer.Write( m_DestMap );
writer.Write( m_AllowCreatures );
writer.Write( m_TelePets );
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
m_DestLoc = reader.ReadPoint3D();
m_DestMap = reader.ReadMap();
m_AllowCreatures = reader.ReadBool();
m_TelePets = reader.ReadBool();
}
}
}