using System; using System.Collections.Generic; namespace Server.Mobiles { public class Scribe : BaseVendor { private List m_SBInfos = new List(); protected override List SBInfos => m_SBInfos; public override NpcGuild NpcGuild => NpcGuild.MagesGuild; private DateTime m_NextShush; public static readonly TimeSpan ShushDelay = TimeSpan.FromMinutes( 1 ); [Constructible] public Scribe() : base( "the scribe" ) { SetSkill( SkillName.EvalInt, 60.0, 83.0 ); SetSkill( SkillName.Inscribe, 90.0, 100.0 ); } public override void InitSBInfo() { m_SBInfos.Add( new SBScribe() ); } public override VendorShoeType ShoeType => Utility.RandomBool() ? VendorShoeType.Shoes : VendorShoeType.Sandals; public override void InitOutfit() { base.InitOutfit(); AddItem( new Items.Robe( Utility.RandomNeutralHue() ) ); } public override bool HandlesOnSpeech( Mobile from ) { return from.Player; } public override void OnSpeech( SpeechEventArgs e ) { base.OnSpeech( e ); if ( !e.Handled && m_NextShush <= DateTime.UtcNow && InLOS( e.Mobile ) ) { Direction = GetDirectionTo( e.Mobile ); PlaySound( Female ? 0x32F : 0x441 ); PublicOverheadMessage( Network.MessageType.Regular, 0x3B2, 1073990 ); // Shhhh! m_NextShush = DateTime.UtcNow + ShushDelay; e.Handled = true; } } public Scribe( 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(); } } }