public double TransformMoveDelay(double delay)
{
bool isPassive = (delay == m_Mobile.PassiveSpeed);
bool isControlled = (m_Mobile.Controlled || m_Mobile.Summoned);
if (delay == 0.2)
delay = 0.3;
else if (delay == 0.25)
delay = 0.45;
else if (delay == 0.3)
delay = 0.6;
else if (delay == 0.4)
delay = 0.9;
else if (delay == 0.5)
delay = 1.05;
else if (delay == 0.6)
delay = 1.2;
else if (delay == 0.8)
delay = 1.5;
if (isPassive)
delay += 0.2;
if (!isControlled)
{
delay += 0.1;
}
else if (m_Mobile.Controlled)
{
if (m_Mobile.ControlOrder == OrderType.Follow && m_Mobile.ControlTarget == m_Mobile.ControlMaster)
delay *= 0.5;
delay -= 0.075;
}
if (m_Mobile.ReduceSpeedWithDamage || m_Mobile.IsSubdued)
{
double offset = (double)m_Mobile.Hits / m_Mobile.HitsMax;
if (offset < 0.0)
offset = 0.0;
else if (offset > 1.0)
offset = 1.0;
offset = 1.0 - offset;
delay += (offset * 0.8);
}
if (delay < 0.0)
delay = 0.0;
if (double.IsNaN(delay))
{
using (StreamWriter op = new StreamWriter("nan_transform.txt", true))
{
op.WriteLine(String.Format("NaN in TransformMoveDelay: {0}, {1}, {2}, {3}", DateTime.Now, this.GetType().ToString(), m_Mobile == null ? "null" : m_Mobile.GetType().ToString(), m_Mobile.HitsMax));
}
return 1.0;
}
return delay;
}