ModernUO/Projects/Scripts/Engines/Quests/Collector/Items/EnchantedPaints.cs
2019-08-02 18:16:11 -07:00

133 lines
No EOL
3.5 KiB
C#

using Server.Mobiles;
using Server.Targeting;
namespace Server.Engines.Quests.Collector
{
public class EnchantedPaints : QuestItem
{
[Constructible]
public EnchantedPaints() : base(0xFC1)
{
LootType = LootType.Blessed;
Weight = 1.0;
}
public EnchantedPaints(Serial serial) : base(serial)
{
}
public override bool CanDrop(PlayerMobile player)
{
return !(player.Quest is CollectorQuest);
/*return !( qs.IsObjectiveInProgress( typeof( CaptureImagesObjective ) )
|| qs.IsObjectiveInProgress( typeof( ReturnImagesObjective ) ) );*/
}
public override void OnDoubleClick(Mobile from)
{
if (from is PlayerMobile player)
{
QuestSystem qs = player.Quest;
if (qs is CollectorQuest)
if (qs.IsObjectiveInProgress(typeof(CaptureImagesObjective)))
{
player.SendAsciiMessage(0x59, "Target the creature whose image you wish to create.");
player.Target = new InternalTarget(this);
return;
}
}
from.SendLocalizedMessage(1010085); // You cannot use this.
}
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();
}
private class InternalTarget : Target
{
private EnchantedPaints m_Paints;
public InternalTarget(EnchantedPaints paints) : base(-1, false, TargetFlags.None)
{
CheckLOS = false;
m_Paints = paints;
}
protected override void OnTarget(Mobile from, object targeted)
{
if (m_Paints.Deleted || !m_Paints.IsChildOf(from.Backpack))
return;
if (from is PlayerMobile player)
{
QuestSystem qs = player.Quest;
if (!(qs is CollectorQuest))
return;
CaptureImagesObjective obj = qs.FindObjective<CaptureImagesObjective>();
if (obj?.Completed != false)
return;
if (targeted is Mobile)
{
CaptureResponse response = obj.CaptureImage(
targeted.GetType().Name == "GreaterMongbat"
? new Mongbat().GetType()
: targeted.GetType(), out ImageType image);
switch (response)
{
case CaptureResponse.Valid:
{
player.SendLocalizedMessage(
1055125); // The enchanted paints swirl for a moment then an image begins to take shape. *Click*
player.AddToBackpack(new PaintedImage(image));
break;
}
case CaptureResponse.AlreadyDone:
{
player.SendAsciiMessage(0x2C,
"You have already captured the image of this creature");
break;
}
case CaptureResponse.Invalid:
{
player.SendLocalizedMessage(
1055124); // You have no interest in capturing the image of this creature.
break;
}
}
}
else
{
player.SendAsciiMessage(0x35, "You have no interest in that.");
}
return;
}
from.SendLocalizedMessage(1010085); // You cannot use this.
}
}
}
}