using System; using Server.Mobiles; using Server.Items; namespace Server.Engines.Quests.Hag { public class Blackheart : BaseQuester { public override string DefaultName => "Captain Blackheart"; [Constructible] public Blackheart() : base( "the Drunken Pirate" ) { } public Blackheart( Serial serial ) : base( serial ) { } public override void InitBody() { InitStats( 100, 100, 25 ); Hue = 0x83EF; Female = false; Body = 0x190; } public override void InitOutfit() { AddItem( new FancyShirt() ); AddItem( new LongPants( 0x66D ) ); AddItem( new ThighBoots() ); AddItem( new TricorneHat( 0x1 ) ); AddItem( new BodySash( 0x66D ) ); LeatherGloves gloves = new LeatherGloves(); gloves.Hue = 0x66D; AddItem( gloves ); FacialHairItemID = 0x203E; // Long Beard FacialHairHue = 0x455; Item sword = new Cutlass(); sword.Movable = false; AddItem( sword ); } public override void OnTalk( PlayerMobile player, bool contextMenu ) { Direction = GetDirectionTo( player ); Animate( 33, 20, 1, true, false, 0 ); QuestSystem qs = player.Quest; if ( qs is WitchApprenticeQuest ) { if ( qs.FindObjective( typeof( FindIngredientObjective ) ) is FindIngredientObjective obj && !obj.Completed && obj.Ingredient == Ingredient.Whiskey ) { PlaySound( Utility.RandomBool() ? 0x42E : 0x43F ); Item hat = player.FindItemOnLayer( Layer.Helm ); bool tricorne = hat is TricorneHat; if ( tricorne && player.BAC >= 20 ) { obj.Complete(); qs.AddConversation( new BlackheartPirateConversation( !obj.BlackheartMet ) ); } else if ( !obj.BlackheartMet ) { obj.Complete(); qs.AddConversation( new BlackheartFirstConversation() ); } else { qs.AddConversation( new BlackheartNoPirateConversation( tricorne, player.BAC > 0 ) ); } return; } } PlaySound( 0x42C ); SayTo( player, 1055041 ); // The drunken pirate shakes his fist at you and goes back to drinking. } private void Heave() { PublicOverheadMessage( Network.MessageType.Regular, 0x3B2, 500849 ); // *hic* Timer.DelayCall( TimeSpan.FromSeconds( Utility.RandomMinMax( 60, 180 ) ), new TimerCallback( Heave ) ); } 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(); Heave(); } } }