Quartz
Quartz is a modular approach to a casting bar addon. An overview of (hopefully most of) the modules:
*Player
The core of Quartz is lightweight implementation of a standard casting bar, with configurable size, text and icon positioning, and colors.
*Target/Focus
Implementation of target and focus casting bars in similar fashion to the player cast bar.
*Buffs
Display of target and focus buffs and debuffs as duration bars.
*Flight
Hooks into FlightMap or InFlight to display the current flight progress on your casting bar.
*Global Cooldown
Displays a tiny spark-bar to show your Global Cooldown near the cast bar. Helpful for those who'd rather not squint at their action bars to see when they can cast again.
*Interrupt
Changes the color and text of your casting bar to help show that your cast has been interrupted (and show who interrupted it).
*Latency
Displays the amount of time spent between cast send and start events, in the form of a bar at the end of your casting bar, with optional text that displays the actual duration of the lag. This helps in canceling casts when they will not actually be interrupted, especially for users with consistently high pings.
*Mirror
Shows the 'basic' timers such as breath and feign death, as well as some 'odd' ones such as party invite time, resurrect timeout, and arena game start, and a framework for injecting custom timers into the bars.
*Range
Recolors the casting bar when your cast target moves out of range mid-cast.
*Swing
Displays a swing timer for your melee weapon as well as hunter autoshot.
*Timer
Allows for creating custom timers displayed on the mirror bars.
*Tradeskill Merge
Merges multiple casts of the same tradeskill item into one big cast bar.
Use /quartz to bring up the configuration menu.
In reply to amatyr: yeah, damn. it does reset on login =\
If you are having issues, try out the alpha (3.7.4-1-g4ef3524). I'm using it now and have minimal issues.
LUA errors after 10.1 update breaks Quartz functionality:
2x Quartz/modules/Tradeskill.lua:90: Usage: RawHook([object], method, [handler], [hookSecure]): Attempt to hook secure function UNIT_SPELLCAST_START. Use `SecureHook' or add `true' to the argument list to override.
[string "=[C]"]: ?
[string "@Ace3/AceHook-3.0-9/AceHook-3.0.lua"]:164: in function <Ace3/AceHook-3.0/AceHook-3.0.lua:118>
[string "@Ace3/AceHook-3.0-9/AceHook-3.0.lua"]:321: in function `RawHook'
[string "@Quartz/modules/Tradeskill.lua"]:90: in function <Quartz/modules/Tradeskill.lua:89>
[string "=[C]"]: ?
[string "@Ace3/AceAddon-3.0-13/AceAddon-3.0.lua"]:66: in function <Ace3/AceAddon-3.0/AceAddon-3.0.lua:61>
[string "@Ace3/AceAddon-3.0-13/AceAddon-3.0.lua"]:523: in function `EnableAddon'
[string "@Ace3/AceAddon-3.0-13/AceAddon-3.0.lua"]:536: in function `EnableAddon'
[string "@Ace3/AceAddon-3.0-13/AceAddon-3.0.lua"]:626: in function <Ace3/AceAddon-3.0/AceAddon-3.0.lua:611>
[string "=[C]"]: in function `LoadAddOn'
[string "@FrameXML/UIParent.lua"]:545: in function `UIParentLoadAddOn'
[string "@FrameXML/UIParent.lua"]:754: in function `MajorFactions_LoadUI'
[string "@Blizzard_ExpansionLandingPage/Blizzard_DragonflightLandingPage.lua"]:100: in function `SetUpMajorFactionList'
[string "@Blizzard_ExpansionLandingPage/Blizzard_DragonflightLandingPage.lua"]:93: in function `RefreshMajorFactionList'
[string "@Blizzard_ExpansionLandingPage/Blizzard_DragonflightLandingPage.lua"]:88: in function `RefreshOverlay'
[string "@Blizzard_ExpansionLandingPage/Blizzard_DragonflightLandingPage.lua"]:80: in function <...sionLandingPage/Blizzard_DragonflightLandingPage.lua:76>
[string "=[C]"]: ?
[string "=[C]"]: in function `CreateFrame'
[string "@Blizzard_ExpansionLandingPage/Blizzard_DragonflightLandingPage.lua"]:49: in function `CreateOverlay'
[string "@Blizzard_ExpansionLandingPage/Blizzard_ExpansionLandingPage.lua"]:63: in function `RefreshExpansionOverlay'
[string "@Blizzard_ExpansionLandingPage/Blizzard_ExpansionLandingPage.lua"]:35: in function <...pansionLandingPage/Blizzard_ExpansionLandingPage.lua:33>
Locals:
(*temporary) = "Usage: RawHook([object], method, [handler], [hookSecure]): Attempt to hook secure function UNIT_SPELLCAST_START. Use `SecureHook' or add `true' to the argument list to override."
2x Quartz/modules/Player.lua:125: Usage: RegisterEvent("eventname", "methodname"): 'methodname' - method 'UpdateChannelingTicks' not found on self.
[string "=[C]"]: ?
[string "@Ace3/CallbackHandler-1.0-8/CallbackHandler-1.0.lua"]:102: in function `RegisterEvent'
[string "@Quartz/modules/Player.lua"]:125: in function <Quartz/modules/Player.lua:123>
[string "=[C]"]: ?
[string "@Ace3/AceAddon-3.0-13/AceAddon-3.0.lua"]:66: in function <Ace3/AceAddon-3.0/AceAddon-3.0.lua:61>
[string "@Ace3/AceAddon-3.0-13/AceAddon-3.0.lua"]:523: in function `EnableAddon'
[string "@Ace3/AceAddon-3.0-13/AceAddon-3.0.lua"]:536: in function `EnableAddon'
[string "@Ace3/AceAddon-3.0-13/AceAddon-3.0.lua"]:626: in function <Ace3/AceAddon-3.0/AceAddon-3.0.lua:611>
[string "=[C]"]: in function `LoadAddOn'
[string "@FrameXML/UIParent.lua"]:545: in function `UIParentLoadAddOn'
[string "@FrameXML/UIParent.lua"]:754: in function `MajorFactions_LoadUI'
[string "@Blizzard_ExpansionLandingPage/Blizzard_DragonflightLandingPage.lua"]:100: in function `SetUpMajorFactionList'
[string "@Blizzard_ExpansionLandingPage/Blizzard_DragonflightLandingPage.lua"]:93: in function `RefreshMajorFactionList'
[string "@Blizzard_ExpansionLandingPage/Blizzard_DragonflightLandingPage.lua"]:88: in function `RefreshOverlay'
[string "@Blizzard_ExpansionLandingPage/Blizzard_DragonflightLandingPage.lua"]:80: in function <...sionLandingPage/Blizzard_DragonflightLandingPage.lua:76>
[string "=[C]"]: ?
[string "=[C]"]: in function `CreateFrame'
[string "@Blizzard_ExpansionLandingPage/Blizzard_DragonflightLandingPage.lua"]:49: in function `CreateOverlay'
[string "@Blizzard_ExpansionLandingPage/Blizzard_ExpansionLandingPage.lua"]:63: in function `RefreshExpansionOverlay'
[string "@Blizzard_ExpansionLandingPage/Blizzard_ExpansionLandingPage.lua"]:35: in function <...pansionLandingPage/Blizzard_ExpansionLandingPage.lua:33>
Locals:
(*temporary) = "Usage: RegisterEvent("eventname", "methodname"): 'methodname' - method 'UpdateChannelingTicks' not found on self."
2x Quartz/modules/Player.lua:310: table index is nil
[string "@Quartz/modules/Player.lua"]:310: in main chunk
Locals:
Quartz3 = <table> {
SetDefaultModuleLibraries = <function> defined @Ace3/AceAddon-3.0/AceAddon-3.0.lua:363
SetModuleEnabled = <function> defined @Quartz/Quartz.lua:216
OnInitialize = <function> defined @Quartz/Quartz.lua:60
RegisterChatCommand = <function> defined @Ace3/AceConsole-3.0/AceConsole-3.0.lua:81
EnableModule = <function> defined @Ace3/AceAddon-3.0/AceAddon-3.0.lua:328
modules = <table> {
}
GetModule = <function> defined @Ace3/AceAddon-3.0/AceAddon-3.0.lua:206
IterateEmbeds = <function> defined @Ace3/AceAddon-3.0/AceAddon-3.0.lua:438
defaultModuleLibraries = <table> {
}
ToggleLock = <function> defined @Quartz/Quartz.lua:110
GetModuleEnabled = <function> defined @Quartz/Quartz.lua:212
UnregisterChatCommand = <function> defined @Ace3/AceConsole-3.0/AceConsole-3.0.lua:107
Printf = <function> defined @Ace3/AceConsole-3.0/AceConsole-3.0.lua:65
CastBarTemplate = <table> {
}
SetDefaultModulePrototype = <function> defined @Ace3/AceAddon-3.0/AceAddon-3.0.lua:405
name = "Quartz3"
IsEnabled = <function> defined @Ace3/AceAddon-3.0/AceAddon-3.0.lua:447
orderedModules = <table> {
}
Util = <table> {
}
DisableModule = <function> defined @Ace3/AceAddon-3.0/AceAddon-3.0.lua:346
GetArgs = <function> defined @Ace3/AceConsole-3.0/AceConsole-3.0.lua:140
Print = <function> defined @Ace3/AceConsole-3.0/AceConsole-3.0.lua:50
IsModule = <function> defined @Ace3/AceAddon-3.0/AceAddon-3.0.lua:464
CreateStatusBar = <function> defined @Quartz/QuartzStatusBar.lua:32
SetDefaultModuleState = <function> defined @Ace3/AceAddon-3.0/AceAddon-3.0.lua:383
ShowUnlockDialog = <function> defined @Quartz/Quartz.lua:137
RegisterModuleOptions = <function> defined @Quartz/Config.lua:220
SetEnabledState = <function> defined @Ace3/AceAddon-3.0/AceAddon-3.0.lua:420
defaultModuleState = true
enabledState = true
Lock = <function> defined @Quartz/Quartz.lua:127
Disable = <function> defined @Ace3/AceAddon-3.0/AceAddon-3.0.lua:310
CopySettings = <function> defined @Quartz/Quartz.lua:204
ChatCommand = <function> defined @Quartz/Config.lua:195
Unlock = <function> defined @Quartz/Quartz.lua:115
OnEnable = <function> defined @Quartz/Quartz.lua:67
IterateModules = <function> defined @Ace3/AceAddon-3.0/AceAddon-3.0.lua:433
Enable = <function> defined @Ace3/AceAddon-3.0/AceAddon-3.0.lua:290
NewModule = <function> defined @Ace3/AceAddon-3.0/AceAddon-3.0.lua:231
ApplySettings = <function> defined @Quartz/Quartz.lua:95
GetName = <function> defined @Ace3/AceAddon-3.0/AceAddon-3.0.lua:275
SetupOptions = <function> defined @Quartz/Config.lua:204
Merge = <function> defined @Quartz/Quartz.lua:228
}
L = <table> {
Set the color to turn the cast bar when taking a flight path = "Set the color to turn the cast bar when taking a flight path"
Top Left = "Top Left"
Time Text X Offset = "Time Text X Offset"
Text Position = "Text Position"
Move the CastBar to center of the screen along the specified axis = "Move the CastBar to center of the screen along the specified axis"
Hide Cast Time = "Hide Cast Time"
Fix bars to a specified duration = "Fix bars to a specified duration"
Alpha = "Alpha"
Change Border Style = "Change Border Style"
Set the color of the text for the bars = "Set the color of the text for the bars"
Embed mode will decrease it's lag estimates by this amount. Ideally, set it to the difference between your highest and lowest ping amounts. (ie, if your ping varies from 200ms to 400ms, set it to 0.2) = "Embed mode will decrease it's
Hmm, since 10.1 went live my cast bar only works with Quartz disabled. If I uncheck 'disable Blizzard cast bar' I can see the Blizz one but can't see my Quartz one at all.
[classic]
I'm noticing the Swing timer doesn't appear when you are dual wielding, is something wrong there?
Suggestion: Energy Tick bar for rogues and other energy wielders
Not sure why but in wotlk classic if i have a certain background color like white as my castbar it just defaults to a grey color, until i reload. happens upon login usually.
In reply to severe3x:
How did you manage to make it work in 3.4.1 version? Mine from 3.4.0 version doesn't work :/
Hi,
great addon!
Unfortunately, the addon is no longer showing the Blizzard Channeling Ticks in Wow Classic Era.
Could you please have a look and try to fix it?
Thanks in advance!
Can we please get a toc Bump?
In reply to godsyn:
could we also get a version update please?
the game says its out of date
In reply to darklordofwar201:
A toc bump will fix that.
works great thanks
In reply to severe3x:
hi where did you find the most recently updated version?
Hey, just wanted to let you know they seem to have updated the mod language for WotLK Classic with the Ulduar patch, possibly to align more closely with retail or something like that. I saw someone say they moved everything into C_Container, hopefully that's helpful. Thanks for all your time and effort in keeping Quartz working for everyone!
Hi,
I am playing Classic Era.
Unfortunately, the Blizzard Channeling Ticks of my Mage are no longer shown.
Could you please have a look and try to fix it?
Thanks a lot!
*Tradeskill Merge Issue
The cooldown bar no longer understands how many items I'm trying to craft. Even more than that - starting from the crafting of the second item, the timer takes on negative values and is reset only after re-entering the game.
Hello! I like your addon but would like to know if it's possible to add ticks to Arcane Missiles? like here https://wago.io/u6uoy2SpQ
Is there a command to change profiles? With the updated profession stuff, the window is so big and covers up where I'd normally have my castbar and I'm left unable to see the craft timer.
Would be nice with a quick switch between profiles or if possible have it snap to the prof window when opened.
Edit: Also noticed that when crafting as Evoker, if the last spell you cast was an empowered spell, the Castbar when crafting still have the Empower castbar appearance. Casting a normal spell before crafting fixes this bug.
In reply to forced_to_watch_4_drops:
theyre really going the windows 10 settings route with that change