Files
abysmal-isle/Scripts/Services/Expansions/High Seas/Quests/ProfessionalBountyQuest/BountyQuestObjective.cs
Unstable Kitsune b918192e4e Overwrite
Complete Overwrite of the Folder with the free shard. ServUO 57.3 has been added.
2023-11-28 23:20:26 -05:00

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;
}
}
}