Reorganizes Project (#41)
This commit is contained in:
parent
08bf44af9a
commit
3614a66aee
3499 changed files with 79 additions and 55 deletions
|
|
@ -0,0 +1,146 @@
|
|||
using Server.Items;
|
||||
using Server.Mobiles;
|
||||
|
||||
namespace Server.Engines.Quests.Doom
|
||||
{
|
||||
public class Victoria : BaseQuester
|
||||
{
|
||||
private const int AltarRange = 24;
|
||||
|
||||
private SummoningAltar m_Altar;
|
||||
|
||||
[Constructible]
|
||||
public Victoria() : base("the Sorceress")
|
||||
{
|
||||
}
|
||||
|
||||
public Victoria(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
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 SummoningAltar Altar
|
||||
{
|
||||
get
|
||||
{
|
||||
if (m_Altar?.Deleted != false || 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 InitSBInfo()
|
||||
{
|
||||
m_SBInfos.Add(new SBMage());
|
||||
}
|
||||
|
||||
public override void InitBody()
|
||||
{
|
||||
InitStats(100, 100, 25);
|
||||
|
||||
Female = true;
|
||||
Hue = 0x8835;
|
||||
Body = 0x191;
|
||||
}
|
||||
|
||||
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<CollectBonesObjective>();
|
||||
|
||||
if (obj?.Completed == false)
|
||||
{
|
||||
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)
|
||||
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(0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue