ShadowGreenLight
Presentation
Shadow priest and Warlocks suffer from a well-known and documented bug, if spellpower changes (trinket procs etc) update the tick value of their SW:P (respectively Corruption), crit and %dmg increase are still only evaluated when the dot is originally cast. Given the fact that through Pain and Suffering (respectively Everlasting Affliction) talent Shadow Word: Pain (respectively Corruption) is normally never recasted during a single target fight, this can lead to important loss of DPS. Moreover being aware of those things can allow you to abuse some encounter-specific buffs/debuffs or even trinket procs allowing you to roll a temporary buff and making your SW:P/Corruption benefit from said buff permanently.
ShadowGreenLight takes into account all available raid buffs and debuffs, as well as encounter-specific ones and helps the player decide if recasting Shadow Word: Pain is worth it.
ShadowGreenLight has multiple(*) display plugins that you can configure to fit your needs (see in-game documentation for details). ShadowGreenLight allows for third party author to plug their own display in.
(*) Yes currently "multiple" means two !
Important : please report bugs at this address if possible : http://www.wowace.com/addons/shadowgreenlight/tickets/
Upgrades
There are basically two types of upgrades tracked by ShadowGreenLight :
- Normal upgrades: upgrades that you are expected to get given your raid composition/talent pool
- Bonus upgrades: encounter-specific upgrades and upgrades that you are not automatically getting (tricks of the trades etc)
The following upgrades are taken into account by ShadowGreenLight :
- Priest specific : Shadowweave
- Warlock specific : Death's embrace (bonus)
- Spell Critical Strike Chance Debuff
- Improved Scorch
- Winter's Chill
- Improved Shadow Bolt
- Critical Strike Chance Taken Debuff
- Totem of Wrath
- Heart of the Crusader
- Master Poisoner (need confirmation for this one)
- Spell Critical Strike Chance Buff
- Moonkin aura
- Elemental Oath
- Percentage Damage Increase
- Ferocious Inspiration
- Sanctified Retribution
- Arcane Empowerment
- In fight bonus :
- Tricks of the Trade
- Wild Magic
- Encounter specific bonus from Naxxramas to Trial of the Crusader
- Gear-specific :
- Nevermelting Ice Crystal
- Warlock T10 4-pieces bonus
A note to all the guys who want me to "please add trinket procs" : This addon is devoted solely to monitoring and (in some case) abusing the fact that mind-flay refreshes of SW:P do not take into account %dmg buffs and +crit rating buffs, spellpower buffs are taken into account when refreshing with mind flay. To the best of my knowledge there is only one trinket that procs +crit rating / %dmg (Nevermelting Ice Crystal crit proc). Please stop asking me to add spellpower procs.
Displays
Default display:
It is a simple square button:
- above the square is [upgrade% available now]/[max normal upgrade%] (which means you can have something like 25/20 displayed if some bonus upgrades are available)
- background of the square goes from red to green the bigger the above indicator gets
- if the square border is red it indicates that there are bonus upgrades available
- the skull icon is displayed whenever the current available upgrade% is superior to the one you had when last casting corruption. This means you should reevaluate if recasting corruption is necessary, to make this decision you should use...
- the bottom indicator (time to profit indicator) which tells you an approximation of the time it will take for your cast to be profitable (it's a tradeoff situation, you are losing a gcd to recast...) If the time to profit indicator indicates 3 mins and you know that the fight is likely to be finished in 1 min you should not be recasting...
Bar display:
- Above bar: length represents the [upgrade% available now]
- Below bar: length represents the [upgrade% that was available the last time you cast corruption], this means if above bar is longer than below bar you should consider if recasting corruption is worth it
- They are scaled against the total length of the bar box which represents the [max normal upgrade%], which means it is totally possible that one or both the bars go "out of the box". It is normal and is similar to the 25/20 situation described earlier
- Below indicator: time to profit as described earlier
This seems overly complicated? It is however necessary to get the information you need to make the decision, note that you are free to disable one or more indicators if you feel like they are not significant enough...
To-do list
- Revamp talent detection using awesome libGroupTalents goodness
- Possibly add hunter support
- Add a minimalistic display based only on TTP (possible track to follow : in-your face pulse "RECAST" when ttp < timetodie estimation or set value)
i'll leave this though in case anyone else is running into the problem.
Date: 2010-02-13 06:54:07
ID: 1
Error occured in: Global
Count: 2
Message: ..\AddOns\ShadowGreenLight\Core.lua line 271:
attempt to perform arithmetic on field 'totalWindowedDmg' (a nil value)
Date: 2010-02-13 06:54:17
ID: 2
Error occured in: Global
Count: 28
Message: ..\AddOns\ShadowGreenLight\Core.lua line 637:
attempt to perform arithmetic on field 'instantDPS' (a nil value)
Date: 2010-02-13 06:54:28
ID: 3
Error occured in: Global
Count: 1
Message: ..\AddOns\ShadowGreenLight\Core.lua line 260:
attempt to perform arithmetic on field 'totalWindowedDmg' (a nil value)
Date: 2010-02-13 06:54:18
ID: 4
Error occured in: Global
Count: 22
Message: ..\AddOns\ShadowGreenLight\Core.lua line 260:
attempt to perform arithmetic on field 'dmg' (a nil value)
This includes disabling the addon when changing spec.
I will look into this, the problem is that chances are that this is related to events ordering... Things get complicated when you take into account that I am not so sure that the buff from the crystal is actually even taken into account on your SW:P cast... Maybe the behaviour of the mod actually reflects what is happening... It may even be random depending on the server load at the time of cast...
Short answer : if you want to make sure the trick you are using is working, do not chain your /use and your /cast...
Yeh it is and seems to be working aswel, my bad.
Not possible to use your last versions.
@Kuosi : normally it is already managed, I will test it asap
Possible to add Tricks of the Trade?
<Include file="libs\LibQTip-1.0\lib.xml"/>
<Include file="libs\LibTalentQuery-1.0\lib.xml"/>
to the embeds.xml
Now I get the following 4 errors:
ID: 1
Message: ..\AddOns\ShadowGreenLight\Display.lua line 42:
attempt to index global 'AceGUIWidgetLSMlists' (a nil value)
Debug:
[C]: ?
ShadowGreenLight\Display.lua:42: in main chunk
___________________________________________________________________________
ID: 2
Message: ..\AddOns\ShadowGreenLight\DisplayBar.lua line 42:
attempt to index global 'AceGUIWidgetLSMlists' (a nil value)
Debug:
[C]: ?
ShadowGreenLight\DisplayBar.lua:42: in main chunk
___________________________________________________________________________
ID: 3
Message: ..\AddOns\ShadowGreenLight\Options.lua line 94:
attempt to index global 'AceGUIWidgetLSMlists' (a nil value)
Debug:
(tail call): ?
ShadowGreenLight\Options.lua:94: ResetOptions()
ShadowGreenLight\Core.lua:51:
ShadowGreenLight\Core.lua:21
(tail call): ?
[C]: ?
[string "safecall Dispatcher[1]"]:9:
[string "safecall Dispatcher[1]"]:5
(tail call): ?
...\AddOns\AtlasLoot\Libs\AceAddon-3.0\AceAddon-3.0.lua:510: InitializeAddon()
...\AddOns\AtlasLoot\Libs\AceAddon-3.0\AceAddon-3.0.lua:622:
...\AddOns\AtlasLoot\Libs\AceAddon-3.0\AceAddon-3.0.lua:615
___________________________________________________________________________
ID: 4
Message: ..\AddOns\ShadowGreenLight\Core.lua line 113:
attempt to index field 'registeredDisplays' (a nil value)
Debug:
(tail call): ?
ShadowGreenLight\Core.lua:113: CreateDisplay()
ShadowGreenLight\Core.lua:88: ?()
...ics\libs\CallbackHandler-1.0\CallbackHandler-1.0.lua:147:
...ics\libs\CallbackHandler-1.0\CallbackHandler-1.0.lua:147
[string "safecall Dispatcher[1]"]:4:
[string "safecall Dispatcher[1]"]:4
[C]: ?
[string "safecall Dispatcher[1]"]:13: ?()
...ics\libs\CallbackHandler-1.0\CallbackHandler-1.0.lua:92: Fire()
...ddOns\BossTactics\libs\AceEvent-3.0\AceEvent-3.0.lua:120:
...ddOns\BossTactics\libs\AceEvent-3.0\AceEvent-3.0.lua:119
ID: 1
Error occured in: Global
Count: 1
Message: ..\AddOns\ShadowGreenLight\Core.lua line 18:
Cannot find a library instance of "LibTalentQuery-1.0".
Debug:
[C]: ?
[C]: error()
!Swatter\Support\LibRevision.lua:47: GetLibrary()
ShadowGreenLight\Core.lua:18: in main chunk
AddOns:
Swatter, v5.7.4568 (KillerKoala)
Bartender4, v4.4.2
DBMCore, v
GearScoreLite, v3x03
OneBag3, vv3.3.11
SexyMap, v
ShadowGreenLight, v
/use nevermelting ice crystal
/cast shadow word: pain
Tested multiple times on a target dummy, making sure I was the only one using it and with SW fully stacked beforehand.