using System; using Server.Items; using Server.Targeting; using Server.Mobiles; using System.Collections; using System.Collections.Generic; namespace Server.Engines.Quests { public class ShearingKnowledgeQuest : BaseQuest { public override QuestChain ChainID { get { return QuestChain.LaifemTheWeaver; } } public override Type NextQuest { get { return typeof(WeavingFriendshipsQuest); } } public override TimeSpan RestartDelay { get { return TimeSpan.FromMinutes(30); } } public override bool DoneOnce { get { return true; } } /*Shearing Knowledge */ public override object Title { get { return 1113245; } } /*Welcome to my little shop!

Don't you just love these beautiful carpet samples? * Look at these embroidery patterns! And the intricate knotwork! It was sure worth every * gold piece I paid to have these shipped from Vesper.

What's that? No, no, I'm * sorry, these aren't for sale! I'm working towards recreating each of these gorgeous * styles myself, you see, and just wanted to show my future customers what they might * one day expect! By the skies though, how do I even begin learning these new patterns? *

I know! If you help me get started, you could be one of my first customers! * Yes, that's it - I need to get into the mind of a Britannian crafter, so I need * Britannian wool! Real, natural wool, mind you, none of the cheap sort you see on the * vendors.

Maybe you could find some by shearing some of those... what do you * call them? Sherp? Sheeple? */ public override object Description { get { return 1113246; } } /*Oh no, really? I was hoping you could be one of my first patrons... */ public override object Refuse { get { return 1113251; } } /*Creatures in Ter Mur simply won't do! And the vendors? Horrible quality! You'll have *to visit Britannia and shear a few sheep by hand to obtain some authentic Britannian wool. */ public override object Uncomplete { get { return 1113252; } } /*Wow! Isn't this amazing? It's so soft, so pure - surely this is the key to my efforts!

* Laifem skillfully spins the wool into a beautiful ball of white yarn - before you know it, * she's staring down at her first attempt to weave a Britannian carpet */ public override object Complete { get { return 1113253; } } public ShearingKnowledgeQuest() : base() { AddObjective(new ObtainObjective(typeof(BritannianWool), "Britannian Wool", 10, 0xDF8)); AddReward(new BaseReward(1113256)); /*A step closer to having access to Laifem's inventory of decorative carpets. */ } 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 WeavingFriendshipsQuest : BaseQuest { public override QuestChain ChainID { get { return QuestChain.LaifemTheWeaver; } } public override Type NextQuest { get { return typeof(NewSpinQuest); } } public override TimeSpan RestartDelay { get { return TimeSpan.FromMinutes(30); } } public override bool DoneOnce { get { return true; } } /* Weaving Friendships */ public override object Title { get { return 1113254; } } /* Laifem stares down at the ruins of her first carpet weaving attempt

Hrm... I guess I thought * this would be a bit easier.

She reaches up and twists on her ear a little, obviously deep in * thought

You know... I think I need some professional assistance! There's a tailoring shop in * Vesper called, hrm, "The Spinning..." "The Spinning..." something or other. Sorry, I just don't have a head * for all those clever Britannian shop names.

*laughs*

I'm sure someone there could help, * do you think you could deliver a letter of introduction for me? */ public override object Description { get { return 1113255; } } /* But I'm so close! If I can just talk to the right people we'll be in business for sure! */ public override object Refuse { get { return 1113257; } } /* There should be a man, er, a human one at that, who owns a tailoring shop in Vesper. Maybe he can help me? */ public override object Uncomplete { get { return 1113258; } } /* A letter? From a Gargoyle you say? */ public override object Complete { get { return 1113259; } } public WeavingFriendshipsQuest() : base() { AddObjective(new DeliverObjective(typeof(LetterOfIntroduction), "Letter of Introduction", 1, typeof(Dermott), "Dermott (Vesper)")); AddReward(new BaseReward(1113256)); // A step closer to having access to Laifem's inventory of decorative carpets. } 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 NewSpinQuest : BaseQuest { public override QuestChain ChainID { get { return QuestChain.LaifemTheWeaver; } } public override TimeSpan RestartDelay { get { return TimeSpan.FromMinutes(30); } } public override bool DoneOnce { get { return true; } } /* A New Spin on Things */ public override object Title { get { return 1113260; } } /* Oh my! Now isn't this something? A Gargoyle seeking to master the ways of our humble little industry. * Why, this is nothing short of inspirational!

I think I have just the thing for him. There's a * book over... oh! It's a her? My apologies, I just don't have a knack for those Gargish names you know! *

Regardless, please take this back to the young lady, if you would be so kind.

Best regards! */ public override object Description { get { return 1113261; } } /* Oh dear, truly? I'm sure she'd be very pleased to have this, and I don't have the means to journey there * myself.

How very, very unfortunate... */ public override object Refuse { get { return 1113262; } } /* Dermott wishes you to deliver the book "Mastering the Art of Weaving" to Laifem so she learn the ways of * Britannian weaving. */ public override object Uncomplete { get { return 1113263; } } /* This is perfect! Thank you so, so much!

Laifem eagerly begins reading the book while pacing about * the room

Yes, yes I see. *nods* And the loops are done in a... with mohair knots... * *her fingers begin weaving idly in the air as she thinks* and then to finish off the tassels I just... *

This is everything I need to begin weaving my very own decorative carpets. You see, I won't just make * the larger carpets, I'm going to make them in smaller pieces that can be put together to make any size or * combination! Isn't that wonderful? */ public override object Complete { get { return 1113264; } } public NewSpinQuest() : base() { AddObjective(new DeliverObjective(typeof(MasteringWeaving), "Mastering the Art of Weaving", 1, typeof(Laifem), "Laifem (Royal City)")); AddReward(new BaseReward(1113250)); // Access to Laifem's inventory of decorative carpets. } public override void GiveRewards() { base.GiveRewards(); Owner.SendLocalizedMessage(1113265, "", 0x2A); // You have succeeded in aiding Laifem's attempts to master Britannian weaving, and can now access her inventory of decorative carpets! Owner.CanBuyCarpets = true; } 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 Laifem : MondainQuester { public override bool IsActiveVendor { get { return true; } } public override void InitSBInfo() { m_SBInfos.Add(new SBCarpets()); } [Constructable] public Laifem() : base("Laifem", "the Weaver") { } public Laifem(Serial serial) : base(serial) { } public override void VendorBuy(Mobile from) { if (!(from is PlayerMobile) || !((PlayerMobile)from).CanBuyCarpets) { SayTo(from, 1113266); // I'm sorry, but I don't have any carpets to sell you yet. return; } base.VendorBuy(from); } public override void Advertise() { } private static Type[] m_Quests = new Type[] { typeof(ShearingKnowledgeQuest) }; public override Type[] Quests { get { return m_Quests; } } public override void InitBody() { InitStats(100, 100, 25); Female = true; CantWalk = true; Race = Race.Gargoyle; HairItemID = Race.RandomHair(true); Hue = Race.RandomSkinHue(); HairHue = Race.RandomHairHue(); } public override void InitOutfit() { AddItem(new Backpack()); AddItem(new GargishClothChest(Utility.RandomNeutralHue())); AddItem(new GargishClothKilt(Utility.RandomNeutralHue())); AddItem(new GargishClothLegs(Utility.RandomNeutralHue())); } 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 Dermott : MondainQuester { public override Type[] Quests { get { return null; } } [Constructable] public Dermott() : base("Dermott", "the Weaver") { SetSkill(SkillName.Magery, 60.0, 90.0); SetSkill(SkillName.EvalInt, 60.0, 90.0); SetSkill(SkillName.MagicResist, 60.0, 90.0); SetSkill(SkillName.Wrestling, 60.0, 90.0); SetSkill(SkillName.Meditation, 60.0, 90.0); } public Dermott(Serial serial) : base(serial) { } public override void InitBody() { InitStats(100, 100, 25); Female = false; Race = Race.Human; Hue = 0x83FC; HairItemID = 0x2049; // Pig Tails HairHue = 0x459; FacialHairItemID = 0x2041; // Mustache FacialHairHue = 0x459; } public override void InitOutfit() { AddItem(new Backpack()); AddItem(new ThighBoots(0x901)); AddItem(new ShortPants(0x730)); AddItem(new Shirt(0x1BB)); } 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(); } } }