99 lines
2.9 KiB
C#
99 lines
2.9 KiB
C#
using System;
|
|
using Server;
|
|
using Server.Multis;
|
|
|
|
namespace Server.Items
|
|
{
|
|
public class ShipWheel : Item, IGalleonFixture
|
|
{
|
|
public override int LabelNumber { get { return 1149698; } } // wheel
|
|
|
|
public BaseGalleon Galleon { get; set; }
|
|
|
|
public Mobile Pilot { get { return Galleon != null ? Galleon.Pilot : null; } }
|
|
|
|
public ShipWheel(BaseGalleon galleon, int id)
|
|
: base(id)
|
|
{
|
|
Galleon = galleon;
|
|
Movable = false;
|
|
}
|
|
|
|
public override void OnDoubleClickDead(Mobile m)
|
|
{
|
|
OnDoubleClick(m);
|
|
}
|
|
|
|
public override void OnDoubleClick(Mobile from)
|
|
{
|
|
from.RevealingAction();
|
|
|
|
BaseBoat boat = BaseBoat.FindBoatAt(from, from.Map);
|
|
Item mount = from.FindItemOnLayer(Layer.Mount);
|
|
|
|
if (boat == null || Galleon == null || boat != Galleon)
|
|
{
|
|
from.SendLocalizedMessage(1116724); // You cannot pilot a ship unless you are aboard it!
|
|
}
|
|
else if (Galleon.GetSecurityLevel(from) < SecurityLevel.Crewman)
|
|
{
|
|
from.SendLocalizedMessage(1116726); // This is not your ship!
|
|
}
|
|
else if (Pilot != null && Pilot != from && (Galleon.GetSecurityLevel(from) < Galleon.GetSecurityLevel(Pilot) || Pilot == Galleon.Owner))
|
|
{
|
|
from.SendLocalizedMessage(502221); // Someone else is already using this item.
|
|
}
|
|
else if (from.Flying)
|
|
{
|
|
from.SendLocalizedMessage(1116615); // You cannot pilot a ship while flying!
|
|
}
|
|
else if (from.Mounted && !(mount is BoatMountItem))
|
|
{
|
|
from.SendLocalizedMessage(1010097); // You cannot use this while mounted or flying.
|
|
}
|
|
else if (Pilot == null && Galleon.Scuttled)
|
|
{
|
|
from.SendLocalizedMessage(1116725); // This ship is too damaged to sail!
|
|
}
|
|
else if (Pilot != null)
|
|
{
|
|
if (from != Pilot) // High authorized player takes control of the ship
|
|
{
|
|
boat.RemovePilot(from);
|
|
boat.LockPilot(from);
|
|
}
|
|
else
|
|
{
|
|
boat.RemovePilot(from);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
boat.LockPilot(from);
|
|
}
|
|
}
|
|
|
|
public ShipWheel(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)
|
|
{
|
|
reader.ReadItem();
|
|
}
|
|
}
|
|
}
|
|
}
|