Llamar como
addon.Platform:GetUnitThreatObservation(unit)
Disponible directamente a través de addon; no hace falta ninguna dependencia.
Qué hace
Observa en orden la existencia de la unidad seleccionada, la hostilidad desde el jugador y luego el estado de amenaza del jugador sobre esa unidad. Una ausencia conocida, un no enemigo y un estado de amenaza nil leído correctamente devuelven false, conservando el predicado de sin amenaza. Los números de estado finitos, incluido cero, conservan su significado de comparación original. Los datos necesarios que faltan, fallan, son nil, están restringidos o mal formados devuelven nil con un motivo. No se añade deducción de posibilidad de ataque, muerte, combate ni vehículo.
Argumentos
| Nombre | Tipo | Qué hace |
|---|---|---|
self | RMPlatform | Adaptador de plataforma de Rotation Master (implícito en las llamadas con dos puntos). |
unit | string | Token de unidad exacto usado para la existencia y como destinatario de las consultas de hostilidad y amenaza del jugador. |
Retornos
| 1 | number | boolean | nil | Estado de amenaza nativo finito, false si se sabe que hay ausencia, no es enemigo o no hay amenaza, o nil para observaciones no disponibles. |
|---|---|---|
| 2 | string | nil | Motivo de política, validación de la consulta o disponibilidad para una observación de amenaza nil. |
Ediciones
Las funciones auxiliares integradas se registran en todas las ediciones. Lo que cambia es la API del juego que leen; donde falta alguna, la función auxiliar recurre a una alternativa o devuelve nil con un motivo.
- No disponible en esa edición (el motivo aparece en la información emergente)
- Solo mientras estén activas las alternativas de Blizzard para API obsoletas
| API del juego | |||||
|---|---|---|---|---|---|
UnitExists | |||||
UnitIsEnemy | |||||
UnitThreatSituation | |||||
canaccessvalue |
Valores secretos (Retail y Forever)
En Retail y Forever, el juego entrega a los addons valores secretos. Esta función auxiliar comprueba lo que lee (addon.Platform:CanReadValue) y, en lugar de un secreto que no puede comparar, devuelve nil con un motivo como restricted-value. Trata nil como no disponible, no como falso.
Ejemplo
local status = addon.Platform:GetUnitThreatObservation("target")
if status == nil then return nil end
-- false means no target, not an enemy, or no threat; 2 and 3 mean you are tanking
return status ~= false and status >= 2Código fuente
Platform/threat.lua, línea 19. Solo lectura en el juego; Duplicar crea una copia editable.
Platform.threat.GetUnitThreatObservation(self, unit)
local policy=self:GetCombatDataPolicy()
if policy~='probe' and policy~='restricted' then return nil,'unsupported-policy' end
if not self:CanReadValue(unit) then return nil,'restricted-value' end
if type(unit)~='string' or unit=='' then return nil,'invalid-unit' end
if type(UnitExists)~='function' then return nil,'missing-api' end
local existsOk,exists=pcall(UnitExists,unit)
if not existsOk then return nil,'api-error' end
if not self:CanReadValue(exists) then return nil,'restricted-value' end
if exists==nil then return nil,'unit-data-unavailable' end
if type(exists)~='boolean' then return nil,'invalid-api-result' end
if not exists then return false end
if type(UnitIsEnemy)~='function' then return nil,'missing-api' end
local enemyOk,enemy=pcall(UnitIsEnemy,'player',unit)
if not enemyOk then return nil,'api-error' end
if not self:CanReadValue(enemy) then return nil,'restricted-value' end
if enemy==nil then return nil,'unit-data-unavailable' end
if type(enemy)~='boolean' then return nil,'invalid-api-result' end
if not enemy then return false end
if type(UnitThreatSituation)~='function' then return nil,'missing-api' end
local threatOk,threat=pcall(UnitThreatSituation,'player',unit)
if not threatOk then return nil,'api-error' end
if not self:CanReadValue(threat) then return nil,'restricted-value' end
if canaccessvalue and not canaccessvalue(threat) then return nil,'restricted-value' end
if threat==nil then return false end
if type(threat)~='number' or threat~=threat or threat==math.huge or threat==-math.huge then return nil,'invalid-api-result' end
return threat




