API IsSpellInRange

Returns 1 if the player is in range to use the specified spell on the target unit, 0 otherwise.
 inRange = IsSpellInRange(spellName, unit)
 = IsSpellInRange(index, bookType, unit)
==Arguments==
:;spellName: - The localized spell name. The player must know the spell.
:;unit: : UnitId - The unit to use as a target for the spell.
Spellbook args  
:;index: - Spellbook slot index, ranging from 1 through the total number of spells across all tabs and pages.
:;bookType: - BOOKTYPE_SPELL or BOOKTYPE_PET depending on if you wish to query the player or pet spellbook.
:::Internally the game only tests if this is equal to "pet" and treats any other string value as "spell".
==Returns==
:;inRange: - 1 if the target is in range of the spell, 0 if the target is not in range of the spell, nil if the provided arguments were invalid or inapplicable.
==Details==
* This takes into account talents, and can be used to determine the approximate distance to your raid members.
* The function returns nil if:
** The spell cannot be cast on the unit. i.e. Frostbolt on a friendly unit, or Heal on an hostile unit (such as a mind-controlled raid member)
** If the unit is not 'visible' (per ) or does not exist (per )
** The current player does not know this spell (so you cannot use 'Heal' to test 40 yard range for anyone other than a priest)
** The spell can only be cast on the player (i.e. a self-buff such as Mage Armor or Barkskin)
==Example==
if IsSpellInRange("Flash Heal", "target") == 1 then
 print("target is in healing range")
else
 print("cannot heal target")
end