Gnosis (Castbars and Timers)

Gnosis (Castbars and Timers)

Important: I'm looking for help with developing/maintaining Gnosis (eventually becoming Gnosis' maintainer). If you have previous experience with developing addons and more time than I have (which is virtually none), please send me a private message.

Gnosis is a highly configurable castbar and single timer addon. Gnosis can show ticks of channeled spells, detect unintentional clipping while channeling and combine data of channeled spells to combat text addons (MSBT, SCT, Parrot). It also allows to create buff, debuff, and cooldown (spell, rune, item) timers with a similar set of options castbars have.

Following shadow priest related example configuration might help you understand Gnosis' timer-bar options and possibilities a little better. You can grab the import strings here. For more information about timer bars and the addon in general see the description below. Importing all bars at once will cause lag (just wait, your client has not crashed).

Slash Commands

The slash command for Gnosis is /gnosis. Gnosis has full GUI configuration support.

/gnosis reanchor will force Gnosis to reanchor all bars/gnosis load configuration name will load the castbars of given configuration. Careful: Your current castbar setup will be lost./gnosis bar="name of existing bar" text="Text to display" time=12 spell="Shadow Word: Death" cast|channel starts a timer manually (spell and cast|channel keywords are optional).

Multi-Spell Timers

Gnosis also allows to create so called Multi-Spell Timers. A single bar can handle as many spells/cooldowns as you like, though it can only display one at a time (chosen by the given priority or sorting criterion).

To create timer bars, select "Multi-Spell Timer" as Bartype and add items to track to the black-/whitelist found under the "Hide castbar" section. The format of entries basically is cmds:spell. Following commands are available.

Auras (Buffs=Hots & Debuffs=Dots)

buff, debuff, hot, dot, auraaura with the additional keyword harm is the same as debuff/dotaura with the additional keyword help is the same as buff/hot also add the mine keyword to only display player's auras

Aura subcommands: aurastacks=# and auraeffect=# will display the aura stack count/aura effect value instead of the aura's duration. The user has to manually supply a maximum value for stack count/effect value (replace with the # sign).

Miscellaneous

fixed : spellname or spell id (create a fixed timer using the icon of the given spell or spell id)exit : 0 (end execution, do not activate bar)unitname : any or unitname : exact name of unit (shows unitname of given unit in case of any or when there is an exact match with the given name)npc : any or npc : exact name of unit/npc id (shows the npc id the of given unit in case of any or when there is an exact match with the given name or npc id)spellknown : spell(id) (shows spell if currently known)equipped : item(id) (shows item if currently equipped)

latency tick markers are used to break up the bar into mcnt pieces, e.g. to display combo points; the default value of msize is msize=1.0 (which is the maximum value); decreasing msize will decrease the tick marker size (valid values are 0.0 < msize <= 1.0)

<sub>The recast should work for all casters, might also work for melee classes.</sub>

You can add as many entries as you like to any given bar. Just make sure to only add one spell/item per entry. If you do not add a sorting criterion, the order of these entries is used as priority from most to least important.

Advanced options: Conditions

Sometimes it can be useful to only show a bar when the specific cd/buff/etc. has a certain value (i.e. range) or if a buff/debuff has a certain amount of stacks. Gnosis allows to handle these conditions easily. The syntax is

commands:spellname<a1,a2,b1,b2>

where a1 is the minimum, a2 the maximum current value; b1 the minimum amount and b2 the maximum amount of stacks.

Leaving a value blank will make Gnosis not use it (e.g. <,50> will be valid when the current value is below or equal 50, neither the lower bound (a1) nor the amount of stacks (b1 and b2) will be compared against since those values have not been given). a1 and a2 can be given as a value or in percent, this does not apply to stacks.

will display a red health bar below or equal 25%, a green one up to 50% or otherwise a blue one. If you want to show/hide a bar depending on stacks the usage is similar, < , , 2> will show with at least 2 stacks, < , , , 1> will show up to one stack. You can use all four conditional statements if needed at once.

Advanced options: Logical operations

Often it is necessary to make sure a condition is true before you even consider showing a cd/buff/etc. This can be achieved by logical combination of multi-spell timer entries. Gnosis knows three logical operators, & (and), ? (relaxed and) and * (or). Logical operators have to be placed as the first character of each command (one command per line), otherwise Gnosis will ignore them.

Always start with either & or ? (mixing the two will yield undefined results) and optionally finish with * (or). You can combine as many & or ? as needed (same goes to *).

