Référence › Référence des fonctions › Core

Core.threat_count_conditions.GetConditionThreatCount

publique

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

NomTypeCe qu'elle fait
selfRMAddonInstance de l'addon Rotation Master (implicite avec un appel par deux-points).
minimumnumberStatut de menace natif minimal fini, en conservant les seuils signés et fractionnaires.
cachetable | nilCache d'observations d'évaluation appartenant à l'appelant ; nil interroge à nouveau.

Retours

1number | nilDécompte observé complet et non négatif, zéro compris, ou nil si indisponible.
2string | nilMotif 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

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

Retour à Référence des fonctions