
Addons in Endgame Content
Addons have been a popular discussion topic over the last couple years, with boss mods, WeakAuras, and other addons getting so powerful that many players feel like it’s impacting their enjoyment of the game. Blizzard has responded to questions on Addons in endgame content multiple times over the last couple years, all the way back before Dragonflight, to when Private Auras were announced, and even recently with them revealing that certain addon functionalities are likely being clawed back.
They’ve acknowledge multiple times that they have to acknowledge the existence of Addons when creating raid encounters, and there’s an ongoing arms race between Addon developers and Blizzard — Blizzard is having to design encounters assuming everyone is using cutting-edge addons and WeakAuras, which leads to incredibly complex fights, which leads to more players having to use addons and WeakAuras, and so on. As such in PCGamer’s Interview with Ion Hazzikostas in December, he said
I think an area where we likely will want to start clawing back some functionality, as long as we can make sure that our baseline game experience is offering players the information they need to have an engaging, elegant time.
Similarly, with the initial UI revamp back in Dragonflight, Ion was asked about addon features coming to the base UI and he said this:
Crash Reed who is one of the UI designers speaking in that deep dive, one of the things that he’s worked on is kind of trying to replicate what a lot of people do with weak auras, which is centralizing information about buff uptime, debuff uptime, cooldown tracking – kind of pulling that information towards the center of your screen, so that the default UI experience, we can flag abilities for your class as things that you should be able to track very visibly. We can even show externals; if you’re a tank and someone puts Pain Suppression on you, Pain Suppression duration should be right there on the middle of your screen under your character if you opt to have that on, next to your Shield Wall or whatever else, because that’s helping you manage your own ability usage. So again, of course a pro tank with weak auras is going to customize things just for them, but we want the default out of the box experience to be much much better, and we know that it’s not realistic to design mechanics that ask you to track uptime of a buff, when that buff is a flashing thing in the corner of your screen 12 inches away from where your eyes are focused otherwise. We need to do better, Dragonflight’s UI isn’t just aesthetic, it’s trying to tackle that too.
It’s been clear that improving that Blizzard has looked into putting more features into their base UI, and have been looking into WeakAuras functionality, while also recently looking into removing some addon functionality. Could these be related?
The New Lua Files
In the latest Patch 11.1 PTR build, two new lua files were added with interesting names: CooldownViewerConstantsDocumentation and CooldownViewerDocumentation. Similar to the player housing documentation that was originally found on the Cataclysm PTR (and has now shown up in this 11.1 PTR build), this may signify an upcoming feature.
The full files can be found at the bottom of the post but here are some highlights:
- There are a couple of categories:
Essential - Utility
- TrackedBuff
- TrackedBar
There are also some fields for cooldowns:
- spellID
- linkedSpellIDs
- selfAura
- hasAura
- charges
From initial speculation, this looks like at minimum it could be a default UI version of a cooldown tracker, similar to OmniCD. You could probably make an argument that this could go one step further and allow for some WeakAuras functionality in the base UI — being able to track ‘essential’ rotational buffs, track ‘utility’ cooldowns of you and your group, buffs and cast bars of friendlies or enemies.
As Ion mentioned, one of the main things players use WeakAuras for is moving important buffs and debuffs to the center of their screen where you can see them during a hectic encounter, without moving all of them there. If there was a way to do this using the default UI, this would be a big benefit to many players!
Speculation
This is far from conclusive and is only speculation at this point due to only thing we’ve heard on this being two lua documents. That being said, if this does end of being real, we know that Player Housing is coming in Midnight, so maybe we’ll find out some information about this in Midnight as well!
I personally think at minimum, this is some form of party cooldown tracking, similar to OmniCD or what WoWEsports uses on their broadcasts.
However, this could be the start of a full in-house version of WeakAuras. We know that Blizzard has been looking at Addon usage in raids and have identified it as a problem, but they couldn’t really do anything about it at the time. But with in-house WeakAuras, they’d be able to control exactly what the system can see and do, and then have the ability to scale back raids to compensate.
Full Files
CooldownViewerConstantsDocumentation.lua
local CooldownViewerConstants =
{
Tables =
{
{
Name = “CooldownViewerCategory”,
Type = “Enumeration”,
NumValues = 4,
MinValue = 0,
MaxValue = 3,
Fields =
{
{ Name = “Essential”, Type = “CooldownViewerCategory”, EnumValue = 0 },
{ Name = “Utility”, Type = “CooldownViewerCategory”, EnumValue = 1 },
{ Name = “TrackedBuff”, Type = “CooldownViewerCategory”, EnumValue = 2 },
{ Name = “TrackedBar”, Type = “CooldownViewerCategory”, EnumValue = 3 },
},
},
{
Name = “CooldownViewerUIConstants”,
Type = “Constants”,
Values =
{
{ Name = “COOLDOWN_VIEWER_LINKED_SPELLS_SIZE”, Type = “number”, Value = 4 },
{ Name = “COOLDOWN_VIEWER_CATEGORY_SET_SIZE”, Type = “number”, Value = 16 },
},
},
},
};
APIDocumentation:AddDocumentationTable(CooldownViewerConstants);
CooldownViewerDocumentation.lua
local CooldownViewer =
{
Name = “CooldownViewer”,
Type = “System”,
Namespace = “C_CooldownViewer”,
Functions =
{
{
Name = “GetCooldownViewerCategorySet”,
Type = “Function”,
Arguments =
{
{ Name = “category”, Type = “CooldownViewerCategory”, Nilable = false },
},
Returns =
{
{ Name = “cooldownIDs”, Type = “table”, InnerType = “number”, Nilable = false },
},
},
{
Name = “GetCooldownViewerCooldownInfo”,
Type = “Function”,
MayReturnNothing = true,
Arguments =
{
{ Name = “cooldownID”, Type = “number”, Nilable = false },
},
Returns =
{
{ Name = “cooldownInfo”, Type = “CooldownViewerCooldown”, Nilable = false },
},
},
},
Events =
{
{
Name = “CooldownViewerTableHotfixed”,
Type = “Event”,
LiteralName = “COOLDOWN_VIEWER_TABLE_HOTFIXED”,
},
},
Tables =
{
{
Name = “CooldownViewerCooldown”,
Type = “Structure”,
Fields =
{
{ Name = “spellID”, Type = “number”, Nilable = false },
{ Name = “linkedSpellIDs”, Type = “table”, InnerType = “number”, Nilable = false },
{ Name = “selfAura”, Type = “bool”, Nilable = false },
{ Name = “hasAura”, Type = “bool”, Nilable = false },
{ Name = “charges”, Type = “bool”, Nilable = false },
},
},
},
};
APIDocumentation:AddDocumentationTable(CooldownViewer);