will show if Shadow Word: Death is either not on cooldown or any cooldown remaining below 0.5s, if, and only if your target is at or below 25% health. Otherwise the multi-spell timer bar will show your Mind Blast cooldown. The usage of '...' is not required, I personally use it to show what belongs to the current dependencies block.

Mixed buff & cooldown example

groupbuff nfs="who: name" : Guardian Spirit cd : Guardian Spirit

This will display the cooldown of Guardian Spirit only if Guardian Spirit is not active on either YourTank1 or YourTank2. Even if you enumerate your entries you can still enter a soring criterion to override priorities. To show on which person Guardian Spirit is active at the moment you could change the name format string to something like "GStar[ -> ]target". The bar would then show "GS -> YourTankX" when active on the given person or just "GS" when displaying the cooldown.

Sorting example

cd : Hymn of Hope cd : Divine Hymn cd : Lightwell sort : minrem

Will always display the shortest remaining cooldown of Hymn of Hope, Divine Hymn and Lightwell.

Dots example

Will show the dot (= aura,harmful) including a latency+castime "box" if active, otherwise SW: Pain if active. You can combine entries targeting multiple units by using the unit=xyz command. Without a unit command the default target of the Timer (Unit below Bartype) is used for auras. If the time remaining of Vampiric Touch drops below 5 seconds the bar will zoom in (zoom=5).

Slightly changed dots example

dot unit=target recast=3.0 mine staticdur=25 : Vampiric Touch

Will show your Vampiric Touch debuff (if active on your current target). The command recast=3.0 tells Gnosis to give recast advise when to recast your dot to gain 100% uptime while not losing any casttime, i.e. start the cast when the timer is somewhere inside the "latancy box". Gnosis needs to know the unhasted time between ticks, the 3.0 in the above example is the unhasted time in seconds between Vampiric Touch ticks. Adjust this number according to the dot you want to display. staticdur=25 forces the timer to always show full 25 seconds (even though the statusbar itself will always be less).

Item cooldown example

itemcd : Medallion of the Horde

Will show the cooldown of your PVP trinket if available.

Rune cooldown example:

runecd : 1 runecd : 2 sort : minem

More or less a completely useless example, just to show the required syntax.

Health bar example

This example creates a healthbar displaying the text shown in the image below.

Boss bar example

buff unit=boss1 : Double Attack cast unit=boss1 : all

Will show the durationless Double Attack buff sometimes gained by Chimaeron, otherwise will show any cast of Boss 1.

Main configuration tab

Enable Addon

Hide Blizzard's castbar

Hide Blizzard's mirror castbar

mirror castbar shows the status of breath, fatigue and feign death, best to create one with Gnosis

Hide Blizzard's pet/vehicle castbar

Hide Gnosis text messages

disable status messages from Gnosis

Automatically create option tables on startup

creates all GUI elements on startup. Not recommended, Gnosis GUI can use up a lot of memory.

Select localization

most locales are translated relatively complete, french is not

Open first start frame

allows the user to create default castbar set or load from already existing configurations

Create basic castbar set (quick start)

Import bar(s) (reloads interface)

import one or more bars from strings exported by castbar export feature. This is a normal lua script, don't import if you are unsure whether the script is safe.

Reset player data (reloads interface)

resets player profile and reloads interface

Castbars tab

The castbar tab allows to create an unlimited number of castbars. You can create more than one castbar for units like "player", "focus", "target", "arenaX" and more. You can also black-/ and whitelist spells for specific castbars, i.e. you can force a castbar to not or only show while casting one or more selected spells.

Name format string

Enabling the name format string allows you to take full control of how castname & rank are shown on any given castbar. Following table gives the options for the name format string.

Command

Description

name

shows the spellname

abbr<cnt>

abbreviates spellnames if longer than cnt, e.g. Hymn of Hope will become HoHwill cut single words to length cntif the spellname is not longer than cnt abbr<cnt> is identical to the name commandmight not work for every locale

arabic

arabic numeral for spell rank (if available)

roman

roman numeral for spell rank (if available)

rank<text>

text shown if spell rank available

misc

miscellaneous information shown if no rank information available

effect

aura effect value, e.g. remaining absorb value of Shield Barrier

target

show target name (player castbar only)

txr<text>

text shown if rank information available

txm<text>

text shown if miscellaneous information available

txeff<text>

text shown if effect information available

tar<text>

text shown if target information available (player castbar only)

tar[text]

same as above, allows usage of ->

who

display name of casting unit

tscur

shows remaining item count of items created (tradeskill merge)

tstot

shows total item count of items created (tradeskill merge)

txts<text>

show text if tradeskill merge information available

col<type>

