mirror of
https://github.com/Bluewhale1337/HealBotBlue.git
synced 2026-11-09 19:47:37 +00:00
Merge branch 'dev' into main
Signed-off-by: Bluewhale1337 <295648290+Bluewhale1337@users.noreply.github.com>
This commit is contained in:
+22
-19
@@ -66,7 +66,7 @@ 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
|
||||
if UnitExists(unit) and not UnitIsDeadOrGhost(unit) and HealBot_Range_Check(unit, 40) == 1 then
|
||||
return true
|
||||
end
|
||||
return false
|
||||
@@ -82,12 +82,17 @@ function HealBot_CanHeal(unit)
|
||||
|
||||
local SHeal = HealBot_ShouldHeal(unit)
|
||||
if SHeal then
|
||||
local spell = HealBot_GetHealSpell(unit,HealBot_Action_SpellPattern("Left"))
|
||||
if not spell then spell = HealBot_GetHealSpell(unit,HealBot_Action_SpellPattern("Middle")) end
|
||||
if not spell then spell = HealBot_GetHealSpell(unit,HealBot_Action_SpellPattern("Right")) end
|
||||
if not spell then spell = HealBot_GetHealSpell(unit,HealBot_Action_SpellPattern("Button4")) end
|
||||
if not spell then spell = HealBot_GetHealSpell(unit,HealBot_Action_SpellPattern("Button5")) end
|
||||
local spell = HealBot_GetHealSpell(unit, HealBot_Action_SpellPattern("Left", true))
|
||||
if not spell then spell = HealBot_GetHealSpell(unit, HealBot_Action_SpellPattern("Middle", true)) end
|
||||
if not spell then spell = HealBot_GetHealSpell(unit, HealBot_Action_SpellPattern("Right", true)) end
|
||||
if not spell then spell = HealBot_GetHealSpell(unit, HealBot_Action_SpellPattern("Button4", true)) end
|
||||
if not spell then spell = HealBot_GetHealSpell(unit, HealBot_Action_SpellPattern("Button5", true)) end
|
||||
if not spell then
|
||||
-- Fallback: if player has no base click spells bound but has modifier combos, check pure 40yd range
|
||||
local combos = HealBot_Config.KeyCombo[UnitClass("player")]
|
||||
if combos and next(combos) and HealBot_Range_Check(unit, 40) == 1 then
|
||||
return true
|
||||
end
|
||||
return false
|
||||
else
|
||||
return true
|
||||
@@ -101,14 +106,16 @@ end
|
||||
-- Refresh and reset functions moved to HealBot_View_Layout.lua
|
||||
|
||||
-- HealBot_Action_SpellPattern: Resolves spell string based on click modifiers.
|
||||
function HealBot_Action_SpellPattern(button)
|
||||
function HealBot_Action_SpellPattern(button, ignoreModifiers)
|
||||
local combos = HealBot_Config.KeyCombo[UnitClass("player")]
|
||||
if not combos then return nil end
|
||||
local press = button;
|
||||
if IsAltKeyDown() then press = "Alt"..press end
|
||||
if IsControlKeyDown() then press = "Ctrl"..press end
|
||||
if IsShiftKeyDown() then press = "Shift"..press end
|
||||
return combos[press]
|
||||
local press = button or "Left";
|
||||
if not ignoreModifiers then
|
||||
if IsAltKeyDown() then press = "Alt"..press end
|
||||
if IsControlKeyDown() then press = "Ctrl"..press end
|
||||
if IsShiftKeyDown() then press = "Shift"..press end
|
||||
end
|
||||
return combos[press];
|
||||
end
|
||||
|
||||
-- HealBot_Decode_Button: Decodes click action to spell pattern.
|
||||
@@ -134,6 +141,8 @@ end
|
||||
-- HealBot_Action_HealUnit_OnLoad: Internal utility: HealBot_Action_HealUnit_OnLoad
|
||||
function HealBot_Action_HealUnit_OnLoad(this)
|
||||
this:RegisterForClicks("LeftButtonUp", "RightButtonUp", "MiddleButtonUp", "Button4Up", "Button5Up");
|
||||
this.debuffOverlay = getglobal(this:GetName() .. "DebuffOverlay");
|
||||
this.debuffGlow = getglobal(this:GetName() .. "DebuffOverlayGlow");
|
||||
end
|
||||
|
||||
-- HealBot_Action_HealUnit_OnEnter: Internal utility: HealBot_Action_HealUnit_OnEnter
|
||||
@@ -447,19 +456,13 @@ function HealBot_Action_OnDragStop(this)
|
||||
end
|
||||
|
||||
-- http://www.flexbarforums.com/viewtopic.php?t=66
|
||||
-- no idea what it was link is dead
|
||||
-- Legacy handler preserved for compatibility
|
||||
function HealBot_Action_OnKey(this,key,state)
|
||||
local command = GetBindingAction(key);
|
||||
if command then
|
||||
DEFAULT_CHAT_FRAME:AddMessage(key.." "..state.." "..(command or "nil"));
|
||||
keystate = state
|
||||
RunBinding(command,keystate)
|
||||
end
|
||||
DEFAULT_CHAT_FRAME:AddMessage("HealBot_Action_OnKey - "..key);
|
||||
if key=="SHIFT" or key=="CTRL" or key=="ALT" then
|
||||
DEFAULT_CHAT_FRAME:AddMessage((IsShiftKeyDown() or 0).." "..(IsControlKeyDown() or 0).." "..(IsAltKeyDown() or 0));
|
||||
HealBot_Action_Refresh();
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
|
||||
@@ -152,6 +152,30 @@
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</StatusBar>
|
||||
<Frame name="$parentDebuffOverlay" frameStrata="FOREGROUND" enableMouse="false" hidden="true">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="-2" y="2"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
<Anchor point="BOTTOMRIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="2" y="-2"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Backdrop edgeFile="Interface\Tooltips\UI-Tooltip-Border">
|
||||
<EdgeSize>
|
||||
<AbsValue val="10"/>
|
||||
</EdgeSize>
|
||||
</Backdrop>
|
||||
<Layers>
|
||||
<Layer level="ARTWORK">
|
||||
<Texture name="$parentGlow" file="Interface\AddOns\HealBotBlue\Images\glow1.tga" setAllPoints="true" alphaMode="BLEND" hidden="true"/>
|
||||
</Layer>
|
||||
</Layers>
|
||||
</Frame>
|
||||
</Frames>
|
||||
</Button>
|
||||
|
||||
|
||||
@@ -339,19 +339,15 @@ function HealBot_OnEvent_UnitAura(this, unit)
|
||||
local guid = HealBot_GetUnitGUID and HealBot_GetUnitGUID(unit)
|
||||
if guid then
|
||||
if not HealBot_Nampower_NameCache then HealBot_Nampower_NameCache = HealBot_GetTable() end
|
||||
HealBot_Nampower_NameCache[guid] = UnitName(unit)
|
||||
|
||||
if HealBot_Nampower_Auras[guid] then
|
||||
for spellName, _ in pairs(HealBot_Nampower_Auras[guid]) do
|
||||
local auraInfo = HealBot_TrackedAura_Spells and HealBot_TrackedAura_Spells[spellName]
|
||||
if auraInfo then
|
||||
local tex = auraInfo.texture
|
||||
local isActive = auraInfo.isDebuff and activeDebuffs[tex] or activeBuffs[tex]
|
||||
if not isActive then
|
||||
HealBot_Nampower_Auras[guid][spellName] = nil
|
||||
end
|
||||
end
|
||||
end
|
||||
local uName = UnitName(unit)
|
||||
if uName then
|
||||
HealBot_Nampower_NameCache[guid] = uName
|
||||
HealBot_Nampower_NameCache[string.lower(guid)] = uName
|
||||
end
|
||||
if HealBot_Model and HealBot_Model.guidUnits then
|
||||
HealBot_Model.guidUnits[guid] = unit
|
||||
HealBot_Model.guidUnits[string.lower(guid)] = unit
|
||||
HealBot_Model.unitGUIDs[unit] = guid
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -172,6 +172,10 @@ function HealBot_OnUpdate(this, arg1)
|
||||
for unitID in pairs(powerToRefresh) do
|
||||
HealBot_Action_RefreshPower(unitID)
|
||||
end
|
||||
|
||||
if HealBot_Action_UpdateDebuffAnimation then
|
||||
HealBot_Action_UpdateDebuffAnimation(arg1)
|
||||
end
|
||||
-- Periodic resolution of units with missing class identity
|
||||
if HealBot_Model and HealBot_Model.unresolvedUnits and next(HealBot_Model.unresolvedUnits) then
|
||||
HealBot_UnresolvedTimer = (HealBot_UnresolvedTimer or 0) + arg1
|
||||
@@ -333,6 +337,9 @@ local HealBot_EventHandlers = {
|
||||
["PLAYER_ENTERING_WORLD"] = function(this)
|
||||
HealBot_Model:RefreshUnit("player")
|
||||
HealBot_Model:RefreshUnit("pet")
|
||||
if HealBot_Model and HealBot_Model.PopulateAllGUIDs then
|
||||
HealBot_Model:PopulateAllGUIDs()
|
||||
end
|
||||
HealBot_OnEvent_PlayerEnteringWorld(this)
|
||||
end,
|
||||
["VARIABLES_LOADED"] = function(this)
|
||||
|
||||
@@ -35,43 +35,57 @@ function HealBot_Range_Check(unit, range)
|
||||
|
||||
if ( unit and (unit == "player" or UnitIsUnit(unit, "player") or string.find(unit, "^Test")) ) then
|
||||
return_val = 1;
|
||||
elseif HealBot_Integrations_ClassicAPI_Active and UnitDistanceSquared and UnitInLineOfSight then
|
||||
local inSight = UnitInLineOfSight("player", unit)
|
||||
if inSight then
|
||||
local distSq = UnitDistanceSquared(unit)
|
||||
if distSq and distSq <= (range * range) then
|
||||
return_val = 1;
|
||||
end
|
||||
end
|
||||
elseif HealBot_Integrations_UnitXP_Active then
|
||||
local inSight = UnitXP("inSight", "player", unit)
|
||||
if inSight then
|
||||
local dist = UnitXP("distanceBetween", "player", unit, "Gaussian")
|
||||
if dist and dist <= range then
|
||||
return_val = 1;
|
||||
end
|
||||
end
|
||||
elseif ( UnitIsVisible(unit) == 1 ) then
|
||||
local tx, ty = GetPlayerMapPosition(unit)
|
||||
local dist
|
||||
if tx > 0 or ty > 0 then
|
||||
local px, py = GetPlayerMapPosition("player")
|
||||
dist = math.sqrt((px - tx)^2 + (py - ty)^2)
|
||||
if dist > _scale and (px > 0 or py > 0) then
|
||||
if ( CheckInteractDistance(unit, 4) ) then
|
||||
_scale = dist
|
||||
else
|
||||
local checked = false
|
||||
if HealBot_Integrations_ClassicAPI_Active and UnitDistanceSquared and UnitInLineOfSight then
|
||||
local inSight = UnitInLineOfSight(unit)
|
||||
if inSight == nil then inSight = UnitInLineOfSight("player", unit) end
|
||||
if inSight ~= nil then
|
||||
checked = true
|
||||
if inSight then
|
||||
local distSq = UnitDistanceSquared(unit)
|
||||
if distSq and distSq <= (range * range) then
|
||||
return_val = 1;
|
||||
end
|
||||
end
|
||||
end
|
||||
if dist <= (_scale * range / 27) then
|
||||
return_val = 1
|
||||
end
|
||||
|
||||
if not checked and HealBot_Integrations_UnitXP_Active then
|
||||
local inSight = UnitXP("inSight", "player", unit)
|
||||
if inSight ~= nil then
|
||||
checked = true
|
||||
if inSight then
|
||||
local dist = UnitXP("distanceBetween", "player", unit, "Gaussian")
|
||||
if dist and dist <= range then
|
||||
return_val = 1;
|
||||
end
|
||||
end
|
||||
end
|
||||
else
|
||||
if ( HealBot_Config.QualityRange == 1 ) or range <= 27 then
|
||||
if ( CheckInteractDistance(unit, 4) ) then
|
||||
return_val = 1;
|
||||
end
|
||||
end
|
||||
|
||||
if not checked and ( UnitIsVisible(unit) == 1 ) then
|
||||
local tx, ty = GetPlayerMapPosition(unit)
|
||||
local dist
|
||||
if tx > 0 or ty > 0 then
|
||||
local px, py = GetPlayerMapPosition("player")
|
||||
dist = math.sqrt((px - tx)^2 + (py - ty)^2)
|
||||
if dist > _scale and (px > 0 or py > 0) then
|
||||
if ( CheckInteractDistance(unit, 4) ) then
|
||||
_scale = dist
|
||||
end
|
||||
end
|
||||
if dist <= (_scale * range / 27) then
|
||||
return_val = 1
|
||||
end
|
||||
else
|
||||
return_val = 1;
|
||||
if ( HealBot_Config.QualityRange == 1 ) or range <= 27 or unit == "target" then
|
||||
if ( CheckInteractDistance(unit, 4) ) then
|
||||
return_val = 1;
|
||||
end
|
||||
else
|
||||
return_val = 1;
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -584,11 +584,13 @@ function HealBot_GetHealSpell(unit, pattern)
|
||||
|
||||
-- Handle Inline Scripts
|
||||
if string.sub(pattern, 1, 1) == "/" then
|
||||
if HealBot_Range_Check(unit, 40) == 0 then return nil end;
|
||||
return pattern;
|
||||
end
|
||||
|
||||
-- Handle Special Targeting Pattern
|
||||
if string.lower(pattern) == "target" then
|
||||
if HealBot_Range_Check(unit, 40) == 0 then return nil end;
|
||||
return pattern;
|
||||
end
|
||||
|
||||
@@ -598,7 +600,17 @@ function HealBot_GetHealSpell(unit, pattern)
|
||||
local range = 40;
|
||||
if HealBot_Spells[spell] then
|
||||
if not HealBot_CanCastSpell(spell, unit) then return nil end;
|
||||
range = HealBot_Spells[spell].range or 40;
|
||||
range = HealBot_Spells[spell].Range or HealBot_Spells[spell].range or 40;
|
||||
else
|
||||
local parenIdx = string.find(spell, "%s*%(")
|
||||
if parenIdx then
|
||||
local baseSpell = string.sub(spell, 1, parenIdx - 1)
|
||||
baseSpell = string.gsub(baseSpell, "%s+$", "")
|
||||
if HealBot_Spells[baseSpell] then
|
||||
if not HealBot_CanCastSpell(baseSpell, unit) then return nil end;
|
||||
range = HealBot_Spells[baseSpell].Range or HealBot_Spells[baseSpell].range or 40;
|
||||
end
|
||||
end
|
||||
end
|
||||
if HealBot_Range_Check(unit, range) == 0 then return nil end;
|
||||
return spell;
|
||||
@@ -606,13 +618,18 @@ function HealBot_GetHealSpell(unit, pattern)
|
||||
|
||||
-- Handle Named Macros
|
||||
if GetMacroIndexByName(pattern) ~= 0 then
|
||||
if HealBot_Range_Check(unit, 40) == 0 then return nil end;
|
||||
return pattern;
|
||||
end
|
||||
|
||||
-- Handle Items
|
||||
local bag, slot = HealBot_FindBagSlot(pattern)
|
||||
if bag then
|
||||
-- optionally check item range, but skipping for now as it's complex in vanilla
|
||||
local range = 40;
|
||||
if HealBot_Spells[pattern] then
|
||||
range = HealBot_Spells[pattern].Range or HealBot_Spells[pattern].range or 40;
|
||||
end
|
||||
if HealBot_Range_Check(unit, range) == 0 then return nil end;
|
||||
return pattern;
|
||||
end
|
||||
|
||||
|
||||
+100
-98
@@ -52,6 +52,8 @@ HealBot_ConfigDefaults = {
|
||||
SoundDebuffWarning = 0,
|
||||
SoundDebuffPlay = 1,
|
||||
CDCMonitor = 2,
|
||||
CDCOverlay = 1,
|
||||
CDCOverlayTexture = "Interface\\AddOns\\HealBotBlue\\Images\\glow1.tga",
|
||||
PanelAnchorX = -1,
|
||||
PanelAnchorY = -1,
|
||||
CDCBarColour = {
|
||||
@@ -542,104 +544,104 @@ HealBot_Debuff_Spells = {
|
||||
},
|
||||
}
|
||||
|
||||
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_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},
|
||||
|
||||
+63
-26
@@ -62,31 +62,62 @@ function HealBot_Integrations_Toggle()
|
||||
HealBot_Nampower_Auras[target][spellName] = expirationTime
|
||||
|
||||
if not HealBot_Nampower_NameCache then HealBot_Nampower_NameCache = HealBot_GetTable() end
|
||||
if event == "AURA_CAST_ON_SELF" then
|
||||
HealBot_Nampower_NameCache[target] = UnitName("player")
|
||||
HealBot_OnEvent_UnitAura(nil, "player")
|
||||
local unitID = nil
|
||||
local tName = nil
|
||||
|
||||
if event == "AURA_CAST_ON_SELF" or (HealBot_PlayerGUID and (target == HealBot_PlayerGUID or string.lower(target) == string.lower(HealBot_PlayerGUID))) then
|
||||
unitID = "player"
|
||||
tName = UnitName("player")
|
||||
if not HealBot_PlayerGUID then
|
||||
HealBot_PlayerGUID = target
|
||||
end
|
||||
else
|
||||
local tName = nil
|
||||
unitID = HealBot_Model and (HealBot_Model:GetUnitByGUID(target) or HealBot_Model:GetUnitByGUID(string.lower(target)))
|
||||
if not unitID and HealBot_PlayerGUID and (target == HealBot_PlayerGUID or string.lower(target) == string.lower(HealBot_PlayerGUID)) then
|
||||
unitID = "player"
|
||||
end
|
||||
|
||||
if UnitExists("target") then
|
||||
local curTargetGuid = HealBot_GetUnitGUID and HealBot_GetUnitGUID("target")
|
||||
if curTargetGuid and (curTargetGuid == target or string.lower(curTargetGuid) == string.lower(target)) then
|
||||
tName = UnitName("target")
|
||||
if not unitID and UnitIsUnit("target", "player") then unitID = "player" end
|
||||
end
|
||||
end
|
||||
local unitID = HealBot_Model and HealBot_Model:GetUnitByGUID(target)
|
||||
if not unitID and HealBot_PlayerGUID and (target == HealBot_PlayerGUID or string.lower(target) == string.lower(HealBot_PlayerGUID)) then
|
||||
unitID = "player"
|
||||
if not tName and UnitExists("mouseover") then
|
||||
local curMOGuid = HealBot_GetUnitGUID and HealBot_GetUnitGUID("mouseover")
|
||||
if curMOGuid and (curMOGuid == target or string.lower(curMOGuid) == string.lower(target)) then
|
||||
tName = UnitName("mouseover")
|
||||
if not unitID and UnitIsUnit("mouseover", "player") then unitID = "player" end
|
||||
end
|
||||
end
|
||||
if not tName and unitID then
|
||||
tName = UnitName(unitID) or (HealBot_Model and HealBot_Model.units[unitID] and HealBot_Model.units[unitID].name)
|
||||
end
|
||||
if tName then
|
||||
HealBot_Nampower_NameCache[target] = tName
|
||||
end
|
||||
|
||||
if tName then
|
||||
HealBot_Nampower_NameCache[target] = tName
|
||||
HealBot_Nampower_NameCache[string.lower(target)] = tName
|
||||
end
|
||||
if unitID and HealBot_Model then
|
||||
if HealBot_Model.guidUnits then
|
||||
HealBot_Model.guidUnits[target] = unitID
|
||||
HealBot_Model.guidUnits[string.lower(target)] = unitID
|
||||
end
|
||||
if unitID then
|
||||
HealBot_OnEvent_UnitAura(nil, unitID)
|
||||
if HealBot_Model.unitGUIDs then
|
||||
HealBot_Model.unitGUIDs[unitID] = target
|
||||
end
|
||||
end
|
||||
|
||||
if unitID and HealBot_View_DirtyUnits then
|
||||
HealBot_View_DirtyUnits[unitID] = true
|
||||
end
|
||||
if HealBot_UpdateActiveHoTTimers then
|
||||
HealBot_UpdateActiveHoTTimers()
|
||||
elseif HealBot_Action_UpdatePlayerHoTs then
|
||||
HealBot_Action_UpdatePlayerHoTs()
|
||||
end
|
||||
end
|
||||
end)
|
||||
end
|
||||
@@ -157,23 +188,29 @@ function HealBot_Integrations_PruneNampower()
|
||||
|
||||
local currentTime = GetTime()
|
||||
for targetName, auras in pairs(HealBot_Nampower_Auras) do
|
||||
-- Check if target is still in the raid/party, or is the player
|
||||
local isPlayer = (HealBot_PlayerGUID and string.lower(targetName) == string.lower(HealBot_PlayerGUID))
|
||||
or (UnitName("player") and string.lower(targetName) == string.lower(UnitName("player")))
|
||||
if not isPlayer and not HealBot_Model:GetUnitByGUID(targetName) and not HealBot_Model:GetUnitIDByName(targetName) then
|
||||
local lowerName = string.lower(targetName)
|
||||
local isPlayer = (HealBot_PlayerGUID and lowerName == string.lower(HealBot_PlayerGUID))
|
||||
or (UnitName("player") and lowerName == string.lower(UnitName("player")))
|
||||
or (HealBot_GetUnitGUID and (targetName == HealBot_GetUnitGUID("player") or lowerName == string.lower(HealBot_GetUnitGUID("player") or "")))
|
||||
|
||||
-- Prune expired auras
|
||||
local hasAuras = false
|
||||
for spellName, expiration in pairs(auras) do
|
||||
if currentTime > expiration then
|
||||
auras[spellName] = nil
|
||||
else
|
||||
hasAuras = true
|
||||
end
|
||||
end
|
||||
|
||||
if not hasAuras then
|
||||
HealBot_ReleaseTable(auras)
|
||||
HealBot_Nampower_Auras[targetName] = nil
|
||||
else
|
||||
-- Prune expired auras
|
||||
local hasAuras = false
|
||||
for spellName, expiration in pairs(auras) do
|
||||
if currentTime > expiration then
|
||||
auras[spellName] = nil
|
||||
else
|
||||
hasAuras = true
|
||||
end
|
||||
end
|
||||
if not hasAuras then
|
||||
elseif not isPlayer and not (HealBot_Model and (HealBot_Model:GetUnitByGUID(targetName) or HealBot_Model:GetUnitByGUID(lowerName))) and not (HealBot_Model and HealBot_Model:GetUnitIDByName(targetName)) then
|
||||
-- Target left group or disconnected and is not player
|
||||
if GetNumPartyMembers() == 0 and GetNumRaidMembers() == 0 then
|
||||
-- Solo: keep non-player auras until expired
|
||||
else
|
||||
HealBot_ReleaseTable(auras)
|
||||
HealBot_Nampower_Auras[targetName] = nil
|
||||
end
|
||||
|
||||
+62
-54
@@ -81,59 +81,59 @@ 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_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_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";
|
||||
@@ -148,7 +148,7 @@ 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";
|
||||
@@ -419,3 +419,11 @@ end
|
||||
|
||||
|
||||
|
||||
|
||||
HEALBOT_OPTIONS_CDCOVERLAY = "Debuff visual:";
|
||||
HEALBOT_OPTIONS_CDCOVERLAY_BAR = "Whole Bar";
|
||||
HEALBOT_OPTIONS_CDCOVERLAY_FRAME = "Frame / Border";
|
||||
HEALBOT_OPTIONS_CDCOVERLAY_GLOW = "Glow Effect";
|
||||
HEALBOT_OPTIONS_CDCOVERLAY_GLOWFRAME = "Glow + Frame";
|
||||
HEALBOT_OPTIONS_CDCOVERLAY_NONE = "Disabled";
|
||||
HEALBOT_OPTIONS_CDCOVERLAY_ANIMATED = "Animated";
|
||||
|
||||
+62
-54
@@ -93,59 +93,59 @@ HEALBOT_THORNS = "Thorns";
|
||||
HEALBOT_OMEN_OF_CLARITY = "Omen of Clarity";
|
||||
HEALBOT_INNER_FIRE = "Inner Fire";
|
||||
HEALBOT_FEAR_WARD = "Fear Ward";
|
||||
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_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";
|
||||
@@ -156,7 +156,7 @@ 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";
|
||||
@@ -449,3 +449,11 @@ HEALBOT_WORDS_CAST = "Cast"
|
||||
HEALBOT_WORDS_FOR = "for";
|
||||
HEALBOT_OPTIONS_TESTBARS = "Test Bars";
|
||||
HEALBOT_WORD_TEST = "Test";
|
||||
|
||||
HEALBOT_OPTIONS_CDCOVERLAY = "Debuff visual:";
|
||||
HEALBOT_OPTIONS_CDCOVERLAY_BAR = "Whole Bar";
|
||||
HEALBOT_OPTIONS_CDCOVERLAY_FRAME = "Frame / Border";
|
||||
HEALBOT_OPTIONS_CDCOVERLAY_GLOW = "Glow Effect";
|
||||
HEALBOT_OPTIONS_CDCOVERLAY_GLOWFRAME = "Glow + Frame";
|
||||
HEALBOT_OPTIONS_CDCOVERLAY_NONE = "Disabled";
|
||||
HEALBOT_OPTIONS_CDCOVERLAY_ANIMATED = "Animated";
|
||||
|
||||
+62
-54
@@ -81,59 +81,59 @@ 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_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_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";
|
||||
@@ -144,7 +144,7 @@ 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";
|
||||
@@ -400,3 +400,11 @@ end
|
||||
|
||||
|
||||
|
||||
|
||||
HEALBOT_OPTIONS_CDCOVERLAY = "Debuff visual:";
|
||||
HEALBOT_OPTIONS_CDCOVERLAY_BAR = "Whole Bar";
|
||||
HEALBOT_OPTIONS_CDCOVERLAY_FRAME = "Frame / Border";
|
||||
HEALBOT_OPTIONS_CDCOVERLAY_GLOW = "Glow Effect";
|
||||
HEALBOT_OPTIONS_CDCOVERLAY_GLOWFRAME = "Glow + Frame";
|
||||
HEALBOT_OPTIONS_CDCOVERLAY_NONE = "Disabled";
|
||||
HEALBOT_OPTIONS_CDCOVERLAY_ANIMATED = "Animated";
|
||||
|
||||
+61
-53
@@ -66,58 +66,58 @@ HEALBOT_INNER_FIRE = "내면의 열정";
|
||||
HEALBOT_FEAR_WARD = "공포의 결계";
|
||||
HEALBOT_ENLIGHTEN = "Enlighten";
|
||||
HEALBOT_MARK_OF_THE_WILD = "야생의 징표";
|
||||
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_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 = "부활";
|
||||
@@ -128,7 +128,7 @@ HEALBOT_WATER_BREATHING = "수중 호흡";
|
||||
HEALBOT_PURIFY = "정화";
|
||||
HEALBOT_CLEANSE = "정화";
|
||||
HEALBOT_CURE_POISON = "해독";
|
||||
HEALBOT_REMOVE_CURSE = "저주 해제";
|
||||
HEALBOT_REMOVE_CURSE = "저주 해제";
|
||||
HEALBOT_REMOVE_LESSER_CURSE = "하급 저주 해제";
|
||||
HEALBOT_ABOLISH_POISON = "독 해제";
|
||||
HEALBOT_CURE_DISEASE = "질병 치료";
|
||||
@@ -394,3 +394,11 @@ end
|
||||
|
||||
|
||||
|
||||
|
||||
HEALBOT_OPTIONS_CDCOVERLAY = "Debuff visual:";
|
||||
HEALBOT_OPTIONS_CDCOVERLAY_BAR = "Whole Bar";
|
||||
HEALBOT_OPTIONS_CDCOVERLAY_FRAME = "Frame / Border";
|
||||
HEALBOT_OPTIONS_CDCOVERLAY_GLOW = "Glow Effect";
|
||||
HEALBOT_OPTIONS_CDCOVERLAY_GLOWFRAME = "Glow + Frame";
|
||||
HEALBOT_OPTIONS_CDCOVERLAY_NONE = "Disabled";
|
||||
HEALBOT_OPTIONS_CDCOVERLAY_ANIMATED = "Animated";
|
||||
|
||||
@@ -206,27 +206,49 @@ end
|
||||
-- HealBot_Model:PopulateAllGUIDs: Refreshes unit-to-GUID and GUID-to-unit mappings for all current roster units.
|
||||
function HealBot_Model:PopulateAllGUIDs()
|
||||
if not (HealBot_Integrations_SuperWoW_Active or HealBot_Integrations_ClassicAPI_Active or HealBot_Integrations_Nampower_Active) or not HealBot_GetUnitGUID then return end
|
||||
if not HealBot_Nampower_NameCache then HealBot_Nampower_NameCache = HealBot_GetTable() end
|
||||
|
||||
local playerGuid = HealBot_GetUnitGUID("player")
|
||||
if playerGuid and playerGuid ~= "0" and playerGuid ~= "0x0000000000000000" then
|
||||
local lowerPGuid = string.lower(playerGuid)
|
||||
self.unitGUIDs["player"] = playerGuid
|
||||
self.guidUnits[playerGuid] = "player"
|
||||
self.guidUnits[lowerPGuid] = "player"
|
||||
HealBot_PlayerGUID = playerGuid
|
||||
local pName = UnitName("player")
|
||||
if pName then
|
||||
HealBot_Nampower_NameCache[playerGuid] = pName
|
||||
HealBot_Nampower_NameCache[lowerPGuid] = pName
|
||||
end
|
||||
end
|
||||
|
||||
for _, unit in ipairs(self.partyMembers) do
|
||||
local guid = HealBot_GetUnitGUID(unit)
|
||||
if guid and guid ~= "0" and guid ~= "0x0000000000000000" then
|
||||
local lowerGuid = string.lower(guid)
|
||||
self.unitGUIDs[unit] = guid
|
||||
self.guidUnits[guid] = unit
|
||||
self.guidUnits[lowerGuid] = unit
|
||||
local uName = UnitName(unit)
|
||||
if uName then
|
||||
HealBot_Nampower_NameCache[guid] = uName
|
||||
HealBot_Nampower_NameCache[lowerGuid] = uName
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
for _, unit in ipairs(self.raidMembers) do
|
||||
local guid = HealBot_GetUnitGUID(unit)
|
||||
if guid and guid ~= "0" and guid ~= "0x0000000000000000" then
|
||||
local lowerGuid = string.lower(guid)
|
||||
self.unitGUIDs[unit] = guid
|
||||
self.guidUnits[guid] = unit
|
||||
self.guidUnits[lowerGuid] = unit
|
||||
local uName = UnitName(unit)
|
||||
if uName then
|
||||
HealBot_Nampower_NameCache[guid] = uName
|
||||
HealBot_Nampower_NameCache[lowerGuid] = uName
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -238,14 +260,19 @@ function HealBot_Model:GetUnitByGUID(guid)
|
||||
if unit and UnitExists(unit) then return unit end
|
||||
|
||||
local lowerGuid = string.lower(guid)
|
||||
unit = self.guidUnits[lowerGuid]
|
||||
if unit and UnitExists(unit) then return unit end
|
||||
|
||||
if HealBot_PlayerGUID and string.lower(HealBot_PlayerGUID) == lowerGuid then
|
||||
self.guidUnits[guid] = "player"
|
||||
self.guidUnits[lowerGuid] = "player"
|
||||
return "player"
|
||||
end
|
||||
if HealBot_GetUnitGUID then
|
||||
local pGuid = HealBot_GetUnitGUID("player")
|
||||
if pGuid and string.lower(pGuid) == lowerGuid then
|
||||
self.guidUnits[guid] = "player"
|
||||
self.guidUnits[lowerGuid] = "player"
|
||||
HealBot_PlayerGUID = pGuid
|
||||
return "player"
|
||||
end
|
||||
@@ -255,6 +282,8 @@ function HealBot_Model:GetUnitByGUID(guid)
|
||||
local uGuid = HealBot_GetUnitGUID(u)
|
||||
if uGuid and string.lower(uGuid) == lowerGuid then
|
||||
self.guidUnits[guid] = u
|
||||
self.guidUnits[lowerGuid] = u
|
||||
self.unitGUIDs[u] = guid
|
||||
return u
|
||||
end
|
||||
end
|
||||
@@ -265,10 +294,24 @@ function HealBot_Model:GetUnitByGUID(guid)
|
||||
local uGuid = HealBot_GetUnitGUID(u)
|
||||
if uGuid and string.lower(uGuid) == lowerGuid then
|
||||
self.guidUnits[guid] = u
|
||||
self.guidUnits[lowerGuid] = u
|
||||
self.unitGUIDs[u] = guid
|
||||
return u
|
||||
end
|
||||
end
|
||||
end
|
||||
if UnitExists("target") then
|
||||
local tGuid = HealBot_GetUnitGUID("target")
|
||||
if tGuid and string.lower(tGuid) == lowerGuid then
|
||||
return "target"
|
||||
end
|
||||
end
|
||||
if UnitExists("mouseover") then
|
||||
local moGuid = HealBot_GetUnitGUID("mouseover")
|
||||
if moGuid and string.lower(moGuid) == lowerGuid then
|
||||
return "mouseover"
|
||||
end
|
||||
end
|
||||
end
|
||||
return nil
|
||||
end
|
||||
|
||||
@@ -341,6 +341,7 @@ function HealBot_Options_OnShow(this)
|
||||
HealBot_Options_CDCButRight_Refresh()
|
||||
HealBot_SetCDCBarColours()
|
||||
HealBot_Options_CDCMonitor_Refresh()
|
||||
HealBot_Options_CDCOverlay_Refresh()
|
||||
HealBot_ComboButtons_Button_OnClick(nil,HealBot_Options_ComboButtons_Button);
|
||||
HealBot_Options_EnableHealthy:SetChecked(HealBot_Config.EnableHealthy);
|
||||
HealBot_Options_NewSkinb:Disable();
|
||||
|
||||
@@ -43,6 +43,51 @@ function HealBot_WarningSound_OnClick(this,id)
|
||||
end
|
||||
end
|
||||
end
|
||||
-- HealBot_Options_CDCOverlay_DropDown: UI handler for DropDown options panel.
|
||||
function HealBot_Options_CDCOverlay_DropDown()
|
||||
local list = {
|
||||
HEALBOT_OPTIONS_CDCOVERLAY_BAR or "Whole Bar",
|
||||
HEALBOT_OPTIONS_CDCOVERLAY_FRAME or "Frame / Border",
|
||||
HEALBOT_OPTIONS_CDCOVERLAY_GLOW or "Glow Effect",
|
||||
HEALBOT_OPTIONS_CDCOVERLAY_GLOWFRAME or "Glow + Frame",
|
||||
HEALBOT_OPTIONS_CDCOVERLAY_ANIMATED or "Animated",
|
||||
HEALBOT_OPTIONS_CDCOVERLAY_NONE or "Disabled",
|
||||
};
|
||||
for i=1, getn(list), 1 do
|
||||
local info = {};
|
||||
info.text = list[i];
|
||||
info.func = HealBot_Options_CDCOverlay_OnSelect;
|
||||
UIDropDownMenu_AddButton(info);
|
||||
end
|
||||
end
|
||||
|
||||
-- HealBot_Options_CDCOverlay_Initialize: UI handler for Initialize options panel.
|
||||
function HealBot_Options_CDCOverlay_Initialize()
|
||||
UIDropDownMenu_Initialize(HealBot_Options_CDCOverlay, HealBot_Options_CDCOverlay_DropDown)
|
||||
end
|
||||
|
||||
-- HealBot_Options_CDCOverlay_Refresh: UI handler for Refresh options panel.
|
||||
function HealBot_Options_CDCOverlay_Refresh(onselect)
|
||||
if not HealBot_Config.CDCOverlay then HealBot_Config.CDCOverlay = 1 end
|
||||
if not onselect then HealBot_Options_CDCOverlay_Initialize() end
|
||||
HealBot_UIDropDownMenu_SetSelectedID(HealBot_Options_CDCOverlay, HealBot_Config.CDCOverlay)
|
||||
end
|
||||
|
||||
-- HealBot_Options_CDCOverlay_OnLoad: UI handler for OnLoad options panel.
|
||||
function HealBot_Options_CDCOverlay_OnLoad()
|
||||
UIDropDownMenu_Initialize(this, HealBot_Options_CDCOverlay_DropDown)
|
||||
UIDropDownMenu_SetWidth(120, this)
|
||||
end
|
||||
|
||||
-- HealBot_Options_CDCOverlay_OnSelect: UI handler for OnSelect options panel.
|
||||
function HealBot_Options_CDCOverlay_OnSelect()
|
||||
HealBot_Config.CDCOverlay = this:GetID()
|
||||
HealBot_Options_CDCOverlay_Refresh(true)
|
||||
if HealBot_Action_EnableButtons then
|
||||
HealBot_Action_EnableButtons()
|
||||
end
|
||||
end
|
||||
|
||||
-- HealBot_Options_CDCMonitor_DropDown: UI handler for DropDown options panel.
|
||||
function HealBot_Options_CDCMonitor_DropDown()
|
||||
for i=1, getn(HealBot_Options_EmergencyFilter_List), 1 do
|
||||
|
||||
+37
-10
@@ -132,7 +132,7 @@
|
||||
|
||||
<Frame name="HealBot_Options_CureDispelCleanseCol">
|
||||
<Size>
|
||||
<AbsDimension y="95"/>
|
||||
<AbsDimension y="125"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
@@ -142,7 +142,7 @@
|
||||
</Anchor>
|
||||
<Anchor point="TOPRIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="-21" y="-190"/>
|
||||
<AbsDimension x="-21" y="-185"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
@@ -152,7 +152,7 @@
|
||||
<Anchors>
|
||||
<Anchor point="TOP">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-12" />
|
||||
<AbsDimension x="0" y="-10" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
@@ -160,6 +160,33 @@
|
||||
</Layer>
|
||||
</Layers>
|
||||
</Frame>
|
||||
<Frame name="HealBot_Options_CDCOverlay" inherits="UIDropDownMenuTemplate" id="1">
|
||||
<Anchors>
|
||||
<Anchor point="TOP" relativeTo="HealBot_Options_CureDispelCleanseCol" relativePoint="TOP">
|
||||
<Offset>
|
||||
<AbsDimension x="40" y="-28" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Layers>
|
||||
<Layer level="OVERLAY">
|
||||
<FontString inherits="GameFontNormalSmall" text="HEALBOT_OPTIONS_CDCOVERLAY">
|
||||
<Anchors>
|
||||
<Anchor point="RIGHT" relativeTo="HealBot_Options_CDCOverlay" relativePoint="LEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="-5" y="3"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
<Scripts>
|
||||
<OnLoad>
|
||||
HealBot_Options_CDCOverlay_OnLoad(this)
|
||||
</OnLoad>
|
||||
</Scripts>
|
||||
</Frame>
|
||||
<Button name="HealBot_DiseaseColorpickb">
|
||||
<Size>
|
||||
<AbsDimension x="130" y="20"/>
|
||||
@@ -167,7 +194,7 @@
|
||||
<Anchors>
|
||||
<Anchor point="TOPRIGHT" relativeTo="HealBot_Options_CureDispelCleanseCol" relativePoint="TOP">
|
||||
<Offset>
|
||||
<AbsDimension x="-2" y="-35"/>
|
||||
<AbsDimension x="-2" y="-62"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
@@ -182,7 +209,7 @@
|
||||
<Anchors>
|
||||
<Anchor point="TOPRIGHT" relativeTo="HealBot_Options_CureDispelCleanseCol" relativePoint="TOP">
|
||||
<Offset>
|
||||
<AbsDimension x="-2" y="-35"/>
|
||||
<AbsDimension x="-2" y="-62"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
@@ -259,7 +286,7 @@
|
||||
<Anchors>
|
||||
<Anchor point="TOPRIGHT" relativeTo="HealBot_Options_CureDispelCleanseCol" relativePoint="TOP">
|
||||
<Offset>
|
||||
<AbsDimension x="-2" y="-65"/>
|
||||
<AbsDimension x="-2" y="-92"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
@@ -274,7 +301,7 @@
|
||||
<Anchors>
|
||||
<Anchor point="TOPRIGHT" relativeTo="HealBot_Options_CureDispelCleanseCol" relativePoint="TOP">
|
||||
<Offset>
|
||||
<AbsDimension x="-2" y="-65"/>
|
||||
<AbsDimension x="-2" y="-92"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
@@ -346,17 +373,17 @@
|
||||
|
||||
<Frame name="HealBot_Options_CureDispelCleanseWarn">
|
||||
<Size>
|
||||
<AbsDimension y="120"/>
|
||||
<AbsDimension y="115"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="21" y="-285"/>
|
||||
<AbsDimension x="21" y="-318"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
<Anchor point="TOPRIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="-21" y="-290"/>
|
||||
<AbsDimension x="-21" y="-318"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
|
||||
+196
-15
@@ -30,7 +30,8 @@ end
|
||||
-- HealBot_HealthColor: Computes health bar RGBA based on debuffs and class.
|
||||
function HealBot_HealthColor(unit, hlth, maxhlth)
|
||||
local cached_debuff = HealBot_UnitDebuff[unit]
|
||||
if cached_debuff then
|
||||
local overlayMode = HealBot_Config.CDCOverlay or 1
|
||||
if cached_debuff and overlayMode == 1 then
|
||||
local color = HealBot_Config.CDCBarColour[cached_debuff]
|
||||
if color then
|
||||
local dr = color.R
|
||||
@@ -243,6 +244,103 @@ function HealBot_Action_EnableButton(button)
|
||||
bar:SetStatusBarColor(r, g, b, HealBot_Config.bardisa[HealBot_Config.Current_Skin]);
|
||||
bar2:SetStatusBarColor(r, g, b, HealBot_Config.bardisa[HealBot_Config.Current_Skin]);
|
||||
end
|
||||
|
||||
if not button.debuffOverlay then
|
||||
button.debuffOverlay = getglobal(button:GetName() .. "DebuffOverlay")
|
||||
end
|
||||
if not button.debuffGlow then
|
||||
button.debuffGlow = getglobal(button:GetName() .. "DebuffOverlayGlow")
|
||||
end
|
||||
|
||||
if button.debuffOverlay then
|
||||
local debuffType = HealBot_UnitDebuff[unit]
|
||||
local isDead = state.isDead or state.isGhost or UnitIsDeadOrGhost(unit)
|
||||
local overlayMode = HealBot_Config.CDCOverlay or 1
|
||||
|
||||
if debuffType and not isDead and overlayMode > 1 and overlayMode < 6 then
|
||||
local color = HealBot_Config.CDCBarColour[debuffType]
|
||||
local cr, cg, cb = 1, 0, 0
|
||||
if color then
|
||||
cr, cg, cb = color.R, color.G, color.B
|
||||
end
|
||||
|
||||
button.debuffOverlay:SetFrameLevel(bar:GetFrameLevel() + 2)
|
||||
button.debuffOverlay:Show()
|
||||
|
||||
local alphaBorder = 1.0
|
||||
local alphaOverlay = 1.0
|
||||
if not button:IsEnabled() then
|
||||
local disAlpha = HealBot_Config.bardisa[HealBot_Config.Current_Skin] or 0.4
|
||||
alphaBorder = disAlpha
|
||||
alphaOverlay = disAlpha
|
||||
end
|
||||
|
||||
if overlayMode == 2 then
|
||||
button.isAnimatedDebuff = false
|
||||
button.debuffOverlay:SetBackdropBorderColor(cr, cg, cb, alphaBorder)
|
||||
if button.debuffGlow then
|
||||
button.debuffGlow:Hide()
|
||||
button.debuffGlow:SetTexCoord(0, 1, 0, 1)
|
||||
end
|
||||
elseif overlayMode == 3 then
|
||||
button.isAnimatedDebuff = false
|
||||
button.debuffOverlay:SetBackdropBorderColor(0, 0, 0, 0)
|
||||
if button.debuffGlow then
|
||||
local glowTex = HealBot_Config.CDCOverlayTexture or "Interface\\AddOns\\HealBotBlue\\Images\\glow1.tga"
|
||||
button.debuffGlow:SetTexture(glowTex)
|
||||
button.debuffGlow:SetBlendMode("BLEND")
|
||||
button.debuffGlow:SetTexCoord(0, 1, 0, 1)
|
||||
button.debuffGlow:SetVertexColor(cr, cg, cb, alphaOverlay)
|
||||
button.debuffGlow:Show()
|
||||
end
|
||||
elseif overlayMode == 4 then
|
||||
button.isAnimatedDebuff = false
|
||||
button.debuffOverlay:SetBackdropBorderColor(cr, cg, cb, alphaBorder)
|
||||
if button.debuffGlow then
|
||||
local glowTex = HealBot_Config.CDCOverlayTexture or "Interface\\AddOns\\HealBotBlue\\Images\\glow1.tga"
|
||||
button.debuffGlow:SetTexture(glowTex)
|
||||
button.debuffGlow:SetBlendMode("BLEND")
|
||||
button.debuffGlow:SetTexCoord(0, 1, 0, 1)
|
||||
button.debuffGlow:SetVertexColor(cr, cg, cb, alphaOverlay)
|
||||
button.debuffGlow:Show()
|
||||
end
|
||||
elseif overlayMode == 5 then -- Animated
|
||||
button.debuffOverlay:SetBackdropBorderColor(0, 0, 0, 0)
|
||||
if button.debuffGlow then
|
||||
local glowTex
|
||||
if debuffType == HEALBOT_POISON_en then
|
||||
glowTex = "Interface\\AddOns\\HealBotBlue\\Images\\debuff_poison.tga"
|
||||
button.isAnimatedDebuff = true
|
||||
elseif debuffType == HEALBOT_CURSE_en then
|
||||
glowTex = "Interface\\AddOns\\HealBotBlue\\Images\\debuff_curse.tga"
|
||||
button.isAnimatedDebuff = true
|
||||
elseif debuffType == HEALBOT_DISEASE_en then
|
||||
glowTex = "Interface\\AddOns\\HealBotBlue\\Images\\debuff_disease.tga"
|
||||
button.isAnimatedDebuff = true
|
||||
elseif debuffType == HEALBOT_MAGIC_en then
|
||||
glowTex = "Interface\\AddOns\\HealBotBlue\\Images\\debuff_magic.tga"
|
||||
button.isAnimatedDebuff = true
|
||||
else
|
||||
glowTex = HealBot_Config.CDCOverlayTexture or "Interface\\AddOns\\HealBotBlue\\Images\\glow1.tga"
|
||||
button.isAnimatedDebuff = false
|
||||
button.debuffGlow:SetTexCoord(0, 1, 0, 1)
|
||||
end
|
||||
button.debuffGlow:SetTexture(glowTex)
|
||||
button.debuffGlow:SetBlendMode("BLEND")
|
||||
button.debuffGlow:SetVertexColor(cr, cg, cb, alphaOverlay)
|
||||
button.debuffGlow:Show()
|
||||
end
|
||||
end
|
||||
else
|
||||
button.isAnimatedDebuff = false
|
||||
button.debuffOverlay:Hide()
|
||||
if button.debuffGlow then
|
||||
button.debuffGlow:Hide()
|
||||
button.debuffGlow:SetTexCoord(0, 1, 0, 1)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local healthTextOpt = HealBot_Config.ShowHealthText or 0
|
||||
local displayText = name
|
||||
if healthTextOpt == 1 then
|
||||
@@ -275,11 +373,13 @@ function HealBot_Action_EnableButton(button)
|
||||
bar.txt:SetText(displayText);
|
||||
bar.txt:SetTextColor(sr, sg, sb, sa);
|
||||
local fontName, fontHeight, fontFlags = bar.txt:GetFont()
|
||||
local btextheight = (HealBot_Config.btextheight and HealBot_Config.btextheight[HealBot_Config.Current_Skin]) or 10
|
||||
local fontHeightToUse = (fontHeight and fontHeight >= 6) and fontHeight or btextheight
|
||||
local fontOutline = HealBot_Config.bfontoutline[HealBot_Config.Current_Skin] or 0
|
||||
local expectedFlags = fontOutline == 1 and "OUTLINE" or ""
|
||||
local expectedFont = (HealBot_Config.bfont and HealBot_Config.bfont[HealBot_Config.Current_Skin]) or fontName
|
||||
if fontFlags ~= expectedFlags or fontName ~= expectedFont then
|
||||
bar.txt:SetFont(expectedFont, fontHeight, expectedFlags)
|
||||
if fontFlags ~= expectedFlags or fontName ~= expectedFont or (fontHeight and fontHeight < 6) then
|
||||
bar.txt:SetFont(expectedFont, fontHeightToUse, expectedFlags)
|
||||
end
|
||||
|
||||
local iconSize = HealBot_Config.biconsize[HealBot_Config.Current_Skin] or 12
|
||||
@@ -335,13 +435,18 @@ function HealBot_Action_EnableButton(button)
|
||||
iconText:SetTextColor(1, 1, 1, 1)
|
||||
bar["iconText"..i] = iconText
|
||||
end
|
||||
local timeLeft = unitMap and (unitMap[newTexture] or (newTexture and unitMap[string.lower(newTexture)]))
|
||||
local cleanTex = newTexture and string.lower(string.gsub(newTexture, "/", "\\"))
|
||||
local shortTex = cleanTex and string.match(cleanTex, "([^\\]+)$")
|
||||
local timeLeft = unitMap and (unitMap[newTexture] or (cleanTex and unitMap[cleanTex]) or (shortTex and unitMap[shortTex]))
|
||||
if timeLeft then
|
||||
if bar.overlayFrame then bar.overlayFrame:Show() end
|
||||
iconText:SetText(timeLeft)
|
||||
iconText:Show()
|
||||
else
|
||||
iconText:SetText("")
|
||||
iconText:Hide()
|
||||
if iconText and iconText:IsVisible() then
|
||||
iconText:SetText("")
|
||||
iconText:Hide()
|
||||
end
|
||||
end
|
||||
elseif iconText and iconText:IsVisible() then
|
||||
iconText:SetText("")
|
||||
@@ -373,6 +478,32 @@ function HealBot_Action_EnableButton(button)
|
||||
end
|
||||
end
|
||||
|
||||
local HealBot_AnimTimer = 0
|
||||
local HealBot_AnimFrame = 0
|
||||
|
||||
-- HealBot_Action_UpdateDebuffAnimation: Advances animated overlay frames on active debuffed buttons.
|
||||
function HealBot_Action_UpdateDebuffAnimation(elapsed)
|
||||
if not HealBot_Config or HealBot_Config.CDCOverlay ~= 5 then return end
|
||||
|
||||
HealBot_AnimTimer = HealBot_AnimTimer + elapsed
|
||||
if HealBot_AnimTimer < 0.066 then return end -- ~15 FPS
|
||||
HealBot_AnimTimer = 0
|
||||
|
||||
HealBot_AnimFrame = math.mod(HealBot_AnimFrame + 1, 16)
|
||||
local col = math.mod(HealBot_AnimFrame, 2)
|
||||
local row = math.floor(HealBot_AnimFrame / 2)
|
||||
local left = col * 0.5
|
||||
local right = left + 0.5
|
||||
local top = row * 0.125
|
||||
local bottom = top + 0.125
|
||||
|
||||
for _, button in pairs(HealBot_Action_HealButtons) do
|
||||
if button and button.isAnimatedDebuff and button.debuffOverlay and button.debuffOverlay:IsVisible() and button.debuffGlow and button.debuffGlow:IsVisible() then
|
||||
button.debuffGlow:SetTexCoord(left, right, top, bottom)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- HealBot_Action_EnableButtons: Internal utility: HealBot_Action_EnableButtons
|
||||
function HealBot_Action_EnableButtons()
|
||||
for index, button in pairs(HealBot_Action_HealButtons) do
|
||||
@@ -1493,7 +1624,9 @@ function HealBot_RenderHoTOverlays()
|
||||
local iconText = bar["iconText"..i]
|
||||
if icon and icon:IsVisible() then
|
||||
local tex = icon:GetTexture()
|
||||
local timeLeft = unitMap and (unitMap[tex] or (tex and unitMap[string.lower(tex)]))
|
||||
local cleanTex = tex and string.lower(string.gsub(tex, "/", "\\"))
|
||||
local shortTex = cleanTex and string.match(cleanTex, "([^\\]+)$")
|
||||
local timeLeft = unitMap and (unitMap[tex] or (cleanTex and unitMap[cleanTex]) or (shortTex and unitMap[shortTex]))
|
||||
if timeLeft then
|
||||
if not iconText then
|
||||
local overlayFrame = bar.overlayFrame
|
||||
@@ -1509,6 +1642,7 @@ function HealBot_RenderHoTOverlays()
|
||||
iconText:SetTextColor(1, 1, 1, 1)
|
||||
bar["iconText"..i] = iconText
|
||||
end
|
||||
if bar.overlayFrame then bar.overlayFrame:Show() end
|
||||
iconText:SetText(timeLeft)
|
||||
iconText:Show()
|
||||
else
|
||||
@@ -1603,13 +1737,23 @@ function HealBot_UpdateActiveHoTTimers()
|
||||
|
||||
if HealBot_Integrations_Nampower_Active and HealBot_Nampower_Auras then
|
||||
for targetKey, auras in pairs(HealBot_Nampower_Auras) do
|
||||
local unitID = HealBot_Model and HealBot_Model:GetUnitByGUID(targetKey)
|
||||
if not unitID and HealBot_PlayerGUID and (targetKey == HealBot_PlayerGUID or string.lower(targetKey) == string.lower(HealBot_PlayerGUID)) then
|
||||
unitID = "player"
|
||||
local lowerKey = string.lower(targetKey)
|
||||
local unitID = HealBot_Model and (HealBot_Model:GetUnitByGUID(targetKey) or HealBot_Model:GetUnitByGUID(lowerKey))
|
||||
|
||||
if not unitID then
|
||||
local isPlayer = (HealBot_PlayerGUID and (targetKey == HealBot_PlayerGUID or lowerKey == string.lower(HealBot_PlayerGUID)))
|
||||
or (UnitName("player") and (targetKey == UnitName("player") or lowerKey == string.lower(UnitName("player"))))
|
||||
or (HealBot_GetUnitGUID and (targetKey == HealBot_GetUnitGUID("player") or lowerKey == string.lower(HealBot_GetUnitGUID("player") or "")))
|
||||
if isPlayer then
|
||||
unitID = "player"
|
||||
end
|
||||
end
|
||||
if not unitID and UnitName("player") and (targetKey == UnitName("player") or string.lower(targetKey) == string.lower(UnitName("player"))) then
|
||||
unitID = "player"
|
||||
|
||||
if not unitID and HealBot_Model and HealBot_Model.GetUnitIDByName then
|
||||
unitID = HealBot_Model:GetUnitIDByName(targetKey)
|
||||
end
|
||||
|
||||
-- Multi-tier player name resolution
|
||||
local displayName = nil
|
||||
if unitID and unitID ~= "target" then
|
||||
if HealBot_Model and HealBot_Model.units[unitID] and HealBot_Model.units[unitID].name then
|
||||
@@ -1620,16 +1764,32 @@ function HealBot_UpdateActiveHoTTimers()
|
||||
end
|
||||
end
|
||||
if not displayName and HealBot_Nampower_NameCache then
|
||||
displayName = HealBot_Nampower_NameCache[targetKey]
|
||||
displayName = HealBot_Nampower_NameCache[targetKey] or HealBot_Nampower_NameCache[lowerKey]
|
||||
end
|
||||
if not displayName and UnitExists("target") and HealBot_GetUnitGUID and (targetKey == HealBot_GetUnitGUID("target") or lowerKey == string.lower(HealBot_GetUnitGUID("target") or "")) then
|
||||
displayName = UnitName("target")
|
||||
end
|
||||
if not displayName and UnitExists("mouseover") and HealBot_GetUnitGUID and (targetKey == HealBot_GetUnitGUID("mouseover") or lowerKey == string.lower(HealBot_GetUnitGUID("mouseover") or "")) then
|
||||
displayName = UnitName("mouseover")
|
||||
end
|
||||
if not displayName then
|
||||
local uName = UnitName(targetKey)
|
||||
if uName and uName ~= targetKey and uName ~= "Unknown" then
|
||||
displayName = uName
|
||||
end
|
||||
end
|
||||
if displayName and HealBot_Nampower_NameCache then
|
||||
HealBot_Nampower_NameCache[targetKey] = displayName
|
||||
HealBot_Nampower_NameCache[lowerKey] = displayName
|
||||
end
|
||||
|
||||
-- Exclude pets
|
||||
if not (unitID and string.find(unitID, "pet")) then
|
||||
for spellName, expiration in pairs(auras) do
|
||||
local auraInfo = HealBot_TrackedAura_Spells and HealBot_TrackedAura_Spells[spellName]
|
||||
if not auraInfo and HealBot_TrackedAuras and HealBot_TrackedAuras[spellName] then
|
||||
auraInfo = HealBot_TrackedAuras[spellName]
|
||||
end
|
||||
if auraInfo and auraInfo.showTimer and expiration > currentTime then
|
||||
local timeLeft = math.floor(expiration - currentTime)
|
||||
local tex = auraInfo.texture or "Interface\\Icons\\INV_Misc_QuestionMark"
|
||||
@@ -1640,7 +1800,7 @@ function HealBot_UpdateActiveHoTTimers()
|
||||
end
|
||||
local hot = HealBot_PlayerHoTs_ListCache[numHoTs]
|
||||
hot.unit = unitID
|
||||
hot.name = displayName or targetKey
|
||||
hot.name = displayName or "Unknown"
|
||||
hot.spell = spellName
|
||||
hot.texture = tex
|
||||
hot.expires = expiration
|
||||
@@ -1650,8 +1810,29 @@ function HealBot_UpdateActiveHoTTimers()
|
||||
if not HealBot_ActiveHoTUnitMap[unitID] then
|
||||
HealBot_ActiveHoTUnitMap[unitID] = {}
|
||||
end
|
||||
local cleanTex = string.lower(string.gsub(tex, "/", "\\"))
|
||||
local shortTex = string.match(cleanTex, "([^\\]+)$")
|
||||
HealBot_ActiveHoTUnitMap[unitID][tex] = timeLeft
|
||||
HealBot_ActiveHoTUnitMap[unitID][string.lower(tex)] = timeLeft
|
||||
HealBot_ActiveHoTUnitMap[unitID][cleanTex] = timeLeft
|
||||
if shortTex then
|
||||
HealBot_ActiveHoTUnitMap[unitID][shortTex] = timeLeft
|
||||
end
|
||||
|
||||
-- If player in raid, map under raid token button as well
|
||||
if unitID == "player" and HealBot_Action_UnitButtons then
|
||||
for btnUnit in pairs(HealBot_Action_UnitButtons) do
|
||||
if btnUnit ~= "player" and UnitIsUnit(btnUnit, "player") then
|
||||
if not HealBot_ActiveHoTUnitMap[btnUnit] then
|
||||
HealBot_ActiveHoTUnitMap[btnUnit] = {}
|
||||
end
|
||||
HealBot_ActiveHoTUnitMap[btnUnit][tex] = timeLeft
|
||||
HealBot_ActiveHoTUnitMap[btnUnit][cleanTex] = timeLeft
|
||||
if shortTex then
|
||||
HealBot_ActiveHoTUnitMap[btnUnit][shortTex] = timeLeft
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 1.0 MiB |
Binary file not shown.
|
After Width: | Height: | Size: 1.0 MiB |
Binary file not shown.
|
After Width: | Height: | Size: 1.0 MiB |
Binary file not shown.
|
After Width: | Height: | Size: 1.0 MiB |
Binary file not shown.
|
After Width: | Height: | Size: 64 KiB |
@@ -31,13 +31,14 @@ Default installation path: `C:\Program Files\World of Warcraft\Interface\AddOns\
|
||||
* **Talent-Based Calculations & Equipment Bonus:** Dynamic spell healing calculations for Druid, Priest, and Paladin based on talents, and automatically scans equipped gear to scale healing predictions.
|
||||
* **Modifier-Aware Tooltips:** Tooltips dynamically update to show exact bound actions (Shift/Ctrl/Alt) and required mana costs (turns red if insufficient mana).
|
||||
* **Blizzard Party Frame Toggle:** Toggle to automatically hide Blizzard's default party frames when in a group in favor of HealBot's layouts.
|
||||
* **HoT & Buff Tracking:** Intelligently track active HoTs and buffs directly on the grid frames with custom icons (e.g., Renew, Rejuvenation, Regrowth, Fear Ward). Optional extended HoT timer tracker togglable below frames.
|
||||
* **HoT & Buff Tracking:** Intelligently track active HoTs and buffs directly on the grid frames with custom icons (e.g., Renew, Rejuvenation, Regrowth, Fear Ward). Optional extended HoT timer tracker togglable below frames. With integration modules enabled there are timers as icon overlay, a list or both combined togglable.
|
||||
* **Mana Bars for Healers:** Enable and position mini-mana status bars next to unit frames, toggleable to display for healer classes only or all classes.
|
||||
* **Curse & Debuff Warning (CDC):** Dynamic visual and audio alerts for cleanable debuffs. Customizable colors based on debuff type (Curse, Poison, Disease, Magic).
|
||||
* **Curse & Debuff Warning (CDC):** Dynamic visual and audio alerts for cleanable debuffs. Customizable colors based on debuff type (Curse, Poison, Disease, Magic), with selectable display modes: classic Whole Bar tinting, Frame / Border highlights, Glow Overlays, and animated flipbooks (poison drips, rising curse flames, disease, magic).
|
||||
* **Pet & Familiar Frames:** Dedicated, toggleable frames for tracking and healing player pets.
|
||||
* **Customizable Health Text:** Dynamic unit health display (Name Only, Percentage, Real Health, or Health Deficit).
|
||||
* **Non-Mana Resource Tracking:** Track Rage, Energy, and Focus for non-mana classes.
|
||||
* **Highly Customizable Skins:** Fully configure dimensions (width, height), row spacing, column layouts, custom textures, opacity, class-colored frames, and outline of fonts.
|
||||
* **Skin swap on different raid sizes** Togglable option to iterate over skin presets for different raid sizes - chaning frames styles dynamicly dependning on player count.
|
||||
* **Additional Mods Integration:** Navigate to 'Extras' tab in Options to optionally enable integrations with `UnitXP_SP3` (for ultra-precise 3D range and Line of Sight checks), `nampower` (for accurate real-time heal/buff tracking), `SuperWoW` (for robust GUID-based state tracking), and `ClassicAPI` (for native +Healing bonuses and fast 3D distance checks).
|
||||
|
||||
### To be implemented
|
||||
@@ -164,6 +165,7 @@ Default installation path: `C:\Program Files\World of Warcraft\Interface\AddOns\
|
||||
* **Memory Optimization:** Fixed a significant memory leak where tracking tables were being repeatedly allocated every tick during aura scanning, and replaced `table.foreach` with pairs loops to avoid GC spikes during combat.
|
||||
|
||||
**v1.4.1**
|
||||
* **Debuff Visual Overlay Options (CDC):** Added configurable visual overlay styles for cleanable debuffs in the Cure tab ("Debuff visual:"). Supports `Whole Bar` (classic status bar recolor), `Frame / Border` (crisp 9-slice debuff border while preserving unit health/class color), `Glow Effect` (additive blend texture glow), `Glow + Frame` (both border and glow), `Animated` (multi-frame procedural sprite sheet animation for all 4 debuff types: Poison drips, Curse shadow wisps, Disease spores, and Magic sparkles), and `Disabled`. Added dedicated 3rd visual layer `$parentDebuffOverlay` to button templates.
|
||||
* **Frame Disappearing Fix:** Fixed a layout rendering bug where frames would flash for a split second and disappear on login due to improper table clearing of unit buttons, leaving empty arrays that incorrectly failed the layout check.
|
||||
* **Ranked Spell Parsing Fix:** Fixed a Lua crash during addon initialization when discovering ranked spells without an explicit target property. Ranked spells now dynamically inherit the target table from their base spells.
|
||||
* **Talent-based Healing Calculations:** Implemented dynamic spell healing calculations for Druid, Priest, and Paladin classes based on talents.
|
||||
|
||||
Reference in New Issue
Block a user