So I have a button that inherits SecureActionButtonTemplate
I made 2 functions:
Code:
function PallyPower:ButtonPreClick(mousebutton)
if (not InCombatLockdown()) then
local classID = this:GetAttribute("classID");
local spell = PallyPower:GetSpell(classID);
local gspell = PallyPower_Greater .. spell;
local unitid = PallyPower:GetUnitSmart(classID, mousebutton, spell);
if not unitid then
spell = nil;
gspell = nil;
end
-- left click (do 15 minute buff)
this:SetAttribute("type1", "spell");
this:SetAttribute("unit1", unitid);
this:SetAttribute("spell1", gspell);
-- right click (do a 5 minute buff)
this:SetAttribute("type2", "spell");
this:SetAttribute("unit2", unitid);
this:SetAttribute("spell2", spell);
end
end
function PallyPower:ButtonPostClick(mousebutton)
local classID = this:GetAttribute("classID");
-- decisions, decisions...
if (mousebutton == "LeftButton") then
LastCast[classID] = 15 * 60;
end
end
So on pre-click the mod find a nearby who is in range (according to IsSpellInRange() function) class member and assigns the spell attributes tot he button.
Problems:
1) If unitid or spell are nil (noone in range), the button does not do anything, and I need to catch the situation and not reset the timer. How to do it?
2) sometimes when people move out of range the click returns a red error message, but sometimes the cursor turns into a highligted hand, I guess expecting me to click on someone. How to prevent it?
I just don't want to cast anything if the result will be an obvious failure.
Could someone help?