diff --git a/HealBotBlue.toc b/HealBotBlue.toc index 2a890a3..16457b5 100644 --- a/HealBotBlue.toc +++ b/HealBotBlue.toc @@ -1,6 +1,6 @@ ## Interface: 11200 ## Title: HealBotBlue -## Version: 1.7.5 +## Version: 1.7.6 ## Author: Bluewhale ## Notes: Raidframe replacement for healing, decursing, resource tracking and buffing with optional support for SuperWow, ClassicAPI, UnitXP_SP3 and Nampower. ## SavedVariablesPerCharacter: HealBot_Config 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 6b398fe..0dbb219 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 5682a44..628c66a 100644 --- a/HealBot_Controller_Events.lua +++ b/HealBot_Controller_Events.lua @@ -346,8 +346,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 @@ -361,6 +359,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 @@ -390,39 +393,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 362c495..6575643 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"}, @@ -510,48 +535,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}, @@ -562,6 +648,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 cc64ac7..dabd37b 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 0147ab8..29da121 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 7c6f693..38707eb 100644 --- a/HealBot_Localization.fr.lua +++ b/HealBot_Localization.fr.lua @@ -80,7 +80,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"; @@ -90,7 +143,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 0b7e0ea..8bee136 100644 --- a/HealBot_Localization.kr.lua +++ b/HealBot_Localization.kr.lua @@ -65,7 +65,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 = "구원"; @@ -75,7 +127,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 148453d..e7ddc40 100644 --- a/README.md +++ b/README.md @@ -50,6 +50,14 @@ Default installation path: `C:\Program Files\World of Warcraft\Interface\AddOns\ ### Change Log +**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. * **UI - Skins Options & Custom Health Gradients** - Added configurable Max HP and Min HP colour pickers with descriptive labels for custom gradient support. Fixed colour picker button click interceptors and hooked ColorPickerFrame callbacks. Integrated global font selector across raid frame text, headers, Options button, and preview bars. Reorganized Skins tab layout to anchor Test Bars cleanly in Column 2.