Files
abysmal-isle/Scripts/Services/Expansions/High Seas/Items/Cannons and Ammo/CannonDeed.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

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