ModernUO/Scripts/Engines/Factions/Items/JoinStone.cs

79 lines
No EOL
1.8 KiB
C#

using Server.Mobiles;
using Server.Network;
namespace Server.Factions
{
public class JoinStone : BaseSystemController
{
private Faction m_Faction;
[Constructible]
public JoinStone() : this(null)
{
}
[Constructible]
public JoinStone(Faction faction) : base(0xEDC)
{
Movable = false;
Faction = faction;
}
public JoinStone(Serial serial) : base(serial)
{
}
[CommandProperty(AccessLevel.Counselor, AccessLevel.Administrator)]
public Faction Faction
{
get => m_Faction;
set
{
m_Faction = value;
Hue = m_Faction?.Definition.HueJoin ?? 0;
AssignName(m_Faction?.Definition.SignupName);
}
}
public override string DefaultName => "faction signup stone";
public override void OnDoubleClick(Mobile from)
{
if (m_Faction == null)
return;
if (!from.InRange(GetWorldLocation(), 2))
from.LocalOverheadMessage(MessageType.Regular, 0x3B2, 1019045); // I can't reach that.
else if (FactionGump.Exists(from))
from.SendLocalizedMessage(1042160); // You already have a faction menu open.
else if (Faction.Find(from) == null && from is PlayerMobile mobile)
mobile.SendGump(new JoinStoneGump(mobile, m_Faction));
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
Faction.WriteReference(writer, m_Faction);
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
switch (version)
{
case 0:
{
Faction = Faction.ReadReference(reader);
break;
}
}
}
}
}