63 lines
1.5 KiB
C#
63 lines
1.5 KiB
C#
using System;
|
|
using Server.Mobiles;
|
|
using Server.Targeting;
|
|
|
|
namespace Server.Items;
|
|
|
|
public interface IIdentifiable
|
|
{
|
|
bool Identified { get; set; }
|
|
}
|
|
|
|
public static class ItemIdentification
|
|
{
|
|
public static void Initialize()
|
|
{
|
|
SkillInfo.Table[(int)SkillName.ItemID].Callback = OnUse;
|
|
}
|
|
|
|
public static TimeSpan OnUse(Mobile from)
|
|
{
|
|
from.SendLocalizedMessage(500343); // What do you wish to appraise and identify?
|
|
from.Target = new InternalTarget();
|
|
|
|
return TimeSpan.FromSeconds(1.0);
|
|
}
|
|
|
|
[PlayerVendorTarget]
|
|
private class InternalTarget : Target
|
|
{
|
|
public InternalTarget() : base(8, false, TargetFlags.None) => AllowNonlocal = true;
|
|
|
|
protected override void OnTarget(Mobile from, object o)
|
|
{
|
|
if (o is Mobile mobile)
|
|
{
|
|
mobile.OnSingleClick(from);
|
|
return;
|
|
}
|
|
|
|
bool identified = false;
|
|
|
|
if (o is Item item)
|
|
{
|
|
if (item is IIdentifiable identifiable && from.CheckTargetSkill(SkillName.ItemID, item, 0, 100))
|
|
{
|
|
identifiable.Identified = true;
|
|
identified = true;
|
|
}
|
|
|
|
if (!Core.AOS)
|
|
{
|
|
item.OnSingleClick(from);
|
|
}
|
|
}
|
|
|
|
|
|
if (!identified)
|
|
{
|
|
from.SendLocalizedMessage(500353); // You are not certain...
|
|
}
|
|
}
|
|
}
|
|
}
|