this should do itfunction EnumStandardFilter takes nothing returns boolean
set udg_ue = GetFilterUnit()
return not(IsUnitType(udg_ue,UNIT_TYPE_MECHANICAL)or IsUnitType(udg_ue,UNIT_TYPE_STRUCTURE)or IsUnitType(udg_ue,UNIT_TYPE_DEAD)or IsUnitType(udg_ue,UNIT_TYPE_FLYING)or IsUnitType(udg_ue,UNIT_TYPE_MAGIC_IMMUNE)) and IsUnitEnemy(udg_ue,udg_p)
endfunction
function GroupEnumStandard takes group g, unit u, real x, real y, real r returns nothing
local boolexpr cond = Condition(function EnumStandardFilter)
set udg_p = GetOwningPlayer(u)
call GroupEnumUnitsInRange(g, x, y, r, cond)
endfunction
IsUnitVisible and UNIT_TYPE_SNARED might be worth considering, too