using System;
using Server;
using Server.Items;
using Server.Mobiles;

namespace Server.Engines.Quests
{
	public class TappingTheKegQuest : BaseQuest
	{				
		/* Tapping the Keg */
		public override object Title{ get{ return 1074037; } }
		
		/* I have acquired a barrel of human brewed beer. I am loathe to drink it, but how else to prove how 
		inferior it is? I suppose I shall need a barrel tap to drink. Go, bring me a barrel tap quickly, so 
		I might get this over with. */	
		public override object Description{ get{ return 1074131; } }
		
		/* Fine then, I'm shall find another to run my errands then. */
		public override object Refuse{ get{ return 1074063; } }
		
		/* Hurry up! I don't have all day to wait for you to bring what I desire! */
		public override object Uncomplete{ get{ return 1074064; } }
		
		/* These human made goods are laughable! It offends so -- I must show you what elven skill is capable of! */
		public override object Complete{ get{ return 1074065; } }
	
		public TappingTheKegQuest() : base()
		{			
			AddObjective( new ObtainObjective( typeof( BarrelTap ), "barrel taps", 10, 0x1004 ) );
			
			AddReward( new BaseReward( typeof( TinkersCraftsmanSatchel ), 1074282 ) );
		}
		
		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 BreezesSongQuest : BaseQuest
	{				
		/* Breeze's Song */
		public override object Title{ get{ return 1074052; } }
		
		/* I understand humans cruely enslave the very wind to their selfish whims! Fancy wind chimes, what a monstrous 
		idea! You must bring me proof of this terrible depredation - hurry, bring me wind chimes! */	
		public override object Description{ get{ return 1074146; } }
		
		/* Fine then, I'm shall find another to run my errands then. */
		public override object Refuse{ get{ return 1074063; } }
		
		/* Hurry up! I don't have all day to wait for you to bring what I desire! */
		public override object Uncomplete{ get{ return 1074064; } }
		
		/* These human made goods are laughable! It offends so -- I must show you what elven skill is capable of! */
		public override object Complete{ get{ return 1074065; } }
	
		public BreezesSongQuest() : base()
		{			
			AddObjective( new ObtainObjective( typeof( FancyWindChimes ), "fancy wind chimes", 10, 0x2833 ) );
			
			AddReward( new BaseReward( typeof( TinkersCraftsmanSatchel ), 1074282 ) );
		}
		
		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 WaitingToBeFilledQuest : BaseQuest
	{				
		/* Waiting to be Filled */
		public override object Title{ get{ return 1074036; } }
		
		/* The only good thing I can say about human made bottles is that they are empty and may yet still be filled 
		with elven wine. Go now, fetch a number of empty bottles so that I might save them from the fate of carrying 
		human-made wine. */	
		public override object Description{ get{ return 1074130; } }
		
		/* Fine then, I'm shall find another to run my errands then. */
		public override object Refuse{ get{ return 1074063; } }
		
		/* Hurry up! I don't have all day to wait for you to bring what I desire! */
		public override object Uncomplete{ get{ return 1074064; } }
		
		/* These human made goods are laughable! It offends so -- I must show you what elven skill is capable of! */
		public override object Complete{ get{ return 1074065; } }
	
		public WaitingToBeFilledQuest() : base()
		{			
			AddObjective( new ObtainObjective( typeof( Bottle ), "empty bottles", 20, 0xF0E ) );
			
			AddReward( new BaseReward( typeof( TinkersCraftsmanSatchel ), 1074282 ) );
		}
		
		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 Dallid : MondainQuester
	{
		public override Type[] Quests
		{ 
			get{ return new Type[] 
			{ 
				typeof( TappingTheKegQuest ),
				typeof( BreezesSongQuest ),
				typeof( WaitingToBeFilledQuest ),
				typeof( MougGuurMustDieQuest )
			};} 
		}
		
		[Constructable]
		public Dallid() : base( "Dallid", "the cook" )
		{			
		}
		
		public Dallid( Serial serial ) : base( serial )
		{
		}
		
		public override void InitBody()
		{
			InitStats( 100, 100, 25 );
			
			Female = false;
			CantWalk = true;
			Race = Race.Elf;
			
			Hue = 0x8376;
			HairItemID = 0x2FCD;
			HairHue = 0x100;
		}
		
		public override void InitOutfit()
		{
			AddItem( new Boots( 0x901 ) );
			AddItem( new ShortPants( 0x733 ) );
			AddItem( new Shirt( 0x70E ) );
			AddItem( new FullApron( 0x1BE ) );
			AddItem( new Cleaver() );
		}
		
		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();
		}
	}
}