public virtual TimeSpan GetCastRecovery() { if (!Core.AOS) { return(NextSpellDelay); } int fcr = AosAttributes.GetValue(m_Caster, AosAttribute.CastRecovery); fcr -= ThunderstormSpell.GetCastRecoveryMalus(m_Caster); if (SpellHelper.IsBuffed(m_Caster)) { fcr += SpellHelper.GetFCRBonus(m_Caster); } int fcrDelay = -(CastRecoveryFastScalar * fcr); int delay = CastRecoveryBase + fcrDelay; if (delay < CastRecoveryMinimum) { delay = CastRecoveryMinimum; } return(TimeSpan.FromSeconds((double)delay / CastRecoveryPerSecond)); }