74 lines
No EOL
1.7 KiB
C#
74 lines
No EOL
1.7 KiB
C#
using System;
|
|
using Server.Items;
|
|
|
|
namespace Server.SkillHandlers
|
|
{
|
|
class Meditation
|
|
{
|
|
public static void Initialize()
|
|
{
|
|
SkillInfo.Table[15].Callback = new SkillUseCallback( OnUse );
|
|
}
|
|
|
|
public static bool CheckOkayHolding( Item item )
|
|
{
|
|
if ( item == null )
|
|
return true;
|
|
|
|
if ( item is Spellbook )
|
|
return true;
|
|
|
|
return false;
|
|
}
|
|
|
|
public static TimeSpan OnUse( Mobile m )
|
|
{
|
|
m.RevealingAction();
|
|
|
|
if ( m.Target != null )
|
|
{
|
|
m.SendLocalizedMessage( 501845 ); // You are busy doing something else and cannot focus.
|
|
|
|
return TimeSpan.FromSeconds( 5.0 );
|
|
}
|
|
else if ( m.Mana >= m.ManaMax )
|
|
{
|
|
m.SendLocalizedMessage( 501846 ); // You are at peace.
|
|
|
|
return TimeSpan.FromSeconds( 5.0 );
|
|
}
|
|
else
|
|
{
|
|
Item oneHanded = m.FindItemOnLayer( Layer.OneHanded );
|
|
Item twoHanded = m.FindItemOnLayer( Layer.TwoHanded );
|
|
|
|
if ( !CheckOkayHolding( oneHanded ) || !CheckOkayHolding( twoHanded ) )
|
|
{
|
|
m.SendLocalizedMessage( 502626 ); // Your hands must be free to cast spells or meditate.
|
|
|
|
return TimeSpan.FromSeconds( 2.5 );
|
|
}
|
|
|
|
double skillVal = m.Skills[SkillName.Meditation].Value;
|
|
double chance = (50.0 + (( skillVal - ( m.ManaMax - m.Mana ) ) * 2)) / 100;
|
|
|
|
if ( chance > Utility.RandomDouble() )
|
|
{
|
|
m.CheckSkill( SkillName.Meditation, 0.0, 100.0 );
|
|
|
|
m.SendLocalizedMessage( 501851 ); // You enter a meditative trance.
|
|
m.Meditating = true;
|
|
|
|
if ( m.Player || m.Body.IsHuman )
|
|
m.PlaySound( 0xF9 );
|
|
}
|
|
else
|
|
{
|
|
m.SendLocalizedMessage( 501850 ); // You cannot focus your concentration.
|
|
}
|
|
|
|
return TimeSpan.FromSeconds( 10.0 );
|
|
}
|
|
}
|
|
}
|
|
} |