This highly configurable mod allows players to associate buttons to unit frames. It is meant as a replacement to GroupButtons which stopped functioning with the 2.0 patch in December 2006. The mod extends the capabilities of GroupButtons by providing these additional features:
an unlimited number of buttons per unit frame
Buttons which turn on/off depending on the amount of damage a unit has
Buttons which are dimmed if a unit as that buff or a related buff applied.
Buttons which appear when a debuff is applied to a unit.
Buttons which allow you to have any type of "/" slash or macro command on a button
A variety of a modes for different activities in the game. For example, a set of buttons
for soloing, buttons for instances, buttons for raids, buttons for specific bosses (such as Baron Geddon in MC (to all priests to debuff), buttons for PvP, etc.
Assign buttons to unit frames that when clicked cast spells on different units. This feature allows, for example, buffs and heals for the player unit to appear within the target buttons to minimize the amount of mouse movement between buttons.
Works for any kind of non-casting classes; specifically warriors and rogues.
Version 1.8.2 (July 26, 2008) (by Palidindrome )
Changelog:
Code:
CHANGED: TOC for 2.4
NOTE This is a incremental releasefor the toc
CHANGED: TOC for 2.3
CHANGED: Tainting issue fix. Copied Tayedaen's combat update code
ADDED: Copied in Cosmic Cleric's UI code for additional settings
ADDED: User Guide back to release package
NOTE - other 1.9 changes are NOT copied in. This is a incremental releasefor the toc/ bug and UI
ADDED: PerfectRaid support
ADDED: Pitbull Raid Frames Raid frames appear to work - Party frames do not work well.
ADDED: Countdown for cooldowns with remaining time < 10 secs can now be displayed with decimals
To enable decimals use '/XUB showdecimals'
ADDED: BUFFx: BUFF/BUFFBLINK buttons can now blink if a buff is about to expire
By defining a BUFFx, the button will blink if the buff is x seconds away
from expiring. Examples: BUFFBLINK15, BUFF10
ADDED: Global Dim
This dims all buttons in state STATE_ENABLED while player is casting a spell
To enable GlobalDim use '/XUB useglobaldim'
(Macro buttons are not dimmed because of the possibility of /stopcast macros)
If you use 'Color coded' instead of 'Transparency' then the dimmed buttons
are colored with c_globaldim (mint at the moment).
Please note that Global Dim has quite a cost in terms of performace, since
it has to dim all ENABLED buttons if you start a cast, and undim them after.
ADDED: new Tooltip option "Show Cooldown even in Combat"
ADDED: Global cooldowns no longer start a countdown timer by default
To enable a countdown timer for global cooldowns use '/XUB showglobalcooldown'
ADDED: Garbage collection after applying a profile
CHANGED: raid/group changes are handled better (does not work while in combat !!)
CHANGED: debuff handling
Some debuffs have no debuff type. Now for these debuffs the name of
the debuff is added to the debuff list instead of the debuff type.
This allows to check for a specific debuff if necessary.
CHANGED: Display of all buttons after a party/raid change (request by Torwauki)
The duration of the display of the buttons after a raid/party change is
now 0 secs per default, the duration after a manual change is still 3 seconds.
Eventually these times will be adjustable in the future, for now they can only be changed in code.
Search in 'eXtremeUnitButtons.lua' for:
XUB_DelayTime_after_automaticProfileChange = 0;
XUB_DelayTime_after_manualProfileChange = 3;
and change the values to your liking.
CHANGED: Improved pitbull support (thx paladindrome)
CHANGED: "Hide and Disable" --> "Show as Hidden"
CHANGED: "Enable and buffed" --> "Show as Buffed"
CHANGED: "Red Cooldown/Blue Mana" --> "Color Coded"
CHANGED: "Heal Button action" --> "Heal/Buff button action"
CHANGED: Button behaviour regarding buffs
After long development discussion we agreed to implement it this way:
A button in buffed state is shown either as BUFFED or INVALID (hidden).
This is adjustable with the modified Healbutton option in the option window (see 'Heal Button action')
CHANGED: Color system
New: Red=Range,Ochre=Buffed,Purple=Cooldown,Cobalt=Mana
There are also some changes to make implementing a color selector easier later
CHANGED: OutOfRange buttons have now a separate alpha from Invalid buttons
The alpha for invalid is set to '0'.
This can be changed to 'x' with '/script XUB_INVALID_ALPHA=x (0 <= x <= 1)
CHANGED: behaviour of unusable buttons
They are no longer higlightened if mouseovered, indicating that ou can't use the button at the moment
FIXED: Spells defined as BUFFS can be debuffs on target units (fixed in hotfix1)
FIXED: fix for "XUB_UF_Apply( "PlayerPet" , "PlayerFramePetFrame" )"
FIXED: workaround for API call 'UnitClass' sometimes returning NIL
Known addon bugs:
none
Known blizzard bugs:
------------------------
'isUsableSpell' is broken, there is nothing I can do to change that.
That means: Some spells are reported 'not usable' if you target a hostile target or NPC (like 'PowerWord: Shield' for example).
NOTES:
Code:
NOTE 1: !!!! Limited Pitbull support is enabled but does not work well
- consider it experimental and unsupported!!!!
NOTE 2: The colors for 'Color coded':
STATE_OUTOFRANGE = c_range = red
STATE_COOLDOWN = c_cooldown = purple
STATE_BUFFED = c_buffed = ochre
STATE_OUTOFMANA = c_outofmana = cobalt
Dimmed button = c_globaldim = mint
These colors can be changed in eXtremUnitButtons.lua.
To do this, open the file and search for 'XUB COLOR DEFINITION BLOCK'
NOTE 3:
The correct spelling for the 4 existing debuff types are :
Magic
Poison
Curse
Disease
Please note that the first character is uppercased.
NOTE 4: The historical changes have been removed from the online
display - they are availible in the embedded Changelog_complete.txt file.
Originally posted by Cosmic Cleric I made the change locally, and so far aso good, I can dispell stuff.
Code:
Debuffs = Debuffs .. name .. ",";
if ( debuffType ~= nil ) then
Debuffs = Debuffs .. debuffType .. ",";
end
Just found out that change does NOT work right! Don't make this change, as some buff buttons will stop dimming/greying out if its done. The current code works with both situations.
This stopped dimming once I made the above change...
attack2,DrainLife,target
The button always stayed enabled, even when the spell was being used.
Last edited by Cosmic Cleric : 04-26-2008 at 01:34 AM.
Originally posted by Cosmic Cleric Thanks for looking into this. I actually wan't sure if it was working or not, I was worried I had the syntax incorrect when defining the button.
the change didn't seem to cause problems here - of course when the performance has problems next time you know the first place to check ;-).
What you are looking for is not supported in the current addon. You are looking for the blink to occur if something is set (magic) but turned off if it is a specific spell. The addon stops when it finds the first condition that is true.
Code:
for di=1,#myItems do
mySearch = "," .. myItems[di];
if ( string.find(aDebuffs,mySearch) ~= nil ) then
aButton.State = STATE_ENABLED;
return;
elseif ( string.find(aBuffs,mySearch) ~= nil ) then
aButton.State = STATE_ENABLED;
return;
end
end
Note that this case is looking through the Buffs string - this is why the previously mentioned paste error works. I dont know if there are other places where it would expect the name to be in the Buffs string - so modder beware. For now you can revert the other suggestion.
Drome
Last edited by paladindrome : 04-25-2008 at 04:57 PM.
Originally posted by paladindrome There may be a typo in debuff logic, the Buffs = Buffs .. name .. "," looks suspiciously like a paste error. If the debuff has a name AND a type we only store the type in Debuff, If it only has a name then we store the name.
I will try this to see if it causes problems
Code:
Debuffs = Debuffs .. name .. ",";
if ( debuffType ~= nil ) then
Debuffs = Debuffs .. debuffType .. ",";
end
It may affect performance a bit - it will store a type and a name that needs to be compared.
Drome
I made the change locally, and so far aso good, I can dispell stuff.
Originally posted by paladindrome It won't work - of course you knew that already.
Code:
name, rank, icon, count, debuffType, duration, timeLeft = UnitDebuff(aUnit, i, removable);
while ( name ~= nil ) do
Buffs = Buffs .. name .. ",";
if ( debuffType ~= nil ) then
Debuffs = Debuffs .. debuffType .. ",";
else
Debuffs = Debuffs .. name .. ",";
end
i=i+1
name, rank, icon, count, debuffType, duration, timeLeft = UnitDebuff(aUnit, i, removable);
end
There may be a typo in debuff logic, the Buffs = Buffs .. name .. "," looks suspiciously like a paste error. If the debuff has a name AND a type we only store the type in Debuff, If it only has a name then we store the name.
I will try this to see if it causes problems
Code:
Debuffs = Debuffs .. name .. ",";
if ( debuffType ~= nil ) then
Debuffs = Debuffs .. debuffType .. ",";
end
It may affect performance a bit - it will store a type and a name that needs to be compared.
Drome
Thanks for looking into this. I actually wan't sure if it was working or not, I was worried I had the syntax incorrect when defining the button.
So the next question is could you add this functionalty to XUB? Especially for the example I gave (dispelling Unstable Affliction), it would be a great benefit to have that functionality.
As far as the potential typo goes, I'll try it out and report back to you if it causes problems or not.
Originally posted by Cosmic Cleric I want the button to blink when the target has a Magic debuff but NOT blink if that magic debuff is Unstable Affliction
It won't work - of course you knew that already.
Code:
name, rank, icon, count, debuffType, duration, timeLeft = UnitDebuff(aUnit, i, removable);
while ( name ~= nil ) do
Buffs = Buffs .. name .. ",";
if ( debuffType ~= nil ) then
Debuffs = Debuffs .. debuffType .. ",";
else
Debuffs = Debuffs .. name .. ",";
end
i=i+1
name, rank, icon, count, debuffType, duration, timeLeft = UnitDebuff(aUnit, i, removable);
end
There may be a typo in debuff logic, the Buffs = Buffs .. name .. "," looks suspiciously like a paste error. If the debuff has a name AND a type we only store the type in Debuff, If it only has a name then we store the name.
I will try this to see if it causes problems
Code:
Debuffs = Debuffs .. name .. ",";
if ( debuffType ~= nil ) then
Debuffs = Debuffs .. debuffType .. ",";
end
It may affect performance a bit - it will store a type and a name that needs to be compared.
Originally posted by Bronzeburn Also, dont seem to be able to get buttons on the Blizzard raid frames either.
Did you select Blizzard for raid frames on the bottom of the Unit Frames dialog box and create an entry in the profile for raid IE normal,raid,healgrp?
The code creates buttons for raid or for party based on what type of group you are in. The downside is that in a raid we do not create party buttons at all.
I want the button to blink when the target has a Magic debuff but NOT blink if that magic debuff is Unstable Affliction (because I don't want to take the damage of dispelling it).
Should this work? Is the syntax correct?
I'm not seeing it work, but it would be great if it did.
finally I got around to testing 1.9 RC1 in Karazhan and still get no buttons on party frames in left edge of screen. Also, dont seem to be able to get buttons on the Blizzard raid frames either. Or am I just being stupid using "party" for raid buttons?
Last edited by Bronzeburn : 04-20-2008 at 01:13 AM.
Originally posted by paladindrome I have uploaded an interim 1.8.1 version. Not a lot of new functionality but it has an updated TOC , the taint fix and a couple of UI changes. It is working its way through the approval process so we should see it soon.
Drome
Where can I find 1.8.1? I want to give that a try.
Originally posted by tayedaen But exchanging rightclick with middleclick can be done, yes.
I am not sure hovewer if the majority of the users will like this change since most addons use the buttons that way.
(and most users thend to have at least 3 buttons ).
Any other users care to comment ?
I'd say High Rank left button, Middle rank middle button, Low rank right button. Seems the most intuitive that way to me.
Originally posted by tayedaen We can have only one spell per button at the moment.
We could change that, but the changes would make the addon even harder to config.
So as long as we have not better/easier way to configure the addon I would rather not implement such a change.
Originally posted by drwoods Anyway, I was wondering if I can have them on the same button, but display ice armor if it exists or level is above a certain value - I'll look up when ice armor becomes available.
We can have only one spell per button at the moment.
We could change that, but the changes would make the addon even harder to config.
So as long as we have not better/easier way to configure the addon I would rather not implement such a change.
Is there a way to have a different buff show up based on level?
I've created profiles for a while now that are class based. So my 61 mage has Ice Armor in a floating bar. I just started a mage on another server and used the same profile. But since this mage only has frost armor, nothing appears on the float bar for this char. This is kind of an unusual situation since ice armor eventually replaces frost armor, but is a different spell.
Anyway, I was wondering if I can have them on the same button, but display ice armor if it exists or level is above a certain value - I'll look up when ice armor becomes available.
P.S. Great mod. Keep up the good work. I've been using it over a year and couldn't live without it