using System; using System.Collections.Generic; using Server.Items; namespace Server.Engines.Quests { public class KodarsRescueQuest : BaseQuest { public override bool DoneOnce { get { return true; } } public KodarsRescueQuest() : base() { AddObjective(new EscortObjective(1074780, "Paroxysmus Exit")); // Palace Entrance AddReward(new BaseReward(typeof(LargeTreasureBag), "A large bag of treasure.")); } /* Kodar's Rescue */ public override object Title { get { return 1073066; } } /* Please, please I beg of you ... help out of here. I was trying to find one of my sheep that went missing and I fell down this hole. Then these ... *hysterical weeping*. Please, get me out of here! */ public override object Description { get { return 1074704; } } /* Please! PLEASE! Don't let me die here. */ public override object Refuse { get { return 1074705; } } /* *whimper* Please ... hurry. I am a good climber and could get out the way you came in, if you can just get me there. */ public override object Uncomplete { get { return 1074706; } } /* You've saved my life! Oh thank you! I can't repay you for your kindness but please, take */ public override object Complete { get { return 1074707; } } 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(); } } public class Kodar : BaseEscort { public static void Initialize() { if (Core.ML) Spawn(); } public static Point3D HomeLocation { get { return new Point3D(6311, 449, -50); } } public static int HomeRange { get { return 5; } } public override Type[] Quests { get { return new Type[] { typeof(KodarsRescueQuest) }; } } public static List FelInstances { get; set; } public static List TramInstances { get; set; } [Constructable] public Kodar() : base() { Name = "Kodar"; Title = "the lost villager"; } public Kodar(Serial serial) : base(serial) { } public override void Advertise() { Say(1074202); // It’s you!   I’m saved, you are just in time. } public override void OnDelete() { if (Map == Map.Felucca && FelInstances != null && FelInstances.Contains(this)) { FelInstances.Remove(this); FelInstances = null; } if (Map == Map.Trammel && TramInstances != null && TramInstances.Contains(this)) { TramInstances.Remove(this); TramInstances = null; } Timer.DelayCall(TimeSpan.FromSeconds(3), new TimerCallback( delegate { Spawn(); })); base.OnDelete(); } public static void Spawn() { if (FelInstances == null) { Kodar creature = new Kodar(); creature.Home = HomeLocation; creature.RangeHome = HomeRange; creature.MoveToWorld(HomeLocation, Map.Felucca); FelInstances = new List(); FelInstances.Add(creature); } if (TramInstances == null) { Kodar creature = new Kodar(); creature.Home = HomeLocation; creature.RangeHome = HomeRange; creature.MoveToWorld(HomeLocation, Map.Trammel); TramInstances = new List(); TramInstances.Add(creature); } } public override void InitBody() { InitStats(100, 100, 25); Female = false; Race = Race.Human; Hue = 33790; FacialHairItemID = 0x204D; FacialHairHue = 1102; HairItemID = 0x204A; HairHue = 1102; } public override void InitOutfit() { SetWearable(new LongPants(1727)); SetWearable(new FancyShirt()); SetWearable(new ThighBoots()); } 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.Felucca && FelInstances == null) { FelInstances = new List(); FelInstances.Add(this); } if (Map == Map.Trammel && TramInstances == null) { TramInstances = new List(); TramInstances.Add(this); } } } }