Gnosis

Gnosis

Client Version: 5.0.4


Rating:

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.

PDF documents containing a general introduction to timer bars as well as an overview of Gnosis timer configuration commands and options can be found within the Gnosis addon folder.

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

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. Importing all bars at once will cause lag (just wait, your client has not crashed).

Please watch the introduction videos:
First steps introduction video (v1.80)
s://youtu.be/SqCNF9UIP50

First steps introduction video (old version, focuses on castbar creation)
s://youtu.be/_kLsfMKho5A

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).

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.

Auras (Buffs=Hots & Debuffs=Dots)
buffdebuffhotdotaura
aura with the additional keyword harm is the same as debuff/dot
aura 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).

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

Resources
Syntax:resource :type, e.g. resource health:

type description
health displays unit’s health
power powerbar (mana/energy/rage/focus/…)
combopoints rogue and feral druid combo points
range range between yourself and the given unit
altpower alternative power (boss encounter specific)
heal incoming heal
threat units threat towards your target
soulshards Warlock’s Soul Shards
eclipse Moonkin Druid’s Eclipse
holypower Holy Paladin’s Holy Power
chi Monk’s Chi
shadoworbs Shadow Priest’s Shadow Orbs
burningembers Warlock’s Burning Embers
demonicfury Warlock’s Demonic Fury
xp player’s experience
rested player’s rested experience bonus

<sub>threat remark: the “stacks” value denotes: 3: tanking – 2: insecurely tanking – 1: higher threat than tank – 0: lower threat than tank</sub>

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)

example:
unitname unit=boss1 : Garrosh Hellscream
fixed portrait=boss1 nfs=”Kill Garrosh!!!” : 0

Optional commands

subcmd usage description
unit unit=unitid or friendly player name unit override (see ://wowpedia.org/UnitId)
nfs nfs=”overwrite name format string” see description of name format string
tfs tfs=”overwrite time format string” see description of time format string
icon icon=”spell(id)” overrides shown icon
portrait portrait=”unit” overrides shown icon with portrait of given unit
shown shown=”barname” timer entry only valid if bar “barname” is currently active/shown
hidden hidden=”barname” entry only valid if bar “barname” is currently not active/shown
lag lag display latency information
casttime casttime display casttime information
recast recast=3.0 give recast advice, given remaining duration will be marked, 3.0s in this example
sort sort:criterion minrem, maxrem (min/max remaining); mindur, maxdur (min/max duration)
not not will show auras/cooldowns if they are not present or not on cooldown as a static bar
staticdur staticdur=30 forces the timer to always display 30 seconds or more
staticdur staticdur=30 forces the timer to always display 30 seconds or more
zoom zoom=5 zoom into the timer when less than 5 seconds duration remain
spec spec=1 or 2 timer entry will only be active for the given talent specialization
sbcol sbcol=”r,g,b,alpha” override statusbar color, e.g. cd sbcol=”1.0,1.0,0.0,0.8″ : Dispersion
hideicon hideicon hides the icon
hidespark hidespark hides the castbar spark
plays plays=”x-sound” plays given sound every x seconds
playm playm=”x-music” plays given music every x seconds
playf playf=”x-audio file” plays given audio file every x seconds
mcnt/msize mcnt=# and msize=#.# 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.

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: 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 *).

unit=target resource : health<,25%>
& 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
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.

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 example:
runecd : 1
runecd : 2
sort : minem

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.

Command Description
name shows 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
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)
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.

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 channel
e.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]

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 HP****text< 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.

Code Language
English
deDE German
zhCN simplified Chinese
zhTW traditional Chinese
koKR Korean
ruRU Russian

FAQ
Gnosis eats up too much memory!

  • 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.

How much performance does Gnosis eat up?

  • 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.

What about a super fancy ultra nice border texture?

  • 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.
    Code:
    if(Player) then
Code:
   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

Anchoring to a frame? 

  • 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())
Name format string. Huh?

  • 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:

Code:
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):

Code:
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.

Time format string. Again, huh?

  • 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:

Code:
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.

How to change coordinates of name and time strings, it doesn’t work?

  • 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.

Please give us the configuration for the Shadow Priest template screenshot (v4.20)!

  • See link at the top of the description for an updated example.

Do we still need tick markers on our castbars with 4.x (including MoP)?

  • 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.