ZenTracker is a WeakAura (WA) that tracks spell cooldowns for you and your group members. Beyond simply tracking interrupt cooldowns, ZenTracker handles all types of spells, including: hard CC (e.g., Chaos Nova), externals (e.g., Blessing of Sacrifice), and damage (e.g., Combustion).
Note: ZenTracker is no longer under active development as of 5/29/2021. I recommend that you look into using OmniCD instead.
Update: If you still want to use ZenTracker, you can find a community-updated version for Dragonflight by MetalMusicMan here: https://wago.io/hF5-CcCkt
ZenTracker is composed of two parts: the back-end (this WA) and one or more front-ends. The back-end handles all of the heavy lifting to track spell cooldowns, while the front-ends are responsible for displaying the cooldown information. I have personally written three front-ends that display cooldown information via progress bars, icons, and text-only (see "Default Front-End WAs"). Additionally, other members of the community have written their own front-ends (see "Community Front-End WAs"). You can find more information on the interface between the back- and front-ends in the "Detailed Information" section.
ZenTracker employs a hybrid tracking model. For other group members using ZenTracker, it uses addon messages to exchange *accurate* cooldown information. For any group members not using ZenTracker, it will fallback to local, combatlog-based tracking. While the combatlog-based tracking does contain support for many cooldown modifiers, it is not complete; in some cases (e.g., reduction via azerite trait) it will overestimate the cooldown.
DEPENDENCIES: LibGroupInspecT 1.1
You can install this via the Twitch client (search: libgroupinspect) or manually by downloading from:
https://www.wowace.com/projects/libgroupinspect (Release 1.4.0)
NOTE: You *MUST* have one or more front-end WAs to see anything!
You can find a list of some of the available WAs to import in the sections below
Discord: https://discord.gg/kcDaqmQcHG (Zen#9411) | Twitch: Zen743 | WoW: Zennily / Zenlia (Thrall-US)
[[ Default Front-End WAs ]]
You can configure these front-end WAs by opening the WeakAuras configuration menu (/wa). You can modify the look and feel by changing options in the "Group" and "Display" tabs, while changing the settings (e.g., types of cooldowns tracked) in the "Custom Options" tab. If you want to have multiple sets of bars, simply import copies of your desired front-end and configure them independently.
If you wish to build your own front-end WAs, these default front-ends serve as a good basis along with the explanation of the interface between the back- and front-ends in the "Detailed Information" section further down.
Preview
Type
Link
Progress Bars
Icons
Text
Party/Raid Icons
[[ Community Front-End WAs ]]
Here are some of the available front-end WAs that have been developed by other members of the community. Check them out for amazing functionality beyond the default front-end WAs provided above!
Preview
Author
Link
Description
Nnoggie / Jodsderechte
https://wago.io/MInterruptTracker
Progress bars specifically tailored for tracking interrupts
Cistara
https://wago.io/personalRaidCDs
Overlays icons on raid frames for defensives
[[ Detailed Information ]]
The back-end exposes the following event to WeakAuras, which you can use in developing your own front-end WAs for ZenTracker (or any other WAs that depend on group spell cast information). In addition to the events, there is now a set of public functions that support functionality such as querying the cooldown status of specific spells (e.g., any IMMUNITY type spell) which you can invoke in response to other events that your auras trigger on (e.g., raid boss soak spell cast).
ZT_ADD (type, watchID, member, spellID, duration, charges)
ZT_TRIGGER (type, watchID, duration, expiration, charges, activeDuration, activeExpiration)
ZT_REMOVE (type, watchID)
"type" is the type of spell. Currently each tracked spell is assigned one of the following types: HARDCC, STHARDCC, SOFTCC, STSOFTCC, DISPEL, INTERRUPT, EXTERNAL, HEALING, UTILITY, PERSONAL, IMMUNITY, DAMAGE, TANK, BREZ, and COVENANT.
"watchID" is a unique identifier for the purposes of using a Trigger State Updater in WeakAura. This can be used to index into the allstates table.
"member" is a table consisting of information about the group member, with fields such as .name and .specID.
"spellID" corresponds to the WoW API ID for the spell. This can be used to display an appropriate icon.
"duration" is the original time (in seconds) of the cooldown, adjusted according to talents taken by the group member that cast it.
"expiration" is when the cooldown will expire. Initially equal to "GetTime() + duration", but may be modified in future ZT_TRIGGER events.
"charges" is the number of available charges for the spell.
"activeDuration" and "activeExpiration" are similar to "duration" and "expiration" but instead apply to the active component (e.g., buff) of a spell rather than the cooldown. These may not be present if the spell doesn't have an active component, or if it isn't yet exposed in the spell list entry.
The back-end WA also listens for ZT_REGISTER (id, info) and ZT_UNREGISTER (id, info) events from the front-end WAs, where id is a unique identifier for the front-end WA (e.g., aura_env.id) and info is a table of either types or spellIDs. This allows flexible loading of front-end WAs according to the WA configuration menu, and for the back-end to only watch types that one or more front-end WAs are interested in.
All public functions are exposed via the "ZenTracker_PublicFunctions" table global variable. Each function below includes information on the parameters and return values, along with how you can invoke the function (i.e., its name in the public functions table).
ZenTracker_PublicFunctions["query"](type, spellIDs, unitOrGUID, available)
-- Parameters:
-- type (string) -> Filter by a specific spell type (e.g., "IMMUNITY")
-- spellIDs (map
-- unitOrGUID (string) -> Filter by a specific member, as specified by a GUID or current unit (e.g., "player")
-- available (bool) -> Filters by whether a spell is available for use or not (e.g., true)
-- (Note: Set parameters to nil if they should be ignored)
-- Return Value:
-- Array containing tables with the following keys: spellID, member, expiration, charges, activeExpiration