public Spell(SpellSlot slot, float range = 3.402823E+38f, DamageType damageType = DamageType.Physical)
     : base(slot, range,
         damageType == DamageType.Physical
             ? TargetSelector.DamageType.Physical
             : (damageType == DamageType.Magical
                 ? TargetSelector.DamageType.Magical
                 : TargetSelector.DamageType.True))
 {
 }
 public static Obj_AI_Hero GetTarget(float range, DamageType damageType, bool ignoreShields, Vector3 from)
 {
     if (Target != null &&
         TargetSelector.IsValidTarget(
             Target, ForceFocus ? float.MaxValue : range, damageType, ignoreShields, from))
     {
         return Target;
     }
     return null;
 }
 public static Obj_AI_Hero GetTarget(float range, DamageType damageType, bool ignoreShields, Vector3 from)
 {
     try
     {
         if (Target != null &&
             TargetSelector.IsValidTarget(
                 Target, TargetSelector.ForceFocus ? float.MaxValue : range, damageType, ignoreShields, from))
         {
             return Target;
         }
     }
     catch (Exception ex)
     {
         Global.Logger.AddItem(new LogItem(ex));
     }
     return null;
 }
 private TargetSelector.DamageType ConvertDamageType(DamageType type)
 {
     switch (type)
     {
         case DamageType.Physical:
             return TargetSelector.DamageType.Physical;
         case DamageType.Magical:
             return TargetSelector.DamageType.Magical;
         case DamageType.True:
             return TargetSelector.DamageType.True;
     }
     return TargetSelector.DamageType.Physical;
 }