using Server.Items; using Server.Mobiles; namespace Server.Engines.Quests.Doom { public class Victoria : BaseQuester { public override int TalkNumber => 6159; // Ask about Chyloth public override string DefaultName => "Victoria"; public override bool ClickTitle => true; public override bool IsActiveVendor => true; public override bool DisallowAllMoves => false; public override void InitSBInfo() { m_SBInfos.Add( new SBMage() ); } [Constructible] public Victoria() : base( "the Sorceress" ) { } public Victoria( Serial serial ) : base( serial ) { } public override void InitBody() { InitStats( 100, 100, 25 ); Female = true; Hue = 0x8835; Body = 0x191; } private SummoningAltar m_Altar; private const int AltarRange = 24; public SummoningAltar Altar { get { if ( m_Altar == null || m_Altar.Deleted || m_Altar.Map != Map || !Utility.InRange( m_Altar.Location, Location, AltarRange ) ) { foreach ( Item item in GetItemsInRange( AltarRange ) ) { if ( item is SummoningAltar altar ) { m_Altar = altar; break; } } } return m_Altar; } } public override void InitOutfit() { EquipItem( new GrandGrimoire() ); EquipItem( SetHue( new Sandals(), 0x455 ) ); EquipItem( SetHue( new SkullCap(), 0x455 ) ); EquipItem( SetHue( new PlainDress(), 0x455 ) ); HairItemID = 0x203C; HairHue = 0x482; } public override bool OnDragDrop( Mobile from, Item dropped ) { if ( from is PlayerMobile player ) { QuestSystem qs = player.Quest; if ( qs is TheSummoningQuest ) { if ( dropped is DaemonBone bones ) { QuestObjective obj = qs.FindObjective( typeof( CollectBonesObjective ) ); if ( obj != null && !obj.Completed ) { int need = obj.MaxProgress - obj.CurProgress; if ( bones.Amount < need ) { obj.CurProgress += bones.Amount; bones.Delete(); qs.ShowQuestLogUpdated(); } else { obj.Complete(); bones.Consume( need ); if ( !bones.Deleted ) { // TODO: Accurate? SayTo( from, 1050038 ); // You have already given me all the Daemon bones necessary to weave the spell. Keep these for a later time. } } } else { // TODO: Accurate? SayTo( from, 1050038 ); // You have already given me all the Daemon bones necessary to weave the spell. Keep these for a later time. } return false; } } } return base.OnDragDrop( from, dropped ); } public override bool CanTalkTo( PlayerMobile to ) { return ( to.Quest == null && QuestSystem.CanOfferQuest( to, typeof( TheSummoningQuest ) ) ); } public override void OnTalk( PlayerMobile player, bool contextMenu ) { QuestSystem qs = player.Quest; if ( qs == null && QuestSystem.CanOfferQuest( player, typeof( TheSummoningQuest ) ) ) { Direction = GetDirectionTo( player ); new TheSummoningQuest( this, player ).SendOffer(); } } 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(); } } }