This change reintroduces FRAME_UPDATE for units not in multiUnitUnits (e.g., player, target) to ensure smooth power updates, similar to UNIT_POWER_FREQUENT in retail. The new logic tho avoids registering other unit events when FRAME_UPDATE is used, improving performance and preventing multiple updates per frame, than before.
- Closes#37
Due to an error in the implementation of Class & Spec in Load Conditions and Triggers (Unit Characteristics, Power, Health, Class/Spec, BT2 actualSpec), the system now also applies Retail logic.
As a result of this issue, all data has been erased and must be reselected.
- Closes#29
Reintroduces UI scale issues when playing at 1080p pixel-perfect (0.711 scale).
You need to account for this by adjusting the Aura size slightly up or down by a small number, depending on scaling.
We have this anyway across the addon, so it is what it is...
this is a fix for GameTooltip for Spells. In 3.3.5 API, GameTooltip:SetSpellByID only allows player known spells to be set.
The workaround for this is using GameTooltip:SetHyperlink() and hardcoding an escape sequence for spells.
Add methods to the states/allstates table that helps with creating,
updating or remove states in an optimized way
## Advantage of using this function instead of doing a states[key] = {
... }
- If already created, update existing state, and return true if any
value was changed, this can help reduce amount of resources an aura use
- Automatically `return true` when using these functions and any change
was made
## Examples
```Lua
function(states, event, ...)
if event == "PLAYER_TARGET_CHANGED" then
if UnitExists("target") then
-- if state exists it's updated, not replaced
-- show & changed fields can be skipped
states:Update("", {
name = UnitName("target"),
duration = 5,
expirationTime = GetTime() + 5,
progressType = "timed",
autoHide = true
})
else
-- wipe
states:RemoveAll()
end
end
-- no need to return true
end
```
with clones
```Lua
function(states, event, ...)
local currentEssence = UnitPower("player", Enum.PowerType.Essence)
local maxEssence = UnitPowerMax("player", Enum.PowerType.Essence)
for i = 1, 6 do
if i > maxEssence then
states:Remove(i) -- wipe allstates[6]
else
local value = currentEssence >= i and 1 or 0
local newState = {
progressType = "static",
value = value,
total = 1
}
states:Update(i, newState)
end
end
-- no need to return true
end
```