diff --git a/HealBotBlue.toc b/HealBotBlue.toc index 62d9942..b61b6eb 100644 --- a/HealBotBlue.toc +++ b/HealBotBlue.toc @@ -3,7 +3,7 @@ ## Version: 1.5.1 ## Author: Bluewhale ## Notes: Adds panel with skinable bars for healing and decursive -## SavedVariables: HealBot_Config +## SavedVariablesPerCharacter: HealBot_Config ..\..\FrameXML\Fonts.xml ..\..\FrameXML\OptionsFrameTemplates.xml ..\..\FrameXML\UIPanelTemplates.xml @@ -27,3 +27,4 @@ HealBot_Options_CDC.xml HealBot_Options_Skins.xml HealBot_Options_Buffs.xml HealBot_Options_Chat.xml +HealBot_Options_Auto.xml diff --git a/HealBot_Controller_Aura.lua b/HealBot_Controller_Aura.lua index 9ae5d5e..9dee3c1 100644 --- a/HealBot_Controller_Aura.lua +++ b/HealBot_Controller_Aura.lua @@ -2,6 +2,7 @@ -- Handles tracking buffs/debuffs (auras) on group/raid units HealBot_MissingBuffs = {} +local StaticHasBuff = {} function HealBot_UnitAffected(unit, effect) if not effect then return nil; end @@ -68,7 +69,10 @@ function HealBot_CheckBuffs(unit) } -- Gather buffs on unit - local hasBuff = {} + local hasBuff = StaticHasBuff + for k in pairs(hasBuff) do + hasBuff[k] = nil + end local i = 1 while true do local buffTexture = UnitBuff(unit, i) @@ -91,7 +95,7 @@ function HealBot_CheckBuffs(unit) local val = HealBot_Config.BuffDropDowns[myClass][j] if val and val > 0 then local isSelfOnly = (HealBot_Config.BuffWatchSelf and HealBot_Config.BuffWatchSelf[j] == 1) - if not (isSelfOnly and unit ~= "player") then + if not (isSelfOnly and not UnitIsUnit(unit, "player")) then local spellName = HealBot_Buff_Spells[myClass][val] local hasIt = hasBuff[spellName] @@ -100,7 +104,7 @@ function HealBot_CheckBuffs(unit) end if not hasIt then - if myClass == "SHAMAN" and unit == "player" and string.find(spellName, " Weapon") then + if myClass == "SHAMAN" and UnitIsUnit(unit, "player") and string.find(spellName, " Weapon") then hasIt = HealBot_CheckShamanWeaponBuff(spellName) end end @@ -123,6 +127,7 @@ local HealBot_TrackedHoTs = { ["Interface\\Icons\\Spell_Holy_SealOfProtection"] = true, ["Interface\\Icons\\Spell_Holy_Excorcism"] = true, ["Interface\\Icons\\btnholyscriptures"] = true, + ["Interface\\Icons\\Spell_Holy_AshesToAshes"] = true, } function HealBot_OnEvent_UnitAura(this, unit) @@ -144,7 +149,7 @@ function HealBot_OnEvent_UnitAura(this, unit) iconCount = iconCount + 1 HealBot_UnitIcons[unit][iconCount] = debuff end - if HealBot_CDCInc[UnitClass(unit)] == 1 and HealBot_DebuffWatch[debuff_type] == "YES" then + if HealBot_CDCInc[UnitClass(unit)] == 1 and HealBot_DebuffWatch[debuff_type] then HealBot_UnitDebuff[unit] = debuff_type DebuffType = debuff_type; if HealBot_DebuffPriority[debuff_type] then @@ -168,6 +173,17 @@ function HealBot_OnEvent_UnitAura(this, unit) end b = b + 1 end + + local d = 1 + while true do + local debuff = UnitDebuff(unit, d) + if not debuff then break end + if HealBot_TrackedHoTs[debuff] and iconCount < 5 then + iconCount = iconCount + 1 + HealBot_UnitIcons[unit][iconCount] = debuff + end + d = d + 1 + end if HealBot_UnitDebuff[unit] then if DebuffType and HealBot_Range_Check(unit, 27) == 1 then diff --git a/HealBot_Controller_Events.lua b/HealBot_Controller_Events.lua index 122b32f..c10d4b2 100644 --- a/HealBot_Controller_Events.lua +++ b/HealBot_Controller_Events.lua @@ -30,9 +30,7 @@ function HealBot_OnLoad(this) end) HealBot_Model:RegisterObserver("EQUIPMENT_CHANGED", function(unitID) if unitID == "player" then - HealBot_BonusScanner:ScanEquipment() - HealBot_CalcEquipBonus = true; - HealBot_RecalcSpells(); + HealBot_EquipChangeTimer = 1 end end) end @@ -43,17 +41,20 @@ end function HealBot_OnUpdate(this, arg1) if HealBot_Action_TooltipUnit and HealBot_Tooltip:IsVisible() then - local currentModState = "" - if IsShiftKeyDown() then currentModState = currentModState .. "S" end - if IsControlKeyDown() then currentModState = currentModState .. "C" end - if IsAltKeyDown() then currentModState = currentModState .. "A" end + local s = IsShiftKeyDown() and true or false + local c = IsControlKeyDown() and true or false + local a = IsAltKeyDown() and true or false - if HealBot_LastModState ~= currentModState then - HealBot_LastModState = currentModState + if HealBot_LastModS ~= s or HealBot_LastModC ~= c or HealBot_LastModA ~= a then + HealBot_LastModS = s + HealBot_LastModC = c + HealBot_LastModA = a HealBot_Action_RefreshTooltip(HealBot_Action_TooltipUnit) end else - HealBot_LastModState = "" + HealBot_LastModS = false + HealBot_LastModC = false + HealBot_LastModA = false end if HealBot_TargetRestorePending then @@ -73,10 +74,20 @@ function HealBot_OnUpdate(this, arg1) end -- Process Dirty Queue for MVC View - if next(HealBot_View_DirtyUnits) ~= nil then - for unitID in pairs(HealBot_View_DirtyUnits) do - HealBot_Action_RefreshButtons(unitID) - HealBot_View_DirtyUnits[unitID] = nil + local unitID, _ = next(HealBot_View_DirtyUnits) + while unitID do + HealBot_Action_RefreshButtons(unitID) + HealBot_View_DirtyUnits[unitID] = nil + unitID, _ = next(HealBot_View_DirtyUnits) + end + + if HealBot_EquipChangeTimer > 0 then + HealBot_EquipChangeTimer = HealBot_EquipChangeTimer - arg1 + if HealBot_EquipChangeTimer <= 0 then + HealBot_EquipChangeTimer = 0 + HealBot_BonusScanner:ScanEquipment() + HealBot_CalcEquipBonus = true; + HealBot_RecalcSpells(); end end @@ -85,20 +96,12 @@ function HealBot_OnUpdate(this, arg1) if not HealBot_IsFighting then HealsIn_Timer = HealsIn_Timer + 1; if HealsIn_Timer >= 10 then - HealBot_HealsIn = {}; - HealBot_Healers = {}; + for k in pairs(HealBot_HealsIn) do HealBot_HealsIn[k] = nil end + for k in pairs(HealBot_Healers) do HealBot_Healers[k] = nil end HealsIn_Timer = 0; end - if HealBot_EquipChangeTimer > 0 then - HealBot_EquipChangeTimer = HealBot_EquipChangeTimer - arg1 - if HealBot_EquipChangeTimer <= 0 then - HealBot_EquipChangeTimer = 0 - HealBot_BonusScanner:ScanEquipment() - HealBot_CalcEquipBonus = true; - HealBot_RecalcSpells(); - end - end + if HealBot_SpellsInitFlag > 1 then HealBot_SpellsInitFlag = HealBot_SpellsInitFlag + 1; @@ -131,32 +134,28 @@ local HealBot_EventHandlers = { HealBot_OnEvent_UnitHealth(this, arg1) end, ["UNIT_MANA"] = function(this, arg1) + if arg1 ~= "player" and HealBot_Config.ShowManaBars == 0 then return end if HealBot_Model:UpdateUnitPower(arg1) then HealBot_Model:NotifyObservers("UNIT_POWER_CHANGED", arg1) end - if (arg1 == "player") then HealBot_RecalcHeals(); end - HealBot_Action_RefreshButtons(arg1); end, ["UNIT_RAGE"] = function(this, arg1) + if arg1 ~= "player" and HealBot_Config.ShowManaBars == 0 then return end if HealBot_Model:UpdateUnitPower(arg1) then HealBot_Model:NotifyObservers("UNIT_POWER_CHANGED", arg1) end - if (arg1 == "player") then HealBot_RecalcHeals(); end - HealBot_Action_RefreshButtons(arg1); end, ["UNIT_ENERGY"] = function(this, arg1) + if arg1 ~= "player" and HealBot_Config.ShowManaBars == 0 then return end if HealBot_Model:UpdateUnitPower(arg1) then HealBot_Model:NotifyObservers("UNIT_POWER_CHANGED", arg1) end - if (arg1 == "player") then HealBot_RecalcHeals(); end - HealBot_Action_RefreshButtons(arg1); end, ["UNIT_DISPLAYPOWER"] = function(this, arg1) + if arg1 ~= "player" and HealBot_Config.ShowManaBars == 0 then return end if HealBot_Model:UpdateUnitPower(arg1) then HealBot_Model:NotifyObservers("UNIT_POWER_CHANGED", arg1) end - if (arg1 == "player") then HealBot_RecalcHeals(); end - HealBot_Action_RefreshButtons(arg1); end, ["UNIT_AURA"] = function(this, arg1) HealBot_Model:MarkAuraChanged(arg1) @@ -201,8 +200,6 @@ local HealBot_EventHandlers = { ["SPELLCAST_FAILED"] = function(this) HealBot_OnEvent_SpellcastStop(this, "SPELLCAST_FAILED") end, ["PLAYER_REGEN_DISABLED"] = function(this) HealBot_OnEvent_PlayerRegenDisabled(this) end, ["PLAYER_REGEN_ENABLED"] = function(this) HealBot_OnEvent_PlayerRegenEnabled(this) end, - ["BAG_UPDATE_COOLDOWN"] = function(this, arg1) HealBot_OnEvent_BagUpdateCooldown(this, arg1) end, - ["BAG_UPDATE"] = function(this, arg1) HealBot_OnEvent_BagUpdate(this, arg1) end, ["PARTY_MEMBER_DISABLE"] = function(this, arg1) HealBot_OnEvent_PartyMemberDisable(this, arg1) end, ["PARTY_MEMBER_ENABLE"] = function(this, arg1) HealBot_OnEvent_PartyMemberEnable(this, arg1) end, ["CHAT_MSG_SYSTEM"] = function(this, arg1) HealBot_OnEvent_SystemMsg(this, arg1) end, @@ -212,11 +209,10 @@ local HealBot_EventHandlers = { HealBot_OnEvent_PlayerEquipmentChanged(this) end, ["UNIT_INVENTORY_CHANGED"] = function(this, arg1) + if arg1 ~= "player" then return end HealBot_Model:NotifyObservers("EQUIPMENT_CHANGED", arg1) HealBot_OnEvent_PlayerEquipmentChanged2(this, arg1) end, - ["PET_BAR_SHOWGRID"] = function(this) HealBot_OnEvent_PartyMembersChanged(this) end, - ["PET_BAR_HIDEGRID"] = function(this) HealBot_OnEvent_PartyMembersChanged(this) end, ["UNIT_PET"] = function(this, arg1) HealBot_OnEvent_PartyMembersChanged(this) end, ["SPELLS_CHANGED"] = function(this, arg1) HealBot_OnEvent_SpellsChanged(this, arg1) end, ["UPDATE_SHAPESHIFT_FORM"] = function(this) HealBot_UpdateShapeshiftForm() end, @@ -288,8 +284,6 @@ function HealBot_OnEvent_VariablesLoaded(this) this:RegisterEvent("PARTY_MEMBERS_CHANGED"); this:RegisterEvent("PARTY_MEMBER_DISABLE"); this:RegisterEvent("PARTY_MEMBER_ENABLE"); - this:RegisterEvent("PET_BAR_SHOWGRID"); - this:RegisterEvent("PET_BAR_HIDEGRID"); this:RegisterEvent("UNIT_PET"); this:RegisterEvent("UNIT_HEALTH"); this:RegisterEvent("UNIT_MANA"); @@ -301,8 +295,6 @@ function HealBot_OnEvent_VariablesLoaded(this) this:RegisterEvent("SPELLCAST_STOP"); this:RegisterEvent("SPELLCAST_INTERRUPTED"); this:RegisterEvent("SPELLCAST_FAILED"); - this:RegisterEvent("BAG_UPDATE"); - this:RegisterEvent("BAG_UPDATE_COOLDOWN"); this:RegisterEvent("UNIT_AURA"); this:RegisterEvent("UPDATE_INVENTORY_ALERTS"); this:RegisterEvent("UNIT_INVENTORY_CHANGED"); @@ -321,7 +313,6 @@ end function HealBot_OnEvent_UnitHealth(this, unit) if (not HealBot_Heals[unit]) then return end HealBot_CheckCasting(unit); - HealBot_RecalcHeals(unit); if unit == HealBot_Action_TooltipUnit then HealBot_Action_RefreshTooltip(HealBot_Action_TooltipUnit); end @@ -338,7 +329,7 @@ function HealBot_OnEvent_ZoneChanged(this) end function HealBot_OnEvent_PlayerRegenDisabled(this) - HealBot_RecalcParty(); + -- Removed HealBot_RecalcParty(); if (UnitIsDeadOrGhost("player")) or (UnitOnTaxi("player")) then if HealBot_Config.AutoClose==1 and HealBot_Config.ActionVisible~=0 then HealBot_Action.ProgrammaticHide = true; @@ -374,11 +365,14 @@ end function HealBot_OnEvent_PlayerRegenEnabled(this) HealBot_IsFighting = false; - HealBot_Delay_RecalcParty = 1; + -- Removed HealBot_Delay_RecalcParty = 1; end function HealBot_OnEvent_PlayerTargetChanged(this) - HealBot_RecalcParty(); + if HealBot_Action_UnitButtons and HealBot_Action_UnitButtons["target"] then + HealBot_View_DirtyUnits["target"] = true + HealBot_OnEvent_UnitAura(nil, "target"); + end end function HealBot_OnEvent_PartyMembersChanged(this) @@ -439,20 +433,6 @@ function HealBot_OnEvent_TalentsChanged(this, arg1) HealBot_AddDebug("HB: TalentsChanged"); end -function HealBot_OnEvent_BagUpdate(this, bag) - if HealBot_EquipChangeTimer == 0 then - HealBot_RecalcSpells(); - end -end - -function HealBot_OnEvent_BagUpdateCooldown(this, bag) - if not bag then - bag = "undef" - elseif HealBot_EquipChangeTimer == 0 then - HealBot_RecalcSpells(); - end -end - function HealBot_OnEvent_PlayerEnteringWorld(this) HealBot_IsFighting = false; -- Re-apply the refresh hook late in case another addon overrode it during load diff --git a/HealBot_Controller_Spells.lua b/HealBot_Controller_Spells.lua index 97f9dd9..5c6bde5 100644 --- a/HealBot_Controller_Spells.lua +++ b/HealBot_Controller_Spells.lua @@ -246,7 +246,7 @@ function HealBot_CheckCasting(unit) local ag = HealBot_Config.babortcolg[HealBot_Config.Current_Skin] or 0.1; local ab = HealBot_Config.babortcolb[HealBot_Config.Current_Skin] or 0.5; local aa = HealBot_Config.babortcola[HealBot_Config.Current_Skin] or 1; - bar.txt = getglobal(bar:GetName() .. "_text"); + if not bar.txt then bar.txt = getglobal(bar:GetName() .. "_text") end if HealBot_IsCasting == false and HealBot_AbortButton == 0 then bar:SetStatusBarColor(ar, ag, ab, 0); @@ -462,7 +462,8 @@ end function HealBot_CanCastSpell(spell, unit) local this = HealBot_Spells[spell]; - if this.Mana > UnitMana("player") then return false end; + -- Removed manual mana check so WoW can properly handle 0-cost buffs (Clearcasting/Inner Focus) + -- and so tooltips can render in red instead of disappearing. if this.BagSlot then local bag, slot = HealBot_UnpackBagSlot(this.BagSlot); local start, duration, enable = GetContainerItemCooldown(bag, slot); @@ -592,9 +593,7 @@ function HealBot_InitSpells() end id = id + 1; end - if class == "PRIEST" or class == "DRUID" or class == "PALADIN" or class == "SHAMAN" then - HealBot_AddChat("Initiated HealBot_CurrentSpells with " .. cnt .. " Spells"); - end + return cnt; end diff --git a/HealBot_Data.lua b/HealBot_Data.lua index 6915aa6..86d1b4c 100644 --- a/HealBot_Data.lua +++ b/HealBot_Data.lua @@ -2,6 +2,20 @@ HealBot_ConfigDefaults = { ShowManaBars=0, ManaBarsHealersOnly=0, Version = HEALBOT_VERSION, + AutoSwap_Enabled = 0, + AutoSwap_Profiles = { + [1] = HEALBOT_SKINS_STD, + [2] = HEALBOT_SKINS_STD, + [3] = HEALBOT_SKINS_STD, + [4] = HEALBOT_SKINS_STD, + [5] = HEALBOT_SKINS_STD, + }, + bmaxrows = { + [HEALBOT_SKINS_STD] = 0, + }, + GridOrientation = { + [HEALBOT_SKINS_STD] = 1, + }, AlertLevel = 0.95, AutoClose = 1, PanelSounds = 1, @@ -181,7 +195,17 @@ HealBot_ConfigDefaults = { Current_Skin = "Modern Flat", Skin_ID = 1, Skins = {"Modern Flat", HEALBOT_SKINS_STD, "HealBot Party", "HealBot Raid", "Alteric Valley"}, + AutoSwap_Enabled = 0, + AutoSwap_Profiles = { + [1] = "Modern Flat", -- Solo + [2] = "HealBot Party", -- Party (2-5) + [3] = "HealBot Raid", -- Raid 15 (6-15) + [4] = "HealBot Raid", -- Raid 25 (16-25) + [5] = "HealBot Raid", -- Raid 40 (26-40) + }, numcols = {[HEALBOT_SKINS_STD] = 1, ["HealBot Party"] = 1, ["HealBot Raid"] = 4, ["Alteric Valley"] = 2, ["Modern Flat"] = 1}, + bmaxrows = {[HEALBOT_SKINS_STD] = 0, ["HealBot Party"] = 0, ["HealBot Raid"] = 0, ["Alteric Valley"] = 0, ["Modern Flat"] = 0}, + GridOrientation = {[HEALBOT_SKINS_STD] = 1, ["HealBot Party"] = 1, ["HealBot Raid"] = 1, ["Alteric Valley"] = 1, ["Modern Flat"] = 1}, btexture = {[HEALBOT_SKINS_STD] = 8,["HealBot Party"] = 6, ["HealBot Raid"] = 7, ["Alteric Valley"] = 9, ["Modern Flat"] = 10}, bcspace = {[HEALBOT_SKINS_STD] = 4, ["HealBot Party"] = 4, ["HealBot Raid"] = 2, ["Alteric Valley"] = 2, ["Modern Flat"] = 4}, brspace = {[HEALBOT_SKINS_STD] = 1, ["HealBot Party"] = 2, ["HealBot Raid"] = 2, ["Alteric Valley"] = 1, ["Modern Flat"] = 2}, @@ -545,7 +569,7 @@ HealBot_Debuff_Types = { HealBot_IsFighting = false; HealBot_DebuffPriority = {"none"}; -HealBot_DebuffWatch = {[HEALBOT_DISEASE_en]="NO", [HEALBOT_MAGIC_en]="NO", [HEALBOT_POISON_en]="NO", [HEALBOT_CURSE_en]="NO"}; +HealBot_DebuffWatch = {[HEALBOT_DISEASE_en]=false, [HEALBOT_MAGIC_en]=false, [HEALBOT_POISON_en]=false, [HEALBOT_CURSE_en]=false}; HealBot_Heals = {}; diff --git a/HealBot_Localization.en.lua b/HealBot_Localization.en.lua index c635178..8afa9ab 100644 --- a/HealBot_Localization.en.lua +++ b/HealBot_Localization.en.lua @@ -1,4 +1,4 @@ -HEALBOT_VERSION = GetAddOnMetadata("HealBotBlue", "Version") or "Unknown"; +HEALBOT_VERSION = GetAddOnMetadata("HealBotBlue", "Version"); ------------- -- ENGLISH -- diff --git a/HealBot_Options.lua b/HealBot_Options.lua index 0a30e9c..9a974cc 100644 --- a/HealBot_Options.lua +++ b/HealBot_Options.lua @@ -234,7 +234,7 @@ function HealBot_Options_OnLoad(this) table.insert(UISpecialFrames,this:GetName()); -- Tabs - PanelTemplates_SetNumTabs(this,7); + PanelTemplates_SetNumTabs(this,8); this.selectedTab = 1; PanelTemplates_UpdateTabs(this); HealBot_Options_ShowPanel(this.selectedTab); @@ -314,6 +314,8 @@ function HealBot_Options_SetSkins() HealBot_Options_BarHeightS:SetValue(HealBot_Config.bheight[HealBot_Config.Current_Skin]) HealBot_Options_BarWidthS:SetValue(HealBot_Config.bwidth[HealBot_Config.Current_Skin]) HealBot_Options_BarNumColsS:SetValue(HealBot_Config.numcols[HealBot_Config.Current_Skin]) + HealBot_Options_BarMaxRowsS:SetValue((HealBot_Config.bmaxrows and HealBot_Config.bmaxrows[HealBot_Config.Current_Skin]) or 0) + HealBot_Options_GridOrientation:SetChecked(((HealBot_Config.GridOrientation and HealBot_Config.GridOrientation[HealBot_Config.Current_Skin]) == 2) and 1 or nil) HealBot_Options_BarBRSpaceS:SetValue(HealBot_Config.brspace[HealBot_Config.Current_Skin]) HealBot_Options_BarBCSpaceS:SetValue(HealBot_Config.bcspace[HealBot_Config.Current_Skin]) HealBot_Options_FramePaddingS:SetValue((HealBot_Config.bpadding and HealBot_Config.bpadding[HealBot_Config.Current_Skin]) or 10) diff --git a/HealBot_Options.xml b/HealBot_Options.xml index 31db38a..6380dd1 100644 --- a/HealBot_Options.xml +++ b/HealBot_Options.xml @@ -94,7 +94,7 @@ - + @@ -206,38 +206,16 @@ - - + HealBot_Options_OnLoad(this); diff --git a/HealBot_Options_Auto.lua b/HealBot_Options_Auto.lua new file mode 100644 index 0000000..2ebe79c --- /dev/null +++ b/HealBot_Options_Auto.lua @@ -0,0 +1,82 @@ +function HealBot_Options_AutoSwap_OnClick(this) + if this:GetChecked() then + HealBot_Config.AutoSwap_Enabled = 1 + else + HealBot_Config.AutoSwap_Enabled = 0 + end + HealBot_Action_PartyChanged() +end + +function HealBot_Options_Auto_Initialize() + local dropdownName = UIDROPDOWNMENU_OPEN_MENU + if not dropdownName then return end + local dropdownFrame = getglobal(dropdownName) + if not dropdownFrame then return end + local id = dropdownFrame:GetID() + if not id then return end + + for i=1, getn(HealBot_Config.Skins), 1 do + local info = {} + info.text = HealBot_Config.Skins[i] + info.func = HealBot_Options_Auto_OnSelect + info.value = id + if not HealBot_Config.AutoSwap_Profiles then HealBot_Config.AutoSwap_Profiles = {} end + if HealBot_Config.AutoSwap_Profiles[id] == HealBot_Config.Skins[i] then + info.checked = 1 + else + info.checked = nil + end + UIDropDownMenu_AddButton(info) + end +end + +function HealBot_Options_Auto_OnSelect() + local skin = this:GetText() + local id = this.value + if not id or not skin then return end + + if not HealBot_Config.AutoSwap_Profiles then HealBot_Config.AutoSwap_Profiles = {} end + HealBot_Config.AutoSwap_Profiles[id] = skin + + local dropdowns = { + "HealBot_Options_Auto_Solo", + "HealBot_Options_Auto_Party", + "HealBot_Options_Auto_Raid15", + "HealBot_Options_Auto_Raid25", + "HealBot_Options_Auto_Raid40" + } + local dropdownName = dropdowns[id] + local dropdownFrame = getglobal(dropdownName) + HealBot_UIDropDownMenu_SetSelectedValue(dropdownFrame, skin) + UIDropDownMenu_SetText(skin, dropdownFrame) + + HealBot_Action_PartyChanged() +end + +function HealBot_Options_Auto_OnShow(this) + if HealBot_Config.AutoSwap_Enabled == 1 then + HealBot_Options_AutoSwap:SetChecked(1) + else + HealBot_Options_AutoSwap:SetChecked(nil) + end + + local dropdowns = { + "HealBot_Options_Auto_Solo", + "HealBot_Options_Auto_Party", + "HealBot_Options_Auto_Raid15", + "HealBot_Options_Auto_Raid25", + "HealBot_Options_Auto_Raid40" + } + for id, name in ipairs(dropdowns) do + local dropdownFrame = getglobal(name) + if dropdownFrame then + UIDropDownMenu_SetWidth(150, dropdownFrame) + if not HealBot_Config.AutoSwap_Profiles then HealBot_Config.AutoSwap_Profiles = {} end + local skin = HealBot_Config.AutoSwap_Profiles[id] + if skin then + HealBot_UIDropDownMenu_SetSelectedValue(dropdownFrame, skin) + UIDropDownMenu_SetText(skin, dropdownFrame) + end + end + end +end diff --git a/HealBot_Options_Auto.xml b/HealBot_Options_Auto.xml new file mode 100644 index 0000000..333cc5d --- /dev/null +++ b/HealBot_Options_Auto.xml @@ -0,0 +1,152 @@ + +