using System; using Server.Engines.PartySystem; namespace Server.Items { public class MoonstoneGate : Moongate { private Mobile m_Caster; public MoonstoneGate(Point3D loc, Map map, Map targetMap, Mobile caster, int hue) : base(loc, targetMap) { MoveToWorld(loc, map); Dispellable = false; Hue = hue; m_Caster = caster; new InternalTimer(this).Start(); Effects.PlaySound(loc, map, 0x20E); } public MoonstoneGate(Serial serial) : base(serial) { } public override void CheckGate(Mobile m, int range) { if (m.Kills >= 5) return; Party casterParty = Party.Get(m_Caster); Party userParty = Party.Get(m); if (m == m_Caster || casterParty != null && userParty == casterParty) base.CheckGate(m, range); } public override void UseGate(Mobile m) { if (m.Kills >= 5) return; Party casterParty = Party.Get(m_Caster); Party userParty = Party.Get(m); if (m == m_Caster || casterParty != null && userParty == casterParty) base.UseGate(m); } public override void Serialize(GenericWriter writer) { base.Serialize(writer); writer.Write(0); // version } public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); Delete(); } private class InternalTimer : Timer { private Item m_Item; public InternalTimer(Item item) : base(TimeSpan.FromSeconds(30.0)) { m_Item = item; Priority = TimerPriority.OneSecond; } protected override void OnTick() { m_Item.Delete(); } } } }