function conditionMatchingSpawn takes nothing returns boolean
return (GetWidgetLife(GetFilterUnit()) > 0.405 and (not (IsUnitType(GetFilterUnit(), UNIT_TYPE_STRUCTURE))) and (not (IsUnitType(GetFilterUnit(), UNIT_TYPE_HERO))) and (not (IsUnitType(GetFilterUnit(), UNIT_TYPE_PEON))) and (not (IsUnitType(GetFilterUnit(), UNIT_TYPE_SUMMONED))) and (not (IsUnitType(GetFilterUnit(), UNIT_TYPE_MECHANICAL))) and (not (IsUnitType(GetFilterUnit(), UNIT_TYPE_ANCIENT))))
endfunction
function spawnHelper takes integer unitId returns nothing
local unit p = GetEnumUnit()
local real x = GetUnitX(p)
local real y = GetUnitY(p)
local unit s
if ([B][COLOR="#FF0000"]CountUnitsInGroup[/COLOR][/B]([B][COLOR="#FF0000"]GetUnitsOfPlayerMatching[/COLOR][/B](GetOwningPlayer(p), Condition(function conditionMatchingSpawn))) <10) then
set s = CreateUnit( GetOwningPlayer(p), unitId, x, y, bj_UNIT_FACING)
endif
set s = null
set p = null
endfunction