using System; using Server.Items; using Server.Mobiles; using System.Collections.Generic; using Server.Gumps; namespace Server.Engines.Quests { public class HumilityShrinePersistence : Item { public static void Initialize() { if (Core.ML) { if (m_TramInstance == null) { m_TramInstance = new HumilityShrinePersistence(); m_TramInstance.MoveToWorld(new Point3D(4270, 3698, 0), Map.Trammel); SetupMobiles(); } if (m_FelInstance == null) { m_FelInstance = new HumilityShrinePersistence(); m_FelInstance.MoveToWorld(new Point3D(4270, 3698, 0), Map.Felucca); } } } private static HumilityShrinePersistence m_TramInstance; private static HumilityShrinePersistence m_FelInstance; [Constructable] public HumilityShrinePersistence() : base(219) { Movable = false; } private Rectangle2D m_Rec = new Rectangle2D(4273, 3696, 2, 2); public override bool HandlesOnMovement { get { return true; } } public override void OnMovement(Mobile m, Point3D oldLocation) { if (m is PlayerMobile && m_Rec.Contains(m) && m.Backpack != null) { Item item = m.Backpack.FindItemByType(typeof(GreyCloak)); if (item == null) item = m.FindItemOnLayer(Layer.Cloak); if (item != null && item is GreyCloak && ((GreyCloak)item).Owner == m) { m.SendLocalizedMessage(1075897); // As you near the shrine a strange energy envelops you. Suddenly, your cloak is transformed into the Cloak of Humility! m.Backpack.DropItem(new HumilityCloak()); item.Delete(); } } } public HumilityShrinePersistence(Serial serial) : base(serial) { } public override void Serialize(GenericWriter writer) { base.Serialize(writer); writer.Write((int)0); // version } public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); if (Map == Map.Trammel) m_TramInstance = this; else m_FelInstance = this; } public static void SetupMobiles() { BaseCreature next = new Gareth(); next.MoveToWorld(new Point3D(2023, 2841, 20), Map.Trammel); next.Home = next.Location; next.RangeHome = 5; next = new Gareth(); next.MoveToWorld(new Point3D(2023, 2841, 20), Map.Felucca); next.Home = next.Location; next.RangeHome = 5; next = new Dierdre(); next.MoveToWorld(new Point3D(1442, 1600, 20), Map.Felucca); next.Home = next.Location; next.RangeHome = 40; next = new Jason(); next.MoveToWorld(new Point3D(610, 2197, 0), Siege.SiegeShard ? Map.Felucca : Map.Trammel); next.Home = next.Location; next.RangeHome = 40; next = new Kevin(); next.MoveToWorld(new Point3D(2464, 439, 15), Siege.SiegeShard ? Map.Felucca : Map.Trammel); next.Home = next.Location; next.RangeHome = 40; next = new Maribel(); next.MoveToWorld(new Point3D(1443, 1701, 0), Siege.SiegeShard ? Map.Felucca : Map.Trammel); next.Home = next.Location; next.RangeHome = 40; next = new Nelson(); next.MoveToWorld(new Point3D(3441, 2623, 36), Siege.SiegeShard ? Map.Felucca : Map.Trammel); next.Home = next.Location; next.RangeHome = 40; next = new Sean(); next.MoveToWorld(new Point3D(2442, 471, 15), Map.Felucca); next.Home = next.Location; next.RangeHome = 40; next = new Walton(); next.MoveToWorld(new Point3D(610, 2197, 0), Map.Felucca); next.Home = next.Location; next.RangeHome = 40; } } }