Files
abysmal-isle/Scripts/Services/Expansions/High Seas/Multis/ShipWheel.cs
Unstable Kitsune b918192e4e Overwrite
Complete Overwrite of the Folder with the free shard. ServUO 57.3 has been added.
2023-11-28 23:20:26 -05:00

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();
}
}
}
}