TellMeWhen

TellMeWhen

24M Downloads

[CF 1607] Track empowered assasination rogue debuffs

tmw-issue-import opened this issue ยท 5 comments

commented

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

commented

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

commented

Thanks for replying!

 

I want to track when garrote/rupture/exanguinate are empowered. When I select a target debuff can have three states:

  1. No debuff: do not show (easy part)
  2. Check if target (GarroteDB[dest]) == true then activate border or change timer number color to green (some form to distingue)
  3. 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

commented

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"] = "&gt;=",
                ["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"] = "&lt;=",
                ["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

commented

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

commented

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