RoleIcons
RoleIcons is a tiny UI mod that adds Blizzard's party/raid role icons (tank/heal/dps) in several useful places in your UI, and provides several other related features.
Role icons are added to:
- The Blizzard raid tab. The role icons replace the level field for max level players.
- Game tooltip when you mouse over a player or raid frame
- Target frame
- HealBot unit frames
- HealBot and Vuhdo tooltip when you mouse over a raid frame
- Party/Raid chat (Blizzard chat frames, Prat, Chatter, WIM)
- NEW in 4.2: System messages that mention group members
- NEW in 4.3: Player popup context menus
- NEW in 4.4: Group member tooltips on map and minimap
Other features:
- Enhances the Blizzard Raid tab with role summary counts and class summary counts
- Adds a role-check button to the Raid tab
- Blizzard Raid tab can now be left-clicked to target a raid member
- Blizzard Raid tab can now be middle-clicked to set a raid member's role
- Automatically sets your role based on your spec when joining a raid or respeccing
- Automatically replies to role checks from the raid leader based on your spec
- Adds a tooltip showing the tier token breakdown for the current raid members
- NEW in 4.0: Displays the "hosting" realm name while in cross-realm groups, showing when it changes and why
- All features are optional and can be toggled using /ri
Basic Usage:
- Install as usual
- It Just Works! (tm)
Command Line Usage:
- /ri help - Get info on command-line options
- /ri check, /rolecheck - perform a Role Check (must be leader or raid assistant)
Featured in a Curse Addon Spotlight!!!
Bug reports or feature requests
Forum thread for general discussion
Caveat copy-paste-r, but in theory this is a sufficiently-updated copy of RoleIcons.lua: https://pastebin.com/51jgmCwZ
Has the max player level fix I posted four years ago and UppyDan's tooltip fix from two years ago, in addition to three (so far) 11.0.2 changes: a tweak to how it grabs the list of classes, something to do with "GetTexCoordsForRole" for which I found *one* relevant hit on the internet (thank you random WeakAuras GitHub pull request!), and freshly added "C_Addon." in front of a few deprecated function calls.
Hopefully we're good for another two years, but if something else breaks and either it's a simple enough fix or someone else posts a solution I'll *try* and keep that link up-to-date.
Oh wow, I'd forgotten/not-known it had token breakdowns you could show too. I'll try and remember to poke at that at some point, for the upcoming TWW season, but not tonight. For now, I think the more important bits work and that's good enough for me.
this doesnt work in Dragonflight...
Can someone share an fixed filed working?
Cannot get the ICON to work in Raid... tried the comment fixes but nothing
5x Interface\FrameXML\Bindings.xml:1 RoleIcons/RoleIcons.lua:1 (null)
That would be an addon really cool to have in WotLK.
Anyone got it working for 3.4.1+ ?
Thanks UppyDan for trying to fix this but neither of the changes have made difference for me. Previous one with blocking a whole bunch of lines still popped an error at the start and the error was gone after changing the line # 1024. But as soon as joined a party (created a group in LFG since it marks you as being in a party group), another error appeared and no role icons on any portraits. I am also using Shadowed Unit Frames addon and pretty sure that one has support for Role Icons function calling out from this one. Here's the new error that appears when joining a party.
22x RoleIcons/RoleIcons.lua:1227: attempt to call global 'UpdateTarget' (a nil value)
[string "@RoleIcons/RoleIcons.lua"]:1227: in function <RoleIcons/RoleIcons.lua:1202>
Locals:
frame = RoleIconsHiddenFrame {
0 = <userdata>
}
event = "PLAYER_REGEN_ENABLED"
name = nil
(*temporary) = nil
(*temporary) = "target"
(*temporary) = "attempt to call global 'UpdateTarget' (a nil value)"
string = <table> {
split = <function> defined =[C]:-1
match = <function> defined =[C]:-1
gmatch = <function> defined =[C]:-1
upper = <function> defined =[C]:-1
gsub = <function> defined =[C]:-1
format = <function> defined =[C]:-1
utf8sub = <function> defined @Outfitter/Libraries/UTF8/utf8.lua:183
lower = <function> defined =[C]:-1
sub = <function> defined =[C]:-1
len = <function> defined =[C]:-1
utf8lower = <function> defined @Outfitter/Libraries/UTF8/utf8.lua:276
gfind = <function> defined =[C]:-1
join = <function> defined =[C]:-1
rep = <function> defined =[C]:-1
utf8len = <function> defined @Outfitter/Libraries/UTF8/utf8.lua:158
char = <function> defined =[C]:-1
rtgsub = <function> defined @FrameXML/RestrictedInfrastructure.lua:618
utf8upper = <function> defined @Outfitter/Libraries/UTF8/utf8.lua:266
reverse = <function> defined =[C]:-1
byte = <function> defined =[C]:-1
trim = <function> defined =[C]:-1
utf8reverse = <function> defined @Outfitter/Libraries/UTF8/utf8.lua:286
find = <function> defined =[C]:-1
}
addonName = "RoleIcons"
debug = <function> defined @RoleIcons/RoleIcons.lua:84
settings = <table> {
hbicon = true
map = true
debug = false
chat = true
raid = true
classbuttons = true
popup = true
system = true
state = <table> {
}
trimserver = true
autorole = true
focus = true
target = true
serverinfo = true
tooltip = true
rolebuttons = true
}
pairs = <function> defined =[C]:-1
defaults = <table> {
hbicon = <table> {
}
debug = <table> {
}
map = <table> {
}
popup = <table> {
}
tooltip = <table> {
}
serverinfo = <table> {
}
chat = <table> {
}
system = <table> {
}
trimserver = <table> {
}
autorole = <table> {
}
focus = <table> {
}
target = <table> {
}
raid = <table> {
}
classbuttons = <table> {
}
rolebuttons = <table> {
}
}
addon = <table> {
unitstatus = <table> {
}
ServerChatString = <function> defined @RoleIcons/RoleIcons.lua:402
svnrev = <table> {
}
SetupVersion = <function> defined @RoleIcons/RoleIcons.lua:1284
UpdateRGF = <function> defined @RoleIcons/RoleIcons.lua:432
UpdateServers = <function> defined @RoleIcons/RoleIcons.lua:588
version = "r183"
formatToon = <function> defined @RoleIcons/RoleIcons.lua:785
trimServer = <function> defined @RoleIcons/RoleIcons.lua:145
L = <table> {
}
revision = 183
}
RegisterHooks = <function> defined @RoleIcons/RoleIcons.lua:1007
InCombatLockdown = <function> defined =[C]:-1
UnitGroupRolesAssigned = <function> defined =[C]:-1
myDefaultRole = <function> defined @RoleIcons/RoleIcons.lua:190
Another fix for DragonFlight (for the "OnTooltipSetUnit" error):
In RoleIcons.lua, around line 1024, replace this line ...
GameTooltip:HookScript("OnTooltipSetUnit", UpdateTT)
with this line ...
TooltipDataProcessor.AddTooltipPostCall(Enum.TooltipDataType.Unit, function(tooltip, data) UpdateTT(tooltip) end)
In reply to UppyDan:
I`ll test also.
Author hasn't logged in for about 4 years. Hopefully someone takes over this great addon or is it dead for good? :(
There are a couple of other Unit Frame addons that use this one for role icons too.
Fix for DragonFlight - In RoleIcons.lua, comment out all the lines in the function UpdateTarget(). (See below.) I'm not sure what it breaks, but seems to work good enough.
local function UpdateTarget(frame)
-- local Frame = frame:gsub("^(.)",string.upper)
-- addon.frametex = addon.frametex or {}
-- local tex = addon.frametex[frame]
-- if tex then tex:Hide() end
-- if not settings[frame] or not UnitIsPlayer(frame) or not _G[Frame.."Frame"]:IsVisible() then return end
-- local role = UnitGroupRolesAssigned(frame)
-- if role == "NONE" then return end
-- if not tex then
-- tex = _G[Frame.."FrameTextureFrame"]:CreateTexture(addonName..Frame.."FrameRole","OVERLAY")
-- tex:ClearAllPoints()
-- tex:SetPoint("BOTTOMLEFT", _G[Frame.."FrameTextureFrameName"], "TOPRIGHT",0,-8)
-- tex:SetTexture(role_tex_file)
-- tex:SetSize(20,20)
-- addon.frametex[frame] = tex
-- end
-- tex:SetTexCoord(getRoleTexCoord(role))
-- tex:Show()
end
Tentative fix - Open up RoleIcons.lua and go to line 29, looks like this:
local maxlvl = MAX_PLAYER_LEVEL_TABLE[#MAX_PLAYER_LEVEL_TABLE]
Replace it with this:
local maxlvl = GetMaxLevelForLatestExpansion()
YMMV, caveat updater, etc and so forth. Theoretically future-proofed?
In reply to Veyska:
I came here to post this same fix. I mean, what could go wrong?
Hey thanks for this.
it still was working until 9.0 any chance of getting a fix?
See https://www.wowace.com/projects/roleicons?comment=80
Gonna miss this
It looks like a user got it working:
https://www.wowace.com/projects/roleicons?comment=80
please update
Update please for BfA