diff --git a/HealBot_Action.lua b/HealBot_Action.lua index 33e8151..ee8775b 100644 --- a/HealBot_Action.lua +++ b/HealBot_Action.lua @@ -2,6 +2,10 @@ -- HealBot_AlwaysHeal: Returns true if healthy units should be shown. function HealBot_AlwaysHeal() + local class = HealBot_UnitClass("player") + if class ~= "PRIEST" and class ~= "DRUID" and class ~= "PALADIN" and class ~= "SHAMAN" then + return true + end return HealBot_Config.EnableHealthy==1 end @@ -60,6 +64,14 @@ end -- HealBot_CanHeal: Internal utility: HealBot_CanHeal function HealBot_CanHeal(unit) if string.find(unit, "^Test") then return true end + local class = HealBot_UnitClass("player") + if class ~= "PRIEST" and class ~= "DRUID" and class ~= "PALADIN" and class ~= "SHAMAN" then + if UnitExists(unit) and not UnitIsDeadOrGhost(unit) then + return true + end + return false + end + if UnitIsDeadOrGhost(unit) then local rezSpell = HealBot_GetRezSpellForClass(); if rezSpell and HealBot_GetHealSpell(unit, rezSpell) then diff --git a/HealBot_Controller_Aura.lua b/HealBot_Controller_Aura.lua index 2e45fc7..3283920 100644 --- a/HealBot_Controller_Aura.lua +++ b/HealBot_Controller_Aura.lua @@ -1,3 +1,4 @@ +local HealBot_Buff_Equivalents = nil -- HealBot_Controller_Aura.lua -- Handles tracking buffs/debuffs (auras) on group/raid units @@ -94,14 +95,52 @@ function HealBot_CheckBuffs(unit) return end - -- Group Buff Equivalents - local HealBot_Buff_Equivalents = { - [HEALBOT_POWER_WORD_FORTITUDE] = HEALBOT_PRAYER_OF_FORTITUDE, - [HEALBOT_DIVINE_SPIRIT] = HEALBOT_PRAYER_OF_SPIRIT, - [HEALBOT_SHADOW_PROTECTION] = HEALBOT_PRAYER_OF_SHADOW_PROTECTION, - [HEALBOT_ARCANE_INTELLECT] = HEALBOT_ARCANE_BRILLIANCE, - [HEALBOT_MARK_OF_THE_WILD] = HEALBOT_GIFT_OF_THE_WILD, - } + if not HealBot_Buff_Equivalents then + HealBot_Buff_Equivalents = { + -- Priest Fortitude + [HEALBOT_POWER_WORD_FORTITUDE] = { HEALBOT_PRAYER_OF_FORTITUDE }, + [HEALBOT_PRAYER_OF_FORTITUDE] = { HEALBOT_POWER_WORD_FORTITUDE }, + -- Priest Spirit + [HEALBOT_DIVINE_SPIRIT] = { HEALBOT_PRAYER_OF_SPIRIT }, + [HEALBOT_PRAYER_OF_SPIRIT] = { HEALBOT_DIVINE_SPIRIT }, + -- Priest Shadow Protection + [HEALBOT_SHADOW_PROTECTION] = { HEALBOT_PRAYER_OF_SHADOW_PROTECTION }, + [HEALBOT_PRAYER_OF_SHADOW_PROTECTION] = { HEALBOT_SHADOW_PROTECTION }, + -- Mage Intellect + [HEALBOT_ARCANE_INTELLECT] = { HEALBOT_ARCANE_BRILLIANCE }, + [HEALBOT_ARCANE_BRILLIANCE] = { HEALBOT_ARCANE_INTELLECT }, + -- Mage Armors + [HEALBOT_FROST_ARMOR] = { HEALBOT_ICE_ARMOR }, + [HEALBOT_ICE_ARMOR] = { HEALBOT_FROST_ARMOR }, + -- Druid MotW + [HEALBOT_MARK_OF_THE_WILD] = { HEALBOT_GIFT_OF_THE_WILD }, + [HEALBOT_GIFT_OF_THE_WILD] = { HEALBOT_MARK_OF_THE_WILD }, + -- Paladin Kings + [HEALBOT_BLESSING_OF_KINGS] = { HEALBOT_GREATER_BLESSING_OF_KINGS }, + [HEALBOT_GREATER_BLESSING_OF_KINGS] = { HEALBOT_BLESSING_OF_KINGS }, + -- Paladin Might + [HEALBOT_BLESSING_OF_MIGHT] = { HEALBOT_GREATER_BLESSING_OF_MIGHT }, + [HEALBOT_GREATER_BLESSING_OF_MIGHT] = { HEALBOT_BLESSING_OF_MIGHT }, + -- Paladin Wisdom + [HEALBOT_BLESSING_OF_WISDOM] = { HEALBOT_GREATER_BLESSING_OF_WISDOM }, + [HEALBOT_GREATER_BLESSING_OF_WISDOM] = { HEALBOT_BLESSING_OF_WISDOM }, + -- Paladin Salvation + [HEALBOT_BLESSING_OF_SALVATION] = { HEALBOT_GREATER_BLESSING_OF_SALVATION }, + [HEALBOT_GREATER_BLESSING_OF_SALVATION] = { HEALBOT_BLESSING_OF_SALVATION }, + -- Paladin Light + [HEALBOT_BLESSING_OF_LIGHT] = { HEALBOT_GREATER_BLESSING_OF_LIGHT }, + [HEALBOT_GREATER_BLESSING_OF_LIGHT] = { HEALBOT_BLESSING_OF_LIGHT }, + -- Paladin Sanctuary + [HEALBOT_BLESSING_OF_SANCTUARY] = { HEALBOT_GREATER_BLESSING_OF_SANCTUARY }, + [HEALBOT_GREATER_BLESSING_OF_SANCTUARY] = { HEALBOT_BLESSING_OF_SANCTUARY }, + -- Warlock Armors + [HEALBOT_DEMON_SKIN] = { HEALBOT_DEMON_ARMOR }, + [HEALBOT_DEMON_ARMOR] = { HEALBOT_DEMON_SKIN }, + -- Warlock Invisibility + [HEALBOT_DETECT_LESSER_INVISIBILITY] = { HEALBOT_DETECT_INVISIBILITY }, + [HEALBOT_DETECT_INVISIBILITY] = { HEALBOT_DETECT_LESSER_INVISIBILITY }, + } + end -- Gather buffs on unit local hasBuff = StaticHasBuff @@ -141,13 +180,17 @@ function HealBot_CheckBuffs(unit) for j = 1, 8 do local val = HealBot_Config.BuffDropDowns[myClass][j] if val and val > 0 then - local isSelfOnly = (HealBot_Config.BuffWatchSelf and HealBot_Config.BuffWatchSelf[j] == 1) + local spellName = HealBot_Buff_Spells[myClass][val] + local isSelfOnly = (HealBot_Config.BuffWatchSelf and HealBot_Config.BuffWatchSelf[j] == 1) or (HealBot_SelfOnly_Buffs and HealBot_SelfOnly_Buffs[spellName]) if not (isSelfOnly and not UnitIsUnit(unit, "player")) then - local spellName = HealBot_Buff_Spells[myClass][val] - local hasIt = hasBuff[spellName] if not hasIt and HealBot_Buff_Equivalents[spellName] then - hasIt = hasBuff[HealBot_Buff_Equivalents[spellName]] + for _, equiv in ipairs(HealBot_Buff_Equivalents[spellName]) do + if hasBuff[equiv] then + hasIt = true + break + end + end end if not hasIt then diff --git a/HealBot_Controller_Events.lua b/HealBot_Controller_Events.lua index be708d6..4f7300f 100644 --- a/HealBot_Controller_Events.lua +++ b/HealBot_Controller_Events.lua @@ -376,8 +376,6 @@ end -- HealBot_OnEvent_VariablesLoaded: Applies config defaults and initializes state. function HealBot_OnEvent_VariablesLoaded(this) - local class = HealBot_UnitClass("player") - local function DeepCopyMissing(src, dest) for k, v in pairs(src) do if type(v) == "table" then @@ -391,6 +389,11 @@ function HealBot_OnEvent_VariablesLoaded(this) end end DeepCopyMissing(HealBot_ConfigDefaults, HealBot_Config) + + local locClass = UnitClass("player") + if locClass and (not HealBot_Config.KeyCombo[locClass] or not next(HealBot_Config.KeyCombo[locClass])) then + HealBot_Config.KeyCombo[locClass] = { ["Left"] = "Target" } + end local foundModern = false if HealBot_Config.Skins then @@ -420,39 +423,37 @@ function HealBot_OnEvent_VariablesLoaded(this) HidePartyFrame(); end - if class == "PRIEST" or class == "DRUID" or class == "PALADIN" or class == "SHAMAN" then - HealBot_BonusScanner:ScanEquipment(); + HealBot_BonusScanner:ScanEquipment(); - HealBot_Action_ShowFrame(); + HealBot_Action_ShowFrame(); - this:RegisterEvent("ZONE_CHANGED_NEW_AREA"); - this:RegisterEvent("PLAYER_REGEN_DISABLED"); - this:RegisterEvent("PLAYER_REGEN_ENABLED"); - this:RegisterEvent("PLAYER_TARGET_CHANGED"); - this:RegisterEvent("PARTY_MEMBERS_CHANGED"); - this:RegisterEvent("RAID_ROSTER_UPDATE"); - this:RegisterEvent("RAID_TARGET_UPDATE"); - this:RegisterEvent("PARTY_MEMBER_DISABLE"); - this:RegisterEvent("PARTY_MEMBER_ENABLE"); - this:RegisterEvent("UNIT_PET"); - this:RegisterEvent("UNIT_HEALTH"); - this:RegisterEvent("UNIT_MANA"); - this:RegisterEvent("UNIT_RAGE"); - this:RegisterEvent("UNIT_ENERGY"); - this:RegisterEvent("UNIT_DISPLAYPOWER"); - this:RegisterEvent("SPELLS_CHANGED"); - this:RegisterEvent("SPELLCAST_START"); - this:RegisterEvent("SPELLCAST_STOP"); - this:RegisterEvent("SPELLCAST_INTERRUPTED"); - this:RegisterEvent("SPELLCAST_FAILED"); - this:RegisterEvent("UNIT_AURA"); - this:RegisterEvent("UPDATE_INVENTORY_ALERTS"); - this:RegisterEvent("UNIT_INVENTORY_CHANGED"); - this:RegisterEvent("CHAT_MSG_ADDON"); - this:RegisterEvent("CHAT_MSG_SYSTEM"); - this:RegisterEvent("PLAYER_ENTERING_WORLD"); - HealBot_SpellsInitFlag = 2; - end + this:RegisterEvent("ZONE_CHANGED_NEW_AREA"); + this:RegisterEvent("PLAYER_REGEN_DISABLED"); + this:RegisterEvent("PLAYER_REGEN_ENABLED"); + this:RegisterEvent("PLAYER_TARGET_CHANGED"); + this:RegisterEvent("PARTY_MEMBERS_CHANGED"); + this:RegisterEvent("RAID_ROSTER_UPDATE"); + this:RegisterEvent("RAID_TARGET_UPDATE"); + this:RegisterEvent("PARTY_MEMBER_DISABLE"); + this:RegisterEvent("PARTY_MEMBER_ENABLE"); + this:RegisterEvent("UNIT_PET"); + this:RegisterEvent("UNIT_HEALTH"); + this:RegisterEvent("UNIT_MANA"); + this:RegisterEvent("UNIT_RAGE"); + this:RegisterEvent("UNIT_ENERGY"); + this:RegisterEvent("UNIT_DISPLAYPOWER"); + this:RegisterEvent("SPELLS_CHANGED"); + this:RegisterEvent("SPELLCAST_START"); + this:RegisterEvent("SPELLCAST_STOP"); + this:RegisterEvent("SPELLCAST_INTERRUPTED"); + this:RegisterEvent("SPELLCAST_FAILED"); + this:RegisterEvent("UNIT_AURA"); + this:RegisterEvent("UPDATE_INVENTORY_ALERTS"); + this:RegisterEvent("UNIT_INVENTORY_CHANGED"); + this:RegisterEvent("CHAT_MSG_ADDON"); + this:RegisterEvent("CHAT_MSG_SYSTEM"); + this:RegisterEvent("PLAYER_ENTERING_WORLD"); + HealBot_SpellsInitFlag = 2; end -- HealBot_OnEvent_UnitHealth: Internal utility: HealBot_OnEvent_UnitHealth diff --git a/HealBot_Controller_Spells.lua b/HealBot_Controller_Spells.lua index 6cfa3f6..8ee7525 100644 --- a/HealBot_Controller_Spells.lua +++ b/HealBot_Controller_Spells.lua @@ -491,6 +491,7 @@ function HealBot_FindHealSpells() if HealBot_SpellsInitFlag > 0 then NeedEquipUpdate = 1; return; end HealBot_Heals = { player = {}, pet = {}, party = {} }; + RealHealing = 0; table.foreach(HealBot_CurrentSpells, function (index, spell) if (HealBot_Spells[spell]) then @@ -534,12 +535,8 @@ function HealBot_FindHealSpells() end end end - table.foreach(HealBot_Heals, function (key, val) - if (table.getn(val) == 0) then - HealBot_Heals[key] = nil; - end - end); HealBot_Heals.target = HealBot_Heals.party; + HealBot_Heals.focus = HealBot_Heals.party; for i = 1, 4 do HealBot_Heals["party" .. i] = HealBot_Heals.party; HealBot_Heals["partypet" .. i] = HealBot_Heals.party; @@ -551,7 +548,7 @@ function HealBot_FindHealSpells() HealBot_ReleaseTable(items); if HealBot_CalcEquipBonus then - HealBot_AddDebug("...Done Equip Bonus:" .. RealHealing); + HealBot_AddDebug("...Done Equip Bonus:" .. tostring(RealHealing or 0)); end HealBot_CalcEquipBonus = false; end @@ -590,6 +587,11 @@ function HealBot_GetHealSpell(unit, pattern) return pattern; end + -- Handle Special Targeting Pattern + if string.lower(pattern) == "target" then + return pattern; + end + -- Handle Spells if HealBot_Spells[pattern] or HealBot_GetSpellId(pattern) then local spell = HealBot_GetSpellName(HealBot_GetSpellId(pattern)) or pattern diff --git a/HealBot_Data.lua b/HealBot_Data.lua index 0184c6a..1964626 100644 --- a/HealBot_Data.lua +++ b/HealBot_Data.lua @@ -66,12 +66,22 @@ HealBot_ConfigDefaults = { [HEALBOT_PALADIN] = 1, [HEALBOT_PRIEST] = 1, [HEALBOT_SHAMAN] = 1, + [HEALBOT_MAGE] = 1, + [HEALBOT_WARRIOR] = 1, + [HEALBOT_ROGUE] = 1, + [HEALBOT_HUNTER] = 1, + [HEALBOT_WARLOCK] = 1, }, Debuff_Right = { [HEALBOT_DRUID] = 1, [HEALBOT_PALADIN] = 1, [HEALBOT_PRIEST] = 1, [HEALBOT_SHAMAN] = 1, + [HEALBOT_MAGE] = 1, + [HEALBOT_WARRIOR] = 1, + [HEALBOT_ROGUE] = 1, + [HEALBOT_HUNTER] = 1, + [HEALBOT_WARLOCK] = 1, }, BuffWatch = 1, BuffWatchInCombat = 0, @@ -187,13 +197,28 @@ HealBot_ConfigDefaults = { ["ShiftCtrlRight"] = HEALBOT_HEALING_WAVE .. HEALBOT_RANK_4, ["Middle"] = HEALBOT_CHAIN_HEAL, }, + [HEALBOT_WARRIOR] = { + ["Left"] = "Target", + }, + [HEALBOT_MAGE] = { + ["Left"] = "Target", + }, + [HEALBOT_ROGUE] = { + ["Left"] = "Target", + }, + [HEALBOT_HUNTER] = { + ["Left"] = "Target", + }, + [HEALBOT_WARLOCK] = { + ["Left"] = "Target", + }, }, EnableHealthy = 0, ShowNonManaBars = 0, ActionVisible = 0, ActionMouseover = 1, - CDCLeftText = {[HEALBOT_PRIEST]="None", [HEALBOT_SHAMAN]="None", [HEALBOT_DRUID]="None", [HEALBOT_PALADIN]="None",}, - CDCRightText = {[HEALBOT_PRIEST]="None", [HEALBOT_SHAMAN]="None", [HEALBOT_DRUID]="None", [HEALBOT_PALADIN]="None",}, + CDCLeftText = {[HEALBOT_PRIEST]="None", [HEALBOT_SHAMAN]="None", [HEALBOT_DRUID]="None", [HEALBOT_PALADIN]="None", [HEALBOT_MAGE]="None", [HEALBOT_WARRIOR]="None", [HEALBOT_ROGUE]="None", [HEALBOT_HUNTER]="None", [HEALBOT_WARLOCK]="None",}, + CDCRightText = {[HEALBOT_PRIEST]="None", [HEALBOT_SHAMAN]="None", [HEALBOT_DRUID]="None", [HEALBOT_PALADIN]="None", [HEALBOT_MAGE]="None", [HEALBOT_WARRIOR]="None", [HEALBOT_ROGUE]="None", [HEALBOT_HUNTER]="None", [HEALBOT_WARLOCK]="None",}, Current_Skin = "Modern Flat", Skin_ID = 1, Skins = {"Modern Flat", HEALBOT_SKINS_STD, "HealBot Party", "HealBot Raid", "Alteric Valley"}, @@ -512,48 +537,109 @@ HealBot_Debuff_Spells = { HEALBOT_CURE_POISON, HEALBOT_CURE_DISEASE, }, -} - -HealBot_Buff_Spells = { - [HEALBOT_PALADIN] = { - HEALBOT_BLESSING_OF_KINGS, - HEALBOT_BLESSING_OF_MIGHT, - HEALBOT_BLESSING_OF_WISDOM, - HEALBOT_BLESSING_OF_SALVATION, - HEALBOT_BLESSING_OF_LIGHT, - HEALBOT_BLESSING_OF_SANCTUARY, - }, - [HEALBOT_DRUID] = { - HEALBOT_MARK_OF_THE_WILD, - HEALBOT_GIFT_OF_THE_WILD, - HEALBOT_THORNS, - HEALBOT_OMEN_OF_CLARITY, - }, - [HEALBOT_PRIEST] = { - HEALBOT_POWER_WORD_FORTITUDE, - HEALBOT_PRAYER_OF_FORTITUDE, - HEALBOT_DIVINE_SPIRIT, - HEALBOT_PRAYER_OF_SPIRIT, - HEALBOT_SHADOW_PROTECTION, - HEALBOT_PRAYER_OF_SHADOW_PROTECTION, - HEALBOT_INNER_FIRE, - HEALBOT_FEAR_WARD, - HEALBOT_ENLIGHTEN, - }, [HEALBOT_MAGE] = { - HEALBOT_ARCANE_INTELLECT, - HEALBOT_ARCANE_BRILLIANCE, - HEALBOT_DAMPEN_MAGIC, - HEALBOT_AMPLIFY_MAGIC, - }, - [HEALBOT_SHAMAN] = { - HEALBOT_ROCKBITER_WEAPON, - HEALBOT_FLAMETONGUE_WEAPON, - HEALBOT_FROSTBRAND_WEAPON, - HEALBOT_WINDFURY_WEAPON, + HEALBOT_REMOVE_LESSER_CURSE, }, } +HealBot_Buff_Spells = { + [HEALBOT_PALADIN] = { + HEALBOT_BLESSING_OF_KINGS, + HEALBOT_BLESSING_OF_MIGHT, + HEALBOT_BLESSING_OF_WISDOM, + HEALBOT_BLESSING_OF_SALVATION, + HEALBOT_BLESSING_OF_LIGHT, + HEALBOT_BLESSING_OF_SANCTUARY, + HEALBOT_GREATER_BLESSING_OF_KINGS, + HEALBOT_GREATER_BLESSING_OF_MIGHT, + HEALBOT_GREATER_BLESSING_OF_WISDOM, + HEALBOT_GREATER_BLESSING_OF_SALVATION, + HEALBOT_GREATER_BLESSING_OF_LIGHT, + HEALBOT_GREATER_BLESSING_OF_SANCTUARY, + HEALBOT_RIGHTEOUS_FURY, + }, + [HEALBOT_DRUID] = { + HEALBOT_MARK_OF_THE_WILD, + HEALBOT_GIFT_OF_THE_WILD, + HEALBOT_THORNS, + HEALBOT_OMEN_OF_CLARITY, + }, + [HEALBOT_PRIEST] = { + HEALBOT_POWER_WORD_FORTITUDE, + HEALBOT_PRAYER_OF_FORTITUDE, + HEALBOT_DIVINE_SPIRIT, + HEALBOT_PRAYER_OF_SPIRIT, + HEALBOT_SHADOW_PROTECTION, + HEALBOT_PRAYER_OF_SHADOW_PROTECTION, + HEALBOT_INNER_FIRE, + HEALBOT_FEAR_WARD, + HEALBOT_SHADOWFORM, + HEALBOT_ENLIGHTEN, + }, + [HEALBOT_MAGE] = { + HEALBOT_ARCANE_INTELLECT, + HEALBOT_ARCANE_BRILLIANCE, + HEALBOT_DAMPEN_MAGIC, + HEALBOT_AMPLIFY_MAGIC, + HEALBOT_FROST_ARMOR, + HEALBOT_ICE_ARMOR, + HEALBOT_MAGE_ARMOR, + HEALBOT_ICE_BARRIER, + }, + [HEALBOT_SHAMAN] = { + HEALBOT_ROCKBITER_WEAPON, + HEALBOT_FLAMETONGUE_WEAPON, + HEALBOT_FROSTBRAND_WEAPON, + HEALBOT_WINDFURY_WEAPON, + HEALBOT_LIGHTNING_SHIELD, + HEALBOT_WATER_SHIELD, + HEALBOT_WATER_WALKING, + HEALBOT_WATER_BREATHING, + }, + [HEALBOT_WARRIOR] = { + HEALBOT_BATTLE_SHOUT, + }, + [HEALBOT_WARLOCK] = { + HEALBOT_DEMON_SKIN, + HEALBOT_DEMON_ARMOR, + HEALBOT_UNENDING_BREATH, + HEALBOT_DETECT_LESSER_INVISIBILITY, + HEALBOT_DETECT_INVISIBILITY, + }, + [HEALBOT_HUNTER] = { + HEALBOT_TRUESHOT_AURA, + HEALBOT_ASPECT_OF_THE_HAWK, + HEALBOT_ASPECT_OF_THE_MONKEY, + HEALBOT_ASPECT_OF_THE_CHEETAH, + HEALBOT_ASPECT_OF_THE_PACK, + HEALBOT_ASPECT_OF_THE_WILD, + HEALBOT_ASPECT_OF_THE_BEAST, + }, + [HEALBOT_ROGUE] = {}, +} + +HealBot_SelfOnly_Buffs = { + [HEALBOT_DEMON_SKIN] = true, + [HEALBOT_DEMON_ARMOR] = true, + [HEALBOT_ASPECT_OF_THE_HAWK] = true, + [HEALBOT_ASPECT_OF_THE_MONKEY] = true, + [HEALBOT_ASPECT_OF_THE_CHEETAH] = true, + [HEALBOT_ASPECT_OF_THE_BEAST] = true, + [HEALBOT_FROST_ARMOR] = true, + [HEALBOT_ICE_ARMOR] = true, + [HEALBOT_MAGE_ARMOR] = true, + [HEALBOT_ICE_BARRIER] = true, + [HEALBOT_RIGHTEOUS_FURY] = true, + [HEALBOT_INNER_FIRE] = true, + [HEALBOT_SHADOWFORM] = true, + [HEALBOT_LIGHTNING_SHIELD] = true, + [HEALBOT_WATER_SHIELD] = true, + [HEALBOT_ROCKBITER_WEAPON] = true, + [HEALBOT_FLAMETONGUE_WEAPON] = true, + [HEALBOT_FROSTBRAND_WEAPON] = true, + [HEALBOT_WINDFURY_WEAPON] = true, +} + HealBot_Debuff_Types = { [HEALBOT_PURIFY] = {HEALBOT_DISEASE_en, HEALBOT_POISON_en}, [HEALBOT_CLEANSE] = {HEALBOT_DISEASE_en, HEALBOT_POISON_en, HEALBOT_MAGIC_en}, @@ -564,6 +650,7 @@ HealBot_Debuff_Types = { [HEALBOT_ABOLISH_DISEASE] = {HEALBOT_DISEASE_en}, [HEALBOT_DISPEL_MAGIC..HEALBOT_RANK_1] = {HEALBOT_MAGIC_en}, [HEALBOT_DISPEL_MAGIC..HEALBOT_RANK_2] = {HEALBOT_MAGIC_en}, + [HEALBOT_REMOVE_LESSER_CURSE] = {HEALBOT_CURSE_en}, } HealBot_IsFighting = false; diff --git a/HealBot_Localization.de.lua b/HealBot_Localization.de.lua index e708384..0de6089 100644 --- a/HealBot_Localization.de.lua +++ b/HealBot_Localization.de.lua @@ -81,7 +81,60 @@ HEALBOT_CHAIN_HEAL = "Kettenheilung"; HEALBOT_POWER_WORD_FORTITUDE = "Machtwort: Seelenst\195\164rke"; HEALBOT_MARK_OF_THE_WILD = "Mal der Wildnis"; -HEALBOT_BLESSING_OF_SALVATION = "Segen der Rettung"; +HEALBOT_BLESSING_OF_SALVATION = "Segen der Rettung"; + +HEALBOT_BATTLE_SHOUT = "Schlachtruf"; +HEALBOT_BLOODRAGE = "Blutrausch"; +HEALBOT_BERSERKER_RAGE = "Berserkerwut"; + +HEALBOT_DEMON_SKIN = "D\195\164monenhaut"; +HEALBOT_DEMON_ARMOR = "D\195\164monenr\195\188stung"; +HEALBOT_UNENDING_BREATH = "Unendlicher Atem"; +HEALBOT_DETECT_LESSER_INVISIBILITY = "Geringe Unsichtbarkeit entdecken"; +HEALBOT_DETECT_INVISIBILITY = "Unsichtbarkeit entdecken"; +HEALBOT_SHADOW_WARD = "Schattenzauberschutz"; +HEALBOT_SOULSTONE_RESURRECTION = "Seelenstein-Auferstehung"; +HEALBOT_FIRE_SHIELD = "Feuerschild"; + +HEALBOT_TRUESHOT_AURA = "Aura des Volltreffers"; +HEALBOT_ASPECT_OF_THE_HAWK = "Aspekt des Falken"; +HEALBOT_ASPECT_OF_THE_MONKEY = "Aspekt des Affen"; +HEALBOT_ASPECT_OF_THE_CHEETAH = "Aspekt des Geparden"; +HEALBOT_ASPECT_OF_THE_PACK = "Aspekt des Rudels"; +HEALBOT_ASPECT_OF_THE_WILD = "Aspekt der Wildnis"; +HEALBOT_ASPECT_OF_THE_BEAST = "Aspekt des Wildtiers"; + +HEALBOT_STEALTH = "Verstohlenheit"; +HEALBOT_BLADE_FLURRY = "Klingenwirbel"; +HEALBOT_EVASION = "Entrinnen"; +HEALBOT_SPRINT = "Sprinten"; +HEALBOT_SLICE_AND_DICE = "Zerh\195\164ckseln"; + +HEALBOT_FROST_ARMOR = "Frostr\195\188stung"; +HEALBOT_ICE_ARMOR = "Eisr\195\188stung"; +HEALBOT_MAGE_ARMOR = "Magische R\195\188stung"; +HEALBOT_MANA_SHIELD = "Manaschild"; +HEALBOT_ICE_BARRIER = "Eisbarriere"; +HEALBOT_FIRE_WARD = "Feuerzauberschutz"; +HEALBOT_FROST_WARD = "Frostzauberschutz"; + +HEALBOT_GREATER_BLESSING_OF_SALVATION = "Gro\195\159er Segen der Rettung"; +HEALBOT_GREATER_BLESSING_OF_MIGHT = "Gro\195\159er Segen der Macht"; +HEALBOT_GREATER_BLESSING_OF_WISDOM = "Gro\195\159er Segen der Weisheit"; +HEALBOT_GREATER_BLESSING_OF_KINGS = "Gro\195\159er Segen der K\195\182nige"; +HEALBOT_GREATER_BLESSING_OF_LIGHT = "Gro\195\159er Segen des Lichts"; +HEALBOT_GREATER_BLESSING_OF_SANCTUARY = "Gro\195\159er Segen des Unterschlupfs"; +HEALBOT_RIGHTEOUS_FURY = "Zorn der Gerechtigkeit"; + +HEALBOT_SHADOWFORM = "Schattengestalt"; + +HEALBOT_BARKSKIN = "Baumrinde"; +HEALBOT_NATURES_GRASP = "Griff der Natur"; + +HEALBOT_LIGHTNING_SHIELD = "Blitzschlagschild"; +HEALBOT_WATER_SHIELD = "Wasserschild"; +HEALBOT_WATER_WALKING = "Wasserwandeln"; +HEALBOT_WATER_BREATHING = "Wasseratmung"; HEALBOT_RESURRECTION = "Auferstehung"; HEALBOT_REDEMPTION = "Erl\195\182sung"; @@ -95,7 +148,8 @@ HEALBOT_CLEANSE = "Reinigung des Glaubens"; HEALBOT_DISPEL_MAGIC = "Magiebannung"; HEALBOT_CURE_POISON = "Vergiftung heilen"; HEALBOT_ABOLISH_POISON = "Vergiftung aufheben"; -HEALBOT_REMOVE_CURSE = "Fluch aufheben"; +HEALBOT_REMOVE_CURSE = "Fluch aufheben"; +HEALBOT_REMOVE_LESSER_CURSE= "Geringeren Fluch aufheben"; HEALBOT_DISEASE = "Krankheit"; HEALBOT_MAGIC = "Magie"; HEALBOT_CURSE = "Fluch"; diff --git a/HealBot_Localization.en.lua b/HealBot_Localization.en.lua index ae6b7cf..4a381b1 100644 --- a/HealBot_Localization.en.lua +++ b/HealBot_Localization.en.lua @@ -93,7 +93,60 @@ HEALBOT_THORNS = "Thorns"; HEALBOT_OMEN_OF_CLARITY = "Omen of Clarity"; HEALBOT_INNER_FIRE = "Inner Fire"; HEALBOT_FEAR_WARD = "Fear Ward"; -HEALBOT_ENLIGHTEN = "Enlighten"; +HEALBOT_ENLIGHTEN = "Enlighten"; + +HEALBOT_BATTLE_SHOUT = "Battle Shout"; +HEALBOT_BLOODRAGE = "Bloodrage"; +HEALBOT_BERSERKER_RAGE = "Berserker Rage"; + +HEALBOT_DEMON_SKIN = "Demon Skin"; +HEALBOT_DEMON_ARMOR = "Demon Armor"; +HEALBOT_UNENDING_BREATH = "Unending Breath"; +HEALBOT_DETECT_LESSER_INVISIBILITY = "Detect Lesser Invisibility"; +HEALBOT_DETECT_INVISIBILITY = "Detect Invisibility"; +HEALBOT_SHADOW_WARD = "Shadow Ward"; +HEALBOT_SOULSTONE_RESURRECTION = "Soulstone Resurrection"; +HEALBOT_FIRE_SHIELD = "Fire Shield"; + +HEALBOT_TRUESHOT_AURA = "Trueshot Aura"; +HEALBOT_ASPECT_OF_THE_HAWK = "Aspect of the Hawk"; +HEALBOT_ASPECT_OF_THE_MONKEY = "Aspect of the Monkey"; +HEALBOT_ASPECT_OF_THE_CHEETAH = "Aspect of the Cheetah"; +HEALBOT_ASPECT_OF_THE_PACK = "Aspect of the Pack"; +HEALBOT_ASPECT_OF_THE_WILD = "Aspect of the Wild"; +HEALBOT_ASPECT_OF_THE_BEAST = "Aspect of the Beast"; + +HEALBOT_STEALTH = "Stealth"; +HEALBOT_BLADE_FLURRY = "Blade Flurry"; +HEALBOT_EVASION = "Evasion"; +HEALBOT_SPRINT = "Sprint"; +HEALBOT_SLICE_AND_DICE = "Slice and Dice"; + +HEALBOT_FROST_ARMOR = "Frost Armor"; +HEALBOT_ICE_ARMOR = "Ice Armor"; +HEALBOT_MAGE_ARMOR = "Mage Armor"; +HEALBOT_MANA_SHIELD = "Mana Shield"; +HEALBOT_ICE_BARRIER = "Ice Barrier"; +HEALBOT_FIRE_WARD = "Fire Ward"; +HEALBOT_FROST_WARD = "Frost Ward"; + +HEALBOT_GREATER_BLESSING_OF_SALVATION = "Greater Blessing of Salvation"; +HEALBOT_GREATER_BLESSING_OF_MIGHT = "Greater Blessing of Might"; +HEALBOT_GREATER_BLESSING_OF_WISDOM = "Greater Blessing of Wisdom"; +HEALBOT_GREATER_BLESSING_OF_KINGS = "Greater Blessing of Kings"; +HEALBOT_GREATER_BLESSING_OF_LIGHT = "Greater Blessing of Light"; +HEALBOT_GREATER_BLESSING_OF_SANCTUARY = "Greater Blessing of Sanctuary"; +HEALBOT_RIGHTEOUS_FURY = "Righteous Fury"; + +HEALBOT_SHADOWFORM = "Shadowform"; + +HEALBOT_BARKSKIN = "Barkskin"; +HEALBOT_NATURES_GRASP = "Nature's Grasp"; + +HEALBOT_LIGHTNING_SHIELD = "Lightning Shield"; +HEALBOT_WATER_SHIELD = "Water Shield"; +HEALBOT_WATER_WALKING = "Water Walking"; +HEALBOT_WATER_BREATHING = "Water Breathing"; HEALBOT_RESURRECTION = "Resurrection"; HEALBOT_REDEMPTION = "Redemption"; @@ -103,7 +156,8 @@ HEALBOT_ANCESTRALSPIRIT = "Ancestral Spirit"; HEALBOT_PURIFY = "Purify"; HEALBOT_CLEANSE = "Cleanse"; HEALBOT_CURE_POISON = "Cure Poison"; -HEALBOT_REMOVE_CURSE = "Remove Curse"; +HEALBOT_REMOVE_CURSE = "Remove Curse"; +HEALBOT_REMOVE_LESSER_CURSE= "Remove Lesser Curse"; HEALBOT_ABOLISH_POISON = "Abolish Poison"; HEALBOT_CURE_DISEASE = "Cure Disease"; HEALBOT_ABOLISH_DISEASE = "Abolish Disease"; diff --git a/HealBot_Localization.fr.lua b/HealBot_Localization.fr.lua index b9e2a9a..cdae9e0 100644 --- a/HealBot_Localization.fr.lua +++ b/HealBot_Localization.fr.lua @@ -81,7 +81,60 @@ HEALBOT_CHAIN_HEAL = "Salve de gu\195\169rison"; HEALBOT_POWER_WORD_FORTITUDE = "Mot de pouvoir : Robustesse"; HEALBOT_MARK_OF_THE_WILD = "Marque du fauve"; -HEALBOT_BLESSING_OF_SALVATION = "B\195\169n\195\169diction de salut"; +HEALBOT_BLESSING_OF_SALVATION = "B\195\169n\195\169diction de salut"; + +HEALBOT_BATTLE_SHOUT = "Cri de guerre"; +HEALBOT_BLOODRAGE = "Rage sanguinaire"; +HEALBOT_BERSERKER_RAGE = "Rage berserker"; + +HEALBOT_DEMON_SKIN = "Peau de d\195\169mon"; +HEALBOT_DEMON_ARMOR = "Armure d\195\169moniaque"; +HEALBOT_UNENDING_BREATH = "Respiration interminable"; +HEALBOT_DETECT_LESSER_INVISIBILITY = "D\195\169tection de l'invisibilit\195\169 inf\195\169rieure"; +HEALBOT_DETECT_INVISIBILITY = "D\195\169tection de l'invisibilit\195\169"; +HEALBOT_SHADOW_WARD = "Gardien de l'ombre"; +HEALBOT_SOULSTONE_RESURRECTION = "R\195\169surrection de pierre d'\195\162me"; +HEALBOT_FIRE_SHIELD = "Bouclier de feu"; + +HEALBOT_TRUESHOT_AURA = "Aura de pr\195\169cision"; +HEALBOT_ASPECT_OF_THE_HAWK = "Aspect du faucon"; +HEALBOT_ASPECT_OF_THE_MONKEY = "Aspect du singe"; +HEALBOT_ASPECT_OF_THE_CHEETAH = "Aspect du gu\195\169pard"; +HEALBOT_ASPECT_OF_THE_PACK = "Aspect de la meute"; +HEALBOT_ASPECT_OF_THE_WILD = "Aspect de la nature"; +HEALBOT_ASPECT_OF_THE_BEAST = "Aspect de la b\195\170te"; + +HEALBOT_STEALTH = "Camouflage"; +HEALBOT_BLADE_FLURRY = "D\195\169luge de lames"; +HEALBOT_EVASION = "Evasion"; +HEALBOT_SPRINT = "Sprint"; +HEALBOT_SLICE_AND_DICE = "D\195\169biter"; + +HEALBOT_FROST_ARMOR = "Armure de givre"; +HEALBOT_ICE_ARMOR = "Armure de glace"; +HEALBOT_MAGE_ARMOR = "Armure du mage"; +HEALBOT_MANA_SHIELD = "Bouclier de mana"; +HEALBOT_ICE_BARRIER = "Barri\195\168re de glace"; +HEALBOT_FIRE_WARD = "Gardien de feu"; +HEALBOT_FROST_WARD = "Gardien de givre"; + +HEALBOT_GREATER_BLESSING_OF_SALVATION = "B\195\169n\195\169diction de salut sup\195\169rieure"; +HEALBOT_GREATER_BLESSING_OF_MIGHT = "B\195\169n\195\169diction de puissance sup\195\169rieure"; +HEALBOT_GREATER_BLESSING_OF_WISDOM = "B\195\169n\195\169diction de sagesse sup\195\169rieure"; +HEALBOT_GREATER_BLESSING_OF_KINGS = "B\195\169n\195\169diction des rois sup\195\169rieure"; +HEALBOT_GREATER_BLESSING_OF_LIGHT = "B\195\169n\195\169diction de lumi\195\168re sup\195\169rieure"; +HEALBOT_GREATER_BLESSING_OF_SANCTUARY = "B\195\169n\195\169diction du sanctuaire sup\195\169rieure"; +HEALBOT_RIGHTEOUS_FURY = "Fureur vertueuse"; + +HEALBOT_SHADOWFORM = "Forme d'Ombre"; + +HEALBOT_BARKSKIN = "Peau d'\195\169corce"; +HEALBOT_NATURES_GRASP = "Emprise de la nature"; + +HEALBOT_LIGHTNING_SHIELD = "Bouclier de foudre"; +HEALBOT_WATER_SHIELD = "Bouclier d'eau"; +HEALBOT_WATER_WALKING = "Marche sur l'eau"; +HEALBOT_WATER_BREATHING = "Respiration aquatique"; HEALBOT_RESURRECTION = "R\195\169surrection"; HEALBOT_REDEMPTION = "R\195\169demption"; @@ -91,7 +144,8 @@ HEALBOT_ANCESTRALSPIRIT = "Esprit Ancestral"; HEALBOT_PURIFY = "Purification"; HEALBOT_CLEANSE = "Epuration"; HEALBOT_CURE_POISON = "Gu\195\169rison du poison"; -HEALBOT_REMOVE_CURSE = "D\195\169livrance de la mal\195\169diction"; +HEALBOT_REMOVE_CURSE = "D\195\169livrance de la mal\195\169diction"; +HEALBOT_REMOVE_LESSER_CURSE= "D\195\169livrance de la mal\195\169diction mineure"; HEALBOT_ABOLISH_POISON = "Abolir le poison"; HEALBOT_CURE_DISEASE = "Gu\195\169rison des maladies"; HEALBOT_ABOLISH_DISEASE = "Abolir maladie"; diff --git a/HealBot_Localization.kr.lua b/HealBot_Localization.kr.lua index 0eda4b1..c14d184 100644 --- a/HealBot_Localization.kr.lua +++ b/HealBot_Localization.kr.lua @@ -66,7 +66,59 @@ HEALBOT_INNER_FIRE = "내면의 열정"; HEALBOT_FEAR_WARD = "공포의 결계"; HEALBOT_ENLIGHTEN = "Enlighten"; HEALBOT_MARK_OF_THE_WILD = "야생의 징표"; -HEALBOT_GREATER_BLESSING_OF_SALVATION = "상급 구원의 축복"; +HEALBOT_GREATER_BLESSING_OF_SALVATION = "상급 구원의 축복"; + +HEALBOT_BATTLE_SHOUT = "전투의 외침"; +HEALBOT_BLOODRAGE = "피의 분노"; +HEALBOT_BERSERKER_RAGE = "광전사의 격노"; + +HEALBOT_DEMON_SKIN = "악마의 피부"; +HEALBOT_DEMON_ARMOR = "악마의 갑옷"; +HEALBOT_UNENDING_BREATH = "영원의 숨결"; +HEALBOT_DETECT_LESSER_INVISIBILITY = "하급 투명체 감지"; +HEALBOT_DETECT_INVISIBILITY = "투명체 감지"; +HEALBOT_SHADOW_WARD = "암흑계 수호"; +HEALBOT_SOULSTONE_RESURRECTION = "영혼석 부활"; +HEALBOT_FIRE_SHIELD = "불의 방패"; + +HEALBOT_TRUESHOT_AURA = "정밀함의 오라"; +HEALBOT_ASPECT_OF_THE_HAWK = "매의 상"; +HEALBOT_ASPECT_OF_THE_MONKEY = "원숭이의 상"; +HEALBOT_ASPECT_OF_THE_CHEETAH = "치타의 상"; +HEALBOT_ASPECT_OF_THE_PACK = "치타 무리의 상"; +HEALBOT_ASPECT_OF_THE_WILD = "야생의 상"; +HEALBOT_ASPECT_OF_THE_BEAST = "야수의 상"; + +HEALBOT_STEALTH = "은신"; +HEALBOT_BLADE_FLURRY = "폭풍의 칼날"; +HEALBOT_EVASION = "회피"; +HEALBOT_SPRINT = "전력 질주"; +HEALBOT_SLICE_AND_DICE = "난도질"; + +HEALBOT_FROST_ARMOR = "서리 갑옷"; +HEALBOT_ICE_ARMOR = "얼음 갑옷"; +HEALBOT_MAGE_ARMOR = "마법사 갑옷"; +HEALBOT_MANA_SHIELD = "마나 보호막"; +HEALBOT_ICE_BARRIER = "얼음 보호막"; +HEALBOT_FIRE_WARD = "화염계 수호"; +HEALBOT_FROST_WARD = "냉기계 수호"; + +HEALBOT_GREATER_BLESSING_OF_MIGHT = "상급 힘의 축복"; +HEALBOT_GREATER_BLESSING_OF_WISDOM = "상급 지혜의 축복"; +HEALBOT_GREATER_BLESSING_OF_KINGS = "상급 왕의 축복"; +HEALBOT_GREATER_BLESSING_OF_LIGHT = "상급 빛의 축복"; +HEALBOT_GREATER_BLESSING_OF_SANCTUARY = "상급 성역의 축복"; +HEALBOT_RIGHTEOUS_FURY = "정의의 격노"; + +HEALBOT_SHADOWFORM = "어둠의 형상"; + +HEALBOT_BARKSKIN = "나무 껍질"; +HEALBOT_NATURES_GRASP = "자연의 파악"; + +HEALBOT_LIGHTNING_SHIELD = "번개 보호막"; +HEALBOT_WATER_SHIELD = "물의 보호막"; +HEALBOT_WATER_WALKING = "수면 보행"; +HEALBOT_WATER_BREATHING = "수중 호흡"; HEALBOT_RESURRECTION = "부활"; HEALBOT_REDEMPTION = "구원"; @@ -76,7 +128,8 @@ HEALBOT_GREATER_BLESSING_OF_SALVATION = "상급 구원의 축복"; HEALBOT_PURIFY = "정화"; HEALBOT_CLEANSE = "정화"; HEALBOT_CURE_POISON = "해독"; - HEALBOT_REMOVE_CURSE = "저주 해제"; + HEALBOT_REMOVE_CURSE = "저주 해제"; + HEALBOT_REMOVE_LESSER_CURSE = "하급 저주 해제"; HEALBOT_ABOLISH_POISON = "독 해제"; HEALBOT_CURE_DISEASE = "질병 치료"; HEALBOT_ABOLISH_DISEASE = "질병 해제"; diff --git a/HealBot_Options_Buffs.lua b/HealBot_Options_Buffs.lua index 53fb43d..7f25b90 100644 --- a/HealBot_Options_Buffs.lua +++ b/HealBot_Options_Buffs.lua @@ -111,6 +111,11 @@ function HealBot_Options_SetBuffs() local val = HealBot_Config.BuffDropDowns[myClass][i] or 0 UIDropDownMenu_Initialize(dropDown, HealBot_Options_Buff_Initialize) HealBot_UIDropDownMenu_SetSelectedID(dropDown, val + 1) + local text = "None" + if val > 0 and HealBot_Buff_Spells[myClass] and HealBot_Buff_Spells[myClass][val] then + text = HealBot_Buff_Spells[myClass][val] + end + UIDropDownMenu_SetText(text, dropDown) end local selfCheck = getglobal("HealBot_Options_Buff" .. i .. "Self") diff --git a/HealBot_Options_CDC.lua b/HealBot_Options_CDC.lua index 412a98e..6fb1e27 100644 --- a/HealBot_Options_CDC.lua +++ b/HealBot_Options_CDC.lua @@ -168,14 +168,13 @@ end -- HealBot_Options_CDCButLeft_DropDown: UI handler for DropDown options panel. function HealBot_Options_CDCButLeft_DropDown() - local classEN=HealBot_UnitClass("player") - if classEN=="PRIEST" or classEN=="DRUID" or classEN=="PALADIN" or classEN=="SHAMAN" then - local class=UnitClass("Player"); - local DebuffSpells_List = HealBot_Options_GetDebuffSpells_List(class) - local info = {}; - info.text = "None"; - info.func = HealBot_Options_CDCButLeft_OnSelect; - UIDropDownMenu_AddButton(info); + local info = {}; + info.text = "None"; + info.func = HealBot_Options_CDCButLeft_OnSelect; + UIDropDownMenu_AddButton(info); + local class = UnitClass("Player"); + local DebuffSpells_List = HealBot_Options_GetDebuffSpells_List(class); + if DebuffSpells_List then for i=1, getn(DebuffSpells_List), 1 do local spell=HealBot_GetSpellName(HealBot_GetSpellId(DebuffSpells_List[i])); if spell then @@ -189,14 +188,13 @@ function HealBot_Options_CDCButLeft_DropDown() end -- HealBot_Options_CDCButRight_DropDown: UI handler for DropDown options panel. function HealBot_Options_CDCButRight_DropDown() - local classEN=HealBot_UnitClass("player") - if classEN=="PRIEST" or classEN=="DRUID" or classEN=="PALADIN" or classEN=="SHAMAN" then - local class=UnitClass("Player"); - local DebuffSpells_List = HealBot_Options_GetDebuffSpells_List(class) - local info = {}; - info.text = "None"; - info.func = HealBot_Options_CDCButRight_OnSelect; - UIDropDownMenu_AddButton(info); + local info = {}; + info.text = "None"; + info.func = HealBot_Options_CDCButRight_OnSelect; + UIDropDownMenu_AddButton(info); + local class = UnitClass("Player"); + local DebuffSpells_List = HealBot_Options_GetDebuffSpells_List(class); + if DebuffSpells_List then for i=1, getn(DebuffSpells_List), 1 do local spell=HealBot_GetSpellName(HealBot_GetSpellId(DebuffSpells_List[i])); if spell then @@ -218,19 +216,49 @@ function HealBot_Options_CDCButRight_Initialize() end -- HealBot_Options_CDCButLeft_Refresh: UI handler for Refresh options panel. function HealBot_Options_CDCButLeft_Refresh(onselect) - local set_id=1; - local class=UnitClass("Player"); + local set_id = 1; + local class = UnitClass("Player"); + local DebuffSpells_List = HealBot_Options_GetDebuffSpells_List(class); if not onselect then HealBot_Options_CDCButLeft_Initialize() end - set_id = HealBot_Config.Debuff_Left[class]; - HealBot_UIDropDownMenu_SetSelectedID(HealBot_Options_CDCButLeft,set_id) + if DebuffSpells_List and getn(DebuffSpells_List) > 0 then + set_id = HealBot_Config.Debuff_Left[class] or 1; + getglobal("HealBot_Options_CDCButLeftButton"):Enable(); + getglobal("HealBot_Options_CDCButLeftText"):SetTextColor(1.0, 1.0, 1.0); + HealBot_UIDropDownMenu_SetSelectedID(HealBot_Options_CDCButLeft, set_id); + if set_id == 1 then + UIDropDownMenu_SetText("None", HealBot_Options_CDCButLeft); + end + else + set_id = 1; + HealBot_Config.Debuff_Left[class] = 1; + HealBot_Config.CDCLeftText[class] = "None"; + getglobal("HealBot_Options_CDCButLeftButton"):Disable(); + getglobal("HealBot_Options_CDCButLeftText"):SetTextColor(0.5, 0.5, 0.5); + UIDropDownMenu_SetText("None", HealBot_Options_CDCButLeft); + end end -- HealBot_Options_CDCButRight_Refresh: UI handler for Refresh options panel. function HealBot_Options_CDCButRight_Refresh(onselect) - local set_id; - local class=UnitClass("Player"); + local set_id = 1; + local class = UnitClass("Player"); + local DebuffSpells_List = HealBot_Options_GetDebuffSpells_List(class); if not onselect then HealBot_Options_CDCButRight_Initialize() end - set_id = HealBot_Config.Debuff_Right[class]; - HealBot_UIDropDownMenu_SetSelectedID(HealBot_Options_CDCButRight,set_id) + if DebuffSpells_List and getn(DebuffSpells_List) > 0 then + set_id = HealBot_Config.Debuff_Right[class] or 1; + getglobal("HealBot_Options_CDCButRightButton"):Enable(); + getglobal("HealBot_Options_CDCButRightText"):SetTextColor(1.0, 1.0, 1.0); + HealBot_UIDropDownMenu_SetSelectedID(HealBot_Options_CDCButRight, set_id); + if set_id == 1 then + UIDropDownMenu_SetText("None", HealBot_Options_CDCButRight); + end + else + set_id = 1; + HealBot_Config.Debuff_Right[class] = 1; + HealBot_Config.CDCRightText[class] = "None"; + getglobal("HealBot_Options_CDCButRightButton"):Disable(); + getglobal("HealBot_Options_CDCButRightText"):SetTextColor(0.5, 0.5, 0.5); + UIDropDownMenu_SetText("None", HealBot_Options_CDCButRight); + end end -- HealBot_Options_CDCButLeft_OnLoad: UI handler for OnLoad options panel. function HealBot_Options_CDCButLeft_OnLoad() @@ -275,7 +303,7 @@ end -- HealBot_Options_Debuff_Reset: Restores default debuff tracking options. function HealBot_Options_Debuff_Reset() local classEN=HealBot_UnitClass("player") - if classEN=="PRIEST" or classEN=="DRUID" or classEN=="PALADIN" or classEN=="SHAMAN" then + if classEN=="PRIEST" or classEN=="DRUID" or classEN=="PALADIN" or classEN=="SHAMAN" or classEN=="MAGE" then HealBot_DebuffWatch = {[HEALBOT_DISEASE_en]=false, [HEALBOT_MAGIC_en]=false, [HEALBOT_POISON_en]=false, [HEALBOT_CURSE_en]=false } -- Automatically track all curable debuffs out of the box @@ -292,6 +320,8 @@ function HealBot_Options_Debuff_Reset() elseif classEN == "SHAMAN" then HealBot_DebuffWatch[HEALBOT_POISON_en] = true HealBot_DebuffWatch[HEALBOT_DISEASE_en] = true + elseif classEN == "MAGE" then + HealBot_DebuffWatch[HEALBOT_CURSE_en] = true end local spell = HealBot_Config.CDCLeftText[UnitClass("player")]; diff --git a/HealBot_Options_Spells.lua b/HealBot_Options_Spells.lua index c8f962c..6dd7d8a 100644 --- a/HealBot_Options_Spells.lua +++ b/HealBot_Options_Spells.lua @@ -116,6 +116,11 @@ function HealBot_Options_ComboClass_Text() HealBot_Options_Shift:SetText(combo["Shift"..button] or "") HealBot_Options_Ctrl:SetText(combo["Ctrl"..button] or "") HealBot_Options_ShiftCtrl:SetText(combo["ShiftCtrl"..button] or "") + else + HealBot_Options_Click:SetText("") + HealBot_Options_Shift:SetText("") + HealBot_Options_Ctrl:SetText("") + HealBot_Options_ShiftCtrl:SetText("") end end diff --git a/README.md b/README.md index 1bf21d3..1beaca0 100644 --- a/README.md +++ b/README.md @@ -50,10 +50,13 @@ Default installation path: `C:\Program Files\World of Warcraft\Interface\AddOns\ ### Change Log -**v1.7.7** -* **Feature - HoT Timer Position & Icon Overlay Display Modes** - Added configurable HoT Timer list position dropdown (`Below`, `Above`, `Left`, `Right`) relative to raid frames. Added alternative `Icon Overlay` display mode rendering countdown numbers directly on unit bar HoT icons. Excluded pets from timer lists and overlay numbers. Optimized expiration lookup with O(1) cached texture-to-spell mappings. -* **Bug Fix & Feature - HoT Timer Resolution & "Both" Display Mode** - Resolved issue where HoT timer lists displayed raw GUID strings instead of player names by adding eager roster GUID synchronization on group updates and direct raid/party fallback scanning. Added "Both" display mode option (`List`, `Icon Overlay`, `Both`) allowing simultaneous list timers and on-bar icon countdown overlays. Added case-insensitive texture fallback mapping to ensure overlay numbers render consistently across all tracked auras. -* **Refactor & Feature - Unified Aura & HoT Tracking** - Unified bar icons and HoT timers into a single master dictionary (`HealBot_TrackedAuras`) in `HealBot_Data.lua`. Added Weakened Soul, Fear Ward, Abolish Disease, and Abolish Poison to active timer bars with localized client support and debuff-aware pruning. +**v1.7.6** +* **Feature - All-Class Support & Raid Frame Replacement:** Removed legacy restriction that disabled HealBot event listeners and UI frames for classes without native healing spells. HealBot now initializes and functions as a full party/raid frame replacement for all classes (Warrior, Mage, Rogue, Hunter, Warlock). +* **Targeting & Binding Defaults:** Added default `Left` click `"Target"` binding for non-healer classes, recognized `"target"` in spell resolution, and prevented non-healer buttons from disabling on full-health allies. +* **Mage Decurse Support:** Integrated `Remove Lesser Curse` into Mage debuff tables and Cure/Dispel (CDC) options. +* **Bug Fix - Spellbook Scan Lua Error:** Initialized `RealHealing` in spell scanner, resolving `attempt to concatenate global 'RealHealing' (a nil value)` when opening the spellbook on non-healer classes. +* **UI Fix - Cure Dropdown Stale Text:** Unconditionally added "None" entry and disabled curing button dropdowns for classes without decurse/cleanse abilities, fixing stale dropdown text ("Melee") displaying on Warrior and other non-dispelling classes. +* **Feature - Class Buff Tracking:** Added buff tracking lists, bidirectional group/rank equivalents (Greater Blessings, armors, etc.), and self-only auto-filtering for all classes. Added Water Shield for Shaman and refreshed buff dropdown labels to eliminate stale UI cache text. **v1.7.5** * **Feature - Test Bars** - Implemented a "Test Bars" button and slider in the Skins options tab, allowing you to spawn and adjust a dummy raid group of up to 40 members without being in a real raid. This allows for easy layout and appearance customization out of combat.