Использует BlzPauseUnitEx и делает ее похожей на обычный PauseUnit. Обычно, она использует внутренний счетчик использований, и приходится применять BlzPauseUnitEx обратно до тех пор, пока контроль юниту не вернется. Это исправляет данную "фичу".
local PauseDataTable
---@param target unit
---@param flag boolean
function SafePauseUnit(target, flag)
if flag then
if not PauseDataTable[target] then
PauseDataTable[target] = true
BlzPauseUnitEx(target, true)
end
elseif not flag and PauseDataTable[target] then
PauseDataTable[target] = nil
BlzPauseUnitEx(target, false)
end
end