Gnosis (Castbars and Timers)

Shadow priest example #2 (v4.20)

Gnosis (Castbars and Timers)


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.

To visit Gnosis' development site or to grab alpha&nolib files go to Gnosis @ CurseForge
For questions or comments please visit Gnosis' official forum thread
If you find any bugs or have suggestions create a ticket here

You can grab the import strings for the Shadow Priest example configuration here.

Gnosis allows to create as many bars as you like and does not force predefined bars onto the user. The "casts" of following "units" can be shown:

  • Player, Target, Focus, Pet (= Vehicle)
  • Arena Opponents, Party, Mouseover, Bosses
  • Mirror bar (Fatigue, Feign Death, Breath)
  • Global Cooldown Indicator
  • Swings timers (one handed melee and ranged, single and combined versions)
  • Most ...'s Target Units are selectable (e.g. Target's Target's Target = targettargettarget), though those units require additional resources (scanning) if bars for those units are created

Main features:

  • unlimited amount of castbars
  • single bar buff, debuff, cooldown and item cooldown timers
  • horizontal & vertical bars, invertable bar growth direction
  • customizable look (alignments, colors, size, font, casticon, ...)
  • full control of castname and casttime strings
  • black-/whitelisting (i.e. show castbars not/only for specific spells)
  • support for all channeled spells (show tick markers including spellpushback support for those markers, configurable)
  • combine dps of channeled spells and output via combat text
  • anchor bars to frames or the mouse cursor

If you want to help localize Gnosis please visit Gnosis Localization @ Curseforge

Please watch the introduction videos:

First steps introduction video (v1.80)


First steps introduction video (old version, focuses on castbar creation)



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 starts a timer manually (spell and cast 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).

Multi-Spell Timer example

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.

http://img109.imageshack.us/img109/8690/gnosistimerconfigpriest.jpg

Auras (Buffs=Hots & Debuffs=Dots):
buff, debuff, hot, dot, aura, harm, help, mine

Group/Raid-wide Auras (Buffs=Hots & Debuffs=Dots):
groupbuff, groupdebuff, grouphot, groupdot, groupaura, harm, help, mine

Cooldowns:
cd (for spells), itemcd (for items), runecd (for DK runes, pass 1..6 as spell)

Global Cooldown:
gcd:any or gcd:spell(id) (shows general global cooldown or of specific spell)

Durations:
totemdur (for Shaman totem durations, pass 1..4 as spell)
enchmh and enchoh (main and offhand imbues/poisons, e.g. enchmh : Instant Poison)

