Chame como
addon.Platform:IsSpellReady(spell, now)
Disponível diretamente por meio de addon; nenhuma dependência é necessária.
O que faz
Verifica se um feitiço pode ser recomendado agora, permitindo um feitiço cujo tempo de recarga restante termina junto com o tempo de recarga global atual. No Retail e no Forever, onde os tempos de recarga são secretos em combate, a prontidão vem das flags isEnabled, isActive e isOnGCD, que nunca são secretas. Verifica apenas a prontidão do tempo de recarga; não verifica se o feitiço foi aprendido, o alcance nem se há recursos para usá-lo. Passe o tempo de avaliação a partir de evalStart ou GetTime().
Argumentos
| Nome | Tipo | O que faz |
|---|---|---|
self | RMPlatform | Adaptador de plataforma do Rotation Master. Uma referência com ponto exige addon.Platform como primeiro argumento; uma chamada com dois-pontos o fornece implicitamente. |
spell | number | string | ID de feitiço ou nome de feitiço reconhecido pelo cliente cujo tempo de recarga deve ser verificado. |
now | number | Momento de avaliação atual em segundos a partir de GetTime(), normalmente evalStart. |
Retornos
| 1 | boolean | nil | True quando estiver pronto ao fim do tempo de recarga global; false quando o próprio tempo de recarga impede a recomendação; nil quando o cliente não consegue fornecer um resultado legível. |
|---|---|---|
| 2 | string | nil | Motivo de disponibilidade ou de validação quando o resultado é nil. |
Edições
As funções auxiliares integradas são registradas em todas as edições. O que muda é a API do jogo que elas leem; quando uma está ausente, a função auxiliar recorre a uma alternativa ou retorna nil com um motivo.
- Indisponível nessa edição (o motivo está na dica)
- Só enquanto as alternativas da Blizzard para APIs obsoletas estiverem ativas
| API do jogo | |||||
|---|---|---|---|---|---|
GetTime |
Valores secretos (Retail e Forever)
No Retail e no Forever, o jogo entrega valores secretos aos addons. Esta função auxiliar verifica o que lê (addon.Platform:CanReadValue) e retorna nil com um motivo como restricted-value em vez de um valor secreto que não consegue comparar. Trate nil como indisponível, não como false.
Exemplo
local ready = addon.Platform:IsSpellReady(value.spell, evalStart)
if ready == nil then return nil end
return readyDependências
cooldownValues→Platform.spells.cooldownValuesflagReadiness→Platform.spells.flagReadinessgcdSpell(builtin:Platform/spells.lua:gcdSpell)
Código-fonte
Platform/spells.lua, linha 575. Somente leitura no jogo; Duplicar cria uma cópia editável.
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




