Справочник › Справочник функций › Platform

Platform.spells.IsSpellReady

общедоступный

Как вызывать

addon.Platform:IsSpellReady(spell, now)

Доступен напрямую через addon; зависимость не нужна.

Что делает

Проверяет, можно ли рекомендовать заклинание сейчас, допуская заклинание, оставшееся восстановление которого заканчивается вместе с текущим общим временем восстановления. В Retail и Forever, где время восстановления в бою скрыто, готовность вместо этого определяется по никогда не скрываемым флагам isEnabled, isActive и isOnGCD. Проверяется только готовность по восстановлению; изученность, дальность и достаточность ресурсов не проверяются. Передайте время вычисления из evalStart или GetTime().

Аргументы

ИмяТипЧто делает
selfRMPlatformАдаптер платформы Rotation Master. При обращении через точку первым аргументом нужен addon.Platform; при вызове через двоеточие он передаётся неявно.
spellnumber | stringID заклинания или распознаваемое клиентом название заклинания, восстановление которого нужно проверить.
nownumberТекущее время вычисления в секундах по GetTime(), обычно evalStart.

Возвращает

1boolean | niltrue, если готово к концу ГКД; false, если рекомендацию не допускает собственное восстановление; nil, если клиент не может дать читаемый результат.
2string | nilПричина недоступности или ошибки проверки, если результат равен nil.

Издания

Встроенные помощники регистрируются во всех изданиях. Различается игровой API, который они читают; если нужного API нет, помощник использует запасной вариант или возвращает nil с причиной.

  • Недоступно в этом издании (причина — во всплывающей подсказке)
  • Только пока включены запасные реализации Blizzard для устаревших функций
Игровой APIClassic EraTBC AnniversaryClassic ProgressionForeverRetail
GetTimeClassic EraTBC AnniversaryClassic ProgressionForeverRetail

Секретные значения (Retail и Forever)

В Retail и Forever игра передаёт аддонам секретные значения. Этот помощник проверяет то, что читает (addon.Platform:CanReadValue), и вместо секретного значения, которое нельзя сравнить, возвращает nil с причиной, например restricted-value. Считайте nil недоступным значением, а не ложью.

Пример

local ready = addon.Platform:IsSpellReady(value.spell, evalStart)
if ready == nil then return nil end
return ready

Зависимости

Исходный код

Platform/spells.lua, строка 575. В игре только для чтения; «Дублировать» создаёт редактируемую копию.

Platform.spells.IsSpellReady(self, spell, now)
    if not self:CanReadValue(now) then return nil, "restricted-value" end
    if type(now)~="number" or now~=now or now==math.huge or now==-math.huge then
        return nil, "invalid-time"
    end
    local start,duration,enabled,reason,active,onGCD=cooldownValues(self,spell)
    if start==nil then
        if active==nil then return nil,reason end
        return flagReadiness(self,enabled,active,onGCD,now)
    end
    if not enabled then return false end
    local expires=start+duration
    if duration==0 or expires<=now then return true end

    if not gcdSpell then self:GetGlobalCooldown() end
    local gcdStart,gcdDuration,gcdEnabled,why,gcdActive=cooldownValues(self,gcdSpell)
    if gcdStart==nil then
        -- The GCD's times are hidden: one known not to be running cannot
        -- cover this spell's own, still running, cooldown.
        if gcdActive~=nil and (not gcdEnabled or not gcdActive) then return false end
        return nil,why
    end
    if not gcdEnabled or gcdDuration==0 then return false end
    -- modRate controls cooldown animation; API timestamps/duration already
    -- describe expiration in GetTime seconds, so do not divide them by it.
    local gcdExpires=gcdStart+gcdDuration
    return gcdExpires>now and expires<=gcdExpires+0.001

Назад: Справочник функций