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
| Nome | Tipo | O que faz |
|---|---|---|
self | RMAddon | Instância do addon Rotation Master (implícita nas chamadas com dois-pontos). |
minimum | number | Estado de ameaça nativo mínimo finito, preservando limites com sinal e fracionários. |
cache | table | nil | Cache de observações de avaliação pertencente a quem chama; nil consulta novamente. |
Retornos
| 1 | number | nil | Contagem observada completa não negativa, incluindo zero, ou nil quando indisponível. |
|---|---|---|
| 2 | string | nil | Motivo 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
finite→Core.threat_count_conditions.finitereadField→Core.threat_count_conditions.readField
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