Referência › Referência de funções › Core

Core.threat_count_conditions.GetConditionThreatCount

pública

Chame como

addon:GetConditionThreatCount(minimum, cache)

Disponível diretamente por meio de addon; nenhuma dependência é necessária.

O que faz

Conta apenas as unidades indexadas por GUID que já estão no instantâneo de participação observado. Verifica a identidade do token atual antes de usar o observador de ameaça publicado; tokens sabidamente ausentes ou reutilizados são excluídos sem adicionar substitutos. As observações completas de identidade e ameaça compartilham apenas o cache de avaliação fornecido, enquanto a participação é percorrida novamente. Não inimigos conhecidos ou ameaça opcional nil não são contados; dados necessários ilegíveis, malformados ou com falha deixam o resultado inteiro indisponível. Isso não enumera uma lista completa, não aplica filtro de alcance nem modifica os registros rastreados.

Argumentos

NomeTipoO que faz
selfRMAddonInstância do addon Rotation Master (implícita nas chamadas com dois-pontos).
minimumnumberEstado de ameaça nativo mínimo finito, preservando limites com sinal e fracionários.
cachetable | nilCache de observações de avaliação pertencente a quem chama; nil consulta novamente.

Retornos

1number | nilContagem observada completa não negativa, incluindo zero, ou nil quando indisponível.
2string | nilMotivo de disponibilidade da política, do instantâneo, da identidade ou da observação de ameaça.

Edições

As funções auxiliares integradas são registradas em todas as edições. O que muda é a API do jogo que elas leem; quando uma está ausente, a função auxiliar recorre a uma alternativa ou retorna nil com um motivo.

Não lê nenhuma API do jogo diretamente.

Valores secretos (Retail e Forever)

No Retail e no Forever, o jogo entrega valores secretos aos addons. Esta função auxiliar verifica o que lê (addon.Platform:CanReadValue) e retorna nil com um motivo como restricted-value em vez de um valor secreto que não consegue comparar. Trate nil como indisponível, não como false.

Como o addon a chama

  • Contagem de ameaça (evaluate)
    local count,reason=addon:GetConditionThreatCount(value.threat-1,cache)

Dependências

Código-fonte

Core/threat_count_conditions.lua, linha 50. Somente leitura no jogo; Duplicar cria uma cópia editável.

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

Voltar para Referência de funções