public static void EventSink_Movement( MovementEventArgs e )
{
Mobile from = e.Mobile;
if ( !from.Alive || from.AccessLevel > AccessLevel.Player )
return;
int maxWeight = GetMaxWeight( from ) + OverloadAllowance;
int overWeight = (Mobile.BodyWeight + from.TotalWeight) - maxWeight;
if ( overWeight > 0 )
{
from.Stam -= GetStamLoss( from, overWeight, (e.Direction & Direction.Running) != 0 );
if ( from.Stam == 0 )
{
from.SendLocalizedMessage( 500109 ); // You are too fatigued to move, because you are carrying too much weight!
e.Blocked = true;
return;
}
}
if ( ((from.Stam * 100) / Math.Max( from.StamMax, 1 )) < 10 )
--from.Stam;
if ( from.Stam == 0 )
{
from.SendLocalizedMessage( 500110 ); // You are too fatigued to move.
e.Blocked = true;
return;
}
if ( from is PlayerMobile )
{
int amt = ( from.Mounted ? 48 : 16 );
PlayerMobile pm = (PlayerMobile)from;
if ( (++pm.StepsTaken % amt) == 0 )
--from.Stam;
}
}