Как вызывать
addon.Platform:IsSpellReady(spell, now)
Доступен напрямую через addon; зависимость не нужна.
Что делает
Проверяет, можно ли рекомендовать заклинание сейчас, допуская заклинание, оставшееся восстановление которого заканчивается вместе с текущим общим временем восстановления. В Retail и Forever, где время восстановления в бою скрыто, готовность вместо этого определяется по никогда не скрываемым флагам isEnabled, isActive и isOnGCD. Проверяется только готовность по восстановлению; изученность, дальность и достаточность ресурсов не проверяются. Передайте время вычисления из evalStart или GetTime().
Аргументы
| Имя | Тип | Что делает |
|---|---|---|
self | RMPlatform | Адаптер платформы Rotation Master. При обращении через точку первым аргументом нужен addon.Platform; при вызове через двоеточие он передаётся неявно. |
spell | number | string | ID заклинания или распознаваемое клиентом название заклинания, восстановление которого нужно проверить. |
now | number | Текущее время вычисления в секундах по GetTime(), обычно evalStart. |
Возвращает
| 1 | boolean | nil | true, если готово к концу ГКД; false, если рекомендацию не допускает собственное восстановление; nil, если клиент не может дать читаемый результат. |
|---|---|---|
| 2 | string | nil | Причина недоступности или ошибки проверки, если результат равен nil. |
Издания
Встроенные помощники регистрируются во всех изданиях. Различается игровой API, который они читают; если нужного API нет, помощник использует запасной вариант или возвращает nil с причиной.
- Недоступно в этом издании (причина — во всплывающей подсказке)
- Только пока включены запасные реализации Blizzard для устаревших функций
| Игровой API | |||||
|---|---|---|---|---|---|
GetTime |
Секретные значения (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Зависимости
cooldownValues→Platform.spells.cooldownValuesflagReadiness→Platform.spells.flagReadinessgcdSpell(builtin:Platform/spells.lua:gcdSpell)
Исходный код
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




