mirror of
https://github.com/Bluewhale1337/HealBotBlue.git
synced 2026-10-27 22:20:52 +00:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8624a192b6 | ||
|
|
d949b7489a | ||
|
|
962f2a46aa | ||
|
|
eed71fa070 | ||
|
|
2baf535aa2 | ||
|
|
4694db4f90 | ||
|
|
076475442c | ||
|
|
d5ecdc6c76 | ||
|
|
42ff023a54 | ||
|
|
8050561733 | ||
|
|
8b85b6ca57 | ||
|
|
d222cd942c | ||
|
|
b298ad7047 | ||
|
|
94f8c2a843 | ||
|
|
b3e18bfd64 | ||
|
|
6acfa36d8d | ||
|
|
97df6c9a98 | ||
|
|
2a0d607bcd | ||
|
|
526a4f1b9b | ||
|
|
032c7571af | ||
|
|
f4ba0d983d | ||
|
|
62b93b74e2 | ||
|
|
820f23c3f2 | ||
|
|
59e3701d79 | ||
|
|
ee11884976 | ||
|
|
eb7cbc52f2 | ||
|
|
1edb4b22bb | ||
|
|
5e33429dee | ||
|
|
55bc6f1ea0 | ||
|
|
7f4d4be827 | ||
|
|
029235a733 | ||
|
|
7beff1c4ca | ||
|
|
4e8d5d8426 | ||
|
|
b40135a386 | ||
|
|
27ba0a386e | ||
|
|
4caaa85634 | ||
|
|
8894700b0a | ||
|
|
50a64c5549 | ||
|
|
2958bc8e94 | ||
|
|
4486682568 | ||
|
|
27231aaf99 | ||
|
|
bcd497104f | ||
|
|
ee4f706338 | ||
|
|
56b55f34ad | ||
|
|
135a8f6bcd | ||
|
|
7f5b1afe23 | ||
|
|
00a1ddf789 | ||
|
|
74e940f41c | ||
|
|
98b34f24b8 | ||
|
|
604a26dbb3 | ||
|
|
03114d4802 | ||
|
|
a0b6e2f72d | ||
|
|
7d910eadd2 | ||
|
|
1ef79cfcd1 | ||
|
|
1f9d3af81e | ||
|
|
e9cfd2fcc7 | ||
|
|
7c45d85030 | ||
|
|
92a4cb070a | ||
|
|
2af99cbc2b | ||
|
|
ebb42f936a | ||
|
|
04519b9631 | ||
|
|
3ebcecb8e6 | ||
|
|
b0195b30b9 | ||
|
|
2aaa53a9e6 | ||
|
|
b64e7070ba | ||
|
|
6760e4e43d | ||
|
|
16bc4d95ee | ||
|
|
59ceb3b465 | ||
|
|
e05238a5b2 | ||
|
|
d2642745cb | ||
|
|
8026e14cde | ||
|
|
377c2c31d0 | ||
|
|
998a64a83f | ||
|
|
cf05b94611 | ||
|
|
5aab23314a | ||
|
|
36fad01424 | ||
|
|
bcd566d80b | ||
|
|
553a5ece36 | ||
|
|
60ef3bc41f | ||
|
|
50661ac924 | ||
|
|
9c1f873b48 | ||
|
|
6d977f6963 | ||
|
|
d09e49d26a | ||
|
|
9a033a1045 | ||
|
|
b3c2b4a096 | ||
|
|
d0e027ec12 | ||
|
|
dc2f0ca089 | ||
|
|
58f593947e |
+80
-20
@@ -15,6 +15,7 @@ HealBot_Delay_RecalcParty=0;
|
||||
|
||||
-- Debugging and Error functions moved to HealBot_Controller_Comms.lua
|
||||
|
||||
-- HealBot_TogglePanel: Toggles visibility of a frame panel.
|
||||
function HealBot_TogglePanel(panel)
|
||||
if (not panel) then return end
|
||||
if ( panel:IsVisible() ) then
|
||||
@@ -24,6 +25,7 @@ function HealBot_TogglePanel(panel)
|
||||
end
|
||||
end
|
||||
|
||||
-- HealBot_StartMoving: Initiates frame dragging when unlocked.
|
||||
function HealBot_StartMoving(frame)
|
||||
if ( not frame.isMoving ) and ( frame.isLocked ~= 1 ) then
|
||||
frame:StartMoving();
|
||||
@@ -31,6 +33,7 @@ function HealBot_StartMoving(frame)
|
||||
end
|
||||
end
|
||||
|
||||
-- HealBot_StopMoving: Stops frame dragging.
|
||||
function HealBot_StopMoving(frame)
|
||||
if ( frame.isMoving ) then
|
||||
frame:StopMovingOrSizing();
|
||||
@@ -47,6 +50,7 @@ function HealBot_StopMoving(frame)
|
||||
|
||||
end
|
||||
|
||||
-- HealBot_SlashCmd: Handles '/hb' or '/healbot' chat commands.
|
||||
function HealBot_SlashCmd(cmd)
|
||||
if (cmd=="") then
|
||||
HealBot_TogglePanel(HealBot_Action);
|
||||
@@ -99,10 +103,26 @@ function HealBot_SlashCmd(cmd)
|
||||
HealBot_AddDebug( "Channel active" );
|
||||
return;
|
||||
end
|
||||
if (cmd=="debug" or cmd=="dbg") then
|
||||
if not HealBot_Config then return; end
|
||||
if HealBot_Config.DebugMode == 1 then
|
||||
HealBot_Config.DebugMode = 0;
|
||||
if DEFAULT_CHAT_FRAME then
|
||||
DEFAULT_CHAT_FRAME:AddMessage("|cFFFFD100HealBot|r: Debug mode |cFFFF0000DISABLED|r.");
|
||||
end
|
||||
else
|
||||
HealBot_Config.DebugMode = 1;
|
||||
if DEFAULT_CHAT_FRAME then
|
||||
DEFAULT_CHAT_FRAME:AddMessage("|cFFFFD100HealBot|r: Debug mode |cFF00FF00ENABLED|r.");
|
||||
end
|
||||
end
|
||||
return;
|
||||
end
|
||||
end
|
||||
|
||||
-- HealBot_SendAddonMessage moved to HealBot_Controller_Comms.lua
|
||||
|
||||
-- HealBot_TargetName: Retrieves the name of the current target, ignoring enemies.
|
||||
function HealBot_TargetName()
|
||||
if UnitIsEnemy("target","player") then return nil end
|
||||
-- if not UnitPlayerControlled("target") then return nil end
|
||||
@@ -136,14 +156,17 @@ end
|
||||
|
||||
|
||||
|
||||
-- HealBot_PackBagSlot: Combines bag and slot into a single ID.
|
||||
function HealBot_PackBagSlot(bag,slot)
|
||||
return bag*100+slot;
|
||||
end
|
||||
|
||||
-- HealBot_UnpackBagSlot: Extracts bag and slot from a combined ID.
|
||||
function HealBot_UnpackBagSlot(bagslot)
|
||||
return math.floor(bagslot/100),math.mod(bagslot,100);
|
||||
end
|
||||
|
||||
-- HealBot_GetItemName: Gets item name from bag slot link.
|
||||
function HealBot_GetItemName(bag,slot)
|
||||
local link = GetContainerItemLink(bag,slot);
|
||||
if not link then return nil end;
|
||||
@@ -152,6 +175,7 @@ function HealBot_GetItemName(bag,slot)
|
||||
return item,count;
|
||||
end
|
||||
|
||||
-- HealBot_GetBagSlot: Finds bag slot ID for an item name.
|
||||
function HealBot_GetBagSlot(item)
|
||||
local BagSlot,BestCount;
|
||||
for bag=0,NUM_BAG_FRAMES do
|
||||
@@ -168,6 +192,7 @@ function HealBot_GetBagSlot(item)
|
||||
return BagSlot;
|
||||
end
|
||||
|
||||
-- HealBot_UseItem: Uses an item from inventory.
|
||||
function HealBot_UseItem(item)
|
||||
local bagslot = HealBot_GetBagSlot(item);
|
||||
if not bagslot then return end;
|
||||
@@ -178,9 +203,24 @@ end
|
||||
|
||||
-- Spell parsing and casting functions moved to HealBot_Controller_Spells.lua
|
||||
|
||||
-- HealBot_UnitClass: Returns English class string for a unit.
|
||||
function HealBot_UnitClass(unit)
|
||||
local playerClass, englishClass = UnitClass(unit);
|
||||
return englishClass;
|
||||
local locClass, enClass = UnitClass(unit)
|
||||
if enClass then return string.upper(enClass) end
|
||||
|
||||
-- Fallback for Vanilla 1.12 where enClass is nil
|
||||
if locClass == HEALBOT_DRUID then return "DRUID"
|
||||
elseif locClass == HEALBOT_HUNTER then return "HUNTER"
|
||||
elseif locClass == HEALBOT_MAGE then return "MAGE"
|
||||
elseif locClass == HEALBOT_PALADIN then return "PALADIN"
|
||||
elseif locClass == HEALBOT_PRIEST then return "PRIEST"
|
||||
elseif locClass == HEALBOT_ROGUE then return "ROGUE"
|
||||
elseif locClass == HEALBOT_SHAMAN then return "SHAMAN"
|
||||
elseif locClass == HEALBOT_WARLOCK then return "WARLOCK"
|
||||
elseif locClass == HEALBOT_WARRIOR then return "WARRIOR"
|
||||
end
|
||||
|
||||
return locClass
|
||||
end
|
||||
|
||||
---- HealBot_UnitAffected moved to HealBot_Controller_Aura.lua
|
||||
@@ -197,28 +237,45 @@ end
|
||||
|
||||
-- SpiBonus and GetBonus functions moved to HealBot_Controller_Spells.lua
|
||||
|
||||
function HealBot_FindUnitID(unitname)
|
||||
local text;
|
||||
for _,unit in ipairs(HealBot_Action_HealGroup) do
|
||||
text = UnitName(unit);
|
||||
if text then
|
||||
if text==unitname then
|
||||
return unit;
|
||||
end
|
||||
end
|
||||
local HealBot_RaidUnitTokens = {}
|
||||
for i=1, 40 do HealBot_RaidUnitTokens[i] = "raid"..i end
|
||||
|
||||
HealBot_NameToUnitID = {}
|
||||
|
||||
function HealBot_UpdateUnitIDCache()
|
||||
HealBot_NameToUnitID = {}
|
||||
local name = UnitName("player")
|
||||
if name then HealBot_NameToUnitID[name] = "player" end
|
||||
|
||||
for i=1, 4 do
|
||||
local unit = "party"..i
|
||||
name = UnitName(unit)
|
||||
if name then HealBot_NameToUnitID[name] = unit end
|
||||
unit = "partypet"..i
|
||||
name = UnitName(unit)
|
||||
if name then HealBot_NameToUnitID[name] = unit end
|
||||
end
|
||||
for i=1,40 do
|
||||
local unit = "raid"..i;
|
||||
text = UnitName(unit);
|
||||
if text then
|
||||
if text==unitname then
|
||||
return unit;
|
||||
end
|
||||
end
|
||||
|
||||
local petName = UnitName("pet")
|
||||
if petName then HealBot_NameToUnitID[petName] = "pet" end
|
||||
|
||||
for i=1, 40 do
|
||||
local unit = "raid"..i
|
||||
name = UnitName(unit)
|
||||
if name then HealBot_NameToUnitID[name] = unit end
|
||||
unit = "raidpet"..i
|
||||
name = UnitName(unit)
|
||||
if name then HealBot_NameToUnitID[name] = unit end
|
||||
end
|
||||
return nil;
|
||||
end
|
||||
|
||||
-- HealBot_FindUnitID: Finds a unit token for a given player name.
|
||||
function HealBot_FindUnitID(unitname)
|
||||
if not unitname then return nil end
|
||||
return HealBot_NameToUnitID[unitname]
|
||||
end
|
||||
|
||||
-- HealBot_PlaySound: Plays an audio alert based on ID.
|
||||
function HealBot_PlaySound(id)
|
||||
if id==1 then
|
||||
PlaySoundFile("Sound\\Doodad\\BellTollTribal.wav");
|
||||
@@ -231,6 +288,7 @@ end
|
||||
|
||||
-- HealBot_InitSpells moved to HealBot_Controller_Spells.lua
|
||||
|
||||
-- HealBot_InitData: Registers options and basic setup on variables loaded.
|
||||
function HealBot_InitData()
|
||||
HealBot_Skins = HealBot_Config.Skins;
|
||||
if(CT_RegisterMod) then
|
||||
@@ -246,6 +304,7 @@ function HealBot_InitData()
|
||||
HealBot_Options_Debuff_Reset()
|
||||
end
|
||||
|
||||
-- HealBot_ToggleOptions: Toggles the main options menu.
|
||||
function HealBot_ToggleOptions()
|
||||
HealBot_TogglePanel(HealBot_Options)
|
||||
end
|
||||
@@ -262,6 +321,7 @@ end
|
||||
do
|
||||
local pass = function() end
|
||||
local orig = UseAction
|
||||
-- UseAction: Intercepts standard clicks for mouseover support.
|
||||
function UseAction(slot, checkCursor, onSelf)
|
||||
if HealBot_Config.ActionMouseover == 1 then
|
||||
local mouseover = HealBot_Action_TooltipUnit
|
||||
|
||||
+4
-2
@@ -1,8 +1,8 @@
|
||||
## Interface: 11200
|
||||
## Title: HealBotBlue
|
||||
## Version: 1.6.5
|
||||
## Version: 1.7.5
|
||||
## Author: Bluewhale
|
||||
## Notes: Adds panel with skinable bars for healing and decursive
|
||||
## Notes: Raidframe replacement for healing, decursing, resource tracking and buffing with optional support for SuperWow, ClassicAPI, UnitXP_SP3 and Nampower.
|
||||
## SavedVariablesPerCharacter: HealBot_Config
|
||||
..\..\FrameXML\Fonts.xml
|
||||
..\..\FrameXML\OptionsFrameTemplates.xml
|
||||
@@ -10,6 +10,7 @@
|
||||
..\..\FrameXML\UIDropDownMenu.xml
|
||||
HealBot_Error.xml
|
||||
HealBot_Model.lua
|
||||
HealBot_Integrations.lua
|
||||
HealBot_Controller_Range.lua
|
||||
HealBot_Controller_Comms.lua
|
||||
HealBot_Controller_Aura.lua
|
||||
@@ -28,3 +29,4 @@ HealBot_Options_Skins.xml
|
||||
HealBot_Options_Buffs.xml
|
||||
HealBot_Options_Chat.xml
|
||||
HealBot_Options_Auto.xml
|
||||
HealBot_Options_Integrations.xml
|
||||
|
||||
+47
-2
@@ -1,42 +1,52 @@
|
||||
-- Status bar layout functions and tables moved to HealBot_View_Layout.lua
|
||||
|
||||
-- HealBot_AlwaysHeal: Returns true if healthy units should be shown.
|
||||
function HealBot_AlwaysHeal()
|
||||
return HealBot_Config.EnableHealthy==1
|
||||
end
|
||||
|
||||
-- HealBot_MayHeal: Checks if unit is eligible for healing UI.
|
||||
function HealBot_MayHeal(unit)
|
||||
if string.find(unit, "^Test") then return true end
|
||||
if not UnitName(unit) or not HealBot_Heals[unit] then return false end
|
||||
if unit ~= 'target' then return true end
|
||||
if not HealBot_Config.TargetHeals or UnitCanAttack("player",unit) then return false end
|
||||
return true;
|
||||
end
|
||||
|
||||
-- HealBot_ShouldHeal: Checks if unit needs immediate healing.
|
||||
function HealBot_ShouldHeal(unit)
|
||||
if HealBot_UnitDebuff[unit] and not UnitIsDeadOrGhost(unit) then
|
||||
if HealBot_Range_Check(unit, 30)==1 then
|
||||
return true;
|
||||
end
|
||||
end
|
||||
if string.find(unit, "^Test") then return true end
|
||||
return HealBot_MayHeal(unit) and UnitHealth(unit)>0 and not UnitIsDeadOrGhost(unit)
|
||||
and (UnitHealth(unit)<UnitHealthMax(unit)*HealBot_Config.AlertLevel or HealBot_AlwaysHeal());
|
||||
end
|
||||
|
||||
-- HealBot_Action_ShouldHealSome: Alias for checking if any unit needs healing.
|
||||
function HealBot_Action_ShouldHealSome()
|
||||
for index, button in pairs(HealBot_Action_HealButtons) do
|
||||
if (HealBot_ShouldHeal(button.unit)) then return button.unit; end
|
||||
end
|
||||
end
|
||||
|
||||
-- HealBot_MustHeal: Internal utility: HealBot_MustHeal
|
||||
function HealBot_MustHeal(unit)
|
||||
if string.find(unit, "^Test") then return true end
|
||||
return HealBot_ShouldHeal(unit) and UnitHealth(unit)<UnitHealthMax(unit)*HealBot_Config.AlertLevel
|
||||
end
|
||||
|
||||
-- HealBot_Action_MustHealSome: Checks if emergency healing is required.
|
||||
function HealBot_Action_MustHealSome()
|
||||
for index, button in pairs(HealBot_Action_HealButtons) do
|
||||
if (HealBot_MustHeal(button.unit)) then return button.unit; end
|
||||
end
|
||||
end
|
||||
|
||||
-- HealBot_GetRezSpellForClass: Internal utility: HealBot_GetRezSpellForClass
|
||||
function HealBot_GetRezSpellForClass()
|
||||
local _, class = UnitClass("player");
|
||||
if class == "PRIEST" then return HEALBOT_RESURRECTION;
|
||||
@@ -47,7 +57,9 @@ function HealBot_GetRezSpellForClass()
|
||||
return nil;
|
||||
end
|
||||
|
||||
-- HealBot_CanHeal: Internal utility: HealBot_CanHeal
|
||||
function HealBot_CanHeal(unit)
|
||||
if string.find(unit, "^Test") then return true end
|
||||
if UnitIsDeadOrGhost(unit) then
|
||||
local rezSpell = HealBot_GetRezSpellForClass();
|
||||
if rezSpell and HealBot_GetHealSpell(unit, rezSpell) then
|
||||
@@ -76,6 +88,7 @@ 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)
|
||||
local combos = HealBot_Config.KeyCombo[UnitClass("player")]
|
||||
if not combos then return nil end
|
||||
@@ -86,6 +99,7 @@ function HealBot_Action_SpellPattern(button)
|
||||
return combos[press]
|
||||
end
|
||||
|
||||
-- HealBot_Decode_Button: Decodes click action to spell pattern.
|
||||
function HealBot_Decode_Button(button)
|
||||
if button=="RightButton" then
|
||||
button="Right";
|
||||
@@ -105,14 +119,17 @@ end
|
||||
-- Widget_OnFoo functions
|
||||
--------------------------------------------------------------------------------------------------
|
||||
|
||||
-- HealBot_Action_HealUnit_OnLoad: Internal utility: HealBot_Action_HealUnit_OnLoad
|
||||
function HealBot_Action_HealUnit_OnLoad(this)
|
||||
this:RegisterForClicks("LeftButtonUp", "RightButtonUp", "MiddleButtonUp", "Button4Up", "Button5Up");
|
||||
end
|
||||
|
||||
-- HealBot_Action_HealUnit_OnEnter: Internal utility: HealBot_Action_HealUnit_OnEnter
|
||||
function HealBot_Action_HealUnit_OnEnter(this)
|
||||
HealBot_Action_ShowTooltip(this);
|
||||
end
|
||||
|
||||
-- HealBot_Action_HealUnit_OnLeave: Internal utility: HealBot_Action_HealUnit_OnLeave
|
||||
function HealBot_Action_HealUnit_OnLeave(this)
|
||||
HealBot_Action_HideTooltip(this);
|
||||
end
|
||||
@@ -121,10 +138,12 @@ end
|
||||
-- Puppeteer Utility Ports for Macro and Item Execution
|
||||
--------------------------------------------------------------------------------------------------
|
||||
|
||||
-- HealBot_SplitString: Internal utility: HealBot_SplitString
|
||||
function HealBot_SplitString(str, delimiter)
|
||||
local result = {}
|
||||
local result = HealBot_GetTable()
|
||||
if not delimiter or delimiter == "" then
|
||||
return {str}
|
||||
table.insert(result, str)
|
||||
return result
|
||||
end
|
||||
local start_pos = 1
|
||||
while true do
|
||||
@@ -139,20 +158,24 @@ function HealBot_SplitString(str, delimiter)
|
||||
return result
|
||||
end
|
||||
|
||||
-- HealBot_RunMacroText: Internal utility: HealBot_RunMacroText
|
||||
function HealBot_RunMacroText(body)
|
||||
local commands = HealBot_SplitString(body, "\n")
|
||||
for i = 1, table.getn(commands) do
|
||||
ChatFrameEditBox:SetText(commands[i])
|
||||
ChatEdit_SendText(ChatFrameEditBox)
|
||||
end
|
||||
HealBot_ReleaseTable(commands)
|
||||
end
|
||||
|
||||
-- HealBot_RunMacro: Internal utility: HealBot_RunMacro
|
||||
function HealBot_RunMacro(name)
|
||||
if GetMacroIndexByName(name) == 0 then return end
|
||||
local _, _, body = GetMacroInfo(GetMacroIndexByName(name))
|
||||
HealBot_RunMacroText(body)
|
||||
end
|
||||
|
||||
-- HealBot_GetBagSlotInfo: Internal utility: HealBot_GetBagSlotInfo
|
||||
function HealBot_GetBagSlotInfo(bag, slot)
|
||||
local link = GetContainerItemLink(bag, slot)
|
||||
if not link then return end
|
||||
@@ -161,6 +184,7 @@ function HealBot_GetBagSlotInfo(bag, slot)
|
||||
return name, count
|
||||
end
|
||||
|
||||
-- HealBot_FindBagSlot: Internal utility: HealBot_FindBagSlot
|
||||
function HealBot_FindBagSlot(itemName)
|
||||
local bestBag, bestSlot, lowestStackSize
|
||||
for bag = 0, NUM_BAG_FRAMES do
|
||||
@@ -178,6 +202,7 @@ function HealBot_FindBagSlot(itemName)
|
||||
return bestBag, bestSlot
|
||||
end
|
||||
|
||||
-- HealBot_UseItem: Uses an item from inventory.
|
||||
function HealBot_UseItem(itemName)
|
||||
local bag, slot = HealBot_FindBagSlot(itemName)
|
||||
if not bag then return false end
|
||||
@@ -185,6 +210,7 @@ function HealBot_UseItem(itemName)
|
||||
return true
|
||||
end
|
||||
|
||||
-- HealBot_Action_HealUnit_OnClick: Click event handler.
|
||||
function HealBot_Action_HealUnit_OnClick(this,button)
|
||||
local decode_button = HealBot_Decode_Button(button);
|
||||
local pattern = HealBot_Action_SpellPattern(decode_button);
|
||||
@@ -205,6 +231,12 @@ function HealBot_Action_HealUnit_OnClick(this,button)
|
||||
end
|
||||
end
|
||||
|
||||
-- Special cases for targeting
|
||||
if string.lower(pattern) == "target" or string.lower(pattern) == "/target" then
|
||||
TargetUnit(this.unit)
|
||||
return
|
||||
end
|
||||
|
||||
-- Priority 1: Inline Scripts (starts with /)
|
||||
if string.sub(pattern, 1, 1) == "/" then
|
||||
local oldTarget = nil
|
||||
@@ -264,6 +296,7 @@ function HealBot_Action_HealUnit_OnClick(this,button)
|
||||
HealBot_HealUnit(this.unit, pattern);
|
||||
end
|
||||
|
||||
-- HealBot_Action_HealUnitCheck_OnClick: Click event handler.
|
||||
function HealBot_Action_HealUnitCheck_OnClick(this)
|
||||
if not this.unit then return end
|
||||
if this:GetChecked() then
|
||||
@@ -279,20 +312,24 @@ function HealBot_Action_HealUnitCheck_OnClick(this)
|
||||
HealBot_Action_PartyChanged();
|
||||
end
|
||||
|
||||
-- HealBot_Action_OptionsButton_OnClick: Click event handler.
|
||||
function HealBot_Action_OptionsButton_OnClick(this)
|
||||
HealBot_TogglePanel(HealBot_Options);
|
||||
end
|
||||
|
||||
-- HealBot_Action_AbortButton_OnClick: Click event handler.
|
||||
function HealBot_Action_AbortButton_OnClick(this)
|
||||
SpellStopCasting();
|
||||
end
|
||||
|
||||
local HealBot_CT_RA_UpdateMTs_Old;
|
||||
-- HealBot_CT_RA_UpdateMTs: Internal utility: HealBot_CT_RA_UpdateMTs
|
||||
function HealBot_CT_RA_UpdateMTs()
|
||||
local value = HealBot_CT_RA_UpdateMTs_Old();
|
||||
return value;
|
||||
end
|
||||
|
||||
-- HealBot_CT_RaidAssist_DEAD: Internal utility: HealBot_CT_RaidAssist_DEAD
|
||||
function HealBot_CT_RaidAssist_DEAD()
|
||||
-- if (type(CT_RA_MemberFrame_OnClick)=="function") then
|
||||
-- HealBot_CT_RA_CustomOnClickFunction_Old = CT_RA_CustomOnClickFunction;
|
||||
@@ -308,10 +345,12 @@ end
|
||||
-- Frame_OnFoo functions
|
||||
--------------------------------------------------------------------------------------------------
|
||||
|
||||
-- HealBot_Action_OnLoad: Internal utility: HealBot_Action_OnLoad
|
||||
function HealBot_Action_OnLoad(this)
|
||||
-- HealBot_CT_RaidAssist();
|
||||
end
|
||||
|
||||
-- HealBot_Action_OnShow: Show event handler.
|
||||
function HealBot_Action_OnShow(this)
|
||||
if HealBot_Config.PanelSounds==1 then
|
||||
PlaySound("igAbilityOpen");
|
||||
@@ -352,6 +391,7 @@ function HealBot_Action_OnShow(this)
|
||||
HealBot_Config.backcola[HealBot_Config.Current_Skin]);
|
||||
end
|
||||
|
||||
-- HealBot_Action_OnHide: Hide event handler.
|
||||
function HealBot_Action_OnHide(this)
|
||||
HealBot_StopMoving(this);
|
||||
if not this.ProgrammaticHide then
|
||||
@@ -359,6 +399,7 @@ function HealBot_Action_OnHide(this)
|
||||
end
|
||||
end
|
||||
|
||||
-- HealBot_Action_OnMouseDown: Internal utility: HealBot_Action_OnMouseDown
|
||||
function HealBot_Action_OnMouseDown(this,button)
|
||||
if button~="RightButton" then
|
||||
if HealBot_Config.ActionLocked==0 then
|
||||
@@ -367,6 +408,7 @@ function HealBot_Action_OnMouseDown(this,button)
|
||||
end
|
||||
end
|
||||
|
||||
-- HealBot_Action_OnMouseUp: Internal utility: HealBot_Action_OnMouseUp
|
||||
function HealBot_Action_OnMouseUp(this,button)
|
||||
if button~="RightButton" then
|
||||
HealBot_StopMoving(this);
|
||||
@@ -375,16 +417,19 @@ function HealBot_Action_OnMouseUp(this,button)
|
||||
end
|
||||
end
|
||||
|
||||
-- HealBot_Action_OnClick: Handles click events on heal buttons.
|
||||
function HealBot_Action_OnClick(this,button)
|
||||
-- HealBot_Action_AddDebug("OnClick("..button..")");
|
||||
end
|
||||
|
||||
-- HealBot_Action_OnDragStart: Internal utility: HealBot_Action_OnDragStart
|
||||
function HealBot_Action_OnDragStart(this,button)
|
||||
if HealBot_Config.ActionLocked==0 then
|
||||
HealBot_StartMoving(this);
|
||||
end
|
||||
end
|
||||
|
||||
-- HealBot_Action_OnDragStop: Internal utility: HealBot_Action_OnDragStop
|
||||
function HealBot_Action_OnDragStop(this)
|
||||
HealBot_StopMoving(this);
|
||||
end
|
||||
|
||||
@@ -47,6 +47,14 @@
|
||||
</Anchors>
|
||||
<Layers>
|
||||
<Layer level="OVERLAY">
|
||||
<Texture name="$parentRaidIcon" file="Interface\TargetingFrame\UI-RaidTargetingIcons" hidden="true">
|
||||
<Size><AbsDimension x="14" y="14"/></Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOP">
|
||||
<Offset><AbsDimension x="0" y="0"/></Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</Texture>
|
||||
<Texture name="$parentIcon1" hidden="true">
|
||||
<Size><AbsDimension x="12" y="12"/></Size>
|
||||
<Anchors>
|
||||
|
||||
@@ -50,6 +50,7 @@ HealBot_BonusScanner = {
|
||||
};
|
||||
}
|
||||
|
||||
-- HealBot_BonusScanner:GetBonus: Internal utility: HealBot_BonusScanner:GetBonus
|
||||
function HealBot_BonusScanner:GetBonus()
|
||||
if(HealBot_BonusScanner.bonuses) then
|
||||
return HealBot_BonusScanner.bonuses;
|
||||
@@ -58,6 +59,7 @@ function HealBot_BonusScanner:GetBonus()
|
||||
end
|
||||
|
||||
|
||||
-- HealBot_BonusScanner_Update: Internal utility: HealBot_BonusScanner_Update
|
||||
function HealBot_BonusScanner_Update()
|
||||
|
||||
if (HealBot_BonusScanner.IsUpdating) then
|
||||
@@ -69,12 +71,17 @@ function HealBot_BonusScanner_Update()
|
||||
HealBot_BonusScanner.IsUpdating = false;
|
||||
end
|
||||
|
||||
-- HealBot_BonusScanner:ScanEquipment: Internal utility: HealBot_BonusScanner:ScanEquipment
|
||||
function HealBot_BonusScanner:ScanEquipment()
|
||||
local slotid, slotname, hasItem, i;
|
||||
|
||||
HealBot_BonusTooltip:SetOwner(HealBot_BonusTooltip, "ANCHOR_NONE");
|
||||
HealBot_BonusScanner.temp.bonuses = 0;
|
||||
HealBot_BonusScanner.temp.sets = {};
|
||||
if not HealBot_BonusScanner.temp.sets then
|
||||
HealBot_BonusScanner.temp.sets = {}
|
||||
else
|
||||
for k in pairs(HealBot_BonusScanner.temp.sets) do HealBot_BonusScanner.temp.sets[k] = nil end
|
||||
end
|
||||
HealBot_BonusScanner.temp.set = "";
|
||||
for i, slotname in HealBot_BonusScanner.slots do
|
||||
slotid, _ = GetInventorySlotInfo(slotname.. "Slot");
|
||||
@@ -90,6 +97,7 @@ function HealBot_BonusScanner:ScanEquipment()
|
||||
HealBot_BonusScanner.bonuses = HealBot_BonusScanner.temp.bonuses;
|
||||
end
|
||||
|
||||
-- HealBot_BonusScanner:ScanTooltip: Internal utility: HealBot_BonusScanner:ScanTooltip
|
||||
function HealBot_BonusScanner:ScanTooltip()
|
||||
local tmpTxt, line;
|
||||
local lines = HealBot_BonusTooltip:NumLines();
|
||||
@@ -103,6 +111,7 @@ function HealBot_BonusScanner:ScanTooltip()
|
||||
end
|
||||
end
|
||||
|
||||
-- HealBot_BonusScanner:AddValue: Internal utility: HealBot_BonusScanner:AddValue
|
||||
function HealBot_BonusScanner:AddValue(effect, value)
|
||||
local i,e;
|
||||
if(type(effect) == "string") then
|
||||
@@ -126,6 +135,7 @@ function HealBot_BonusScanner:AddValue(effect, value)
|
||||
end
|
||||
end;
|
||||
|
||||
-- HealBot_BonusScanner:ScanLine: Internal utility: HealBot_BonusScanner:ScanLine
|
||||
function HealBot_BonusScanner:ScanLine(line)
|
||||
local tmpStr, found;
|
||||
if(string.sub(line,0,string.len(HEALBOT_BONUSSCANNER_PREFIX_EQUIP)) == HEALBOT_BONUSSCANNER_PREFIX_EQUIP) then
|
||||
@@ -150,6 +160,7 @@ function HealBot_BonusScanner:ScanLine(line)
|
||||
end
|
||||
end;
|
||||
|
||||
-- HealBot_BonusScanner:CheckPassive: Internal utility: HealBot_BonusScanner:CheckPassive
|
||||
function HealBot_BonusScanner:CheckPassive(line)
|
||||
local i, p, value, found;
|
||||
|
||||
@@ -166,6 +177,7 @@ function HealBot_BonusScanner:CheckPassive(line)
|
||||
end
|
||||
end
|
||||
|
||||
-- HealBot_BonusScanner:CheckGeneric: Internal utility: HealBot_BonusScanner:CheckGeneric
|
||||
function HealBot_BonusScanner:CheckGeneric(line)
|
||||
local value, token, pos, tmpStr, found;
|
||||
found = false;
|
||||
@@ -199,6 +211,7 @@ function HealBot_BonusScanner:CheckGeneric(line)
|
||||
return found;
|
||||
end
|
||||
|
||||
-- HealBot_BonusScanner:CheckToken: Internal utility: HealBot_BonusScanner:CheckToken
|
||||
function HealBot_BonusScanner:CheckToken(token, value)
|
||||
local i, p, s1, s2;
|
||||
|
||||
@@ -209,6 +222,7 @@ function HealBot_BonusScanner:CheckToken(token, value)
|
||||
return false;
|
||||
end
|
||||
|
||||
-- HealBot_BonusScanner:CheckOther: Internal utility: HealBot_BonusScanner:CheckOther
|
||||
function HealBot_BonusScanner:CheckOther(line)
|
||||
local i, p, value, start, found;
|
||||
|
||||
|
||||
+150
-24
@@ -4,7 +4,9 @@
|
||||
HealBot_MissingBuffs = {}
|
||||
local StaticHasBuff = {}
|
||||
|
||||
-- HealBot_UnitAffected: Checks if a specific buff/debuff exists on a unit.
|
||||
function HealBot_UnitAffected(unit, effect)
|
||||
if string.find(unit, "^Test") then return nil; end
|
||||
if not effect then return nil; end
|
||||
local i = 1
|
||||
while true do
|
||||
@@ -31,6 +33,7 @@ function HealBot_UnitAffected(unit, effect)
|
||||
return nil;
|
||||
end
|
||||
|
||||
-- HealBot_CheckShamanWeaponBuff: Checks for Shaman weapon enchants via API.
|
||||
function HealBot_CheckShamanWeaponBuff(spellName)
|
||||
local hasMainHandEnchant, _, _, hasOffHandEnchant = GetWeaponEnchantInfo()
|
||||
if not (hasMainHandEnchant or hasOffHandEnchant) then return false end
|
||||
@@ -39,7 +42,8 @@ function HealBot_CheckShamanWeaponBuff(spellName)
|
||||
if not firstWord then return false end
|
||||
|
||||
HealBot_ScanTooltip:SetOwner(UIParent, "ANCHOR_NONE")
|
||||
local slots = {}
|
||||
if not HealBot_ScanTooltip_Lines then HealBot_ScanTooltip_Lines = {} end
|
||||
local slots = HealBot_GetTable()
|
||||
if hasMainHandEnchant then table.insert(slots, 16) end
|
||||
if hasOffHandEnchant then table.insert(slots, 17) end
|
||||
|
||||
@@ -47,11 +51,16 @@ function HealBot_CheckShamanWeaponBuff(spellName)
|
||||
HealBot_ScanTooltip:ClearLines()
|
||||
HealBot_ScanTooltip:SetInventoryItem("player", slot)
|
||||
for i = 1, HealBot_ScanTooltip:NumLines() do
|
||||
local textObj = getglobal("HealBot_ScanTooltipTextLeft" .. i)
|
||||
local textObj = HealBot_ScanTooltip_Lines[i]
|
||||
if not textObj then
|
||||
textObj = getglobal("HealBot_ScanTooltipTextLeft" .. i)
|
||||
HealBot_ScanTooltip_Lines[i] = textObj
|
||||
end
|
||||
if textObj then
|
||||
local text = textObj:GetText()
|
||||
if text and string.find(text, firstWord) then
|
||||
HealBot_ScanTooltip:Hide()
|
||||
HealBot_ReleaseTable(slots)
|
||||
return true
|
||||
end
|
||||
end
|
||||
@@ -59,10 +68,13 @@ function HealBot_CheckShamanWeaponBuff(spellName)
|
||||
end
|
||||
|
||||
HealBot_ScanTooltip:Hide()
|
||||
HealBot_ReleaseTable(slots)
|
||||
return false
|
||||
end
|
||||
|
||||
-- HealBot_CheckBuffs: Scans unit for missing tracked buffs.
|
||||
function HealBot_CheckBuffs(unit)
|
||||
if string.find(unit, "^Test") then return end
|
||||
if HealBot_Config.BuffWatch ~= 1 then
|
||||
HealBot_MissingBuffs[unit] = nil
|
||||
return
|
||||
@@ -97,13 +109,25 @@ function HealBot_CheckBuffs(unit)
|
||||
hasBuff[k] = nil
|
||||
end
|
||||
local i = 1
|
||||
if not HealBot_TextureToName then HealBot_TextureToName = {} end
|
||||
while true do
|
||||
local buffTexture = UnitBuff(unit, i)
|
||||
if not buffTexture then break end
|
||||
HealBot_ScanTooltip:SetOwner(UIParent, "ANCHOR_NONE")
|
||||
HealBot_ScanTooltip:ClearLines()
|
||||
HealBot_ScanTooltip:SetUnitBuff(unit, i)
|
||||
local buffName = HealBot_ScanTooltipTextLeft1:GetText()
|
||||
|
||||
local buffName = HealBot_TextureToName[buffTexture]
|
||||
if buffName == nil then
|
||||
HealBot_ScanTooltip:SetOwner(UIParent, "ANCHOR_NONE")
|
||||
HealBot_ScanTooltip:ClearLines()
|
||||
HealBot_ScanTooltip:SetUnitBuff(unit, i)
|
||||
local textObj = HealBot_ScanTooltipTextLeft1
|
||||
if textObj then
|
||||
buffName = textObj:GetText()
|
||||
end
|
||||
if buffName then
|
||||
HealBot_TextureToName[buffTexture] = buffName
|
||||
end
|
||||
end
|
||||
|
||||
if buffName then
|
||||
hasBuff[buffName] = true
|
||||
end
|
||||
@@ -153,10 +177,24 @@ local HealBot_TrackedHoTs = {
|
||||
["Interface\\Icons\\Spell_Holy_AshesToAshes"] = true,
|
||||
}
|
||||
|
||||
local HealBot_DebuffTypeMap = nil
|
||||
local HealBot_AuraWarningPlayed = {}
|
||||
|
||||
-- HealBot_OnEvent_UnitAura: Updates debuff lists and icon textures on aura change.
|
||||
function HealBot_OnEvent_UnitAura(this, unit)
|
||||
if string.find(unit, "^Test") then return end
|
||||
if not HealBot_DebuffTypeMap then
|
||||
HealBot_DebuffTypeMap = {
|
||||
[HEALBOT_DISEASE] = HEALBOT_DISEASE_en,
|
||||
[HEALBOT_MAGIC] = HEALBOT_MAGIC_en,
|
||||
[HEALBOT_POISON] = HEALBOT_POISON_en,
|
||||
[HEALBOT_CURSE] = HEALBOT_CURSE_en
|
||||
}
|
||||
end
|
||||
|
||||
local DebuffType;
|
||||
|
||||
if HealBot_Heals[unit] and unit ~= "target" then
|
||||
if HealBot_Heals[unit] then
|
||||
if not HealBot_UnitIcons[unit] then
|
||||
HealBot_UnitIcons[unit] = {}
|
||||
end
|
||||
@@ -166,17 +204,53 @@ function HealBot_OnEvent_UnitAura(this, unit)
|
||||
local iconCount = 0
|
||||
local i = 1;
|
||||
HealBot_UnitDebuff[unit] = nil;
|
||||
local trackedTextures = HealBot_GetTable()
|
||||
|
||||
while true do
|
||||
local debuff, tmp, debuff_type = UnitDebuff(unit, i, 1)
|
||||
if debuff then
|
||||
if iconCount < 10 then
|
||||
iconCount = iconCount + 1
|
||||
HealBot_UnitIcons[unit][iconCount] = debuff
|
||||
local mapped_type = nil
|
||||
if debuff_type then
|
||||
mapped_type = HealBot_DebuffTypeMap[debuff_type] or debuff_type
|
||||
end
|
||||
if HealBot_CDCInc[UnitClass(unit)] == 1 and debuff_type and HealBot_DebuffWatch[debuff_type] then
|
||||
HealBot_UnitDebuff[unit] = debuff_type
|
||||
DebuffType = debuff_type;
|
||||
if HealBot_DebuffPriority[debuff_type] then
|
||||
|
||||
local localizedClass = UnitClass(unit)
|
||||
local shouldTrack = false
|
||||
if unit == "target" then
|
||||
shouldTrack = true
|
||||
elseif localizedClass and HealBot_CDCInc[localizedClass] == 1 then
|
||||
shouldTrack = true
|
||||
elseif not localizedClass or HealBot_CDCInc[localizedClass] == nil then
|
||||
shouldTrack = true
|
||||
end
|
||||
|
||||
local isDispellable = false
|
||||
if mapped_type and HealBot_DebuffWatch[mapped_type] then
|
||||
isDispellable = true
|
||||
end
|
||||
|
||||
if isDispellable or HealBot_Config.CDCShowAllDebuffs == 1 then
|
||||
if iconCount < 10 and not trackedTextures[debuff] then
|
||||
iconCount = iconCount + 1
|
||||
HealBot_UnitIcons[unit][iconCount] = debuff
|
||||
trackedTextures[debuff] = true
|
||||
end
|
||||
end
|
||||
|
||||
if shouldTrack and isDispellable then
|
||||
HealBot_UnitDebuff[unit] = mapped_type
|
||||
DebuffType = mapped_type;
|
||||
|
||||
local isPriority = false
|
||||
if HealBot_DebuffPriority then
|
||||
for _, pType in ipairs(HealBot_DebuffPriority) do
|
||||
if pType == mapped_type then
|
||||
isPriority = true
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
if isPriority then
|
||||
break
|
||||
end
|
||||
end
|
||||
@@ -185,11 +259,27 @@ function HealBot_OnEvent_UnitAura(this, unit)
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
if HealBot_Config.CDCShowAllDebuffs == 1 then
|
||||
local k = 1
|
||||
while true do
|
||||
local debuff = UnitDebuff(unit, k)
|
||||
if not debuff then break end
|
||||
if not trackedTextures[debuff] and iconCount < 10 then
|
||||
iconCount = iconCount + 1
|
||||
HealBot_UnitIcons[unit][iconCount] = debuff
|
||||
trackedTextures[debuff] = true
|
||||
end
|
||||
k = k + 1
|
||||
end
|
||||
end
|
||||
|
||||
local b = 1
|
||||
local activeBuffs = HealBot_GetTable()
|
||||
while true do
|
||||
local buff = UnitBuff(unit, b)
|
||||
if not buff then break end
|
||||
activeBuffs[buff] = true
|
||||
if HealBot_TrackedHoTs[buff] and iconCount < 10 then
|
||||
iconCount = iconCount + 1
|
||||
HealBot_UnitIcons[unit][iconCount] = buff
|
||||
@@ -197,6 +287,30 @@ function HealBot_OnEvent_UnitAura(this, unit)
|
||||
b = b + 1
|
||||
end
|
||||
|
||||
if HealBot_Integrations_Nampower_Active and HealBot_Nampower_Auras then
|
||||
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
|
||||
local validHoTs = {
|
||||
["Renew"] = "Interface\\Icons\\Spell_Holy_Renew",
|
||||
["Rejuvenation"] = "Interface\\Icons\\Spell_Nature_Rejuvenation",
|
||||
["Regrowth"] = "Interface\\Icons\\Spell_Nature_ResistNature",
|
||||
["Power Word: Shield"] = "Interface\\Icons\\Spell_Holy_PowerWordShield",
|
||||
}
|
||||
for spellName, _ in pairs(HealBot_Nampower_Auras[guid]) do
|
||||
local tex = validHoTs[spellName]
|
||||
if tex and not activeBuffs[tex] then
|
||||
HealBot_Nampower_Auras[guid][spellName] = nil
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
HealBot_ReleaseTable(activeBuffs)
|
||||
|
||||
local d = 1
|
||||
while true do
|
||||
local debuff = UnitDebuff(unit, d)
|
||||
@@ -209,18 +323,30 @@ function HealBot_OnEvent_UnitAura(this, unit)
|
||||
end
|
||||
|
||||
if HealBot_UnitDebuff[unit] then
|
||||
if DebuffType and HealBot_Range_Check(unit, 27) == 1 then
|
||||
if HealBot_Config.ShowDebuffWarning == 1 then
|
||||
UIErrorsFrame:AddMessage(UnitName(unit) .. " suffers from " .. DebuffType,
|
||||
HealBot_Config.CDCBarColour[DebuffType].R,
|
||||
HealBot_Config.CDCBarColour[DebuffType].G,
|
||||
HealBot_Config.CDCBarColour[DebuffType].B,
|
||||
1, UIERRORS_HOLD_TIME);
|
||||
if DebuffType and HealBot_Range_Check(unit, 40) == 1 then
|
||||
if HealBot_AuraWarningPlayed[unit] ~= DebuffType then
|
||||
HealBot_AuraWarningPlayed[unit] = DebuffType
|
||||
if HealBot_Config.ShowDebuffWarning == 1 then
|
||||
local color = HealBot_Config.CDCBarColour[DebuffType]
|
||||
local r, g, b = 1, 0, 0
|
||||
if color then
|
||||
r, g, b = color.R, color.G, color.B
|
||||
end
|
||||
UIErrorsFrame:AddMessage(UnitName(unit) .. " suffers from " .. DebuffType,
|
||||
r, g, b,
|
||||
1, UIERRORS_HOLD_TIME);
|
||||
end
|
||||
if HealBot_Config.SoundDebuffWarning == 1 then HealBot_PlaySound(HealBot_Config.SoundDebuffPlay); end
|
||||
end
|
||||
if HealBot_Config.SoundDebuffWarning == 1 then HealBot_PlaySound(HealBot_Config.SoundDebuffPlay); end
|
||||
end
|
||||
else
|
||||
HealBot_AuraWarningPlayed[unit] = nil
|
||||
end
|
||||
HealBot_CheckBuffs(unit);
|
||||
HealBot_RecalcHeals(unit);
|
||||
-- Check buffs synchronously because tooltip scanning fails in OnUpdate
|
||||
HealBot_CheckBuffs(unit)
|
||||
|
||||
-- Defer UI updates
|
||||
HealBot_View_DirtyUnits[unit] = true
|
||||
HealBot_ReleaseTable(trackedTextures)
|
||||
end
|
||||
end
|
||||
|
||||
+123
-15
@@ -1,6 +1,7 @@
|
||||
-- HealBot_Controller_Comms.lua
|
||||
-- Handles network sync (addon messaging), errors, and chat debugging
|
||||
|
||||
-- HealBot_Get_DebugChan: Internal utility: HealBot_Get_DebugChan
|
||||
function HealBot_Get_DebugChan()
|
||||
local index = GetChannelName("HBmsg");
|
||||
if (index > 0) then
|
||||
@@ -10,6 +11,7 @@ function HealBot_Get_DebugChan()
|
||||
end
|
||||
end
|
||||
|
||||
-- HealBot_AddChat: Prints standard messages to default chat frame.
|
||||
function HealBot_AddChat(msg)
|
||||
local chanid = HealBot_Get_DebugChan();
|
||||
if chanid and HealBot_SpamCnt < 3 then
|
||||
@@ -28,7 +30,15 @@ function HealBot_AddChat(msg)
|
||||
end
|
||||
end
|
||||
|
||||
-- HealBot_AddDebug: Prints debug messages to chat or internal debug channel.
|
||||
function HealBot_AddDebug(msg)
|
||||
if HealBot_Config and HealBot_Config.DebugMode == 1 then
|
||||
if DEFAULT_CHAT_FRAME then
|
||||
DEFAULT_CHAT_FRAME:AddMessage("|cFFFFD100[HB Debug]|r " .. msg);
|
||||
end
|
||||
return;
|
||||
end
|
||||
|
||||
local chanid = HealBot_Get_DebugChan();
|
||||
if chanid and HealBot_SpamCnt < 3 then
|
||||
HealBot_SpamCnt = HealBot_SpamCnt + 1;
|
||||
@@ -44,6 +54,7 @@ function HealBot_AddDebug(msg)
|
||||
end
|
||||
end
|
||||
|
||||
-- HealBot_Report_Error: Formats and prints error logs.
|
||||
function HealBot_Report_Error(msg)
|
||||
if HealBot_ErrorCnt < 28 then
|
||||
HealBot_ErrorCnt = HealBot_ErrorCnt + 1;
|
||||
@@ -52,11 +63,13 @@ function HealBot_Report_Error(msg)
|
||||
end
|
||||
end
|
||||
|
||||
-- HealBot_AddError: Displays error text in the UI frame.
|
||||
function HealBot_AddError(msg)
|
||||
UIErrorsFrame:AddMessage(msg, 1.0, 1.0, 1.0, 1.0, UIERRORS_HOLD_TIME);
|
||||
HealBot_AddDebug(msg);
|
||||
end
|
||||
|
||||
-- HealBot_SendAddonMessage: Broadcasts data to party/raid channels.
|
||||
function HealBot_SendAddonMessage(prefix, text)
|
||||
if GetNumRaidMembers() > 0 then
|
||||
SendAddonMessage(prefix, text, "RAID")
|
||||
@@ -65,32 +78,127 @@ function HealBot_SendAddonMessage(prefix, text)
|
||||
end
|
||||
end
|
||||
|
||||
function HealBot_OnEvent_AddonMsg(this, addon_id, inc_msg, dist_target, sender_id)
|
||||
if addon_id == HEALBOT_ADDON_ID then
|
||||
local tmpTest, unitname, heal_val
|
||||
tmpTest, tmpTest, unitname, heal_val = string.find(inc_msg, ">> (%a+) <<=>> (.%d+) <<" );
|
||||
if heal_val then
|
||||
if sender_id == UnitName("player") then return end
|
||||
if not HealBot_HealsIn[unitname] then
|
||||
HealBot_HealsIn[unitname] = 0;
|
||||
if not HealBot_IncomingHealers then HealBot_IncomingHealers = {} end
|
||||
|
||||
-- Reusable global array for gfind string splitting
|
||||
if not HealBot_Comms_Args then HealBot_Comms_Args = {} end
|
||||
|
||||
local function ClearIncomingHeal(sender)
|
||||
local data = HealBot_IncomingHealers[sender]
|
||||
if not data then return end
|
||||
local oldAmount = data.amount
|
||||
for i=1, 5 do
|
||||
local oldTarget = data.targets[i]
|
||||
if oldTarget then
|
||||
if HealBot_HealsIn[oldTarget] then
|
||||
HealBot_HealsIn[oldTarget] = HealBot_HealsIn[oldTarget] - oldAmount
|
||||
if HealBot_HealsIn[oldTarget] < 0 then HealBot_HealsIn[oldTarget] = 0 end
|
||||
HealBot_RecalcHeals(HealBot_FindUnitID(oldTarget))
|
||||
end
|
||||
HealBot_Healers[sender_id] = ">> " .. unitname .. " <<=>> " .. heal_val .. " <<";
|
||||
HealBot_HealsIn[unitname] = HealBot_HealsIn[unitname] + tonumber(heal_val);
|
||||
if tonumber(heal_val) > 0 then
|
||||
HealBot_RecalcHeals(HealBot_FindUnitID(unitname))
|
||||
elseif HealBot_HealsIn[unitname] < 0 then
|
||||
HealBot_HealsIn[unitname] = 0;
|
||||
data.targets[i] = nil
|
||||
end
|
||||
end
|
||||
data.amount = 0
|
||||
end
|
||||
|
||||
local function SetIncomingHeal(sender, amount, protocol, t1, t2, t3, t4, t5)
|
||||
-- prioritize HealComm over HealBot protocol to avoid double-counting
|
||||
if HealBot_IncomingHealers[sender] and HealBot_IncomingHealers[sender].protocol == "HealComm" and protocol == "HealBot" then
|
||||
return
|
||||
end
|
||||
|
||||
if not HealBot_IncomingHealers[sender] then
|
||||
HealBot_IncomingHealers[sender] = { targets = {}, amount = 0, protocol = protocol }
|
||||
end
|
||||
|
||||
ClearIncomingHeal(sender)
|
||||
|
||||
local data = HealBot_IncomingHealers[sender]
|
||||
data.protocol = protocol
|
||||
|
||||
if amount > 0 and t1 then
|
||||
data.amount = amount
|
||||
data.targets[1] = t1
|
||||
data.targets[2] = t2
|
||||
data.targets[3] = t3
|
||||
data.targets[4] = t4
|
||||
data.targets[5] = t5
|
||||
|
||||
for i=1, 5 do
|
||||
local target = data.targets[i]
|
||||
if target then
|
||||
if not HealBot_HealsIn[target] then HealBot_HealsIn[target] = 0 end
|
||||
HealBot_HealsIn[target] = HealBot_HealsIn[target] + amount
|
||||
HealBot_RecalcHeals(HealBot_FindUnitID(target))
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- HealBot_OnEvent_AddonMsg: Parses incoming heal data from other clients.
|
||||
function HealBot_OnEvent_AddonMsg(this, addon_id, inc_msg, dist_target, sender_id)
|
||||
if sender_id == UnitName("player") then return end
|
||||
|
||||
if addon_id == "HealComm" then
|
||||
-- Clear reusable args array
|
||||
for i=1, 10 do HealBot_Comms_Args[i] = nil end
|
||||
local argCount = 0
|
||||
local start_pos = 1
|
||||
local next_pos = string.find(inc_msg, "/", start_pos, true)
|
||||
while next_pos do
|
||||
argCount = argCount + 1
|
||||
HealBot_Comms_Args[argCount] = string.sub(inc_msg, start_pos, next_pos - 1)
|
||||
start_pos = next_pos + 1
|
||||
next_pos = string.find(inc_msg, "/", start_pos, true)
|
||||
end
|
||||
if start_pos <= string.len(inc_msg) then
|
||||
argCount = argCount + 1
|
||||
HealBot_Comms_Args[argCount] = string.sub(inc_msg, start_pos)
|
||||
end
|
||||
local cmd = HealBot_Comms_Args[1]
|
||||
|
||||
if cmd == "Heal" and HealBot_Comms_Args[2] and HealBot_Comms_Args[3] then
|
||||
SetIncomingHeal(sender_id, tonumber(HealBot_Comms_Args[3]) or 0, "HealComm", HealBot_Comms_Args[2])
|
||||
elseif cmd == "Healstop" then
|
||||
SetIncomingHeal(sender_id, 0, "HealComm")
|
||||
elseif cmd == "GrpHeal" and HealBot_Comms_Args[2] then
|
||||
SetIncomingHeal(sender_id, tonumber(HealBot_Comms_Args[2]) or 0, "HealComm", HealBot_Comms_Args[4], HealBot_Comms_Args[5], HealBot_Comms_Args[6], HealBot_Comms_Args[7], HealBot_Comms_Args[8])
|
||||
elseif cmd == "GrpHealstop" then
|
||||
SetIncomingHeal(sender_id, 0, "HealComm")
|
||||
elseif cmd == "Resurrection" then
|
||||
if HealBot_Comms_Args[2] == "stop" then
|
||||
HealBot_AddDebug(sender_id .. " Stopped ressing");
|
||||
for unit, resser in pairs(HealBot_Ressing) do
|
||||
if resser == sender_id then
|
||||
HealBot_Ressing[unit] = nil;
|
||||
HealBot_RecalcHeals(HealBot_FindUnitID(unit));
|
||||
end
|
||||
end
|
||||
elseif HealBot_Comms_Args[2] and HealBot_Comms_Args[3] == "start" then
|
||||
HealBot_AddDebug(sender_id .. " is ressing " .. HealBot_Comms_Args[2]);
|
||||
HealBot_Ressing[HealBot_Comms_Args[2]] = sender_id;
|
||||
HealBot_RecalcHeals(HealBot_FindUnitID(HealBot_Comms_Args[2]));
|
||||
end
|
||||
end
|
||||
|
||||
elseif addon_id == HEALBOT_ADDON_ID then
|
||||
local tmpTest, tmpTest, unitname, heal_val = string.find(inc_msg, ">> (.-) <<=>> (.-) <<" );
|
||||
if heal_val and unitname then
|
||||
local amount = tonumber(heal_val) or 0
|
||||
if amount < 0 then amount = 0 end -- HealBot sends negative to cancel
|
||||
SetIncomingHeal(sender_id, amount, "HealBot", unitname)
|
||||
end
|
||||
|
||||
elseif addon_id == "HealBot" then
|
||||
local tmpTest, datatype, datamsg, sender
|
||||
local PName = UnitName("player");
|
||||
tmpTest, tmpTest, datatype, sender, datamsg = string.find(inc_msg, ">> (%a+) <<=>> (%a+) <<=>> (.+)");
|
||||
tmpTest, tmpTest, datatype, sender, datamsg = string.find(inc_msg, ">> (.-) <<=>> (.-) <<=>> (.+)");
|
||||
if datatype == "RequestVersion" then
|
||||
HealBot_SendAddonMessage("HealBot", ">> SendVersion <<=>> " .. sender .. " <<=>> Version=" .. HEALBOT_VERSION);
|
||||
elseif datatype == "SendVersion" and PName == sender then
|
||||
HealBot_AddChat(sender_id .. ": " .. datamsg);
|
||||
end
|
||||
|
||||
elseif addon_id == "CTRA" then
|
||||
if ( string.sub(inc_msg, 1, 3) == "RES" ) then
|
||||
if ( inc_msg == "RESNO" ) then
|
||||
|
||||
+178
-34
@@ -3,9 +3,12 @@
|
||||
|
||||
HealBot_View_DirtyUnits = {}
|
||||
HealBot_View_DirtyPower = {}
|
||||
local unitsToRefresh = {}
|
||||
local powerToRefresh = {}
|
||||
local HealBot_Timer1, HealsIn_Timer = 0, 0;
|
||||
HealBot_LastModState = ""
|
||||
|
||||
-- HealBot_OnLoad: Registers core events and observers on addon load.
|
||||
function HealBot_OnLoad(this)
|
||||
this:RegisterEvent("VARIABLES_LOADED");
|
||||
|
||||
@@ -36,10 +39,12 @@ function HealBot_OnLoad(this)
|
||||
end)
|
||||
end
|
||||
|
||||
-- HealBot_RegisterThis: Internal utility: HealBot_RegisterThis
|
||||
function HealBot_RegisterThis(this)
|
||||
-- Deprecated / not used
|
||||
end
|
||||
|
||||
-- HealBot_OnUpdate: Main loop: processes dirty queues and timers.
|
||||
function HealBot_OnUpdate(this, arg1)
|
||||
if HealBot_Action_TooltipUnit and HealBot_Tooltip:IsVisible() then
|
||||
local s = IsShiftKeyDown() and true or false
|
||||
@@ -64,30 +69,108 @@ function HealBot_OnUpdate(this, arg1)
|
||||
local pending = HealBot_TargetRestorePending;
|
||||
HealBot_TargetRestorePending = nil;
|
||||
HealBot_TargetRestoreTimer = 0;
|
||||
if pending.type == "enemy" then
|
||||
if pending == "enemy" then
|
||||
TargetLastEnemy();
|
||||
elseif pending.type == "friend" then
|
||||
elseif pending == "friend" then
|
||||
TargetLastTarget();
|
||||
elseif pending.type == "clear" then
|
||||
elseif pending == "clear" then
|
||||
ClearTarget();
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if HealBot_PendingShapeshiftCast then
|
||||
local pendingCast = HealBot_PendingShapeshiftCast
|
||||
|
||||
-- Wait for server to process the unshift before attempting the cast
|
||||
if GetTime() >= pendingCast.fireTime then
|
||||
if not HealBot_GetShapeshiftForm() then
|
||||
-- Target the unit if necessary before casting
|
||||
-- Target the unit if necessary before casting
|
||||
if pendingCast.oldTarget ~= UnitName(pendingCast.target) then
|
||||
TargetUnit(pendingCast.target)
|
||||
end
|
||||
|
||||
-- 1. Initialize the MVC side effects (AnnounceCast, Incoming Heals) only ONCE
|
||||
if not pendingCast.started then
|
||||
pendingCast.started = true
|
||||
|
||||
-- Extract base spell
|
||||
local baseSpell = pendingCast.spell
|
||||
local parenIndex = string.find(pendingCast.spell, "%(")
|
||||
if parenIndex then
|
||||
baseSpell = string.sub(pendingCast.spell, 1, parenIndex - 1)
|
||||
end
|
||||
baseSpell = string.gsub(baseSpell, "%s+$", "")
|
||||
|
||||
-- Force MVC updates since we guarantee the cast will eventually pierce the server
|
||||
HealBot_CastFailed = true -- Trigger first attempt immediately
|
||||
HealBot_CastingSpell = baseSpell
|
||||
HealBot_CastingTarget = pendingCast.target
|
||||
HealBot_Process_HealValue(baseSpell, pendingCast.target)
|
||||
HealBot_AnnounceCast(pendingCast.spell, pendingCast.target)
|
||||
|
||||
-- Restore target logic
|
||||
if pendingCast.targetEnemy then
|
||||
HealBot_TargetRestorePending = "enemy"
|
||||
elseif pendingCast.oldTarget and pendingCast.oldTarget ~= UnitName(pendingCast.target) then
|
||||
HealBot_TargetRestorePending = "friend"
|
||||
elseif not pendingCast.oldTarget then
|
||||
HealBot_TargetRestorePending = "clear"
|
||||
end
|
||||
HealBot_TargetRestoreTimer = 0
|
||||
end
|
||||
|
||||
-- 2. Spam the cast until the server explicitly accepts it (firing SPELLCAST_START)
|
||||
if pendingCast.started then
|
||||
if not pendingCast.nextSpam or GetTime() >= pendingCast.nextSpam then
|
||||
pendingCast.nextSpam = GetTime() + 0.10
|
||||
|
||||
-- Safely suppress UI errors
|
||||
UIErrorsFrame:UnregisterEvent("UI_ERROR_MESSAGE")
|
||||
|
||||
-- Only use HealBot's native cast wrapper
|
||||
HealBot_CastSpellByName(pendingCast.spell)
|
||||
|
||||
if SpellCanTargetUnit(pendingCast.target) then
|
||||
SpellTargetUnit(pendingCast.target)
|
||||
elseif SpellIsTargeting() then
|
||||
SpellTargetUnit(pendingCast.target)
|
||||
SpellStopTargeting()
|
||||
end
|
||||
|
||||
UIErrorsFrame:RegisterEvent("UI_ERROR_MESSAGE")
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- Failsafe timeout
|
||||
if HealBot_PendingShapeshiftCast and GetTime() > pendingCast.expires then
|
||||
HealBot_PendingShapeshiftCast = nil
|
||||
HealBot_StopCasting()
|
||||
HealBot_RecalcHeals()
|
||||
end
|
||||
end
|
||||
|
||||
-- Process Dirty Queue for MVC View
|
||||
local unitID, _ = next(HealBot_View_DirtyUnits)
|
||||
while unitID do
|
||||
HealBot_Action_RefreshButtons(unitID)
|
||||
for k in pairs(unitsToRefresh) do unitsToRefresh[k] = nil end
|
||||
for unitID in pairs(HealBot_View_DirtyUnits) do
|
||||
unitsToRefresh[unitID] = true
|
||||
HealBot_View_DirtyUnits[unitID] = nil
|
||||
HealBot_View_DirtyPower[unitID] = nil -- Skip fast path if doing full refresh
|
||||
unitID, _ = next(HealBot_View_DirtyUnits)
|
||||
HealBot_View_DirtyPower[unitID] = nil -- No need to do power-only if full refresh is queued
|
||||
end
|
||||
for unitID in pairs(unitsToRefresh) do
|
||||
HealBot_Action_Refresh(unitID)
|
||||
end
|
||||
|
||||
local powerID, _ = next(HealBot_View_DirtyPower)
|
||||
while powerID do
|
||||
HealBot_Action_RefreshPower(powerID)
|
||||
HealBot_View_DirtyPower[powerID] = nil
|
||||
powerID, _ = next(HealBot_View_DirtyPower)
|
||||
for k in pairs(powerToRefresh) do powerToRefresh[k] = nil end
|
||||
for unitID in pairs(HealBot_View_DirtyPower) do
|
||||
powerToRefresh[unitID] = true
|
||||
HealBot_View_DirtyPower[unitID] = nil
|
||||
end
|
||||
for unitID in pairs(powerToRefresh) do
|
||||
HealBot_Action_RefreshPower(unitID)
|
||||
end
|
||||
|
||||
if HealBot_EquipChangeTimer > 0 then
|
||||
@@ -99,6 +182,16 @@ function HealBot_OnUpdate(this, arg1)
|
||||
HealBot_RecalcSpells();
|
||||
end
|
||||
end
|
||||
if HealBot_Config.HealBot_Integrations_ShowHoTTimers == 1 then
|
||||
if not HealBot_HoT_Update_Timer or GetTime() >= HealBot_HoT_Update_Timer then
|
||||
HealBot_HoT_Update_Timer = GetTime() + 0.25
|
||||
if HealBot_Action_UpdatePlayerHoTs then
|
||||
HealBot_Action_UpdatePlayerHoTs()
|
||||
end
|
||||
end
|
||||
elseif HealBot_PlayerHoTsListFrame and HealBot_PlayerHoTsListFrame:IsVisible() then
|
||||
HealBot_PlayerHoTsListFrame:Hide()
|
||||
end
|
||||
|
||||
HealBot_Timer1 = HealBot_Timer1 + arg1;
|
||||
if HealBot_Timer1 >= 2.5 then
|
||||
@@ -200,16 +293,21 @@ local HealBot_EventHandlers = {
|
||||
HealBot_Model:NotifyObservers("ROSTER_CHANGED")
|
||||
HealBot_OnEvent_PartyMembersChanged(this)
|
||||
end,
|
||||
["RAID_TARGET_UPDATE"] = function(this)
|
||||
if HealBot_Action_UnitButtons then
|
||||
for unit, _ in pairs(HealBot_Action_UnitButtons) do
|
||||
HealBot_View_DirtyUnits[unit] = true
|
||||
end
|
||||
end
|
||||
end,
|
||||
["PLAYER_ENTERING_WORLD"] = function(this)
|
||||
HealBot_Model:RefreshUnit("player")
|
||||
HealBot_Model:RefreshUnit("pet")
|
||||
if HealBot_UnitClass("player") == "DRUID" then
|
||||
HealBot_UpdateShapeshiftForm()
|
||||
end
|
||||
HealBot_OnEvent_PlayerEnteringWorld(this)
|
||||
end,
|
||||
["VARIABLES_LOADED"] = function(this)
|
||||
HealBot_OnEvent_VariablesLoaded(this)
|
||||
HealBot_Integrations_Toggle()
|
||||
end,
|
||||
-- Legacy pass-throughs
|
||||
["CHAT_MSG_ADDON"] = function(this, arg1, arg2, arg3, arg4) HealBot_OnEvent_AddonMsg(this, arg1, arg2, arg3, arg4) end,
|
||||
@@ -233,11 +331,10 @@ local HealBot_EventHandlers = {
|
||||
HealBot_OnEvent_PlayerEquipmentChanged2(this, arg1)
|
||||
end,
|
||||
["UNIT_PET"] = function(this, arg1) HealBot_OnEvent_PartyMembersChanged(this) end,
|
||||
["SPELLS_CHANGED"] = function(this, arg1) HealBot_OnEvent_SpellsChanged(this, arg1) end,
|
||||
["UPDATE_SHAPESHIFT_FORM"] = function(this) HealBot_UpdateShapeshiftForm() end,
|
||||
["UPDATE_SHAPESHIFT_FORMS"] = function(this) HealBot_UpdateShapeshiftForm() end
|
||||
["SPELLS_CHANGED"] = function(this, arg1) HealBot_OnEvent_SpellsChanged(this, arg1) end
|
||||
}
|
||||
|
||||
-- HealBot_OnEvent: Event dispatcher for WoW UI events.
|
||||
function HealBot_OnEvent(this, event, arg1, arg2, arg3, arg4)
|
||||
local handler = HealBot_EventHandlers[event]
|
||||
if handler then
|
||||
@@ -247,21 +344,23 @@ function HealBot_OnEvent(this, event, arg1, arg2, arg3, arg4)
|
||||
end
|
||||
end
|
||||
|
||||
-- HealBot_OnEvent_VariablesLoaded: Applies config defaults and initializes state.
|
||||
function HealBot_OnEvent_VariablesLoaded(this)
|
||||
local class = HealBot_UnitClass("player")
|
||||
|
||||
table.foreach(HealBot_ConfigDefaults, function (key, val)
|
||||
if not HealBot_Config[key] then
|
||||
HealBot_Config[key] = val;
|
||||
end
|
||||
if type(val) == "table" and type(HealBot_Config[key]) == "table" then
|
||||
for k, v in pairs(val) do
|
||||
if HealBot_Config[key][k] == nil then
|
||||
HealBot_Config[key][k] = v
|
||||
local function DeepCopyMissing(src, dest)
|
||||
for k, v in pairs(src) do
|
||||
if type(v) == "table" then
|
||||
if type(dest[k]) ~= "table" then dest[k] = {} end
|
||||
DeepCopyMissing(v, dest[k])
|
||||
else
|
||||
if dest[k] == nil then
|
||||
dest[k] = v
|
||||
end
|
||||
end
|
||||
end
|
||||
end);
|
||||
end
|
||||
DeepCopyMissing(HealBot_ConfigDefaults, HealBot_Config)
|
||||
|
||||
local foundModern = false
|
||||
if HealBot_Config.Skins then
|
||||
@@ -302,6 +401,7 @@ function HealBot_OnEvent_VariablesLoaded(this)
|
||||
this:RegisterEvent("PLAYER_TARGET_CHANGED");
|
||||
this:RegisterEvent("PARTY_MEMBERS_CHANGED");
|
||||
this:RegisterEvent("RAID_ROSTER_UPDATE");
|
||||
this:RegisterEvent("RAID_TARGET_UPDATE");
|
||||
this:RegisterEvent("PARTY_MEMBER_DISABLE");
|
||||
this:RegisterEvent("PARTY_MEMBER_ENABLE");
|
||||
this:RegisterEvent("UNIT_PET");
|
||||
@@ -321,15 +421,11 @@ function HealBot_OnEvent_VariablesLoaded(this)
|
||||
this:RegisterEvent("CHAT_MSG_ADDON");
|
||||
this:RegisterEvent("CHAT_MSG_SYSTEM");
|
||||
this:RegisterEvent("PLAYER_ENTERING_WORLD");
|
||||
if class == "DRUID" then
|
||||
this:RegisterEvent("UPDATE_SHAPESHIFT_FORM");
|
||||
this:RegisterEvent("UPDATE_SHAPESHIFT_FORMS");
|
||||
HealBot_UpdateShapeshiftForm();
|
||||
end
|
||||
HealBot_SpellsInitFlag = 2;
|
||||
end
|
||||
end
|
||||
|
||||
-- HealBot_OnEvent_UnitHealth: Internal utility: HealBot_OnEvent_UnitHealth
|
||||
function HealBot_OnEvent_UnitHealth(this, unit)
|
||||
if (not HealBot_Heals[unit]) then return end
|
||||
HealBot_CheckCasting(unit);
|
||||
@@ -338,16 +434,19 @@ function HealBot_OnEvent_UnitHealth(this, unit)
|
||||
end
|
||||
end
|
||||
|
||||
-- HealBot_OnEvent_UnitMana: Internal utility: HealBot_OnEvent_UnitMana
|
||||
function HealBot_OnEvent_UnitMana(this, unit)
|
||||
if (unit ~= "player") then return end
|
||||
HealBot_RecalcHeals();
|
||||
end
|
||||
|
||||
-- HealBot_OnEvent_ZoneChanged: Internal utility: HealBot_OnEvent_ZoneChanged
|
||||
function HealBot_OnEvent_ZoneChanged(this)
|
||||
HealBot_ResetRangeScale();
|
||||
HealBot_Delay_RecalcParty = 1;
|
||||
end
|
||||
|
||||
-- HealBot_OnEvent_PlayerRegenDisabled: Internal utility: HealBot_OnEvent_PlayerRegenDisabled
|
||||
function HealBot_OnEvent_PlayerRegenDisabled(this)
|
||||
-- Removed HealBot_RecalcParty();
|
||||
if (UnitIsDeadOrGhost("player")) or (UnitOnTaxi("player")) then
|
||||
@@ -383,11 +482,21 @@ function HealBot_OnEvent_PlayerRegenDisabled(this)
|
||||
-- HealBot_RecalcHeals();
|
||||
end
|
||||
|
||||
-- HealBot_OnEvent_PlayerRegenEnabled: Internal utility: HealBot_OnEvent_PlayerRegenEnabled
|
||||
function HealBot_OnEvent_PlayerRegenEnabled(this)
|
||||
HealBot_IsFighting = false;
|
||||
HealBot_Delay_RecalcParty = 1;
|
||||
|
||||
if HealBot_IncomingHealers then
|
||||
for sender, data in pairs(HealBot_IncomingHealers) do
|
||||
if not HealBot_FindUnitID(sender) then
|
||||
HealBot_IncomingHealers[sender] = nil
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- HealBot_OnEvent_PlayerTargetChanged: Internal utility: HealBot_OnEvent_PlayerTargetChanged
|
||||
function HealBot_OnEvent_PlayerTargetChanged(this)
|
||||
if HealBot_Action_UnitButtons and HealBot_Action_UnitButtons["target"] then
|
||||
HealBot_View_DirtyUnits["target"] = true
|
||||
@@ -395,14 +504,23 @@ function HealBot_OnEvent_PlayerTargetChanged(this)
|
||||
end
|
||||
end
|
||||
|
||||
-- HealBot_OnEvent_PartyMembersChanged: Internal utility: HealBot_OnEvent_PartyMembersChanged
|
||||
function HealBot_OnEvent_PartyMembersChanged(this)
|
||||
HealBot_Model:PreserveStateByGUID()
|
||||
HealBot_Integrations_PruneNampower()
|
||||
if HealBot_UpdateUnitIDCache then HealBot_UpdateUnitIDCache() end
|
||||
if HealBot_IsFighting then
|
||||
HealBot_Action_PartyChanged()
|
||||
end
|
||||
HealBot_Delay_RecalcParty = 1;
|
||||
end
|
||||
|
||||
-- HealBot_OnEvent_PartyMemberDisable: Internal utility: HealBot_OnEvent_PartyMemberDisable
|
||||
function HealBot_OnEvent_PartyMemberDisable(this, unit)
|
||||
HealBot_RecalcHeals();
|
||||
end
|
||||
|
||||
-- HealBot_OnEvent_SystemMsg: Internal utility: HealBot_OnEvent_SystemMsg
|
||||
function HealBot_OnEvent_SystemMsg(this, msg)
|
||||
if type(msg) == "string" then
|
||||
local tmpTest, tmpTest, deserter = string.find(msg, HEALBOT_HASLEFTRAID);
|
||||
@@ -429,40 +547,51 @@ function HealBot_OnEvent_SystemMsg(this, msg)
|
||||
end
|
||||
end
|
||||
|
||||
-- HealBot_OnEvent_PartyMemberEnable: Internal utility: HealBot_OnEvent_PartyMemberEnable
|
||||
function HealBot_OnEvent_PartyMemberEnable(this, unit)
|
||||
HealBot_RecalcHeals();
|
||||
end
|
||||
|
||||
-- HealBot_OnEvent_PlayerEquipmentChanged: Internal utility: HealBot_OnEvent_PlayerEquipmentChanged
|
||||
function HealBot_OnEvent_PlayerEquipmentChanged(this)
|
||||
HealBot_EquipChangeTimer = 1;
|
||||
end
|
||||
|
||||
-- HealBot_OnEvent_PlayerEquipmentChanged2: Internal utility: HealBot_OnEvent_PlayerEquipmentChanged2
|
||||
function HealBot_OnEvent_PlayerEquipmentChanged2(this, unit)
|
||||
if unit == "player" then
|
||||
HealBot_EquipChangeTimer = 1;
|
||||
end
|
||||
end
|
||||
|
||||
-- HealBot_OnEvent_SpellsChanged: Internal utility: HealBot_OnEvent_SpellsChanged
|
||||
function HealBot_OnEvent_SpellsChanged(this, arg1)
|
||||
if arg1 then return; end
|
||||
HealBot_AddDebug("HB: SpellsChanged");
|
||||
if HealBot_CacheSpellIDs then HealBot_CacheSpellIDs() end
|
||||
HealBot_SpellsInitFlag = 2;
|
||||
end
|
||||
|
||||
-- HealBot_OnEvent_TalentsChanged: Internal utility: HealBot_OnEvent_TalentsChanged
|
||||
function HealBot_OnEvent_TalentsChanged(this, arg1)
|
||||
HealBot_AddDebug("HB: TalentsChanged");
|
||||
if HealBot_UpdateTalentRanks then HealBot_UpdateTalentRanks() end
|
||||
end
|
||||
|
||||
-- HealBot_OnEvent_PlayerEnteringWorld: Internal utility: HealBot_OnEvent_PlayerEnteringWorld
|
||||
function HealBot_OnEvent_PlayerEnteringWorld(this)
|
||||
HealBot_IsFighting = false;
|
||||
-- Re-apply the refresh hook late in case another addon overrode it during load
|
||||
if HealBot_ApplyRefreshHook then
|
||||
HealBot_ApplyRefreshHook()
|
||||
end
|
||||
if HealBot_UpdateUnitIDCache then HealBot_UpdateUnitIDCache() end
|
||||
end
|
||||
|
||||
-- HealBot_OnEvent_SpellcastStart: Internal utility: HealBot_OnEvent_SpellcastStart
|
||||
function HealBot_OnEvent_SpellcastStart(this, spell, duration)
|
||||
HealBot_IsCasting = true;
|
||||
HealBot_PendingShapeshiftCast = nil;
|
||||
HealBot_RecalcHeals();
|
||||
HealBot_CheckCasting();
|
||||
if spell == HEALBOT_RESURRECTION or spell == HEALBOT_ANCESTRALSPIRIT or spell == HEALBOT_REBIRTH or spell == HEALBOT_REDEMPTION then
|
||||
@@ -473,11 +602,26 @@ function HealBot_OnEvent_SpellcastStart(this, spell, duration)
|
||||
end
|
||||
end
|
||||
|
||||
-- HealBot_OnEvent_SpellcastStop: Internal utility: HealBot_OnEvent_SpellcastStop
|
||||
function HealBot_OnEvent_SpellcastStop(this, eventName)
|
||||
HealBot_IsCasting = false;
|
||||
if eventName == "SPELLCAST_FAILED" then
|
||||
if eventName == "SPELLCAST_FAILED" or eventName == "SPELLCAST_INTERRUPTED" then
|
||||
HealBot_CastFailed = true;
|
||||
if HealBot_PendingShapeshiftCast then
|
||||
return;
|
||||
end
|
||||
end
|
||||
|
||||
if HealBot_PendingShapeshiftCast and eventName == "SPELLCAST_STOP" then
|
||||
if HealBot_CastFailed or not HealBot_PendingShapeshiftCast.started then
|
||||
-- This STOP is either the trailing event of a failed/interrupted cast,
|
||||
-- or it is the STOP event from the unshift spell itself.
|
||||
-- Do not wipe the queue yet!
|
||||
return;
|
||||
end
|
||||
end
|
||||
|
||||
HealBot_PendingShapeshiftCast = nil;
|
||||
HealBot_StopCasting();
|
||||
HealBot_RecalcHeals();
|
||||
if HealBot_IamRessing then
|
||||
|
||||
@@ -3,17 +3,54 @@
|
||||
|
||||
local _scale = 0
|
||||
|
||||
-- HealBot_ResetRangeScale: Resets map range scaling on zone change.
|
||||
function HealBot_ResetRangeScale()
|
||||
_scale = 0
|
||||
end
|
||||
|
||||
local _rangeCache = {}
|
||||
local _lastFrameTime = 0
|
||||
|
||||
-- HealBot_Range_Check: Checks if unit is in range via map distance or API.
|
||||
function HealBot_Range_Check(unit, range)
|
||||
local currentTime = GetTime()
|
||||
if _lastFrameTime ~= currentTime then
|
||||
for r, cacheTable in pairs(_rangeCache) do
|
||||
for u in pairs(cacheTable) do
|
||||
cacheTable[u] = nil
|
||||
end
|
||||
end
|
||||
_lastFrameTime = currentTime
|
||||
end
|
||||
|
||||
local return_val = 0;
|
||||
if not range then
|
||||
range = 40;
|
||||
end
|
||||
if ( unit == "player" ) then
|
||||
|
||||
_rangeCache[range] = _rangeCache[range] or {}
|
||||
if _rangeCache[range][unit] ~= nil then
|
||||
return _rangeCache[range][unit]
|
||||
end
|
||||
|
||||
if ( 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
|
||||
@@ -38,5 +75,7 @@ function HealBot_Range_Check(unit, range)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
_rangeCache[range][unit] = return_val
|
||||
return return_val;
|
||||
end
|
||||
|
||||
+207
-61
@@ -3,6 +3,7 @@
|
||||
|
||||
HealBot_CastingSpell = nil;
|
||||
HealBot_CastingTarget = nil;
|
||||
HealBot_CastingGroupMembers = nil;
|
||||
HealBot_TargetRestorePending = nil;
|
||||
HealBot_TargetRestoreTimer = 0;
|
||||
|
||||
@@ -18,6 +19,7 @@ local HealBot_Health60 = {
|
||||
["WARRIOR"] = 5000,
|
||||
}
|
||||
|
||||
-- HealBot_GetSpellName: Internal utility: HealBot_GetSpellName
|
||||
function HealBot_GetSpellName(id)
|
||||
if (not id) then
|
||||
return nil;
|
||||
@@ -32,29 +34,30 @@ function HealBot_GetSpellName(id)
|
||||
return spellName .. " (" .. subSpellName .. ")";
|
||||
end
|
||||
|
||||
function HealBot_GetSpellId(spell)
|
||||
local id, idd = 1, 0;
|
||||
while true do
|
||||
local spellName, subSpellName = GetSpellName(id, BOOKTYPE_SPELL);
|
||||
if (spellName) then
|
||||
if (spell == spellName .. " (" .. subSpellName .. ")") or (spell == spellName .. "(" .. subSpellName .. ")") then
|
||||
return id;
|
||||
end
|
||||
if (spell == spellName) then
|
||||
idd = id;
|
||||
end
|
||||
else
|
||||
break
|
||||
HealBot_SpellNameToId = {}
|
||||
|
||||
function HealBot_CacheSpellIDs()
|
||||
HealBot_SpellNameToId = {}
|
||||
local id = 1
|
||||
while true do
|
||||
local spellName, subSpellName = GetSpellName(id, BOOKTYPE_SPELL)
|
||||
if not spellName then break end
|
||||
if subSpellName and subSpellName ~= "" then
|
||||
HealBot_SpellNameToId[spellName .. " (" .. subSpellName .. ")"] = id
|
||||
HealBot_SpellNameToId[spellName .. "(" .. subSpellName .. ")"] = id
|
||||
end
|
||||
id = id + 1;
|
||||
end
|
||||
if idd > 0 then
|
||||
return idd
|
||||
else
|
||||
return nil;
|
||||
HealBot_SpellNameToId[spellName] = id
|
||||
id = id + 1
|
||||
end
|
||||
end
|
||||
|
||||
-- HealBot_GetSpellId: Internal utility: HealBot_GetSpellId
|
||||
function HealBot_GetSpellId(spell)
|
||||
if not spell then return nil end
|
||||
return HealBot_SpellNameToId[spell]
|
||||
end
|
||||
|
||||
-- HealBot_CastSpellByName: Internal utility: HealBot_CastSpellByName
|
||||
function HealBot_CastSpellByName(spell)
|
||||
if (HealBot_Spells[spell] and HealBot_Spells[spell].BagSlot) then
|
||||
HealBot_UseItem(spell);
|
||||
@@ -74,6 +77,7 @@ function HealBot_CastSpellByName(spell)
|
||||
CastSpell(id, BOOKTYPE_SPELL);
|
||||
end
|
||||
|
||||
-- HealBot_AnnounceCast: Internal utility: HealBot_AnnounceCast
|
||||
function HealBot_AnnounceCast(spell, target)
|
||||
if not spell or not target then return end
|
||||
|
||||
@@ -127,8 +131,9 @@ function HealBot_AnnounceCast(spell, target)
|
||||
end
|
||||
end
|
||||
|
||||
-- HealBot_Process_HealValue: Internal utility: HealBot_Process_HealValue
|
||||
function HealBot_Process_HealValue(spell, target)
|
||||
if HealBot_Spells[spell] and HealBot_Spells[spell].CastTime > 1 then
|
||||
if HealBot_Spells[spell] and (HealBot_Spells[spell].CastTime or 0) > 1 then
|
||||
HealBot_HealValue = HealBot_Spells[spell].HealsDur;
|
||||
|
||||
-- Apply dynamic Preservation bonus
|
||||
@@ -153,18 +158,60 @@ function HealBot_Process_HealValue(spell, target)
|
||||
end
|
||||
local uname = UnitName(target)
|
||||
if uname then
|
||||
HealBot_SendAddonMessage(HEALBOT_ADDON_ID, ">> " .. uname .. " <<=>> " .. HealBot_HealValue .. " << ");
|
||||
if not HealBot_HealsIn[uname] then
|
||||
HealBot_HealsIn[uname] = 0;
|
||||
if not HealBot_CastingGroupMembers then HealBot_CastingGroupMembers = {} end
|
||||
for i=1, table.getn(HealBot_CastingGroupMembers) do HealBot_CastingGroupMembers[i] = nil end
|
||||
table.setn(HealBot_CastingGroupMembers, 0)
|
||||
if HEALBOT_PRAYER_OF_HEALING and string.find(spell, HEALBOT_PRAYER_OF_HEALING) then
|
||||
if GetNumRaidMembers() > 0 then
|
||||
local targetGroup = 0
|
||||
for i = 1, GetNumRaidMembers() do
|
||||
local name, _, subgroup = GetRaidRosterInfo(i)
|
||||
if name == uname then targetGroup = subgroup; break; end
|
||||
end
|
||||
if targetGroup > 0 then
|
||||
for i = 1, GetNumRaidMembers() do
|
||||
local name, _, subgroup = GetRaidRosterInfo(i)
|
||||
if subgroup == targetGroup and name then table.insert(HealBot_CastingGroupMembers, name); end
|
||||
end
|
||||
end
|
||||
else
|
||||
table.insert(HealBot_CastingGroupMembers, UnitName("player"))
|
||||
for i = 1, GetNumPartyMembers() do
|
||||
if UnitName("party"..i) then table.insert(HealBot_CastingGroupMembers, UnitName("party"..i)); end
|
||||
end
|
||||
end
|
||||
end
|
||||
if table.getn(HealBot_CastingGroupMembers) == 0 then
|
||||
table.insert(HealBot_CastingGroupMembers, uname)
|
||||
end
|
||||
|
||||
if table.getn(HealBot_CastingGroupMembers) > 1 then
|
||||
local commsStr = "GrpHeal/" .. HealBot_HealValue .. "/1500/"
|
||||
for _, memberName in ipairs(HealBot_CastingGroupMembers) do
|
||||
commsStr = commsStr .. memberName .. "/"
|
||||
end
|
||||
HealBot_SendAddonMessage("HealComm", commsStr)
|
||||
for _, memberName in ipairs(HealBot_CastingGroupMembers) do
|
||||
HealBot_SendAddonMessage(HEALBOT_ADDON_ID, ">> " .. memberName .. " <<=>> " .. HealBot_HealValue .. " << ")
|
||||
if not HealBot_HealsIn[memberName] then HealBot_HealsIn[memberName] = 0 end
|
||||
HealBot_HealsIn[memberName] = HealBot_HealsIn[memberName] + HealBot_HealValue
|
||||
HealBot_RecalcHeals(HealBot_FindUnitID(memberName))
|
||||
end
|
||||
else
|
||||
HealBot_SendAddonMessage("HealComm", "Heal/" .. uname .. "/" .. HealBot_HealValue .. "/1500/")
|
||||
HealBot_SendAddonMessage(HEALBOT_ADDON_ID, ">> " .. uname .. " <<=>> " .. HealBot_HealValue .. " << ")
|
||||
if not HealBot_HealsIn[uname] then HealBot_HealsIn[uname] = 0 end
|
||||
HealBot_HealsIn[uname] = HealBot_HealsIn[uname] + HealBot_HealValue
|
||||
HealBot_RecalcHeals(HealBot_FindUnitID(uname))
|
||||
end
|
||||
HealBot_HealsIn[uname] = HealBot_HealsIn[uname] + HealBot_HealValue;
|
||||
HealBot_RecalcHeals(HealBot_FindUnitID(uname));
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- HealBot_StartCasting: Initiates spell cast and broadcasts incoming heal.
|
||||
function HealBot_StartCasting(spell, target, ttype)
|
||||
HealBot_CastFailed = false;
|
||||
|
||||
HealBot_CastSpellByName(spell);
|
||||
if ( SpellCanTargetUnit(target) ) then
|
||||
SpellTargetUnit(target);
|
||||
@@ -186,20 +233,35 @@ function HealBot_StartCasting(spell, target, ttype)
|
||||
HealBot_AnnounceCast(spell, target);
|
||||
end
|
||||
end
|
||||
|
||||
return ttype == "fired"
|
||||
end
|
||||
|
||||
-- HealBot_StopCasting: Internal utility: HealBot_StopCasting
|
||||
function HealBot_StopCasting()
|
||||
HealBot_IsCasting = false;
|
||||
if HealBot_CastingTarget then
|
||||
if HealBot_HealValue > 0 then
|
||||
local uname = UnitName(HealBot_CastingTarget)
|
||||
if uname then
|
||||
HealBot_SendAddonMessage(HEALBOT_ADDON_ID, ">> " .. uname .. " <<=>> " .. 0 - HealBot_HealValue .. " << ");
|
||||
if HealBot_HealsIn[uname] then
|
||||
HealBot_HealsIn[uname] = HealBot_HealsIn[uname] - HealBot_HealValue;
|
||||
if HealBot_HealsIn[uname] < 0 then
|
||||
HealBot_HealsIn[uname] = 0;
|
||||
end
|
||||
HealBot_RecalcHeals(HealBot_FindUnitID(uname));
|
||||
if HealBot_CastingGroupMembers and table.getn(HealBot_CastingGroupMembers) > 1 then
|
||||
HealBot_SendAddonMessage("HealComm", "GrpHealstop");
|
||||
for _, memberName in ipairs(HealBot_CastingGroupMembers) do
|
||||
HealBot_SendAddonMessage(HEALBOT_ADDON_ID, ">> " .. memberName .. " <<=>> " .. 0 - HealBot_HealValue .. " << ")
|
||||
if HealBot_HealsIn[memberName] then
|
||||
HealBot_HealsIn[memberName] = HealBot_HealsIn[memberName] - HealBot_HealValue;
|
||||
if HealBot_HealsIn[memberName] < 0 then HealBot_HealsIn[memberName] = 0; end
|
||||
HealBot_RecalcHeals(HealBot_FindUnitID(memberName));
|
||||
end
|
||||
end
|
||||
else
|
||||
HealBot_SendAddonMessage("HealComm", "Healstop");
|
||||
HealBot_SendAddonMessage(HEALBOT_ADDON_ID, ">> " .. uname .. " <<=>> " .. 0 - HealBot_HealValue .. " << ");
|
||||
if HealBot_HealsIn[uname] then
|
||||
HealBot_HealsIn[uname] = HealBot_HealsIn[uname] - HealBot_HealValue;
|
||||
if HealBot_HealsIn[uname] < 0 then HealBot_HealsIn[uname] = 0; end
|
||||
HealBot_RecalcHeals(HealBot_FindUnitID(uname));
|
||||
end
|
||||
end
|
||||
end
|
||||
HealBot_HealValue = 0;
|
||||
@@ -212,7 +274,7 @@ function HealBot_StopCasting()
|
||||
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 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
|
||||
bar:SetStatusBarColor(ar, ag, ab, 0);
|
||||
local sr = HealBot_Config.btextdisbledcolr[HealBot_Config.Current_Skin];
|
||||
local sg = HealBot_Config.btextdisbledcolg[HealBot_Config.Current_Skin];
|
||||
@@ -221,6 +283,7 @@ function HealBot_StopCasting()
|
||||
bar.txt:SetTextColor(sr, sg, sb, sa);
|
||||
end
|
||||
|
||||
-- HealBot_UnitHealth: Internal utility: HealBot_UnitHealth
|
||||
function HealBot_UnitHealth(unit)
|
||||
local Current, Desired = UnitHealth(unit), UnitHealthMax(unit);
|
||||
if unit == 'target' and Desired == 100 then
|
||||
@@ -235,6 +298,7 @@ function HealBot_UnitHealth(unit)
|
||||
return Current, Desired;
|
||||
end
|
||||
|
||||
-- HealBot_CheckCasting: Internal utility: HealBot_CheckCasting
|
||||
function HealBot_CheckCasting(unit)
|
||||
if not HealBot_CastingSpell or HealBot_AlwaysHeal() then return nil end
|
||||
if not HealBot_Spells[HealBot_CastingSpell] then return nil end
|
||||
@@ -276,11 +340,12 @@ function HealBot_CheckCasting(unit)
|
||||
local sg = HealBot_Config.btextenabledcolg[HealBot_Config.Current_Skin];
|
||||
local sb = HealBot_Config.btextenabledcolb[HealBot_Config.Current_Skin];
|
||||
local sa = HealBot_Config.btextenabledcola[HealBot_Config.Current_Skin];
|
||||
bar.txt = getglobal(bar:GetName() .. "_text");
|
||||
if not bar.txt then bar.txt = getglobal(bar:GetName() .. "_text") end
|
||||
bar.txt:SetTextColor(sr, sg, sb, sa);
|
||||
end
|
||||
end
|
||||
|
||||
-- HealBot_CastSpellOnFriend: Target-safe wrapper for casting spells on allies.
|
||||
function HealBot_CastSpellOnFriend(spell, target)
|
||||
if (not spell or not target or not UnitName(target)) then
|
||||
return;
|
||||
@@ -288,8 +353,28 @@ function HealBot_CastSpellOnFriend(spell, target)
|
||||
local targetEnemy = UnitCanAttack("player", "target");
|
||||
local oldTarget = UnitName("target");
|
||||
|
||||
if HealBot_UnitClass("player") == "DRUID" and HealBot_ActiveShapeshiftStance and HealBot_Config.AutoUnshift == 1 then
|
||||
CastShapeshiftForm(HealBot_ActiveShapeshiftStance);
|
||||
local formCancelled = false
|
||||
if HealBot_UnitClass("player") == "DRUID" and HealBot_Config.AutoUnshift == 1 then
|
||||
local currentForm = HealBot_GetShapeshiftForm()
|
||||
if currentForm then
|
||||
CastShapeshiftForm(currentForm);
|
||||
formCancelled = true
|
||||
end
|
||||
end
|
||||
|
||||
if formCancelled then
|
||||
-- ALWAYS put the cast into the Pending queue so the OnUpdate loop can wait for the server
|
||||
-- to process the unshift before attempting the cast, otherwise we get "You are in shapeshift form".
|
||||
if not HealBot_PendingShapeshiftCast then HealBot_PendingShapeshiftCast = {} end
|
||||
HealBot_PendingShapeshiftCast.spell = spell
|
||||
HealBot_PendingShapeshiftCast.target = target
|
||||
HealBot_PendingShapeshiftCast.targetEnemy = targetEnemy
|
||||
HealBot_PendingShapeshiftCast.oldTarget = oldTarget
|
||||
HealBot_PendingShapeshiftCast.fireTime = GetTime() + 0.05
|
||||
HealBot_PendingShapeshiftCast.expires = GetTime() + 2.0
|
||||
HealBot_PendingShapeshiftCast.started = nil
|
||||
HealBot_PendingShapeshiftCast.nextSpam = nil
|
||||
return;
|
||||
end
|
||||
|
||||
if oldTarget ~= UnitName(target) then
|
||||
@@ -299,15 +384,16 @@ function HealBot_CastSpellOnFriend(spell, target)
|
||||
HealBot_StartCasting(spell, target, "direct");
|
||||
|
||||
if targetEnemy then
|
||||
HealBot_TargetRestorePending = { type = "enemy" };
|
||||
HealBot_TargetRestorePending = "enemy";
|
||||
elseif oldTarget and oldTarget ~= UnitName(target) then
|
||||
HealBot_TargetRestorePending = { type = "friend" };
|
||||
HealBot_TargetRestorePending = "friend";
|
||||
elseif not oldTarget then
|
||||
HealBot_TargetRestorePending = { type = "clear" };
|
||||
HealBot_TargetRestorePending = "clear";
|
||||
end
|
||||
HealBot_TargetRestoreTimer = 0;
|
||||
end
|
||||
|
||||
-- HealBot_SetItemDefaults: Internal utility: HealBot_SetItemDefaults
|
||||
function HealBot_SetItemDefaults(spell)
|
||||
if not HealBot_Spells[spell].Target then
|
||||
HealBot_Spells[spell].Target = {"player", "party", "pet"};
|
||||
@@ -340,6 +426,7 @@ function HealBot_SetItemDefaults(spell)
|
||||
end
|
||||
end
|
||||
|
||||
-- HealBot_SetSpellDefaults: Internal utility: HealBot_SetSpellDefaults
|
||||
function HealBot_SetSpellDefaults(spell)
|
||||
local baseHeal = HealBot_Spells[spell].HealsCast or 0
|
||||
local extHeal = HealBot_Spells[spell].HealsExt or 0
|
||||
@@ -383,14 +470,22 @@ function HealBot_SetSpellDefaults(spell)
|
||||
HealBot_Spells[spell].HealsDur = math.floor(baseHeal + extHeal + realHeal);
|
||||
end
|
||||
|
||||
-- HealBot_AddHeal: Internal utility: HealBot_AddHeal
|
||||
function HealBot_AddHeal(spell)
|
||||
HealBot_SetSpellDefaults(spell);
|
||||
table.foreachi(HealBot_Spells[spell].Target, function (i, val)
|
||||
local targetList = HealBot_Spells[spell].Target
|
||||
if not targetList and HealBot_Spells[spell].Group and HealBot_Spells[HealBot_Spells[spell].Group] then
|
||||
targetList = HealBot_Spells[HealBot_Spells[spell].Group].Target
|
||||
end
|
||||
if not targetList then targetList = {"player", "party", "pet"} end
|
||||
table.foreachi(targetList, function (i, val)
|
||||
if not HealBot_Heals[val] then HealBot_Heals[val] = {} end
|
||||
table.insert(HealBot_Heals[val], spell);
|
||||
end);
|
||||
HealBot_Spells[spell].BagSlot = HealBot_GetBagSlot(spell);
|
||||
end
|
||||
|
||||
-- HealBot_FindHealSpells: Maps best heal ranks to UI buttons.
|
||||
function HealBot_FindHealSpells()
|
||||
local id = 1;
|
||||
if HealBot_SpellsInitFlag > 0 then NeedEquipUpdate = 1; return; end
|
||||
@@ -415,7 +510,7 @@ function HealBot_FindHealSpells()
|
||||
temp_Spell_cast = HealBot_Spells[spell].CastTime;
|
||||
end
|
||||
RealHealing = ((HealBot_GetBonus() * healingbonus_penalty) * (temp_Spell_cast / 3.5));
|
||||
local playerClass, englishClass = UnitClass("player");
|
||||
local englishClass = HealBot_UnitClass("player");
|
||||
local SpiBonus = 0;
|
||||
if (englishClass == "PRIEST") then
|
||||
SpiBonus = ((HealBot_SpiBonus(spell) * healingbonus_penalty) * (temp_Spell_cast / 3.5))
|
||||
@@ -428,7 +523,7 @@ function HealBot_FindHealSpells()
|
||||
end
|
||||
end);
|
||||
|
||||
local items = {};
|
||||
local items = HealBot_GetTable();
|
||||
for bag = 0, NUM_BAG_FRAMES do
|
||||
for slot = 1, GetContainerNumSlots(bag) do
|
||||
local item = HealBot_GetItemName(bag, slot);
|
||||
@@ -454,12 +549,14 @@ function HealBot_FindHealSpells()
|
||||
HealBot_Heals["raidpet" .. i] = HealBot_Heals.party;
|
||||
end
|
||||
|
||||
HealBot_ReleaseTable(items);
|
||||
if HealBot_CalcEquipBonus then
|
||||
HealBot_AddDebug("...Done Equip Bonus:" .. RealHealing);
|
||||
end
|
||||
HealBot_CalcEquipBonus = false;
|
||||
end
|
||||
|
||||
-- HealBot_CanCastSpell: Internal utility: HealBot_CanCastSpell
|
||||
function HealBot_CanCastSpell(spell, unit)
|
||||
local this = HealBot_Spells[spell];
|
||||
-- Removed manual mana check so WoW can properly handle 0-cost buffs (Clearcasting/Inner Focus)
|
||||
@@ -474,13 +571,18 @@ function HealBot_CanCastSpell(spell, unit)
|
||||
return true;
|
||||
end
|
||||
|
||||
-- HealBot_GetHealSpell: Resolves spell rank based on health deficit.
|
||||
function HealBot_GetHealSpell(unit, pattern)
|
||||
if (not UnitName(unit)) then return nil end;
|
||||
if not string.find(unit, "^Test") then
|
||||
if (not UnitName(unit)) then return nil end;
|
||||
end
|
||||
if not pattern then return nil end;
|
||||
if UnitOnTaxi("player") then return nil end;
|
||||
if HealBot_Config.ProtectPvP == 1 and UnitIsPVP(unit) and not UnitIsPVP("player") then return nil end
|
||||
if not string.find(unit, "^Test") then
|
||||
if HealBot_Config.ProtectPvP == 1 and UnitIsPVP(unit) and not UnitIsPVP("player") then return nil end
|
||||
end
|
||||
if HealBot_UnitClass("player") == "DRUID" then
|
||||
if HealBot_ActiveShapeshiftStance and HealBot_Config.AutoUnshift ~= 1 then return nil end;
|
||||
if HealBot_GetShapeshiftForm() and HealBot_Config.AutoUnshift ~= 1 then return nil end;
|
||||
end
|
||||
|
||||
-- Handle Inline Scripts
|
||||
@@ -515,14 +617,25 @@ function HealBot_GetHealSpell(unit, pattern)
|
||||
return nil;
|
||||
end
|
||||
|
||||
-- HealBot_HealUnit: Main entry point for healing a unit.
|
||||
function HealBot_HealUnit(unit, pattern)
|
||||
HealBot_CastSpellOnFriend(HealBot_GetHealSpell(unit, pattern), unit);
|
||||
end
|
||||
|
||||
-- HealBot_RecalcHeals: Flags unit for visual refresh.
|
||||
function HealBot_RecalcHeals(unit)
|
||||
HealBot_Action_Refresh(unit);
|
||||
if unit then
|
||||
HealBot_View_DirtyUnits[unit] = true;
|
||||
else
|
||||
if HealBot_Action_UnitButtons then
|
||||
for u, _ in pairs(HealBot_Action_UnitButtons) do
|
||||
HealBot_View_DirtyUnits[u] = true;
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- HealBot_RecalcParty: Triggers group layout rebuild.
|
||||
function HealBot_RecalcParty()
|
||||
HealBot_Action_PartyChanged();
|
||||
if HealBot_Action_HealButtons then
|
||||
@@ -532,26 +645,35 @@ function HealBot_RecalcParty()
|
||||
end
|
||||
end
|
||||
end
|
||||
HealBot_Action_RefreshButtons();
|
||||
end
|
||||
|
||||
-- HealBot_RecalcSpells: Recalculates spells and updates layout.
|
||||
function HealBot_RecalcSpells()
|
||||
HealBot_FindHealSpells();
|
||||
HealBot_RecalcParty();
|
||||
end
|
||||
|
||||
function HealBot_GetTalentRank(talentName)
|
||||
HealBot_TalentRanks = {}
|
||||
|
||||
function HealBot_UpdateTalentRanks()
|
||||
HealBot_TalentRanks = {}
|
||||
for t = 1, GetNumTalentTabs() do
|
||||
for i = 1, GetNumTalents(t) do
|
||||
local nameTalent, icon, tier, column, currRank, maxRank = GetTalentInfo(t, i);
|
||||
if nameTalent == talentName then
|
||||
return currRank;
|
||||
local nameTalent, icon, tier, column, currRank, maxRank = GetTalentInfo(t, i)
|
||||
if nameTalent then
|
||||
HealBot_TalentRanks[nameTalent] = currRank
|
||||
end
|
||||
end
|
||||
end
|
||||
return 0;
|
||||
end
|
||||
|
||||
-- HealBot_GetTalentRank: Internal utility: HealBot_GetTalentRank
|
||||
function HealBot_GetTalentRank(talentName)
|
||||
if not next(HealBot_TalentRanks) then HealBot_UpdateTalentRanks() end
|
||||
return HealBot_TalentRanks[talentName] or 0
|
||||
end
|
||||
|
||||
-- HealBot_SpiBonus: Internal utility: HealBot_SpiBonus
|
||||
function HealBot_SpiBonus(spell)
|
||||
local heals_modifer = 0;
|
||||
local base, stat, posBuff, negBuff = UnitStat("player", 5);
|
||||
@@ -563,8 +685,14 @@ function HealBot_SpiBonus(spell)
|
||||
return heals_modifer;
|
||||
end
|
||||
|
||||
-- HealBot_GetBonus: Internal utility: HealBot_GetBonus
|
||||
function HealBot_GetBonus()
|
||||
local HealBonus = HealBot_BonusScanner:GetBonus() or 0;
|
||||
local HealBonus = 0;
|
||||
if HealBot_Integrations_ClassicAPI_Active and GetSpellBonusHealing then
|
||||
HealBonus = GetSpellBonusHealing() or 0;
|
||||
else
|
||||
HealBonus = HealBot_BonusScanner:GetBonus() or 0;
|
||||
end
|
||||
if UnitClass("player") == "PALADIN" then
|
||||
local ironRank = HealBot_GetTalentRank("Ironclad")
|
||||
if ironRank > 0 then
|
||||
@@ -575,7 +703,9 @@ function HealBot_GetBonus()
|
||||
return HealBonus;
|
||||
end
|
||||
|
||||
-- HealBot_InitSpells: Scans spellbook to find available heals.
|
||||
function HealBot_InitSpells()
|
||||
HealBot_CacheSpellIDs()
|
||||
local id = 1
|
||||
local cnt = 0;
|
||||
local class = HealBot_UnitClass("player")
|
||||
@@ -597,6 +727,7 @@ function HealBot_InitSpells()
|
||||
return cnt;
|
||||
end
|
||||
|
||||
-- HealBot_InitGetSpellData: Extracts mana and cast time from spell tooltips.
|
||||
function HealBot_InitGetSpellData(spell, id, class)
|
||||
local i, _mana, _cast, _HealsMin, _HealsMax, _HealsExt, _duration, _range, _shield, _channel;
|
||||
local tooltip = getglobal("HealBot_ScanTooltip");
|
||||
@@ -613,8 +744,15 @@ function HealBot_InitGetSpellData(spell, id, class)
|
||||
_cast = 0;
|
||||
line = nil;
|
||||
|
||||
if not HealBot_ScanTooltip_Lines_Left then HealBot_ScanTooltip_Lines_Left = {} end
|
||||
if not HealBot_ScanTooltip_Lines_Right then HealBot_ScanTooltip_Lines_Right = {} end
|
||||
|
||||
for lineNum = 2, 6 do
|
||||
local lText = getglobal("HealBot_ScanTooltipTextLeft"..lineNum);
|
||||
local lText = HealBot_ScanTooltip_Lines_Left[lineNum];
|
||||
if not lText then
|
||||
lText = getglobal("HealBot_ScanTooltipTextLeft"..lineNum);
|
||||
HealBot_ScanTooltip_Lines_Left[lineNum] = lText;
|
||||
end
|
||||
if lText and lText:IsVisible() and lText:GetText() then
|
||||
local txt = lText:GetText();
|
||||
local t1, t2, match;
|
||||
@@ -638,7 +776,11 @@ function HealBot_InitGetSpellData(spell, id, class)
|
||||
end
|
||||
end
|
||||
|
||||
local rText = getglobal("HealBot_ScanTooltipTextRight"..lineNum);
|
||||
local rText = HealBot_ScanTooltip_Lines_Right[lineNum];
|
||||
if not rText then
|
||||
rText = getglobal("HealBot_ScanTooltipTextRight"..lineNum);
|
||||
HealBot_ScanTooltip_Lines_Right[lineNum] = rText;
|
||||
end
|
||||
if rText and rText:IsVisible() and rText:GetText() then
|
||||
local txt = rText:GetText();
|
||||
local t1, t2, match;
|
||||
@@ -786,6 +928,7 @@ function HealBot_InitGetSpellData(spell, id, class)
|
||||
end
|
||||
end
|
||||
|
||||
-- HealBot_Generic_Patten: Internal utility: HealBot_Generic_Patten
|
||||
function HealBot_Generic_Patten(matchStr, matchPattern)
|
||||
local tmpTest, _HealsMin, _HealsMax, _HealsExt, _duration
|
||||
tmpTest, tmpTest, _HealsMin, _HealsMax = string.find(matchStr, matchPattern);
|
||||
@@ -798,12 +941,9 @@ function HealBot_Generic_Patten(matchStr, matchPattern)
|
||||
return tmpTest, _HealsMin, _HealsMax;
|
||||
end
|
||||
|
||||
HealBot_ActiveShapeshiftStance = nil;
|
||||
|
||||
function HealBot_UpdateShapeshiftForm()
|
||||
HealBot_ActiveShapeshiftStance = HealBot_GetShapeshiftForm();
|
||||
end
|
||||
|
||||
-- HealBot_GetShapeshiftForm: Detects active druid form to prevent invalid casts.
|
||||
function HealBot_GetShapeshiftForm()
|
||||
local forms = GetNumShapeshiftForms();
|
||||
if forms then
|
||||
@@ -811,8 +951,13 @@ function HealBot_GetShapeshiftForm()
|
||||
for i=1,forms do
|
||||
local icon,name,active = GetShapeshiftFormInfo(i);
|
||||
if active then
|
||||
local icon_lower = string.lower(icon);
|
||||
if not string.find(icon_lower, "humanoidform") and not string.find(icon_lower, "treeoflife") and not string.find(icon_lower, "stoneclawtotem") then
|
||||
if icon then
|
||||
local icon_lower = string.lower(icon)
|
||||
-- Exclude non-standard/custom forms like Tree of Life from unshifting
|
||||
if not string.find(icon_lower, "humanoidform") and not string.find(icon_lower, "treeoflife") and not string.find(icon_lower, "healingway") and not string.find(icon_lower, "stoneclawtotem") then
|
||||
return nil;
|
||||
end
|
||||
else
|
||||
return i;
|
||||
end
|
||||
end
|
||||
@@ -820,3 +965,4 @@ function HealBot_GetShapeshiftForm()
|
||||
end
|
||||
return nil;
|
||||
end
|
||||
|
||||
|
||||
+22
-11
@@ -1,4 +1,5 @@
|
||||
HealBot_ConfigDefaults = {
|
||||
DebugMode = 0,
|
||||
ShowManaBars=0,
|
||||
ManaBarsHealersOnly=0,
|
||||
Version = HEALBOT_VERSION,
|
||||
@@ -27,8 +28,9 @@ HealBot_ConfigDefaults = {
|
||||
ActionVisible = 1,
|
||||
HideSolo = 0,
|
||||
OverHeal = 0.25,
|
||||
CastNotify = 1,
|
||||
UpdateFreq = 0.5,
|
||||
AutoUnshift = 1,
|
||||
Integrations_Nampower_Active = true,
|
||||
ChatMessages = {
|
||||
[1] = { Spell = "None", Message = "Casting #Spell# on #Target#", Channel = "None" },
|
||||
[2] = { Spell = "None", Message = "Casting #Spell# on #Target#", Channel = "None" },
|
||||
@@ -49,14 +51,14 @@ HealBot_ConfigDefaults = {
|
||||
ShowDebuffWarning = 0,
|
||||
SoundDebuffWarning = 0,
|
||||
SoundDebuffPlay = 1,
|
||||
CDCMonitor = 1,
|
||||
CDCMonitor = 2,
|
||||
PanelAnchorX = -1,
|
||||
PanelAnchorY = -1,
|
||||
CDCBarColour = {
|
||||
[HEALBOT_DISEASE_en] = { R = 0.1, G = 0.05, B = 0.2, },
|
||||
[HEALBOT_MAGIC_en] = { R = 0.05, G = 0.05, B = 0.1, },
|
||||
[HEALBOT_POISON_en] = { R = 0.05, G = 0.2, B = 0.1, },
|
||||
[HEALBOT_CURSE_en] = { R = 0.2, G = 0.05, B = 0.05, },
|
||||
[HEALBOT_DISEASE_en] = { R = 0.55, G = 0.19, B = 0.70, }, -- Bright Purple
|
||||
[HEALBOT_MAGIC_en] = { R = 0.01, G = 0.30, B = 0.90, }, -- Bright Blue
|
||||
[HEALBOT_POISON_en] = { R = 0.12, G = 0.46, B = 0.24, }, -- Bright Green
|
||||
[HEALBOT_CURSE_en] = { R = 0.83, G = 0.01, B = 0.01, }, -- Bright Red
|
||||
},
|
||||
|
||||
Debuff_Left = {
|
||||
@@ -247,6 +249,13 @@ HealBot_ConfigDefaults = {
|
||||
bboffset = {[HEALBOT_SKINS_STD] = 16, ["HealBot Party"] = 16, ["HealBot Raid"] = 16, ["Alteric Valley"] = 16, ["Modern Flat"] = 3},
|
||||
bfontoutline = {[HEALBOT_SKINS_STD] = 0, ["HealBot Party"] = 0, ["HealBot Raid"] = 0, ["Alteric Valley"] = 0, ["Modern Flat"] = 1},
|
||||
biconsize = {[HEALBOT_SKINS_STD] = 12, ["HealBot Party"] = 12, ["HealBot Raid"] = 12, ["Alteric Valley"] = 12, ["Modern Flat"] = 12},
|
||||
bcolormaxr = {[HEALBOT_SKINS_STD] = 0, ["HealBot Party"] = 0, ["HealBot Raid"] = 0, ["Alteric Valley"] = 0, ["Modern Flat"] = 0},
|
||||
bcolormaxg = {[HEALBOT_SKINS_STD] = 1, ["HealBot Party"] = 1, ["HealBot Raid"] = 1, ["Alteric Valley"] = 1, ["Modern Flat"] = 1},
|
||||
bcolormaxb = {[HEALBOT_SKINS_STD] = 0, ["HealBot Party"] = 0, ["HealBot Raid"] = 0, ["Alteric Valley"] = 0, ["Modern Flat"] = 0},
|
||||
bcolorminr = {[HEALBOT_SKINS_STD] = 1, ["HealBot Party"] = 1, ["HealBot Raid"] = 1, ["Alteric Valley"] = 1, ["Modern Flat"] = 1},
|
||||
bcolorming = {[HEALBOT_SKINS_STD] = 0, ["HealBot Party"] = 0, ["HealBot Raid"] = 0, ["Alteric Valley"] = 0, ["Modern Flat"] = 0},
|
||||
bcolorminb = {[HEALBOT_SKINS_STD] = 0, ["HealBot Party"] = 0, ["HealBot Raid"] = 0, ["Alteric Valley"] = 0, ["Modern Flat"] = 0},
|
||||
bfont = {[HEALBOT_SKINS_STD] = "Fonts\\FRIZQT__.TTF", ["HealBot Party"] = "Fonts\\FRIZQT__.TTF", ["HealBot Raid"] = "Fonts\\FRIZQT__.TTF", ["Alteric Valley"] = "Fonts\\FRIZQT__.TTF", ["Modern Flat"] = "Fonts\\FRIZQT__.TTF"},
|
||||
ShowTooltip = 1,
|
||||
ShowManaBars = 0,
|
||||
ManaBarsHealersOnly = 0,
|
||||
@@ -255,15 +264,15 @@ HealBot_ConfigDefaults = {
|
||||
Tooltip_Recommend = 1,
|
||||
TooltipPos = 1,
|
||||
HideParty = 0,
|
||||
HealBot_Integrations_UnitXP = 0,
|
||||
HealBot_Integrations_Nampower = 0,
|
||||
HealBot_Integrations_SuperWoW = 0,
|
||||
HealBot_Integrations_ClassicAPI = 0,
|
||||
HealBot_Integrations_ShowHoTTimers = 0,
|
||||
};
|
||||
|
||||
HealBot_Config = {};
|
||||
|
||||
--HealBot_EmergIncMelee = {};
|
||||
--HealBot_EmergIncRange = {};
|
||||
--HealBot_EmergIncHealers = {};
|
||||
--HealBot_EmergIncCustom = {};
|
||||
--HealBot_KeyCombo = {};
|
||||
HealBot_HealsIn = {};
|
||||
HealBot_Healers = {};
|
||||
HealBot_UnitDebuff = {};
|
||||
@@ -575,6 +584,7 @@ HealBot_IamRessing = false;
|
||||
|
||||
-- Table Recycling Pool
|
||||
local tablePool = {}
|
||||
-- HealBot_GetTable: Internal utility: HealBot_GetTable
|
||||
function HealBot_GetTable()
|
||||
local t = table.remove(tablePool)
|
||||
if not t then
|
||||
@@ -583,6 +593,7 @@ function HealBot_GetTable()
|
||||
return t
|
||||
end
|
||||
|
||||
-- HealBot_ReleaseTable: Internal utility: HealBot_ReleaseTable
|
||||
function HealBot_ReleaseTable(t)
|
||||
if type(t) == "table" then
|
||||
for k in pairs(t) do
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
-- HealBot_Errors_OnLoad: Internal utility: HealBot_Errors_OnLoad
|
||||
function HealBot_Errors_OnLoad(this)
|
||||
-- do nothing
|
||||
end
|
||||
|
||||
-- HealBot_Errors_OnShow: Show event handler.
|
||||
function HealBot_Errors_OnShow(this)
|
||||
local client = getglobal("HealBot_Error_Clientx")
|
||||
client:SetText("Client="..GetLocale())
|
||||
@@ -9,6 +11,7 @@ function HealBot_Errors_OnShow(this)
|
||||
HealBot_Error_Classx:SetText("Player class="..HealBot_UnitClass("player"))
|
||||
end
|
||||
|
||||
-- HealBot_Errors_OnHide: Hide event handler.
|
||||
function HealBot_Errors_OnHide(this)
|
||||
local errtext;
|
||||
HealBot_StopMoving(this);
|
||||
@@ -19,14 +22,17 @@ function HealBot_Errors_OnHide(this)
|
||||
HealBot_ErrorCnt=0;
|
||||
end
|
||||
|
||||
-- HealBot_Errors_OnDragStart: Internal utility: HealBot_Errors_OnDragStart
|
||||
function HealBot_Errors_OnDragStart(this,arg1)
|
||||
HealBot_StartMoving(this);
|
||||
end
|
||||
|
||||
-- HealBot_Errors_OnDragStop: Internal utility: HealBot_Errors_OnDragStop
|
||||
function HealBot_Errors_OnDragStop(this)
|
||||
HealBot_StopMoving(this);
|
||||
end
|
||||
|
||||
-- HealBot_ErrorsIn: Internal utility: HealBot_ErrorsIn
|
||||
function HealBot_ErrorsIn(msg,id)
|
||||
local errtext = getglobal("HealBot_Error"..id);
|
||||
errtext:SetText(msg)
|
||||
|
||||
@@ -0,0 +1,149 @@
|
||||
HealBot_Integrations_UnitXP_Active = false;
|
||||
HealBot_Integrations_Nampower_Active = false;
|
||||
HealBot_Integrations_SuperWoW_Active = false;
|
||||
HealBot_Integrations_ClassicAPI_Active = false;
|
||||
|
||||
-- HealBot_GetUnitGUID: Internal utility: HealBot_GetUnitGUID
|
||||
function HealBot_GetUnitGUID(unit)
|
||||
if not unit then return nil end
|
||||
if HealBot_Integrations_ClassicAPI_Active and UnitGUID then
|
||||
return UnitGUID(unit)
|
||||
elseif HealBot_Integrations_SuperWoW_Active and GetUnitGUID then
|
||||
return GetUnitGUID(unit)
|
||||
elseif HealBot_Integrations_Nampower_Active and GetUnitGUID then
|
||||
return GetUnitGUID(unit)
|
||||
end
|
||||
return nil
|
||||
end
|
||||
|
||||
-- HealBot_Integrations_Toggle: Enables or disables external addon APIs on load/click.
|
||||
function HealBot_Integrations_Toggle()
|
||||
-- UnitXP
|
||||
if HealBot_Config.HealBot_Integrations_UnitXP == 1 and UnitXP ~= nil then
|
||||
HealBot_Integrations_UnitXP_Active = true;
|
||||
HealBot_AddDebug("UnitXP Integration: ENABLED");
|
||||
else
|
||||
HealBot_Integrations_UnitXP_Active = false;
|
||||
HealBot_AddDebug("UnitXP Integration: DISABLED");
|
||||
end
|
||||
|
||||
-- nampower
|
||||
if HealBot_Config.HealBot_Integrations_Nampower == 1 then
|
||||
HealBot_Integrations_Nampower_Active = true;
|
||||
HealBot_AddDebug("nampower Integration: ENABLED");
|
||||
if not HealBot_NampowerFrame then
|
||||
HealBot_Nampower_Auras = {}
|
||||
HealBot_NampowerFrame = CreateFrame("Frame")
|
||||
HealBot_NampowerFrame:RegisterEvent("AURA_CAST_ON_SELF")
|
||||
HealBot_NampowerFrame:RegisterEvent("AURA_CAST_ON_OTHER")
|
||||
HealBot_NampowerFrame:SetScript("OnEvent", function()
|
||||
if not HealBot_Integrations_Nampower_Active then return end
|
||||
if event == "AURA_CAST_ON_SELF" or event == "AURA_CAST_ON_OTHER" then
|
||||
local spellID, caster, target, _, _, _, _, duration = arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8
|
||||
if not caster or not target or duration <= 0 then return end
|
||||
|
||||
-- The player is ALWAYS the caster in these events for Nampower
|
||||
if not HealBot_PlayerGUID then
|
||||
HealBot_PlayerGUID = caster
|
||||
end
|
||||
|
||||
local spellName = GetSpellRecField(spellID, "name")
|
||||
if not spellName then return end
|
||||
|
||||
if not HealBot_Nampower_Auras[target] then
|
||||
HealBot_Nampower_Auras[target] = HealBot_GetTable()
|
||||
end
|
||||
|
||||
local expirationTime = GetTime() + (duration / 1000)
|
||||
HealBot_Nampower_Auras[target][spellName] = expirationTime
|
||||
|
||||
local unitID = HealBot_Model:GetUnitIDByName(target)
|
||||
if unitID then
|
||||
HealBot_OnEvent_UnitAura(nil, unitID)
|
||||
end
|
||||
end
|
||||
end)
|
||||
end
|
||||
else
|
||||
HealBot_Integrations_Nampower_Active = false;
|
||||
HealBot_AddDebug("nampower Integration: DISABLED");
|
||||
if HealBot_Nampower_Auras then
|
||||
for k, v in pairs(HealBot_Nampower_Auras) do
|
||||
HealBot_ReleaseTable(v)
|
||||
HealBot_Nampower_Auras[k] = nil
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
|
||||
function HealBot_Integrations_PruneNampower()
|
||||
if not HealBot_Integrations_Nampower_Active or not HealBot_Nampower_Auras then return end
|
||||
|
||||
local currentTime = GetTime()
|
||||
for targetName, auras in pairs(HealBot_Nampower_Auras) do
|
||||
-- Check if target is still in the raid/party
|
||||
if not HealBot_Model:GetUnitByGUID(targetName) and not HealBot_Model:GetUnitIDByName(targetName) 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
|
||||
HealBot_ReleaseTable(auras)
|
||||
HealBot_Nampower_Auras[targetName] = nil
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- SuperWoW
|
||||
if HealBot_Config.HealBot_Integrations_SuperWoW == 1 and UnitExists ~= nil then
|
||||
-- We can check if GetUnitGUID exists as a quick SuperWoW test, or UnitExists returns 2 args
|
||||
-- Actually SuperWoW adds SpellInfo, or we can just rely on GetUnitGUID if it exists in the environment
|
||||
if GetUnitGUID or (type(UnitExists) == "function") then
|
||||
-- If the client actually supports GUID tracking via SuperWoW (or a similar mod)
|
||||
HealBot_Integrations_SuperWoW_Active = true;
|
||||
HealBot_AddDebug("SuperWoW Integration: ENABLED");
|
||||
else
|
||||
HealBot_Integrations_SuperWoW_Active = false;
|
||||
HealBot_AddDebug("SuperWoW Integration: DISABLED (Mod Not Found)");
|
||||
end
|
||||
else
|
||||
HealBot_Integrations_SuperWoW_Active = false;
|
||||
HealBot_AddDebug("SuperWoW Integration: DISABLED");
|
||||
end
|
||||
|
||||
-- ClassicAPI
|
||||
if HealBot_Config.HealBot_Integrations_ClassicAPI == 1 then
|
||||
if UnitGUID then
|
||||
HealBot_Integrations_ClassicAPI_Active = true;
|
||||
HealBot_AddDebug("ClassicAPI Integration: ENABLED");
|
||||
else
|
||||
HealBot_Integrations_ClassicAPI_Active = false;
|
||||
HealBot_AddDebug("ClassicAPI Integration: DISABLED (Mod Not Found)");
|
||||
end
|
||||
else
|
||||
HealBot_Integrations_ClassicAPI_Active = false;
|
||||
HealBot_AddDebug("ClassicAPI Integration: DISABLED");
|
||||
end
|
||||
|
||||
if HealBot_Options_Integrations_ShowHoTTimers then
|
||||
if HealBot_Integrations_Nampower_Active or HealBot_Integrations_SuperWoW_Active or HealBot_Integrations_ClassicAPI_Active then
|
||||
HealBot_Options_Integrations_ShowHoTTimers:Enable()
|
||||
getglobal(HealBot_Options_Integrations_ShowHoTTimers:GetName().."Text"):SetTextColor(1, 1, 1)
|
||||
else
|
||||
HealBot_Options_Integrations_ShowHoTTimers:Disable()
|
||||
getglobal(HealBot_Options_Integrations_ShowHoTTimers:GetName().."Text"):SetTextColor(0.5, 0.5, 0.5)
|
||||
HealBot_Options_Integrations_ShowHoTTimers:SetChecked(0)
|
||||
HealBot_Config.HealBot_Integrations_ShowHoTTimers = 0
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -242,6 +242,8 @@ HEALBOT_OPTIONS_NEWSKINTEXT = "Neuer Skin"
|
||||
HEALBOT_OPTIONS_SAVESKIN = "Speichern"
|
||||
HEALBOT_OPTIONS_SKINBARS = "Leisten Optionen"
|
||||
HEALBOT_OPTIONS_SKINPANEL = "Panel Farben"
|
||||
HEALBOT_SKIN_MAXHPTEXT = "Max HP"
|
||||
HEALBOT_SKIN_MINHPTEXT = "Min HP"
|
||||
HEALBOT_SKIN_ENTEXT = "Aktiv"
|
||||
HEALBOT_SKIN_DISTEXT = "Inaktiv"
|
||||
HEALBOT_SKIN_DEBTEXT = "Debuff"
|
||||
|
||||
@@ -275,6 +275,8 @@ HEALBOT_OPTIONS_BUFF7 = "Buff 7";
|
||||
HEALBOT_OPTIONS_BUFF8 = "Buff 8";
|
||||
HEALBOT_OPTIONS_SKINBARS = "Bar options"
|
||||
HEALBOT_OPTIONS_SKINPANEL = "Panel colours"
|
||||
HEALBOT_SKIN_MAXHPTEXT = "Max HP"
|
||||
HEALBOT_SKIN_MINHPTEXT = "Min HP"
|
||||
HEALBOT_SKIN_ENTEXT = "Enabled"
|
||||
HEALBOT_SKIN_DISTEXT = "Disabled"
|
||||
HEALBOT_SKIN_DEBTEXT = "Debuff"
|
||||
@@ -310,6 +312,7 @@ HEALBOT_OPTIONS_CDCLEFT = "Alt+Left";
|
||||
HEALBOT_OPTIONS_CDCRIGHT = "Alt+Right";
|
||||
HEALBOT_OPTIONS_CDCBARS = "Healthbar colours";
|
||||
HEALBOT_OPTIONS_CDCCLASS = "Monitor classes";
|
||||
HEALBOT_OPTIONS_CDCSHOWALLDEBUFFS = "Track All Debuffs";
|
||||
HEALBOT_OPTIONS_CDCWARNINGS = "Debuff warnings";
|
||||
HEALBOT_OPTIONS_USEBUTTONS = "Define spells";
|
||||
HEALBOT_OPTIONS_CDC = "Cure/Dispel/Cleanse for";
|
||||
@@ -389,3 +392,5 @@ HEALBOT_WORDS_SEC = "sec";
|
||||
HEALBOT_WORDS_TO = "to";
|
||||
HEALBOT_WORDS_CAST = "Cast"
|
||||
HEALBOT_WORDS_FOR = "for";
|
||||
HEALBOT_OPTIONS_TESTBARS = "Test Bars";
|
||||
HEALBOT_WORD_TEST = "Test";
|
||||
|
||||
@@ -18,7 +18,7 @@ if (GetLocale() == "frFR") then
|
||||
|
||||
HEALBOT_DRUID = "Druide";
|
||||
HEALBOT_HUNTER = "Chasseur";
|
||||
HEALBOT_MAGE = "Magier";
|
||||
HEALBOT_MAGE = "Mage";
|
||||
HEALBOT_PALADIN = "Paladin";
|
||||
HEALBOT_PRIEST = "Pr\195\170tre";
|
||||
HEALBOT_ROGUE = "Voleur";
|
||||
@@ -305,6 +305,8 @@ HEALBOT_OPTIONS_NEWSKINTEXT = "New skin" -- *************** needs French
|
||||
HEALBOT_OPTIONS_SAVESKIN = "Save" -- *************** needs French translation ***************
|
||||
HEALBOT_OPTIONS_SKINBARS = "Bar options" -- *************** needs French translation ***************
|
||||
HEALBOT_OPTIONS_SKINPANEL = "Panel colours" -- *************** needs French translation ***************
|
||||
HEALBOT_SKIN_MAXHPTEXT = "Max HP"
|
||||
HEALBOT_SKIN_MINHPTEXT = "Min HP"
|
||||
HEALBOT_SKIN_ENTEXT = "Enabled" -- *************** needs French translation ***************
|
||||
HEALBOT_SKIN_DISTEXT = "Disabled" -- *************** needs French translation ***************
|
||||
HEALBOT_SKIN_DEBTEXT = "Debuff" -- *************** needs French translation ***************
|
||||
|
||||
@@ -221,6 +221,8 @@ HEALBOT_GREATER_BLESSING_OF_SALVATION = "상급 구원의 축복";
|
||||
HEALBOT_OPTIONS_SAVESKIN = "저장"
|
||||
HEALBOT_OPTIONS_SKINBARS = "바 옵션들"
|
||||
HEALBOT_OPTIONS_SKINPANEL = "패널 색"
|
||||
HEALBOT_SKIN_MAXHPTEXT = "최대 생명력"
|
||||
HEALBOT_SKIN_MINHPTEXT = "최소 생명력"
|
||||
HEALBOT_SKIN_ENTEXT = "활성화"
|
||||
HEALBOT_SKIN_DISTEXT = "비활성화"
|
||||
HEALBOT_SKIN_DEBTEXT = "디버프"
|
||||
|
||||
+138
-4
@@ -1,6 +1,13 @@
|
||||
-- HealBot_Model.lua
|
||||
-- Centralized Data Store and Observer System for HealBotBlue
|
||||
|
||||
local pool_oldGUIDs = {}
|
||||
local pool_newUnitForGUID = {}
|
||||
local pool_stateSwaps = {}
|
||||
local pool_iconSwaps = {}
|
||||
local pool_missingBuffSwaps = {}
|
||||
local pool_debuffSwaps = {}
|
||||
|
||||
-- Safe local wrappers to prevent native UIDropDownMenu concatenation crashes
|
||||
-- when setting selected values on closed dropdowns during initialization.
|
||||
function HealBot_UIDropDownMenu_SetSelectedID(frame, id, useValue)
|
||||
@@ -15,6 +22,7 @@ function HealBot_UIDropDownMenu_SetSelectedID(frame, id, useValue)
|
||||
end
|
||||
end
|
||||
|
||||
-- HealBot_UIDropDownMenu_SetSelectedValue: Internal utility: HealBot_UIDropDownMenu_SetSelectedValue
|
||||
function HealBot_UIDropDownMenu_SetSelectedValue(frame, value, useValue)
|
||||
local wasNil = false
|
||||
if not UIDROPDOWNMENU_OPEN_MENU then
|
||||
@@ -35,7 +43,11 @@ HealBot_Model = {
|
||||
partyMembers = {},
|
||||
raidMembers = {},
|
||||
playerPet = nil,
|
||||
target = nil
|
||||
target = nil,
|
||||
|
||||
-- Integration maps
|
||||
unitGUIDs = {}, -- unit -> GUID
|
||||
guidUnits = {} -- GUID -> unit
|
||||
}
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
@@ -51,6 +63,7 @@ HealBot_Model = {
|
||||
-- "EQUIPMENT_CHANGED"
|
||||
-- "INCOMING_HEAL_CHANGED"
|
||||
|
||||
-- HealBot_Model:RegisterObserver: Registers an observer callback for an event.
|
||||
function HealBot_Model:RegisterObserver(event, callback)
|
||||
if not self.observers[event] then
|
||||
self.observers[event] = {}
|
||||
@@ -58,6 +71,7 @@ function HealBot_Model:RegisterObserver(event, callback)
|
||||
table.insert(self.observers[event], callback)
|
||||
end
|
||||
|
||||
-- HealBot_Model:NotifyObservers: Fires all registered callbacks for an event.
|
||||
function HealBot_Model:NotifyObservers(event, unitID, arg1, arg2)
|
||||
if self.observers[event] then
|
||||
local len = table.getn(self.observers[event])
|
||||
@@ -71,6 +85,7 @@ end
|
||||
-- Model Initialization
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
-- HealBot_Model:Initialize: Pre-allocates the unit state dictionary.
|
||||
function HealBot_Model:Initialize()
|
||||
self:InitUnitState("player")
|
||||
self:InitUnitState("target")
|
||||
@@ -89,6 +104,7 @@ function HealBot_Model:Initialize()
|
||||
end
|
||||
end
|
||||
|
||||
-- HealBot_Model:InitUnitState: Internal utility: HealBot_Model:InitUnitState
|
||||
function HealBot_Model:InitUnitState(unit)
|
||||
if not self.units[unit] then
|
||||
self.units[unit] = {
|
||||
@@ -128,21 +144,139 @@ end
|
||||
|
||||
-- Updates base unit info (Name, Class)
|
||||
function HealBot_Model:UpdateUnitIdentity(unit)
|
||||
if not self.units[unit] then return false end
|
||||
if not self.units[unit] or string.find(unit, "^Test") then return false end
|
||||
|
||||
local oldName = self.units[unit].name
|
||||
local oldEnglishClass = self.units[unit].englishClass
|
||||
local name = UnitName(unit)
|
||||
local _, englishClass = UnitClass(unit)
|
||||
local englishClass = HealBot_UnitClass(unit)
|
||||
|
||||
if oldName ~= name then
|
||||
if oldName ~= name or oldEnglishClass ~= englishClass then
|
||||
self.units[unit].name = name
|
||||
self.units[unit].englishClass = englishClass
|
||||
self.units[unit].class = UnitClass(unit)
|
||||
|
||||
if (HealBot_Integrations_SuperWoW_Active or HealBot_Integrations_ClassicAPI_Active or HealBot_Integrations_Nampower_Active) and HealBot_GetUnitGUID then
|
||||
local guid = HealBot_GetUnitGUID(unit)
|
||||
if guid and guid ~= "0" and guid ~= "0x0000000000000000" then
|
||||
self.unitGUIDs[unit] = guid
|
||||
self.guidUnits[guid] = unit
|
||||
end
|
||||
end
|
||||
return true -- Identity changed
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
-- HealBot_Model:GetUnitByGUID: Internal utility: HealBot_Model:GetUnitByGUID
|
||||
function HealBot_Model:GetUnitByGUID(guid)
|
||||
if not guid then return nil end
|
||||
return self.guidUnits[guid]
|
||||
end
|
||||
|
||||
-- HealBot_Model:GetUnitIDByName: Looks up a group unit token by player name.
|
||||
function HealBot_Model:GetUnitIDByName(name)
|
||||
if not name then return nil end
|
||||
for unit, data in pairs(self.units) do
|
||||
if data.name == name then return unit end
|
||||
end
|
||||
return nil
|
||||
end
|
||||
|
||||
-- HealBot_Model:PreserveStateByGUID: Preserves icon and debuff state when group indices shift during combat.
|
||||
function HealBot_Model:PreserveStateByGUID()
|
||||
if not (HealBot_Integrations_SuperWoW_Active or HealBot_Integrations_ClassicAPI_Active or HealBot_Integrations_Nampower_Active) or not HealBot_GetUnitGUID then return end
|
||||
|
||||
for k in pairs(pool_oldGUIDs) do pool_oldGUIDs[k] = nil end
|
||||
local oldGUIDs = pool_oldGUIDs
|
||||
for unit, guid in pairs(self.unitGUIDs) do
|
||||
if string.find(unit, "^party") or string.find(unit, "^raid") or unit == "player" or unit == "pet" then
|
||||
oldGUIDs[unit] = guid
|
||||
end
|
||||
end
|
||||
|
||||
for k in pairs(pool_newUnitForGUID) do pool_newUnitForGUID[k] = nil end
|
||||
local newUnitForGUID = pool_newUnitForGUID
|
||||
-- Scan the new roster
|
||||
for _, unit in ipairs(self.partyMembers) do
|
||||
local guid = HealBot_GetUnitGUID(unit)
|
||||
if guid and guid ~= "0" and guid ~= "0x0000000000000000" then
|
||||
newUnitForGUID[guid] = unit
|
||||
self.unitGUIDs[unit] = guid
|
||||
self.guidUnits[guid] = unit
|
||||
end
|
||||
end
|
||||
for _, unit in ipairs(self.raidMembers) do
|
||||
local guid = HealBot_GetUnitGUID(unit)
|
||||
if guid and guid ~= "0" and guid ~= "0x0000000000000000" then
|
||||
newUnitForGUID[guid] = unit
|
||||
self.unitGUIDs[unit] = guid
|
||||
self.guidUnits[guid] = unit
|
||||
end
|
||||
end
|
||||
|
||||
for k in pairs(pool_stateSwaps) do pool_stateSwaps[k] = nil end
|
||||
local stateSwaps = pool_stateSwaps
|
||||
for k in pairs(pool_iconSwaps) do pool_iconSwaps[k] = nil end
|
||||
local iconSwaps = pool_iconSwaps
|
||||
for k in pairs(pool_missingBuffSwaps) do pool_missingBuffSwaps[k] = nil end
|
||||
local missingBuffSwaps = pool_missingBuffSwaps
|
||||
for k in pairs(pool_debuffSwaps) do pool_debuffSwaps[k] = nil end
|
||||
local debuffSwaps = pool_debuffSwaps
|
||||
|
||||
for oldUnit, guid in pairs(oldGUIDs) do
|
||||
local newUnit = newUnitForGUID[guid]
|
||||
if newUnit and newUnit ~= oldUnit then
|
||||
stateSwaps[newUnit] = self.units[oldUnit]
|
||||
|
||||
-- Preserve external global tables if they exist
|
||||
if HealBot_UnitIcons and HealBot_UnitIcons[oldUnit] then
|
||||
iconSwaps[newUnit] = HealBot_UnitIcons[oldUnit]
|
||||
end
|
||||
if HealBot_MissingBuffs and HealBot_MissingBuffs[oldUnit] ~= nil then
|
||||
missingBuffSwaps[newUnit] = HealBot_MissingBuffs[oldUnit]
|
||||
end
|
||||
if HealBot_UnitDebuff and HealBot_UnitDebuff[oldUnit] ~= nil then
|
||||
debuffSwaps[newUnit] = HealBot_UnitDebuff[oldUnit]
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
for targetUnit, stateData in pairs(stateSwaps) do
|
||||
-- Deep copy to prevent memory aliasing
|
||||
if not self.units[targetUnit] then
|
||||
self.units[targetUnit] = HealBot_GetTable()
|
||||
self.units[targetUnit].icons = HealBot_GetTable()
|
||||
end
|
||||
|
||||
local targetIcons = self.units[targetUnit].icons
|
||||
if not targetIcons then targetIcons = HealBot_GetTable() end
|
||||
for k in pairs(targetIcons) do targetIcons[k] = nil end
|
||||
|
||||
for k in pairs(self.units[targetUnit]) do self.units[targetUnit][k] = nil end
|
||||
|
||||
for k, v in pairs(stateData) do
|
||||
if k ~= "icons" then
|
||||
self.units[targetUnit][k] = v
|
||||
end
|
||||
end
|
||||
self.units[targetUnit].icons = targetIcons
|
||||
|
||||
if HealBot_UnitIcons and iconSwaps[targetUnit] then
|
||||
if not HealBot_UnitIcons[targetUnit] then HealBot_UnitIcons[targetUnit] = HealBot_GetTable() end
|
||||
for j=1, 10 do
|
||||
HealBot_UnitIcons[targetUnit][j] = iconSwaps[targetUnit][j]
|
||||
end
|
||||
end
|
||||
if HealBot_MissingBuffs then
|
||||
HealBot_MissingBuffs[targetUnit] = missingBuffSwaps[targetUnit]
|
||||
end
|
||||
if HealBot_UnitDebuff then
|
||||
HealBot_UnitDebuff[targetUnit] = debuffSwaps[targetUnit]
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- Updates health/maxHealth values. Returns true if changed.
|
||||
function HealBot_Model:UpdateUnitHealth(unit)
|
||||
if not self.units[unit] then return false end
|
||||
|
||||
+87
-6
@@ -14,10 +14,26 @@ HealBot_Options_EmergencyFilter_List = {
|
||||
HEALBOT_OPTIONS_MONITORCUSTOM,
|
||||
}
|
||||
|
||||
HealBot_Options_CDCMonitor_List = {
|
||||
HEALBOT_OPTIONS_MONITORNO,
|
||||
HEALBOT_OPTIONS_MONITORALL,
|
||||
HEALBOT_DRUID,
|
||||
HEALBOT_HUNTER,
|
||||
HEALBOT_MAGE,
|
||||
HEALBOT_PALADIN,
|
||||
HEALBOT_PRIEST,
|
||||
HEALBOT_ROGUE,
|
||||
HEALBOT_SHAMAN,
|
||||
HEALBOT_WARLOCK,
|
||||
HEALBOT_WARRIOR,
|
||||
}
|
||||
|
||||
-- HealBot_Options_AddDebug: UI handler for AddDebug options panel.
|
||||
function HealBot_Options_AddDebug(msg)
|
||||
HealBot_AddDebug("Options: " .. msg);
|
||||
end
|
||||
|
||||
-- HealBot_Options_Pct_OnLoad: UI handler for OnLoad options panel.
|
||||
function HealBot_Options_Pct_OnLoad(this,text)
|
||||
this.text = text;
|
||||
getglobal(this:GetName().."Text"):SetText(text);
|
||||
@@ -27,6 +43,7 @@ function HealBot_Options_Pct_OnLoad(this,text)
|
||||
this:SetValueStep(0.01);
|
||||
end
|
||||
|
||||
-- HealBot_Options_Pct_OnLoad_MinMax: UI handler for MinMax options panel.
|
||||
function HealBot_Options_Pct_OnLoad_MinMax(this,text,Min,Max)
|
||||
this.text = text;
|
||||
local MinTxt,MaxTxt
|
||||
@@ -41,6 +58,7 @@ function HealBot_Options_Pct_OnLoad_MinMax(this,text,Min,Max)
|
||||
this:SetValueStep(0.01);
|
||||
end
|
||||
|
||||
-- HealBot_Options_val_OnLoad: UI handler for OnLoad options panel.
|
||||
function HealBot_Options_val_OnLoad(this,text,Min,Max)
|
||||
this.text = text;
|
||||
|
||||
@@ -51,6 +69,7 @@ function HealBot_Options_val_OnLoad(this,text,Min,Max)
|
||||
this:SetValueStep(1);
|
||||
end
|
||||
|
||||
-- HealBot_Options_Pct_OnValueChanged: UI handler for OnValueChanged options panel.
|
||||
function HealBot_Options_Pct_OnValueChanged(this)
|
||||
local pct = math.floor(this:GetValue()*100+0.5);
|
||||
getglobal(this:GetName().."Text"):SetText(this.text .. " (" .. pct .. "%)");
|
||||
@@ -106,10 +125,12 @@ end
|
||||
|
||||
|
||||
|
||||
-- HealBot_Options_CastNotify_OnLoad: UI handler for OnLoad options panel.
|
||||
function HealBot_Options_CastNotify_OnLoad(this,text)
|
||||
getglobal(this:GetName().."Text"):SetText(text);
|
||||
end
|
||||
|
||||
-- HealBot_Options_CastNotify_OnClick: UI handler for OnClick options panel.
|
||||
function HealBot_Options_CastNotify_OnClick(this,id)
|
||||
-- CastNotify UI elements were removed and replaced by Custom Chat Messages
|
||||
end
|
||||
@@ -147,6 +168,7 @@ end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
-- HealBot_Returned_Colours: Internal utility: HealBot_Returned_Colours
|
||||
function HealBot_Returned_Colours()
|
||||
local A = OpacitySliderFrame:GetValue();
|
||||
A = ((0-A)+1);
|
||||
@@ -180,6 +202,20 @@ function HealBot_Returned_Colours()
|
||||
HealBot_Config.babortcolg[HealBot_Config.Current_Skin],
|
||||
HealBot_Config.babortcolb[HealBot_Config.Current_Skin] = ColorPickerFrame:GetColorRGB();
|
||||
HealBot_Config.babortcola[HealBot_Config.Current_Skin] = A;
|
||||
elseif HealBot_ColourObjWaiting=="MaxHP" then
|
||||
if not HealBot_Config.bcolormaxr then HealBot_Config.bcolormaxr = {} end
|
||||
if not HealBot_Config.bcolormaxg then HealBot_Config.bcolormaxg = {} end
|
||||
if not HealBot_Config.bcolormaxb then HealBot_Config.bcolormaxb = {} end
|
||||
HealBot_Config.bcolormaxr[HealBot_Config.Current_Skin],
|
||||
HealBot_Config.bcolormaxg[HealBot_Config.Current_Skin],
|
||||
HealBot_Config.bcolormaxb[HealBot_Config.Current_Skin] = ColorPickerFrame:GetColorRGB();
|
||||
elseif HealBot_ColourObjWaiting=="MinHP" then
|
||||
if not HealBot_Config.bcolorminr then HealBot_Config.bcolorminr = {} end
|
||||
if not HealBot_Config.bcolorming then HealBot_Config.bcolorming = {} end
|
||||
if not HealBot_Config.bcolorminb then HealBot_Config.bcolorminb = {} end
|
||||
HealBot_Config.bcolorminr[HealBot_Config.Current_Skin],
|
||||
HealBot_Config.bcolorming[HealBot_Config.Current_Skin],
|
||||
HealBot_Config.bcolorminb[HealBot_Config.Current_Skin] = ColorPickerFrame:GetColorRGB();
|
||||
else
|
||||
HealBot_Config.CDCBarColour[HealBot_ColourObjWaiting].R,
|
||||
HealBot_Config.CDCBarColour[HealBot_ColourObjWaiting].G,
|
||||
@@ -188,12 +224,18 @@ function HealBot_Returned_Colours()
|
||||
HealBot_SetSkinColours()
|
||||
HealBot_SetCDCBarColours()
|
||||
end
|
||||
ColorPickerFrame.func = HealBot_Returned_Colours
|
||||
|
||||
-- HealBot_UseColourPick: Internal utility: HealBot_UseColourPick
|
||||
function HealBot_UseColourPick(R, G, B, A)
|
||||
ColorPickerFrame.func = HealBot_Returned_Colours;
|
||||
ColorPickerFrame.cancelFunc = HealBot_Returned_Colours;
|
||||
if ColorPickerFrame:IsVisible() then
|
||||
ColorPickerFrame:Hide();
|
||||
elseif A then
|
||||
ColorPickerFrame.hasOpacity = true;
|
||||
ColorPickerFrame.opacity = A;
|
||||
ColorPickerFrame.opacityFunc = HealBot_Returned_Colours;
|
||||
ColorPickerFrame:ClearAllPoints();
|
||||
ColorPickerFrame:SetPoint("TOPLEFT","HealBot_Options","TOPRIGHT",0,-152);
|
||||
ColorPickerFrame:Show();
|
||||
@@ -201,6 +243,7 @@ function HealBot_UseColourPick(R, G, B, A)
|
||||
ColorPickerFrame:SetColorRGB(R, G, B);
|
||||
else
|
||||
ColorPickerFrame.hasOpacity = false;
|
||||
ColorPickerFrame.opacityFunc = nil;
|
||||
ColorPickerFrame:ClearAllPoints();
|
||||
ColorPickerFrame:SetPoint("TOPLEFT","HealBot_Options","TOPRIGHT",0,-152);
|
||||
ColorPickerFrame:Show();
|
||||
@@ -208,26 +251,37 @@ function HealBot_UseColourPick(R, G, B, A)
|
||||
end
|
||||
return ColorPickerFrame:GetColorRGB();
|
||||
end
|
||||
-- HealBot_Options_Defaults_OnClick: UI handler for OnClick options panel.
|
||||
function HealBot_Options_Defaults_OnClick(this)
|
||||
HealBot_Options_CastNotify_OnClick(nil,0);
|
||||
-- HealBot_Config = HealBot_ConfigDefaults;
|
||||
table.foreach(HealBot_ConfigDefaults, function (key,val)
|
||||
HealBot_Config[key] = val;
|
||||
end);
|
||||
HealBot_Config = {}
|
||||
local function DeepCopy(src, dest)
|
||||
for k, v in pairs(src) do
|
||||
if type(v) == "table" then
|
||||
dest[k] = {}
|
||||
DeepCopy(v, dest[k])
|
||||
else
|
||||
dest[k] = v
|
||||
end
|
||||
end
|
||||
end
|
||||
DeepCopy(HealBot_ConfigDefaults, HealBot_Config)
|
||||
HealBot_Options_OnShow(HealBot_Options);
|
||||
HealBot_RecalcSpells();
|
||||
HealBot_Action_Reset();
|
||||
HealBot_Config.ActionVisible = HealBot_Action:IsVisible();
|
||||
end
|
||||
-- HealBot_Options_OnLoad: UI handler for OnLoad options panel.
|
||||
function HealBot_Options_OnLoad(this)
|
||||
table.insert(UISpecialFrames,this:GetName());
|
||||
|
||||
-- Tabs
|
||||
PanelTemplates_SetNumTabs(this,8);
|
||||
PanelTemplates_SetNumTabs(this,9);
|
||||
this.selectedTab = 1;
|
||||
PanelTemplates_UpdateTabs(this);
|
||||
HealBot_Options_ShowPanel(this.selectedTab);
|
||||
end
|
||||
-- HealBot_Options_OnShow: UI handler for OnShow options panel.
|
||||
function HealBot_Options_OnShow(this)
|
||||
HealBot_Skins = HealBot_Config.Skins;
|
||||
HealBot_Options_SetSkins()
|
||||
@@ -295,6 +349,7 @@ function HealBot_Options_OnShow(this)
|
||||
HealBot_Options_SetChatMessages();
|
||||
HealBot_Options_ShowPanel(this.selectedTab or 1);
|
||||
end
|
||||
-- HealBot_Options_SetSkins: UI handler for SetSkins options panel.
|
||||
function HealBot_Options_SetSkins()
|
||||
HealBot_Options_Skins_Refresh()
|
||||
HealBot_Options_BarAlpha:SetValue(HealBot_Config.Barcola[HealBot_Config.Current_Skin]);
|
||||
@@ -307,12 +362,37 @@ function HealBot_Options_SetSkins()
|
||||
HealBot_Options_BarWidthS:SetValue(HealBot_Config.bwidth[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)
|
||||
local orient = (HealBot_Config.GridOrientation and HealBot_Config.GridOrientation[HealBot_Config.Current_Skin]) or 1
|
||||
UIDropDownMenu_SetSelectedID(HealBot_Options_GridOrientation_Dropdown, orient)
|
||||
if orient == 2 then
|
||||
HealBot_Options_GridOrientation_DropdownText:SetText("Horizontal (Rows)")
|
||||
HealBot_Options_BarMaxRowsS:Hide()
|
||||
HealBot_Options_BarNumColsS:Show()
|
||||
else
|
||||
HealBot_Options_GridOrientation_DropdownText:SetText("Vertical (Columns)")
|
||||
HealBot_Options_BarMaxRowsS:Show()
|
||||
HealBot_Options_BarNumColsS:Hide()
|
||||
end
|
||||
HealBot_Options_BarBRSpaceS:SetValue(HealBot_Config.brspace[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_BorderThicknessS:SetValue((HealBot_Config.bboffset and HealBot_Config.bboffset[HealBot_Config.Current_Skin]) or 1)
|
||||
HealBot_Options_FontHeight:SetValue(HealBot_Config.btextheight[HealBot_Config.Current_Skin])
|
||||
|
||||
local fontFile = (HealBot_Config.bfont and HealBot_Config.bfont[HealBot_Config.Current_Skin]) or "Fonts\\FRIZQT__.TTF"
|
||||
local fontName = "Friz Quadrata"
|
||||
if HealBot_Font_List then
|
||||
for i = 1, getn(HealBot_Font_List) do
|
||||
if HealBot_Font_List[i].file == fontFile then
|
||||
fontName = HealBot_Font_List[i].text
|
||||
UIDropDownMenu_SetSelectedID(HealBot_Options_Font_Dropdown, i)
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
if HealBot_Options_Font_DropdownText then
|
||||
HealBot_Options_Font_DropdownText:SetText(fontName)
|
||||
end
|
||||
HealBot_Options_BarAlphaDis:SetValue(HealBot_Config.bardisa[HealBot_Config.Current_Skin])
|
||||
HealBot_Options_AbortBarSize:SetValue(HealBot_Config.abortsize[HealBot_Config.Current_Skin])
|
||||
local isShowHeaders = (HealBot_Config.ShowHeader[HealBot_Config.Current_Skin] == 1)
|
||||
@@ -334,6 +414,7 @@ function HealBot_Options_SetSkins()
|
||||
HealBot_Options_DeleteSkin:Enable();
|
||||
end
|
||||
end
|
||||
-- HealBot_Options_ShowPanel: UI handler for ShowPanel options panel.
|
||||
function HealBot_Options_ShowPanel(id)
|
||||
if HealBot_Options_CurrentPanel>0 then
|
||||
local panel = getglobal("HealBot_Options_Panel"..HealBot_Options_CurrentPanel);
|
||||
|
||||
+11
-2
@@ -94,7 +94,7 @@
|
||||
<Frame name="HealBot_Options" toplevel="true" frameStrata="DIALOG"
|
||||
movable="true" parent="UIParent" enableMouse="true" hidden="true">
|
||||
<Size>
|
||||
<AbsDimension x="480" y="455"/>
|
||||
<AbsDimension x="540" y="455"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="CENTER">
|
||||
@@ -121,7 +121,7 @@
|
||||
<Texture name="HealBot_Options_Header"
|
||||
file="Interface\DialogFrame\UI-DialogBox-Header">
|
||||
<Size>
|
||||
<AbsDimension x="400" y="64"/>
|
||||
<AbsDimension x="450" y="64"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOP">
|
||||
@@ -215,6 +215,15 @@
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</Button>
|
||||
<Button name="HealBot_OptionsTab9" inherits="HealBot_Options_Tab" id="9" text="Extras">
|
||||
<Anchors>
|
||||
<Anchor point="LEFT" relativeTo="HealBot_OptionsTab8" relativePoint="RIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="-14" y="0" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</Button>
|
||||
|
||||
</Frames>
|
||||
<Scripts>
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
-- HealBot_Options_AutoSwap_OnClick: UI handler for OnClick options panel.
|
||||
function HealBot_Options_AutoSwap_OnClick(this)
|
||||
if this:GetChecked() then
|
||||
HealBot_Config.AutoSwap_Enabled = 1
|
||||
@@ -7,6 +8,7 @@ function HealBot_Options_AutoSwap_OnClick(this)
|
||||
HealBot_Action_PartyChanged()
|
||||
end
|
||||
|
||||
-- HealBot_Options_Auto_Initialize: UI handler for Initialize options panel.
|
||||
function HealBot_Options_Auto_Initialize()
|
||||
local dropdownName = UIDROPDOWNMENU_OPEN_MENU
|
||||
if not dropdownName then return end
|
||||
@@ -30,6 +32,7 @@ function HealBot_Options_Auto_Initialize()
|
||||
end
|
||||
end
|
||||
|
||||
-- HealBot_Options_Auto_OnSelect: UI handler for OnSelect options panel.
|
||||
function HealBot_Options_Auto_OnSelect()
|
||||
local skin = this:GetText()
|
||||
local id = this.value
|
||||
@@ -53,6 +56,7 @@ function HealBot_Options_Auto_OnSelect()
|
||||
HealBot_Action_PartyChanged()
|
||||
end
|
||||
|
||||
-- HealBot_Options_Auto_OnShow: UI handler for OnShow options panel.
|
||||
function HealBot_Options_Auto_OnShow(this)
|
||||
if HealBot_Config.AutoSwap_Enabled == 1 then
|
||||
HealBot_Options_AutoSwap:SetChecked(1)
|
||||
|
||||
+16
-17
@@ -8,7 +8,7 @@
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="25" y="-30" />
|
||||
<AbsDimension x="170" y="-30"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
@@ -28,15 +28,15 @@
|
||||
<FontString name="$parentLabel" text="Solo Skin:" inherits="GameFontNormalSmall">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset><AbsDimension x="-10" y="15" /></Offset>
|
||||
<Offset><AbsDimension x="-10" y="15"/></Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset><AbsDimension x="30" y="-80" /></Offset>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_AutoSwap" relativePoint="BOTTOMLEFT">
|
||||
<Offset><AbsDimension x="0" y="-25"/></Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
@@ -52,15 +52,15 @@
|
||||
<FontString name="$parentLabel" text="Party Skin:" inherits="GameFontNormalSmall">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset><AbsDimension x="-10" y="15" /></Offset>
|
||||
<Offset><AbsDimension x="-10" y="15"/></Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset><AbsDimension x="30" y="-130" /></Offset>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_Auto_Solo" relativePoint="BOTTOMLEFT">
|
||||
<Offset><AbsDimension x="0" y="-25"/></Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
@@ -76,15 +76,15 @@
|
||||
<FontString name="$parentLabel" text="Raid 15 Skin:" inherits="GameFontNormalSmall">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset><AbsDimension x="-10" y="15" /></Offset>
|
||||
<Offset><AbsDimension x="-10" y="15"/></Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset><AbsDimension x="30" y="-180" /></Offset>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_Auto_Party" relativePoint="BOTTOMLEFT">
|
||||
<Offset><AbsDimension x="0" y="-25"/></Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
@@ -100,15 +100,15 @@
|
||||
<FontString name="$parentLabel" text="Raid 25 Skin:" inherits="GameFontNormalSmall">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset><AbsDimension x="-10" y="15" /></Offset>
|
||||
<Offset><AbsDimension x="-10" y="15"/></Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset><AbsDimension x="30" y="-230" /></Offset>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_Auto_Raid15" relativePoint="BOTTOMLEFT">
|
||||
<Offset><AbsDimension x="0" y="-25"/></Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
@@ -124,15 +124,15 @@
|
||||
<FontString name="$parentLabel" text="Raid 40 Skin:" inherits="GameFontNormalSmall">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset><AbsDimension x="-10" y="15" /></Offset>
|
||||
<Offset><AbsDimension x="-10" y="15"/></Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset><AbsDimension x="30" y="-280" /></Offset>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_Auto_Raid25" relativePoint="BOTTOMLEFT">
|
||||
<Offset><AbsDimension x="0" y="-25"/></Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
@@ -141,7 +141,6 @@
|
||||
</OnLoad>
|
||||
</Scripts>
|
||||
</Frame>
|
||||
|
||||
</Frames>
|
||||
<Scripts>
|
||||
<OnShow>
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
-- HealBot Options panel file: HealBot_Options_Buffs.lua
|
||||
-- Split from original HealBot_Options.lua
|
||||
|
||||
-- HealBot_Options_BuffWatch_OnClick: UI handler for OnClick options panel.
|
||||
function HealBot_Options_BuffWatch_OnClick(self)
|
||||
local frame = self or this
|
||||
HealBot_Config.BuffWatch = frame:GetChecked() or 0;
|
||||
@@ -9,13 +10,15 @@ function HealBot_Options_BuffWatch_OnClick(self)
|
||||
else
|
||||
HealBot_Options_BuffWatchInCombat:Enable()
|
||||
end
|
||||
HealBot_RecalcParty();
|
||||
HealBot_Action_RefreshButtons(nil);
|
||||
end
|
||||
-- HealBot_Options_BuffWatchInCombat_OnClick: UI handler for OnClick options panel.
|
||||
function HealBot_Options_BuffWatchInCombat_OnClick(self)
|
||||
local frame = self or this
|
||||
HealBot_Config.BuffWatchInCombat = frame:GetChecked() or 0;
|
||||
HealBot_RecalcParty();
|
||||
HealBot_Action_RefreshButtons(nil);
|
||||
end
|
||||
-- HealBot_Options_BuffSelf_OnLoad: UI handler for OnLoad options panel.
|
||||
function HealBot_Options_BuffSelf_OnLoad(self)
|
||||
local frame = self or this
|
||||
getglobal(this:GetName().."Text"):SetText("Self Only")
|
||||
@@ -27,6 +30,7 @@ function HealBot_Options_BuffSelf_OnLoad(self)
|
||||
this:SetChecked(nil)
|
||||
end
|
||||
end
|
||||
-- HealBot_Options_BuffSelf_OnClick: UI handler for OnClick options panel.
|
||||
function HealBot_Options_BuffSelf_OnClick(self)
|
||||
local frame = self or this
|
||||
local id = this:GetID()
|
||||
@@ -38,13 +42,15 @@ function HealBot_Options_BuffSelf_OnClick(self)
|
||||
else
|
||||
HealBot_Config.BuffWatchSelf[id] = 0
|
||||
end
|
||||
HealBot_RecalcParty();
|
||||
HealBot_Action_RefreshButtons(nil);
|
||||
end
|
||||
-- HealBot_Options_Buff_OnLoad: UI handler for OnLoad options panel.
|
||||
function HealBot_Options_Buff_OnLoad(self)
|
||||
local frame = self or this
|
||||
UIDropDownMenu_Initialize(frame, HealBot_Options_Buff_Initialize)
|
||||
UIDropDownMenu_SetWidth(110, frame)
|
||||
end
|
||||
-- HealBot_Options_Buff_Initialize: UI handler for Initialize options panel.
|
||||
function HealBot_Options_Buff_Initialize()
|
||||
local myClass = UnitClass("player")
|
||||
local info
|
||||
@@ -63,6 +69,7 @@ function HealBot_Options_Buff_Initialize()
|
||||
end
|
||||
end
|
||||
end
|
||||
-- HealBot_Options_Buff_OnClick: UI handler for OnClick options panel.
|
||||
function HealBot_Options_Buff_OnClick()
|
||||
local frameName = UIDROPDOWNMENU_OPEN_MENU
|
||||
local frame = getglobal(frameName)
|
||||
@@ -80,8 +87,9 @@ function HealBot_Options_Buff_OnClick()
|
||||
|
||||
HealBot_UIDropDownMenu_SetSelectedID(frame, this.value + 1)
|
||||
UIDropDownMenu_SetText(text, frame)
|
||||
HealBot_RecalcParty();
|
||||
HealBot_Action_RefreshButtons(nil);
|
||||
end
|
||||
-- HealBot_Options_SetBuffs: UI handler for SetBuffs options panel.
|
||||
function HealBot_Options_SetBuffs()
|
||||
local myClass = UnitClass("player")
|
||||
if HealBot_Options_BuffWatch then
|
||||
@@ -105,7 +113,7 @@ function HealBot_Options_SetBuffs()
|
||||
HealBot_UIDropDownMenu_SetSelectedID(dropDown, val + 1)
|
||||
end
|
||||
|
||||
local selfCheck = getglobal("HealBot_Options_BuffSelf" .. i)
|
||||
local selfCheck = getglobal("HealBot_Options_Buff" .. i .. "Self")
|
||||
if selfCheck then
|
||||
if HealBot_Config.BuffWatchSelf and HealBot_Config.BuffWatchSelf[i] then
|
||||
local isSelf = (HealBot_Config.BuffWatchSelf[i] == 1)
|
||||
|
||||
+356
-363
@@ -2,371 +2,364 @@
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://www.blizzard.com/wow/ui/ ..\FrameXML\UI.xsd">
|
||||
<Script file="HealBot_Options_Buffs.lua" />
|
||||
<Frame name="HealBot_Options_Panel6" parent="HealBot_Options" hidden="true" setAllPoints="true">
|
||||
<Frames>
|
||||
<Frame name="HealBot_Options_BuffFrame" inherits="OptionFrameBoxTemplate">
|
||||
<Scripts>
|
||||
<OnLoad>
|
||||
this:SetBackdropBorderColor(0.4, 0.4, 0.4);
|
||||
this:SetBackdropColor(0, 0, 0, 0);
|
||||
</OnLoad>
|
||||
</Scripts>
|
||||
<Size>
|
||||
<AbsDimension y="330"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="21" y="-35"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
<Anchor point="TOPRIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="-21" y="0"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Layers>
|
||||
<Layer level="BACKGROUND">
|
||||
<FontString name="HealBot_BuffPanel_Text" text="Buff Settings" inherits="GameFontNormalSmall">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="15" y="10" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
</Frame>
|
||||
|
||||
<CheckButton name="HealBot_Options_BuffWatch" inherits="OptionsCheckButtonTemplate">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_BuffFrame" relativePoint="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="15" y="-15"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_WarningSound_OnLoad(this,HEALBOT_OPTIONS_BUFFWATCH)</OnLoad>
|
||||
<OnClick>HealBot_Options_BuffWatch_OnClick(this)</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
|
||||
<CheckButton name="HealBot_Options_BuffWatchInCombat" inherits="OptionsCheckButtonTemplate">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_BuffWatch" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="20" y="0"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_WarningSound_OnLoad(this,HEALBOT_OPTIONS_BUFFWATCHINCOMBAT)</OnLoad>
|
||||
<OnClick>HealBot_Options_BuffWatchInCombat_OnClick(this)</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
|
||||
<Frame name="HealBot_Options_Buff1" inherits="UIDropDownMenuTemplate" id="1">
|
||||
<Layers>
|
||||
<Layer level="BACKGROUND">
|
||||
<FontString name="HealBot_Options_Buff1Text" text="HEALBOT_OPTIONS_BUFF1" inherits="GameFontNormalSmall">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="-10" y="15" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_BuffWatchInCombat" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="-15" y="-30" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad> HealBot_Options_Buff_OnLoad(this) </OnLoad>
|
||||
</Scripts>
|
||||
</Frame>
|
||||
<CheckButton name="HealBot_Options_Buff1Self" inherits="OptionsCheckButtonTemplate" id="1">
|
||||
<Size><AbsDimension x="20" y="20"/></Size>
|
||||
<Frame name="HealBot_Options_Panel6" parent="HealBot_Options" hidden="true" setAllPoints="true">
|
||||
<Frames>
|
||||
<Frame name="HealBot_Options_BuffFrame">
|
||||
<Size>
|
||||
<AbsDimension y="330"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="50" y="-30"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
<Anchor point="TOPRIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="-50" y="-30"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Layers>
|
||||
<Layer level="BACKGROUND">
|
||||
<FontString name="HealBot_BuffPanel_Text" text="Buff Settings" inherits="GameFontNormalSmall">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_Buff1" relativePoint="TOPLEFT">
|
||||
<Offset><AbsDimension x="40" y="18"/></Offset>
|
||||
</Anchor>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="15" y="10"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_Options_BuffSelf_OnLoad(this)</OnLoad>
|
||||
<OnClick>HealBot_Options_BuffSelf_OnClick(this)</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
<Frame name="HealBot_Options_Buff2" inherits="UIDropDownMenuTemplate" id="2">
|
||||
<Layers>
|
||||
<Layer level="BACKGROUND">
|
||||
<FontString name="HealBot_Options_Buff2Text" text="HEALBOT_OPTIONS_BUFF2" inherits="GameFontNormalSmall">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="-10" y="15" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_Buff1" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-35" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad> HealBot_Options_Buff_OnLoad(this) </OnLoad>
|
||||
</Scripts>
|
||||
</Frame>
|
||||
<CheckButton name="HealBot_Options_Buff2Self" inherits="OptionsCheckButtonTemplate" id="2">
|
||||
<Size><AbsDimension x="20" y="20"/></Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_Buff2" relativePoint="TOPLEFT">
|
||||
<Offset><AbsDimension x="40" y="18"/></Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_Options_BuffSelf_OnLoad(this)</OnLoad>
|
||||
<OnClick>HealBot_Options_BuffSelf_OnClick(this)</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
<Frame name="HealBot_Options_Buff3" inherits="UIDropDownMenuTemplate" id="3">
|
||||
<Layers>
|
||||
<Layer level="BACKGROUND">
|
||||
<FontString name="HealBot_Options_Buff3Text" text="HEALBOT_OPTIONS_BUFF3" inherits="GameFontNormalSmall">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="-10" y="15" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_Buff2" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-35" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad> HealBot_Options_Buff_OnLoad(this) </OnLoad>
|
||||
</Scripts>
|
||||
</Frame>
|
||||
<CheckButton name="HealBot_Options_Buff3Self" inherits="OptionsCheckButtonTemplate" id="3">
|
||||
<Size><AbsDimension x="20" y="20"/></Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_Buff3" relativePoint="TOPLEFT">
|
||||
<Offset><AbsDimension x="40" y="18"/></Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_Options_BuffSelf_OnLoad(this)</OnLoad>
|
||||
<OnClick>HealBot_Options_BuffSelf_OnClick(this)</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
<Frame name="HealBot_Options_Buff4" inherits="UIDropDownMenuTemplate" id="4">
|
||||
<Layers>
|
||||
<Layer level="BACKGROUND">
|
||||
<FontString name="HealBot_Options_Buff4Text" text="HEALBOT_OPTIONS_BUFF4" inherits="GameFontNormalSmall">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="-10" y="15" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_Buff3" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-35" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad> HealBot_Options_Buff_OnLoad(this) </OnLoad>
|
||||
</Scripts>
|
||||
</Frame>
|
||||
<CheckButton name="HealBot_Options_Buff4Self" inherits="OptionsCheckButtonTemplate" id="4">
|
||||
<Size><AbsDimension x="20" y="20"/></Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_Buff4" relativePoint="TOPLEFT">
|
||||
<Offset><AbsDimension x="40" y="18"/></Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_Options_BuffSelf_OnLoad(this)</OnLoad>
|
||||
<OnClick>HealBot_Options_BuffSelf_OnClick(this)</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
<Frame name="HealBot_Options_Buff5" inherits="UIDropDownMenuTemplate" id="5">
|
||||
<Layers>
|
||||
<Layer level="BACKGROUND">
|
||||
<FontString name="HealBot_Options_Buff5Text" text="HEALBOT_OPTIONS_BUFF5" inherits="GameFontNormalSmall">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="-10" y="15" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_BuffWatchInCombat" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="160" y="-30" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad> HealBot_Options_Buff_OnLoad(this) </OnLoad>
|
||||
</Scripts>
|
||||
</Frame>
|
||||
<CheckButton name="HealBot_Options_Buff5Self" inherits="OptionsCheckButtonTemplate" id="5">
|
||||
<Size><AbsDimension x="20" y="20"/></Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_Buff5" relativePoint="TOPLEFT">
|
||||
<Offset><AbsDimension x="40" y="18"/></Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_Options_BuffSelf_OnLoad(this)</OnLoad>
|
||||
<OnClick>HealBot_Options_BuffSelf_OnClick(this)</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
<Frame name="HealBot_Options_Buff6" inherits="UIDropDownMenuTemplate" id="6">
|
||||
<Layers>
|
||||
<Layer level="BACKGROUND">
|
||||
<FontString name="HealBot_Options_Buff6Text" text="HEALBOT_OPTIONS_BUFF6" inherits="GameFontNormalSmall">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="-10" y="15" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_Buff5" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-35" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad> HealBot_Options_Buff_OnLoad(this) </OnLoad>
|
||||
</Scripts>
|
||||
</Frame>
|
||||
<CheckButton name="HealBot_Options_Buff6Self" inherits="OptionsCheckButtonTemplate" id="6">
|
||||
<Size><AbsDimension x="20" y="20"/></Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_Buff6" relativePoint="TOPLEFT">
|
||||
<Offset><AbsDimension x="40" y="18"/></Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_Options_BuffSelf_OnLoad(this)</OnLoad>
|
||||
<OnClick>HealBot_Options_BuffSelf_OnClick(this)</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
<Frame name="HealBot_Options_Buff7" inherits="UIDropDownMenuTemplate" id="7">
|
||||
<Layers>
|
||||
<Layer level="BACKGROUND">
|
||||
<FontString name="HealBot_Options_Buff7Text" text="HEALBOT_OPTIONS_BUFF7" inherits="GameFontNormalSmall">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="-10" y="15" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_Buff6" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-35" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad> HealBot_Options_Buff_OnLoad(this) </OnLoad>
|
||||
</Scripts>
|
||||
</Frame>
|
||||
<CheckButton name="HealBot_Options_Buff7Self" inherits="OptionsCheckButtonTemplate" id="7">
|
||||
<Size><AbsDimension x="20" y="20"/></Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_Buff7" relativePoint="TOPLEFT">
|
||||
<Offset><AbsDimension x="40" y="18"/></Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_Options_BuffSelf_OnLoad(this)</OnLoad>
|
||||
<OnClick>HealBot_Options_BuffSelf_OnClick(this)</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
<Frame name="HealBot_Options_Buff8" inherits="UIDropDownMenuTemplate" id="8">
|
||||
<Layers>
|
||||
<Layer level="BACKGROUND">
|
||||
<FontString name="HealBot_Options_Buff8Text" text="HEALBOT_OPTIONS_BUFF8" inherits="GameFontNormalSmall">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="-10" y="15" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_Buff7" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-35" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad> HealBot_Options_Buff_OnLoad(this) </OnLoad>
|
||||
</Scripts>
|
||||
</Frame>
|
||||
<CheckButton name="HealBot_Options_Buff8Self" inherits="OptionsCheckButtonTemplate" id="8">
|
||||
<Size><AbsDimension x="20" y="20"/></Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_Buff8" relativePoint="TOPLEFT">
|
||||
<Offset><AbsDimension x="40" y="18"/></Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_Options_BuffSelf_OnLoad(this)</OnLoad>
|
||||
<OnClick>HealBot_Options_BuffSelf_OnClick(this)</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
|
||||
</Frames>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
</Frame>
|
||||
|
||||
<CheckButton name="HealBot_Options_BuffWatch" inherits="OptionsCheckButtonTemplate">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_BuffFrame" relativePoint="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="15" y="-10"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_WarningSound_OnLoad(this,HEALBOT_OPTIONS_BUFFWATCH)</OnLoad>
|
||||
<OnClick>HealBot_Options_BuffWatch_OnClick(this)</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
|
||||
<CheckButton name="HealBot_Options_BuffWatchInCombat" inherits="OptionsCheckButtonTemplate">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_BuffWatch" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-4"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_WarningSound_OnLoad(this,HEALBOT_OPTIONS_BUFFWATCHINCOMBAT)</OnLoad>
|
||||
<OnClick>HealBot_Options_BuffWatchInCombat_OnClick(this)</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
|
||||
<!-- Column 1 (Buffs 1-4) -->
|
||||
<Frame name="HealBot_Options_Buff1" inherits="UIDropDownMenuTemplate" id="1">
|
||||
<Layers>
|
||||
<Layer level="BACKGROUND">
|
||||
<FontString name="HealBot_Options_Buff1Text" text="HEALBOT_OPTIONS_BUFF1" inherits="GameFontNormalSmall">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="-10" y="15"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_BuffWatchInCombat" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="-5" y="-30"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_Options_Buff_OnLoad(this)</OnLoad>
|
||||
</Scripts>
|
||||
</Frame>
|
||||
<CheckButton name="HealBot_Options_Buff1Self" inherits="UICheckButtonTemplate" id="1">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_Buff1" relativePoint="TOPLEFT">
|
||||
<Offset><AbsDimension x="145" y="8"/></Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_Options_BuffSelf_OnLoad(this)</OnLoad>
|
||||
<OnClick>HealBot_Options_BuffSelf_OnClick(this)</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
|
||||
<Frame name="HealBot_Options_Buff2" inherits="UIDropDownMenuTemplate" id="2">
|
||||
<Layers>
|
||||
<Layer level="BACKGROUND">
|
||||
<FontString name="HealBot_Options_Buff2Text" text="HEALBOT_OPTIONS_BUFF2" inherits="GameFontNormalSmall">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="-10" y="15"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_Buff1" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-28"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_Options_Buff_OnLoad(this)</OnLoad>
|
||||
</Scripts>
|
||||
</Frame>
|
||||
<CheckButton name="HealBot_Options_Buff2Self" inherits="UICheckButtonTemplate" id="2">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_Buff2" relativePoint="TOPLEFT">
|
||||
<Offset><AbsDimension x="145" y="8"/></Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_Options_BuffSelf_OnLoad(this)</OnLoad>
|
||||
<OnClick>HealBot_Options_BuffSelf_OnClick(this)</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
|
||||
<Frame name="HealBot_Options_Buff3" inherits="UIDropDownMenuTemplate" id="3">
|
||||
<Layers>
|
||||
<Layer level="BACKGROUND">
|
||||
<FontString name="HealBot_Options_Buff3Text" text="HEALBOT_OPTIONS_BUFF3" inherits="GameFontNormalSmall">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="-10" y="15"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_Buff2" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-28"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_Options_Buff_OnLoad(this)</OnLoad>
|
||||
</Scripts>
|
||||
</Frame>
|
||||
<CheckButton name="HealBot_Options_Buff3Self" inherits="UICheckButtonTemplate" id="3">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_Buff3" relativePoint="TOPLEFT">
|
||||
<Offset><AbsDimension x="145" y="8"/></Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_Options_BuffSelf_OnLoad(this)</OnLoad>
|
||||
<OnClick>HealBot_Options_BuffSelf_OnClick(this)</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
|
||||
<Frame name="HealBot_Options_Buff4" inherits="UIDropDownMenuTemplate" id="4">
|
||||
<Layers>
|
||||
<Layer level="BACKGROUND">
|
||||
<FontString name="HealBot_Options_Buff4Text" text="HEALBOT_OPTIONS_BUFF4" inherits="GameFontNormalSmall">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="-10" y="15"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_Buff3" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-28"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_Options_Buff_OnLoad(this)</OnLoad>
|
||||
</Scripts>
|
||||
</Frame>
|
||||
<CheckButton name="HealBot_Options_Buff4Self" inherits="UICheckButtonTemplate" id="4">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_Buff4" relativePoint="TOPLEFT">
|
||||
<Offset><AbsDimension x="145" y="8"/></Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_Options_BuffSelf_OnLoad(this)</OnLoad>
|
||||
<OnClick>HealBot_Options_BuffSelf_OnClick(this)</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
|
||||
<!-- Column 2 (Buffs 5-8, anchored relative to Buff 1) -->
|
||||
<Frame name="HealBot_Options_Buff5" inherits="UIDropDownMenuTemplate" id="5">
|
||||
<Layers>
|
||||
<Layer level="BACKGROUND">
|
||||
<FontString name="HealBot_Options_Buff5Text" text="HEALBOT_OPTIONS_BUFF5" inherits="GameFontNormalSmall">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="-10" y="15"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_Buff1" relativePoint="TOPRIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="60" y="0"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_Options_Buff_OnLoad(this)</OnLoad>
|
||||
</Scripts>
|
||||
</Frame>
|
||||
<CheckButton name="HealBot_Options_Buff5Self" inherits="UICheckButtonTemplate" id="5">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_Buff5" relativePoint="TOPLEFT">
|
||||
<Offset><AbsDimension x="145" y="8"/></Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_Options_BuffSelf_OnLoad(this)</OnLoad>
|
||||
<OnClick>HealBot_Options_BuffSelf_OnClick(this)</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
|
||||
<Frame name="HealBot_Options_Buff6" inherits="UIDropDownMenuTemplate" id="6">
|
||||
<Layers>
|
||||
<Layer level="BACKGROUND">
|
||||
<FontString name="HealBot_Options_Buff6Text" text="HEALBOT_OPTIONS_BUFF6" inherits="GameFontNormalSmall">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="-10" y="15"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_Buff5" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-28"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_Options_Buff_OnLoad(this)</OnLoad>
|
||||
</Scripts>
|
||||
</Frame>
|
||||
<CheckButton name="HealBot_Options_Buff6Self" inherits="UICheckButtonTemplate" id="6">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_Buff6" relativePoint="TOPLEFT">
|
||||
<Offset><AbsDimension x="145" y="8"/></Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_Options_BuffSelf_OnLoad(this)</OnLoad>
|
||||
<OnClick>HealBot_Options_BuffSelf_OnClick(this)</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
|
||||
<Frame name="HealBot_Options_Buff7" inherits="UIDropDownMenuTemplate" id="7">
|
||||
<Layers>
|
||||
<Layer level="BACKGROUND">
|
||||
<FontString name="HealBot_Options_Buff7Text" text="HEALBOT_OPTIONS_BUFF7" inherits="GameFontNormalSmall">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="-10" y="15"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_Buff6" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-28"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_Options_Buff_OnLoad(this)</OnLoad>
|
||||
</Scripts>
|
||||
</Frame>
|
||||
<CheckButton name="HealBot_Options_Buff7Self" inherits="UICheckButtonTemplate" id="7">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_Buff7" relativePoint="TOPLEFT">
|
||||
<Offset><AbsDimension x="145" y="8"/></Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_Options_BuffSelf_OnLoad(this)</OnLoad>
|
||||
<OnClick>HealBot_Options_BuffSelf_OnClick(this)</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
|
||||
<Frame name="HealBot_Options_Buff8" inherits="UIDropDownMenuTemplate" id="8">
|
||||
<Layers>
|
||||
<Layer level="BACKGROUND">
|
||||
<FontString name="HealBot_Options_Buff8Text" text="HEALBOT_OPTIONS_BUFF8" inherits="GameFontNormalSmall">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="-10" y="15"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_Buff7" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-28"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_Options_Buff_OnLoad(this)</OnLoad>
|
||||
</Scripts>
|
||||
</Frame>
|
||||
<CheckButton name="HealBot_Options_Buff8Self" inherits="UICheckButtonTemplate" id="8">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_Buff8" relativePoint="TOPLEFT">
|
||||
<Offset><AbsDimension x="145" y="8"/></Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_Options_BuffSelf_OnLoad(this)</OnLoad>
|
||||
<OnClick>HealBot_Options_BuffSelf_OnClick(this)</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
</Frames>
|
||||
</Frame>
|
||||
</Ui>
|
||||
|
||||
+75
-26
@@ -1,15 +1,19 @@
|
||||
-- HealBot Options panel file: HealBot_Options_CDC.lua
|
||||
-- Split from original HealBot_Options.lua
|
||||
|
||||
-- HealBot_Options_ShowDebuffWarning_OnLoad: UI handler for OnLoad options panel.
|
||||
function HealBot_Options_ShowDebuffWarning_OnLoad(this,text)
|
||||
getglobal(this:GetName().."Text"):SetText(text);
|
||||
end
|
||||
-- HealBot_Options_ShowDebuffWarning_OnClick: UI handler for OnClick options panel.
|
||||
function HealBot_Options_ShowDebuffWarning_OnClick(this)
|
||||
HealBot_Config.ShowDebuffWarning = this:GetChecked() or 0;
|
||||
end
|
||||
-- HealBot_Options_SoundDebuffWarning_OnLoad: UI handler for OnLoad options panel.
|
||||
function HealBot_Options_SoundDebuffWarning_OnLoad(this,text)
|
||||
getglobal(this:GetName().."Text"):SetText(text);
|
||||
end
|
||||
-- HealBot_Options_SoundDebuffWarning_OnClick: UI handler for OnClick options panel.
|
||||
function HealBot_Options_SoundDebuffWarning_OnClick(this)
|
||||
HealBot_Config.SoundDebuffWarning = this:GetChecked() or 0;
|
||||
if HealBot_Config.SoundDebuffWarning==0 then
|
||||
@@ -22,9 +26,11 @@ function HealBot_Options_SoundDebuffWarning_OnClick(this)
|
||||
HealBot_WarningSound3:Enable();
|
||||
end
|
||||
end
|
||||
-- HealBot_WarningSound_OnLoad: Internal utility: HealBot_WarningSound_OnLoad
|
||||
function HealBot_WarningSound_OnLoad(this,text)
|
||||
getglobal(this:GetName().."Text"):SetText(text);
|
||||
end
|
||||
-- HealBot_WarningSound_OnClick: Click event handler.
|
||||
function HealBot_WarningSound_OnClick(this,id)
|
||||
if HealBot_Config.SoundDebuffPlay>0 then
|
||||
getglobal("HealBot_WarningSound"..HealBot_Config.SoundDebuffPlay):SetChecked(nil);
|
||||
@@ -37,6 +43,7 @@ function HealBot_WarningSound_OnClick(this,id)
|
||||
end
|
||||
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
|
||||
local info = {};
|
||||
@@ -45,23 +52,28 @@ function HealBot_Options_CDCMonitor_DropDown()
|
||||
UIDropDownMenu_AddButton(info);
|
||||
end
|
||||
end
|
||||
-- HealBot_Options_CDCMonitor_Initialize: UI handler for Initialize options panel.
|
||||
function HealBot_Options_CDCMonitor_Initialize()
|
||||
UIDropDownMenu_Initialize(HealBot_Options_CDCMonitor,HealBot_Options_CDCMonitor_DropDown)
|
||||
end
|
||||
-- HealBot_Options_CDCMonitor_Refresh: UI handler for Refresh options panel.
|
||||
function HealBot_Options_CDCMonitor_Refresh(onselect)
|
||||
if not HealBot_Config.CDCMonitor then return end
|
||||
if not onselect then HealBot_Options_CDCMonitor_Initialize() end -- or wrong menu may be used !
|
||||
HealBot_UIDropDownMenu_SetSelectedID(HealBot_Options_CDCMonitor,HealBot_Config.CDCMonitor)
|
||||
end
|
||||
-- HealBot_Options_CDCMonitor_OnLoad: UI handler for OnLoad options panel.
|
||||
function HealBot_Options_CDCMonitor_OnLoad()
|
||||
UIDropDownMenu_Initialize(this, HealBot_Options_CDCMonitor_DropDown)
|
||||
UIDropDownMenu_SetWidth(100, this)
|
||||
end
|
||||
-- HealBot_Options_CDCMonitor_OnSelect: UI handler for OnSelect options panel.
|
||||
function HealBot_Options_CDCMonitor_OnSelect()
|
||||
HealBot_Config.CDCMonitor = this:GetID()
|
||||
HealBot_Options_CDCMonitor_Refresh(true)
|
||||
HealBot_Options_CDCMonitor_Reset()
|
||||
end
|
||||
-- HealBot_Options_CDCMonitor_Reset: UI handler for Reset options panel.
|
||||
function HealBot_Options_CDCMonitor_Reset()
|
||||
|
||||
HealBot_CDCInc[HEALBOT_DRUID] = 0;
|
||||
@@ -73,7 +85,7 @@ function HealBot_Options_CDCMonitor_Reset()
|
||||
HealBot_CDCInc[HEALBOT_SHAMAN] = 0;
|
||||
HealBot_CDCInc[HEALBOT_WARLOCK] = 0;
|
||||
HealBot_CDCInc[HEALBOT_WARRIOR] = 0;
|
||||
if HealBot_Config.CDCMonitor==2 then
|
||||
if HealBot_Config.CDCMonitor==1 then
|
||||
HealBot_CDCInc[HEALBOT_DRUID] = 1;
|
||||
HealBot_CDCInc[HEALBOT_HUNTER] = 1;
|
||||
HealBot_CDCInc[HEALBOT_MAGE] = 1;
|
||||
@@ -83,25 +95,7 @@ function HealBot_Options_CDCMonitor_Reset()
|
||||
HealBot_CDCInc[HEALBOT_SHAMAN] = 1;
|
||||
HealBot_CDCInc[HEALBOT_WARLOCK] = 1;
|
||||
HealBot_CDCInc[HEALBOT_WARRIOR] = 1;
|
||||
elseif HealBot_Config.CDCMonitor==3 then
|
||||
HealBot_CDCInc[HEALBOT_DRUID] = 1;
|
||||
elseif HealBot_Config.CDCMonitor==4 then
|
||||
HealBot_CDCInc[HEALBOT_HUNTER] = 1;
|
||||
elseif HealBot_Config.CDCMonitor==5 then
|
||||
HealBot_CDCInc[HEALBOT_MAGE] = 1;
|
||||
elseif HealBot_Config.CDCMonitor==6 then
|
||||
HealBot_CDCInc[HEALBOT_PALADIN] = 1;
|
||||
elseif HealBot_Config.CDCMonitor==7 then
|
||||
HealBot_CDCInc[HEALBOT_PRIEST] = 1;
|
||||
elseif HealBot_Config.CDCMonitor==8 then
|
||||
HealBot_CDCInc[HEALBOT_ROGUE] = 1;
|
||||
elseif HealBot_Config.CDCMonitor==9 then
|
||||
HealBot_CDCInc[HEALBOT_SHAMAN] = 1;
|
||||
elseif HealBot_Config.CDCMonitor==10 then
|
||||
HealBot_CDCInc[HEALBOT_WARLOCK] = 1;
|
||||
elseif HealBot_Config.CDCMonitor==11 then
|
||||
HealBot_CDCInc[HEALBOT_WARRIOR] = 1;
|
||||
elseif HealBot_Config.CDCMonitor==12 then
|
||||
elseif HealBot_Config.CDCMonitor==2 then
|
||||
HealBot_CDCInc[HEALBOT_DRUID] = HealBot_Config.EmergIncMelee[HEALBOT_DRUID];
|
||||
HealBot_CDCInc[HEALBOT_HUNTER] = HealBot_Config.EmergIncMelee[HEALBOT_HUNTER];
|
||||
HealBot_CDCInc[HEALBOT_MAGE] = HealBot_Config.EmergIncMelee[HEALBOT_MAGE];
|
||||
@@ -111,7 +105,7 @@ function HealBot_Options_CDCMonitor_Reset()
|
||||
HealBot_CDCInc[HEALBOT_SHAMAN] = HealBot_Config.EmergIncMelee[HEALBOT_SHAMAN];
|
||||
HealBot_CDCInc[HEALBOT_WARLOCK] = HealBot_Config.EmergIncMelee[HEALBOT_WARLOCK];
|
||||
HealBot_CDCInc[HEALBOT_WARRIOR] = HealBot_Config.EmergIncMelee[HEALBOT_WARRIOR];
|
||||
elseif HealBot_Config.CDCMonitor==13 then
|
||||
elseif HealBot_Config.CDCMonitor==3 then
|
||||
HealBot_CDCInc[HEALBOT_DRUID] = HealBot_Config.EmergIncRange[HEALBOT_DRUID];
|
||||
HealBot_CDCInc[HEALBOT_HUNTER] = HealBot_Config.EmergIncRange[HEALBOT_HUNTER];
|
||||
HealBot_CDCInc[HEALBOT_MAGE] = HealBot_Config.EmergIncRange[HEALBOT_MAGE];
|
||||
@@ -121,7 +115,7 @@ function HealBot_Options_CDCMonitor_Reset()
|
||||
HealBot_CDCInc[HEALBOT_SHAMAN] = HealBot_Config.EmergIncRange[HEALBOT_SHAMAN];
|
||||
HealBot_CDCInc[HEALBOT_WARLOCK] = HealBot_Config.EmergIncRange[HEALBOT_WARLOCK];
|
||||
HealBot_CDCInc[HEALBOT_WARRIOR] = HealBot_Config.EmergIncRange[HEALBOT_WARRIOR];
|
||||
elseif HealBot_Config.CDCMonitor==14 then
|
||||
elseif HealBot_Config.CDCMonitor==4 then
|
||||
HealBot_CDCInc[HEALBOT_DRUID] = HealBot_Config.EmergIncHealers[HEALBOT_DRUID];
|
||||
HealBot_CDCInc[HEALBOT_HUNTER] = HealBot_Config.EmergIncHealers[HEALBOT_HUNTER];
|
||||
HealBot_CDCInc[HEALBOT_MAGE] = HealBot_Config.EmergIncHealers[HEALBOT_MAGE];
|
||||
@@ -131,7 +125,7 @@ function HealBot_Options_CDCMonitor_Reset()
|
||||
HealBot_CDCInc[HEALBOT_SHAMAN] = HealBot_Config.EmergIncHealers[HEALBOT_SHAMAN];
|
||||
HealBot_CDCInc[HEALBOT_WARLOCK] = HealBot_Config.EmergIncHealers[HEALBOT_WARLOCK];
|
||||
HealBot_CDCInc[HEALBOT_WARRIOR] = HealBot_Config.EmergIncHealers[HEALBOT_WARRIOR];
|
||||
elseif HealBot_Config.CDCMonitor==15 then
|
||||
elseif HealBot_Config.CDCMonitor==5 then
|
||||
HealBot_CDCInc[HEALBOT_DRUID] = HealBot_Config.EmergIncCustom[HEALBOT_DRUID];
|
||||
HealBot_CDCInc[HEALBOT_HUNTER] = HealBot_Config.EmergIncCustom[HEALBOT_HUNTER];
|
||||
HealBot_CDCInc[HEALBOT_MAGE] = HealBot_Config.EmergIncCustom[HEALBOT_MAGE];
|
||||
@@ -145,10 +139,34 @@ function HealBot_Options_CDCMonitor_Reset()
|
||||
|
||||
HealBot_Action_PartyChanged()
|
||||
end
|
||||
-- HealBot_Options_GetDebuffSpells_List: UI handler for List options panel.
|
||||
function HealBot_Options_GetDebuffSpells_List(class)
|
||||
local DebuffSpells = HealBot_Debuff_Spells[class];
|
||||
return DebuffSpells;
|
||||
end
|
||||
|
||||
-- HealBot_Options_CDCShowAllDebuffs_OnLoad: UI handler for OnLoad options panel.
|
||||
function HealBot_Options_CDCShowAllDebuffs_OnLoad(this,text)
|
||||
getglobal(this:GetName().."Text"):SetText(text);
|
||||
if HealBot_Config.CDCShowAllDebuffs == nil then HealBot_Config.CDCShowAllDebuffs = 0; end
|
||||
if HealBot_Config.CDCShowAllDebuffs == 1 then
|
||||
this:SetChecked(1);
|
||||
else
|
||||
this:SetChecked(0);
|
||||
end
|
||||
end
|
||||
|
||||
-- HealBot_Options_CDCShowAllDebuffs_OnClick: UI handler for OnClick options panel.
|
||||
function HealBot_Options_CDCShowAllDebuffs_OnClick(this)
|
||||
if this:GetChecked() then
|
||||
HealBot_Config.CDCShowAllDebuffs = 1;
|
||||
else
|
||||
HealBot_Config.CDCShowAllDebuffs = 0;
|
||||
end
|
||||
HealBot_RecalcParty();
|
||||
end
|
||||
|
||||
-- HealBot_Options_CDCButLeft_DropDown: UI handler for DropDown options panel.
|
||||
function HealBot_Options_CDCButLeft_DropDown()
|
||||
local classEN=HealBot_UnitClass("player")
|
||||
if classEN=="PRIEST" or classEN=="DRUID" or classEN=="PALADIN" or classEN=="SHAMAN" then
|
||||
@@ -169,6 +187,7 @@ function HealBot_Options_CDCButLeft_DropDown()
|
||||
end
|
||||
end
|
||||
end
|
||||
-- HealBot_Options_CDCButRight_DropDown: UI handler for DropDown options panel.
|
||||
function HealBot_Options_CDCButRight_DropDown()
|
||||
local classEN=HealBot_UnitClass("player")
|
||||
if classEN=="PRIEST" or classEN=="DRUID" or classEN=="PALADIN" or classEN=="SHAMAN" then
|
||||
@@ -189,12 +208,15 @@ function HealBot_Options_CDCButRight_DropDown()
|
||||
end
|
||||
end
|
||||
end
|
||||
-- HealBot_Options_CDCButLeft_Initialize: UI handler for Initialize options panel.
|
||||
function HealBot_Options_CDCButLeft_Initialize()
|
||||
UIDropDownMenu_Initialize(HealBot_Options_CDCButLeft,HealBot_Options_CDCButLeft_DropDown)
|
||||
end
|
||||
-- HealBot_Options_CDCButRight_Initialize: UI handler for Initialize options panel.
|
||||
function HealBot_Options_CDCButRight_Initialize()
|
||||
UIDropDownMenu_Initialize(HealBot_Options_CDCButRight,HealBot_Options_CDCButRight_DropDown)
|
||||
end
|
||||
-- HealBot_Options_CDCButLeft_Refresh: UI handler for Refresh options panel.
|
||||
function HealBot_Options_CDCButLeft_Refresh(onselect)
|
||||
local set_id=1;
|
||||
local class=UnitClass("Player");
|
||||
@@ -202,6 +224,7 @@ function HealBot_Options_CDCButLeft_Refresh(onselect)
|
||||
set_id = HealBot_Config.Debuff_Left[class];
|
||||
HealBot_UIDropDownMenu_SetSelectedID(HealBot_Options_CDCButLeft,set_id)
|
||||
end
|
||||
-- HealBot_Options_CDCButRight_Refresh: UI handler for Refresh options panel.
|
||||
function HealBot_Options_CDCButRight_Refresh(onselect)
|
||||
local set_id;
|
||||
local class=UnitClass("Player");
|
||||
@@ -209,14 +232,18 @@ function HealBot_Options_CDCButRight_Refresh(onselect)
|
||||
set_id = HealBot_Config.Debuff_Right[class];
|
||||
HealBot_UIDropDownMenu_SetSelectedID(HealBot_Options_CDCButRight,set_id)
|
||||
end
|
||||
-- HealBot_Options_CDCButLeft_OnLoad: UI handler for OnLoad options panel.
|
||||
function HealBot_Options_CDCButLeft_OnLoad()
|
||||
UIDropDownMenu_Initialize(this, HealBot_Options_CDCButLeft_DropDown)
|
||||
UIDropDownMenu_SetWidth(140, this)
|
||||
end
|
||||
-- HealBot_Options_CDCButRight_OnLoad: UI handler for OnLoad options panel.
|
||||
function HealBot_Options_CDCButRight_OnLoad()
|
||||
UIDropDownMenu_Initialize(this, HealBot_Options_CDCButRight_DropDown)
|
||||
UIDropDownMenu_SetWidth(140, this)
|
||||
end
|
||||
|
||||
-- HealBot_Options_CDCButLeft_OnSelect: UI handler for OnSelect options panel.
|
||||
function HealBot_Options_CDCButLeft_OnSelect()
|
||||
local class=UnitClass("Player");
|
||||
HealBot_Config.Debuff_Left[class] = this:GetID();
|
||||
@@ -228,6 +255,7 @@ function HealBot_Options_CDCButLeft_OnSelect()
|
||||
HealBot_DebuffPriority = HealBot_Debuff_Types[HealBot_Options_CDCButLeftText:GetText()];
|
||||
HealBot_Options_Debuff_Reset()
|
||||
end
|
||||
-- HealBot_Options_CDCButRight_OnSelect: UI handler for OnSelect options panel.
|
||||
function HealBot_Options_CDCButRight_OnSelect()
|
||||
local class=UnitClass("Player");
|
||||
HealBot_Config.Debuff_Right[class] = this:GetID();
|
||||
@@ -238,33 +266,54 @@ function HealBot_Options_CDCButRight_OnSelect()
|
||||
end
|
||||
HealBot_Options_Debuff_Reset()
|
||||
end
|
||||
-- HealBot_Options_CDC_SetCombo: UI handler for SetCombo options panel.
|
||||
function HealBot_Options_CDC_SetCombo(spell, button, class)
|
||||
local combo = HealBot_Config.KeyCombo[class]
|
||||
combo["Alt"..button] = spell
|
||||
HealBot_Options_KeyCombo_Change()
|
||||
end
|
||||
-- HealBot_Options_Debuff_Reset: Restores default debuff tracking options.
|
||||
function HealBot_Options_Debuff_Reset()
|
||||
local classEN=HealBot_UnitClass("player")
|
||||
if classEN=="PRIEST" or classEN=="DRUID" or classEN=="PALADIN" or classEN=="SHAMAN" then
|
||||
local spell = HealBot_Config.CDCLeftText[UnitClass("player")];
|
||||
HealBot_DebuffWatch = {[HEALBOT_DISEASE_en]=false, [HEALBOT_MAGIC_en]=false, [HEALBOT_POISON_en]=false, [HEALBOT_CURSE_en]=false }
|
||||
if spell ~= "None" then
|
||||
|
||||
-- Automatically track all curable debuffs out of the box
|
||||
if classEN == "PRIEST" then
|
||||
HealBot_DebuffWatch[HEALBOT_MAGIC_en] = true
|
||||
HealBot_DebuffWatch[HEALBOT_DISEASE_en] = true
|
||||
elseif classEN == "DRUID" then
|
||||
HealBot_DebuffWatch[HEALBOT_CURSE_en] = true
|
||||
HealBot_DebuffWatch[HEALBOT_POISON_en] = true
|
||||
elseif classEN == "PALADIN" then
|
||||
HealBot_DebuffWatch[HEALBOT_MAGIC_en] = true
|
||||
HealBot_DebuffWatch[HEALBOT_POISON_en] = true
|
||||
HealBot_DebuffWatch[HEALBOT_DISEASE_en] = true
|
||||
elseif classEN == "SHAMAN" then
|
||||
HealBot_DebuffWatch[HEALBOT_POISON_en] = true
|
||||
HealBot_DebuffWatch[HEALBOT_DISEASE_en] = true
|
||||
end
|
||||
|
||||
local spell = HealBot_Config.CDCLeftText[UnitClass("player")];
|
||||
if spell and spell ~= "None" and HealBot_Debuff_Types[spell] then
|
||||
table.foreach(HealBot_Debuff_Types[spell], function (index,debuff)
|
||||
HealBot_DebuffWatch[debuff]=true;
|
||||
end)
|
||||
end
|
||||
spell = HealBot_Config.CDCRightText[UnitClass("player")];
|
||||
if spell ~= "None" then
|
||||
if spell and spell ~= "None" and HealBot_Debuff_Types[spell] then
|
||||
table.foreach(HealBot_Debuff_Types[spell], function (index,debuff)
|
||||
HealBot_DebuffWatch[debuff]=true;
|
||||
end)
|
||||
end
|
||||
end
|
||||
end
|
||||
-- HealBot_Colorpick_OnClick: Opens color picker for debuff colors.
|
||||
function HealBot_Colorpick_OnClick(CDCType)
|
||||
HealBot_ColourObjWaiting=CDCType;
|
||||
HealBot_UseColourPick(HealBot_Config.CDCBarColour[CDCType].R,HealBot_Config.CDCBarColour[CDCType].G,HealBot_Config.CDCBarColour[CDCType].B, nil)
|
||||
end
|
||||
-- HealBot_SetCDCBarColours: Internal utility: HealBot_SetCDCBarColours
|
||||
function HealBot_SetCDCBarColours()
|
||||
HealBot_DiseaseColorpick:SetStatusBarColor(HealBot_Config.CDCBarColour[HEALBOT_DISEASE_en].R,
|
||||
HealBot_Config.CDCBarColour[HEALBOT_DISEASE_en].G,
|
||||
|
||||
+44
-48
@@ -7,9 +7,9 @@
|
||||
|
||||
<Frame name="HealBot_Options_CDCMonitor" inherits="UIDropDownMenuTemplate" id="1">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Anchor point="TOP">
|
||||
<Offset>
|
||||
<AbsDimension x="170" y="-30" />
|
||||
<AbsDimension x="40" y="-30" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
@@ -31,13 +31,21 @@
|
||||
</Scripts>
|
||||
</Frame>
|
||||
|
||||
<Frame name="HealBot_Options_CureDispelCleanse" inherits="OptionFrameBoxTemplate">
|
||||
<CheckButton name="HealBot_Options_CDCShowAllDebuffs" inherits="OptionsCheckButtonTemplate">
|
||||
<Anchors>
|
||||
<Anchor point="LEFT" relativeTo="HealBot_Options_CDCMonitor" relativePoint="RIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="-15" y="3" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>
|
||||
this:SetBackdropBorderColor(0.4, 0.4, 0.4);
|
||||
this:SetBackdropColor(0, 0, 0, 0);
|
||||
</OnLoad>
|
||||
<OnLoad>HealBot_Options_CDCShowAllDebuffs_OnLoad(this,HEALBOT_OPTIONS_CDCSHOWALLDEBUFFS)</OnLoad>
|
||||
<OnClick>HealBot_Options_CDCShowAllDebuffs_OnClick(this)</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
|
||||
<Frame name="HealBot_Options_CureDispelCleanse">
|
||||
<Size>
|
||||
<AbsDimension y="110"/>
|
||||
</Size>
|
||||
@@ -57,9 +65,9 @@
|
||||
<Layer level="BACKGROUND">
|
||||
<FontString name="HealBot_CDCBut_Text" text="HEALBOT_OPTIONS_CDCBUTTONS" inherits="GameFontNormalSmall">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Anchor point="TOP">
|
||||
<Offset>
|
||||
<AbsDimension x="105" y="-12" />
|
||||
<AbsDimension x="0" y="-12" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
@@ -69,9 +77,9 @@
|
||||
</Frame>
|
||||
<Frame name="HealBot_Options_CDCButLeft" inherits="UIDropDownMenuTemplate" id="1">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_CureDispelCleanse" relativePoint="TOPLEFT">
|
||||
<Anchor point="TOP" relativeTo="HealBot_Options_CureDispelCleanse" relativePoint="TOP">
|
||||
<Offset>
|
||||
<AbsDimension x="100" y="-35" />
|
||||
<AbsDimension x="40" y="-35" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
@@ -79,9 +87,9 @@
|
||||
<Layer level="OVERLAY">
|
||||
<FontString inherits="GameFontNormalSmall" text="HEALBOT_OPTIONS_CDCLEFT">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_CureDispelCleanse" relativePoint="TOPLEFT">
|
||||
<Anchor point="RIGHT" relativeTo="HealBot_Options_CDCButLeft" relativePoint="LEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="40" y="-42"/>
|
||||
<AbsDimension x="-5" y="3"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
@@ -96,9 +104,9 @@
|
||||
</Frame>
|
||||
<Frame name="HealBot_Options_CDCButRight" inherits="UIDropDownMenuTemplate" id="1">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_CureDispelCleanse" relativePoint="TOPLEFT">
|
||||
<Anchor point="TOP" relativeTo="HealBot_Options_CureDispelCleanse" relativePoint="TOP">
|
||||
<Offset>
|
||||
<AbsDimension x="100" y="-67" />
|
||||
<AbsDimension x="40" y="-67" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
@@ -106,9 +114,9 @@
|
||||
<Layer level="OVERLAY">
|
||||
<FontString inherits="GameFontNormalSmall" text="HEALBOT_OPTIONS_CDCRIGHT">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_CureDispelCleanse" relativePoint="TOPLEFT">
|
||||
<Anchor point="RIGHT" relativeTo="HealBot_Options_CDCButRight" relativePoint="LEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="40" y="-74"/>
|
||||
<AbsDimension x="-5" y="3"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
@@ -122,13 +130,7 @@
|
||||
</Scripts>
|
||||
</Frame>
|
||||
|
||||
<Frame name="HealBot_Options_CureDispelCleanseCol" inherits="OptionFrameBoxTemplate">
|
||||
<Scripts>
|
||||
<OnLoad>
|
||||
this:SetBackdropBorderColor(0.4, 0.4, 0.4);
|
||||
this:SetBackdropColor(0, 0, 0, 0);
|
||||
</OnLoad>
|
||||
</Scripts>
|
||||
<Frame name="HealBot_Options_CureDispelCleanseCol">
|
||||
<Size>
|
||||
<AbsDimension y="95"/>
|
||||
</Size>
|
||||
@@ -148,9 +150,9 @@
|
||||
<Layer level="BACKGROUND">
|
||||
<FontString name="HealBot_CDCCol_Text" text="HEALBOT_OPTIONS_CDCBARS" inherits="GameFontNormalSmall">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Anchor point="TOP">
|
||||
<Offset>
|
||||
<AbsDimension x="98" y="-12" />
|
||||
<AbsDimension x="0" y="-12" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
@@ -163,9 +165,9 @@
|
||||
<AbsDimension x="130" y="20"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="BOTTOM" relativeTo="HealBot_Options_CureDispelCleanseCol" relativePoint="TOPLEFT">
|
||||
<Anchor point="TOPRIGHT" relativeTo="HealBot_Options_CureDispelCleanseCol" relativePoint="TOP">
|
||||
<Offset>
|
||||
<AbsDimension x="81" y="-55"/>
|
||||
<AbsDimension x="-2" y="-35"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
@@ -178,9 +180,9 @@
|
||||
<AbsDimension x="130" y="20"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="BOTTOM" relativeTo="HealBot_Options_CureDispelCleanseCol" relativePoint="TOPLEFT">
|
||||
<Anchor point="TOPRIGHT" relativeTo="HealBot_Options_CureDispelCleanseCol" relativePoint="TOP">
|
||||
<Offset>
|
||||
<AbsDimension x="81" y="-55"/>
|
||||
<AbsDimension x="-2" y="-35"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
@@ -255,9 +257,9 @@
|
||||
<AbsDimension x="130" y="20"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="BOTTOM" relativeTo="HealBot_DiseaseColorpick" relativePoint="TOPLEFT">
|
||||
<Anchor point="TOPRIGHT" relativeTo="HealBot_Options_CureDispelCleanseCol" relativePoint="TOP">
|
||||
<Offset>
|
||||
<AbsDimension x="65" y="-45"/>
|
||||
<AbsDimension x="-2" y="-65"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
@@ -270,9 +272,9 @@
|
||||
<AbsDimension x="130" y="20"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="BOTTOM" relativeTo="HealBot_DiseaseColorpick" relativePoint="TOPLEFT">
|
||||
<Anchor point="TOPRIGHT" relativeTo="HealBot_Options_CureDispelCleanseCol" relativePoint="TOP">
|
||||
<Offset>
|
||||
<AbsDimension x="65" y="-45"/>
|
||||
<AbsDimension x="-2" y="-65"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
@@ -342,13 +344,7 @@
|
||||
<BarColor r="0" g="1" b="0"/>
|
||||
</StatusBar>
|
||||
|
||||
<Frame name="HealBot_Options_CureDispelCleanseWarn" inherits="OptionFrameBoxTemplate">
|
||||
<Scripts>
|
||||
<OnLoad>
|
||||
this:SetBackdropBorderColor(0.4, 0.4, 0.4);
|
||||
this:SetBackdropColor(0, 0, 0, 0);
|
||||
</OnLoad>
|
||||
</Scripts>
|
||||
<Frame name="HealBot_Options_CureDispelCleanseWarn">
|
||||
<Size>
|
||||
<AbsDimension y="120"/>
|
||||
</Size>
|
||||
@@ -368,9 +364,9 @@
|
||||
<Layer level="BACKGROUND">
|
||||
<FontString name="HealBot_CDCWarn_Text" text="HEALBOT_OPTIONS_CDCWARNINGS" inherits="GameFontNormalSmall">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Anchor point="TOP">
|
||||
<Offset>
|
||||
<AbsDimension x="98" y="-12" />
|
||||
<AbsDimension x="0" y="-12" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
@@ -380,9 +376,9 @@
|
||||
</Frame>
|
||||
<CheckButton name="HealBot_Options_ShowDebuffWarning" inherits="OptionsCheckButtonTemplate">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_CureDispelCleanseWarn" relativePoint="BOTTOMLEFT">
|
||||
<Anchor point="TOP" relativeTo="HealBot_Options_CureDispelCleanseWarn" relativePoint="TOP">
|
||||
<Offset>
|
||||
<AbsDimension x="25" y="90" />
|
||||
<AbsDimension x="-90" y="-35" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
@@ -395,7 +391,7 @@
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_ShowDebuffWarning" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="5" />
|
||||
<AbsDimension x="0" y="-5" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
@@ -407,9 +403,9 @@
|
||||
|
||||
<CheckButton name="HealBot_WarningSound1" inherits="SendMailRadioButtonTemplate" id="1">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_SoundDebuffWarning" relativePoint="TOPLEFT">
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_SoundDebuffWarning" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="25" y="-30"/>
|
||||
<AbsDimension x="25" y="-5"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
-- HealBot Options panel file: HealBot_Options_Chat.lua
|
||||
-- Split from original HealBot_Options.lua
|
||||
|
||||
-- HealBot_Options_ChatMsg_Channel_OnClick: UI handler for OnClick options panel.
|
||||
function HealBot_Options_ChatMsg_Channel_OnClick(id, buttonFrame)
|
||||
if not HealBot_Config.ChatMessages then HealBot_Config.ChatMessages = {} end
|
||||
if not HealBot_Config.ChatMessages[id] then
|
||||
@@ -26,6 +27,7 @@ function HealBot_Options_ChatMsg_Channel_OnClick(id, buttonFrame)
|
||||
buttonFrame:SetText(nextChan)
|
||||
end
|
||||
|
||||
-- HealBot_Options_SetChatMessages: UI handler for SetChatMessages options panel.
|
||||
function HealBot_Options_SetChatMessages()
|
||||
if not HealBot_Config.ChatMessages then
|
||||
HealBot_Config.ChatMessages = {}
|
||||
|
||||
+288
-284
@@ -2,288 +2,292 @@
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://www.blizzard.com/wow/ui/ ..\FrameXML\UI.xsd">
|
||||
<Script file="HealBot_Options_Chat.lua" />
|
||||
<Frame name="HealBot_Options_Panel7" parent="HealBot_Options" hidden="true" setAllPoints="true">
|
||||
<Frames>
|
||||
<!-- Chat Message 1 -->
|
||||
<EditBox name="HealBot_Options_ChatMsg1_Spell" inherits="InputBoxTemplate" autoFocus="false">
|
||||
<Size>
|
||||
<AbsDimension x="130" y="20"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="25" y="-30" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnTextChanged>
|
||||
if HealBot_Config.ChatMessages then
|
||||
HealBot_Config.ChatMessages[1].Spell = this:GetText();
|
||||
end
|
||||
</OnTextChanged>
|
||||
</Scripts>
|
||||
</EditBox>
|
||||
<Button name="HealBot_Options_ChatMsg1_Channel" inherits="UIPanelButtonTemplate" text="None">
|
||||
<Size>
|
||||
<AbsDimension x="80" y="22"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="LEFT" relativeTo="HealBot_Options_ChatMsg1_Spell" relativePoint="RIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="15" y="0"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnClick>
|
||||
HealBot_Options_ChatMsg_Channel_OnClick(1, this);
|
||||
</OnClick>
|
||||
</Scripts>
|
||||
</Button>
|
||||
<EditBox name="HealBot_Options_ChatMsg1_Text" inherits="InputBoxTemplate" autoFocus="false">
|
||||
<Size>
|
||||
<AbsDimension x="300" y="20"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_ChatMsg1_Spell" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-5"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnTextChanged>
|
||||
if HealBot_Config.ChatMessages then
|
||||
HealBot_Config.ChatMessages[1].Message = this:GetText();
|
||||
end
|
||||
</OnTextChanged>
|
||||
</Scripts>
|
||||
</EditBox>
|
||||
<!-- Chat Message 2 -->
|
||||
<EditBox name="HealBot_Options_ChatMsg2_Spell" inherits="InputBoxTemplate" autoFocus="false">
|
||||
<Size>
|
||||
<AbsDimension x="130" y="20"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="25" y="-90" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnTextChanged>
|
||||
if HealBot_Config.ChatMessages then
|
||||
HealBot_Config.ChatMessages[2].Spell = this:GetText();
|
||||
end
|
||||
</OnTextChanged>
|
||||
</Scripts>
|
||||
</EditBox>
|
||||
<Button name="HealBot_Options_ChatMsg2_Channel" inherits="UIPanelButtonTemplate" text="None">
|
||||
<Size>
|
||||
<AbsDimension x="80" y="22"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="LEFT" relativeTo="HealBot_Options_ChatMsg2_Spell" relativePoint="RIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="15" y="0"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnClick>
|
||||
HealBot_Options_ChatMsg_Channel_OnClick(2, this);
|
||||
</OnClick>
|
||||
</Scripts>
|
||||
</Button>
|
||||
<EditBox name="HealBot_Options_ChatMsg2_Text" inherits="InputBoxTemplate" autoFocus="false">
|
||||
<Size>
|
||||
<AbsDimension x="300" y="20"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_ChatMsg2_Spell" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-5"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnTextChanged>
|
||||
if HealBot_Config.ChatMessages then
|
||||
HealBot_Config.ChatMessages[2].Message = this:GetText();
|
||||
end
|
||||
</OnTextChanged>
|
||||
</Scripts>
|
||||
</EditBox>
|
||||
<!-- Chat Message 3 -->
|
||||
<EditBox name="HealBot_Options_ChatMsg3_Spell" inherits="InputBoxTemplate" autoFocus="false">
|
||||
<Size>
|
||||
<AbsDimension x="130" y="20"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="25" y="-150" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnTextChanged>
|
||||
if HealBot_Config.ChatMessages then
|
||||
HealBot_Config.ChatMessages[3].Spell = this:GetText();
|
||||
end
|
||||
</OnTextChanged>
|
||||
</Scripts>
|
||||
</EditBox>
|
||||
<Button name="HealBot_Options_ChatMsg3_Channel" inherits="UIPanelButtonTemplate" text="None">
|
||||
<Size>
|
||||
<AbsDimension x="80" y="22"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="LEFT" relativeTo="HealBot_Options_ChatMsg3_Spell" relativePoint="RIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="15" y="0"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnClick>
|
||||
HealBot_Options_ChatMsg_Channel_OnClick(3, this);
|
||||
</OnClick>
|
||||
</Scripts>
|
||||
</Button>
|
||||
<EditBox name="HealBot_Options_ChatMsg3_Text" inherits="InputBoxTemplate" autoFocus="false">
|
||||
<Size>
|
||||
<AbsDimension x="300" y="20"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_ChatMsg3_Spell" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-5"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnTextChanged>
|
||||
if HealBot_Config.ChatMessages then
|
||||
HealBot_Config.ChatMessages[3].Message = this:GetText();
|
||||
end
|
||||
</OnTextChanged>
|
||||
</Scripts>
|
||||
</EditBox>
|
||||
<!-- Chat Message 4 -->
|
||||
<EditBox name="HealBot_Options_ChatMsg4_Spell" inherits="InputBoxTemplate" autoFocus="false">
|
||||
<Size>
|
||||
<AbsDimension x="130" y="20"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="25" y="-210" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnTextChanged>
|
||||
if HealBot_Config.ChatMessages then
|
||||
HealBot_Config.ChatMessages[4].Spell = this:GetText();
|
||||
end
|
||||
</OnTextChanged>
|
||||
</Scripts>
|
||||
</EditBox>
|
||||
<Button name="HealBot_Options_ChatMsg4_Channel" inherits="UIPanelButtonTemplate" text="None">
|
||||
<Size>
|
||||
<AbsDimension x="80" y="22"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="LEFT" relativeTo="HealBot_Options_ChatMsg4_Spell" relativePoint="RIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="15" y="0"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnClick>
|
||||
HealBot_Options_ChatMsg_Channel_OnClick(4, this);
|
||||
</OnClick>
|
||||
</Scripts>
|
||||
</Button>
|
||||
<EditBox name="HealBot_Options_ChatMsg4_Text" inherits="InputBoxTemplate" autoFocus="false">
|
||||
<Size>
|
||||
<AbsDimension x="300" y="20"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_ChatMsg4_Spell" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-5"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnTextChanged>
|
||||
if HealBot_Config.ChatMessages then
|
||||
HealBot_Config.ChatMessages[4].Message = this:GetText();
|
||||
end
|
||||
</OnTextChanged>
|
||||
</Scripts>
|
||||
</EditBox>
|
||||
<!-- Chat Message 5 -->
|
||||
<EditBox name="HealBot_Options_ChatMsg5_Spell" inherits="InputBoxTemplate" autoFocus="false">
|
||||
<Size>
|
||||
<AbsDimension x="130" y="20"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="25" y="-270" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnTextChanged>
|
||||
if HealBot_Config.ChatMessages then
|
||||
HealBot_Config.ChatMessages[5].Spell = this:GetText();
|
||||
end
|
||||
</OnTextChanged>
|
||||
</Scripts>
|
||||
</EditBox>
|
||||
<Button name="HealBot_Options_ChatMsg5_Channel" inherits="UIPanelButtonTemplate" text="None">
|
||||
<Size>
|
||||
<AbsDimension x="80" y="22"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="LEFT" relativeTo="HealBot_Options_ChatMsg5_Spell" relativePoint="RIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="15" y="0"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnClick>
|
||||
HealBot_Options_ChatMsg_Channel_OnClick(5, this);
|
||||
</OnClick>
|
||||
</Scripts>
|
||||
</Button>
|
||||
<EditBox name="HealBot_Options_ChatMsg5_Text" inherits="InputBoxTemplate" autoFocus="false">
|
||||
<Size>
|
||||
<AbsDimension x="300" y="20"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_ChatMsg5_Spell" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-5"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnTextChanged>
|
||||
if HealBot_Config.ChatMessages then
|
||||
HealBot_Config.ChatMessages[5].Message = this:GetText();
|
||||
end
|
||||
</OnTextChanged>
|
||||
</Scripts>
|
||||
</EditBox>
|
||||
</Frames>
|
||||
</Frame>
|
||||
<Frame name="HealBot_Options_Panel7" parent="HealBot_Options" hidden="true" setAllPoints="true">
|
||||
<Frames>
|
||||
<!-- Chat Message 1 -->
|
||||
<EditBox name="HealBot_Options_ChatMsg1_Spell" inherits="InputBoxTemplate" autoFocus="false">
|
||||
<Size>
|
||||
<AbsDimension x="130" y="20"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="120" y="-30"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnTextChanged>
|
||||
if HealBot_Config.ChatMessages then
|
||||
HealBot_Config.ChatMessages[1].Spell = this:GetText();
|
||||
end
|
||||
</OnTextChanged>
|
||||
</Scripts>
|
||||
</EditBox>
|
||||
<Button name="HealBot_Options_ChatMsg1_Channel" inherits="UIPanelButtonTemplate" text="None">
|
||||
<Size>
|
||||
<AbsDimension x="80" y="22"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="LEFT" relativeTo="HealBot_Options_ChatMsg1_Spell" relativePoint="RIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="15" y="0"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnClick>
|
||||
HealBot_Options_ChatMsg_Channel_OnClick(1, this);
|
||||
</OnClick>
|
||||
</Scripts>
|
||||
</Button>
|
||||
<EditBox name="HealBot_Options_ChatMsg1_Text" inherits="InputBoxTemplate" autoFocus="false">
|
||||
<Size>
|
||||
<AbsDimension x="300" y="20"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_ChatMsg1_Spell" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-5"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnTextChanged>
|
||||
if HealBot_Config.ChatMessages then
|
||||
HealBot_Config.ChatMessages[1].Message = this:GetText();
|
||||
end
|
||||
</OnTextChanged>
|
||||
</Scripts>
|
||||
</EditBox>
|
||||
|
||||
<!-- Chat Message 2 -->
|
||||
<EditBox name="HealBot_Options_ChatMsg2_Spell" inherits="InputBoxTemplate" autoFocus="false">
|
||||
<Size>
|
||||
<AbsDimension x="130" y="20"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_ChatMsg1_Text" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-12"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnTextChanged>
|
||||
if HealBot_Config.ChatMessages then
|
||||
HealBot_Config.ChatMessages[2].Spell = this:GetText();
|
||||
end
|
||||
</OnTextChanged>
|
||||
</Scripts>
|
||||
</EditBox>
|
||||
<Button name="HealBot_Options_ChatMsg2_Channel" inherits="UIPanelButtonTemplate" text="None">
|
||||
<Size>
|
||||
<AbsDimension x="80" y="22"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="LEFT" relativeTo="HealBot_Options_ChatMsg2_Spell" relativePoint="RIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="15" y="0"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnClick>
|
||||
HealBot_Options_ChatMsg_Channel_OnClick(2, this);
|
||||
</OnClick>
|
||||
</Scripts>
|
||||
</Button>
|
||||
<EditBox name="HealBot_Options_ChatMsg2_Text" inherits="InputBoxTemplate" autoFocus="false">
|
||||
<Size>
|
||||
<AbsDimension x="300" y="20"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_ChatMsg2_Spell" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-5"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnTextChanged>
|
||||
if HealBot_Config.ChatMessages then
|
||||
HealBot_Config.ChatMessages[2].Message = this:GetText();
|
||||
end
|
||||
</OnTextChanged>
|
||||
</Scripts>
|
||||
</EditBox>
|
||||
|
||||
<!-- Chat Message 3 -->
|
||||
<EditBox name="HealBot_Options_ChatMsg3_Spell" inherits="InputBoxTemplate" autoFocus="false">
|
||||
<Size>
|
||||
<AbsDimension x="130" y="20"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_ChatMsg2_Text" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-12"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnTextChanged>
|
||||
if HealBot_Config.ChatMessages then
|
||||
HealBot_Config.ChatMessages[3].Spell = this:GetText();
|
||||
end
|
||||
</OnTextChanged>
|
||||
</Scripts>
|
||||
</EditBox>
|
||||
<Button name="HealBot_Options_ChatMsg3_Channel" inherits="UIPanelButtonTemplate" text="None">
|
||||
<Size>
|
||||
<AbsDimension x="80" y="22"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="LEFT" relativeTo="HealBot_Options_ChatMsg3_Spell" relativePoint="RIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="15" y="0"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnClick>
|
||||
HealBot_Options_ChatMsg_Channel_OnClick(3, this);
|
||||
</OnClick>
|
||||
</Scripts>
|
||||
</Button>
|
||||
<EditBox name="HealBot_Options_ChatMsg3_Text" inherits="InputBoxTemplate" autoFocus="false">
|
||||
<Size>
|
||||
<AbsDimension x="300" y="20"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_ChatMsg3_Spell" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-5"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnTextChanged>
|
||||
if HealBot_Config.ChatMessages then
|
||||
HealBot_Config.ChatMessages[3].Message = this:GetText();
|
||||
end
|
||||
</OnTextChanged>
|
||||
</Scripts>
|
||||
</EditBox>
|
||||
|
||||
<!-- Chat Message 4 -->
|
||||
<EditBox name="HealBot_Options_ChatMsg4_Spell" inherits="InputBoxTemplate" autoFocus="false">
|
||||
<Size>
|
||||
<AbsDimension x="130" y="20"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_ChatMsg3_Text" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-12"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnTextChanged>
|
||||
if HealBot_Config.ChatMessages then
|
||||
HealBot_Config.ChatMessages[4].Spell = this:GetText();
|
||||
end
|
||||
</OnTextChanged>
|
||||
</Scripts>
|
||||
</EditBox>
|
||||
<Button name="HealBot_Options_ChatMsg4_Channel" inherits="UIPanelButtonTemplate" text="None">
|
||||
<Size>
|
||||
<AbsDimension x="80" y="22"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="LEFT" relativeTo="HealBot_Options_ChatMsg4_Spell" relativePoint="RIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="15" y="0"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnClick>
|
||||
HealBot_Options_ChatMsg_Channel_OnClick(4, this);
|
||||
</OnClick>
|
||||
</Scripts>
|
||||
</Button>
|
||||
<EditBox name="HealBot_Options_ChatMsg4_Text" inherits="InputBoxTemplate" autoFocus="false">
|
||||
<Size>
|
||||
<AbsDimension x="300" y="20"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_ChatMsg4_Spell" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-5"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnTextChanged>
|
||||
if HealBot_Config.ChatMessages then
|
||||
HealBot_Config.ChatMessages[4].Message = this:GetText();
|
||||
end
|
||||
</OnTextChanged>
|
||||
</Scripts>
|
||||
</EditBox>
|
||||
|
||||
<!-- Chat Message 5 -->
|
||||
<EditBox name="HealBot_Options_ChatMsg5_Spell" inherits="InputBoxTemplate" autoFocus="false">
|
||||
<Size>
|
||||
<AbsDimension x="130" y="20"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_ChatMsg4_Text" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-12"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnTextChanged>
|
||||
if HealBot_Config.ChatMessages then
|
||||
HealBot_Config.ChatMessages[5].Spell = this:GetText();
|
||||
end
|
||||
</OnTextChanged>
|
||||
</Scripts>
|
||||
</EditBox>
|
||||
<Button name="HealBot_Options_ChatMsg5_Channel" inherits="UIPanelButtonTemplate" text="None">
|
||||
<Size>
|
||||
<AbsDimension x="80" y="22"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="LEFT" relativeTo="HealBot_Options_ChatMsg5_Spell" relativePoint="RIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="15" y="0"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnClick>
|
||||
HealBot_Options_ChatMsg_Channel_OnClick(5, this);
|
||||
</OnClick>
|
||||
</Scripts>
|
||||
</Button>
|
||||
<EditBox name="HealBot_Options_ChatMsg5_Text" inherits="InputBoxTemplate" autoFocus="false">
|
||||
<Size>
|
||||
<AbsDimension x="300" y="20"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_ChatMsg5_Spell" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-5"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnTextChanged>
|
||||
if HealBot_Config.ChatMessages then
|
||||
HealBot_Config.ChatMessages[5].Message = this:GetText();
|
||||
end
|
||||
</OnTextChanged>
|
||||
</Scripts>
|
||||
</EditBox>
|
||||
</Frames>
|
||||
</Frame>
|
||||
</Ui>
|
||||
@@ -1,75 +1,91 @@
|
||||
-- HealBot Options panel file: HealBot_Options_General.lua
|
||||
-- Split from original HealBot_Options.lua
|
||||
|
||||
-- HealBot_Options_ShowHeaders_OnLoad: UI handler for OnLoad options panel.
|
||||
function HealBot_Options_ShowHeaders_OnLoad(this)
|
||||
getglobal(this:GetName().."Text"):SetText(HEALBOT_OPTIONS_SHOWHEADERS);
|
||||
end
|
||||
-- HealBot_Options_ShowHeaders_OnClick: UI handler for OnClick options panel.
|
||||
function HealBot_Options_ShowHeaders_OnClick(this)
|
||||
local isChecked = this:GetChecked()
|
||||
HealBot_Config.ShowHeader[HealBot_Config.Current_Skin] = isChecked and 1 or 0;
|
||||
HealBot_Action_ResetSkin()
|
||||
end
|
||||
-- HealBot_Options_BarTextureS_OnValueChanged: UI handler for OnValueChanged options panel.
|
||||
function HealBot_Options_BarTextureS_OnValueChanged(this)
|
||||
HealBot_Config.btexture[HealBot_Config.Current_Skin] = this:GetValue();
|
||||
getglobal(this:GetName().."Text"):SetText(this.text .. ": " .. this:GetValue());
|
||||
HealBot_Action_ResetSkin()
|
||||
end
|
||||
-- HealBot_Options_BarHeightS_OnValueChanged: UI handler for OnValueChanged options panel.
|
||||
function HealBot_Options_BarHeightS_OnValueChanged(this)
|
||||
HealBot_Config.bheight[HealBot_Config.Current_Skin] = this:GetValue();
|
||||
getglobal(this:GetName().."Text"):SetText(this.text .. ": " .. this:GetValue());
|
||||
HealBot_Action_ResetSkin()
|
||||
end
|
||||
-- HealBot_Options_BarWidthS_OnValueChanged: UI handler for OnValueChanged options panel.
|
||||
function HealBot_Options_BarWidthS_OnValueChanged(this)
|
||||
HealBot_Config.bwidth[HealBot_Config.Current_Skin] = this:GetValue();
|
||||
getglobal(this:GetName().."Text"):SetText(this.text .. ": " .. this:GetValue());
|
||||
HealBot_Action_ResetSkin()
|
||||
end
|
||||
-- HealBot_Options_BarNumColsS_OnValueChanged: UI handler for OnValueChanged options panel.
|
||||
function HealBot_Options_BarNumColsS_OnValueChanged(this)
|
||||
HealBot_Config.numcols[HealBot_Config.Current_Skin] = this:GetValue();
|
||||
getglobal(this:GetName().."Text"):SetText(this.text .. ": " .. this:GetValue());
|
||||
HealBot_Action_ResetSkin()
|
||||
end
|
||||
-- HealBot_Options_BarBRSpaceS_OnValueChanged: UI handler for OnValueChanged options panel.
|
||||
function HealBot_Options_BarBRSpaceS_OnValueChanged(this)
|
||||
HealBot_Config.brspace[HealBot_Config.Current_Skin] = this:GetValue();
|
||||
getglobal(this:GetName().."Text"):SetText(this.text .. ": " .. this:GetValue());
|
||||
HealBot_Action_ResetSkin()
|
||||
end
|
||||
-- HealBot_Options_BarBCSpaceS_OnValueChanged: UI handler for OnValueChanged options panel.
|
||||
function HealBot_Options_BarBCSpaceS_OnValueChanged(this)
|
||||
HealBot_Config.bcspace[HealBot_Config.Current_Skin] = this:GetValue();
|
||||
getglobal(this:GetName().."Text"):SetText(this.text .. ": " .. this:GetValue());
|
||||
HealBot_Action_ResetSkin()
|
||||
end
|
||||
-- HealBot_Options_FontHeight_OnValueChanged: UI handler for OnValueChanged options panel.
|
||||
function HealBot_Options_FontHeight_OnValueChanged(this)
|
||||
HealBot_Config.btextheight[HealBot_Config.Current_Skin] = this:GetValue();
|
||||
getglobal(this:GetName().."Text"):SetText(this.text .. ": " .. this:GetValue());
|
||||
HealBot_Action_ResetSkin()
|
||||
end
|
||||
-- HealBot_Options_IconSizeS_OnValueChanged: UI handler for OnValueChanged options panel.
|
||||
function HealBot_Options_IconSizeS_OnValueChanged(this)
|
||||
HealBot_Config.biconsize[HealBot_Config.Current_Skin] = this:GetValue();
|
||||
getglobal(this:GetName().."Text"):SetText(this.text .. ": " .. this:GetValue());
|
||||
HealBot_Action_ResetSkin()
|
||||
end
|
||||
-- HealBot_Options_AbortBarSize_OnValueChanged: UI handler for OnValueChanged options panel.
|
||||
function HealBot_Options_AbortBarSize_OnValueChanged(this)
|
||||
HealBot_Config.abortsize[HealBot_Config.Current_Skin] = this:GetValue();
|
||||
getglobal(this:GetName().."Text"):SetText(this.text .. ": " .. this:GetValue());
|
||||
HealBot_Action_ResetSkin()
|
||||
end
|
||||
-- HealBot_Options_ActionAlpha_OnValueChanged: UI handler for OnValueChanged options panel.
|
||||
function HealBot_Options_ActionAlpha_OnValueChanged(this)
|
||||
HealBot_Config.backcola[HealBot_Config.Current_Skin] = HealBot_Options_Pct_OnValueChanged(this);
|
||||
HealBot_Action_ResetSkin()
|
||||
end
|
||||
-- HealBot_Options_BarAlpha_OnValueChanged: UI handler for OnValueChanged options panel.
|
||||
function HealBot_Options_BarAlpha_OnValueChanged(this)
|
||||
HealBot_Config.Barcola[HealBot_Config.Current_Skin] = HealBot_Options_Pct_OnValueChanged(this);
|
||||
HealBot_Action_ResetSkin()
|
||||
end
|
||||
-- HealBot_Options_BarAlphaInHeal_OnValueChanged: UI handler for OnValueChanged options panel.
|
||||
function HealBot_Options_BarAlphaInHeal_OnValueChanged(this)
|
||||
HealBot_Config.BarcolaInHeal[HealBot_Config.Current_Skin] = HealBot_Options_Pct_OnValueChanged(this);
|
||||
HealBot_Action_ResetSkin()
|
||||
end
|
||||
-- HealBot_Options_BarAlphaDis_OnValueChanged: UI handler for OnValueChanged options panel.
|
||||
function HealBot_Options_BarAlphaDis_OnValueChanged(this)
|
||||
HealBot_Config.bardisa[HealBot_Config.Current_Skin] = HealBot_Options_Pct_OnValueChanged(this);
|
||||
HealBot_Action_ResetSkin()
|
||||
end
|
||||
-- HealBot_SkinColorpick_OnClick: Opens color picker for skin customization.
|
||||
function HealBot_SkinColorpick_OnClick(SkinType)
|
||||
HealBot_ColourObjWaiting=SkinType;
|
||||
|
||||
@@ -103,8 +119,19 @@ function HealBot_SkinColorpick_OnClick(SkinType)
|
||||
HealBot_Config.babortcolg[HealBot_Config.Current_Skin],
|
||||
HealBot_Config.babortcolb[HealBot_Config.Current_Skin],
|
||||
HealBot_Config.babortcola[HealBot_Config.Current_Skin])
|
||||
elseif SkinType=="MaxHP" then
|
||||
local r = HealBot_Config.bcolormaxr and HealBot_Config.bcolormaxr[HealBot_Config.Current_Skin] or 0.0
|
||||
local g = HealBot_Config.bcolormaxg and HealBot_Config.bcolormaxg[HealBot_Config.Current_Skin] or 1.0
|
||||
local b = HealBot_Config.bcolormaxb and HealBot_Config.bcolormaxb[HealBot_Config.Current_Skin] or 0.0
|
||||
HealBot_UseColourPick(r, g, b, 1.0)
|
||||
elseif SkinType=="MinHP" then
|
||||
local r = HealBot_Config.bcolorminr and HealBot_Config.bcolorminr[HealBot_Config.Current_Skin] or 1.0
|
||||
local g = HealBot_Config.bcolorming and HealBot_Config.bcolorming[HealBot_Config.Current_Skin] or 0.0
|
||||
local b = HealBot_Config.bcolorminb and HealBot_Config.bcolorminb[HealBot_Config.Current_Skin] or 0.0
|
||||
HealBot_UseColourPick(r, g, b, 1.0)
|
||||
end
|
||||
end
|
||||
-- HealBot_SetSkinColours: Applies skin configuration to UI elements.
|
||||
function HealBot_SetSkinColours()
|
||||
-- Cache the current skin configuration for performance and readability
|
||||
local skin = HealBot_Config.Current_Skin
|
||||
@@ -119,6 +146,20 @@ function HealBot_SetSkinColours()
|
||||
HealBot_EnTextColorpickin:SetStatusBarColor(0, 1, 0, inHealAlpha)
|
||||
HealBot_DisTextColorpick:SetStatusBarColor(0, 1, 0, disabledAlpha)
|
||||
|
||||
local maxR = HealBot_Config.bcolormaxr and HealBot_Config.bcolormaxr[skin] or 0.0
|
||||
local maxG = HealBot_Config.bcolormaxg and HealBot_Config.bcolormaxg[skin] or 1.0
|
||||
local maxB = HealBot_Config.bcolormaxb and HealBot_Config.bcolormaxb[skin] or 0.0
|
||||
if HealBot_MaxHPColorpick then
|
||||
HealBot_MaxHPColorpick:SetStatusBarColor(maxR, maxG, maxB, 1.0)
|
||||
end
|
||||
|
||||
local minR = HealBot_Config.bcolorminr and HealBot_Config.bcolorminr[skin] or 1.0
|
||||
local minG = HealBot_Config.bcolorming and HealBot_Config.bcolorming[skin] or 0.0
|
||||
local minB = HealBot_Config.bcolorminb and HealBot_Config.bcolorminb[skin] or 0.0
|
||||
if HealBot_MinHPColorpick then
|
||||
HealBot_MinHPColorpick:SetStatusBarColor(minR, minG, minB, 1.0)
|
||||
end
|
||||
|
||||
-- 2. Set Text Colors
|
||||
HealBot_EnTextColorpickt:SetTextColor(
|
||||
HealBot_Config.btextenabledcolr[skin], HealBot_Config.btextenabledcolg[skin],
|
||||
@@ -186,13 +227,30 @@ function HealBot_SetSkinColours()
|
||||
end
|
||||
|
||||
-- 5. Update Text Labels
|
||||
HealBot_EnTextColorpickt:SetTextHeight(btextheight)
|
||||
HealBot_DisTextColorpickt:SetTextHeight(btextheight)
|
||||
HealBot_DebTextColorpickt:SetTextHeight(btextheight)
|
||||
|
||||
HealBot_EnTextColorpickt:SetText(HEALBOT_SKIN_ENTEXT)
|
||||
HealBot_DisTextColorpickt:SetText(HEALBOT_SKIN_DISTEXT)
|
||||
HealBot_DebTextColorpickt:SetText(HEALBOT_SKIN_DEBTEXT)
|
||||
local bfont = (HealBot_Config.bfont and HealBot_Config.bfont[skin]) or "Fonts\\FRIZQT__.TTF"
|
||||
local fontOutline = (HealBot_Config.bfontoutline and HealBot_Config.bfontoutline[skin]) or 0
|
||||
local expectedFlags = fontOutline == 1 and "OUTLINE" or ""
|
||||
|
||||
if HealBot_EnTextColorpickt then
|
||||
HealBot_EnTextColorpickt:SetFont(bfont, btextheight, expectedFlags)
|
||||
HealBot_EnTextColorpickt:SetText(HEALBOT_SKIN_ENTEXT)
|
||||
end
|
||||
if HealBot_DisTextColorpickt then
|
||||
HealBot_DisTextColorpickt:SetFont(bfont, btextheight, expectedFlags)
|
||||
HealBot_DisTextColorpickt:SetText(HEALBOT_SKIN_DISTEXT)
|
||||
end
|
||||
if HealBot_DebTextColorpickt then
|
||||
HealBot_DebTextColorpickt:SetFont(bfont, btextheight, expectedFlags)
|
||||
HealBot_DebTextColorpickt:SetText(HEALBOT_SKIN_DEBTEXT)
|
||||
end
|
||||
if HealBot_MaxHPColorpickt then
|
||||
HealBot_MaxHPColorpickt:SetFont(bfont, btextheight, expectedFlags)
|
||||
HealBot_MaxHPColorpickt:SetText(HEALBOT_SKIN_MAXHPTEXT or "Max HP")
|
||||
end
|
||||
if HealBot_MinHPColorpickt then
|
||||
HealBot_MinHPColorpickt:SetFont(bfont, btextheight, expectedFlags)
|
||||
HealBot_MinHPColorpickt:SetText(HEALBOT_SKIN_MINHPTEXT or "Min HP")
|
||||
end
|
||||
|
||||
-- 6. Force UI redraw (Kept the scale hack since it addresses a specific engine quirk)
|
||||
local barScale = HealBot_EnTextColorpick:GetScale()
|
||||
@@ -202,76 +260,95 @@ function HealBot_SetSkinColours()
|
||||
|
||||
HealBot_Action_PartyChanged()
|
||||
end
|
||||
-- HealBot_Options_AlertLevel_OnValueChanged: UI handler for OnValueChanged options panel.
|
||||
function HealBot_Options_AlertLevel_OnValueChanged(this)
|
||||
HealBot_Config.AlertLevel = HealBot_Options_Pct_OnValueChanged(this);
|
||||
HealBot_Action_Refresh();
|
||||
end
|
||||
-- HealBot_Options_AutoShow_OnLoad: UI handler for OnLoad options panel.
|
||||
function HealBot_Options_AutoShow_OnLoad(this)
|
||||
getglobal(this:GetName().."Text"):SetText(HEALBOT_OPTIONS_AUTOSHOW);
|
||||
end
|
||||
-- HealBot_Options_AutoShow_OnClick: UI handler for OnClick options panel.
|
||||
function HealBot_Options_AutoShow_OnClick(this)
|
||||
HealBot_Config.AutoClose = this:GetChecked() or 0;
|
||||
HealBot_Action_Refresh();
|
||||
end
|
||||
-- HealBot_Options_PanelSounds_OnLoad: UI handler for OnLoad options panel.
|
||||
function HealBot_Options_PanelSounds_OnLoad(this)
|
||||
getglobal(this:GetName().."Text"):SetText(HEALBOT_OPTIONS_PANELSOUNDS);
|
||||
end
|
||||
-- HealBot_Options_PanelSounds_OnClick: UI handler for OnClick options panel.
|
||||
function HealBot_Options_PanelSounds_OnClick(this)
|
||||
HealBot_Config.PanelSounds = this:GetChecked() or 0;
|
||||
end
|
||||
-- HealBot_Options_ActionMouseover_OnLoad: UI handler for OnLoad options panel.
|
||||
function HealBot_Options_ActionMouseover_OnLoad(this, text)
|
||||
getglobal(this:GetName().."Text"):SetText(text);
|
||||
end
|
||||
-- HealBot_Options_ActionMouseover_OnClick: UI handler for OnClick options panel.
|
||||
function HealBot_Options_ActionMouseover_OnClick(this)
|
||||
HealBot_Config.ActionMouseover = this:GetChecked() or 0;
|
||||
end
|
||||
-- HealBot_Options_ActionLocked_OnLoad: UI handler for OnLoad options panel.
|
||||
function HealBot_Options_ActionLocked_OnLoad(this)
|
||||
getglobal(this:GetName().."Text"):SetText(HEALBOT_OPTIONS_ACTIONLOCKED);
|
||||
end
|
||||
-- HealBot_Options_ActionLocked_OnClick: UI handler for OnClick options panel.
|
||||
function HealBot_Options_ActionLocked_OnClick(this)
|
||||
HealBot_Config.ActionLocked = this:GetChecked() or 0;
|
||||
end
|
||||
-- HealBot_Options_HideOptions_OnLoad: UI handler for OnLoad options panel.
|
||||
function HealBot_Options_HideOptions_OnLoad(this,text)
|
||||
getglobal(this:GetName().."Text"):SetText(text);
|
||||
end
|
||||
-- HealBot_Options_HideOptions_OnClick: UI handler for OnClick options panel.
|
||||
function HealBot_Options_HideOptions_OnClick(this)
|
||||
HealBot_Config.HideOptions = this:GetChecked() or 0;
|
||||
HealBot_Action_PartyChanged();
|
||||
end
|
||||
-- HealBot_Options_HideAbort_OnLoad: UI handler for OnLoad options panel.
|
||||
function HealBot_Options_HideAbort_OnLoad(this,text)
|
||||
getglobal(this:GetName().."Text"):SetText(text);
|
||||
end
|
||||
-- HealBot_Options_HideAbort_OnClick: UI handler for OnClick options panel.
|
||||
function HealBot_Options_HideAbort_OnClick(this)
|
||||
HealBot_Config.HideAbort = this:GetChecked() or 0;
|
||||
HealBot_Action_PartyChanged();
|
||||
end
|
||||
-- HealBot_Options_GrowUpwards_OnLoad: UI handler for OnLoad options panel.
|
||||
function HealBot_Options_GrowUpwards_OnLoad(this,text)
|
||||
getglobal(this:GetName().."Text"):SetText(text);
|
||||
end
|
||||
-- HealBot_Options_GrowUpwards_OnClick: UI handler for OnClick options panel.
|
||||
function HealBot_Options_GrowUpwards_OnClick(this)
|
||||
HealBot_Config.GrowUpwards = this:GetChecked() or 0;
|
||||
HealBot_Action_PartyChanged();
|
||||
end
|
||||
-- HealBot_Options_QualityRange_OnLoad: UI handler for OnLoad options panel.
|
||||
function HealBot_Options_QualityRange_OnLoad(this,text)
|
||||
getglobal(this:GetName().."Text"):SetText(text);
|
||||
end
|
||||
-- HealBot_Options_QualityRange_OnClick: UI handler for OnClick options panel.
|
||||
function HealBot_Options_QualityRange_OnClick(this)
|
||||
HealBot_Config.QualityRange = this:GetChecked() or 0;
|
||||
HealBot_Action_PartyChanged();
|
||||
end
|
||||
-- HealBot_Options_ProtectPvP_OnLoad: UI handler for OnLoad options panel.
|
||||
function HealBot_Options_ProtectPvP_OnLoad(this,text)
|
||||
getglobal(this:GetName().."Text"):SetText(text);
|
||||
end
|
||||
-- HealBot_Options_ProtectPvP_OnClick: UI handler for OnClick options panel.
|
||||
function HealBot_Options_ProtectPvP_OnClick(this)
|
||||
HealBot_Config.ProtectPvP = this:GetChecked() or 0;
|
||||
HealBot_Action_Refresh();
|
||||
end
|
||||
-- HealBot_Options_FramePaddingS_OnValueChanged: UI handler for OnValueChanged options panel.
|
||||
function HealBot_Options_FramePaddingS_OnValueChanged(this)
|
||||
if not HealBot_Config.bpadding then HealBot_Config.bpadding = {} end
|
||||
HealBot_Config.bpadding[HealBot_Config.Current_Skin] = this:GetValue();
|
||||
getglobal(this:GetName().."Text"):SetText(this.text .. ": " .. this:GetValue());
|
||||
HealBot_Action_ResetSkin()
|
||||
end
|
||||
-- HealBot_Options_BorderThicknessS_OnValueChanged: UI handler for OnValueChanged options panel.
|
||||
function HealBot_Options_BorderThicknessS_OnValueChanged(this)
|
||||
if not HealBot_Config.bboffset then HealBot_Config.bboffset = {} end
|
||||
HealBot_Config.bboffset[HealBot_Config.Current_Skin] = this:GetValue();
|
||||
@@ -279,15 +356,18 @@ function HealBot_Options_BorderThicknessS_OnValueChanged(this)
|
||||
HealBot_Action_ResetSkin()
|
||||
end
|
||||
|
||||
-- HealBot_Options_HideParty_OnLoad: UI handler for OnLoad options panel.
|
||||
function HealBot_Options_HideParty_OnLoad(this, text)
|
||||
getglobal(this:GetName().."Text"):SetText(text);
|
||||
end
|
||||
|
||||
-- HealBot_Options_HideParty_OnClick: UI handler for OnClick options panel.
|
||||
function HealBot_Options_HideParty_OnClick(this)
|
||||
HealBot_Config.HideParty = this:GetChecked() or 0;
|
||||
HealBot_Options_TogglePartyFrames();
|
||||
end
|
||||
|
||||
-- HealBot_Options_TogglePartyFrames: UI handler for TogglePartyFrames options panel.
|
||||
function HealBot_Options_TogglePartyFrames()
|
||||
if HealBot_Config.HideParty == 1 then
|
||||
if HidePartyFrame then HidePartyFrame(); end
|
||||
|
||||
+17
-23
@@ -10,7 +10,7 @@
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="31" y="-40" />
|
||||
<AbsDimension x="60" y="-40" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
@@ -23,7 +23,7 @@
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_ActionLocked" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="5" />
|
||||
<AbsDimension x="0" y="-5" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
@@ -36,7 +36,7 @@
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_GrowUpwards" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="5" />
|
||||
<AbsDimension x="0" y="-5" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
@@ -49,7 +49,7 @@
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_ActionLocked" relativePoint="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="200" y="0" />
|
||||
<AbsDimension x="280" y="0" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
@@ -62,7 +62,7 @@
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_GrowUpwards" relativePoint="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="200" y="0" />
|
||||
<AbsDimension x="280" y="0" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
@@ -75,7 +75,7 @@
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_ActionMouseover" relativePoint="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="200" y="0" />
|
||||
<AbsDimension x="280" y="0" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
@@ -94,20 +94,14 @@
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
|
||||
<Frame name="HealBot_Options_GenFrame" inherits="OptionFrameBoxTemplate">
|
||||
<Scripts>
|
||||
<OnLoad>
|
||||
this:SetBackdropBorderColor(0.4, 0.4, 0.4);
|
||||
this:SetBackdropColor(0, 0, 0, 0);
|
||||
</OnLoad>
|
||||
</Scripts>
|
||||
<Frame name="HealBot_Options_GenFrame">
|
||||
<Size>
|
||||
<AbsDimension y="95"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="21" y="-135"/>
|
||||
<AbsDimension x="60" y="-135"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
<Anchor point="TOPRIGHT">
|
||||
@@ -122,7 +116,7 @@
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="130" y="-12" />
|
||||
<AbsDimension x="280" y="-12" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
@@ -134,7 +128,7 @@
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="10" y="-30" />
|
||||
<AbsDimension x="0" y="-30" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
@@ -156,7 +150,7 @@
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_ShowManaBars" relativePoint="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="180" y="0" />
|
||||
<AbsDimension x="280" y="0" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
@@ -178,7 +172,7 @@
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_ShowManaBars" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-2" />
|
||||
<AbsDimension x="0" y="-5" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
@@ -203,7 +197,7 @@
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_GenFrame" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="10" y="-10" />
|
||||
<AbsDimension x="0" y="-10" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
@@ -216,7 +210,7 @@
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_HideOptions" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-2" />
|
||||
<AbsDimension x="0" y="-5" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
@@ -229,7 +223,7 @@
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_HideAbort" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-2" />
|
||||
<AbsDimension x="0" y="-5" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
@@ -242,7 +236,7 @@
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_QualityRange" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-2" />
|
||||
<AbsDimension x="0" y="-5" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
@@ -255,7 +249,7 @@
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_ProtectPvP" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-2" />
|
||||
<AbsDimension x="0" y="-5" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
|
||||
+34
-13
@@ -1,52 +1,65 @@
|
||||
-- HealBot Options panel file: HealBot_Options_Healing.lua
|
||||
-- Split from original HealBot_Options.lua
|
||||
|
||||
-- HealBot_Options_GroupHeals_OnLoad: UI handler for OnLoad options panel.
|
||||
function HealBot_Options_GroupHeals_OnLoad(this,text)
|
||||
this.text = text
|
||||
getglobal(this:GetName().."Text"):SetText(text);
|
||||
end
|
||||
-- HealBot_Options_GroupHeals_OnClick: UI handler for OnClick options panel.
|
||||
function HealBot_Options_GroupHeals_OnClick(this)
|
||||
HealBot_Config.GroupHeals = this:GetChecked() or 0;
|
||||
HealBot_RecalcParty();
|
||||
end
|
||||
-- HealBot_Options_TankHeals_OnLoad: UI handler for OnLoad options panel.
|
||||
function HealBot_Options_TankHeals_OnLoad(this,text)
|
||||
this.text = text
|
||||
getglobal(this:GetName().."Text"):SetText(text);
|
||||
end
|
||||
-- HealBot_Options_TankHeals_OnClick: UI handler for OnClick options panel.
|
||||
function HealBot_Options_TankHeals_OnClick(this)
|
||||
HealBot_Config.TankHeals = this:GetChecked() or 0;
|
||||
HealBot_RecalcParty();
|
||||
end
|
||||
-- HealBot_Options_TargetHeals_OnLoad: UI handler for OnLoad options panel.
|
||||
function HealBot_Options_TargetHeals_OnLoad(this,text)
|
||||
this.text = text
|
||||
getglobal(this:GetName().."Text"):SetText(text);
|
||||
end
|
||||
-- HealBot_Options_TargetHeals_OnClick: UI handler for OnClick options panel.
|
||||
function HealBot_Options_TargetHeals_OnClick(this)
|
||||
HealBot_Config.TargetHeals = this:GetChecked() or 0;
|
||||
HealBot_RecalcParty();
|
||||
end
|
||||
-- HealBot_Options_EmergencyHeals_OnLoad: UI handler for OnLoad options panel.
|
||||
function HealBot_Options_EmergencyHeals_OnLoad(this,text)
|
||||
this.text = text
|
||||
getglobal(this:GetName().."Text"):SetText(text);
|
||||
end
|
||||
-- HealBot_Options_EmergencyHeals_OnClick: UI handler for OnClick options panel.
|
||||
function HealBot_Options_EmergencyHeals_OnClick(this)
|
||||
HealBot_Config.EmergencyHeals = this:GetChecked() or 0;
|
||||
HealBot_RecalcParty();
|
||||
end
|
||||
-- HealBot_Options_PetHeals_OnLoad: UI handler for OnLoad options panel.
|
||||
function HealBot_Options_PetHeals_OnLoad(this,text)
|
||||
this.text = text
|
||||
getglobal(this:GetName().."Text"):SetText(text);
|
||||
end
|
||||
-- HealBot_Options_PetHeals_OnClick: UI handler for OnClick options panel.
|
||||
function HealBot_Options_PetHeals_OnClick(this)
|
||||
HealBot_Config.PetHeals = this:GetChecked() or 0;
|
||||
HealBot_RecalcParty();
|
||||
end
|
||||
-- HealBot_Options_OverHeal_OnValueChanged: UI handler for OnValueChanged options panel.
|
||||
function HealBot_Options_OverHeal_OnValueChanged(this)
|
||||
HealBot_Config.OverHeal = HealBot_Options_Pct_OnValueChanged(this);
|
||||
end
|
||||
-- HealBot_Options_EFClass_OnLoad: UI handler for OnLoad options panel.
|
||||
function HealBot_Options_EFClass_OnLoad(this,text)
|
||||
getglobal(this:GetName().."Text"):SetText(text);
|
||||
end
|
||||
-- HealBot_Options_EFClass_OnClick: UI handler for OnClick options panel.
|
||||
function HealBot_Options_EFClass_OnClick(this)
|
||||
if HealBot_Config.EmergencyFClass==1 then
|
||||
HealBot_Config.EmergIncMelee[HEALBOT_DRUID] = HealBot_Options_EFClassDruid:GetChecked() or 0;
|
||||
@@ -89,7 +102,7 @@ function HealBot_Options_EFClass_OnClick(this)
|
||||
HealBot_Config.EmergIncCustom[HEALBOT_WARLOCK] = HealBot_Options_EFClassWarlock:GetChecked() or 0;
|
||||
HealBot_Config.EmergIncCustom[HEALBOT_WARRIOR] = HealBot_Options_EFClassWarrior:GetChecked() or 0;
|
||||
end
|
||||
if HealBot_Config.EmergIncMonitor>10 then
|
||||
if HealBot_Config.EmergIncMonitor > 1 then
|
||||
HealBot_Action_PartyChanged();
|
||||
end
|
||||
end
|
||||
@@ -100,6 +113,7 @@ HealBot_Options_HealthText_List = {
|
||||
"Health Deficit",
|
||||
}
|
||||
|
||||
-- HealBot_Options_HealthText_DropDown: UI handler for DropDown options panel.
|
||||
function HealBot_Options_HealthText_DropDown()
|
||||
for i=1, getn(HealBot_Options_HealthText_List), 1 do
|
||||
local info = {};
|
||||
@@ -109,11 +123,13 @@ function HealBot_Options_HealthText_DropDown()
|
||||
end
|
||||
end
|
||||
|
||||
-- HealBot_Options_HealthText_OnLoad: UI handler for OnLoad options panel.
|
||||
function HealBot_Options_HealthText_OnLoad(this)
|
||||
UIDropDownMenu_Initialize(this, HealBot_Options_HealthText_DropDown);
|
||||
UIDropDownMenu_SetWidth(110, this);
|
||||
end
|
||||
|
||||
-- HealBot_Options_HealthText_OnSelect: UI handler for OnSelect options panel.
|
||||
function HealBot_Options_HealthText_OnSelect()
|
||||
HealBot_Config.ShowHealthText = this:GetID() - 1;
|
||||
HealBot_UIDropDownMenu_SetSelectedID(HealBot_Options_HealthText, this:GetID())
|
||||
@@ -127,6 +143,7 @@ local HealBot_Options_EmergencyFClass_List = {
|
||||
HEALBOT_CLASSES_CUSTOM,
|
||||
}
|
||||
|
||||
-- HealBot_Options_EmergencyFClass_DropDown: UI handler for DropDown options panel.
|
||||
function HealBot_Options_EmergencyFClass_DropDown()
|
||||
for i=1, getn(HealBot_Options_EmergencyFClass_List), 1 do
|
||||
local info = {};
|
||||
@@ -136,27 +153,32 @@ function HealBot_Options_EmergencyFClass_DropDown()
|
||||
end
|
||||
end
|
||||
|
||||
-- HealBot_Options_EmergencyFClass_Initialize: UI handler for Initialize options panel.
|
||||
function HealBot_Options_EmergencyFClass_Initialize()
|
||||
UIDropDownMenu_Initialize(HealBot_Options_EmergencyFClass,HealBot_Options_EmergencyFClass_DropDown)
|
||||
end
|
||||
|
||||
-- HealBot_Options_EmergencyFClass_Refresh: UI handler for Refresh options panel.
|
||||
function HealBot_Options_EmergencyFClass_Refresh(onselect)
|
||||
if not HealBot_Config.EmergencyFClass then return end
|
||||
if not onselect then HealBot_Options_EmergencyFClass_Initialize() end -- or wrong menu may be used !
|
||||
HealBot_UIDropDownMenu_SetSelectedID(HealBot_Options_EmergencyFClass,HealBot_Config.EmergencyFClass)
|
||||
end
|
||||
|
||||
-- HealBot_Options_EmergencyFClass_OnLoad: UI handler for OnLoad options panel.
|
||||
function HealBot_Options_EmergencyFClass_OnLoad()
|
||||
UIDropDownMenu_Initialize(this, HealBot_Options_EmergencyFClass_DropDown)
|
||||
UIDropDownMenu_SetWidth(100, this)
|
||||
end
|
||||
|
||||
-- HealBot_Options_EmergencyFClass_OnSelect: UI handler for OnSelect options panel.
|
||||
function HealBot_Options_EmergencyFClass_OnSelect()
|
||||
HealBot_Config.EmergencyFClass = this:GetID()
|
||||
HealBot_Options_EmergencyFClass_Refresh(true)
|
||||
HealBot_Options_EFClass_Reset()
|
||||
end
|
||||
|
||||
-- HealBot_Options_EFClass_Reset: UI handler for Reset options panel.
|
||||
function HealBot_Options_EFClass_Reset()
|
||||
if HealBot_Config.EmergencyFClass==1 then
|
||||
HealBot_Options_EFClassDruid:SetChecked(HealBot_Config.EmergIncMelee[HEALBOT_DRUID]);
|
||||
@@ -210,6 +232,7 @@ local HealBot_Options_ExtraSort_List = {
|
||||
HEALBOT_SORTBY_MAXHEALTH,
|
||||
}
|
||||
|
||||
-- HealBot_Options_ExtraSort_DropDown: UI handler for DropDown options panel.
|
||||
function HealBot_Options_ExtraSort_DropDown()
|
||||
for i=1, getn(HealBot_Options_ExtraSort_List), 1 do
|
||||
local info = {};
|
||||
@@ -219,21 +242,25 @@ function HealBot_Options_ExtraSort_DropDown()
|
||||
end
|
||||
end
|
||||
|
||||
-- HealBot_Options_ExtraSort_Initialize: UI handler for Initialize options panel.
|
||||
function HealBot_Options_ExtraSort_Initialize()
|
||||
UIDropDownMenu_Initialize(HealBot_Options_ExtraSort,HealBot_Options_ExtraSort_DropDown)
|
||||
end
|
||||
|
||||
-- HealBot_Options_ExtraSort_Refresh: UI handler for Refresh options panel.
|
||||
function HealBot_Options_ExtraSort_Refresh(onselect)
|
||||
if not HealBot_Config.ExtraOrder then return end
|
||||
if not onselect then HealBot_Options_ExtraSort_Initialize() end -- or wrong menu may be used !
|
||||
HealBot_UIDropDownMenu_SetSelectedID(HealBot_Options_ExtraSort,HealBot_Config.ExtraOrder)
|
||||
end
|
||||
|
||||
-- HealBot_Options_ExtraSort_OnLoad: UI handler for OnLoad options panel.
|
||||
function HealBot_Options_ExtraSort_OnLoad()
|
||||
UIDropDownMenu_Initialize(this, HealBot_Options_ExtraSort_DropDown)
|
||||
UIDropDownMenu_SetWidth(100, this)
|
||||
end
|
||||
|
||||
-- HealBot_Options_ExtraSort_OnSelect: UI handler for OnSelect options panel.
|
||||
function HealBot_Options_ExtraSort_OnSelect()
|
||||
HealBot_Config.ExtraOrder = this:GetID()
|
||||
HealBot_Options_ExtraSort_Refresh(true)
|
||||
@@ -242,6 +269,7 @@ end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
-- HealBot_Options_EmergencyFilter_DropDown: UI handler for DropDown options panel.
|
||||
function HealBot_Options_EmergencyFilter_DropDown()
|
||||
for i=1, getn(HealBot_Options_EmergencyFilter_List), 1 do
|
||||
local info = {};
|
||||
@@ -252,11 +280,13 @@ function HealBot_Options_EmergencyFilter_DropDown()
|
||||
end
|
||||
|
||||
|
||||
-- HealBot_Options_EmergencyFilter_Initialize: UI handler for Initialize options panel.
|
||||
function HealBot_Options_EmergencyFilter_Initialize()
|
||||
UIDropDownMenu_Initialize(HealBot_Options_EmergencyFilter,HealBot_Options_EmergencyFilter_DropDown)
|
||||
end
|
||||
|
||||
|
||||
-- HealBot_Options_EmergencyFilter_Refresh: UI handler for Refresh options panel.
|
||||
function HealBot_Options_EmergencyFilter_Refresh(onselect)
|
||||
if not HealBot_Config.EmergIncMonitor then return end
|
||||
if not onselect then HealBot_Options_EmergencyFilter_Initialize() end -- or wrong menu may be used !
|
||||
@@ -264,18 +294,21 @@ function HealBot_Options_EmergencyFilter_Refresh(onselect)
|
||||
end
|
||||
|
||||
|
||||
-- HealBot_Options_EmergencyFilter_OnLoad: UI handler for OnLoad options panel.
|
||||
function HealBot_Options_EmergencyFilter_OnLoad()
|
||||
UIDropDownMenu_Initialize(this, HealBot_Options_EmergencyFilter_DropDown)
|
||||
UIDropDownMenu_SetWidth(100, this)
|
||||
end
|
||||
|
||||
|
||||
-- HealBot_Options_EmergencyFilter_OnSelect: UI handler for OnSelect options panel.
|
||||
function HealBot_Options_EmergencyFilter_OnSelect()
|
||||
HealBot_Config.EmergIncMonitor = this:GetID()
|
||||
HealBot_Options_EmergencyFilter_Refresh(true)
|
||||
HealBot_Options_EmergencyFilter_Reset()
|
||||
end
|
||||
|
||||
-- HealBot_Options_EmergencyFilter_Reset: UI handler for Reset options panel.
|
||||
function HealBot_Options_EmergencyFilter_Reset()
|
||||
|
||||
HealBot_EmergInc[HEALBOT_DRUID] = 0;
|
||||
@@ -341,15 +374,3 @@ function HealBot_Options_EmergencyFilter_Reset()
|
||||
|
||||
HealBot_Action_PartyChanged()
|
||||
end
|
||||
|
||||
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
|
||||
+18
-30
@@ -5,13 +5,7 @@
|
||||
<Frame name="HealBot_Options_Panel3" parent="HealBot_Options" hidden="true" setAllPoints="true">
|
||||
<Frames>
|
||||
|
||||
<Frame name="HealBot_Options_HealTargetFrame" inherits="OptionFrameBoxTemplate">
|
||||
<Scripts>
|
||||
<OnLoad>
|
||||
this:SetBackdropBorderColor(0.4, 0.4, 0.4);
|
||||
this:SetBackdropColor(0, 0, 0, 0);
|
||||
</OnLoad>
|
||||
</Scripts>
|
||||
<Frame name="HealBot_Options_HealTargetFrame">
|
||||
<Size>
|
||||
<AbsDimension y="88"/>
|
||||
</Size>
|
||||
@@ -32,9 +26,9 @@
|
||||
<Layer level="BACKGROUND">
|
||||
<FontString name="HealBot_HealButtons_Text" text="HEALBOT_OPTIONS_HEAL_BUTTONS" inherits="GameFontNormalSmall">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Anchor point="TOP">
|
||||
<Offset>
|
||||
<AbsDimension x="100" y="-8" />
|
||||
<AbsDimension x="0" y="-8" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
@@ -47,7 +41,7 @@
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="25" y="-21" />
|
||||
<AbsDimension x="85" y="-21" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
@@ -60,7 +54,7 @@
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_GroupHeals" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="5" />
|
||||
<AbsDimension x="0" y="-5" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
@@ -86,7 +80,7 @@
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_GroupHeals" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="122" y="5" />
|
||||
<AbsDimension x="122" y="-5" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
@@ -99,7 +93,7 @@
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_GroupHeals" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="244" y="5" />
|
||||
<AbsDimension x="244" y="-5" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
@@ -114,9 +108,9 @@
|
||||
|
||||
<Slider name="HealBot_Options_AlertLevel" inherits="HealBot_Options_SliderTemplate">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Anchor point="TOP">
|
||||
<Offset>
|
||||
<AbsDimension x="45" y="-132" />
|
||||
<AbsDimension x="0" y="-132" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
@@ -142,9 +136,9 @@
|
||||
|
||||
<Frame name="HealBot_Options_EmergencyFilter" inherits="UIDropDownMenuTemplate" id="1">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Anchor point="TOP">
|
||||
<Offset>
|
||||
<AbsDimension x="155" y="-205" />
|
||||
<AbsDimension x="40" y="-205" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
@@ -170,9 +164,9 @@
|
||||
|
||||
<Frame name="HealBot_Options_ExtraSort" inherits="UIDropDownMenuTemplate" id="1">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Anchor point="TOP">
|
||||
<Offset>
|
||||
<AbsDimension x="155" y="-238" />
|
||||
<AbsDimension x="40" y="-238" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
@@ -198,9 +192,9 @@
|
||||
|
||||
<Frame name="HealBot_Options_HealthText" inherits="UIDropDownMenuTemplate" id="1">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Anchor point="TOP">
|
||||
<Offset>
|
||||
<AbsDimension x="155" y="-271" />
|
||||
<AbsDimension x="40" y="-271" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
@@ -224,13 +218,7 @@
|
||||
</Scripts>
|
||||
</Frame>
|
||||
|
||||
<Frame name="HealBot_Options_EmergLFrame" inherits="OptionFrameBoxTemplate">
|
||||
<Scripts>
|
||||
<OnLoad>
|
||||
this:SetBackdropBorderColor(0.4, 0.4, 0.4);
|
||||
this:SetBackdropColor(0, 0, 0, 0);
|
||||
</OnLoad>
|
||||
</Scripts>
|
||||
<Frame name="HealBot_Options_EmergLFrame">
|
||||
<Size>
|
||||
<AbsDimension y="125"/>
|
||||
</Size>
|
||||
@@ -251,9 +239,9 @@
|
||||
|
||||
<Frame name="HealBot_Options_EmergencyFClass" inherits="UIDropDownMenuTemplate" id="1">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Anchor point="TOP">
|
||||
<Offset>
|
||||
<AbsDimension x="128" y="-10" />
|
||||
<AbsDimension x="40" y="-10" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
-- HealBot_Options_Integrations_OnShow: UI handler for OnShow options panel.
|
||||
function HealBot_Options_Integrations_OnShow(this)
|
||||
HealBot_Options_Integrations_UnitXP:SetChecked(HealBot_Config.HealBot_Integrations_UnitXP);
|
||||
HealBot_Options_Integrations_Nampower:SetChecked(HealBot_Config.HealBot_Integrations_Nampower);
|
||||
HealBot_Options_Integrations_SuperWoW:SetChecked(HealBot_Config.HealBot_Integrations_SuperWoW);
|
||||
HealBot_Options_Integrations_ClassicAPI:SetChecked(HealBot_Config.HealBot_Integrations_ClassicAPI);
|
||||
HealBot_Options_Integrations_ShowHoTTimers:SetChecked(HealBot_Config.HealBot_Integrations_ShowHoTTimers);
|
||||
end
|
||||
@@ -0,0 +1,135 @@
|
||||
<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_Integrations.lua" />
|
||||
<Frame name="HealBot_Options_Panel9" hidden="true" parent="HealBot_Options" setAllPoints="true">
|
||||
<Frames>
|
||||
<CheckButton name="HealBot_Options_Integrations_UnitXP" inherits="OptionsCheckButtonTemplate">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="100" y="-35"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>
|
||||
getglobal(this:GetName().."Text"):SetText("Enable UnitXP_SP3 Integration (Distance/LoS)");
|
||||
</OnLoad>
|
||||
<OnClick>
|
||||
HealBot_Config.HealBot_Integrations_UnitXP = this:GetChecked() and 1 or 0;
|
||||
HealBot_Integrations_Toggle();
|
||||
</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
|
||||
<CheckButton name="HealBot_Options_Integrations_Nampower" inherits="OptionsCheckButtonTemplate">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_Integrations_UnitXP" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-6"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>
|
||||
getglobal(this:GetName().."Text"):SetText("Enable nampower Integration (Buffs/Heals/Queueing)");
|
||||
</OnLoad>
|
||||
<OnClick>
|
||||
HealBot_Config.HealBot_Integrations_Nampower = this:GetChecked() and 1 or 0;
|
||||
HealBot_Integrations_Toggle();
|
||||
</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
|
||||
<CheckButton name="HealBot_Options_Integrations_SuperWoW" inherits="OptionsCheckButtonTemplate">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_Integrations_Nampower" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-60"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>
|
||||
getglobal(this:GetName().."Text"):SetText("Enable SuperWoW Integration (GUID Tracking)");
|
||||
</OnLoad>
|
||||
<OnClick>
|
||||
HealBot_Config.HealBot_Integrations_SuperWoW = this:GetChecked() and 1 or 0;
|
||||
HealBot_Integrations_Toggle();
|
||||
</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
|
||||
<CheckButton name="HealBot_Options_Integrations_ClassicAPI" inherits="OptionsCheckButtonTemplate">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_Integrations_SuperWoW" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-6"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>
|
||||
getglobal(this:GetName().."Text"):SetText("Enable ClassicAPI Integration (+Healing/Focus/Distance)");
|
||||
</OnLoad>
|
||||
<OnClick>
|
||||
HealBot_Config.HealBot_Integrations_ClassicAPI = this:GetChecked() and 1 or 0;
|
||||
HealBot_Integrations_Toggle();
|
||||
</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
|
||||
<CheckButton name="HealBot_Options_Integrations_ShowHoTTimers" inherits="OptionsCheckButtonTemplate">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_Integrations_ClassicAPI" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-6"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>
|
||||
getglobal(this:GetName().."Text"):SetText("Track Player HoT Timers");
|
||||
</OnLoad>
|
||||
<OnClick>
|
||||
HealBot_Config.HealBot_Integrations_ShowHoTTimers = this:GetChecked() and 1 or 0;
|
||||
</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
<Frame setAllPoints="true">
|
||||
<Layers>
|
||||
<Layer level="ARTWORK">
|
||||
<FontString name="HealBot_Options_Integrations_NampowerInfo" inherits="GameFontHighlightSmall" justifyH="LEFT" justifyV="TOP" text="Note: For the 1-click Shapeshift auto-unshift to work smoothly, you must ENABLE 'Retry server rejected spells' in Nampower ENABLE Queue Instant Cast Spells and Queue Cast Time Spells.">
|
||||
<Size x="340" y="48"/>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_Integrations_Nampower" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="20" y="-4"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Color r="0.7" g="0.7" b="0.7"/>
|
||||
</FontString>
|
||||
<FontString name="HealBot_Options_Integrations_HoTInfo" inherits="GameFontHighlightSmall" justifyH="LEFT" justifyV="TOP" text="Note: HoT Timers require Nampower to be enabled and active to provide accurate aura times.">
|
||||
<Size x="340" y="30"/>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_Integrations_ShowHoTTimers" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="20" y="-4"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Color r="0.7" g="0.7" b="0.7"/>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
</Frame>
|
||||
</Frames>
|
||||
<Scripts>
|
||||
<OnShow>
|
||||
HealBot_Options_Integrations_OnShow(this);
|
||||
</OnShow>
|
||||
</Scripts>
|
||||
</Frame>
|
||||
</Ui>
|
||||
+120
-8
@@ -1,22 +1,86 @@
|
||||
-- HealBot Options panel file: HealBot_Options_Skins.lua
|
||||
-- Split from original HealBot_Options.lua
|
||||
|
||||
HealBot_Font_List = {
|
||||
{ text = "Friz Quadrata", file = "Fonts\\FRIZQT__.TTF" },
|
||||
{ text = "Arial Narrow", file = "Fonts\\ARIALN.TTF" },
|
||||
{ text = "Skurri", file = "Fonts\\skurri.ttf" },
|
||||
{ text = "Morpheus", file = "Fonts\\MORPHEUS.ttf" },
|
||||
}
|
||||
|
||||
function HealBot_Options_FontDD_OnLoad(this)
|
||||
UIDropDownMenu_Initialize(this, HealBot_Options_FontDD_Initialize)
|
||||
UIDropDownMenu_SetWidth(110, this)
|
||||
end
|
||||
|
||||
function HealBot_Options_FontDD_Initialize()
|
||||
local currentFont = (HealBot_Config.bfont and HealBot_Config.bfont[HealBot_Config.Current_Skin]) or "Fonts\\FRIZQT__.TTF"
|
||||
for i = 1, getn(HealBot_Font_List) do
|
||||
local fontItem = HealBot_Font_List[i]
|
||||
local info = {}
|
||||
info.text = fontItem.text
|
||||
info.func = HealBot_Options_FontDD_OnClick
|
||||
info.value = fontItem.file
|
||||
info.checked = (currentFont == fontItem.file)
|
||||
UIDropDownMenu_AddButton(info)
|
||||
end
|
||||
end
|
||||
|
||||
function HealBot_Options_FontDD_OnClick()
|
||||
UIDropDownMenu_SetSelectedID(HealBot_Options_Font_Dropdown, this:GetID())
|
||||
if HealBot_Options_Font_DropdownText then
|
||||
HealBot_Options_Font_DropdownText:SetText(this:GetText())
|
||||
end
|
||||
if not HealBot_Config.bfont then HealBot_Config.bfont = {} end
|
||||
HealBot_Config.bfont[HealBot_Config.Current_Skin] = this.value
|
||||
HealBot_Action_ResetSkin()
|
||||
end
|
||||
|
||||
-- HealBot_Options_BarMaxRowsS_OnValueChanged: UI handler for OnValueChanged options panel.
|
||||
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()
|
||||
function HealBot_Options_GridOrientationDD_OnLoad(this)
|
||||
UIDropDownMenu_Initialize(this, HealBot_Options_GridOrientationDD_Initialize);
|
||||
UIDropDownMenu_SetWidth(110, this);
|
||||
end
|
||||
|
||||
function HealBot_Options_GridOrientationDD_Initialize()
|
||||
local orient = HealBot_Config.GridOrientation and HealBot_Config.GridOrientation[HealBot_Config.Current_Skin] or 1;
|
||||
local info = {};
|
||||
info.text = "Vertical (Columns)";
|
||||
info.func = HealBot_Options_GridOrientationDD_OnClick;
|
||||
info.value = 1;
|
||||
info.checked = (orient == 1);
|
||||
UIDropDownMenu_AddButton(info);
|
||||
|
||||
info = {};
|
||||
info.text = "Horizontal (Rows)";
|
||||
info.func = HealBot_Options_GridOrientationDD_OnClick;
|
||||
info.value = 2;
|
||||
info.checked = (orient == 2);
|
||||
UIDropDownMenu_AddButton(info);
|
||||
end
|
||||
|
||||
function HealBot_Options_GridOrientationDD_OnClick()
|
||||
UIDropDownMenu_SetSelectedID(HealBot_Options_GridOrientation_Dropdown, this:GetID());
|
||||
if not HealBot_Config.GridOrientation then HealBot_Config.GridOrientation = {} end
|
||||
HealBot_Config.GridOrientation[HealBot_Config.Current_Skin] = this.value;
|
||||
HealBot_Action_PartyChanged()
|
||||
|
||||
if (this.value == 2) then
|
||||
HealBot_Options_BarMaxRowsS:Hide();
|
||||
HealBot_Options_BarNumColsS:Show();
|
||||
else
|
||||
HealBot_Options_BarMaxRowsS:Show();
|
||||
HealBot_Options_BarNumColsS:Hide();
|
||||
end
|
||||
end
|
||||
|
||||
-- HealBot_Options_NewSkin_OnTextChanged: UI handler for OnTextChanged options panel.
|
||||
function HealBot_Options_NewSkin_OnTextChanged(this)
|
||||
local text= this:GetText()
|
||||
if string.len(text)>0 then
|
||||
@@ -25,6 +89,7 @@ function HealBot_Options_NewSkin_OnTextChanged(this)
|
||||
HealBot_Options_NewSkinb:Disable();
|
||||
end
|
||||
end
|
||||
-- HealBot_Options_NewSkinb_OnClick: UI handler for OnClick options panel.
|
||||
function HealBot_Options_NewSkinb_OnClick(this)
|
||||
HealBot_Config.numcols[HealBot_Options_NewSkin:GetText()] = HealBot_Config.numcols[HealBot_Config.Current_Skin]
|
||||
if not HealBot_Config.bmaxrows then HealBot_Config.bmaxrows = {} end
|
||||
@@ -67,12 +132,31 @@ function HealBot_Options_NewSkinb_OnClick(this)
|
||||
HealBot_Config.babortcola[HealBot_Options_NewSkin:GetText()] = HealBot_Config.babortcola[HealBot_Config.Current_Skin]
|
||||
HealBot_Config.ShowHeader[HealBot_Options_NewSkin:GetText()] = HealBot_Config.ShowHeader[HealBot_Config.Current_Skin]
|
||||
|
||||
if not HealBot_Config.bcolormaxr then HealBot_Config.bcolormaxr = {} end
|
||||
if not HealBot_Config.bcolormaxg then HealBot_Config.bcolormaxg = {} end
|
||||
if not HealBot_Config.bcolormaxb then HealBot_Config.bcolormaxb = {} end
|
||||
if not HealBot_Config.bcolorminr then HealBot_Config.bcolorminr = {} end
|
||||
if not HealBot_Config.bcolorming then HealBot_Config.bcolorming = {} end
|
||||
if not HealBot_Config.bcolorminb then HealBot_Config.bcolorminb = {} end
|
||||
if not HealBot_Config.bfont then HealBot_Config.bfont = {} end
|
||||
|
||||
local curSkin = HealBot_Config.Current_Skin
|
||||
local newSkin = HealBot_Options_NewSkin:GetText()
|
||||
HealBot_Config.bcolormaxr[newSkin] = HealBot_Config.bcolormaxr[curSkin] or 0
|
||||
HealBot_Config.bcolormaxg[newSkin] = HealBot_Config.bcolormaxg[curSkin] or 1
|
||||
HealBot_Config.bcolormaxb[newSkin] = HealBot_Config.bcolormaxb[curSkin] or 0
|
||||
HealBot_Config.bcolorminr[newSkin] = HealBot_Config.bcolorminr[curSkin] or 1
|
||||
HealBot_Config.bcolorming[newSkin] = HealBot_Config.bcolorming[curSkin] or 0
|
||||
HealBot_Config.bcolorminb[newSkin] = HealBot_Config.bcolorminb[curSkin] or 0
|
||||
HealBot_Config.bfont[newSkin] = HealBot_Config.bfont[curSkin] or "Fonts\\FRIZQT__.TTF"
|
||||
|
||||
table.insert(HealBot_Skins,2,HealBot_Options_NewSkin:GetText())
|
||||
HealBot_Config.Skin_ID = 2;
|
||||
HealBot_Config.Skins = HealBot_Skins; HealBot_Config.Current_Skin = HealBot_Options_NewSkin:GetText();
|
||||
HealBot_Options_SetSkins()
|
||||
HealBot_Options_NewSkin:SetText("")
|
||||
end
|
||||
-- HealBot_Options_DeleteSkin_OnClick: UI handler for OnClick options panel.
|
||||
function HealBot_Options_DeleteSkin_OnClick(this)
|
||||
if HealBot_Config.Current_Skin~=HEALBOT_SKINS_STD then
|
||||
HealBot_Config.numcols[HealBot_Options_SkinsText:GetText()] = nil
|
||||
@@ -113,6 +197,13 @@ function HealBot_Options_DeleteSkin_OnClick(this)
|
||||
HealBot_Config.babortcolb[HealBot_Options_SkinsText:GetText()] = nil
|
||||
HealBot_Config.babortcola[HealBot_Options_SkinsText:GetText()] = nil
|
||||
HealBot_Config.ShowHeader[HealBot_Options_SkinsText:GetText()] = nil
|
||||
if HealBot_Config.bcolormaxr then HealBot_Config.bcolormaxr[HealBot_Options_SkinsText:GetText()] = nil end
|
||||
if HealBot_Config.bcolormaxg then HealBot_Config.bcolormaxg[HealBot_Options_SkinsText:GetText()] = nil end
|
||||
if HealBot_Config.bcolormaxb then HealBot_Config.bcolormaxb[HealBot_Options_SkinsText:GetText()] = nil end
|
||||
if HealBot_Config.bcolorminr then HealBot_Config.bcolorminr[HealBot_Options_SkinsText:GetText()] = nil end
|
||||
if HealBot_Config.bcolorming then HealBot_Config.bcolorming[HealBot_Options_SkinsText:GetText()] = nil end
|
||||
if HealBot_Config.bcolorminb then HealBot_Config.bcolorminb[HealBot_Options_SkinsText:GetText()] = nil end
|
||||
if HealBot_Config.bfont then HealBot_Config.bfont[HealBot_Options_SkinsText:GetText()] = nil end
|
||||
table.remove(HealBot_Skins,HealBot_Config.Skin_ID)
|
||||
HealBot_Config.Skin_ID = 1;
|
||||
HealBot_Config.Skins = HealBot_Skins;
|
||||
@@ -120,6 +211,7 @@ function HealBot_Options_DeleteSkin_OnClick(this)
|
||||
HealBot_Options_SetSkins()
|
||||
end
|
||||
end
|
||||
-- HealBot_Options_Skins_DropDown: UI handler for DropDown options panel.
|
||||
function HealBot_Options_Skins_DropDown()
|
||||
for i=1, getn(HealBot_Skins), 1 do
|
||||
local info = {};
|
||||
@@ -128,18 +220,22 @@ function HealBot_Options_Skins_DropDown()
|
||||
UIDropDownMenu_AddButton(info);
|
||||
end
|
||||
end
|
||||
-- HealBot_Options_Skins_Initialize: UI handler for Initialize options panel.
|
||||
function HealBot_Options_Skins_Initialize()
|
||||
UIDropDownMenu_Initialize(HealBot_Options_Skins,HealBot_Options_Skins_DropDown)
|
||||
end
|
||||
-- HealBot_Options_Skins_Refresh: UI handler for Refresh options panel.
|
||||
function HealBot_Options_Skins_Refresh(onselect)
|
||||
if not HealBot_Config.Skin_ID then return end
|
||||
if not onselect then HealBot_Options_Skins_Initialize() end -- or wrong menu may be used !
|
||||
HealBot_UIDropDownMenu_SetSelectedID(HealBot_Options_Skins,HealBot_Config.Skin_ID)
|
||||
end
|
||||
-- HealBot_Options_Skins_OnLoad: UI handler for OnLoad options panel.
|
||||
function HealBot_Options_Skins_OnLoad()
|
||||
UIDropDownMenu_Initialize(this, HealBot_Options_Skins_DropDown)
|
||||
UIDropDownMenu_SetWidth(100, this)
|
||||
end
|
||||
-- HealBot_Options_Skins_OnSelect: UI handler for OnSelect options panel.
|
||||
function HealBot_Options_Skins_OnSelect()
|
||||
HealBot_Config.Skin_ID = this:GetID()
|
||||
HealBot_Options_Skins_Refresh(true)
|
||||
@@ -148,3 +244,19 @@ function HealBot_Options_Skins_OnSelect()
|
||||
HealBot_Options_SetSkins()
|
||||
end
|
||||
end
|
||||
|
||||
function HealBot_Options_TestBarsButton_OnClick(this)
|
||||
if HealBot_Config.TestBarsOn then
|
||||
HealBot_Config.TestBarsOn = false
|
||||
this:SetText(HEALBOT_OPTIONS_TESTBARS.." OFF")
|
||||
else
|
||||
HealBot_Config.TestBarsOn = true
|
||||
this:SetText(HEALBOT_OPTIONS_TESTBARS.." ON")
|
||||
end
|
||||
HealBot_Action_PartyChanged()
|
||||
end
|
||||
|
||||
function HealBot_Options_NumTestBars_OnValueChanged(this)
|
||||
HealBot_Config.numTestBars = this:GetValue()
|
||||
if HealBot_Config.TestBarsOn then HealBot_Action_PartyChanged() end
|
||||
end
|
||||
|
||||
+460
-540
File diff suppressed because it is too large
Load Diff
+25
-15
@@ -1,9 +1,11 @@
|
||||
-- HealBot Options panel file: HealBot_Options_Spells.lua
|
||||
-- Split from original HealBot_Options.lua
|
||||
|
||||
-- HealBot_ComboButtons_Button_OnLoad: UI handler for dropdown combo box.
|
||||
function HealBot_ComboButtons_Button_OnLoad(this,text)
|
||||
getglobal(this:GetName().."Text"):SetText(text);
|
||||
end
|
||||
-- HealBot_ComboButtons_Button_OnClick: Click event handler.
|
||||
function HealBot_ComboButtons_Button_OnClick(this,id)
|
||||
if HealBot_Options_ComboButtons_Button>0 then
|
||||
getglobal("HealBot_ComboButtons_Button"..HealBot_Options_ComboButtons_Button):SetChecked(nil);
|
||||
@@ -14,27 +16,35 @@ function HealBot_ComboButtons_Button_OnClick(this,id)
|
||||
end
|
||||
HealBot_Options_ComboClass_Text()
|
||||
end
|
||||
-- HealBot_Options_ShowTooltip_OnLoad: UI handler for OnLoad options panel.
|
||||
function HealBot_Options_ShowTooltip_OnLoad(this,text)
|
||||
getglobal(this:GetName().."Text"):SetText(text);
|
||||
end
|
||||
-- HealBot_Options_ShowTooltip_OnClick: UI handler for OnClick options panel.
|
||||
function HealBot_Options_ShowTooltip_OnClick(this)
|
||||
HealBot_Config.ShowTooltip = this:GetChecked() or 0;
|
||||
end
|
||||
-- HealBot_Options_ShowTooltipTarget_OnLoad: UI handler for OnLoad options panel.
|
||||
function HealBot_Options_ShowTooltipTarget_OnLoad(this,text)
|
||||
getglobal(this:GetName().."Text"):SetText(text);
|
||||
end
|
||||
-- HealBot_Options_ShowTooltipTarget_OnClick: UI handler for OnClick options panel.
|
||||
function HealBot_Options_ShowTooltipTarget_OnClick(this)
|
||||
HealBot_Config.Tooltip_ShowTarget = this:GetChecked() or 0;
|
||||
end
|
||||
-- HealBot_Options_ShowTooltipSpellDetail_OnLoad: UI handler for OnLoad options panel.
|
||||
function HealBot_Options_ShowTooltipSpellDetail_OnLoad(this,text)
|
||||
getglobal(this:GetName().."Text"):SetText(text);
|
||||
end
|
||||
-- HealBot_Options_ShowTooltipSpellDetail_OnClick: UI handler for OnClick options panel.
|
||||
function HealBot_Options_ShowTooltipSpellDetail_OnClick(this)
|
||||
HealBot_Config.Tooltip_ShowSpellDetail = this:GetChecked() or 0;
|
||||
end
|
||||
-- HealBot_Options_ShowTooltipInstant_OnLoad: UI handler for OnLoad options panel.
|
||||
function HealBot_Options_ShowTooltipInstant_OnLoad(this,text)
|
||||
getglobal(this:GetName().."Text"):SetText(text);
|
||||
end
|
||||
-- HealBot_Options_ShowTooltipInstant_OnClick: UI handler for OnClick options panel.
|
||||
function HealBot_Options_ShowTooltipInstant_OnClick(this)
|
||||
HealBot_Config.Tooltip_Recommend = this:GetChecked() or 0;
|
||||
end
|
||||
@@ -46,6 +56,7 @@ local HealBot_Options_TooltipPos_List = {
|
||||
HEALBOT_TOOLTIP_POSBELOW,
|
||||
}
|
||||
|
||||
-- HealBot_Options_TooltipPos_DropDown: UI handler for DropDown options panel.
|
||||
function HealBot_Options_TooltipPos_DropDown()
|
||||
for i=1, getn(HealBot_Options_TooltipPos_List), 1 do
|
||||
local info = {};
|
||||
@@ -55,21 +66,25 @@ function HealBot_Options_TooltipPos_DropDown()
|
||||
end
|
||||
end
|
||||
|
||||
-- HealBot_Options_TooltipPos_Initialize: UI handler for Initialize options panel.
|
||||
function HealBot_Options_TooltipPos_Initialize()
|
||||
UIDropDownMenu_Initialize(HealBot_Options_TooltipPos,HealBot_Options_TooltipPos_DropDown)
|
||||
end
|
||||
|
||||
-- HealBot_Options_TooltipPos_Refresh: UI handler for Refresh options panel.
|
||||
function HealBot_Options_TooltipPos_Refresh(onselect)
|
||||
if not HealBot_Config.TooltipPos then return end
|
||||
if not onselect then HealBot_Options_TooltipPos_Initialize() end -- or wrong menu may be used !
|
||||
HealBot_UIDropDownMenu_SetSelectedID(HealBot_Options_TooltipPos,HealBot_Config.TooltipPos)
|
||||
end
|
||||
|
||||
-- HealBot_Options_TooltipPos_OnLoad: UI handler for OnLoad options panel.
|
||||
function HealBot_Options_TooltipPos_OnLoad()
|
||||
UIDropDownMenu_Initialize(this, HealBot_Options_TooltipPos_DropDown)
|
||||
UIDropDownMenu_SetWidth(128, this)
|
||||
end
|
||||
|
||||
-- HealBot_Options_TooltipPos_OnSelect: UI handler for OnSelect options panel.
|
||||
function HealBot_Options_TooltipPos_OnSelect()
|
||||
HealBot_Config.TooltipPos = this:GetID()
|
||||
HealBot_Options_TooltipPos_Refresh(true)
|
||||
@@ -91,6 +106,7 @@ local HealBot_Options_ComboClass_List = {
|
||||
|
||||
|
||||
|
||||
-- HealBot_Options_ComboClass_Text: UI handler for Text options panel.
|
||||
function HealBot_Options_ComboClass_Text()
|
||||
local class=UnitClass("Player");
|
||||
local combo = HealBot_Config.KeyCombo[class]
|
||||
@@ -108,6 +124,7 @@ end
|
||||
|
||||
|
||||
|
||||
-- HealBot_Options_ComboClass_Button: UI handler for Button options panel.
|
||||
function HealBot_Options_ComboClass_Button()
|
||||
local button = "Left"
|
||||
if HealBot_Options_ComboButtons_Button==2 then button = "Middle"; end
|
||||
@@ -128,10 +145,12 @@ ColorPickerFrame.func = HealBot_Returned_Colours
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
-- HealBot_Options_EditBox_OnLoad: UI handler for OnLoad options panel.
|
||||
function HealBot_Options_EditBox_OnLoad(this,text)
|
||||
getglobal(this:GetName().."Text"):SetText(text);
|
||||
end
|
||||
|
||||
-- HealBot_Options_Click_OnTextChanged: UI handler for OnTextChanged options panel.
|
||||
function HealBot_Options_Click_OnTextChanged(this)
|
||||
local class=UnitClass("Player");
|
||||
if not HealBot_Config.KeyCombo[class] then HealBot_Config.KeyCombo[class] = {} end
|
||||
@@ -141,6 +160,7 @@ function HealBot_Options_Click_OnTextChanged(this)
|
||||
HealBot_Options_KeyCombo_Change()
|
||||
end
|
||||
|
||||
-- HealBot_Options_Shift_OnTextChanged: UI handler for OnTextChanged options panel.
|
||||
function HealBot_Options_Shift_OnTextChanged(this)
|
||||
local class=UnitClass("Player");
|
||||
if not HealBot_Config.KeyCombo[class] then HealBot_Config.KeyCombo[class] = {} end
|
||||
@@ -150,6 +170,7 @@ function HealBot_Options_Shift_OnTextChanged(this)
|
||||
HealBot_Options_KeyCombo_Change()
|
||||
end
|
||||
|
||||
-- HealBot_Options_Ctrl_OnTextChanged: UI handler for OnTextChanged options panel.
|
||||
function HealBot_Options_Ctrl_OnTextChanged(this)
|
||||
local class=UnitClass("Player");
|
||||
if not HealBot_Config.KeyCombo[class] then HealBot_Config.KeyCombo[class] = {} end
|
||||
@@ -159,6 +180,7 @@ function HealBot_Options_Ctrl_OnTextChanged(this)
|
||||
HealBot_Options_KeyCombo_Change()
|
||||
end
|
||||
|
||||
-- HealBot_Options_ShiftCtrl_OnTextChanged: UI handler for OnTextChanged options panel.
|
||||
function HealBot_Options_ShiftCtrl_OnTextChanged(this)
|
||||
local class=UnitClass("Player");
|
||||
if not HealBot_Config.KeyCombo[class] then HealBot_Config.KeyCombo[class] = {} end
|
||||
@@ -168,32 +190,20 @@ function HealBot_Options_ShiftCtrl_OnTextChanged(this)
|
||||
HealBot_Options_KeyCombo_Change()
|
||||
end
|
||||
|
||||
-- HealBot_Options_KeyCombo_Change: Applies binding combo updates.
|
||||
function HealBot_Options_KeyCombo_Change()
|
||||
local class=UnitClass("Player");
|
||||
HealBot_Config.KeyCombo[class]=HealBot_Config.KeyCombo[class];
|
||||
|
||||
end
|
||||
|
||||
-- HealBot_Options_EnableHealthy_OnLoad: UI handler for OnLoad options panel.
|
||||
function HealBot_Options_EnableHealthy_OnLoad(this,text)
|
||||
getglobal(this:GetName().."Text"):SetText(text);
|
||||
end
|
||||
|
||||
-- HealBot_Options_EnableHealthy_OnClick: UI handler for OnClick options panel.
|
||||
function HealBot_Options_EnableHealthy_OnClick(this)
|
||||
HealBot_Config.EnableHealthy = this:GetChecked() or 0;
|
||||
HealBot_Action_EnableButtons();
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
-- Chat Custom Messages UI Logic
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
|
||||
+283
-271
@@ -2,307 +2,319 @@
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://www.blizzard.com/wow/ui/ ..\FrameXML\UI.xsd">
|
||||
<Script file="HealBot_Options_Spells.lua" />
|
||||
<Frame name="HealBot_Options_Panel2" parent="HealBot_Options" hidden="true" setAllPoints="true">
|
||||
<Frames>
|
||||
<Frame name="HealBot_Options_KeysFrame" inherits="OptionFrameBoxTemplate">
|
||||
<Frame name="HealBot_Options_Panel2" parent="HealBot_Options" hidden="true" setAllPoints="true">
|
||||
<Frames>
|
||||
<Frame name="HealBot_Options_KeysFrame">
|
||||
<Size>
|
||||
<AbsDimension y="268"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="21" y="-30"/>
|
||||
<AbsDimension x="20" y="-30"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
<Anchor point="TOPRIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="-21" y="0"/>
|
||||
<AbsDimension x="-20" y="-30"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Layers>
|
||||
<Layer level="BACKGROUND">
|
||||
<FontString name="HealBot_ComboButtons_ButtonText1" text="HEALBOT_OPTIONS_USEBUTTONS" inherits="GameFontNormalSmall">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="110" y="-10" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
<Frames>
|
||||
<Slider name="HealBot_Options_Dummy" hidden="true" inherits="HealBot_Options_SliderTemplate">
|
||||
<Anchors>
|
||||
<Anchor point="TOP">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="0" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</Slider>
|
||||
<Frame name="HealBot_Options_ComboClassButton">
|
||||
<Layers>
|
||||
<Layer level="BACKGROUND">
|
||||
<FontString name="HealBot_ComboButtons_ButtonText" text="HEALBOT_OPTIONS_COMBOBUTTON" inherits="GameFontNormalSmall">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_Dummy" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="-5" y="-25" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
</Frame>
|
||||
|
||||
<CheckButton name="HealBot_ComboButtons_Button1" inherits="SendMailRadioButtonTemplate" id="1">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_Dummy" relativePoint="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="40" y="-30"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_ComboButtons_Button_OnLoad(this,HEALBOT_OPTIONS_BUTTONLEFT)</OnLoad>
|
||||
<OnClick>HealBot_ComboButtons_Button_OnClick(this,this:GetID())</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
|
||||
<Layers>
|
||||
<Layer level="BACKGROUND">
|
||||
<FontString name="HealBot_ComboButtons_ButtonText1" text="HEALBOT_OPTIONS_USEBUTTONS" inherits="GameFontNormalSmall">
|
||||
<Anchors>
|
||||
<Anchor point="TOP">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-5"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
<Frames>
|
||||
<Slider name="HealBot_Options_Dummy" hidden="true" inherits="HealBot_Options_SliderTemplate">
|
||||
<Anchors>
|
||||
<Anchor point="TOP">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="0"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</Slider>
|
||||
|
||||
<Frame name="HealBot_Options_ComboClassButton">
|
||||
<Size>
|
||||
<AbsDimension x="40" y="16"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_Dummy" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-22"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Layers>
|
||||
<Layer level="BACKGROUND">
|
||||
<FontString name="HealBot_ComboButtons_ButtonText" text="HEALBOT_OPTIONS_COMBOBUTTON" inherits="GameFontNormalSmall">
|
||||
<Anchors>
|
||||
<Anchor point="LEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="0"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
</Frame>
|
||||
|
||||
<CheckButton name="HealBot_ComboButtons_Button2" inherits="SendMailRadioButtonTemplate" id="2">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_ComboButtons_Button1" relativePoint="TOPRIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="40" y="0"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_ComboButtons_Button_OnLoad(this,HEALBOT_OPTIONS_BUTTONMIDDLE)</OnLoad>
|
||||
<OnClick>HealBot_ComboButtons_Button_OnClick(this,this:GetID())</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
<CheckButton name="HealBot_ComboButtons_Button3" inherits="SendMailRadioButtonTemplate" id="3">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_ComboButtons_Button2" relativePoint="TOPRIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="50" y="0"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_ComboButtons_Button_OnLoad(this,HEALBOT_OPTIONS_BUTTONRIGHT)</OnLoad>
|
||||
<OnClick>HealBot_ComboButtons_Button_OnClick(this,this:GetID())</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
<CheckButton name="HealBot_ComboButtons_Button4" inherits="SendMailRadioButtonTemplate" id="4">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_ComboButtons_Button1" relativePoint="TOPRIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-18"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_ComboButtons_Button_OnLoad(this,HEALBOT_OPTIONS_BUTTON4)</OnLoad>
|
||||
<OnClick>HealBot_ComboButtons_Button_OnClick(this,this:GetID())</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
<CheckButton name="HealBot_ComboButtons_Button5" inherits="SendMailRadioButtonTemplate" id="5">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_ComboButtons_Button4" relativePoint="TOPRIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="55" y="0"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_ComboButtons_Button_OnLoad(this,HEALBOT_OPTIONS_BUTTON5)</OnLoad>
|
||||
<OnClick>HealBot_ComboButtons_Button_OnClick(this,this:GetID())</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
<CheckButton name="HealBot_ComboButtons_Button1" inherits="SendMailRadioButtonTemplate" id="1">
|
||||
<Anchors>
|
||||
<Anchor point="LEFT" relativeTo="HealBot_Options_ComboClassButton" relativePoint="RIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="5" y="0"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_ComboButtons_Button_OnLoad(this,HEALBOT_OPTIONS_BUTTONLEFT)</OnLoad>
|
||||
<OnClick>HealBot_ComboButtons_Button_OnClick(this,this:GetID())</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
|
||||
<EditBox name="HealBot_Options_Click" inherits="HealBot_Options_EditBoxTemplate">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_Dummy" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="-5" y="-68"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>
|
||||
HealBot_Options_EditBox_OnLoad(this,HEALBOT_OPTIONS_CLICK)
|
||||
</OnLoad>
|
||||
<OnTextChanged>
|
||||
HealBot_Options_Click_OnTextChanged(this)
|
||||
</OnTextChanged>
|
||||
</Scripts>
|
||||
</EditBox>
|
||||
<EditBox name="HealBot_Options_Shift" inherits="HealBot_Options_EditBoxTemplate">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_Click" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-20"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>
|
||||
HealBot_Options_EditBox_OnLoad(this,HEALBOT_OPTIONS_SHIFT)
|
||||
</OnLoad>
|
||||
<OnTextChanged>
|
||||
HealBot_Options_Shift_OnTextChanged(this)
|
||||
</OnTextChanged>
|
||||
</Scripts>
|
||||
</EditBox>
|
||||
<EditBox name="HealBot_Options_Ctrl" inherits="HealBot_Options_EditBoxTemplate">
|
||||
<Anchors>
|
||||
<Anchor point="TOPRIGHT" relativeTo="HealBot_Options_Shift" relativePoint="BOTTOMRIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-20"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>
|
||||
HealBot_Options_EditBox_OnLoad(this,HEALBOT_OPTIONS_CTRL)
|
||||
</OnLoad>
|
||||
<OnTextChanged>
|
||||
HealBot_Options_Ctrl_OnTextChanged(this)
|
||||
</OnTextChanged>
|
||||
</Scripts>
|
||||
</EditBox>
|
||||
<EditBox name="HealBot_Options_ShiftCtrl" inherits="HealBot_Options_EditBoxTemplate">
|
||||
<Anchors>
|
||||
<Anchor point="TOPRIGHT" relativeTo="HealBot_Options_Ctrl" relativePoint="BOTTOMRIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-20"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>
|
||||
HealBot_Options_EditBox_OnLoad(this,HEALBOT_OPTIONS_SHIFTCTRL)
|
||||
</OnLoad>
|
||||
<OnTextChanged>
|
||||
HealBot_Options_ShiftCtrl_OnTextChanged(this)
|
||||
</OnTextChanged>
|
||||
</Scripts>
|
||||
</EditBox>
|
||||
<CheckButton name="HealBot_Options_EnableHealthy" inherits="OptionsCheckButtonTemplate">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_ShiftCtrl" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="25" y="-4" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_Options_EnableHealthy_OnLoad(this,HEALBOT_OPTIONS_ENABLEHEALTHY)</OnLoad>
|
||||
<OnClick>HealBot_Options_EnableHealthy_OnClick(this)</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
<CheckButton name="HealBot_ComboButtons_Button2" inherits="SendMailRadioButtonTemplate" id="2">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_ComboButtons_Button1" relativePoint="TOPRIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="40" y="0"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_ComboButtons_Button_OnLoad(this,HEALBOT_OPTIONS_BUTTONMIDDLE)</OnLoad>
|
||||
<OnClick>HealBot_ComboButtons_Button_OnClick(this,this:GetID())</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
|
||||
<CheckButton name="HealBot_ComboButtons_Button3" inherits="SendMailRadioButtonTemplate" id="3">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_ComboButtons_Button2" relativePoint="TOPRIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="50" y="0"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_ComboButtons_Button_OnLoad(this,HEALBOT_OPTIONS_BUTTONRIGHT)</OnLoad>
|
||||
<OnClick>HealBot_ComboButtons_Button_OnClick(this,this:GetID())</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
|
||||
<CheckButton name="HealBot_ComboButtons_Button4" inherits="SendMailRadioButtonTemplate" id="4">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_ComboButtons_Button1" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-4"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_ComboButtons_Button_OnLoad(this,HEALBOT_OPTIONS_BUTTON4)</OnLoad>
|
||||
<OnClick>HealBot_ComboButtons_Button_OnClick(this,this:GetID())</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
|
||||
<CheckButton name="HealBot_ComboButtons_Button5" inherits="SendMailRadioButtonTemplate" id="5">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_ComboButtons_Button2" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-4"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_ComboButtons_Button_OnLoad(this,HEALBOT_OPTIONS_BUTTON5)</OnLoad>
|
||||
<OnClick>HealBot_ComboButtons_Button_OnClick(this,this:GetID())</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
|
||||
<EditBox name="HealBot_Options_Click" inherits="HealBot_Options_EditBoxTemplate">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_Dummy" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-68"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>
|
||||
HealBot_Options_EditBox_OnLoad(this,HEALBOT_OPTIONS_CLICK)
|
||||
</OnLoad>
|
||||
<OnTextChanged>
|
||||
HealBot_Options_Click_OnTextChanged(this)
|
||||
</OnTextChanged>
|
||||
</Scripts>
|
||||
</EditBox>
|
||||
|
||||
<EditBox name="HealBot_Options_Shift" inherits="HealBot_Options_EditBoxTemplate">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_Click" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-20"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>
|
||||
HealBot_Options_EditBox_OnLoad(this,HEALBOT_OPTIONS_SHIFT)
|
||||
</OnLoad>
|
||||
<OnTextChanged>
|
||||
HealBot_Options_Shift_OnTextChanged(this)
|
||||
</OnTextChanged>
|
||||
</Scripts>
|
||||
</EditBox>
|
||||
|
||||
<EditBox name="HealBot_Options_Ctrl" inherits="HealBot_Options_EditBoxTemplate">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_Shift" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-20"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>
|
||||
HealBot_Options_EditBox_OnLoad(this,HEALBOT_OPTIONS_CTRL)
|
||||
</OnLoad>
|
||||
<OnTextChanged>
|
||||
HealBot_Options_Ctrl_OnTextChanged(this)
|
||||
</OnTextChanged>
|
||||
</Scripts>
|
||||
</EditBox>
|
||||
|
||||
<EditBox name="HealBot_Options_ShiftCtrl" inherits="HealBot_Options_EditBoxTemplate">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_Ctrl" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-20"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>
|
||||
HealBot_Options_EditBox_OnLoad(this,HEALBOT_OPTIONS_SHIFTCTRL)
|
||||
</OnLoad>
|
||||
<OnTextChanged>
|
||||
HealBot_Options_ShiftCtrl_OnTextChanged(this)
|
||||
</OnTextChanged>
|
||||
</Scripts>
|
||||
</EditBox>
|
||||
|
||||
<CheckButton name="HealBot_Options_EnableHealthy" inherits="OptionsCheckButtonTemplate">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_ShiftCtrl" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-4"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_Options_EnableHealthy_OnLoad(this,HEALBOT_OPTIONS_ENABLEHEALTHY)</OnLoad>
|
||||
<OnClick>HealBot_Options_EnableHealthy_OnClick(this)</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
</Frames>
|
||||
</Frame>
|
||||
|
||||
<Frame name="HealBot_Options_TooltipsPanel" inherits="OptionFrameBoxTemplate">
|
||||
<Scripts>
|
||||
<OnLoad>
|
||||
this:SetBackdropBorderColor(0.4, 0.4, 0.4);
|
||||
this:SetBackdropColor(0, 0, 0, 0);
|
||||
</OnLoad>
|
||||
</Scripts>
|
||||
<Frame name="HealBot_Options_TooltipsPanel">
|
||||
<Size>
|
||||
<AbsDimension y="118"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_EnableHealthy" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="20" y="-300"/>
|
||||
<AbsDimension x="0" y="-12"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
<Anchor point="TOPRIGHT">
|
||||
<Anchor point="TOPRIGHT" relativeTo="HealBot_Options_ShiftCtrl" relativePoint="BOTTOMRIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="-20" y="-180"/>
|
||||
<AbsDimension x="0" y="-12"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Frames>
|
||||
<CheckButton name="HealBot_Options_ShowTooltip" inherits="OptionsCheckButtonTemplate">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_TooltipsPanel" relativePoint="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="20" y="-4" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_Options_ShowTooltip_OnLoad(this,HEALBOT_OPTIONS_SHOWTOOLTIP)</OnLoad>
|
||||
<OnClick>HealBot_Options_ShowTooltip_OnClick(this)</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
<Frame name="HealBot_Options_TooltipPos" inherits="UIDropDownMenuTemplate" id="1">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_ShowTooltip" relativePoint="TOPRIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="68" y="-2" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_Options_TooltipPos_OnLoad(this) </OnLoad>
|
||||
</Scripts>
|
||||
</Frame>
|
||||
<CheckButton name="HealBot_Options_ShowTooltipTarget" inherits="OptionsCheckButtonTemplate">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_TooltipsPanel" relativePoint="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="20" y="-30" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_Options_ShowTooltipTarget_OnLoad(this,HEALBOT_OPTIONS_SHOWUNITTOOLTIP)</OnLoad>
|
||||
<OnClick>HealBot_Options_ShowTooltipTarget_OnClick(this)</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
<CheckButton name="HealBot_Options_ShowTooltipSpellDetail" inherits="OptionsCheckButtonTemplate">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_TooltipsPanel" relativePoint="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="20" y="-55" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_Options_ShowTooltipSpellDetail_OnLoad(this,HEALBOT_OPTIONS_SHOWDETTOOLTIP)</OnLoad>
|
||||
<OnClick>HealBot_Options_ShowTooltipSpellDetail_OnClick(this)</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
<CheckButton name="HealBot_Options_ShowTooltipInstant" inherits="OptionsCheckButtonTemplate">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_TooltipsPanel" relativePoint="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="20" y="-80" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_Options_ShowTooltipInstant_OnLoad(this,HEALBOT_OPTIONS_SHOWRECTOOLTIP)</OnLoad>
|
||||
<OnClick>HealBot_Options_ShowTooltipInstant_OnClick(this)</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
<Frames>
|
||||
<CheckButton name="HealBot_Options_ShowTooltip" inherits="OptionsCheckButtonTemplate">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="0"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_Options_ShowTooltip_OnLoad(this,HEALBOT_OPTIONS_SHOWTOOLTIP)</OnLoad>
|
||||
<OnClick>HealBot_Options_ShowTooltip_OnClick(this)</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
|
||||
</Frames>
|
||||
</Frame>
|
||||
</Frames>
|
||||
</Frame>
|
||||
<Frame name="HealBot_Options_TooltipPos" inherits="UIDropDownMenuTemplate" id="1">
|
||||
<Anchors>
|
||||
<Anchor point="TOPRIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="15" y="2"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_Options_TooltipPos_OnLoad(this)</OnLoad>
|
||||
</Scripts>
|
||||
</Frame>
|
||||
|
||||
<CheckButton name="HealBot_Options_ShowTooltipTarget" inherits="OptionsCheckButtonTemplate">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_ShowTooltip" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-4"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_Options_ShowTooltipTarget_OnLoad(this,HEALBOT_OPTIONS_SHOWUNITTOOLTIP)</OnLoad>
|
||||
<OnClick>HealBot_Options_ShowTooltipTarget_OnClick(this)</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
|
||||
<CheckButton name="HealBot_Options_ShowTooltipSpellDetail" inherits="OptionsCheckButtonTemplate">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_ShowTooltipTarget" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-4"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_Options_ShowTooltipSpellDetail_OnLoad(this,HEALBOT_OPTIONS_SHOWDETTOOLTIP)</OnLoad>
|
||||
<OnClick>HealBot_Options_ShowTooltipSpellDetail_OnClick(this)</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
|
||||
<CheckButton name="HealBot_Options_ShowTooltipInstant" inherits="OptionsCheckButtonTemplate">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_ShowTooltipSpellDetail" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-4"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_Options_ShowTooltipInstant_OnLoad(this,HEALBOT_OPTIONS_SHOWRECTOOLTIP)</OnLoad>
|
||||
<OnClick>HealBot_Options_ShowTooltipInstant_OnClick(this)</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
</Frames>
|
||||
</Frame>
|
||||
</Frames>
|
||||
</Frame>
|
||||
</Ui>
|
||||
|
||||
+433
-81
@@ -13,9 +13,11 @@ HealBot_Action_HealGroup = {
|
||||
};
|
||||
|
||||
HealBot_Action_HealTarget = {};
|
||||
HealBot_Action_HealFocus = {};
|
||||
HealBot_Action_HealButtons = {};
|
||||
HealBot_Action_UnitButtons = {};
|
||||
|
||||
-- HealBot_Action_SetTexture: Internal utility: HealBot_Action_SetTexture
|
||||
function HealBot_Action_SetTexture(bar, btexture)
|
||||
if not bar then return end
|
||||
if btexture == 10 then
|
||||
@@ -25,24 +27,26 @@ function HealBot_Action_SetTexture(bar, btexture)
|
||||
end
|
||||
end
|
||||
|
||||
-- HealBot_HealthColor: Computes health bar RGBA based on debuffs and class.
|
||||
function HealBot_HealthColor(unit, hlth, maxhlth)
|
||||
if HealBot_UnitDebuff[unit] then
|
||||
local debuff_type = HealBot_UnitDebuff[unit]
|
||||
local dr = HealBot_Config.CDCBarColour[debuff_type].R
|
||||
local dg = HealBot_Config.CDCBarColour[debuff_type].G
|
||||
local db = HealBot_Config.CDCBarColour[debuff_type].B
|
||||
if HealBot_Config.btexture[HealBot_Config.Current_Skin] == 10 then
|
||||
dr = dr * 4
|
||||
dg = dg * 4
|
||||
db = db * 4
|
||||
if dr > 1 then dr = 1 end
|
||||
if dg > 1 then dg = 1 end
|
||||
if db > 1 then db = 1 end
|
||||
local cached_debuff = HealBot_UnitDebuff[unit]
|
||||
if cached_debuff then
|
||||
local color = HealBot_Config.CDCBarColour[cached_debuff]
|
||||
if color then
|
||||
local dr = color.R
|
||||
local dg = color.G
|
||||
local db = color.B
|
||||
return dr, dg, db, HealBot_Config.Barcola[HealBot_Config.Current_Skin];
|
||||
end
|
||||
return dr, dg, db, HealBot_Config.Barcola[HealBot_Config.Current_Skin];
|
||||
end
|
||||
|
||||
local text = UnitName(unit);
|
||||
local text
|
||||
if string.find(unit, "^Test") then
|
||||
text = HealBot_Model.units[unit] and HealBot_Model.units[unit].name or unit
|
||||
else
|
||||
text = UnitName(unit) or unit
|
||||
end
|
||||
if not HealBot_HealsIn[text] then
|
||||
HealBot_HealsIn[text] = 0;
|
||||
end
|
||||
@@ -65,22 +69,38 @@ function HealBot_HealthColor(unit, hlth, maxhlth)
|
||||
end
|
||||
|
||||
local colorMode = HealBot_Config.bcolormode[HealBot_Config.Current_Skin] or 1
|
||||
if colorMode == 2 and HealBot_Model and HealBot_Model.units[unit] and HealBot_Model.units[unit].englishClass and RAID_CLASS_COLORS and RAID_CLASS_COLORS[HealBot_Model.units[unit].englishClass] then
|
||||
if colorMode == 2 and string.find(unit, "pet") then
|
||||
r, g, b = 0.4, 0.9, 0.6 -- Mint color
|
||||
elseif colorMode == 2 and HealBot_Model and HealBot_Model.units[unit] and HealBot_Model.units[unit].englishClass and RAID_CLASS_COLORS and RAID_CLASS_COLORS[HealBot_Model.units[unit].englishClass] then
|
||||
local engClass = HealBot_Model.units[unit].englishClass
|
||||
r = RAID_CLASS_COLORS[engClass].r
|
||||
g = RAID_CLASS_COLORS[engClass].g
|
||||
b = RAID_CLASS_COLORS[engClass].b
|
||||
elseif colorMode == 2 and string.find(unit, "pet") then
|
||||
r, g, b = 0.4, 0.9, 0.6 -- Mint color
|
||||
else
|
||||
if pct >= 0.98 then r = 0.0; end
|
||||
if pct < 0.98 and pct >= 0.65 then r = 2.94 - (pct * 3); end
|
||||
if pct <= 0.64 and pct > 0.31 then g = (pct - 0.31) * 3; end
|
||||
if pct <= 0.31 then g = 0.0; end
|
||||
local skin = HealBot_Config.Current_Skin
|
||||
local maxR = HealBot_Config.bcolormaxr and HealBot_Config.bcolormaxr[skin] or 0.0
|
||||
local maxG = HealBot_Config.bcolormaxg and HealBot_Config.bcolormaxg[skin] or 1.0
|
||||
local maxB = HealBot_Config.bcolormaxb and HealBot_Config.bcolormaxb[skin] or 0.0
|
||||
|
||||
local minR = HealBot_Config.bcolorminr and HealBot_Config.bcolorminr[skin] or 1.0
|
||||
local minG = HealBot_Config.bcolorming and HealBot_Config.bcolorming[skin] or 0.0
|
||||
local minB = HealBot_Config.bcolorminb and HealBot_Config.bcolorminb[skin] or 0.0
|
||||
|
||||
if maxR == 0 and maxG == 1 and maxB == 0 and minR == 1 and minG == 0 and minB == 0 then
|
||||
if pct >= 0.98 then r = 0.0; end
|
||||
if pct < 0.98 and pct >= 0.65 then r = 2.94 - (pct * 3); end
|
||||
if pct <= 0.64 and pct > 0.31 then g = (pct - 0.31) * 3; end
|
||||
if pct <= 0.31 then g = 0.0; end
|
||||
else
|
||||
r = minR + (maxR - minR) * pct
|
||||
g = minG + (maxG - minG) * pct
|
||||
b = minB + (maxB - minB) * pct
|
||||
end
|
||||
end
|
||||
return r, g, b, a;
|
||||
end
|
||||
|
||||
-- HealBot_Action_HealthBar: Internal utility: HealBot_Action_HealthBar
|
||||
function HealBot_Action_HealthBar(button)
|
||||
if not button.bar then
|
||||
button.bar = getglobal(button:GetName() .. "Bar")
|
||||
@@ -88,6 +108,7 @@ function HealBot_Action_HealthBar(button)
|
||||
return button.bar;
|
||||
end
|
||||
|
||||
-- HealBot_Action_HealthBar2: Internal utility: HealBot_Action_HealthBar2
|
||||
function HealBot_Action_HealthBar2(button)
|
||||
if not button.bar2 then
|
||||
button.bar2 = getglobal(button:GetName() .. "Bar2")
|
||||
@@ -95,11 +116,16 @@ function HealBot_Action_HealthBar2(button)
|
||||
return button.bar2;
|
||||
end
|
||||
|
||||
-- HealBot_Action_EnableButton: Updates a button's health, color, text, and debuffs.
|
||||
function HealBot_Action_EnableButton(button)
|
||||
local unit = button.unit;
|
||||
local state = HealBot_Model.units[unit]
|
||||
if not state then return end
|
||||
|
||||
if not state.englishClass then
|
||||
HealBot_Model:UpdateUnitIdentity(unit)
|
||||
end
|
||||
|
||||
local hlth = state.health
|
||||
local maxhlth = state.maxHealth
|
||||
local name = state.name
|
||||
@@ -240,34 +266,66 @@ function HealBot_Action_EnableButton(button)
|
||||
bar.txt:SetTextColor(sr, sg, sb, sa);
|
||||
local fontName, fontHeight, fontFlags = bar.txt:GetFont()
|
||||
local fontOutline = HealBot_Config.bfontoutline[HealBot_Config.Current_Skin] or 0
|
||||
if fontOutline == 1 then
|
||||
bar.txt:SetFont(fontName, fontHeight, "OUTLINE")
|
||||
else
|
||||
bar.txt:SetFont(fontName, fontHeight, "")
|
||||
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)
|
||||
end
|
||||
|
||||
local iconSize = HealBot_Config.biconsize[HealBot_Config.Current_Skin] or 12
|
||||
for i = 1, 10 do
|
||||
local icon = getglobal(button:GetName() .. "BarIcon" .. i)
|
||||
local icon = button["icon"..i]
|
||||
if not icon then
|
||||
icon = getglobal(button:GetName() .. "BarIcon" .. i)
|
||||
button["icon"..i] = icon
|
||||
end
|
||||
if icon then
|
||||
if HealBot_UnitIcons and HealBot_UnitIcons[unit] and HealBot_UnitIcons[unit][i] then
|
||||
icon:SetTexture(HealBot_UnitIcons[unit][i])
|
||||
icon:SetWidth(iconSize)
|
||||
icon:SetHeight(iconSize)
|
||||
icon:Show()
|
||||
local currentTexture = icon:GetTexture()
|
||||
local newTexture = HealBot_UnitIcons[unit][i]
|
||||
if currentTexture ~= newTexture then
|
||||
icon:SetTexture(newTexture)
|
||||
end
|
||||
|
||||
if icon:GetWidth() ~= iconSize then
|
||||
icon:SetWidth(iconSize)
|
||||
icon:SetHeight(iconSize)
|
||||
end
|
||||
|
||||
if not icon:IsVisible() then
|
||||
icon:Show()
|
||||
end
|
||||
else
|
||||
icon:Hide()
|
||||
if icon:IsVisible() then
|
||||
icon:Hide()
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local raidIcon = getglobal(button:GetName() .. "BarRaidIcon")
|
||||
if raidIcon then
|
||||
local index
|
||||
if not string.find(unit, "^Test") then
|
||||
index = GetRaidTargetIndex(unit)
|
||||
end
|
||||
if index then
|
||||
SetRaidTargetIconTexture(raidIcon, index)
|
||||
raidIcon:Show()
|
||||
else
|
||||
raidIcon:Hide()
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- HealBot_Action_EnableButtons: Internal utility: HealBot_Action_EnableButtons
|
||||
function HealBot_Action_EnableButtons()
|
||||
for index, button in pairs(HealBot_Action_HealButtons) do
|
||||
HealBot_Action_EnableButton(button)
|
||||
end
|
||||
end
|
||||
|
||||
-- HealBot_Action_RefreshButton: Calls EnableButton if unit is valid.
|
||||
function HealBot_Action_RefreshButton(button)
|
||||
if not button then return end
|
||||
local unit = button.unit;
|
||||
@@ -276,21 +334,42 @@ function HealBot_Action_RefreshButton(button)
|
||||
end
|
||||
end
|
||||
|
||||
-- HealBot_Action_ResetSkin: Internal utility: HealBot_Action_ResetSkin
|
||||
function HealBot_Action_ResetSkin()
|
||||
HealBot_Action_PartyChanged()
|
||||
local skin = HealBot_Config.Current_Skin
|
||||
local bfont = (HealBot_Config.bfont and HealBot_Config.bfont[skin]) or "Fonts\\FRIZQT__.TTF"
|
||||
local btextheight = (HealBot_Config.btextheight and HealBot_Config.btextheight[skin]) or 10
|
||||
local fontOutline = (HealBot_Config.bfontoutline and HealBot_Config.bfontoutline[skin]) or 0
|
||||
local expectedFlags = fontOutline == 1 and "OUTLINE" or ""
|
||||
|
||||
if HealBot_Action_OptionsButton and HealBot_Action_OptionsButton:GetFontString() then
|
||||
HealBot_Action_OptionsButton:GetFontString():SetFont(bfont, btextheight, expectedFlags)
|
||||
end
|
||||
if HealBot_Action_AbortButton and HealBot_Action_AbortButton:GetFontString() then
|
||||
HealBot_Action_AbortButton:GetFontString():SetFont(bfont, btextheight, expectedFlags)
|
||||
end
|
||||
for j = 1, 20 do
|
||||
local headerobj = getglobal("HealBot_Action_Header" .. j)
|
||||
if headerobj and headerobj:GetFontString() then
|
||||
headerobj:GetFontString():SetFont(bfont, btextheight, expectedFlags)
|
||||
end
|
||||
end
|
||||
|
||||
if HealBot_Options:IsVisible() then
|
||||
HealBot_Action_SetTexture(HealBot_DiseaseColorpick, HealBot_Config.btexture[HealBot_Config.Current_Skin])
|
||||
HealBot_Action_SetTexture(HealBot_MagicColorpick, HealBot_Config.btexture[HealBot_Config.Current_Skin])
|
||||
HealBot_Action_SetTexture(HealBot_PoisonColorpick, HealBot_Config.btexture[HealBot_Config.Current_Skin])
|
||||
HealBot_Action_SetTexture(HealBot_CurseColorpick, HealBot_Config.btexture[HealBot_Config.Current_Skin])
|
||||
HealBot_Action_SetTexture(HealBot_EnTextColorpick, HealBot_Config.btexture[HealBot_Config.Current_Skin])
|
||||
HealBot_Action_SetTexture(HealBot_EnTextColorpickin, HealBot_Config.btexture[HealBot_Config.Current_Skin])
|
||||
HealBot_Action_SetTexture(HealBot_DisTextColorpick, HealBot_Config.btexture[HealBot_Config.Current_Skin])
|
||||
HealBot_Action_SetTexture(HealBot_DebTextColorpick, HealBot_Config.btexture[HealBot_Config.Current_Skin])
|
||||
HealBot_Action_SetTexture(HealBot_DiseaseColorpick, HealBot_Config.btexture[skin])
|
||||
HealBot_Action_SetTexture(HealBot_MagicColorpick, HealBot_Config.btexture[skin])
|
||||
HealBot_Action_SetTexture(HealBot_PoisonColorpick, HealBot_Config.btexture[skin])
|
||||
HealBot_Action_SetTexture(HealBot_CurseColorpick, HealBot_Config.btexture[skin])
|
||||
HealBot_Action_SetTexture(HealBot_EnTextColorpick, HealBot_Config.btexture[skin])
|
||||
HealBot_Action_SetTexture(HealBot_EnTextColorpickin, HealBot_Config.btexture[skin])
|
||||
HealBot_Action_SetTexture(HealBot_DisTextColorpick, HealBot_Config.btexture[skin])
|
||||
HealBot_Action_SetTexture(HealBot_DebTextColorpick, HealBot_Config.btexture[skin])
|
||||
HealBot_SetSkinColours()
|
||||
end
|
||||
end
|
||||
|
||||
-- HealBot_Action_RefreshButtons: Refreshes all active unit buttons.
|
||||
function HealBot_Action_RefreshButtons(unit)
|
||||
if unit and HealBot_Action_UnitButtons[unit] then
|
||||
for index, button in pairs(HealBot_Action_UnitButtons[unit]) do
|
||||
@@ -303,6 +382,7 @@ function HealBot_Action_RefreshButtons(unit)
|
||||
end
|
||||
end
|
||||
|
||||
-- HealBot_Action_RefreshPower: Fast path: updates only mana bar textures.
|
||||
function HealBot_Action_RefreshPower(unit)
|
||||
if not unit or not HealBot_Action_UnitButtons[unit] then return end
|
||||
local state = HealBot_Model.units[unit]
|
||||
@@ -318,12 +398,20 @@ function HealBot_Action_RefreshPower(unit)
|
||||
end
|
||||
end
|
||||
|
||||
-- HealBot_Action_PositionButton: Positions a button element within the grid.
|
||||
function HealBot_Action_PositionButton(button, OsetX, OsetY, bwidth, bheight, checked, header)
|
||||
local brspace = HealBot_Config.brspace[HealBot_Config.Current_Skin] or 3;
|
||||
if header then
|
||||
headerno = headerno + 1;
|
||||
local headerobj = getglobal("HealBot_Action_Header" .. headerno);
|
||||
headerobj:SetText(header)
|
||||
local bfont = (HealBot_Config.bfont and HealBot_Config.bfont[HealBot_Config.Current_Skin]) or "Fonts\\FRIZQT__.TTF"
|
||||
local btextheight = (HealBot_Config.btextheight and HealBot_Config.btextheight[HealBot_Config.Current_Skin]) or 10
|
||||
local fontOutline = (HealBot_Config.bfontoutline and HealBot_Config.bfontoutline[HealBot_Config.Current_Skin]) or 0
|
||||
local expectedFlags = fontOutline == 1 and "OUTLINE" or ""
|
||||
if headerobj:GetFontString() then
|
||||
headerobj:GetFontString():SetFont(bfont, btextheight, expectedFlags)
|
||||
end
|
||||
headerobj:Show();
|
||||
headerobj:ClearAllPoints();
|
||||
headerobj:SetHeight(bheight);
|
||||
@@ -353,12 +441,20 @@ function HealBot_Action_PositionButton(button, OsetX, OsetY, bwidth, bheight, ch
|
||||
return OsetY;
|
||||
end
|
||||
|
||||
-- HealBot_Action_PositionButtonHorizontal: Internal utility: HealBot_Action_PositionButtonHorizontal
|
||||
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)
|
||||
local bfont = (HealBot_Config.bfont and HealBot_Config.bfont[HealBot_Config.Current_Skin]) or "Fonts\\FRIZQT__.TTF"
|
||||
local btextheight = (HealBot_Config.btextheight and HealBot_Config.btextheight[HealBot_Config.Current_Skin]) or 10
|
||||
local fontOutline = (HealBot_Config.bfontoutline and HealBot_Config.bfontoutline[HealBot_Config.Current_Skin]) or 0
|
||||
local expectedFlags = fontOutline == 1 and "OUTLINE" or ""
|
||||
if headerobj:GetFontString() then
|
||||
headerobj:GetFontString():SetFont(bfont, btextheight, expectedFlags)
|
||||
end
|
||||
headerobj:Show();
|
||||
headerobj:ClearAllPoints();
|
||||
headerobj:SetHeight(bheight);
|
||||
@@ -388,6 +484,7 @@ function HealBot_Action_PositionButtonHorizontal(button, OsetX, OsetY, bwidth, b
|
||||
return OsetX;
|
||||
end
|
||||
|
||||
-- HealBot_Action_SetHeightWidth: Resizes the main panel frame to fit content.
|
||||
function HealBot_Action_SetHeightWidth(width, height, bwidth)
|
||||
if HealBot_ActionHeight then
|
||||
HealBot_Action:SetHeight(HealBot_ActionHeight);
|
||||
@@ -413,10 +510,13 @@ function HealBot_Action_SetHeightWidth(width, height, bwidth)
|
||||
HealBot_Action:SetWidth(width + bwidth + bpadding)
|
||||
end
|
||||
|
||||
-- HealBot_Action_SetHealButton: Assigns a unit string to a grid button slot.
|
||||
function HealBot_Action_SetHealButton(index, unit)
|
||||
if not index then
|
||||
HealBot_Action_HealButtons = {};
|
||||
HealBot_Action_UnitButtons = {};
|
||||
for k in pairs(HealBot_Action_HealButtons) do HealBot_Action_HealButtons[k] = nil end
|
||||
for k in pairs(HealBot_Action_UnitButtons) do
|
||||
HealBot_Action_UnitButtons[k] = nil
|
||||
end
|
||||
return nil
|
||||
end
|
||||
local button = getglobal("HealBot_Action_HealUnit" .. index);
|
||||
@@ -432,6 +532,7 @@ function HealBot_Action_SetHealButton(index, unit)
|
||||
return button;
|
||||
end
|
||||
|
||||
-- HealBot_Action_PartyChanged: Rebuilds the entire grid layout based on roster.
|
||||
function HealBot_Action_PartyChanged()
|
||||
if HealBot_IsFighting then
|
||||
HealBot_Action_AppendNewUnits()
|
||||
@@ -441,7 +542,7 @@ function HealBot_Action_PartyChanged()
|
||||
local numBars = 0;
|
||||
local numHeaders = 0;
|
||||
local TempMaxH = 0;
|
||||
local HeaderPos = {};
|
||||
local HeaderPos = HealBot_GetTable();
|
||||
|
||||
if HealBot_Config.AutoSwap_Enabled == 1 then
|
||||
local totalMembers = GetNumRaidMembers()
|
||||
@@ -468,10 +569,12 @@ function HealBot_Action_PartyChanged()
|
||||
end
|
||||
end
|
||||
|
||||
for j = 1, 15 do
|
||||
for j = 1, 20 do
|
||||
local headerobj = getglobal("HealBot_Action_Header" .. j);
|
||||
headerobj:SetText(" ")
|
||||
headerobj:Hide();
|
||||
if headerobj then
|
||||
headerobj:SetText(" ")
|
||||
headerobj:Hide();
|
||||
end
|
||||
end
|
||||
|
||||
local bwidth = HealBot_Config.bwidth[HealBot_Config.Current_Skin] or 85;
|
||||
@@ -497,7 +600,52 @@ function HealBot_Action_PartyChanged()
|
||||
local i = 0;
|
||||
local last = 0;
|
||||
local GroupValid = numBars;
|
||||
last = last + 6
|
||||
if HealBot_Config.TestBarsOn then
|
||||
local testBars = HealBot_Config.numTestBars or 25
|
||||
if HealBot_Config.ShowHeader[HealBot_Config.Current_Skin] == 1 then
|
||||
HeaderPos[i + 1] = HEALBOT_OPTIONS_TESTBARS or "Test Bars"
|
||||
end
|
||||
local testClasses = {"PRIEST", "DRUID", "SHAMAN", "PALADIN", "WARRIOR", "MAGE", "WARLOCK", "HUNTER", "ROGUE"}
|
||||
local testNames = {"Arthas", "Illidan", "Sylvanas", "Thrall", "Jaina", "Uther", "Grommash", "Malfurion", "Tyrande", "Guldan", "Kael", "Rexxar", "Varian", "Voljin", "Baine"}
|
||||
for j = 1, testBars do
|
||||
i = i + 1
|
||||
local unit = "Test" .. j
|
||||
HealBot_Action_SetHealButton(i, unit)
|
||||
if not HealBot_Model.units[unit] then
|
||||
local rClass = testClasses[math.random(1, #testClasses)]
|
||||
local rName = testNames[math.random(1, #testNames)] .. j
|
||||
local mHealth = math.random(4000, 8000)
|
||||
local cHealth = math.random(1, mHealth)
|
||||
local pt = 0
|
||||
if rClass == "WARRIOR" then pt = 1 elseif rClass == "ROGUE" then pt = 3 end
|
||||
HealBot_Model.units[unit] = { name = rName, guid = "TestGuid"..j, class = rClass, englishClass = rClass, health = cHealth, maxHealth = mHealth, mana = 2000, maxMana = 4000, powerType = pt, incomingHeal = 0, hasAggro = false, range = 1 }
|
||||
if not HealBot_UnitIcons then HealBot_UnitIcons = {} end
|
||||
HealBot_UnitIcons[unit] = {}
|
||||
local testIcons = {
|
||||
"Interface\\Icons\\Spell_Holy_Renew",
|
||||
"Interface\\Icons\\Spell_Nature_Rejuvenation",
|
||||
"Interface\\Icons\\Spell_Nature_ResistNature", -- Regrowth
|
||||
"Interface\\Icons\\Spell_Holy_PowerWordShield",
|
||||
"Interface\\Icons\\Spell_Holy_Excorcism" -- Fear Ward
|
||||
}
|
||||
-- Shuffle icons
|
||||
for k = #testIcons, 2, -1 do
|
||||
local j = math.random(k)
|
||||
testIcons[k], testIcons[j] = testIcons[j], testIcons[k]
|
||||
end
|
||||
local numIcons = math.random(0, 3)
|
||||
for k = 1, numIcons do
|
||||
HealBot_UnitIcons[unit][k] = testIcons[k]
|
||||
end
|
||||
end
|
||||
numBars = numBars + 1
|
||||
end
|
||||
if HealBot_Config.ShowHeader[HealBot_Config.Current_Skin] == 1 then
|
||||
numBars = numBars + 1
|
||||
numHeaders = numHeaders + 1
|
||||
end
|
||||
else
|
||||
last = last + 6
|
||||
if HealBot_Config.GroupHeals == 1 then
|
||||
if HealBot_Config.ShowHeader[HealBot_Config.Current_Skin] == 1 then
|
||||
HeaderPos[i + 1] = HEALBOT_OPTIONS_GROUPHEALS
|
||||
@@ -604,12 +752,38 @@ function HealBot_Action_PartyChanged()
|
||||
numBars = numBars + 1;
|
||||
numHeaders = numHeaders + 1;
|
||||
end
|
||||
|
||||
-- Focus
|
||||
local FocusValid = numBars;
|
||||
if HealBot_Integrations_ClassicAPI_Active and FocusUnit then
|
||||
if HealBot_Config.ShowHeader[HealBot_Config.Current_Skin] == 1 then
|
||||
HeaderPos[i + 1] = "Focus"
|
||||
end
|
||||
if HealBot_MayHeal("focus") then
|
||||
i = i + 1;
|
||||
h = h + 1;
|
||||
if h < 61 then
|
||||
HealBot_Action_SetHealButton(h, "focus");
|
||||
local check = getglobal("HealBot_Action_HealUnit" .. h .. "Check");
|
||||
check:SetChecked(0);
|
||||
check.unit = "focus";
|
||||
check:Show();
|
||||
else
|
||||
HealBot_Action_SetHealButton(i, "focus");
|
||||
end
|
||||
numBars = numBars + 1;
|
||||
end
|
||||
end
|
||||
if numBars > FocusValid and HealBot_Config.ShowHeader[HealBot_Config.Current_Skin] == 1 then
|
||||
numBars = numBars + 1;
|
||||
numHeaders = numHeaders + 1;
|
||||
end
|
||||
|
||||
last = last + 40
|
||||
local ExtraValid = numBars;
|
||||
if HealBot_Config.EmergencyHeals == 1 then
|
||||
local order = {};
|
||||
local units = {};
|
||||
local order = HealBot_GetTable();
|
||||
local units = HealBot_GetTable();
|
||||
if HealBot_Config.ShowHeader[HealBot_Config.Current_Skin] == 1 and HealBot_Config.ExtraOrder == 1 then
|
||||
HeaderPos[i + 1] = HEALBOT_OPTIONS_EMERGENCYHEALS
|
||||
numBars = numBars + 1;
|
||||
@@ -784,42 +958,47 @@ function HealBot_Action_PartyChanged()
|
||||
HeaderPos[i + 1] = nil;
|
||||
numBars = numBars - 1;
|
||||
end
|
||||
HealBot_ReleaseTable(order);
|
||||
HealBot_ReleaseTable(units);
|
||||
end
|
||||
|
||||
last = last + 40
|
||||
local PetsValid = numBars;
|
||||
if HealBot_Config.PetHeals == 1 then
|
||||
if HealBot_Config.ShowHeader[HealBot_Config.Current_Skin] == 1 then
|
||||
HeaderPos[i + 1] = HEALBOT_OPTIONS_PETHEALS
|
||||
numBars = numBars + 1;
|
||||
numHeaders = numHeaders + 1;
|
||||
last = last + 40
|
||||
local PetsValid = numBars;
|
||||
if HealBot_Config.PetHeals == 1 then
|
||||
if HealBot_Config.ShowHeader[HealBot_Config.Current_Skin] == 1 then
|
||||
HeaderPos[i + 1] = HEALBOT_OPTIONS_PETHEALS
|
||||
numBars = numBars + 1;
|
||||
numHeaders = numHeaders + 1;
|
||||
end
|
||||
if GetNumRaidMembers() > 0 then
|
||||
for j = 1, 40 do
|
||||
local unit = "raidpet" .. j;
|
||||
if not HealBot_Action_UnitButtons[unit] and HealBot_MayHeal(unit) then
|
||||
i = i + 1;
|
||||
HealBot_Action_SetHealButton(i, unit);
|
||||
numBars = numBars + 1;
|
||||
end
|
||||
if i == last then break end
|
||||
end
|
||||
if GetNumRaidMembers() > 0 then
|
||||
for j = 1, 40 do
|
||||
local unit = "raidpet" .. j;
|
||||
if not HealBot_Action_UnitButtons[unit] and HealBot_MayHeal(unit) then
|
||||
i = i + 1;
|
||||
HealBot_Action_SetHealButton(i, unit);
|
||||
numBars = numBars + 1;
|
||||
end
|
||||
if i == last then break end
|
||||
end
|
||||
else
|
||||
local petUnits = { "pet", "partypet1", "partypet2", "partypet3", "partypet4" };
|
||||
for _, unit in ipairs(petUnits) do
|
||||
if not HealBot_Action_UnitButtons[unit] and HealBot_MayHeal(unit) then
|
||||
i = i + 1;
|
||||
HealBot_Action_SetHealButton(i, unit);
|
||||
numBars = numBars + 1;
|
||||
end
|
||||
if i == last then break end
|
||||
else
|
||||
if not HealBot_PetUnits then
|
||||
HealBot_PetUnits = { "pet", "partypet1", "partypet2", "partypet3", "partypet4" };
|
||||
end
|
||||
for _, unit in ipairs(HealBot_PetUnits) do
|
||||
if not HealBot_Action_UnitButtons[unit] and HealBot_MayHeal(unit) then
|
||||
i = i + 1;
|
||||
HealBot_Action_SetHealButton(i, unit);
|
||||
numBars = numBars + 1;
|
||||
end
|
||||
if i == last then break end
|
||||
end
|
||||
end
|
||||
if numBars == PetsValid + 1 and HealBot_Config.ShowHeader[HealBot_Config.Current_Skin] == 1 then
|
||||
HeaderPos[PetsValid + 1] = nil;
|
||||
numBars = numBars - 1;
|
||||
numHeaders = numHeaders - 1;
|
||||
end
|
||||
end
|
||||
if numBars == PetsValid + 1 and HealBot_Config.ShowHeader[HealBot_Config.Current_Skin] == 1 then
|
||||
HeaderPos[PetsValid + 1] = nil;
|
||||
numBars = numBars - 1;
|
||||
numHeaders = numHeaders - 1;
|
||||
end
|
||||
|
||||
local bpadding = (HealBot_Config.bpadding and HealBot_Config.bpadding[HealBot_Config.Current_Skin]) or 10
|
||||
local OffsetY = bpadding;
|
||||
@@ -933,10 +1112,17 @@ function HealBot_Action_PartyChanged()
|
||||
HealBot_Grid_Limit = limit;
|
||||
HealBot_Grid_NumBars = numBars;
|
||||
|
||||
local bfont = (HealBot_Config.bfont and HealBot_Config.bfont[HealBot_Config.Current_Skin]) or "Fonts\\FRIZQT__.TTF"
|
||||
local fontOutline = (HealBot_Config.bfontoutline and HealBot_Config.bfontoutline[HealBot_Config.Current_Skin]) or 0
|
||||
local expectedFlags = fontOutline == 1 and "OUTLINE" or ""
|
||||
|
||||
if HealBot_Config.HideOptions == 1 then
|
||||
HealBot_Action_OptionsButton:Hide();
|
||||
else
|
||||
HealBot_Action_OptionsButton:SetPoint("BOTTOM", "HealBot_Action", "BOTTOM", 0, bpadding);
|
||||
if HealBot_Action_OptionsButton:GetFontString() then
|
||||
HealBot_Action_OptionsButton:GetFontString():SetFont(bfont, btextheight, expectedFlags)
|
||||
end
|
||||
HealBot_Action_OptionsButton:Show();
|
||||
MaxOffsetY = MaxOffsetY + 30;
|
||||
end
|
||||
@@ -952,6 +1138,7 @@ function HealBot_Action_PartyChanged()
|
||||
bar.txt = getglobal(bar:GetName() .. "_text");
|
||||
bar.txt:SetTextColor(sr, sg, sb, sa);
|
||||
bar.txt:SetText(HEALBOT_ACTION_ABORT);
|
||||
bar.txt:SetFont(bfont, btextheight, expectedFlags);
|
||||
HealBot_Action_SetTexture(bar, btexture);
|
||||
bar:SetMinMaxValues(0, 100);
|
||||
bar:SetValue(100);
|
||||
@@ -978,9 +1165,11 @@ function HealBot_Action_PartyChanged()
|
||||
HidePartyFrame();
|
||||
end
|
||||
HealBot_Action_RefreshButtons();
|
||||
HealBot_ReleaseTable(HeaderPos);
|
||||
HealBot_Action_ShowFrame();
|
||||
end
|
||||
|
||||
-- HealBot_Action_ShowFrame: Internal utility: HealBot_Action_ShowFrame
|
||||
function HealBot_Action_ShowFrame()
|
||||
if HealBot_Config.ActionVisible == 1 then
|
||||
if HealBot_Config.HideSolo == 1 and GetNumPartyMembers() == 0 and GetNumRaidMembers() == 0 then
|
||||
@@ -993,13 +1182,16 @@ function HealBot_Action_ShowFrame()
|
||||
end
|
||||
end
|
||||
|
||||
-- HealBot_Action_Reset: Resets action panel position and rebuilds layout.
|
||||
function HealBot_Action_Reset()
|
||||
HealBot_Action:ClearAllPoints();
|
||||
HealBot_Action:SetPoint("TOP", "MinimapCluster", "BOTTOM", 7, 10);
|
||||
HealBot_Action_HealTarget = {};
|
||||
for k in pairs(HealBot_Action_HealTarget) do HealBot_Action_HealTarget[k] = nil end
|
||||
for k in pairs(HealBot_Action_HealFocus) do HealBot_Action_HealFocus[k] = nil end
|
||||
HealBot_Action_PartyChanged();
|
||||
end
|
||||
|
||||
-- HealBot_Action_Refresh: Alias for refreshing a unit button.
|
||||
function HealBot_Action_Refresh(unit)
|
||||
if (UnitIsDeadOrGhost("player")) or (UnitOnTaxi("player")) then
|
||||
if HealBot_Config.AutoClose == 1 and HealBot_Config.ActionVisible ~= 0 then
|
||||
@@ -1026,6 +1218,7 @@ function HealBot_Action_Refresh(unit)
|
||||
end
|
||||
end
|
||||
end
|
||||
-- HealBot_Action_AppendUnit: Internal utility: HealBot_Action_AppendUnit
|
||||
function HealBot_Action_AppendUnit(unit)
|
||||
if not HealBot_Grid_LastI then return end
|
||||
if HealBot_Grid_LastI >= 100 then return end
|
||||
@@ -1071,7 +1264,10 @@ function HealBot_Action_AppendUnit(unit)
|
||||
local btexture = (HealBot_Config.btexture and HealBot_Config.btexture[HealBot_Config.Current_Skin]) or 5
|
||||
HealBot_Action_SetTexture(bar, btexture)
|
||||
local btextheight = (HealBot_Config.btextheight and HealBot_Config.btextheight[HealBot_Config.Current_Skin]) or 10
|
||||
bar.txt:SetTextHeight(btextheight)
|
||||
local bfont = (HealBot_Config.bfont and HealBot_Config.bfont[HealBot_Config.Current_Skin]) or "Fonts\\FRIZQT__.TTF"
|
||||
local fontOutline = (HealBot_Config.bfontoutline and HealBot_Config.bfontoutline[HealBot_Config.Current_Skin]) or 0
|
||||
local expectedFlags = fontOutline == 1 and "OUTLINE" or ""
|
||||
bar.txt:SetFont(bfont, btextheight, expectedFlags)
|
||||
bar2:SetHeight(bheight)
|
||||
HealBot_Action_SetTexture(bar2, btexture)
|
||||
|
||||
@@ -1088,10 +1284,11 @@ function HealBot_Action_AppendUnit(unit)
|
||||
|
||||
HealBot_Action_SetHeightWidth(totalOffsetX, totalOffsetY + bpadding, bwidth)
|
||||
end
|
||||
-- HealBot_Action_AppendNewUnits: Internal utility: HealBot_Action_AppendNewUnits
|
||||
function HealBot_Action_AppendNewUnits()
|
||||
if not HealBot_Grid_LastI then return end
|
||||
|
||||
local unitsToCheck = {}
|
||||
local unitsToCheck = HealBot_GetTable()
|
||||
|
||||
-- Gather units based on config, similar to PartyChanged
|
||||
if HealBot_Config.GroupHeals == 1 then
|
||||
@@ -1158,4 +1355,159 @@ function HealBot_Action_AppendNewUnits()
|
||||
HealBot_Action_AppendUnit(unit)
|
||||
end
|
||||
end
|
||||
HealBot_ReleaseTable(unitsToCheck)
|
||||
end
|
||||
|
||||
local HealBot_PlayerHoTsListFrame = nil
|
||||
local HealBot_PlayerHoTFrames = {}
|
||||
|
||||
local HealBot_PlayerHoTs_ValidHoTs = {
|
||||
["Renew"] = "Interface\\Icons\\Spell_Holy_Renew",
|
||||
["Rejuvenation"] = "Interface\\Icons\\Spell_Nature_Rejuvenation",
|
||||
["Regrowth"] = "Interface\\Icons\\Spell_Nature_ResistNature",
|
||||
["Power Word: Shield"] = "Interface\\Icons\\Spell_Holy_PowerWordShield",
|
||||
}
|
||||
|
||||
local HealBot_PlayerHoTs_ListCache = {}
|
||||
|
||||
local function HealBot_PlayerHoTs_SortComparator(a, b)
|
||||
return (a.expires or 0) < (b.expires or 0)
|
||||
end
|
||||
|
||||
function HealBot_Action_UpdatePlayerHoTs()
|
||||
if not HealBot_PlayerHoTsListFrame then
|
||||
HealBot_PlayerHoTsListFrame = CreateFrame("Frame", "HealBot_PlayerHoTsListFrame", HealBot_Action)
|
||||
HealBot_PlayerHoTsListFrame:SetWidth(128)
|
||||
HealBot_PlayerHoTsListFrame:SetHeight(1)
|
||||
HealBot_PlayerHoTsListFrame:SetPoint("TOPLEFT", HealBot_Action, "BOTTOMLEFT", 0, -2)
|
||||
HealBot_PlayerHoTsListFrame:Show()
|
||||
end
|
||||
|
||||
if HealBot_Config.HealBot_Integrations_ShowHoTTimers ~= 1 then
|
||||
HealBot_PlayerHoTsListFrame:Hide()
|
||||
return
|
||||
else
|
||||
HealBot_PlayerHoTsListFrame:Show()
|
||||
end
|
||||
|
||||
local currentTime = GetTime()
|
||||
|
||||
-- Clear cache instead of reallocating
|
||||
local numHoTs = 0
|
||||
|
||||
if HealBot_Integrations_Nampower_Active and HealBot_Nampower_Auras then
|
||||
for targetName, auras in pairs(HealBot_Nampower_Auras) do
|
||||
for spellName, expiration in pairs(auras) do
|
||||
if HealBot_PlayerHoTs_ValidHoTs[spellName] then
|
||||
if expiration > currentTime then
|
||||
numHoTs = numHoTs + 1
|
||||
if not HealBot_PlayerHoTs_ListCache[numHoTs] then
|
||||
HealBot_PlayerHoTs_ListCache[numHoTs] = {}
|
||||
end
|
||||
HealBot_PlayerHoTs_ListCache[numHoTs].name = targetName
|
||||
HealBot_PlayerHoTs_ListCache[numHoTs].spell = spellName
|
||||
HealBot_PlayerHoTs_ListCache[numHoTs].expires = expiration
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- Blank out remaining cache entries so sort doesn't read them
|
||||
for i = numHoTs + 1, table.getn(HealBot_PlayerHoTs_ListCache) do
|
||||
HealBot_PlayerHoTs_ListCache[i].expires = 9999999999
|
||||
end
|
||||
|
||||
-- Sort only the active portion by shifting expired ones to the end
|
||||
table.sort(HealBot_PlayerHoTs_ListCache, HealBot_PlayerHoTs_SortComparator)
|
||||
|
||||
for i = 1, math.max(numHoTs, table.getn(HealBot_PlayerHoTFrames)) do
|
||||
local frame = HealBot_PlayerHoTFrames[i]
|
||||
if i <= numHoTs then
|
||||
if not frame then
|
||||
frame = CreateFrame("Frame", "HealBot_PlayerHoT" .. i, HealBot_PlayerHoTsListFrame)
|
||||
frame:SetWidth(128)
|
||||
frame:SetHeight(16)
|
||||
if i == 1 then
|
||||
frame:SetPoint("TOPLEFT", HealBot_PlayerHoTsListFrame, "TOPLEFT", 0, 0)
|
||||
else
|
||||
frame:SetPoint("TOPLEFT", HealBot_PlayerHoTFrames[i-1], "BOTTOMLEFT", 0, -2)
|
||||
end
|
||||
|
||||
local icon = frame:CreateTexture(nil, "ARTWORK")
|
||||
icon:SetWidth(14)
|
||||
icon:SetHeight(14)
|
||||
icon:SetPoint("LEFT", frame, "LEFT", 2, 0)
|
||||
frame.icon = icon
|
||||
|
||||
local text = frame:CreateFontString(nil, "OVERLAY", "GameFontNormalSmall")
|
||||
text:SetPoint("LEFT", icon, "RIGHT", 4, 0)
|
||||
text:SetJustifyH("LEFT")
|
||||
frame.text = text
|
||||
|
||||
HealBot_PlayerHoTFrames[i] = frame
|
||||
end
|
||||
|
||||
local hot = HealBot_PlayerHoTs_ListCache[i]
|
||||
local timeLeft = math.floor(hot.expires - currentTime)
|
||||
|
||||
-- Resolve GUID to Name
|
||||
if not HealBot_Nampower_NameCache then HealBot_Nampower_NameCache = HealBot_GetTable() end
|
||||
|
||||
local dispName = HealBot_Nampower_NameCache[hot.name]
|
||||
|
||||
if not dispName then
|
||||
dispName = hot.name
|
||||
local resolved = false
|
||||
|
||||
local unitID = HealBot_Model:GetUnitByGUID(hot.name) or HealBot_Model:GetUnitIDByName(hot.name)
|
||||
if unitID then
|
||||
local n = UnitName(unitID)
|
||||
if n then
|
||||
dispName = n
|
||||
resolved = true
|
||||
end
|
||||
elseif string.sub(hot.name, 1, 2) == "0x" or string.sub(hot.name, 1, 2) == "0X" then
|
||||
if HealBot_PlayerGUID and string.lower(HealBot_PlayerGUID) == string.lower(hot.name) then
|
||||
dispName = UnitName("player") or "Player"
|
||||
resolved = true
|
||||
elseif HealBot_GetUnitGUID then
|
||||
if string.lower(HealBot_GetUnitGUID("player") or "") == string.lower(hot.name) then
|
||||
dispName = UnitName("player") or "Player"
|
||||
resolved = true
|
||||
elseif string.lower(HealBot_GetUnitGUID("target") or "") == string.lower(hot.name) then
|
||||
dispName = UnitName("target") or "Target"
|
||||
resolved = true
|
||||
elseif string.lower(HealBot_GetUnitGUID("mouseover") or "") == string.lower(hot.name) then
|
||||
dispName = UnitName("mouseover") or "Mouseover"
|
||||
resolved = true
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if resolved then
|
||||
HealBot_Nampower_NameCache[hot.name] = dispName
|
||||
elseif string.sub(hot.name, 1, 2) == "0x" then
|
||||
dispName = "Unknown"
|
||||
end
|
||||
end
|
||||
|
||||
local spellId = HealBot_GetSpellId and HealBot_GetSpellId(hot.spell) or nil
|
||||
local tex = HealBot_PlayerHoTs_ValidHoTs[hot.spell] or "Interface\\Icons\\INV_Misc_QuestionMark"
|
||||
if spellId then
|
||||
tex = GetSpellTexture(spellId, "BOOKTYPE_SPELL") or tex
|
||||
end
|
||||
|
||||
frame.icon:SetTexture(tex)
|
||||
frame.text:SetText(dispName .. ": " .. timeLeft .. "s")
|
||||
frame.text:SetTextColor(0.8, 1, 0.8)
|
||||
frame:Show()
|
||||
else
|
||||
if frame then
|
||||
frame:Hide()
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
HealBot_PlayerHoTsListFrame:SetHeight(math.max(1, numHoTs * 18))
|
||||
end
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
|
||||
HealBot_Action_TooltipUnit = nil
|
||||
|
||||
-- HealBot_Tooltip_GetSpellColor: Internal utility: HealBot_Tooltip_GetSpellColor
|
||||
function HealBot_Tooltip_GetSpellColor(spell)
|
||||
local r, g, b = 1, 1, 0 -- default yellow
|
||||
if spell and HealBot_Spells and HealBot_Spells[spell] and HealBot_Spells[spell].Mana then
|
||||
@@ -13,13 +14,21 @@ function HealBot_Tooltip_GetSpellColor(spell)
|
||||
return r, g, b
|
||||
end
|
||||
|
||||
-- HealBot_Action_RefreshTooltip: Builds and displays spell tooltip on hover.
|
||||
function HealBot_Action_RefreshTooltip(unit)
|
||||
if HealBot_Config.ShowTooltip==0 then return end
|
||||
if not unit then unit = HealBot_Action_TooltipUnit end
|
||||
if not unit then return end;
|
||||
|
||||
local hlth=UnitHealth(unit);
|
||||
local maxhlth=UnitHealthMax(unit);
|
||||
local hlth=0;
|
||||
local maxhlth=100;
|
||||
if string.find(unit, "^Test") then
|
||||
hlth = HealBot_Model.units[unit] and HealBot_Model.units[unit].health or 5000;
|
||||
maxhlth = HealBot_Model.units[unit] and HealBot_Model.units[unit].maxHealth or 10000;
|
||||
else
|
||||
hlth=UnitHealth(unit);
|
||||
maxhlth=UnitHealthMax(unit);
|
||||
end
|
||||
|
||||
local spellLeft = HealBot_GetHealSpell(unit,HealBot_Action_SpellPattern("Left"));
|
||||
local spellMiddle = HealBot_GetHealSpell(unit,HealBot_Action_SpellPattern("Middle"));
|
||||
@@ -31,8 +40,9 @@ function HealBot_Action_RefreshTooltip(unit)
|
||||
HealBot_Action_Tooltip_ClearLines();
|
||||
|
||||
if HealBot_Config.Tooltip_ShowTarget==1 then
|
||||
if UnitName(unit) then
|
||||
HealBot_Action_Tooltip_SetLineLeft(UnitName(unit),0,1,0,linenum)
|
||||
local uname = HealBot_Model.units[unit] and HealBot_Model.units[unit].name or UnitName(unit)
|
||||
if uname then
|
||||
HealBot_Action_Tooltip_SetLineLeft(uname,0,1,0,linenum)
|
||||
if hlth and maxhlth then
|
||||
local r,g,b,a=HealBot_HealthColor(unit,hlth,maxhlth);
|
||||
HealBot_Action_Tooltip_SetLineRight(hlth.."/"..maxhlth.." (-"..maxhlth-hlth..")",r,g,b,linenum)
|
||||
@@ -149,6 +159,7 @@ function HealBot_Action_RefreshTooltip(unit)
|
||||
HealBot_Tooltip:Show();
|
||||
end
|
||||
|
||||
-- HealBot_Action_Tooltip_SpellInfo: Internal utility: HealBot_Action_Tooltip_SpellInfo
|
||||
function HealBot_Action_Tooltip_SpellInfo(spell,linenum)
|
||||
local text
|
||||
if HealBot_Spells[spell] then
|
||||
@@ -184,6 +195,7 @@ function HealBot_Action_Tooltip_SpellInfo(spell,linenum)
|
||||
return linenum
|
||||
end
|
||||
|
||||
-- HealBot_Action_Tooltip_SpellSummary: Internal utility: HealBot_Action_Tooltip_SpellSummary
|
||||
function HealBot_Action_Tooltip_SpellSummary(spell)
|
||||
local ret_val = " ";
|
||||
if HealBot_Spells[spell] then
|
||||
@@ -211,6 +223,7 @@ function HealBot_Action_Tooltip_SpellSummary(spell)
|
||||
return ret_val
|
||||
end
|
||||
|
||||
-- HealBot_Action_Tooltip_CheckForInstant: Internal utility: HealBot_Action_Tooltip_CheckForInstant
|
||||
function HealBot_Action_Tooltip_CheckForInstant(unit,spell,upd,linenum,check)
|
||||
if HealBot_Spells[spell] then
|
||||
if HealBot_Spells[spell].CastTime == 0 then
|
||||
@@ -229,6 +242,7 @@ function HealBot_Action_Tooltip_CheckForInstant(unit,spell,upd,linenum,check)
|
||||
return check+1,linenum;
|
||||
end
|
||||
|
||||
-- HealBot_Action_Tooltip_SetLineLeft: Internal utility: HealBot_Action_Tooltip_SetLineLeft
|
||||
function HealBot_Action_Tooltip_SetLineLeft(Text,R,G,B,linenum)
|
||||
local txtL = getglobal("HealBot_TooltipTextL" .. linenum)
|
||||
txtL:SetTextColor(R,G,B)
|
||||
@@ -236,6 +250,7 @@ function HealBot_Action_Tooltip_SetLineLeft(Text,R,G,B,linenum)
|
||||
txtL:Show()
|
||||
end
|
||||
|
||||
-- HealBot_Action_Tooltip_SetLineRight: Internal utility: HealBot_Action_Tooltip_SetLineRight
|
||||
function HealBot_Action_Tooltip_SetLineRight(Text,R,G,B,linenum)
|
||||
local txtR = getglobal("HealBot_TooltipTextR" .. linenum)
|
||||
txtR:SetTextColor(R,G,B)
|
||||
@@ -243,6 +258,7 @@ function HealBot_Action_Tooltip_SetLineRight(Text,R,G,B,linenum)
|
||||
txtR:Show()
|
||||
end
|
||||
|
||||
-- HealBot_Action_Tooltip_ClearLines: Internal utility: HealBot_Action_Tooltip_ClearLines
|
||||
function HealBot_Action_Tooltip_ClearLines()
|
||||
for j=1,30 do
|
||||
local txtL = getglobal("HealBot_TooltipTextL" .. j)
|
||||
@@ -254,6 +270,7 @@ function HealBot_Action_Tooltip_ClearLines()
|
||||
end
|
||||
end
|
||||
|
||||
-- HealBot_Action_ShowTooltip: Internal utility: HealBot_Action_ShowTooltip
|
||||
function HealBot_Action_ShowTooltip(this)
|
||||
if HealBot_Config.ShowTooltip==0 then return end
|
||||
if not this.unit then return end;
|
||||
@@ -263,6 +280,7 @@ function HealBot_Action_ShowTooltip(this)
|
||||
HealBot_Action_RefreshTooltip(this.unit);
|
||||
end
|
||||
|
||||
-- HealBot_Action_HideTooltip: Internal utility: HealBot_Action_HideTooltip
|
||||
function HealBot_Action_HideTooltip(this)
|
||||
if HealBot_Config.ShowTooltip==0 then return end
|
||||
HealBot_Tooltip:Hide();
|
||||
|
||||
@@ -21,26 +21,27 @@ Default installation path: `C:\Program Files\World of Warcraft\Interface\AddOns\
|
||||
* `/hb` - Toggles the main HealBot panel on and off
|
||||
* `/hb options` - Toggles the HealBot options panel on and off
|
||||
* `/hb reset` - Resets the contents of the main HealBot panel
|
||||
* `/hb debug` - Toggles in-game debug message output to the main chat frame
|
||||
|
||||
### Key Features & Current Functionality
|
||||
* **MVC & Observer Architecture:** High-performance, reactive engine that updates frames dynamically on state changes, drastically reducing CPU and memory overhead. Features memory recycling pool and event loop decoupling for zero-stutter combat.
|
||||
* **Native Hovercasting (Mouseover):** Cast configured spells on hovered unit frames using keybinds directly from your action bars, without losing your current target. (Toggleable in Options -> General).
|
||||
* **Macro, Item, & Script Bindings:** Bind named macros, inventory items, and scripts directly to mouse clicks. Supports implicit `@mouseover` targeting natively.
|
||||
* **Zero-Latency Self-Heals:** Incoming heals for the local player process instantly with zero latency, independent of network lag.
|
||||
* **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 - currently only TurtleWoW patch 1.18 supported.
|
||||
* **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).
|
||||
* **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.
|
||||
* **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).
|
||||
* **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.
|
||||
* **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
|
||||
- **GUID-based frame mapping:** Migrate internal state to use lightweight GUID tracking to resolve bugs when targets switch or duplicate names appear (e.g., enemy mobs, warlock pets).
|
||||
- **Mod Integration Optimization:** Add conditional SuperWoW/UnitXP SP3 integration to reduce GC spikes and improve frame rendering accuracy.
|
||||
- **Strategy Pattern / Code Tree Splits:** Migrate heavy mod integrations (like Nampower aura tracking and SuperWoW UI rendering) into isolated code trees (e.g., `HealBot_Model_SuperWoW.lua`). This will allow dynamic overwriting of global functions at startup, eliminating the CPU overhead of running `if integration then` branch checks inside high-frequency update loops on Vanilla clients.
|
||||
|
||||
### Known issues
|
||||
|
||||
@@ -49,8 +50,61 @@ Default installation path: `C:\Program Files\World of Warcraft\Interface\AddOns\
|
||||
|
||||
### Change Log
|
||||
|
||||
**v1.7.5**
|
||||
* **Feature - Test Bars** - Implemented a "Test Bars" button and slider in the Skins options tab, allowing you to spawn and adjust a dummy raid group of up to 40 members without being in a real raid. This allows for easy layout and appearance customization out of combat.
|
||||
* **UI - Skins Options & Custom Health Gradients** - Added configurable Max HP and Min HP colour pickers with descriptive labels for custom gradient support. Fixed colour picker button click interceptors and hooked ColorPickerFrame callbacks. Integrated global font selector across raid frame text, headers, Options button, and preview bars. Reorganized Skins tab layout to anchor Test Bars cleanly in Column 2.
|
||||
* **UI - Cleanup** - While adding new funcionalities the way menus look was ignored, new functions were added to each tab where there was free space, so attempt was made to clean up this convoluted mess I made. Menu Tabs are now aligned and grouped in a manner that makes more sense.
|
||||
* **UI - Options Tabs Relative Anchoring Fix** - Fixed layout skewing and margin drift across Spells, Buffs, Chat, Extras (Integrations), and Auto options tabs. Replaced arbitrary hardcoded coordinate shifts with clean relative-anchoring hierarchies centered across the dialog width.
|
||||
* **Performance Fix - Table Pooling & GC Leaks** - Resolved critical table leaks in emergency heals where pooled tables (`order` and `units`) failed to release when pet heals were disabled, un-nested pet healing from emergency heals, eliminated high-frequency (4 Hz) anonymous closure allocations in `HealBot_Action_UpdatePlayerHoTs`, and implemented in-place key recycling for equipment scanning and grid button tables.
|
||||
|
||||
**v1.7.4**
|
||||
* **Performance Fix - CPU Spikes** - Fixed massive FPS drops during raid combat. The `HealBot_CheckBuffs` function previously forced the client to generate hidden UI tooltips for up to 32 buffs per player on every single `UNIT_AURA` event. Tooltip parsing is now cached per texture, bypassing thousands of redundant API calls per second.
|
||||
* **Performance Fix - Frame Rendering** - Eliminated redundant UI layout recalculations in `HealBot_Action_EnableButton`. The UI no longer forces `SetFont`, `SetWidth`, `SetHeight`, and `GetGlobal` lookups on every single combat tick (which previously caused 4,000+ layout updates per second in 40-man raids).
|
||||
* **Performance Fix - Range Checking** - Greatly reduced CPU stutter caused by range calculations. `HealBot_Range_Check` now caches map positioning math and API calls per-frame, preventing the addon from calculating the exact same `math.sqrt` distance up to 5 times per unit during heavy combat.
|
||||
* **Performance Fix - Unit ID Lookup** - Optimized `HealBot_FindUnitID` by pre-allocating raid unit tokens, preventing massive string concatenation and garbage collection spam during high-frequency combat events like `CHAT_MSG_ADDON` (HealComm).
|
||||
* **Performance Fix - String GC Leak** - Fixed garbage collection hitches caused by `string.gfind` closures in the HealComm parsing loop by rewriting it to use closure-free `string.find` native loops.
|
||||
* **Debug Output Command** - Added `/hb debug` (or `/hb dbg`) slash command to toggle real-time debug message printing directly into the standard chat frame without requiring custom chat channels.
|
||||
* **Performance Fix - Spell Lookup** - Fixed a massive CPU drain and garbage generation issue where the entire spellbook was linearly scanned every frame per unit. Spell IDs are now cached via O(1) dictionary lookup on login and talent/spell changes.
|
||||
* **Performance Fix - Unit Hash Lookup** - Eliminated heavy C-API calls to `UnitName()` during incoming heals by caching raid and party unit tokens in a fast O(1) hash table that updates on roster changes.
|
||||
* **Performance Fix - Range Cache GC Leak** - Fixed a continuous memory leak in the range checker caused by string concatenation (`unit .. "_" .. range`) running every frame. Range states are now stored in a nested numeric table cache.
|
||||
* **Performance Fix - Talent Rank Scan** - Fixed severe CPU stutter when gaining or losing auras that affect stats. Previously, inventory updates forced a full equipment and spell recalculation which linearly scanned the entire talent tree multiple times per rank. Talent ranks are now cached natively.
|
||||
* **Feature - HoT Tracking** - Added an option in the Integrations tab to track Player-cast HoT timers in a dedicated list below the main HealBot frame. Requires Nampower to fetch exact durations. Added support for tracking Power Word: Shield. Implemented with a pre-allocated static cache array for zero GC leaks, and precise GUID trapping for instant name resolution on self and non-party members.
|
||||
|
||||
|
||||
**v1.7.3**
|
||||
* **Performance Fix - Table Pooling Part 2** - Fixed remaining un-pooled table allocations in layout updates, macro parsing, nampower integration, and aura tracking by utilizing HealBot_GetTable().
|
||||
* **Performance Fix - HealComm Networking** - Fixed issue where incoming `HealComm` messages triggered synchronous UI redraws, causing massive lag in 40-man raids during combat. `HealBot_RecalcHeals` is now decoupled and deferred through the `HealBot_OnUpdate` dirty queue, allowing multiple network events to collapse into a single frame redraw.
|
||||
|
||||
**v1.7.2**
|
||||
* **Performance Fix - Table Pooling** - Fixed massive Vanilla Lua 5.0 garbage collection memory leaks caused by unbounded table allocations in high-frequency update loops (e.g., `OnUpdate` and `PreserveStateByGUID`). Moved tables to file-local scope and implemented inline clearing.
|
||||
* **Performance Fix - OOC Cleanup** - Added an out-of-combat garbage collection hook (`PLAYER_REGEN_ENABLED`) to purge disconnected senders from the `HealBot_IncomingHealers` global table, preventing memory bloat during prolonged play sessions.
|
||||
* **Bug Fix - Incoming Heals Comms** - Fixed a regex string parsing bug that caused incoming heals from other HealBot instances to drop if a unit's name contained non-alphabetic characters (e.g. dashes or spaces in pet names).
|
||||
* **Feature - Standard HealComm Sync** - Implemented lightweight parsing of the standard `HealComm` addon channel. HealBot now perfectly syncs incoming heals with modern raid frames like Luna, Grid, and pfUI, while retaining backwards compatibility with older versions of HealBot.
|
||||
* **UI Update - Raid Marks** - Anchored raid target icons to top of unit frames instead of center.
|
||||
* **Bug Fix** - Fixed an issue where the debuff warning sound and UI message would spam repeatedly on every aura update. The warning now only plays once per unique dispellable debuff type applied to a unit. Increased warning trigger range to 40 yards.
|
||||
|
||||
**v1.7.1**
|
||||
* **Bug Fix - Shapeshift Auto-Unshift** - Fixed an issue where the shapeshift spell queue would incorrectly pull druids out of Tree of Life form .
|
||||
* **Cleanup** - Removed deprecated `UPDATE_SHAPESHIFT_FORM` event listeners and `HealBot_UpdateShapeshiftForm` function to save CPU cycles.
|
||||
|
||||
**v1.7.0**
|
||||
* **Feature - Raid Marks** - Added tracking and display of raid marks on unit frames.
|
||||
* **External Addon Integrations** - Added a new '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).
|
||||
* **UI Layout** - Widened the Options UI and neatly centered elements to accommodate the new integrations tab.
|
||||
* **Bug Fix - Rendering Crash** - Fixed a critical UI issue where unrecognized debuff types would crash the rendering loop, causing unit frames to disappear.
|
||||
* **Bug Fix - Missing Group Frames** - Fixed a layout initialization bug where the group unit array was accidentally cleared, causing the panel to draw 0 bars and shrink to a floating "Options" button.
|
||||
* **Bug Fix - Target State Aliasing** - Fixed a bug in `PreserveStateByGUID` where targeting a party member caused their frame to alias the target's state table in memory. This previously caused party frames to adopt enemy mob names and lose their class colors when changing targets.
|
||||
* **Bug Fix - Group Aliasing** - Fixed a bug where roster updates caused frames to share memory references, causing the UI to display the same player across multiple group slots.
|
||||
* **Bug Fix - Slow Client Init** - Fixed missing class colors after `/reload` by adding lazy-load identity fetches directly into the render pipeline for when `UnitClass` data is delayed by the server.
|
||||
* **Bug Fix - Debuff Tracking** - HealBot now automatically tracks all curable debuffs for the player's class out of the box. Previously, users had to manually assign a cure spell to a click binding to enable CDC debuff tracking.
|
||||
* **Bug Fix - CDC Filter** - Fixed an issue where the CDC module displayed all debuffs instead of filtering for dispellable ones, restoring proper health bar coloring.
|
||||
* **Bug Fix - UnitClass Localization** - Added a fallback mapping for the Vanilla `UnitClass` API to always return the uppercase English class string. This fixes a bug where default options (like Debuff tracking) failed to initialize.
|
||||
* **Feature - Shapeshift Spell Queue** - Built a native spell queue system for Druid auto-unshifting. Bypasses the "Cannot cast while shapeshifted" error and server lag when AutoUnshift is enabled, firing the heal seamlessly the exact millisecond the form is dropped. Now completely unified to use the standard casting API for maximum reliability across all client setups.
|
||||
* **Bug Fix - CDC Config List** - Fixed an uninitialized dropdown list array that prevented the CDC class monitor configuration from saving correctly.
|
||||
* **Bug Fix - Color Picker Accuracy** - Removed an undocumented multiplier hack on default textures that was artificially brightening debuff bar colors and overriding the user's selected colors from the color picker.
|
||||
|
||||
**v1.6.5**
|
||||
* **Performance Update - Mana Tracking** - Added a fast-path redraw pipeline for unit power changes. This massive optimization prevents full frame redraws when players naturally regenerate or consume mana, resolving severe FPS drops in 40-man raids while tracking mana.
|
||||
* **Performance Update - Mana Tracking** - Added a fast-path redraw pipeline for unit power changes. This optimization prevents full frame redraws when players naturally regenerate or consume mana, resolving severe FPS drops in 40-man raids while tracking mana.
|
||||
|
||||
**v1.6.4**
|
||||
* **Bug Fix - UI Opacity** - Fixed a rendering layering bug where incoming heals drew on top of actual health, causing the semi-transparent incoming heal bar to wash out the solid health bar.
|
||||
@@ -62,12 +116,18 @@ Default installation path: `C:\Program Files\World of Warcraft\Interface\AddOns\
|
||||
* **UI Update - Icon Limit** - Increased maximum tracked buffs/debuffs per unit from 5 to 10.
|
||||
* **UI Update - Customizable icon size** - Added an option to change size of HoT icons (default to 12px).
|
||||
* **Cleanup** - Removed dead code `HealBot_Groups` table.
|
||||
* **Bug Fix - Buff Watch Self** - Fixed an issue where the "Self Only" toggle for watched buffs failed to load visually across sessions.
|
||||
* **Bug Fix - Pet Coloring** - Fixed an issue where custom server integrations giving pets a class could override the mint pet color when class color override is toggled.
|
||||
|
||||
**v1.6.2**
|
||||
* **Hotfix - raid and party frames** - if getNumRaidMembers() > 0 wrapper around extra bars stopped from displaying all frames blocked from displaying Extras\Raid.
|
||||
* **UI Update - Raid & Pets Split** - Split the "Raid / Extra" toggle into separate "Raid" and "Pets" toggles. Simplified the raid bars filter dropdown to core options (All, Melee, Ranged, Heals, Custom).
|
||||
|
||||
**v1.6.1**
|
||||
* **Feature - CDC Module** - Added a new toggle in the CDC options to track all debuffs. When enabled, non-dispellable debuff icons will appear on the unit frame. Bar coloring continues to only highlight dispellable debuffs to prevent visual clutter.
|
||||
* **Hotfix - XML Layering** - Reverted `bar` and `bar2` element order in `HealBot_Action.xml`. The incoming heals bar was rendering on top of the health bar, causing debuff colors to be obscured and creating visual opacity issues.
|
||||
* **Hotfix - Debuff Bar Coloring** - Restored the `showDispellable` parameter to `UnitDebuff` in the aura scanning loop so the Vanilla client correctly returns the debuff type string required for bar coloring.
|
||||
* **Hotfix - Shapeshift / ShaguTweaks Interaction** - Fixed a Lua error (`attempt to compare number with nil`) in `HealBot_Process_HealValue` caused by missing `CastTime` values when external addons like ShaguTweaks trigger auto-unshift or intercept casts.
|
||||
* **Hotfix - pet frames** - With class colours toggled extra frames for player pets were given some classy mint colour.
|
||||
* **Hotfi - raidframes in combat** - Modfied how frames behave when player leaves during combat.
|
||||
|
||||
@@ -91,6 +151,8 @@ 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**
|
||||
* **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.
|
||||
* **Modifier Key Polling:** Replaced MODIFIER_STATE_CHANGED event with polling in HealBot_OnUpdate to track modifier keys reliably.
|
||||
* **Incoming Heals Fix:** Fixed a bug where incoming heals failed to broadcast or show on the UI due to synchronous GCD fails and `CheckInteractDistance` limitations in the 1.12 API.
|
||||
@@ -107,7 +169,6 @@ Default installation path: `C:\Program Files\World of Warcraft\Interface\AddOns\
|
||||
* **Chat Announcements & Mouseover Casts:** Chat announcements are now correctly fired when using native Hovercasting (Mouseover). Additionally, added safety checks to prevent spamming chat announcements when accidentally clicking on a dead player (unless casting a resurrection spell).
|
||||
* **New Priest Buff (Enlighten):** Added the custom "Enlighten" buff to Priest trackable buffs, complete with the `btnholyscriptures` icon on unit frames.
|
||||
|
||||
|
||||
**1.3.3**
|
||||
* **Chat Panel Refactor:** Completely replaced the spell selection dropdowns in the Chat tab with manual text input boxes, allowing users to type exact spell names (with or without ranks) directly, matching the behavior of the key-bindings configuration. Fixed a string matching bug caused by Vanilla WoW's hidden trailing spaces when comparing spell names, ensuring that both rankless (e.g. `Flash Heal`) and ranked inputs trigger correctly.
|
||||
* **Chat Layout Stack:** Restructured the Chat Options XML layout to correctly stack the inputs into neat rows, preventing horizontal overlap and providing more space for typing long announce messages.
|
||||
|
||||
Reference in New Issue
Block a user