[CF 1607] Track empowered assasination rogue debuffs
tmw-issue-import opened this issue ยท 5 comments
I just made long video in pt-br explaining TellMeWhen. I'm trying to move from WA to TMW in my assassination spec.
The problem is how to setup a track for empowered debuffs (garrote debuff with subterfuge talent). Tried using Combat event and counter but no luck so far.
WA is using lua code, any way to replicate this behavior on TMW?
offtopic: ffs curse sucks, there is no way to search past issues? Pls consider a mirror at github/gitlab
function(event, _, type, _, src, _, _, _, dest, _, _, _, spellId)
if event ~= "COMBAT_LOG_EVENT_UNFILTERED" then return end
if src ~= UnitGUID("player") then return end
-- Check for Nightstalker rupture
if IsPlayerSpell(14062) or IsPlayerSpell(200806) then
--init table for target on applying rupture
if type == "SPELL_CAST_SUCCESS" and spellId == 1943 then
if (_G['RuptureDB'][dest] == nil) then
_G['RuptureDB'][dest] = {dest, ["NS"] = false,
["Exsang"] = false}
else
_G['RuptureDB'][dest]["Exsang"] = false
end
-- set Nightstalker bool
if IsStealthed() then
_G['RuptureDB'][dest]["NS"] = true
else
_G['RuptureDB'][dest]["NS"] = false
end
elseif type == "SPELL_AURA_REMOVED" and spellId == 1943 then
_G['RuptureDB'][dest] = nil
end
end
-- Check for exanguinate
if type == "SPELL_CAST_SUCCESS" and spellId == 200806 then
if (_G['RuptureDB'][dest] ~= nil) then
_G['RuptureDB'][dest]["Exsang"] = true
end
end
-- Check for subterfuge garrote
if type == "SPELL_AURA_APPLIED" or type == "SPELL_CAST_SUCCESS" then
if spellId == 703 then
if IsStealthed() or AuraUtil.FindAuraByName(GetSpellInfo(108208), "player")
then
_G['GarroteDB'][dest] =true
else
_G['GarroteDB'][dest] = nil
end
end
elseif type == "SPELL_AURA_REMOVED" and spellId == 703 then
_G['GarroteDB'][dest] = nil
end
end
Posted by CurseForge user dvdscripter | Imported from CurseForge issue #1607 | Raw
I don't know how all the data that is being set in _G.GarroteDB and _G.RuptureDB is being used, so there's not much I can do with this.
Here's an icon that will register this event and record data into those variables.
^1^T^SType^Scooldown ^SEvents^T ^N1^T ^SType^SLua ^SLua^S--~`<Untitled~`Lua~`Code>~J ~J local~`icon~`=~`...~J ~J --Your~`code~`goes~`here:~J ~J if~`icon.GarroteDB~`then~`return~`end~J icon.GarroteDB~`=~`{}~J icon.RuptureDB~`=~`{}~J local~`GarroteDB~`=~`icon.GarroteDB~J local~`RuptureDB~`=~`icon.RuptureDB~J ~J LibStub("AceEvent-3.0"):Embed(GarroteDB)~J ~J GarroteDB:RegisterEvent("COMBAT_LOG_EVENT_UNFILTERED",~`function()~J ~`~`~`~`~`~`~`~`local~`~`_,~`type,~`_,~`src,~`_,~`_,~`_,~`dest,~`_,~`_,~`_,~`spellId~`=~`CombatLogGetCurrentEventInfo()~J ~`~`~`~`~`~`~`~`~J ~`~`~`~`~`~`~`~`~J ~`~`~`~`~`~`~`~`if~`src~`~|=~`UnitGUID("player")~`then~`return~`end~J ~`~`~`~`~`~`~`~`~J ~`~`~`~`~`~`~`~`--~`Check~`for~`Nightstalker~`rupture~J ~`~`~`~`~`~`~`~`if~`IsPlayerSpell(14062)~`or~`IsPlayerSpell(200806)~`then~J ~`~`~`~`~`~`~`~`~`~`~`~`~J ~`~`~`~`~`~`~`~`~`~`~`~`--init~`table~`for~`target~`on~`applying~`rupture~J ~`~`~`~`~`~`~`~`~`~`~`~`if~`type~`==~`"SPELL_CAST_SUCCESS"~`and~`spellId~`==~`1943~`then~J ~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`if~`(RuptureDB[dest]~`==~`nil)~`then~J ~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`RuptureDB[dest]~`=~`{dest,~`["NS"]~`=~`false,~J ~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`["Exsang"]~`=~`false}~J ~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`else~J ~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`RuptureDB[dest]["Exsang"]~`=~`false~J ~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`end~J ~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~J ~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`--~`set~`Nightstalker~`bool~J ~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`if~`IsStealthed()~`then~J ~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`RuptureDB[dest]["NS"]~`=~`true~J ~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`else~J ~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`RuptureDB[dest]["NS"]~`=~`false~J ~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`end~J ~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~J ~`~`~`~`~`~`~`~`~`~`~`~`elseif~`type~`==~`"SPELL_AURA_REMOVED"~`and~`spellId~`==~`~`1943~`then~J ~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~J ~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`RuptureDB[dest]~`=~`nil~J ~`~`~`~`~`~`~`~`~`~`~`~`end~J ~`~`~`~`~`~`~`~`~`~`~`~`~J ~`~`~`~`~`~`~`~`end~J ~`~`~`~`~`~`~`~`~J ~`~`~`~`~`~`~`~`--~`Check~`for~`exanguinate~J ~`~`~`~`~`~`~`~`if~`type~`==~`"SPELL_CAST_SUCCESS"~`and~`spellId~`==~`200806~`then~J ~`~`~`~`~`~`~`~`~`~`~`~`if~`(RuptureDB[dest]~`~|=~`nil)~`then~J ~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`RuptureDB[dest]["Exsang"]~`=~`true~J ~`~`~`~`~`~`~`~`~`~`~`~`end~J ~`~`~`~`~`~`~`~`end~`~`~`~`~J ~`~`~`~`~`~`~`~`~J ~`~`~`~`~`~`~`~`--~`Check~`for~`subterfuge~`garrote~J ~`~`~`~`~`~`~`~`if~`type~`==~`"SPELL_AURA_APPLIED"~`or~`~`type~`==~`"SPELL_CAST_SUCCESS"~`then~J ~`~`~`~`~`~`~`~`~`~`~`~`if~`spellId~`==~`703~`then~J ~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`if~`IsStealthed()~`or~`AuraUtil.FindAuraByName(GetSpellInfo(108208),~`"player")~J ~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`then~J ~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`GarroteDB[dest]~`=true~`~J ~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`else~J ~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`GarroteDB[dest]~`=~`nil~J ~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~J ~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`end~J ~`~`~`~`~`~`~`~`~`~`~`~`end~J ~`~`~`~`~`~`~`~`elseif~`type~`==~`"SPELL_AURA_REMOVED"~`and~`spellId~`==~`703~`then~J ~`~`~`~`~`~`~`~`~`~`~`~`GarroteDB[dest]~`=~`nil~J ~`~`~`~`~`~`~`~`end~J end) ^SEvent^SOnEventsRestored ^t^Sn^N1 ^t^SEnabled^B ^SStates^T ^N1^T ^t^N3^T ^t^N4^T ^t^t^t^N85503^S~`~| ^Sicon^^
Posted by CurseForge user Cybeloras
Thanks for replying!
I want to track when garrote/rupture/exanguinate are empowered. When I select a target debuff can have three states:
- No debuff: do not show (easy part)
- Check if target (GarroteDB[dest]) == true then activate border or change timer number color to green (some form to distingue)
- Else (false) then only show standard tmw icon when debuff is present at target
These conditions for rupture and exanguinate too.
The reasoning is if I override empowered debuff in pandemic window its a DPS loss. I should let debuff run out.
Is possible to do this without lua? My question now is how to evaluate if GarroteDB[dest] is true on another condition icon? How to set dest to make GarroteDB[dest] work?
Thanks !
Posted by CurseForge user dvdscripter
Lua table from Garrote wa:
{
["glow"] = false,
["text1FontSize"] = 17,
["xOffset"] = 35,
["customText"] = "function(progress,...) \\n local target = UnitGUID(\\\"target\\\")\\n local remaining = progress - GetTime()\\n \\n if _G['GarroteDB'] ~= nil and _G[\\\"GarroteDB\\\"][target] ~= nil then\\n return \\\"\\\"..format(\\\"%.f\\\", remaining)\\n else\\n return \\\"\\\"..format(\\\"%.f\\\", remaining)\\n end\\nend\\n\\n\\n\\n",
["yOffset"] = -82.000061035156,
["anchorPoint"] = "CENTER",
["customTextUpdate"] = "update",
["url"] = "https://wago.io/rJvtp6ssm/1",
["actions"] = {
["start"] = {
},
["init"] = {
},
["finish"] = {
},
},
["triggers"] = {
[1] = {
["trigger"] = {
["rem"] = "5.4",
["subeventSuffix"] = "_CAST_START",
["debuffType"] = "HARMFUL",
["ownOnly"] = true,
["event"] = "Health",
["subeventPrefix"] = "SPELL",
["unit"] = "target",
["type"] = "aura",
["spellIds"] = {
},
["remOperator"] = ">=",
["names"] = {
[1] = "Garrote",
},
["buffShowOn"] = "showOnActive",
["custom_hide"] = "timed",
},
["untrigger"] = {
},
},
["activeTriggerMode"] = 1,
},
["text1Enabled"] = true,
["keepAspectRatio"] = false,
["animation"] = {
["start"] = {
["type"] = "preset",
["preset"] = "shrink",
["duration_type"] = "seconds",
},
["main"] = {
["type"] = "none",
["duration_type"] = "seconds",
},
["finish"] = {
["type"] = "preset",
["preset"] = "shrink",
["duration_type"] = "seconds",
},
},
["stickyDuration"] = false,
["progressPrecision"] = 0,
["text1Point"] = "CENTER",
["text2FontFlags"] = "OUTLINE",
["height"] = 30,
["load"] = {
["ingroup"] = {
["multi"] = {
},
},
["use_never"] = false,
["talent"] = {
["multi"] = {
},
},
["talent2"] = {
["multi"] = {
},
},
["class"] = {
["single"] = "ROGUE",
["multi"] = {
},
},
["difficulty"] = {
["multi"] = {
},
},
["role"] = {
["multi"] = {
},
},
["use_class"] = true,
["race"] = {
["multi"] = {
},
},
["use_spec"] = true,
["faction"] = {
["multi"] = {
},
},
["pvptalent"] = {
["multi"] = {
},
},
["use_combat"] = true,
["spec"] = {
["single"] = 1,
["multi"] = {
},
},
["size"] = {
["multi"] = {
},
},
},
["text2Enabled"] = false,
["text1Font"] = "Expressway",
["text2Containment"] = "INSIDE",
["cooldownTextEnabled"] = true,
["text1Color"] = {
[1] = 1,
[2] = 1,
[3] = 1,
[4] = 1,
},
["desaturate"] = false,
["parent"] = "DebuffsAssa",
["text1FontFlags"] = "OUTLINE",
["regionType"] = "icon",
["internalVersion"] = 9,
["text1Containment"] = "INSIDE",
["text2FontSize"] = 24,
["selfPoint"] = "CENTER",
["text1"] = "%c",
["anchorFrameType"] = "SCREEN",
["alpha"] = 1,
["text2"] = "%p",
["auto"] = true,
["text2Point"] = "CENTER",
["id"] = "G",
["icon"] = true,
["frameStrata"] = 3,
["width"] = 35,
["zoom"] = 0,
["uid"] = "Rburt1qA090",
["inverse"] = false,
["text2Color"] = {
[1] = 1,
[2] = 1,
[3] = 1,
[4] = 1,
},
["conditions"] = {
[1] = {
["check"] = {
["trigger"] = 1,
["op"] = "<=",
["value"] = "5.4",
["variable"] = "expirationTime",
},
["changes"] = {
[1] = {
["value"] = true,
["property"] = "glow",
},
},
},
},
["color"] = {
[1] = 1,
[2] = 1,
[3] = 1,
[4] = 1,
},
["text2Font"] = "Friz Quadrata TT",
}
Only lua code:
function(progress,...)
local target = UnitGUID("target")
local remaining = progress - GetTime()
if _G['GarroteDB'] ~= nil and _G["GarroteDB"][target] ~= nil then
return "|cFF00FF00"..format("%.f", remaining)
else
return "|cFFFFFFFF"..format("%.f", remaining)
end
end
Posted by CurseForge user dvdscripter
why are you using combat log to track unit debuffs? Why not just have icons with conditions for each state (player buff/target debuff combos)?
I havent played rogue much, but I'm assuming -
1. You target has a bleed you want to track
2. You have a buff that you want to use only when target buff is within certain window
When you want to have an icon that only appears in certain conditions, use the "conditions" tab for that icon (it's at the bottom) and configure as many conditions as you want. Sound like you want to use Buffs/Debuffs based on duration.
In terms of changing how the icon looks like - in TMW you can't really change icon text (eg their color). You will need to have multiple icons for different text colors. You can however make the icon color change and add/remove activation border using the Notifications tab > Animation
Edited Nov 14, 2018
Posted by CurseForge user ariehg
Yeah. But garrote debuff has 2 states: empowered and not empowered. The only way I can tell them apart is by using the WA I pasted above.
Again, garrote debuff has the same spellID empowered or not. How I'll track the empowered state?
Thanks
Posted by CurseForge user dvdscripter