mirror of
https://github.com/Bluewhale1337/HealBotBlue.git
synced 2026-07-27 01:34:44 +00:00
Merge branch 'dev' into main
Signed-off-by: Bluewhale1337 <295648290+Bluewhale1337@users.noreply.github.com>
This commit is contained in:
+2
-1
@@ -3,7 +3,7 @@
|
|||||||
## Version: 1.5.1
|
## Version: 1.5.1
|
||||||
## Author: Bluewhale
|
## Author: Bluewhale
|
||||||
## Notes: Adds panel with skinable bars for healing and decursive
|
## Notes: Adds panel with skinable bars for healing and decursive
|
||||||
## SavedVariables: HealBot_Config
|
## SavedVariablesPerCharacter: HealBot_Config
|
||||||
..\..\FrameXML\Fonts.xml
|
..\..\FrameXML\Fonts.xml
|
||||||
..\..\FrameXML\OptionsFrameTemplates.xml
|
..\..\FrameXML\OptionsFrameTemplates.xml
|
||||||
..\..\FrameXML\UIPanelTemplates.xml
|
..\..\FrameXML\UIPanelTemplates.xml
|
||||||
@@ -27,3 +27,4 @@ HealBot_Options_CDC.xml
|
|||||||
HealBot_Options_Skins.xml
|
HealBot_Options_Skins.xml
|
||||||
HealBot_Options_Buffs.xml
|
HealBot_Options_Buffs.xml
|
||||||
HealBot_Options_Chat.xml
|
HealBot_Options_Chat.xml
|
||||||
|
HealBot_Options_Auto.xml
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
-- Handles tracking buffs/debuffs (auras) on group/raid units
|
-- Handles tracking buffs/debuffs (auras) on group/raid units
|
||||||
|
|
||||||
HealBot_MissingBuffs = {}
|
HealBot_MissingBuffs = {}
|
||||||
|
local StaticHasBuff = {}
|
||||||
|
|
||||||
function HealBot_UnitAffected(unit, effect)
|
function HealBot_UnitAffected(unit, effect)
|
||||||
if not effect then return nil; end
|
if not effect then return nil; end
|
||||||
@@ -68,7 +69,10 @@ function HealBot_CheckBuffs(unit)
|
|||||||
}
|
}
|
||||||
|
|
||||||
-- Gather buffs on unit
|
-- Gather buffs on unit
|
||||||
local hasBuff = {}
|
local hasBuff = StaticHasBuff
|
||||||
|
for k in pairs(hasBuff) do
|
||||||
|
hasBuff[k] = nil
|
||||||
|
end
|
||||||
local i = 1
|
local i = 1
|
||||||
while true do
|
while true do
|
||||||
local buffTexture = UnitBuff(unit, i)
|
local buffTexture = UnitBuff(unit, i)
|
||||||
@@ -91,7 +95,7 @@ function HealBot_CheckBuffs(unit)
|
|||||||
local val = HealBot_Config.BuffDropDowns[myClass][j]
|
local val = HealBot_Config.BuffDropDowns[myClass][j]
|
||||||
if val and val > 0 then
|
if val and val > 0 then
|
||||||
local isSelfOnly = (HealBot_Config.BuffWatchSelf and HealBot_Config.BuffWatchSelf[j] == 1)
|
local isSelfOnly = (HealBot_Config.BuffWatchSelf and HealBot_Config.BuffWatchSelf[j] == 1)
|
||||||
if not (isSelfOnly and unit ~= "player") then
|
if not (isSelfOnly and not UnitIsUnit(unit, "player")) then
|
||||||
local spellName = HealBot_Buff_Spells[myClass][val]
|
local spellName = HealBot_Buff_Spells[myClass][val]
|
||||||
|
|
||||||
local hasIt = hasBuff[spellName]
|
local hasIt = hasBuff[spellName]
|
||||||
@@ -100,7 +104,7 @@ function HealBot_CheckBuffs(unit)
|
|||||||
end
|
end
|
||||||
|
|
||||||
if not hasIt then
|
if not hasIt then
|
||||||
if myClass == "SHAMAN" and unit == "player" and string.find(spellName, " Weapon") then
|
if myClass == "SHAMAN" and UnitIsUnit(unit, "player") and string.find(spellName, " Weapon") then
|
||||||
hasIt = HealBot_CheckShamanWeaponBuff(spellName)
|
hasIt = HealBot_CheckShamanWeaponBuff(spellName)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -123,6 +127,7 @@ local HealBot_TrackedHoTs = {
|
|||||||
["Interface\\Icons\\Spell_Holy_SealOfProtection"] = true,
|
["Interface\\Icons\\Spell_Holy_SealOfProtection"] = true,
|
||||||
["Interface\\Icons\\Spell_Holy_Excorcism"] = true,
|
["Interface\\Icons\\Spell_Holy_Excorcism"] = true,
|
||||||
["Interface\\Icons\\btnholyscriptures"] = true,
|
["Interface\\Icons\\btnholyscriptures"] = true,
|
||||||
|
["Interface\\Icons\\Spell_Holy_AshesToAshes"] = true,
|
||||||
}
|
}
|
||||||
|
|
||||||
function HealBot_OnEvent_UnitAura(this, unit)
|
function HealBot_OnEvent_UnitAura(this, unit)
|
||||||
@@ -144,7 +149,7 @@ function HealBot_OnEvent_UnitAura(this, unit)
|
|||||||
iconCount = iconCount + 1
|
iconCount = iconCount + 1
|
||||||
HealBot_UnitIcons[unit][iconCount] = debuff
|
HealBot_UnitIcons[unit][iconCount] = debuff
|
||||||
end
|
end
|
||||||
if HealBot_CDCInc[UnitClass(unit)] == 1 and HealBot_DebuffWatch[debuff_type] == "YES" then
|
if HealBot_CDCInc[UnitClass(unit)] == 1 and HealBot_DebuffWatch[debuff_type] then
|
||||||
HealBot_UnitDebuff[unit] = debuff_type
|
HealBot_UnitDebuff[unit] = debuff_type
|
||||||
DebuffType = debuff_type;
|
DebuffType = debuff_type;
|
||||||
if HealBot_DebuffPriority[debuff_type] then
|
if HealBot_DebuffPriority[debuff_type] then
|
||||||
@@ -169,6 +174,17 @@ function HealBot_OnEvent_UnitAura(this, unit)
|
|||||||
b = b + 1
|
b = b + 1
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local d = 1
|
||||||
|
while true do
|
||||||
|
local debuff = UnitDebuff(unit, d)
|
||||||
|
if not debuff then break end
|
||||||
|
if HealBot_TrackedHoTs[debuff] and iconCount < 5 then
|
||||||
|
iconCount = iconCount + 1
|
||||||
|
HealBot_UnitIcons[unit][iconCount] = debuff
|
||||||
|
end
|
||||||
|
d = d + 1
|
||||||
|
end
|
||||||
|
|
||||||
if HealBot_UnitDebuff[unit] then
|
if HealBot_UnitDebuff[unit] then
|
||||||
if DebuffType and HealBot_Range_Check(unit, 27) == 1 then
|
if DebuffType and HealBot_Range_Check(unit, 27) == 1 then
|
||||||
if HealBot_Config.ShowDebuffWarning == 1 then
|
if HealBot_Config.ShowDebuffWarning == 1 then
|
||||||
|
|||||||
@@ -30,9 +30,7 @@ function HealBot_OnLoad(this)
|
|||||||
end)
|
end)
|
||||||
HealBot_Model:RegisterObserver("EQUIPMENT_CHANGED", function(unitID)
|
HealBot_Model:RegisterObserver("EQUIPMENT_CHANGED", function(unitID)
|
||||||
if unitID == "player" then
|
if unitID == "player" then
|
||||||
HealBot_BonusScanner:ScanEquipment()
|
HealBot_EquipChangeTimer = 1
|
||||||
HealBot_CalcEquipBonus = true;
|
|
||||||
HealBot_RecalcSpells();
|
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
end
|
end
|
||||||
@@ -43,17 +41,20 @@ end
|
|||||||
|
|
||||||
function HealBot_OnUpdate(this, arg1)
|
function HealBot_OnUpdate(this, arg1)
|
||||||
if HealBot_Action_TooltipUnit and HealBot_Tooltip:IsVisible() then
|
if HealBot_Action_TooltipUnit and HealBot_Tooltip:IsVisible() then
|
||||||
local currentModState = ""
|
local s = IsShiftKeyDown() and true or false
|
||||||
if IsShiftKeyDown() then currentModState = currentModState .. "S" end
|
local c = IsControlKeyDown() and true or false
|
||||||
if IsControlKeyDown() then currentModState = currentModState .. "C" end
|
local a = IsAltKeyDown() and true or false
|
||||||
if IsAltKeyDown() then currentModState = currentModState .. "A" end
|
|
||||||
|
|
||||||
if HealBot_LastModState ~= currentModState then
|
if HealBot_LastModS ~= s or HealBot_LastModC ~= c or HealBot_LastModA ~= a then
|
||||||
HealBot_LastModState = currentModState
|
HealBot_LastModS = s
|
||||||
|
HealBot_LastModC = c
|
||||||
|
HealBot_LastModA = a
|
||||||
HealBot_Action_RefreshTooltip(HealBot_Action_TooltipUnit)
|
HealBot_Action_RefreshTooltip(HealBot_Action_TooltipUnit)
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
HealBot_LastModState = ""
|
HealBot_LastModS = false
|
||||||
|
HealBot_LastModC = false
|
||||||
|
HealBot_LastModA = false
|
||||||
end
|
end
|
||||||
|
|
||||||
if HealBot_TargetRestorePending then
|
if HealBot_TargetRestorePending then
|
||||||
@@ -73,21 +74,11 @@ function HealBot_OnUpdate(this, arg1)
|
|||||||
end
|
end
|
||||||
|
|
||||||
-- Process Dirty Queue for MVC View
|
-- Process Dirty Queue for MVC View
|
||||||
if next(HealBot_View_DirtyUnits) ~= nil then
|
local unitID, _ = next(HealBot_View_DirtyUnits)
|
||||||
for unitID in pairs(HealBot_View_DirtyUnits) do
|
while unitID do
|
||||||
HealBot_Action_RefreshButtons(unitID)
|
HealBot_Action_RefreshButtons(unitID)
|
||||||
HealBot_View_DirtyUnits[unitID] = nil
|
HealBot_View_DirtyUnits[unitID] = nil
|
||||||
end
|
unitID, _ = next(HealBot_View_DirtyUnits)
|
||||||
end
|
|
||||||
|
|
||||||
HealBot_Timer1 = HealBot_Timer1 + arg1;
|
|
||||||
if HealBot_Timer1 >= 2.5 then
|
|
||||||
if not HealBot_IsFighting then
|
|
||||||
HealsIn_Timer = HealsIn_Timer + 1;
|
|
||||||
if HealsIn_Timer >= 10 then
|
|
||||||
HealBot_HealsIn = {};
|
|
||||||
HealBot_Healers = {};
|
|
||||||
HealsIn_Timer = 0;
|
|
||||||
end
|
end
|
||||||
|
|
||||||
if HealBot_EquipChangeTimer > 0 then
|
if HealBot_EquipChangeTimer > 0 then
|
||||||
@@ -100,6 +91,18 @@ function HealBot_OnUpdate(this, arg1)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
HealBot_Timer1 = HealBot_Timer1 + arg1;
|
||||||
|
if HealBot_Timer1 >= 2.5 then
|
||||||
|
if not HealBot_IsFighting then
|
||||||
|
HealsIn_Timer = HealsIn_Timer + 1;
|
||||||
|
if HealsIn_Timer >= 10 then
|
||||||
|
for k in pairs(HealBot_HealsIn) do HealBot_HealsIn[k] = nil end
|
||||||
|
for k in pairs(HealBot_Healers) do HealBot_Healers[k] = nil end
|
||||||
|
HealsIn_Timer = 0;
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if HealBot_SpellsInitFlag > 1 then
|
if HealBot_SpellsInitFlag > 1 then
|
||||||
HealBot_SpellsInitFlag = HealBot_SpellsInitFlag + 1;
|
HealBot_SpellsInitFlag = HealBot_SpellsInitFlag + 1;
|
||||||
if HealBot_SpellsInitFlag > 2 then
|
if HealBot_SpellsInitFlag > 2 then
|
||||||
@@ -131,32 +134,28 @@ local HealBot_EventHandlers = {
|
|||||||
HealBot_OnEvent_UnitHealth(this, arg1)
|
HealBot_OnEvent_UnitHealth(this, arg1)
|
||||||
end,
|
end,
|
||||||
["UNIT_MANA"] = function(this, arg1)
|
["UNIT_MANA"] = function(this, arg1)
|
||||||
|
if arg1 ~= "player" and HealBot_Config.ShowManaBars == 0 then return end
|
||||||
if HealBot_Model:UpdateUnitPower(arg1) then
|
if HealBot_Model:UpdateUnitPower(arg1) then
|
||||||
HealBot_Model:NotifyObservers("UNIT_POWER_CHANGED", arg1)
|
HealBot_Model:NotifyObservers("UNIT_POWER_CHANGED", arg1)
|
||||||
end
|
end
|
||||||
if (arg1 == "player") then HealBot_RecalcHeals(); end
|
|
||||||
HealBot_Action_RefreshButtons(arg1);
|
|
||||||
end,
|
end,
|
||||||
["UNIT_RAGE"] = function(this, arg1)
|
["UNIT_RAGE"] = function(this, arg1)
|
||||||
|
if arg1 ~= "player" and HealBot_Config.ShowManaBars == 0 then return end
|
||||||
if HealBot_Model:UpdateUnitPower(arg1) then
|
if HealBot_Model:UpdateUnitPower(arg1) then
|
||||||
HealBot_Model:NotifyObservers("UNIT_POWER_CHANGED", arg1)
|
HealBot_Model:NotifyObservers("UNIT_POWER_CHANGED", arg1)
|
||||||
end
|
end
|
||||||
if (arg1 == "player") then HealBot_RecalcHeals(); end
|
|
||||||
HealBot_Action_RefreshButtons(arg1);
|
|
||||||
end,
|
end,
|
||||||
["UNIT_ENERGY"] = function(this, arg1)
|
["UNIT_ENERGY"] = function(this, arg1)
|
||||||
|
if arg1 ~= "player" and HealBot_Config.ShowManaBars == 0 then return end
|
||||||
if HealBot_Model:UpdateUnitPower(arg1) then
|
if HealBot_Model:UpdateUnitPower(arg1) then
|
||||||
HealBot_Model:NotifyObservers("UNIT_POWER_CHANGED", arg1)
|
HealBot_Model:NotifyObservers("UNIT_POWER_CHANGED", arg1)
|
||||||
end
|
end
|
||||||
if (arg1 == "player") then HealBot_RecalcHeals(); end
|
|
||||||
HealBot_Action_RefreshButtons(arg1);
|
|
||||||
end,
|
end,
|
||||||
["UNIT_DISPLAYPOWER"] = function(this, arg1)
|
["UNIT_DISPLAYPOWER"] = function(this, arg1)
|
||||||
|
if arg1 ~= "player" and HealBot_Config.ShowManaBars == 0 then return end
|
||||||
if HealBot_Model:UpdateUnitPower(arg1) then
|
if HealBot_Model:UpdateUnitPower(arg1) then
|
||||||
HealBot_Model:NotifyObservers("UNIT_POWER_CHANGED", arg1)
|
HealBot_Model:NotifyObservers("UNIT_POWER_CHANGED", arg1)
|
||||||
end
|
end
|
||||||
if (arg1 == "player") then HealBot_RecalcHeals(); end
|
|
||||||
HealBot_Action_RefreshButtons(arg1);
|
|
||||||
end,
|
end,
|
||||||
["UNIT_AURA"] = function(this, arg1)
|
["UNIT_AURA"] = function(this, arg1)
|
||||||
HealBot_Model:MarkAuraChanged(arg1)
|
HealBot_Model:MarkAuraChanged(arg1)
|
||||||
@@ -201,8 +200,6 @@ local HealBot_EventHandlers = {
|
|||||||
["SPELLCAST_FAILED"] = function(this) HealBot_OnEvent_SpellcastStop(this, "SPELLCAST_FAILED") end,
|
["SPELLCAST_FAILED"] = function(this) HealBot_OnEvent_SpellcastStop(this, "SPELLCAST_FAILED") end,
|
||||||
["PLAYER_REGEN_DISABLED"] = function(this) HealBot_OnEvent_PlayerRegenDisabled(this) end,
|
["PLAYER_REGEN_DISABLED"] = function(this) HealBot_OnEvent_PlayerRegenDisabled(this) end,
|
||||||
["PLAYER_REGEN_ENABLED"] = function(this) HealBot_OnEvent_PlayerRegenEnabled(this) end,
|
["PLAYER_REGEN_ENABLED"] = function(this) HealBot_OnEvent_PlayerRegenEnabled(this) end,
|
||||||
["BAG_UPDATE_COOLDOWN"] = function(this, arg1) HealBot_OnEvent_BagUpdateCooldown(this, arg1) end,
|
|
||||||
["BAG_UPDATE"] = function(this, arg1) HealBot_OnEvent_BagUpdate(this, arg1) end,
|
|
||||||
["PARTY_MEMBER_DISABLE"] = function(this, arg1) HealBot_OnEvent_PartyMemberDisable(this, arg1) end,
|
["PARTY_MEMBER_DISABLE"] = function(this, arg1) HealBot_OnEvent_PartyMemberDisable(this, arg1) end,
|
||||||
["PARTY_MEMBER_ENABLE"] = function(this, arg1) HealBot_OnEvent_PartyMemberEnable(this, arg1) end,
|
["PARTY_MEMBER_ENABLE"] = function(this, arg1) HealBot_OnEvent_PartyMemberEnable(this, arg1) end,
|
||||||
["CHAT_MSG_SYSTEM"] = function(this, arg1) HealBot_OnEvent_SystemMsg(this, arg1) end,
|
["CHAT_MSG_SYSTEM"] = function(this, arg1) HealBot_OnEvent_SystemMsg(this, arg1) end,
|
||||||
@@ -212,11 +209,10 @@ local HealBot_EventHandlers = {
|
|||||||
HealBot_OnEvent_PlayerEquipmentChanged(this)
|
HealBot_OnEvent_PlayerEquipmentChanged(this)
|
||||||
end,
|
end,
|
||||||
["UNIT_INVENTORY_CHANGED"] = function(this, arg1)
|
["UNIT_INVENTORY_CHANGED"] = function(this, arg1)
|
||||||
|
if arg1 ~= "player" then return end
|
||||||
HealBot_Model:NotifyObservers("EQUIPMENT_CHANGED", arg1)
|
HealBot_Model:NotifyObservers("EQUIPMENT_CHANGED", arg1)
|
||||||
HealBot_OnEvent_PlayerEquipmentChanged2(this, arg1)
|
HealBot_OnEvent_PlayerEquipmentChanged2(this, arg1)
|
||||||
end,
|
end,
|
||||||
["PET_BAR_SHOWGRID"] = function(this) HealBot_OnEvent_PartyMembersChanged(this) end,
|
|
||||||
["PET_BAR_HIDEGRID"] = function(this) HealBot_OnEvent_PartyMembersChanged(this) end,
|
|
||||||
["UNIT_PET"] = function(this, arg1) HealBot_OnEvent_PartyMembersChanged(this) end,
|
["UNIT_PET"] = function(this, arg1) HealBot_OnEvent_PartyMembersChanged(this) end,
|
||||||
["SPELLS_CHANGED"] = function(this, arg1) HealBot_OnEvent_SpellsChanged(this, arg1) end,
|
["SPELLS_CHANGED"] = function(this, arg1) HealBot_OnEvent_SpellsChanged(this, arg1) end,
|
||||||
["UPDATE_SHAPESHIFT_FORM"] = function(this) HealBot_UpdateShapeshiftForm() end,
|
["UPDATE_SHAPESHIFT_FORM"] = function(this) HealBot_UpdateShapeshiftForm() end,
|
||||||
@@ -288,8 +284,6 @@ function HealBot_OnEvent_VariablesLoaded(this)
|
|||||||
this:RegisterEvent("PARTY_MEMBERS_CHANGED");
|
this:RegisterEvent("PARTY_MEMBERS_CHANGED");
|
||||||
this:RegisterEvent("PARTY_MEMBER_DISABLE");
|
this:RegisterEvent("PARTY_MEMBER_DISABLE");
|
||||||
this:RegisterEvent("PARTY_MEMBER_ENABLE");
|
this:RegisterEvent("PARTY_MEMBER_ENABLE");
|
||||||
this:RegisterEvent("PET_BAR_SHOWGRID");
|
|
||||||
this:RegisterEvent("PET_BAR_HIDEGRID");
|
|
||||||
this:RegisterEvent("UNIT_PET");
|
this:RegisterEvent("UNIT_PET");
|
||||||
this:RegisterEvent("UNIT_HEALTH");
|
this:RegisterEvent("UNIT_HEALTH");
|
||||||
this:RegisterEvent("UNIT_MANA");
|
this:RegisterEvent("UNIT_MANA");
|
||||||
@@ -301,8 +295,6 @@ function HealBot_OnEvent_VariablesLoaded(this)
|
|||||||
this:RegisterEvent("SPELLCAST_STOP");
|
this:RegisterEvent("SPELLCAST_STOP");
|
||||||
this:RegisterEvent("SPELLCAST_INTERRUPTED");
|
this:RegisterEvent("SPELLCAST_INTERRUPTED");
|
||||||
this:RegisterEvent("SPELLCAST_FAILED");
|
this:RegisterEvent("SPELLCAST_FAILED");
|
||||||
this:RegisterEvent("BAG_UPDATE");
|
|
||||||
this:RegisterEvent("BAG_UPDATE_COOLDOWN");
|
|
||||||
this:RegisterEvent("UNIT_AURA");
|
this:RegisterEvent("UNIT_AURA");
|
||||||
this:RegisterEvent("UPDATE_INVENTORY_ALERTS");
|
this:RegisterEvent("UPDATE_INVENTORY_ALERTS");
|
||||||
this:RegisterEvent("UNIT_INVENTORY_CHANGED");
|
this:RegisterEvent("UNIT_INVENTORY_CHANGED");
|
||||||
@@ -321,7 +313,6 @@ end
|
|||||||
function HealBot_OnEvent_UnitHealth(this, unit)
|
function HealBot_OnEvent_UnitHealth(this, unit)
|
||||||
if (not HealBot_Heals[unit]) then return end
|
if (not HealBot_Heals[unit]) then return end
|
||||||
HealBot_CheckCasting(unit);
|
HealBot_CheckCasting(unit);
|
||||||
HealBot_RecalcHeals(unit);
|
|
||||||
if unit == HealBot_Action_TooltipUnit then
|
if unit == HealBot_Action_TooltipUnit then
|
||||||
HealBot_Action_RefreshTooltip(HealBot_Action_TooltipUnit);
|
HealBot_Action_RefreshTooltip(HealBot_Action_TooltipUnit);
|
||||||
end
|
end
|
||||||
@@ -338,7 +329,7 @@ function HealBot_OnEvent_ZoneChanged(this)
|
|||||||
end
|
end
|
||||||
|
|
||||||
function HealBot_OnEvent_PlayerRegenDisabled(this)
|
function HealBot_OnEvent_PlayerRegenDisabled(this)
|
||||||
HealBot_RecalcParty();
|
-- Removed HealBot_RecalcParty();
|
||||||
if (UnitIsDeadOrGhost("player")) or (UnitOnTaxi("player")) then
|
if (UnitIsDeadOrGhost("player")) or (UnitOnTaxi("player")) then
|
||||||
if HealBot_Config.AutoClose==1 and HealBot_Config.ActionVisible~=0 then
|
if HealBot_Config.AutoClose==1 and HealBot_Config.ActionVisible~=0 then
|
||||||
HealBot_Action.ProgrammaticHide = true;
|
HealBot_Action.ProgrammaticHide = true;
|
||||||
@@ -374,11 +365,14 @@ end
|
|||||||
|
|
||||||
function HealBot_OnEvent_PlayerRegenEnabled(this)
|
function HealBot_OnEvent_PlayerRegenEnabled(this)
|
||||||
HealBot_IsFighting = false;
|
HealBot_IsFighting = false;
|
||||||
HealBot_Delay_RecalcParty = 1;
|
-- Removed HealBot_Delay_RecalcParty = 1;
|
||||||
end
|
end
|
||||||
|
|
||||||
function HealBot_OnEvent_PlayerTargetChanged(this)
|
function HealBot_OnEvent_PlayerTargetChanged(this)
|
||||||
HealBot_RecalcParty();
|
if HealBot_Action_UnitButtons and HealBot_Action_UnitButtons["target"] then
|
||||||
|
HealBot_View_DirtyUnits["target"] = true
|
||||||
|
HealBot_OnEvent_UnitAura(nil, "target");
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function HealBot_OnEvent_PartyMembersChanged(this)
|
function HealBot_OnEvent_PartyMembersChanged(this)
|
||||||
@@ -439,20 +433,6 @@ function HealBot_OnEvent_TalentsChanged(this, arg1)
|
|||||||
HealBot_AddDebug("HB: TalentsChanged");
|
HealBot_AddDebug("HB: TalentsChanged");
|
||||||
end
|
end
|
||||||
|
|
||||||
function HealBot_OnEvent_BagUpdate(this, bag)
|
|
||||||
if HealBot_EquipChangeTimer == 0 then
|
|
||||||
HealBot_RecalcSpells();
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
function HealBot_OnEvent_BagUpdateCooldown(this, bag)
|
|
||||||
if not bag then
|
|
||||||
bag = "undef"
|
|
||||||
elseif HealBot_EquipChangeTimer == 0 then
|
|
||||||
HealBot_RecalcSpells();
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
function HealBot_OnEvent_PlayerEnteringWorld(this)
|
function HealBot_OnEvent_PlayerEnteringWorld(this)
|
||||||
HealBot_IsFighting = false;
|
HealBot_IsFighting = false;
|
||||||
-- Re-apply the refresh hook late in case another addon overrode it during load
|
-- Re-apply the refresh hook late in case another addon overrode it during load
|
||||||
|
|||||||
@@ -246,7 +246,7 @@ function HealBot_CheckCasting(unit)
|
|||||||
local ag = HealBot_Config.babortcolg[HealBot_Config.Current_Skin] or 0.1;
|
local ag = HealBot_Config.babortcolg[HealBot_Config.Current_Skin] or 0.1;
|
||||||
local ab = HealBot_Config.babortcolb[HealBot_Config.Current_Skin] or 0.5;
|
local ab = HealBot_Config.babortcolb[HealBot_Config.Current_Skin] or 0.5;
|
||||||
local aa = HealBot_Config.babortcola[HealBot_Config.Current_Skin] or 1;
|
local aa = HealBot_Config.babortcola[HealBot_Config.Current_Skin] or 1;
|
||||||
bar.txt = getglobal(bar:GetName() .. "_text");
|
if not bar.txt then bar.txt = getglobal(bar:GetName() .. "_text") end
|
||||||
|
|
||||||
if HealBot_IsCasting == false and HealBot_AbortButton == 0 then
|
if HealBot_IsCasting == false and HealBot_AbortButton == 0 then
|
||||||
bar:SetStatusBarColor(ar, ag, ab, 0);
|
bar:SetStatusBarColor(ar, ag, ab, 0);
|
||||||
@@ -462,7 +462,8 @@ end
|
|||||||
|
|
||||||
function HealBot_CanCastSpell(spell, unit)
|
function HealBot_CanCastSpell(spell, unit)
|
||||||
local this = HealBot_Spells[spell];
|
local this = HealBot_Spells[spell];
|
||||||
if this.Mana > UnitMana("player") then return false end;
|
-- Removed manual mana check so WoW can properly handle 0-cost buffs (Clearcasting/Inner Focus)
|
||||||
|
-- and so tooltips can render in red instead of disappearing.
|
||||||
if this.BagSlot then
|
if this.BagSlot then
|
||||||
local bag, slot = HealBot_UnpackBagSlot(this.BagSlot);
|
local bag, slot = HealBot_UnpackBagSlot(this.BagSlot);
|
||||||
local start, duration, enable = GetContainerItemCooldown(bag, slot);
|
local start, duration, enable = GetContainerItemCooldown(bag, slot);
|
||||||
@@ -592,9 +593,7 @@ function HealBot_InitSpells()
|
|||||||
end
|
end
|
||||||
id = id + 1;
|
id = id + 1;
|
||||||
end
|
end
|
||||||
if class == "PRIEST" or class == "DRUID" or class == "PALADIN" or class == "SHAMAN" then
|
|
||||||
HealBot_AddChat("Initiated HealBot_CurrentSpells with " .. cnt .. " Spells");
|
|
||||||
end
|
|
||||||
return cnt;
|
return cnt;
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
+25
-1
@@ -2,6 +2,20 @@ HealBot_ConfigDefaults = {
|
|||||||
ShowManaBars=0,
|
ShowManaBars=0,
|
||||||
ManaBarsHealersOnly=0,
|
ManaBarsHealersOnly=0,
|
||||||
Version = HEALBOT_VERSION,
|
Version = HEALBOT_VERSION,
|
||||||
|
AutoSwap_Enabled = 0,
|
||||||
|
AutoSwap_Profiles = {
|
||||||
|
[1] = HEALBOT_SKINS_STD,
|
||||||
|
[2] = HEALBOT_SKINS_STD,
|
||||||
|
[3] = HEALBOT_SKINS_STD,
|
||||||
|
[4] = HEALBOT_SKINS_STD,
|
||||||
|
[5] = HEALBOT_SKINS_STD,
|
||||||
|
},
|
||||||
|
bmaxrows = {
|
||||||
|
[HEALBOT_SKINS_STD] = 0,
|
||||||
|
},
|
||||||
|
GridOrientation = {
|
||||||
|
[HEALBOT_SKINS_STD] = 1,
|
||||||
|
},
|
||||||
AlertLevel = 0.95,
|
AlertLevel = 0.95,
|
||||||
AutoClose = 1,
|
AutoClose = 1,
|
||||||
PanelSounds = 1,
|
PanelSounds = 1,
|
||||||
@@ -181,7 +195,17 @@ HealBot_ConfigDefaults = {
|
|||||||
Current_Skin = "Modern Flat",
|
Current_Skin = "Modern Flat",
|
||||||
Skin_ID = 1,
|
Skin_ID = 1,
|
||||||
Skins = {"Modern Flat", HEALBOT_SKINS_STD, "HealBot Party", "HealBot Raid", "Alteric Valley"},
|
Skins = {"Modern Flat", HEALBOT_SKINS_STD, "HealBot Party", "HealBot Raid", "Alteric Valley"},
|
||||||
|
AutoSwap_Enabled = 0,
|
||||||
|
AutoSwap_Profiles = {
|
||||||
|
[1] = "Modern Flat", -- Solo
|
||||||
|
[2] = "HealBot Party", -- Party (2-5)
|
||||||
|
[3] = "HealBot Raid", -- Raid 15 (6-15)
|
||||||
|
[4] = "HealBot Raid", -- Raid 25 (16-25)
|
||||||
|
[5] = "HealBot Raid", -- Raid 40 (26-40)
|
||||||
|
},
|
||||||
numcols = {[HEALBOT_SKINS_STD] = 1, ["HealBot Party"] = 1, ["HealBot Raid"] = 4, ["Alteric Valley"] = 2, ["Modern Flat"] = 1},
|
numcols = {[HEALBOT_SKINS_STD] = 1, ["HealBot Party"] = 1, ["HealBot Raid"] = 4, ["Alteric Valley"] = 2, ["Modern Flat"] = 1},
|
||||||
|
bmaxrows = {[HEALBOT_SKINS_STD] = 0, ["HealBot Party"] = 0, ["HealBot Raid"] = 0, ["Alteric Valley"] = 0, ["Modern Flat"] = 0},
|
||||||
|
GridOrientation = {[HEALBOT_SKINS_STD] = 1, ["HealBot Party"] = 1, ["HealBot Raid"] = 1, ["Alteric Valley"] = 1, ["Modern Flat"] = 1},
|
||||||
btexture = {[HEALBOT_SKINS_STD] = 8,["HealBot Party"] = 6, ["HealBot Raid"] = 7, ["Alteric Valley"] = 9, ["Modern Flat"] = 10},
|
btexture = {[HEALBOT_SKINS_STD] = 8,["HealBot Party"] = 6, ["HealBot Raid"] = 7, ["Alteric Valley"] = 9, ["Modern Flat"] = 10},
|
||||||
bcspace = {[HEALBOT_SKINS_STD] = 4, ["HealBot Party"] = 4, ["HealBot Raid"] = 2, ["Alteric Valley"] = 2, ["Modern Flat"] = 4},
|
bcspace = {[HEALBOT_SKINS_STD] = 4, ["HealBot Party"] = 4, ["HealBot Raid"] = 2, ["Alteric Valley"] = 2, ["Modern Flat"] = 4},
|
||||||
brspace = {[HEALBOT_SKINS_STD] = 1, ["HealBot Party"] = 2, ["HealBot Raid"] = 2, ["Alteric Valley"] = 1, ["Modern Flat"] = 2},
|
brspace = {[HEALBOT_SKINS_STD] = 1, ["HealBot Party"] = 2, ["HealBot Raid"] = 2, ["Alteric Valley"] = 1, ["Modern Flat"] = 2},
|
||||||
@@ -545,7 +569,7 @@ HealBot_Debuff_Types = {
|
|||||||
HealBot_IsFighting = false;
|
HealBot_IsFighting = false;
|
||||||
|
|
||||||
HealBot_DebuffPriority = {"none"};
|
HealBot_DebuffPriority = {"none"};
|
||||||
HealBot_DebuffWatch = {[HEALBOT_DISEASE_en]="NO", [HEALBOT_MAGIC_en]="NO", [HEALBOT_POISON_en]="NO", [HEALBOT_CURSE_en]="NO"};
|
HealBot_DebuffWatch = {[HEALBOT_DISEASE_en]=false, [HEALBOT_MAGIC_en]=false, [HEALBOT_POISON_en]=false, [HEALBOT_CURSE_en]=false};
|
||||||
|
|
||||||
HealBot_Heals = {};
|
HealBot_Heals = {};
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
HEALBOT_VERSION = GetAddOnMetadata("HealBotBlue", "Version") or "Unknown";
|
HEALBOT_VERSION = GetAddOnMetadata("HealBotBlue", "Version");
|
||||||
|
|
||||||
-------------
|
-------------
|
||||||
-- ENGLISH --
|
-- ENGLISH --
|
||||||
|
|||||||
+3
-1
@@ -234,7 +234,7 @@ function HealBot_Options_OnLoad(this)
|
|||||||
table.insert(UISpecialFrames,this:GetName());
|
table.insert(UISpecialFrames,this:GetName());
|
||||||
|
|
||||||
-- Tabs
|
-- Tabs
|
||||||
PanelTemplates_SetNumTabs(this,7);
|
PanelTemplates_SetNumTabs(this,8);
|
||||||
this.selectedTab = 1;
|
this.selectedTab = 1;
|
||||||
PanelTemplates_UpdateTabs(this);
|
PanelTemplates_UpdateTabs(this);
|
||||||
HealBot_Options_ShowPanel(this.selectedTab);
|
HealBot_Options_ShowPanel(this.selectedTab);
|
||||||
@@ -314,6 +314,8 @@ function HealBot_Options_SetSkins()
|
|||||||
HealBot_Options_BarHeightS:SetValue(HealBot_Config.bheight[HealBot_Config.Current_Skin])
|
HealBot_Options_BarHeightS:SetValue(HealBot_Config.bheight[HealBot_Config.Current_Skin])
|
||||||
HealBot_Options_BarWidthS:SetValue(HealBot_Config.bwidth[HealBot_Config.Current_Skin])
|
HealBot_Options_BarWidthS:SetValue(HealBot_Config.bwidth[HealBot_Config.Current_Skin])
|
||||||
HealBot_Options_BarNumColsS:SetValue(HealBot_Config.numcols[HealBot_Config.Current_Skin])
|
HealBot_Options_BarNumColsS:SetValue(HealBot_Config.numcols[HealBot_Config.Current_Skin])
|
||||||
|
HealBot_Options_BarMaxRowsS:SetValue((HealBot_Config.bmaxrows and HealBot_Config.bmaxrows[HealBot_Config.Current_Skin]) or 0)
|
||||||
|
HealBot_Options_GridOrientation:SetChecked(((HealBot_Config.GridOrientation and HealBot_Config.GridOrientation[HealBot_Config.Current_Skin]) == 2) and 1 or nil)
|
||||||
HealBot_Options_BarBRSpaceS:SetValue(HealBot_Config.brspace[HealBot_Config.Current_Skin])
|
HealBot_Options_BarBRSpaceS:SetValue(HealBot_Config.brspace[HealBot_Config.Current_Skin])
|
||||||
HealBot_Options_BarBCSpaceS:SetValue(HealBot_Config.bcspace[HealBot_Config.Current_Skin])
|
HealBot_Options_BarBCSpaceS:SetValue(HealBot_Config.bcspace[HealBot_Config.Current_Skin])
|
||||||
HealBot_Options_FramePaddingS:SetValue((HealBot_Config.bpadding and HealBot_Config.bpadding[HealBot_Config.Current_Skin]) or 10)
|
HealBot_Options_FramePaddingS:SetValue((HealBot_Config.bpadding and HealBot_Config.bpadding[HealBot_Config.Current_Skin]) or 10)
|
||||||
|
|||||||
+5
-27
@@ -94,7 +94,7 @@
|
|||||||
<Frame name="HealBot_Options" toplevel="true" frameStrata="DIALOG"
|
<Frame name="HealBot_Options" toplevel="true" frameStrata="DIALOG"
|
||||||
movable="true" parent="UIParent" enableMouse="true" hidden="true">
|
movable="true" parent="UIParent" enableMouse="true" hidden="true">
|
||||||
<Size>
|
<Size>
|
||||||
<AbsDimension x="420" y="455"/>
|
<AbsDimension x="480" y="455"/>
|
||||||
</Size>
|
</Size>
|
||||||
<Anchors>
|
<Anchors>
|
||||||
<Anchor point="CENTER">
|
<Anchor point="CENTER">
|
||||||
@@ -206,38 +206,16 @@
|
|||||||
</Anchor>
|
</Anchor>
|
||||||
</Anchors>
|
</Anchors>
|
||||||
</Button>
|
</Button>
|
||||||
<Button name="HealBot_Options_Defaults" inherits="UIPanelButtonTemplate" text="HEALBOT_OPTIONS_DEFAULTS">
|
<Button name="HealBot_OptionsTab8" inherits="HealBot_Options_Tab" id="8" text="Auto">
|
||||||
<Size>
|
|
||||||
<AbsDimension x="80" y="22"/>
|
|
||||||
</Size>
|
|
||||||
<Anchors>
|
<Anchors>
|
||||||
<Anchor point="BOTTOM" relativePoint="BOTTOM">
|
<Anchor point="LEFT" relativeTo="HealBot_OptionsTab7" relativePoint="RIGHT">
|
||||||
<Offset>
|
<Offset>
|
||||||
<AbsDimension x="-50" y="15"/>
|
<AbsDimension x="-14" y="0" />
|
||||||
</Offset>
|
</Offset>
|
||||||
</Anchor>
|
</Anchor>
|
||||||
</Anchors>
|
</Anchors>
|
||||||
<Scripts>
|
|
||||||
<OnClick>HealBot_Options_Defaults_OnClick(this)</OnClick>
|
|
||||||
</Scripts>
|
|
||||||
</Button>
|
|
||||||
<Button name="HealBot_Options_CloseButton" inherits="UIPanelButtonTemplate" text="HEALBOT_OPTIONS_CLOSE">
|
|
||||||
<Size>
|
|
||||||
<AbsDimension x="80" y="22"/>
|
|
||||||
</Size>
|
|
||||||
<Anchors>
|
|
||||||
<Anchor point="BOTTOM" relativePoint="BOTTOM">
|
|
||||||
<Offset>
|
|
||||||
<AbsDimension x="50" y="15"/>
|
|
||||||
</Offset>
|
|
||||||
</Anchor>
|
|
||||||
</Anchors>
|
|
||||||
<Scripts>
|
|
||||||
<OnClick>
|
|
||||||
HideUIPanel(this:GetParent());
|
|
||||||
</OnClick>
|
|
||||||
</Scripts>
|
|
||||||
</Button>
|
</Button>
|
||||||
|
|
||||||
</Frames>
|
</Frames>
|
||||||
<Scripts>
|
<Scripts>
|
||||||
<OnLoad>HealBot_Options_OnLoad(this);</OnLoad>
|
<OnLoad>HealBot_Options_OnLoad(this);</OnLoad>
|
||||||
|
|||||||
@@ -0,0 +1,82 @@
|
|||||||
|
function HealBot_Options_AutoSwap_OnClick(this)
|
||||||
|
if this:GetChecked() then
|
||||||
|
HealBot_Config.AutoSwap_Enabled = 1
|
||||||
|
else
|
||||||
|
HealBot_Config.AutoSwap_Enabled = 0
|
||||||
|
end
|
||||||
|
HealBot_Action_PartyChanged()
|
||||||
|
end
|
||||||
|
|
||||||
|
function HealBot_Options_Auto_Initialize()
|
||||||
|
local dropdownName = UIDROPDOWNMENU_OPEN_MENU
|
||||||
|
if not dropdownName then return end
|
||||||
|
local dropdownFrame = getglobal(dropdownName)
|
||||||
|
if not dropdownFrame then return end
|
||||||
|
local id = dropdownFrame:GetID()
|
||||||
|
if not id then return end
|
||||||
|
|
||||||
|
for i=1, getn(HealBot_Config.Skins), 1 do
|
||||||
|
local info = {}
|
||||||
|
info.text = HealBot_Config.Skins[i]
|
||||||
|
info.func = HealBot_Options_Auto_OnSelect
|
||||||
|
info.value = id
|
||||||
|
if not HealBot_Config.AutoSwap_Profiles then HealBot_Config.AutoSwap_Profiles = {} end
|
||||||
|
if HealBot_Config.AutoSwap_Profiles[id] == HealBot_Config.Skins[i] then
|
||||||
|
info.checked = 1
|
||||||
|
else
|
||||||
|
info.checked = nil
|
||||||
|
end
|
||||||
|
UIDropDownMenu_AddButton(info)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function HealBot_Options_Auto_OnSelect()
|
||||||
|
local skin = this:GetText()
|
||||||
|
local id = this.value
|
||||||
|
if not id or not skin then return end
|
||||||
|
|
||||||
|
if not HealBot_Config.AutoSwap_Profiles then HealBot_Config.AutoSwap_Profiles = {} end
|
||||||
|
HealBot_Config.AutoSwap_Profiles[id] = skin
|
||||||
|
|
||||||
|
local dropdowns = {
|
||||||
|
"HealBot_Options_Auto_Solo",
|
||||||
|
"HealBot_Options_Auto_Party",
|
||||||
|
"HealBot_Options_Auto_Raid15",
|
||||||
|
"HealBot_Options_Auto_Raid25",
|
||||||
|
"HealBot_Options_Auto_Raid40"
|
||||||
|
}
|
||||||
|
local dropdownName = dropdowns[id]
|
||||||
|
local dropdownFrame = getglobal(dropdownName)
|
||||||
|
HealBot_UIDropDownMenu_SetSelectedValue(dropdownFrame, skin)
|
||||||
|
UIDropDownMenu_SetText(skin, dropdownFrame)
|
||||||
|
|
||||||
|
HealBot_Action_PartyChanged()
|
||||||
|
end
|
||||||
|
|
||||||
|
function HealBot_Options_Auto_OnShow(this)
|
||||||
|
if HealBot_Config.AutoSwap_Enabled == 1 then
|
||||||
|
HealBot_Options_AutoSwap:SetChecked(1)
|
||||||
|
else
|
||||||
|
HealBot_Options_AutoSwap:SetChecked(nil)
|
||||||
|
end
|
||||||
|
|
||||||
|
local dropdowns = {
|
||||||
|
"HealBot_Options_Auto_Solo",
|
||||||
|
"HealBot_Options_Auto_Party",
|
||||||
|
"HealBot_Options_Auto_Raid15",
|
||||||
|
"HealBot_Options_Auto_Raid25",
|
||||||
|
"HealBot_Options_Auto_Raid40"
|
||||||
|
}
|
||||||
|
for id, name in ipairs(dropdowns) do
|
||||||
|
local dropdownFrame = getglobal(name)
|
||||||
|
if dropdownFrame then
|
||||||
|
UIDropDownMenu_SetWidth(150, dropdownFrame)
|
||||||
|
if not HealBot_Config.AutoSwap_Profiles then HealBot_Config.AutoSwap_Profiles = {} end
|
||||||
|
local skin = HealBot_Config.AutoSwap_Profiles[id]
|
||||||
|
if skin then
|
||||||
|
HealBot_UIDropDownMenu_SetSelectedValue(dropdownFrame, skin)
|
||||||
|
UIDropDownMenu_SetText(skin, dropdownFrame)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -0,0 +1,152 @@
|
|||||||
|
<Ui xmlns="http://www.blizzard.com/wow/ui/"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://www.blizzard.com/wow/ui/ ..\FrameXML\UI.xsd">
|
||||||
|
<Script file="HealBot_Options_Auto.lua" />
|
||||||
|
<Frame name="HealBot_Options_Panel8" parent="HealBot_Options" hidden="true" setAllPoints="true">
|
||||||
|
<Frames>
|
||||||
|
<CheckButton name="HealBot_Options_AutoSwap" inherits="OptionsCheckButtonTemplate">
|
||||||
|
<Anchors>
|
||||||
|
<Anchor point="TOPLEFT">
|
||||||
|
<Offset>
|
||||||
|
<AbsDimension x="25" y="-30" />
|
||||||
|
</Offset>
|
||||||
|
</Anchor>
|
||||||
|
</Anchors>
|
||||||
|
<Scripts>
|
||||||
|
<OnLoad>
|
||||||
|
getglobal(this:GetName().."Text"):SetText("Enable Auto-Swap");
|
||||||
|
</OnLoad>
|
||||||
|
<OnClick>
|
||||||
|
HealBot_Options_AutoSwap_OnClick(this);
|
||||||
|
</OnClick>
|
||||||
|
</Scripts>
|
||||||
|
</CheckButton>
|
||||||
|
|
||||||
|
<Frame name="HealBot_Options_Auto_Solo" inherits="UIDropDownMenuTemplate" id="1">
|
||||||
|
<Layers>
|
||||||
|
<Layer level="BACKGROUND">
|
||||||
|
<FontString name="$parentLabel" text="Solo Skin:" inherits="GameFontNormalSmall">
|
||||||
|
<Anchors>
|
||||||
|
<Anchor point="TOPLEFT">
|
||||||
|
<Offset><AbsDimension x="-10" y="15" /></Offset>
|
||||||
|
</Anchor>
|
||||||
|
</Anchors>
|
||||||
|
</FontString>
|
||||||
|
</Layer>
|
||||||
|
</Layers>
|
||||||
|
<Anchors>
|
||||||
|
<Anchor point="TOPLEFT">
|
||||||
|
<Offset><AbsDimension x="30" y="-80" /></Offset>
|
||||||
|
</Anchor>
|
||||||
|
</Anchors>
|
||||||
|
<Scripts>
|
||||||
|
<OnLoad>
|
||||||
|
UIDropDownMenu_Initialize(this, HealBot_Options_Auto_Initialize);
|
||||||
|
</OnLoad>
|
||||||
|
</Scripts>
|
||||||
|
</Frame>
|
||||||
|
|
||||||
|
<Frame name="HealBot_Options_Auto_Party" inherits="UIDropDownMenuTemplate" id="2">
|
||||||
|
<Layers>
|
||||||
|
<Layer level="BACKGROUND">
|
||||||
|
<FontString name="$parentLabel" text="Party Skin:" inherits="GameFontNormalSmall">
|
||||||
|
<Anchors>
|
||||||
|
<Anchor point="TOPLEFT">
|
||||||
|
<Offset><AbsDimension x="-10" y="15" /></Offset>
|
||||||
|
</Anchor>
|
||||||
|
</Anchors>
|
||||||
|
</FontString>
|
||||||
|
</Layer>
|
||||||
|
</Layers>
|
||||||
|
<Anchors>
|
||||||
|
<Anchor point="TOPLEFT">
|
||||||
|
<Offset><AbsDimension x="30" y="-130" /></Offset>
|
||||||
|
</Anchor>
|
||||||
|
</Anchors>
|
||||||
|
<Scripts>
|
||||||
|
<OnLoad>
|
||||||
|
UIDropDownMenu_Initialize(this, HealBot_Options_Auto_Initialize);
|
||||||
|
</OnLoad>
|
||||||
|
</Scripts>
|
||||||
|
</Frame>
|
||||||
|
|
||||||
|
<Frame name="HealBot_Options_Auto_Raid15" inherits="UIDropDownMenuTemplate" id="3">
|
||||||
|
<Layers>
|
||||||
|
<Layer level="BACKGROUND">
|
||||||
|
<FontString name="$parentLabel" text="Raid 15 Skin:" inherits="GameFontNormalSmall">
|
||||||
|
<Anchors>
|
||||||
|
<Anchor point="TOPLEFT">
|
||||||
|
<Offset><AbsDimension x="-10" y="15" /></Offset>
|
||||||
|
</Anchor>
|
||||||
|
</Anchors>
|
||||||
|
</FontString>
|
||||||
|
</Layer>
|
||||||
|
</Layers>
|
||||||
|
<Anchors>
|
||||||
|
<Anchor point="TOPLEFT">
|
||||||
|
<Offset><AbsDimension x="30" y="-180" /></Offset>
|
||||||
|
</Anchor>
|
||||||
|
</Anchors>
|
||||||
|
<Scripts>
|
||||||
|
<OnLoad>
|
||||||
|
UIDropDownMenu_Initialize(this, HealBot_Options_Auto_Initialize);
|
||||||
|
</OnLoad>
|
||||||
|
</Scripts>
|
||||||
|
</Frame>
|
||||||
|
|
||||||
|
<Frame name="HealBot_Options_Auto_Raid25" inherits="UIDropDownMenuTemplate" id="4">
|
||||||
|
<Layers>
|
||||||
|
<Layer level="BACKGROUND">
|
||||||
|
<FontString name="$parentLabel" text="Raid 25 Skin:" inherits="GameFontNormalSmall">
|
||||||
|
<Anchors>
|
||||||
|
<Anchor point="TOPLEFT">
|
||||||
|
<Offset><AbsDimension x="-10" y="15" /></Offset>
|
||||||
|
</Anchor>
|
||||||
|
</Anchors>
|
||||||
|
</FontString>
|
||||||
|
</Layer>
|
||||||
|
</Layers>
|
||||||
|
<Anchors>
|
||||||
|
<Anchor point="TOPLEFT">
|
||||||
|
<Offset><AbsDimension x="30" y="-230" /></Offset>
|
||||||
|
</Anchor>
|
||||||
|
</Anchors>
|
||||||
|
<Scripts>
|
||||||
|
<OnLoad>
|
||||||
|
UIDropDownMenu_Initialize(this, HealBot_Options_Auto_Initialize);
|
||||||
|
</OnLoad>
|
||||||
|
</Scripts>
|
||||||
|
</Frame>
|
||||||
|
|
||||||
|
<Frame name="HealBot_Options_Auto_Raid40" inherits="UIDropDownMenuTemplate" id="5">
|
||||||
|
<Layers>
|
||||||
|
<Layer level="BACKGROUND">
|
||||||
|
<FontString name="$parentLabel" text="Raid 40 Skin:" inherits="GameFontNormalSmall">
|
||||||
|
<Anchors>
|
||||||
|
<Anchor point="TOPLEFT">
|
||||||
|
<Offset><AbsDimension x="-10" y="15" /></Offset>
|
||||||
|
</Anchor>
|
||||||
|
</Anchors>
|
||||||
|
</FontString>
|
||||||
|
</Layer>
|
||||||
|
</Layers>
|
||||||
|
<Anchors>
|
||||||
|
<Anchor point="TOPLEFT">
|
||||||
|
<Offset><AbsDimension x="30" y="-280" /></Offset>
|
||||||
|
</Anchor>
|
||||||
|
</Anchors>
|
||||||
|
<Scripts>
|
||||||
|
<OnLoad>
|
||||||
|
UIDropDownMenu_Initialize(this, HealBot_Options_Auto_Initialize);
|
||||||
|
</OnLoad>
|
||||||
|
</Scripts>
|
||||||
|
</Frame>
|
||||||
|
|
||||||
|
</Frames>
|
||||||
|
<Scripts>
|
||||||
|
<OnShow>
|
||||||
|
HealBot_Options_Auto_OnShow(this);
|
||||||
|
</OnShow>
|
||||||
|
</Scripts>
|
||||||
|
</Frame>
|
||||||
|
</Ui>
|
||||||
@@ -247,16 +247,16 @@ function HealBot_Options_Debuff_Reset()
|
|||||||
local classEN=HealBot_UnitClass("player")
|
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" then
|
||||||
local spell = HealBot_Config.CDCLeftText[UnitClass("player")];
|
local spell = HealBot_Config.CDCLeftText[UnitClass("player")];
|
||||||
HealBot_DebuffWatch = {[HEALBOT_DISEASE_en]="NO", [HEALBOT_MAGIC_en]="NO", [HEALBOT_POISON_en]="NO", [HEALBOT_CURSE_en]="NO" }
|
HealBot_DebuffWatch = {[HEALBOT_DISEASE_en]=false, [HEALBOT_MAGIC_en]=false, [HEALBOT_POISON_en]=false, [HEALBOT_CURSE_en]=false }
|
||||||
if spell ~= "None" then
|
if spell ~= "None" then
|
||||||
table.foreach(HealBot_Debuff_Types[spell], function (index,debuff)
|
table.foreach(HealBot_Debuff_Types[spell], function (index,debuff)
|
||||||
HealBot_DebuffWatch[debuff]="YES";
|
HealBot_DebuffWatch[debuff]=true;
|
||||||
end)
|
end)
|
||||||
end
|
end
|
||||||
spell = HealBot_Config.CDCRightText[UnitClass("player")];
|
spell = HealBot_Config.CDCRightText[UnitClass("player")];
|
||||||
if spell ~= "None" then
|
if spell ~= "None" then
|
||||||
table.foreach(HealBot_Debuff_Types[spell], function (index,debuff)
|
table.foreach(HealBot_Debuff_Types[spell], function (index,debuff)
|
||||||
HealBot_DebuffWatch[debuff]="YES";
|
HealBot_DebuffWatch[debuff]=true;
|
||||||
end)
|
end)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -265,8 +265,38 @@
|
|||||||
</Scripts>
|
</Scripts>
|
||||||
</CheckButton>
|
</CheckButton>
|
||||||
|
|
||||||
|
<Button name="HealBot_Options_Defaults" inherits="UIPanelButtonTemplate" text="HEALBOT_OPTIONS_DEFAULTS">
|
||||||
|
<Size>
|
||||||
|
<AbsDimension x="80" y="22"/>
|
||||||
|
</Size>
|
||||||
|
<Anchors>
|
||||||
|
<Anchor point="BOTTOM" relativePoint="BOTTOM">
|
||||||
|
<Offset>
|
||||||
|
<AbsDimension x="-50" y="15"/>
|
||||||
|
</Offset>
|
||||||
|
</Anchor>
|
||||||
|
</Anchors>
|
||||||
|
<Scripts>
|
||||||
|
<OnClick>HealBot_Options_Defaults_OnClick(this)</OnClick>
|
||||||
|
</Scripts>
|
||||||
|
</Button>
|
||||||
|
<Button name="HealBot_Options_CloseButton" inherits="UIPanelButtonTemplate" text="HEALBOT_OPTIONS_CLOSE">
|
||||||
|
<Size>
|
||||||
|
<AbsDimension x="80" y="22"/>
|
||||||
|
</Size>
|
||||||
|
<Anchors>
|
||||||
|
<Anchor point="BOTTOM" relativePoint="BOTTOM">
|
||||||
|
<Offset>
|
||||||
|
<AbsDimension x="50" y="15"/>
|
||||||
|
</Offset>
|
||||||
|
</Anchor>
|
||||||
|
</Anchors>
|
||||||
|
<Scripts>
|
||||||
|
<OnClick>
|
||||||
|
HideUIPanel(this:GetParent():GetParent());
|
||||||
|
</OnClick>
|
||||||
|
</Scripts>
|
||||||
|
</Button>
|
||||||
</Frames>
|
</Frames>
|
||||||
</Frame>
|
</Frame>
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,22 @@
|
|||||||
-- HealBot Options panel file: HealBot_Options_Skins.lua
|
-- HealBot Options panel file: HealBot_Options_Skins.lua
|
||||||
-- Split from original HealBot_Options.lua
|
-- Split from original HealBot_Options.lua
|
||||||
|
|
||||||
|
function HealBot_Options_BarMaxRowsS_OnValueChanged(this)
|
||||||
|
if not HealBot_Config.bmaxrows then HealBot_Config.bmaxrows = {} end
|
||||||
|
HealBot_Config.bmaxrows[HealBot_Config.Current_Skin] = this:GetValue()
|
||||||
|
HealBot_Action_PartyChanged()
|
||||||
|
end
|
||||||
|
|
||||||
|
function HealBot_Options_GridOrientation_OnClick(this)
|
||||||
|
if not HealBot_Config.GridOrientation then HealBot_Config.GridOrientation = {} end
|
||||||
|
if this:GetChecked() then
|
||||||
|
HealBot_Config.GridOrientation[HealBot_Config.Current_Skin] = 2 -- Horizontal
|
||||||
|
else
|
||||||
|
HealBot_Config.GridOrientation[HealBot_Config.Current_Skin] = 1 -- Vertical
|
||||||
|
end
|
||||||
|
HealBot_Action_PartyChanged()
|
||||||
|
end
|
||||||
|
|
||||||
function HealBot_Options_NewSkin_OnTextChanged(this)
|
function HealBot_Options_NewSkin_OnTextChanged(this)
|
||||||
local text= this:GetText()
|
local text= this:GetText()
|
||||||
if string.len(text)>0 then
|
if string.len(text)>0 then
|
||||||
@@ -11,6 +27,10 @@ function HealBot_Options_NewSkin_OnTextChanged(this)
|
|||||||
end
|
end
|
||||||
function HealBot_Options_NewSkinb_OnClick(this)
|
function HealBot_Options_NewSkinb_OnClick(this)
|
||||||
HealBot_Config.numcols[HealBot_Options_NewSkin:GetText()] = HealBot_Config.numcols[HealBot_Config.Current_Skin]
|
HealBot_Config.numcols[HealBot_Options_NewSkin:GetText()] = HealBot_Config.numcols[HealBot_Config.Current_Skin]
|
||||||
|
if not HealBot_Config.bmaxrows then HealBot_Config.bmaxrows = {} end
|
||||||
|
if not HealBot_Config.GridOrientation then HealBot_Config.GridOrientation = {} end
|
||||||
|
HealBot_Config.bmaxrows[HealBot_Options_NewSkin:GetText()] = HealBot_Config.bmaxrows[HealBot_Config.Current_Skin] or 0
|
||||||
|
HealBot_Config.GridOrientation[HealBot_Options_NewSkin:GetText()] = HealBot_Config.GridOrientation[HealBot_Config.Current_Skin] or 1
|
||||||
HealBot_Config.btexture[HealBot_Options_NewSkin:GetText()] = HealBot_Config.btexture[HealBot_Config.Current_Skin]
|
HealBot_Config.btexture[HealBot_Options_NewSkin:GetText()] = HealBot_Config.btexture[HealBot_Config.Current_Skin]
|
||||||
HealBot_Config.bcspace[HealBot_Options_NewSkin:GetText()] = HealBot_Config.bcspace[HealBot_Config.Current_Skin]
|
HealBot_Config.bcspace[HealBot_Options_NewSkin:GetText()] = HealBot_Config.bcspace[HealBot_Config.Current_Skin]
|
||||||
HealBot_Config.brspace[HealBot_Options_NewSkin:GetText()] = HealBot_Config.brspace[HealBot_Config.Current_Skin]
|
HealBot_Config.brspace[HealBot_Options_NewSkin:GetText()] = HealBot_Config.brspace[HealBot_Config.Current_Skin]
|
||||||
@@ -56,6 +76,8 @@ end
|
|||||||
function HealBot_Options_DeleteSkin_OnClick(this)
|
function HealBot_Options_DeleteSkin_OnClick(this)
|
||||||
if HealBot_Config.Current_Skin~=HEALBOT_SKINS_STD then
|
if HealBot_Config.Current_Skin~=HEALBOT_SKINS_STD then
|
||||||
HealBot_Config.numcols[HealBot_Options_SkinsText:GetText()] = nil
|
HealBot_Config.numcols[HealBot_Options_SkinsText:GetText()] = nil
|
||||||
|
if HealBot_Config.bmaxrows then HealBot_Config.bmaxrows[HealBot_Options_SkinsText:GetText()] = nil end
|
||||||
|
if HealBot_Config.GridOrientation then HealBot_Config.GridOrientation[HealBot_Options_SkinsText:GetText()] = nil end
|
||||||
HealBot_Config.btexture[HealBot_Options_SkinsText:GetText()] = nil
|
HealBot_Config.btexture[HealBot_Options_SkinsText:GetText()] = nil
|
||||||
HealBot_Config.bcspace[HealBot_Options_SkinsText:GetText()] = nil
|
HealBot_Config.bcspace[HealBot_Options_SkinsText:GetText()] = nil
|
||||||
HealBot_Config.brspace[HealBot_Options_SkinsText:GetText()] = nil
|
HealBot_Config.brspace[HealBot_Options_SkinsText:GetText()] = nil
|
||||||
|
|||||||
+55
-19
@@ -266,9 +266,9 @@
|
|||||||
<AbsDimension x="123" y="17" />
|
<AbsDimension x="123" y="17" />
|
||||||
</Size>
|
</Size>
|
||||||
<Anchors>
|
<Anchors>
|
||||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_BarBRSpaceS" relativePoint="TOPLEFT">
|
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_BarBCSpaceS" relativePoint="TOPRIGHT">
|
||||||
<Offset>
|
<Offset>
|
||||||
<AbsDimension x="0" y="-35" />
|
<AbsDimension x="10" y="0" />
|
||||||
</Offset>
|
</Offset>
|
||||||
</Anchor>
|
</Anchor>
|
||||||
</Anchors>
|
</Anchors>
|
||||||
@@ -277,28 +277,14 @@
|
|||||||
<OnValueChanged>HealBot_Options_FramePaddingS_OnValueChanged(this)</OnValueChanged>
|
<OnValueChanged>HealBot_Options_FramePaddingS_OnValueChanged(this)</OnValueChanged>
|
||||||
</Scripts>
|
</Scripts>
|
||||||
</Slider>
|
</Slider>
|
||||||
<Slider name="HealBot_Options_BorderThicknessS" inherits="HealBot_Options_SliderTemplate">
|
|
||||||
<Size>
|
|
||||||
<AbsDimension x="123" y="17" />
|
|
||||||
</Size>
|
|
||||||
<Anchors>
|
|
||||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_FramePaddingS" relativePoint="TOPRIGHT">
|
|
||||||
<Offset>
|
|
||||||
<AbsDimension x="10" y="0" />
|
|
||||||
</Offset>
|
|
||||||
</Anchor>
|
|
||||||
</Anchors>
|
|
||||||
<Scripts>
|
|
||||||
<OnLoad>HealBot_Options_val_OnLoad(this,"Solid Border",1,10)</OnLoad>
|
|
||||||
<OnValueChanged>HealBot_Options_BorderThicknessS_OnValueChanged(this)</OnValueChanged>
|
|
||||||
</Scripts>
|
|
||||||
</Slider>
|
|
||||||
<Slider name="HealBot_Options_BarAlpha" inherits="HealBot_Options_SliderTemplate">
|
<Slider name="HealBot_Options_BarAlpha" inherits="HealBot_Options_SliderTemplate">
|
||||||
<Size>
|
<Size>
|
||||||
<AbsDimension x="123" y="17" />
|
<AbsDimension x="123" y="17" />
|
||||||
</Size>
|
</Size>
|
||||||
<Anchors>
|
<Anchors>
|
||||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_FramePaddingS" relativePoint="TOPLEFT">
|
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_BarBRSpaceS" relativePoint="TOPLEFT">
|
||||||
<Offset>
|
<Offset>
|
||||||
<AbsDimension x="0" y="-35" />
|
<AbsDimension x="0" y="-35" />
|
||||||
</Offset>
|
</Offset>
|
||||||
@@ -375,6 +361,56 @@
|
|||||||
</Scripts>
|
</Scripts>
|
||||||
</Slider>
|
</Slider>
|
||||||
|
|
||||||
|
<Slider name="HealBot_Options_BorderThicknessS" inherits="HealBot_Options_SliderTemplate">
|
||||||
|
<Size>
|
||||||
|
<AbsDimension x="123" y="17" />
|
||||||
|
</Size>
|
||||||
|
<Anchors>
|
||||||
|
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_BarAlphaInHeal" relativePoint="TOPRIGHT">
|
||||||
|
<Offset>
|
||||||
|
<AbsDimension x="10" y="0" />
|
||||||
|
</Offset>
|
||||||
|
</Anchor>
|
||||||
|
</Anchors>
|
||||||
|
<Scripts>
|
||||||
|
<OnLoad>HealBot_Options_val_OnLoad(this,"Solid Border",1,10)</OnLoad>
|
||||||
|
<OnValueChanged>HealBot_Options_BorderThicknessS_OnValueChanged(this)</OnValueChanged>
|
||||||
|
</Scripts>
|
||||||
|
</Slider>
|
||||||
|
<Slider name="HealBot_Options_BarMaxRowsS" inherits="HealBot_Options_SliderTemplate">
|
||||||
|
<Size>
|
||||||
|
<AbsDimension x="123" y="17" />
|
||||||
|
</Size>
|
||||||
|
<Anchors>
|
||||||
|
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_AbortBarSize" relativePoint="TOPRIGHT">
|
||||||
|
<Offset>
|
||||||
|
<AbsDimension x="10" y="0" />
|
||||||
|
</Offset>
|
||||||
|
</Anchor>
|
||||||
|
</Anchors>
|
||||||
|
<Scripts>
|
||||||
|
<OnLoad>HealBot_Options_val_OnLoad(this,"Max Rows",0,40)</OnLoad>
|
||||||
|
<OnValueChanged>HealBot_Options_BarMaxRowsS_OnValueChanged(this)</OnValueChanged>
|
||||||
|
</Scripts>
|
||||||
|
</Slider>
|
||||||
|
<CheckButton name="HealBot_Options_GridOrientation" inherits="OptionsCheckButtonTemplate">
|
||||||
|
<Anchors>
|
||||||
|
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_BarMaxRowsS" relativePoint="BOTTOMLEFT">
|
||||||
|
<Offset>
|
||||||
|
<AbsDimension x="-5" y="-10" />
|
||||||
|
</Offset>
|
||||||
|
</Anchor>
|
||||||
|
</Anchors>
|
||||||
|
<Scripts>
|
||||||
|
<OnLoad>
|
||||||
|
getglobal(this:GetName().."Text"):SetText("Horizontal Grid");
|
||||||
|
</OnLoad>
|
||||||
|
<OnClick>
|
||||||
|
HealBot_Options_GridOrientation_OnClick(this);
|
||||||
|
</OnClick>
|
||||||
|
</Scripts>
|
||||||
|
</CheckButton>
|
||||||
|
|
||||||
<Button name="HealBot_EnTextColorpickb">
|
<Button name="HealBot_EnTextColorpickb">
|
||||||
<Size>
|
<Size>
|
||||||
<AbsDimension x="87" y="20"/>
|
<AbsDimension x="87" y="20"/>
|
||||||
|
|||||||
+119
-9
@@ -87,13 +87,17 @@ function HealBot_HealthColor(unit, hlth, maxhlth)
|
|||||||
end
|
end
|
||||||
|
|
||||||
function HealBot_Action_HealthBar(button)
|
function HealBot_Action_HealthBar(button)
|
||||||
local name = button:GetName();
|
if not button.bar then
|
||||||
return getglobal(name .. "Bar");
|
button.bar = getglobal(button:GetName() .. "Bar")
|
||||||
|
end
|
||||||
|
return button.bar;
|
||||||
end
|
end
|
||||||
|
|
||||||
function HealBot_Action_HealthBar2(button)
|
function HealBot_Action_HealthBar2(button)
|
||||||
local name = button:GetName();
|
if not button.bar2 then
|
||||||
return getglobal(name .. "Bar2");
|
button.bar2 = getglobal(button:GetName() .. "Bar2")
|
||||||
|
end
|
||||||
|
return button.bar2;
|
||||||
end
|
end
|
||||||
|
|
||||||
function HealBot_Action_EnableButton(button)
|
function HealBot_Action_EnableButton(button)
|
||||||
@@ -108,7 +112,8 @@ function HealBot_Action_EnableButton(button)
|
|||||||
|
|
||||||
local bar = HealBot_Action_HealthBar(button);
|
local bar = HealBot_Action_HealthBar(button);
|
||||||
local bar2 = HealBot_Action_HealthBar2(button);
|
local bar2 = HealBot_Action_HealthBar2(button);
|
||||||
local bar3 = getglobal(button:GetName() .. "Bar3");
|
if not button.bar3 then button.bar3 = getglobal(button:GetName() .. "Bar3") end
|
||||||
|
local bar3 = button.bar3;
|
||||||
local btexture = HealBot_Config.btexture[HealBot_Config.Current_Skin];
|
local btexture = HealBot_Config.btexture[HealBot_Config.Current_Skin];
|
||||||
local bheight = HealBot_Config.bheight[HealBot_Config.Current_Skin];
|
local bheight = HealBot_Config.bheight[HealBot_Config.Current_Skin];
|
||||||
local sr = HealBot_Config.btextenabledcolr[HealBot_Config.Current_Skin];
|
local sr = HealBot_Config.btextenabledcolr[HealBot_Config.Current_Skin];
|
||||||
@@ -175,7 +180,7 @@ function HealBot_Action_EnableButton(button)
|
|||||||
else
|
else
|
||||||
bar2:SetValue(0);
|
bar2:SetValue(0);
|
||||||
end
|
end
|
||||||
bar.txt = getglobal(bar:GetName() .. "_text");
|
if not bar.txt then bar.txt = getglobal(bar:GetName() .. "_text") end
|
||||||
if (not HealBot_IsCasting and (HealBot_CanHeal(unit) or HealBot_MissingBuffs[unit])) then
|
if (not HealBot_IsCasting and (HealBot_CanHeal(unit) or HealBot_MissingBuffs[unit])) then
|
||||||
button:Enable();
|
button:Enable();
|
||||||
if HealBot_UnitDebuff[unit] then
|
if HealBot_UnitDebuff[unit] then
|
||||||
@@ -330,6 +335,41 @@ function HealBot_Action_PositionButton(button, OsetX, OsetY, bwidth, bheight, ch
|
|||||||
return OsetY;
|
return OsetY;
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function HealBot_Action_PositionButtonHorizontal(button, OsetX, OsetY, bwidth, bheight, checked, header)
|
||||||
|
local bcspace = HealBot_Config.bcspace[HealBot_Config.Current_Skin] or 3;
|
||||||
|
if header then
|
||||||
|
headerno = headerno + 1;
|
||||||
|
local headerobj = getglobal("HealBot_Action_Header" .. headerno);
|
||||||
|
headerobj:SetText(header)
|
||||||
|
headerobj:Show();
|
||||||
|
headerobj:ClearAllPoints();
|
||||||
|
headerobj:SetHeight(bheight);
|
||||||
|
headerobj:SetWidth(bwidth);
|
||||||
|
headerobj:SetPoint("TOPLEFT", "HealBot_Action", "TOPLEFT", OsetX, -OsetY);
|
||||||
|
headerobj:Disable();
|
||||||
|
OsetX = OsetX + bwidth + bcspace;
|
||||||
|
else
|
||||||
|
local unit = button.unit;
|
||||||
|
button:SetText(" ");
|
||||||
|
if (HealBot_MayHeal(unit)) then
|
||||||
|
button:Show();
|
||||||
|
button:ClearAllPoints();
|
||||||
|
button:SetHeight(bheight);
|
||||||
|
if checked then
|
||||||
|
button:SetWidth(bwidth - 14);
|
||||||
|
button:SetPoint("TOPLEFT", "HealBot_Action", "TOPLEFT", OsetX + 14, -OsetY);
|
||||||
|
else
|
||||||
|
button:SetWidth(bwidth);
|
||||||
|
button:SetPoint("TOPLEFT", "HealBot_Action", "TOPLEFT", OsetX, -OsetY);
|
||||||
|
end
|
||||||
|
OsetX = OsetX + bwidth + bcspace;
|
||||||
|
else
|
||||||
|
button:Hide();
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return OsetX;
|
||||||
|
end
|
||||||
|
|
||||||
function HealBot_Action_SetHeightWidth(width, height, bwidth)
|
function HealBot_Action_SetHeightWidth(width, height, bwidth)
|
||||||
if HealBot_ActionHeight then
|
if HealBot_ActionHeight then
|
||||||
HealBot_Action:SetHeight(HealBot_ActionHeight);
|
HealBot_Action:SetHeight(HealBot_ActionHeight);
|
||||||
@@ -380,6 +420,31 @@ function HealBot_Action_PartyChanged()
|
|||||||
local TempMaxH = 0;
|
local TempMaxH = 0;
|
||||||
local HeaderPos = {};
|
local HeaderPos = {};
|
||||||
|
|
||||||
|
if HealBot_Config.AutoSwap_Enabled == 1 then
|
||||||
|
local totalMembers = GetNumRaidMembers()
|
||||||
|
if totalMembers == 0 then totalMembers = GetNumPartyMembers() end
|
||||||
|
|
||||||
|
local threshold = 1
|
||||||
|
if totalMembers == 0 then
|
||||||
|
threshold = 1 -- Solo
|
||||||
|
elseif totalMembers > 0 and totalMembers <= 5 then
|
||||||
|
threshold = 2 -- Party
|
||||||
|
elseif totalMembers > 5 and totalMembers <= 15 then
|
||||||
|
threshold = 3 -- Raid15
|
||||||
|
elseif totalMembers > 15 and totalMembers <= 25 then
|
||||||
|
threshold = 4 -- Raid25
|
||||||
|
else
|
||||||
|
threshold = 5 -- Raid40
|
||||||
|
end
|
||||||
|
|
||||||
|
if not HealBot_Config.AutoSwap_Profiles then HealBot_Config.AutoSwap_Profiles = {} end
|
||||||
|
local swapSkin = HealBot_Config.AutoSwap_Profiles[threshold]
|
||||||
|
if swapSkin and swapSkin ~= HealBot_Config.Current_Skin then
|
||||||
|
HealBot_Config.Current_Skin = swapSkin
|
||||||
|
HealBot_Options_SetSkins()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
for j = 1, 15 do
|
for j = 1, 15 do
|
||||||
local headerobj = getglobal("HealBot_Action_Header" .. j);
|
local headerobj = getglobal("HealBot_Action_Header" .. j);
|
||||||
headerobj:SetText(" ")
|
headerobj:SetText(" ")
|
||||||
@@ -738,8 +803,12 @@ function HealBot_Action_PartyChanged()
|
|||||||
local OffsetY = bpadding;
|
local OffsetY = bpadding;
|
||||||
local OffsetX = bpadding;
|
local OffsetX = bpadding;
|
||||||
local MaxOffsetY = 0;
|
local MaxOffsetY = 0;
|
||||||
|
local MaxOffsetX = 0;
|
||||||
|
|
||||||
if cols > (numBars - numHeaders) then
|
local maxRows = (HealBot_Config.bmaxrows and HealBot_Config.bmaxrows[HealBot_Config.Current_Skin]) or 0
|
||||||
|
local orientation = (HealBot_Config.GridOrientation and HealBot_Config.GridOrientation[HealBot_Config.Current_Skin]) or 1
|
||||||
|
|
||||||
|
if cols > (numBars - numHeaders) and maxRows == 0 then
|
||||||
cols = numBars - numHeaders;
|
cols = numBars - numHeaders;
|
||||||
end
|
end
|
||||||
if cols <= 0 then cols = 1 end
|
if cols <= 0 then cols = 1 end
|
||||||
@@ -747,6 +816,15 @@ function HealBot_Action_PartyChanged()
|
|||||||
local h = 1;
|
local h = 1;
|
||||||
local i = 0;
|
local i = 0;
|
||||||
local z = 1;
|
local z = 1;
|
||||||
|
local brspace = HealBot_Config.brspace[HealBot_Config.Current_Skin] or 3;
|
||||||
|
local bcspace = HealBot_Config.bcspace[HealBot_Config.Current_Skin] or 3;
|
||||||
|
|
||||||
|
local limit = math.ceil((numBars) / cols)
|
||||||
|
if orientation == 1 and maxRows > 0 then
|
||||||
|
limit = maxRows
|
||||||
|
elseif orientation == 2 then
|
||||||
|
limit = cols
|
||||||
|
end
|
||||||
|
|
||||||
for index, button in pairs(HealBot_Action_HealButtons) do
|
for index, button in pairs(HealBot_Action_HealButtons) do
|
||||||
i = i + 1;
|
i = i + 1;
|
||||||
@@ -755,25 +833,47 @@ function HealBot_Action_PartyChanged()
|
|||||||
|
|
||||||
if HeaderPos[i] then
|
if HeaderPos[i] then
|
||||||
header = HeaderPos[i];
|
header = HeaderPos[i];
|
||||||
|
if orientation == 1 then
|
||||||
OffsetY = HealBot_Action_PositionButton(nil, OffsetX, OffsetY, bwidth, bheight, checked, header);
|
OffsetY = HealBot_Action_PositionButton(nil, OffsetX, OffsetY, bwidth, bheight, checked, header);
|
||||||
if h == math.ceil((numBars) / cols) and z < numBars then
|
if h == limit and z < numBars then
|
||||||
h = 0;
|
h = 0;
|
||||||
if MaxOffsetY < OffsetY then MaxOffsetY = OffsetY; end
|
if MaxOffsetY < OffsetY then MaxOffsetY = OffsetY; end
|
||||||
OffsetY = bpadding;
|
OffsetY = bpadding;
|
||||||
OffsetX = OffsetX + bwidth + bcspace;
|
OffsetX = OffsetX + bwidth + bcspace;
|
||||||
end
|
end
|
||||||
|
else
|
||||||
|
OffsetX = HealBot_Action_PositionButtonHorizontal(nil, OffsetX, OffsetY, bwidth, bheight, checked, header);
|
||||||
|
if h == limit and z < numBars then
|
||||||
|
h = 0;
|
||||||
|
if MaxOffsetX < OffsetX then MaxOffsetX = OffsetX; end
|
||||||
|
OffsetX = bpadding;
|
||||||
|
OffsetY = OffsetY + bheight + brspace;
|
||||||
|
end
|
||||||
|
end
|
||||||
h = h + 1;
|
h = h + 1;
|
||||||
z = z + 1;
|
z = z + 1;
|
||||||
end
|
end
|
||||||
|
|
||||||
if checked_start <= i and checked_end >= i then checked = true; end
|
if checked_start <= i and checked_end >= i then checked = true; end
|
||||||
|
|
||||||
|
if orientation == 1 then
|
||||||
OffsetY = HealBot_Action_PositionButton(button, OffsetX, OffsetY, bwidth, bheight, checked, nil);
|
OffsetY = HealBot_Action_PositionButton(button, OffsetX, OffsetY, bwidth, bheight, checked, nil);
|
||||||
if h == math.ceil((numBars) / cols) and z < numBars then
|
if h == limit and z < numBars then
|
||||||
h = 0;
|
h = 0;
|
||||||
if MaxOffsetY < OffsetY then MaxOffsetY = OffsetY; end
|
if MaxOffsetY < OffsetY then MaxOffsetY = OffsetY; end
|
||||||
OffsetY = bpadding;
|
OffsetY = bpadding;
|
||||||
OffsetX = OffsetX + bwidth + bcspace;
|
OffsetX = OffsetX + bwidth + bcspace;
|
||||||
end
|
end
|
||||||
|
else
|
||||||
|
OffsetX = HealBot_Action_PositionButtonHorizontal(button, OffsetX, OffsetY, bwidth, bheight, checked, nil);
|
||||||
|
if h == limit and z < numBars then
|
||||||
|
h = 0;
|
||||||
|
if MaxOffsetX < OffsetX then MaxOffsetX = OffsetX; end
|
||||||
|
OffsetX = bpadding;
|
||||||
|
OffsetY = OffsetY + bheight + brspace;
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
z = z + 1;
|
z = z + 1;
|
||||||
h = h + 1;
|
h = h + 1;
|
||||||
local bar = HealBot_Action_HealthBar(button);
|
local bar = HealBot_Action_HealthBar(button);
|
||||||
@@ -789,7 +889,17 @@ function HealBot_Action_PartyChanged()
|
|||||||
HealBot_Action_SetTexture(bar2, btexture);
|
HealBot_Action_SetTexture(bar2, btexture);
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if orientation == 1 then
|
||||||
if MaxOffsetY < OffsetY then MaxOffsetY = OffsetY; end
|
if MaxOffsetY < OffsetY then MaxOffsetY = OffsetY; end
|
||||||
|
else
|
||||||
|
if MaxOffsetX < OffsetX then MaxOffsetX = OffsetX; end
|
||||||
|
-- In horizontal mode, OffsetY represents the active row. We need to measure total height.
|
||||||
|
MaxOffsetY = OffsetY + bheight + brspace
|
||||||
|
OffsetX = MaxOffsetX
|
||||||
|
if numBars > 0 then
|
||||||
|
OffsetX = OffsetX - bwidth - bcspace
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
if HealBot_Config.HideOptions == 1 then
|
if HealBot_Config.HideOptions == 1 then
|
||||||
HealBot_Action_OptionsButton:Hide();
|
HealBot_Action_OptionsButton:Hide();
|
||||||
|
|||||||
@@ -43,11 +43,22 @@ Default installation path: `C:\Program Files\World of Warcraft\Interface\AddOns\
|
|||||||
### Change Log
|
### Change Log
|
||||||
|
|
||||||
|
|
||||||
|
**v1.5.1**
|
||||||
|
* **Event Loop Decoupling:** Ripped out redundant synchronous UI redraws that were bypassed by the new MVC architecture. High-frequency events (mana regen, health ticks) now fully rely on the `HealBot_OnUpdate` dirty queue, severely reducing CPU bottlenecks.
|
||||||
|
* **Combat UI Optimizations:** Removed unnecessary full spell recalculations when dropping combat, preventing client stutter after every mob kill.
|
||||||
|
* **Memory Optimization:** Fixed severe Lua garbage collection spikes during UI reloads by preventing full party layout rebuilds on `PLAYER_TARGET_CHANGED`, and cached dynamic string concatenations directly to unit frames to eliminate memory leakage on high frequency UI refreshes.
|
||||||
|
* **Mana Validation Fix:** Removed artificial spell mana gating, fixing an issue where low-mana spells disappeared from tooltips and couldn't be cast. WoW's native mana validation now correctly processes 0-cost buffs (e.g. Clearcasting, Inner Focus) while turning low-mana tooltip spells red.
|
||||||
|
* **Self-Buff Tracking:** Fixed a bug where "Self Only" buff tracking incorrectly excluded the player when represented by party or raid frames instead of the standard "player" unit ID.
|
||||||
|
* **Settings Persistence Fix:** Changed `SavedVariables` to `SavedVariablesPerCharacter` in TOC so configurations correctly load unique per character instead of account-wide.
|
||||||
|
* **CPU Optimization:** Added early exit logic to resource tracking events (Mana, Rage, Energy) to stop background polling on party/raid members when "Show Mana Bars" is toggled off. Also removed excessive triggers (`BAG_UPDATE`, `PET_BAR_SHOWGRID`) and filtered `UNIT_INVENTORY_CHANGED` to only process the player, eliminating massive CPU spikes and unnecessary UI layout rebuilds during looting, item cooldowns, or when other players change gear.
|
||||||
|
* **OnUpdate GC Spike Fix:** Rewrote the modifier polling logic inside `HealBot_OnUpdate` to use boolean state tracking instead of dynamic string concatenation, eliminating a major source of garbage collection bloat while hovering over unit frames.
|
||||||
|
* **Aura Scanning Optimization:** Refactored Debuff tracking (`HealBot_DebuffWatch`) to use native boolean values (`true`/`false`) instead of string comparisons (`"YES"`/`"NO"`). This improves performance inside the continuous aura scanning loops.
|
||||||
|
|
||||||
**v1.5**
|
**v1.5**
|
||||||
* **Macro, Item, and Script Bindings:** Support for binding named macros, inventory items, and inline scripts (e.g. `/target`) directly to mouse clicks in the Spells tab. All of these now natively support implicit `@mouseover` targeting on the unit frame you click, without losing your current target.
|
* **Macro, Item, and Script Bindings:** Support for binding named macros, inventory items, and inline scripts (e.g. `/target`) directly to mouse clicks in the Spells tab. All of these now natively support implicit `@mouseover` targeting on the unit frame you click, without losing your current target.
|
||||||
* **Modifier-Aware Tooltips & Resource Costs:** The tooltip dynamically updates to show exactly what action is bound when holding down Shift, Ctrl, or Alt over a frame. Spells also show their required mana cost, turning red if you do not have enough mana to cast them.
|
* **Modifier-Aware Tooltips & Resource Costs:** The tooltip dynamically updates to show exactly what action is bound when holding down Shift, Ctrl, or Alt over a frame. Spells also show their required mana cost, turning red if you do not have enough mana to cast them.
|
||||||
* **Memory Recycling Pool:** Added a local table recycling pool in the data layer to greatly reduce Lua garbage collection (GC) spikes, improving overall client frame rates during intense combat.
|
* **Memory Recycling Pool:** Added a local table recycling pool in the data layer to greatly reduce Lua garbage collection (GC) spikes, improving overall client frame rates during intense combat.
|
||||||
*
|
|
||||||
**v1.4.2**
|
**v1.4.2**
|
||||||
* **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.
|
* **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.
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user