vanilla-wow-addons – Rev 1
?pathlinks?
SmartHeal.default['hotlist']={}
SmartHeal.default['hotlist']['enablepet']=false
SmartHeal.BlackListTimeout=5 -- 5 sec timeout
SmartHeal.HotListStatusBarHeight=16
SmartHeal.AutoTargetOptionList={
['PRIEST']={SH_UNASSIGNED,
SH_RENEW,SH_FLASH_HEAL,SH_LESSER_GREATER_HEALS,SH_GREATER_HEAL,SH_HEAL,SH_LESSER_HEAL,SH_PRAYER_OF_HEALING,SH_POWERWORD_SHIELD,
},
['PALADIN']={SH_UNASSIGNED,
SH_FLASH_OF_LIGHT,SH_HOLY_LIGHT,
},
['DRUID']={SH_UNASSIGNED,
SH_REJUVENATION,SH_HEALING_TOUCH,SH_REGROWTH,SH_SWIFTMEND,
},
['SHAMAN']={SH_UNASSIGNED,
SH_LESSER_HEALING_WAVE,SH_HEALING_WAVE,SH_CHAIN_HEAL,
},
}
SmartHeal.HotListDefaultHotkey={
['PRIEST']={['hotkey1']=3,['hotkey2']=4,['hotkey3']=8,},
['PALADIN']={['hotkey1']=2,['hotkey2']=3,['hotkey3']=1,},
['DRUID']={['hotkey1']=2,['hotkey2']=3,['hotkey3']=4,},
['SHAMAN']={['hotkey1']=2,['hotkey2']=3,['hotkey3']=4,},
}
SmartHeal.HotListClassTypeList={
["Alliance"]={"PLAYER","PARTY","WARRIOR","PRIEST","MAGE","WARLOCK","ROGUE","HUNTER","DRUID","PALADIN"},
["Horde"]={"PLAYER","PARTY","WARRIOR","PRIEST","MAGE","WARLOCK","ROGUE","HUNTER","DRUID","SHAMAN"},
}
SmartHeal.default['hotlist']={
["Triggerclasstype1"]=50,
["Triggerclasstype2"]=50,
["Triggerclasstype3"]=70,
["Triggerclasstype4"]=50,
["Triggerclasstype5"]=50,
["Triggerclasstype6"]=50,
["Triggerclasstype7"]=50,
["Triggerclasstype8"]=40,
["Triggerclasstype9"]=30,
["Triggerclasstype10"]=30,
["Colorclasstype1"]="ff172b",
["Colorclasstype2"]="ff6b60",
["Colorclasstype3"]="96410d",
["Colorclasstype4"]="c3c3c3",
["Colorclasstype5"]="2846ff",
["Colorclasstype6"]="a03fff",
["Colorclasstype7"]="ffe923",
["Colorclasstype8"]="34b526",
["Colorclasstype9"]="ff931d",
["Colorclasstype10"]="ff7bb9",
['BGColor']="0c0c0c",
['BGColorOpacity']=0.35,
}
SmartHeal.HotListCastBlackList={}
function SmartHeal:InitHotList()
SmartHeal.playerFactionGroup=UnitFactionGroup("player")
SmartHeal.default['hotlist']['enable']=1
for option,value in SmartHeal.HotListDefaultHotkey[SmartHeal.playerClass] do
SmartHeal.default['hotlist'][option]=value
end
for i=1,table.getn(SmartHeal.HotListClassTypeList[SmartHeal.playerFactionGroup]) do
SmartHeal.default['hotlist']["classtype"..i]=i
end
-- hotlist frame settings
SmartHeal.default['hotlist']['listlength']=90
SmartHeal.default['hotlist']['listwidth']=130
SmartHeal.default['hotlist']['enablepriority']=1
end
function SmartHeal:ReinitializeHotList()
SmartHeal.HealthRatioList={}
SmartHeal.HotListData={}
SmartHeal.AutoTargetBlackList={}
SmartHeal.HotListProcessing=nil
SmartHeal.AutotargetName=nil
end
function SmartHeal:HotListGetClassColor(unitClass)
local index
-- search ClassType table for index
for i=1,table.getn(SmartHeal.HotListClassTypeList[SmartHeal.playerFactionGroup]) do
if (SmartHeal.HotListClassTypeList[SmartHeal.playerFactionGroup][i]==unitClass) then
index=i break
end
end
-- search config color table for color
for i=1,table.getn(SmartHeal.HotListClassTypeList[SmartHeal.playerFactionGroup]) do
if(SmartHeal:getConfig("classtype"..i,"hotlist")==index) then
return SmartHeal:getConfig("Colorclasstype"..i,"hotlist")
end
end
end
SmartHeal.HotListIgnoreList={}
function SmartHeal:HotListGroupIgnore(UnitInfo)
for i=1,table.getn(SmartHeal.HotListIgnoreList) do
if (SmartHeal.HotListIgnoreList[i]==UnitInfo.group) then
return true
end
end
return false
end
SmartHeal.HotListNamedTargetList={}
SmartHeal.HealthRatioList={}
SmartHeal.HotListData={}
function SmartHeal:UpdateUnitHealth()
SmartHeal.HealthRatioList={}
if(GetNumRaidMembers()>0) then
for i=1,40 do
SmartHeal:UpdateUnitHealthType("raid",i)
if (SmartHeal:getConfig('enablepet','hotlist')) then
SmartHeal:UpdateUnitHealthType("raidpet",i)
end
end
elseif(GetNumPartyMembers()>0) then
for i=1,4 do
SmartHeal:UpdateUnitHealthType("party",i)
if (SmartHeal:getConfig('enablepet','hotlist')) then
SmartHeal:UpdateUnitHealthType("partypet",i)
end
end
SmartHeal:UpdateUnitHealthType("player")
if (SmartHeal:getConfig('enablepet','hotlist')) then
SmartHeal:UpdateUnitHealthType("pet")
end
else
-- for testing purposes
--SmartHeal:UpdateUnitHealthType("player")
end
end
function SmartHeal:UpdateUnitHealthType(groupType,index)
local UnitId,group,unitClass,online,isDead,_
if(groupType=="raid") then
UnitId=groupType..index
_,_,group,_,_,unitClass,_,online,isDead=GetRaidRosterInfo(index)
elseif(groupType=="party") then
UnitId=groupType..index
online=UnitIsConnected(UnitId)
--name,rank,level,classLocale,class,isDead
_,_,_,_,unitClass,isDead=GetPartyRosterInfo(index)
elseif(groupType=="player" or groupType=="pet") then
UnitId=groupType
online=UnitIsConnected("player")
_,unitClass=UnitClass("player")
isDead=UnitIsDeadOrGhost(UnitId)
elseif(groupType=="partypet") then
UnitId=groupType..index
online=UnitIsConnected("party"..index)
_,unitClass=UnitClass("party"..index)
isDead=UnitIsDeadOrGhost(UnitId)
elseif(groupType=="raidpet") then
UnitId=groupType..index
online=UnitIsConnected("raid"..index)
_,unitClass=UnitClass("raid"..index)
isDead=UnitIsDeadOrGhost(UnitId)
end
if (UnitIsVisible(UnitId) and UnitExists(UnitId) and not isDead and online) then
local UnitHealth,UnitHealthMax=UnitHealth(UnitId),UnitHealthMax(UnitId)
local hpRatio=UnitHealth/UnitHealthMax
local UnitInfo={name=UnitName(UnitId), hpRatio=hpRatio, hp=UnitHealth, hpMax=UnitHealthMax, class=unitClass, UnitId=UnitId, InParty=(UnitPlayerOrPetInParty(UnitId) or UnitIsUnit(UnitId,"player")), group=group}
if (UnitHealth>0 and not SmartHeal:HotListGroupIgnore(UnitInfo) and not (hpRatio==1 and SmartHeal:getConfig('hideHPFull','hotlist')) ) then
local updated=false
for j=1,table.getn(SmartHeal.HealthRatioList) do
if (hpRatio<SmartHeal.HealthRatioList[j].hpRatio) then
table.insert(SmartHeal.HealthRatioList,j,UnitInfo)
updated=true
break
end
end
if (not updated) then
table.insert(SmartHeal.HealthRatioList,UnitInfo)
end
end -- if (UnitHealth>0)
end -- if (UnitExists(UnitId))
end
function SmartHeal:GetHealthInfo(class,hpRatioCap)
local PriorityList={}
if (string.lower(class)=="player") then
local _,unitClass=UnitClass("player")
local UnitHealth,UnitHealthMax=UnitHealth("player"),UnitHealthMax("player")
if (not hpRatioCap or (UnitHealth/UnitHealthMax*100)<=hpRatioCap) then
table.insert(PriorityList,{name=UnitName("player"), hpRatio=(UnitHealth/UnitHealthMax) ,hp=UnitHealth, hpMax=UnitHealthMax, class=unitClass, UnitId="player"})
end
elseif (string.lower(class)=="party") then
for i=1,table.getn(SmartHeal.HealthRatioList) do
if(SmartHeal.HealthRatioList[i].InParty and (not hpRatioCap or SmartHeal.HealthRatioList[i].hpRatio*100<=hpRatioCap)) then
table.insert(PriorityList,SmartHeal.HealthRatioList[i])
end
end
elseif (string.lower(class)=="raid") then
for i=1,table.getn(SmartHeal.HealthRatioList) do
if(not hpRatioCap or SmartHeal.HealthRatioList[i].hpRatio*100<=hpRatioCap) then
table.insert(PriorityList,SmartHeal.HealthRatioList[i])
end
end
else
for i=1,table.getn(SmartHeal.HealthRatioList) do
if( string.upper(class)==SmartHeal.HealthRatioList[i].class and (not hpRatioCap or SmartHeal.HealthRatioList[i].hpRatio*100<=hpRatioCap) ) then
table.insert(PriorityList,SmartHeal.HealthRatioList[i])
end
end
end
return PriorityList
end
function SmartHeal:BuildRaidHealthList(limit)
local HotListData={}
local HotListRef={}
local UnitEntry=SmartHeal:GetHealthInfo("RAID")
for j=1,table.getn(UnitEntry) do
if (not HotListRef[UnitEntry[j].name]) then
UnitEntry[j].matchClass=UnitEntry[j].class
table.insert(HotListData,UnitEntry[j])
HotListRef[UnitEntry[j].name]=table.getn(HotListData)
if (table.getn(HotListData)>=limit) then
SmartHeal.HotListData=HotListData
return
end
end
end
SmartHeal.HotListData=HotListData
end
function SmartHeal:BuildPriorityList(limit)
local HotListData={}
local HotListRef={}
local UnitEntry
---- Get Named Target
UnitEntry=SmartHeal:GetHealthInfo("RAID")
for i=1,table.getn(SmartHeal.HotListNamedTargetList) do
for j=1,table.getn(UnitEntry) do
if (SmartHeal.HotListNamedTargetList[i]==UnitEntry[j].name) then
table.insert(HotListData,UnitEntry[j])
HotListRef[UnitEntry[j].name]=table.getn(HotListData)
if (table.getn(HotListData)>=limit) then
SmartHeal.HotListData=HotListData
return
end
end
end
end
----
for i=1,table.getn(SmartHeal.HotListClassTypeList[SmartHeal.playerFactionGroup]) do
local class=SmartHeal.HotListClassTypeList[SmartHeal.playerFactionGroup][SmartHeal:getConfig("classtype"..i,"hotlist")]
UnitEntry=SmartHeal:GetHealthInfo(class,SmartHeal:getConfig("Triggerclasstype"..i,"hotlist"))
for j=1,table.getn(UnitEntry) do
if (not HotListRef[UnitEntry[j].name]) then
UnitEntry[j].matchClass=class
table.insert(HotListData,UnitEntry[j])
HotListRef[UnitEntry[j].name]=table.getn(HotListData)
if (table.getn(HotListData)>=limit) then
SmartHeal.HotListData=HotListData
return
end
end
end
end
SmartHeal.HotListData=HotListData
end
-- hexcolor to rgb
function RGB_hextodec(hex)
local HextoDecTable = {["0"]=0,["1"]=1,["2"]=2,["3"]=3,["4"]=4,["5"]=5,["6"]=6,["7"]=7,["8"]=8,["9"]=9,a=10,b=11,c=12,d=13,e=14,f=15}
local r1 = HextoDecTable[string.lower(string.sub(hex,1,1))] * 16;
local r2 = HextoDecTable[string.lower(string.sub(hex,2,2))];
local r = (r1 + r2) / 255;
local g1 = HextoDecTable[string.lower(string.sub(hex,3,3))] * 16;
local g2 = HextoDecTable[string.lower(string.sub(hex,4,4))];
local g = (g1 + g2) / 255;
local b1 = HextoDecTable[string.lower(string.sub(hex,5,5))] * 16;
local b2 = HextoDecTable[string.lower(string.sub(hex,6,6))];
local b = (b1 + b2) / 255;
return r,g,b
end
-- decimal to hex
function RGB_dectohex(red,green,blue)
if ( not red or not green or not blue ) then
return "ffffff"
end
red = floor(red * 255)
green = floor(green * 255)
blue = floor(blue * 255)
local a,b,c,d,e,f
local DecToHexTable = {["0"]=0,["1"]=1,["2"]=2,["3"]=3,["4"]=4,["5"]=5,["6"]=6,["7"]=7,["8"]=8,["9"]=9,
["10"]="a",["11"]="b",["12"]="c",["13"]="d",["14"]="e",["15"]="f"}
a = ""..DecToHexTable[tostring(floor(red / 16))]
b = ""..DecToHexTable[tostring(math.mod(red,16))]
c = ""..DecToHexTable[tostring(floor(green / 16))]
d = ""..DecToHexTable[tostring(math.mod(green,16))]
e = ""..DecToHexTable[tostring(floor(blue / 16))]
f = ""..DecToHexTable[tostring(math.mod(blue,16))]
return a..b..c..d..e..f
end
function SmartHeal:ColorPicker_OnClick(frameName,Id,opacity)
local r, g, b = RGB_hextodec(SmartHeal:getConfig(Id,"hotlist"))
ColorPickerFrame.cancelFunc = SH_ColorPickerCancelled
ColorPickerFrame.func = SH_ColorPickerColorChanged
ColorPickerFrame.RefId = Id
ColorPickerFrame.RefFrameName = frameName
local a
if (opacity==1) then
a= SmartHeal:getConfig(Id.."Opacity","hotlist") or 1
ColorPickerFrame.opacityFunc = SH_ColorPickerColorChanged
ColorPickerFrame.opacity = a
OpacitySliderFrame:SetValue(a)
ColorPickerFrame.hasOpacity = true
else
ColorPickerFrame.hasOpacity = false
end
ColorPickerFrame.previousValues = {r, g, b, a}
ColorPickerFrame:SetColorRGB(r,g,b)
ColorPickerFrame:ClearAllPoints()
ColorPickerFrame:SetPoint("TOPLEFT", getglobal(frameName), "TOPRIGHT", 0, 0)
ColorPickerFrame:SetFrameStrata("DIALOG")
ColorPickerFrame:Show()
end
function SH_ColorPickerColorChanged()
local r, g, b = ColorPickerFrame:GetColorRGB()
if (ColorPickerFrame.hasOpacity) then
a = OpacitySliderFrame:GetValue()
SmartHeal:setConfig(ColorPickerFrame.RefId.."Opacity",a,"hotlist")
end
SmartHeal:setConfig(ColorPickerFrame.RefId,RGB_dectohex(r,g,b),"hotlist")
getglobal(ColorPickerFrame.RefFrameName):SetTexture(r,g,b,a or 1)
end
function SH_ColorPickerCancelled(color)
local r,g,b,a = unpack(color)
if (ColorPickerFrame.hasOpacity) then
SmartHeal:setConfig(ColorPickerFrame.RefId.."Opacity",a,"hotlist")
end
SmartHeal:setConfig(ColorPickerFrame.RefId,RGB_dectohex(r,g,b),"hotlist");
getglobal(ColorPickerFrame.RefFrameName):SetTexture(r,g,b,a or 1) -- SetTexture SetBackdropColor SetTextColor
end
function SmartHeal.HotList_MoveClassTypePriority(Id,status)
local AffectedId=tonumber(Id)+status
local tempClassType=SmartHeal:getConfig("classtype"..Id,"hotlist")
local tempTriggerClassType=SmartHeal:getConfig("Triggerclasstype"..Id,"hotlist")
local tempColorClassType=SmartHeal:getConfig("Colorclasstype"..Id,"hotlist")
SmartHeal:setConfig("classtype"..Id,SmartHeal:getConfig("classtype"..AffectedId,"hotlist"),"hotlist")
SmartHeal:setConfig("Triggerclasstype"..Id,SmartHeal:getConfig("Triggerclasstype"..AffectedId,"hotlist"),"hotlist")
SmartHeal:setConfig("Colorclasstype"..Id,SmartHeal:getConfig("Colorclasstype"..AffectedId,"hotlist"),"hotlist")
SmartHeal:setConfig("classtype"..AffectedId,tempClassType,"hotlist")
SmartHeal:setConfig("Triggerclasstype"..AffectedId,tempTriggerClassType,"hotlist")
SmartHeal:setConfig("Colorclasstype"..AffectedId,tempColorClassType,"hotlist")
end
function SmartHeal:HotListClickHeal(button,unit)
local KeyDownType=SmartHeal:GetClickHealButton()
if KeyDownType=="undetermined" then
return
elseif KeyDownType then
SmartHeal:ClickHeal(KeyDownType..button,unit)
else
TargetUnit(unit)
end
end
SmartHeal.AutoTargetBlackList={}
function SmartHeal:AutoTargetAddToBlackList()
if (SmartHeal.AutotargetName) then
SmartHeal.AutoTargetBlackList[SmartHeal.AutotargetName]=0
end
SmartHeal.AutotargetName=nil
end
function SmartHeal:AutoTargetUpdateBlackList(arg1)
local current_timelapse
for name,timelapse in SmartHeal.AutoTargetBlackList do
current_timelapse=timelapse+arg1
if(current_timelapse>SmartHeal.BlackListTimeout) then
SmartHeal.AutoTargetBlackList[name]=nil
else
SmartHeal.AutoTargetBlackList[name]=current_timelapse
end
end
end
function SmartHeal:HotListCast(hotkeyNum)
if (SmartHeal.AutoTargetOptionList[SmartHeal.playerClass]) then
local spell=SmartHeal.AutoTargetOptionList[SmartHeal.playerClass][hotkeyNum]
SmartHeal:AutoTargetCast(spell)
end
end
function SmartHeal:AutoTargetCast(spell)
local unit
local clearTarget,Attacking
SmartHeal.AttackingBeforeCast=nil
for i=1,table.getn(SmartHeal.HotListData) do
if (not SmartHeal.AutoTargetBlackList[UnitName(SmartHeal.HotListData[i].UnitId)]) then
unit=SmartHeal.HotListData[i].UnitId
SmartHeal.AutotargetName=UnitName(unit)
break
end
end
if(GetNumRaidMembers()==0 and GetNumPartyMembers()==0) then unit="player" end
if not unit then return end
if (UnitIsUnit("player",unit)) then
SmartHeal.selfCast=1
else
SmartHeal.selfCast=0
end
if (UnitIsUnit("player",unit) or UnitIsUnit("target",unit)) then
SmartHeal:Cast(spell)
else
if(not UnitExists("target")) then clearTarget=1
elseif (SmartHeal.Attacking) then Attacking=1 end
TargetUnit(unit)
SmartHeal:Cast(spell)
if (SpellIsTargeting() and not SpellCanTargetUnit(unit)) then
SpellStopTargeting()
if(clearTarget) then
ClearTarget()
else
TargetLastTarget()
end
if(Attacking) then
SmartHeal.ResumeAttack=1
end
else
if(clearTarget) then
ClearTarget()
else
TargetLastTarget()
end
if(Attacking) then
SmartHeal.AttackingBeforeCast=1
end
end
end
end
function SmartHeal:GetHotListUnitId(index)
if (SmartHeal.HotListData[index]) then
return SmartHeal.HotListData[index].UnitId
end
end
---- Mouse Dragging/Clicking on Frame
function SmartHeal:HotListTitleButton_OnMouseDown()
local button = arg1;
if ( button == "LeftButton" ) then
if ( this:GetButtonState() == "PUSHED" ) then
SH_HotListFrame:StartMoving()
else
SH_HotListFrame:StopMovingOrSizing()
end
end
end
function SmartHeal:HotListOnEvent(event)
if (this:IsShown() and SmartHeal.Loaded) then
if ((event=="UNIT_HEALTH" or event=="UNIT_MAXHEALTH") and not SmartHeal.HotListProcessing) then
SmartHeal.HotListProcessing=true
SmartHeal:UpdateUnitHealth()
if(SmartHeal:getConfig("enablepriority","hotlist")) then
SmartHeal:BuildPriorityList(15)
else
SmartHeal:BuildRaidHealthList(15)
end
SmartHeal:HotListStatusBarOnEvent()
SmartHeal.HotListProcessing=nil
end
if (event=="SPELLCAST_FAILED") then
SmartHeal:AutoTargetAddToBlackList()
end
end
end
function SmartHeal:HotListStatusBarOnEvent()
local width=this:GetWidth()
local StatusBarPrefix="SH_HotListFrameCanvas_Unit"
local i=1
while(getglobal(StatusBarPrefix..i)) do
local StatusBarFrame=getglobal(StatusBarPrefix..i)
local UnitButton=getglobal(StatusBarPrefix..i.."_UnitButton")
local UnitButtonLabel=getglobal(StatusBarPrefix..i.."_UnitButtonLabel")
local StatusBar=getglobal(StatusBarPrefix..i.."_StatusBar")
if (SmartHeal.HotListData[i]) then
-- status bar frame settings
StatusBarFrame:SetHeight(SmartHeal.HotListStatusBarHeight)
StatusBarFrame:SetPoint("TOPLEFT","$parent","TOPLEFT",0,-SmartHeal.HotListStatusBarHeight*(i-1));
-- status bar settings
local hpRatio=floor(SmartHeal.HotListData[i].hpRatio*100)
local label=SmartHeal.HotListData[i].hp.."("..hpRatio.."%) "..UnitName(SmartHeal.HotListData[i].UnitId)
StatusBar:SetValue(SmartHeal.HotListData[i].hpRatio)
StatusBar:SetStatusBarColor(RGB_hextodec(SmartHeal:HotListGetClassColor(SmartHeal.HotListData[i].matchClass)))
-- Set Text to Hidden Text layer
UnitButtonLabel.HiddenText=label
-- status bar button settings
local UnitId=SmartHeal.HotListData[i].UnitId
UnitButton:SetScript("OnClick", function() SmartHeal:HotListClickHeal(arg1,UnitId) end)
else
UnitButtonLabel.HiddenText=""
StatusBar:SetValue(0)
end
i=i+1
end -- end of while loop
end
function SmartHeal:HotListVisualOnUpdate()
local StatusBarPrefix="SH_HotListFrameCanvas_Unit"
local barCount=floor((this:GetParent():GetHeight()-30)/SmartHeal.HotListStatusBarHeight)
local width=this:GetParent():GetWidth()-10
local i=1
while(getglobal(StatusBarPrefix..i)) do
local StatusBarFrame=getglobal(StatusBarPrefix..i)
local UnitButton=getglobal(StatusBarPrefix..i.."_UnitButton")
local UnitButtonLabel=getglobal(StatusBarPrefix..i.."_UnitButtonLabel")
if (i<=barCount and UnitButtonLabel.HiddenText~="") then
-- Set Hidden Text to Button
UnitButtonLabel:SetText(UnitButtonLabel.HiddenText)
-- Truncate StatusBar Text
SmartHeal:TruncateText(width,UnitButtonLabel.HiddenText,UnitButton,UnitButtonLabel)
StatusBarFrame:Show()
else
StatusBarFrame:Hide()
end
i=i+1
end -- end of while loop
end
function SmartHeal:TruncateText(width,text,button,buttonlabel)
-- Truncate StatusBar Text if text width > frame width
if (button:GetTextWidth()>width) then
local j=0
while (button:GetTextWidth()>(width-5) and string.len(buttonlabel:GetText())>1) do
buttonlabel:SetText(string.sub(text,1, -2-j))
j=j+1
end
buttonlabel:SetText(buttonlabel:GetText().."...")
end
end
function GetPartyRosterInfo(index)
local unitId="party"..index
local name=UnitName(unitId)
local rank=0
if(index==GetPartyLeaderIndex()) then rank=1 end
local level=UnitLevel(unitId)
local classLocale,class=UnitClass(unitId)
local isDead=UnitIsDeadOrGhost(unitId)
--name,rank,level,classLocale,class,isDead
return name,rank,level,classLocale,class,isDead
end
function SH_HotList_PrepareMenu()
local info
-- Title
info = {}
info.isTitle = true
info.text = "SMH HotList"
UIDropDownMenu_AddButton(info);
-- Enable Priority
info = {}
info.text = SH_ENABLE_PRIORITY
if (SmartHeal:getConfig('enablepriority','hotlist')) then
info.checked = 1
end
info.func = SH_HotListPriority_Toggle
UIDropDownMenu_AddButton(info)
-- Enable Pet
info = {}
info.text = SH_PET
if (SmartHeal:getConfig('enablepet','hotlist')) then
info.checked = 1
end
info.func = SH_HotListPet_Toggle
UIDropDownMenu_AddButton(info)
-- Hide HP>100%
info = {}
info.text = SH_HIDE_HP_AT_100
if (SmartHeal:getConfig('hideHPFull','hotlist')) then
info.checked = 1
end
info.func = SH_HideHPFull
UIDropDownMenu_AddButton(info)
-- Reset HealStack(CTRA)
info = {}
info.text = SH_RESET_HEALSTACK
info.notCheckable = 1
info.value = "ResetHealStack"
info.func = SH_ResetHealStack
UIDropDownMenu_AddButton(info)
-- Ignore List
info = {}
info.text = SH_GROUP_IGNORE_LIST
info.notCheckable = 1
info.value = "IgnoreList"
info.func = SH_GroupIgnoreList_Show
UIDropDownMenu_AddButton(info)
-- Named Target
info = {}
info.text = SH_NAMED_TARGET_LIST
info.notCheckable = 1
info.value = "NamedList"
info.func = SH_NamedTargetList_Show
UIDropDownMenu_AddButton(info)
-- Spacer
--info = {};
--info.disabled = 1;
--UIDropDownMenu_AddButton(info, UIDROPDOWNMENU_MENU_LEVEL);
end
function SH_HideHPFull()
if(SmartHeal:getConfig('hideHPFull','hotlist')) then
SmartHeal:setConfig('hideHPFull',false,'hotlist')
else
SmartHeal:setConfig('hideHPFull',true,'hotlist')
end
end
function SH_ResetHealStack()
SmartHeal.HealStack={}
end
function SH_HotListPet_Toggle()
if(SmartHeal:getConfig('enablepet','hotlist')) then
SmartHeal:setConfig('enablepet',false,'hotlist')
else
SmartHeal:setConfig('enablepet',true,'hotlist')
end
end
function SH_HotListPriority_Toggle()
if(SmartHeal:getConfig('enablepriority','hotlist')) then
SmartHeal:setConfig('enablepriority',false,'hotlist')
else
SmartHeal:setConfig('enablepriority',true,'hotlist')
end
end
function SH_GroupIgnoreList_Show()
SH_GroupIgnoreList:Show()
end
function SH_NamedTargetList_Show()
SH_NamedTargetList:Show()
end