ModernUO/Scripts/Engines/Quests/Haochi's Trials/Mobiles/Haochi.cs
2006-06-15 04:14:30 +00:00

182 lines
No EOL
4.1 KiB
C#

using System;
using Server;
using Server.Mobiles;
using Server.Gumps;
using Server.Items;
namespace Server.Engines.Quests.Samurai
{
public class Haochi : BaseQuester
{
[Constructable]
public Haochi() : base( "the Honorable Samurai Legend" )
{
}
public override void InitBody()
{
InitStats( 100, 100, 25 );
Hue = 0x8403;
Female = false;
Body = 0x190;
Name = "Daimyo Haochi";
}
public override void InitOutfit()
{
HairItemID = 0x204A;
HairHue = 0x901;
AddItem( new SamuraiTabi() );
AddItem( new JinBaori() );
AddItem( new PlateHaidate() );
AddItem( new StandardPlateKabuto() );
AddItem( new PlateMempo() );
AddItem( new PlateDo() );
AddItem( new PlateHiroSode() );
}
public override int GetAutoTalkRange( PlayerMobile pm )
{
return 2;
}
public override int TalkNumber{ get { return -1; } }
public override void OnTalk( PlayerMobile player, bool contextMenu )
{
QuestSystem qs = player.Quest;
if ( qs is HaochisTrialsQuest )
{
if ( HaochisTrialsQuest.HasLostHaochisKatana( player ) )
{
qs.AddConversation( new LostSwordConversation() );
return;
}
QuestObjective obj = qs.FindObjective( typeof( FindHaochiObjective ) );
if ( obj != null && !obj.Completed )
{
obj.Complete();
return;
}
obj = qs.FindObjective( typeof( FirstTrialReturnObjective ) );
if ( obj != null && !obj.Completed )
{
player.AddToBackpack( new LeatherDo() );
obj.Complete();
return;
}
obj = qs.FindObjective( typeof( SecondTrialReturnObjective ) );
if ( obj != null && !obj.Completed )
{
if ( ((SecondTrialReturnObjective)obj).Dragon )
player.AddToBackpack( new LeatherSuneate() );
obj.Complete();
return;
}
obj = qs.FindObjective( typeof( ThirdTrialReturnObjective ) );
if ( obj != null && !obj.Completed )
{
player.AddToBackpack( new LeatherHiroSode() );
obj.Complete();
return;
}
obj = qs.FindObjective( typeof( FourthTrialReturnObjective ) );
if ( obj != null && !obj.Completed )
{
if ( !((FourthTrialReturnObjective)obj).KilledCat )
{
Container cont = GetNewContainer();
cont.DropItem( new LeatherHiroSode() );
cont.DropItem( new JinBaori() );
player.AddToBackpack( cont );
}
obj.Complete();
return;
}
obj = qs.FindObjective( typeof( FifthTrialReturnObjective ) );
if ( obj != null && !obj.Completed )
{
Container pack = player.Backpack;
if ( pack != null )
{
Item katana = pack.FindItemByType( typeof( HaochisKatana ) );
if ( katana != null )
{
katana.Delete();
obj.Complete();
obj = qs.FindObjective( typeof( FifthTrialIntroObjective ) );
if ( obj != null && ((FifthTrialIntroObjective)obj).StolenTreasure )
qs.AddConversation( new SixthTrialIntroConversation( true ) );
else
qs.AddConversation( new SixthTrialIntroConversation( false ) );
}
}
return;
}
obj = qs.FindObjective( typeof( SixthTrialReturnObjective ) );
if ( obj != null && !obj.Completed )
{
obj.Complete();
return;
}
obj = qs.FindObjective( typeof( SeventhTrialReturnObjective ) );
if ( obj != null && !obj.Completed )
{
BaseWeapon weapon = new Daisho();
BaseRunicTool.ApplyAttributesTo( weapon, Utility.Random( 1,3 ), 10, 30 );
player.AddToBackpack( weapon );
BaseArmor armor = new LeatherDo();
BaseRunicTool.ApplyAttributesTo( armor, Utility.Random( 1,3 ), 10, 20 );
player.AddToBackpack( armor );
obj.Complete();
return;
}
}
}
public Haochi( 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();
}
}
}