Справочник › Справочник функций › Core

Core.threat_count_conditions.GetConditionThreatCount

общедоступный

Как вызывать

addon:GetConditionThreatCount(minimum, cache)

Доступен напрямую через addon; зависимость не нужна.

Что делает

Учитывать только юниты с ключом GUID, уже входящие в наблюдаемый снимок состава. Перед использованием опубликованного наблюдателя угрозы проверяется текущая идентичность токена; известные отсутствующие или переиспользованные токены исключаются без замены. Полные наблюдения идентичности и угрозы разделяют только переданный кэш вычисления, а состав обходится заново. Известные не-противники или необязательная угроза nil не учитываются; нечитаемые, повреждённые или неудачные обязательные факты делают весь результат недоступным. Полный состав не перечисляется, фильтр дальности не применяется, отслеживаемые записи не меняются.

Аргументы

ИмяТипЧто делает
selfRMAddonЭкземпляр аддона Rotation Master (неявно при вызове через двоеточие).
minimumnumberКонечный минимальный встроенный статус угрозы с сохранением знаковых и дробных порогов.
cachetable | nilКэш наблюдений вычисления, принадлежащий вызывающему; при nil запрос выполняется заново.

Возвращает

1number | nilПолное неотрицательное наблюдаемое число, включая ноль, или nil, если недоступно.
2string | nilПричина недоступности по политике, снимку, идентичности или наблюдению угрозы.

Издания

Встроенные помощники регистрируются во всех изданиях. Различается игровой API, который они читают; если нужного API нет, помощник использует запасной вариант или возвращает nil с причиной.

Не читает игровой API напрямую.

Секретные значения (Retail и Forever)

В Retail и Forever игра передаёт аддонам секретные значения. Этот помощник проверяет то, что читает (addon.Platform:CanReadValue), и вместо секретного значения, которое нельзя сравнить, возвращает nil с причиной, например restricted-value. Считайте nil недоступным значением, а не ложью.

Как его вызывает аддон

Зависимости

Исходный код

Core/threat_count_conditions.lua, строка 50. В игре только для чтения; «Дублировать» создаёт редактируемую копию.

Core.threat_count_conditions.GetConditionThreatCount(self, minimum, cache)
    local platform=self.Platform
    local policy=platform:GetCombatDataPolicy()
    if policy~='probe' and policy~='restricted' then return nil,'unsupported-policy' end
    local valid,issue=finite(platform,minimum)
    if not valid then return nil,issue end
    if not platform:CanReadValue(cache) then return nil,'restricted-value' end
    if cache~=nil and type(cache)~='table' then return nil,'invalid-threat-count-cache' end
    if policy=='restricted' then return self:GetConditionNameplateThreatCount(minimum,cache) end
    local snapshot,why=readField(platform,self,'unitsInRange')
    if why then return nil,why end
    if type(snapshot)~='table' then return nil,'unit-snapshot-unavailable' end
    local count=0
    for guid,entity in pairs(snapshot) do
        if not platform:CanReadValue(guid) or not platform:CanReadValue(entity) then return nil,'restricted-value' end
        if type(guid)~='string' or guid=='' or type(entity)~='table' then return nil,'invalid-unit-snapshot' end
        local unit,reason=readField(platform,entity,'unit')
        if reason then return nil,reason end
        if type(unit)~='string' or unit=='' then return nil,'invalid-unit-snapshot' end
        -- The existing forecast identity observer is exactly existence + GUID;
        -- it consumes no health, history, provider or clock facts.
        local observeIdentity=platform.GetHealthForecastIdentityObservation
        if type(observeIdentity)~='function' then return nil,'missing-api' end
        local current,identityReason=addon.Functions.cache.getCached(cache,observeIdentity,platform,unit)
        if not platform:CanReadValue(current) then return nil,'restricted-value' end
        if current==nil then return nil,identityReason or 'unit-guid-unavailable' end
        if current~=false then
            if type(current)~='string' or current=='' then return nil,'invalid-unit-identity' end
            -- A recycled token is excluded; its replacement is not new membership.
            if current==guid then
                local observeThreat=platform.GetUnitThreatObservation
                if type(observeThreat)~='function' then return nil,'missing-api' end
                local status,threatReason=addon.Functions.cache.getCached(cache,observeThreat,platform,unit)
                if not platform:CanReadValue(status) then return nil,'restricted-value' end
                if status==nil then return nil,threatReason or 'threat-data-unavailable' end
                if status~=false then
                    local readable,problem=finite(platform,status)
                    if not readable then return nil,problem end
                    if status>=minimum then count=count+1 end
                end
            end
        end
    end
    return count

Назад: Справочник функций