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();
}
}
}