Сегодня ночью на тестовые игровые миры обновления 11.1 была установлена свежая сборка, в материалах которой
было обнаружено несколько файлов документации, раскрывающих некоторые подробности о новом функционале интерфейса, что может действовать в духе если не WeakAura, то по крайней мере OmniCD.

Зовутся эти файлы CooldownViewerConstantsDocumentation.lua и CooldownViewerDocumentation.lua. Из них можно вынести не так много, как хотелось бы, но вот пара моментов:
- Есть некие категории: основная, ситуативная, отслеживаемое усиление, отслеживаемая шкала
- Есть типы эффектов: номер заклинания, номера связанных заклинаний, свой эффект, видимый эффект, заряды
С учетом этого можно предположить, что разработчики готовятся добавить в интерфейс расширенный функционал отслеживания различных эффектов, включая их время восстановления, время действия и заряды. Причем не только своих личных, но также присутствующих у участников группы или противников.
По сути своей это очень напоминает функционал нынешнего аддона
OmniCD, который позволяет отслеживать время действия и восстановления важных (или любых заданных) эффектов у участников группы для лучшего координирования действий. Нечто подобное сейчас используется и на официальных трансляциях киберспортивных событий, в частности Mythic Dungeon International, позволяя зрителям четко видеть, какие важные эффекты действуют на игроков или как скоро они вновь станут доступны для применения. Разработчики могут добавить в стандартный интерфейс игры эту возможность и дать больше опций для ее точечной настройки под себя.
Возможности OmniCDОднако датамайнеры полагают, что авторы могут пойти дальше и добавить в игру упрощенный аналог WeakAura, который позволил бы отслеживать мощные способности ротации, ситуативные эффекты, различные бонусы и даже шкалы применения навыков у союзников или противников. Причем не только отслеживать, но и настраивать то, как они отображаются и ведут себя, особо выделяя, например добавляя заметный визуальный эффект, предупреждение или перенося в центр наиболее важные из них.
Интерфейс официальных киберспортивных трансляцийЕще несколько лет назад, в дни Dragonflight, директор игры Ион Хаззикостас
упоминал аддоны в целом и WeakAura в частности в подобном контексте. Быть может, у разработчиков наконец дошли руки до работы над таким функционалом.
Крэш Рид, один из дизайнеров интерфейса, говорил в обзоре, что одна из вещей, над которой он работал, – это попытка воспроизвести то, что многие люди делают с WeakAura, то есть централизовать информацию о времени действия негативных и позитивных эффектов, добавить отслеживание перезарядки – то есть как бы вывести эту информации в центр вашего экрана, чтобы в стандартном интерфейсе мы могли помечать способности для вашего класса как вещи, которые вы должны иметь возможность очень наглядно отслеживать. Мы можем показать даже сторонние эффекты: если вы танк и кто-то накладывает на вас "Подавление боли", то его время действия должно быть видно прямо там, в середине вашего экрана под вашим персонажем, если вы решите отображать его, рядом с вашей "Глухой обороной" или чем-то еще, потому что это помогает вам в использовании способностей. Опять же, конечно, профессиональный танк с WeakAura будет настраивать вещи прямо под себя, но мы хотим, чтобы стандартные возможности были намного лучше, и мы знаем, что нереалистично разрабатывать механику, которая требует от вас отслеживать время действия эффекта, когда этот эффект мигает в углу экрана в 12 дюймах от того места, где сфокусировано ваше зрение. Нам нужно действовать лучше, и пользовательский интерфейс Dragonflight не просто эстетичен, а пытается решить и эту проблему тоже.
Вот содержимое обоих файлов, если вам будет любопытно взглянуть на них самостоятельно. Ситуация, кстати, ровно та же самая, что возникла несколько недель назад со
справочным файлом по функционалу жилищ игроков.
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);
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);