1. #1

    Macro: Talent Row Abilities - what a mess!

    If anyone has tried to make macros that include the abilities from a talent row and wanted the appropriate spell icon tooltip to show via #showtooltip, then please comment on the post on the official forums..

    http://us.battle.net/wow/en/forum/to...19589?page=1#7

    Basically there are two main options:

    1. Unknown abilities get skipped and the macro system looks for the next ability for that modifier to display in the tooltip, which helps with warlock/hunter pet macros and the like.

    2. New talent row codes get created that pull up the current selected ability from a specified talent row. Ex for talent row 45:
    /use [mod:shift] T45

  2. #2
    Quote Originally Posted by MastaKwaa View Post
    If anyone has tried to make macros that include the abilities from a talent row and wanted the appropriate spell icon tooltip to show via #showtooltip, then please comment on the post on the official forums..

    http://us.battle.net/wow/en/forum/to...19589?page=1#7

    Basically there are two main options:

    1. Unknown abilities get skipped and the macro system looks for the next ability for that modifier to display in the tooltip, which helps with warlock/hunter pet macros and the like.

    2. New talent row codes get created that pull up the current selected ability from a specified talent row. Ex for talent row 45:
    Here's what you do. Either make every macro like this:
    http://us.battle.net/wow/en/forum/topic/6147396102#2
    or use an addon to add tier based showtooltips to all your macros:
    http://www.wowinterface.com/download...ntMacroes.html
    You can also just make profiles with your buttons and swap them, bypassing macros entirely:
    http://www.curse.com/addons/wow/abs
    http://www.wowace.com/addons/action-bar-saver/
    Last edited by Sedivy; 2012-08-30 at 10:57 PM.

  3. #3
    The /run script itself takes up too much space IMO. I have several macros that push right up to the 255 character limit, so that won't fix this issue.

    The add on is intriguing. I was debating on making one myself (have lua experience). I will give that a shot for sure, but the one thing that isn't clear to me is when they say:
    make sure you do not have more than one macro per tier as it can cause issues
    Would that handle different modifier variants of the same spell within a single macro? Blood Fear in T60 (tier_4) Ex:
    #showtooltip
    /use [nomod] Incinerate
    /use [mod:shift] tier_4
    /use [mod:ctrl,@focus] tier_4
    Thanks for the links to the add ons btw!
    Last edited by MastaKwaa; 2012-08-30 at 11:09 PM.

  4. #4
    I stand corrected. Sec...

    ---------- Post added 2012-08-30 at 07:38 PM ----------

    Ah ok well if you want something more than the straightforward ability, you're going to have to do macro branching with click if you want this to work. Explained here
    http://www.wowpedia.org/Making_a_mac..._with_.2Fclick

    and also author explains it to someone else here:
    http://www.wowinterface.com/download....html#comments

    but that would force you to use two macros for these. Then again multiple macros will be used even with button savers though you could use MacroBank and then swap these in and out of active macros together with your button saver profile swap.
    Last edited by Sedivy; 2012-08-30 at 11:45 PM.

  5. #5
    Hmm...
    looks like it's just rewriting the macro each time the character logs in or changes talents. (If I'm wrong, ignore the rest of this )

    Source:
    Code:
    local function OnEvent(self, event, ...)
    	if (event == "PLAYER_LOGIN") or (event == "PLAYER_TALENT_UPDATE") then
    		for i=1, 18 do
    			local name, _, tier, _, selected = GetTalentInfo(i)
    			if selected then
    				if tier == 1 then
    					EditMacro("TIER_1", nil, "INV_Misc_QuestionMark", "#showtooltip "..name.."\n/cast "..name)
    				elseif tier == 2 then
    					EditMacro("TIER_2", nil, "INV_Misc_QuestionMark", "#showtooltip "..name.."\n/cast "..name)
    				elseif tier == 3 then
    					EditMacro("TIER_3", nil, "INV_Misc_QuestionMark", "#showtooltip "..name.."\n/cast "..name)
    				elseif tier == 4 then
    					EditMacro("TIER_4", nil, "INV_Misc_QuestionMark", "#showtooltip "..name.."\n/cast "..name)
    				elseif tier == 5 then
    					EditMacro("TIER_5", nil, "INV_Misc_QuestionMark", "#showtooltip "..name.."\n/cast "..name)
    				elseif tier == 6 then
    					EditMacro("TIER_6", nil, "INV_Misc_QuestionMark", "#showtooltip "..name.."\n/cast "..name)
    				end
    			end
    		end
    	end
    end

    Although, I should be able to just create custom names for my macros and then modify the if statements to check from the custom macro names... also, the addon could be simplified to not include "..name.." after #showtooltip since it appears to just write /cast SpellNameWhatever

    So say I wanted to have the macro in my previous post:
    #showtooltip
    /use [nomod] Incinerate
    /use [mod:shift] tier_4
    /use [mod:ctrl,@focus] tier_4
    I'd just modify it for my warlock T45 (tier_3) so it doesn't screw up any other class (look at tier 3 "LOCK_3")...

    Modified:
    Code:
    local function OnEvent(self, event, ...)
    	if (event == "PLAYER_LOGIN") or (event == "PLAYER_TALENT_UPDATE") then
    		for i=1, 18 do
    			local name, _, tier, _, selected = GetTalentInfo(i)
    			if selected then
    				if tier == 1 then
    					EditMacro("TIER_1", nil, "INV_Misc_QuestionMark", "#showtooltip\n/cast "..name)
    				elseif tier == 2 then
    					EditMacro("TIER_2", nil, "INV_Misc_QuestionMark", "#showtooltip\n/cast "..name)
    				elseif tier == 3 then
    					EditMacro("TIER_3", nil, "INV_Misc_QuestionMark", "#showtooltip\n/cast "..name)
                                            EditMacro("LOCK_3", nil, "INV_Misc_QuestionMark", "#showtooltip\n/use [nomod] Incinerate\n/use [mod:shift] "..name.."\n/use [mod:ctrl,@focus] "..name)
    				elseif tier == 4 then
    					EditMacro("TIER_4", nil, "INV_Misc_QuestionMark", "#showtooltip\n/cast "..name)
    				elseif tier == 5 then
    					EditMacro("TIER_5", nil, "INV_Misc_QuestionMark", "#showtooltip\n/cast "..name)
    				elseif tier == 6 then
    					EditMacro("TIER_6", nil, "INV_Misc_QuestionMark", "#showtooltip\n/cast "..name)
    				end
    			end
    		end
    	end
    end
    I'm not sure what happens if it can't find a macro with that name...
    If I don't have a "TIER_3" macro on my lock, will it break there or skip to the next line? Hopefully it just continues to the next line. Otherwise I'm quessing there's a simple check that can be done:
    Code:
    if GetMacro("TIER_3") ~= nil then
         EditMacro("TIER_3", nil, "INV_Misc_QuestionMark", "#showtooltip\n/cast "..name)
    end
    if GetMacro("LOCK_3") ~= nil then
         EditMacro("LOCK_3", nil, "INV_Misc_QuestionMark", "#showtooltip\n/use [nomod] Incinerate\n/use [mod:shift] "..name.."\n/use [mod:ctrl,@focus] "..name)
    end
    Last edited by MastaKwaa; 2012-08-30 at 11:56 PM.

  6. #6
    I edited my previous post. Don't think you can do it that way without macro branching. The last bit you wrote would require macro editing which I guess could work but wouldn't work mid-combat so that may give you issues though I suppose you're hardly going to switch your tier abilities mid combat anyway.
    Either way it's probably beyond the scope of that addon. You'd have to code this yourself.

  7. #7
    Quote Originally Posted by MastaKwaa View Post
    Hmm...
    looks like it's just rewriting the macro each time the character logs in or changes talents. (If I'm wrong, ignore the rest of this )
    Yeah thats exactly what it does. It blindly creates a macro of the talent name. The problem with the addon is that not every tier has a casted ability. The first tier on the Paladin has to pick between 1 casted ability (a sprint) and 2 passives. I wanted a macro to use spirit and rocket boots if I had the sprint talent otherwise just use my rocket boots if I didn't. I ended up using this messy code block to get the job done:

    Code:
        local name, _, tier, column, selected = GetTalentInfo(i)                
                    if selected then
                        if tier == 1 then
                            if (name == "Speed of Light") then
                                EditMacro("T1", nil, "INV_Misc_QuestionMark", "#showtooltip \n /cast stuff")
                            if (name == "Long Arm of the Law") then
                                EditMacro("T1", nil, "INV_Misc_QuestionMark", "#showtooltip \n /cast something else ")
                            end
                            if (name == "Pursuit of Justice") then
                                EditMacro("T1", nil, "INV_Misc_QuestionMark", "#showtooltip \n /cast even more stuff ")
                            end
                       end
    I've been using this for a few days and it seems to work fine. It creates a different macro for each talent in Paladin Teir 1. Downside is that to change you macros you need to edit lua files and this probably only works on 1 character.

    I'm sure someone is going to come up with a more generalized solution soon. Ideally something with an in game UI and saves what your macros are to variables and such. For now though this gets the job done.

  8. #8
    Quote Originally Posted by Kebren View Post
    I'm sure someone is going to come up with a more generalized solution soon. Ideally something with an in game UI and saves what your macros are to variables and such. For now though this gets the job done.
    Could do
    http://www.curse.com/addons/wow/profiles-macros
    +
    http://www.curse.com/addons/wow/profiles-Action-bars
    (done by the same author)
    and that way swap abilities on the bar and at the same time swap macros as well and you wouldn't have to double up on macro slots in default blizz macro menu. It would work like macrobank, saving all the macros for you then swapping them in/out with the profile and action bars would save where it's positioned on the bar.
    Last edited by Sedivy; 2012-08-31 at 12:40 AM.

  9. #9
    Quote Originally Posted by Kebren View Post
    Code:
        local name, _, tier, column, selected = GetTalentInfo(i)                
                    if selected then
                        if tier == 1 then
                            if (name == "Speed of Light") then
                                EditMacro("T1", nil, "INV_Misc_QuestionMark", "#showtooltip \n /cast stuff")
                            if (name == "Long Arm of the Law") then
                                EditMacro("T1", nil, "INV_Misc_QuestionMark", "#showtooltip \n /cast something else ")
                            end
                            if (name == "Pursuit of Justice") then
                                EditMacro("T1", nil, "INV_Misc_QuestionMark", "#showtooltip \n /cast even more stuff ")
                            end
                       end
    I've been using this for a few days and it seems to work fine. It creates a different macro for each talent in Paladin Teir 1. Downside is that to change you macros you need to edit lua files and this probably only works on 1 character.
    It creates different macros for each talent? That's weird. Does it name each of them "T1" somehow?
    Also, I'd think that you'd be able to make as many custom macros as you wanted that way, so long as you name them uniquely for each character.

    Note: the () around, name == "blah blah", don't need to be there, and also you can use if/elseif/elseif instead of if/if/if so that it skips to the end of the if/then block.
    Bug: the first if statement for Speed of Light doesn't have an end... might be the cause of the extra macros??? but I doubt it

    Bug Fix:
    Code:
               
                    if selected then
                        if tier == 1 then
                            if name == "Speed of Light" then
                                EditMacro("T1", nil, "INV_Misc_QuestionMark", "#showtooltip \n /cast stuff")
                            elseif name == "Long Arm of the Law" then
                                EditMacro("T1", nil, "INV_Misc_QuestionMark", "#showtooltip \n /cast something else ")
                            elseif name == "Pursuit of Justice" then
                                EditMacro("T1", nil, "INV_Misc_QuestionMark", "#showtooltip \n /cast even more stuff ")
                            end
                       end


    Example of how you could simplify (assuming you want the macro to be the same and just change the tier ability) and extend it across classes (pally + warlock):
    Code:
               
                    if selected then
                        if tier == 1 then
                            if name == "Speed of Light" or name == "Long Arm of the Law" or name == "Pursuit of Justice" then
                                EditMacro("Pala1", nil, "INV_Misc_QuestionMark", "#showtooltip \n /cast paladin stuff")
                            elseif name == "Soul Link" or name == "Sacrificial Pact" or name == "Dark Bargain" then
                                EditMacro("Lock1", nil, "INV_Misc_QuestionMark", "#showtooltip \n /cast warlock stuff ")
                            end
                       end


    Yeah, editing those macros would mean editing lua files, but I personally set up my macros once, tweak them until they're good, and then they don't change until the next xpac.

  10. #10
    Quote Originally Posted by MastaKwaa View Post
    It creates different macros for each talent? That's weird. Does it name each of them "T1" somehow?
    Also, I'd think that you'd be able to make as many custom macros as you wanted that way, so long as you name them uniquely for each character.

    Note: the () around, name == "blah blah", don't need to be there, and also you can use if/elseif/elseif instead of if/if/if so that it skips to the end of the if/then block.
    Bug: the first if statement for Speed of Light doesn't have an end... might be the cause of the extra macros??? but I doubt it

    Yeah, editing those macros would mean editing lua files, but I personally set up my macros once, tweak them until they're good, and then they don't change until the next xpac.
    I guess I wasn't as clear as I should have been. I meant that it the "T1" macro is recreated each time I pick up a different talent in the first Paladin Teir. This allows me to create one set of logic for "Speed of Light and completely different set of logic for "Pursuit of Justice and "Long Arm of the Law".

    It's been working out nicely for me so far. Everything is automatic and seamless once setup.

  11. #11
    Quote Originally Posted by Kebren View Post
    I guess I wasn't as clear as I should have been. I meant that it the "T1" macro is recreated each time I pick up a different talent in the first Paladin Teir. This allows me to create one set of logic for "Speed of Light and completely different set of logic for "Pursuit of Justice and "Long Arm of the Law".

    It's been working out nicely for me so far. Everything is automatic and seamless once setup.
    Ok, so it just rewrites the existing T1 macro so it stays on your bar, but the content of the macro can be modified differently for each talent should you desire it. I thought you meant it was making a new macro that you had to redrag to your bar every time xD Thanks for the clarification!

  12. #12

    [Solved] Macro: Talent Row Abilities - what a mess!

    Finally got around to editing macros and lua, and it works fine. I have 7 characters setup this way and they all work without messing any others up since they're uniquely named macros.

    Using one of the links Sedivy supplied:
    http://www.wowinterface.com/download...ntMacroes.html

    and modifying the lua like the example at the bottom of post #9

    Code:
                    if selected then
                        if tier == 1 then
                            if name == "Speed of Light" or name == "Long Arm of the Law" or name == "Pursuit of Justice" then
                                EditMacro("Pala1", nil, "INV_Misc_QuestionMark", "#showtooltip\n/use "..name)
                            elseif name == "Soul Link" or name == "Sacrificial Pact" or name == "Dark Bargain" then
                                EditMacro("Lock1", nil, "INV_Misc_QuestionMark", "#showtooltip\n/use "..name)
                            end
                       end
    Last edited by MastaKwaa; 2012-09-04 at 09:47 PM.

  13. #13

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •