float scaleDamageCached(ulong targetID)
        {
            ScaleCacheItem kvp = null;

            if (cachedScales.TryGetValue(targetID, out kvp) && DateTime.Now < kvp.expires)
            {
                return(kvp.scale);
            }

            return(cacheDamageScale(targetID, scaleDamage(targetID), kvp));
        }
        float cacheDamageScale(ulong targetID, float scale, ScaleCacheItem kvp = null)
        {
            if (kvp == null)
            {
                kvp = new ScaleCacheItem(DateTime.Now.AddMinutes(1), scale);
                cachedScales.Add(targetID, kvp);
            }
            else
            {
                kvp.expires = DateTime.Now.AddMinutes(1);
                kvp.scale   = scale;
            }

            return(scale);
        }