private static float GetRealCastRange(Ability ability)
{
var range = ability.CastRange;
if (range >= 1) return range;
var data = ability.AbilitySpecialData.FirstOrDefault(x => x.Name.Contains("radius") || (x.Name.Contains("range") && !x.Name.Contains("ranged")));
if (data == null) return range;
var level = ability.Level == 0 ? 0 : ability.Level - 1;
range = (uint)(data.Count > 1 ? data.GetValue(level) : data.Value);
return range;
}