Llamar como
addon:GetConditionThreatCount(minimum, cache)
Disponible directamente a través de addon; no hace falta ninguna dependencia.
Qué hace
Cuenta solo las unidades indexadas por GUID que ya están en la instantánea de pertenencia observada. Verifica la identidad del token actual antes de usar el observador de amenaza publicado; los tokens que se sabe que están ausentes o reutilizados se excluyen sin añadir sustitutos. Las observaciones completas de identidad y amenaza solo comparten la caché de evaluación proporcionada, mientras que la pertenencia se recorre de nuevo. La amenaza de no enemigos conocidos o la amenaza opcional nil no se cuentan; los datos necesarios ilegibles, mal formados o fallidos dejan todo el resultado sin disponibilidad. No enumera una lista completa, no aplica un filtro de alcance ni modifica los registros rastreados.
Argumentos
| Nombre | Tipo | Qué hace |
|---|---|---|
self | RMAddon | Instancia del addon Rotation Master (implícita en las llamadas con dos puntos). |
minimum | number | Estado de amenaza nativo mínimo finito, conservando los umbrales con signo y fraccionarios. |
cache | table | nil | Caché de observaciones de evaluación propiedad del llamador; con nil se consulta de nuevo. |
Retornos
| 1 | number | nil | Recuento observado completo no negativo, incluido cero, o nil si no está disponible. |
|---|---|---|
| 2 | string | nil | Motivo de disponibilidad de la política, la instantánea, la identidad o la observación de amenaza. |
Ediciones
Las funciones auxiliares integradas se registran en todas las ediciones. Lo que cambia es la API del juego que leen; donde falta alguna, la función auxiliar recurre a una alternativa o devuelve nil con un motivo.
No lee directamente ninguna API del juego.
Valores secretos (Retail y Forever)
En Retail y Forever, el juego entrega a los addons valores secretos. Esta función auxiliar comprueba lo que lee (addon.Platform:CanReadValue) y, en lugar de un secreto que no puede comparar, devuelve nil con un motivo como restricted-value. Trata nil como no disponible, no como falso.
Cómo la llama el addon
- Recuento de amenaza (evaluate)
local count,reason=addon:GetConditionThreatCount(value.threat-1,cache)
Dependencias
finite→Core.threat_count_conditions.finitereadField→Core.threat_count_conditions.readField
Código fuente
Core/threat_count_conditions.lua, línea 50. Solo lectura en el juego; Duplicar crea una copia editable.
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