Brings back the target & nameplate castbars for Classic Era. Also works in TBC/Wrath for castbar customizations. (Retail is no longer supported due to little interest & time.)
Note that shown cast times for other players in Vanilla are always based on the highest spell rank due to API restrictions, and combat log range is limited to max 50 yards.
Some NPCs will have their cast time auto-corrected after their very first usage by checking the time between 'SPELL_CAST_START' and 'SPELL_CAST_SUCCESS' events, as there's no API to get the actual cast time beforehand. This data will be stored & shared across all your characters. (See FAQ further below for more details about the Classic Era API. I recommend reading this if you're completely new to Vanilla.)
Configuration
Castbars have configurable size, textures, positioning and more.
Type "/castbar" or go to "Escape -> Interface Options -> AddOns -> ClassicCastbars" to open the options panel.
Plugins
If you have ClassicAuraDurations or LibClassicDurations installed, ClassicCastbars will also check enemy buffs for any cast modifiers i.e Berserking, instead of only checking enemy debuffs.
Known Bugs
- Castbar fade out animation sometimes shows incorrect border layer while fading after patch 1.14.4. No clue why. Also sometimes happens to Blizzard's built in player castbar so might not be addon related.
- Combat log event for interrupt immuned seems to no longer trigger in patch 1.14.4, making auto-learning which casts are uninterruptible no longer possible afaik. (Tested with Counterspell only)
If you notice a spellcast that's uninterruptible but shown as interruptible, let me know the spell name & npc name and I'll add it manually to the addon db over time.
FAQ (Classic Era / Vanilla)
Q: Why are the cast timers incorrect when the target is downranking spells?
A: Blizzard removed cast related unit APIs and also spell IDs from the combat log in Classic, so there's no way
to distinguish between spell ranks anymore and thus this addon will always assume its the max rank being used.
This will also affect mobs to a certain extent, but against mobs the addon will auto correct itself after the spell has successfully been cast once for that mob type. Casts with speed modifiers like Curse of Tongues will be skipped for auto correction.
Q: Why are the cast timers incorrect for some max rank player spells?
A: Certain spells have talents that reduce its cast time and these can't be tracked accurately in Classic Era.
This addon will instead assume that the target has all commonly used cast time reduction talents active.
Cast pushback might also sometimes give slight inconsistencies, especially if the target has talents that give a chance to ignore pushback.
Q: Why is the castbar still shown even though the player cancelled the cast early?
A: Classic Era has no proper event for cast stop/fail so the castbar will only be stopped early when detecting unit movement (except Grenades), new ability used, kicked, or an aura that causes crowd control. If the target stands completely still and cancels their cast this can't be detected.
Q: The addon sometimes doesn't show casts?
A: Blizzard recently nerfed the combat log range to 50 yards, so if you're far away from a target you won't see his cast. Even if you move into range you will still need to wait for the target to cast a new spell before you can see the castbar. Also mounts, portals & certain NPC Arcane Missile-like abilities don't generate combat log events for some weird reason.
(If you just did a /reload it might take 2-3 seconds for the cast database to fully load.)
Q: Why use the addon then with all these limitations considered?
A: For NPCs it still works correctly 99% of the time. Against enemy players mileage may vary, but think of it more as an alert on when & what the enemy started casting, so you e.g don't accidentally interrupt a Hearthstone or Furbolg Form cast thinking it's a heal since they share the exact same casting animation. Not every single player ability is downranked either.
(You can also change the castbar colors to have zero transparency and disable the spark effect which would make the addon only display the cast's spell name.)
Q: The addon doesn't show any casts at all?
A: You most likely either disabled the addon through the random taint popup box when joining a BG, haven't updated it, or have an unsupported unitframe addon installed.
If you updated or reinstalled the addon after having a super old version it's possible the options table is corrupt, try the macro posted on the bottom of this page to reset all castbar settings back to default.
Q: The castbar has different anchor points for different characters?
A: Castbar's position and scale are always relative to the parent frame. You most likely have the target frame
positioned or scaled differently on your other character.
Q: Why can't I see castbars on friendly nameplates inside dungeons/raids?
A: Blizzard made a change in Legion that made nameplates unable to be modified while in instances due to it being
abused in raids to make them easier. This change also made it to Classic.
Q: Why is the castbar not showing Portals or Mounts?
A: These casts generate no combat log events for other players, except paladin & warlock summon mount.
Q: Can I see what cast is uninterruptible or not?
A: As of v1.3.0 this is now possible to a certain excent. If you interrupt a casting mob and it shows "immune", the addon will remember this for the next time that spell is being cast, and show a grey uninterruptible spell indicator from then on. The addon also includes some hardcoded sensible defaults, e.g most raid bosses have their cast data set as uninterruptible.
(EDIT: feature might be partly broken after classic patch 1.14.4, immune event seems to no longer be triggered when I tested with Counterspell)
Q: Does this addon have a public API/library for cast data I can use?
A: Sadly no, too much work at this point in time to redo. See LibClassicCasterino by rgd87 instead.
If for some reason the addon stopped working, try temporarily disabling all other addons too see if there's any conflicts, or run this macro ingame twice: (Will reset all castbar settings to default)
/run ClassicCastbarsDB=nil;ClassicCastbarsCharDB=nil;EnableAddOn("ClassicCastbars");EnableAddOn("ClassicCastbars_Options")ReloadUI();