164 lines
No EOL
3.7 KiB
C#
164 lines
No EOL
3.7 KiB
C#
using System;
|
|
using System.Collections;
|
|
using Server;
|
|
using Server.Items;
|
|
using Server.Mobiles;
|
|
using Server.Network;
|
|
using Server.ContextMenus;
|
|
using Server.Engines.Quests;
|
|
using Server.Engines.Quests.Necro;
|
|
|
|
namespace Server.Engines.Quests.Doom
|
|
{
|
|
public class Victoria : BaseQuester
|
|
{
|
|
public override int TalkNumber{ get{ return 6159; } } // Ask about Chyloth
|
|
public override bool ClickTitle{ get{ return true; } }
|
|
public override bool IsActiveVendor{ get{ return true; } }
|
|
public override bool DisallowAllMoves{ get{ return false; } }
|
|
|
|
public override void InitSBInfo()
|
|
{
|
|
m_SBInfos.Add( new SBMage() );
|
|
}
|
|
|
|
[Constructable]
|
|
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;
|
|
|
|
Name = "Victoria";
|
|
}
|
|
|
|
private SummoningAltar m_Altar;
|
|
|
|
private const int AltarRange = 24;
|
|
|
|
public SummoningAltar Altar
|
|
{
|
|
get
|
|
{
|
|
if ( m_Altar == null || m_Altar.Deleted || m_Altar.Map != this.Map || !Utility.InRange( m_Altar.Location, this.Location, AltarRange ) )
|
|
{
|
|
foreach ( Item item in GetItemsInRange( AltarRange ) )
|
|
{
|
|
if ( item is SummoningAltar )
|
|
{
|
|
m_Altar = (SummoningAltar)item;
|
|
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 )
|
|
{
|
|
PlayerMobile player = from as PlayerMobile;
|
|
|
|
if ( player != null )
|
|
{
|
|
QuestSystem qs = player.Quest;
|
|
|
|
if ( qs is TheSummoningQuest )
|
|
{
|
|
if ( dropped is DaemonBone )
|
|
{
|
|
DaemonBone bones = (DaemonBone)dropped;
|
|
|
|
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();
|
|
}
|
|
}
|
|
} |