mirror of
https://github.com/ServUO/ServUO
synced 2026-08-11 20:23:04 -04:00
Travesty now uses the proper weapon specials. Specials when in natual form have also been toned down Controlled creatures no longer lose focus when attacking on kill/attack control order Temporarily removed looting rights for healing as this is suspected in causing a shard lockup. It will either be refactored or investigated further Fixed issue where boat courses were not working properly and the tillerman was piloting the boat in the wrong DirectionL Boat course no longer works in the corgul region Corgul Island map now indicates when the encounter will Expire Simplified code used to determine if an item or subclass of an item can be crafted
93 lines
3.6 KiB
C#
93 lines
3.6 KiB
C#
using Server.Mobiles;
|
|
using Server.Network;
|
|
using Server.Targeting;
|
|
using System;
|
|
|
|
namespace Server.SkillHandlers
|
|
{
|
|
public class EvalInt
|
|
{
|
|
public static void Initialize()
|
|
{
|
|
SkillInfo.Table[16].Callback = OnUse;
|
|
}
|
|
|
|
public static TimeSpan OnUse(Mobile m)
|
|
{
|
|
m.Target = new InternalTarget();
|
|
|
|
m.SendLocalizedMessage(500906); // What do you wish to evaluate?
|
|
|
|
return TimeSpan.FromSeconds(1.0);
|
|
}
|
|
|
|
private class InternalTarget : Target
|
|
{
|
|
public InternalTarget()
|
|
: base(8, false, TargetFlags.None)
|
|
{
|
|
}
|
|
|
|
protected override void OnTarget(Mobile from, object targeted)
|
|
{
|
|
if (from == targeted)
|
|
{
|
|
from.LocalOverheadMessage(MessageType.Regular, 0x3B2, 500910); // Hmm, that person looks really silly.
|
|
}
|
|
else if (targeted is TownCrier)
|
|
{
|
|
((TownCrier)targeted).PrivateOverheadMessage(MessageType.Regular, 0x3B2, 500907, from.NetState); // He looks smart enough to remember the news. Ask him about it.
|
|
}
|
|
else if (targeted is BaseVendor && ((BaseVendor)targeted).IsInvulnerable)
|
|
{
|
|
((BaseVendor)targeted).PrivateOverheadMessage(MessageType.Regular, 0x3B2, 500909, from.NetState); // That person could probably calculate the cost of what you buy from them.
|
|
}
|
|
else if (targeted is Mobile)
|
|
{
|
|
Mobile targ = (Mobile)targeted;
|
|
|
|
int marginOfError = Math.Max(0, 20 - (int)(from.Skills[SkillName.EvalInt].Value / 5));
|
|
|
|
int intel = targ.Int + Utility.RandomMinMax(-marginOfError, +marginOfError);
|
|
int mana = ((targ.Mana * 100) / Math.Max(targ.ManaMax, 1)) + Utility.RandomMinMax(-marginOfError, +marginOfError);
|
|
|
|
int intMod = intel / 10;
|
|
int mnMod = mana / 10;
|
|
|
|
if (intMod > 10)
|
|
intMod = 10;
|
|
else if (intMod < 0)
|
|
intMod = 0;
|
|
|
|
if (mnMod > 10)
|
|
mnMod = 10;
|
|
else if (mnMod < 0)
|
|
mnMod = 0;
|
|
|
|
int body;
|
|
|
|
if (targ.Body.IsHuman)
|
|
body = targ.Female ? 11 : 0;
|
|
else
|
|
body = 22;
|
|
|
|
if (from.CheckTargetSkill(SkillName.EvalInt, targ, 0.0, 120.0))
|
|
{
|
|
targ.PrivateOverheadMessage(MessageType.Regular, 0x3B2, 1038169 + intMod + body, from.NetState); // He/She/It looks [slighly less intelligent than a rock.] [Of Average intellect] [etc...]
|
|
|
|
if (from.Skills[SkillName.EvalInt].Base >= 76.0)
|
|
targ.PrivateOverheadMessage(MessageType.Regular, 0x3B2, 1038202 + mnMod, from.NetState); // That being is at [10,20,...] percent mental strength.
|
|
}
|
|
else
|
|
{
|
|
targ.PrivateOverheadMessage(MessageType.Regular, 0x3B2, 1038166 + (body / 11), from.NetState); // You cannot judge his/her/its mental abilities.
|
|
}
|
|
}
|
|
else if (targeted is Item)
|
|
{
|
|
((Item)targeted).SendLocalizedMessageTo(from, 500908, ""); // It looks smarter than a rock, but dumber than a piece of wood.
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|