Chame como
addon.Platform:GetHealthForecastValueObservation(unit, kind)
Disponível diretamente por meio de addon; nenhuma dependência é necessária.
O que faz
Lê um valor escalar de vida preguiçoso após uma verificação de identidade separada. O tipo current usa exatamente UnitHealth(unit); maximum usa exatamente UnitHealthMax(unit). Clientes com política de sondagem ou restrita aceitam números finitos legíveis não negativos, incluindo zero. Nenhuma chamada repetida de existência/GUID nem alternativa de tupla é adicionada.
Argumentos
| Nome | Tipo | O que faz |
|---|---|---|
self | RMPlatform | Adaptador de plataforma do Rotation Master (implícito nas chamadas com dois-pontos). |
unit | string | Token de unidade selecionado não vazio; esta chamada por si só não estabelece a presença. |
kind | string | Tipo escalar fechado: current ou maximum. |
Retornos
| 1 | number | nil | Valor escalar de vida nativo finito e não negativo, ou nil quando indisponível. |
|---|---|---|
| 2 | string | nil | Motivo de disponibilidade da política, da validação ou de uma observação necessária. |
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 | |||||
|---|---|---|---|---|---|
UnitHealth | |||||
UnitHealthMax | |||||
canaccessvalue |
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 current = addon.Platform:GetHealthForecastValueObservation("target", "current")
local maximum = addon.Platform:GetHealthForecastValueObservation("target", "maximum")
if not current or not maximum or maximum == 0 then return nil end
return current / maximum <= 0.35Dependências
finite→Platform.health_forecast.finite
Código-fonte
Platform/health_forecast.lua, linha 81. Somente leitura no jogo; Duplicar cria uma cópia editável.
Platform.health_forecast.GetHealthForecastValueObservation(self, unit, kind)
local policy=self:GetCombatDataPolicy()
if policy~='probe' and policy~='restricted' then return nil,'unsupported-policy' end
if not self:CanReadValue(unit) or not self:CanReadValue(kind) then return nil,'restricted-value' end
if type(unit)~='string' or unit=='' then return nil,'invalid-unit' end
local api
if kind=='current' then api=UnitHealth
elseif kind=='maximum' then api=UnitHealthMax
else return nil,'invalid-health-forecast-query' end
if type(api)~='function' then return nil,'missing-api' end
local ok,value=pcall(api,unit)
if not ok then return nil,'api-error' end
if not self:CanReadValue(value) then return nil,'restricted-value' end
if canaccessvalue and not canaccessvalue(value) then return nil,'restricted-value' end
if value==nil then return nil,'health-data-unavailable' end
if not finite(value) or value<0 then return nil,'invalid-api-result' end
return value




