Call as
addon.Platform:GetRuneCooldownObservation(index)
Available directly through addon; no dependency is needed.
What it does
Read one protected GetRuneCooldown tuple for an exact native slot. Normalize ready, start and duration independently: ready requires a readable Boolean, while each time requires a readable finite number and preserves signed, fractional and zero values. Every unavailable field carries its own reason. A successful empty tuple yields a partial record; missing capability, policy or native-call failure yields nil. Never infer ready from timing or timing from ready. Cache this complete record at the caller to share one observation between rune-count and cooldown predicates.
Arguments
| Name | Type | What it does |
|---|---|---|
self | RMPlatform | Rotation Master platform adapter (implicit with colon calls). |
index | number | Exact integral native rune slot from 1 through 6. |
Returns
| 1 | table | nil | Partial record containing ready or readyReason, start or startReason, and duration or durationReason; nil only when the query itself is unavailable. |
|---|---|---|
| 2 | string | nil | Policy, slot-validation, capability or native-call availability reason for a nil record. |
Editions
Built In helpers are registered on every edition. What differs is the game API they read; where one is missing the helper falls back or returns nil with a reason.
- Not available on that edition (the reason is in the tooltip)
- Only while Blizzard's deprecation fallbacks are on
| Game API | |||||
|---|---|---|---|---|---|
GetRuneCooldown |
Secret values (Retail and Forever)
On Retail and Forever the game hands addons secret values. This helper checks what it reads (addon.Platform:CanReadValue) and returns nil with a reason such as restricted-value instead of a secret it cannot compare. Treat nil as unavailable, not as false.
Example
local rune = addon.Platform:GetRuneCooldownObservation(1)
if not rune or rune.ready == nil then return nil end
return rune.readyDependencies
numberField→Platform.runes.numberFieldvalidIndex→Platform.runes.validIndex
Source
Platform/runes.lua, line 72. Read only in game; Duplicate makes an editable copy.
Platform.runes.GetRuneCooldownObservation(self, index)
local policy=self:GetCombatDataPolicy()
if policy~='probe' and policy~='restricted' then return nil,'unsupported-policy' end
local valid,reason=validIndex(self,index)
if not valid then return nil,reason end
local api=GetRuneCooldown
if type(api)~='function' then return nil,'missing-api' end
local ok,tuple=pcall(function() return {api(index)} end)
if not ok then return nil,'api-error' end
local record={}
record.start,record.startReason=numberField(self,tuple[1],'rune-start-unavailable')
record.duration,record.durationReason=numberField(self,tuple[2],'rune-duration-unavailable')
local ready=tuple[3]
if not self:CanReadValue(ready) then record.readyReason='restricted-value'
elseif ready==nil then record.readyReason='rune-ready-unavailable'
elseif type(ready)~='boolean' then record.readyReason='invalid-api-result'
else record.ready=ready end
return record




