mirror of
https://github.com/runuo/runuo
synced 2026-08-11 22:26:04 -04:00
96 lines
No EOL
2.1 KiB
C#
96 lines
No EOL
2.1 KiB
C#
using System;
|
|
using System.Collections;
|
|
using Server;
|
|
|
|
namespace Server.Items
|
|
{
|
|
public class HitLower
|
|
{
|
|
public static readonly TimeSpan AttackEffectDuration = TimeSpan.FromSeconds( 10.0 );
|
|
public static readonly TimeSpan DefenseEffectDuration = TimeSpan.FromSeconds( 8.0 );
|
|
|
|
private static Hashtable m_AttackTable = new Hashtable();
|
|
|
|
public static bool IsUnderAttackEffect( Mobile m )
|
|
{
|
|
return m_AttackTable.Contains( m );
|
|
}
|
|
|
|
public static bool ApplyAttack( Mobile m )
|
|
{
|
|
if ( IsUnderAttackEffect( m ) )
|
|
return false;
|
|
|
|
m_AttackTable[m] = new AttackTimer( m );
|
|
m.SendLocalizedMessage( 1062319 ); // Your attack chance has been reduced!
|
|
return true;
|
|
}
|
|
|
|
private static void RemoveAttack( Mobile m )
|
|
{
|
|
m_AttackTable.Remove( m );
|
|
m.SendLocalizedMessage( 1062320 ); // Your attack chance has returned to normal.
|
|
}
|
|
|
|
private class AttackTimer : Timer
|
|
{
|
|
private Mobile m_Player;
|
|
|
|
public AttackTimer( Mobile player ) : base( AttackEffectDuration )
|
|
{
|
|
m_Player = player;
|
|
|
|
Priority = TimerPriority.TwoFiftyMS;
|
|
|
|
Start();
|
|
}
|
|
|
|
protected override void OnTick()
|
|
{
|
|
RemoveAttack( m_Player );
|
|
}
|
|
}
|
|
|
|
private static Hashtable m_DefenseTable = new Hashtable();
|
|
|
|
public static bool IsUnderDefenseEffect( Mobile m )
|
|
{
|
|
return m_DefenseTable.Contains( m );
|
|
}
|
|
|
|
public static bool ApplyDefense( Mobile m )
|
|
{
|
|
if ( IsUnderDefenseEffect( m ) )
|
|
return false;
|
|
|
|
m_DefenseTable[m] = new DefenseTimer( m );
|
|
m.SendLocalizedMessage( 1062318 ); // Your defense chance has been reduced!
|
|
return true;
|
|
}
|
|
|
|
private static void RemoveDefense( Mobile m )
|
|
{
|
|
m_DefenseTable.Remove( m );
|
|
m.SendLocalizedMessage( 1062321 ); // Your defense chance has returned to normal.
|
|
}
|
|
|
|
private class DefenseTimer : Timer
|
|
{
|
|
private Mobile m_Player;
|
|
|
|
public DefenseTimer( Mobile player ) : base( DefenseEffectDuration )
|
|
{
|
|
m_Player = player;
|
|
|
|
Priority = TimerPriority.TwoFiftyMS;
|
|
|
|
Start();
|
|
}
|
|
|
|
protected override void OnTick()
|
|
{
|
|
RemoveDefense( m_Player );
|
|
}
|
|
}
|
|
}
|
|
} |