Procs:
icd, innercd, proc (display timer of length staticdur=x when the proc occurs, useful for tracking proc length or inner cooldown)
e.g. icd staticdur=12 : Rapture (displays inner cooldown of Discipline Priest's Rapture ability)
optionally pass the norefresh option to disable timer refresh due to new proc (or similar effect)

Spellcasts:
cast:any or cast:spell(id) of spell casts which should be shown

Resoucres:
resource:health (healthbar)
resource:power (powerbar = mana/energy/rage/focus/...)
resource:combopoints (rogue and feral druid combo points)
resource:range (range between yourself and the given unit)
resource:altpower (shows things like Atramedes' sound)
resource:heal (incoming heal)
resource:threat (units threat towards your target)
resource:soulshards (Warlock's Soul Shards)
resource:eclipse (Moonkin Druid's Eclipse)
resource:holypower (Holy Paladin's Holy Power)
resource:chi (Monk's Chi)
resource:shadoworbs (Shadow Priest's Shadow Orbs)
resource:burningembers (Warlock's Burning Embers)
resource:demonicfury (Warlock's Demonic Fury)
resource:xp (Player experience)
resource:rested (Player rested experience bonus)

threat remark: the "stacks" value denotes: 3: tanking - 2: insecurely tanking - 1: higher threat than tank - 0: lower threat than tank

Miscellaneous:
fixed:spellname or spell id (create a fixed timer using the icon of the given spell or spell id)
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 of unit)
spellknown:spell(id) (shows spell if currently known)
equipped:item(id) (shows item if currently equipped)

example:
and unitname unit=boss1 : Garrosh Hellscream
... fixed portrait=boss1 nfs="Kill Garrosh!!!" : 0

Optional commands:
unit=unitid or friendly player name (see http://www.wowwiki.com/UnitId);
nfs="overwrite name format string" (see description of name format string)
tfs="overwrite time format string" (see description of time format string)
icon="spell(id)" (overrides shown icon)
portrait="unit" (overrides shown icon with portrait of given unit)
shown="barname" (entry only valid if bar "barname" is currently active/shown)
hidden="barname" (entry only valid if bar "barname" is currently not active/shown)
lag, casttime to show latency and casttime information
recast=3.0 to give recast advise for dots/hots, pass the unhasted time between ticks, in this example 3.0s
sort with following criterion - minrem, maxrem (min/max remaining) - mindur, maxdur (min/max duration)
not (will show auras/cooldowns if they are not present or on cd as a static bar)
staticdur=30 (forces minimum time displayed by timer to 30 seconds)
zoom=5 (zoomes into timer if less than 5 seconds remaining)
spec=1 or 2 (always use the spec command if you know the timer entry is not needed for other talent specs, this will save cpu resources)
sbcol="r,g,b,alpha" (override statusbar color, e.g. cd,sbcol="1.0,1.0,0.0,0.8":Dispersion)
hideicon (hides the icon)
hidespark (hides the castbar spark)
plays="x-sound" (plays given sound every x seconds)
playm="x-music" (plays given music every x seconds)
playf="x-audio file" (plays given audio file every x seconds)

The recast should work for all casters, might also work for melee classes.

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.

resource sbcol="1,0,0" : health<,25%>
resource sbcol="0,1,0" : health<25%,50%>
resource sbcol="0,0,1" : health

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: Dependencies (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. Two commands exist for this task, and and or. The usage is simple: Always start a dependencies block with an and and end that block without either and or or. You can combine as many ands in the beginning of a block as you need. If any and fails the block becomes invalid and will be skipped. You cannot use and after the first usage of or.

and unit=target resource : health<,25%>
... or not cd : Shadow Word: Death
... cd : Shadow Word: Death<,0.5>
cd : Mind Blast

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:
buff unit=YourTank1Name mine : Guardian Spirit
buff unit=YourTank2Name mine : 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.

Holy Priest timer example

Name format string override:
cd nfs="CD: name" : Chakra
buff : Chakra: Serenity
buff : Chakra: Sanctuary

This will show the current Chakra cooldown with a slightly changed name text (see image above). If Chakra is not on cooldown, it will display the duration of your current Chakra state (if active).

Dots example:
aura harmful mine lag casttime unit=target zoom=5 : Vampiric Touch
dot mine lag unit=target : Shadow Word: Pain

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 & spec command example:
runecd:1
runecd:2
sort,spec=1:minrem
sort,spec=2:maxrem

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

Resource example:
resource unit=player : altpower
resource unit=player spec=1 : health
resource unit=player spec=2 : power

Shows alternative power if available, otherwise Health for talent spec 1 or Power for talent spec 2.

Health bar example:
resource,unit=player,nfs="col<class>who's col<cpre>col<1,1,0>namecol<pre>",tfs="col<1,1,0>r<p>% (t<1>)col<pre>":health

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

Healthbar

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.

CommandDescription
nameshows the spellname
abbr<cnt>abbreviates spellnames if longer than cnt, e.g. Hymn of Hope will become HoH
will cut single words to length cnt
if the spellname is not longer than cnt abbr<cnt> is identical to the name command
might not work for every locale
arabicarabic numeral for spell rank (if available)
romanroman numeral for spell rank (if available)
rank<text>text shown if spell rank available
miscmiscellaneous information shown if no rank information available
effectaura effect value, e.g. remaining absorb value of Shield Barrier
targetshow 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 ->
whodisplay name of casting unit
tscurshows remaining item count of items created (tradeskill merge)
tstotshows 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>
\nnew line
String example (default string when creating new castbar, for this example a priest is casting the lvl80 rank of Flash Heal)
namecol<1.0,0.0,0.0>txm< (>misctxm<)>col<pre>txts< (>tscurtxts</>tstottxts<)>
result: Fash 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.

CommandDescription
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>
\nnew 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.

CommandDescription
spellnameshows the spellname
tickscritsoutputs ticks and crits of spell that just finished to channel
e.g. 3Hits 1Crit
hitsoutputs number of hits, can be much higher than the number of ticks for aoe spells
critsoutputs number of crits
ticksoutputs number of ticks
dmgoutputs total damage or healing done
eheffective heal (= heal - overheal)
ohoverheal
dpsoutputs dps or hps done by the spell that just finished to channel
clippedshows 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>

You also have to provide text for Hits, Ticks & Crits if used:
cliptext<your text> , hittext<your text> , crittext<your text> , ticktext<your text>

Examples (default strings):

Mind Sear:

col<shadow>dmg col<pre>col<1,1,0>(spellname) [tickscrits] col<pre>clipped dps DPScliptext<(Clipped) >hittext< Hits>crittext< Crits>ticktext< Ticks>

Healing spells:

col<0,1,0>(spellname - col<1,1,1>targetcol<pre>col<0,1,0>) [tickscrits] +eh <dmg> col<pre>dps HPShittext< Hits>crittext< Crits>ticktext< Ticks>

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.

CodeLanguageThanks to
English
deDEGermanXploder from Kil'Jaeden EU & archiv
zhCNsimplified Chinesewowuicn
zhTWtraditional Chinesewowuicn
koKRKoreantalkswind & yuk6196
ruRURussianStingerSoft

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


Q Gnosis 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.

Q How 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.

Q What 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):

  1. 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).
  2. 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.
  3. Be happy! I won't give any support if this does not work for some reason. Please don't ask.
if(Player) then
   Player:SetScript("OnShow", function() self:Show(); end);
   Player:SetScript("OnHide", function() self:Hide(); end);
   if(Player:IsVisible()) then self:Show(); else self:Hide(); end
   hooksecurefunc(Player, "SetAlpha", function(this,val) self:SetAlpha(val); end);
end

kgpanels example

Q Anchoring 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.

/script print(GetMouseFocus():GetName())

Q Name 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:

namecol<1.0,0.0,0.0>txm< (>misctxm<)>col<pre>txts< (>tscurtxts</>tstottxts<)>

Nfs, same as above but also showing the class colored target of your casts (only available for player castbars):

namecol<1.0,0.0,0.0>txm< (>misctxm<)>col<pre>txts< (>tscurtxts</>tstottxts<)>tar[ -> ]col<class>targetcol<cpre>

Nfs showing spellname and the unit name who is casting:

name (who)

I hope you get the idea.

Q Time 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.

Q How 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.

Q Please give us the configuration for the Shadow Priest template screenshot (v4.20)!
A Copy following import text (click here) and paste it into the Gnosis import box (Gnosis GUI main tab).

Q Do 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.

Facts

Date created
Aug 24, 2009
Categories
Last update
Oct 20, 2014
Development stage
Release
Language
  • deDE
  • enUS
  • koKR
  • ruRU
  • zhCN
  • zhTW
License
All Rights Reserved
Curse link
Gnosis (Castbars and Timers)
Downloads
594,328
Recent files
  • A: r100 for 6.0.2 Oct 20, 2014
  • R: v4.25 for 6.0.2 Oct 15, 2014
  • A: r99 for 6.0.2 Oct 15, 2014
  • A: r98 for 6.0.2 Oct 15, 2014
  • A: r97 for 5.4.8 Sep 17, 2014

Authors