71 lines
2.2 KiB
C#
71 lines
2.2 KiB
C#
using Server;
|
|
using System;
|
|
using Server.Mobiles;
|
|
using Server.Items;
|
|
using Server.Multis;
|
|
|
|
namespace Server.Engines.Quests
|
|
{
|
|
public class BountyQuestObjective : BaseObjective
|
|
{
|
|
private bool m_Captured;
|
|
private Mobile m_CapturedCaptain;
|
|
|
|
public bool Captured { get { return m_Captured; } set { m_Captured = value; } }
|
|
public Mobile CapturedCaptain { get { return m_CapturedCaptain; } set { m_CapturedCaptain = value; } }
|
|
|
|
public BountyQuestObjective()
|
|
{
|
|
}
|
|
|
|
public override bool Update(object obj)
|
|
{
|
|
Mobile from = (Mobile)obj;
|
|
Mobile captain = ((ProfessionalBountyQuest)Quest).Captain;
|
|
Mobile quester = Quest.Quester as Mobile;
|
|
|
|
if (from == null || captain == null)
|
|
return false;
|
|
|
|
Container pack = from.Backpack;
|
|
bool inRange = quester != null && quester.InRange(captain.Location, 75);
|
|
|
|
if (m_Captured && inRange)
|
|
return true;
|
|
|
|
Item item = pack.FindItemByType(typeof(DeathCertificate));
|
|
if (item != null && Quest is ProfessionalBountyQuest && ((DeathCertificate)item).Owner != null)
|
|
{
|
|
item.Delete();
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public override void Serialize(GenericWriter writer)
|
|
{
|
|
base.Serialize(writer);
|
|
writer.WriteEncodedInt((int)1); // version
|
|
|
|
writer.Write(m_Captured);
|
|
writer.Write(m_CapturedCaptain);
|
|
}
|
|
|
|
public override void Deserialize(GenericReader reader)
|
|
{
|
|
base.Deserialize(reader);
|
|
int version = reader.ReadEncodedInt();
|
|
|
|
m_Captured = reader.ReadBool();
|
|
m_CapturedCaptain = reader.ReadMobile();
|
|
|
|
Timer.DelayCall(TimeSpan.FromSeconds(10), new TimerCallback(ValidateCaught));
|
|
}
|
|
|
|
private void ValidateCaught()
|
|
{
|
|
if (m_CapturedCaptain != null && m_CapturedCaptain is PirateCaptain && this.Quest is ProfessionalBountyQuest)
|
|
((PirateCaptain)m_CapturedCaptain).Quest = this.Quest as ProfessionalBountyQuest;
|
|
}
|
|
}
|
|
} |