using Server.Items; using System; using System.Collections.Generic; namespace Server.Engines.Quests { public class Neville : BaseEscort { public static void Initialize() { Spawn(); } public static Point3D HomeLocation => new Point3D(1150, 964, -42); public static int HomeRange => 5; public override Type[] Quests => new Type[] { typeof(EscortToDugan) }; private DateTime m_TalkTime; public static List<Neville> Instances { get; set; } readonly string[] NevilleSay = new string[] { "Save Us", "Murder is being done!", "Protect me!", "a scoundrel is committing murder!", "Where are the guards! Help!", "Make haste", "Tisawful! Death! Ah!" }; [Constructable] public Neville() : base() { Name = "Neville Brightwhistle"; SpeechHue = 0x3B2; if (Instances == null) Instances = new List<Neville>(); Instances.Add(this); } public Neville(Serial serial) : base(serial) { } public override bool CanBeDamaged() { return false; } public override void Advertise() { Say(1095004); // Please help me, where am I? } public override void OnThink() { if (DateTime.UtcNow >= m_TalkTime) { if (!Alive || Deleted || ControlMaster == null) { return; } if (!ControlMaster.Hidden && ControlMaster.Aggressors.Count > 0) { SayRandom(NevilleSay, this); m_TalkTime = DateTime.UtcNow + TimeSpan.FromSeconds(Utility.RandomMinMax(20, 30)); } } base.OnThink(); } private void SayRandom(string[] say, Mobile m) { m.Say(say[Utility.Random(say.Length)]); } public override void OnAfterDelete() { } public override void OnDelete() { if (Instances != null && Instances.Contains(this)) Instances.Remove(this); Timer.DelayCall(TimeSpan.FromSeconds(3), delegate { Spawn(); }); base.OnDelete(); } public static void Spawn() { if (Instances != null && Instances.Count > 0) return; Neville creature = new Neville { Home = HomeLocation, RangeHome = HomeRange }; creature.MoveToWorld(HomeLocation, Map.TerMur); } public override void InitBody() { InitStats(100, 100, 25); Female = false; Race = Race.Human; Hue = Race.RandomSkinHue(); HairItemID = Race.RandomHair(false); HairHue = Race.RandomHairHue(); } public override void InitOutfit() { SetWearable(new Backpack()); SetWearable(new Shoes(0x70A)); SetWearable(new LongPants(0x1BB)); SetWearable(new FancyShirt(0x588)); } 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(); if (Instances == null) Instances = new List<Neville>(); Instances.Add(this); } } }