using System; using Server; using Server.Engines.MLQuests.Objectives; using Server.Engines.MLQuests.Rewards; using Server.Items; using Server.Mobiles; namespace Server.Engines.MLQuests.Definitions { public class Responsibility : BaseEscort { public Responsibility() { Activated = true; Title = 1074352; // Responsibility Description = 1074524; // Oh! I just don't know what to do. My mother is away and my father told me not to talk to strangers ... *worried frown* But my grandfather has sent word that he has been hurt and needs me to tend his wounds. He has a small farm southeast of here. Would you ... could you ... escort me there safely? RefusalMessage = 1074525; // I hope my grandfather will be alright. InProgressMessage = 1074526; // Grandfather's farm is a ways west of the Shrine of Spirituality. So, we're not quite there yet. Thank you again for keeping me safe. Objectives.Add( new EscortObjective( new QuestArea( 1074781, "Sheep Farm" ) ) ); // Sheep Farm Rewards.Add( ItemReward.BagOfTrinkets ); } // OSI sends this instead, but it doesn't make sense for an escortable //public override void OnComplete( MLQuestInstance instance ) //{ // instance.Player.SendLocalizedMessage( 1073775, "", 0x23 ); // Your quest is complete. Return for your reward. //} public override void Generate() { base.Generate(); PutSpawner( new Spawner( 1, TimeSpan.FromSeconds( 10 ), TimeSpan.FromSeconds( 30 ), 0, 5, "Lissbet" ), new Point3D( 1568, 1040, -7 ), Map.Ilshenar ); PutSpawner( new Spawner( 1, 5, 10, 0, 8, "GrandpaCharley" ), new Point3D( 1322, 1331, -14 ), Map.Ilshenar ); PutSpawner( new Spawner( 1, TimeSpan.FromSeconds( 10 ), TimeSpan.FromSeconds( 30 ), 0, 3, "Sheep" ), new Point3D( 1308, 1324, -14 ), Map.Ilshenar ); } } public class SomethingToWailAbout : MLQuest { public SomethingToWailAbout() { Activated = true; Title = 1073071; // Something to Wail About Description = 1073561; // Can you hear them? The never-ending howling? The incessant wailing? These banshees, they never cease! Never! They haunt my nights. Please, I beg you -- will you silence them? I would be ever so grateful. RefusalMessage = 1073580; // I hope you'll reconsider. Until then, farwell. InProgressMessage = 1073581; // Until you kill 12 Wailing Banshees, there will be no peace. Objectives.Add( new KillObjective( 12, new Type[] { typeof( WailingBanshee ) }, "wailing banshees" ) ); Rewards.Add( ItemReward.BagOfTreasure ); } public override void Generate() { base.Generate(); PutSpawner( new Spawner( 1, 5, 10, 0, 4, "Jelrice" ), new Point3D( 1176, 1196, -25 ), Map.Ilshenar ); } } public class Runaways : MLQuest { public Runaways() { Activated = true; Title = 1072993; // Runaways! Description = 1073026; // You've got to help me out! Those wild ostards have been causing absolute havok around here. Kill them off before they destroy my land. There are around twelve of them. RefusalMessage = 1072270; // Well, okay. But if you decide you are up for it after all, c'mon back and see me. InProgressMessage = 1072271; // You're not quite done yet. Get back to work! Objectives.Add( new KillObjective( 12, new Type[] { typeof( FrenziedOstard ) }, "frenzied ostards" ) ); Rewards.Add( ItemReward.BagOfTrinkets ); } } public class ViciousPredator : MLQuest { public ViciousPredator() { Activated = true; Title = 1072994; // Vicious Predator Description = 1073028; // You've got to help me out! Those dire wolves have been causing absolute havok around here. Kill them off before they destroy my land. They run around in a pack of around ten. RefusalMessage = 1072270; // Well, okay. But if you decide you are up for it after all, c'mon back and see me. InProgressMessage = 1072271; // You're not quite done yet. Get back to work! Objectives.Add( new KillObjective( 10, new Type[] { typeof( DireWolf ) }, "dire wolves" ) ); Rewards.Add( ItemReward.BagOfTrinkets ); } } public class GuileIrkAndSpite : MLQuest { public GuileIrkAndSpite() { Activated = true; Title = 1074739; // Guile, Irk and Spite Description = 1074740; // You know them, don't you. The three? They look like you, you'll see. They looked like me, I remember, they looked like, well, you'll see. The three. They'll drive you mad too, if you let them. They are trouble, and they need to be slain. Seek them out. RefusalMessage = 1074745; // You just don't understand the gravity of the situation. If you did, you'd agree to my task. InProgressMessage = 1074746; // Perhaps I was unclear. You'll know them when you see them, because you'll see you, and you, and you. Hurry now. CompletionMessage = 1074747; // Are you one of THEM? Ahhhh! Oh, wait, if you were them, then you'd be me. So you're -- you. Good job! Objectives.Add( new KillObjective( 1, new Type[] { typeof( Guile ) }, "Guile" ) ); Objectives.Add( new KillObjective( 1, new Type[] { typeof( Irk ) }, "Irk" ) ); Objectives.Add( new KillObjective( 1, new Type[] { typeof( Spite ) }, "Spite" ) ); Rewards.Add( ItemReward.Strongbox ); } public override void Generate() { base.Generate(); PutSpawner( new Spawner( 1, 5, 10, 0, 5, "Yorus" ), new Point3D( 1389, 423, -24 ), Map.Ilshenar ); } } public class Lissbet : BaseEscortable { public override bool StaticMLQuester { get { return true; } } public override bool InitialInnocent { get { return true; } } public override bool CanShout { get { return true; } } public override void Shout( PlayerMobile pm ) { MLQuestSystem.Tell( this, pm, Utility.RandomList( 1074204, // Greetings seeker.  I have an urgent matter for you, if you are willing. 1074222 // Could I trouble you for some assistance? ) ); } [Constructable] public Lissbet() { } public override void InitBody() { SetStr( 40, 50 ); SetDex( 70, 80 ); SetInt( 80, 90 ); Hue = Utility.RandomSkinHue(); Female = true; Body = 401; Name = "Lissbet"; Title = "the flower girl"; HairItemID = 0x203D; HairHue = 0x1BB; } public override void InitOutfit() { AddItem( new Kilt( Utility.RandomYellowHue() ) ); AddItem( new FancyShirt( Utility.RandomYellowHue() ) ); AddItem( new Sandals() ); } public Lissbet( 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(); } } public class GrandpaCharley : BaseCreature { public override bool IsInvulnerable { get { return true; } } public override bool CanTeach { get { return true; } } [Constructable] public GrandpaCharley() : base( AIType.AI_Vendor, FightMode.None, 2, 1, 0.5, 2 ) { Name = "Grandpa Charley"; Title = "the farmer"; Body = 400; Hue = Race.RandomSkinHue(); InitStats( 100, 100, 25 ); int hairHue = 0x3B2 + Utility.Random( 2 ); Utility.AssignRandomHair( this, hairHue ); FacialHairItemID = 0x203E; // Long Beard FacialHairHue = hairHue; SetSkill( SkillName.ItemID, 80, 90 ); AddItem( new WideBrimHat( Utility.RandomNondyedHue() ) ); AddItem( new FancyShirt( Utility.RandomNondyedHue() ) ); AddItem( new LongPants( Utility.RandomNondyedHue() ) ); AddItem( new Sandals( Utility.RandomNeutralHue() ) ); AddItem( new ShepherdsCrook() ); AddItem( new Backpack() ); } public GrandpaCharley( 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(); } } [QuesterName( "Jelrice (Ilshenar)" )] public class Jelrice : BaseCreature { public override bool IsInvulnerable { get { return true; } } public override bool CanShout { get { return true; } } public override void Shout( PlayerMobile pm ) { MLQuestSystem.Tell( this, pm, 1074221 ); // Greetings!  I have a small task for you good traveler. } [Constructable] public Jelrice() : base( AIType.AI_Vendor, FightMode.None, 2, 1, 0.5, 2 ) { Name = "Jelrice"; Title = "the trader"; Race = Race.Human; BodyValue = 0x191; Female = true; Hue = Race.RandomSkinHue(); InitStats( 100, 100, 25 ); Utility.AssignRandomHair( this, true ); AddItem( new Shoes( Utility.RandomNeutralHue() ) ); AddItem( new Skirt( Utility.RandomBlueHue() ) ); AddItem( new FancyShirt( Utility.RandomRedHue() ) ); } public Jelrice( 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(); } } [QuesterName( "Yorus (Ilshenar)" )] public class Yorus : BaseCreature { public override bool IsInvulnerable { get { return true; } } public override bool CanShout { get { return true; } } public override void Shout( PlayerMobile pm ) { MLQuestSystem.Tell( this, pm, 1074218 ); // Hey!  I want to talk to you, now. } [Constructable] public Yorus() : base( AIType.AI_Vendor, FightMode.None, 2, 1, 0.5, 2 ) { Name = "Yorus"; Title = "the tinker"; Race = Race.Human; BodyValue = 0x190; Female = false; Hue = Race.RandomSkinHue(); InitStats( 100, 100, 25 ); Utility.AssignRandomHair( this, true ); AddItem( new Shoes( Utility.RandomNeutralHue() ) ); AddItem( new LongPants( Utility.RandomBlueHue() ) ); AddItem( new FancyShirt( Utility.RandomOrangeHue() ) ); AddItem( new Cloak( Utility.RandomBrightHue() ) ); } public Yorus( 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(); } } }