Referenz › Funktionsreferenz › Conditions

Conditions.totem.findSpecific

Abhängigkeit

Aufruf als

Conditions.totem.findSpecific(value, cache, start, compareTime)

Erfassen Sie die Abhängigkeit Conditions.totem.findSpecific und rufen Sie sie dann unter diesem Namen auf. Ein Aufruf über den Namensraum übergibt kein self: Verwenden Sie einen Doppelpunkt-Aufruf oder übergeben Sie das Objekt selbst.

Was sie bewirkt

Searches the totem slots for an active totem matching value.spell, by spell ID or name (only the exact spell ID when value.ranked is set). With compareTime it also requires the totem's remaining time, rounded to 3 decimals, to pass value.operator and value.value; an unreadable slot makes a non-match unavailable.

Argumente

NameTypWas sie bewirkt
valuetableCondition settings: spell, ranked and, for timed checks, operator and value.
cachetable | nilEvaluation-pass cache passed to getCached, or nil to read directly.
startnumber | nilEvaluation start time; nil uses GetTime().
compareTimebooleanTrue to also compare the remaining time.

Rückgabewerte

1boolean | nilTrue when a matching totem is found, false when none is, or nil when a slot could not be read.
2string | nilReason for nil, such as totem-data-unavailable, totem-rank-unavailable or totem-identity-unavailable.

Editionen

Integrierte Hilfsfunktionen werden auf jeder Edition registriert. Unterschiedlich ist die Spiel-API, die sie lesen; fehlt eine, weicht die Hilfsfunktion aus oder gibt nil mit einem Grund zurück.

Sie liest keine Spiel-API direkt.

Wie das Addon sie aufruft

Abhängigkeiten

Quelle

Conditions/totem.lua, Zeile 102. Im Spiel schreibgeschützt; Duplizieren erstellt eine bearbeitbare Kopie.

Conditions.totem.findSpecific(value, cache, start, compareTime)
    local target,reason=observe(cache,platform.GetSpellInfo,value.spell)
    if not target then return nil,reason end
    local count,why=observe(cache,platform.GetTotemSlotCount)
    if not count then return nil,why end
    local unavailable
    for slot=1,count do
        local record,problem=observe(cache,platform.GetTotemInfo,slot)
        if not record then unavailable=unavailable or problem or "totem-data-unavailable"
        elseif record.active and remaining(record,start)>0 then
            local matches=false
            if value.ranked then
                if record.spellID then matches=record.spellID==value.spell
                elseif record.name==target.name or record.name=="" then unavailable=unavailable or "totem-rank-unavailable" end
            else
                matches=record.spellID==value.spell or record.name==target.name
                if not matches and record.name=="" then
                    local info,issue
                    if record.spellID then info,issue=observe(cache,platform.GetSpellInfo,record.spellID) end
                    if info then matches=info.name==target.name
                    else unavailable=unavailable or issue or "totem-identity-unavailable" end
                end
            end
            if matches and (not compareTime or addon.compare(value.operator,addon.round(remaining(record,start),3),value.value)) then return true end
        end
    end
    if unavailable then return nil,unavailable end
    return false

Zurück zu Funktionsreferenz