public static bool IsValidEvadeSpell(this MissileClient missile, out SpellData spellData)
 {
     spellData = null;
     if (missile == null) return false;
     //Check if spell is valid to continue
     if (missile.SpellCaster != null && missile.SData != null && missile.SData.Name != null)
     {
         return missile.ShouldEvade(out spellData);
     }
     return false;
 }
        public static bool ShouldEvade(this MissileClient missile, out SpellData spellData)
        {
            spellData = null;
            return (missile.SpellCaster.Team != MyHero.Team) && SpellDetector.OnMissileSpells.TryGetValue(missile.SData.Name, out spellData);

        }
 public static bool IsInRange(this MissileClient missile, SpellData spellData)
 {
     return missile.StartPosition.Distance(MyHero.Position) <
         spellData.Range + ConfigValue.ExtraDetectionRange.GetInt();
 }
 public static bool ShouldEvade(this EloBuddy.SpellData eloData, Obj_AI_Base hero, out SpellData spellData)
 {
     spellData = null;
     return (hero.Team != MyHero.Team) && SpellDetector.OnProcessSpells.TryGetValue(eloData.Name, out spellData);
 }