Reference › Function reference › Platform

Platform.spells.cooldownValues

dependency

Call as

Platform.spells.cooldownValues(self, spell)

Record the dependency Platform.spells.cooldownValues, then call it by that name. A namespaced call does not pass self: use a colon call or pass the object yourself.

What it does

Reads a spell cooldown as separate values for the readiness checks. When the platform is marked secretsUnrestricted and the legacy GetSpellCooldown exists it calls that directly; otherwise it uses addon.Platform:GetSpellCooldown, passing along its never-secret flags when the times are restricted.

Arguments

NameTypeWhat it does
selfRMPlatformRotation Master platform adapter (normally addon.Platform), used for its CanReadValue check.
spellnumber | stringSpell ID or client-recognized spell name.

Returns

1number | nilCooldown start time in GetTime() seconds; nil when unavailable.
2number | nilCooldown duration in seconds; nil when unavailable.
3boolean | nilWhether the cooldown is enabled; when the times are unavailable, the never-secret isEnabled flag if it could be read.
4string | nilReason when the times are unavailable.
5boolean | nilWith restricted-value from GetSpellCooldown only: isActive.
6boolean | nilWith restricted-value from GetSpellCooldown only: isOnGCD; may be nil.

Editions

Built In helpers are registered on every edition. What differs is the game API they read; where one is missing the helper falls back or returns nil with a reason.

  • Not available on that edition (the reason is in the tooltip)
  • Only while Blizzard's deprecation fallbacks are on
Game APIClassic EraTBC AnniversaryClassic progressionForeverRetail
GetSpellCooldownClassic EraTBC AnniversaryClassic progressionForeverRetail

Secret values (Retail and Forever)

On Retail and Forever the game hands addons secret values. This helper checks what it reads (addon.Platform:CanReadValue) and returns nil with a reason such as restricted-value instead of a secret it cannot compare. Treat nil as unavailable, not as false.

How the addon calls it

Dependencies

Source

Platform/spells.lua, line 507. Read only in game; Duplicate makes an editable copy.

Platform.spells.cooldownValues(self, spell)
    local legacy=self.secretsUnrestricted and GetSpellCooldown
    if type(legacy)~="function" then
        local cooldown,reason,enabled,active,onGCD=self:GetSpellCooldown(spell)
        if not cooldown then return nil,nil,enabled,reason,active,onGCD end
        return cooldown.startTime,cooldown.duration,cooldown.isEnabled
    end
    local valid,reason=identifier(spell)
    if not valid then return nil,nil,nil,reason end
    local ok,start,duration,enabled=pcall(legacy,spell)
    if not ok then return nil,nil,nil,"api-error" end
    if not self:CanReadValue(start) or not self:CanReadValue(duration) or not self:CanReadValue(enabled) then
        return nil,nil,nil,"restricted-value"
    end
    if start==nil then return nil,nil,nil,"spell-data-unavailable" end
    if enabled~=0 and enabled~=1 and enabled~=true and enabled~=false then return nil,nil,nil,"invalid-api-result" end
    if not finiteNonNegative(start) or not finiteNonNegative(duration) then return nil,nil,nil,"invalid-api-result" end
    return start,duration,enabled==1 or enabled==true

Back to Function reference