Implement Core.TickCount
Convert movement, actions (lift/use), combat, and spells to use Core.TickCount and avoid DateTime caveats (performance, system time dependency, etc) Refactor DateTime.Now to DateTime.UtcNow Add LOS check for Iron Maiden addon
This commit is contained in:
parent
f99eefb288
commit
d2c670f5c3
241 changed files with 842 additions and 831 deletions
|
|
@ -18,7 +18,7 @@ namespace Server.Spells
|
|||
private Item m_Scroll;
|
||||
private SpellInfo m_Info;
|
||||
private SpellState m_State;
|
||||
private DateTime m_StartCastTime;
|
||||
private int m_StartCastTime;
|
||||
|
||||
public SpellState State{ get{ return m_State; } set{ m_State = value; } }
|
||||
public Mobile Caster{ get{ return m_Caster; } }
|
||||
|
|
@ -27,7 +27,7 @@ namespace Server.Spells
|
|||
public string Mantra{ get{ return m_Info.Mantra; } }
|
||||
public Type[] Reagents{ get{ return m_Info.Reagents; } }
|
||||
public Item Scroll{ get{ return m_Scroll; } }
|
||||
public DateTime StartCastTime { get { return m_StartCastTime; } }
|
||||
public int StartCastTime { get { return m_StartCastTime; } }
|
||||
|
||||
private static TimeSpan NextSpellDelay = TimeSpan.FromSeconds( 0.75 );
|
||||
private static TimeSpan AnimateDelay = TimeSpan.FromSeconds( 1.5 );
|
||||
|
|
@ -429,7 +429,7 @@ namespace Server.Spells
|
|||
if ( Core.AOS && m_Caster.Player && type == DisturbType.Hurt )
|
||||
DoHurtFizzle();
|
||||
|
||||
m_Caster.NextSpellTime = DateTime.Now + GetDisturbRecovery();
|
||||
m_Caster.NextSpellTime = Core.TickCount + (int)GetDisturbRecovery().TotalMilliseconds;
|
||||
}
|
||||
else if ( m_State == SpellState.Sequencing )
|
||||
{
|
||||
|
|
@ -482,7 +482,7 @@ namespace Server.Spells
|
|||
|
||||
public bool Cast()
|
||||
{
|
||||
m_StartCastTime = DateTime.Now;
|
||||
m_StartCastTime = Core.TickCount;
|
||||
|
||||
if ( Core.AOS && m_Caster.Spell is Spell && ((Spell)m_Caster.Spell).State == SpellState.Sequencing )
|
||||
((Spell)m_Caster.Spell).Disturb( DisturbType.NewCast );
|
||||
|
|
@ -507,11 +507,11 @@ namespace Server.Spells
|
|||
{
|
||||
m_Caster.SendLocalizedMessage( 502643 ); // You can not cast a spell while frozen.
|
||||
}
|
||||
else if ( CheckNextSpellTime && DateTime.Now < m_Caster.NextSpellTime )
|
||||
else if (CheckNextSpellTime && Core.TickCount - m_Caster.NextSpellTime < 0)
|
||||
{
|
||||
m_Caster.SendLocalizedMessage( 502644 ); // You have not yet recovered from casting a spell.
|
||||
}
|
||||
else if ( m_Caster is PlayerMobile && ( (PlayerMobile) m_Caster ).PeacedUntil > DateTime.Now )
|
||||
else if ( m_Caster is PlayerMobile && ( (PlayerMobile) m_Caster ).PeacedUntil > DateTime.UtcNow )
|
||||
{
|
||||
m_Caster.SendLocalizedMessage( 1072060 ); // You cannot cast a spell while calmed.
|
||||
}
|
||||
|
|
@ -633,7 +633,7 @@ namespace Server.Spells
|
|||
if ( Core.AOS )
|
||||
return TimeSpan.Zero;
|
||||
|
||||
double delay = 1.0 - Math.Sqrt( (DateTime.Now - m_StartCastTime).TotalSeconds / GetCastDelay().TotalSeconds );
|
||||
double delay = 1.0 - Math.Sqrt((Core.TickCount - m_StartCastTime) / 1000 / GetCastDelay().TotalSeconds);
|
||||
|
||||
if ( delay < 0.2 )
|
||||
delay = 0.2;
|
||||
|
|
@ -753,7 +753,7 @@ namespace Server.Spells
|
|||
m_Caster.SendLocalizedMessage( 502646 ); // You cannot cast a spell while frozen.
|
||||
DoFizzle();
|
||||
}
|
||||
else if ( m_Caster is PlayerMobile && ((PlayerMobile) m_Caster).PeacedUntil > DateTime.Now )
|
||||
else if ( m_Caster is PlayerMobile && ((PlayerMobile) m_Caster).PeacedUntil > DateTime.UtcNow )
|
||||
{
|
||||
m_Caster.SendLocalizedMessage( 1072060 ); // You cannot cast a spell while calmed.
|
||||
DoFizzle();
|
||||
|
|
@ -913,7 +913,7 @@ namespace Server.Spells
|
|||
m_Spell.m_Caster.OnSpellCast( m_Spell );
|
||||
if ( m_Spell.m_Caster.Region != null )
|
||||
m_Spell.m_Caster.Region.OnSpellCast( m_Spell.m_Caster, m_Spell );
|
||||
m_Spell.m_Caster.NextSpellTime = DateTime.Now + m_Spell.GetCastRecovery();// Spell.NextSpellDelay;
|
||||
m_Spell.m_Caster.NextSpellTime = Core.TickCount + (int)m_Spell.GetCastRecovery().TotalMilliseconds; // Spell.NextSpellDelay;
|
||||
|
||||
Target originalTarget = m_Spell.m_Caster.Target;
|
||||
|
||||
|
|
|
|||
|
|
@ -140,7 +140,7 @@ namespace Server.Spells
|
|||
{
|
||||
AggressorInfo info = m.Aggressed[i];
|
||||
|
||||
if( info.Defender.Player && (DateTime.Now - info.LastCombatTime) < CombatHeatDelay )
|
||||
if( info.Defender.Player && (DateTime.UtcNow - info.LastCombatTime) < CombatHeatDelay )
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
@ -150,7 +150,7 @@ namespace Server.Spells
|
|||
{
|
||||
AggressorInfo info = m.Aggressors[i];
|
||||
|
||||
if( info.Attacker.Player && (DateTime.Now - info.LastCombatTime) < CombatHeatDelay )
|
||||
if( info.Attacker.Player && (DateTime.UtcNow - info.LastCombatTime) < CombatHeatDelay )
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue