targetAssist

targetAssist buttons

targetAssist

Anyone else miss MainAssist? targetAssist is my attempt to recreate the basic functionality of that wonderful addon.

targetAssist provides unit frames that track tanks and main assists in your party or raid, along with their current targets. You can position the frames by dragging the header bar. Targeting buttons can be arranged above or below the header (see the Appearance section of the configuration options):

targetAssist window

Right click on the header bar to bring up a context menu that will allow you to select the tracked party/raid members and configure the addon:

targetAssist context menu

Left click on party/raid members or their targets to target those units. Right clicking on the party/raid member buttons brings up a menu that allows you to change the order in which they appear:

targetAssist unit order

Right click on a party/raid member target to change the raid icon on that unit:

targetAssist raid icon

The interface options panel allows you to customize the visual appearance and behavior of the addon:

targetAssist interface panel

In addition to setting up the addon to automatically track tanks and main assists set through the default UI, you can also broadcast your current settings to other members of your party/raid who are running the addon:

targetAssist broadcast

Version History

1.4.2

  • Updated TOC version

A note about development of the addon: the addon is in "maintenance release" mode for the time being, meaning that I'll fix bugs that get submitted, but it's unlikely that big new features will be added in the near future. If anyone is interested in getting involved in development of the addon, please feel free to send me a PM!

1.3 (last stable 1.3)

New Features:

  • Updated the appearance of the addon when showing target-of-target buttons.
  • Added an option to hide the header bar until you mouse over it (enabled by default). However, the header bar will automatically un-hide when there are no targeting buttons being shown, so you don't loose track of where the addon is on the screen.
  • Buttons associated with friendly or hostile targets can now be colored based on the character's class.
  • You can show the percentage health for friendly or hostile targets.

Squashed Bugs:

  • Changes to the appearance of the header bar should now apply immediately (and not lead to abandoned UI elements floating around).
  • Added an option (enabled by default) that will remove tanks and mainassists that were picked up automatically if those targets disappear from the MT/MA lists when the roster updates. There are edge cases where this can lead to unexpected results: if you have manually added a tank, which is also picked up on a MT list and then subsequently removed from the MT list, the tank (originally added by you manually) will disappear from your assist list. If this bugs you, disable this new option on the features panel.

Deprecated Settings:

  • Width of the targeting buttons is now set explicitly and the header bar sized accordingly (as opposed to the inverse in previous versions). However, the addon now includes logic for automatically migrating settings from previous versions of the configuration database, so the change over should happen automatically whenever you load a profile for the first time.

1.2 (last stable 1.2.2)

New Features:

  • Improved key binding support for assist, assist target, and assist target of target frames. This feature is now implemented using LibKeyBound, which should be familiar to anyone who has used Bartender4 or other popular Ace mods. The new implementation allows you to map key bindings to any number of buttons. To set bindings open the configuration panel and click the "Targeting Keybinds" button or use the /kb chat command.
  • A key binding has been added which will clear all current assists (this can be set through built-in key bindings panel).
  • The configuration panels have been updated to try to make options easier to find (usability feedback welcome).

Squashed Bugs:

  • Changes in configuration, the group roster, and showing/hiding the add-on should be much smoother visually (no more button flickering and blinking), even at slow update intervals
  • The add-on now correctly updates when your pet changes or the pets of your party/raid members change
  • Targeting key bindings should continue to work even after configuration changes and updates to the group roster (previously odd behaviors occurred until the UI was reloaded)
  • Changes to the header appearance should now correctly apply immediately without a UI reload

Deprecated Settings:

  • Any previously set targeting key bindings will need to be reconfigured using the new interface (use the chat command /kb)

1.1 (last stable 1.1.2)

New Features:

  • Added an option to show target of target (see "Optional Features" on the configuration panel)
  • Added support for using pets as MAs/MTs. Enable "Show Pets" in the "Optional Features" section of the configuration panel. Uncheck "Hide addon when not in group" in the "Button Header" section to use your pet as a MA when playing solo.
  • Added a variety of chat window slash commands. See /targetAssist or /ta for details.
  • Added a number of key bindings for the add-on. See the built-in Keybindings window for details.
  • Added options to add your current target as an MA. You can do this through the header bar context menu, with the "/ta add target" slash command, or new keybinds. Add arbitrary party/raid members with the "/ta add player NAME" command (where NAME is the name of the player).
  • You can now have button rows grow upwards from the header bar instead of downwards. Select "Advance buttons upwards" in the "Fonts & Styles" section of the configuration panel.
  • Added options to track not only the most popular hostile target, but also the most popular friendly target, and options to show counters summarizing the number of raid/party members targeting each.
  • Added support for Clique casting and pulling tanks from oRA2 and oRA3.

Squashed Bugs:

  • When in a raid the add-on should now correctly update with new MA's and MT's set by raid leaders through the Blizzard user interface, /mainassist or /maintank commands, or with oRA2. Please file a ticket if you are still having problems with this feature.

