Appel
addon:GetConditionThreatCount(minimum, cache)
Disponible directement via addon ; aucune dépendance n'est nécessaire.
Ce qu'elle fait
Ne compte que les unités indexées par GUID déjà présentes dans l'instantané d'appartenance observé. Vérifie l'identité actuelle de l'identifiant avant d'utiliser l'observateur de menace publié ; les identifiants absents connus ou réutilisés sont exclus sans être remplacés. Les observations complètes d'identité et de menace ne partagent que le cache d'évaluation fourni, tandis que l'appartenance est parcourue à nouveau. Une unité connue comme non ennemie ou une menace nil facultative n'est pas comptée ; des faits requis illisibles, mal formés ou en échec rendent tout le résultat indisponible. Cela n'énumère pas une composition complète, n'applique pas de filtre de portée et ne modifie pas les enregistrements suivis.
Arguments
| Nom | Type | Ce qu'elle fait |
|---|---|---|
self | RMAddon | Instance de l'addon Rotation Master (implicite avec un appel par deux-points). |
minimum | number | Statut de menace natif minimal fini, en conservant les seuils signés et fractionnaires. |
cache | table | nil | Cache d'observations d'évaluation appartenant à l'appelant ; nil interroge à nouveau. |
Retours
| 1 | number | nil | Décompte observé complet et non négatif, zéro compris, ou nil si indisponible. |
|---|---|---|
| 2 | string | nil | Motif de politique ou de disponibilité de l'instantané, de l'identité ou de l'observation de menace. |
Éditions
Les fonctions utilitaires intégrées sont enregistrées sur toutes les éditions. Ce qui diffère, c'est l'API du jeu qu'elles lisent ; quand l'une manque, la fonction utilitaire se rabat sur une alternative ou renvoie nil avec une raison.
Elle ne lit directement aucune API du jeu.
Valeurs secrètes (Retail et Forever)
Sur Retail et Forever, le jeu transmet aux addons des valeurs secrètes. Cette fonction utilitaire vérifie ce qu'elle lit (addon.Platform:CanReadValue) et renvoie nil avec une raison telle que restricted-value au lieu d'une valeur secrète qu'elle ne peut pas comparer. Traitez nil comme indisponible, pas comme false.
Comment l'addon l'appelle
- Décompte de menace (evaluate)
local count,reason=addon:GetConditionThreatCount(value.threat-1,cache)
Dépendances
finite→Core.threat_count_conditions.finitereadField→Core.threat_count_conditions.readField
Source
Core/threat_count_conditions.lua, ligne 50. En lecture seule dans le jeu ; Dupliquer crée une copie modifiable.
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