222 lines
5.9 KiB
C#
222 lines
5.9 KiB
C#
using Server;
|
|
using System;
|
|
using Server.Multis;
|
|
using Server.Mobiles;
|
|
using Server.Targeting;
|
|
|
|
namespace Server.Items
|
|
{
|
|
public enum CannonPower
|
|
{
|
|
Light,
|
|
Heavy,
|
|
Massive,
|
|
Pumpkin
|
|
}
|
|
|
|
public abstract class ShipCannonDeed : Item
|
|
{
|
|
public abstract CannonPower CannonType { get; }
|
|
|
|
public ShipCannonDeed() : base(5362)
|
|
{
|
|
}
|
|
|
|
public override void OnDoubleClick(Mobile from)
|
|
{
|
|
if (IsChildOf(from.Backpack))
|
|
{
|
|
BaseGalleon galleon = BaseGalleon.FindGalleonAt(from, from.Map);
|
|
|
|
if (galleon != null)
|
|
{
|
|
if (galleon.Owner == from)
|
|
{
|
|
from.Target = new InternalTarget(this, galleon);
|
|
}
|
|
else
|
|
{
|
|
from.SendLocalizedMessage(1116627); // You must be the owner of the ship to do this.
|
|
}
|
|
}
|
|
else
|
|
from.SendLocalizedMessage(1116625); //You must be on the ship to deploy a weapon.
|
|
}
|
|
}
|
|
|
|
private class InternalTarget : Target
|
|
{
|
|
public ShipCannonDeed Deed { get; set; }
|
|
public BaseGalleon Galleon { get; set; }
|
|
|
|
public InternalTarget(ShipCannonDeed deed, BaseGalleon galleon)
|
|
: base(2, false, TargetFlags.None)
|
|
{
|
|
Deed = deed;
|
|
Galleon = galleon;
|
|
}
|
|
|
|
protected override void OnTarget(Mobile from, object targeted)
|
|
{
|
|
Map map = from.Map;
|
|
|
|
if (targeted is IPoint3D)
|
|
{
|
|
Point3D pnt = new Point3D((IPoint3D)targeted);
|
|
|
|
var galleon = BaseGalleon.FindGalleonAt(new Point2D(pnt.X, pnt.Y), map);
|
|
|
|
if (galleon != null && Galleon == galleon)
|
|
{
|
|
galleon.TryAddCannon(from, pnt, Deed);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
public ShipCannonDeed(Serial serial) : base(serial) { }
|
|
|
|
public override void Serialize(GenericWriter writer)
|
|
{
|
|
base.Serialize(writer);
|
|
writer.Write((int)0);
|
|
}
|
|
|
|
public override void Deserialize(GenericReader reader)
|
|
{
|
|
base.Deserialize(reader);
|
|
int version = reader.ReadInt();
|
|
}
|
|
}
|
|
|
|
public class CulverinDeed : ShipCannonDeed
|
|
{
|
|
public override CannonPower CannonType { get { return CannonPower.Light; } }
|
|
public override int LabelNumber { get { return 1095793; } }
|
|
|
|
[Constructable]
|
|
public CulverinDeed()
|
|
{
|
|
Hue = 1117;
|
|
}
|
|
|
|
public CulverinDeed(Serial serial) : base(serial) { }
|
|
|
|
public override void Serialize(GenericWriter writer)
|
|
{
|
|
base.Serialize(writer);
|
|
writer.Write((int)0);
|
|
}
|
|
|
|
public override void Deserialize(GenericReader reader)
|
|
{
|
|
base.Deserialize(reader);
|
|
int version = reader.ReadInt();
|
|
}
|
|
}
|
|
|
|
public class CarronadeDeed : ShipCannonDeed
|
|
{
|
|
public override CannonPower CannonType { get { return CannonPower.Heavy; } }
|
|
public override int LabelNumber { get { return 1095794; } }
|
|
|
|
[Constructable]
|
|
public CarronadeDeed()
|
|
{
|
|
Hue = 1118;
|
|
}
|
|
|
|
public CarronadeDeed(Serial serial) : base(serial) { }
|
|
|
|
public override void Serialize(GenericWriter writer)
|
|
{
|
|
base.Serialize(writer);
|
|
writer.Write((int)0);
|
|
}
|
|
|
|
public override void Deserialize(GenericReader reader)
|
|
{
|
|
base.Deserialize(reader);
|
|
int version = reader.ReadInt();
|
|
}
|
|
}
|
|
|
|
public class BlundercannonDeed : ShipCannonDeed
|
|
{
|
|
public override CannonPower CannonType { get { return CannonPower.Massive; } }
|
|
public override int LabelNumber { get { return 1095794; } }
|
|
|
|
[Constructable]
|
|
public BlundercannonDeed()
|
|
{
|
|
Hue = 1126;
|
|
}
|
|
|
|
public BlundercannonDeed(Serial serial) : base(serial) { }
|
|
|
|
public override void Serialize(GenericWriter writer)
|
|
{
|
|
base.Serialize(writer);
|
|
writer.Write((int)0);
|
|
}
|
|
|
|
public override void Deserialize(GenericReader reader)
|
|
{
|
|
base.Deserialize(reader);
|
|
int version = reader.ReadInt();
|
|
}
|
|
}
|
|
|
|
public class LightShipCannonDeed : ShipCannonDeed
|
|
{
|
|
public override CannonPower CannonType { get { return CannonPower.Light; } }
|
|
public override int LabelNumber { get { return 1095793; } }
|
|
|
|
[Constructable]
|
|
public LightShipCannonDeed()
|
|
{
|
|
Hue = 1117;
|
|
}
|
|
|
|
public LightShipCannonDeed(Serial serial) : base(serial) { }
|
|
|
|
public override void Serialize(GenericWriter writer)
|
|
{
|
|
base.Serialize(writer);
|
|
writer.Write((int)0);
|
|
}
|
|
|
|
public override void Deserialize(GenericReader reader)
|
|
{
|
|
base.Deserialize(reader);
|
|
int version = reader.ReadInt();
|
|
}
|
|
}
|
|
|
|
public class HeavyShipCannonDeed : ShipCannonDeed
|
|
{
|
|
public override CannonPower CannonType { get { return CannonPower.Heavy; } }
|
|
public override int LabelNumber { get { return 1095794; } }
|
|
|
|
[Constructable]
|
|
public HeavyShipCannonDeed()
|
|
{
|
|
Hue = 1118;
|
|
}
|
|
|
|
public HeavyShipCannonDeed(Serial serial) : base(serial) { }
|
|
|
|
public override void Serialize(GenericWriter writer)
|
|
{
|
|
base.Serialize(writer);
|
|
writer.Write((int)0);
|
|
}
|
|
|
|
public override void Deserialize(GenericReader reader)
|
|
{
|
|
base.Deserialize(reader);
|
|
int version = reader.ReadInt();
|
|
}
|
|
}
|
|
}
|