Private Auras
Blizzard via WoW Discord
While we have a variety of plans for future patches (12.0.7 and beyond), including many more quality-of-life fixes for addon developers, we wanted to take a moment to talk about one area in particular that we are putting a lot of thought into: Auras (particularly of the Private variety).
We created the Private Aura system back in 10.1 as a means to prevent addons from automating certain very specific fight mechanics. In some ways Private Auras can be viewed as the beginning of our experimentation with adjusting addon capabilities, and while they certainly had their issues, for the most part they served their purpose (albeit in a rather heavy-handed way). When we started developing the Secret Value system, we had hoped (planned even) to be able to essentially retire the Private Aura system and replace it with just secrets.
Unfortunately, as Midnight Alpha & Beta progressed it became clear that relying on Secret Values alone was not going to be enough to prevent addon automation involving auras. And so, we ended up having to go in almost the exact opposite direction: we made MOST encounter debuffs private auras rather than just a select few. While this approach gave us the security we needed for Midnight Season 1, it also came with some significant downsides. Our own private aura displays don't currently have full parity with normal auras, and they aren’t supported in nameplates. On top of that they also require our encounter designers to be very diligent about flagging almost every encounter debuff as private, which is cumbersome and very easy to get wrong.
All this is to say that we are not happy with the current state of auras as they pertain to addons, and we are planning to make some large changes to them. We don't have a hard target yet for when this rework will happen, but just to ease your minds a little it definitely will NOT be in 12.0.5 or 12.0.7. What shape this new aura system will take is also nowhere near decided yet so we won't have any specifics for a while yet, but the overarching goals can be summed up as:
Auras need to be more secure than they currently are (with less upkeep for designers).
Auras still need to be customizable and displayable by addons.
And then as a bonus goal we would like auras to be more performant for addons.
We will be consulting with addon developers as we start to plan out work on this new system, so don't worry about this being dropped on you out of the blue. We just wanted to give you an idea of where our heads are at, so it doesn't come as a surprise later.
Oh and just to make Meo happy, Jar Jar would like to say: Wesa will have mooie tings to share berry soon!
12.0.5 PTR Live Changes
Blizzard has also released more technical details for Addon authors for the first PTR build of Patch 12.0.5.
Coming in 12.0.5 PTR 1
Numeric Formatting
We have added three new Lua object types for numeric formatting: AbbreviatedNumberFormatter, NumericRuleFormatter, and SecondsFormatter. These types can be supplied with secret numbers through the Format functions on duration objects.
We're considering adjusting the various "display count" APIs (eg. GetSpellDisplayCount) to accept formatter objects, but this would be a breaking change (let us know your thoughts).
Spell & Item Charge APIs
The following APIs will now return a zero-span duration object when the queried spell is at maximum charges: GetSpellBookItemChargeDuration, GetSpellChargeDuration, GetActionChargeDuration.
Duration Objects
Duration objects that measure a zero-span are now considered fully elapsed.
Auras
The isHelpful, isHarmful, isRaid, isNameplateOnly, and isFromPlayerOrPlayerPet booleans on aura data tables are no longer secret.
Transmog
Added GetTransmogOutfitIndex to the restricted environment. Values returned from this can be used with the new /outfit slash command.
Lua Documentation
Added a new Predicates table to out Lua API documentation, which will provide a description of the restrictions on each API.
Misc.
The Ambiguate function now accepts secrets from addons.
Added a Cooldown:SetCountdownMillisecondsThreshold(seconds) API. When a cooldown frame is rendering a time below this number of seconds, it will be displayed as a decimal value with one decimal place (e.g. "8.7").
String formatting APIs no longer honor field width modifiers for secret string values (e.g. the "%.5s" format will no longer truncate a secret string).
The UnitSpellTargetName API now only returns names for player units.
Bug fixes
The C_EncounterEvents.GetEventSound API no longer errors when called.
Coming in upcoming 12.0.5 PTRs
Misc.
The UnitTokenFromGUID API (and various others) will no longer return arena, nameplate, boss, party, raid, or target-of-target unit tokens when unit identities are secret.
UnitTokenNamePlate APIs will no longer accept party, raid, or target-of-target unit tokens.
Addon execution throttles will no longer apply while the PLAYER_LOGOUT and ADDONS_UNLOADING events are being processed.
