Llamar como
addon:GetConditionPointResourceV2(unit, cache)
Disponible directamente a través de addon; no hace falta ninguna dependencia.
Qué hace
Resuelve los recursos de puntos usando la correspondencia de clase en vivo original y la caché de identidad, con una política explícita de transporte alternativo de ComboPoints para el jugador de TBC. Una alternativa del jugador que coincide con la tabla en bruto legible Enum.PowerType y el valor ComboPoints capturado al cargar el módulo selecciona target-combo; las entradas explícitas del mapa de clases, otros actores y otras familias conservan power. Una procedencia de la alternativa sustituida, heredada o no demostrable conserva power. Esta política versionada no afirma que UnitPower nativo esté roto ni que sea equivalente. Una ausencia conocida de la unidad devuelve false; las observaciones necesarias no disponibles devuelven nil con un motivo. Aquí no se consulta ninguna cantidad actual ni máxima.
Argumentos
| Nombre | Tipo | Qué hace |
|---|---|---|
self | RMAddon | Instancia del addon Rotation Master (implícita en las llamadas con dos puntos). |
unit | string | Token de unidad seleccionado exacto; solo el token literal player puede seleccionar el transporte de combo de TBC. |
cache | table | nil | Caché de la pasada de evaluación, o nil para observar la identidad directamente. Las observaciones correctas de la clase del jugador pueden usar la caché de identidad a largo plazo existente; la correspondencia de recursos sigue siendo en vivo. |
Retornos
| 1 | number | boolean | nil | Selector entero no negativo explícito, false si se sabe que la unidad está ausente o nil cuando faltan datos necesarios. |
|---|---|---|
| 2 | string | nil | Motivo de política, validación de la consulta o disponibilidad de la identidad o del selector para un selector nil. |
| 3 | string | nil | Solo en un recurso seleccionado: target-combo para la alternativa explícita del jugador de TBC o power para el transporte existente de la unidad seleccionada. |
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 | |||||
|---|---|---|---|---|---|
Enum | |||||
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.
Cómo la llama el addon
- Puntos (evaluate)
local point,reason,transport=addon:GetConditionPointResourceV2(value.unit,cache)
Dependencias
editionPointResource→Core.point_conditions.editionPointResourceplayerClassCacheKey(builtin:Core/point_conditions.lua:playerClassCacheKey)pointComboTypes(builtin:Core/point_conditions.lua:pointComboTypes)pointComboValue(builtin:Core/point_conditions.lua:pointComboValue)pointIdentity→Core.point_conditions.pointIdentity
Código fuente
Core/point_conditions.lua, línea 210. Solo lectura en el juego; Duplicar crea una copia editable.
Core.point_conditions.GetConditionPointResourceV2(self, unit, cache)
local platform=self.Platform
local info=platform:GetClientInfo()
local policy=info.combatDataPolicy
if policy~='probe' and policy~='restricted' then return nil,'unsupported-policy' end
if not platform:CanReadValue(unit) then return nil,'restricted-value' end
if type(unit)~='string' or unit=='' then return nil,'invalid-unit' end
local record,reason=addon.Functions.cache.getCached(cache,pointIdentity,self,unit,playerClassCacheKey)
if not record then return nil,reason end
if not record.exists then return false end
local family=info.family
if policy=='probe' and (family=='era' or family=='progression') then return editionPointResource(platform,info,unit,record.class,cache) end
local points=self.points
if not platform:CanReadValue(points) then return nil,'restricted-value' end
if type(points)~='table' then return nil,'invalid-point-resource-map' end
local fallbackEnum,fallbackTypes
local ok,selected=pcall(function() return points[record.class] end)
if not ok then return nil,'api-error' end
if not platform:CanReadValue(selected) then return nil,'restricted-value' end
if selected==nil or selected==false then
local enum=Enum
if not platform:CanReadValue(enum) then return nil,'restricted-value' end
if type(enum)~='table' then return nil,'point-resource-unavailable' end
local typesOK,types=pcall(function() return enum.PowerType end)
if not typesOK then return nil,'api-error' end
if not platform:CanReadValue(types) then return nil,'restricted-value' end
if type(types)~='table' then return nil,'point-resource-unavailable' end
local fallbackOK,fallback=pcall(function() return types.ComboPoints end)
if not fallbackOK then return nil,'api-error' end
selected=fallback
if not platform:CanReadValue(selected) then return nil,'restricted-value' end
fallbackEnum,fallbackTypes=enum,types
end
if selected==nil then return nil,'point-resource-unavailable' end
if type(selected)~='number' or selected~=selected or selected<0 or selected==math.huge or selected%1~=0 then return nil,'invalid-point-resource' end
if policy=='restricted' and not platform:IsNeverSecretPointPower(selected) then return nil,'unsupported-policy' end
local transport='power'
if unit=='player' and fallbackTypes then
local rawTypes,rawCombo=rawget(fallbackEnum,'PowerType'),rawget(fallbackTypes,'ComboPoints')
if platform:CanReadValue(pointComboTypes) and (not canaccessvalue or canaccessvalue(pointComboTypes))
and platform:CanReadValue(rawTypes) and (not canaccessvalue or canaccessvalue(rawTypes))
and rawequal(fallbackTypes,pointComboTypes) and rawequal(rawTypes,fallbackTypes)
and platform:CanReadValue(rawCombo) and (not canaccessvalue or canaccessvalue(rawCombo)) and rawCombo==selected
and platform:CanReadValue(pointComboValue) and (not canaccessvalue or canaccessvalue(pointComboValue))
and pointComboValue==selected then
local family
if platform:CanReadValue(info) and type(info)=='table' then family=rawget(info,'family') end
if platform:CanReadValue(family) and (not canaccessvalue or canaccessvalue(family)) and family=='tbc' then transport='target-combo' end
end
end
return selected,nil,transport




