diff --git a/HealBot_Controller_Events.lua b/HealBot_Controller_Events.lua index f6078c3..943aa2d 100644 --- a/HealBot_Controller_Events.lua +++ b/HealBot_Controller_Events.lua @@ -186,6 +186,7 @@ local HealBot_EventHandlers = { ["UNIT_INVENTORY_CHANGED"] = function(this, 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 } @@ -256,6 +257,7 @@ function HealBot_OnEvent_VariablesLoaded(this) 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"); this:RegisterEvent("UNIT_RAGE"); diff --git a/HealBot_Localization.de.lua b/HealBot_Localization.de.lua index e02cdf0..560f05a 100644 --- a/HealBot_Localization.de.lua +++ b/HealBot_Localization.de.lua @@ -327,6 +327,7 @@ HEALBOT_OPTIONS_MONITORMELEE = "Nahkampf"; HEALBOT_OPTIONS_MONITORRANGE = "Fernkampf"; HEALBOT_OPTIONS_MONITORHEALERS = "Heiler"; HEALBOT_OPTIONS_MONITORCUSTOM = "Eigene"; +HEALBOT_OPTIONS_PETS = "Begleiter"; HEALBOT_OPTIONS_SHOWTOOLTIP = "Zeige Tooltips"; HEALBOT_OPTIONS_SHOWDETTOOLTIP = "Zeige detaillierte Spruchinfos"; @@ -352,7 +353,6 @@ HEALBOT_WORDS_SEC = "Sek"; HEALBOT_WORDS_TO = "zu"; HEALBOT_WORDS_CAST = "Zauber" HEALBOT_WORDS_FOR = "f\195\188r"; - end diff --git a/HealBot_Localization.en.lua b/HealBot_Localization.en.lua index 6d81d92..209a639 100644 --- a/HealBot_Localization.en.lua +++ b/HealBot_Localization.en.lua @@ -365,6 +365,7 @@ HEALBOT_OPTIONS_MONITORMELEE = "Melee"; HEALBOT_OPTIONS_MONITORRANGE = "Ranged"; HEALBOT_OPTIONS_MONITORHEALERS = "Healers"; HEALBOT_OPTIONS_MONITORCUSTOM = "Custom"; +HEALBOT_OPTIONS_PETS = "Pets"; HEALBOT_OPTIONS_SHOWTOOLTIP = "Show tooltips"; HEALBOT_OPTIONS_SHOWDETTOOLTIP = "Show detailed spell information"; @@ -385,11 +386,3 @@ HEALBOT_WORDS_SEC = "sec"; HEALBOT_WORDS_TO = "to"; HEALBOT_WORDS_CAST = "Cast" HEALBOT_WORDS_FOR = "for"; - - - - - - - - diff --git a/HealBot_Localization.fr.lua b/HealBot_Localization.fr.lua index 6d591e7..ab27dfc 100644 --- a/HealBot_Localization.fr.lua +++ b/HealBot_Localization.fr.lua @@ -266,6 +266,7 @@ HEALBOT_OPTIONS_MONITORMELEE = "M\195\169l\195\169e"; HEALBOT_OPTIONS_MONITORRANGE = "\195\128 distance"; HEALBOT_OPTIONS_MONITORHEALERS = "Soigneurs"; HEALBOT_OPTIONS_MONITORCUSTOM = "Personnalis\195\169"; +HEALBOT_OPTIONS_PETS = "Familiers"; HEALBOT_OPTIONS_BARALPHAINHEAL= "Incoming heal opacity"; -- *************** needs French translation *************** @@ -333,7 +334,6 @@ HEALBOT_WORDS_SEC = "sec"; -- *************** needs translati HEALBOT_WORDS_TO = "to"; -- *************** needs translation *************** HEALBOT_WORDS_CAST = "Cast" -- *************** needs translation *************** HEALBOT_WORDS_FOR = "for"; -- *************** needs translation *************** - end diff --git a/HealBot_Localization.kr.lua b/HealBot_Localization.kr.lua index a564c0b..60852b8 100644 --- a/HealBot_Localization.kr.lua +++ b/HealBot_Localization.kr.lua @@ -309,6 +309,7 @@ HEALBOT_GREATER_BLESSING_OF_SALVATION = "상급 구원의 축복"; HEALBOT_OPTIONS_MONITORRANGE = "원거리"; HEALBOT_OPTIONS_MONITORHEALERS = "힐러"; HEALBOT_OPTIONS_MONITORCUSTOM = "사용자 정의"; + HEALBOT_OPTIONS_PETS = "소환수"; HEALBOT_OPTIONS_SHOWTOOLTIP = "툴팁 표시"; HEALBOT_OPTIONS_SHOWDETTOOLTIP = "주문 정보 표시"; @@ -329,7 +330,6 @@ HEALBOT_GREATER_BLESSING_OF_SALVATION = "상급 구원의 축복"; HEALBOT_WORDS_TO = "~"; HEALBOT_WORDS_CAST = "시전" HEALBOT_WORDS_FOR = "for"; - end diff --git a/HealBot_Options.lua b/HealBot_Options.lua index d599b52..48d7f5e 100644 --- a/HealBot_Options.lua +++ b/HealBot_Options.lua @@ -18,6 +18,7 @@ HealBot_Options_EmergencyFilter_List = { HEALBOT_SHAMAN, HEALBOT_WARLOCK, HEALBOT_WARRIOR, + HEALBOT_OPTIONS_PETS, HEALBOT_OPTIONS_MONITORMELEE, HEALBOT_OPTIONS_MONITORRANGE, HEALBOT_OPTIONS_MONITORHEALERS, diff --git a/HealBot_Options_Healing.lua b/HealBot_Options_Healing.lua index b923c58..dc3db60 100644 --- a/HealBot_Options_Healing.lua +++ b/HealBot_Options_Healing.lua @@ -252,7 +252,7 @@ function HealBot_Options_EmergencyFilter_Reset() HealBot_EmergInc[HEALBOT_SHAMAN] = 0; HealBot_EmergInc[HEALBOT_WARLOCK] = 0; HealBot_EmergInc[HEALBOT_WARRIOR] = 0; - if HealBot_Config.EmergIncMonitor==1 then + if HealBot_Config.EmergIncMonitor==2 then HealBot_EmergInc[HEALBOT_DRUID] = 1; HealBot_EmergInc[HEALBOT_HUNTER] = 1; HealBot_EmergInc[HEALBOT_MAGE] = 1; @@ -262,25 +262,27 @@ function HealBot_Options_EmergencyFilter_Reset() HealBot_EmergInc[HEALBOT_SHAMAN] = 1; HealBot_EmergInc[HEALBOT_WARLOCK] = 1; HealBot_EmergInc[HEALBOT_WARRIOR] = 1; - elseif HealBot_Config.EmergIncMonitor==2 then - HealBot_EmergInc[HEALBOT_DRUID] = 1; elseif HealBot_Config.EmergIncMonitor==3 then - HealBot_EmergInc[HEALBOT_HUNTER] = 1; + HealBot_EmergInc[HEALBOT_DRUID] = 1; elseif HealBot_Config.EmergIncMonitor==4 then - HealBot_EmergInc[HEALBOT_MAGE] = 1; + HealBot_EmergInc[HEALBOT_HUNTER] = 1; elseif HealBot_Config.EmergIncMonitor==5 then - HealBot_EmergInc[HEALBOT_PALADIN] = 1; + HealBot_EmergInc[HEALBOT_MAGE] = 1; elseif HealBot_Config.EmergIncMonitor==6 then - HealBot_EmergInc[HEALBOT_PRIEST] = 1; + HealBot_EmergInc[HEALBOT_PALADIN] = 1; elseif HealBot_Config.EmergIncMonitor==7 then - HealBot_EmergInc[HEALBOT_ROGUE] = 1; + HealBot_EmergInc[HEALBOT_PRIEST] = 1; elseif HealBot_Config.EmergIncMonitor==8 then - HealBot_EmergInc[HEALBOT_SHAMAN] = 1; + HealBot_EmergInc[HEALBOT_ROGUE] = 1; elseif HealBot_Config.EmergIncMonitor==9 then - HealBot_EmergInc[HEALBOT_WARLOCK] = 1; + HealBot_EmergInc[HEALBOT_SHAMAN] = 1; elseif HealBot_Config.EmergIncMonitor==10 then - HealBot_EmergInc[HEALBOT_WARRIOR] = 1; + HealBot_EmergInc[HEALBOT_WARLOCK] = 1; elseif HealBot_Config.EmergIncMonitor==11 then + HealBot_EmergInc[HEALBOT_WARRIOR] = 1; + elseif HealBot_Config.EmergIncMonitor==12 then + -- Pets: no player classes enabled (handled separately in layout) + elseif HealBot_Config.EmergIncMonitor==13 then HealBot_EmergInc[HEALBOT_DRUID] = HealBot_Config.EmergIncMelee[HEALBOT_DRUID]; HealBot_EmergInc[HEALBOT_HUNTER] = HealBot_Config.EmergIncMelee[HEALBOT_HUNTER]; HealBot_EmergInc[HEALBOT_MAGE] = HealBot_Config.EmergIncMelee[HEALBOT_MAGE]; @@ -290,7 +292,7 @@ function HealBot_Options_EmergencyFilter_Reset() HealBot_EmergInc[HEALBOT_SHAMAN] = HealBot_Config.EmergIncMelee[HEALBOT_SHAMAN]; HealBot_EmergInc[HEALBOT_WARLOCK] = HealBot_Config.EmergIncMelee[HEALBOT_WARLOCK]; HealBot_EmergInc[HEALBOT_WARRIOR] = HealBot_Config.EmergIncMelee[HEALBOT_WARRIOR]; - elseif HealBot_Config.EmergIncMonitor==12 then + elseif HealBot_Config.EmergIncMonitor==14 then HealBot_EmergInc[HEALBOT_DRUID] = HealBot_Config.EmergIncRange[HEALBOT_DRUID]; HealBot_EmergInc[HEALBOT_HUNTER] = HealBot_Config.EmergIncRange[HEALBOT_HUNTER]; HealBot_EmergInc[HEALBOT_MAGE] = HealBot_Config.EmergIncRange[HEALBOT_MAGE]; @@ -300,7 +302,7 @@ function HealBot_Options_EmergencyFilter_Reset() HealBot_EmergInc[HEALBOT_SHAMAN] = HealBot_Config.EmergIncRange[HEALBOT_SHAMAN]; HealBot_EmergInc[HEALBOT_WARLOCK] = HealBot_Config.EmergIncRange[HEALBOT_WARLOCK]; HealBot_EmergInc[HEALBOT_WARRIOR] = HealBot_Config.EmergIncRange[HEALBOT_WARRIOR]; - elseif HealBot_Config.EmergIncMonitor==13 then + elseif HealBot_Config.EmergIncMonitor==15 then HealBot_EmergInc[HEALBOT_DRUID] = HealBot_Config.EmergIncHealers[HEALBOT_DRUID]; HealBot_EmergInc[HEALBOT_HUNTER] = HealBot_Config.EmergIncHealers[HEALBOT_HUNTER]; HealBot_EmergInc[HEALBOT_MAGE] = HealBot_Config.EmergIncHealers[HEALBOT_MAGE]; @@ -310,7 +312,7 @@ function HealBot_Options_EmergencyFilter_Reset() HealBot_EmergInc[HEALBOT_SHAMAN] = HealBot_Config.EmergIncHealers[HEALBOT_SHAMAN]; HealBot_EmergInc[HEALBOT_WARLOCK] = HealBot_Config.EmergIncHealers[HEALBOT_WARLOCK]; HealBot_EmergInc[HEALBOT_WARRIOR] = HealBot_Config.EmergIncHealers[HEALBOT_WARRIOR]; - elseif HealBot_Config.EmergIncMonitor==14 then + elseif HealBot_Config.EmergIncMonitor==16 then HealBot_EmergInc[HEALBOT_DRUID] = HealBot_Config.EmergIncCustom[HEALBOT_DRUID]; HealBot_EmergInc[HEALBOT_HUNTER] = HealBot_Config.EmergIncCustom[HEALBOT_HUNTER]; HealBot_EmergInc[HEALBOT_MAGE] = HealBot_Config.EmergIncCustom[HEALBOT_MAGE]; diff --git a/HealBot_View_Layout.lua b/HealBot_View_Layout.lua index b0896fd..ebcc433 100644 --- a/HealBot_View_Layout.lua +++ b/HealBot_View_Layout.lua @@ -495,7 +495,7 @@ function HealBot_Action_PartyChanged() numBars = numBars + 1; numHeaders = numHeaders + 1; end - if HealBot_Config.EmergIncMonitor == 1 then + if HealBot_Config.EmergIncMonitor == 2 then if GetNumRaidMembers() > 0 then for j = 1, 40 do local PossibleEmerg = 1; @@ -543,6 +543,50 @@ function HealBot_Action_PartyChanged() end end end + elseif HealBot_Config.EmergIncMonitor == 12 then + if GetNumRaidMembers() > 0 then + for j = 1, 40 do + local unit = "raidpet" .. j; + if not HealBot_Action_UnitButtons[unit] and HealBot_MayHeal(unit) then + local ownerIndex = j; + local name = UnitName(unit) or "Pet"; + local _, _, subgroup = GetRaidRosterInfo(ownerIndex); + subgroup = subgroup or 1; + + if HealBot_Config.ExtraOrder == 1 then + order[unit] = name; + elseif HealBot_Config.ExtraOrder == 2 then + order[unit] = HEALBOT_OPTIONS_PETS; + elseif HealBot_Config.ExtraOrder == 3 then + order[unit] = subgroup; + else + order[unit] = 0 - UnitHealthMax(unit); + if UnitHealthMax(unit) > TempMaxH then TempMaxH = UnitHealthMax(unit); end + end + table.insert(units, unit); + numBars = numBars + 1; + end + end + else + local petUnits = { "pet", "partypet1", "partypet2", "partypet3", "partypet4" }; + for _, unit in ipairs(petUnits) do + if not HealBot_Action_UnitButtons[unit] and HealBot_MayHeal(unit) then + local name = UnitName(unit) or "Pet"; + if HealBot_Config.ExtraOrder == 1 then + order[unit] = name; + elseif HealBot_Config.ExtraOrder == 2 then + order[unit] = HEALBOT_OPTIONS_PETS; + elseif HealBot_Config.ExtraOrder == 3 then + order[unit] = 1; + else + order[unit] = 0 - UnitHealthMax(unit); + if UnitHealthMax(unit) > TempMaxH then TempMaxH = UnitHealthMax(unit); end + end + table.insert(units, unit); + numBars = numBars + 1; + end + end + end else if GetNumRaidMembers() > 0 then for j = 1, 40 do @@ -606,10 +650,26 @@ function HealBot_Action_PartyChanged() local TempSort = "init" TempMaxH = math.ceil(TempMaxH / 1000) * 1000; - if GetNumRaidMembers() > 0 then + if GetNumRaidMembers() > 0 or HealBot_Config.EmergIncMonitor == 12 then for j = 1, 40 do if not units[j] then break end - local name, rank, subgroup, level, class, fileName, zone, online, isDead = GetRaidRosterInfo(string.sub(units[j], 5)); + local name, rank, subgroup, level, class, fileName, zone, online, isDead; + local ownerIndex = nil; + if string.sub(units[j], 1, 7) == "raidpet" then + ownerIndex = tonumber(string.sub(units[j], 8)); + elseif string.sub(units[j], 1, 4) == "raid" then + ownerIndex = tonumber(string.sub(units[j], 5)); + end + if ownerIndex then + name, rank, subgroup, level, class, fileName, zone, online, isDead = GetRaidRosterInfo(ownerIndex); + end + + if string.sub(units[j], 1, 7) == "raidpet" or string.sub(units[j], 1, 8) == "partypet" or units[j] == "pet" then + name = UnitName(units[j]) or "Pet"; + class = HEALBOT_OPTIONS_PETS; + subgroup = subgroup or 1; + end + if HealBot_Config.ShowHeader[HealBot_Config.Current_Skin] == 1 and HealBot_Config.ExtraOrder == 2 and TempSort ~= class then TempSort = class HeaderPos[i + 1] = class