change color to type; type may contain valid spellschool or r,g,b[,a]e.g. col<nature> or col<1.0,1.0,0.0>col<pre> reverts to color before last col<type>col<class> changes the color the your targets class color (if available)use col<cpre> to revert to color before last col<class>

\n

new line

String example (default string when creating new castbar, for this example a priest is casting the lvl80 rank of Flash Heal)

default string will output name, rank or miscellaneous information and tradeskill information if available

rank informations tags have been removed from the default name format string due to the cataclysm rank changes

Time format string

Enabling the time format string allows you to take full control of how time is shown on any given castbar. Following table gives the options for the time format string.

Command

Description

r<x>

remaining casttime in seconds with x decimals

t<x>

total casttime in seconds with x decimals

p<x>

spell pushback in seconds with x decimals

c<x>

(total-remaining) time

col<type>

change color to type; type may contain valid spellschool or r,g,b[,a]e.g. col<nature> or col<1.0,1.0,0.0>col<pre> reverts to color before last col<type>

\n

new line

Important: replace x: s to show a sign and/or m to show time in minutes (if > 60s) ; p to show value in percent

Default time format string

col<1,0,0>p<2s>col<pre> r<1m> / t<2m>

e.g. +0.50 1.0 / 1.50

Channeled Spells tab

Gnosis castbars can show the ticks of channeled spells. This is a feature Shadow Priests have been using for some time now. Gnosis can support all channeled spells as long as they are added to the list. An additional feature of Gnosis is its capability to detect unwanted clipping while channeling. Last but not least Gnosis can combine the ticks of channeled spells into one single Combat Text output. That output can hold multiple information like dps done by the channeled spell.

Special commands in the given output string will be replaced with requested information. All other text will be output as given. Commands are case sensitive.

Command

Description

spellname

shows the spellname

tickscrits

outputs ticks and crits of spell that just finished to channele.g. 3Hits 1Crit

hits

outputs number of hits, can be much higher than the number of ticks for aoe spells

crits

outputs number of crits

ticks

outputs number of ticks

dmg

outputs total damage or healing done

eh

effective heal (= heal - overheal)

oh

overheal

dps

outputs dps or hps done by the spell that just finished to channel

clipped

shows information whether unwanted clipped occured

col<type>

change color to type; type may contain valid spellschool or r,g,b[,a]e.g. col<nature> or col<1.0,1.0,0.0>col<pre> reverts to color before last col<type>col<class> changes the color the your targets class color (if available)use col<cpre> to revert to color before last col<class>

Combattext/Clip test tab

Use this tab to configure which combat text addon to use and whether to play a sound when an unwanted clip occurs.

Configurations

Gnosis is always configured on a character basis. I.e. any change you do for one character will not change the settings of other characters. You can store castbars and channeled spells information into as many different configurations as you like and load those settings for other characters.

Localization

Gnosis does not need any special localization to work. Though configuration is localized for a number of different locales. You can select any of the available localizations on the configuration main tab.

Code

Language

Thanks to

English

deDE

German

Xploder from Kil'Jaeden EU & archiv

zhCN

simplified Chinese

wowuicn

zhTW

traditional Chinese

wowuicn

koKR

Korean

talkswind & yuk6196

ruRU

Russian

StingerSoft

If you want to help localizing Gnosis or correct localization errors please visit Gnosis' Curseforge site (Localization tab).

Thanks

to Elíza and Mikaela of Frostwolf EU for testing some of the stuff I'm just to lazy to do myself. Also thanks to Woaden of Proudmoore US for making people aware of Gnosis' existence on the official US forums. I really appreciate it. Special thanks to Endlesshope of Antonidas EU for testing and giving vital feedback.

FAQ

QGnosis eats up too much memory!A Gnosis will eat up more memory than most other castbar addons since it has a lot of features and allows every single castbar you create to have it's own distinctive look. Gnosis has not been developed to be the most lean castbar addon, still I did not disregard memory usage. Since WoW in general does not use much memory (compared to many other games) addon memory usage is probably not a real issue. Also, do not mistake memory usage for CPU usage. Those two values do not correlate at all for Gnosis.

v2.01 decreases memory usage to about 700kB as long as you do not access Gnosis' config GUI. With created GUI tables, Gnosis memory usage will rise above 1MB.

QHow much performance does Gnosis eat up?A Gnosis' design is quite different to that of castbar addons like Quartz or AzCastbar. All castbars you create will be stored in some sort of table (hash table). Every time the WoW client sends events for castbar creation Gnosis will have to run through that table of castbars. Every module of modular castbar addons will be called each time creation of any castbar is requested, Gnosis will be called just once. For deletion/updating of castbars Gnosis will only look through a list of currently active castbars therefore cutting performance usage down a bit. Again, every module of a modular castbar will be called by every deletion/updating request. Honestly, I doubt you will see much (if any) difference between the approaches. The Gnosis approach just makes it a lot easier to have a virtually unlimited amount of castbars.