Deprecated Settings:

  • If you changed the vertical spacing setting for target buttons, your settings will have reverted to the defaults.

1.0 (last stable 1.0)

Description:

  • Initial release to gage interest and solicit feature requests

Bug Reports and Feature Requests

Please submit bug reports here: http://wow.curseforge.com/addons/targetassist/tickets/. Feature requests are also welcome. If you are interested in helping to develop this mod, or if you would like to help with localization efforts, please contact me here via PM or at sonora.kirintor@gmail.com.

You must login to post a comment. Don't have an account? Register to get one!

  • Avatar of Morgalm Morgalm Dec 30, 2011 at 00:01 UTC - 0 likes

    Not sure what has changed but tank behavior seems to be broken atm. It isnt (always) detecting when I add/remove tanks using the blizz tanks (ie promote them to tank) Also I had 2 tanks up then one just disappeared. I checked and under custom tanks it had tank1 and tank2 both checked but only tank1 was showing. If I unchecked tank2 tank1 disappeared. Could never get tank2 to appear. Seems to be new behavior in last month or so.

  • Avatar of Sonora Sonora Apr 27, 2011 at 21:57 UTC - 0 likes

    @Morgalm: Go

    Just caught that - fixed in 1.4.1.

    Last edited Apr 27, 2011 by Sonora
  • Avatar of Morgalm Morgalm Apr 27, 2011 at 00:38 UTC - 0 likes

    Your comm name is too long can only be 16 chars now.

  • Avatar of Sonora Sonora Dec 06, 2010 at 03:01 UTC - 0 likes

    More great suggestions!

    (a) patch included in 1.2 (b) patch included in 1.2 (thanks, I hadn't stumbled on these API calls before) (c) Most flickering and blinking should be fixed in 1.2. Your suggestions for replacing the previous kludge with a cleaner implementation inspired me to take a larger pass over the drawing/updating functions.

  • Avatar of Dridzt Dridzt Nov 30, 2010 at 12:36 UTC - 0 likes

    You shouldn't encourage me... but you just did so.. :-P

    A couple last things if I may.

    a. One more convenience key-bind for "Clear All"
    Use case: Works nicely as a quick refresh when you have "automatically add tanks".
    Setting a tank through oRA or Blizzard interface adds it to targetAssist targets.
    Removing it (because next encounter doesn't need 2 or 3 or because it was a ranged tank for particular encounter etc) doesn't also remove it from targetAssist.
    A quick "clear all" refreshes the list since current tanks are automatically re-added.

    BINDING_NAME_TACLEARTARGETS = "Clear all targets"
    
    <Binding name = "TACLEARTARGETS">
        targetAssist:clearAll()
    </Binding>
    

    There's also a little typo in the print for combat lockdown in add target binding ('durring' instead of 'during')

    b. In gui.lua a small typo in broadcasts menu item:
    'Recieved broadcasts' instead of 'Received broadcasts'.
    In the same section the functions for broadcasting to raid/party/guild need some checks in place so you don't get the dreaded "player x / you are not in a raid/party/guild" system message spam.

    -- 'RAID'
    if GetRealNumRaidMembers()>0 then
        self:SendCommMessage() 
    end
    -- 'PARTY'
    if GetRealNumPartyMembers()>0 then
        self:SendCommMessage()
    end
    -- 'GUILD'
    if IsInGuild() then
        self:SendCommMessage()
    end
    

    Using the GetRealNum* function variants as the plain GetNumParty|RaidMembers() versions will return true in BGs but trying to sendcomm in 'RAID' or 'PARTY' distribution will fail and produce the usual system error messages.
    The GetRealNum* functions only return true party/raid members.

    c. Finally.
    Tested the disable functionality.
    It is working better than before i.e no stuck assistbuttons but they do occasionally 'flicker' in existence briefly and immediately hide again.
    I'm thinking this flickering will be more noticeable the slower frequency updates the user has selected (barely noticeable at 0.1 the default, more visible at 0.2 that I have it set, quite visible at 0.5)
    It would help down the road if you made use of AceAddon-3.0 :OnEnable() and :OnDisable() api to split your initialization to SV stuff in OnInit and event registration/callbacks etc in OnEnable so OnDisable can shut the addon down cleanly.
    Same if you decide to make 'disable' a persistent value instead of a session variable.
    (although I think it makes perfect sense as you have it not persisting a reload)

    Anyway getting carried away :)
    That would require some refactoring.
    The next best thing and quite simple is with these minimal changes:
    1. In core.lua in OnInitialize() function storing the timer handle when it's created

    self.timerhandle = self:ScheduleRepeatingTimer('onUpdate', self.config.updateInterval)
    

    2. In core.lua again a new function added

    function targetAssist:disable(disabled)
        if disabled then
            self:UnregisterEvent('PARTY_MEMBERS_CHANGED')
            self:UnregisterEvent('RAID_ROSTER_UPDATE')
            self:UnregisterEvent('PLAYER_ROLES_ASSIGNED')
            self:CancelTimer(self.timerhandle)
            self:UnregisterComm('targetAssist.broadcastTargets')
            if self.headerFrame then
                self.headerFrame:Hide()
                for targetName, buttonFrame in pairs(self.targetButtons or {}) do
                    buttonFrame:Hide()
                end
            end
        else
            self:RegisterComm('targetAssist.broadcastTargets', 'targetReceiver')
            self.timerhandle = self:ScheduleRepeatingTimer('onUpdate', self.config.updateInterval)
            self:RegisterEvent('PARTY_MEMBERS_CHANGED')
            self:RegisterEvent('RAID_ROSTER_UPDATE')
            self:RegisterEvent('PLAYER_ROLES_ASSIGNED')
            -- onUpdate will take care of showing header/buttons
        end
    end
    

    I put it just under OnInitialize() block.
    3. A little further down core.lua remove that workaround from onUpdate() as it's no longer needed and just leave the original hide check.

    if self.hide and self.headerFrame then
        self.headerFrame:Hide()
        -- etc
    

    4. In gui.lua updating the 'Disable' gui option and the '/ta hide' '/ta show' respectively to:
    gui options

    set = function(info, value) self.disabled = value; self:disable(self.disabled) end,
    

    /ta hide

    self.disabled = true
    self:disable(self.disabled)
    

    /ta show

    self.disabled = false
    self:disable(self.disabled)
    -- etc
    

    Sorry for the humongous wall of text.
    Went to the source to find the reason for the flickering so I don't keep bothering you for the same thing with no new info and kinda bumped into these :)

  • Avatar of Sonora Sonora Nov 30, 2010 at 02:03 UTC - 0 likes

    @Dridzt - another great suggestion! Fixed in 1.1.2.

    Feature suggestions, accompanied by clean & simple implementations? Feel free to bug me all you want!

  • Avatar of Dridzt Dridzt Nov 29, 2010 at 05:00 UTC - 0 likes

    Great, I'll get back to you after I've tested :)

    I have another little suggestion.
    It's never been an issue on my tank but noticed it on the healer.

    I'm using Clique for click-casting.
    There's a small non-breaking problem in that targetAssist doesn't check for modifiers
    so you can only use modified-leftclick and middle or modified-middle click to click cast.

    Doing a shift-right click or ctrl-right click will do the cast but will also popup the targetAssist menu.

    Maybe checking IsModifierKeyDown() in OnMouseUp handler to avoid popping up the menu and only do it on plain right click.

    Sorry to keep bugging you :P

    Last edited Nov 29, 2010 by Dridzt
  • Avatar of Sonora Sonora Nov 29, 2010 at 02:59 UTC - 0 likes

    Thanks - this bug should be fixed in 1.1.1!

  • Avatar of Dridzt Dridzt Nov 29, 2010 at 01:04 UTC - 0 likes

    version 1.1 works pretty well but I still have the problem with disable.
    Some more info.

    I have the embedded libs version installed on enGB client.

    I definitely wasn't in-combat when I tested it this time.

    Steps to reproduce from my end:
    1. Open targetAssist options tick "Disable"
    Header and any assists bars hide as you'd expect.
    2. Cross a loading screen (like a raid portal for example)
    A "ghost" bar re-appears.
    Open options and check/uncheck "Disable" again.
    Header and assist bars hide again.
    3. Have the RL or yourself if you have permission do a promote, set tanks, basically anything that would fire a RAID_ROSTER_UPDATE.
    Ghost bar re-appears.
    This is how it looks in-game
    targetAssist "disabled" bar
    Attaching the saved variables for the character affected just in case there's some corruption there.

    Still zero lua errors (have them enabled and using BugGrabber/BugSack) but I can move this to a ticket if you prefer it there.

    Last edited Nov 29, 2010 by Dridzt
  • Avatar of Sonora Sonora Nov 28, 2010 at 03:39 UTC - 0 likes

    @Dridzt Thank you for all of your thoughtful feedback!

    Hide bug: I still haven't been able to recreate the bug. My guild isn't raiding these days so my only test environment for raid groups is battlegrounds; my failure to recreate the bug might be due to some odd difference between the two. If you see the problem again, try this (and let me know what happens): Use the chat command "/ta hide".

    Including self as MA: I'm sold! In 1.1rc1 (or the actual release if I don't end up syndicating the release candidate), you'll find a new option on the configuration panel to include yourself on the add-on's roster of possible main assist targets.

    I hope the EU servers are up and working for you despite the holiday here in the US!

Facts

Date created
Nov 12, 2010
Categories
Last update
Sep 06, 2012
Development stage
Release
Language
  • enUS
License
GNU General Public License version 3 (GPLv3)
Curse link
targetAssist
Downloads
90,225
Recent files
  • R: 1.4.4 for 5.0.4 Sep 06, 2012
  • R: 1.4.3 for 4.3 Nov 30, 2011
  • B: 1.4.3b for 4.3 Nov 29, 2011
  • R: 1.4.2 for 4.2 Jun 30, 2011
  • R: 1.4.1 for 4.1 Apr 27, 2011

Authors