using System;
using Server.Items;

namespace Server.Engines.Quests
{ 
    public class NecessitysMotherQuest : BaseQuest
    { 
        public NecessitysMotherQuest()
            : base()
        { 
            AddObjective(new ObtainObjective(typeof(TinkerTools), "tinker's tools", 10, 0x1EB8));
			
            AddReward(new BaseReward(typeof(TinkersCraftsmanSatchel), 1074282));
        }

        /* Necessity's Mother */
        public override object Title
        {
            get
            {
                return 1073906;
            }
        }
        /* What a thing, this human need to tinker. It seems there is no end to what might be produced with a set of 
        Tinker's Tools. Who knows what an elf might build with some? Could you obtain some tinker's tools and bring 
        them to me? In exchange, I offer you elven lore and knowledge.  */
        public override object Description
        {
            get
            {
                return 1074096;
            }
        }
        /* I will patiently await your reconsideration. */
        public override object Refuse
        {
            get
            {
                return 1073921;
            }
        }
        /* I will be in your debt if you bring me tinker's tools. */
        public override object Uncomplete
        {
            get
            {
                return 1073952;
            }
        }
        /* Now, I shall see what an elf can invent! */
        public override object Complete
        {
            get
            {
                return 1073977;
            }
        }
        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 TickTockQuest : BaseQuest
    { 
        public TickTockQuest()
            : base()
        { 
            AddObjective(new ObtainObjective(typeof(Clock), "clock", 10, 0x104B));
			
            AddReward(new BaseReward(typeof(TinkersCraftsmanSatchel), 1074282));
        }

        /* Tick Tock */
        public override object Title
        {
            get
            {
                return 1073907;
            }
        }
        /* Elves find it remarkable the human preoccupation with the passage of time. To have built instruments to try and 
        capture time -- it is a fascinating notion. I would like to see how a clock is put together. Maybe you could provide 
        some clocks for my experimentation? */
        public override object Description
        {
            get
            {
                return 1074097;
            }
        }
        /* I will patiently await your reconsideration. */
        public override object Refuse
        {
            get
            {
                return 1073921;
            }
        }
        /* I will be in your debt if you bring me clocks. */
        public override object Uncomplete
        {
            get
            {
                return 1073953;
            }
        }
        /* Enjoy my thanks for your service. */
        public override object Complete
        {
            get
            {
                return 1073978;
            }
        }
        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 ReptilianDentistQuest : BaseQuest
    { 
        public ReptilianDentistQuest()
            : base()
        { 
            AddObjective(new ObtainObjective(typeof(CoilsFang), "coil's fang", 1));

            AddReward(new BaseReward(typeof(AlchemistCraftsmanSatchel), 1074282));
        }

        /* Reptilian Dentist */
        public override object Title
        {
            get
            {
                return 1074280;
            }
        }
        /* I'm working on a striking necklace -- something really unique -- and I know just what I need to finish it up.  
        A huge fang!  Won't that catch the eye?  I would like to employ you to find me such an item, perhaps a snake would 
        make the ideal donor.  I'll make it worth your while, of course. */
        public override object Description
        {
            get
            {
                return 1074710;
            }
        }
        /* I understand.  I don't like snakes much either.  They're so creepy. */
        public override object Refuse
        {
            get
            {
                return 1074723;
            }
        }
        /* Those really big snakes like swamps, I've heard.  You might try the blighted grove. */
        public override object Uncomplete
        {
            get
            {
                return 1074722;
            }
        }
        /* Do you have it?  *gasp* What a tooth!  Here … I must get right to work. */
        public override object Complete
        {
            get
            {
                return 1074721;
            }
        }
        public override bool CanOffer()
        { 
            return MondainsLegacy.BlightedGrove;
        }

        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 Sleen : MondainQuester
    { 
        [Constructable]
        public Sleen()
            : base("Sleen", "the trinket weaver")
        { 
            SetSkill(SkillName.Meditation, 60.0, 83.0);
            SetSkill(SkillName.Focus, 60.0, 83.0);
        }

        public Sleen(Serial serial)
            : base(serial)
        {
        }

        public override Type[] Quests
        { 
            get
            {
                return new Type[] 
                {
                    typeof(ArchSupportQuest),
                    typeof(StopHarpingOnMeQuest),
                    typeof(TheFarEyeQuest),
                    typeof(NecessitysMotherQuest),
                    typeof(TickTockQuest),
                    typeof(FromTheGaultierCollectionQuest),
                    typeof(ReptilianDentistQuest)
                };
            }
        }
        public override void InitBody()
        {
            InitStats(100, 100, 25);
			
            Female = true;
            Race = Race.Elf;
			
            Hue = 0x83E6;
            HairItemID = 0x2FC0;
            HairHue = 0x386;
        }

        public override void InitOutfit()
        {
            AddItem(new ElvenBoots(0x901));
            AddItem(new FullApron(0x1BB));
            AddItem(new ShortPants(0x71));
            AddItem(new Cloak(0x73C));
            AddItem(new ElvenShirt());
            AddItem(new SmithHammer());
        }

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