Honestly, Gnosis will need more CPU and memory resources than most other castbar addons due to the fact that it just does a lot more. Nonetheless I was recently pleasently surprised by the actual resources consumed (see most recent performance screenshot). On top of that I had a mouseover castbar activated which requires additional constant scanning which Gnosis wouldn't need to do without one.

If you believe addons are the reason for low framerates, I recommend you download one of the addon performance measuring tools like "Broker CPU / Memory / Performance" and check if that's the case for you.

QWhat about a super fancy ultra nice border texture?A Gnosis current sleek (in my opinion obviously) look (v1.30+) is just the way it was supposed to be. Therefore I will not add any kind of border texture support to Gnosis. If you really need some sort of special look I recommend you try out one of those panel mods. Remark: Castbar borders act as an indicator for (non) interruptible spells.

Example with kgpanels (every other panel mod should do):

Create a new panel and move it around your castbar. The castbar name in this example is Player. If the castbar is named differently replace Player with the correct name. If you encounter errors you might want to change the castbar name (newly create or copy existing castbar to new name).

Add a similar script to the following to the panels OnLoad script handler to make sure bar is shown/hidden/faded out the way the castbar is.

Be happy! I won't give any support if this does not work for some reason. Please don't ask.

QAnchoring to a frame?A From v1.95 onwards Gnosis allows to anchor castbars to other frames or the mouse cursor. To find out the name of a given frame hover your mouse over the frame and execute following script. The frame's name will be printed to the default chat frame.

/scriptprint(GetMouseFocus():GetName())

QName format string. Huh?A The name format string gives you the option to output text to the castbar the way you want it to be. The table of commands that are simply repalced with the information you requested can be found somewhat earlier in the description.

The default name format string (nfs) displays spellname, misc information and trade skill merge information. Rank information has been removed from the default nfs due to the cataclysm rank changes:

QTime format string. Again, huh?A The time format string allows you to format displaying of remaining time, etc. individually. The tabe of commands can again be found in the description.

Default time format string (tfs) shows remaining time (one decimal, see the <1> modifier), total casttime (two decimals, see <2>) and red colored pushback time (two decimals) if available. If time exceeds one Minute the <m> modifier forces time to be displayed in minutes:

col<1,0,0>p<2s>col<pre>r<1m>/t<2m>

Modifiers: Adding a <s> modifier forces Gnosis to always add a sign to the displayed time. This is useful for pushback times, pushback can be positive and negative (additional casttime for non channeled spells, reduced channel time for channeled spells). Adding a <m> modifier forces output to display in minutes if the time is actually more than one minute. The given decimal, e.g. t<2> tells Gnosis how many decimals should be shown.

QHow to change coordinates of name and time strings, it doesn't work?A To be able to independently change coordinates of name and time strings you have to select "Free alignment" of name to time alignment. Otherwise these strings will be glued together with a combined y-coordinate.

QPlease give us the configuration for the Shadow Priest template screenshot (v4.20)!A See link at the top of the description for an updated example.

QDo we still need tick markers on our castbars with 4.x (including MoP)?A Simple answer: Yes! You can still clip channels (intentional and unintentional) and lose ticks due to spell pushback. Gaining ticks on the next cast when chain-channeling makes this feature even more important nowadays.

I noticed that having shown spellnames on the GCD castbar will sometimes result in strings of numbers instead of the actual names.

iE Hearthstone . (eath version Dala, garrison, normal and druid teleport) As well as Lunar Strike, Solar Wraith. It also seems to react on random trinket procs or Buffs /Debuffs? there where just random GCD castbars popping up while doing my rotation on a dummy. some where caled 7.2 Broken Shores.. yadda yadda I coudlnt get more sadly.

Also when shifting to catform it triggers a GCD for tracking humanoids that shows in the GCD castbar

Whenever I switch specs (on my druid), the default castbar shows up, along with Gnosis's castbar. I have "hide Blizzard castbar" checked, and just to be sure, I've unchecked and checked it again, to no avail. Unchecking and checking it again only works temporarily until I switch specs again, then the default castbar shows up again. Help?

Hey, would like to make Stack amount as (XX) on my Agony dot bar, also if its possible to see amounts of Unstable afflictions I have on my target as a number on my Unstable Affliction dot bar, example: [Name (amount of dots) current time/Full time]?