ModernUO/Scripts/Engines/Quests/Collector/Items/EnchantedPaints.cs
2018-09-14 08:41:38 -07:00

127 lines
3.2 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.
}
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 )
{
if ( qs.FindObjective( typeof( CaptureImagesObjective ) ) is CaptureImagesObjective obj && !obj.Completed )
{
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.
}
}
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();
}
}
}