RunUO/Scripts/Skills/TasteID.cs

95 lines
No EOL
2.5 KiB
C#

using System;
using Server.Targeting;
using Server.Items;
using Server.Network;
using Server.Mobiles;
namespace Server.SkillHandlers
{
public class TasteID
{
public static void Initialize()
{
SkillInfo.Table[(int)SkillName.TasteID].Callback = new SkillUseCallback( OnUse );
}
public static TimeSpan OnUse( Mobile m )
{
m.Target = new InternalTarget();
m.SendLocalizedMessage( 502807 ); // What would you like to taste?
return TimeSpan.FromSeconds( 1.0 );
}
[PlayerVendorTarget]
private class InternalTarget : Target
{
public InternalTarget() : base ( 2, false, TargetFlags.None )
{
AllowNonlocal = true;
}
protected override void OnTarget( Mobile from, object targeted )
{
if ( targeted is Mobile )
{
from.SendLocalizedMessage( 502816 ); // You feel that such an action would be inappropriate.
}
else if ( targeted is Food )
{
Food food = (Food) targeted;
if ( from.CheckTargetSkill( SkillName.TasteID, food, 0, 100 ) )
{
if ( food.Poison != null )
{
food.SendLocalizedMessageTo( from, 1038284 ); // It appears to have poison smeared on it.
}
else
{
// No poison on the food
food.SendLocalizedMessageTo( from, 1010600 ); // You detect nothing unusual about this substance.
}
}
else
{
// Skill check failed
food.SendLocalizedMessageTo( from, 502823 ); // You cannot discern anything about this substance.
}
}
else if ( targeted is BasePotion )
{
BasePotion potion = (BasePotion) targeted;
potion.SendLocalizedMessageTo( from, 502813 ); // You already know what kind of potion that is.
potion.SendLocalizedMessageTo( from, potion.LabelNumber );
}
else if ( targeted is PotionKeg )
{
PotionKeg keg = (PotionKeg) targeted;
if ( keg.Held <= 0 )
{
keg.SendLocalizedMessageTo( from, 502228 ); // There is nothing in the keg to taste!
}
else
{
keg.SendLocalizedMessageTo( from, 502229 ); // You are already familiar with this keg's contents.
keg.SendLocalizedMessageTo( from, keg.LabelNumber );
}
}
else
{
// The target is not food or potion or potion keg.
from.SendLocalizedMessage( 502820 ); // That's not something you can taste.
}
}
protected override void OnTargetOutOfRange( Mobile from, object targeted )
{
from.SendLocalizedMessage( 502815 ); // You are too far away to taste that.
}
}
}
}