using System; using Server; using Server.Gumps; using Server.Items; using Server.Mobiles; using Server.Engines.Quests; namespace Server.Engines.Khaldun { public class InspectorJasper : MondainQuester { public override Type[] Quests { get { return null; } } public static InspectorJasper TramInstance { get; set; } public static void Initialize() { if (Core.TOL) { if (TramInstance == null) { TramInstance = new InspectorJasper(); TramInstance.MoveToWorld(new Point3D(1675, 1584, 7), Map.Trammel); TramInstance.Direction = Direction.South; } } } public InspectorJasper() : base("Jasper", "the Inspector") { } public override void InitBody() { InitStats(100, 100, 25); Female = false; CantWalk = true; Race = Race.Elf; Hue = 33770; HairItemID = 0x2FCF; HairHue = Race.RandomHairHue(); } public override void InitOutfit() { AddItem(new Backpack()); SetWearable(new LongPants(), 1156); SetWearable(new FancyShirt()); SetWearable(new Epaulette(), 1156); SetWearable(new BodySash(), 1175); SetWearable(new Obi(), 1156); SetWearable(new Shoes(), 1910); } public override void OnDoubleClick(Mobile m) { if (m is PlayerMobile && m.InRange(Location, 5)) { GoingGumshoeQuest quest = QuestHelper.GetQuest((PlayerMobile)m); if (quest != null && quest.Completed) { quest.GiveRewards(); BaseQuest newquest = QuestHelper.RandomQuest((PlayerMobile)m, new Type[] { typeof(GoingGumshoeQuest2) }, this); if (newquest != null) m.SendGump(new MondainQuestGump(newquest)); } else { GoingGumshoeQuest2 quest2 = QuestHelper.GetQuest((PlayerMobile)m); if (quest2 != null) { if (quest2.IsComplete) { quest2.Objectives[0].CurProgress++; quest2.GiveRewards(); // TODO: Does this quest end here? BaseQuest newquest = QuestHelper.RandomQuest((PlayerMobile)m, new Type[] { typeof(GoingGumshoeQuest3) }, this); if (newquest != null) m.SendGump(new MondainQuestGump(newquest)); } else { m.SendGump(new MondainQuestGump(quest2, MondainQuestGump.Section.InProgress, false)); quest2.InProgress(); } } else { GoingGumshoeQuest3 quest3 = QuestHelper.GetQuest((PlayerMobile)m); if (quest3 != null) { if (quest3.IsComplete) { quest3.Objectives[0].CurProgress++; quest3.GiveRewards(); // TODO: Does this quest end here? BaseQuest newquest = QuestHelper.RandomQuest((PlayerMobile)m, new Type[] { typeof(GoingGumshoeQuest4) }, this); if (newquest != null) m.SendGump(new MondainQuestGump(newquest)); } else { m.SendGump(new MondainQuestGump(quest3, MondainQuestGump.Section.InProgress, false)); quest3.InProgress(); } } else { GoingGumshoeQuest4 quest4 = QuestHelper.GetQuest((PlayerMobile)m); if (quest4 != null && !quest4.IsComplete) { m.SendGump(new MondainQuestGump(quest4, MondainQuestGump.Section.InProgress, false)); quest4.InProgress(); } else if (quest4 == null) { SayTo(m, 1080107); // I'm sorry, I have nothing for you at this time. } } } } } } public override void OnMovement(Mobile m, Point3D oldLocation) { if (m is PlayerMobile && InLOS(m) && InRange(m.Location, 3) && !InRange(oldLocation, 3)) { var quest = QuestHelper.GetQuest((PlayerMobile)m); if (quest != null) { quest.Objectives[0].CurProgress++; quest.OnCompleted(); } else { var quest2 = QuestHelper.GetQuest((PlayerMobile)m); if (quest2 != null && quest2.IsComplete) { quest2.Objectives[0].CurProgress++; m.SendGump(new InternalGump()); m.PlaySound(quest2.CompleteSound); quest2.GiveRewards(); } } } } private class InternalGump : Gump { public InternalGump() : base(50, 50) { AddBackground(0, 0, 400, 600, 9300); AddImage(58, 30, 1745); AddHtmlLocalized(0, 340, 400, 20, 1154645, "#1158625", 0x0, false, false); // It all comes together... AddHtmlLocalized(5, 365, 390, 200, 1158626, BaseGump.C32216(0x0D0D0D), false, true); /**You approach Inspector Jasper and relay to him what Sage Humbolt told you...he remains expressionless* * This is much more sinister than any of us could have ever imagined. I had little doubt your investigatory * skills would yield anything but a major revelation - but this? Who could have thought. I have dispatched * a team to the location Sage Humbolt spoke of. It is up to everyone now to prevent this coming evil. Here * you go, you've earned this. Wear this title proudly. This official credential identifies you as a member * of the RBG Detective Branch and will allow you past the guards at the site Sage Humbolt spoke of near * 57o 7'S, 5o 20'E in the Lost Lands.*/ } } public InspectorJasper(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) { TramInstance = this; } if (!Core.TOL) Delete(); } } }