mirror of
https://github.com/Bluewhale1337/HealBotBlue.git
synced 2026-09-11 18:00:20 +00:00
Compare commits
109 Commits
v1.3.0
..
a0b6e2f72d
| Author | SHA1 | Date | |
|---|---|---|---|
| a0b6e2f72d | |||
| 2af99cbc2b | |||
| b0195b30b9 | |||
| 2aaa53a9e6 | |||
| b64e7070ba | |||
| 6760e4e43d | |||
| 16bc4d95ee | |||
| 59ceb3b465 | |||
| e05238a5b2 | |||
| d2642745cb | |||
| 8026e14cde | |||
| 377c2c31d0 | |||
| 998a64a83f | |||
| cf05b94611 | |||
| 5aab23314a | |||
| 36fad01424 | |||
| bcd566d80b | |||
| 553a5ece36 | |||
| 60ef3bc41f | |||
| 50661ac924 | |||
| 9c1f873b48 | |||
| 6d977f6963 | |||
| d09e49d26a | |||
| 9a033a1045 | |||
| 6a6a9e3283 | |||
| b3c2b4a096 | |||
| d0e027ec12 | |||
| dc2f0ca089 | |||
| d021441b32 | |||
| 58f593947e | |||
| 99997b711a | |||
| 496013ae9c | |||
| f7443fcdf0 | |||
| a0d435eb70 | |||
| 048970d1b7 | |||
| d5dec0f1f0 | |||
| ad302f299e | |||
| 327cd7a08c | |||
| 2f01ca3f1b | |||
| 45ce2a024f | |||
| 2ab7a93a6e | |||
| 7cf0956a84 | |||
| 6c4297c126 | |||
| 4f7a06ad6f | |||
| 178d1184a3 | |||
| f1b7e3950f | |||
| faf040997e | |||
| 4c9f50770a | |||
| ed11046eda | |||
| d36ad994ea | |||
| a3f3d9e4c6 | |||
| caa3a03bc3 | |||
| 2b1ccb03c5 | |||
| 5340eb253a | |||
| bbff4a461c | |||
| 40ad96ae07 | |||
| 611f584b8d | |||
| 5f015c89e5 | |||
| e20c5baf74 | |||
| 9fd6f47946 | |||
| 1f339a8da5 | |||
| 00f9c3d485 | |||
| 41e4a15075 | |||
| 026d4093aa | |||
| db07c467a3 | |||
| c47d17f790 | |||
| dd9f9886b4 | |||
| 85ad55c1cb | |||
| 441a45150f | |||
| 0b610adaab | |||
| 609e2cc87b | |||
| 12838ff250 | |||
| e6ad9e7506 | |||
| 9f08b356e1 | |||
| 3845ada15f | |||
| 826bf64eda | |||
| 8854cd3caa | |||
| c8a5e4f0eb | |||
| 2d75406d88 | |||
| 2e35be6516 | |||
| 07a9c3a93d | |||
| c8e62fe80e | |||
| 1334fc09bf | |||
| ce594af5fa | |||
| f1c5d6a8d1 | |||
| 0186fc1d93 | |||
| ff97414bb1 | |||
| d0d6a39fb9 | |||
| 4209b05ca0 | |||
| 66172cab45 | |||
| eec5745dbb | |||
| 4678236cc0 | |||
| a1aa1a4c1d | |||
| 86e0e0b18a | |||
| becb2ddfdb | |||
| 7eb07d724e | |||
| 2e8e57f5c4 | |||
| f8c6c3493b | |||
| 01a8e3bc6c | |||
| c50bcd54f3 | |||
| 4c7cfbde8e | |||
| cb1ba1ab75 | |||
| 0c8b687f53 | |||
| 42715fba47 | |||
| 6fe02c1a16 | |||
| a6c75b78f7 | |||
| 1e1e06163c | |||
| 2995ccbd32 | |||
| 8b3355656e |
+345
-284
@@ -1,285 +1,346 @@
|
|||||||
--[[
|
--[[
|
||||||
|
|
||||||
HealBot Contined
|
HealBot Contined
|
||||||
|
|
||||||
]]
|
]]
|
||||||
|
|
||||||
-- local _scale=0; -- moved to HealBot_Controller_Range.lua
|
-- local _scale=0; -- moved to HealBot_Controller_Range.lua
|
||||||
CalcEquipBonus=false;
|
HealBot_CalcEquipBonus=false;
|
||||||
HealBot_EquipChangeTimer = 0;
|
HealBot_EquipChangeTimer = 0;
|
||||||
HealValue=0;
|
HealBot_HealValue=0;
|
||||||
InitSpells=1;
|
HealBot_SpellsInitFlag=1;
|
||||||
local DebugDebuff=false;
|
local DebugDebuff=false;
|
||||||
Delay_RecalcParty=0;
|
HealBot_Delay_RecalcParty=0;
|
||||||
|
|
||||||
|
|
||||||
-- Debugging and Error functions moved to HealBot_Controller_Comms.lua
|
-- Debugging and Error functions moved to HealBot_Controller_Comms.lua
|
||||||
|
|
||||||
function HealBot_TogglePanel(panel)
|
-- HealBot_TogglePanel: Toggles visibility of a frame panel.
|
||||||
if (not panel) then return end
|
function HealBot_TogglePanel(panel)
|
||||||
if ( panel:IsVisible() ) then
|
if (not panel) then return end
|
||||||
HideUIPanel(panel);
|
if ( panel:IsVisible() ) then
|
||||||
else
|
HideUIPanel(panel);
|
||||||
ShowUIPanel(panel);
|
else
|
||||||
end
|
ShowUIPanel(panel);
|
||||||
end
|
end
|
||||||
|
end
|
||||||
function HealBot_StartMoving(frame)
|
|
||||||
if ( not frame.isMoving ) and ( frame.isLocked ~= 1 ) then
|
-- HealBot_StartMoving: Initiates frame dragging when unlocked.
|
||||||
frame:StartMoving();
|
function HealBot_StartMoving(frame)
|
||||||
frame.isMoving = true;
|
if ( not frame.isMoving ) and ( frame.isLocked ~= 1 ) then
|
||||||
end
|
frame:StartMoving();
|
||||||
end
|
frame.isMoving = true;
|
||||||
|
end
|
||||||
function HealBot_StopMoving(frame)
|
end
|
||||||
if ( frame.isMoving ) then
|
|
||||||
frame:StopMovingOrSizing();
|
-- HealBot_StopMoving: Stops frame dragging.
|
||||||
frame.isMoving = false;
|
function HealBot_StopMoving(frame)
|
||||||
end
|
if ( frame.isMoving ) then
|
||||||
if HealBot_Config.GrowUpwards==1 then
|
frame:StopMovingOrSizing();
|
||||||
local left,bottom = HealBot_Action:GetLeft(),HealBot_Action:GetBottom();
|
frame.isMoving = false;
|
||||||
if left and bottom then
|
end
|
||||||
HealBot_Config.PanelAnchorX=left;
|
if HealBot_Config.GrowUpwards==1 then
|
||||||
HealBot_Config.PanelAnchorY=bottom;
|
local left,bottom = HealBot_Action:GetLeft(),HealBot_Action:GetBottom();
|
||||||
end
|
if left and bottom then
|
||||||
-- HealBot_AddDebug("Pos X="..HealBot_Config.PanelAnchorX.." Pos Y="..HealBot_Config.PanelAnchorY)
|
HealBot_Config.PanelAnchorX=left;
|
||||||
end
|
HealBot_Config.PanelAnchorY=bottom;
|
||||||
|
end
|
||||||
end
|
-- HealBot_AddDebug("Pos X="..HealBot_Config.PanelAnchorX.." Pos Y="..HealBot_Config.PanelAnchorY)
|
||||||
|
end
|
||||||
function HealBot_SlashCmd(cmd)
|
|
||||||
if (cmd=="") then
|
end
|
||||||
HealBot_TogglePanel(HealBot_Action);
|
|
||||||
return
|
-- HealBot_SlashCmd: Handles '/hb' or '/healbot' chat commands.
|
||||||
end
|
function HealBot_SlashCmd(cmd)
|
||||||
if (cmd=="options" or cmd=="opt" or cmd=="config" or cmd=="cfg") then
|
if (cmd=="") then
|
||||||
HealBot_TogglePanel(HealBot_Options);
|
HealBot_TogglePanel(HealBot_Action);
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
if (cmd=="options" or cmd=="opt" or cmd=="config" or cmd=="cfg") then
|
||||||
if (cmd=="reset" or cmd=="recalc" or cmd=="defaults") then
|
HealBot_TogglePanel(HealBot_Options);
|
||||||
InitSpells=2;
|
return
|
||||||
HealBot_Options_Defaults_OnClick(HealBot_Options_Defaults);
|
end
|
||||||
return
|
if (cmd=="forms" or cmd=="form") then
|
||||||
end
|
local forms = GetNumShapeshiftForms();
|
||||||
if (cmd=="ui") then
|
if forms and forms > 0 then
|
||||||
ReloadUI();
|
HealBot_AddChat("HealBot: Available shapeshift forms:");
|
||||||
return;
|
for i=1,forms do
|
||||||
end
|
local icon, name, active = GetShapeshiftFormInfo(i);
|
||||||
if (cmd=="init") then
|
local actStr = "false"
|
||||||
HealBot_RegisterThis(this);
|
if active then actStr = "true" end
|
||||||
end
|
HealBot_AddChat(" Form " .. i .. ": " .. (name or "nil") .. " | Icon: " .. (icon or "nil") .. " | Active: " .. actStr);
|
||||||
if (cmd=="x") then
|
end
|
||||||
InitSpells=2;
|
else
|
||||||
NeedEquipUpdate=1
|
HealBot_AddChat("HealBot: No shapeshift forms found.");
|
||||||
HealBot_RecalcSpells();
|
end
|
||||||
return;
|
return
|
||||||
end
|
end
|
||||||
if (cmd=="ver") then
|
|
||||||
local text=UnitName("player");
|
if (cmd=="reset" or cmd=="recalc" or cmd=="defaults") then
|
||||||
HealBot_SendAddonMessage( "HealBot", ">> RequestVersion <<=>> "..text.." <<=>> nil <<" );
|
HealBot_SpellsInitFlag=2;
|
||||||
return;
|
HealBot_Options_Defaults_OnClick(HealBot_Options_Defaults);
|
||||||
end
|
return
|
||||||
if (cmd=="chan") then
|
end
|
||||||
HealBot_AddDebug( "Channel active" );
|
if (cmd=="ui") then
|
||||||
return;
|
ReloadUI();
|
||||||
end
|
return;
|
||||||
end
|
end
|
||||||
|
if (cmd=="init") then
|
||||||
-- HealBot_SendAddonMessage moved to HealBot_Controller_Comms.lua
|
HealBot_RegisterThis(this);
|
||||||
|
end
|
||||||
function HealBot_TargetName()
|
if (cmd=="x") then
|
||||||
if UnitIsEnemy("target","player") then return nil end
|
HealBot_SpellsInitFlag=2;
|
||||||
-- if not UnitPlayerControlled("target") then return nil end
|
NeedEquipUpdate=1
|
||||||
if (UnitIsPlayer("target")) then
|
HealBot_RecalcSpells();
|
||||||
if UnitIsUnit("target","player") then return "player" end
|
return;
|
||||||
if (UnitInParty("target")) then
|
end
|
||||||
for i=1,4 do
|
if (cmd=="ver") then
|
||||||
if UnitIsUnit("target","party"..i) then return "party"..i end
|
local text=UnitName("player");
|
||||||
end
|
HealBot_SendAddonMessage( "HealBot", ">> RequestVersion <<=>> "..text.." <<=>> nil <<" );
|
||||||
end
|
return;
|
||||||
if (UnitInRaid("target")) then
|
end
|
||||||
for i=1,40 do
|
if (cmd=="chan") then
|
||||||
if UnitIsUnit("target","raid"..i) then return "raid"..i end
|
HealBot_AddDebug( "Channel active" );
|
||||||
end
|
return;
|
||||||
end
|
end
|
||||||
else
|
end
|
||||||
if UnitIsUnit("target","pet") then return "pet" end
|
|
||||||
if (UnitInParty("player")) then
|
-- HealBot_SendAddonMessage moved to HealBot_Controller_Comms.lua
|
||||||
for i=1,4 do
|
|
||||||
if UnitIsUnit("target","partypet"..i) then return "partypet"..i end
|
-- HealBot_TargetName: Retrieves the name of the current target, ignoring enemies.
|
||||||
end
|
function HealBot_TargetName()
|
||||||
end
|
if UnitIsEnemy("target","player") then return nil end
|
||||||
if (UnitInRaid("player")) then
|
-- if not UnitPlayerControlled("target") then return nil end
|
||||||
for i=1,40 do
|
if (UnitIsPlayer("target")) then
|
||||||
if UnitIsUnit("target","raidpet"..i) then return "raidpet"..i end
|
if UnitIsUnit("target","player") then return "player" end
|
||||||
end
|
if (UnitInParty("target")) then
|
||||||
end
|
for i=1,4 do
|
||||||
end
|
if UnitIsUnit("target","party"..i) then return "party"..i end
|
||||||
return nil
|
end
|
||||||
end
|
end
|
||||||
|
if (UnitInRaid("target")) then
|
||||||
|
for i=1,40 do
|
||||||
|
if UnitIsUnit("target","raid"..i) then return "raid"..i end
|
||||||
function HealBot_PackBagSlot(bag,slot)
|
end
|
||||||
return bag*100+slot;
|
end
|
||||||
end
|
else
|
||||||
|
if UnitIsUnit("target","pet") then return "pet" end
|
||||||
function HealBot_UnpackBagSlot(bagslot)
|
if (UnitInParty("player")) then
|
||||||
return math.floor(bagslot/100),math.mod(bagslot,100);
|
for i=1,4 do
|
||||||
end
|
if UnitIsUnit("target","partypet"..i) then return "partypet"..i end
|
||||||
|
end
|
||||||
function HealBot_GetItemName(bag,slot)
|
end
|
||||||
local link = GetContainerItemLink(bag,slot);
|
if (UnitInRaid("player")) then
|
||||||
if not link then return nil end;
|
for i=1,40 do
|
||||||
local _,_,item = string.find(link,"%[(.*)%]");
|
if UnitIsUnit("target","raidpet"..i) then return "raidpet"..i end
|
||||||
local _,count = GetContainerItemInfo(bag,slot);
|
end
|
||||||
return item,count;
|
end
|
||||||
end
|
end
|
||||||
|
return nil
|
||||||
function HealBot_GetBagSlot(item)
|
end
|
||||||
local BagSlot,BestCount;
|
|
||||||
for bag=0,NUM_BAG_FRAMES do
|
|
||||||
for slot=1,GetContainerNumSlots(bag) do
|
|
||||||
local bagitem,count = HealBot_GetItemName(bag,slot);
|
-- HealBot_PackBagSlot: Combines bag and slot into a single ID.
|
||||||
if (item==bagitem) then
|
function HealBot_PackBagSlot(bag,slot)
|
||||||
if not BestCount or BestCount>count then
|
return bag*100+slot;
|
||||||
BagSlot = HealBot_PackBagSlot(bag,slot);
|
end
|
||||||
BestCount = count;
|
|
||||||
end
|
-- HealBot_UnpackBagSlot: Extracts bag and slot from a combined ID.
|
||||||
end
|
function HealBot_UnpackBagSlot(bagslot)
|
||||||
end
|
return math.floor(bagslot/100),math.mod(bagslot,100);
|
||||||
end
|
end
|
||||||
return BagSlot;
|
|
||||||
end
|
-- HealBot_GetItemName: Gets item name from bag slot link.
|
||||||
|
function HealBot_GetItemName(bag,slot)
|
||||||
function HealBot_UseItem(item)
|
local link = GetContainerItemLink(bag,slot);
|
||||||
local bagslot = HealBot_GetBagSlot(item);
|
if not link then return nil end;
|
||||||
if not bagslot then return end;
|
local _,_,item = string.find(link,"%[(.*)%]");
|
||||||
local bag,slot = HealBot_UnpackBagSlot(bagslot);
|
local _,count = GetContainerItemInfo(bag,slot);
|
||||||
local Link = GetContainerItemLink(bag,slot);
|
return item,count;
|
||||||
UseContainerItem(bag,slot);
|
end
|
||||||
end
|
|
||||||
|
-- HealBot_GetBagSlot: Finds bag slot ID for an item name.
|
||||||
-- Spell parsing and casting functions moved to HealBot_Controller_Spells.lua
|
function HealBot_GetBagSlot(item)
|
||||||
|
local BagSlot,BestCount;
|
||||||
function HealBot_UnitClass(unit)
|
for bag=0,NUM_BAG_FRAMES do
|
||||||
local playerClass, englishClass = UnitClass(unit);
|
for slot=1,GetContainerNumSlots(bag) do
|
||||||
return englishClass;
|
local bagitem,count = HealBot_GetItemName(bag,slot);
|
||||||
end
|
if (item==bagitem) then
|
||||||
|
if not BestCount or BestCount>count then
|
||||||
---- HealBot_UnitAffected moved to HealBot_Controller_Aura.lua
|
BagSlot = HealBot_PackBagSlot(bag,slot);
|
||||||
-- safer to use GameTooltip:SetUnitBuff and read the lines in the tooltip ...
|
BestCount = count;
|
||||||
-- maybe make an additional GameTooltip frame if possible ?
|
end
|
||||||
|
end
|
||||||
-- Spell parsing, default setup, finding, casting, and recalculating functions moved to HealBot_Controller_Spells.lua
|
end
|
||||||
|
end
|
||||||
--------------------------------------------------------------------------------------------------
|
return BagSlot;
|
||||||
-- OnFoo functions
|
end
|
||||||
--------------------------------------------------------------------------------------------------
|
|
||||||
|
-- HealBot_UseItem: Uses an item from inventory.
|
||||||
-- Event loop handlers and event dispatcher moved to HealBot_Controller_Events.lua
|
function HealBot_UseItem(item)
|
||||||
|
local bagslot = HealBot_GetBagSlot(item);
|
||||||
-- SpiBonus and GetBonus functions moved to HealBot_Controller_Spells.lua
|
if not bagslot then return end;
|
||||||
|
local bag,slot = HealBot_UnpackBagSlot(bagslot);
|
||||||
function HealBot_FindUnitID(unitname)
|
local Link = GetContainerItemLink(bag,slot);
|
||||||
local text;
|
UseContainerItem(bag,slot);
|
||||||
for _,unit in ipairs(HealBot_Action_HealGroup) do
|
end
|
||||||
text = UnitName(unit);
|
|
||||||
if text then
|
-- Spell parsing and casting functions moved to HealBot_Controller_Spells.lua
|
||||||
if text==unitname then
|
|
||||||
return unit;
|
-- HealBot_UnitClass: Returns English class string for a unit.
|
||||||
end
|
function HealBot_UnitClass(unit)
|
||||||
end
|
local locClass, enClass = UnitClass(unit)
|
||||||
end
|
if enClass then return string.upper(enClass) end
|
||||||
for i=1,40 do
|
|
||||||
local unit = "raid"..i;
|
-- Fallback for Vanilla 1.12 where enClass is nil
|
||||||
text = UnitName(unit);
|
if locClass == HEALBOT_DRUID then return "DRUID"
|
||||||
if text then
|
elseif locClass == HEALBOT_HUNTER then return "HUNTER"
|
||||||
if text==unitname then
|
elseif locClass == HEALBOT_MAGE then return "MAGE"
|
||||||
return unit;
|
elseif locClass == HEALBOT_PALADIN then return "PALADIN"
|
||||||
end
|
elseif locClass == HEALBOT_PRIEST then return "PRIEST"
|
||||||
end
|
elseif locClass == HEALBOT_ROGUE then return "ROGUE"
|
||||||
end
|
elseif locClass == HEALBOT_SHAMAN then return "SHAMAN"
|
||||||
return nil;
|
elseif locClass == HEALBOT_WARLOCK then return "WARLOCK"
|
||||||
end
|
elseif locClass == HEALBOT_WARRIOR then return "WARRIOR"
|
||||||
|
end
|
||||||
function HealBot_PlaySound(id)
|
|
||||||
if id==1 then
|
return locClass
|
||||||
PlaySoundFile("Sound\\Doodad\\BellTollTribal.wav");
|
end
|
||||||
elseif id==2 then
|
|
||||||
PlaySoundFile("Sound\\Spells\\Thorns.wav");
|
---- HealBot_UnitAffected moved to HealBot_Controller_Aura.lua
|
||||||
elseif id==3 then
|
-- safer to use GameTooltip:SetUnitBuff and read the lines in the tooltip ...
|
||||||
PlaySoundFile("Sound\\Doodad\\BellTollNightElf.wav");
|
-- maybe make an additional GameTooltip frame if possible ?
|
||||||
end
|
|
||||||
end
|
-- Spell parsing, default setup, finding, casting, and recalculating functions moved to HealBot_Controller_Spells.lua
|
||||||
|
|
||||||
-- HealBot_InitSpells moved to HealBot_Controller_Spells.lua
|
--------------------------------------------------------------------------------------------------
|
||||||
|
-- OnFoo functions
|
||||||
function HealBot_InitData()
|
--------------------------------------------------------------------------------------------------
|
||||||
HealBot_Skins = HealBot_Config.Skins;
|
|
||||||
if(CT_RegisterMod) then
|
-- Event loop handlers and event dispatcher moved to HealBot_Controller_Events.lua
|
||||||
CT_RegisterMod(HEALBOT_ADDON,"HealBot Options",5,"Interface\\AddOns\\HealBotBlue\\Images\\HealBot","Opens HealBot Options","off",nil,HealBot_ToggleOptions);
|
|
||||||
end
|
-- SpiBonus and GetBonus functions moved to HealBot_Controller_Spells.lua
|
||||||
|
|
||||||
-- remove after 1.126
|
-- HealBot_FindUnitID: Finds a unit token for a given player name.
|
||||||
local tmp=HealBot_Config.ShowHeader[HealBot_Config.Current_Skin] or 0
|
function HealBot_FindUnitID(unitname)
|
||||||
HealBot_Config.ShowHeader[HealBot_Config.Current_Skin]=tmp
|
local text;
|
||||||
|
for _,unit in ipairs(HealBot_Action_HealGroup) do
|
||||||
HealBot_Options_CDCMonitor_Reset()
|
text = UnitName(unit);
|
||||||
HealBot_Options_EmergencyFilter_Reset()
|
if text then
|
||||||
HealBot_Options_Debuff_Reset()
|
if text==unitname then
|
||||||
end
|
return unit;
|
||||||
|
end
|
||||||
function HealBot_ToggleOptions()
|
end
|
||||||
HealBot_TogglePanel(HealBot_Options)
|
end
|
||||||
end
|
for i=1,40 do
|
||||||
|
local unit = "raid"..i;
|
||||||
-- HealBot_InitGetSpellData and HealBot_Generic_Patten moved to HealBot_Controller_Spells.lua
|
text = UnitName(unit);
|
||||||
|
if text then
|
||||||
-- HealBot_Get_DebugChan moved to HealBot_Controller_Comms.lua
|
if text==unitname then
|
||||||
|
return unit;
|
||||||
-- HealBot_Range_Check moved to HealBot_Controller_Range.lua
|
end
|
||||||
|
end
|
||||||
--------------------------------------------------------------------------------
|
end
|
||||||
-- Native Action Bar Hovercasting (Mouseover Hook)
|
return nil;
|
||||||
--------------------------------------------------------------------------------
|
end
|
||||||
do
|
|
||||||
local pass = function() end
|
-- HealBot_PlaySound: Plays an audio alert based on ID.
|
||||||
local orig = UseAction
|
function HealBot_PlaySound(id)
|
||||||
function UseAction(slot, checkCursor, onSelf)
|
if id==1 then
|
||||||
if HealBot_Config.ActionMouseover == 1 then
|
PlaySoundFile("Sound\\Doodad\\BellTollTribal.wav");
|
||||||
local mouseover = HealBot_Action_TooltipUnit
|
elseif id==2 then
|
||||||
if mouseover and mouseover ~= 'target' then
|
PlaySoundFile("Sound\\Spells\\Thorns.wav");
|
||||||
local _PlaySound = PlaySound
|
elseif id==3 then
|
||||||
local target = UnitName("target")
|
PlaySoundFile("Sound\\Doodad\\BellTollNightElf.wav");
|
||||||
|
end
|
||||||
PlaySound = pass
|
end
|
||||||
ClearTarget()
|
|
||||||
PlaySound = _PlaySound
|
-- HealBot_InitSpells moved to HealBot_Controller_Spells.lua
|
||||||
|
|
||||||
do
|
-- HealBot_InitData: Registers options and basic setup on variables loaded.
|
||||||
local autoSelfCast = GetCVar("autoSelfCast")
|
function HealBot_InitData()
|
||||||
SetCVar("autoSelfCast", "0") -- Ensure disabled
|
HealBot_Skins = HealBot_Config.Skins;
|
||||||
orig(slot, checkCursor, onSelf)
|
if(CT_RegisterMod) then
|
||||||
if autoSelfCast then
|
CT_RegisterMod(HEALBOT_ADDON,"HealBot Options",5,"Interface\\AddOns\\HealBotBlue\\Images\\HealBot","Opens HealBot Options","off",nil,HealBot_ToggleOptions);
|
||||||
SetCVar("autoSelfCast", autoSelfCast)
|
end
|
||||||
end
|
|
||||||
end
|
-- remove after 1.126
|
||||||
|
local tmp=HealBot_Config.ShowHeader[HealBot_Config.Current_Skin] or 0
|
||||||
SpellTargetUnit(mouseover)
|
HealBot_Config.ShowHeader[HealBot_Config.Current_Skin]=tmp
|
||||||
|
|
||||||
if target then
|
HealBot_Options_CDCMonitor_Reset()
|
||||||
PlaySound = pass
|
HealBot_Options_EmergencyFilter_Reset()
|
||||||
TargetLastTarget()
|
HealBot_Options_Debuff_Reset()
|
||||||
PlaySound = _PlaySound
|
end
|
||||||
end
|
|
||||||
|
-- HealBot_ToggleOptions: Toggles the main options menu.
|
||||||
return
|
function HealBot_ToggleOptions()
|
||||||
end
|
HealBot_TogglePanel(HealBot_Options)
|
||||||
end
|
end
|
||||||
orig(slot, checkCursor, onSelf)
|
|
||||||
end
|
-- HealBot_InitGetSpellData and HealBot_Generic_Patten moved to HealBot_Controller_Spells.lua
|
||||||
end
|
|
||||||
|
-- HealBot_Get_DebugChan moved to HealBot_Controller_Comms.lua
|
||||||
|
|
||||||
|
-- HealBot_Range_Check moved to HealBot_Controller_Range.lua
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
-- Native Action Bar Hovercasting (Mouseover Hook)
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
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
|
||||||
|
if mouseover and mouseover ~= 'target' then
|
||||||
|
local _PlaySound = PlaySound
|
||||||
|
local target = UnitName("target")
|
||||||
|
|
||||||
|
PlaySound = pass
|
||||||
|
ClearTarget()
|
||||||
|
PlaySound = _PlaySound
|
||||||
|
|
||||||
|
do
|
||||||
|
local autoSelfCast = GetCVar("autoSelfCast")
|
||||||
|
SetCVar("autoSelfCast", "0") -- Ensure disabled
|
||||||
|
|
||||||
|
local spellName = nil
|
||||||
|
if not GetActionText(slot) then
|
||||||
|
HealBot_ScanTooltip:SetOwner(HealBot_ScanTooltip, "ANCHOR_NONE")
|
||||||
|
HealBot_ScanTooltip:SetAction(slot)
|
||||||
|
spellName = HealBot_ScanTooltipTextLeft1 and HealBot_ScanTooltipTextLeft1:GetText()
|
||||||
|
end
|
||||||
|
|
||||||
|
HealBot_CastFailed = false
|
||||||
|
orig(slot, checkCursor, onSelf)
|
||||||
|
if autoSelfCast then
|
||||||
|
SetCVar("autoSelfCast", autoSelfCast)
|
||||||
|
end
|
||||||
|
|
||||||
|
if spellName and not HealBot_CastFailed then
|
||||||
|
HealBot_CastingSpell = spellName
|
||||||
|
HealBot_CastingTarget = mouseover
|
||||||
|
HealBot_Process_HealValue(spellName, mouseover)
|
||||||
|
HealBot_AnnounceCast(spellName, mouseover)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
SpellTargetUnit(mouseover)
|
||||||
|
|
||||||
|
if target then
|
||||||
|
PlaySound = pass
|
||||||
|
TargetLastTarget()
|
||||||
|
PlaySound = _PlaySound
|
||||||
|
end
|
||||||
|
|
||||||
|
return
|
||||||
|
end
|
||||||
|
end
|
||||||
|
orig(slot, checkCursor, onSelf)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -18,7 +18,7 @@
|
|||||||
<FontString name="$parent_text" inherits="GameFontNormalSmall">
|
<FontString name="$parent_text" inherits="GameFontNormalSmall">
|
||||||
<Anchors>
|
<Anchors>
|
||||||
<Anchor point="CENTER">
|
<Anchor point="CENTER">
|
||||||
<Offset> <AbsDimension y="1"/> </Offset>
|
<Offset> <AbsDimension y="0"/> </Offset>
|
||||||
</Anchor>
|
</Anchor>
|
||||||
</Anchors>
|
</Anchors>
|
||||||
</FontString>
|
</FontString>
|
||||||
|
|||||||
+6
-3
@@ -1,15 +1,16 @@
|
|||||||
## Interface: 11200
|
## Interface: 11200
|
||||||
## Title: HealBotBlue
|
## Title: HealBotBlue
|
||||||
## Version: 1.3
|
## Version: 1.7.0
|
||||||
## Author: Bluewhale
|
## 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.
|
||||||
## SavedVariables: HealBot_Config
|
## SavedVariablesPerCharacter: HealBot_Config
|
||||||
..\..\FrameXML\Fonts.xml
|
..\..\FrameXML\Fonts.xml
|
||||||
..\..\FrameXML\OptionsFrameTemplates.xml
|
..\..\FrameXML\OptionsFrameTemplates.xml
|
||||||
..\..\FrameXML\UIPanelTemplates.xml
|
..\..\FrameXML\UIPanelTemplates.xml
|
||||||
..\..\FrameXML\UIDropDownMenu.xml
|
..\..\FrameXML\UIDropDownMenu.xml
|
||||||
HealBot_Error.xml
|
HealBot_Error.xml
|
||||||
HealBot_Model.lua
|
HealBot_Model.lua
|
||||||
|
HealBot_Integrations.lua
|
||||||
HealBot_Controller_Range.lua
|
HealBot_Controller_Range.lua
|
||||||
HealBot_Controller_Comms.lua
|
HealBot_Controller_Comms.lua
|
||||||
HealBot_Controller_Aura.lua
|
HealBot_Controller_Aura.lua
|
||||||
@@ -27,3 +28,5 @@ HealBot_Options_CDC.xml
|
|||||||
HealBot_Options_Skins.xml
|
HealBot_Options_Skins.xml
|
||||||
HealBot_Options_Buffs.xml
|
HealBot_Options_Buffs.xml
|
||||||
HealBot_Options_Chat.xml
|
HealBot_Options_Chat.xml
|
||||||
|
HealBot_Options_Auto.xml
|
||||||
|
HealBot_Options_Integrations.xml
|
||||||
|
|||||||
+178
-23
@@ -1,9 +1,11 @@
|
|||||||
-- Status bar layout functions and tables moved to HealBot_View_Layout.lua
|
-- 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()
|
function HealBot_AlwaysHeal()
|
||||||
return HealBot_Config.EnableHealthy==1
|
return HealBot_Config.EnableHealthy==1
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_MayHeal: Checks if unit is eligible for healing UI.
|
||||||
function HealBot_MayHeal(unit)
|
function HealBot_MayHeal(unit)
|
||||||
if not UnitName(unit) or not HealBot_Heals[unit] then return false end
|
if not UnitName(unit) or not HealBot_Heals[unit] then return false end
|
||||||
if unit ~= 'target' then return true end
|
if unit ~= 'target' then return true end
|
||||||
@@ -11,6 +13,7 @@ function HealBot_MayHeal(unit)
|
|||||||
return true;
|
return true;
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_ShouldHeal: Checks if unit needs immediate healing.
|
||||||
function HealBot_ShouldHeal(unit)
|
function HealBot_ShouldHeal(unit)
|
||||||
if HealBot_UnitDebuff[unit] and not UnitIsDeadOrGhost(unit) then
|
if HealBot_UnitDebuff[unit] and not UnitIsDeadOrGhost(unit) then
|
||||||
if HealBot_Range_Check(unit, 30)==1 then
|
if HealBot_Range_Check(unit, 30)==1 then
|
||||||
@@ -21,22 +24,26 @@ function HealBot_ShouldHeal(unit)
|
|||||||
and (UnitHealth(unit)<UnitHealthMax(unit)*HealBot_Config.AlertLevel or HealBot_AlwaysHeal());
|
and (UnitHealth(unit)<UnitHealthMax(unit)*HealBot_Config.AlertLevel or HealBot_AlwaysHeal());
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_Action_ShouldHealSome: Alias for checking if any unit needs healing.
|
||||||
function HealBot_Action_ShouldHealSome()
|
function HealBot_Action_ShouldHealSome()
|
||||||
return table.foreach(HealBot_Action_HealButtons, function (index,button)
|
for index, button in pairs(HealBot_Action_HealButtons) do
|
||||||
if (HealBot_ShouldHeal(button.unit)) then return button.unit; end
|
if (HealBot_ShouldHeal(button.unit)) then return button.unit; end
|
||||||
end);
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_MustHeal: Internal utility: HealBot_MustHeal
|
||||||
function HealBot_MustHeal(unit)
|
function HealBot_MustHeal(unit)
|
||||||
return HealBot_ShouldHeal(unit) and UnitHealth(unit)<UnitHealthMax(unit)*HealBot_Config.AlertLevel
|
return HealBot_ShouldHeal(unit) and UnitHealth(unit)<UnitHealthMax(unit)*HealBot_Config.AlertLevel
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_Action_MustHealSome: Checks if emergency healing is required.
|
||||||
function HealBot_Action_MustHealSome()
|
function HealBot_Action_MustHealSome()
|
||||||
return table.foreach(HealBot_Action_HealButtons, function (index,button)
|
for index, button in pairs(HealBot_Action_HealButtons) do
|
||||||
if (HealBot_MustHeal(button.unit)) then return button.unit; end
|
if (HealBot_MustHeal(button.unit)) then return button.unit; end
|
||||||
end);
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_GetRezSpellForClass: Internal utility: HealBot_GetRezSpellForClass
|
||||||
function HealBot_GetRezSpellForClass()
|
function HealBot_GetRezSpellForClass()
|
||||||
local _, class = UnitClass("player");
|
local _, class = UnitClass("player");
|
||||||
if class == "PRIEST" then return HEALBOT_RESURRECTION;
|
if class == "PRIEST" then return HEALBOT_RESURRECTION;
|
||||||
@@ -47,6 +54,7 @@ function HealBot_GetRezSpellForClass()
|
|||||||
return nil;
|
return nil;
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_CanHeal: Internal utility: HealBot_CanHeal
|
||||||
function HealBot_CanHeal(unit)
|
function HealBot_CanHeal(unit)
|
||||||
if UnitIsDeadOrGhost(unit) then
|
if UnitIsDeadOrGhost(unit) then
|
||||||
local rezSpell = HealBot_GetRezSpellForClass();
|
local rezSpell = HealBot_GetRezSpellForClass();
|
||||||
@@ -76,6 +84,7 @@ end
|
|||||||
|
|
||||||
-- Refresh and reset functions moved to HealBot_View_Layout.lua
|
-- Refresh and reset functions moved to HealBot_View_Layout.lua
|
||||||
|
|
||||||
|
-- HealBot_Action_SpellPattern: Resolves spell string based on click modifiers.
|
||||||
function HealBot_Action_SpellPattern(button)
|
function HealBot_Action_SpellPattern(button)
|
||||||
local combos = HealBot_Config.KeyCombo[UnitClass("player")]
|
local combos = HealBot_Config.KeyCombo[UnitClass("player")]
|
||||||
if not combos then return nil end
|
if not combos then return nil end
|
||||||
@@ -86,6 +95,7 @@ function HealBot_Action_SpellPattern(button)
|
|||||||
return combos[press]
|
return combos[press]
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_Decode_Button: Decodes click action to spell pattern.
|
||||||
function HealBot_Decode_Button(button)
|
function HealBot_Decode_Button(button)
|
||||||
if button=="RightButton" then
|
if button=="RightButton" then
|
||||||
button="Right";
|
button="Right";
|
||||||
@@ -105,23 +115,138 @@ end
|
|||||||
-- Widget_OnFoo functions
|
-- Widget_OnFoo functions
|
||||||
--------------------------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
-- HealBot_Action_HealUnit_OnLoad: Internal utility: HealBot_Action_HealUnit_OnLoad
|
||||||
function HealBot_Action_HealUnit_OnLoad(this)
|
function HealBot_Action_HealUnit_OnLoad(this)
|
||||||
this:RegisterForClicks("LeftButtonUp", "RightButtonUp", "MiddleButtonUp", "Button4Up", "Button5Up");
|
this:RegisterForClicks("LeftButtonUp", "RightButtonUp", "MiddleButtonUp", "Button4Up", "Button5Up");
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_Action_HealUnit_OnEnter: Internal utility: HealBot_Action_HealUnit_OnEnter
|
||||||
function HealBot_Action_HealUnit_OnEnter(this)
|
function HealBot_Action_HealUnit_OnEnter(this)
|
||||||
HealBot_Action_ShowTooltip(this);
|
HealBot_Action_ShowTooltip(this);
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_Action_HealUnit_OnLeave: Internal utility: HealBot_Action_HealUnit_OnLeave
|
||||||
function HealBot_Action_HealUnit_OnLeave(this)
|
function HealBot_Action_HealUnit_OnLeave(this)
|
||||||
HealBot_Action_HideTooltip(this);
|
HealBot_Action_HideTooltip(this);
|
||||||
end
|
end
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------------------------
|
||||||
|
-- Puppeteer Utility Ports for Macro and Item Execution
|
||||||
|
--------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
-- HealBot_SplitString: Internal utility: HealBot_SplitString
|
||||||
|
function HealBot_SplitString(str, delimiter)
|
||||||
|
local result = {}
|
||||||
|
if not delimiter or delimiter == "" then
|
||||||
|
return {str}
|
||||||
|
end
|
||||||
|
local start_pos = 1
|
||||||
|
while true do
|
||||||
|
local end_pos = string.find(str, delimiter, start_pos, true)
|
||||||
|
if not end_pos then
|
||||||
|
table.insert(result, string.sub(str, start_pos))
|
||||||
|
break
|
||||||
|
end
|
||||||
|
table.insert(result, string.sub(str, start_pos, end_pos - 1))
|
||||||
|
start_pos = end_pos + string.len(delimiter)
|
||||||
|
end
|
||||||
|
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
|
||||||
|
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
|
||||||
|
local _, _, name = string.find(link, "%[(.*)%]")
|
||||||
|
local _, count = GetContainerItemInfo(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
|
||||||
|
for slot = 1, GetContainerNumSlots(bag) do
|
||||||
|
local name, count = HealBot_GetBagSlotInfo(bag, slot)
|
||||||
|
if itemName == name then
|
||||||
|
if not lowestStackSize or lowestStackSize > count then
|
||||||
|
bestBag = bag
|
||||||
|
bestSlot = slot
|
||||||
|
lowestStackSize = count
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
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
|
||||||
|
UseContainerItem(bag, slot)
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
|
||||||
|
-- HealBot_Action_HealUnit_OnClick: Click event handler.
|
||||||
function HealBot_Action_HealUnit_OnClick(this,button)
|
function HealBot_Action_HealUnit_OnClick(this,button)
|
||||||
local decode_button = HealBot_Decode_Button(button);
|
local decode_button = HealBot_Decode_Button(button);
|
||||||
local pattern = HealBot_Action_SpellPattern(decode_button);
|
local pattern = HealBot_Action_SpellPattern(decode_button);
|
||||||
|
|
||||||
-- Resurrection override on dead target
|
if not pattern then return end
|
||||||
|
|
||||||
|
-- Buff casting override (Spells only)
|
||||||
|
if HealBot_Config.BuffWatch == 1 then
|
||||||
|
local inCombat = UnitAffectingCombat("player")
|
||||||
|
if (not inCombat) or (HealBot_Config.BuffWatchInCombat == 1) then
|
||||||
|
if HealBot_MissingBuffs[this.unit] then
|
||||||
|
local missingBuff = HealBot_MissingBuffs[this.unit]
|
||||||
|
if decode_button == "Left" or decode_button == "Right" then
|
||||||
|
HealBot_CastSpellOnFriend(missingBuff, this.unit)
|
||||||
|
return
|
||||||
|
end
|
||||||
|
end
|
||||||
|
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
|
||||||
|
if UnitExists("target") then oldTarget = UnitName("target") end
|
||||||
|
TargetUnit(this.unit)
|
||||||
|
HealBot_RunMacroText(pattern)
|
||||||
|
if oldTarget then
|
||||||
|
TargetByName(oldTarget)
|
||||||
|
else
|
||||||
|
ClearTarget()
|
||||||
|
end
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Priority 2: Spells
|
||||||
|
-- Resurrection override on dead target first
|
||||||
if UnitIsDeadOrGhost(this.unit) then
|
if UnitIsDeadOrGhost(this.unit) then
|
||||||
local rezSpell = HealBot_GetRezSpellForClass();
|
local rezSpell = HealBot_GetRezSpellForClass();
|
||||||
if rezSpell then
|
if rezSpell then
|
||||||
@@ -129,25 +254,43 @@ function HealBot_Action_HealUnit_OnClick(this,button)
|
|||||||
return
|
return
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Buff casting override
|
|
||||||
if HealBot_Config.BuffWatch == 1 then
|
|
||||||
local inCombat = UnitAffectingCombat("player")
|
|
||||||
if (not inCombat) or (HealBot_Config.BuffWatchInCombat == 1) then
|
|
||||||
local myClass = UnitClass("player")
|
|
||||||
if HealBot_MissingBuffs[this.unit] then
|
|
||||||
local missingBuff = HealBot_MissingBuffs[this.unit]
|
|
||||||
if decode_button == "Left" or decode_button == "Right" then
|
|
||||||
HealBot_CastSpellOnFriend(missingBuff, this.unit)
|
|
||||||
return
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
HealBot_HealUnit(this.unit,pattern);
|
|
||||||
end
|
|
||||||
|
|
||||||
|
if HealBot_Spells[pattern] or HealBot_GetSpellId(pattern) then
|
||||||
|
HealBot_HealUnit(this.unit, pattern);
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Priority 3: Named Macros
|
||||||
|
if GetMacroIndexByName(pattern) ~= 0 then
|
||||||
|
local oldTarget = nil
|
||||||
|
if UnitExists("target") then oldTarget = UnitName("target") end
|
||||||
|
TargetUnit(this.unit)
|
||||||
|
HealBot_RunMacro(pattern)
|
||||||
|
if oldTarget then
|
||||||
|
TargetByName(oldTarget)
|
||||||
|
else
|
||||||
|
ClearTarget()
|
||||||
|
end
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Priority 4: Items
|
||||||
|
local bag, slot = HealBot_FindBagSlot(pattern)
|
||||||
|
if bag then
|
||||||
|
local oldTarget = nil
|
||||||
|
if UnitExists("target") then oldTarget = UnitName("target") end
|
||||||
|
TargetUnit(this.unit)
|
||||||
|
UseContainerItem(bag, slot)
|
||||||
|
if SpellIsTargeting() then SpellTargetUnit(this.unit) end
|
||||||
|
if oldTarget then TargetByName(oldTarget) else ClearTarget() end
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Fallback attempt
|
||||||
|
HealBot_HealUnit(this.unit, pattern);
|
||||||
|
end
|
||||||
|
|
||||||
|
-- HealBot_Action_HealUnitCheck_OnClick: Click event handler.
|
||||||
function HealBot_Action_HealUnitCheck_OnClick(this)
|
function HealBot_Action_HealUnitCheck_OnClick(this)
|
||||||
if not this.unit then return end
|
if not this.unit then return end
|
||||||
if this:GetChecked() then
|
if this:GetChecked() then
|
||||||
@@ -163,20 +306,24 @@ function HealBot_Action_HealUnitCheck_OnClick(this)
|
|||||||
HealBot_Action_PartyChanged();
|
HealBot_Action_PartyChanged();
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_Action_OptionsButton_OnClick: Click event handler.
|
||||||
function HealBot_Action_OptionsButton_OnClick(this)
|
function HealBot_Action_OptionsButton_OnClick(this)
|
||||||
HealBot_TogglePanel(HealBot_Options);
|
HealBot_TogglePanel(HealBot_Options);
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_Action_AbortButton_OnClick: Click event handler.
|
||||||
function HealBot_Action_AbortButton_OnClick(this)
|
function HealBot_Action_AbortButton_OnClick(this)
|
||||||
SpellStopCasting();
|
SpellStopCasting();
|
||||||
end
|
end
|
||||||
|
|
||||||
local HealBot_CT_RA_UpdateMTs_Old;
|
local HealBot_CT_RA_UpdateMTs_Old;
|
||||||
|
-- HealBot_CT_RA_UpdateMTs: Internal utility: HealBot_CT_RA_UpdateMTs
|
||||||
function HealBot_CT_RA_UpdateMTs()
|
function HealBot_CT_RA_UpdateMTs()
|
||||||
local value = HealBot_CT_RA_UpdateMTs_Old();
|
local value = HealBot_CT_RA_UpdateMTs_Old();
|
||||||
return value;
|
return value;
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_CT_RaidAssist_DEAD: Internal utility: HealBot_CT_RaidAssist_DEAD
|
||||||
function HealBot_CT_RaidAssist_DEAD()
|
function HealBot_CT_RaidAssist_DEAD()
|
||||||
-- if (type(CT_RA_MemberFrame_OnClick)=="function") then
|
-- if (type(CT_RA_MemberFrame_OnClick)=="function") then
|
||||||
-- HealBot_CT_RA_CustomOnClickFunction_Old = CT_RA_CustomOnClickFunction;
|
-- HealBot_CT_RA_CustomOnClickFunction_Old = CT_RA_CustomOnClickFunction;
|
||||||
@@ -192,10 +339,12 @@ end
|
|||||||
-- Frame_OnFoo functions
|
-- Frame_OnFoo functions
|
||||||
--------------------------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
-- HealBot_Action_OnLoad: Internal utility: HealBot_Action_OnLoad
|
||||||
function HealBot_Action_OnLoad(this)
|
function HealBot_Action_OnLoad(this)
|
||||||
-- HealBot_CT_RaidAssist();
|
-- HealBot_CT_RaidAssist();
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_Action_OnShow: Show event handler.
|
||||||
function HealBot_Action_OnShow(this)
|
function HealBot_Action_OnShow(this)
|
||||||
if HealBot_Config.PanelSounds==1 then
|
if HealBot_Config.PanelSounds==1 then
|
||||||
PlaySound("igAbilityOpen");
|
PlaySound("igAbilityOpen");
|
||||||
@@ -236,6 +385,7 @@ function HealBot_Action_OnShow(this)
|
|||||||
HealBot_Config.backcola[HealBot_Config.Current_Skin]);
|
HealBot_Config.backcola[HealBot_Config.Current_Skin]);
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_Action_OnHide: Hide event handler.
|
||||||
function HealBot_Action_OnHide(this)
|
function HealBot_Action_OnHide(this)
|
||||||
HealBot_StopMoving(this);
|
HealBot_StopMoving(this);
|
||||||
if not this.ProgrammaticHide then
|
if not this.ProgrammaticHide then
|
||||||
@@ -243,6 +393,7 @@ function HealBot_Action_OnHide(this)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_Action_OnMouseDown: Internal utility: HealBot_Action_OnMouseDown
|
||||||
function HealBot_Action_OnMouseDown(this,button)
|
function HealBot_Action_OnMouseDown(this,button)
|
||||||
if button~="RightButton" then
|
if button~="RightButton" then
|
||||||
if HealBot_Config.ActionLocked==0 then
|
if HealBot_Config.ActionLocked==0 then
|
||||||
@@ -251,6 +402,7 @@ function HealBot_Action_OnMouseDown(this,button)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_Action_OnMouseUp: Internal utility: HealBot_Action_OnMouseUp
|
||||||
function HealBot_Action_OnMouseUp(this,button)
|
function HealBot_Action_OnMouseUp(this,button)
|
||||||
if button~="RightButton" then
|
if button~="RightButton" then
|
||||||
HealBot_StopMoving(this);
|
HealBot_StopMoving(this);
|
||||||
@@ -259,16 +411,19 @@ function HealBot_Action_OnMouseUp(this,button)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_Action_OnClick: Handles click events on heal buttons.
|
||||||
function HealBot_Action_OnClick(this,button)
|
function HealBot_Action_OnClick(this,button)
|
||||||
-- HealBot_Action_AddDebug("OnClick("..button..")");
|
-- HealBot_Action_AddDebug("OnClick("..button..")");
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_Action_OnDragStart: Internal utility: HealBot_Action_OnDragStart
|
||||||
function HealBot_Action_OnDragStart(this,button)
|
function HealBot_Action_OnDragStart(this,button)
|
||||||
if HealBot_Config.ActionLocked==0 then
|
if HealBot_Config.ActionLocked==0 then
|
||||||
HealBot_StartMoving(this);
|
HealBot_StartMoving(this);
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_Action_OnDragStop: Internal utility: HealBot_Action_OnDragStop
|
||||||
function HealBot_Action_OnDragStop(this)
|
function HealBot_Action_OnDragStop(this)
|
||||||
HealBot_StopMoving(this);
|
HealBot_StopMoving(this);
|
||||||
end
|
end
|
||||||
|
|||||||
+111
-14
@@ -18,6 +18,20 @@
|
|||||||
<OnClick>HealBot_Action_HealUnit_OnClick(this,arg1);</OnClick>
|
<OnClick>HealBot_Action_HealUnit_OnClick(this,arg1);</OnClick>
|
||||||
</Scripts>
|
</Scripts>
|
||||||
<Frames>
|
<Frames>
|
||||||
|
<StatusBar name="$parentBar2" inherits="HealBot_StatusBar">
|
||||||
|
<Anchors>
|
||||||
|
<Anchor point="TOPLEFT" relativePoint="TOPLEFT">
|
||||||
|
<Offset>
|
||||||
|
<AbsDimension x="0" y="0"/>
|
||||||
|
</Offset>
|
||||||
|
</Anchor>
|
||||||
|
<Anchor point="TOPRIGHT" relativePoint="TOPRIGHT">
|
||||||
|
<Offset>
|
||||||
|
<AbsDimension x="0" y="0"/>
|
||||||
|
</Offset>
|
||||||
|
</Anchor>
|
||||||
|
</Anchors>
|
||||||
|
</StatusBar>
|
||||||
<StatusBar name="$parentBar" inherits="HealBot_StatusBar">
|
<StatusBar name="$parentBar" inherits="HealBot_StatusBar">
|
||||||
<Anchors>
|
<Anchors>
|
||||||
<Anchor point="TOPLEFT" relativePoint="TOPLEFT">
|
<Anchor point="TOPLEFT" relativePoint="TOPLEFT">
|
||||||
@@ -33,6 +47,14 @@
|
|||||||
</Anchors>
|
</Anchors>
|
||||||
<Layers>
|
<Layers>
|
||||||
<Layer level="OVERLAY">
|
<Layer level="OVERLAY">
|
||||||
|
<Texture name="$parentRaidIcon" file="Interface\TargetingFrame\UI-RaidTargetingIcons" hidden="true">
|
||||||
|
<Size><AbsDimension x="14" y="14"/></Size>
|
||||||
|
<Anchors>
|
||||||
|
<Anchor point="CENTER">
|
||||||
|
<Offset><AbsDimension x="0" y="0"/></Offset>
|
||||||
|
</Anchor>
|
||||||
|
</Anchors>
|
||||||
|
</Texture>
|
||||||
<Texture name="$parentIcon1" hidden="true">
|
<Texture name="$parentIcon1" hidden="true">
|
||||||
<Size><AbsDimension x="12" y="12"/></Size>
|
<Size><AbsDimension x="12" y="12"/></Size>
|
||||||
<Anchors>
|
<Anchors>
|
||||||
@@ -73,23 +95,49 @@
|
|||||||
</Anchor>
|
</Anchor>
|
||||||
</Anchors>
|
</Anchors>
|
||||||
</Texture>
|
</Texture>
|
||||||
|
<Texture name="$parentIcon6" hidden="true">
|
||||||
|
<Size><AbsDimension x="12" y="12"/></Size>
|
||||||
|
<Anchors>
|
||||||
|
<Anchor point="LEFT" relativeTo="$parentIcon5" relativePoint="RIGHT">
|
||||||
|
<Offset><AbsDimension x="1" y="0"/></Offset>
|
||||||
|
</Anchor>
|
||||||
|
</Anchors>
|
||||||
|
</Texture>
|
||||||
|
<Texture name="$parentIcon7" hidden="true">
|
||||||
|
<Size><AbsDimension x="12" y="12"/></Size>
|
||||||
|
<Anchors>
|
||||||
|
<Anchor point="LEFT" relativeTo="$parentIcon6" relativePoint="RIGHT">
|
||||||
|
<Offset><AbsDimension x="1" y="0"/></Offset>
|
||||||
|
</Anchor>
|
||||||
|
</Anchors>
|
||||||
|
</Texture>
|
||||||
|
<Texture name="$parentIcon8" hidden="true">
|
||||||
|
<Size><AbsDimension x="12" y="12"/></Size>
|
||||||
|
<Anchors>
|
||||||
|
<Anchor point="LEFT" relativeTo="$parentIcon7" relativePoint="RIGHT">
|
||||||
|
<Offset><AbsDimension x="1" y="0"/></Offset>
|
||||||
|
</Anchor>
|
||||||
|
</Anchors>
|
||||||
|
</Texture>
|
||||||
|
<Texture name="$parentIcon9" hidden="true">
|
||||||
|
<Size><AbsDimension x="12" y="12"/></Size>
|
||||||
|
<Anchors>
|
||||||
|
<Anchor point="LEFT" relativeTo="$parentIcon8" relativePoint="RIGHT">
|
||||||
|
<Offset><AbsDimension x="1" y="0"/></Offset>
|
||||||
|
</Anchor>
|
||||||
|
</Anchors>
|
||||||
|
</Texture>
|
||||||
|
<Texture name="$parentIcon10" hidden="true">
|
||||||
|
<Size><AbsDimension x="12" y="12"/></Size>
|
||||||
|
<Anchors>
|
||||||
|
<Anchor point="LEFT" relativeTo="$parentIcon9" relativePoint="RIGHT">
|
||||||
|
<Offset><AbsDimension x="1" y="0"/></Offset>
|
||||||
|
</Anchor>
|
||||||
|
</Anchors>
|
||||||
|
</Texture>
|
||||||
</Layer>
|
</Layer>
|
||||||
</Layers>
|
</Layers>
|
||||||
</StatusBar>
|
</StatusBar>
|
||||||
<StatusBar name="$parentBar2" inherits="HealBot_StatusBar">
|
|
||||||
<Anchors>
|
|
||||||
<Anchor point="TOPLEFT" relativePoint="TOPLEFT">
|
|
||||||
<Offset>
|
|
||||||
<AbsDimension x="0" y="0"/>
|
|
||||||
</Offset>
|
|
||||||
</Anchor>
|
|
||||||
<Anchor point="TOPRIGHT" relativePoint="TOPRIGHT">
|
|
||||||
<Offset>
|
|
||||||
<AbsDimension x="0" y="0"/>
|
|
||||||
</Offset>
|
|
||||||
</Anchor>
|
|
||||||
</Anchors>
|
|
||||||
</StatusBar>
|
|
||||||
<StatusBar name="$parentBar3" inherits="HealBot_StatusBar" hidden="true">
|
<StatusBar name="$parentBar3" inherits="HealBot_StatusBar" hidden="true">
|
||||||
<Anchors>
|
<Anchors>
|
||||||
<Anchor point="TOPLEFT" relativeTo="$parentBar" relativePoint="BOTTOMLEFT">
|
<Anchor point="TOPLEFT" relativeTo="$parentBar" relativePoint="BOTTOMLEFT">
|
||||||
@@ -232,6 +280,15 @@
|
|||||||
<Button name="HealBot_Action_HealUnit39" inherits="HealingButtonTemplate" text="Unit not set"/>
|
<Button name="HealBot_Action_HealUnit39" inherits="HealingButtonTemplate" text="Unit not set"/>
|
||||||
<Button name="HealBot_Action_HealUnit40" inherits="HealingButtonTemplate" text="Unit not set"/>
|
<Button name="HealBot_Action_HealUnit40" inherits="HealingButtonTemplate" text="Unit not set"/>
|
||||||
<Button name="HealBot_Action_HealUnit41" inherits="HealingButtonTemplate" text="Unit not set"/>
|
<Button name="HealBot_Action_HealUnit41" inherits="HealingButtonTemplate" text="Unit not set"/>
|
||||||
|
<Button name="HealBot_Action_HealUnit42" inherits="HealingButtonTemplate" text="Unit not set"/>
|
||||||
|
<Button name="HealBot_Action_HealUnit43" inherits="HealingButtonTemplate" text="Unit not set"/>
|
||||||
|
<Button name="HealBot_Action_HealUnit44" inherits="HealingButtonTemplate" text="Unit not set"/>
|
||||||
|
<Button name="HealBot_Action_HealUnit45" inherits="HealingButtonTemplate" text="Unit not set"/>
|
||||||
|
<Button name="HealBot_Action_HealUnit46" inherits="HealingButtonTemplate" text="Unit not set"/>
|
||||||
|
<Button name="HealBot_Action_HealUnit47" inherits="HealingButtonTemplate" text="Unit not set"/>
|
||||||
|
<Button name="HealBot_Action_HealUnit48" inherits="HealingButtonTemplate" text="Unit not set"/>
|
||||||
|
<Button name="HealBot_Action_HealUnit49" inherits="HealingButtonTemplate" text="Unit not set"/>
|
||||||
|
<Button name="HealBot_Action_HealUnit50" inherits="HealingButtonTemplate" text="Unit not set"/>
|
||||||
|
|
||||||
<Button name="HealBot_Action_HealUnit51" inherits="HealingButtonTemplate2" text="Unit not set"/>
|
<Button name="HealBot_Action_HealUnit51" inherits="HealingButtonTemplate2" text="Unit not set"/>
|
||||||
<Button name="HealBot_Action_HealUnit52" inherits="HealingButtonTemplate2" text="Unit not set"/>
|
<Button name="HealBot_Action_HealUnit52" inherits="HealingButtonTemplate2" text="Unit not set"/>
|
||||||
@@ -243,6 +300,46 @@
|
|||||||
<Button name="HealBot_Action_HealUnit58" inherits="HealingButtonTemplate2" text="Unit not set"/>
|
<Button name="HealBot_Action_HealUnit58" inherits="HealingButtonTemplate2" text="Unit not set"/>
|
||||||
<Button name="HealBot_Action_HealUnit59" inherits="HealingButtonTemplate2" text="Unit not set"/>
|
<Button name="HealBot_Action_HealUnit59" inherits="HealingButtonTemplate2" text="Unit not set"/>
|
||||||
<Button name="HealBot_Action_HealUnit60" inherits="HealingButtonTemplate2" text="Unit not set"/>
|
<Button name="HealBot_Action_HealUnit60" inherits="HealingButtonTemplate2" text="Unit not set"/>
|
||||||
|
<Button name="HealBot_Action_HealUnit61" inherits="HealingButtonTemplate2" text="Unit not set"/>
|
||||||
|
<Button name="HealBot_Action_HealUnit62" inherits="HealingButtonTemplate2" text="Unit not set"/>
|
||||||
|
<Button name="HealBot_Action_HealUnit63" inherits="HealingButtonTemplate2" text="Unit not set"/>
|
||||||
|
<Button name="HealBot_Action_HealUnit64" inherits="HealingButtonTemplate2" text="Unit not set"/>
|
||||||
|
<Button name="HealBot_Action_HealUnit65" inherits="HealingButtonTemplate2" text="Unit not set"/>
|
||||||
|
<Button name="HealBot_Action_HealUnit66" inherits="HealingButtonTemplate2" text="Unit not set"/>
|
||||||
|
<Button name="HealBot_Action_HealUnit67" inherits="HealingButtonTemplate2" text="Unit not set"/>
|
||||||
|
<Button name="HealBot_Action_HealUnit68" inherits="HealingButtonTemplate2" text="Unit not set"/>
|
||||||
|
<Button name="HealBot_Action_HealUnit69" inherits="HealingButtonTemplate2" text="Unit not set"/>
|
||||||
|
<Button name="HealBot_Action_HealUnit70" inherits="HealingButtonTemplate2" text="Unit not set"/>
|
||||||
|
<Button name="HealBot_Action_HealUnit71" inherits="HealingButtonTemplate2" text="Unit not set"/>
|
||||||
|
<Button name="HealBot_Action_HealUnit72" inherits="HealingButtonTemplate2" text="Unit not set"/>
|
||||||
|
<Button name="HealBot_Action_HealUnit73" inherits="HealingButtonTemplate2" text="Unit not set"/>
|
||||||
|
<Button name="HealBot_Action_HealUnit74" inherits="HealingButtonTemplate2" text="Unit not set"/>
|
||||||
|
<Button name="HealBot_Action_HealUnit75" inherits="HealingButtonTemplate2" text="Unit not set"/>
|
||||||
|
<Button name="HealBot_Action_HealUnit76" inherits="HealingButtonTemplate2" text="Unit not set"/>
|
||||||
|
<Button name="HealBot_Action_HealUnit77" inherits="HealingButtonTemplate2" text="Unit not set"/>
|
||||||
|
<Button name="HealBot_Action_HealUnit78" inherits="HealingButtonTemplate2" text="Unit not set"/>
|
||||||
|
<Button name="HealBot_Action_HealUnit79" inherits="HealingButtonTemplate2" text="Unit not set"/>
|
||||||
|
<Button name="HealBot_Action_HealUnit80" inherits="HealingButtonTemplate2" text="Unit not set"/>
|
||||||
|
<Button name="HealBot_Action_HealUnit81" inherits="HealingButtonTemplate2" text="Unit not set"/>
|
||||||
|
<Button name="HealBot_Action_HealUnit82" inherits="HealingButtonTemplate2" text="Unit not set"/>
|
||||||
|
<Button name="HealBot_Action_HealUnit83" inherits="HealingButtonTemplate2" text="Unit not set"/>
|
||||||
|
<Button name="HealBot_Action_HealUnit84" inherits="HealingButtonTemplate2" text="Unit not set"/>
|
||||||
|
<Button name="HealBot_Action_HealUnit85" inherits="HealingButtonTemplate2" text="Unit not set"/>
|
||||||
|
<Button name="HealBot_Action_HealUnit86" inherits="HealingButtonTemplate2" text="Unit not set"/>
|
||||||
|
<Button name="HealBot_Action_HealUnit87" inherits="HealingButtonTemplate2" text="Unit not set"/>
|
||||||
|
<Button name="HealBot_Action_HealUnit88" inherits="HealingButtonTemplate2" text="Unit not set"/>
|
||||||
|
<Button name="HealBot_Action_HealUnit89" inherits="HealingButtonTemplate2" text="Unit not set"/>
|
||||||
|
<Button name="HealBot_Action_HealUnit90" inherits="HealingButtonTemplate2" text="Unit not set"/>
|
||||||
|
<Button name="HealBot_Action_HealUnit91" inherits="HealingButtonTemplate2" text="Unit not set"/>
|
||||||
|
<Button name="HealBot_Action_HealUnit92" inherits="HealingButtonTemplate2" text="Unit not set"/>
|
||||||
|
<Button name="HealBot_Action_HealUnit93" inherits="HealingButtonTemplate2" text="Unit not set"/>
|
||||||
|
<Button name="HealBot_Action_HealUnit94" inherits="HealingButtonTemplate2" text="Unit not set"/>
|
||||||
|
<Button name="HealBot_Action_HealUnit95" inherits="HealingButtonTemplate2" text="Unit not set"/>
|
||||||
|
<Button name="HealBot_Action_HealUnit96" inherits="HealingButtonTemplate2" text="Unit not set"/>
|
||||||
|
<Button name="HealBot_Action_HealUnit97" inherits="HealingButtonTemplate2" text="Unit not set"/>
|
||||||
|
<Button name="HealBot_Action_HealUnit98" inherits="HealingButtonTemplate2" text="Unit not set"/>
|
||||||
|
<Button name="HealBot_Action_HealUnit99" inherits="HealingButtonTemplate2" text="Unit not set"/>
|
||||||
|
<Button name="HealBot_Action_HealUnit100" inherits="HealingButtonTemplate2" text="Unit not set"/>
|
||||||
|
|
||||||
<Button name="HealBot_Action_Header1" inherits="HealingButtonTemplate4" text="Unit not set"/>
|
<Button name="HealBot_Action_Header1" inherits="HealingButtonTemplate4" text="Unit not set"/>
|
||||||
<Button name="HealBot_Action_Header2" inherits="HealingButtonTemplate4" text="Unit not set"/>
|
<Button name="HealBot_Action_Header2" inherits="HealingButtonTemplate4" text="Unit not set"/>
|
||||||
|
|||||||
+24
-14
@@ -6,9 +6,9 @@
|
|||||||
-- http://www.curse-gaming.com/mod.php?addid=2384
|
-- http://www.curse-gaming.com/mod.php?addid=2384
|
||||||
--------------------------------------------------
|
--------------------------------------------------
|
||||||
|
|
||||||
HB_BONUSSCANNER_PATTERN_SETNAME = "^(.*) %(%d/%d%)$";
|
HEALBOT_BONUSSCANNER_PATTERN_SETNAME = "^(.*) %(%d/%d%)$";
|
||||||
HB_BONUSSCANNER_PATTERN_GENERIC_PREFIX = "^%+(%d+)%%?(.*)$";
|
HEALBOT_BONUSSCANNER_PATTERN_GENERIC_PREFIX = "^%+(%d+)%%?(.*)$";
|
||||||
HB_BONUSSCANNER_PATTERN_GENERIC_SUFFIX = "^(.*)%+(%d+)%%?$";
|
HEALBOT_BONUSSCANNER_PATTERN_GENERIC_SUFFIX = "^(.*)%+(%d+)%%?$";
|
||||||
|
|
||||||
HealBot_BonusScanner = {
|
HealBot_BonusScanner = {
|
||||||
bonuses = 0;
|
bonuses = 0;
|
||||||
@@ -50,6 +50,7 @@ HealBot_BonusScanner = {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
-- HealBot_BonusScanner:GetBonus: Internal utility: HealBot_BonusScanner:GetBonus
|
||||||
function HealBot_BonusScanner:GetBonus()
|
function HealBot_BonusScanner:GetBonus()
|
||||||
if(HealBot_BonusScanner.bonuses) then
|
if(HealBot_BonusScanner.bonuses) then
|
||||||
return HealBot_BonusScanner.bonuses;
|
return HealBot_BonusScanner.bonuses;
|
||||||
@@ -58,6 +59,7 @@ function HealBot_BonusScanner:GetBonus()
|
|||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
-- HealBot_BonusScanner_Update: Internal utility: HealBot_BonusScanner_Update
|
||||||
function HealBot_BonusScanner_Update()
|
function HealBot_BonusScanner_Update()
|
||||||
|
|
||||||
if (HealBot_BonusScanner.IsUpdating) then
|
if (HealBot_BonusScanner.IsUpdating) then
|
||||||
@@ -69,6 +71,7 @@ function HealBot_BonusScanner_Update()
|
|||||||
HealBot_BonusScanner.IsUpdating = false;
|
HealBot_BonusScanner.IsUpdating = false;
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_BonusScanner:ScanEquipment: Internal utility: HealBot_BonusScanner:ScanEquipment
|
||||||
function HealBot_BonusScanner:ScanEquipment()
|
function HealBot_BonusScanner:ScanEquipment()
|
||||||
local slotid, slotname, hasItem, i;
|
local slotid, slotname, hasItem, i;
|
||||||
|
|
||||||
@@ -90,6 +93,7 @@ function HealBot_BonusScanner:ScanEquipment()
|
|||||||
HealBot_BonusScanner.bonuses = HealBot_BonusScanner.temp.bonuses;
|
HealBot_BonusScanner.bonuses = HealBot_BonusScanner.temp.bonuses;
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_BonusScanner:ScanTooltip: Internal utility: HealBot_BonusScanner:ScanTooltip
|
||||||
function HealBot_BonusScanner:ScanTooltip()
|
function HealBot_BonusScanner:ScanTooltip()
|
||||||
local tmpTxt, line;
|
local tmpTxt, line;
|
||||||
local lines = HealBot_BonusTooltip:NumLines();
|
local lines = HealBot_BonusTooltip:NumLines();
|
||||||
@@ -103,6 +107,7 @@ function HealBot_BonusScanner:ScanTooltip()
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_BonusScanner:AddValue: Internal utility: HealBot_BonusScanner:AddValue
|
||||||
function HealBot_BonusScanner:AddValue(effect, value)
|
function HealBot_BonusScanner:AddValue(effect, value)
|
||||||
local i,e;
|
local i,e;
|
||||||
if(type(effect) == "string") then
|
if(type(effect) == "string") then
|
||||||
@@ -126,19 +131,20 @@ function HealBot_BonusScanner:AddValue(effect, value)
|
|||||||
end
|
end
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
-- HealBot_BonusScanner:ScanLine: Internal utility: HealBot_BonusScanner:ScanLine
|
||||||
function HealBot_BonusScanner:ScanLine(line)
|
function HealBot_BonusScanner:ScanLine(line)
|
||||||
local tmpStr, found;
|
local tmpStr, found;
|
||||||
if(string.sub(line,0,string.len(HB_BONUSSCANNER_PREFIX_EQUIP)) == HB_BONUSSCANNER_PREFIX_EQUIP) then
|
if(string.sub(line,0,string.len(HEALBOT_BONUSSCANNER_PREFIX_EQUIP)) == HEALBOT_BONUSSCANNER_PREFIX_EQUIP) then
|
||||||
tmpStr = string.sub(line,string.len(HB_BONUSSCANNER_PREFIX_EQUIP)+1);
|
tmpStr = string.sub(line,string.len(HEALBOT_BONUSSCANNER_PREFIX_EQUIP)+1);
|
||||||
HealBot_BonusScanner:CheckPassive(tmpStr);
|
HealBot_BonusScanner:CheckPassive(tmpStr);
|
||||||
elseif(string.sub(line,0,string.len(HB_BONUSSCANNER_PREFIX_SET)) == HB_BONUSSCANNER_PREFIX_SET
|
elseif(string.sub(line,0,string.len(HEALBOT_BONUSSCANNER_PREFIX_SET)) == HEALBOT_BONUSSCANNER_PREFIX_SET
|
||||||
and HealBot_BonusScanner.temp.set ~= ""
|
and HealBot_BonusScanner.temp.set ~= ""
|
||||||
and not HealBot_BonusScanner.temp.sets[HealBot_BonusScanner.temp.set]) then
|
and not HealBot_BonusScanner.temp.sets[HealBot_BonusScanner.temp.set]) then
|
||||||
tmpStr = string.sub(line,string.len(HB_BONUSSCANNER_PREFIX_SET)+1);
|
tmpStr = string.sub(line,string.len(HEALBOT_BONUSSCANNER_PREFIX_SET)+1);
|
||||||
HealBot_BonusScanner.temp.slot = "Set";
|
HealBot_BonusScanner.temp.slot = "Set";
|
||||||
HealBot_BonusScanner:CheckPassive(tmpStr);
|
HealBot_BonusScanner:CheckPassive(tmpStr);
|
||||||
else
|
else
|
||||||
_, _, tmpStr = string.find(line, HB_BONUSSCANNER_PATTERN_SETNAME);
|
_, _, tmpStr = string.find(line, HEALBOT_BONUSSCANNER_PATTERN_SETNAME);
|
||||||
if(tmpStr) then
|
if(tmpStr) then
|
||||||
HealBot_BonusScanner.temp.set = tmpStr;
|
HealBot_BonusScanner.temp.set = tmpStr;
|
||||||
else
|
else
|
||||||
@@ -150,11 +156,12 @@ function HealBot_BonusScanner:ScanLine(line)
|
|||||||
end
|
end
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
-- HealBot_BonusScanner:CheckPassive: Internal utility: HealBot_BonusScanner:CheckPassive
|
||||||
function HealBot_BonusScanner:CheckPassive(line)
|
function HealBot_BonusScanner:CheckPassive(line)
|
||||||
local i, p, value, found;
|
local i, p, value, found;
|
||||||
|
|
||||||
found = nil;
|
found = nil;
|
||||||
for i,p in HB_BONUSSCANNER_PATTERNS_PASSIVE do
|
for i,p in HEALBOT_BONUSSCANNER_PATTERNS_PASSIVE do
|
||||||
_, _, value = string.find(line, "^" .. p.pattern);
|
_, _, value = string.find(line, "^" .. p.pattern);
|
||||||
if(value) then
|
if(value) then
|
||||||
HealBot_BonusScanner:AddValue(p.effect, value)
|
HealBot_BonusScanner:AddValue(p.effect, value)
|
||||||
@@ -166,6 +173,7 @@ function HealBot_BonusScanner:CheckPassive(line)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_BonusScanner:CheckGeneric: Internal utility: HealBot_BonusScanner:CheckGeneric
|
||||||
function HealBot_BonusScanner:CheckGeneric(line)
|
function HealBot_BonusScanner:CheckGeneric(line)
|
||||||
local value, token, pos, tmpStr, found;
|
local value, token, pos, tmpStr, found;
|
||||||
found = false;
|
found = false;
|
||||||
@@ -183,9 +191,9 @@ function HealBot_BonusScanner:CheckGeneric(line)
|
|||||||
tmpStr = string.gsub( tmpStr, "%s+$", "" );
|
tmpStr = string.gsub( tmpStr, "%s+$", "" );
|
||||||
tmpStr = string.gsub( tmpStr, "%.$", "" );
|
tmpStr = string.gsub( tmpStr, "%.$", "" );
|
||||||
|
|
||||||
_, _, value, token = string.find(tmpStr, HB_BONUSSCANNER_PATTERN_GENERIC_PREFIX);
|
_, _, value, token = string.find(tmpStr, HEALBOT_BONUSSCANNER_PATTERN_GENERIC_PREFIX);
|
||||||
if(not value) then
|
if(not value) then
|
||||||
_, _, token, value = string.find(tmpStr, HB_BONUSSCANNER_PATTERN_GENERIC_SUFFIX);
|
_, _, token, value = string.find(tmpStr, HEALBOT_BONUSSCANNER_PATTERN_GENERIC_SUFFIX);
|
||||||
end
|
end
|
||||||
if(token and value) then
|
if(token and value) then
|
||||||
token = string.gsub( token, "^%s+", "" );
|
token = string.gsub( token, "^%s+", "" );
|
||||||
@@ -199,20 +207,22 @@ function HealBot_BonusScanner:CheckGeneric(line)
|
|||||||
return found;
|
return found;
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_BonusScanner:CheckToken: Internal utility: HealBot_BonusScanner:CheckToken
|
||||||
function HealBot_BonusScanner:CheckToken(token, value)
|
function HealBot_BonusScanner:CheckToken(token, value)
|
||||||
local i, p, s1, s2;
|
local i, p, s1, s2;
|
||||||
|
|
||||||
if(HB_BONUSSCANNER_PATTERNS_GENERIC_LOOKUP[token]) then
|
if(HEALBOT_BONUSSCANNER_PATTERNS_GENERIC_LOOKUP[token]) then
|
||||||
HealBot_BonusScanner:AddValue(HB_BONUSSCANNER_PATTERNS_GENERIC_LOOKUP[token], value);
|
HealBot_BonusScanner:AddValue(HEALBOT_BONUSSCANNER_PATTERNS_GENERIC_LOOKUP[token], value);
|
||||||
return true;
|
return true;
|
||||||
end
|
end
|
||||||
return false;
|
return false;
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_BonusScanner:CheckOther: Internal utility: HealBot_BonusScanner:CheckOther
|
||||||
function HealBot_BonusScanner:CheckOther(line)
|
function HealBot_BonusScanner:CheckOther(line)
|
||||||
local i, p, value, start, found;
|
local i, p, value, start, found;
|
||||||
|
|
||||||
for i,p in HB_BONUSSCANNER_PATTERNS_OTHER do
|
for i,p in HEALBOT_BONUSSCANNER_PATTERNS_OTHER do
|
||||||
start, _, value = string.find(line, "^" .. p.pattern);
|
start, _, value = string.find(line, "^" .. p.pattern);
|
||||||
if(start) then
|
if(start) then
|
||||||
if(p.value) then
|
if(p.value) then
|
||||||
|
|||||||
+148
-31
@@ -2,7 +2,9 @@
|
|||||||
-- Handles tracking buffs/debuffs (auras) on group/raid units
|
-- Handles tracking buffs/debuffs (auras) on group/raid units
|
||||||
|
|
||||||
HealBot_MissingBuffs = {}
|
HealBot_MissingBuffs = {}
|
||||||
|
local StaticHasBuff = {}
|
||||||
|
|
||||||
|
-- HealBot_UnitAffected: Checks if a specific buff/debuff exists on a unit.
|
||||||
function HealBot_UnitAffected(unit, effect)
|
function HealBot_UnitAffected(unit, effect)
|
||||||
if not effect then return nil; end
|
if not effect then return nil; end
|
||||||
local i = 1
|
local i = 1
|
||||||
@@ -30,14 +32,41 @@ function HealBot_UnitAffected(unit, effect)
|
|||||||
return nil;
|
return nil;
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_CheckShamanWeaponBuff: Checks for Shaman weapon enchants via API.
|
||||||
function HealBot_CheckShamanWeaponBuff(spellName)
|
function HealBot_CheckShamanWeaponBuff(spellName)
|
||||||
local hasMainHandEnchant, _, _, hasOffHandEnchant = GetWeaponEnchantInfo()
|
local hasMainHandEnchant, _, _, hasOffHandEnchant = GetWeaponEnchantInfo()
|
||||||
if hasMainHandEnchant or hasOffHandEnchant then
|
if not (hasMainHandEnchant or hasOffHandEnchant) then return false end
|
||||||
return true
|
|
||||||
|
local firstWord = string.match(spellName, "^(%w+)")
|
||||||
|
if not firstWord then return false end
|
||||||
|
|
||||||
|
HealBot_ScanTooltip:SetOwner(UIParent, "ANCHOR_NONE")
|
||||||
|
local slots = HealBot_GetTable()
|
||||||
|
if hasMainHandEnchant then table.insert(slots, 16) end
|
||||||
|
if hasOffHandEnchant then table.insert(slots, 17) end
|
||||||
|
|
||||||
|
for _, slot in ipairs(slots) do
|
||||||
|
HealBot_ScanTooltip:ClearLines()
|
||||||
|
HealBot_ScanTooltip:SetInventoryItem("player", slot)
|
||||||
|
for i = 1, HealBot_ScanTooltip:NumLines() do
|
||||||
|
local textObj = getglobal("HealBot_ScanTooltipTextLeft" .. i)
|
||||||
|
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
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
HealBot_ScanTooltip:Hide()
|
||||||
|
HealBot_ReleaseTable(slots)
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_CheckBuffs: Scans unit for missing tracked buffs.
|
||||||
function HealBot_CheckBuffs(unit)
|
function HealBot_CheckBuffs(unit)
|
||||||
if HealBot_Config.BuffWatch ~= 1 then
|
if HealBot_Config.BuffWatch ~= 1 then
|
||||||
HealBot_MissingBuffs[unit] = nil
|
HealBot_MissingBuffs[unit] = nil
|
||||||
@@ -68,7 +97,10 @@ function HealBot_CheckBuffs(unit)
|
|||||||
}
|
}
|
||||||
|
|
||||||
-- Gather buffs on unit
|
-- Gather buffs on unit
|
||||||
local hasBuff = {}
|
local hasBuff = StaticHasBuff
|
||||||
|
for k in pairs(hasBuff) do
|
||||||
|
hasBuff[k] = nil
|
||||||
|
end
|
||||||
local i = 1
|
local i = 1
|
||||||
while true do
|
while true do
|
||||||
local buffTexture = UnitBuff(unit, i)
|
local buffTexture = UnitBuff(unit, i)
|
||||||
@@ -91,7 +123,7 @@ function HealBot_CheckBuffs(unit)
|
|||||||
local val = HealBot_Config.BuffDropDowns[myClass][j]
|
local val = HealBot_Config.BuffDropDowns[myClass][j]
|
||||||
if val and val > 0 then
|
if val and val > 0 then
|
||||||
local isSelfOnly = (HealBot_Config.BuffWatchSelf and HealBot_Config.BuffWatchSelf[j] == 1)
|
local isSelfOnly = (HealBot_Config.BuffWatchSelf and HealBot_Config.BuffWatchSelf[j] == 1)
|
||||||
if not (isSelfOnly and unit ~= "player") then
|
if not (isSelfOnly and not UnitIsUnit(unit, "player")) then
|
||||||
local spellName = HealBot_Buff_Spells[myClass][val]
|
local spellName = HealBot_Buff_Spells[myClass][val]
|
||||||
|
|
||||||
local hasIt = hasBuff[spellName]
|
local hasIt = hasBuff[spellName]
|
||||||
@@ -100,7 +132,7 @@ function HealBot_CheckBuffs(unit)
|
|||||||
end
|
end
|
||||||
|
|
||||||
if not hasIt then
|
if not hasIt then
|
||||||
if myClass == "SHAMAN" and unit == "player" and string.find(spellName, " Weapon") then
|
if myClass == HEALBOT_SHAMAN and UnitIsUnit(unit, "player") and string.find(spellName, " Weapon") then
|
||||||
hasIt = HealBot_CheckShamanWeaponBuff(spellName)
|
hasIt = HealBot_CheckShamanWeaponBuff(spellName)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -115,68 +147,153 @@ function HealBot_CheckBuffs(unit)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local HealBot_TrackedHoTs = {
|
||||||
|
["Interface\\Icons\\Spell_Holy_Renew"] = true,
|
||||||
|
["Interface\\Icons\\Spell_Nature_Rejuvenation"] = true,
|
||||||
|
["Interface\\Icons\\Spell_Nature_ResistNature"] = true,
|
||||||
|
["Interface\\Icons\\Spell_Holy_PowerWordShield"] = true,
|
||||||
|
["Interface\\Icons\\Spell_Holy_SealOfProtection"] = true,
|
||||||
|
["Interface\\Icons\\Spell_Holy_Excorcism"] = true,
|
||||||
|
["Interface\\Icons\\btnholyscriptures"] = true,
|
||||||
|
["Interface\\Icons\\Spell_Holy_AshesToAshes"] = true,
|
||||||
|
}
|
||||||
|
|
||||||
|
local HealBot_DebuffTypeMap = nil
|
||||||
|
|
||||||
|
-- HealBot_OnEvent_UnitAura: Updates debuff lists and icon textures on aura change.
|
||||||
function HealBot_OnEvent_UnitAura(this, unit)
|
function HealBot_OnEvent_UnitAura(this, unit)
|
||||||
|
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;
|
local DebuffType;
|
||||||
|
|
||||||
if HealBot_Heals[unit] and unit ~= "target" then
|
if HealBot_Heals[unit] then
|
||||||
HealBot_UnitIcons[unit] = {}
|
if not HealBot_UnitIcons[unit] then
|
||||||
|
HealBot_UnitIcons[unit] = {}
|
||||||
|
end
|
||||||
|
for j = 1, 10 do
|
||||||
|
HealBot_UnitIcons[unit][j] = nil
|
||||||
|
end
|
||||||
local iconCount = 0
|
local iconCount = 0
|
||||||
|
|
||||||
local HealBot_TrackedHoTs = {
|
|
||||||
["Interface\\Icons\\Spell_Holy_Renew"] = true,
|
|
||||||
["Interface\\Icons\\Spell_Nature_Rejuvenation"] = true,
|
|
||||||
["Interface\\Icons\\Spell_Nature_ResistNature"] = true,
|
|
||||||
["Interface\\Icons\\Spell_Holy_PowerWordShield"] = true,
|
|
||||||
["Interface\\Icons\\Spell_Holy_SealOfProtection"] = true,
|
|
||||||
["Interface\\Icons\\Spell_Holy_Excorcism"] = true,
|
|
||||||
}
|
|
||||||
|
|
||||||
local i = 1;
|
local i = 1;
|
||||||
|
HealBot_UnitDebuff[unit] = nil;
|
||||||
|
local trackedTextures = {}
|
||||||
|
|
||||||
while true do
|
while true do
|
||||||
local debuff, tmp, debuff_type = UnitDebuff(unit, i, 1)
|
local debuff, tmp, debuff_type = UnitDebuff(unit, i, 1)
|
||||||
if debuff then
|
if debuff then
|
||||||
if iconCount < 5 then
|
local mapped_type = nil
|
||||||
iconCount = iconCount + 1
|
if debuff_type then
|
||||||
HealBot_UnitIcons[unit][iconCount] = debuff
|
mapped_type = HealBot_DebuffTypeMap[debuff_type] or debuff_type
|
||||||
end
|
end
|
||||||
if HealBot_CDCInc[UnitClass(unit)] == 1 and HealBot_DebuffWatch[debuff_type] == "YES" then
|
|
||||||
HealBot_UnitDebuff[unit] = debuff_type
|
local localizedClass = UnitClass(unit)
|
||||||
DebuffType = debuff_type;
|
local shouldTrack = false
|
||||||
if HealBot_DebuffPriority[debuff_type] then
|
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
|
break
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
i = i + 1;
|
i = i + 1;
|
||||||
else
|
else
|
||||||
if i == 1 then HealBot_UnitDebuff[unit] = nil; end
|
|
||||||
break
|
break
|
||||||
end
|
end
|
||||||
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 b = 1
|
||||||
while true do
|
while true do
|
||||||
local buff = UnitBuff(unit, b)
|
local buff = UnitBuff(unit, b)
|
||||||
if not buff then break end
|
if not buff then break end
|
||||||
if HealBot_TrackedHoTs[buff] and iconCount < 5 then
|
if HealBot_TrackedHoTs[buff] and iconCount < 10 then
|
||||||
iconCount = iconCount + 1
|
iconCount = iconCount + 1
|
||||||
HealBot_UnitIcons[unit][iconCount] = buff
|
HealBot_UnitIcons[unit][iconCount] = buff
|
||||||
end
|
end
|
||||||
b = b + 1
|
b = b + 1
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local d = 1
|
||||||
|
while true do
|
||||||
|
local debuff = UnitDebuff(unit, d)
|
||||||
|
if not debuff then break end
|
||||||
|
if HealBot_TrackedHoTs[debuff] and iconCount < 10 then
|
||||||
|
iconCount = iconCount + 1
|
||||||
|
HealBot_UnitIcons[unit][iconCount] = debuff
|
||||||
|
end
|
||||||
|
d = d + 1
|
||||||
|
end
|
||||||
|
|
||||||
if HealBot_UnitDebuff[unit] then
|
if HealBot_UnitDebuff[unit] then
|
||||||
if DebuffType and HealBot_Range_Check(unit, 27) == 1 then
|
if DebuffType and HealBot_Range_Check(unit, 27) == 1 then
|
||||||
if HealBot_Config.ShowDebuffWarning == 1 then
|
if HealBot_Config.ShowDebuffWarning == 1 then
|
||||||
|
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,
|
UIErrorsFrame:AddMessage(UnitName(unit) .. " suffers from " .. DebuffType,
|
||||||
HealBot_Config.CDCBarColour[DebuffType].R,
|
r, g, b,
|
||||||
HealBot_Config.CDCBarColour[DebuffType].G,
|
|
||||||
HealBot_Config.CDCBarColour[DebuffType].B,
|
|
||||||
1, UIERRORS_HOLD_TIME);
|
1, UIERRORS_HOLD_TIME);
|
||||||
end
|
end
|
||||||
if HealBot_Config.SoundDebuffWarning == 1 then HealBot_PlaySound(HealBot_Config.SoundDebuffPlay); end
|
if HealBot_Config.SoundDebuffWarning == 1 then HealBot_PlaySound(HealBot_Config.SoundDebuffPlay); end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
HealBot_CheckBuffs(unit);
|
-- Check buffs synchronously because tooltip scanning fails in OnUpdate
|
||||||
HealBot_RecalcHeals(unit);
|
HealBot_CheckBuffs(unit)
|
||||||
|
|
||||||
|
-- Defer UI updates
|
||||||
|
HealBot_View_DirtyUnits[unit] = true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
-- HealBot_Controller_Comms.lua
|
-- HealBot_Controller_Comms.lua
|
||||||
-- Handles network sync (addon messaging), errors, and chat debugging
|
-- Handles network sync (addon messaging), errors, and chat debugging
|
||||||
|
|
||||||
|
-- HealBot_Get_DebugChan: Internal utility: HealBot_Get_DebugChan
|
||||||
function HealBot_Get_DebugChan()
|
function HealBot_Get_DebugChan()
|
||||||
local index = GetChannelName("HBmsg");
|
local index = GetChannelName("HBmsg");
|
||||||
if (index > 0) then
|
if (index > 0) then
|
||||||
@@ -10,6 +11,7 @@ function HealBot_Get_DebugChan()
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_AddChat: Prints standard messages to default chat frame.
|
||||||
function HealBot_AddChat(msg)
|
function HealBot_AddChat(msg)
|
||||||
local chanid = HealBot_Get_DebugChan();
|
local chanid = HealBot_Get_DebugChan();
|
||||||
if chanid and HealBot_SpamCnt < 3 then
|
if chanid and HealBot_SpamCnt < 3 then
|
||||||
@@ -28,6 +30,7 @@ function HealBot_AddChat(msg)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_AddDebug: Prints debug messages to internal chat channel.
|
||||||
function HealBot_AddDebug(msg)
|
function HealBot_AddDebug(msg)
|
||||||
local chanid = HealBot_Get_DebugChan();
|
local chanid = HealBot_Get_DebugChan();
|
||||||
if chanid and HealBot_SpamCnt < 3 then
|
if chanid and HealBot_SpamCnt < 3 then
|
||||||
@@ -44,6 +47,7 @@ function HealBot_AddDebug(msg)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_Report_Error: Formats and prints error logs.
|
||||||
function HealBot_Report_Error(msg)
|
function HealBot_Report_Error(msg)
|
||||||
if HealBot_ErrorCnt < 28 then
|
if HealBot_ErrorCnt < 28 then
|
||||||
HealBot_ErrorCnt = HealBot_ErrorCnt + 1;
|
HealBot_ErrorCnt = HealBot_ErrorCnt + 1;
|
||||||
@@ -52,11 +56,13 @@ function HealBot_Report_Error(msg)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_AddError: Displays error text in the UI frame.
|
||||||
function HealBot_AddError(msg)
|
function HealBot_AddError(msg)
|
||||||
UIErrorsFrame:AddMessage(msg, 1.0, 1.0, 1.0, 1.0, UIERRORS_HOLD_TIME);
|
UIErrorsFrame:AddMessage(msg, 1.0, 1.0, 1.0, 1.0, UIERRORS_HOLD_TIME);
|
||||||
HealBot_AddDebug(msg);
|
HealBot_AddDebug(msg);
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_SendAddonMessage: Broadcasts data to party/raid channels.
|
||||||
function HealBot_SendAddonMessage(prefix, text)
|
function HealBot_SendAddonMessage(prefix, text)
|
||||||
if GetNumRaidMembers() > 0 then
|
if GetNumRaidMembers() > 0 then
|
||||||
SendAddonMessage(prefix, text, "RAID")
|
SendAddonMessage(prefix, text, "RAID")
|
||||||
@@ -65,11 +71,13 @@ function HealBot_SendAddonMessage(prefix, text)
|
|||||||
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)
|
function HealBot_OnEvent_AddonMsg(this, addon_id, inc_msg, dist_target, sender_id)
|
||||||
if addon_id == HEALBOT_ADDON_ID then
|
if addon_id == HEALBOT_ADDON_ID then
|
||||||
local tmpTest, unitname, heal_val
|
local tmpTest, unitname, heal_val
|
||||||
tmpTest, tmpTest, unitname, heal_val = string.find(inc_msg, ">> (%a+) <<=>> (.%d+) <<" );
|
tmpTest, tmpTest, unitname, heal_val = string.find(inc_msg, ">> (%a+) <<=>> (.%d+) <<" );
|
||||||
if heal_val then
|
if heal_val then
|
||||||
|
if sender_id == UnitName("player") then return end
|
||||||
if not HealBot_HealsIn[unitname] then
|
if not HealBot_HealsIn[unitname] then
|
||||||
HealBot_HealsIn[unitname] = 0;
|
HealBot_HealsIn[unitname] = 0;
|
||||||
end
|
end
|
||||||
|
|||||||
+257
-74
@@ -2,8 +2,11 @@
|
|||||||
-- Manages WoW Frame events and periodic updates, routing to respective services
|
-- Manages WoW Frame events and periodic updates, routing to respective services
|
||||||
|
|
||||||
HealBot_View_DirtyUnits = {}
|
HealBot_View_DirtyUnits = {}
|
||||||
|
HealBot_View_DirtyPower = {}
|
||||||
local HealBot_Timer1, HealsIn_Timer = 0, 0;
|
local HealBot_Timer1, HealsIn_Timer = 0, 0;
|
||||||
|
HealBot_LastModState = ""
|
||||||
|
|
||||||
|
-- HealBot_OnLoad: Registers core events and observers on addon load.
|
||||||
function HealBot_OnLoad(this)
|
function HealBot_OnLoad(this)
|
||||||
this:RegisterEvent("VARIABLES_LOADED");
|
this:RegisterEvent("VARIABLES_LOADED");
|
||||||
|
|
||||||
@@ -19,21 +22,45 @@ function HealBot_OnLoad(this)
|
|||||||
HealBot_View_DirtyUnits[unitID] = true
|
HealBot_View_DirtyUnits[unitID] = true
|
||||||
end)
|
end)
|
||||||
HealBot_Model:RegisterObserver("UNIT_POWER_CHANGED", function(unitID)
|
HealBot_Model:RegisterObserver("UNIT_POWER_CHANGED", function(unitID)
|
||||||
HealBot_View_DirtyUnits[unitID] = true
|
HealBot_View_DirtyPower[unitID] = true
|
||||||
end)
|
end)
|
||||||
HealBot_Model:RegisterObserver("UNIT_AURA_CHANGED", function(unitID)
|
HealBot_Model:RegisterObserver("UNIT_AURA_CHANGED", function(unitID)
|
||||||
HealBot_View_DirtyUnits[unitID] = true
|
HealBot_View_DirtyUnits[unitID] = true
|
||||||
end)
|
end)
|
||||||
HealBot_Model:RegisterObserver("ROSTER_CHANGED", function()
|
HealBot_Model:RegisterObserver("ROSTER_CHANGED", function()
|
||||||
Delay_RecalcParty = 1
|
HealBot_Delay_RecalcParty = 1
|
||||||
|
end)
|
||||||
|
HealBot_Model:RegisterObserver("EQUIPMENT_CHANGED", function(unitID)
|
||||||
|
if unitID == "player" then
|
||||||
|
HealBot_EquipChangeTimer = 1
|
||||||
|
end
|
||||||
end)
|
end)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_RegisterThis: Internal utility: HealBot_RegisterThis
|
||||||
function HealBot_RegisterThis(this)
|
function HealBot_RegisterThis(this)
|
||||||
-- Deprecated / not used
|
-- Deprecated / not used
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_OnUpdate: Main loop: processes dirty queues and timers.
|
||||||
function HealBot_OnUpdate(this, arg1)
|
function HealBot_OnUpdate(this, arg1)
|
||||||
|
if HealBot_Action_TooltipUnit and HealBot_Tooltip:IsVisible() then
|
||||||
|
local s = IsShiftKeyDown() and true or false
|
||||||
|
local c = IsControlKeyDown() and true or false
|
||||||
|
local a = IsAltKeyDown() and true or false
|
||||||
|
|
||||||
|
if HealBot_LastModS ~= s or HealBot_LastModC ~= c or HealBot_LastModA ~= a then
|
||||||
|
HealBot_LastModS = s
|
||||||
|
HealBot_LastModC = c
|
||||||
|
HealBot_LastModA = a
|
||||||
|
HealBot_Action_RefreshTooltip(HealBot_Action_TooltipUnit)
|
||||||
|
end
|
||||||
|
else
|
||||||
|
HealBot_LastModS = false
|
||||||
|
HealBot_LastModC = false
|
||||||
|
HealBot_LastModA = false
|
||||||
|
end
|
||||||
|
|
||||||
if HealBot_TargetRestorePending then
|
if HealBot_TargetRestorePending then
|
||||||
HealBot_TargetRestoreTimer = HealBot_TargetRestoreTimer + arg1;
|
HealBot_TargetRestoreTimer = HealBot_TargetRestoreTimer + arg1;
|
||||||
if HealBot_TargetRestoreTimer >= 0.1 then
|
if HealBot_TargetRestoreTimer >= 0.1 then
|
||||||
@@ -50,11 +77,114 @@ function HealBot_OnUpdate(this, arg1)
|
|||||||
end
|
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 = { type = "enemy" }
|
||||||
|
elseif pendingCast.oldTarget and pendingCast.oldTarget ~= UnitName(pendingCast.target) then
|
||||||
|
HealBot_TargetRestorePending = { type = "friend" }
|
||||||
|
elseif not pendingCast.oldTarget then
|
||||||
|
HealBot_TargetRestorePending = { type = "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
|
-- Process Dirty Queue for MVC View
|
||||||
if next(HealBot_View_DirtyUnits) ~= nil then
|
local unitsToRefresh = {}
|
||||||
for unitID in pairs(HealBot_View_DirtyUnits) do
|
for unitID in pairs(HealBot_View_DirtyUnits) do
|
||||||
HealBot_Action_RefreshButtons(unitID)
|
unitsToRefresh[unitID] = true
|
||||||
HealBot_View_DirtyUnits[unitID] = nil
|
HealBot_View_DirtyUnits[unitID] = nil
|
||||||
|
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 powerToRefresh = {}
|
||||||
|
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
|
||||||
|
|
||||||
|
local powerID, _ = next(HealBot_View_DirtyPower)
|
||||||
|
while powerID do
|
||||||
|
HealBot_Action_RefreshPower(powerID)
|
||||||
|
HealBot_View_DirtyPower[powerID] = nil
|
||||||
|
powerID, _ = next(HealBot_View_DirtyPower)
|
||||||
|
end
|
||||||
|
|
||||||
|
if HealBot_EquipChangeTimer > 0 then
|
||||||
|
HealBot_EquipChangeTimer = HealBot_EquipChangeTimer - arg1
|
||||||
|
if HealBot_EquipChangeTimer <= 0 then
|
||||||
|
HealBot_EquipChangeTimer = 0
|
||||||
|
HealBot_BonusScanner:ScanEquipment()
|
||||||
|
HealBot_CalcEquipBonus = true;
|
||||||
|
HealBot_RecalcSpells();
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -63,33 +193,25 @@ function HealBot_OnUpdate(this, arg1)
|
|||||||
if not HealBot_IsFighting then
|
if not HealBot_IsFighting then
|
||||||
HealsIn_Timer = HealsIn_Timer + 1;
|
HealsIn_Timer = HealsIn_Timer + 1;
|
||||||
if HealsIn_Timer >= 10 then
|
if HealsIn_Timer >= 10 then
|
||||||
HealBot_HealsIn = {};
|
for k in pairs(HealBot_HealsIn) do HealBot_HealsIn[k] = nil end
|
||||||
HealBot_Healers = {};
|
for k in pairs(HealBot_Healers) do HealBot_Healers[k] = nil end
|
||||||
HealsIn_Timer = 0;
|
HealsIn_Timer = 0;
|
||||||
end
|
end
|
||||||
|
|
||||||
if HealBot_EquipChangeTimer > 0 then
|
|
||||||
HealBot_EquipChangeTimer = HealBot_EquipChangeTimer - arg1
|
|
||||||
if HealBot_EquipChangeTimer <= 0 then
|
|
||||||
HealBot_EquipChangeTimer = 0
|
|
||||||
HealBot_BonusScanner:ScanEquipment()
|
|
||||||
CalcEquipBonus = true;
|
|
||||||
HealBot_RecalcSpells();
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
if InitSpells > 1 then
|
if HealBot_SpellsInitFlag > 1 then
|
||||||
InitSpells = InitSpells + 1;
|
HealBot_SpellsInitFlag = HealBot_SpellsInitFlag + 1;
|
||||||
if InitSpells > 2 then
|
if HealBot_SpellsInitFlag > 2 then
|
||||||
local cnt = HealBot_InitSpells();
|
local cnt = HealBot_InitSpells();
|
||||||
InitSpells = 0;
|
HealBot_SpellsInitFlag = 0;
|
||||||
HealBot_RecalcSpells();
|
HealBot_RecalcSpells();
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
if Delay_RecalcParty > 0 then
|
if HealBot_Delay_RecalcParty > 0 then
|
||||||
Delay_RecalcParty = Delay_RecalcParty + 1
|
HealBot_Delay_RecalcParty = HealBot_Delay_RecalcParty + 1
|
||||||
if Delay_RecalcParty > 1 then
|
if HealBot_Delay_RecalcParty > 1 then
|
||||||
Delay_RecalcParty = 0;
|
HealBot_Delay_RecalcParty = 0;
|
||||||
HealBot_RecalcParty();
|
HealBot_RecalcParty();
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -109,32 +231,28 @@ local HealBot_EventHandlers = {
|
|||||||
HealBot_OnEvent_UnitHealth(this, arg1)
|
HealBot_OnEvent_UnitHealth(this, arg1)
|
||||||
end,
|
end,
|
||||||
["UNIT_MANA"] = function(this, arg1)
|
["UNIT_MANA"] = function(this, arg1)
|
||||||
|
if arg1 ~= "player" and HealBot_Config.ShowManaBars == 0 then return end
|
||||||
if HealBot_Model:UpdateUnitPower(arg1) then
|
if HealBot_Model:UpdateUnitPower(arg1) then
|
||||||
HealBot_Model:NotifyObservers("UNIT_POWER_CHANGED", arg1)
|
HealBot_Model:NotifyObservers("UNIT_POWER_CHANGED", arg1)
|
||||||
end
|
end
|
||||||
if (arg1 == "player") then HealBot_RecalcHeals(); end
|
|
||||||
HealBot_Action_RefreshButtons(arg1);
|
|
||||||
end,
|
end,
|
||||||
["UNIT_RAGE"] = function(this, arg1)
|
["UNIT_RAGE"] = function(this, arg1)
|
||||||
|
if arg1 ~= "player" and HealBot_Config.ShowManaBars == 0 then return end
|
||||||
if HealBot_Model:UpdateUnitPower(arg1) then
|
if HealBot_Model:UpdateUnitPower(arg1) then
|
||||||
HealBot_Model:NotifyObservers("UNIT_POWER_CHANGED", arg1)
|
HealBot_Model:NotifyObservers("UNIT_POWER_CHANGED", arg1)
|
||||||
end
|
end
|
||||||
if (arg1 == "player") then HealBot_RecalcHeals(); end
|
|
||||||
HealBot_Action_RefreshButtons(arg1);
|
|
||||||
end,
|
end,
|
||||||
["UNIT_ENERGY"] = function(this, arg1)
|
["UNIT_ENERGY"] = function(this, arg1)
|
||||||
|
if arg1 ~= "player" and HealBot_Config.ShowManaBars == 0 then return end
|
||||||
if HealBot_Model:UpdateUnitPower(arg1) then
|
if HealBot_Model:UpdateUnitPower(arg1) then
|
||||||
HealBot_Model:NotifyObservers("UNIT_POWER_CHANGED", arg1)
|
HealBot_Model:NotifyObservers("UNIT_POWER_CHANGED", arg1)
|
||||||
end
|
end
|
||||||
if (arg1 == "player") then HealBot_RecalcHeals(); end
|
|
||||||
HealBot_Action_RefreshButtons(arg1);
|
|
||||||
end,
|
end,
|
||||||
["UNIT_DISPLAYPOWER"] = function(this, arg1)
|
["UNIT_DISPLAYPOWER"] = function(this, arg1)
|
||||||
|
if arg1 ~= "player" and HealBot_Config.ShowManaBars == 0 then return end
|
||||||
if HealBot_Model:UpdateUnitPower(arg1) then
|
if HealBot_Model:UpdateUnitPower(arg1) then
|
||||||
HealBot_Model:NotifyObservers("UNIT_POWER_CHANGED", arg1)
|
HealBot_Model:NotifyObservers("UNIT_POWER_CHANGED", arg1)
|
||||||
end
|
end
|
||||||
if (arg1 == "player") then HealBot_RecalcHeals(); end
|
|
||||||
HealBot_Action_RefreshButtons(arg1);
|
|
||||||
end,
|
end,
|
||||||
["UNIT_AURA"] = function(this, arg1)
|
["UNIT_AURA"] = function(this, arg1)
|
||||||
HealBot_Model:MarkAuraChanged(arg1)
|
HealBot_Model:MarkAuraChanged(arg1)
|
||||||
@@ -160,35 +278,63 @@ local HealBot_EventHandlers = {
|
|||||||
HealBot_Model:NotifyObservers("ROSTER_CHANGED")
|
HealBot_Model:NotifyObservers("ROSTER_CHANGED")
|
||||||
HealBot_OnEvent_PartyMembersChanged(this)
|
HealBot_OnEvent_PartyMembersChanged(this)
|
||||||
end,
|
end,
|
||||||
|
["RAID_ROSTER_UPDATE"] = function(this)
|
||||||
|
for _, unit in ipairs(HealBot_Model.partyMembers) do
|
||||||
|
HealBot_Model:RefreshUnit(unit)
|
||||||
|
end
|
||||||
|
for _, unit in ipairs(HealBot_Model.raidMembers) do
|
||||||
|
HealBot_Model:RefreshUnit(unit)
|
||||||
|
end
|
||||||
|
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)
|
["PLAYER_ENTERING_WORLD"] = function(this)
|
||||||
HealBot_Model:RefreshUnit("player")
|
HealBot_Model:RefreshUnit("player")
|
||||||
HealBot_Model:RefreshUnit("pet")
|
HealBot_Model:RefreshUnit("pet")
|
||||||
|
if HealBot_UnitClass("player") == "DRUID" then
|
||||||
|
HealBot_UpdateShapeshiftForm()
|
||||||
|
end
|
||||||
HealBot_OnEvent_PlayerEnteringWorld(this)
|
HealBot_OnEvent_PlayerEnteringWorld(this)
|
||||||
end,
|
end,
|
||||||
["VARIABLES_LOADED"] = function(this)
|
["VARIABLES_LOADED"] = function(this)
|
||||||
HealBot_OnEvent_VariablesLoaded(this)
|
HealBot_OnEvent_VariablesLoaded(this)
|
||||||
|
HealBot_Integrations_Toggle()
|
||||||
end,
|
end,
|
||||||
-- Legacy pass-throughs
|
-- Legacy pass-throughs
|
||||||
["CHAT_MSG_ADDON"] = function(this, arg1, arg2, arg3, arg4) HealBot_OnEvent_AddonMsg(this, arg1, arg2, arg3, arg4) end,
|
["CHAT_MSG_ADDON"] = function(this, arg1, arg2, arg3, arg4) HealBot_OnEvent_AddonMsg(this, arg1, arg2, arg3, arg4) end,
|
||||||
["SPELLCAST_START"] = function(this, arg1, arg2) HealBot_OnEvent_SpellcastStart(this, arg1, arg2) end,
|
["SPELLCAST_START"] = function(this, arg1, arg2) HealBot_OnEvent_SpellcastStart(this, arg1, arg2) end,
|
||||||
["SPELLCAST_STOP"] = function(this) HealBot_OnEvent_SpellcastStop(this) end,
|
["SPELLCAST_STOP"] = function(this) HealBot_OnEvent_SpellcastStop(this, "SPELLCAST_STOP") end,
|
||||||
["SPELLCAST_INTERRUPTED"] = function(this) HealBot_OnEvent_SpellcastStop(this) end,
|
["SPELLCAST_INTERRUPTED"] = function(this) HealBot_OnEvent_SpellcastStop(this, "SPELLCAST_INTERRUPTED") end,
|
||||||
["SPELLCAST_FAILED"] = function(this) HealBot_OnEvent_SpellcastStop(this) end,
|
["SPELLCAST_FAILED"] = function(this) HealBot_OnEvent_SpellcastStop(this, "SPELLCAST_FAILED") end,
|
||||||
["PLAYER_REGEN_DISABLED"] = function(this) HealBot_OnEvent_PlayerRegenDisabled(this) end,
|
["PLAYER_REGEN_DISABLED"] = function(this) HealBot_OnEvent_PlayerRegenDisabled(this) end,
|
||||||
["PLAYER_REGEN_ENABLED"] = function(this) HealBot_OnEvent_PlayerRegenEnabled(this) end,
|
["PLAYER_REGEN_ENABLED"] = function(this) HealBot_OnEvent_PlayerRegenEnabled(this) end,
|
||||||
["BAG_UPDATE_COOLDOWN"] = function(this, arg1) HealBot_OnEvent_BagUpdateCooldown(this, arg1) end,
|
|
||||||
["BAG_UPDATE"] = function(this, arg1) HealBot_OnEvent_BagUpdate(this, arg1) end,
|
|
||||||
["PARTY_MEMBER_DISABLE"] = function(this, arg1) HealBot_OnEvent_PartyMemberDisable(this, arg1) end,
|
["PARTY_MEMBER_DISABLE"] = function(this, arg1) HealBot_OnEvent_PartyMemberDisable(this, arg1) end,
|
||||||
["PARTY_MEMBER_ENABLE"] = function(this, arg1) HealBot_OnEvent_PartyMemberEnable(this, arg1) end,
|
["PARTY_MEMBER_ENABLE"] = function(this, arg1) HealBot_OnEvent_PartyMemberEnable(this, arg1) end,
|
||||||
["CHAT_MSG_SYSTEM"] = function(this, arg1) HealBot_OnEvent_SystemMsg(this, arg1) end,
|
["CHAT_MSG_SYSTEM"] = function(this, arg1) HealBot_OnEvent_SystemMsg(this, arg1) end,
|
||||||
["ZONE_CHANGED_NEW_AREA"] = function(this) HealBot_OnEvent_ZoneChanged(this) end,
|
["ZONE_CHANGED_NEW_AREA"] = function(this) HealBot_OnEvent_ZoneChanged(this) end,
|
||||||
["UPDATE_INVENTORY_ALERTS"] = function(this) HealBot_OnEvent_PlayerEquipmentChanged(this) end,
|
["UPDATE_INVENTORY_ALERTS"] = function(this)
|
||||||
["UNIT_INVENTORY_CHANGED"] = function(this, arg1) HealBot_OnEvent_PlayerEquipmentChanged2(this, arg1) end,
|
HealBot_Model:NotifyObservers("EQUIPMENT_CHANGED", "player")
|
||||||
["PET_BAR_SHOWGRID"] = function(this) HealBot_OnEvent_PartyMembersChanged(this) end,
|
HealBot_OnEvent_PlayerEquipmentChanged(this)
|
||||||
["PET_BAR_HIDEGRID"] = function(this) HealBot_OnEvent_PartyMembersChanged(this) end,
|
end,
|
||||||
["SPELLS_CHANGED"] = function(this, arg1) HealBot_OnEvent_SpellsChanged(this, arg1) end
|
["UNIT_INVENTORY_CHANGED"] = function(this, arg1)
|
||||||
|
if arg1 ~= "player" then return end
|
||||||
|
HealBot_Model:NotifyObservers("EQUIPMENT_CHANGED", arg1)
|
||||||
|
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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
-- HealBot_OnEvent: Event dispatcher for WoW UI events.
|
||||||
function HealBot_OnEvent(this, event, arg1, arg2, arg3, arg4)
|
function HealBot_OnEvent(this, event, arg1, arg2, arg3, arg4)
|
||||||
local handler = HealBot_EventHandlers[event]
|
local handler = HealBot_EventHandlers[event]
|
||||||
if handler then
|
if handler then
|
||||||
@@ -198,6 +344,7 @@ function HealBot_OnEvent(this, event, arg1, arg2, arg3, arg4)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_OnEvent_VariablesLoaded: Applies config defaults and initializes state.
|
||||||
function HealBot_OnEvent_VariablesLoaded(this)
|
function HealBot_OnEvent_VariablesLoaded(this)
|
||||||
local class = HealBot_UnitClass("player")
|
local class = HealBot_UnitClass("player")
|
||||||
|
|
||||||
@@ -252,10 +399,11 @@ function HealBot_OnEvent_VariablesLoaded(this)
|
|||||||
this:RegisterEvent("PLAYER_REGEN_ENABLED");
|
this:RegisterEvent("PLAYER_REGEN_ENABLED");
|
||||||
this:RegisterEvent("PLAYER_TARGET_CHANGED");
|
this:RegisterEvent("PLAYER_TARGET_CHANGED");
|
||||||
this:RegisterEvent("PARTY_MEMBERS_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_DISABLE");
|
||||||
this:RegisterEvent("PARTY_MEMBER_ENABLE");
|
this:RegisterEvent("PARTY_MEMBER_ENABLE");
|
||||||
this:RegisterEvent("PET_BAR_SHOWGRID");
|
this:RegisterEvent("UNIT_PET");
|
||||||
this:RegisterEvent("PET_BAR_HIDEGRID");
|
|
||||||
this:RegisterEvent("UNIT_HEALTH");
|
this:RegisterEvent("UNIT_HEALTH");
|
||||||
this:RegisterEvent("UNIT_MANA");
|
this:RegisterEvent("UNIT_MANA");
|
||||||
this:RegisterEvent("UNIT_RAGE");
|
this:RegisterEvent("UNIT_RAGE");
|
||||||
@@ -266,39 +414,45 @@ function HealBot_OnEvent_VariablesLoaded(this)
|
|||||||
this:RegisterEvent("SPELLCAST_STOP");
|
this:RegisterEvent("SPELLCAST_STOP");
|
||||||
this:RegisterEvent("SPELLCAST_INTERRUPTED");
|
this:RegisterEvent("SPELLCAST_INTERRUPTED");
|
||||||
this:RegisterEvent("SPELLCAST_FAILED");
|
this:RegisterEvent("SPELLCAST_FAILED");
|
||||||
this:RegisterEvent("BAG_UPDATE");
|
|
||||||
this:RegisterEvent("BAG_UPDATE_COOLDOWN");
|
|
||||||
this:RegisterEvent("UNIT_AURA");
|
this:RegisterEvent("UNIT_AURA");
|
||||||
this:RegisterEvent("UPDATE_INVENTORY_ALERTS");
|
this:RegisterEvent("UPDATE_INVENTORY_ALERTS");
|
||||||
this:RegisterEvent("UNIT_INVENTORY_CHANGED");
|
this:RegisterEvent("UNIT_INVENTORY_CHANGED");
|
||||||
this:RegisterEvent("CHAT_MSG_ADDON");
|
this:RegisterEvent("CHAT_MSG_ADDON");
|
||||||
this:RegisterEvent("CHAT_MSG_SYSTEM");
|
this:RegisterEvent("CHAT_MSG_SYSTEM");
|
||||||
this:RegisterEvent("PLAYER_ENTERING_WORLD");
|
this:RegisterEvent("PLAYER_ENTERING_WORLD");
|
||||||
InitSpells = 2;
|
if class == "DRUID" then
|
||||||
|
this:RegisterEvent("UPDATE_SHAPESHIFT_FORM");
|
||||||
|
this:RegisterEvent("UPDATE_SHAPESHIFT_FORMS");
|
||||||
|
HealBot_UpdateShapeshiftForm();
|
||||||
|
end
|
||||||
|
HealBot_SpellsInitFlag = 2;
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_OnEvent_UnitHealth: Internal utility: HealBot_OnEvent_UnitHealth
|
||||||
function HealBot_OnEvent_UnitHealth(this, unit)
|
function HealBot_OnEvent_UnitHealth(this, unit)
|
||||||
if (not HealBot_Heals[unit]) then return end
|
if (not HealBot_Heals[unit]) then return end
|
||||||
HealBot_CheckCasting(unit);
|
HealBot_CheckCasting(unit);
|
||||||
HealBot_RecalcHeals(unit);
|
|
||||||
if unit == HealBot_Action_TooltipUnit then
|
if unit == HealBot_Action_TooltipUnit then
|
||||||
HealBot_Action_RefreshTooltip(HealBot_Action_TooltipUnit);
|
HealBot_Action_RefreshTooltip(HealBot_Action_TooltipUnit);
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_OnEvent_UnitMana: Internal utility: HealBot_OnEvent_UnitMana
|
||||||
function HealBot_OnEvent_UnitMana(this, unit)
|
function HealBot_OnEvent_UnitMana(this, unit)
|
||||||
if (unit ~= "player") then return end
|
if (unit ~= "player") then return end
|
||||||
HealBot_RecalcHeals();
|
HealBot_RecalcHeals();
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_OnEvent_ZoneChanged: Internal utility: HealBot_OnEvent_ZoneChanged
|
||||||
function HealBot_OnEvent_ZoneChanged(this)
|
function HealBot_OnEvent_ZoneChanged(this)
|
||||||
HealBot_ResetRangeScale();
|
HealBot_ResetRangeScale();
|
||||||
Delay_RecalcParty = 1;
|
HealBot_Delay_RecalcParty = 1;
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_OnEvent_PlayerRegenDisabled: Internal utility: HealBot_OnEvent_PlayerRegenDisabled
|
||||||
function HealBot_OnEvent_PlayerRegenDisabled(this)
|
function HealBot_OnEvent_PlayerRegenDisabled(this)
|
||||||
HealBot_RecalcParty();
|
-- Removed HealBot_RecalcParty();
|
||||||
if (UnitIsDeadOrGhost("player")) or (UnitOnTaxi("player")) then
|
if (UnitIsDeadOrGhost("player")) or (UnitOnTaxi("player")) then
|
||||||
if HealBot_Config.AutoClose==1 and HealBot_Config.ActionVisible~=0 then
|
if HealBot_Config.AutoClose==1 and HealBot_Config.ActionVisible~=0 then
|
||||||
HealBot_Action.ProgrammaticHide = true;
|
HealBot_Action.ProgrammaticHide = true;
|
||||||
@@ -332,28 +486,41 @@ function HealBot_OnEvent_PlayerRegenDisabled(this)
|
|||||||
-- HealBot_RecalcHeals();
|
-- HealBot_RecalcHeals();
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_OnEvent_PlayerRegenEnabled: Internal utility: HealBot_OnEvent_PlayerRegenEnabled
|
||||||
function HealBot_OnEvent_PlayerRegenEnabled(this)
|
function HealBot_OnEvent_PlayerRegenEnabled(this)
|
||||||
HealBot_IsFighting = false;
|
HealBot_IsFighting = false;
|
||||||
Delay_RecalcParty = 1;
|
HealBot_Delay_RecalcParty = 1;
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_OnEvent_PlayerTargetChanged: Internal utility: HealBot_OnEvent_PlayerTargetChanged
|
||||||
function HealBot_OnEvent_PlayerTargetChanged(this)
|
function HealBot_OnEvent_PlayerTargetChanged(this)
|
||||||
HealBot_RecalcParty();
|
if HealBot_Action_UnitButtons and HealBot_Action_UnitButtons["target"] then
|
||||||
|
HealBot_View_DirtyUnits["target"] = true
|
||||||
|
HealBot_OnEvent_UnitAura(nil, "target");
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_OnEvent_PartyMembersChanged: Internal utility: HealBot_OnEvent_PartyMembersChanged
|
||||||
function HealBot_OnEvent_PartyMembersChanged(this)
|
function HealBot_OnEvent_PartyMembersChanged(this)
|
||||||
Delay_RecalcParty = 1;
|
HealBot_Model:PreserveStateByGUID()
|
||||||
|
HealBot_Integrations_PruneNampower()
|
||||||
|
if HealBot_IsFighting then
|
||||||
|
HealBot_Action_PartyChanged()
|
||||||
|
end
|
||||||
|
HealBot_Delay_RecalcParty = 1;
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_OnEvent_PartyMemberDisable: Internal utility: HealBot_OnEvent_PartyMemberDisable
|
||||||
function HealBot_OnEvent_PartyMemberDisable(this, unit)
|
function HealBot_OnEvent_PartyMemberDisable(this, unit)
|
||||||
HealBot_RecalcHeals();
|
HealBot_RecalcHeals();
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_OnEvent_SystemMsg: Internal utility: HealBot_OnEvent_SystemMsg
|
||||||
function HealBot_OnEvent_SystemMsg(this, msg)
|
function HealBot_OnEvent_SystemMsg(this, msg)
|
||||||
if type(msg) == "string" then
|
if type(msg) == "string" then
|
||||||
local tmpTest, tmpTest, deserter = string.find(msg, HB_HASLEFTRAID);
|
local tmpTest, tmpTest, deserter = string.find(msg, HEALBOT_HASLEFTRAID);
|
||||||
if not deserter then
|
if not deserter then
|
||||||
local tmpTest, tmpTest, deserter = string.find(msg, HB_HASLEFTPARTY);
|
local tmpTest, tmpTest, deserter = string.find(msg, HEALBOT_HASLEFTPARTY);
|
||||||
end
|
end
|
||||||
if deserter then
|
if deserter then
|
||||||
if (HealBot_Healers[deserter]) then
|
if (HealBot_Healers[deserter]) then
|
||||||
@@ -369,56 +536,54 @@ function HealBot_OnEvent_SystemMsg(this, msg)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
elseif msg == HB_YOULEAVETHEGROUP or msg == HB_YOULEAVETHERAID then
|
elseif msg == HEALBOT_YOULEAVETHEGROUP or msg == HEALBOT_YOULEAVETHERAID then
|
||||||
Delay_RecalcParty = 1;
|
HealBot_Delay_RecalcParty = 1;
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_OnEvent_PartyMemberEnable: Internal utility: HealBot_OnEvent_PartyMemberEnable
|
||||||
function HealBot_OnEvent_PartyMemberEnable(this, unit)
|
function HealBot_OnEvent_PartyMemberEnable(this, unit)
|
||||||
HealBot_RecalcHeals();
|
HealBot_RecalcHeals();
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_OnEvent_PlayerEquipmentChanged: Internal utility: HealBot_OnEvent_PlayerEquipmentChanged
|
||||||
function HealBot_OnEvent_PlayerEquipmentChanged(this)
|
function HealBot_OnEvent_PlayerEquipmentChanged(this)
|
||||||
HealBot_EquipChangeTimer = 1;
|
HealBot_EquipChangeTimer = 1;
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_OnEvent_PlayerEquipmentChanged2: Internal utility: HealBot_OnEvent_PlayerEquipmentChanged2
|
||||||
function HealBot_OnEvent_PlayerEquipmentChanged2(this, unit)
|
function HealBot_OnEvent_PlayerEquipmentChanged2(this, unit)
|
||||||
if unit == "player" then
|
if unit == "player" then
|
||||||
HealBot_EquipChangeTimer = 1;
|
HealBot_EquipChangeTimer = 1;
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_OnEvent_SpellsChanged: Internal utility: HealBot_OnEvent_SpellsChanged
|
||||||
function HealBot_OnEvent_SpellsChanged(this, arg1)
|
function HealBot_OnEvent_SpellsChanged(this, arg1)
|
||||||
if arg1 then return; end
|
if arg1 then return; end
|
||||||
HealBot_AddDebug("HB: SpellsChanged");
|
HealBot_AddDebug("HB: SpellsChanged");
|
||||||
InitSpells = 2;
|
HealBot_SpellsInitFlag = 2;
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_OnEvent_TalentsChanged: Internal utility: HealBot_OnEvent_TalentsChanged
|
||||||
function HealBot_OnEvent_TalentsChanged(this, arg1)
|
function HealBot_OnEvent_TalentsChanged(this, arg1)
|
||||||
HealBot_AddDebug("HB: TalentsChanged");
|
HealBot_AddDebug("HB: TalentsChanged");
|
||||||
end
|
end
|
||||||
|
|
||||||
function HealBot_OnEvent_BagUpdate(this, bag)
|
-- HealBot_OnEvent_PlayerEnteringWorld: Internal utility: HealBot_OnEvent_PlayerEnteringWorld
|
||||||
if HealBot_EquipChangeTimer == 0 then
|
|
||||||
HealBot_RecalcSpells();
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
function HealBot_OnEvent_BagUpdateCooldown(this, bag)
|
|
||||||
if not bag then
|
|
||||||
bag = "undef"
|
|
||||||
elseif HealBot_EquipChangeTimer == 0 then
|
|
||||||
HealBot_RecalcSpells();
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
function HealBot_OnEvent_PlayerEnteringWorld(this)
|
function HealBot_OnEvent_PlayerEnteringWorld(this)
|
||||||
HealBot_IsFighting = false;
|
HealBot_IsFighting = false;
|
||||||
|
-- Re-apply the refresh hook late in case another addon overrode it during load
|
||||||
|
if HealBot_ApplyRefreshHook then
|
||||||
|
HealBot_ApplyRefreshHook()
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_OnEvent_SpellcastStart: Internal utility: HealBot_OnEvent_SpellcastStart
|
||||||
function HealBot_OnEvent_SpellcastStart(this, spell, duration)
|
function HealBot_OnEvent_SpellcastStart(this, spell, duration)
|
||||||
HealBot_IsCasting = true;
|
HealBot_IsCasting = true;
|
||||||
|
HealBot_PendingShapeshiftCast = nil;
|
||||||
HealBot_RecalcHeals();
|
HealBot_RecalcHeals();
|
||||||
HealBot_CheckCasting();
|
HealBot_CheckCasting();
|
||||||
if spell == HEALBOT_RESURRECTION or spell == HEALBOT_ANCESTRALSPIRIT or spell == HEALBOT_REBIRTH or spell == HEALBOT_REDEMPTION then
|
if spell == HEALBOT_RESURRECTION or spell == HEALBOT_ANCESTRALSPIRIT or spell == HEALBOT_REBIRTH or spell == HEALBOT_REDEMPTION then
|
||||||
@@ -429,8 +594,26 @@ function HealBot_OnEvent_SpellcastStart(this, spell, duration)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function HealBot_OnEvent_SpellcastStop(this)
|
-- HealBot_OnEvent_SpellcastStop: Internal utility: HealBot_OnEvent_SpellcastStop
|
||||||
|
function HealBot_OnEvent_SpellcastStop(this, eventName)
|
||||||
HealBot_IsCasting = false;
|
HealBot_IsCasting = false;
|
||||||
|
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_StopCasting();
|
||||||
HealBot_RecalcHeals();
|
HealBot_RecalcHeals();
|
||||||
if HealBot_IamRessing then
|
if HealBot_IamRessing then
|
||||||
|
|||||||
@@ -3,10 +3,12 @@
|
|||||||
|
|
||||||
local _scale = 0
|
local _scale = 0
|
||||||
|
|
||||||
|
-- HealBot_ResetRangeScale: Resets map range scaling on zone change.
|
||||||
function HealBot_ResetRangeScale()
|
function HealBot_ResetRangeScale()
|
||||||
_scale = 0
|
_scale = 0
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_Range_Check: Checks if unit is in range via map distance or API.
|
||||||
function HealBot_Range_Check(unit, range)
|
function HealBot_Range_Check(unit, range)
|
||||||
local return_val = 0;
|
local return_val = 0;
|
||||||
if not range then
|
if not range then
|
||||||
@@ -14,6 +16,22 @@ function HealBot_Range_Check(unit, range)
|
|||||||
end
|
end
|
||||||
if ( unit == "player" ) then
|
if ( unit == "player" ) then
|
||||||
return_val = 1;
|
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
|
elseif ( UnitIsVisible(unit) == 1 ) then
|
||||||
local tx, ty = GetPlayerMapPosition(unit)
|
local tx, ty = GetPlayerMapPosition(unit)
|
||||||
local dist
|
local dist
|
||||||
|
|||||||
+342
-106
@@ -18,6 +18,7 @@ local HealBot_Health60 = {
|
|||||||
["WARRIOR"] = 5000,
|
["WARRIOR"] = 5000,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
-- HealBot_GetSpellName: Internal utility: HealBot_GetSpellName
|
||||||
function HealBot_GetSpellName(id)
|
function HealBot_GetSpellName(id)
|
||||||
if (not id) then
|
if (not id) then
|
||||||
return nil;
|
return nil;
|
||||||
@@ -32,6 +33,7 @@ function HealBot_GetSpellName(id)
|
|||||||
return spellName .. " (" .. subSpellName .. ")";
|
return spellName .. " (" .. subSpellName .. ")";
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_GetSpellId: Internal utility: HealBot_GetSpellId
|
||||||
function HealBot_GetSpellId(spell)
|
function HealBot_GetSpellId(spell)
|
||||||
local id, idd = 1, 0;
|
local id, idd = 1, 0;
|
||||||
while true do
|
while true do
|
||||||
@@ -55,6 +57,7 @@ function HealBot_GetSpellId(spell)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_CastSpellByName: Internal utility: HealBot_CastSpellByName
|
||||||
function HealBot_CastSpellByName(spell)
|
function HealBot_CastSpellByName(spell)
|
||||||
if (HealBot_Spells[spell] and HealBot_Spells[spell].BagSlot) then
|
if (HealBot_Spells[spell] and HealBot_Spells[spell].BagSlot) then
|
||||||
HealBot_UseItem(spell);
|
HealBot_UseItem(spell);
|
||||||
@@ -74,20 +77,15 @@ function HealBot_CastSpellByName(spell)
|
|||||||
CastSpell(id, BOOKTYPE_SPELL);
|
CastSpell(id, BOOKTYPE_SPELL);
|
||||||
end
|
end
|
||||||
|
|
||||||
function HealBot_StartCasting(spell, target, ttype)
|
-- HealBot_AnnounceCast: Internal utility: HealBot_AnnounceCast
|
||||||
HealBot_CastSpellByName(spell);
|
function HealBot_AnnounceCast(spell, target)
|
||||||
HealBot_CastingSpell = spell;
|
if not spell or not target then return end
|
||||||
HealBot_CastingTarget = target;
|
|
||||||
if ( SpellCanTargetUnit(target) ) then
|
if UnitIsDeadOrGhost(target) then
|
||||||
SpellTargetUnit(target);
|
local spellLower = string.lower(spell)
|
||||||
ttype = "fired";
|
if not (string.find(spellLower, "resurrection") or string.find(spellLower, "ancestral spirit") or string.find(spellLower, "redemption") or string.find(spellLower, "rebirth")) then
|
||||||
elseif SpellIsTargeting() then
|
return
|
||||||
SpellTargetUnit(target);
|
end
|
||||||
SpellStopTargeting()
|
|
||||||
elseif ttype == "direct" then
|
|
||||||
if ( CheckInteractDistance(target, 4) ) then
|
|
||||||
ttype = "fired";
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
if HealBot_Config.ChatMessages then
|
if HealBot_Config.ChatMessages then
|
||||||
@@ -95,13 +93,26 @@ function HealBot_StartCasting(spell, target, ttype)
|
|||||||
if target == "target" then tName = HealBot_TargetName() or "target" else tName = UnitName(target) end
|
if target == "target" then tName = HealBot_TargetName() or "target" else tName = UnitName(target) end
|
||||||
if not tName then tName = target end
|
if not tName then tName = target end
|
||||||
local baseSpell = spell
|
local baseSpell = spell
|
||||||
local parenIndex = string.find(spell, "%(")
|
local parenIndex = string.find(spell, " %(")
|
||||||
if parenIndex then
|
if parenIndex then
|
||||||
baseSpell = string.sub(spell, 1, parenIndex - 1)
|
baseSpell = string.sub(spell, 1, parenIndex - 1)
|
||||||
|
else
|
||||||
|
parenIndex = string.find(spell, "%(")
|
||||||
|
if parenIndex then
|
||||||
|
baseSpell = string.sub(spell, 1, parenIndex - 1)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- Strip trailing spaces from base spell
|
||||||
|
baseSpell = string.gsub(baseSpell, "%s+$", "")
|
||||||
|
|
||||||
for i = 1, 5 do
|
for i = 1, 5 do
|
||||||
local msgConf = HealBot_Config.ChatMessages[i]
|
local msgConf = HealBot_Config.ChatMessages[i]
|
||||||
if msgConf and msgConf.Spell == baseSpell and msgConf.Channel ~= "None" then
|
local configSpell = msgConf and msgConf.Spell or ""
|
||||||
|
-- Strip trailing spaces from config spell just in case
|
||||||
|
configSpell = string.gsub(configSpell, "%s+$", "")
|
||||||
|
|
||||||
|
if msgConf and configSpell ~= "" and msgConf.Channel ~= "None" and (configSpell == spell or configSpell == baseSpell) then
|
||||||
local msg = msgConf.Message or ""
|
local msg = msgConf.Message or ""
|
||||||
msg = string.gsub(msg, "#Spell#", spell)
|
msg = string.gsub(msg, "#Spell#", spell)
|
||||||
msg = string.gsub(msg, "#Target#", tName)
|
msg = string.gsub(msg, "#Target#", tName)
|
||||||
@@ -118,21 +129,103 @@ function HealBot_StartCasting(spell, target, ttype)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
if ttype == "fired" and HealBot_Spells[spell] then
|
end
|
||||||
if HealBot_Spells[spell].CastTime > 1 then
|
|
||||||
HealValue = HealBot_Spells[spell].HealsDur;
|
-- HealBot_Process_HealValue: Internal utility: HealBot_Process_HealValue
|
||||||
HealBot_SendAddonMessage(HEALBOT_ADDON_ID, ">> " .. UnitName(target) .. " <<=>> " .. HealValue .. " << ");
|
function HealBot_Process_HealValue(spell, target)
|
||||||
|
if HealBot_Spells[spell] and (HealBot_Spells[spell].CastTime or 0) > 1 then
|
||||||
|
HealBot_HealValue = HealBot_Spells[spell].HealsDur;
|
||||||
|
|
||||||
|
-- Apply dynamic Preservation bonus
|
||||||
|
if HEALBOT_REGROWTH and string.find(spell, HEALBOT_REGROWTH) then
|
||||||
|
local presRank = HealBot_GetTalentRank("Preservation")
|
||||||
|
if presRank > 0 then
|
||||||
|
local hasRejuv = false
|
||||||
|
for i=1,32 do
|
||||||
|
local buff = UnitBuff(target, i)
|
||||||
|
if not buff then break end
|
||||||
|
if string.find(buff, "Spell_Nature_Rejuvenation") then
|
||||||
|
hasRejuv = true
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if hasRejuv then
|
||||||
|
local extHeal = HealBot_Spells[spell].HealsExt or 0
|
||||||
|
local bonus = extHeal * (presRank * 0.10)
|
||||||
|
HealBot_HealValue = HealBot_HealValue + math.floor(bonus)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
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;
|
||||||
|
end
|
||||||
|
HealBot_HealsIn[uname] = HealBot_HealsIn[uname] + HealBot_HealValue;
|
||||||
|
HealBot_RecalcHeals(HealBot_FindUnitID(uname));
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_StartCasting: Initiates spell cast and broadcasts incoming heal.
|
||||||
|
function HealBot_StartCasting(spell, target, ttype)
|
||||||
|
HealBot_CastFailed = false;
|
||||||
|
|
||||||
|
-- Extract base spell for internal tracking
|
||||||
|
local baseSpell = spell
|
||||||
|
local parenIndex = string.find(spell, " %(")
|
||||||
|
if parenIndex then
|
||||||
|
baseSpell = string.sub(spell, 1, parenIndex - 1)
|
||||||
|
else
|
||||||
|
parenIndex = string.find(spell, "%(")
|
||||||
|
if parenIndex then
|
||||||
|
baseSpell = string.sub(spell, 1, parenIndex - 1)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
HealBot_CastSpellByName(spell);
|
||||||
|
if ( SpellCanTargetUnit(target) ) then
|
||||||
|
SpellTargetUnit(target);
|
||||||
|
ttype = "fired";
|
||||||
|
elseif SpellIsTargeting() then
|
||||||
|
SpellTargetUnit(target);
|
||||||
|
SpellStopTargeting()
|
||||||
|
elseif ttype == "direct" then
|
||||||
|
if ( UnitIsUnit(target, "player") or CheckInteractDistance(target, 4) ) then
|
||||||
|
ttype = "fired";
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if ttype == "fired" and HealBot_Spells[baseSpell] then
|
||||||
|
if not HealBot_CastFailed then
|
||||||
|
HealBot_CastingSpell = baseSpell;
|
||||||
|
HealBot_CastingTarget = target;
|
||||||
|
HealBot_Process_HealValue(baseSpell, target);
|
||||||
|
HealBot_AnnounceCast(spell, target);
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return ttype == "fired"
|
||||||
|
end
|
||||||
|
|
||||||
|
-- HealBot_StopCasting: Internal utility: HealBot_StopCasting
|
||||||
function HealBot_StopCasting()
|
function HealBot_StopCasting()
|
||||||
|
HealBot_IsCasting = false;
|
||||||
if HealBot_CastingTarget then
|
if HealBot_CastingTarget then
|
||||||
if HealBot_HealsIn[UnitName(HealBot_CastingTarget)] then
|
if HealBot_HealValue > 0 then
|
||||||
if HealValue > 0 then
|
local uname = UnitName(HealBot_CastingTarget)
|
||||||
HealBot_SendAddonMessage(HEALBOT_ADDON_ID, ">> " .. UnitName(HealBot_CastingTarget) .. " <<=>> " .. 0 - HealValue .. " << ");
|
if uname then
|
||||||
HealValue = 0;
|
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;
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
HealBot_CastingSpell = nil;
|
HealBot_CastingSpell = nil;
|
||||||
@@ -151,6 +244,7 @@ function HealBot_StopCasting()
|
|||||||
bar.txt:SetTextColor(sr, sg, sb, sa);
|
bar.txt:SetTextColor(sr, sg, sb, sa);
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_UnitHealth: Internal utility: HealBot_UnitHealth
|
||||||
function HealBot_UnitHealth(unit)
|
function HealBot_UnitHealth(unit)
|
||||||
local Current, Desired = UnitHealth(unit), UnitHealthMax(unit);
|
local Current, Desired = UnitHealth(unit), UnitHealthMax(unit);
|
||||||
if unit == 'target' and Desired == 100 then
|
if unit == 'target' and Desired == 100 then
|
||||||
@@ -165,6 +259,7 @@ function HealBot_UnitHealth(unit)
|
|||||||
return Current, Desired;
|
return Current, Desired;
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_CheckCasting: Internal utility: HealBot_CheckCasting
|
||||||
function HealBot_CheckCasting(unit)
|
function HealBot_CheckCasting(unit)
|
||||||
if not HealBot_CastingSpell or HealBot_AlwaysHeal() then return nil end
|
if not HealBot_CastingSpell or HealBot_AlwaysHeal() then return nil end
|
||||||
if not HealBot_Spells[HealBot_CastingSpell] then return nil end
|
if not HealBot_Spells[HealBot_CastingSpell] then return nil end
|
||||||
@@ -176,7 +271,7 @@ function HealBot_CheckCasting(unit)
|
|||||||
local ag = HealBot_Config.babortcolg[HealBot_Config.Current_Skin] or 0.1;
|
local ag = HealBot_Config.babortcolg[HealBot_Config.Current_Skin] or 0.1;
|
||||||
local ab = HealBot_Config.babortcolb[HealBot_Config.Current_Skin] or 0.5;
|
local ab = HealBot_Config.babortcolb[HealBot_Config.Current_Skin] or 0.5;
|
||||||
local aa = HealBot_Config.babortcola[HealBot_Config.Current_Skin] or 1;
|
local aa = HealBot_Config.babortcola[HealBot_Config.Current_Skin] or 1;
|
||||||
bar.txt = getglobal(bar:GetName() .. "_text");
|
if not bar.txt then bar.txt = getglobal(bar:GetName() .. "_text") end
|
||||||
|
|
||||||
if HealBot_IsCasting == false and HealBot_AbortButton == 0 then
|
if HealBot_IsCasting == false and HealBot_AbortButton == 0 then
|
||||||
bar:SetStatusBarColor(ar, ag, ab, 0);
|
bar:SetStatusBarColor(ar, ag, ab, 0);
|
||||||
@@ -211,6 +306,7 @@ function HealBot_CheckCasting(unit)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_CastSpellOnFriend: Target-safe wrapper for casting spells on allies.
|
||||||
function HealBot_CastSpellOnFriend(spell, target)
|
function HealBot_CastSpellOnFriend(spell, target)
|
||||||
if (not spell or not target or not UnitName(target)) then
|
if (not spell or not target or not UnitName(target)) then
|
||||||
return;
|
return;
|
||||||
@@ -218,6 +314,22 @@ function HealBot_CastSpellOnFriend(spell, target)
|
|||||||
local targetEnemy = UnitCanAttack("player", "target");
|
local targetEnemy = UnitCanAttack("player", "target");
|
||||||
local oldTarget = UnitName("target");
|
local oldTarget = UnitName("target");
|
||||||
|
|
||||||
|
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".
|
||||||
|
HealBot_PendingShapeshiftCast = { spell = spell, target = target, targetEnemy = targetEnemy, oldTarget = oldTarget, fireTime = GetTime() + 0.05, expires = GetTime() + 2.0 }
|
||||||
|
return;
|
||||||
|
end
|
||||||
|
|
||||||
if oldTarget ~= UnitName(target) then
|
if oldTarget ~= UnitName(target) then
|
||||||
TargetUnit(target);
|
TargetUnit(target);
|
||||||
end
|
end
|
||||||
@@ -234,6 +346,7 @@ function HealBot_CastSpellOnFriend(spell, target)
|
|||||||
HealBot_TargetRestoreTimer = 0;
|
HealBot_TargetRestoreTimer = 0;
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_SetItemDefaults: Internal utility: HealBot_SetItemDefaults
|
||||||
function HealBot_SetItemDefaults(spell)
|
function HealBot_SetItemDefaults(spell)
|
||||||
if not HealBot_Spells[spell].Target then
|
if not HealBot_Spells[spell].Target then
|
||||||
HealBot_Spells[spell].Target = {"player", "party", "pet"};
|
HealBot_Spells[spell].Target = {"player", "party", "pet"};
|
||||||
@@ -266,10 +379,51 @@ function HealBot_SetItemDefaults(spell)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_SetSpellDefaults: Internal utility: HealBot_SetSpellDefaults
|
||||||
function HealBot_SetSpellDefaults(spell)
|
function HealBot_SetSpellDefaults(spell)
|
||||||
HealBot_Spells[spell].HealsDur = math.floor((HealBot_Spells[spell].HealsCast + HealBot_Spells[spell].HealsExt) + HealBot_Spells[spell].RealHealing);
|
local baseHeal = HealBot_Spells[spell].HealsCast or 0
|
||||||
|
local extHeal = HealBot_Spells[spell].HealsExt or 0
|
||||||
|
local realHeal = HealBot_Spells[spell].RealHealing or 0
|
||||||
|
|
||||||
|
local _, class = UnitClass("player")
|
||||||
|
if class == "DRUID" then
|
||||||
|
local giftRank = HealBot_GetTalentRank("Gift of Nature")
|
||||||
|
local genRank = HealBot_GetTalentRank("Genesis")
|
||||||
|
|
||||||
|
local mult = 1 + (giftRank * 0.02)
|
||||||
|
baseHeal = baseHeal * mult
|
||||||
|
extHeal = extHeal * mult
|
||||||
|
realHeal = realHeal * mult
|
||||||
|
|
||||||
|
if genRank > 0 then
|
||||||
|
extHeal = extHeal * (1 + (genRank * 0.05))
|
||||||
|
end
|
||||||
|
elseif class == "PRIEST" then
|
||||||
|
local spiritRank = HealBot_GetTalentRank("Spiritual Healing")
|
||||||
|
local mult = 1 + (spiritRank * 0.06)
|
||||||
|
baseHeal = baseHeal * mult
|
||||||
|
extHeal = extHeal * mult
|
||||||
|
realHeal = realHeal * mult
|
||||||
|
|
||||||
|
if HEALBOT_RENEW and string.find(spell, HEALBOT_RENEW) then
|
||||||
|
local renewRank = HealBot_GetTalentRank("Improved Renew")
|
||||||
|
extHeal = extHeal * (1 + (renewRank * 0.05))
|
||||||
|
end
|
||||||
|
elseif class == "PALADIN" then
|
||||||
|
local hlRank = HealBot_GetTalentRank("Healing Light")
|
||||||
|
if (HEALBOT_HOLY_LIGHT and string.find(spell, HEALBOT_HOLY_LIGHT)) or
|
||||||
|
(HEALBOT_FLASH_OF_LIGHT and string.find(spell, HEALBOT_FLASH_OF_LIGHT)) or
|
||||||
|
(HEALBOT_HOLY_SHOCK and string.find(spell, HEALBOT_HOLY_SHOCK)) then
|
||||||
|
local mult = 1 + (hlRank * 0.04)
|
||||||
|
baseHeal = baseHeal * mult
|
||||||
|
realHeal = realHeal * mult
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
HealBot_Spells[spell].HealsDur = math.floor(baseHeal + extHeal + realHeal);
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_AddHeal: Internal utility: HealBot_AddHeal
|
||||||
function HealBot_AddHeal(spell)
|
function HealBot_AddHeal(spell)
|
||||||
HealBot_SetSpellDefaults(spell);
|
HealBot_SetSpellDefaults(spell);
|
||||||
table.foreachi(HealBot_Spells[spell].Target, function (i, val)
|
table.foreachi(HealBot_Spells[spell].Target, function (i, val)
|
||||||
@@ -278,15 +432,16 @@ function HealBot_AddHeal(spell)
|
|||||||
HealBot_Spells[spell].BagSlot = HealBot_GetBagSlot(spell);
|
HealBot_Spells[spell].BagSlot = HealBot_GetBagSlot(spell);
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_FindHealSpells: Maps best heal ranks to UI buttons.
|
||||||
function HealBot_FindHealSpells()
|
function HealBot_FindHealSpells()
|
||||||
local id = 1;
|
local id = 1;
|
||||||
if InitSpells > 0 then NeedEquipUpdate = 1; return; end
|
if HealBot_SpellsInitFlag > 0 then NeedEquipUpdate = 1; return; end
|
||||||
|
|
||||||
HealBot_Heals = { player = {}, pet = {}, party = {} };
|
HealBot_Heals = { player = {}, pet = {}, party = {} };
|
||||||
|
|
||||||
table.foreach(HealBot_CurrentSpells, function (index, spell)
|
table.foreach(HealBot_CurrentSpells, function (index, spell)
|
||||||
if (HealBot_Spells[spell]) then
|
if (HealBot_Spells[spell]) then
|
||||||
if CalcEquipBonus then
|
if HealBot_CalcEquipBonus then
|
||||||
local healingbonus_penalty = 1;
|
local healingbonus_penalty = 1;
|
||||||
if HealBot_Spells[spell].Level < 20 then
|
if HealBot_Spells[spell].Level < 20 then
|
||||||
healingbonus_penalty = (1 - ((20 - HealBot_Spells[spell].Level) * 0.0375));
|
healingbonus_penalty = (1 - ((20 - HealBot_Spells[spell].Level) * 0.0375));
|
||||||
@@ -341,15 +496,17 @@ function HealBot_FindHealSpells()
|
|||||||
HealBot_Heals["raidpet" .. i] = HealBot_Heals.party;
|
HealBot_Heals["raidpet" .. i] = HealBot_Heals.party;
|
||||||
end
|
end
|
||||||
|
|
||||||
if CalcEquipBonus then
|
if HealBot_CalcEquipBonus then
|
||||||
HealBot_AddDebug("...Done Equip Bonus:" .. RealHealing);
|
HealBot_AddDebug("...Done Equip Bonus:" .. RealHealing);
|
||||||
end
|
end
|
||||||
CalcEquipBonus = false;
|
HealBot_CalcEquipBonus = false;
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_CanCastSpell: Internal utility: HealBot_CanCastSpell
|
||||||
function HealBot_CanCastSpell(spell, unit)
|
function HealBot_CanCastSpell(spell, unit)
|
||||||
local this = HealBot_Spells[spell];
|
local this = HealBot_Spells[spell];
|
||||||
if this.Mana > UnitMana("player") then return false end;
|
-- Removed manual mana check so WoW can properly handle 0-cost buffs (Clearcasting/Inner Focus)
|
||||||
|
-- and so tooltips can render in red instead of disappearing.
|
||||||
if this.BagSlot then
|
if this.BagSlot then
|
||||||
local bag, slot = HealBot_UnpackBagSlot(this.BagSlot);
|
local bag, slot = HealBot_UnpackBagSlot(this.BagSlot);
|
||||||
local start, duration, enable = GetContainerItemCooldown(bag, slot);
|
local start, duration, enable = GetContainerItemCooldown(bag, slot);
|
||||||
@@ -360,31 +517,59 @@ function HealBot_CanCastSpell(spell, unit)
|
|||||||
return true;
|
return true;
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_GetHealSpell: Resolves spell rank based on health deficit.
|
||||||
function HealBot_GetHealSpell(unit, pattern)
|
function HealBot_GetHealSpell(unit, pattern)
|
||||||
if (not UnitName(unit)) then return nil end;
|
if (not UnitName(unit)) then return nil end;
|
||||||
|
if not pattern then return nil end;
|
||||||
if UnitOnTaxi("player") 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 HealBot_Config.ProtectPvP == 1 and UnitIsPVP(unit) and not UnitIsPVP("player") then return nil end
|
||||||
if HealBot_UnitClass("player") == "DRUID" then
|
if HealBot_UnitClass("player") == "DRUID" then
|
||||||
if HealBot_GetShapeshiftForm() then return nil end;
|
if HealBot_GetShapeshiftForm() and HealBot_Config.AutoUnshift ~= 1 then return nil end;
|
||||||
end
|
|
||||||
local spell = HealBot_GetSpellName(HealBot_GetSpellId(pattern))
|
|
||||||
local range = 40;
|
|
||||||
if HealBot_Spells[spell] then
|
|
||||||
if not HealBot_CanCastSpell(spell, unit) then return nil end;
|
|
||||||
range = HealBot_Spells[spell].range;
|
|
||||||
end
|
end
|
||||||
if HealBot_Range_Check(unit, range) == 0 then return nil end;
|
|
||||||
return spell;
|
-- Handle Inline Scripts
|
||||||
|
if string.sub(pattern, 1, 1) == "/" then
|
||||||
|
return pattern;
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Handle Spells
|
||||||
|
if HealBot_Spells[pattern] or HealBot_GetSpellId(pattern) then
|
||||||
|
local spell = HealBot_GetSpellName(HealBot_GetSpellId(pattern)) or pattern
|
||||||
|
local range = 40;
|
||||||
|
if HealBot_Spells[spell] then
|
||||||
|
if not HealBot_CanCastSpell(spell, unit) then return nil end;
|
||||||
|
range = HealBot_Spells[spell].range or 40;
|
||||||
|
end
|
||||||
|
if HealBot_Range_Check(unit, range) == 0 then return nil end;
|
||||||
|
return spell;
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Handle Named Macros
|
||||||
|
if GetMacroIndexByName(pattern) ~= 0 then
|
||||||
|
return pattern;
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Handle Items
|
||||||
|
local bag, slot = HealBot_FindBagSlot(pattern)
|
||||||
|
if bag then
|
||||||
|
-- optionally check item range, but skipping for now as it's complex in vanilla
|
||||||
|
return pattern;
|
||||||
|
end
|
||||||
|
|
||||||
|
return nil;
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_HealUnit: Main entry point for healing a unit.
|
||||||
function HealBot_HealUnit(unit, pattern)
|
function HealBot_HealUnit(unit, pattern)
|
||||||
HealBot_CastSpellOnFriend(HealBot_GetHealSpell(unit, pattern), unit);
|
HealBot_CastSpellOnFriend(HealBot_GetHealSpell(unit, pattern), unit);
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_RecalcHeals: Flags unit for visual refresh.
|
||||||
function HealBot_RecalcHeals(unit)
|
function HealBot_RecalcHeals(unit)
|
||||||
HealBot_Action_Refresh(unit);
|
HealBot_Action_Refresh(unit);
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_RecalcParty: Triggers group layout rebuild.
|
||||||
function HealBot_RecalcParty()
|
function HealBot_RecalcParty()
|
||||||
HealBot_Action_PartyChanged();
|
HealBot_Action_PartyChanged();
|
||||||
if HealBot_Action_HealButtons then
|
if HealBot_Action_HealButtons then
|
||||||
@@ -397,25 +582,56 @@ function HealBot_RecalcParty()
|
|||||||
HealBot_Action_RefreshButtons();
|
HealBot_Action_RefreshButtons();
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_RecalcSpells: Recalculates spells and updates layout.
|
||||||
function HealBot_RecalcSpells()
|
function HealBot_RecalcSpells()
|
||||||
HealBot_FindHealSpells();
|
HealBot_FindHealSpells();
|
||||||
HealBot_RecalcParty();
|
HealBot_RecalcParty();
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_GetTalentRank: Internal utility: HealBot_GetTalentRank
|
||||||
|
function HealBot_GetTalentRank(talentName)
|
||||||
|
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;
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return 0;
|
||||||
|
end
|
||||||
|
|
||||||
|
-- HealBot_SpiBonus: Internal utility: HealBot_SpiBonus
|
||||||
function HealBot_SpiBonus(spell)
|
function HealBot_SpiBonus(spell)
|
||||||
local heals_modifer = 0;
|
local heals_modifer = 0;
|
||||||
local base, stat, posBuff, negBuff = UnitStat("player", 5);
|
local base, stat, posBuff, negBuff = UnitStat("player", 5);
|
||||||
nameTalent, icon, tier, column, currRank, maxRank = GetTalentInfo(2, 14); -- Spiritual guidance
|
local currRank = HealBot_GetTalentRank("Spiritual Guidance")
|
||||||
spiGuideBonus = stat * 0.05;
|
if currRank > 0 then
|
||||||
heals_modifer = heals_modifer + (currRank * spiGuideBonus);
|
local spiGuideBonus = stat * 0.05;
|
||||||
|
heals_modifer = heals_modifer + (currRank * spiGuideBonus);
|
||||||
|
end
|
||||||
return heals_modifer;
|
return heals_modifer;
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_GetBonus: Internal utility: HealBot_GetBonus
|
||||||
function HealBot_GetBonus()
|
function HealBot_GetBonus()
|
||||||
local HealBonus = HealBot_BonusScanner:GetBonus();
|
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
|
||||||
|
local base, effectiveArmor = UnitArmor("player")
|
||||||
|
HealBonus = HealBonus + (effectiveArmor * (ironRank * 0.01))
|
||||||
|
end
|
||||||
|
end
|
||||||
return HealBonus;
|
return HealBonus;
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_InitSpells: Scans spellbook to find available heals.
|
||||||
function HealBot_InitSpells()
|
function HealBot_InitSpells()
|
||||||
local id = 1
|
local id = 1
|
||||||
local cnt = 0;
|
local cnt = 0;
|
||||||
@@ -434,12 +650,11 @@ function HealBot_InitSpells()
|
|||||||
end
|
end
|
||||||
id = id + 1;
|
id = id + 1;
|
||||||
end
|
end
|
||||||
if class == "PRIEST" or class == "DRUID" or class == "PALADIN" or class == "SHAMAN" then
|
|
||||||
HealBot_AddChat("Initiated HealBot_CurrentSpells with " .. cnt .. " Spells");
|
|
||||||
end
|
|
||||||
return cnt;
|
return cnt;
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_InitGetSpellData: Extracts mana and cast time from spell tooltips.
|
||||||
function HealBot_InitGetSpellData(spell, id, class)
|
function HealBot_InitGetSpellData(spell, id, class)
|
||||||
local i, _mana, _cast, _HealsMin, _HealsMax, _HealsExt, _duration, _range, _shield, _channel;
|
local i, _mana, _cast, _HealsMin, _HealsMax, _HealsExt, _duration, _range, _shield, _channel;
|
||||||
local tooltip = getglobal("HealBot_ScanTooltip");
|
local tooltip = getglobal("HealBot_ScanTooltip");
|
||||||
@@ -451,101 +666,101 @@ function HealBot_InitGetSpellData(spell, id, class)
|
|||||||
|
|
||||||
HealBot_ScanTooltip:SetOwner(HealBot_ScanTooltip, "ANCHOR_NONE")
|
HealBot_ScanTooltip:SetOwner(HealBot_ScanTooltip, "ANCHOR_NONE")
|
||||||
HealBot_ScanTooltip:SetSpell(id, BOOKTYPE_SPELL);
|
HealBot_ScanTooltip:SetSpell(id, BOOKTYPE_SPELL);
|
||||||
tmpText = getglobal("HealBot_ScanTooltipTextLeft2");
|
_mana = 0;
|
||||||
if (tmpText:GetText()) then
|
_range = 40;
|
||||||
line = tmpText:GetText();
|
_cast = 0;
|
||||||
tmpTest, tmpTest, _mana = string.find(line, HB_TOOLTIP_MANA);
|
line = nil;
|
||||||
else
|
|
||||||
HealBot_Report_Error("================================");
|
for lineNum = 2, 6 do
|
||||||
HealBot_Report_Error("ERROR: HealBot_ScanTooltip is lost");
|
local lText = getglobal("HealBot_ScanTooltipTextLeft"..lineNum);
|
||||||
HealBot_Report_Error("ERROR: If BonusScanner is used, try disabling BonusScanner");
|
if lText and lText:IsVisible() and lText:GetText() then
|
||||||
|
local txt = lText:GetText();
|
||||||
|
local t1, t2, match;
|
||||||
|
t1, t2, match = string.find(txt, HEALBOT_TOOLTIP_MANA);
|
||||||
|
if match then _mana = match; end
|
||||||
|
|
||||||
|
if txt == HEALBOT_TOOLTIP_INSTANT_CAST or txt == "Instant" then
|
||||||
|
_cast = 0;
|
||||||
|
elseif txt == HEALBOT_TOOLTIP_CHANNELED then
|
||||||
|
_cast = 0;
|
||||||
|
else
|
||||||
|
t1, t2, match = string.find(txt, HEALBOT_TOOLTIP_CAST_TIME);
|
||||||
|
if match then _cast = match; end
|
||||||
|
end
|
||||||
|
|
||||||
|
t1, t2, match = string.find(txt, HEALBOT_TOOLTIP_RANGE);
|
||||||
|
if match then _range = match; end
|
||||||
|
|
||||||
|
if not string.find(txt, HEALBOT_TOOLTIP_MANA) and txt ~= HEALBOT_TOOLTIP_INSTANT_CAST and txt ~= "Instant" and txt ~= HEALBOT_TOOLTIP_CHANNELED and not string.find(txt, HEALBOT_TOOLTIP_CAST_TIME) and not string.find(txt, HEALBOT_TOOLTIP_RANGE) then
|
||||||
|
if not line then line = txt; end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local rText = getglobal("HealBot_ScanTooltipTextRight"..lineNum);
|
||||||
|
if rText and rText:IsVisible() and rText:GetText() then
|
||||||
|
local txt = rText:GetText();
|
||||||
|
local t1, t2, match;
|
||||||
|
t1, t2, match = string.find(txt, HEALBOT_TOOLTIP_RANGE);
|
||||||
|
if match then _range = match; end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
tmpText = getglobal("HealBot_ScanTooltipTextRight2");
|
|
||||||
if (tmpText:GetText()) then
|
|
||||||
line = tmpText:GetText();
|
|
||||||
tmpTest, tmpTest, _range = string.find(line, HB_TOOLTIP_RANGE);
|
|
||||||
else
|
|
||||||
HealBot_Report_Error("================================");
|
|
||||||
HealBot_Report_Error("ERROR: HealBot_ScanTooltip is lost");
|
|
||||||
HealBot_Report_Error("ERROR: If BonusScanner is used, try disabling BonusScanner");
|
|
||||||
end
|
|
||||||
|
|
||||||
tmpText = getglobal("HealBot_ScanTooltipTextLeft3");
|
|
||||||
_cast = nil;
|
|
||||||
if (tmpText:GetText()) then
|
|
||||||
line = tmpText:GetText();
|
|
||||||
if (line == HB_TOOLTIP_INSTANT_CAST) then
|
|
||||||
_cast = 0;
|
|
||||||
elseif line == HB_TOOLTIP_CHANNELED then
|
|
||||||
_cast = 0;
|
|
||||||
elseif (tmpText) then
|
|
||||||
tmpTest, tmpTest, _cast = string.find(line, HB_TOOLTIP_CAST_TIME);
|
|
||||||
end
|
|
||||||
else
|
|
||||||
HealBot_Report_Error("================================");
|
|
||||||
HealBot_Report_Error("ERROR: HealBot_ScanTooltip is lost");
|
|
||||||
HealBot_Report_Error("ERROR: If BonusScanner is used, try disabling BonusScanner");
|
|
||||||
end
|
|
||||||
|
|
||||||
tmpText = getglobal("HealBot_ScanTooltipTextLeft4");
|
|
||||||
tmpTest = nil;
|
tmpTest = nil;
|
||||||
if (tmpText:GetText()) then
|
if line then
|
||||||
line = tmpText:GetText();
|
|
||||||
if class == "PRIEST" then
|
if class == "PRIEST" then
|
||||||
if string.sub(spell, 1, 14) == string.sub(HEALBOT_POWER_WORD_SHIELD, 1, 14) then
|
if string.sub(spell, 1, 14) == string.sub(HEALBOT_POWER_WORD_SHIELD, 1, 14) then
|
||||||
tmpTest, tmpTest, _HealsMin, _shield = string.find(line, HB_SPELL_PATTERN_SHIELD);
|
tmpTest, tmpTest, _HealsMin, _shield = string.find(line, HEALBOT_SPELL_PATTERN_SHIELD);
|
||||||
_HealsExt = 0;
|
_HealsExt = 0;
|
||||||
_HealsMax = _HealsMin;
|
_HealsMax = _HealsMin;
|
||||||
elseif string.sub(spell, 1, 4) == string.sub(HEALBOT_RENEW, 1, 4) then
|
elseif string.sub(spell, 1, 4) == string.sub(HEALBOT_RENEW, 1, 4) then
|
||||||
tmpTest, tmpTest, _HealsExt, tmpTest, _duration = string.find(line, HB_SPELL_PATTERN_RENEW);
|
tmpTest, tmpTest, _HealsExt, tmpTest, _duration = string.find(line, HEALBOT_SPELL_PATTERN_RENEW);
|
||||||
_HealsMin = 0;
|
_HealsMin = 0;
|
||||||
_HealsMax = 0;
|
_HealsMax = 0;
|
||||||
if (_HealsExt == nil) then
|
if (_HealsExt == nil) then
|
||||||
tmpTest, tmpTest, _HealsExt, _duration = string.find(line, HB_SPELL_PATTERN_RENEW1);
|
tmpTest, tmpTest, _HealsExt, _duration = string.find(line, HEALBOT_SPELL_PATTERN_RENEW1);
|
||||||
end
|
end
|
||||||
if (_HealsExt == nil) then
|
if (_HealsExt == nil) then
|
||||||
tmpTest, tmpTest, _duration, _HealsExt = string.find(line, HB_SPELL_PATTERN_RENEW2);
|
tmpTest, tmpTest, _duration, _HealsExt = string.find(line, HEALBOT_SPELL_PATTERN_RENEW2);
|
||||||
end
|
end
|
||||||
if (_HealsExt == nil) then
|
if (_HealsExt == nil) then
|
||||||
tmpTest, tmpTest, _duration, _HealsExt = string.find(line, HB_SPELL_PATTERN_RENEW3);
|
tmpTest, tmpTest, _duration, _HealsExt = string.find(line, HEALBOT_SPELL_PATTERN_RENEW3);
|
||||||
end
|
end
|
||||||
elseif string.sub(spell, 1, 9) == string.sub(HEALBOT_LESSER_HEAL, 1, 9) then
|
elseif string.sub(spell, 1, 9) == string.sub(HEALBOT_LESSER_HEAL, 1, 9) then
|
||||||
tmpTest, _HealsMin, _HealsMax = HealBot_Generic_Patten(line, HB_SPELL_PATTERN_LESSER_HEAL);
|
tmpTest, _HealsMin, _HealsMax = HealBot_Generic_Patten(line, HEALBOT_SPELL_PATTERN_LESSER_HEAL);
|
||||||
elseif string.sub(spell, 1, 9) == string.sub(HEALBOT_GREATER_HEAL, 1, 9) then
|
elseif string.sub(spell, 1, 9) == string.sub(HEALBOT_GREATER_HEAL, 1, 9) then
|
||||||
tmpTest, _HealsMin, _HealsMax = HealBot_Generic_Patten(line, HB_SPELL_PATTERN_GREATER_HEAL);
|
tmpTest, _HealsMin, _HealsMax = HealBot_Generic_Patten(line, HEALBOT_SPELL_PATTERN_GREATER_HEAL);
|
||||||
elseif string.sub(spell, 1, 9) == string.sub(HEALBOT_FLASH_HEAL, 1, 9) then
|
elseif string.sub(spell, 1, 9) == string.sub(HEALBOT_FLASH_HEAL, 1, 9) then
|
||||||
tmpTest, _HealsMin, _HealsMax = HealBot_Generic_Patten(line, HB_SPELL_PATTERN_FLASH_HEAL);
|
tmpTest, _HealsMin, _HealsMax = HealBot_Generic_Patten(line, HEALBOT_SPELL_PATTERN_FLASH_HEAL);
|
||||||
elseif string.sub(spell, 1, 4) == string.sub(HEALBOT_HEAL, 1, 4) then
|
elseif string.sub(spell, 1, 4) == string.sub(HEALBOT_HEAL, 1, 4) then
|
||||||
tmpTest, _HealsMin, _HealsMax = HealBot_Generic_Patten(line, HB_SPELL_PATTERN_HEAL);
|
tmpTest, _HealsMin, _HealsMax = HealBot_Generic_Patten(line, HEALBOT_SPELL_PATTERN_HEAL);
|
||||||
end
|
end
|
||||||
elseif class == "DRUID" then
|
elseif class == "DRUID" then
|
||||||
if string.sub(spell, 1, 6) == string.sub(HEALBOT_REGROWTH, 1, 6) then
|
if string.sub(spell, 1, 6) == string.sub(HEALBOT_REGROWTH, 1, 6) then
|
||||||
tmpTest, tmpTest, _HealsMin, _HealsMax, _HealsExt = string.find(line, HB_SPELL_PATTERN_REGROWTH);
|
tmpTest, tmpTest, _HealsMin, _HealsMax, _HealsExt = string.find(line, HEALBOT_SPELL_PATTERN_REGROWTH);
|
||||||
if (tmpTest == nil) then
|
if (tmpTest == nil) then
|
||||||
tmpTest, tmpTest, _HealsMin, _HealsMax, tmpTest, _HealsExt = string.find(line, HB_SPELL_PATTERN_REGROWTH1);
|
tmpTest, tmpTest, _HealsMin, _HealsMax, tmpTest, _HealsExt = string.find(line, HEALBOT_SPELL_PATTERN_REGROWTH1);
|
||||||
end
|
end
|
||||||
elseif string.sub(spell, 1, 9) == string.sub(HEALBOT_REJUVENATION, 1, 9) then
|
elseif string.sub(spell, 1, 9) == string.sub(HEALBOT_REJUVENATION, 1, 9) then
|
||||||
tmpTest, tmpTest, _HealsExt, _duration = string.find(line, HB_SPELL_PATTERN_REJUVENATION);
|
tmpTest, tmpTest, _HealsExt, _duration = string.find(line, HEALBOT_SPELL_PATTERN_REJUVENATION);
|
||||||
_HealsMin = 0;
|
_HealsMin = 0;
|
||||||
_HealsMax = 0;
|
_HealsMax = 0;
|
||||||
if (_HealsExt == nil) then
|
if (_HealsExt == nil) then
|
||||||
tmpTest, tmpTest, _HealsExt, tmpTest, _duration = string.find(line, HB_SPELL_PATTERN_REJUVENATION1);
|
tmpTest, tmpTest, _HealsExt, tmpTest, _duration = string.find(line, HEALBOT_SPELL_PATTERN_REJUVENATION1);
|
||||||
end
|
end
|
||||||
elseif string.sub(spell, 1, 7) == string.sub(HEALBOT_HEALING_TOUCH, 1, 7) then
|
elseif string.sub(spell, 1, 7) == string.sub(HEALBOT_HEALING_TOUCH, 1, 7) then
|
||||||
tmpTest, _HealsMin, _HealsMax = HealBot_Generic_Patten(line, HB_SPELL_PATTERN_HEALING_TOUCH);
|
tmpTest, _HealsMin, _HealsMax = HealBot_Generic_Patten(line, HEALBOT_SPELL_PATTERN_HEALING_TOUCH);
|
||||||
end
|
end
|
||||||
elseif class == "PALADIN" then
|
elseif class == "PALADIN" then
|
||||||
if string.sub(spell, 1, 9) == string.sub(HEALBOT_HOLY_LIGHT, 1, 9) then
|
if string.sub(spell, 1, 9) == string.sub(HEALBOT_HOLY_LIGHT, 1, 9) then
|
||||||
tmpTest, _HealsMin, _HealsMax = HealBot_Generic_Patten(line, HB_SPELL_PATTERN_HOLY_LIGHT);
|
tmpTest, _HealsMin, _HealsMax = HealBot_Generic_Patten(line, HEALBOT_SPELL_PATTERN_HOLY_LIGHT);
|
||||||
elseif string.sub(spell, 1, 9) == string.sub(HEALBOT_FLASH_OF_LIGHT, 1, 9) then
|
elseif string.sub(spell, 1, 9) == string.sub(HEALBOT_FLASH_OF_LIGHT, 1, 9) then
|
||||||
tmpTest, _HealsMin, _HealsMax = HealBot_Generic_Patten(line, HB_SPELL_PATTERN_FLASH_OF_LIGHT);
|
tmpTest, _HealsMin, _HealsMax = HealBot_Generic_Patten(line, HEALBOT_SPELL_PATTERN_FLASH_OF_LIGHT);
|
||||||
end
|
end
|
||||||
elseif class == "SHAMAN" then
|
elseif class == "SHAMAN" then
|
||||||
if string.sub(spell, 1, 9) == string.sub(HEALBOT_HEALING_WAVE, 1, 9) then
|
if string.sub(spell, 1, 9) == string.sub(HEALBOT_HEALING_WAVE, 1, 9) then
|
||||||
tmpTest, _HealsMin, _HealsMax = HealBot_Generic_Patten(line, HB_SPELL_PATTERN_HEALING_WAVE);
|
tmpTest, _HealsMin, _HealsMax = HealBot_Generic_Patten(line, HEALBOT_SPELL_PATTERN_HEALING_WAVE);
|
||||||
elseif string.sub(spell, 1, 9) == string.sub(HEALBOT_LESSER_HEALING_WAVE, 1, 9) then
|
elseif string.sub(spell, 1, 9) == string.sub(HEALBOT_LESSER_HEALING_WAVE, 1, 9) then
|
||||||
tmpTest, _HealsMin, _HealsMax = HealBot_Generic_Patten(line, HB_SPELL_PATTERN_LESSER_HEALING_WAVE);
|
tmpTest, _HealsMin, _HealsMax = HealBot_Generic_Patten(line, HEALBOT_SPELL_PATTERN_LESSER_HEALING_WAVE);
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
@@ -561,7 +776,7 @@ function HealBot_InitGetSpellData(spell, id, class)
|
|||||||
if HealBot_ScanTooltipTextLeft2:GetText() then
|
if HealBot_ScanTooltipTextLeft2:GetText() then
|
||||||
HealBot_Report_Error("ERROR: Tooltip = >> " .. HealBot_ScanTooltipTextLeft2:GetText() .. " <<");
|
HealBot_Report_Error("ERROR: Tooltip = >> " .. HealBot_ScanTooltipTextLeft2:GetText() .. " <<");
|
||||||
end
|
end
|
||||||
HealBot_Report_Error("ERROR: Patten = >> " .. HB_TOOLTIP_MANA .. " <<");
|
HealBot_Report_Error("ERROR: Patten = >> " .. HEALBOT_TOOLTIP_MANA .. " <<");
|
||||||
end
|
end
|
||||||
if (_range == nil) then
|
if (_range == nil) then
|
||||||
HealBot_Report_Error("================================");
|
HealBot_Report_Error("================================");
|
||||||
@@ -570,7 +785,7 @@ function HealBot_InitGetSpellData(spell, id, class)
|
|||||||
if HealBot_ScanTooltipTextRight2:GetText() then
|
if HealBot_ScanTooltipTextRight2:GetText() then
|
||||||
HealBot_Report_Error("ERROR: Tooltip = >> " .. HealBot_ScanTooltipTextRight2:GetText() .. " <<");
|
HealBot_Report_Error("ERROR: Tooltip = >> " .. HealBot_ScanTooltipTextRight2:GetText() .. " <<");
|
||||||
end
|
end
|
||||||
HealBot_Report_Error("ERROR: Patten = >> " .. HB_TOOLTIP_RANGE .. " <<");
|
HealBot_Report_Error("ERROR: Patten = >> " .. HEALBOT_TOOLTIP_RANGE .. " <<");
|
||||||
end
|
end
|
||||||
if (_cast == nil) then
|
if (_cast == nil) then
|
||||||
HealBot_Report_Error("================================");
|
HealBot_Report_Error("================================");
|
||||||
@@ -579,7 +794,7 @@ function HealBot_InitGetSpellData(spell, id, class)
|
|||||||
if HealBot_ScanTooltipTextLeft3:GetText() then
|
if HealBot_ScanTooltipTextLeft3:GetText() then
|
||||||
HealBot_Report_Error("ERROR: Tooltip = >> " .. HealBot_ScanTooltipTextLeft3:GetText() .. " <<");
|
HealBot_Report_Error("ERROR: Tooltip = >> " .. HealBot_ScanTooltipTextLeft3:GetText() .. " <<");
|
||||||
end
|
end
|
||||||
HealBot_Report_Error("ERROR: Patten = >> " .. HB_TOOLTIP_CAST_TIME .. " <<");
|
HealBot_Report_Error("ERROR: Patten = >> " .. HEALBOT_TOOLTIP_CAST_TIME .. " <<");
|
||||||
end
|
end
|
||||||
if (tmpTest == nil) then
|
if (tmpTest == nil) then
|
||||||
HealBot_Report_Error("================================");
|
HealBot_Report_Error("================================");
|
||||||
@@ -629,6 +844,7 @@ function HealBot_InitGetSpellData(spell, id, class)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_Generic_Patten: Internal utility: HealBot_Generic_Patten
|
||||||
function HealBot_Generic_Patten(matchStr, matchPattern)
|
function HealBot_Generic_Patten(matchStr, matchPattern)
|
||||||
local tmpTest, _HealsMin, _HealsMax, _HealsExt, _duration
|
local tmpTest, _HealsMin, _HealsMax, _HealsExt, _duration
|
||||||
tmpTest, tmpTest, _HealsMin, _HealsMax = string.find(matchStr, matchPattern);
|
tmpTest, tmpTest, _HealsMin, _HealsMax = string.find(matchStr, matchPattern);
|
||||||
@@ -640,3 +856,23 @@ function HealBot_Generic_Patten(matchStr, matchPattern)
|
|||||||
end
|
end
|
||||||
return tmpTest, _HealsMin, _HealsMax;
|
return tmpTest, _HealsMin, _HealsMax;
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_UpdateShapeshiftForm: Called on UPDATE_SHAPESHIFT_FORM
|
||||||
|
function HealBot_UpdateShapeshiftForm()
|
||||||
|
-- Deprecated
|
||||||
|
end
|
||||||
|
|
||||||
|
-- HealBot_GetShapeshiftForm: Detects active druid form to prevent invalid casts.
|
||||||
|
function HealBot_GetShapeshiftForm()
|
||||||
|
local forms = GetNumShapeshiftForms();
|
||||||
|
if forms then
|
||||||
|
local i;
|
||||||
|
for i=1,forms do
|
||||||
|
local icon,name,active = GetShapeshiftFormInfo(i);
|
||||||
|
if active then
|
||||||
|
return i;
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return nil;
|
||||||
|
end
|
||||||
|
|||||||
+64
-24
@@ -2,6 +2,20 @@ HealBot_ConfigDefaults = {
|
|||||||
ShowManaBars=0,
|
ShowManaBars=0,
|
||||||
ManaBarsHealersOnly=0,
|
ManaBarsHealersOnly=0,
|
||||||
Version = HEALBOT_VERSION,
|
Version = HEALBOT_VERSION,
|
||||||
|
AutoSwap_Enabled = 0,
|
||||||
|
AutoSwap_Profiles = {
|
||||||
|
[1] = HEALBOT_SKINS_STD,
|
||||||
|
[2] = HEALBOT_SKINS_STD,
|
||||||
|
[3] = HEALBOT_SKINS_STD,
|
||||||
|
[4] = HEALBOT_SKINS_STD,
|
||||||
|
[5] = HEALBOT_SKINS_STD,
|
||||||
|
},
|
||||||
|
bmaxrows = {
|
||||||
|
[HEALBOT_SKINS_STD] = 0,
|
||||||
|
},
|
||||||
|
GridOrientation = {
|
||||||
|
[HEALBOT_SKINS_STD] = 1,
|
||||||
|
},
|
||||||
AlertLevel = 0.95,
|
AlertLevel = 0.95,
|
||||||
AutoClose = 1,
|
AutoClose = 1,
|
||||||
PanelSounds = 1,
|
PanelSounds = 1,
|
||||||
@@ -13,7 +27,9 @@ HealBot_ConfigDefaults = {
|
|||||||
ActionVisible = 1,
|
ActionVisible = 1,
|
||||||
HideSolo = 0,
|
HideSolo = 0,
|
||||||
OverHeal = 0.25,
|
OverHeal = 0.25,
|
||||||
CastNotify = 1,
|
UpdateFreq = 0.5,
|
||||||
|
AutoUnshift = 1,
|
||||||
|
Integrations_Nampower_Active = true,
|
||||||
ChatMessages = {
|
ChatMessages = {
|
||||||
[1] = { Spell = "None", Message = "Casting #Spell# on #Target#", Channel = "None" },
|
[1] = { Spell = "None", Message = "Casting #Spell# on #Target#", Channel = "None" },
|
||||||
[2] = { Spell = "None", Message = "Casting #Spell# on #Target#", Channel = "None" },
|
[2] = { Spell = "None", Message = "Casting #Spell# on #Target#", Channel = "None" },
|
||||||
@@ -24,6 +40,7 @@ HealBot_ConfigDefaults = {
|
|||||||
HideOptions = 0,
|
HideOptions = 0,
|
||||||
HideAbort = 1,
|
HideAbort = 1,
|
||||||
ShowTooltip = 1,
|
ShowTooltip = 1,
|
||||||
|
ShowHealthText = 0,
|
||||||
GrowUpwards = 0,
|
GrowUpwards = 0,
|
||||||
ProtectPvP = 1,
|
ProtectPvP = 1,
|
||||||
QualityRange = 0,
|
QualityRange = 0,
|
||||||
@@ -33,14 +50,14 @@ HealBot_ConfigDefaults = {
|
|||||||
ShowDebuffWarning = 0,
|
ShowDebuffWarning = 0,
|
||||||
SoundDebuffWarning = 0,
|
SoundDebuffWarning = 0,
|
||||||
SoundDebuffPlay = 1,
|
SoundDebuffPlay = 1,
|
||||||
CDCMonitor = 1,
|
CDCMonitor = 2,
|
||||||
PanelAnchorX = -1,
|
PanelAnchorX = -1,
|
||||||
PanelAnchorY = -1,
|
PanelAnchorY = -1,
|
||||||
CDCBarColour = {
|
CDCBarColour = {
|
||||||
[HEALBOT_DISEASE_en] = { R = 0.1, G = 0.05, B = 0.2, },
|
[HEALBOT_DISEASE_en] = { R = 0.55, G = 0.19, B = 0.70, }, -- Bright Purple
|
||||||
[HEALBOT_MAGIC_en] = { R = 0.05, G = 0.05, B = 0.1, },
|
[HEALBOT_MAGIC_en] = { R = 0.01, G = 0.30, B = 0.90, }, -- Bright Blue
|
||||||
[HEALBOT_POISON_en] = { R = 0.05, G = 0.2, B = 0.1, },
|
[HEALBOT_POISON_en] = { R = 0.12, G = 0.46, B = 0.24, }, -- Bright Green
|
||||||
[HEALBOT_CURSE_en] = { R = 0.2, G = 0.05, B = 0.05, },
|
[HEALBOT_CURSE_en] = { R = 0.83, G = 0.01, B = 0.01, }, -- Bright Red
|
||||||
},
|
},
|
||||||
|
|
||||||
Debuff_Left = {
|
Debuff_Left = {
|
||||||
@@ -171,13 +188,25 @@ HealBot_ConfigDefaults = {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
EnableHealthy = 0,
|
EnableHealthy = 0,
|
||||||
|
ShowNonManaBars = 0,
|
||||||
ActionVisible = 0,
|
ActionVisible = 0,
|
||||||
|
ActionMouseover = 1,
|
||||||
CDCLeftText = {[HEALBOT_PRIEST]="None", [HEALBOT_SHAMAN]="None", [HEALBOT_DRUID]="None", [HEALBOT_PALADIN]="None",},
|
CDCLeftText = {[HEALBOT_PRIEST]="None", [HEALBOT_SHAMAN]="None", [HEALBOT_DRUID]="None", [HEALBOT_PALADIN]="None",},
|
||||||
CDCRightText = {[HEALBOT_PRIEST]="None", [HEALBOT_SHAMAN]="None", [HEALBOT_DRUID]="None", [HEALBOT_PALADIN]="None",},
|
CDCRightText = {[HEALBOT_PRIEST]="None", [HEALBOT_SHAMAN]="None", [HEALBOT_DRUID]="None", [HEALBOT_PALADIN]="None",},
|
||||||
Current_Skin = "Modern Flat",
|
Current_Skin = "Modern Flat",
|
||||||
Skin_ID = 1,
|
Skin_ID = 1,
|
||||||
Skins = {"Modern Flat", HEALBOT_SKINS_STD, "HealBot Party", "HealBot Raid", "Alteric Valley"},
|
Skins = {"Modern Flat", HEALBOT_SKINS_STD, "HealBot Party", "HealBot Raid", "Alteric Valley"},
|
||||||
|
AutoSwap_Enabled = 0,
|
||||||
|
AutoSwap_Profiles = {
|
||||||
|
[1] = "Modern Flat", -- Solo
|
||||||
|
[2] = "HealBot Party", -- Party (2-5)
|
||||||
|
[3] = "HealBot Raid", -- Raid 15 (6-15)
|
||||||
|
[4] = "HealBot Raid", -- Raid 25 (16-25)
|
||||||
|
[5] = "HealBot Raid", -- Raid 40 (26-40)
|
||||||
|
},
|
||||||
numcols = {[HEALBOT_SKINS_STD] = 1, ["HealBot Party"] = 1, ["HealBot Raid"] = 4, ["Alteric Valley"] = 2, ["Modern Flat"] = 1},
|
numcols = {[HEALBOT_SKINS_STD] = 1, ["HealBot Party"] = 1, ["HealBot Raid"] = 4, ["Alteric Valley"] = 2, ["Modern Flat"] = 1},
|
||||||
|
bmaxrows = {[HEALBOT_SKINS_STD] = 0, ["HealBot Party"] = 0, ["HealBot Raid"] = 0, ["Alteric Valley"] = 0, ["Modern Flat"] = 0},
|
||||||
|
GridOrientation = {[HEALBOT_SKINS_STD] = 1, ["HealBot Party"] = 1, ["HealBot Raid"] = 1, ["Alteric Valley"] = 1, ["Modern Flat"] = 1},
|
||||||
btexture = {[HEALBOT_SKINS_STD] = 8,["HealBot Party"] = 6, ["HealBot Raid"] = 7, ["Alteric Valley"] = 9, ["Modern Flat"] = 10},
|
btexture = {[HEALBOT_SKINS_STD] = 8,["HealBot Party"] = 6, ["HealBot Raid"] = 7, ["Alteric Valley"] = 9, ["Modern Flat"] = 10},
|
||||||
bcspace = {[HEALBOT_SKINS_STD] = 4, ["HealBot Party"] = 4, ["HealBot Raid"] = 2, ["Alteric Valley"] = 2, ["Modern Flat"] = 4},
|
bcspace = {[HEALBOT_SKINS_STD] = 4, ["HealBot Party"] = 4, ["HealBot Raid"] = 2, ["Alteric Valley"] = 2, ["Modern Flat"] = 4},
|
||||||
brspace = {[HEALBOT_SKINS_STD] = 1, ["HealBot Party"] = 2, ["HealBot Raid"] = 2, ["Alteric Valley"] = 1, ["Modern Flat"] = 2},
|
brspace = {[HEALBOT_SKINS_STD] = 1, ["HealBot Party"] = 2, ["HealBot Raid"] = 2, ["Alteric Valley"] = 1, ["Modern Flat"] = 2},
|
||||||
@@ -218,6 +247,7 @@ HealBot_ConfigDefaults = {
|
|||||||
bpadding = {[HEALBOT_SKINS_STD] = 10, ["HealBot Party"] = 10, ["HealBot Raid"] = 10, ["Alteric Valley"] = 10, ["Modern Flat"] = 10},
|
bpadding = {[HEALBOT_SKINS_STD] = 10, ["HealBot Party"] = 10, ["HealBot Raid"] = 10, ["Alteric Valley"] = 10, ["Modern Flat"] = 10},
|
||||||
bboffset = {[HEALBOT_SKINS_STD] = 16, ["HealBot Party"] = 16, ["HealBot Raid"] = 16, ["Alteric Valley"] = 16, ["Modern Flat"] = 3},
|
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},
|
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},
|
||||||
ShowTooltip = 1,
|
ShowTooltip = 1,
|
||||||
ShowManaBars = 0,
|
ShowManaBars = 0,
|
||||||
ManaBarsHealersOnly = 0,
|
ManaBarsHealersOnly = 0,
|
||||||
@@ -226,15 +256,14 @@ HealBot_ConfigDefaults = {
|
|||||||
Tooltip_Recommend = 1,
|
Tooltip_Recommend = 1,
|
||||||
TooltipPos = 1,
|
TooltipPos = 1,
|
||||||
HideParty = 0,
|
HideParty = 0,
|
||||||
|
HealBot_Integrations_UnitXP = 0,
|
||||||
|
HealBot_Integrations_Nampower = 0,
|
||||||
|
HealBot_Integrations_SuperWoW = 0,
|
||||||
|
HealBot_Integrations_ClassicAPI = 0,
|
||||||
};
|
};
|
||||||
|
|
||||||
HealBot_Config = {};
|
HealBot_Config = {};
|
||||||
|
|
||||||
--HealBot_EmergIncMelee = {};
|
|
||||||
--HealBot_EmergIncRange = {};
|
|
||||||
--HealBot_EmergIncHealers = {};
|
|
||||||
--HealBot_EmergIncCustom = {};
|
|
||||||
--HealBot_KeyCombo = {};
|
|
||||||
HealBot_HealsIn = {};
|
HealBot_HealsIn = {};
|
||||||
HealBot_Healers = {};
|
HealBot_Healers = {};
|
||||||
HealBot_UnitDebuff = {};
|
HealBot_UnitDebuff = {};
|
||||||
@@ -246,18 +275,6 @@ HEALBOT_ADDON_ID="HealBot_Heals"
|
|||||||
|
|
||||||
HealBot_AbortButton=1;
|
HealBot_AbortButton=1;
|
||||||
|
|
||||||
HealBot_Groups = {
|
|
||||||
["ITEMS"] = {
|
|
||||||
HEALBOT_BANDAGES,
|
|
||||||
HEALBOT_HEALING_POTIONS,
|
|
||||||
HEALBOT_HEALTHSTONES,
|
|
||||||
},
|
|
||||||
["PALADIN"] = {
|
|
||||||
HEALBOT_HOLY_LIGHT,
|
|
||||||
HEALBOT_FLASH_OF_LIGHT,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
HealBot_Spells = {
|
HealBot_Spells = {
|
||||||
-- Cast = secs until effect starts
|
-- Cast = secs until effect starts
|
||||||
-- Channel = secs until caster available
|
-- Channel = secs until caster available
|
||||||
@@ -510,6 +527,7 @@ HealBot_Buff_Spells = {
|
|||||||
HEALBOT_PRAYER_OF_SHADOW_PROTECTION,
|
HEALBOT_PRAYER_OF_SHADOW_PROTECTION,
|
||||||
HEALBOT_INNER_FIRE,
|
HEALBOT_INNER_FIRE,
|
||||||
HEALBOT_FEAR_WARD,
|
HEALBOT_FEAR_WARD,
|
||||||
|
HEALBOT_ENLIGHTEN,
|
||||||
},
|
},
|
||||||
[HEALBOT_MAGE] = {
|
[HEALBOT_MAGE] = {
|
||||||
HEALBOT_ARCANE_INTELLECT,
|
HEALBOT_ARCANE_INTELLECT,
|
||||||
@@ -540,7 +558,7 @@ HealBot_Debuff_Types = {
|
|||||||
HealBot_IsFighting = false;
|
HealBot_IsFighting = false;
|
||||||
|
|
||||||
HealBot_DebuffPriority = {"none"};
|
HealBot_DebuffPriority = {"none"};
|
||||||
HealBot_DebuffWatch = {[HEALBOT_DISEASE_en]="NO", [HEALBOT_MAGIC_en]="NO", [HEALBOT_POISON_en]="NO", [HEALBOT_CURSE_en]="NO"};
|
HealBot_DebuffWatch = {[HEALBOT_DISEASE_en]=false, [HEALBOT_MAGIC_en]=false, [HEALBOT_POISON_en]=false, [HEALBOT_CURSE_en]=false};
|
||||||
|
|
||||||
HealBot_Heals = {};
|
HealBot_Heals = {};
|
||||||
|
|
||||||
@@ -554,3 +572,25 @@ HealBot_SpamCnt=0;
|
|||||||
HealBot_Action_TooltipUnit=nil;
|
HealBot_Action_TooltipUnit=nil;
|
||||||
HealBot_Ressing = {};
|
HealBot_Ressing = {};
|
||||||
HealBot_IamRessing = false;
|
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
|
||||||
|
t = {}
|
||||||
|
end
|
||||||
|
return t
|
||||||
|
end
|
||||||
|
|
||||||
|
-- HealBot_ReleaseTable: Internal utility: HealBot_ReleaseTable
|
||||||
|
function HealBot_ReleaseTable(t)
|
||||||
|
if type(t) == "table" then
|
||||||
|
for k in pairs(t) do
|
||||||
|
t[k] = nil
|
||||||
|
end
|
||||||
|
table.insert(tablePool, t)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,9 @@
|
|||||||
|
-- HealBot_Errors_OnLoad: Internal utility: HealBot_Errors_OnLoad
|
||||||
function HealBot_Errors_OnLoad(this)
|
function HealBot_Errors_OnLoad(this)
|
||||||
-- do nothing
|
-- do nothing
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_Errors_OnShow: Show event handler.
|
||||||
function HealBot_Errors_OnShow(this)
|
function HealBot_Errors_OnShow(this)
|
||||||
local client = getglobal("HealBot_Error_Clientx")
|
local client = getglobal("HealBot_Error_Clientx")
|
||||||
client:SetText("Client="..GetLocale())
|
client:SetText("Client="..GetLocale())
|
||||||
@@ -9,6 +11,7 @@ function HealBot_Errors_OnShow(this)
|
|||||||
HealBot_Error_Classx:SetText("Player class="..HealBot_UnitClass("player"))
|
HealBot_Error_Classx:SetText("Player class="..HealBot_UnitClass("player"))
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_Errors_OnHide: Hide event handler.
|
||||||
function HealBot_Errors_OnHide(this)
|
function HealBot_Errors_OnHide(this)
|
||||||
local errtext;
|
local errtext;
|
||||||
HealBot_StopMoving(this);
|
HealBot_StopMoving(this);
|
||||||
@@ -19,14 +22,17 @@ function HealBot_Errors_OnHide(this)
|
|||||||
HealBot_ErrorCnt=0;
|
HealBot_ErrorCnt=0;
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_Errors_OnDragStart: Internal utility: HealBot_Errors_OnDragStart
|
||||||
function HealBot_Errors_OnDragStart(this,arg1)
|
function HealBot_Errors_OnDragStart(this,arg1)
|
||||||
HealBot_StartMoving(this);
|
HealBot_StartMoving(this);
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_Errors_OnDragStop: Internal utility: HealBot_Errors_OnDragStop
|
||||||
function HealBot_Errors_OnDragStop(this)
|
function HealBot_Errors_OnDragStop(this)
|
||||||
HealBot_StopMoving(this);
|
HealBot_StopMoving(this);
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_ErrorsIn: Internal utility: HealBot_ErrorsIn
|
||||||
function HealBot_ErrorsIn(msg,id)
|
function HealBot_ErrorsIn(msg,id)
|
||||||
local errtext = getglobal("HealBot_Error"..id);
|
local errtext = getglobal("HealBot_Error"..id);
|
||||||
errtext:SetText(msg)
|
errtext:SetText(msg)
|
||||||
|
|||||||
@@ -0,0 +1,125 @@
|
|||||||
|
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)
|
||||||
|
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
|
||||||
|
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
|
||||||
|
|
||||||
|
local spellName = GetSpellRecField(spellID, "name")
|
||||||
|
if not spellName then return end
|
||||||
|
|
||||||
|
if not HealBot_Nampower_Auras[target] then
|
||||||
|
HealBot_Nampower_Auras[target] = {}
|
||||||
|
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
|
||||||
|
else
|
||||||
|
HealBot_Integrations_Nampower_Active = false;
|
||||||
|
HealBot_AddDebug("nampower Integration: DISABLED");
|
||||||
|
if HealBot_Nampower_Auras then
|
||||||
|
for k in pairs(HealBot_Nampower_Auras) do
|
||||||
|
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:GetUnitIDByName(targetName) then
|
||||||
|
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_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
|
||||||
|
end
|
||||||
+35
-32
@@ -70,6 +70,9 @@ HEALBOT_LESSER_HEAL = "Geringes Heilen";
|
|||||||
HEALBOT_LESSER_HEALING_WAVE = "Geringe Welle der Heilung";
|
HEALBOT_LESSER_HEALING_WAVE = "Geringe Welle der Heilung";
|
||||||
HEALBOT_MEND_PET = "Tier Heilen";
|
HEALBOT_MEND_PET = "Tier Heilen";
|
||||||
HEALBOT_POWER_WORD_SHIELD = "Machtwort: Schild";
|
HEALBOT_POWER_WORD_SHIELD = "Machtwort: Schild";
|
||||||
|
HEALBOT_INNER_FIRE = "Inneres Feuer";
|
||||||
|
HEALBOT_FEAR_WARD = "Furchtzauberschutz";
|
||||||
|
HEALBOT_ENLIGHTEN = "Enlighten";
|
||||||
HEALBOT_REGROWTH = "Nachwachsen";
|
HEALBOT_REGROWTH = "Nachwachsen";
|
||||||
HEALBOT_RENEW = "Erneuerung";
|
HEALBOT_RENEW = "Erneuerung";
|
||||||
HEALBOT_REJUVENATION = "Verj\195\188ngung";
|
HEALBOT_REJUVENATION = "Verj\195\188ngung";
|
||||||
@@ -113,25 +116,25 @@ HEALBOT_RANK_11 = " (Rang 11)";
|
|||||||
HEALBOT_LIBRARY_INCHEAL = "Erh\195\182ht durch Zauber und Effekte verursachte Heilung um bis zu (%d+)%.";
|
HEALBOT_LIBRARY_INCHEAL = "Erh\195\182ht durch Zauber und Effekte verursachte Heilung um bis zu (%d+)%.";
|
||||||
HEALBOT_LIBRARY_INCDAMHEAL = "Erh\195\182ht durch Zauber und magische Effekte zugef\195\188gten Schaden und Heilung um bis zu (%d+)%.";
|
HEALBOT_LIBRARY_INCDAMHEAL = "Erh\195\182ht durch Zauber und magische Effekte zugef\195\188gten Schaden und Heilung um bis zu (%d+)%.";
|
||||||
|
|
||||||
HB_BONUSSCANNER_NAMES = {
|
HEALBOT_BONUSSCANNER_NAMES = {
|
||||||
HEAL = "Heilung",
|
HEAL = "Heilung",
|
||||||
}
|
}
|
||||||
|
|
||||||
HB_BONUSSCANNER_PREFIX_EQUIP = "Anlegen: ";
|
HEALBOT_BONUSSCANNER_PREFIX_EQUIP = "Anlegen: ";
|
||||||
HB_BONUSSCANNER_PREFIX_SET = "Set: ";
|
HEALBOT_BONUSSCANNER_PREFIX_SET = "Set: ";
|
||||||
|
|
||||||
HB_BONUSSCANNER_PATTERNS_PASSIVE = {
|
HEALBOT_BONUSSCANNER_PATTERNS_PASSIVE = {
|
||||||
{ pattern = "Erh\195\182ht durch Zauber und magische Effekte zugef\195\188gten Schaden und Heilung um bis zu (%d+)%.", effect = {"HEAL","DMG"} },
|
{ pattern = "Erh\195\182ht durch Zauber und magische Effekte zugef\195\188gten Schaden und Heilung um bis zu (%d+)%.", effect = {"HEAL","DMG"} },
|
||||||
{ pattern = "Erh\195\182ht durch Zauber und Effekte verursachte Heilung um bis zu (%d+)%.", effect = "HEAL" },
|
{ pattern = "Erh\195\182ht durch Zauber und Effekte verursachte Heilung um bis zu (%d+)%.", effect = "HEAL" },
|
||||||
{ pattern = "Erh\195\182ht die durch Zauber und Effekte verursachte Heilung um bis zu (%d+)%.", effect = "HEAL" },
|
{ pattern = "Erh\195\182ht die durch Zauber und Effekte verursachte Heilung um bis zu (%d+)%.", effect = "HEAL" },
|
||||||
};
|
};
|
||||||
|
|
||||||
HB_BONUSSCANNER_PATTERNS_GENERIC_LOOKUP = {
|
HEALBOT_BONUSSCANNER_PATTERNS_GENERIC_LOOKUP = {
|
||||||
["Heilzauber"] = "HEAL",
|
["Heilzauber"] = "HEAL",
|
||||||
["Heilung und Zauberschaden"] = {"HEAL","DMG"},
|
["Heilung und Zauberschaden"] = {"HEAL","DMG"},
|
||||||
};
|
};
|
||||||
|
|
||||||
HB_BONUSSCANNER_PATTERNS_OTHER = {
|
HEALBOT_BONUSSCANNER_PATTERNS_OTHER = {
|
||||||
{ pattern = "Zandalarianisches Siegel des Mojo", effect = {"DMG", "HEAL"}, value = 18 },
|
{ pattern = "Zandalarianisches Siegel des Mojo", effect = {"DMG", "HEAL"}, value = 18 },
|
||||||
{ pattern = "Zandalarianisches Siegel der Inneren Ruhe", effect = "HEAL", value = 33 },
|
{ pattern = "Zandalarianisches Siegel der Inneren Ruhe", effect = "HEAL", value = 33 },
|
||||||
|
|
||||||
@@ -154,32 +157,32 @@ HEALBOT_DEBUFF_WEAKENED_SOUL = "Interface\\Icons\\Spell_Holy_AshesToAshes";
|
|||||||
HEALBOT_DEBUFF_RECENTLY_BANDAGED = "Interface\\Icons\\INV_Misc_Bandage_08";
|
HEALBOT_DEBUFF_RECENTLY_BANDAGED = "Interface\\Icons\\INV_Misc_Bandage_08";
|
||||||
|
|
||||||
|
|
||||||
HB_SPELL_PATTERN_LESSER_HEAL = "Euer Ziel um (%d+) bis (%d+) Punkt%(e%) heilen";
|
HEALBOT_SPELL_PATTERN_LESSER_HEAL = "Euer Ziel um (%d+) bis (%d+) Punkt%(e%) heilen";
|
||||||
HB_SPELL_PATTERN_HEAL = "Euer Ziel um (%d+) bis (%d+) Punkt%(e%) heilen";
|
HEALBOT_SPELL_PATTERN_HEAL = "Euer Ziel um (%d+) bis (%d+) Punkt%(e%) heilen";
|
||||||
HB_SPELL_PATTERN_GREATER_HEAL = "Ein langsam zu wirkender Zauber, der ein einzelnes Ziel um (%d+) bis (%d+) Punkt%(e%) heilt";
|
HEALBOT_SPELL_PATTERN_GREATER_HEAL = "Ein langsam zu wirkender Zauber, der ein einzelnes Ziel um (%d+) bis (%d+) Punkt%(e%) heilt";
|
||||||
HB_SPELL_PATTERN_FLASH_HEAL = "Heilt ein befreundetes Ziel um (%d+) bis (%d+) Punkt%(e%)";
|
HEALBOT_SPELL_PATTERN_FLASH_HEAL = "Heilt ein befreundetes Ziel um (%d+) bis (%d+) Punkt%(e%)";
|
||||||
HB_SPELL_PATTERN_RENEW2 = "Heilt das Ziel (%d+) Sek. lang um (%d+) bis (%d+) Schadenspunk";
|
HEALBOT_SPELL_PATTERN_RENEW2 = "Heilt das Ziel (%d+) Sek. lang um (%d+) bis (%d+) Schadenspunk";
|
||||||
HB_SPELL_PATTERN_RENEW3 = "Heilt das Ziel (%d+) Sek. lang um (%d+) Schadenspunk";
|
HEALBOT_SPELL_PATTERN_RENEW3 = "Heilt das Ziel (%d+) Sek. lang um (%d+) Schadenspunk";
|
||||||
HB_SPELL_PATTERN_SHIELD = "absorbiert dabei (%d+) Punkt%(e%) Schaden. H\195\164lt (%d+) Sek";
|
HEALBOT_SPELL_PATTERN_SHIELD = "absorbiert dabei (%d+) Punkt%(e%) Schaden. H\195\164lt (%d+) Sek";
|
||||||
HB_SPELL_PATTERN_HEALING_TOUCH = "Heilt ein befreundetes Ziel um (%d+) bis (%d+) Punkt%(e%)";
|
HEALBOT_SPELL_PATTERN_HEALING_TOUCH = "Heilt ein befreundetes Ziel um (%d+) bis (%d+) Punkt%(e%)";
|
||||||
HB_SPELL_PATTERN_REGROWTH = "Heilt ein befreundetes Ziel um (%d+) bis (%d+) und \195\188ber (%d+) Sek%. um weitere (%d+)";
|
HEALBOT_SPELL_PATTERN_REGROWTH = "Heilt ein befreundetes Ziel um (%d+) bis (%d+) und \195\188ber (%d+) Sek%. um weitere (%d+)";
|
||||||
HB_SPELL_PATTERN_REGROWTH1 = "Heilt ein befreundetes Ziel um (%d+) bis (%d+) und \195\188ber (%d+) Sek%. um weitere (%d+) bis (%d+)";
|
HEALBOT_SPELL_PATTERN_REGROWTH1 = "Heilt ein befreundetes Ziel um (%d+) bis (%d+) und \195\188ber (%d+) Sek%. um weitere (%d+) bis (%d+)";
|
||||||
HB_SPELL_PATTERN_HOLY_LIGHT = "Heilt ein befreundetes Ziel um (%d+) bis (%d+) Punkt%(e%)";
|
HEALBOT_SPELL_PATTERN_HOLY_LIGHT = "Heilt ein befreundetes Ziel um (%d+) bis (%d+) Punkt%(e%)";
|
||||||
HB_SPELL_PATTERN_FLASH_OF_LIGHT = "Heilt ein befreundetes Ziel um (%d+) bis (%d+) Punkt%(e%)";
|
HEALBOT_SPELL_PATTERN_FLASH_OF_LIGHT = "Heilt ein befreundetes Ziel um (%d+) bis (%d+) Punkt%(e%)";
|
||||||
HB_SPELL_PATTERN_HEALING_WAVE = "Heilt ein befreundetes Ziel um (%d+) bis (%d+) Punkt%(e%)";
|
HEALBOT_SPELL_PATTERN_HEALING_WAVE = "Heilt ein befreundetes Ziel um (%d+) bis (%d+) Punkt%(e%)";
|
||||||
HB_SPELL_PATTERN_LESSER_HEALING_WAVE = "Heilt ein befreundetes Ziel um (%d+) bis (%d+) Punkt%(e%)";
|
HEALBOT_SPELL_PATTERN_LESSER_HEALING_WAVE = "Heilt ein befreundetes Ziel um (%d+) bis (%d+) Punkt%(e%)";
|
||||||
HB_SPELL_PATTERN_REJUVENATION = "Heilt das Ziel von (%d+) \195\188ber (%d+) Sek";
|
HEALBOT_SPELL_PATTERN_REJUVENATION = "Heilt das Ziel von (%d+) \195\188ber (%d+) Sek";
|
||||||
HB_SPELL_PATTERN_REJUVENATION1 = "Heilt das Ziel von (%d+) bis (%d+) \195\188ber (%d+) Sek";
|
HEALBOT_SPELL_PATTERN_REJUVENATION1 = "Heilt das Ziel von (%d+) bis (%d+) \195\188ber (%d+) Sek";
|
||||||
|
|
||||||
HB_TOOLTIP_MANA = "^(%d+) Mana$";
|
HEALBOT_TOOLTIP_MANA = "^(%d+) Mana$";
|
||||||
HB_TOOLTIP_RANGE = "(%d+) m";
|
HEALBOT_TOOLTIP_RANGE = "(%d+) m";
|
||||||
HB_TOOLTIP_INSTANT_CAST = "Spontanzauber";
|
HEALBOT_TOOLTIP_INSTANT_CAST = "Spontanzauber";
|
||||||
HB_TOOLTIP_CAST_TIME = "(%d+.?%d*) Sek";
|
HEALBOT_TOOLTIP_CAST_TIME = "(%d+.?%d*) Sek";
|
||||||
HB_TOOLTIP_CHANNELED = "Abgebrochen";
|
HEALBOT_TOOLTIP_CHANNELED = "Abgebrochen";
|
||||||
HB_HASLEFTRAID = "^([^%s]+) hat die \195\131\197\147berfallgruppe verlassen%.$";
|
HEALBOT_HASLEFTRAID = "^([^%s]+) hat die \195\131\197\147berfallgruppe verlassen%.$";
|
||||||
HB_HASLEFTPARTY = "^([^%s]+) hat die Gruppe verlassen";
|
HEALBOT_HASLEFTPARTY = "^([^%s]+) hat die Gruppe verlassen";
|
||||||
HB_YOULEAVETHEGROUP = "Du hast die Gruppe verlassen"
|
HEALBOT_YOULEAVETHEGROUP = "Du hast die Gruppe verlassen"
|
||||||
HB_YOULEAVETHERAID = "Du hast den Schlachtzug verlassen"
|
HEALBOT_YOULEAVETHERAID = "Du hast den Schlachtzug verlassen"
|
||||||
|
|
||||||
-----------------
|
-----------------
|
||||||
-- Translation --
|
-- Translation --
|
||||||
@@ -327,6 +330,7 @@ HEALBOT_OPTIONS_MONITORMELEE = "Nahkampf";
|
|||||||
HEALBOT_OPTIONS_MONITORRANGE = "Fernkampf";
|
HEALBOT_OPTIONS_MONITORRANGE = "Fernkampf";
|
||||||
HEALBOT_OPTIONS_MONITORHEALERS = "Heiler";
|
HEALBOT_OPTIONS_MONITORHEALERS = "Heiler";
|
||||||
HEALBOT_OPTIONS_MONITORCUSTOM = "Eigene";
|
HEALBOT_OPTIONS_MONITORCUSTOM = "Eigene";
|
||||||
|
HEALBOT_OPTIONS_PETS = "Begleiter";
|
||||||
|
|
||||||
HEALBOT_OPTIONS_SHOWTOOLTIP = "Zeige Tooltips";
|
HEALBOT_OPTIONS_SHOWTOOLTIP = "Zeige Tooltips";
|
||||||
HEALBOT_OPTIONS_SHOWDETTOOLTIP = "Zeige detaillierte Spruchinfos";
|
HEALBOT_OPTIONS_SHOWDETTOOLTIP = "Zeige detaillierte Spruchinfos";
|
||||||
@@ -352,7 +356,6 @@ HEALBOT_WORDS_SEC = "Sek";
|
|||||||
HEALBOT_WORDS_TO = "zu";
|
HEALBOT_WORDS_TO = "zu";
|
||||||
HEALBOT_WORDS_CAST = "Zauber"
|
HEALBOT_WORDS_CAST = "Zauber"
|
||||||
HEALBOT_WORDS_FOR = "f\195\188r";
|
HEALBOT_WORDS_FOR = "f\195\188r";
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+42
-45
@@ -1,4 +1,4 @@
|
|||||||
HEALBOT_VERSION = "1.3";
|
HEALBOT_VERSION = GetAddOnMetadata("HealBotBlue", "Version");
|
||||||
|
|
||||||
-------------
|
-------------
|
||||||
-- ENGLISH --
|
-- ENGLISH --
|
||||||
@@ -93,6 +93,7 @@ HEALBOT_THORNS = "Thorns";
|
|||||||
HEALBOT_OMEN_OF_CLARITY = "Omen of Clarity";
|
HEALBOT_OMEN_OF_CLARITY = "Omen of Clarity";
|
||||||
HEALBOT_INNER_FIRE = "Inner Fire";
|
HEALBOT_INNER_FIRE = "Inner Fire";
|
||||||
HEALBOT_FEAR_WARD = "Fear Ward";
|
HEALBOT_FEAR_WARD = "Fear Ward";
|
||||||
|
HEALBOT_ENLIGHTEN = "Enlighten";
|
||||||
|
|
||||||
HEALBOT_RESURRECTION = "Resurrection";
|
HEALBOT_RESURRECTION = "Resurrection";
|
||||||
HEALBOT_REDEMPTION = "Redemption";
|
HEALBOT_REDEMPTION = "Redemption";
|
||||||
@@ -131,19 +132,19 @@ HEALBOT_RANK_11 = " (Rank 11)";
|
|||||||
HEALBOT_LIBRARY_INCHEAL = "Increases healing done by spells and effects by up to (%d+)%.";
|
HEALBOT_LIBRARY_INCHEAL = "Increases healing done by spells and effects by up to (%d+)%.";
|
||||||
HEALBOT_LIBRARY_INCDAMHEAL = "Increases damage and healing done by magical spells and effects by up to (%d+)%.";
|
HEALBOT_LIBRARY_INCDAMHEAL = "Increases damage and healing done by magical spells and effects by up to (%d+)%.";
|
||||||
|
|
||||||
HB_BONUSSCANNER_NAMES = {
|
HEALBOT_BONUSSCANNER_NAMES = {
|
||||||
HEAL = "Healing",
|
HEAL = "Healing",
|
||||||
};
|
};
|
||||||
|
|
||||||
HB_BONUSSCANNER_PREFIX_EQUIP = "Equip: ";
|
HEALBOT_BONUSSCANNER_PREFIX_EQUIP = "Equip: ";
|
||||||
HB_BONUSSCANNER_PREFIX_SET = "Set: ";
|
HEALBOT_BONUSSCANNER_PREFIX_SET = "Set: ";
|
||||||
|
|
||||||
HB_BONUSSCANNER_PATTERNS_PASSIVE = {
|
HEALBOT_BONUSSCANNER_PATTERNS_PASSIVE = {
|
||||||
{ pattern = "Increases healing done by spells and effects by up to (%d+)%.", effect = "HEAL" },
|
{ pattern = "Increases healing done by spells and effects by up to (%d+)%.", effect = "HEAL" },
|
||||||
{ pattern = "Increases damage and healing done by magical spells and effects by up to (%d+)%.", effect = {"HEAL", "DMG"} },
|
{ pattern = "Increases damage and healing done by magical spells and effects by up to (%d+)%.", effect = {"HEAL", "DMG"} },
|
||||||
};
|
};
|
||||||
|
|
||||||
HB_BONUSSCANNER_PATTERNS_GENERIC_LOOKUP = {
|
HEALBOT_BONUSSCANNER_PATTERNS_GENERIC_LOOKUP = {
|
||||||
["Healing Spells"] = "HEAL",
|
["Healing Spells"] = "HEAL",
|
||||||
["Increases Healing"] = "HEAL",
|
["Increases Healing"] = "HEAL",
|
||||||
["Healing and Spell Damage"] = {"HEAL", "DMG"},
|
["Healing and Spell Damage"] = {"HEAL", "DMG"},
|
||||||
@@ -151,7 +152,7 @@ HB_BONUSSCANNER_PATTERNS_GENERIC_LOOKUP = {
|
|||||||
["Spell Damage and Healing"] = {"HEAL", "DMG"},
|
["Spell Damage and Healing"] = {"HEAL", "DMG"},
|
||||||
};
|
};
|
||||||
|
|
||||||
HB_BONUSSCANNER_PATTERNS_OTHER = {
|
HEALBOT_BONUSSCANNER_PATTERNS_OTHER = {
|
||||||
{ pattern = "Zandalar Signet of Mojo", effect = {"DMG", "HEAL"}, value = 18 },
|
{ pattern = "Zandalar Signet of Mojo", effect = {"DMG", "HEAL"}, value = 18 },
|
||||||
{ pattern = "Zandalar Signet of Serenity", effect = "HEAL", value = 33 },
|
{ pattern = "Zandalar Signet of Serenity", effect = "HEAL", value = 33 },
|
||||||
|
|
||||||
@@ -173,35 +174,35 @@ HEALBOT_DEBUFF_WEAKENED_SOUL = "Interface\\Icons\\Spell_Holy_AshesToAshes";
|
|||||||
HEALBOT_DEBUFF_RECENTLY_BANDAGED = "Interface\\Icons\\INV_Misc_Bandage_08";
|
HEALBOT_DEBUFF_RECENTLY_BANDAGED = "Interface\\Icons\\INV_Misc_Bandage_08";
|
||||||
|
|
||||||
|
|
||||||
HB_SPELL_PATTERN_LESSER_HEAL = "Heal your target for (%d+) to (%d+)";
|
HEALBOT_SPELL_PATTERN_LESSER_HEAL = "Heal your target for (%d+) to (%d+)";
|
||||||
HB_SPELL_PATTERN_HEAL = "Heal your target for (%d+) to (%d+)";
|
HEALBOT_SPELL_PATTERN_HEAL = "Heal your target for (%d+) to (%d+)";
|
||||||
HB_SPELL_PATTERN_GREATER_HEAL = "A slow casting spell that heals a single target for (%d+) to (%d+)";
|
HEALBOT_SPELL_PATTERN_GREATER_HEAL = "A slow casting spell that heals a single target for (%d+) to (%d+)";
|
||||||
HB_SPELL_PATTERN_FLASH_HEAL = "Heals a friendly target for (%d+) to (%d+)";
|
HEALBOT_SPELL_PATTERN_FLASH_HEAL = "Heals a friendly target for (%d+) to (%d+)";
|
||||||
HB_SPELL_PATTERN_RENEW = "Heals the target of (%d+) to (%d+) damage over (%d+) sec";
|
HEALBOT_SPELL_PATTERN_RENEW = "Heals the target of (%d+) to (%d+) damage over (%d+) sec";
|
||||||
HB_SPELL_PATTERN_RENEW1 = "Heals the target of (%d+) damage over (%d+) sec";
|
HEALBOT_SPELL_PATTERN_RENEW1 = "Heals the target of (%d+) damage over (%d+) sec";
|
||||||
HB_SPELL_PATTERN_RENEW2 = "Not needed for en";
|
HEALBOT_SPELL_PATTERN_RENEW2 = "Not needed for en";
|
||||||
HB_SPELL_PATTERN_RENEW3 = "Not needed for en";
|
HEALBOT_SPELL_PATTERN_RENEW3 = "Not needed for en";
|
||||||
HB_SPELL_PATTERN_SHIELD = "absorbing (%d+) damage. Lasts (%d+) sec.";
|
HEALBOT_SPELL_PATTERN_SHIELD = "absorbing (%d+) damage. Lasts (%d+) sec.";
|
||||||
HB_SPELL_PATTERN_HEALING_TOUCH = "Heals a friendly target for (%d+) to (%d+)";
|
HEALBOT_SPELL_PATTERN_HEALING_TOUCH = "Heals a friendly target for (%d+) to (%d+)";
|
||||||
HB_SPELL_PATTERN_REGROWTH = "Heals a friendly target for (%d+) to (%d+) and another (%d+) over (%d+) sec";
|
HEALBOT_SPELL_PATTERN_REGROWTH = "Heals a friendly target for (%d+) to (%d+) and another (%d+) over (%d+) sec";
|
||||||
HB_SPELL_PATTERN_REGROWTH1 = "Heals a friendly target for (%d+) to (%d+) and another (%d+) to (%d+) over (%d+) sec";
|
HEALBOT_SPELL_PATTERN_REGROWTH1 = "Heals a friendly target for (%d+) to (%d+) and another (%d+) to (%d+) over (%d+) sec";
|
||||||
HB_SPELL_PATTERN_HOLY_LIGHT = "Heals a friendly target for (%d+) to (%d+)";
|
HEALBOT_SPELL_PATTERN_HOLY_LIGHT = "Heals a friendly target for (%d+) to (%d+)";
|
||||||
HB_SPELL_PATTERN_FLASH_OF_LIGHT = "Heals a friendly target for (%d+) to (%d+)";
|
HEALBOT_SPELL_PATTERN_FLASH_OF_LIGHT = "Heals a friendly target for (%d+) to (%d+)";
|
||||||
HB_SPELL_PATTERN_HEALING_WAVE = "Heals a friendly target for (%d+) to (%d+)";
|
HEALBOT_SPELL_PATTERN_HEALING_WAVE = "Heals a friendly target for (%d+) to (%d+)";
|
||||||
HB_SPELL_PATTERN_LESSER_HEALING_WAVE = "Heals a friendly target for (%d+) to (%d+)";
|
HEALBOT_SPELL_PATTERN_LESSER_HEALING_WAVE = "Heals a friendly target for (%d+) to (%d+)";
|
||||||
HB_SPELL_PATTERN_REJUVENATION = "Heals the target for (%d+) over (%d+) sec";
|
HEALBOT_SPELL_PATTERN_REJUVENATION = "Heals the target for (%d+) over (%d+) sec";
|
||||||
HB_SPELL_PATTERN_REJUVENATION1 = "Heals the target for (%d+) to (%d+) over (%d+) sec";
|
HEALBOT_SPELL_PATTERN_REJUVENATION1 = "Heals the target for (%d+) to (%d+) over (%d+) sec";
|
||||||
HB_SPELL_PATTERN_MEND_PET = "Heals your pet (%d+) health every second while you focus. Lasts (%d+) sec";
|
HEALBOT_SPELL_PATTERN_MEND_PET = "Heals your pet (%d+) health every second while you focus. Lasts (%d+) sec";
|
||||||
|
|
||||||
HB_TOOLTIP_MANA = "^(%d+) Mana$";
|
HEALBOT_TOOLTIP_MANA = "^(%d+) Mana$";
|
||||||
HB_TOOLTIP_RANGE = "(%d+) yd range";
|
HEALBOT_TOOLTIP_RANGE = "(%d+) yd range";
|
||||||
HB_TOOLTIP_INSTANT_CAST = "Instant cast";
|
HEALBOT_TOOLTIP_INSTANT_CAST = "Instant cast";
|
||||||
HB_TOOLTIP_CAST_TIME = "(%d+.?%d*) sec cast";
|
HEALBOT_TOOLTIP_CAST_TIME = "(%d+.?%d*) sec cast";
|
||||||
HB_TOOLTIP_CHANNELED = "Channeled";
|
HEALBOT_TOOLTIP_CHANNELED = "Channeled";
|
||||||
HB_HASLEFTRAID = "^([^%s]+) has left the raid group$";
|
HEALBOT_HASLEFTRAID = "^([^%s]+) has left the raid group$";
|
||||||
HB_HASLEFTPARTY = "^([^%s]+) leaves the party$";
|
HEALBOT_HASLEFTPARTY = "^([^%s]+) leaves the party$";
|
||||||
HB_YOULEAVETHEGROUP = "You leave the group."
|
HEALBOT_YOULEAVETHEGROUP = "You leave the group."
|
||||||
HB_YOULEAVETHERAID = "You have left the raid group"
|
HEALBOT_YOULEAVETHERAID = "You have left the raid group"
|
||||||
|
|
||||||
|
|
||||||
-----------------
|
-----------------
|
||||||
@@ -309,6 +310,7 @@ HEALBOT_OPTIONS_CDCLEFT = "Alt+Left";
|
|||||||
HEALBOT_OPTIONS_CDCRIGHT = "Alt+Right";
|
HEALBOT_OPTIONS_CDCRIGHT = "Alt+Right";
|
||||||
HEALBOT_OPTIONS_CDCBARS = "Healthbar colours";
|
HEALBOT_OPTIONS_CDCBARS = "Healthbar colours";
|
||||||
HEALBOT_OPTIONS_CDCCLASS = "Monitor classes";
|
HEALBOT_OPTIONS_CDCCLASS = "Monitor classes";
|
||||||
|
HEALBOT_OPTIONS_CDCSHOWALLDEBUFFS = "Track All Debuffs";
|
||||||
HEALBOT_OPTIONS_CDCWARNINGS = "Debuff warnings";
|
HEALBOT_OPTIONS_CDCWARNINGS = "Debuff warnings";
|
||||||
HEALBOT_OPTIONS_USEBUTTONS = "Define spells";
|
HEALBOT_OPTIONS_USEBUTTONS = "Define spells";
|
||||||
HEALBOT_OPTIONS_CDC = "Cure/Dispel/Cleanse for";
|
HEALBOT_OPTIONS_CDC = "Cure/Dispel/Cleanse for";
|
||||||
@@ -319,12 +321,14 @@ HEALBOT_OPTIONS_SOUND2 = "Sound 2"
|
|||||||
HEALBOT_OPTIONS_SOUND3 = "Sound 3"
|
HEALBOT_OPTIONS_SOUND3 = "Sound 3"
|
||||||
|
|
||||||
HEALBOT_OPTIONS_HEAL_BUTTONS = "Healing bars";
|
HEALBOT_OPTIONS_HEAL_BUTTONS = "Healing bars";
|
||||||
HEALBOT_OPTIONS_EMERGFILTER = "Show extra bars for";
|
HEALBOT_OPTIONS_EMERGFILTER = "Show raid bars for";
|
||||||
|
|
||||||
HEALBOT_OPTIONS_GROUPHEALS = "Group";
|
HEALBOT_OPTIONS_GROUPHEALS = "Group";
|
||||||
|
HEALBOT_OPTIONS_GROUPHEALS_LABEL = "Group Only";
|
||||||
HEALBOT_OPTIONS_TANKHEALS = "Main tanks";
|
HEALBOT_OPTIONS_TANKHEALS = "Main tanks";
|
||||||
HEALBOT_OPTIONS_TARGETHEALS = "Targets";
|
HEALBOT_OPTIONS_TARGETHEALS = "Targets";
|
||||||
HEALBOT_OPTIONS_EMERGENCYHEALS= "Extra";
|
HEALBOT_OPTIONS_EMERGENCYHEALS= "Raid";
|
||||||
|
HEALBOT_OPTIONS_PETHEALS = "Pets";
|
||||||
HEALBOT_OPTIONS_HEALLEVEL = "Healing Level";
|
HEALBOT_OPTIONS_HEALLEVEL = "Healing Level";
|
||||||
HEALBOT_OPTIONS_ALERTLEVEL = "Alert Level";
|
HEALBOT_OPTIONS_ALERTLEVEL = "Alert Level";
|
||||||
HEALBOT_OPTIONS_OVERHEAL = "Show Abort button when overhealing"
|
HEALBOT_OPTIONS_OVERHEAL = "Show Abort button when overhealing"
|
||||||
@@ -365,6 +369,7 @@ HEALBOT_OPTIONS_MONITORMELEE = "Melee";
|
|||||||
HEALBOT_OPTIONS_MONITORRANGE = "Ranged";
|
HEALBOT_OPTIONS_MONITORRANGE = "Ranged";
|
||||||
HEALBOT_OPTIONS_MONITORHEALERS = "Healers";
|
HEALBOT_OPTIONS_MONITORHEALERS = "Healers";
|
||||||
HEALBOT_OPTIONS_MONITORCUSTOM = "Custom";
|
HEALBOT_OPTIONS_MONITORCUSTOM = "Custom";
|
||||||
|
HEALBOT_OPTIONS_PETS = "Pets";
|
||||||
|
|
||||||
HEALBOT_OPTIONS_SHOWTOOLTIP = "Show tooltips";
|
HEALBOT_OPTIONS_SHOWTOOLTIP = "Show tooltips";
|
||||||
HEALBOT_OPTIONS_SHOWDETTOOLTIP = "Show detailed spell information";
|
HEALBOT_OPTIONS_SHOWDETTOOLTIP = "Show detailed spell information";
|
||||||
@@ -385,11 +390,3 @@ HEALBOT_WORDS_SEC = "sec";
|
|||||||
HEALBOT_WORDS_TO = "to";
|
HEALBOT_WORDS_TO = "to";
|
||||||
HEALBOT_WORDS_CAST = "Cast"
|
HEALBOT_WORDS_CAST = "Cast"
|
||||||
HEALBOT_WORDS_FOR = "for";
|
HEALBOT_WORDS_FOR = "for";
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+35
-32
@@ -61,6 +61,9 @@ HEALBOT_FLASH_HEAL = "Soins rapides";
|
|||||||
HEALBOT_FLASH_OF_LIGHT = "Eclair lumineux";
|
HEALBOT_FLASH_OF_LIGHT = "Eclair lumineux";
|
||||||
HEALBOT_HOLY_SHOCK = "Holy Shock";
|
HEALBOT_HOLY_SHOCK = "Holy Shock";
|
||||||
HEALBOT_GREATER_HEAL = "Soins sup\195\169rieurs";
|
HEALBOT_GREATER_HEAL = "Soins sup\195\169rieurs";
|
||||||
|
HEALBOT_INNER_FIRE = "Feu int\195\169rieur";
|
||||||
|
HEALBOT_FEAR_WARD = "Gardien de peur";
|
||||||
|
HEALBOT_ENLIGHTEN = "Enlighten";
|
||||||
HEALBOT_HEALING_TOUCH = "Toucher gu\195\169risseur";
|
HEALBOT_HEALING_TOUCH = "Toucher gu\195\169risseur";
|
||||||
HEALBOT_HEAL = "Soins";
|
HEALBOT_HEAL = "Soins";
|
||||||
HEALBOT_HEALING_WAVE = "Vague de soins";
|
HEALBOT_HEALING_WAVE = "Vague de soins";
|
||||||
@@ -112,14 +115,14 @@ HEALBOT_RANK_11 = " (Rang 11)";
|
|||||||
HEALBOT_LIBRARY_INCHEAL = "Increases healing done by spells and effects by up to (%d+)%."; -- *************** needs French translation ***************
|
HEALBOT_LIBRARY_INCHEAL = "Increases healing done by spells and effects by up to (%d+)%."; -- *************** needs French translation ***************
|
||||||
HEALBOT_LIBRARY_INCDAMHEAL = "Increases damage and healing done by magical spells and effects by up to (%d+)%."; -- *************** needs French translation ***************
|
HEALBOT_LIBRARY_INCDAMHEAL = "Increases damage and healing done by magical spells and effects by up to (%d+)%."; -- *************** needs French translation ***************
|
||||||
|
|
||||||
HB_BONUSSCANNER_NAMES = {
|
HEALBOT_BONUSSCANNER_NAMES = {
|
||||||
HEAL = "Soins",
|
HEAL = "Soins",
|
||||||
};
|
};
|
||||||
|
|
||||||
HB_BONUSSCANNER_PREFIX_EQUIP = "Equip\195\169 : ";
|
HEALBOT_BONUSSCANNER_PREFIX_EQUIP = "Equip\195\169 : ";
|
||||||
HB_BONUSSCANNER_PREFIX_SET = "Complet : ";
|
HEALBOT_BONUSSCANNER_PREFIX_SET = "Complet : ";
|
||||||
|
|
||||||
HB_BONUSSCANNER_PATTERNS_PASSIVE = {
|
HEALBOT_BONUSSCANNER_PATTERNS_PASSIVE = {
|
||||||
{ pattern = "Augmente les effets des sorts de soins de (%d+)% au maximum.", effect = "HEAL" },
|
{ pattern = "Augmente les effets des sorts de soins de (%d+)% au maximum.", effect = "HEAL" },
|
||||||
{ pattern = "Augmente les soins prodigu\195\169s par les sorts et effets de (%d+)% au maximum.", effect = "HEAL"},
|
{ pattern = "Augmente les soins prodigu\195\169s par les sorts et effets de (%d+)% au maximum.", effect = "HEAL"},
|
||||||
{ pattern = "Augmente les d\195\169g\195\162ts et les soins prodigu\195\169s par les sortsfalseles effets magiques de (%d+)% au maximum.", effect = "HEAL" },
|
{ pattern = "Augmente les d\195\169g\195\162ts et les soins prodigu\195\169s par les sortsfalseles effets magiques de (%d+)% au maximum.", effect = "HEAL" },
|
||||||
@@ -127,39 +130,39 @@ HB_BONUSSCANNER_PATTERNS_PASSIVE = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
HB_BONUSSCANNER_PATTERNS_GENERIC_LOOKUP = {
|
HEALBOT_BONUSSCANNER_PATTERNS_GENERIC_LOOKUP = {
|
||||||
["Sorts de Soins"] = "HEAL",
|
["Sorts de Soins"] = "HEAL",
|
||||||
["D\195\169g\195\162ts et soins "] = {"HEAL", "DMG"},
|
["D\195\169g\195\162ts et soins "] = {"HEAL", "DMG"},
|
||||||
};
|
};
|
||||||
|
|
||||||
HB_SPELL_PATTERN_LESSER_HEAL = "Soigne la cible de (%d+) \195\160 (%d+) points de vie";
|
HEALBOT_SPELL_PATTERN_LESSER_HEAL = "Soigne la cible de (%d+) \195\160 (%d+) points de vie";
|
||||||
HB_SPELL_PATTERN_HEAL = "Soigne la cible de (%d+) \195\160 (%d+) points de vie";
|
HEALBOT_SPELL_PATTERN_HEAL = "Soigne la cible de (%d+) \195\160 (%d+) points de vie";
|
||||||
HB_SPELL_PATTERN_GREATER_HEAL = "Une longue incantation qui rend (%d+) \195\160 (%d+) points de vie \195\160 une cible unique";
|
HEALBOT_SPELL_PATTERN_GREATER_HEAL = "Une longue incantation qui rend (%d+) \195\160 (%d+) points de vie \195\160 une cible unique";
|
||||||
HB_SPELL_PATTERN_FLASH_HEAL = "Rend (%d+) \195\160 (%d+) points de vie";
|
HEALBOT_SPELL_PATTERN_FLASH_HEAL = "Rend (%d+) \195\160 (%d+) points de vie";
|
||||||
HB_SPELL_PATTERN_RENEW = "Rend (%d+) \195\160 (%d+) points de vie \195\160 la cible en (%d+) sec";
|
HEALBOT_SPELL_PATTERN_RENEW = "Rend (%d+) \195\160 (%d+) points de vie \195\160 la cible en (%d+) sec";
|
||||||
HB_SPELL_PATTERN_RENEW1 = "Rend (%d+) points de vie \195\160 la cible en (%d+) sec";
|
HEALBOT_SPELL_PATTERN_RENEW1 = "Rend (%d+) points de vie \195\160 la cible en (%d+) sec";
|
||||||
HB_SPELL_PATTERN_HEALING_TOUCH = "Rend (%d+) \195\160 (%d+) points de vie";
|
HEALBOT_SPELL_PATTERN_HEALING_TOUCH = "Rend (%d+) \195\160 (%d+) points de vie";
|
||||||
HB_SPELL_PATTERN_REGROWTH = "Soigne une cible amie pour (%d+) \195\160 (%d+) puis pour (%d+) points suppl.+mentaires pendant (%d+) sec";
|
HEALBOT_SPELL_PATTERN_REGROWTH = "Soigne une cible amie pour (%d+) \195\160 (%d+) puis pour (%d+) points suppl.+mentaires pendant (%d+) sec";
|
||||||
HB_SPELL_PATTERN_REGROWTH1 = "Soigne une cible amie pour (%d+) \195\160 (%d+) puis pour (%d+) \195\160 (%d+) points suppl.+mentaires pendant (%d+) sec";
|
HEALBOT_SPELL_PATTERN_REGROWTH1 = "Soigne une cible amie pour (%d+) \195\160 (%d+) puis pour (%d+) \195\160 (%d+) points suppl.+mentaires pendant (%d+) sec";
|
||||||
HB_SPELL_PATTERN_HOLY_LIGHT = "Rend (%d+) \195\160 (%d+) points de vie";
|
HEALBOT_SPELL_PATTERN_HOLY_LIGHT = "Rend (%d+) \195\160 (%d+) points de vie";
|
||||||
HB_SPELL_PATTERN_FLASH_OF_LIGHT = "Rend (%d+) \195\160 (%d+) points de vie";
|
HEALBOT_SPELL_PATTERN_FLASH_OF_LIGHT = "Rend (%d+) \195\160 (%d+) points de vie";
|
||||||
HB_SPELL_PATTERN_HEALING_WAVE = "Rend (%d+) \195\160 (%d+) points de vie";
|
HEALBOT_SPELL_PATTERN_HEALING_WAVE = "Rend (%d+) \195\160 (%d+) points de vie";
|
||||||
HB_SPELL_PATTERN_LESSER_HEALING_WAVE = "Rend (%d+) \195\160 (%d+) points de vie";
|
HEALBOT_SPELL_PATTERN_LESSER_HEALING_WAVE = "Rend (%d+) \195\160 (%d+) points de vie";
|
||||||
HB_SPELL_PATTERN_REJUVENATION = "Soigne la cible de (%d+) durant (%d+) sec";
|
HEALBOT_SPELL_PATTERN_REJUVENATION = "Soigne la cible de (%d+) durant (%d+) sec";
|
||||||
HB_SPELL_PATTERN_REJUVENATION1 = "Soigne la cible de (%d+) a (%d+) durant (%d+) sec";
|
HEALBOT_SPELL_PATTERN_REJUVENATION1 = "Soigne la cible de (%d+) a (%d+) durant (%d+) sec";
|
||||||
HB_SPELL_PATTERN_SHIELD = "absorbe (%d+) points de d\195\169g\195\162ts. Dure (%d+) sec";
|
HEALBOT_SPELL_PATTERN_SHIELD = "absorbe (%d+) points de d\195\169g\195\162ts. Dure (%d+) sec";
|
||||||
HB_SPELL_PATTERN_MEND_PET = "Soigne votre compagnon de (%d+) points de vie chaques secondes que vous le ciblez. Dure (%d+) sec"
|
HEALBOT_SPELL_PATTERN_MEND_PET = "Soigne votre compagnon de (%d+) points de vie chaques secondes que vous le ciblez. Dure (%d+) sec"
|
||||||
|
|
||||||
HB_TOOLTIP_MANA = "^Mana : (%d+)$";
|
HEALBOT_TOOLTIP_MANA = "^Mana : (%d+)$";
|
||||||
HB_TOOLTIP_INSTANT_CAST = 'Incantation imm\195\169diate';
|
HEALBOT_TOOLTIP_INSTANT_CAST = 'Incantation imm\195\169diate';
|
||||||
HB_TOOLTIP_CAST_TIME = '(%d+.?%d*) sec';
|
HEALBOT_TOOLTIP_CAST_TIME = '(%d+.?%d*) sec';
|
||||||
|
|
||||||
HB_TOOLTIP_RANGE = "de (%d+) m"
|
HEALBOT_TOOLTIP_RANGE = "de (%d+) m"
|
||||||
HB_TOOLTIP_CHANNELED = "Focaliser"
|
HEALBOT_TOOLTIP_CHANNELED = "Focaliser"
|
||||||
HB_HASLEFTRAID = "^([^%s]+) a quitt\195\131\194\169 le groupe de raid$";
|
HEALBOT_HASLEFTRAID = "^([^%s]+) a quitt\195\131\194\169 le groupe de raid$";
|
||||||
HB_HASLEFTPARTY = "^([^%s]+) has left the party$"; -- *************** needs French translation ***************
|
HEALBOT_HASLEFTPARTY = "^([^%s]+) has left the party$"; -- *************** needs French translation ***************
|
||||||
HB_YOULEAVETHEGROUP = "You leave the group" -- *************** needs translation ***************
|
HEALBOT_YOULEAVETHEGROUP = "You leave the group" -- *************** needs translation ***************
|
||||||
HB_YOULEAVETHERAID = "You have left the raid group" -- *************** needs translation ***************
|
HEALBOT_YOULEAVETHERAID = "You have left the raid group" -- *************** needs translation ***************
|
||||||
|
|
||||||
-----------------
|
-----------------
|
||||||
-- Translation --
|
-- Translation --
|
||||||
@@ -266,6 +269,7 @@ HEALBOT_OPTIONS_MONITORMELEE = "M\195\169l\195\169e";
|
|||||||
HEALBOT_OPTIONS_MONITORRANGE = "\195\128 distance";
|
HEALBOT_OPTIONS_MONITORRANGE = "\195\128 distance";
|
||||||
HEALBOT_OPTIONS_MONITORHEALERS = "Soigneurs";
|
HEALBOT_OPTIONS_MONITORHEALERS = "Soigneurs";
|
||||||
HEALBOT_OPTIONS_MONITORCUSTOM = "Personnalis\195\169";
|
HEALBOT_OPTIONS_MONITORCUSTOM = "Personnalis\195\169";
|
||||||
|
HEALBOT_OPTIONS_PETS = "Familiers";
|
||||||
|
|
||||||
HEALBOT_OPTIONS_BARALPHAINHEAL= "Incoming heal opacity"; -- *************** needs French translation ***************
|
HEALBOT_OPTIONS_BARALPHAINHEAL= "Incoming heal opacity"; -- *************** needs French translation ***************
|
||||||
|
|
||||||
@@ -333,7 +337,6 @@ HEALBOT_WORDS_SEC = "sec"; -- *************** needs translati
|
|||||||
HEALBOT_WORDS_TO = "to"; -- *************** needs translation ***************
|
HEALBOT_WORDS_TO = "to"; -- *************** needs translation ***************
|
||||||
HEALBOT_WORDS_CAST = "Cast" -- *************** needs translation ***************
|
HEALBOT_WORDS_CAST = "Cast" -- *************** needs translation ***************
|
||||||
HEALBOT_WORDS_FOR = "for"; -- *************** needs translation ***************
|
HEALBOT_WORDS_FOR = "for"; -- *************** needs translation ***************
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+36
-33
@@ -61,6 +61,9 @@ HEALBOT_PRAYER_OF_HEALING = "치유의 기원";
|
|||||||
HEALBOT_CHAIN_HEAL = "연쇄 치유";
|
HEALBOT_CHAIN_HEAL = "연쇄 치유";
|
||||||
|
|
||||||
HEALBOT_POWER_WORD_FORTITUDE = "신의 권능: 인내";
|
HEALBOT_POWER_WORD_FORTITUDE = "신의 권능: 인내";
|
||||||
|
HEALBOT_INNER_FIRE = "내면의 열정";
|
||||||
|
HEALBOT_FEAR_WARD = "공포의 결계";
|
||||||
|
HEALBOT_ENLIGHTEN = "Enlighten";
|
||||||
HEALBOT_MARK_OF_THE_WILD = "야생의 징표";
|
HEALBOT_MARK_OF_THE_WILD = "야생의 징표";
|
||||||
HEALBOT_GREATER_BLESSING_OF_SALVATION = "상급 구원의 축복";
|
HEALBOT_GREATER_BLESSING_OF_SALVATION = "상급 구원의 축복";
|
||||||
|
|
||||||
@@ -97,20 +100,20 @@ HEALBOT_GREATER_BLESSING_OF_SALVATION = "상급 구원의 축복";
|
|||||||
HEALBOT_LIBRARY_INCHEAL = "모든 주문 및 효과에 의한 치유량이 최대 (%d+)만큼 증가합니다%.";
|
HEALBOT_LIBRARY_INCHEAL = "모든 주문 및 효과에 의한 치유량이 최대 (%d+)만큼 증가합니다%.";
|
||||||
HEALBOT_LIBRARY_INCDAMHEAL = "모든 주문 및 효과에 의한 피해와 치유량이 최대 (%d+)만큼 증가합니다%.";
|
HEALBOT_LIBRARY_INCDAMHEAL = "모든 주문 및 효과에 의한 피해와 치유량이 최대 (%d+)만큼 증가합니다%.";
|
||||||
|
|
||||||
HB_BONUSSCANNER_NAMES = {
|
HEALBOT_BONUSSCANNER_NAMES = {
|
||||||
HEAL = "치유량",
|
HEAL = "치유량",
|
||||||
};
|
};
|
||||||
|
|
||||||
HB_BONUSSCANNER_PREFIX_EQUIP = "착용 효과: ";
|
HEALBOT_BONUSSCANNER_PREFIX_EQUIP = "착용 효과: ";
|
||||||
HB_BONUSSCANNER_PREFIX_SET = "세트 효과: ";
|
HEALBOT_BONUSSCANNER_PREFIX_SET = "세트 효과: ";
|
||||||
|
|
||||||
HB_BONUSSCANNER_PATTERNS_PASSIVE = {
|
HEALBOT_BONUSSCANNER_PATTERNS_PASSIVE = {
|
||||||
{ pattern = "모든 주문 및 효과에 의한 치유량이 최대 (%d+)만큼 증가합니다%.", effect = "HEAL" },
|
{ pattern = "모든 주문 및 효과에 의한 치유량이 최대 (%d+)만큼 증가합니다%.", effect = "HEAL" },
|
||||||
{ pattern = "주문과 효과에 의한 치유량이 최대 (%d+)만큼 증가합니다%.", effect = "HEAL" },
|
{ pattern = "주문과 효과에 의한 치유량이 최대 (%d+)만큼 증가합니다%.", effect = "HEAL" },
|
||||||
{ pattern = "모든 주문 및 효과에 의한 피해와 치유량이 최대 (%d+)만큼 증가합니다%.", effect = {"HEAL", "DMG"} },
|
{ pattern = "모든 주문 및 효과에 의한 피해와 치유량이 최대 (%d+)만큼 증가합니다%.", effect = {"HEAL", "DMG"} },
|
||||||
};
|
};
|
||||||
|
|
||||||
HB_BONUSSCANNER_PATTERNS_GENERIC_LOOKUP = {
|
HEALBOT_BONUSSCANNER_PATTERNS_GENERIC_LOOKUP = {
|
||||||
["치유 주문"] = "HEAL",
|
["치유 주문"] = "HEAL",
|
||||||
["치유량 증가"] = "HEAL",
|
["치유량 증가"] = "HEAL",
|
||||||
["치유 효과 증가"] = "HEAL",
|
["치유 효과 증가"] = "HEAL",
|
||||||
@@ -120,7 +123,7 @@ HEALBOT_GREATER_BLESSING_OF_SALVATION = "상급 구원의 축복";
|
|||||||
["치유 및 공격 주문 위력"] = {"HEAL", "DMG"},
|
["치유 및 공격 주문 위력"] = {"HEAL", "DMG"},
|
||||||
};
|
};
|
||||||
|
|
||||||
HB_BONUSSCANNER_PATTERNS_OTHER = {
|
HEALBOT_BONUSSCANNER_PATTERNS_OTHER = {
|
||||||
{ pattern = "잔달라 모조의 인장", effect = {"DMG", "HEAL"}, value = 18 },
|
{ pattern = "잔달라 모조의 인장", effect = {"DMG", "HEAL"}, value = 18 },
|
||||||
{ pattern = "잔달라 평온의 인장", effect = "HEAL", value = 33 },
|
{ pattern = "잔달라 평온의 인장", effect = "HEAL", value = 33 },
|
||||||
|
|
||||||
@@ -132,33 +135,33 @@ HEALBOT_GREATER_BLESSING_OF_SALVATION = "상급 구원의 축복";
|
|||||||
{ pattern = "반짝이는 마나 오일", effect = { "MANAREG", "HEAL"}, value = {12, 25} },
|
{ pattern = "반짝이는 마나 오일", effect = { "MANAREG", "HEAL"}, value = {12, 25} },
|
||||||
};
|
};
|
||||||
|
|
||||||
HB_SPELL_PATTERN_LESSER_HEAL = "대상의 생명력을 (%d+)~(%d+)만큼 회복시킵니다";
|
HEALBOT_SPELL_PATTERN_LESSER_HEAL = "대상의 생명력을 (%d+)~(%d+)만큼 회복시킵니다";
|
||||||
HB_SPELL_PATTERN_HEAL = "대상의 생명력을 (%d+)~(%d+)만큼 회복시킵니다";
|
HEALBOT_SPELL_PATTERN_HEAL = "대상의 생명력을 (%d+)~(%d+)만큼 회복시킵니다";
|
||||||
HB_SPELL_PATTERN_GREATER_HEAL = "대상의 생명력을 (%d+)~(%d+)만큼 회복시킵니다";
|
HEALBOT_SPELL_PATTERN_GREATER_HEAL = "대상의 생명력을 (%d+)~(%d+)만큼 회복시킵니다";
|
||||||
HB_SPELL_PATTERN_FLASH_HEAL = "대상의 생명력을 (%d+)~(%d+)만큼 회복시킵니다";
|
HEALBOT_SPELL_PATTERN_FLASH_HEAL = "대상의 생명력을 (%d+)~(%d+)만큼 회복시킵니다";
|
||||||
HB_SPELL_PATTERN_RENEW = "(%d+)초에 걸쳐 대상의 생명력을 총 (%d+)~(%d+)만큼 회복시킵니다";
|
HEALBOT_SPELL_PATTERN_RENEW = "(%d+)초에 걸쳐 대상의 생명력을 총 (%d+)~(%d+)만큼 회복시킵니다";
|
||||||
HB_SPELL_PATTERN_RENEW1 = "(%d+)초에 걸쳐 대상의 생명력을 총 (%d+)만큼 회복시킵니다";
|
HEALBOT_SPELL_PATTERN_RENEW1 = "(%d+)초에 걸쳐 대상의 생명력을 총 (%d+)만큼 회복시킵니다";
|
||||||
HB_SPELL_PATTERN_SHIELD = "(%d+)의 피해를 흡수합니다. (%d+)초 동안 지속됩니다.";
|
HEALBOT_SPELL_PATTERN_SHIELD = "(%d+)의 피해를 흡수합니다. (%d+)초 동안 지속됩니다.";
|
||||||
HB_SPELL_PATTERN_HEALING_TOUCH = "대상의 생명력을 (%d+)~(%d+)만큼 회복시킵니다";
|
HEALBOT_SPELL_PATTERN_HEALING_TOUCH = "대상의 생명력을 (%d+)~(%d+)만큼 회복시킵니다";
|
||||||
HB_SPELL_PATTERN_REGROWTH = "대상의 생명력을 (%d+)~(%d+)만큼 회복시키고 추가로 (%d+)초에 걸쳐 총 (%d+)의 생명력을 회복시킵니다";
|
HEALBOT_SPELL_PATTERN_REGROWTH = "대상의 생명력을 (%d+)~(%d+)만큼 회복시키고 추가로 (%d+)초에 걸쳐 총 (%d+)의 생명력을 회복시킵니다";
|
||||||
HB_SPELL_PATTERN_REGROWTH1 = "대상의 생명력을 (%d+)~(%d+)만큼 회복시키고 추가로 (%d+)초에 걸쳐 총 (%d+)~(%d+)의 생명력을 회복시킵니다";
|
HEALBOT_SPELL_PATTERN_REGROWTH1 = "대상의 생명력을 (%d+)~(%d+)만큼 회복시키고 추가로 (%d+)초에 걸쳐 총 (%d+)~(%d+)의 생명력을 회복시킵니다";
|
||||||
HB_SPELL_PATTERN_HOLY_LIGHT = "대상의 생명력을 (%d+)~(%d+)만큼 회복시킵니다";
|
HEALBOT_SPELL_PATTERN_HOLY_LIGHT = "대상의 생명력을 (%d+)~(%d+)만큼 회복시킵니다";
|
||||||
HB_SPELL_PATTERN_FLASH_OF_LIGHT = "대상의 생명력을 (%d+)~(%d+)만큼 회복시킵니다";
|
HEALBOT_SPELL_PATTERN_FLASH_OF_LIGHT = "대상의 생명력을 (%d+)~(%d+)만큼 회복시킵니다";
|
||||||
HB_SPELL_PATTERN_HEALING_WAVE = "대상의 생명력을 (%d+)~(%d+)만큼 회복시킵니다";
|
HEALBOT_SPELL_PATTERN_HEALING_WAVE = "대상의 생명력을 (%d+)~(%d+)만큼 회복시킵니다";
|
||||||
HB_SPELL_PATTERN_LESSER_HEALING_WAVE = "대상의 생명력을 (%d+)~(%d+)만큼 회복시킵니다";
|
HEALBOT_SPELL_PATTERN_LESSER_HEALING_WAVE = "대상의 생명력을 (%d+)~(%d+)만큼 회복시킵니다";
|
||||||
HB_SPELL_PATTERN_REJUVENATION = "(%d+)에 걸쳐 (%d+)의 생명력을 회복시킵니다";
|
HEALBOT_SPELL_PATTERN_REJUVENATION = "(%d+)에 걸쳐 (%d+)의 생명력을 회복시킵니다";
|
||||||
HB_SPELL_PATTERN_REJUVENATION1 = "(%d+)에 걸쳐 (%d+)~(%d+)의 생명력을 회복시킵니다";
|
HEALBOT_SPELL_PATTERN_REJUVENATION1 = "(%d+)에 걸쳐 (%d+)~(%d+)의 생명력을 회복시킵니다";
|
||||||
HB_SPELL_PATTERN_MEND_PET = "야수에 정신을 집중하는 동안 매초마다 (%d+)의 생명력을 치료합니다";
|
HEALBOT_SPELL_PATTERN_MEND_PET = "야수에 정신을 집중하는 동안 매초마다 (%d+)의 생명력을 치료합니다";
|
||||||
|
|
||||||
HB_TOOLTIP_MANA = "^마나 (%d+)$";
|
HEALBOT_TOOLTIP_MANA = "^마나 (%d+)$";
|
||||||
HB_TOOLTIP_RANGE = "(%d+)미터";
|
HEALBOT_TOOLTIP_RANGE = "(%d+)미터";
|
||||||
HB_TOOLTIP_INSTANT_CAST = "즉시 시전";
|
HEALBOT_TOOLTIP_INSTANT_CAST = "즉시 시전";
|
||||||
HB_TOOLTIP_CAST_TIME = "(%d+.?%d*)초";
|
HEALBOT_TOOLTIP_CAST_TIME = "(%d+.?%d*)초";
|
||||||
HB_TOOLTIP_CHANNELED = "채널링";
|
HEALBOT_TOOLTIP_CHANNELED = "채널링";
|
||||||
HB_HASLEFTRAID = "^([^%s]+)님이 공격대를 떠났습니다$";
|
HEALBOT_HASLEFTRAID = "^([^%s]+)님이 공격대를 떠났습니다$";
|
||||||
HB_HASLEFTPARTY = "^([^%s]+)님이 파티를 떠났습니다$";
|
HEALBOT_HASLEFTPARTY = "^([^%s]+)님이 파티를 떠났습니다$";
|
||||||
HB_YOULEAVETHEGROUP = "당신은 파티를 떠났습니다"
|
HEALBOT_YOULEAVETHEGROUP = "당신은 파티를 떠났습니다"
|
||||||
HB_YOULEAVETHERAID = "공격대를 떠났습니다"
|
HEALBOT_YOULEAVETHERAID = "공격대를 떠났습니다"
|
||||||
|
|
||||||
-----------------
|
-----------------
|
||||||
-- Translation --
|
-- Translation --
|
||||||
@@ -309,6 +312,7 @@ HEALBOT_GREATER_BLESSING_OF_SALVATION = "상급 구원의 축복";
|
|||||||
HEALBOT_OPTIONS_MONITORRANGE = "원거리";
|
HEALBOT_OPTIONS_MONITORRANGE = "원거리";
|
||||||
HEALBOT_OPTIONS_MONITORHEALERS = "힐러";
|
HEALBOT_OPTIONS_MONITORHEALERS = "힐러";
|
||||||
HEALBOT_OPTIONS_MONITORCUSTOM = "사용자 정의";
|
HEALBOT_OPTIONS_MONITORCUSTOM = "사용자 정의";
|
||||||
|
HEALBOT_OPTIONS_PETS = "소환수";
|
||||||
|
|
||||||
HEALBOT_OPTIONS_SHOWTOOLTIP = "툴팁 표시";
|
HEALBOT_OPTIONS_SHOWTOOLTIP = "툴팁 표시";
|
||||||
HEALBOT_OPTIONS_SHOWDETTOOLTIP = "주문 정보 표시";
|
HEALBOT_OPTIONS_SHOWDETTOOLTIP = "주문 정보 표시";
|
||||||
@@ -329,7 +333,6 @@ HEALBOT_GREATER_BLESSING_OF_SALVATION = "상급 구원의 축복";
|
|||||||
HEALBOT_WORDS_TO = "~";
|
HEALBOT_WORDS_TO = "~";
|
||||||
HEALBOT_WORDS_CAST = "시전"
|
HEALBOT_WORDS_CAST = "시전"
|
||||||
HEALBOT_WORDS_FOR = "for";
|
HEALBOT_WORDS_FOR = "for";
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+137
-2
@@ -1,6 +1,33 @@
|
|||||||
-- HealBot_Model.lua
|
-- HealBot_Model.lua
|
||||||
-- Centralized Data Store and Observer System for HealBotBlue
|
-- Centralized Data Store and Observer System for HealBotBlue
|
||||||
|
|
||||||
|
-- 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)
|
||||||
|
local wasNil = false
|
||||||
|
if not UIDROPDOWNMENU_OPEN_MENU then
|
||||||
|
UIDROPDOWNMENU_OPEN_MENU = "DropDownList1"
|
||||||
|
wasNil = true
|
||||||
|
end
|
||||||
|
UIDropDownMenu_SetSelectedID(frame, id, useValue)
|
||||||
|
if wasNil then
|
||||||
|
UIDROPDOWNMENU_OPEN_MENU = nil
|
||||||
|
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
|
||||||
|
UIDROPDOWNMENU_OPEN_MENU = "DropDownList1"
|
||||||
|
wasNil = true
|
||||||
|
end
|
||||||
|
UIDropDownMenu_SetSelectedValue(frame, value, useValue)
|
||||||
|
if wasNil then
|
||||||
|
UIDROPDOWNMENU_OPEN_MENU = nil
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
HealBot_Model = {
|
HealBot_Model = {
|
||||||
observers = {},
|
observers = {},
|
||||||
units = {},
|
units = {},
|
||||||
@@ -9,7 +36,11 @@ HealBot_Model = {
|
|||||||
partyMembers = {},
|
partyMembers = {},
|
||||||
raidMembers = {},
|
raidMembers = {},
|
||||||
playerPet = nil,
|
playerPet = nil,
|
||||||
target = nil
|
target = nil,
|
||||||
|
|
||||||
|
-- Integration maps
|
||||||
|
unitGUIDs = {}, -- unit -> GUID
|
||||||
|
guidUnits = {} -- GUID -> unit
|
||||||
}
|
}
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
@@ -25,6 +56,7 @@ HealBot_Model = {
|
|||||||
-- "EQUIPMENT_CHANGED"
|
-- "EQUIPMENT_CHANGED"
|
||||||
-- "INCOMING_HEAL_CHANGED"
|
-- "INCOMING_HEAL_CHANGED"
|
||||||
|
|
||||||
|
-- HealBot_Model:RegisterObserver: Registers an observer callback for an event.
|
||||||
function HealBot_Model:RegisterObserver(event, callback)
|
function HealBot_Model:RegisterObserver(event, callback)
|
||||||
if not self.observers[event] then
|
if not self.observers[event] then
|
||||||
self.observers[event] = {}
|
self.observers[event] = {}
|
||||||
@@ -32,6 +64,7 @@ function HealBot_Model:RegisterObserver(event, callback)
|
|||||||
table.insert(self.observers[event], callback)
|
table.insert(self.observers[event], callback)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_Model:NotifyObservers: Fires all registered callbacks for an event.
|
||||||
function HealBot_Model:NotifyObservers(event, unitID, arg1, arg2)
|
function HealBot_Model:NotifyObservers(event, unitID, arg1, arg2)
|
||||||
if self.observers[event] then
|
if self.observers[event] then
|
||||||
local len = table.getn(self.observers[event])
|
local len = table.getn(self.observers[event])
|
||||||
@@ -45,6 +78,7 @@ end
|
|||||||
-- Model Initialization
|
-- Model Initialization
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
-- HealBot_Model:Initialize: Pre-allocates the unit state dictionary.
|
||||||
function HealBot_Model:Initialize()
|
function HealBot_Model:Initialize()
|
||||||
self:InitUnitState("player")
|
self:InitUnitState("player")
|
||||||
self:InitUnitState("target")
|
self:InitUnitState("target")
|
||||||
@@ -63,6 +97,7 @@ function HealBot_Model:Initialize()
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_Model:InitUnitState: Internal utility: HealBot_Model:InitUnitState
|
||||||
function HealBot_Model:InitUnitState(unit)
|
function HealBot_Model:InitUnitState(unit)
|
||||||
if not self.units[unit] then
|
if not self.units[unit] then
|
||||||
self.units[unit] = {
|
self.units[unit] = {
|
||||||
@@ -105,18 +140,118 @@ function HealBot_Model:UpdateUnitIdentity(unit)
|
|||||||
if not self.units[unit] then return false end
|
if not self.units[unit] then return false end
|
||||||
|
|
||||||
local oldName = self.units[unit].name
|
local oldName = self.units[unit].name
|
||||||
|
local oldEnglishClass = self.units[unit].englishClass
|
||||||
local name = UnitName(unit)
|
local name = UnitName(unit)
|
||||||
local _, englishClass = UnitClass(unit)
|
local _, englishClass = UnitClass(unit)
|
||||||
|
|
||||||
if oldName ~= name then
|
if oldName ~= name or oldEnglishClass ~= englishClass then
|
||||||
self.units[unit].name = name
|
self.units[unit].name = name
|
||||||
self.units[unit].englishClass = englishClass
|
self.units[unit].englishClass = englishClass
|
||||||
self.units[unit].class = UnitClass(unit)
|
self.units[unit].class = UnitClass(unit)
|
||||||
|
|
||||||
|
if (HealBot_Integrations_SuperWoW_Active or HealBot_Integrations_ClassicAPI_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
|
return true -- Identity changed
|
||||||
end
|
end
|
||||||
return false
|
return false
|
||||||
end
|
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 not HealBot_GetUnitGUID then return end
|
||||||
|
|
||||||
|
local 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
|
||||||
|
|
||||||
|
local 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
|
||||||
|
|
||||||
|
local stateSwaps = {}
|
||||||
|
local iconSwaps = {}
|
||||||
|
local missingBuffSwaps = {}
|
||||||
|
local 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
|
||||||
|
self.units[targetUnit] = {}
|
||||||
|
for k, v in pairs(stateData) do
|
||||||
|
self.units[targetUnit][k] = v
|
||||||
|
end
|
||||||
|
self.units[targetUnit].icons = {}
|
||||||
|
|
||||||
|
if HealBot_UnitIcons and iconSwaps[targetUnit] then
|
||||||
|
if not HealBot_UnitIcons[targetUnit] then HealBot_UnitIcons[targetUnit] = {} 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.
|
-- Updates health/maxHealth values. Returns true if changed.
|
||||||
function HealBot_Model:UpdateUnitHealth(unit)
|
function HealBot_Model:UpdateUnitHealth(unit)
|
||||||
if not self.units[unit] then return false end
|
if not self.units[unit] then return false end
|
||||||
|
|||||||
+43
-8
@@ -7,6 +7,14 @@ HealBot_Options_CurrentPanel = 0;
|
|||||||
HealBot_ColourObjWaiting = nil
|
HealBot_ColourObjWaiting = nil
|
||||||
|
|
||||||
HealBot_Options_EmergencyFilter_List = {
|
HealBot_Options_EmergencyFilter_List = {
|
||||||
|
HEALBOT_OPTIONS_MONITORALL,
|
||||||
|
HEALBOT_OPTIONS_MONITORMELEE,
|
||||||
|
HEALBOT_OPTIONS_MONITORRANGE,
|
||||||
|
HEALBOT_OPTIONS_MONITORHEALERS,
|
||||||
|
HEALBOT_OPTIONS_MONITORCUSTOM,
|
||||||
|
}
|
||||||
|
|
||||||
|
HealBot_Options_CDCMonitor_List = {
|
||||||
HEALBOT_OPTIONS_MONITORNO,
|
HEALBOT_OPTIONS_MONITORNO,
|
||||||
HEALBOT_OPTIONS_MONITORALL,
|
HEALBOT_OPTIONS_MONITORALL,
|
||||||
HEALBOT_DRUID,
|
HEALBOT_DRUID,
|
||||||
@@ -18,16 +26,14 @@ HealBot_Options_EmergencyFilter_List = {
|
|||||||
HEALBOT_SHAMAN,
|
HEALBOT_SHAMAN,
|
||||||
HEALBOT_WARLOCK,
|
HEALBOT_WARLOCK,
|
||||||
HEALBOT_WARRIOR,
|
HEALBOT_WARRIOR,
|
||||||
HEALBOT_OPTIONS_MONITORMELEE,
|
|
||||||
HEALBOT_OPTIONS_MONITORRANGE,
|
|
||||||
HEALBOT_OPTIONS_MONITORHEALERS,
|
|
||||||
HEALBOT_OPTIONS_MONITORCUSTOM,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
-- HealBot_Options_AddDebug: UI handler for AddDebug options panel.
|
||||||
function HealBot_Options_AddDebug(msg)
|
function HealBot_Options_AddDebug(msg)
|
||||||
HealBot_AddDebug("Options: " .. msg);
|
HealBot_AddDebug("Options: " .. msg);
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_Options_Pct_OnLoad: UI handler for OnLoad options panel.
|
||||||
function HealBot_Options_Pct_OnLoad(this,text)
|
function HealBot_Options_Pct_OnLoad(this,text)
|
||||||
this.text = text;
|
this.text = text;
|
||||||
getglobal(this:GetName().."Text"):SetText(text);
|
getglobal(this:GetName().."Text"):SetText(text);
|
||||||
@@ -37,6 +43,7 @@ function HealBot_Options_Pct_OnLoad(this,text)
|
|||||||
this:SetValueStep(0.01);
|
this:SetValueStep(0.01);
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_Options_Pct_OnLoad_MinMax: UI handler for MinMax options panel.
|
||||||
function HealBot_Options_Pct_OnLoad_MinMax(this,text,Min,Max)
|
function HealBot_Options_Pct_OnLoad_MinMax(this,text,Min,Max)
|
||||||
this.text = text;
|
this.text = text;
|
||||||
local MinTxt,MaxTxt
|
local MinTxt,MaxTxt
|
||||||
@@ -51,6 +58,7 @@ function HealBot_Options_Pct_OnLoad_MinMax(this,text,Min,Max)
|
|||||||
this:SetValueStep(0.01);
|
this:SetValueStep(0.01);
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_Options_val_OnLoad: UI handler for OnLoad options panel.
|
||||||
function HealBot_Options_val_OnLoad(this,text,Min,Max)
|
function HealBot_Options_val_OnLoad(this,text,Min,Max)
|
||||||
this.text = text;
|
this.text = text;
|
||||||
|
|
||||||
@@ -61,6 +69,7 @@ function HealBot_Options_val_OnLoad(this,text,Min,Max)
|
|||||||
this:SetValueStep(1);
|
this:SetValueStep(1);
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_Options_Pct_OnValueChanged: UI handler for OnValueChanged options panel.
|
||||||
function HealBot_Options_Pct_OnValueChanged(this)
|
function HealBot_Options_Pct_OnValueChanged(this)
|
||||||
local pct = math.floor(this:GetValue()*100+0.5);
|
local pct = math.floor(this:GetValue()*100+0.5);
|
||||||
getglobal(this:GetName().."Text"):SetText(this.text .. " (" .. pct .. "%)");
|
getglobal(this:GetName().."Text"):SetText(this.text .. " (" .. pct .. "%)");
|
||||||
@@ -116,10 +125,12 @@ end
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
-- HealBot_Options_CastNotify_OnLoad: UI handler for OnLoad options panel.
|
||||||
function HealBot_Options_CastNotify_OnLoad(this,text)
|
function HealBot_Options_CastNotify_OnLoad(this,text)
|
||||||
getglobal(this:GetName().."Text"):SetText(text);
|
getglobal(this:GetName().."Text"):SetText(text);
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_Options_CastNotify_OnClick: UI handler for OnClick options panel.
|
||||||
function HealBot_Options_CastNotify_OnClick(this,id)
|
function HealBot_Options_CastNotify_OnClick(this,id)
|
||||||
-- CastNotify UI elements were removed and replaced by Custom Chat Messages
|
-- CastNotify UI elements were removed and replaced by Custom Chat Messages
|
||||||
end
|
end
|
||||||
@@ -157,6 +168,7 @@ end
|
|||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
-- HealBot_Returned_Colours: Internal utility: HealBot_Returned_Colours
|
||||||
function HealBot_Returned_Colours()
|
function HealBot_Returned_Colours()
|
||||||
local A = OpacitySliderFrame:GetValue();
|
local A = OpacitySliderFrame:GetValue();
|
||||||
A = ((0-A)+1);
|
A = ((0-A)+1);
|
||||||
@@ -198,6 +210,7 @@ function HealBot_Returned_Colours()
|
|||||||
HealBot_SetSkinColours()
|
HealBot_SetSkinColours()
|
||||||
HealBot_SetCDCBarColours()
|
HealBot_SetCDCBarColours()
|
||||||
end
|
end
|
||||||
|
-- HealBot_UseColourPick: Internal utility: HealBot_UseColourPick
|
||||||
function HealBot_UseColourPick(R, G, B, A)
|
function HealBot_UseColourPick(R, G, B, A)
|
||||||
if ColorPickerFrame:IsVisible() then
|
if ColorPickerFrame:IsVisible() then
|
||||||
ColorPickerFrame:Hide();
|
ColorPickerFrame:Hide();
|
||||||
@@ -218,6 +231,7 @@ function HealBot_UseColourPick(R, G, B, A)
|
|||||||
end
|
end
|
||||||
return ColorPickerFrame:GetColorRGB();
|
return ColorPickerFrame:GetColorRGB();
|
||||||
end
|
end
|
||||||
|
-- HealBot_Options_Defaults_OnClick: UI handler for OnClick options panel.
|
||||||
function HealBot_Options_Defaults_OnClick(this)
|
function HealBot_Options_Defaults_OnClick(this)
|
||||||
HealBot_Options_CastNotify_OnClick(nil,0);
|
HealBot_Options_CastNotify_OnClick(nil,0);
|
||||||
-- HealBot_Config = HealBot_ConfigDefaults;
|
-- HealBot_Config = HealBot_ConfigDefaults;
|
||||||
@@ -229,15 +243,17 @@ function HealBot_Options_Defaults_OnClick(this)
|
|||||||
HealBot_Action_Reset();
|
HealBot_Action_Reset();
|
||||||
HealBot_Config.ActionVisible = HealBot_Action:IsVisible();
|
HealBot_Config.ActionVisible = HealBot_Action:IsVisible();
|
||||||
end
|
end
|
||||||
|
-- HealBot_Options_OnLoad: UI handler for OnLoad options panel.
|
||||||
function HealBot_Options_OnLoad(this)
|
function HealBot_Options_OnLoad(this)
|
||||||
table.insert(UISpecialFrames,this:GetName());
|
table.insert(UISpecialFrames,this:GetName());
|
||||||
|
|
||||||
-- Tabs
|
-- Tabs
|
||||||
PanelTemplates_SetNumTabs(this,7);
|
PanelTemplates_SetNumTabs(this,9);
|
||||||
this.selectedTab = 1;
|
this.selectedTab = 1;
|
||||||
PanelTemplates_UpdateTabs(this);
|
PanelTemplates_UpdateTabs(this);
|
||||||
HealBot_Options_ShowPanel(this.selectedTab);
|
HealBot_Options_ShowPanel(this.selectedTab);
|
||||||
end
|
end
|
||||||
|
-- HealBot_Options_OnShow: UI handler for OnShow options panel.
|
||||||
function HealBot_Options_OnShow(this)
|
function HealBot_Options_OnShow(this)
|
||||||
HealBot_Skins = HealBot_Config.Skins;
|
HealBot_Skins = HealBot_Config.Skins;
|
||||||
HealBot_Options_SetSkins()
|
HealBot_Options_SetSkins()
|
||||||
@@ -247,6 +263,8 @@ function HealBot_Options_OnShow(this)
|
|||||||
HealBot_Options_PanelSounds:SetChecked(HealBot_Config.PanelSounds);
|
HealBot_Options_PanelSounds:SetChecked(HealBot_Config.PanelSounds);
|
||||||
HealBot_Options_ShowManaBars:SetChecked(HealBot_Config.ShowManaBars);
|
HealBot_Options_ShowManaBars:SetChecked(HealBot_Config.ShowManaBars);
|
||||||
HealBot_Options_ManaBarsHealersOnly:SetChecked(HealBot_Config.ManaBarsHealersOnly);
|
HealBot_Options_ManaBarsHealersOnly:SetChecked(HealBot_Config.ManaBarsHealersOnly);
|
||||||
|
if HealBot_Config.ShowNonManaBars == nil then HealBot_Config.ShowNonManaBars = 0; end
|
||||||
|
HealBot_Options_ShowNonManaBars:SetChecked(HealBot_Config.ShowNonManaBars);
|
||||||
|
|
||||||
if HealBot_Config.ActionMouseover == nil then HealBot_Config.ActionMouseover = 1; end
|
if HealBot_Config.ActionMouseover == nil then HealBot_Config.ActionMouseover = 1; end
|
||||||
HealBot_Options_ActionMouseover:SetChecked(HealBot_Config.ActionMouseover);
|
HealBot_Options_ActionMouseover:SetChecked(HealBot_Config.ActionMouseover);
|
||||||
@@ -260,6 +278,9 @@ function HealBot_Options_OnShow(this)
|
|||||||
HealBot_Options_TargetHeals:SetChecked(HealBot_Config.TargetHeals);
|
HealBot_Options_TargetHeals:SetChecked(HealBot_Config.TargetHeals);
|
||||||
HealBot_Options_EmergencyHeals:SetChecked(HealBot_Config.EmergencyHeals);
|
HealBot_Options_EmergencyHeals:SetChecked(HealBot_Config.EmergencyHeals);
|
||||||
HealBot_Options_OverHeal:SetValue(HealBot_Config.OverHeal);
|
HealBot_Options_OverHeal:SetValue(HealBot_Config.OverHeal);
|
||||||
|
if HealBot_Config.ShowHealthText == nil then HealBot_Config.ShowHealthText = 0; end
|
||||||
|
HealBot_UIDropDownMenu_SetSelectedID(HealBot_Options_HealthText, HealBot_Config.ShowHealthText + 1);
|
||||||
|
UIDropDownMenu_SetText(HealBot_Options_HealthText_List[HealBot_Config.ShowHealthText + 1], HealBot_Options_HealthText);
|
||||||
HealBot_Options_CastNotify_OnClick(nil,HealBot_Config.CastNotify);
|
HealBot_Options_CastNotify_OnClick(nil,HealBot_Config.CastNotify);
|
||||||
HealBot_Options_SetBuffs();
|
HealBot_Options_SetBuffs();
|
||||||
HealBot_Options_HideOptions:SetChecked(HealBot_Config.HideOptions);
|
HealBot_Options_HideOptions:SetChecked(HealBot_Config.HideOptions);
|
||||||
@@ -300,14 +321,20 @@ function HealBot_Options_OnShow(this)
|
|||||||
HealBot_Options_SetChatMessages();
|
HealBot_Options_SetChatMessages();
|
||||||
HealBot_Options_ShowPanel(this.selectedTab or 1);
|
HealBot_Options_ShowPanel(this.selectedTab or 1);
|
||||||
end
|
end
|
||||||
|
-- HealBot_Options_SetSkins: UI handler for SetSkins options panel.
|
||||||
function HealBot_Options_SetSkins()
|
function HealBot_Options_SetSkins()
|
||||||
HealBot_Options_Skins_Refresh()
|
HealBot_Options_Skins_Refresh()
|
||||||
HealBot_Options_BarAlpha:SetValue(HealBot_Config.Barcola[HealBot_Config.Current_Skin]);
|
HealBot_Options_BarAlpha:SetValue(HealBot_Config.Barcola[HealBot_Config.Current_Skin]);
|
||||||
HealBot_Options_BarAlphaInHeal:SetValue(HealBot_Config.BarcolaInHeal[HealBot_Config.Current_Skin]);
|
HealBot_Options_BarAlphaInHeal:SetValue(HealBot_Config.BarcolaInHeal[HealBot_Config.Current_Skin]);
|
||||||
HealBot_Options_BarTextureS:SetValue(HealBot_Config.btexture[HealBot_Config.Current_Skin])
|
HealBot_Options_BarTextureS:SetValue(HealBot_Config.btexture[HealBot_Config.Current_Skin])
|
||||||
HealBot_Options_BarHeightS:SetValue(HealBot_Config.bheight[HealBot_Config.Current_Skin])
|
HealBot_Options_BarHeightS:SetValue(HealBot_Config.bheight[HealBot_Config.Current_Skin])
|
||||||
|
HealBot_Options_AbortBarSize:SetValue(HealBot_Config.abortsize[HealBot_Config.Current_Skin])
|
||||||
|
HealBot_Options_FontHeight:SetValue(HealBot_Config.btextheight[HealBot_Config.Current_Skin])
|
||||||
|
HealBot_Options_IconSizeS:SetValue(HealBot_Config.biconsize[HealBot_Config.Current_Skin] or 12)
|
||||||
HealBot_Options_BarWidthS:SetValue(HealBot_Config.bwidth[HealBot_Config.Current_Skin])
|
HealBot_Options_BarWidthS:SetValue(HealBot_Config.bwidth[HealBot_Config.Current_Skin])
|
||||||
HealBot_Options_BarNumColsS:SetValue(HealBot_Config.numcols[HealBot_Config.Current_Skin])
|
HealBot_Options_BarNumColsS:SetValue(HealBot_Config.numcols[HealBot_Config.Current_Skin])
|
||||||
|
HealBot_Options_BarMaxRowsS:SetValue((HealBot_Config.bmaxrows and HealBot_Config.bmaxrows[HealBot_Config.Current_Skin]) or 0)
|
||||||
|
HealBot_Options_GridOrientation:SetChecked(((HealBot_Config.GridOrientation and HealBot_Config.GridOrientation[HealBot_Config.Current_Skin]) == 2) and 1 or nil)
|
||||||
HealBot_Options_BarBRSpaceS:SetValue(HealBot_Config.brspace[HealBot_Config.Current_Skin])
|
HealBot_Options_BarBRSpaceS:SetValue(HealBot_Config.brspace[HealBot_Config.Current_Skin])
|
||||||
HealBot_Options_BarBCSpaceS:SetValue(HealBot_Config.bcspace[HealBot_Config.Current_Skin])
|
HealBot_Options_BarBCSpaceS:SetValue(HealBot_Config.bcspace[HealBot_Config.Current_Skin])
|
||||||
HealBot_Options_FramePaddingS:SetValue((HealBot_Config.bpadding and HealBot_Config.bpadding[HealBot_Config.Current_Skin]) or 10)
|
HealBot_Options_FramePaddingS:SetValue((HealBot_Config.bpadding and HealBot_Config.bpadding[HealBot_Config.Current_Skin]) or 10)
|
||||||
@@ -315,7 +342,8 @@ function HealBot_Options_SetSkins()
|
|||||||
HealBot_Options_FontHeight:SetValue(HealBot_Config.btextheight[HealBot_Config.Current_Skin])
|
HealBot_Options_FontHeight:SetValue(HealBot_Config.btextheight[HealBot_Config.Current_Skin])
|
||||||
HealBot_Options_BarAlphaDis:SetValue(HealBot_Config.bardisa[HealBot_Config.Current_Skin])
|
HealBot_Options_BarAlphaDis:SetValue(HealBot_Config.bardisa[HealBot_Config.Current_Skin])
|
||||||
HealBot_Options_AbortBarSize:SetValue(HealBot_Config.abortsize[HealBot_Config.Current_Skin])
|
HealBot_Options_AbortBarSize:SetValue(HealBot_Config.abortsize[HealBot_Config.Current_Skin])
|
||||||
HealBot_Options_ShowHeaders:SetChecked(HealBot_Config.ShowHeader[HealBot_Config.Current_Skin] or 0)
|
local isShowHeaders = (HealBot_Config.ShowHeader[HealBot_Config.Current_Skin] == 1)
|
||||||
|
HealBot_Options_ShowHeaders:SetChecked(isShowHeaders and 1 or nil)
|
||||||
|
|
||||||
local isColorMode = (HealBot_Config.bcolormode[HealBot_Config.Current_Skin] == 2)
|
local isColorMode = (HealBot_Config.bcolormode[HealBot_Config.Current_Skin] == 2)
|
||||||
HealBot_Options_BarColorMode:SetChecked(isColorMode and 1 or nil)
|
HealBot_Options_BarColorMode:SetChecked(isColorMode and 1 or nil)
|
||||||
@@ -333,12 +361,19 @@ function HealBot_Options_SetSkins()
|
|||||||
HealBot_Options_DeleteSkin:Enable();
|
HealBot_Options_DeleteSkin:Enable();
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
-- HealBot_Options_ShowPanel: UI handler for ShowPanel options panel.
|
||||||
function HealBot_Options_ShowPanel(id)
|
function HealBot_Options_ShowPanel(id)
|
||||||
if HealBot_Options_CurrentPanel>0 then
|
if HealBot_Options_CurrentPanel>0 then
|
||||||
getglobal("HealBot_Options_Panel"..HealBot_Options_CurrentPanel):Hide();
|
local panel = getglobal("HealBot_Options_Panel"..HealBot_Options_CurrentPanel);
|
||||||
|
if panel then
|
||||||
|
panel:Hide();
|
||||||
|
end
|
||||||
end
|
end
|
||||||
HealBot_Options_CurrentPanel = id;
|
HealBot_Options_CurrentPanel = id;
|
||||||
if HealBot_Options_CurrentPanel>0 then
|
if HealBot_Options_CurrentPanel>0 then
|
||||||
getglobal("HealBot_Options_Panel"..HealBot_Options_CurrentPanel):Show();
|
local panel = getglobal("HealBot_Options_Panel"..HealBot_Options_CurrentPanel);
|
||||||
|
if panel then
|
||||||
|
panel:Show();
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
+9
-22
@@ -94,7 +94,7 @@
|
|||||||
<Frame name="HealBot_Options" toplevel="true" frameStrata="DIALOG"
|
<Frame name="HealBot_Options" toplevel="true" frameStrata="DIALOG"
|
||||||
movable="true" parent="UIParent" enableMouse="true" hidden="true">
|
movable="true" parent="UIParent" enableMouse="true" hidden="true">
|
||||||
<Size>
|
<Size>
|
||||||
<AbsDimension x="420" y="455"/>
|
<AbsDimension x="540" y="455"/>
|
||||||
</Size>
|
</Size>
|
||||||
<Anchors>
|
<Anchors>
|
||||||
<Anchor point="CENTER">
|
<Anchor point="CENTER">
|
||||||
@@ -121,7 +121,7 @@
|
|||||||
<Texture name="HealBot_Options_Header"
|
<Texture name="HealBot_Options_Header"
|
||||||
file="Interface\DialogFrame\UI-DialogBox-Header">
|
file="Interface\DialogFrame\UI-DialogBox-Header">
|
||||||
<Size>
|
<Size>
|
||||||
<AbsDimension x="400" y="64"/>
|
<AbsDimension x="450" y="64"/>
|
||||||
</Size>
|
</Size>
|
||||||
<Anchors>
|
<Anchors>
|
||||||
<Anchor point="TOP">
|
<Anchor point="TOP">
|
||||||
@@ -206,38 +206,25 @@
|
|||||||
</Anchor>
|
</Anchor>
|
||||||
</Anchors>
|
</Anchors>
|
||||||
</Button>
|
</Button>
|
||||||
<Button name="HealBot_Options_Defaults" inherits="UIPanelButtonTemplate" text="HEALBOT_OPTIONS_DEFAULTS">
|
<Button name="HealBot_OptionsTab8" inherits="HealBot_Options_Tab" id="8" text="Auto">
|
||||||
<Size>
|
|
||||||
<AbsDimension x="80" y="22"/>
|
|
||||||
</Size>
|
|
||||||
<Anchors>
|
<Anchors>
|
||||||
<Anchor point="BOTTOM" relativePoint="BOTTOM">
|
<Anchor point="LEFT" relativeTo="HealBot_OptionsTab7" relativePoint="RIGHT">
|
||||||
<Offset>
|
<Offset>
|
||||||
<AbsDimension x="-50" y="15"/>
|
<AbsDimension x="-14" y="0" />
|
||||||
</Offset>
|
</Offset>
|
||||||
</Anchor>
|
</Anchor>
|
||||||
</Anchors>
|
</Anchors>
|
||||||
<Scripts>
|
|
||||||
<OnClick>HealBot_Options_Defaults_OnClick(this)</OnClick>
|
|
||||||
</Scripts>
|
|
||||||
</Button>
|
</Button>
|
||||||
<Button name="HealBot_Options_CloseButton" inherits="UIPanelButtonTemplate" text="HEALBOT_OPTIONS_CLOSE">
|
<Button name="HealBot_OptionsTab9" inherits="HealBot_Options_Tab" id="9" text="Extras">
|
||||||
<Size>
|
|
||||||
<AbsDimension x="80" y="22"/>
|
|
||||||
</Size>
|
|
||||||
<Anchors>
|
<Anchors>
|
||||||
<Anchor point="BOTTOM" relativePoint="BOTTOM">
|
<Anchor point="LEFT" relativeTo="HealBot_OptionsTab8" relativePoint="RIGHT">
|
||||||
<Offset>
|
<Offset>
|
||||||
<AbsDimension x="50" y="15"/>
|
<AbsDimension x="-14" y="0" />
|
||||||
</Offset>
|
</Offset>
|
||||||
</Anchor>
|
</Anchor>
|
||||||
</Anchors>
|
</Anchors>
|
||||||
<Scripts>
|
|
||||||
<OnClick>
|
|
||||||
HideUIPanel(this:GetParent());
|
|
||||||
</OnClick>
|
|
||||||
</Scripts>
|
|
||||||
</Button>
|
</Button>
|
||||||
|
|
||||||
</Frames>
|
</Frames>
|
||||||
<Scripts>
|
<Scripts>
|
||||||
<OnLoad>HealBot_Options_OnLoad(this);</OnLoad>
|
<OnLoad>HealBot_Options_OnLoad(this);</OnLoad>
|
||||||
|
|||||||
@@ -0,0 +1,86 @@
|
|||||||
|
-- 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
|
||||||
|
else
|
||||||
|
HealBot_Config.AutoSwap_Enabled = 0
|
||||||
|
end
|
||||||
|
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
|
||||||
|
local dropdownFrame = getglobal(dropdownName)
|
||||||
|
if not dropdownFrame then return end
|
||||||
|
local id = dropdownFrame:GetID()
|
||||||
|
if not id then return end
|
||||||
|
|
||||||
|
for i=1, getn(HealBot_Config.Skins), 1 do
|
||||||
|
local info = {}
|
||||||
|
info.text = HealBot_Config.Skins[i]
|
||||||
|
info.func = HealBot_Options_Auto_OnSelect
|
||||||
|
info.value = id
|
||||||
|
if not HealBot_Config.AutoSwap_Profiles then HealBot_Config.AutoSwap_Profiles = {} end
|
||||||
|
if HealBot_Config.AutoSwap_Profiles[id] == HealBot_Config.Skins[i] then
|
||||||
|
info.checked = 1
|
||||||
|
else
|
||||||
|
info.checked = nil
|
||||||
|
end
|
||||||
|
UIDropDownMenu_AddButton(info)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- HealBot_Options_Auto_OnSelect: UI handler for OnSelect options panel.
|
||||||
|
function HealBot_Options_Auto_OnSelect()
|
||||||
|
local skin = this:GetText()
|
||||||
|
local id = this.value
|
||||||
|
if not id or not skin then return end
|
||||||
|
|
||||||
|
if not HealBot_Config.AutoSwap_Profiles then HealBot_Config.AutoSwap_Profiles = {} end
|
||||||
|
HealBot_Config.AutoSwap_Profiles[id] = skin
|
||||||
|
|
||||||
|
local dropdowns = {
|
||||||
|
"HealBot_Options_Auto_Solo",
|
||||||
|
"HealBot_Options_Auto_Party",
|
||||||
|
"HealBot_Options_Auto_Raid15",
|
||||||
|
"HealBot_Options_Auto_Raid25",
|
||||||
|
"HealBot_Options_Auto_Raid40"
|
||||||
|
}
|
||||||
|
local dropdownName = dropdowns[id]
|
||||||
|
local dropdownFrame = getglobal(dropdownName)
|
||||||
|
HealBot_UIDropDownMenu_SetSelectedValue(dropdownFrame, skin)
|
||||||
|
UIDropDownMenu_SetText(skin, dropdownFrame)
|
||||||
|
|
||||||
|
HealBot_Action_PartyChanged()
|
||||||
|
end
|
||||||
|
|
||||||
|
-- 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)
|
||||||
|
else
|
||||||
|
HealBot_Options_AutoSwap:SetChecked(nil)
|
||||||
|
end
|
||||||
|
|
||||||
|
local dropdowns = {
|
||||||
|
"HealBot_Options_Auto_Solo",
|
||||||
|
"HealBot_Options_Auto_Party",
|
||||||
|
"HealBot_Options_Auto_Raid15",
|
||||||
|
"HealBot_Options_Auto_Raid25",
|
||||||
|
"HealBot_Options_Auto_Raid40"
|
||||||
|
}
|
||||||
|
for id, name in ipairs(dropdowns) do
|
||||||
|
local dropdownFrame = getglobal(name)
|
||||||
|
if dropdownFrame then
|
||||||
|
UIDropDownMenu_SetWidth(150, dropdownFrame)
|
||||||
|
if not HealBot_Config.AutoSwap_Profiles then HealBot_Config.AutoSwap_Profiles = {} end
|
||||||
|
local skin = HealBot_Config.AutoSwap_Profiles[id]
|
||||||
|
if skin then
|
||||||
|
HealBot_UIDropDownMenu_SetSelectedValue(dropdownFrame, skin)
|
||||||
|
UIDropDownMenu_SetText(skin, dropdownFrame)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -0,0 +1,152 @@
|
|||||||
|
<Ui xmlns="http://www.blizzard.com/wow/ui/"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://www.blizzard.com/wow/ui/ ..\FrameXML\UI.xsd">
|
||||||
|
<Script file="HealBot_Options_Auto.lua" />
|
||||||
|
<Frame name="HealBot_Options_Panel8" parent="HealBot_Options" hidden="true" setAllPoints="true">
|
||||||
|
<Frames>
|
||||||
|
<CheckButton name="HealBot_Options_AutoSwap" inherits="OptionsCheckButtonTemplate">
|
||||||
|
<Anchors>
|
||||||
|
<Anchor point="TOPLEFT">
|
||||||
|
<Offset>
|
||||||
|
<AbsDimension x="25" y="-30" />
|
||||||
|
</Offset>
|
||||||
|
</Anchor>
|
||||||
|
</Anchors>
|
||||||
|
<Scripts>
|
||||||
|
<OnLoad>
|
||||||
|
getglobal(this:GetName().."Text"):SetText("Enable Auto-Swap");
|
||||||
|
</OnLoad>
|
||||||
|
<OnClick>
|
||||||
|
HealBot_Options_AutoSwap_OnClick(this);
|
||||||
|
</OnClick>
|
||||||
|
</Scripts>
|
||||||
|
</CheckButton>
|
||||||
|
|
||||||
|
<Frame name="HealBot_Options_Auto_Solo" inherits="UIDropDownMenuTemplate" id="1">
|
||||||
|
<Layers>
|
||||||
|
<Layer level="BACKGROUND">
|
||||||
|
<FontString name="$parentLabel" text="Solo Skin:" inherits="GameFontNormalSmall">
|
||||||
|
<Anchors>
|
||||||
|
<Anchor point="TOPLEFT">
|
||||||
|
<Offset><AbsDimension x="-10" y="15" /></Offset>
|
||||||
|
</Anchor>
|
||||||
|
</Anchors>
|
||||||
|
</FontString>
|
||||||
|
</Layer>
|
||||||
|
</Layers>
|
||||||
|
<Anchors>
|
||||||
|
<Anchor point="TOPLEFT">
|
||||||
|
<Offset><AbsDimension x="30" y="-80" /></Offset>
|
||||||
|
</Anchor>
|
||||||
|
</Anchors>
|
||||||
|
<Scripts>
|
||||||
|
<OnLoad>
|
||||||
|
UIDropDownMenu_Initialize(this, HealBot_Options_Auto_Initialize);
|
||||||
|
</OnLoad>
|
||||||
|
</Scripts>
|
||||||
|
</Frame>
|
||||||
|
|
||||||
|
<Frame name="HealBot_Options_Auto_Party" inherits="UIDropDownMenuTemplate" id="2">
|
||||||
|
<Layers>
|
||||||
|
<Layer level="BACKGROUND">
|
||||||
|
<FontString name="$parentLabel" text="Party Skin:" inherits="GameFontNormalSmall">
|
||||||
|
<Anchors>
|
||||||
|
<Anchor point="TOPLEFT">
|
||||||
|
<Offset><AbsDimension x="-10" y="15" /></Offset>
|
||||||
|
</Anchor>
|
||||||
|
</Anchors>
|
||||||
|
</FontString>
|
||||||
|
</Layer>
|
||||||
|
</Layers>
|
||||||
|
<Anchors>
|
||||||
|
<Anchor point="TOPLEFT">
|
||||||
|
<Offset><AbsDimension x="30" y="-130" /></Offset>
|
||||||
|
</Anchor>
|
||||||
|
</Anchors>
|
||||||
|
<Scripts>
|
||||||
|
<OnLoad>
|
||||||
|
UIDropDownMenu_Initialize(this, HealBot_Options_Auto_Initialize);
|
||||||
|
</OnLoad>
|
||||||
|
</Scripts>
|
||||||
|
</Frame>
|
||||||
|
|
||||||
|
<Frame name="HealBot_Options_Auto_Raid15" inherits="UIDropDownMenuTemplate" id="3">
|
||||||
|
<Layers>
|
||||||
|
<Layer level="BACKGROUND">
|
||||||
|
<FontString name="$parentLabel" text="Raid 15 Skin:" inherits="GameFontNormalSmall">
|
||||||
|
<Anchors>
|
||||||
|
<Anchor point="TOPLEFT">
|
||||||
|
<Offset><AbsDimension x="-10" y="15" /></Offset>
|
||||||
|
</Anchor>
|
||||||
|
</Anchors>
|
||||||
|
</FontString>
|
||||||
|
</Layer>
|
||||||
|
</Layers>
|
||||||
|
<Anchors>
|
||||||
|
<Anchor point="TOPLEFT">
|
||||||
|
<Offset><AbsDimension x="30" y="-180" /></Offset>
|
||||||
|
</Anchor>
|
||||||
|
</Anchors>
|
||||||
|
<Scripts>
|
||||||
|
<OnLoad>
|
||||||
|
UIDropDownMenu_Initialize(this, HealBot_Options_Auto_Initialize);
|
||||||
|
</OnLoad>
|
||||||
|
</Scripts>
|
||||||
|
</Frame>
|
||||||
|
|
||||||
|
<Frame name="HealBot_Options_Auto_Raid25" inherits="UIDropDownMenuTemplate" id="4">
|
||||||
|
<Layers>
|
||||||
|
<Layer level="BACKGROUND">
|
||||||
|
<FontString name="$parentLabel" text="Raid 25 Skin:" inherits="GameFontNormalSmall">
|
||||||
|
<Anchors>
|
||||||
|
<Anchor point="TOPLEFT">
|
||||||
|
<Offset><AbsDimension x="-10" y="15" /></Offset>
|
||||||
|
</Anchor>
|
||||||
|
</Anchors>
|
||||||
|
</FontString>
|
||||||
|
</Layer>
|
||||||
|
</Layers>
|
||||||
|
<Anchors>
|
||||||
|
<Anchor point="TOPLEFT">
|
||||||
|
<Offset><AbsDimension x="30" y="-230" /></Offset>
|
||||||
|
</Anchor>
|
||||||
|
</Anchors>
|
||||||
|
<Scripts>
|
||||||
|
<OnLoad>
|
||||||
|
UIDropDownMenu_Initialize(this, HealBot_Options_Auto_Initialize);
|
||||||
|
</OnLoad>
|
||||||
|
</Scripts>
|
||||||
|
</Frame>
|
||||||
|
|
||||||
|
<Frame name="HealBot_Options_Auto_Raid40" inherits="UIDropDownMenuTemplate" id="5">
|
||||||
|
<Layers>
|
||||||
|
<Layer level="BACKGROUND">
|
||||||
|
<FontString name="$parentLabel" text="Raid 40 Skin:" inherits="GameFontNormalSmall">
|
||||||
|
<Anchors>
|
||||||
|
<Anchor point="TOPLEFT">
|
||||||
|
<Offset><AbsDimension x="-10" y="15" /></Offset>
|
||||||
|
</Anchor>
|
||||||
|
</Anchors>
|
||||||
|
</FontString>
|
||||||
|
</Layer>
|
||||||
|
</Layers>
|
||||||
|
<Anchors>
|
||||||
|
<Anchor point="TOPLEFT">
|
||||||
|
<Offset><AbsDimension x="30" y="-280" /></Offset>
|
||||||
|
</Anchor>
|
||||||
|
</Anchors>
|
||||||
|
<Scripts>
|
||||||
|
<OnLoad>
|
||||||
|
UIDropDownMenu_Initialize(this, HealBot_Options_Auto_Initialize);
|
||||||
|
</OnLoad>
|
||||||
|
</Scripts>
|
||||||
|
</Frame>
|
||||||
|
|
||||||
|
</Frames>
|
||||||
|
<Scripts>
|
||||||
|
<OnShow>
|
||||||
|
HealBot_Options_Auto_OnShow(this);
|
||||||
|
</OnShow>
|
||||||
|
</Scripts>
|
||||||
|
</Frame>
|
||||||
|
</Ui>
|
||||||
+21
-11
@@ -1,6 +1,7 @@
|
|||||||
-- HealBot Options panel file: HealBot_Options_Buffs.lua
|
-- HealBot Options panel file: HealBot_Options_Buffs.lua
|
||||||
-- Split from original HealBot_Options.lua
|
-- Split from original HealBot_Options.lua
|
||||||
|
|
||||||
|
-- HealBot_Options_BuffWatch_OnClick: UI handler for OnClick options panel.
|
||||||
function HealBot_Options_BuffWatch_OnClick(self)
|
function HealBot_Options_BuffWatch_OnClick(self)
|
||||||
local frame = self or this
|
local frame = self or this
|
||||||
HealBot_Config.BuffWatch = frame:GetChecked() or 0;
|
HealBot_Config.BuffWatch = frame:GetChecked() or 0;
|
||||||
@@ -9,23 +10,27 @@ function HealBot_Options_BuffWatch_OnClick(self)
|
|||||||
else
|
else
|
||||||
HealBot_Options_BuffWatchInCombat:Enable()
|
HealBot_Options_BuffWatchInCombat:Enable()
|
||||||
end
|
end
|
||||||
HealBot_RecalcParty();
|
HealBot_Action_RefreshButtons(nil);
|
||||||
end
|
end
|
||||||
|
-- HealBot_Options_BuffWatchInCombat_OnClick: UI handler for OnClick options panel.
|
||||||
function HealBot_Options_BuffWatchInCombat_OnClick(self)
|
function HealBot_Options_BuffWatchInCombat_OnClick(self)
|
||||||
local frame = self or this
|
local frame = self or this
|
||||||
HealBot_Config.BuffWatchInCombat = frame:GetChecked() or 0;
|
HealBot_Config.BuffWatchInCombat = frame:GetChecked() or 0;
|
||||||
HealBot_RecalcParty();
|
HealBot_Action_RefreshButtons(nil);
|
||||||
end
|
end
|
||||||
|
-- HealBot_Options_BuffSelf_OnLoad: UI handler for OnLoad options panel.
|
||||||
function HealBot_Options_BuffSelf_OnLoad(self)
|
function HealBot_Options_BuffSelf_OnLoad(self)
|
||||||
local frame = self or this
|
local frame = self or this
|
||||||
getglobal(this:GetName().."Text"):SetText("Self Only")
|
getglobal(this:GetName().."Text"):SetText("Self Only")
|
||||||
local id = this:GetID()
|
local id = this:GetID()
|
||||||
if HealBot_Config.BuffWatchSelf and HealBot_Config.BuffWatchSelf[id] then
|
if HealBot_Config.BuffWatchSelf and HealBot_Config.BuffWatchSelf[id] then
|
||||||
this:SetChecked(HealBot_Config.BuffWatchSelf[id])
|
local isSelf = (HealBot_Config.BuffWatchSelf[id] == 1)
|
||||||
|
this:SetChecked(isSelf and 1 or nil)
|
||||||
else
|
else
|
||||||
this:SetChecked(0)
|
this:SetChecked(nil)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
-- HealBot_Options_BuffSelf_OnClick: UI handler for OnClick options panel.
|
||||||
function HealBot_Options_BuffSelf_OnClick(self)
|
function HealBot_Options_BuffSelf_OnClick(self)
|
||||||
local frame = self or this
|
local frame = self or this
|
||||||
local id = this:GetID()
|
local id = this:GetID()
|
||||||
@@ -37,13 +42,15 @@ function HealBot_Options_BuffSelf_OnClick(self)
|
|||||||
else
|
else
|
||||||
HealBot_Config.BuffWatchSelf[id] = 0
|
HealBot_Config.BuffWatchSelf[id] = 0
|
||||||
end
|
end
|
||||||
HealBot_RecalcParty();
|
HealBot_Action_RefreshButtons(nil);
|
||||||
end
|
end
|
||||||
|
-- HealBot_Options_Buff_OnLoad: UI handler for OnLoad options panel.
|
||||||
function HealBot_Options_Buff_OnLoad(self)
|
function HealBot_Options_Buff_OnLoad(self)
|
||||||
local frame = self or this
|
local frame = self or this
|
||||||
UIDropDownMenu_Initialize(frame, HealBot_Options_Buff_Initialize)
|
UIDropDownMenu_Initialize(frame, HealBot_Options_Buff_Initialize)
|
||||||
UIDropDownMenu_SetWidth(110, frame)
|
UIDropDownMenu_SetWidth(110, frame)
|
||||||
end
|
end
|
||||||
|
-- HealBot_Options_Buff_Initialize: UI handler for Initialize options panel.
|
||||||
function HealBot_Options_Buff_Initialize()
|
function HealBot_Options_Buff_Initialize()
|
||||||
local myClass = UnitClass("player")
|
local myClass = UnitClass("player")
|
||||||
local info
|
local info
|
||||||
@@ -62,6 +69,7 @@ function HealBot_Options_Buff_Initialize()
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
-- HealBot_Options_Buff_OnClick: UI handler for OnClick options panel.
|
||||||
function HealBot_Options_Buff_OnClick()
|
function HealBot_Options_Buff_OnClick()
|
||||||
local frameName = UIDROPDOWNMENU_OPEN_MENU
|
local frameName = UIDROPDOWNMENU_OPEN_MENU
|
||||||
local frame = getglobal(frameName)
|
local frame = getglobal(frameName)
|
||||||
@@ -77,10 +85,11 @@ function HealBot_Options_Buff_OnClick()
|
|||||||
text = HealBot_Buff_Spells[myClass][this.value]
|
text = HealBot_Buff_Spells[myClass][this.value]
|
||||||
end
|
end
|
||||||
|
|
||||||
UIDropDownMenu_SetSelectedID(frame, this.value + 1)
|
HealBot_UIDropDownMenu_SetSelectedID(frame, this.value + 1)
|
||||||
UIDropDownMenu_SetText(text, frame)
|
UIDropDownMenu_SetText(text, frame)
|
||||||
HealBot_RecalcParty();
|
HealBot_Action_RefreshButtons(nil);
|
||||||
end
|
end
|
||||||
|
-- HealBot_Options_SetBuffs: UI handler for SetBuffs options panel.
|
||||||
function HealBot_Options_SetBuffs()
|
function HealBot_Options_SetBuffs()
|
||||||
local myClass = UnitClass("player")
|
local myClass = UnitClass("player")
|
||||||
if HealBot_Options_BuffWatch then
|
if HealBot_Options_BuffWatch then
|
||||||
@@ -101,15 +110,16 @@ function HealBot_Options_SetBuffs()
|
|||||||
if dropDown then
|
if dropDown then
|
||||||
local val = HealBot_Config.BuffDropDowns[myClass][i] or 0
|
local val = HealBot_Config.BuffDropDowns[myClass][i] or 0
|
||||||
UIDropDownMenu_Initialize(dropDown, HealBot_Options_Buff_Initialize)
|
UIDropDownMenu_Initialize(dropDown, HealBot_Options_Buff_Initialize)
|
||||||
UIDropDownMenu_SetSelectedID(dropDown, val + 1)
|
HealBot_UIDropDownMenu_SetSelectedID(dropDown, val + 1)
|
||||||
end
|
end
|
||||||
|
|
||||||
local selfCheck = getglobal("HealBot_Options_BuffSelf" .. i)
|
local selfCheck = getglobal("HealBot_Options_Buff" .. i .. "Self")
|
||||||
if selfCheck then
|
if selfCheck then
|
||||||
if HealBot_Config.BuffWatchSelf and HealBot_Config.BuffWatchSelf[i] then
|
if HealBot_Config.BuffWatchSelf and HealBot_Config.BuffWatchSelf[i] then
|
||||||
selfCheck:SetChecked(HealBot_Config.BuffWatchSelf[i])
|
local isSelf = (HealBot_Config.BuffWatchSelf[i] == 1)
|
||||||
|
selfCheck:SetChecked(isSelf and 1 or nil)
|
||||||
else
|
else
|
||||||
selfCheck:SetChecked(0)
|
selfCheck:SetChecked(nil)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -123,7 +123,7 @@
|
|||||||
<Anchors>
|
<Anchors>
|
||||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_Buff1" relativePoint="BOTTOMLEFT">
|
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_Buff1" relativePoint="BOTTOMLEFT">
|
||||||
<Offset>
|
<Offset>
|
||||||
<AbsDimension x="0" y="-20" />
|
<AbsDimension x="0" y="-35" />
|
||||||
</Offset>
|
</Offset>
|
||||||
</Anchor>
|
</Anchor>
|
||||||
</Anchors>
|
</Anchors>
|
||||||
@@ -160,7 +160,7 @@
|
|||||||
<Anchors>
|
<Anchors>
|
||||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_Buff2" relativePoint="BOTTOMLEFT">
|
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_Buff2" relativePoint="BOTTOMLEFT">
|
||||||
<Offset>
|
<Offset>
|
||||||
<AbsDimension x="0" y="-20" />
|
<AbsDimension x="0" y="-35" />
|
||||||
</Offset>
|
</Offset>
|
||||||
</Anchor>
|
</Anchor>
|
||||||
</Anchors>
|
</Anchors>
|
||||||
@@ -197,7 +197,7 @@
|
|||||||
<Anchors>
|
<Anchors>
|
||||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_Buff3" relativePoint="BOTTOMLEFT">
|
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_Buff3" relativePoint="BOTTOMLEFT">
|
||||||
<Offset>
|
<Offset>
|
||||||
<AbsDimension x="0" y="-20" />
|
<AbsDimension x="0" y="-35" />
|
||||||
</Offset>
|
</Offset>
|
||||||
</Anchor>
|
</Anchor>
|
||||||
</Anchors>
|
</Anchors>
|
||||||
@@ -271,7 +271,7 @@
|
|||||||
<Anchors>
|
<Anchors>
|
||||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_Buff5" relativePoint="BOTTOMLEFT">
|
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_Buff5" relativePoint="BOTTOMLEFT">
|
||||||
<Offset>
|
<Offset>
|
||||||
<AbsDimension x="0" y="-20" />
|
<AbsDimension x="0" y="-35" />
|
||||||
</Offset>
|
</Offset>
|
||||||
</Anchor>
|
</Anchor>
|
||||||
</Anchors>
|
</Anchors>
|
||||||
@@ -308,7 +308,7 @@
|
|||||||
<Anchors>
|
<Anchors>
|
||||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_Buff6" relativePoint="BOTTOMLEFT">
|
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_Buff6" relativePoint="BOTTOMLEFT">
|
||||||
<Offset>
|
<Offset>
|
||||||
<AbsDimension x="0" y="-20" />
|
<AbsDimension x="0" y="-35" />
|
||||||
</Offset>
|
</Offset>
|
||||||
</Anchor>
|
</Anchor>
|
||||||
</Anchors>
|
</Anchors>
|
||||||
@@ -345,7 +345,7 @@
|
|||||||
<Anchors>
|
<Anchors>
|
||||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_Buff7" relativePoint="BOTTOMLEFT">
|
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_Buff7" relativePoint="BOTTOMLEFT">
|
||||||
<Offset>
|
<Offset>
|
||||||
<AbsDimension x="0" y="-20" />
|
<AbsDimension x="0" y="-35" />
|
||||||
</Offset>
|
</Offset>
|
||||||
</Anchor>
|
</Anchor>
|
||||||
</Anchors>
|
</Anchors>
|
||||||
|
|||||||
+80
-31
@@ -1,15 +1,19 @@
|
|||||||
-- HealBot Options panel file: HealBot_Options_CDC.lua
|
-- HealBot Options panel file: HealBot_Options_CDC.lua
|
||||||
-- Split from original HealBot_Options.lua
|
-- Split from original HealBot_Options.lua
|
||||||
|
|
||||||
|
-- HealBot_Options_ShowDebuffWarning_OnLoad: UI handler for OnLoad options panel.
|
||||||
function HealBot_Options_ShowDebuffWarning_OnLoad(this,text)
|
function HealBot_Options_ShowDebuffWarning_OnLoad(this,text)
|
||||||
getglobal(this:GetName().."Text"):SetText(text);
|
getglobal(this:GetName().."Text"):SetText(text);
|
||||||
end
|
end
|
||||||
|
-- HealBot_Options_ShowDebuffWarning_OnClick: UI handler for OnClick options panel.
|
||||||
function HealBot_Options_ShowDebuffWarning_OnClick(this)
|
function HealBot_Options_ShowDebuffWarning_OnClick(this)
|
||||||
HealBot_Config.ShowDebuffWarning = this:GetChecked() or 0;
|
HealBot_Config.ShowDebuffWarning = this:GetChecked() or 0;
|
||||||
end
|
end
|
||||||
|
-- HealBot_Options_SoundDebuffWarning_OnLoad: UI handler for OnLoad options panel.
|
||||||
function HealBot_Options_SoundDebuffWarning_OnLoad(this,text)
|
function HealBot_Options_SoundDebuffWarning_OnLoad(this,text)
|
||||||
getglobal(this:GetName().."Text"):SetText(text);
|
getglobal(this:GetName().."Text"):SetText(text);
|
||||||
end
|
end
|
||||||
|
-- HealBot_Options_SoundDebuffWarning_OnClick: UI handler for OnClick options panel.
|
||||||
function HealBot_Options_SoundDebuffWarning_OnClick(this)
|
function HealBot_Options_SoundDebuffWarning_OnClick(this)
|
||||||
HealBot_Config.SoundDebuffWarning = this:GetChecked() or 0;
|
HealBot_Config.SoundDebuffWarning = this:GetChecked() or 0;
|
||||||
if HealBot_Config.SoundDebuffWarning==0 then
|
if HealBot_Config.SoundDebuffWarning==0 then
|
||||||
@@ -22,9 +26,11 @@ function HealBot_Options_SoundDebuffWarning_OnClick(this)
|
|||||||
HealBot_WarningSound3:Enable();
|
HealBot_WarningSound3:Enable();
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
-- HealBot_WarningSound_OnLoad: Internal utility: HealBot_WarningSound_OnLoad
|
||||||
function HealBot_WarningSound_OnLoad(this,text)
|
function HealBot_WarningSound_OnLoad(this,text)
|
||||||
getglobal(this:GetName().."Text"):SetText(text);
|
getglobal(this:GetName().."Text"):SetText(text);
|
||||||
end
|
end
|
||||||
|
-- HealBot_WarningSound_OnClick: Click event handler.
|
||||||
function HealBot_WarningSound_OnClick(this,id)
|
function HealBot_WarningSound_OnClick(this,id)
|
||||||
if HealBot_Config.SoundDebuffPlay>0 then
|
if HealBot_Config.SoundDebuffPlay>0 then
|
||||||
getglobal("HealBot_WarningSound"..HealBot_Config.SoundDebuffPlay):SetChecked(nil);
|
getglobal("HealBot_WarningSound"..HealBot_Config.SoundDebuffPlay):SetChecked(nil);
|
||||||
@@ -37,6 +43,7 @@ function HealBot_WarningSound_OnClick(this,id)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
-- HealBot_Options_CDCMonitor_DropDown: UI handler for DropDown options panel.
|
||||||
function HealBot_Options_CDCMonitor_DropDown()
|
function HealBot_Options_CDCMonitor_DropDown()
|
||||||
for i=1, getn(HealBot_Options_EmergencyFilter_List), 1 do
|
for i=1, getn(HealBot_Options_EmergencyFilter_List), 1 do
|
||||||
local info = {};
|
local info = {};
|
||||||
@@ -45,23 +52,28 @@ function HealBot_Options_CDCMonitor_DropDown()
|
|||||||
UIDropDownMenu_AddButton(info);
|
UIDropDownMenu_AddButton(info);
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
-- HealBot_Options_CDCMonitor_Initialize: UI handler for Initialize options panel.
|
||||||
function HealBot_Options_CDCMonitor_Initialize()
|
function HealBot_Options_CDCMonitor_Initialize()
|
||||||
UIDropDownMenu_Initialize(HealBot_Options_CDCMonitor,HealBot_Options_CDCMonitor_DropDown)
|
UIDropDownMenu_Initialize(HealBot_Options_CDCMonitor,HealBot_Options_CDCMonitor_DropDown)
|
||||||
end
|
end
|
||||||
|
-- HealBot_Options_CDCMonitor_Refresh: UI handler for Refresh options panel.
|
||||||
function HealBot_Options_CDCMonitor_Refresh(onselect)
|
function HealBot_Options_CDCMonitor_Refresh(onselect)
|
||||||
if not HealBot_Config.CDCMonitor then return end
|
if not HealBot_Config.CDCMonitor then return end
|
||||||
if not onselect then HealBot_Options_CDCMonitor_Initialize() end -- or wrong menu may be used !
|
if not onselect then HealBot_Options_CDCMonitor_Initialize() end -- or wrong menu may be used !
|
||||||
UIDropDownMenu_SetSelectedID(HealBot_Options_CDCMonitor,HealBot_Config.CDCMonitor)
|
HealBot_UIDropDownMenu_SetSelectedID(HealBot_Options_CDCMonitor,HealBot_Config.CDCMonitor)
|
||||||
end
|
end
|
||||||
|
-- HealBot_Options_CDCMonitor_OnLoad: UI handler for OnLoad options panel.
|
||||||
function HealBot_Options_CDCMonitor_OnLoad()
|
function HealBot_Options_CDCMonitor_OnLoad()
|
||||||
UIDropDownMenu_Initialize(this, HealBot_Options_CDCMonitor_DropDown)
|
UIDropDownMenu_Initialize(this, HealBot_Options_CDCMonitor_DropDown)
|
||||||
UIDropDownMenu_SetWidth(100, this)
|
UIDropDownMenu_SetWidth(100, this)
|
||||||
end
|
end
|
||||||
|
-- HealBot_Options_CDCMonitor_OnSelect: UI handler for OnSelect options panel.
|
||||||
function HealBot_Options_CDCMonitor_OnSelect()
|
function HealBot_Options_CDCMonitor_OnSelect()
|
||||||
HealBot_Config.CDCMonitor = this:GetID()
|
HealBot_Config.CDCMonitor = this:GetID()
|
||||||
HealBot_Options_CDCMonitor_Refresh(true)
|
HealBot_Options_CDCMonitor_Refresh(true)
|
||||||
HealBot_Options_CDCMonitor_Reset()
|
HealBot_Options_CDCMonitor_Reset()
|
||||||
end
|
end
|
||||||
|
-- HealBot_Options_CDCMonitor_Reset: UI handler for Reset options panel.
|
||||||
function HealBot_Options_CDCMonitor_Reset()
|
function HealBot_Options_CDCMonitor_Reset()
|
||||||
|
|
||||||
HealBot_CDCInc[HEALBOT_DRUID] = 0;
|
HealBot_CDCInc[HEALBOT_DRUID] = 0;
|
||||||
@@ -73,7 +85,7 @@ function HealBot_Options_CDCMonitor_Reset()
|
|||||||
HealBot_CDCInc[HEALBOT_SHAMAN] = 0;
|
HealBot_CDCInc[HEALBOT_SHAMAN] = 0;
|
||||||
HealBot_CDCInc[HEALBOT_WARLOCK] = 0;
|
HealBot_CDCInc[HEALBOT_WARLOCK] = 0;
|
||||||
HealBot_CDCInc[HEALBOT_WARRIOR] = 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_DRUID] = 1;
|
||||||
HealBot_CDCInc[HEALBOT_HUNTER] = 1;
|
HealBot_CDCInc[HEALBOT_HUNTER] = 1;
|
||||||
HealBot_CDCInc[HEALBOT_MAGE] = 1;
|
HealBot_CDCInc[HEALBOT_MAGE] = 1;
|
||||||
@@ -83,25 +95,7 @@ function HealBot_Options_CDCMonitor_Reset()
|
|||||||
HealBot_CDCInc[HEALBOT_SHAMAN] = 1;
|
HealBot_CDCInc[HEALBOT_SHAMAN] = 1;
|
||||||
HealBot_CDCInc[HEALBOT_WARLOCK] = 1;
|
HealBot_CDCInc[HEALBOT_WARLOCK] = 1;
|
||||||
HealBot_CDCInc[HEALBOT_WARRIOR] = 1;
|
HealBot_CDCInc[HEALBOT_WARRIOR] = 1;
|
||||||
elseif HealBot_Config.CDCMonitor==3 then
|
elseif HealBot_Config.CDCMonitor==2 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
|
|
||||||
HealBot_CDCInc[HEALBOT_DRUID] = HealBot_Config.EmergIncMelee[HEALBOT_DRUID];
|
HealBot_CDCInc[HEALBOT_DRUID] = HealBot_Config.EmergIncMelee[HEALBOT_DRUID];
|
||||||
HealBot_CDCInc[HEALBOT_HUNTER] = HealBot_Config.EmergIncMelee[HEALBOT_HUNTER];
|
HealBot_CDCInc[HEALBOT_HUNTER] = HealBot_Config.EmergIncMelee[HEALBOT_HUNTER];
|
||||||
HealBot_CDCInc[HEALBOT_MAGE] = HealBot_Config.EmergIncMelee[HEALBOT_MAGE];
|
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_SHAMAN] = HealBot_Config.EmergIncMelee[HEALBOT_SHAMAN];
|
||||||
HealBot_CDCInc[HEALBOT_WARLOCK] = HealBot_Config.EmergIncMelee[HEALBOT_WARLOCK];
|
HealBot_CDCInc[HEALBOT_WARLOCK] = HealBot_Config.EmergIncMelee[HEALBOT_WARLOCK];
|
||||||
HealBot_CDCInc[HEALBOT_WARRIOR] = HealBot_Config.EmergIncMelee[HEALBOT_WARRIOR];
|
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_DRUID] = HealBot_Config.EmergIncRange[HEALBOT_DRUID];
|
||||||
HealBot_CDCInc[HEALBOT_HUNTER] = HealBot_Config.EmergIncRange[HEALBOT_HUNTER];
|
HealBot_CDCInc[HEALBOT_HUNTER] = HealBot_Config.EmergIncRange[HEALBOT_HUNTER];
|
||||||
HealBot_CDCInc[HEALBOT_MAGE] = HealBot_Config.EmergIncRange[HEALBOT_MAGE];
|
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_SHAMAN] = HealBot_Config.EmergIncRange[HEALBOT_SHAMAN];
|
||||||
HealBot_CDCInc[HEALBOT_WARLOCK] = HealBot_Config.EmergIncRange[HEALBOT_WARLOCK];
|
HealBot_CDCInc[HEALBOT_WARLOCK] = HealBot_Config.EmergIncRange[HEALBOT_WARLOCK];
|
||||||
HealBot_CDCInc[HEALBOT_WARRIOR] = HealBot_Config.EmergIncRange[HEALBOT_WARRIOR];
|
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_DRUID] = HealBot_Config.EmergIncHealers[HEALBOT_DRUID];
|
||||||
HealBot_CDCInc[HEALBOT_HUNTER] = HealBot_Config.EmergIncHealers[HEALBOT_HUNTER];
|
HealBot_CDCInc[HEALBOT_HUNTER] = HealBot_Config.EmergIncHealers[HEALBOT_HUNTER];
|
||||||
HealBot_CDCInc[HEALBOT_MAGE] = HealBot_Config.EmergIncHealers[HEALBOT_MAGE];
|
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_SHAMAN] = HealBot_Config.EmergIncHealers[HEALBOT_SHAMAN];
|
||||||
HealBot_CDCInc[HEALBOT_WARLOCK] = HealBot_Config.EmergIncHealers[HEALBOT_WARLOCK];
|
HealBot_CDCInc[HEALBOT_WARLOCK] = HealBot_Config.EmergIncHealers[HEALBOT_WARLOCK];
|
||||||
HealBot_CDCInc[HEALBOT_WARRIOR] = HealBot_Config.EmergIncHealers[HEALBOT_WARRIOR];
|
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_DRUID] = HealBot_Config.EmergIncCustom[HEALBOT_DRUID];
|
||||||
HealBot_CDCInc[HEALBOT_HUNTER] = HealBot_Config.EmergIncCustom[HEALBOT_HUNTER];
|
HealBot_CDCInc[HEALBOT_HUNTER] = HealBot_Config.EmergIncCustom[HEALBOT_HUNTER];
|
||||||
HealBot_CDCInc[HEALBOT_MAGE] = HealBot_Config.EmergIncCustom[HEALBOT_MAGE];
|
HealBot_CDCInc[HEALBOT_MAGE] = HealBot_Config.EmergIncCustom[HEALBOT_MAGE];
|
||||||
@@ -145,10 +139,34 @@ function HealBot_Options_CDCMonitor_Reset()
|
|||||||
|
|
||||||
HealBot_Action_PartyChanged()
|
HealBot_Action_PartyChanged()
|
||||||
end
|
end
|
||||||
|
-- HealBot_Options_GetDebuffSpells_List: UI handler for List options panel.
|
||||||
function HealBot_Options_GetDebuffSpells_List(class)
|
function HealBot_Options_GetDebuffSpells_List(class)
|
||||||
local DebuffSpells = HealBot_Debuff_Spells[class];
|
local DebuffSpells = HealBot_Debuff_Spells[class];
|
||||||
return DebuffSpells;
|
return DebuffSpells;
|
||||||
end
|
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()
|
function HealBot_Options_CDCButLeft_DropDown()
|
||||||
local classEN=HealBot_UnitClass("player")
|
local classEN=HealBot_UnitClass("player")
|
||||||
if classEN=="PRIEST" or classEN=="DRUID" or classEN=="PALADIN" or classEN=="SHAMAN" then
|
if classEN=="PRIEST" or classEN=="DRUID" or classEN=="PALADIN" or classEN=="SHAMAN" then
|
||||||
@@ -169,6 +187,7 @@ function HealBot_Options_CDCButLeft_DropDown()
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
-- HealBot_Options_CDCButRight_DropDown: UI handler for DropDown options panel.
|
||||||
function HealBot_Options_CDCButRight_DropDown()
|
function HealBot_Options_CDCButRight_DropDown()
|
||||||
local classEN=HealBot_UnitClass("player")
|
local classEN=HealBot_UnitClass("player")
|
||||||
if classEN=="PRIEST" or classEN=="DRUID" or classEN=="PALADIN" or classEN=="SHAMAN" then
|
if classEN=="PRIEST" or classEN=="DRUID" or classEN=="PALADIN" or classEN=="SHAMAN" then
|
||||||
@@ -189,34 +208,42 @@ function HealBot_Options_CDCButRight_DropDown()
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
-- HealBot_Options_CDCButLeft_Initialize: UI handler for Initialize options panel.
|
||||||
function HealBot_Options_CDCButLeft_Initialize()
|
function HealBot_Options_CDCButLeft_Initialize()
|
||||||
UIDropDownMenu_Initialize(HealBot_Options_CDCButLeft,HealBot_Options_CDCButLeft_DropDown)
|
UIDropDownMenu_Initialize(HealBot_Options_CDCButLeft,HealBot_Options_CDCButLeft_DropDown)
|
||||||
end
|
end
|
||||||
|
-- HealBot_Options_CDCButRight_Initialize: UI handler for Initialize options panel.
|
||||||
function HealBot_Options_CDCButRight_Initialize()
|
function HealBot_Options_CDCButRight_Initialize()
|
||||||
UIDropDownMenu_Initialize(HealBot_Options_CDCButRight,HealBot_Options_CDCButRight_DropDown)
|
UIDropDownMenu_Initialize(HealBot_Options_CDCButRight,HealBot_Options_CDCButRight_DropDown)
|
||||||
end
|
end
|
||||||
|
-- HealBot_Options_CDCButLeft_Refresh: UI handler for Refresh options panel.
|
||||||
function HealBot_Options_CDCButLeft_Refresh(onselect)
|
function HealBot_Options_CDCButLeft_Refresh(onselect)
|
||||||
local set_id=1;
|
local set_id=1;
|
||||||
local class=UnitClass("Player");
|
local class=UnitClass("Player");
|
||||||
if not onselect then HealBot_Options_CDCButLeft_Initialize() end
|
if not onselect then HealBot_Options_CDCButLeft_Initialize() end
|
||||||
set_id = HealBot_Config.Debuff_Left[class];
|
set_id = HealBot_Config.Debuff_Left[class];
|
||||||
UIDropDownMenu_SetSelectedID(HealBot_Options_CDCButLeft,set_id)
|
HealBot_UIDropDownMenu_SetSelectedID(HealBot_Options_CDCButLeft,set_id)
|
||||||
end
|
end
|
||||||
|
-- HealBot_Options_CDCButRight_Refresh: UI handler for Refresh options panel.
|
||||||
function HealBot_Options_CDCButRight_Refresh(onselect)
|
function HealBot_Options_CDCButRight_Refresh(onselect)
|
||||||
local set_id;
|
local set_id;
|
||||||
local class=UnitClass("Player");
|
local class=UnitClass("Player");
|
||||||
if not onselect then HealBot_Options_CDCButRight_Initialize() end
|
if not onselect then HealBot_Options_CDCButRight_Initialize() end
|
||||||
set_id = HealBot_Config.Debuff_Right[class];
|
set_id = HealBot_Config.Debuff_Right[class];
|
||||||
UIDropDownMenu_SetSelectedID(HealBot_Options_CDCButRight,set_id)
|
HealBot_UIDropDownMenu_SetSelectedID(HealBot_Options_CDCButRight,set_id)
|
||||||
end
|
end
|
||||||
|
-- HealBot_Options_CDCButLeft_OnLoad: UI handler for OnLoad options panel.
|
||||||
function HealBot_Options_CDCButLeft_OnLoad()
|
function HealBot_Options_CDCButLeft_OnLoad()
|
||||||
UIDropDownMenu_Initialize(this, HealBot_Options_CDCButLeft_DropDown)
|
UIDropDownMenu_Initialize(this, HealBot_Options_CDCButLeft_DropDown)
|
||||||
UIDropDownMenu_SetWidth(140, this)
|
UIDropDownMenu_SetWidth(140, this)
|
||||||
end
|
end
|
||||||
|
-- HealBot_Options_CDCButRight_OnLoad: UI handler for OnLoad options panel.
|
||||||
function HealBot_Options_CDCButRight_OnLoad()
|
function HealBot_Options_CDCButRight_OnLoad()
|
||||||
UIDropDownMenu_Initialize(this, HealBot_Options_CDCButRight_DropDown)
|
UIDropDownMenu_Initialize(this, HealBot_Options_CDCButRight_DropDown)
|
||||||
UIDropDownMenu_SetWidth(140, this)
|
UIDropDownMenu_SetWidth(140, this)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_Options_CDCButLeft_OnSelect: UI handler for OnSelect options panel.
|
||||||
function HealBot_Options_CDCButLeft_OnSelect()
|
function HealBot_Options_CDCButLeft_OnSelect()
|
||||||
local class=UnitClass("Player");
|
local class=UnitClass("Player");
|
||||||
HealBot_Config.Debuff_Left[class] = this:GetID();
|
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_DebuffPriority = HealBot_Debuff_Types[HealBot_Options_CDCButLeftText:GetText()];
|
||||||
HealBot_Options_Debuff_Reset()
|
HealBot_Options_Debuff_Reset()
|
||||||
end
|
end
|
||||||
|
-- HealBot_Options_CDCButRight_OnSelect: UI handler for OnSelect options panel.
|
||||||
function HealBot_Options_CDCButRight_OnSelect()
|
function HealBot_Options_CDCButRight_OnSelect()
|
||||||
local class=UnitClass("Player");
|
local class=UnitClass("Player");
|
||||||
HealBot_Config.Debuff_Right[class] = this:GetID();
|
HealBot_Config.Debuff_Right[class] = this:GetID();
|
||||||
@@ -238,33 +266,54 @@ function HealBot_Options_CDCButRight_OnSelect()
|
|||||||
end
|
end
|
||||||
HealBot_Options_Debuff_Reset()
|
HealBot_Options_Debuff_Reset()
|
||||||
end
|
end
|
||||||
|
-- HealBot_Options_CDC_SetCombo: UI handler for SetCombo options panel.
|
||||||
function HealBot_Options_CDC_SetCombo(spell, button, class)
|
function HealBot_Options_CDC_SetCombo(spell, button, class)
|
||||||
local combo = HealBot_Config.KeyCombo[class]
|
local combo = HealBot_Config.KeyCombo[class]
|
||||||
combo["Alt"..button] = spell
|
combo["Alt"..button] = spell
|
||||||
HealBot_Options_KeyCombo_Change()
|
HealBot_Options_KeyCombo_Change()
|
||||||
end
|
end
|
||||||
|
-- HealBot_Options_Debuff_Reset: Restores default debuff tracking options.
|
||||||
function HealBot_Options_Debuff_Reset()
|
function HealBot_Options_Debuff_Reset()
|
||||||
local classEN=HealBot_UnitClass("player")
|
local classEN=HealBot_UnitClass("player")
|
||||||
if classEN=="PRIEST" or classEN=="DRUID" or classEN=="PALADIN" or classEN=="SHAMAN" then
|
if classEN=="PRIEST" or classEN=="DRUID" or classEN=="PALADIN" or classEN=="SHAMAN" then
|
||||||
|
HealBot_DebuffWatch = {[HEALBOT_DISEASE_en]=false, [HEALBOT_MAGIC_en]=false, [HEALBOT_POISON_en]=false, [HEALBOT_CURSE_en]=false }
|
||||||
|
|
||||||
|
-- Automatically track all curable debuffs out of the box
|
||||||
|
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")];
|
local spell = HealBot_Config.CDCLeftText[UnitClass("player")];
|
||||||
HealBot_DebuffWatch = {[HEALBOT_DISEASE_en]="NO", [HEALBOT_MAGIC_en]="NO", [HEALBOT_POISON_en]="NO", [HEALBOT_CURSE_en]="NO" }
|
if spell and spell ~= "None" and HealBot_Debuff_Types[spell] then
|
||||||
if spell ~= "None" then
|
|
||||||
table.foreach(HealBot_Debuff_Types[spell], function (index,debuff)
|
table.foreach(HealBot_Debuff_Types[spell], function (index,debuff)
|
||||||
HealBot_DebuffWatch[debuff]="YES";
|
HealBot_DebuffWatch[debuff]=true;
|
||||||
end)
|
end)
|
||||||
end
|
end
|
||||||
spell = HealBot_Config.CDCRightText[UnitClass("player")];
|
spell = HealBot_Config.CDCRightText[UnitClass("player")];
|
||||||
if spell ~= "None" then
|
if spell and spell ~= "None" and HealBot_Debuff_Types[spell] then
|
||||||
table.foreach(HealBot_Debuff_Types[spell], function (index,debuff)
|
table.foreach(HealBot_Debuff_Types[spell], function (index,debuff)
|
||||||
HealBot_DebuffWatch[debuff]="YES";
|
HealBot_DebuffWatch[debuff]=true;
|
||||||
end)
|
end)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
-- HealBot_Colorpick_OnClick: Opens color picker for debuff colors.
|
||||||
function HealBot_Colorpick_OnClick(CDCType)
|
function HealBot_Colorpick_OnClick(CDCType)
|
||||||
HealBot_ColourObjWaiting=CDCType;
|
HealBot_ColourObjWaiting=CDCType;
|
||||||
HealBot_UseColourPick(HealBot_Config.CDCBarColour[CDCType].R,HealBot_Config.CDCBarColour[CDCType].G,HealBot_Config.CDCBarColour[CDCType].B, nil)
|
HealBot_UseColourPick(HealBot_Config.CDCBarColour[CDCType].R,HealBot_Config.CDCBarColour[CDCType].G,HealBot_Config.CDCBarColour[CDCType].B, nil)
|
||||||
end
|
end
|
||||||
|
-- HealBot_SetCDCBarColours: Internal utility: HealBot_SetCDCBarColours
|
||||||
function HealBot_SetCDCBarColours()
|
function HealBot_SetCDCBarColours()
|
||||||
HealBot_DiseaseColorpick:SetStatusBarColor(HealBot_Config.CDCBarColour[HEALBOT_DISEASE_en].R,
|
HealBot_DiseaseColorpick:SetStatusBarColor(HealBot_Config.CDCBarColour[HEALBOT_DISEASE_en].R,
|
||||||
HealBot_Config.CDCBarColour[HEALBOT_DISEASE_en].G,
|
HealBot_Config.CDCBarColour[HEALBOT_DISEASE_en].G,
|
||||||
|
|||||||
+38
-24
@@ -7,9 +7,9 @@
|
|||||||
|
|
||||||
<Frame name="HealBot_Options_CDCMonitor" inherits="UIDropDownMenuTemplate" id="1">
|
<Frame name="HealBot_Options_CDCMonitor" inherits="UIDropDownMenuTemplate" id="1">
|
||||||
<Anchors>
|
<Anchors>
|
||||||
<Anchor point="TOPLEFT">
|
<Anchor point="TOP">
|
||||||
<Offset>
|
<Offset>
|
||||||
<AbsDimension x="170" y="-30" />
|
<AbsDimension x="-20" y="-30" />
|
||||||
</Offset>
|
</Offset>
|
||||||
</Anchor>
|
</Anchor>
|
||||||
</Anchors>
|
</Anchors>
|
||||||
@@ -31,6 +31,20 @@
|
|||||||
</Scripts>
|
</Scripts>
|
||||||
</Frame>
|
</Frame>
|
||||||
|
|
||||||
|
<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>HealBot_Options_CDCShowAllDebuffs_OnLoad(this,HEALBOT_OPTIONS_CDCSHOWALLDEBUFFS)</OnLoad>
|
||||||
|
<OnClick>HealBot_Options_CDCShowAllDebuffs_OnClick(this)</OnClick>
|
||||||
|
</Scripts>
|
||||||
|
</CheckButton>
|
||||||
|
|
||||||
<Frame name="HealBot_Options_CureDispelCleanse" inherits="OptionFrameBoxTemplate">
|
<Frame name="HealBot_Options_CureDispelCleanse" inherits="OptionFrameBoxTemplate">
|
||||||
<Scripts>
|
<Scripts>
|
||||||
<OnLoad>
|
<OnLoad>
|
||||||
@@ -57,9 +71,9 @@
|
|||||||
<Layer level="BACKGROUND">
|
<Layer level="BACKGROUND">
|
||||||
<FontString name="HealBot_CDCBut_Text" text="HEALBOT_OPTIONS_CDCBUTTONS" inherits="GameFontNormalSmall">
|
<FontString name="HealBot_CDCBut_Text" text="HEALBOT_OPTIONS_CDCBUTTONS" inherits="GameFontNormalSmall">
|
||||||
<Anchors>
|
<Anchors>
|
||||||
<Anchor point="TOPLEFT">
|
<Anchor point="TOP">
|
||||||
<Offset>
|
<Offset>
|
||||||
<AbsDimension x="105" y="-12" />
|
<AbsDimension x="0" y="-12" />
|
||||||
</Offset>
|
</Offset>
|
||||||
</Anchor>
|
</Anchor>
|
||||||
</Anchors>
|
</Anchors>
|
||||||
@@ -71,7 +85,7 @@
|
|||||||
<Anchors>
|
<Anchors>
|
||||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_CureDispelCleanse" relativePoint="TOPLEFT">
|
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_CureDispelCleanse" relativePoint="TOPLEFT">
|
||||||
<Offset>
|
<Offset>
|
||||||
<AbsDimension x="100" y="-35" />
|
<AbsDimension x="150" y="-35" />
|
||||||
</Offset>
|
</Offset>
|
||||||
</Anchor>
|
</Anchor>
|
||||||
</Anchors>
|
</Anchors>
|
||||||
@@ -81,7 +95,7 @@
|
|||||||
<Anchors>
|
<Anchors>
|
||||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_CureDispelCleanse" relativePoint="TOPLEFT">
|
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_CureDispelCleanse" relativePoint="TOPLEFT">
|
||||||
<Offset>
|
<Offset>
|
||||||
<AbsDimension x="40" y="-42"/>
|
<AbsDimension x="70" y="-42"/>
|
||||||
</Offset>
|
</Offset>
|
||||||
</Anchor>
|
</Anchor>
|
||||||
</Anchors>
|
</Anchors>
|
||||||
@@ -98,7 +112,7 @@
|
|||||||
<Anchors>
|
<Anchors>
|
||||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_CureDispelCleanse" relativePoint="TOPLEFT">
|
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_CureDispelCleanse" relativePoint="TOPLEFT">
|
||||||
<Offset>
|
<Offset>
|
||||||
<AbsDimension x="100" y="-67" />
|
<AbsDimension x="150" y="-67" />
|
||||||
</Offset>
|
</Offset>
|
||||||
</Anchor>
|
</Anchor>
|
||||||
</Anchors>
|
</Anchors>
|
||||||
@@ -108,7 +122,7 @@
|
|||||||
<Anchors>
|
<Anchors>
|
||||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_CureDispelCleanse" relativePoint="TOPLEFT">
|
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_CureDispelCleanse" relativePoint="TOPLEFT">
|
||||||
<Offset>
|
<Offset>
|
||||||
<AbsDimension x="40" y="-74"/>
|
<AbsDimension x="70" y="-74"/>
|
||||||
</Offset>
|
</Offset>
|
||||||
</Anchor>
|
</Anchor>
|
||||||
</Anchors>
|
</Anchors>
|
||||||
@@ -148,9 +162,9 @@
|
|||||||
<Layer level="BACKGROUND">
|
<Layer level="BACKGROUND">
|
||||||
<FontString name="HealBot_CDCCol_Text" text="HEALBOT_OPTIONS_CDCBARS" inherits="GameFontNormalSmall">
|
<FontString name="HealBot_CDCCol_Text" text="HEALBOT_OPTIONS_CDCBARS" inherits="GameFontNormalSmall">
|
||||||
<Anchors>
|
<Anchors>
|
||||||
<Anchor point="TOPLEFT">
|
<Anchor point="TOP">
|
||||||
<Offset>
|
<Offset>
|
||||||
<AbsDimension x="98" y="-12" />
|
<AbsDimension x="0" y="-12" />
|
||||||
</Offset>
|
</Offset>
|
||||||
</Anchor>
|
</Anchor>
|
||||||
</Anchors>
|
</Anchors>
|
||||||
@@ -163,9 +177,9 @@
|
|||||||
<AbsDimension x="130" y="20"/>
|
<AbsDimension x="130" y="20"/>
|
||||||
</Size>
|
</Size>
|
||||||
<Anchors>
|
<Anchors>
|
||||||
<Anchor point="BOTTOM" relativeTo="HealBot_Options_CureDispelCleanseCol" relativePoint="TOPLEFT">
|
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_CureDispelCleanseCol" relativePoint="TOPLEFT">
|
||||||
<Offset>
|
<Offset>
|
||||||
<AbsDimension x="81" y="-55"/>
|
<AbsDimension x="70" y="-35"/>
|
||||||
</Offset>
|
</Offset>
|
||||||
</Anchor>
|
</Anchor>
|
||||||
</Anchors>
|
</Anchors>
|
||||||
@@ -178,9 +192,9 @@
|
|||||||
<AbsDimension x="130" y="20"/>
|
<AbsDimension x="130" y="20"/>
|
||||||
</Size>
|
</Size>
|
||||||
<Anchors>
|
<Anchors>
|
||||||
<Anchor point="BOTTOM" relativeTo="HealBot_Options_CureDispelCleanseCol" relativePoint="TOPLEFT">
|
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_CureDispelCleanseCol" relativePoint="TOPLEFT">
|
||||||
<Offset>
|
<Offset>
|
||||||
<AbsDimension x="81" y="-55"/>
|
<AbsDimension x="70" y="-35"/>
|
||||||
</Offset>
|
</Offset>
|
||||||
</Anchor>
|
</Anchor>
|
||||||
</Anchors>
|
</Anchors>
|
||||||
@@ -255,9 +269,9 @@
|
|||||||
<AbsDimension x="130" y="20"/>
|
<AbsDimension x="130" y="20"/>
|
||||||
</Size>
|
</Size>
|
||||||
<Anchors>
|
<Anchors>
|
||||||
<Anchor point="BOTTOM" relativeTo="HealBot_DiseaseColorpick" relativePoint="TOPLEFT">
|
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_CureDispelCleanseCol" relativePoint="TOPLEFT">
|
||||||
<Offset>
|
<Offset>
|
||||||
<AbsDimension x="65" y="-45"/>
|
<AbsDimension x="70" y="-65"/>
|
||||||
</Offset>
|
</Offset>
|
||||||
</Anchor>
|
</Anchor>
|
||||||
</Anchors>
|
</Anchors>
|
||||||
@@ -270,9 +284,9 @@
|
|||||||
<AbsDimension x="130" y="20"/>
|
<AbsDimension x="130" y="20"/>
|
||||||
</Size>
|
</Size>
|
||||||
<Anchors>
|
<Anchors>
|
||||||
<Anchor point="BOTTOM" relativeTo="HealBot_DiseaseColorpick" relativePoint="TOPLEFT">
|
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_CureDispelCleanseCol" relativePoint="TOPLEFT">
|
||||||
<Offset>
|
<Offset>
|
||||||
<AbsDimension x="65" y="-45"/>
|
<AbsDimension x="70" y="-65"/>
|
||||||
</Offset>
|
</Offset>
|
||||||
</Anchor>
|
</Anchor>
|
||||||
</Anchors>
|
</Anchors>
|
||||||
@@ -368,9 +382,9 @@
|
|||||||
<Layer level="BACKGROUND">
|
<Layer level="BACKGROUND">
|
||||||
<FontString name="HealBot_CDCWarn_Text" text="HEALBOT_OPTIONS_CDCWARNINGS" inherits="GameFontNormalSmall">
|
<FontString name="HealBot_CDCWarn_Text" text="HEALBOT_OPTIONS_CDCWARNINGS" inherits="GameFontNormalSmall">
|
||||||
<Anchors>
|
<Anchors>
|
||||||
<Anchor point="TOPLEFT">
|
<Anchor point="TOP">
|
||||||
<Offset>
|
<Offset>
|
||||||
<AbsDimension x="98" y="-12" />
|
<AbsDimension x="0" y="-12" />
|
||||||
</Offset>
|
</Offset>
|
||||||
</Anchor>
|
</Anchor>
|
||||||
</Anchors>
|
</Anchors>
|
||||||
@@ -380,9 +394,9 @@
|
|||||||
</Frame>
|
</Frame>
|
||||||
<CheckButton name="HealBot_Options_ShowDebuffWarning" inherits="OptionsCheckButtonTemplate">
|
<CheckButton name="HealBot_Options_ShowDebuffWarning" inherits="OptionsCheckButtonTemplate">
|
||||||
<Anchors>
|
<Anchors>
|
||||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_CureDispelCleanseWarn" relativePoint="BOTTOMLEFT">
|
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_CureDispelCleanseWarn" relativePoint="TOPLEFT">
|
||||||
<Offset>
|
<Offset>
|
||||||
<AbsDimension x="25" y="90" />
|
<AbsDimension x="70" y="-35" />
|
||||||
</Offset>
|
</Offset>
|
||||||
</Anchor>
|
</Anchor>
|
||||||
</Anchors>
|
</Anchors>
|
||||||
@@ -407,9 +421,9 @@
|
|||||||
|
|
||||||
<CheckButton name="HealBot_WarningSound1" inherits="SendMailRadioButtonTemplate" id="1">
|
<CheckButton name="HealBot_WarningSound1" inherits="SendMailRadioButtonTemplate" id="1">
|
||||||
<Anchors>
|
<Anchors>
|
||||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_SoundDebuffWarning" relativePoint="TOPLEFT">
|
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_SoundDebuffWarning" relativePoint="BOTTOMLEFT">
|
||||||
<Offset>
|
<Offset>
|
||||||
<AbsDimension x="25" y="-30"/>
|
<AbsDimension x="25" y="-5"/>
|
||||||
</Offset>
|
</Offset>
|
||||||
</Anchor>
|
</Anchor>
|
||||||
</Anchors>
|
</Anchors>
|
||||||
|
|||||||
+15
-70
@@ -1,69 +1,11 @@
|
|||||||
-- HealBot Options panel file: HealBot_Options_Chat.lua
|
-- HealBot Options panel file: HealBot_Options_Chat.lua
|
||||||
-- Split from original HealBot_Options.lua
|
-- Split from original HealBot_Options.lua
|
||||||
|
|
||||||
local HealBot_PlayerSpells = nil
|
-- HealBot_Options_ChatMsg_Channel_OnClick: UI handler for OnClick options panel.
|
||||||
|
|
||||||
function HealBot_GetPlayerSpells()
|
|
||||||
if HealBot_PlayerSpells then return HealBot_PlayerSpells end
|
|
||||||
local spellSet = {}
|
|
||||||
local i = 1
|
|
||||||
while true do
|
|
||||||
local spellName, spellRank = GetSpellName(i, BOOKTYPE_SPELL)
|
|
||||||
if not spellName then
|
|
||||||
break
|
|
||||||
end
|
|
||||||
spellSet[spellName] = true
|
|
||||||
i = i + 1
|
|
||||||
end
|
|
||||||
local sortedSpells = {}
|
|
||||||
for k, _ in pairs(spellSet) do
|
|
||||||
table.insert(sortedSpells, k)
|
|
||||||
end
|
|
||||||
table.sort(sortedSpells)
|
|
||||||
HealBot_PlayerSpells = sortedSpells
|
|
||||||
return sortedSpells
|
|
||||||
end
|
|
||||||
|
|
||||||
function HealBot_Options_ChatMsg_Spell_Initialize()
|
|
||||||
local info
|
|
||||||
|
|
||||||
info = { text = "None", func = HealBot_Options_ChatMsg_Spell_OnClick, value = "None" }
|
|
||||||
UIDropDownMenu_AddButton(info)
|
|
||||||
|
|
||||||
local spells = HealBot_GetPlayerSpells()
|
|
||||||
for _, spellName in ipairs(spells) do
|
|
||||||
info = {
|
|
||||||
text = spellName,
|
|
||||||
func = HealBot_Options_ChatMsg_Spell_OnClick,
|
|
||||||
value = spellName
|
|
||||||
}
|
|
||||||
UIDropDownMenu_AddButton(info)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
function HealBot_Options_ChatMsg_Spell_OnClick()
|
|
||||||
local frameName = UIDROPDOWNMENU_OPEN_MENU
|
|
||||||
local frame = getglobal(frameName)
|
|
||||||
local id = frame:GetID()
|
|
||||||
|
|
||||||
if not HealBot_Config.ChatMessages then HealBot_Config.ChatMessages = {} end
|
|
||||||
if not HealBot_Config.ChatMessages[id] then
|
|
||||||
HealBot_Config.ChatMessages[id] = { Spell = "None", Message = "Casting #Spell# on #Target#", Channel = "None" }
|
|
||||||
end
|
|
||||||
|
|
||||||
HealBot_Config.ChatMessages[id].Spell = this.value
|
|
||||||
|
|
||||||
local text = this.value
|
|
||||||
if text == "None" then text = "None" end
|
|
||||||
|
|
||||||
UIDropDownMenu_SetSelectedValue(frame, this.value)
|
|
||||||
UIDropDownMenu_SetText(text, frame)
|
|
||||||
end
|
|
||||||
|
|
||||||
function HealBot_Options_ChatMsg_Channel_OnClick(id, buttonFrame)
|
function HealBot_Options_ChatMsg_Channel_OnClick(id, buttonFrame)
|
||||||
if not HealBot_Config.ChatMessages then HealBot_Config.ChatMessages = {} end
|
if not HealBot_Config.ChatMessages then HealBot_Config.ChatMessages = {} end
|
||||||
if not HealBot_Config.ChatMessages[id] then
|
if not HealBot_Config.ChatMessages[id] then
|
||||||
HealBot_Config.ChatMessages[id] = { Spell = "None", Message = "Casting #Spell# on #Target#", Channel = "None" }
|
HealBot_Config.ChatMessages[id] = { Spell = "", Message = "Casting #Spell# on #Target#", Channel = "None" }
|
||||||
end
|
end
|
||||||
|
|
||||||
local current = HealBot_Config.ChatMessages[id].Channel
|
local current = HealBot_Config.ChatMessages[id].Channel
|
||||||
@@ -85,30 +27,33 @@ function HealBot_Options_ChatMsg_Channel_OnClick(id, buttonFrame)
|
|||||||
buttonFrame:SetText(nextChan)
|
buttonFrame:SetText(nextChan)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_Options_SetChatMessages: UI handler for SetChatMessages options panel.
|
||||||
function HealBot_Options_SetChatMessages()
|
function HealBot_Options_SetChatMessages()
|
||||||
if not HealBot_Config.ChatMessages then
|
if not HealBot_Config.ChatMessages then
|
||||||
HealBot_Config.ChatMessages = {}
|
HealBot_Config.ChatMessages = {}
|
||||||
end
|
end
|
||||||
for i = 1, 5 do
|
for i = 1, 5 do
|
||||||
if not HealBot_Config.ChatMessages[i] then
|
if not HealBot_Config.ChatMessages[i] then
|
||||||
HealBot_Config.ChatMessages[i] = { Spell = "None", Message = "Casting #Spell# on #Target#", Channel = "None" }
|
HealBot_Config.ChatMessages[i] = { Spell = "", Message = "Casting #Spell# on #Target#", Channel = "None" }
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
for i = 1, 5 do
|
for i = 1, 5 do
|
||||||
local msgConfig = HealBot_Config.ChatMessages[i]
|
local msgConfig = HealBot_Config.ChatMessages[i]
|
||||||
if msgConfig then
|
if msgConfig then
|
||||||
local dropDown = getglobal("HealBot_Options_ChatMsg"..i)
|
local spellEdit = getglobal("HealBot_Options_ChatMsg"..i.."_Spell")
|
||||||
local editBox = getglobal("HealBot_Options_ChatMsg"..i.."_Text")
|
local textEdit = getglobal("HealBot_Options_ChatMsg"..i.."_Text")
|
||||||
local chanButton = getglobal("HealBot_Options_ChatMsg"..i.."_Channel")
|
local chanButton = getglobal("HealBot_Options_ChatMsg"..i.."_Channel")
|
||||||
|
|
||||||
if dropDown then
|
if spellEdit then
|
||||||
UIDropDownMenu_Initialize(dropDown, HealBot_Options_ChatMsg_Spell_Initialize)
|
if msgConfig.Spell == "None" then
|
||||||
UIDropDownMenu_SetSelectedValue(dropDown, msgConfig.Spell)
|
spellEdit:SetText("")
|
||||||
UIDropDownMenu_SetWidth(110, dropDown)
|
msgConfig.Spell = ""
|
||||||
UIDropDownMenu_SetText(msgConfig.Spell, dropDown)
|
else
|
||||||
|
spellEdit:SetText(msgConfig.Spell or "")
|
||||||
|
end
|
||||||
end
|
end
|
||||||
if editBox then
|
if textEdit then
|
||||||
editBox:SetText(msgConfig.Message or "")
|
textEdit:SetText(msgConfig.Message or "")
|
||||||
end
|
end
|
||||||
if chanButton then
|
if chanButton then
|
||||||
chanButton:SetText(msgConfig.Channel or "None")
|
chanButton:SetText(msgConfig.Channel or "None")
|
||||||
|
|||||||
+143
-94
@@ -5,23 +5,50 @@
|
|||||||
<Frame name="HealBot_Options_Panel7" parent="HealBot_Options" hidden="true" setAllPoints="true">
|
<Frame name="HealBot_Options_Panel7" parent="HealBot_Options" hidden="true" setAllPoints="true">
|
||||||
<Frames>
|
<Frames>
|
||||||
<!-- Chat Message 1 -->
|
<!-- Chat Message 1 -->
|
||||||
<Frame name="HealBot_Options_ChatMsg1" inherits="UIDropDownMenuTemplate" id="1">
|
<EditBox name="HealBot_Options_ChatMsg1_Spell" inherits="InputBoxTemplate" autoFocus="false">
|
||||||
|
<Size>
|
||||||
|
<AbsDimension x="130" y="20"/>
|
||||||
|
</Size>
|
||||||
<Anchors>
|
<Anchors>
|
||||||
<Anchor point="TOPLEFT">
|
<Anchor point="TOPLEFT">
|
||||||
<Offset>
|
<Offset>
|
||||||
<AbsDimension x="0" y="-30" />
|
<AbsDimension x="25" y="-30" />
|
||||||
</Offset>
|
</Offset>
|
||||||
</Anchor>
|
</Anchor>
|
||||||
</Anchors>
|
</Anchors>
|
||||||
</Frame>
|
<Scripts>
|
||||||
<EditBox name="HealBot_Options_ChatMsg1_Text" inherits="InputBoxTemplate" autoFocus="false">
|
<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>
|
<Size>
|
||||||
<AbsDimension x="200" y="20"/>
|
<AbsDimension x="80" y="22"/>
|
||||||
</Size>
|
</Size>
|
||||||
<Anchors>
|
<Anchors>
|
||||||
<Anchor point="LEFT" relativeTo="HealBot_Options_ChatMsg1" relativePoint="RIGHT">
|
<Anchor point="LEFT" relativeTo="HealBot_Options_ChatMsg1_Spell" relativePoint="RIGHT">
|
||||||
<Offset>
|
<Offset>
|
||||||
<AbsDimension x="0" y="2"/>
|
<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>
|
</Offset>
|
||||||
</Anchor>
|
</Anchor>
|
||||||
</Anchors>
|
</Anchors>
|
||||||
@@ -33,41 +60,51 @@
|
|||||||
</OnTextChanged>
|
</OnTextChanged>
|
||||||
</Scripts>
|
</Scripts>
|
||||||
</EditBox>
|
</EditBox>
|
||||||
<Button name="HealBot_Options_ChatMsg1_Channel" inherits="UIPanelButtonTemplate" text="None">
|
<!-- 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>
|
<Size>
|
||||||
<AbsDimension x="80" y="22"/>
|
<AbsDimension x="80" y="22"/>
|
||||||
</Size>
|
</Size>
|
||||||
<Anchors>
|
<Anchors>
|
||||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_ChatMsg1_Text" relativePoint="BOTTOMLEFT">
|
<Anchor point="LEFT" relativeTo="HealBot_Options_ChatMsg2_Spell" relativePoint="RIGHT">
|
||||||
<Offset>
|
<Offset>
|
||||||
<AbsDimension x="0" y="-5"/>
|
<AbsDimension x="15" y="0"/>
|
||||||
</Offset>
|
</Offset>
|
||||||
</Anchor>
|
</Anchor>
|
||||||
</Anchors>
|
</Anchors>
|
||||||
<Scripts>
|
<Scripts>
|
||||||
<OnClick>
|
<OnClick>
|
||||||
HealBot_Options_ChatMsg_Channel_OnClick(1, this);
|
HealBot_Options_ChatMsg_Channel_OnClick(2, this);
|
||||||
</OnClick>
|
</OnClick>
|
||||||
</Scripts>
|
</Scripts>
|
||||||
</Button>
|
</Button>
|
||||||
<!-- Chat Message 2 -->
|
|
||||||
<Frame name="HealBot_Options_ChatMsg2" inherits="UIDropDownMenuTemplate" id="2">
|
|
||||||
<Anchors>
|
|
||||||
<Anchor point="TOPLEFT">
|
|
||||||
<Offset>
|
|
||||||
<AbsDimension x="0" y="-90" />
|
|
||||||
</Offset>
|
|
||||||
</Anchor>
|
|
||||||
</Anchors>
|
|
||||||
</Frame>
|
|
||||||
<EditBox name="HealBot_Options_ChatMsg2_Text" inherits="InputBoxTemplate" autoFocus="false">
|
<EditBox name="HealBot_Options_ChatMsg2_Text" inherits="InputBoxTemplate" autoFocus="false">
|
||||||
<Size>
|
<Size>
|
||||||
<AbsDimension x="200" y="20"/>
|
<AbsDimension x="300" y="20"/>
|
||||||
</Size>
|
</Size>
|
||||||
<Anchors>
|
<Anchors>
|
||||||
<Anchor point="LEFT" relativeTo="HealBot_Options_ChatMsg2" relativePoint="RIGHT">
|
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_ChatMsg2_Spell" relativePoint="BOTTOMLEFT">
|
||||||
<Offset>
|
<Offset>
|
||||||
<AbsDimension x="0" y="2"/>
|
<AbsDimension x="0" y="-5"/>
|
||||||
</Offset>
|
</Offset>
|
||||||
</Anchor>
|
</Anchor>
|
||||||
</Anchors>
|
</Anchors>
|
||||||
@@ -79,41 +116,51 @@
|
|||||||
</OnTextChanged>
|
</OnTextChanged>
|
||||||
</Scripts>
|
</Scripts>
|
||||||
</EditBox>
|
</EditBox>
|
||||||
<Button name="HealBot_Options_ChatMsg2_Channel" inherits="UIPanelButtonTemplate" text="None">
|
<!-- 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>
|
<Size>
|
||||||
<AbsDimension x="80" y="22"/>
|
<AbsDimension x="80" y="22"/>
|
||||||
</Size>
|
</Size>
|
||||||
<Anchors>
|
<Anchors>
|
||||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_ChatMsg2_Text" relativePoint="BOTTOMLEFT">
|
<Anchor point="LEFT" relativeTo="HealBot_Options_ChatMsg3_Spell" relativePoint="RIGHT">
|
||||||
<Offset>
|
<Offset>
|
||||||
<AbsDimension x="0" y="-5"/>
|
<AbsDimension x="15" y="0"/>
|
||||||
</Offset>
|
</Offset>
|
||||||
</Anchor>
|
</Anchor>
|
||||||
</Anchors>
|
</Anchors>
|
||||||
<Scripts>
|
<Scripts>
|
||||||
<OnClick>
|
<OnClick>
|
||||||
HealBot_Options_ChatMsg_Channel_OnClick(2, this);
|
HealBot_Options_ChatMsg_Channel_OnClick(3, this);
|
||||||
</OnClick>
|
</OnClick>
|
||||||
</Scripts>
|
</Scripts>
|
||||||
</Button>
|
</Button>
|
||||||
<!-- Chat Message 3 -->
|
|
||||||
<Frame name="HealBot_Options_ChatMsg3" inherits="UIDropDownMenuTemplate" id="3">
|
|
||||||
<Anchors>
|
|
||||||
<Anchor point="TOPLEFT">
|
|
||||||
<Offset>
|
|
||||||
<AbsDimension x="0" y="-150" />
|
|
||||||
</Offset>
|
|
||||||
</Anchor>
|
|
||||||
</Anchors>
|
|
||||||
</Frame>
|
|
||||||
<EditBox name="HealBot_Options_ChatMsg3_Text" inherits="InputBoxTemplate" autoFocus="false">
|
<EditBox name="HealBot_Options_ChatMsg3_Text" inherits="InputBoxTemplate" autoFocus="false">
|
||||||
<Size>
|
<Size>
|
||||||
<AbsDimension x="200" y="20"/>
|
<AbsDimension x="300" y="20"/>
|
||||||
</Size>
|
</Size>
|
||||||
<Anchors>
|
<Anchors>
|
||||||
<Anchor point="LEFT" relativeTo="HealBot_Options_ChatMsg3" relativePoint="RIGHT">
|
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_ChatMsg3_Spell" relativePoint="BOTTOMLEFT">
|
||||||
<Offset>
|
<Offset>
|
||||||
<AbsDimension x="0" y="2"/>
|
<AbsDimension x="0" y="-5"/>
|
||||||
</Offset>
|
</Offset>
|
||||||
</Anchor>
|
</Anchor>
|
||||||
</Anchors>
|
</Anchors>
|
||||||
@@ -125,41 +172,51 @@
|
|||||||
</OnTextChanged>
|
</OnTextChanged>
|
||||||
</Scripts>
|
</Scripts>
|
||||||
</EditBox>
|
</EditBox>
|
||||||
<Button name="HealBot_Options_ChatMsg3_Channel" inherits="UIPanelButtonTemplate" text="None">
|
<!-- 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>
|
<Size>
|
||||||
<AbsDimension x="80" y="22"/>
|
<AbsDimension x="80" y="22"/>
|
||||||
</Size>
|
</Size>
|
||||||
<Anchors>
|
<Anchors>
|
||||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_ChatMsg3_Text" relativePoint="BOTTOMLEFT">
|
<Anchor point="LEFT" relativeTo="HealBot_Options_ChatMsg4_Spell" relativePoint="RIGHT">
|
||||||
<Offset>
|
<Offset>
|
||||||
<AbsDimension x="0" y="-5"/>
|
<AbsDimension x="15" y="0"/>
|
||||||
</Offset>
|
</Offset>
|
||||||
</Anchor>
|
</Anchor>
|
||||||
</Anchors>
|
</Anchors>
|
||||||
<Scripts>
|
<Scripts>
|
||||||
<OnClick>
|
<OnClick>
|
||||||
HealBot_Options_ChatMsg_Channel_OnClick(3, this);
|
HealBot_Options_ChatMsg_Channel_OnClick(4, this);
|
||||||
</OnClick>
|
</OnClick>
|
||||||
</Scripts>
|
</Scripts>
|
||||||
</Button>
|
</Button>
|
||||||
<!-- Chat Message 4 -->
|
|
||||||
<Frame name="HealBot_Options_ChatMsg4" inherits="UIDropDownMenuTemplate" id="4">
|
|
||||||
<Anchors>
|
|
||||||
<Anchor point="TOPLEFT">
|
|
||||||
<Offset>
|
|
||||||
<AbsDimension x="0" y="-210" />
|
|
||||||
</Offset>
|
|
||||||
</Anchor>
|
|
||||||
</Anchors>
|
|
||||||
</Frame>
|
|
||||||
<EditBox name="HealBot_Options_ChatMsg4_Text" inherits="InputBoxTemplate" autoFocus="false">
|
<EditBox name="HealBot_Options_ChatMsg4_Text" inherits="InputBoxTemplate" autoFocus="false">
|
||||||
<Size>
|
<Size>
|
||||||
<AbsDimension x="200" y="20"/>
|
<AbsDimension x="300" y="20"/>
|
||||||
</Size>
|
</Size>
|
||||||
<Anchors>
|
<Anchors>
|
||||||
<Anchor point="LEFT" relativeTo="HealBot_Options_ChatMsg4" relativePoint="RIGHT">
|
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_ChatMsg4_Spell" relativePoint="BOTTOMLEFT">
|
||||||
<Offset>
|
<Offset>
|
||||||
<AbsDimension x="0" y="2"/>
|
<AbsDimension x="0" y="-5"/>
|
||||||
</Offset>
|
</Offset>
|
||||||
</Anchor>
|
</Anchor>
|
||||||
</Anchors>
|
</Anchors>
|
||||||
@@ -171,41 +228,51 @@
|
|||||||
</OnTextChanged>
|
</OnTextChanged>
|
||||||
</Scripts>
|
</Scripts>
|
||||||
</EditBox>
|
</EditBox>
|
||||||
<Button name="HealBot_Options_ChatMsg4_Channel" inherits="UIPanelButtonTemplate" text="None">
|
<!-- 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>
|
<Size>
|
||||||
<AbsDimension x="80" y="22"/>
|
<AbsDimension x="80" y="22"/>
|
||||||
</Size>
|
</Size>
|
||||||
<Anchors>
|
<Anchors>
|
||||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_ChatMsg4_Text" relativePoint="BOTTOMLEFT">
|
<Anchor point="LEFT" relativeTo="HealBot_Options_ChatMsg5_Spell" relativePoint="RIGHT">
|
||||||
<Offset>
|
<Offset>
|
||||||
<AbsDimension x="0" y="-5"/>
|
<AbsDimension x="15" y="0"/>
|
||||||
</Offset>
|
</Offset>
|
||||||
</Anchor>
|
</Anchor>
|
||||||
</Anchors>
|
</Anchors>
|
||||||
<Scripts>
|
<Scripts>
|
||||||
<OnClick>
|
<OnClick>
|
||||||
HealBot_Options_ChatMsg_Channel_OnClick(4, this);
|
HealBot_Options_ChatMsg_Channel_OnClick(5, this);
|
||||||
</OnClick>
|
</OnClick>
|
||||||
</Scripts>
|
</Scripts>
|
||||||
</Button>
|
</Button>
|
||||||
<!-- Chat Message 5 -->
|
|
||||||
<Frame name="HealBot_Options_ChatMsg5" inherits="UIDropDownMenuTemplate" id="5">
|
|
||||||
<Anchors>
|
|
||||||
<Anchor point="TOPLEFT">
|
|
||||||
<Offset>
|
|
||||||
<AbsDimension x="0" y="-270" />
|
|
||||||
</Offset>
|
|
||||||
</Anchor>
|
|
||||||
</Anchors>
|
|
||||||
</Frame>
|
|
||||||
<EditBox name="HealBot_Options_ChatMsg5_Text" inherits="InputBoxTemplate" autoFocus="false">
|
<EditBox name="HealBot_Options_ChatMsg5_Text" inherits="InputBoxTemplate" autoFocus="false">
|
||||||
<Size>
|
<Size>
|
||||||
<AbsDimension x="200" y="20"/>
|
<AbsDimension x="300" y="20"/>
|
||||||
</Size>
|
</Size>
|
||||||
<Anchors>
|
<Anchors>
|
||||||
<Anchor point="LEFT" relativeTo="HealBot_Options_ChatMsg5" relativePoint="RIGHT">
|
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_ChatMsg5_Spell" relativePoint="BOTTOMLEFT">
|
||||||
<Offset>
|
<Offset>
|
||||||
<AbsDimension x="0" y="2"/>
|
<AbsDimension x="0" y="-5"/>
|
||||||
</Offset>
|
</Offset>
|
||||||
</Anchor>
|
</Anchor>
|
||||||
</Anchors>
|
</Anchors>
|
||||||
@@ -217,24 +284,6 @@
|
|||||||
</OnTextChanged>
|
</OnTextChanged>
|
||||||
</Scripts>
|
</Scripts>
|
||||||
</EditBox>
|
</EditBox>
|
||||||
<Button name="HealBot_Options_ChatMsg5_Channel" inherits="UIPanelButtonTemplate" text="None">
|
|
||||||
<Size>
|
|
||||||
<AbsDimension x="80" y="22"/>
|
|
||||||
</Size>
|
|
||||||
<Anchors>
|
|
||||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_ChatMsg5_Text" relativePoint="BOTTOMLEFT">
|
|
||||||
<Offset>
|
|
||||||
<AbsDimension x="0" y="-5"/>
|
|
||||||
</Offset>
|
|
||||||
</Anchor>
|
|
||||||
</Anchors>
|
|
||||||
<Scripts>
|
|
||||||
<OnClick>
|
|
||||||
HealBot_Options_ChatMsg_Channel_OnClick(5, this);
|
|
||||||
</OnClick>
|
|
||||||
</Scripts>
|
|
||||||
</Button>
|
|
||||||
</Frames>
|
</Frames>
|
||||||
</Frame>
|
</Frame>
|
||||||
|
</Ui>
|
||||||
</Ui>
|
|
||||||
@@ -1,69 +1,91 @@
|
|||||||
-- HealBot Options panel file: HealBot_Options_General.lua
|
-- HealBot Options panel file: HealBot_Options_General.lua
|
||||||
-- Split from original HealBot_Options.lua
|
-- Split from original HealBot_Options.lua
|
||||||
|
|
||||||
|
-- HealBot_Options_ShowHeaders_OnLoad: UI handler for OnLoad options panel.
|
||||||
function HealBot_Options_ShowHeaders_OnLoad(this)
|
function HealBot_Options_ShowHeaders_OnLoad(this)
|
||||||
getglobal(this:GetName().."Text"):SetText(HEALBOT_OPTIONS_SHOWHEADERS);
|
getglobal(this:GetName().."Text"):SetText(HEALBOT_OPTIONS_SHOWHEADERS);
|
||||||
end
|
end
|
||||||
|
-- HealBot_Options_ShowHeaders_OnClick: UI handler for OnClick options panel.
|
||||||
function HealBot_Options_ShowHeaders_OnClick(this)
|
function HealBot_Options_ShowHeaders_OnClick(this)
|
||||||
HealBot_Config.ShowHeader[HealBot_Config.Current_Skin] = this:GetChecked();
|
local isChecked = this:GetChecked()
|
||||||
|
HealBot_Config.ShowHeader[HealBot_Config.Current_Skin] = isChecked and 1 or 0;
|
||||||
HealBot_Action_ResetSkin()
|
HealBot_Action_ResetSkin()
|
||||||
end
|
end
|
||||||
|
-- HealBot_Options_BarTextureS_OnValueChanged: UI handler for OnValueChanged options panel.
|
||||||
function HealBot_Options_BarTextureS_OnValueChanged(this)
|
function HealBot_Options_BarTextureS_OnValueChanged(this)
|
||||||
HealBot_Config.btexture[HealBot_Config.Current_Skin] = this:GetValue();
|
HealBot_Config.btexture[HealBot_Config.Current_Skin] = this:GetValue();
|
||||||
getglobal(this:GetName().."Text"):SetText(this.text .. ": " .. this:GetValue());
|
getglobal(this:GetName().."Text"):SetText(this.text .. ": " .. this:GetValue());
|
||||||
HealBot_Action_ResetSkin()
|
HealBot_Action_ResetSkin()
|
||||||
end
|
end
|
||||||
|
-- HealBot_Options_BarHeightS_OnValueChanged: UI handler for OnValueChanged options panel.
|
||||||
function HealBot_Options_BarHeightS_OnValueChanged(this)
|
function HealBot_Options_BarHeightS_OnValueChanged(this)
|
||||||
HealBot_Config.bheight[HealBot_Config.Current_Skin] = this:GetValue();
|
HealBot_Config.bheight[HealBot_Config.Current_Skin] = this:GetValue();
|
||||||
getglobal(this:GetName().."Text"):SetText(this.text .. ": " .. this:GetValue());
|
getglobal(this:GetName().."Text"):SetText(this.text .. ": " .. this:GetValue());
|
||||||
HealBot_Action_ResetSkin()
|
HealBot_Action_ResetSkin()
|
||||||
end
|
end
|
||||||
|
-- HealBot_Options_BarWidthS_OnValueChanged: UI handler for OnValueChanged options panel.
|
||||||
function HealBot_Options_BarWidthS_OnValueChanged(this)
|
function HealBot_Options_BarWidthS_OnValueChanged(this)
|
||||||
HealBot_Config.bwidth[HealBot_Config.Current_Skin] = this:GetValue();
|
HealBot_Config.bwidth[HealBot_Config.Current_Skin] = this:GetValue();
|
||||||
getglobal(this:GetName().."Text"):SetText(this.text .. ": " .. this:GetValue());
|
getglobal(this:GetName().."Text"):SetText(this.text .. ": " .. this:GetValue());
|
||||||
HealBot_Action_ResetSkin()
|
HealBot_Action_ResetSkin()
|
||||||
end
|
end
|
||||||
|
-- HealBot_Options_BarNumColsS_OnValueChanged: UI handler for OnValueChanged options panel.
|
||||||
function HealBot_Options_BarNumColsS_OnValueChanged(this)
|
function HealBot_Options_BarNumColsS_OnValueChanged(this)
|
||||||
HealBot_Config.numcols[HealBot_Config.Current_Skin] = this:GetValue();
|
HealBot_Config.numcols[HealBot_Config.Current_Skin] = this:GetValue();
|
||||||
getglobal(this:GetName().."Text"):SetText(this.text .. ": " .. this:GetValue());
|
getglobal(this:GetName().."Text"):SetText(this.text .. ": " .. this:GetValue());
|
||||||
HealBot_Action_ResetSkin()
|
HealBot_Action_ResetSkin()
|
||||||
end
|
end
|
||||||
|
-- HealBot_Options_BarBRSpaceS_OnValueChanged: UI handler for OnValueChanged options panel.
|
||||||
function HealBot_Options_BarBRSpaceS_OnValueChanged(this)
|
function HealBot_Options_BarBRSpaceS_OnValueChanged(this)
|
||||||
HealBot_Config.brspace[HealBot_Config.Current_Skin] = this:GetValue();
|
HealBot_Config.brspace[HealBot_Config.Current_Skin] = this:GetValue();
|
||||||
getglobal(this:GetName().."Text"):SetText(this.text .. ": " .. this:GetValue());
|
getglobal(this:GetName().."Text"):SetText(this.text .. ": " .. this:GetValue());
|
||||||
HealBot_Action_ResetSkin()
|
HealBot_Action_ResetSkin()
|
||||||
end
|
end
|
||||||
|
-- HealBot_Options_BarBCSpaceS_OnValueChanged: UI handler for OnValueChanged options panel.
|
||||||
function HealBot_Options_BarBCSpaceS_OnValueChanged(this)
|
function HealBot_Options_BarBCSpaceS_OnValueChanged(this)
|
||||||
HealBot_Config.bcspace[HealBot_Config.Current_Skin] = this:GetValue();
|
HealBot_Config.bcspace[HealBot_Config.Current_Skin] = this:GetValue();
|
||||||
getglobal(this:GetName().."Text"):SetText(this.text .. ": " .. this:GetValue());
|
getglobal(this:GetName().."Text"):SetText(this.text .. ": " .. this:GetValue());
|
||||||
HealBot_Action_ResetSkin()
|
HealBot_Action_ResetSkin()
|
||||||
end
|
end
|
||||||
|
-- HealBot_Options_FontHeight_OnValueChanged: UI handler for OnValueChanged options panel.
|
||||||
function HealBot_Options_FontHeight_OnValueChanged(this)
|
function HealBot_Options_FontHeight_OnValueChanged(this)
|
||||||
HealBot_Config.btextheight[HealBot_Config.Current_Skin] = this:GetValue();
|
HealBot_Config.btextheight[HealBot_Config.Current_Skin] = this:GetValue();
|
||||||
getglobal(this:GetName().."Text"):SetText(this.text .. ": " .. this:GetValue());
|
getglobal(this:GetName().."Text"):SetText(this.text .. ": " .. this:GetValue());
|
||||||
HealBot_Action_ResetSkin()
|
HealBot_Action_ResetSkin()
|
||||||
end
|
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)
|
function HealBot_Options_AbortBarSize_OnValueChanged(this)
|
||||||
HealBot_Config.abortsize[HealBot_Config.Current_Skin] = this:GetValue();
|
HealBot_Config.abortsize[HealBot_Config.Current_Skin] = this:GetValue();
|
||||||
getglobal(this:GetName().."Text"):SetText(this.text .. ": " .. this:GetValue());
|
getglobal(this:GetName().."Text"):SetText(this.text .. ": " .. this:GetValue());
|
||||||
HealBot_Action_ResetSkin()
|
HealBot_Action_ResetSkin()
|
||||||
end
|
end
|
||||||
|
-- HealBot_Options_ActionAlpha_OnValueChanged: UI handler for OnValueChanged options panel.
|
||||||
function HealBot_Options_ActionAlpha_OnValueChanged(this)
|
function HealBot_Options_ActionAlpha_OnValueChanged(this)
|
||||||
HealBot_Config.backcola[HealBot_Config.Current_Skin] = HealBot_Options_Pct_OnValueChanged(this);
|
HealBot_Config.backcola[HealBot_Config.Current_Skin] = HealBot_Options_Pct_OnValueChanged(this);
|
||||||
HealBot_Action_ResetSkin()
|
HealBot_Action_ResetSkin()
|
||||||
end
|
end
|
||||||
|
-- HealBot_Options_BarAlpha_OnValueChanged: UI handler for OnValueChanged options panel.
|
||||||
function HealBot_Options_BarAlpha_OnValueChanged(this)
|
function HealBot_Options_BarAlpha_OnValueChanged(this)
|
||||||
HealBot_Config.Barcola[HealBot_Config.Current_Skin] = HealBot_Options_Pct_OnValueChanged(this);
|
HealBot_Config.Barcola[HealBot_Config.Current_Skin] = HealBot_Options_Pct_OnValueChanged(this);
|
||||||
HealBot_Action_ResetSkin()
|
HealBot_Action_ResetSkin()
|
||||||
end
|
end
|
||||||
|
-- HealBot_Options_BarAlphaInHeal_OnValueChanged: UI handler for OnValueChanged options panel.
|
||||||
function HealBot_Options_BarAlphaInHeal_OnValueChanged(this)
|
function HealBot_Options_BarAlphaInHeal_OnValueChanged(this)
|
||||||
HealBot_Config.BarcolaInHeal[HealBot_Config.Current_Skin] = HealBot_Options_Pct_OnValueChanged(this);
|
HealBot_Config.BarcolaInHeal[HealBot_Config.Current_Skin] = HealBot_Options_Pct_OnValueChanged(this);
|
||||||
HealBot_Action_ResetSkin()
|
HealBot_Action_ResetSkin()
|
||||||
end
|
end
|
||||||
|
-- HealBot_Options_BarAlphaDis_OnValueChanged: UI handler for OnValueChanged options panel.
|
||||||
function HealBot_Options_BarAlphaDis_OnValueChanged(this)
|
function HealBot_Options_BarAlphaDis_OnValueChanged(this)
|
||||||
HealBot_Config.bardisa[HealBot_Config.Current_Skin] = HealBot_Options_Pct_OnValueChanged(this);
|
HealBot_Config.bardisa[HealBot_Config.Current_Skin] = HealBot_Options_Pct_OnValueChanged(this);
|
||||||
HealBot_Action_ResetSkin()
|
HealBot_Action_ResetSkin()
|
||||||
end
|
end
|
||||||
|
-- HealBot_SkinColorpick_OnClick: Opens color picker for skin customization.
|
||||||
function HealBot_SkinColorpick_OnClick(SkinType)
|
function HealBot_SkinColorpick_OnClick(SkinType)
|
||||||
HealBot_ColourObjWaiting=SkinType;
|
HealBot_ColourObjWaiting=SkinType;
|
||||||
|
|
||||||
@@ -99,6 +121,7 @@ function HealBot_SkinColorpick_OnClick(SkinType)
|
|||||||
HealBot_Config.babortcola[HealBot_Config.Current_Skin])
|
HealBot_Config.babortcola[HealBot_Config.Current_Skin])
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
-- HealBot_SetSkinColours: Applies skin configuration to UI elements.
|
||||||
function HealBot_SetSkinColours()
|
function HealBot_SetSkinColours()
|
||||||
-- Cache the current skin configuration for performance and readability
|
-- Cache the current skin configuration for performance and readability
|
||||||
local skin = HealBot_Config.Current_Skin
|
local skin = HealBot_Config.Current_Skin
|
||||||
@@ -196,76 +219,95 @@ function HealBot_SetSkinColours()
|
|||||||
|
|
||||||
HealBot_Action_PartyChanged()
|
HealBot_Action_PartyChanged()
|
||||||
end
|
end
|
||||||
|
-- HealBot_Options_AlertLevel_OnValueChanged: UI handler for OnValueChanged options panel.
|
||||||
function HealBot_Options_AlertLevel_OnValueChanged(this)
|
function HealBot_Options_AlertLevel_OnValueChanged(this)
|
||||||
HealBot_Config.AlertLevel = HealBot_Options_Pct_OnValueChanged(this);
|
HealBot_Config.AlertLevel = HealBot_Options_Pct_OnValueChanged(this);
|
||||||
HealBot_Action_Refresh();
|
HealBot_Action_Refresh();
|
||||||
end
|
end
|
||||||
|
-- HealBot_Options_AutoShow_OnLoad: UI handler for OnLoad options panel.
|
||||||
function HealBot_Options_AutoShow_OnLoad(this)
|
function HealBot_Options_AutoShow_OnLoad(this)
|
||||||
getglobal(this:GetName().."Text"):SetText(HEALBOT_OPTIONS_AUTOSHOW);
|
getglobal(this:GetName().."Text"):SetText(HEALBOT_OPTIONS_AUTOSHOW);
|
||||||
end
|
end
|
||||||
|
-- HealBot_Options_AutoShow_OnClick: UI handler for OnClick options panel.
|
||||||
function HealBot_Options_AutoShow_OnClick(this)
|
function HealBot_Options_AutoShow_OnClick(this)
|
||||||
HealBot_Config.AutoClose = this:GetChecked() or 0;
|
HealBot_Config.AutoClose = this:GetChecked() or 0;
|
||||||
HealBot_Action_Refresh();
|
HealBot_Action_Refresh();
|
||||||
end
|
end
|
||||||
|
-- HealBot_Options_PanelSounds_OnLoad: UI handler for OnLoad options panel.
|
||||||
function HealBot_Options_PanelSounds_OnLoad(this)
|
function HealBot_Options_PanelSounds_OnLoad(this)
|
||||||
getglobal(this:GetName().."Text"):SetText(HEALBOT_OPTIONS_PANELSOUNDS);
|
getglobal(this:GetName().."Text"):SetText(HEALBOT_OPTIONS_PANELSOUNDS);
|
||||||
end
|
end
|
||||||
|
-- HealBot_Options_PanelSounds_OnClick: UI handler for OnClick options panel.
|
||||||
function HealBot_Options_PanelSounds_OnClick(this)
|
function HealBot_Options_PanelSounds_OnClick(this)
|
||||||
HealBot_Config.PanelSounds = this:GetChecked() or 0;
|
HealBot_Config.PanelSounds = this:GetChecked() or 0;
|
||||||
end
|
end
|
||||||
|
-- HealBot_Options_ActionMouseover_OnLoad: UI handler for OnLoad options panel.
|
||||||
function HealBot_Options_ActionMouseover_OnLoad(this, text)
|
function HealBot_Options_ActionMouseover_OnLoad(this, text)
|
||||||
getglobal(this:GetName().."Text"):SetText(text);
|
getglobal(this:GetName().."Text"):SetText(text);
|
||||||
end
|
end
|
||||||
|
-- HealBot_Options_ActionMouseover_OnClick: UI handler for OnClick options panel.
|
||||||
function HealBot_Options_ActionMouseover_OnClick(this)
|
function HealBot_Options_ActionMouseover_OnClick(this)
|
||||||
HealBot_Config.ActionMouseover = this:GetChecked() or 0;
|
HealBot_Config.ActionMouseover = this:GetChecked() or 0;
|
||||||
end
|
end
|
||||||
|
-- HealBot_Options_ActionLocked_OnLoad: UI handler for OnLoad options panel.
|
||||||
function HealBot_Options_ActionLocked_OnLoad(this)
|
function HealBot_Options_ActionLocked_OnLoad(this)
|
||||||
getglobal(this:GetName().."Text"):SetText(HEALBOT_OPTIONS_ACTIONLOCKED);
|
getglobal(this:GetName().."Text"):SetText(HEALBOT_OPTIONS_ACTIONLOCKED);
|
||||||
end
|
end
|
||||||
|
-- HealBot_Options_ActionLocked_OnClick: UI handler for OnClick options panel.
|
||||||
function HealBot_Options_ActionLocked_OnClick(this)
|
function HealBot_Options_ActionLocked_OnClick(this)
|
||||||
HealBot_Config.ActionLocked = this:GetChecked() or 0;
|
HealBot_Config.ActionLocked = this:GetChecked() or 0;
|
||||||
end
|
end
|
||||||
|
-- HealBot_Options_HideOptions_OnLoad: UI handler for OnLoad options panel.
|
||||||
function HealBot_Options_HideOptions_OnLoad(this,text)
|
function HealBot_Options_HideOptions_OnLoad(this,text)
|
||||||
getglobal(this:GetName().."Text"):SetText(text);
|
getglobal(this:GetName().."Text"):SetText(text);
|
||||||
end
|
end
|
||||||
|
-- HealBot_Options_HideOptions_OnClick: UI handler for OnClick options panel.
|
||||||
function HealBot_Options_HideOptions_OnClick(this)
|
function HealBot_Options_HideOptions_OnClick(this)
|
||||||
HealBot_Config.HideOptions = this:GetChecked() or 0;
|
HealBot_Config.HideOptions = this:GetChecked() or 0;
|
||||||
HealBot_Action_PartyChanged();
|
HealBot_Action_PartyChanged();
|
||||||
end
|
end
|
||||||
|
-- HealBot_Options_HideAbort_OnLoad: UI handler for OnLoad options panel.
|
||||||
function HealBot_Options_HideAbort_OnLoad(this,text)
|
function HealBot_Options_HideAbort_OnLoad(this,text)
|
||||||
getglobal(this:GetName().."Text"):SetText(text);
|
getglobal(this:GetName().."Text"):SetText(text);
|
||||||
end
|
end
|
||||||
|
-- HealBot_Options_HideAbort_OnClick: UI handler for OnClick options panel.
|
||||||
function HealBot_Options_HideAbort_OnClick(this)
|
function HealBot_Options_HideAbort_OnClick(this)
|
||||||
HealBot_Config.HideAbort = this:GetChecked() or 0;
|
HealBot_Config.HideAbort = this:GetChecked() or 0;
|
||||||
HealBot_Action_PartyChanged();
|
HealBot_Action_PartyChanged();
|
||||||
end
|
end
|
||||||
|
-- HealBot_Options_GrowUpwards_OnLoad: UI handler for OnLoad options panel.
|
||||||
function HealBot_Options_GrowUpwards_OnLoad(this,text)
|
function HealBot_Options_GrowUpwards_OnLoad(this,text)
|
||||||
getglobal(this:GetName().."Text"):SetText(text);
|
getglobal(this:GetName().."Text"):SetText(text);
|
||||||
end
|
end
|
||||||
|
-- HealBot_Options_GrowUpwards_OnClick: UI handler for OnClick options panel.
|
||||||
function HealBot_Options_GrowUpwards_OnClick(this)
|
function HealBot_Options_GrowUpwards_OnClick(this)
|
||||||
HealBot_Config.GrowUpwards = this:GetChecked() or 0;
|
HealBot_Config.GrowUpwards = this:GetChecked() or 0;
|
||||||
HealBot_Action_PartyChanged();
|
HealBot_Action_PartyChanged();
|
||||||
end
|
end
|
||||||
|
-- HealBot_Options_QualityRange_OnLoad: UI handler for OnLoad options panel.
|
||||||
function HealBot_Options_QualityRange_OnLoad(this,text)
|
function HealBot_Options_QualityRange_OnLoad(this,text)
|
||||||
getglobal(this:GetName().."Text"):SetText(text);
|
getglobal(this:GetName().."Text"):SetText(text);
|
||||||
end
|
end
|
||||||
|
-- HealBot_Options_QualityRange_OnClick: UI handler for OnClick options panel.
|
||||||
function HealBot_Options_QualityRange_OnClick(this)
|
function HealBot_Options_QualityRange_OnClick(this)
|
||||||
HealBot_Config.QualityRange = this:GetChecked() or 0;
|
HealBot_Config.QualityRange = this:GetChecked() or 0;
|
||||||
HealBot_Action_PartyChanged();
|
|
||||||
end
|
end
|
||||||
|
-- HealBot_Options_ProtectPvP_OnLoad: UI handler for OnLoad options panel.
|
||||||
function HealBot_Options_ProtectPvP_OnLoad(this,text)
|
function HealBot_Options_ProtectPvP_OnLoad(this,text)
|
||||||
getglobal(this:GetName().."Text"):SetText(text);
|
getglobal(this:GetName().."Text"):SetText(text);
|
||||||
end
|
end
|
||||||
|
-- HealBot_Options_ProtectPvP_OnClick: UI handler for OnClick options panel.
|
||||||
function HealBot_Options_ProtectPvP_OnClick(this)
|
function HealBot_Options_ProtectPvP_OnClick(this)
|
||||||
HealBot_Config.ProtectPvP = this:GetChecked() or 0;
|
HealBot_Config.ProtectPvP = this:GetChecked() or 0;
|
||||||
HealBot_Action_Refresh();
|
|
||||||
end
|
end
|
||||||
|
-- HealBot_Options_FramePaddingS_OnValueChanged: UI handler for OnValueChanged options panel.
|
||||||
function HealBot_Options_FramePaddingS_OnValueChanged(this)
|
function HealBot_Options_FramePaddingS_OnValueChanged(this)
|
||||||
if not HealBot_Config.bpadding then HealBot_Config.bpadding = {} end
|
if not HealBot_Config.bpadding then HealBot_Config.bpadding = {} end
|
||||||
HealBot_Config.bpadding[HealBot_Config.Current_Skin] = this:GetValue();
|
HealBot_Config.bpadding[HealBot_Config.Current_Skin] = this:GetValue();
|
||||||
getglobal(this:GetName().."Text"):SetText(this.text .. ": " .. this:GetValue());
|
getglobal(this:GetName().."Text"):SetText(this.text .. ": " .. this:GetValue());
|
||||||
HealBot_Action_ResetSkin()
|
HealBot_Action_ResetSkin()
|
||||||
end
|
end
|
||||||
|
-- HealBot_Options_BorderThicknessS_OnValueChanged: UI handler for OnValueChanged options panel.
|
||||||
function HealBot_Options_BorderThicknessS_OnValueChanged(this)
|
function HealBot_Options_BorderThicknessS_OnValueChanged(this)
|
||||||
if not HealBot_Config.bboffset then HealBot_Config.bboffset = {} end
|
if not HealBot_Config.bboffset then HealBot_Config.bboffset = {} end
|
||||||
HealBot_Config.bboffset[HealBot_Config.Current_Skin] = this:GetValue();
|
HealBot_Config.bboffset[HealBot_Config.Current_Skin] = this:GetValue();
|
||||||
@@ -273,15 +315,18 @@ function HealBot_Options_BorderThicknessS_OnValueChanged(this)
|
|||||||
HealBot_Action_ResetSkin()
|
HealBot_Action_ResetSkin()
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_Options_HideParty_OnLoad: UI handler for OnLoad options panel.
|
||||||
function HealBot_Options_HideParty_OnLoad(this, text)
|
function HealBot_Options_HideParty_OnLoad(this, text)
|
||||||
getglobal(this:GetName().."Text"):SetText(text);
|
getglobal(this:GetName().."Text"):SetText(text);
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_Options_HideParty_OnClick: UI handler for OnClick options panel.
|
||||||
function HealBot_Options_HideParty_OnClick(this)
|
function HealBot_Options_HideParty_OnClick(this)
|
||||||
HealBot_Config.HideParty = this:GetChecked() or 0;
|
HealBot_Config.HideParty = this:GetChecked() or 0;
|
||||||
HealBot_Options_TogglePartyFrames();
|
HealBot_Options_TogglePartyFrames();
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_Options_TogglePartyFrames: UI handler for TogglePartyFrames options panel.
|
||||||
function HealBot_Options_TogglePartyFrames()
|
function HealBot_Options_TogglePartyFrames()
|
||||||
if HealBot_Config.HideParty == 1 then
|
if HealBot_Config.HideParty == 1 then
|
||||||
if HidePartyFrame then HidePartyFrame(); end
|
if HidePartyFrame then HidePartyFrame(); end
|
||||||
|
|||||||
@@ -102,7 +102,7 @@
|
|||||||
</OnLoad>
|
</OnLoad>
|
||||||
</Scripts>
|
</Scripts>
|
||||||
<Size>
|
<Size>
|
||||||
<AbsDimension y="70"/>
|
<AbsDimension y="95"/>
|
||||||
</Size>
|
</Size>
|
||||||
<Anchors>
|
<Anchors>
|
||||||
<Anchor point="TOPLEFT">
|
<Anchor point="TOPLEFT">
|
||||||
@@ -156,7 +156,7 @@
|
|||||||
<Anchors>
|
<Anchors>
|
||||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_ShowManaBars" relativePoint="TOPLEFT">
|
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_ShowManaBars" relativePoint="TOPLEFT">
|
||||||
<Offset>
|
<Offset>
|
||||||
<AbsDimension x="200" y="0" />
|
<AbsDimension x="180" y="0" />
|
||||||
</Offset>
|
</Offset>
|
||||||
</Anchor>
|
</Anchor>
|
||||||
</Anchors>
|
</Anchors>
|
||||||
@@ -174,6 +174,28 @@
|
|||||||
</OnClick>
|
</OnClick>
|
||||||
</Scripts>
|
</Scripts>
|
||||||
</CheckButton>
|
</CheckButton>
|
||||||
|
<CheckButton name="HealBot_Options_ShowNonManaBars" inherits="OptionsCheckButtonTemplate">
|
||||||
|
<Anchors>
|
||||||
|
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_ShowManaBars" relativePoint="BOTTOMLEFT">
|
||||||
|
<Offset>
|
||||||
|
<AbsDimension x="0" y="-2" />
|
||||||
|
</Offset>
|
||||||
|
</Anchor>
|
||||||
|
</Anchors>
|
||||||
|
<Scripts>
|
||||||
|
<OnLoad>
|
||||||
|
getglobal(this:GetName().."Text"):SetText("Track Non-Mana Resources");
|
||||||
|
</OnLoad>
|
||||||
|
<OnClick>
|
||||||
|
if (this:GetChecked()) then
|
||||||
|
HealBot_Config.ShowNonManaBars = 1;
|
||||||
|
else
|
||||||
|
HealBot_Config.ShowNonManaBars = 0;
|
||||||
|
end
|
||||||
|
HealBot_Action_Refresh();
|
||||||
|
</OnClick>
|
||||||
|
</Scripts>
|
||||||
|
</CheckButton>
|
||||||
</Frames>
|
</Frames>
|
||||||
</Frame>
|
</Frame>
|
||||||
|
|
||||||
@@ -243,8 +265,38 @@
|
|||||||
</Scripts>
|
</Scripts>
|
||||||
</CheckButton>
|
</CheckButton>
|
||||||
|
|
||||||
|
<Button name="HealBot_Options_Defaults" inherits="UIPanelButtonTemplate" text="HEALBOT_OPTIONS_DEFAULTS">
|
||||||
|
<Size>
|
||||||
|
<AbsDimension x="80" y="22"/>
|
||||||
|
</Size>
|
||||||
|
<Anchors>
|
||||||
|
<Anchor point="BOTTOM" relativePoint="BOTTOM">
|
||||||
|
<Offset>
|
||||||
|
<AbsDimension x="-50" y="15"/>
|
||||||
|
</Offset>
|
||||||
|
</Anchor>
|
||||||
|
</Anchors>
|
||||||
|
<Scripts>
|
||||||
|
<OnClick>HealBot_Options_Defaults_OnClick(this)</OnClick>
|
||||||
|
</Scripts>
|
||||||
|
</Button>
|
||||||
|
<Button name="HealBot_Options_CloseButton" inherits="UIPanelButtonTemplate" text="HEALBOT_OPTIONS_CLOSE">
|
||||||
|
<Size>
|
||||||
|
<AbsDimension x="80" y="22"/>
|
||||||
|
</Size>
|
||||||
|
<Anchors>
|
||||||
|
<Anchor point="BOTTOM" relativePoint="BOTTOM">
|
||||||
|
<Offset>
|
||||||
|
<AbsDimension x="50" y="15"/>
|
||||||
|
</Offset>
|
||||||
|
</Anchor>
|
||||||
|
</Anchors>
|
||||||
|
<Scripts>
|
||||||
|
<OnClick>
|
||||||
|
HideUIPanel(this:GetParent():GetParent());
|
||||||
|
</OnClick>
|
||||||
|
</Scripts>
|
||||||
|
</Button>
|
||||||
</Frames>
|
</Frames>
|
||||||
</Frame>
|
</Frame>
|
||||||
|
|
||||||
|
|||||||
+75
-37
@@ -1,44 +1,65 @@
|
|||||||
-- HealBot Options panel file: HealBot_Options_Healing.lua
|
-- HealBot Options panel file: HealBot_Options_Healing.lua
|
||||||
-- Split from original HealBot_Options.lua
|
-- Split from original HealBot_Options.lua
|
||||||
|
|
||||||
|
-- HealBot_Options_GroupHeals_OnLoad: UI handler for OnLoad options panel.
|
||||||
function HealBot_Options_GroupHeals_OnLoad(this,text)
|
function HealBot_Options_GroupHeals_OnLoad(this,text)
|
||||||
this.text = text
|
this.text = text
|
||||||
getglobal(this:GetName().."Text"):SetText(text);
|
getglobal(this:GetName().."Text"):SetText(text);
|
||||||
end
|
end
|
||||||
|
-- HealBot_Options_GroupHeals_OnClick: UI handler for OnClick options panel.
|
||||||
function HealBot_Options_GroupHeals_OnClick(this)
|
function HealBot_Options_GroupHeals_OnClick(this)
|
||||||
HealBot_Config.GroupHeals = this:GetChecked() or 0;
|
HealBot_Config.GroupHeals = this:GetChecked() or 0;
|
||||||
HealBot_RecalcParty();
|
HealBot_RecalcParty();
|
||||||
end
|
end
|
||||||
|
-- HealBot_Options_TankHeals_OnLoad: UI handler for OnLoad options panel.
|
||||||
function HealBot_Options_TankHeals_OnLoad(this,text)
|
function HealBot_Options_TankHeals_OnLoad(this,text)
|
||||||
this.text = text
|
this.text = text
|
||||||
getglobal(this:GetName().."Text"):SetText(text);
|
getglobal(this:GetName().."Text"):SetText(text);
|
||||||
end
|
end
|
||||||
|
-- HealBot_Options_TankHeals_OnClick: UI handler for OnClick options panel.
|
||||||
function HealBot_Options_TankHeals_OnClick(this)
|
function HealBot_Options_TankHeals_OnClick(this)
|
||||||
HealBot_Config.TankHeals = this:GetChecked() or 0;
|
HealBot_Config.TankHeals = this:GetChecked() or 0;
|
||||||
HealBot_RecalcParty();
|
HealBot_RecalcParty();
|
||||||
end
|
end
|
||||||
|
-- HealBot_Options_TargetHeals_OnLoad: UI handler for OnLoad options panel.
|
||||||
function HealBot_Options_TargetHeals_OnLoad(this,text)
|
function HealBot_Options_TargetHeals_OnLoad(this,text)
|
||||||
this.text = text
|
this.text = text
|
||||||
getglobal(this:GetName().."Text"):SetText(text);
|
getglobal(this:GetName().."Text"):SetText(text);
|
||||||
end
|
end
|
||||||
|
-- HealBot_Options_TargetHeals_OnClick: UI handler for OnClick options panel.
|
||||||
function HealBot_Options_TargetHeals_OnClick(this)
|
function HealBot_Options_TargetHeals_OnClick(this)
|
||||||
HealBot_Config.TargetHeals = this:GetChecked() or 0;
|
HealBot_Config.TargetHeals = this:GetChecked() or 0;
|
||||||
HealBot_RecalcParty();
|
HealBot_RecalcParty();
|
||||||
end
|
end
|
||||||
|
-- HealBot_Options_EmergencyHeals_OnLoad: UI handler for OnLoad options panel.
|
||||||
function HealBot_Options_EmergencyHeals_OnLoad(this,text)
|
function HealBot_Options_EmergencyHeals_OnLoad(this,text)
|
||||||
this.text = text
|
this.text = text
|
||||||
getglobal(this:GetName().."Text"):SetText(text);
|
getglobal(this:GetName().."Text"):SetText(text);
|
||||||
end
|
end
|
||||||
|
-- HealBot_Options_EmergencyHeals_OnClick: UI handler for OnClick options panel.
|
||||||
function HealBot_Options_EmergencyHeals_OnClick(this)
|
function HealBot_Options_EmergencyHeals_OnClick(this)
|
||||||
HealBot_Config.EmergencyHeals = this:GetChecked() or 0;
|
HealBot_Config.EmergencyHeals = this:GetChecked() or 0;
|
||||||
HealBot_RecalcParty();
|
HealBot_RecalcParty();
|
||||||
end
|
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)
|
function HealBot_Options_OverHeal_OnValueChanged(this)
|
||||||
HealBot_Config.OverHeal = HealBot_Options_Pct_OnValueChanged(this);
|
HealBot_Config.OverHeal = HealBot_Options_Pct_OnValueChanged(this);
|
||||||
end
|
end
|
||||||
|
-- HealBot_Options_EFClass_OnLoad: UI handler for OnLoad options panel.
|
||||||
function HealBot_Options_EFClass_OnLoad(this,text)
|
function HealBot_Options_EFClass_OnLoad(this,text)
|
||||||
getglobal(this:GetName().."Text"):SetText(text);
|
getglobal(this:GetName().."Text"):SetText(text);
|
||||||
end
|
end
|
||||||
|
-- HealBot_Options_EFClass_OnClick: UI handler for OnClick options panel.
|
||||||
function HealBot_Options_EFClass_OnClick(this)
|
function HealBot_Options_EFClass_OnClick(this)
|
||||||
if HealBot_Config.EmergencyFClass==1 then
|
if HealBot_Config.EmergencyFClass==1 then
|
||||||
HealBot_Config.EmergIncMelee[HEALBOT_DRUID] = HealBot_Options_EFClassDruid:GetChecked() or 0;
|
HealBot_Config.EmergIncMelee[HEALBOT_DRUID] = HealBot_Options_EFClassDruid:GetChecked() or 0;
|
||||||
@@ -81,10 +102,40 @@ function HealBot_Options_EFClass_OnClick(this)
|
|||||||
HealBot_Config.EmergIncCustom[HEALBOT_WARLOCK] = HealBot_Options_EFClassWarlock:GetChecked() or 0;
|
HealBot_Config.EmergIncCustom[HEALBOT_WARLOCK] = HealBot_Options_EFClassWarlock:GetChecked() or 0;
|
||||||
HealBot_Config.EmergIncCustom[HEALBOT_WARRIOR] = HealBot_Options_EFClassWarrior:GetChecked() or 0;
|
HealBot_Config.EmergIncCustom[HEALBOT_WARRIOR] = HealBot_Options_EFClassWarrior:GetChecked() or 0;
|
||||||
end
|
end
|
||||||
if HealBot_Config.EmergIncMonitor>10 then
|
if HealBot_Config.EmergIncMonitor > 1 then
|
||||||
HealBot_Action_PartyChanged();
|
HealBot_Action_PartyChanged();
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
HealBot_Options_HealthText_List = {
|
||||||
|
"Name Only",
|
||||||
|
"Health Percentage",
|
||||||
|
"Real Health",
|
||||||
|
"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 = {};
|
||||||
|
info.text = HealBot_Options_HealthText_List[i];
|
||||||
|
info.func = HealBot_Options_HealthText_OnSelect;
|
||||||
|
UIDropDownMenu_AddButton(info);
|
||||||
|
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())
|
||||||
|
HealBot_Action_RefreshButtons();
|
||||||
|
end
|
||||||
|
|
||||||
local HealBot_Options_EmergencyFClass_List = {
|
local HealBot_Options_EmergencyFClass_List = {
|
||||||
HEALBOT_CLASSES_MELEE,
|
HEALBOT_CLASSES_MELEE,
|
||||||
HEALBOT_CLASSES_RANGES,
|
HEALBOT_CLASSES_RANGES,
|
||||||
@@ -92,6 +143,7 @@ local HealBot_Options_EmergencyFClass_List = {
|
|||||||
HEALBOT_CLASSES_CUSTOM,
|
HEALBOT_CLASSES_CUSTOM,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
-- HealBot_Options_EmergencyFClass_DropDown: UI handler for DropDown options panel.
|
||||||
function HealBot_Options_EmergencyFClass_DropDown()
|
function HealBot_Options_EmergencyFClass_DropDown()
|
||||||
for i=1, getn(HealBot_Options_EmergencyFClass_List), 1 do
|
for i=1, getn(HealBot_Options_EmergencyFClass_List), 1 do
|
||||||
local info = {};
|
local info = {};
|
||||||
@@ -101,27 +153,32 @@ function HealBot_Options_EmergencyFClass_DropDown()
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_Options_EmergencyFClass_Initialize: UI handler for Initialize options panel.
|
||||||
function HealBot_Options_EmergencyFClass_Initialize()
|
function HealBot_Options_EmergencyFClass_Initialize()
|
||||||
UIDropDownMenu_Initialize(HealBot_Options_EmergencyFClass,HealBot_Options_EmergencyFClass_DropDown)
|
UIDropDownMenu_Initialize(HealBot_Options_EmergencyFClass,HealBot_Options_EmergencyFClass_DropDown)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_Options_EmergencyFClass_Refresh: UI handler for Refresh options panel.
|
||||||
function HealBot_Options_EmergencyFClass_Refresh(onselect)
|
function HealBot_Options_EmergencyFClass_Refresh(onselect)
|
||||||
if not HealBot_Config.EmergencyFClass then return end
|
if not HealBot_Config.EmergencyFClass then return end
|
||||||
if not onselect then HealBot_Options_EmergencyFClass_Initialize() end -- or wrong menu may be used !
|
if not onselect then HealBot_Options_EmergencyFClass_Initialize() end -- or wrong menu may be used !
|
||||||
UIDropDownMenu_SetSelectedID(HealBot_Options_EmergencyFClass,HealBot_Config.EmergencyFClass)
|
HealBot_UIDropDownMenu_SetSelectedID(HealBot_Options_EmergencyFClass,HealBot_Config.EmergencyFClass)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_Options_EmergencyFClass_OnLoad: UI handler for OnLoad options panel.
|
||||||
function HealBot_Options_EmergencyFClass_OnLoad()
|
function HealBot_Options_EmergencyFClass_OnLoad()
|
||||||
UIDropDownMenu_Initialize(this, HealBot_Options_EmergencyFClass_DropDown)
|
UIDropDownMenu_Initialize(this, HealBot_Options_EmergencyFClass_DropDown)
|
||||||
UIDropDownMenu_SetWidth(100, this)
|
UIDropDownMenu_SetWidth(100, this)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_Options_EmergencyFClass_OnSelect: UI handler for OnSelect options panel.
|
||||||
function HealBot_Options_EmergencyFClass_OnSelect()
|
function HealBot_Options_EmergencyFClass_OnSelect()
|
||||||
HealBot_Config.EmergencyFClass = this:GetID()
|
HealBot_Config.EmergencyFClass = this:GetID()
|
||||||
HealBot_Options_EmergencyFClass_Refresh(true)
|
HealBot_Options_EmergencyFClass_Refresh(true)
|
||||||
HealBot_Options_EFClass_Reset()
|
HealBot_Options_EFClass_Reset()
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_Options_EFClass_Reset: UI handler for Reset options panel.
|
||||||
function HealBot_Options_EFClass_Reset()
|
function HealBot_Options_EFClass_Reset()
|
||||||
if HealBot_Config.EmergencyFClass==1 then
|
if HealBot_Config.EmergencyFClass==1 then
|
||||||
HealBot_Options_EFClassDruid:SetChecked(HealBot_Config.EmergIncMelee[HEALBOT_DRUID]);
|
HealBot_Options_EFClassDruid:SetChecked(HealBot_Config.EmergIncMelee[HEALBOT_DRUID]);
|
||||||
@@ -175,6 +232,7 @@ local HealBot_Options_ExtraSort_List = {
|
|||||||
HEALBOT_SORTBY_MAXHEALTH,
|
HEALBOT_SORTBY_MAXHEALTH,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
-- HealBot_Options_ExtraSort_DropDown: UI handler for DropDown options panel.
|
||||||
function HealBot_Options_ExtraSort_DropDown()
|
function HealBot_Options_ExtraSort_DropDown()
|
||||||
for i=1, getn(HealBot_Options_ExtraSort_List), 1 do
|
for i=1, getn(HealBot_Options_ExtraSort_List), 1 do
|
||||||
local info = {};
|
local info = {};
|
||||||
@@ -184,21 +242,25 @@ function HealBot_Options_ExtraSort_DropDown()
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_Options_ExtraSort_Initialize: UI handler for Initialize options panel.
|
||||||
function HealBot_Options_ExtraSort_Initialize()
|
function HealBot_Options_ExtraSort_Initialize()
|
||||||
UIDropDownMenu_Initialize(HealBot_Options_ExtraSort,HealBot_Options_ExtraSort_DropDown)
|
UIDropDownMenu_Initialize(HealBot_Options_ExtraSort,HealBot_Options_ExtraSort_DropDown)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_Options_ExtraSort_Refresh: UI handler for Refresh options panel.
|
||||||
function HealBot_Options_ExtraSort_Refresh(onselect)
|
function HealBot_Options_ExtraSort_Refresh(onselect)
|
||||||
if not HealBot_Config.ExtraOrder then return end
|
if not HealBot_Config.ExtraOrder then return end
|
||||||
if not onselect then HealBot_Options_ExtraSort_Initialize() end -- or wrong menu may be used !
|
if not onselect then HealBot_Options_ExtraSort_Initialize() end -- or wrong menu may be used !
|
||||||
UIDropDownMenu_SetSelectedID(HealBot_Options_ExtraSort,HealBot_Config.ExtraOrder)
|
HealBot_UIDropDownMenu_SetSelectedID(HealBot_Options_ExtraSort,HealBot_Config.ExtraOrder)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_Options_ExtraSort_OnLoad: UI handler for OnLoad options panel.
|
||||||
function HealBot_Options_ExtraSort_OnLoad()
|
function HealBot_Options_ExtraSort_OnLoad()
|
||||||
UIDropDownMenu_Initialize(this, HealBot_Options_ExtraSort_DropDown)
|
UIDropDownMenu_Initialize(this, HealBot_Options_ExtraSort_DropDown)
|
||||||
UIDropDownMenu_SetWidth(100, this)
|
UIDropDownMenu_SetWidth(100, this)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_Options_ExtraSort_OnSelect: UI handler for OnSelect options panel.
|
||||||
function HealBot_Options_ExtraSort_OnSelect()
|
function HealBot_Options_ExtraSort_OnSelect()
|
||||||
HealBot_Config.ExtraOrder = this:GetID()
|
HealBot_Config.ExtraOrder = this:GetID()
|
||||||
HealBot_Options_ExtraSort_Refresh(true)
|
HealBot_Options_ExtraSort_Refresh(true)
|
||||||
@@ -207,6 +269,7 @@ end
|
|||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
-- HealBot_Options_EmergencyFilter_DropDown: UI handler for DropDown options panel.
|
||||||
function HealBot_Options_EmergencyFilter_DropDown()
|
function HealBot_Options_EmergencyFilter_DropDown()
|
||||||
for i=1, getn(HealBot_Options_EmergencyFilter_List), 1 do
|
for i=1, getn(HealBot_Options_EmergencyFilter_List), 1 do
|
||||||
local info = {};
|
local info = {};
|
||||||
@@ -217,30 +280,35 @@ function HealBot_Options_EmergencyFilter_DropDown()
|
|||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
-- HealBot_Options_EmergencyFilter_Initialize: UI handler for Initialize options panel.
|
||||||
function HealBot_Options_EmergencyFilter_Initialize()
|
function HealBot_Options_EmergencyFilter_Initialize()
|
||||||
UIDropDownMenu_Initialize(HealBot_Options_EmergencyFilter,HealBot_Options_EmergencyFilter_DropDown)
|
UIDropDownMenu_Initialize(HealBot_Options_EmergencyFilter,HealBot_Options_EmergencyFilter_DropDown)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
-- HealBot_Options_EmergencyFilter_Refresh: UI handler for Refresh options panel.
|
||||||
function HealBot_Options_EmergencyFilter_Refresh(onselect)
|
function HealBot_Options_EmergencyFilter_Refresh(onselect)
|
||||||
if not HealBot_Config.EmergIncMonitor then return end
|
if not HealBot_Config.EmergIncMonitor then return end
|
||||||
if not onselect then HealBot_Options_EmergencyFilter_Initialize() end -- or wrong menu may be used !
|
if not onselect then HealBot_Options_EmergencyFilter_Initialize() end -- or wrong menu may be used !
|
||||||
UIDropDownMenu_SetSelectedID(HealBot_Options_EmergencyFilter,HealBot_Config.EmergIncMonitor)
|
HealBot_UIDropDownMenu_SetSelectedID(HealBot_Options_EmergencyFilter,HealBot_Config.EmergIncMonitor)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
-- HealBot_Options_EmergencyFilter_OnLoad: UI handler for OnLoad options panel.
|
||||||
function HealBot_Options_EmergencyFilter_OnLoad()
|
function HealBot_Options_EmergencyFilter_OnLoad()
|
||||||
UIDropDownMenu_Initialize(this, HealBot_Options_EmergencyFilter_DropDown)
|
UIDropDownMenu_Initialize(this, HealBot_Options_EmergencyFilter_DropDown)
|
||||||
UIDropDownMenu_SetWidth(100, this)
|
UIDropDownMenu_SetWidth(100, this)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
-- HealBot_Options_EmergencyFilter_OnSelect: UI handler for OnSelect options panel.
|
||||||
function HealBot_Options_EmergencyFilter_OnSelect()
|
function HealBot_Options_EmergencyFilter_OnSelect()
|
||||||
HealBot_Config.EmergIncMonitor = this:GetID()
|
HealBot_Config.EmergIncMonitor = this:GetID()
|
||||||
HealBot_Options_EmergencyFilter_Refresh(true)
|
HealBot_Options_EmergencyFilter_Refresh(true)
|
||||||
HealBot_Options_EmergencyFilter_Reset()
|
HealBot_Options_EmergencyFilter_Reset()
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_Options_EmergencyFilter_Reset: UI handler for Reset options panel.
|
||||||
function HealBot_Options_EmergencyFilter_Reset()
|
function HealBot_Options_EmergencyFilter_Reset()
|
||||||
|
|
||||||
HealBot_EmergInc[HEALBOT_DRUID] = 0;
|
HealBot_EmergInc[HEALBOT_DRUID] = 0;
|
||||||
@@ -263,24 +331,6 @@ function HealBot_Options_EmergencyFilter_Reset()
|
|||||||
HealBot_EmergInc[HEALBOT_WARLOCK] = 1;
|
HealBot_EmergInc[HEALBOT_WARLOCK] = 1;
|
||||||
HealBot_EmergInc[HEALBOT_WARRIOR] = 1;
|
HealBot_EmergInc[HEALBOT_WARRIOR] = 1;
|
||||||
elseif HealBot_Config.EmergIncMonitor==2 then
|
elseif HealBot_Config.EmergIncMonitor==2 then
|
||||||
HealBot_EmergInc[HEALBOT_DRUID] = 1;
|
|
||||||
elseif HealBot_Config.EmergIncMonitor==3 then
|
|
||||||
HealBot_EmergInc[HEALBOT_HUNTER] = 1;
|
|
||||||
elseif HealBot_Config.EmergIncMonitor==4 then
|
|
||||||
HealBot_EmergInc[HEALBOT_MAGE] = 1;
|
|
||||||
elseif HealBot_Config.EmergIncMonitor==5 then
|
|
||||||
HealBot_EmergInc[HEALBOT_PALADIN] = 1;
|
|
||||||
elseif HealBot_Config.EmergIncMonitor==6 then
|
|
||||||
HealBot_EmergInc[HEALBOT_PRIEST] = 1;
|
|
||||||
elseif HealBot_Config.EmergIncMonitor==7 then
|
|
||||||
HealBot_EmergInc[HEALBOT_ROGUE] = 1;
|
|
||||||
elseif HealBot_Config.EmergIncMonitor==8 then
|
|
||||||
HealBot_EmergInc[HEALBOT_SHAMAN] = 1;
|
|
||||||
elseif HealBot_Config.EmergIncMonitor==9 then
|
|
||||||
HealBot_EmergInc[HEALBOT_WARLOCK] = 1;
|
|
||||||
elseif HealBot_Config.EmergIncMonitor==10 then
|
|
||||||
HealBot_EmergInc[HEALBOT_WARRIOR] = 1;
|
|
||||||
elseif HealBot_Config.EmergIncMonitor==11 then
|
|
||||||
HealBot_EmergInc[HEALBOT_DRUID] = HealBot_Config.EmergIncMelee[HEALBOT_DRUID];
|
HealBot_EmergInc[HEALBOT_DRUID] = HealBot_Config.EmergIncMelee[HEALBOT_DRUID];
|
||||||
HealBot_EmergInc[HEALBOT_HUNTER] = HealBot_Config.EmergIncMelee[HEALBOT_HUNTER];
|
HealBot_EmergInc[HEALBOT_HUNTER] = HealBot_Config.EmergIncMelee[HEALBOT_HUNTER];
|
||||||
HealBot_EmergInc[HEALBOT_MAGE] = HealBot_Config.EmergIncMelee[HEALBOT_MAGE];
|
HealBot_EmergInc[HEALBOT_MAGE] = HealBot_Config.EmergIncMelee[HEALBOT_MAGE];
|
||||||
@@ -290,7 +340,7 @@ function HealBot_Options_EmergencyFilter_Reset()
|
|||||||
HealBot_EmergInc[HEALBOT_SHAMAN] = HealBot_Config.EmergIncMelee[HEALBOT_SHAMAN];
|
HealBot_EmergInc[HEALBOT_SHAMAN] = HealBot_Config.EmergIncMelee[HEALBOT_SHAMAN];
|
||||||
HealBot_EmergInc[HEALBOT_WARLOCK] = HealBot_Config.EmergIncMelee[HEALBOT_WARLOCK];
|
HealBot_EmergInc[HEALBOT_WARLOCK] = HealBot_Config.EmergIncMelee[HEALBOT_WARLOCK];
|
||||||
HealBot_EmergInc[HEALBOT_WARRIOR] = HealBot_Config.EmergIncMelee[HEALBOT_WARRIOR];
|
HealBot_EmergInc[HEALBOT_WARRIOR] = HealBot_Config.EmergIncMelee[HEALBOT_WARRIOR];
|
||||||
elseif HealBot_Config.EmergIncMonitor==12 then
|
elseif HealBot_Config.EmergIncMonitor==3 then
|
||||||
HealBot_EmergInc[HEALBOT_DRUID] = HealBot_Config.EmergIncRange[HEALBOT_DRUID];
|
HealBot_EmergInc[HEALBOT_DRUID] = HealBot_Config.EmergIncRange[HEALBOT_DRUID];
|
||||||
HealBot_EmergInc[HEALBOT_HUNTER] = HealBot_Config.EmergIncRange[HEALBOT_HUNTER];
|
HealBot_EmergInc[HEALBOT_HUNTER] = HealBot_Config.EmergIncRange[HEALBOT_HUNTER];
|
||||||
HealBot_EmergInc[HEALBOT_MAGE] = HealBot_Config.EmergIncRange[HEALBOT_MAGE];
|
HealBot_EmergInc[HEALBOT_MAGE] = HealBot_Config.EmergIncRange[HEALBOT_MAGE];
|
||||||
@@ -300,7 +350,7 @@ function HealBot_Options_EmergencyFilter_Reset()
|
|||||||
HealBot_EmergInc[HEALBOT_SHAMAN] = HealBot_Config.EmergIncRange[HEALBOT_SHAMAN];
|
HealBot_EmergInc[HEALBOT_SHAMAN] = HealBot_Config.EmergIncRange[HEALBOT_SHAMAN];
|
||||||
HealBot_EmergInc[HEALBOT_WARLOCK] = HealBot_Config.EmergIncRange[HEALBOT_WARLOCK];
|
HealBot_EmergInc[HEALBOT_WARLOCK] = HealBot_Config.EmergIncRange[HEALBOT_WARLOCK];
|
||||||
HealBot_EmergInc[HEALBOT_WARRIOR] = HealBot_Config.EmergIncRange[HEALBOT_WARRIOR];
|
HealBot_EmergInc[HEALBOT_WARRIOR] = HealBot_Config.EmergIncRange[HEALBOT_WARRIOR];
|
||||||
elseif HealBot_Config.EmergIncMonitor==13 then
|
elseif HealBot_Config.EmergIncMonitor==4 then
|
||||||
HealBot_EmergInc[HEALBOT_DRUID] = HealBot_Config.EmergIncHealers[HEALBOT_DRUID];
|
HealBot_EmergInc[HEALBOT_DRUID] = HealBot_Config.EmergIncHealers[HEALBOT_DRUID];
|
||||||
HealBot_EmergInc[HEALBOT_HUNTER] = HealBot_Config.EmergIncHealers[HEALBOT_HUNTER];
|
HealBot_EmergInc[HEALBOT_HUNTER] = HealBot_Config.EmergIncHealers[HEALBOT_HUNTER];
|
||||||
HealBot_EmergInc[HEALBOT_MAGE] = HealBot_Config.EmergIncHealers[HEALBOT_MAGE];
|
HealBot_EmergInc[HEALBOT_MAGE] = HealBot_Config.EmergIncHealers[HEALBOT_MAGE];
|
||||||
@@ -310,7 +360,7 @@ function HealBot_Options_EmergencyFilter_Reset()
|
|||||||
HealBot_EmergInc[HEALBOT_SHAMAN] = HealBot_Config.EmergIncHealers[HEALBOT_SHAMAN];
|
HealBot_EmergInc[HEALBOT_SHAMAN] = HealBot_Config.EmergIncHealers[HEALBOT_SHAMAN];
|
||||||
HealBot_EmergInc[HEALBOT_WARLOCK] = HealBot_Config.EmergIncHealers[HEALBOT_WARLOCK];
|
HealBot_EmergInc[HEALBOT_WARLOCK] = HealBot_Config.EmergIncHealers[HEALBOT_WARLOCK];
|
||||||
HealBot_EmergInc[HEALBOT_WARRIOR] = HealBot_Config.EmergIncHealers[HEALBOT_WARRIOR];
|
HealBot_EmergInc[HEALBOT_WARRIOR] = HealBot_Config.EmergIncHealers[HEALBOT_WARRIOR];
|
||||||
elseif HealBot_Config.EmergIncMonitor==14 then
|
elseif HealBot_Config.EmergIncMonitor==5 then
|
||||||
HealBot_EmergInc[HEALBOT_DRUID] = HealBot_Config.EmergIncCustom[HEALBOT_DRUID];
|
HealBot_EmergInc[HEALBOT_DRUID] = HealBot_Config.EmergIncCustom[HEALBOT_DRUID];
|
||||||
HealBot_EmergInc[HEALBOT_HUNTER] = HealBot_Config.EmergIncCustom[HEALBOT_HUNTER];
|
HealBot_EmergInc[HEALBOT_HUNTER] = HealBot_Config.EmergIncCustom[HEALBOT_HUNTER];
|
||||||
HealBot_EmergInc[HEALBOT_MAGE] = HealBot_Config.EmergIncCustom[HEALBOT_MAGE];
|
HealBot_EmergInc[HEALBOT_MAGE] = HealBot_Config.EmergIncCustom[HEALBOT_MAGE];
|
||||||
@@ -324,15 +374,3 @@ function HealBot_Options_EmergencyFilter_Reset()
|
|||||||
|
|
||||||
HealBot_Action_PartyChanged()
|
HealBot_Action_PartyChanged()
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
|
|||||||
@@ -52,7 +52,7 @@
|
|||||||
</Anchor>
|
</Anchor>
|
||||||
</Anchors>
|
</Anchors>
|
||||||
<Scripts>
|
<Scripts>
|
||||||
<OnLoad>HealBot_Options_GroupHeals_OnLoad(this,HEALBOT_OPTIONS_GROUPHEALS)</OnLoad>
|
<OnLoad>HealBot_Options_GroupHeals_OnLoad(this,HEALBOT_OPTIONS_GROUPHEALS_LABEL)</OnLoad>
|
||||||
<OnClick>HealBot_Options_GroupHeals_OnClick(this)</OnClick>
|
<OnClick>HealBot_Options_GroupHeals_OnClick(this)</OnClick>
|
||||||
</Scripts>
|
</Scripts>
|
||||||
</CheckButton>
|
</CheckButton>
|
||||||
@@ -95,6 +95,19 @@
|
|||||||
<OnClick>HealBot_Options_EmergencyHeals_OnClick(this)</OnClick>
|
<OnClick>HealBot_Options_EmergencyHeals_OnClick(this)</OnClick>
|
||||||
</Scripts>
|
</Scripts>
|
||||||
</CheckButton>
|
</CheckButton>
|
||||||
|
<CheckButton name="HealBot_Options_PetHeals" inherits="OptionsCheckButtonTemplate">
|
||||||
|
<Anchors>
|
||||||
|
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_GroupHeals" relativePoint="BOTTOMLEFT">
|
||||||
|
<Offset>
|
||||||
|
<AbsDimension x="244" y="5" />
|
||||||
|
</Offset>
|
||||||
|
</Anchor>
|
||||||
|
</Anchors>
|
||||||
|
<Scripts>
|
||||||
|
<OnLoad>HealBot_Options_PetHeals_OnLoad(this,HEALBOT_OPTIONS_PETHEALS)</OnLoad>
|
||||||
|
<OnClick>HealBot_Options_PetHeals_OnClick(this)</OnClick>
|
||||||
|
</Scripts>
|
||||||
|
</CheckButton>
|
||||||
|
|
||||||
</Frames>
|
</Frames>
|
||||||
</Frame>
|
</Frame>
|
||||||
@@ -183,6 +196,34 @@
|
|||||||
</Scripts>
|
</Scripts>
|
||||||
</Frame>
|
</Frame>
|
||||||
|
|
||||||
|
<Frame name="HealBot_Options_HealthText" inherits="UIDropDownMenuTemplate" id="1">
|
||||||
|
<Anchors>
|
||||||
|
<Anchor point="TOPLEFT">
|
||||||
|
<Offset>
|
||||||
|
<AbsDimension x="155" y="-271" />
|
||||||
|
</Offset>
|
||||||
|
</Anchor>
|
||||||
|
</Anchors>
|
||||||
|
<Layers>
|
||||||
|
<Layer level="OVERLAY">
|
||||||
|
<FontString inherits="GameFontNormalSmall" text="Health Text">
|
||||||
|
<Anchors>
|
||||||
|
<Anchor point="TOPLEFT">
|
||||||
|
<Offset>
|
||||||
|
<AbsDimension x="-110" y="-7"/>
|
||||||
|
</Offset>
|
||||||
|
</Anchor>
|
||||||
|
</Anchors>
|
||||||
|
</FontString>
|
||||||
|
</Layer>
|
||||||
|
</Layers>
|
||||||
|
<Scripts>
|
||||||
|
<OnLoad>
|
||||||
|
HealBot_Options_HealthText_OnLoad(this)
|
||||||
|
</OnLoad>
|
||||||
|
</Scripts>
|
||||||
|
</Frame>
|
||||||
|
|
||||||
<Frame name="HealBot_Options_EmergLFrame" inherits="OptionFrameBoxTemplate">
|
<Frame name="HealBot_Options_EmergLFrame" inherits="OptionFrameBoxTemplate">
|
||||||
<Scripts>
|
<Scripts>
|
||||||
<OnLoad>
|
<OnLoad>
|
||||||
@@ -196,7 +237,7 @@
|
|||||||
<Anchors>
|
<Anchors>
|
||||||
<Anchor point="TOPLEFT">
|
<Anchor point="TOPLEFT">
|
||||||
<Offset>
|
<Offset>
|
||||||
<AbsDimension x="21" y="-275"/>
|
<AbsDimension x="21" y="-308"/>
|
||||||
</Offset>
|
</Offset>
|
||||||
</Anchor>
|
</Anchor>
|
||||||
<Anchor point="TOPRIGHT">
|
<Anchor point="TOPRIGHT">
|
||||||
|
|||||||
@@ -0,0 +1,7 @@
|
|||||||
|
-- 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);
|
||||||
|
end
|
||||||
@@ -0,0 +1,105 @@
|
|||||||
|
<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="31" y="-40"/>
|
||||||
|
</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="5"/>
|
||||||
|
</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">
|
||||||
|
<Offset>
|
||||||
|
<AbsDimension x="31" y="-145"/>
|
||||||
|
</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="5"/>
|
||||||
|
</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>
|
||||||
|
|
||||||
|
</Frames>
|
||||||
|
<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="330" y="30"/>
|
||||||
|
<Anchors>
|
||||||
|
<Anchor point="TOPLEFT">
|
||||||
|
<Offset>
|
||||||
|
<AbsDimension x="65" y="-95"/>
|
||||||
|
</Offset>
|
||||||
|
</Anchor>
|
||||||
|
</Anchors>
|
||||||
|
<Color r="0.7" g="0.7" b="0.7"/>
|
||||||
|
</FontString>
|
||||||
|
</Layer>
|
||||||
|
</Layers>
|
||||||
|
<Scripts>
|
||||||
|
<OnShow>
|
||||||
|
HealBot_Options_Integrations_OnShow(this);
|
||||||
|
</OnShow>
|
||||||
|
</Scripts>
|
||||||
|
</Frame>
|
||||||
|
</Ui>
|
||||||
@@ -1,6 +1,25 @@
|
|||||||
-- HealBot Options panel file: HealBot_Options_Skins.lua
|
-- HealBot Options panel file: HealBot_Options_Skins.lua
|
||||||
-- Split from original HealBot_Options.lua
|
-- Split from original HealBot_Options.lua
|
||||||
|
|
||||||
|
-- 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
|
||||||
|
|
||||||
|
-- HealBot_Options_GridOrientation_OnClick: UI handler for OnClick options panel.
|
||||||
|
function HealBot_Options_GridOrientation_OnClick(this)
|
||||||
|
if not HealBot_Config.GridOrientation then HealBot_Config.GridOrientation = {} end
|
||||||
|
if this:GetChecked() then
|
||||||
|
HealBot_Config.GridOrientation[HealBot_Config.Current_Skin] = 2 -- Horizontal
|
||||||
|
else
|
||||||
|
HealBot_Config.GridOrientation[HealBot_Config.Current_Skin] = 1 -- Vertical
|
||||||
|
end
|
||||||
|
HealBot_Action_PartyChanged()
|
||||||
|
end
|
||||||
|
|
||||||
|
-- HealBot_Options_NewSkin_OnTextChanged: UI handler for OnTextChanged options panel.
|
||||||
function HealBot_Options_NewSkin_OnTextChanged(this)
|
function HealBot_Options_NewSkin_OnTextChanged(this)
|
||||||
local text= this:GetText()
|
local text= this:GetText()
|
||||||
if string.len(text)>0 then
|
if string.len(text)>0 then
|
||||||
@@ -9,8 +28,13 @@ function HealBot_Options_NewSkin_OnTextChanged(this)
|
|||||||
HealBot_Options_NewSkinb:Disable();
|
HealBot_Options_NewSkinb:Disable();
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
-- HealBot_Options_NewSkinb_OnClick: UI handler for OnClick options panel.
|
||||||
function HealBot_Options_NewSkinb_OnClick(this)
|
function HealBot_Options_NewSkinb_OnClick(this)
|
||||||
HealBot_Config.numcols[HealBot_Options_NewSkin:GetText()] = HealBot_Config.numcols[HealBot_Config.Current_Skin]
|
HealBot_Config.numcols[HealBot_Options_NewSkin:GetText()] = HealBot_Config.numcols[HealBot_Config.Current_Skin]
|
||||||
|
if not HealBot_Config.bmaxrows then HealBot_Config.bmaxrows = {} end
|
||||||
|
if not HealBot_Config.GridOrientation then HealBot_Config.GridOrientation = {} end
|
||||||
|
HealBot_Config.bmaxrows[HealBot_Options_NewSkin:GetText()] = HealBot_Config.bmaxrows[HealBot_Config.Current_Skin] or 0
|
||||||
|
HealBot_Config.GridOrientation[HealBot_Options_NewSkin:GetText()] = HealBot_Config.GridOrientation[HealBot_Config.Current_Skin] or 1
|
||||||
HealBot_Config.btexture[HealBot_Options_NewSkin:GetText()] = HealBot_Config.btexture[HealBot_Config.Current_Skin]
|
HealBot_Config.btexture[HealBot_Options_NewSkin:GetText()] = HealBot_Config.btexture[HealBot_Config.Current_Skin]
|
||||||
HealBot_Config.bcspace[HealBot_Options_NewSkin:GetText()] = HealBot_Config.bcspace[HealBot_Config.Current_Skin]
|
HealBot_Config.bcspace[HealBot_Options_NewSkin:GetText()] = HealBot_Config.bcspace[HealBot_Config.Current_Skin]
|
||||||
HealBot_Config.brspace[HealBot_Options_NewSkin:GetText()] = HealBot_Config.brspace[HealBot_Config.Current_Skin]
|
HealBot_Config.brspace[HealBot_Options_NewSkin:GetText()] = HealBot_Config.brspace[HealBot_Config.Current_Skin]
|
||||||
@@ -53,9 +77,12 @@ function HealBot_Options_NewSkinb_OnClick(this)
|
|||||||
HealBot_Options_SetSkins()
|
HealBot_Options_SetSkins()
|
||||||
HealBot_Options_NewSkin:SetText("")
|
HealBot_Options_NewSkin:SetText("")
|
||||||
end
|
end
|
||||||
|
-- HealBot_Options_DeleteSkin_OnClick: UI handler for OnClick options panel.
|
||||||
function HealBot_Options_DeleteSkin_OnClick(this)
|
function HealBot_Options_DeleteSkin_OnClick(this)
|
||||||
if HealBot_Config.Current_Skin~=HEALBOT_SKINS_STD then
|
if HealBot_Config.Current_Skin~=HEALBOT_SKINS_STD then
|
||||||
HealBot_Config.numcols[HealBot_Options_SkinsText:GetText()] = nil
|
HealBot_Config.numcols[HealBot_Options_SkinsText:GetText()] = nil
|
||||||
|
if HealBot_Config.bmaxrows then HealBot_Config.bmaxrows[HealBot_Options_SkinsText:GetText()] = nil end
|
||||||
|
if HealBot_Config.GridOrientation then HealBot_Config.GridOrientation[HealBot_Options_SkinsText:GetText()] = nil end
|
||||||
HealBot_Config.btexture[HealBot_Options_SkinsText:GetText()] = nil
|
HealBot_Config.btexture[HealBot_Options_SkinsText:GetText()] = nil
|
||||||
HealBot_Config.bcspace[HealBot_Options_SkinsText:GetText()] = nil
|
HealBot_Config.bcspace[HealBot_Options_SkinsText:GetText()] = nil
|
||||||
HealBot_Config.brspace[HealBot_Options_SkinsText:GetText()] = nil
|
HealBot_Config.brspace[HealBot_Options_SkinsText:GetText()] = nil
|
||||||
@@ -98,6 +125,7 @@ function HealBot_Options_DeleteSkin_OnClick(this)
|
|||||||
HealBot_Options_SetSkins()
|
HealBot_Options_SetSkins()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
-- HealBot_Options_Skins_DropDown: UI handler for DropDown options panel.
|
||||||
function HealBot_Options_Skins_DropDown()
|
function HealBot_Options_Skins_DropDown()
|
||||||
for i=1, getn(HealBot_Skins), 1 do
|
for i=1, getn(HealBot_Skins), 1 do
|
||||||
local info = {};
|
local info = {};
|
||||||
@@ -106,18 +134,22 @@ function HealBot_Options_Skins_DropDown()
|
|||||||
UIDropDownMenu_AddButton(info);
|
UIDropDownMenu_AddButton(info);
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
-- HealBot_Options_Skins_Initialize: UI handler for Initialize options panel.
|
||||||
function HealBot_Options_Skins_Initialize()
|
function HealBot_Options_Skins_Initialize()
|
||||||
UIDropDownMenu_Initialize(HealBot_Options_Skins,HealBot_Options_Skins_DropDown)
|
UIDropDownMenu_Initialize(HealBot_Options_Skins,HealBot_Options_Skins_DropDown)
|
||||||
end
|
end
|
||||||
|
-- HealBot_Options_Skins_Refresh: UI handler for Refresh options panel.
|
||||||
function HealBot_Options_Skins_Refresh(onselect)
|
function HealBot_Options_Skins_Refresh(onselect)
|
||||||
if not HealBot_Config.Skin_ID then return end
|
if not HealBot_Config.Skin_ID then return end
|
||||||
if not onselect then HealBot_Options_Skins_Initialize() end -- or wrong menu may be used !
|
if not onselect then HealBot_Options_Skins_Initialize() end -- or wrong menu may be used !
|
||||||
UIDropDownMenu_SetSelectedID(HealBot_Options_Skins,HealBot_Config.Skin_ID)
|
HealBot_UIDropDownMenu_SetSelectedID(HealBot_Options_Skins,HealBot_Config.Skin_ID)
|
||||||
end
|
end
|
||||||
|
-- HealBot_Options_Skins_OnLoad: UI handler for OnLoad options panel.
|
||||||
function HealBot_Options_Skins_OnLoad()
|
function HealBot_Options_Skins_OnLoad()
|
||||||
UIDropDownMenu_Initialize(this, HealBot_Options_Skins_DropDown)
|
UIDropDownMenu_Initialize(this, HealBot_Options_Skins_DropDown)
|
||||||
UIDropDownMenu_SetWidth(100, this)
|
UIDropDownMenu_SetWidth(100, this)
|
||||||
end
|
end
|
||||||
|
-- HealBot_Options_Skins_OnSelect: UI handler for OnSelect options panel.
|
||||||
function HealBot_Options_Skins_OnSelect()
|
function HealBot_Options_Skins_OnSelect()
|
||||||
HealBot_Config.Skin_ID = this:GetID()
|
HealBot_Config.Skin_ID = this:GetID()
|
||||||
HealBot_Options_Skins_Refresh(true)
|
HealBot_Options_Skins_Refresh(true)
|
||||||
|
|||||||
+71
-19
@@ -266,9 +266,9 @@
|
|||||||
<AbsDimension x="123" y="17" />
|
<AbsDimension x="123" y="17" />
|
||||||
</Size>
|
</Size>
|
||||||
<Anchors>
|
<Anchors>
|
||||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_BarBRSpaceS" relativePoint="TOPLEFT">
|
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_BarBCSpaceS" relativePoint="TOPRIGHT">
|
||||||
<Offset>
|
<Offset>
|
||||||
<AbsDimension x="0" y="-35" />
|
<AbsDimension x="10" y="0" />
|
||||||
</Offset>
|
</Offset>
|
||||||
</Anchor>
|
</Anchor>
|
||||||
</Anchors>
|
</Anchors>
|
||||||
@@ -277,28 +277,14 @@
|
|||||||
<OnValueChanged>HealBot_Options_FramePaddingS_OnValueChanged(this)</OnValueChanged>
|
<OnValueChanged>HealBot_Options_FramePaddingS_OnValueChanged(this)</OnValueChanged>
|
||||||
</Scripts>
|
</Scripts>
|
||||||
</Slider>
|
</Slider>
|
||||||
<Slider name="HealBot_Options_BorderThicknessS" inherits="HealBot_Options_SliderTemplate">
|
|
||||||
<Size>
|
|
||||||
<AbsDimension x="123" y="17" />
|
|
||||||
</Size>
|
|
||||||
<Anchors>
|
|
||||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_FramePaddingS" relativePoint="TOPRIGHT">
|
|
||||||
<Offset>
|
|
||||||
<AbsDimension x="10" y="0" />
|
|
||||||
</Offset>
|
|
||||||
</Anchor>
|
|
||||||
</Anchors>
|
|
||||||
<Scripts>
|
|
||||||
<OnLoad>HealBot_Options_val_OnLoad(this,"Solid Border",1,10)</OnLoad>
|
|
||||||
<OnValueChanged>HealBot_Options_BorderThicknessS_OnValueChanged(this)</OnValueChanged>
|
|
||||||
</Scripts>
|
|
||||||
</Slider>
|
|
||||||
<Slider name="HealBot_Options_BarAlpha" inherits="HealBot_Options_SliderTemplate">
|
<Slider name="HealBot_Options_BarAlpha" inherits="HealBot_Options_SliderTemplate">
|
||||||
<Size>
|
<Size>
|
||||||
<AbsDimension x="123" y="17" />
|
<AbsDimension x="123" y="17" />
|
||||||
</Size>
|
</Size>
|
||||||
<Anchors>
|
<Anchors>
|
||||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_FramePaddingS" relativePoint="TOPLEFT">
|
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_BarBRSpaceS" relativePoint="TOPLEFT">
|
||||||
<Offset>
|
<Offset>
|
||||||
<AbsDimension x="0" y="-35" />
|
<AbsDimension x="0" y="-35" />
|
||||||
</Offset>
|
</Offset>
|
||||||
@@ -374,6 +360,72 @@
|
|||||||
<OnValueChanged>HealBot_Options_FontHeight_OnValueChanged(this)</OnValueChanged>
|
<OnValueChanged>HealBot_Options_FontHeight_OnValueChanged(this)</OnValueChanged>
|
||||||
</Scripts>
|
</Scripts>
|
||||||
</Slider>
|
</Slider>
|
||||||
|
<Slider name="HealBot_Options_IconSizeS" inherits="HealBot_Options_SliderTemplate">
|
||||||
|
<Size>
|
||||||
|
<AbsDimension x="123" y="17" />
|
||||||
|
</Size>
|
||||||
|
<Anchors>
|
||||||
|
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_FontHeight" relativePoint="TOPRIGHT">
|
||||||
|
<Offset>
|
||||||
|
<AbsDimension x="10" y="0" />
|
||||||
|
</Offset>
|
||||||
|
</Anchor>
|
||||||
|
</Anchors>
|
||||||
|
<Scripts>
|
||||||
|
<OnLoad>HealBot_Options_val_OnLoad(this,"Icon size",5,30)</OnLoad>
|
||||||
|
<OnValueChanged>HealBot_Options_IconSizeS_OnValueChanged(this)</OnValueChanged>
|
||||||
|
</Scripts>
|
||||||
|
</Slider>
|
||||||
|
|
||||||
|
<Slider name="HealBot_Options_BorderThicknessS" inherits="HealBot_Options_SliderTemplate">
|
||||||
|
<Size>
|
||||||
|
<AbsDimension x="123" y="17" />
|
||||||
|
</Size>
|
||||||
|
<Anchors>
|
||||||
|
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_BarAlphaInHeal" relativePoint="TOPRIGHT">
|
||||||
|
<Offset>
|
||||||
|
<AbsDimension x="10" y="0" />
|
||||||
|
</Offset>
|
||||||
|
</Anchor>
|
||||||
|
</Anchors>
|
||||||
|
<Scripts>
|
||||||
|
<OnLoad>HealBot_Options_val_OnLoad(this,"Solid Border",1,10)</OnLoad>
|
||||||
|
<OnValueChanged>HealBot_Options_BorderThicknessS_OnValueChanged(this)</OnValueChanged>
|
||||||
|
</Scripts>
|
||||||
|
</Slider>
|
||||||
|
<Slider name="HealBot_Options_BarMaxRowsS" inherits="HealBot_Options_SliderTemplate">
|
||||||
|
<Size>
|
||||||
|
<AbsDimension x="123" y="17" />
|
||||||
|
</Size>
|
||||||
|
<Anchors>
|
||||||
|
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_AbortBarSize" relativePoint="TOPRIGHT">
|
||||||
|
<Offset>
|
||||||
|
<AbsDimension x="10" y="0" />
|
||||||
|
</Offset>
|
||||||
|
</Anchor>
|
||||||
|
</Anchors>
|
||||||
|
<Scripts>
|
||||||
|
<OnLoad>HealBot_Options_val_OnLoad(this,"Max Rows",0,40)</OnLoad>
|
||||||
|
<OnValueChanged>HealBot_Options_BarMaxRowsS_OnValueChanged(this)</OnValueChanged>
|
||||||
|
</Scripts>
|
||||||
|
</Slider>
|
||||||
|
<CheckButton name="HealBot_Options_GridOrientation" inherits="OptionsCheckButtonTemplate">
|
||||||
|
<Anchors>
|
||||||
|
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_BarMaxRowsS" relativePoint="BOTTOMLEFT">
|
||||||
|
<Offset>
|
||||||
|
<AbsDimension x="-5" y="-10" />
|
||||||
|
</Offset>
|
||||||
|
</Anchor>
|
||||||
|
</Anchors>
|
||||||
|
<Scripts>
|
||||||
|
<OnLoad>
|
||||||
|
getglobal(this:GetName().."Text"):SetText("Horizontal Grid");
|
||||||
|
</OnLoad>
|
||||||
|
<OnClick>
|
||||||
|
HealBot_Options_GridOrientation_OnClick(this);
|
||||||
|
</OnClick>
|
||||||
|
</Scripts>
|
||||||
|
</CheckButton>
|
||||||
|
|
||||||
<Button name="HealBot_EnTextColorpickb">
|
<Button name="HealBot_EnTextColorpickb">
|
||||||
<Size>
|
<Size>
|
||||||
|
|||||||
+26
-16
@@ -1,9 +1,11 @@
|
|||||||
-- HealBot Options panel file: HealBot_Options_Spells.lua
|
-- HealBot Options panel file: HealBot_Options_Spells.lua
|
||||||
-- Split from original HealBot_Options.lua
|
-- Split from original HealBot_Options.lua
|
||||||
|
|
||||||
|
-- HealBot_ComboButtons_Button_OnLoad: UI handler for dropdown combo box.
|
||||||
function HealBot_ComboButtons_Button_OnLoad(this,text)
|
function HealBot_ComboButtons_Button_OnLoad(this,text)
|
||||||
getglobal(this:GetName().."Text"):SetText(text);
|
getglobal(this:GetName().."Text"):SetText(text);
|
||||||
end
|
end
|
||||||
|
-- HealBot_ComboButtons_Button_OnClick: Click event handler.
|
||||||
function HealBot_ComboButtons_Button_OnClick(this,id)
|
function HealBot_ComboButtons_Button_OnClick(this,id)
|
||||||
if HealBot_Options_ComboButtons_Button>0 then
|
if HealBot_Options_ComboButtons_Button>0 then
|
||||||
getglobal("HealBot_ComboButtons_Button"..HealBot_Options_ComboButtons_Button):SetChecked(nil);
|
getglobal("HealBot_ComboButtons_Button"..HealBot_Options_ComboButtons_Button):SetChecked(nil);
|
||||||
@@ -14,27 +16,35 @@ function HealBot_ComboButtons_Button_OnClick(this,id)
|
|||||||
end
|
end
|
||||||
HealBot_Options_ComboClass_Text()
|
HealBot_Options_ComboClass_Text()
|
||||||
end
|
end
|
||||||
|
-- HealBot_Options_ShowTooltip_OnLoad: UI handler for OnLoad options panel.
|
||||||
function HealBot_Options_ShowTooltip_OnLoad(this,text)
|
function HealBot_Options_ShowTooltip_OnLoad(this,text)
|
||||||
getglobal(this:GetName().."Text"):SetText(text);
|
getglobal(this:GetName().."Text"):SetText(text);
|
||||||
end
|
end
|
||||||
|
-- HealBot_Options_ShowTooltip_OnClick: UI handler for OnClick options panel.
|
||||||
function HealBot_Options_ShowTooltip_OnClick(this)
|
function HealBot_Options_ShowTooltip_OnClick(this)
|
||||||
HealBot_Config.ShowTooltip = this:GetChecked() or 0;
|
HealBot_Config.ShowTooltip = this:GetChecked() or 0;
|
||||||
end
|
end
|
||||||
|
-- HealBot_Options_ShowTooltipTarget_OnLoad: UI handler for OnLoad options panel.
|
||||||
function HealBot_Options_ShowTooltipTarget_OnLoad(this,text)
|
function HealBot_Options_ShowTooltipTarget_OnLoad(this,text)
|
||||||
getglobal(this:GetName().."Text"):SetText(text);
|
getglobal(this:GetName().."Text"):SetText(text);
|
||||||
end
|
end
|
||||||
|
-- HealBot_Options_ShowTooltipTarget_OnClick: UI handler for OnClick options panel.
|
||||||
function HealBot_Options_ShowTooltipTarget_OnClick(this)
|
function HealBot_Options_ShowTooltipTarget_OnClick(this)
|
||||||
HealBot_Config.Tooltip_ShowTarget = this:GetChecked() or 0;
|
HealBot_Config.Tooltip_ShowTarget = this:GetChecked() or 0;
|
||||||
end
|
end
|
||||||
|
-- HealBot_Options_ShowTooltipSpellDetail_OnLoad: UI handler for OnLoad options panel.
|
||||||
function HealBot_Options_ShowTooltipSpellDetail_OnLoad(this,text)
|
function HealBot_Options_ShowTooltipSpellDetail_OnLoad(this,text)
|
||||||
getglobal(this:GetName().."Text"):SetText(text);
|
getglobal(this:GetName().."Text"):SetText(text);
|
||||||
end
|
end
|
||||||
|
-- HealBot_Options_ShowTooltipSpellDetail_OnClick: UI handler for OnClick options panel.
|
||||||
function HealBot_Options_ShowTooltipSpellDetail_OnClick(this)
|
function HealBot_Options_ShowTooltipSpellDetail_OnClick(this)
|
||||||
HealBot_Config.Tooltip_ShowSpellDetail = this:GetChecked() or 0;
|
HealBot_Config.Tooltip_ShowSpellDetail = this:GetChecked() or 0;
|
||||||
end
|
end
|
||||||
|
-- HealBot_Options_ShowTooltipInstant_OnLoad: UI handler for OnLoad options panel.
|
||||||
function HealBot_Options_ShowTooltipInstant_OnLoad(this,text)
|
function HealBot_Options_ShowTooltipInstant_OnLoad(this,text)
|
||||||
getglobal(this:GetName().."Text"):SetText(text);
|
getglobal(this:GetName().."Text"):SetText(text);
|
||||||
end
|
end
|
||||||
|
-- HealBot_Options_ShowTooltipInstant_OnClick: UI handler for OnClick options panel.
|
||||||
function HealBot_Options_ShowTooltipInstant_OnClick(this)
|
function HealBot_Options_ShowTooltipInstant_OnClick(this)
|
||||||
HealBot_Config.Tooltip_Recommend = this:GetChecked() or 0;
|
HealBot_Config.Tooltip_Recommend = this:GetChecked() or 0;
|
||||||
end
|
end
|
||||||
@@ -46,6 +56,7 @@ local HealBot_Options_TooltipPos_List = {
|
|||||||
HEALBOT_TOOLTIP_POSBELOW,
|
HEALBOT_TOOLTIP_POSBELOW,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
-- HealBot_Options_TooltipPos_DropDown: UI handler for DropDown options panel.
|
||||||
function HealBot_Options_TooltipPos_DropDown()
|
function HealBot_Options_TooltipPos_DropDown()
|
||||||
for i=1, getn(HealBot_Options_TooltipPos_List), 1 do
|
for i=1, getn(HealBot_Options_TooltipPos_List), 1 do
|
||||||
local info = {};
|
local info = {};
|
||||||
@@ -55,21 +66,25 @@ function HealBot_Options_TooltipPos_DropDown()
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_Options_TooltipPos_Initialize: UI handler for Initialize options panel.
|
||||||
function HealBot_Options_TooltipPos_Initialize()
|
function HealBot_Options_TooltipPos_Initialize()
|
||||||
UIDropDownMenu_Initialize(HealBot_Options_TooltipPos,HealBot_Options_TooltipPos_DropDown)
|
UIDropDownMenu_Initialize(HealBot_Options_TooltipPos,HealBot_Options_TooltipPos_DropDown)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_Options_TooltipPos_Refresh: UI handler for Refresh options panel.
|
||||||
function HealBot_Options_TooltipPos_Refresh(onselect)
|
function HealBot_Options_TooltipPos_Refresh(onselect)
|
||||||
if not HealBot_Config.TooltipPos then return end
|
if not HealBot_Config.TooltipPos then return end
|
||||||
if not onselect then HealBot_Options_TooltipPos_Initialize() end -- or wrong menu may be used !
|
if not onselect then HealBot_Options_TooltipPos_Initialize() end -- or wrong menu may be used !
|
||||||
UIDropDownMenu_SetSelectedID(HealBot_Options_TooltipPos,HealBot_Config.TooltipPos)
|
HealBot_UIDropDownMenu_SetSelectedID(HealBot_Options_TooltipPos,HealBot_Config.TooltipPos)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_Options_TooltipPos_OnLoad: UI handler for OnLoad options panel.
|
||||||
function HealBot_Options_TooltipPos_OnLoad()
|
function HealBot_Options_TooltipPos_OnLoad()
|
||||||
UIDropDownMenu_Initialize(this, HealBot_Options_TooltipPos_DropDown)
|
UIDropDownMenu_Initialize(this, HealBot_Options_TooltipPos_DropDown)
|
||||||
UIDropDownMenu_SetWidth(128, this)
|
UIDropDownMenu_SetWidth(128, this)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_Options_TooltipPos_OnSelect: UI handler for OnSelect options panel.
|
||||||
function HealBot_Options_TooltipPos_OnSelect()
|
function HealBot_Options_TooltipPos_OnSelect()
|
||||||
HealBot_Config.TooltipPos = this:GetID()
|
HealBot_Config.TooltipPos = this:GetID()
|
||||||
HealBot_Options_TooltipPos_Refresh(true)
|
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()
|
function HealBot_Options_ComboClass_Text()
|
||||||
local class=UnitClass("Player");
|
local class=UnitClass("Player");
|
||||||
local combo = HealBot_Config.KeyCombo[class]
|
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()
|
function HealBot_Options_ComboClass_Button()
|
||||||
local button = "Left"
|
local button = "Left"
|
||||||
if HealBot_Options_ComboButtons_Button==2 then button = "Middle"; end
|
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)
|
function HealBot_Options_EditBox_OnLoad(this,text)
|
||||||
getglobal(this:GetName().."Text"):SetText(text);
|
getglobal(this:GetName().."Text"):SetText(text);
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_Options_Click_OnTextChanged: UI handler for OnTextChanged options panel.
|
||||||
function HealBot_Options_Click_OnTextChanged(this)
|
function HealBot_Options_Click_OnTextChanged(this)
|
||||||
local class=UnitClass("Player");
|
local class=UnitClass("Player");
|
||||||
if not HealBot_Config.KeyCombo[class] then HealBot_Config.KeyCombo[class] = {} end
|
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()
|
HealBot_Options_KeyCombo_Change()
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_Options_Shift_OnTextChanged: UI handler for OnTextChanged options panel.
|
||||||
function HealBot_Options_Shift_OnTextChanged(this)
|
function HealBot_Options_Shift_OnTextChanged(this)
|
||||||
local class=UnitClass("Player");
|
local class=UnitClass("Player");
|
||||||
if not HealBot_Config.KeyCombo[class] then HealBot_Config.KeyCombo[class] = {} end
|
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()
|
HealBot_Options_KeyCombo_Change()
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_Options_Ctrl_OnTextChanged: UI handler for OnTextChanged options panel.
|
||||||
function HealBot_Options_Ctrl_OnTextChanged(this)
|
function HealBot_Options_Ctrl_OnTextChanged(this)
|
||||||
local class=UnitClass("Player");
|
local class=UnitClass("Player");
|
||||||
if not HealBot_Config.KeyCombo[class] then HealBot_Config.KeyCombo[class] = {} end
|
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()
|
HealBot_Options_KeyCombo_Change()
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_Options_ShiftCtrl_OnTextChanged: UI handler for OnTextChanged options panel.
|
||||||
function HealBot_Options_ShiftCtrl_OnTextChanged(this)
|
function HealBot_Options_ShiftCtrl_OnTextChanged(this)
|
||||||
local class=UnitClass("Player");
|
local class=UnitClass("Player");
|
||||||
if not HealBot_Config.KeyCombo[class] then HealBot_Config.KeyCombo[class] = {} end
|
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()
|
HealBot_Options_KeyCombo_Change()
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_Options_KeyCombo_Change: Applies binding combo updates.
|
||||||
function HealBot_Options_KeyCombo_Change()
|
function HealBot_Options_KeyCombo_Change()
|
||||||
local class=UnitClass("Player");
|
local class=UnitClass("Player");
|
||||||
HealBot_Config.KeyCombo[class]=HealBot_Config.KeyCombo[class];
|
HealBot_Config.KeyCombo[class]=HealBot_Config.KeyCombo[class];
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_Options_EnableHealthy_OnLoad: UI handler for OnLoad options panel.
|
||||||
function HealBot_Options_EnableHealthy_OnLoad(this,text)
|
function HealBot_Options_EnableHealthy_OnLoad(this,text)
|
||||||
getglobal(this:GetName().."Text"):SetText(text);
|
getglobal(this:GetName().."Text"):SetText(text);
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_Options_EnableHealthy_OnClick: UI handler for OnClick options panel.
|
||||||
function HealBot_Options_EnableHealthy_OnClick(this)
|
function HealBot_Options_EnableHealthy_OnClick(this)
|
||||||
HealBot_Config.EnableHealthy = this:GetChecked() or 0;
|
HealBot_Config.EnableHealthy = this:GetChecked() or 0;
|
||||||
HealBot_Action_EnableButtons();
|
HealBot_Action_EnableButtons();
|
||||||
end
|
end
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
|
||||||
-- Chat Custom Messages UI Logic
|
|
||||||
--------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
|
|||||||
+509
-78
@@ -13,9 +13,11 @@ HealBot_Action_HealGroup = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
HealBot_Action_HealTarget = {};
|
HealBot_Action_HealTarget = {};
|
||||||
|
HealBot_Action_HealFocus = {};
|
||||||
HealBot_Action_HealButtons = {};
|
HealBot_Action_HealButtons = {};
|
||||||
HealBot_Action_UnitButtons = {};
|
HealBot_Action_UnitButtons = {};
|
||||||
|
|
||||||
|
-- HealBot_Action_SetTexture: Internal utility: HealBot_Action_SetTexture
|
||||||
function HealBot_Action_SetTexture(bar, btexture)
|
function HealBot_Action_SetTexture(bar, btexture)
|
||||||
if not bar then return end
|
if not bar then return end
|
||||||
if btexture == 10 then
|
if btexture == 10 then
|
||||||
@@ -25,26 +27,18 @@ function HealBot_Action_SetTexture(bar, btexture)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_HealthColor: Computes health bar RGBA based on debuffs and class.
|
||||||
function HealBot_HealthColor(unit, hlth, maxhlth)
|
function HealBot_HealthColor(unit, hlth, maxhlth)
|
||||||
if HealBot_UnitDebuff[unit] then
|
local cached_debuff = HealBot_UnitDebuff[unit]
|
||||||
local debuff, tmp, debuff_type = UnitDebuff(unit, 1, 1)
|
if cached_debuff then
|
||||||
if not debuff then
|
local color = HealBot_Config.CDCBarColour[cached_debuff]
|
||||||
HealBot_UnitDebuff[unit] = nil;
|
if color then
|
||||||
HealBot_UnitDebuff[unit .. "_debuff_texture"] = nil
|
local dr = color.R
|
||||||
else
|
local dg = color.G
|
||||||
local dr = HealBot_Config.CDCBarColour[debuff_type].R
|
local db = color.B
|
||||||
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
|
|
||||||
end
|
|
||||||
return dr, dg, db, HealBot_Config.Barcola[HealBot_Config.Current_Skin];
|
return dr, dg, db, HealBot_Config.Barcola[HealBot_Config.Current_Skin];
|
||||||
end
|
end
|
||||||
|
return dr, dg, db, HealBot_Config.Barcola[HealBot_Config.Current_Skin];
|
||||||
end
|
end
|
||||||
|
|
||||||
local text = UnitName(unit);
|
local text = UnitName(unit);
|
||||||
@@ -70,13 +64,13 @@ function HealBot_HealthColor(unit, hlth, maxhlth)
|
|||||||
end
|
end
|
||||||
|
|
||||||
local colorMode = HealBot_Config.bcolormode[HealBot_Config.Current_Skin] or 1
|
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 then
|
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
|
||||||
local engClass = HealBot_Model.units[unit].englishClass
|
local engClass = HealBot_Model.units[unit].englishClass
|
||||||
if RAID_CLASS_COLORS and RAID_CLASS_COLORS[engClass] then
|
r = RAID_CLASS_COLORS[engClass].r
|
||||||
r = RAID_CLASS_COLORS[engClass].r
|
g = RAID_CLASS_COLORS[engClass].g
|
||||||
g = RAID_CLASS_COLORS[engClass].g
|
b = RAID_CLASS_COLORS[engClass].b
|
||||||
b = RAID_CLASS_COLORS[engClass].b
|
elseif colorMode == 2 and string.find(unit, "pet") then
|
||||||
end
|
r, g, b = 0.4, 0.9, 0.6 -- Mint color
|
||||||
else
|
else
|
||||||
if pct >= 0.98 then r = 0.0; end
|
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.98 and pct >= 0.65 then r = 2.94 - (pct * 3); end
|
||||||
@@ -86,29 +80,46 @@ function HealBot_HealthColor(unit, hlth, maxhlth)
|
|||||||
return r, g, b, a;
|
return r, g, b, a;
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_Action_HealthBar: Internal utility: HealBot_Action_HealthBar
|
||||||
function HealBot_Action_HealthBar(button)
|
function HealBot_Action_HealthBar(button)
|
||||||
local name = button:GetName();
|
if not button.bar then
|
||||||
return getglobal(name .. "Bar");
|
button.bar = getglobal(button:GetName() .. "Bar")
|
||||||
|
end
|
||||||
|
return button.bar;
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_Action_HealthBar2: Internal utility: HealBot_Action_HealthBar2
|
||||||
function HealBot_Action_HealthBar2(button)
|
function HealBot_Action_HealthBar2(button)
|
||||||
local name = button:GetName();
|
if not button.bar2 then
|
||||||
return getglobal(name .. "Bar2");
|
button.bar2 = getglobal(button:GetName() .. "Bar2")
|
||||||
|
end
|
||||||
|
return button.bar2;
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_Action_EnableButton: Updates a button's health, color, text, and debuffs.
|
||||||
function HealBot_Action_EnableButton(button)
|
function HealBot_Action_EnableButton(button)
|
||||||
local unit = button.unit;
|
local unit = button.unit;
|
||||||
local state = HealBot_Model.units[unit]
|
local state = HealBot_Model.units[unit]
|
||||||
if not state then return end
|
if not state then return end
|
||||||
|
|
||||||
|
if not state.englishClass then
|
||||||
|
HealBot_Model:UpdateUnitIdentity(unit)
|
||||||
|
end
|
||||||
|
|
||||||
local hlth = state.health
|
local hlth = state.health
|
||||||
local maxhlth = state.maxHealth
|
local maxhlth = state.maxHealth
|
||||||
local name = state.name
|
local name = state.name
|
||||||
if not name then name = UnitName(unit) end -- fallback
|
if not name then name = UnitName(unit) end -- fallback
|
||||||
|
|
||||||
|
if not name or name == "Unknown" then
|
||||||
|
button:Hide()
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
local bar = HealBot_Action_HealthBar(button);
|
local bar = HealBot_Action_HealthBar(button);
|
||||||
local bar2 = HealBot_Action_HealthBar2(button);
|
local bar2 = HealBot_Action_HealthBar2(button);
|
||||||
local bar3 = getglobal(button:GetName() .. "Bar3");
|
if not button.bar3 then button.bar3 = getglobal(button:GetName() .. "Bar3") end
|
||||||
|
local bar3 = button.bar3;
|
||||||
local btexture = HealBot_Config.btexture[HealBot_Config.Current_Skin];
|
local btexture = HealBot_Config.btexture[HealBot_Config.Current_Skin];
|
||||||
local bheight = HealBot_Config.bheight[HealBot_Config.Current_Skin];
|
local bheight = HealBot_Config.bheight[HealBot_Config.Current_Skin];
|
||||||
local sr = HealBot_Config.btextenabledcolr[HealBot_Config.Current_Skin];
|
local sr = HealBot_Config.btextenabledcolr[HealBot_Config.Current_Skin];
|
||||||
@@ -132,16 +143,25 @@ function HealBot_Action_EnableButton(button)
|
|||||||
local pt = state.powerType
|
local pt = state.powerType
|
||||||
|
|
||||||
local showMana = false
|
local showMana = false
|
||||||
if HealBot_Config.ShowManaBars == 1 and state.maxMana > 0 and pt == 0 then
|
local pr, pg, pb = 0, 0, 1 -- Default Blue for Mana
|
||||||
if HealBot_Config.ManaBarsHealersOnly == 1 then
|
|
||||||
if isHealer then showMana = true end
|
if HealBot_Config.ShowManaBars == 1 and state.maxMana > 0 then
|
||||||
else
|
if pt == 0 then
|
||||||
|
if HealBot_Config.ManaBarsHealersOnly == 1 then
|
||||||
|
if isHealer then showMana = true end
|
||||||
|
else
|
||||||
|
showMana = true
|
||||||
|
end
|
||||||
|
elseif HealBot_Config.ShowNonManaBars == 1 then
|
||||||
showMana = true
|
showMana = true
|
||||||
|
if pt == 1 then pr, pg, pb = 1, 0, 0 -- Rage (Red)
|
||||||
|
elseif pt == 3 then pr, pg, pb = 1, 1, 0 -- Energy (Yellow)
|
||||||
|
elseif pt == 2 then pr, pg, pb = 1, 0.5, 0 -- Focus (Orange)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if showMana then
|
if showMana then
|
||||||
local pr, pg, pb = 0, 0, 1
|
|
||||||
if bar3 then
|
if bar3 then
|
||||||
bar3:SetMinMaxValues(0, state.maxMana)
|
bar3:SetMinMaxValues(0, state.maxMana)
|
||||||
bar3:SetValue(state.mana)
|
bar3:SetValue(state.mana)
|
||||||
@@ -166,7 +186,7 @@ function HealBot_Action_EnableButton(button)
|
|||||||
else
|
else
|
||||||
bar2:SetValue(0);
|
bar2:SetValue(0);
|
||||||
end
|
end
|
||||||
bar.txt = getglobal(bar:GetName() .. "_text");
|
if not bar.txt then bar.txt = getglobal(bar:GetName() .. "_text") end
|
||||||
if (not HealBot_IsCasting and (HealBot_CanHeal(unit) or HealBot_MissingBuffs[unit])) then
|
if (not HealBot_IsCasting and (HealBot_CanHeal(unit) or HealBot_MissingBuffs[unit])) then
|
||||||
button:Enable();
|
button:Enable();
|
||||||
if HealBot_UnitDebuff[unit] then
|
if HealBot_UnitDebuff[unit] then
|
||||||
@@ -193,10 +213,36 @@ function HealBot_Action_EnableButton(button)
|
|||||||
bar:SetStatusBarColor(r, g, b, HealBot_Config.bardisa[HealBot_Config.Current_Skin]);
|
bar:SetStatusBarColor(r, g, b, HealBot_Config.bardisa[HealBot_Config.Current_Skin]);
|
||||||
bar2:SetStatusBarColor(r, g, b, HealBot_Config.bardisa[HealBot_Config.Current_Skin]);
|
bar2:SetStatusBarColor(r, g, b, HealBot_Config.bardisa[HealBot_Config.Current_Skin]);
|
||||||
end
|
end
|
||||||
if string.len(name) > textlen then
|
local healthTextOpt = HealBot_Config.ShowHealthText or 0
|
||||||
name = string.sub(name, 1, textlen - 3) .. '...';
|
local displayText = name
|
||||||
|
if healthTextOpt == 1 then
|
||||||
|
local pct = 0
|
||||||
|
if maxhlth > 0 then pct = math.floor((hlth / maxhlth) * 100) end
|
||||||
|
displayText = name .. " - " .. pct .. "%"
|
||||||
|
elseif healthTextOpt == 2 then
|
||||||
|
displayText = name .. " - " .. hlth .. "/" .. maxhlth
|
||||||
|
elseif healthTextOpt == 3 then
|
||||||
|
local deficit = maxhlth - hlth
|
||||||
|
if deficit > 0 then
|
||||||
|
displayText = name .. " - -" .. deficit
|
||||||
|
end
|
||||||
end
|
end
|
||||||
bar.txt:SetText(name);
|
|
||||||
|
if string.len(displayText) > textlen then
|
||||||
|
if healthTextOpt > 0 then
|
||||||
|
-- If we have numbers, just truncate the name part so the numbers still show.
|
||||||
|
-- Find where " - " starts.
|
||||||
|
local dashIndex = string.find(displayText, " %- ")
|
||||||
|
if dashIndex then
|
||||||
|
local numbersPart = string.sub(displayText, dashIndex)
|
||||||
|
local namePart = string.sub(name, 1, math.max(1, textlen - string.len(numbersPart) - 3)) .. "..."
|
||||||
|
displayText = namePart .. numbersPart
|
||||||
|
end
|
||||||
|
else
|
||||||
|
displayText = string.sub(name, 1, textlen - 3) .. '...';
|
||||||
|
end
|
||||||
|
end
|
||||||
|
bar.txt:SetText(displayText);
|
||||||
bar.txt:SetTextColor(sr, sg, sb, sa);
|
bar.txt:SetTextColor(sr, sg, sb, sa);
|
||||||
local fontName, fontHeight, fontFlags = bar.txt:GetFont()
|
local fontName, fontHeight, fontFlags = bar.txt:GetFont()
|
||||||
local fontOutline = HealBot_Config.bfontoutline[HealBot_Config.Current_Skin] or 0
|
local fontOutline = HealBot_Config.bfontoutline[HealBot_Config.Current_Skin] or 0
|
||||||
@@ -206,25 +252,41 @@ function HealBot_Action_EnableButton(button)
|
|||||||
bar.txt:SetFont(fontName, fontHeight, "")
|
bar.txt:SetFont(fontName, fontHeight, "")
|
||||||
end
|
end
|
||||||
|
|
||||||
for i = 1, 5 do
|
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 = getglobal(button:GetName() .. "BarIcon" .. i)
|
||||||
if icon then
|
if icon then
|
||||||
if HealBot_UnitIcons and HealBot_UnitIcons[unit] and HealBot_UnitIcons[unit][i] then
|
if HealBot_UnitIcons and HealBot_UnitIcons[unit] and HealBot_UnitIcons[unit][i] then
|
||||||
icon:SetTexture(HealBot_UnitIcons[unit][i])
|
icon:SetTexture(HealBot_UnitIcons[unit][i])
|
||||||
|
icon:SetWidth(iconSize)
|
||||||
|
icon:SetHeight(iconSize)
|
||||||
icon:Show()
|
icon:Show()
|
||||||
else
|
else
|
||||||
icon:Hide()
|
icon:Hide()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local raidIcon = getglobal(button:GetName() .. "BarRaidIcon")
|
||||||
|
if raidIcon then
|
||||||
|
local index = GetRaidTargetIndex(unit)
|
||||||
|
if index then
|
||||||
|
SetRaidTargetIconTexture(raidIcon, index)
|
||||||
|
raidIcon:Show()
|
||||||
|
else
|
||||||
|
raidIcon:Hide()
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_Action_EnableButtons: Internal utility: HealBot_Action_EnableButtons
|
||||||
function HealBot_Action_EnableButtons()
|
function HealBot_Action_EnableButtons()
|
||||||
table.foreach(HealBot_Action_HealButtons, function (index, button)
|
for index, button in pairs(HealBot_Action_HealButtons) do
|
||||||
HealBot_Action_EnableButton(button);
|
HealBot_Action_EnableButton(button)
|
||||||
end);
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_Action_RefreshButton: Calls EnableButton if unit is valid.
|
||||||
function HealBot_Action_RefreshButton(button)
|
function HealBot_Action_RefreshButton(button)
|
||||||
if not button then return end
|
if not button then return end
|
||||||
local unit = button.unit;
|
local unit = button.unit;
|
||||||
@@ -233,6 +295,7 @@ function HealBot_Action_RefreshButton(button)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_Action_ResetSkin: Internal utility: HealBot_Action_ResetSkin
|
||||||
function HealBot_Action_ResetSkin()
|
function HealBot_Action_ResetSkin()
|
||||||
HealBot_Action_PartyChanged()
|
HealBot_Action_PartyChanged()
|
||||||
if HealBot_Options:IsVisible() then
|
if HealBot_Options:IsVisible() then
|
||||||
@@ -248,18 +311,36 @@ function HealBot_Action_ResetSkin()
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_Action_RefreshButtons: Refreshes all active unit buttons.
|
||||||
function HealBot_Action_RefreshButtons(unit)
|
function HealBot_Action_RefreshButtons(unit)
|
||||||
if unit and HealBot_Action_UnitButtons[unit] then
|
if unit and HealBot_Action_UnitButtons[unit] then
|
||||||
table.foreach(HealBot_Action_UnitButtons[unit], function (index, button)
|
for index, button in pairs(HealBot_Action_UnitButtons[unit]) do
|
||||||
HealBot_Action_RefreshButton(button);
|
HealBot_Action_RefreshButton(button)
|
||||||
end);
|
end
|
||||||
else
|
else
|
||||||
table.foreach(HealBot_Action_HealButtons, function (index, button)
|
for index, button in pairs(HealBot_Action_HealButtons) do
|
||||||
HealBot_Action_RefreshButton(button);
|
HealBot_Action_RefreshButton(button)
|
||||||
end);
|
end
|
||||||
end
|
end
|
||||||
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]
|
||||||
|
if not state then return end
|
||||||
|
|
||||||
|
for index, button in pairs(HealBot_Action_UnitButtons[unit]) do
|
||||||
|
if not button.bar3 then button.bar3 = getglobal(button:GetName() .. "Bar3") end
|
||||||
|
local bar3 = button.bar3
|
||||||
|
if bar3 and bar3:IsVisible() then
|
||||||
|
bar3:SetMinMaxValues(0, state.maxMana)
|
||||||
|
bar3:SetValue(state.mana)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- HealBot_Action_PositionButton: Positions a button element within the grid.
|
||||||
function HealBot_Action_PositionButton(button, OsetX, OsetY, bwidth, bheight, checked, header)
|
function HealBot_Action_PositionButton(button, OsetX, OsetY, bwidth, bheight, checked, header)
|
||||||
local brspace = HealBot_Config.brspace[HealBot_Config.Current_Skin] or 3;
|
local brspace = HealBot_Config.brspace[HealBot_Config.Current_Skin] or 3;
|
||||||
if header then
|
if header then
|
||||||
@@ -295,6 +376,43 @@ function HealBot_Action_PositionButton(button, OsetX, OsetY, bwidth, bheight, ch
|
|||||||
return OsetY;
|
return OsetY;
|
||||||
end
|
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)
|
||||||
|
headerobj:Show();
|
||||||
|
headerobj:ClearAllPoints();
|
||||||
|
headerobj:SetHeight(bheight);
|
||||||
|
headerobj:SetWidth(bwidth);
|
||||||
|
headerobj:SetPoint("TOPLEFT", "HealBot_Action", "TOPLEFT", OsetX, -OsetY);
|
||||||
|
headerobj:Disable();
|
||||||
|
OsetX = OsetX + bwidth + bcspace;
|
||||||
|
else
|
||||||
|
local unit = button.unit;
|
||||||
|
button:SetText(" ");
|
||||||
|
if (HealBot_MayHeal(unit)) then
|
||||||
|
button:Show();
|
||||||
|
button:ClearAllPoints();
|
||||||
|
button:SetHeight(bheight);
|
||||||
|
if checked then
|
||||||
|
button:SetWidth(bwidth - 14);
|
||||||
|
button:SetPoint("TOPLEFT", "HealBot_Action", "TOPLEFT", OsetX + 14, -OsetY);
|
||||||
|
else
|
||||||
|
button:SetWidth(bwidth);
|
||||||
|
button:SetPoint("TOPLEFT", "HealBot_Action", "TOPLEFT", OsetX, -OsetY);
|
||||||
|
end
|
||||||
|
OsetX = OsetX + bwidth + bcspace;
|
||||||
|
else
|
||||||
|
button:Hide();
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return OsetX;
|
||||||
|
end
|
||||||
|
|
||||||
|
-- HealBot_Action_SetHeightWidth: Resizes the main panel frame to fit content.
|
||||||
function HealBot_Action_SetHeightWidth(width, height, bwidth)
|
function HealBot_Action_SetHeightWidth(width, height, bwidth)
|
||||||
if HealBot_ActionHeight then
|
if HealBot_ActionHeight then
|
||||||
HealBot_Action:SetHeight(HealBot_ActionHeight);
|
HealBot_Action:SetHeight(HealBot_ActionHeight);
|
||||||
@@ -320,6 +438,7 @@ function HealBot_Action_SetHeightWidth(width, height, bwidth)
|
|||||||
HealBot_Action:SetWidth(width + bwidth + bpadding)
|
HealBot_Action:SetWidth(width + bwidth + bpadding)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_Action_SetHealButton: Assigns a unit string to a grid button slot.
|
||||||
function HealBot_Action_SetHealButton(index, unit)
|
function HealBot_Action_SetHealButton(index, unit)
|
||||||
if not index then
|
if not index then
|
||||||
HealBot_Action_HealButtons = {};
|
HealBot_Action_HealButtons = {};
|
||||||
@@ -327,6 +446,7 @@ function HealBot_Action_SetHealButton(index, unit)
|
|||||||
return nil
|
return nil
|
||||||
end
|
end
|
||||||
local button = getglobal("HealBot_Action_HealUnit" .. index);
|
local button = getglobal("HealBot_Action_HealUnit" .. index);
|
||||||
|
if not button then return nil end
|
||||||
button.unit = unit;
|
button.unit = unit;
|
||||||
if unit then
|
if unit then
|
||||||
table.insert(HealBot_Action_HealButtons, button);
|
table.insert(HealBot_Action_HealButtons, button);
|
||||||
@@ -338,12 +458,42 @@ function HealBot_Action_SetHealButton(index, unit)
|
|||||||
return button;
|
return button;
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_Action_PartyChanged: Rebuilds the entire grid layout based on roster.
|
||||||
function HealBot_Action_PartyChanged()
|
function HealBot_Action_PartyChanged()
|
||||||
if not HealBot_IsFighting then
|
if HealBot_IsFighting then
|
||||||
local numBars = 0;
|
HealBot_Action_AppendNewUnits()
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
local numBars = 0;
|
||||||
local numHeaders = 0;
|
local numHeaders = 0;
|
||||||
local TempMaxH = 0;
|
local TempMaxH = 0;
|
||||||
local HeaderPos = {};
|
local HeaderPos = HealBot_GetTable();
|
||||||
|
|
||||||
|
if HealBot_Config.AutoSwap_Enabled == 1 then
|
||||||
|
local totalMembers = GetNumRaidMembers()
|
||||||
|
if totalMembers == 0 then totalMembers = GetNumPartyMembers() end
|
||||||
|
|
||||||
|
local threshold = 1
|
||||||
|
if totalMembers == 0 then
|
||||||
|
threshold = 1 -- Solo
|
||||||
|
elseif totalMembers > 0 and totalMembers <= 5 then
|
||||||
|
threshold = 2 -- Party
|
||||||
|
elseif totalMembers > 5 and totalMembers <= 15 then
|
||||||
|
threshold = 3 -- Raid15
|
||||||
|
elseif totalMembers > 15 and totalMembers <= 25 then
|
||||||
|
threshold = 4 -- Raid25
|
||||||
|
else
|
||||||
|
threshold = 5 -- Raid40
|
||||||
|
end
|
||||||
|
|
||||||
|
if not HealBot_Config.AutoSwap_Profiles then HealBot_Config.AutoSwap_Profiles = {} end
|
||||||
|
local swapSkin = HealBot_Config.AutoSwap_Profiles[threshold]
|
||||||
|
if swapSkin and swapSkin ~= HealBot_Config.Current_Skin then
|
||||||
|
HealBot_Config.Current_Skin = swapSkin
|
||||||
|
HealBot_Options_SetSkins()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
for j = 1, 15 do
|
for j = 1, 15 do
|
||||||
local headerobj = getglobal("HealBot_Action_Header" .. j);
|
local headerobj = getglobal("HealBot_Action_Header" .. j);
|
||||||
@@ -366,10 +516,7 @@ function HealBot_Action_PartyChanged()
|
|||||||
local checked_end = 0;
|
local checked_end = 0;
|
||||||
headerno = 0;
|
headerno = 0;
|
||||||
|
|
||||||
for j = 1, 41 do
|
for j = 1, 100 do
|
||||||
HealBot_Action_SetHealButton(j, nil);
|
|
||||||
end
|
|
||||||
for j = 51, 60 do
|
|
||||||
HealBot_Action_SetHealButton(j, nil);
|
HealBot_Action_SetHealButton(j, nil);
|
||||||
end
|
end
|
||||||
HealBot_Action_SetHealButton();
|
HealBot_Action_SetHealButton();
|
||||||
@@ -484,12 +631,38 @@ function HealBot_Action_PartyChanged()
|
|||||||
numBars = numBars + 1;
|
numBars = numBars + 1;
|
||||||
numHeaders = numHeaders + 1;
|
numHeaders = numHeaders + 1;
|
||||||
end
|
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
|
last = last + 40
|
||||||
local ExtraValid = numBars;
|
local ExtraValid = numBars;
|
||||||
if HealBot_Config.EmergencyHeals == 1 then
|
if HealBot_Config.EmergencyHeals == 1 then
|
||||||
local order = {};
|
local order = HealBot_GetTable();
|
||||||
local units = {};
|
local units = HealBot_GetTable();
|
||||||
if HealBot_Config.ShowHeader[HealBot_Config.Current_Skin] == 1 and HealBot_Config.ExtraOrder == 1 then
|
if HealBot_Config.ShowHeader[HealBot_Config.Current_Skin] == 1 and HealBot_Config.ExtraOrder == 1 then
|
||||||
HeaderPos[i + 1] = HEALBOT_OPTIONS_EMERGENCYHEALS
|
HeaderPos[i + 1] = HEALBOT_OPTIONS_EMERGENCYHEALS
|
||||||
numBars = numBars + 1;
|
numBars = numBars + 1;
|
||||||
@@ -528,6 +701,9 @@ function HealBot_Action_PartyChanged()
|
|||||||
else
|
else
|
||||||
for _, unit in ipairs(HealBot_Action_HealGroup) do
|
for _, unit in ipairs(HealBot_Action_HealGroup) do
|
||||||
if not HealBot_Action_UnitButtons[unit] and HealBot_MayHeal(unit) then
|
if not HealBot_Action_UnitButtons[unit] and HealBot_MayHeal(unit) then
|
||||||
|
local name = UnitName(unit) or "not known"
|
||||||
|
local class = UnitClass(unit) or "not known"
|
||||||
|
local subgroup = 1
|
||||||
if HealBot_Config.ExtraOrder == 1 then
|
if HealBot_Config.ExtraOrder == 1 then
|
||||||
order[unit] = name;
|
order[unit] = name;
|
||||||
elseif HealBot_Config.ExtraOrder == 2 then
|
elseif HealBot_Config.ExtraOrder == 2 then
|
||||||
@@ -543,6 +719,7 @@ function HealBot_Action_PartyChanged()
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
else
|
else
|
||||||
if GetNumRaidMembers() > 0 then
|
if GetNumRaidMembers() > 0 then
|
||||||
for j = 1, 40 do
|
for j = 1, 40 do
|
||||||
@@ -582,6 +759,9 @@ function HealBot_Action_PartyChanged()
|
|||||||
else
|
else
|
||||||
for _, unit in ipairs(HealBot_Action_HealGroup) do
|
for _, unit in ipairs(HealBot_Action_HealGroup) do
|
||||||
if not HealBot_Action_UnitButtons[unit] and HealBot_MayHeal(unit) then
|
if not HealBot_Action_UnitButtons[unit] and HealBot_MayHeal(unit) then
|
||||||
|
local name = UnitName(unit) or "not known"
|
||||||
|
local class = UnitClass(unit) or "not known"
|
||||||
|
local subgroup = 1
|
||||||
if HealBot_Config.ExtraOrder == 1 then
|
if HealBot_Config.ExtraOrder == 1 then
|
||||||
order[unit] = name;
|
order[unit] = name;
|
||||||
elseif HealBot_Config.ExtraOrder == 2 then
|
elseif HealBot_Config.ExtraOrder == 2 then
|
||||||
@@ -606,10 +786,30 @@ function HealBot_Action_PartyChanged()
|
|||||||
local TempSort = "init"
|
local TempSort = "init"
|
||||||
TempMaxH = math.ceil(TempMaxH / 1000) * 1000;
|
TempMaxH = math.ceil(TempMaxH / 1000) * 1000;
|
||||||
|
|
||||||
if GetNumRaidMembers() > 0 then
|
for j = 1, 40 do
|
||||||
for j = 1, 40 do
|
if not units[j] then break end
|
||||||
if not units[j] then break end
|
local name, rank, subgroup, level, class, fileName, zone, online, isDead;
|
||||||
local name, rank, subgroup, level, class, fileName, zone, online, isDead = GetRaidRosterInfo(string.sub(units[j], 5));
|
local ownerIndex = nil;
|
||||||
|
if string.sub(units[j], 1, 7) == "raidpet" then
|
||||||
|
ownerIndex = tonumber(string.sub(units[j], 8));
|
||||||
|
elseif string.sub(units[j], 1, 4) == "raid" then
|
||||||
|
ownerIndex = tonumber(string.sub(units[j], 5));
|
||||||
|
end
|
||||||
|
|
||||||
|
if ownerIndex then
|
||||||
|
name, rank, subgroup, level, class, fileName, zone, online, isDead = GetRaidRosterInfo(ownerIndex);
|
||||||
|
else
|
||||||
|
name = UnitName(units[j]) or "not known";
|
||||||
|
class = UnitClass(units[j]) or "not known";
|
||||||
|
subgroup = 1;
|
||||||
|
end
|
||||||
|
|
||||||
|
if string.sub(units[j], 1, 7) == "raidpet" or string.sub(units[j], 1, 8) == "partypet" or units[j] == "pet" then
|
||||||
|
name = UnitName(units[j]) or "Pet";
|
||||||
|
class = HEALBOT_OPTIONS_PETS;
|
||||||
|
subgroup = subgroup or 1;
|
||||||
|
end
|
||||||
|
|
||||||
if HealBot_Config.ShowHeader[HealBot_Config.Current_Skin] == 1 and HealBot_Config.ExtraOrder == 2 and TempSort ~= class then
|
if HealBot_Config.ShowHeader[HealBot_Config.Current_Skin] == 1 and HealBot_Config.ExtraOrder == 2 and TempSort ~= class then
|
||||||
TempSort = class
|
TempSort = class
|
||||||
HeaderPos[i + 1] = class
|
HeaderPos[i + 1] = class
|
||||||
@@ -632,19 +832,60 @@ function HealBot_Action_PartyChanged()
|
|||||||
HealBot_Action_SetHealButton(i, units[j]);
|
HealBot_Action_SetHealButton(i, units[j]);
|
||||||
if i == last then break end
|
if i == last then break end
|
||||||
end
|
end
|
||||||
end
|
|
||||||
end
|
end
|
||||||
if numBars == ExtraValid + 1 and HealBot_Config.ShowHeader[HealBot_Config.Current_Skin] == 1 then
|
if numBars == ExtraValid + 1 and HealBot_Config.ShowHeader[HealBot_Config.Current_Skin] == 1 then
|
||||||
HeaderPos[i + 1] = nil;
|
HeaderPos[i + 1] = nil;
|
||||||
numBars = numBars - 1;
|
numBars = numBars - 1;
|
||||||
end
|
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;
|
||||||
|
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
|
||||||
|
end
|
||||||
|
end
|
||||||
|
HealBot_ReleaseTable(order);
|
||||||
|
HealBot_ReleaseTable(units);
|
||||||
|
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 bpadding = (HealBot_Config.bpadding and HealBot_Config.bpadding[HealBot_Config.Current_Skin]) or 10
|
||||||
local OffsetY = bpadding;
|
local OffsetY = bpadding;
|
||||||
local OffsetX = bpadding;
|
local OffsetX = bpadding;
|
||||||
local MaxOffsetY = 0;
|
local MaxOffsetY = 0;
|
||||||
|
local MaxOffsetX = 0;
|
||||||
|
|
||||||
if cols > (numBars - numHeaders) then
|
local maxRows = (HealBot_Config.bmaxrows and HealBot_Config.bmaxrows[HealBot_Config.Current_Skin]) or 0
|
||||||
|
local orientation = (HealBot_Config.GridOrientation and HealBot_Config.GridOrientation[HealBot_Config.Current_Skin]) or 1
|
||||||
|
|
||||||
|
if cols > (numBars - numHeaders) and maxRows == 0 then
|
||||||
cols = numBars - numHeaders;
|
cols = numBars - numHeaders;
|
||||||
end
|
end
|
||||||
if cols <= 0 then cols = 1 end
|
if cols <= 0 then cols = 1 end
|
||||||
@@ -652,33 +893,64 @@ function HealBot_Action_PartyChanged()
|
|||||||
local h = 1;
|
local h = 1;
|
||||||
local i = 0;
|
local i = 0;
|
||||||
local z = 1;
|
local z = 1;
|
||||||
|
local brspace = HealBot_Config.brspace[HealBot_Config.Current_Skin] or 3;
|
||||||
|
local bcspace = HealBot_Config.bcspace[HealBot_Config.Current_Skin] or 3;
|
||||||
|
|
||||||
table.foreach(HealBot_Action_HealButtons, function (index, button)
|
local limit = math.ceil((numBars) / cols)
|
||||||
|
if orientation == 1 and maxRows > 0 then
|
||||||
|
limit = maxRows
|
||||||
|
elseif orientation == 2 then
|
||||||
|
limit = cols
|
||||||
|
end
|
||||||
|
|
||||||
|
for index, button in pairs(HealBot_Action_HealButtons) do
|
||||||
i = i + 1;
|
i = i + 1;
|
||||||
local checked = false;
|
local checked = false;
|
||||||
local header;
|
local header;
|
||||||
|
|
||||||
if HeaderPos[i] then
|
if HeaderPos[i] then
|
||||||
header = HeaderPos[i];
|
header = HeaderPos[i];
|
||||||
OffsetY = HealBot_Action_PositionButton(nil, OffsetX, OffsetY, bwidth, bheight, checked, header);
|
if orientation == 1 then
|
||||||
if h == math.ceil((numBars) / cols) and z < numBars then
|
OffsetY = HealBot_Action_PositionButton(nil, OffsetX, OffsetY, bwidth, bheight, checked, header);
|
||||||
h = 0;
|
if h == limit and z < numBars then
|
||||||
if MaxOffsetY < OffsetY then MaxOffsetY = OffsetY; end
|
h = 0;
|
||||||
OffsetY = bpadding;
|
if MaxOffsetY < OffsetY then MaxOffsetY = OffsetY; end
|
||||||
OffsetX = OffsetX + bwidth + bcspace;
|
OffsetY = bpadding;
|
||||||
|
OffsetX = OffsetX + bwidth + bcspace;
|
||||||
|
end
|
||||||
|
else
|
||||||
|
OffsetX = HealBot_Action_PositionButtonHorizontal(nil, OffsetX, OffsetY, bwidth, bheight, checked, header);
|
||||||
|
if h == limit and z < numBars then
|
||||||
|
h = 0;
|
||||||
|
if MaxOffsetX < OffsetX then MaxOffsetX = OffsetX; end
|
||||||
|
OffsetX = bpadding;
|
||||||
|
OffsetY = OffsetY + bheight + brspace;
|
||||||
|
end
|
||||||
end
|
end
|
||||||
h = h + 1;
|
h = h + 1;
|
||||||
z = z + 1;
|
z = z + 1;
|
||||||
end
|
end
|
||||||
|
|
||||||
if checked_start <= i and checked_end >= i then checked = true; end
|
if checked_start <= i and checked_end >= i then checked = true; end
|
||||||
OffsetY = HealBot_Action_PositionButton(button, OffsetX, OffsetY, bwidth, bheight, checked, nil);
|
|
||||||
if h == math.ceil((numBars) / cols) and z < numBars then
|
if orientation == 1 then
|
||||||
h = 0;
|
OffsetY = HealBot_Action_PositionButton(button, OffsetX, OffsetY, bwidth, bheight, checked, nil);
|
||||||
if MaxOffsetY < OffsetY then MaxOffsetY = OffsetY; end
|
if h == limit and z < numBars then
|
||||||
OffsetY = bpadding;
|
h = 0;
|
||||||
OffsetX = OffsetX + bwidth + bcspace;
|
if MaxOffsetY < OffsetY then MaxOffsetY = OffsetY; end
|
||||||
|
OffsetY = bpadding;
|
||||||
|
OffsetX = OffsetX + bwidth + bcspace;
|
||||||
|
end
|
||||||
|
else
|
||||||
|
OffsetX = HealBot_Action_PositionButtonHorizontal(button, OffsetX, OffsetY, bwidth, bheight, checked, nil);
|
||||||
|
if h == limit and z < numBars then
|
||||||
|
h = 0;
|
||||||
|
if MaxOffsetX < OffsetX then MaxOffsetX = OffsetX; end
|
||||||
|
OffsetX = bpadding;
|
||||||
|
OffsetY = OffsetY + bheight + brspace;
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
z = z + 1;
|
z = z + 1;
|
||||||
h = h + 1;
|
h = h + 1;
|
||||||
local bar = HealBot_Action_HealthBar(button);
|
local bar = HealBot_Action_HealthBar(button);
|
||||||
@@ -692,9 +964,29 @@ function HealBot_Action_PartyChanged()
|
|||||||
bar:SetScale(barScale);
|
bar:SetScale(barScale);
|
||||||
bar2:SetHeight(bheight);
|
bar2:SetHeight(bheight);
|
||||||
HealBot_Action_SetTexture(bar2, btexture);
|
HealBot_Action_SetTexture(bar2, btexture);
|
||||||
end);
|
end
|
||||||
|
|
||||||
if MaxOffsetY < OffsetY then MaxOffsetY = OffsetY; end
|
if orientation == 1 then
|
||||||
|
if MaxOffsetY < OffsetY then MaxOffsetY = OffsetY; end
|
||||||
|
else
|
||||||
|
if MaxOffsetX < OffsetX then MaxOffsetX = OffsetX; end
|
||||||
|
-- In horizontal mode, OffsetY represents the active row. We need to measure total height.
|
||||||
|
MaxOffsetY = OffsetY + bheight + brspace
|
||||||
|
OffsetX = MaxOffsetX
|
||||||
|
if numBars > 0 then
|
||||||
|
OffsetX = OffsetX - bwidth - bcspace
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
HealBot_Grid_LastI = i;
|
||||||
|
HealBot_Grid_LastH = h;
|
||||||
|
HealBot_Grid_LastZ = z;
|
||||||
|
HealBot_Grid_OffsetX = OffsetX;
|
||||||
|
HealBot_Grid_OffsetY = OffsetY;
|
||||||
|
HealBot_Grid_MaxOffsetX = MaxOffsetX;
|
||||||
|
HealBot_Grid_MaxOffsetY = MaxOffsetY;
|
||||||
|
HealBot_Grid_Limit = limit;
|
||||||
|
HealBot_Grid_NumBars = numBars;
|
||||||
|
|
||||||
if HealBot_Config.HideOptions == 1 then
|
if HealBot_Config.HideOptions == 1 then
|
||||||
HealBot_Action_OptionsButton:Hide();
|
HealBot_Action_OptionsButton:Hide();
|
||||||
@@ -740,11 +1032,12 @@ function HealBot_Action_PartyChanged()
|
|||||||
if HealBot_Config.HideParty == 1 and HidePartyFrame then
|
if HealBot_Config.HideParty == 1 and HidePartyFrame then
|
||||||
HidePartyFrame();
|
HidePartyFrame();
|
||||||
end
|
end
|
||||||
end
|
|
||||||
HealBot_Action_RefreshButtons();
|
HealBot_Action_RefreshButtons();
|
||||||
|
HealBot_ReleaseTable(HeaderPos);
|
||||||
HealBot_Action_ShowFrame();
|
HealBot_Action_ShowFrame();
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_Action_ShowFrame: Internal utility: HealBot_Action_ShowFrame
|
||||||
function HealBot_Action_ShowFrame()
|
function HealBot_Action_ShowFrame()
|
||||||
if HealBot_Config.ActionVisible == 1 then
|
if HealBot_Config.ActionVisible == 1 then
|
||||||
if HealBot_Config.HideSolo == 1 and GetNumPartyMembers() == 0 and GetNumRaidMembers() == 0 then
|
if HealBot_Config.HideSolo == 1 and GetNumPartyMembers() == 0 and GetNumRaidMembers() == 0 then
|
||||||
@@ -757,13 +1050,16 @@ function HealBot_Action_ShowFrame()
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_Action_Reset: Resets action panel position and rebuilds layout.
|
||||||
function HealBot_Action_Reset()
|
function HealBot_Action_Reset()
|
||||||
HealBot_Action:ClearAllPoints();
|
HealBot_Action:ClearAllPoints();
|
||||||
HealBot_Action:SetPoint("TOP", "MinimapCluster", "BOTTOM", 7, 10);
|
HealBot_Action:SetPoint("TOP", "MinimapCluster", "BOTTOM", 7, 10);
|
||||||
HealBot_Action_HealTarget = {};
|
HealBot_Action_HealTarget = {};
|
||||||
|
HealBot_Action_HealFocus = {};
|
||||||
HealBot_Action_PartyChanged();
|
HealBot_Action_PartyChanged();
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_Action_Refresh: Alias for refreshing a unit button.
|
||||||
function HealBot_Action_Refresh(unit)
|
function HealBot_Action_Refresh(unit)
|
||||||
if (UnitIsDeadOrGhost("player")) or (UnitOnTaxi("player")) then
|
if (UnitIsDeadOrGhost("player")) or (UnitOnTaxi("player")) then
|
||||||
if HealBot_Config.AutoClose == 1 and HealBot_Config.ActionVisible ~= 0 then
|
if HealBot_Config.AutoClose == 1 and HealBot_Config.ActionVisible ~= 0 then
|
||||||
@@ -790,3 +1086,138 @@ function HealBot_Action_Refresh(unit)
|
|||||||
end
|
end
|
||||||
end
|
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
|
||||||
|
|
||||||
|
HealBot_Grid_LastI = HealBot_Grid_LastI + 1
|
||||||
|
HealBot_Grid_NumBars = HealBot_Grid_NumBars + 1
|
||||||
|
|
||||||
|
local button = HealBot_Action_SetHealButton(HealBot_Grid_LastI, unit)
|
||||||
|
if not button then return end
|
||||||
|
|
||||||
|
local orientation = (HealBot_Config.GridOrientation and HealBot_Config.GridOrientation[HealBot_Config.Current_Skin]) or 1
|
||||||
|
local bwidth = (HealBot_Config.bwidth and HealBot_Config.bwidth[HealBot_Config.Current_Skin]) or 85
|
||||||
|
local bheight = (HealBot_Config.bheight and HealBot_Config.bheight[HealBot_Config.Current_Skin]) or 18
|
||||||
|
local bcspace = (HealBot_Config.bcspace and HealBot_Config.bcspace[HealBot_Config.Current_Skin]) or 3
|
||||||
|
local brspace = (HealBot_Config.brspace and HealBot_Config.brspace[HealBot_Config.Current_Skin]) or 3
|
||||||
|
local bpadding = (HealBot_Config.bpadding and HealBot_Config.bpadding[HealBot_Config.Current_Skin]) or 10
|
||||||
|
|
||||||
|
if orientation == 1 then
|
||||||
|
HealBot_Grid_OffsetY = HealBot_Action_PositionButton(button, HealBot_Grid_OffsetX, HealBot_Grid_OffsetY, bwidth, bheight, false, nil)
|
||||||
|
if HealBot_Grid_LastH == HealBot_Grid_Limit then
|
||||||
|
HealBot_Grid_LastH = 0
|
||||||
|
if HealBot_Grid_MaxOffsetY < HealBot_Grid_OffsetY then HealBot_Grid_MaxOffsetY = HealBot_Grid_OffsetY end
|
||||||
|
HealBot_Grid_OffsetY = bpadding
|
||||||
|
HealBot_Grid_OffsetX = HealBot_Grid_OffsetX + bwidth + bcspace
|
||||||
|
end
|
||||||
|
else
|
||||||
|
HealBot_Grid_OffsetX = HealBot_Action_PositionButtonHorizontal(button, HealBot_Grid_OffsetX, HealBot_Grid_OffsetY, bwidth, bheight, false, nil)
|
||||||
|
if HealBot_Grid_LastH == HealBot_Grid_Limit then
|
||||||
|
HealBot_Grid_LastH = 0
|
||||||
|
if HealBot_Grid_MaxOffsetX < HealBot_Grid_OffsetX then HealBot_Grid_MaxOffsetX = HealBot_Grid_OffsetX end
|
||||||
|
HealBot_Grid_OffsetX = bpadding
|
||||||
|
HealBot_Grid_OffsetY = HealBot_Grid_OffsetY + bheight + brspace
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
HealBot_Grid_LastH = HealBot_Grid_LastH + 1
|
||||||
|
HealBot_Grid_LastZ = HealBot_Grid_LastZ + 1
|
||||||
|
|
||||||
|
local bar = HealBot_Action_HealthBar(button)
|
||||||
|
local bar2 = HealBot_Action_HealthBar2(button)
|
||||||
|
bar.txt = getglobal(bar:GetName() .. "_text")
|
||||||
|
bar:SetHeight(bheight)
|
||||||
|
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)
|
||||||
|
bar2:SetHeight(bheight)
|
||||||
|
HealBot_Action_SetTexture(bar2, btexture)
|
||||||
|
|
||||||
|
local totalOffsetX = HealBot_Grid_OffsetX
|
||||||
|
local totalOffsetY = HealBot_Grid_OffsetY
|
||||||
|
if orientation == 1 then
|
||||||
|
if HealBot_Grid_MaxOffsetY < totalOffsetY then HealBot_Grid_MaxOffsetY = totalOffsetY end
|
||||||
|
totalOffsetY = HealBot_Grid_MaxOffsetY
|
||||||
|
else
|
||||||
|
if HealBot_Grid_MaxOffsetX < totalOffsetX then HealBot_Grid_MaxOffsetX = totalOffsetX end
|
||||||
|
totalOffsetX = HealBot_Grid_MaxOffsetX
|
||||||
|
totalOffsetY = totalOffsetY + bheight + brspace
|
||||||
|
end
|
||||||
|
|
||||||
|
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 = {}
|
||||||
|
|
||||||
|
-- Gather units based on config, similar to PartyChanged
|
||||||
|
if HealBot_Config.GroupHeals == 1 then
|
||||||
|
for _, unit in ipairs(HealBot_Action_HealGroup) do
|
||||||
|
table.insert(unitsToCheck, unit)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if HealBot_Config.TankHeals == 1 and GetNumRaidMembers() > 0 and CT_RA_MainTanks then
|
||||||
|
for j = 1, 10 do
|
||||||
|
if CT_RA_MainTanks[j] then
|
||||||
|
for k = 1, GetNumRaidMembers() do
|
||||||
|
local unit = "raid" .. k
|
||||||
|
local skip = false
|
||||||
|
if UnitInParty(unit) and HealBot_Config.GroupHeals == 1 and not UnitIsUnit(unit, "player") then
|
||||||
|
skip = true
|
||||||
|
end
|
||||||
|
if not skip and UnitName(unit) == CT_RA_MainTanks[j] then
|
||||||
|
table.insert(unitsToCheck, unit)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if HealBot_Config.TargetHeals == 1 then
|
||||||
|
for _, unit in ipairs(HealBot_Action_HealTarget) do
|
||||||
|
table.insert(unitsToCheck, unit)
|
||||||
|
end
|
||||||
|
table.insert(unitsToCheck, "target")
|
||||||
|
end
|
||||||
|
|
||||||
|
if HealBot_Config.EmergencyHeals == 1 then
|
||||||
|
if GetNumRaidMembers() > 0 then
|
||||||
|
for j = 1, 40 do
|
||||||
|
local unit = "raid" .. j
|
||||||
|
if not (UnitInParty(unit) and HealBot_Config.GroupHeals == 1) then
|
||||||
|
table.insert(unitsToCheck, unit)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
else
|
||||||
|
for j = 1, 4 do
|
||||||
|
table.insert(unitsToCheck, "party" .. j)
|
||||||
|
end
|
||||||
|
table.insert(unitsToCheck, "player")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if HealBot_Config.PetHeals == 1 then
|
||||||
|
if GetNumRaidMembers() > 0 then
|
||||||
|
for j = 1, 40 do
|
||||||
|
table.insert(unitsToCheck, "raidpet" .. j)
|
||||||
|
end
|
||||||
|
else
|
||||||
|
for j = 1, 4 do
|
||||||
|
table.insert(unitsToCheck, "partypet" .. j)
|
||||||
|
end
|
||||||
|
table.insert(unitsToCheck, "pet")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
for _, unit in ipairs(unitsToCheck) do
|
||||||
|
if not HealBot_Action_UnitButtons[unit] and HealBot_MayHeal(unit) then
|
||||||
|
HealBot_Action_AppendUnit(unit)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|||||||
+40
-10
@@ -3,6 +3,18 @@
|
|||||||
|
|
||||||
HealBot_Action_TooltipUnit = nil
|
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
|
||||||
|
if UnitMana("player") < HealBot_Spells[spell].Mana then
|
||||||
|
r, g, b = 1, 0, 0 -- red if not enough mana
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return r, g, b
|
||||||
|
end
|
||||||
|
|
||||||
|
-- HealBot_Action_RefreshTooltip: Builds and displays spell tooltip on hover.
|
||||||
function HealBot_Action_RefreshTooltip(unit)
|
function HealBot_Action_RefreshTooltip(unit)
|
||||||
if HealBot_Config.ShowTooltip==0 then return end
|
if HealBot_Config.ShowTooltip==0 then return end
|
||||||
if not unit then unit = HealBot_Action_TooltipUnit end
|
if not unit then unit = HealBot_Action_TooltipUnit end
|
||||||
@@ -33,53 +45,63 @@ function HealBot_Action_RefreshTooltip(unit)
|
|||||||
if HealBot_Config.Tooltip_ShowSpellDetail==1 then
|
if HealBot_Config.Tooltip_ShowSpellDetail==1 then
|
||||||
if spellLeft then
|
if spellLeft then
|
||||||
linenum=linenum+2
|
linenum=linenum+2
|
||||||
HealBot_Action_Tooltip_SetLineLeft(HEALBOT_OPTIONS_BUTTONLEFT.." "..HEALBOT_OPTIONS_COMBOBUTTON..": "..spellLeft,1,1,0,linenum)
|
local sr, sg, sb = HealBot_Tooltip_GetSpellColor(spellLeft)
|
||||||
|
HealBot_Action_Tooltip_SetLineLeft(HEALBOT_OPTIONS_BUTTONLEFT.." "..HEALBOT_OPTIONS_COMBOBUTTON..": "..spellLeft,sr,sg,sb,linenum)
|
||||||
linenum=HealBot_Action_Tooltip_SpellInfo(spellLeft,linenum);
|
linenum=HealBot_Action_Tooltip_SpellInfo(spellLeft,linenum);
|
||||||
end
|
end
|
||||||
if spellMiddle then
|
if spellMiddle then
|
||||||
linenum=linenum+2
|
linenum=linenum+2
|
||||||
HealBot_Action_Tooltip_SetLineLeft(HEALBOT_OPTIONS_BUTTONMIDDLE.." "..HEALBOT_OPTIONS_COMBOBUTTON..": "..spellMiddle,1,1,0,linenum)
|
local sr, sg, sb = HealBot_Tooltip_GetSpellColor(spellMiddle)
|
||||||
|
HealBot_Action_Tooltip_SetLineLeft(HEALBOT_OPTIONS_BUTTONMIDDLE.." "..HEALBOT_OPTIONS_COMBOBUTTON..": "..spellMiddle,sr,sg,sb,linenum)
|
||||||
linenum=HealBot_Action_Tooltip_SpellInfo(spellMiddle,linenum);
|
linenum=HealBot_Action_Tooltip_SpellInfo(spellMiddle,linenum);
|
||||||
end
|
end
|
||||||
if spellRight then
|
if spellRight then
|
||||||
linenum=linenum+2
|
linenum=linenum+2
|
||||||
HealBot_Action_Tooltip_SetLineLeft(HEALBOT_OPTIONS_BUTTONRIGHT.." "..HEALBOT_OPTIONS_COMBOBUTTON..": "..spellRight,1,1,0,linenum)
|
local sr, sg, sb = HealBot_Tooltip_GetSpellColor(spellRight)
|
||||||
|
HealBot_Action_Tooltip_SetLineLeft(HEALBOT_OPTIONS_BUTTONRIGHT.." "..HEALBOT_OPTIONS_COMBOBUTTON..": "..spellRight,sr,sg,sb,linenum)
|
||||||
linenum=HealBot_Action_Tooltip_SpellInfo(spellRight,linenum);
|
linenum=HealBot_Action_Tooltip_SpellInfo(spellRight,linenum);
|
||||||
end
|
end
|
||||||
if spellButton4 then
|
if spellButton4 then
|
||||||
linenum=linenum+2
|
linenum=linenum+2
|
||||||
HealBot_Action_Tooltip_SetLineLeft(HEALBOT_OPTIONS_BUTTON4.." "..HEALBOT_OPTIONS_COMBOBUTTON..": "..spellButton4,1,1,0,linenum)
|
local sr, sg, sb = HealBot_Tooltip_GetSpellColor(spellButton4)
|
||||||
|
HealBot_Action_Tooltip_SetLineLeft(HEALBOT_OPTIONS_BUTTON4.." "..HEALBOT_OPTIONS_COMBOBUTTON..": "..spellButton4,sr,sg,sb,linenum)
|
||||||
linenum=HealBot_Action_Tooltip_SpellInfo(spellButton4,linenum);
|
linenum=HealBot_Action_Tooltip_SpellInfo(spellButton4,linenum);
|
||||||
end
|
end
|
||||||
if spellButton5 then
|
if spellButton5 then
|
||||||
linenum=linenum+2
|
linenum=linenum+2
|
||||||
HealBot_Action_Tooltip_SetLineLeft(HEALBOT_OPTIONS_BUTTON5.." "..HEALBOT_OPTIONS_COMBOBUTTON..": "..spellButton5,1,1,0,linenum)
|
local sr, sg, sb = HealBot_Tooltip_GetSpellColor(spellButton5)
|
||||||
|
HealBot_Action_Tooltip_SetLineLeft(HEALBOT_OPTIONS_BUTTON5.." "..HEALBOT_OPTIONS_COMBOBUTTON..": "..spellButton5,sr,sg,sb,linenum)
|
||||||
linenum=HealBot_Action_Tooltip_SpellInfo(spellButton5,linenum);
|
linenum=HealBot_Action_Tooltip_SpellInfo(spellButton5,linenum);
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
if spellLeft then
|
if spellLeft then
|
||||||
linenum=linenum+1
|
linenum=linenum+1
|
||||||
HealBot_Action_Tooltip_SetLineLeft(HEALBOT_OPTIONS_BUTTONLEFT..":",1,1,0,linenum)
|
local sr, sg, sb = HealBot_Tooltip_GetSpellColor(spellLeft)
|
||||||
|
HealBot_Action_Tooltip_SetLineLeft(HEALBOT_OPTIONS_BUTTONLEFT..":",sr,sg,sb,linenum)
|
||||||
HealBot_Action_Tooltip_SetLineRight(HealBot_Action_Tooltip_SpellSummary(spellLeft),1,1,1,linenum)
|
HealBot_Action_Tooltip_SetLineRight(HealBot_Action_Tooltip_SpellSummary(spellLeft),1,1,1,linenum)
|
||||||
end
|
end
|
||||||
if spellMiddle then
|
if spellMiddle then
|
||||||
linenum=linenum+1
|
linenum=linenum+1
|
||||||
HealBot_Action_Tooltip_SetLineLeft(HEALBOT_OPTIONS_BUTTONMIDDLE..":",1,1,0,linenum)
|
local sr, sg, sb = HealBot_Tooltip_GetSpellColor(spellMiddle)
|
||||||
|
HealBot_Action_Tooltip_SetLineLeft(HEALBOT_OPTIONS_BUTTONMIDDLE..":",sr,sg,sb,linenum)
|
||||||
HealBot_Action_Tooltip_SetLineRight(HealBot_Action_Tooltip_SpellSummary(spellMiddle),1,1,1,linenum)
|
HealBot_Action_Tooltip_SetLineRight(HealBot_Action_Tooltip_SpellSummary(spellMiddle),1,1,1,linenum)
|
||||||
end
|
end
|
||||||
if spellRight then
|
if spellRight then
|
||||||
linenum=linenum+1
|
linenum=linenum+1
|
||||||
HealBot_Action_Tooltip_SetLineLeft(HEALBOT_OPTIONS_BUTTONRIGHT..":",1,1,0,linenum)
|
local sr, sg, sb = HealBot_Tooltip_GetSpellColor(spellRight)
|
||||||
|
HealBot_Action_Tooltip_SetLineLeft(HEALBOT_OPTIONS_BUTTONRIGHT..":",sr,sg,sb,linenum)
|
||||||
HealBot_Action_Tooltip_SetLineRight(HealBot_Action_Tooltip_SpellSummary(spellRight),1,1,1,linenum)
|
HealBot_Action_Tooltip_SetLineRight(HealBot_Action_Tooltip_SpellSummary(spellRight),1,1,1,linenum)
|
||||||
end
|
end
|
||||||
if spellButton4 then
|
if spellButton4 then
|
||||||
linenum=linenum+1
|
linenum=linenum+1
|
||||||
HealBot_Action_Tooltip_SetLineLeft(HEALBOT_OPTIONS_BUTTON4..":",1,1,0,linenum)
|
local sr, sg, sb = HealBot_Tooltip_GetSpellColor(spellButton4)
|
||||||
|
HealBot_Action_Tooltip_SetLineLeft(HEALBOT_OPTIONS_BUTTON4..":",sr,sg,sb,linenum)
|
||||||
HealBot_Action_Tooltip_SetLineRight(HealBot_Action_Tooltip_SpellSummary(spellButton4),1,1,1,linenum)
|
HealBot_Action_Tooltip_SetLineRight(HealBot_Action_Tooltip_SpellSummary(spellButton4),1,1,1,linenum)
|
||||||
end
|
end
|
||||||
if spellButton5 then
|
if spellButton5 then
|
||||||
linenum=linenum+1
|
linenum=linenum+1
|
||||||
HealBot_Action_Tooltip_SetLineLeft(HEALBOT_OPTIONS_BUTTON5..":",1,1,0,linenum)
|
local sr, sg, sb = HealBot_Tooltip_GetSpellColor(spellButton5)
|
||||||
|
HealBot_Action_Tooltip_SetLineLeft(HEALBOT_OPTIONS_BUTTON5..":",sr,sg,sb,linenum)
|
||||||
HealBot_Action_Tooltip_SetLineRight(HealBot_Action_Tooltip_SpellSummary(spellButton5),1,1,1,linenum)
|
HealBot_Action_Tooltip_SetLineRight(HealBot_Action_Tooltip_SpellSummary(spellButton5),1,1,1,linenum)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -129,6 +151,7 @@ function HealBot_Action_RefreshTooltip(unit)
|
|||||||
HealBot_Tooltip:Show();
|
HealBot_Tooltip:Show();
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_Action_Tooltip_SpellInfo: Internal utility: HealBot_Action_Tooltip_SpellInfo
|
||||||
function HealBot_Action_Tooltip_SpellInfo(spell,linenum)
|
function HealBot_Action_Tooltip_SpellInfo(spell,linenum)
|
||||||
local text
|
local text
|
||||||
if HealBot_Spells[spell] then
|
if HealBot_Spells[spell] then
|
||||||
@@ -164,6 +187,7 @@ function HealBot_Action_Tooltip_SpellInfo(spell,linenum)
|
|||||||
return linenum
|
return linenum
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_Action_Tooltip_SpellSummary: Internal utility: HealBot_Action_Tooltip_SpellSummary
|
||||||
function HealBot_Action_Tooltip_SpellSummary(spell)
|
function HealBot_Action_Tooltip_SpellSummary(spell)
|
||||||
local ret_val = " ";
|
local ret_val = " ";
|
||||||
if HealBot_Spells[spell] then
|
if HealBot_Spells[spell] then
|
||||||
@@ -191,6 +215,7 @@ function HealBot_Action_Tooltip_SpellSummary(spell)
|
|||||||
return ret_val
|
return ret_val
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_Action_Tooltip_CheckForInstant: Internal utility: HealBot_Action_Tooltip_CheckForInstant
|
||||||
function HealBot_Action_Tooltip_CheckForInstant(unit,spell,upd,linenum,check)
|
function HealBot_Action_Tooltip_CheckForInstant(unit,spell,upd,linenum,check)
|
||||||
if HealBot_Spells[spell] then
|
if HealBot_Spells[spell] then
|
||||||
if HealBot_Spells[spell].CastTime == 0 then
|
if HealBot_Spells[spell].CastTime == 0 then
|
||||||
@@ -209,6 +234,7 @@ function HealBot_Action_Tooltip_CheckForInstant(unit,spell,upd,linenum,check)
|
|||||||
return check+1,linenum;
|
return check+1,linenum;
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_Action_Tooltip_SetLineLeft: Internal utility: HealBot_Action_Tooltip_SetLineLeft
|
||||||
function HealBot_Action_Tooltip_SetLineLeft(Text,R,G,B,linenum)
|
function HealBot_Action_Tooltip_SetLineLeft(Text,R,G,B,linenum)
|
||||||
local txtL = getglobal("HealBot_TooltipTextL" .. linenum)
|
local txtL = getglobal("HealBot_TooltipTextL" .. linenum)
|
||||||
txtL:SetTextColor(R,G,B)
|
txtL:SetTextColor(R,G,B)
|
||||||
@@ -216,6 +242,7 @@ function HealBot_Action_Tooltip_SetLineLeft(Text,R,G,B,linenum)
|
|||||||
txtL:Show()
|
txtL:Show()
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_Action_Tooltip_SetLineRight: Internal utility: HealBot_Action_Tooltip_SetLineRight
|
||||||
function HealBot_Action_Tooltip_SetLineRight(Text,R,G,B,linenum)
|
function HealBot_Action_Tooltip_SetLineRight(Text,R,G,B,linenum)
|
||||||
local txtR = getglobal("HealBot_TooltipTextR" .. linenum)
|
local txtR = getglobal("HealBot_TooltipTextR" .. linenum)
|
||||||
txtR:SetTextColor(R,G,B)
|
txtR:SetTextColor(R,G,B)
|
||||||
@@ -223,6 +250,7 @@ function HealBot_Action_Tooltip_SetLineRight(Text,R,G,B,linenum)
|
|||||||
txtR:Show()
|
txtR:Show()
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_Action_Tooltip_ClearLines: Internal utility: HealBot_Action_Tooltip_ClearLines
|
||||||
function HealBot_Action_Tooltip_ClearLines()
|
function HealBot_Action_Tooltip_ClearLines()
|
||||||
for j=1,30 do
|
for j=1,30 do
|
||||||
local txtL = getglobal("HealBot_TooltipTextL" .. j)
|
local txtL = getglobal("HealBot_TooltipTextL" .. j)
|
||||||
@@ -234,6 +262,7 @@ function HealBot_Action_Tooltip_ClearLines()
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_Action_ShowTooltip: Internal utility: HealBot_Action_ShowTooltip
|
||||||
function HealBot_Action_ShowTooltip(this)
|
function HealBot_Action_ShowTooltip(this)
|
||||||
if HealBot_Config.ShowTooltip==0 then return end
|
if HealBot_Config.ShowTooltip==0 then return end
|
||||||
if not this.unit then return end;
|
if not this.unit then return end;
|
||||||
@@ -243,6 +272,7 @@ function HealBot_Action_ShowTooltip(this)
|
|||||||
HealBot_Action_RefreshTooltip(this.unit);
|
HealBot_Action_RefreshTooltip(this.unit);
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- HealBot_Action_HideTooltip: Internal utility: HealBot_Action_HideTooltip
|
||||||
function HealBot_Action_HideTooltip(this)
|
function HealBot_Action_HideTooltip(this)
|
||||||
if HealBot_Config.ShowTooltip==0 then return end
|
if HealBot_Config.ShowTooltip==0 then return end
|
||||||
HealBot_Tooltip:Hide();
|
HealBot_Tooltip:Hide();
|
||||||
|
|||||||
@@ -1,10 +1,14 @@
|
|||||||
**HealBotBlue**
|
**HealBotBlue**
|
||||||
By Bluewhale.
|
By Bluewhale.
|
||||||
|
|
||||||
|
> **NOTE:** For HealBot to work correctly, the **Selfcast** feature in WoW options needs to be disabled.
|
||||||
|
|
||||||
Original HealBot, while being a staple healing addon in Wrath and later expansions, was in its infancy during Vanilla WoW. It was a memory and CPU hog that ate up resources, featured a clunky UI, and offered limited functions. To fix all of the above while still using it as a base framework, I refactored the entire codebase. The monolithic code structure was split to follow a more modern approach (MVC design pattern), making it more stable and easily editable. Additionally, the inefficient AURA scanning was replaced with lightweight (Observer Pattern) reactive programming. It now updates only what is necessary when a trigger fires, rather than performing clumsy, continuous scans of a 40-man raid. By doing so, I managed to throttle down CPU and memory usage significantly, placing it on par with modern addons. Additional functionalities are being added over time to provide a holistic, healer-centered raid frame.
|
Original HealBot, while being a staple healing addon in Wrath and later expansions, was in its infancy during Vanilla WoW. It was a memory and CPU hog that ate up resources, featured a clunky UI, and offered limited functions. To fix all of the above while still using it as a base framework, I refactored the entire codebase. The monolithic code structure was split to follow a more modern approach (MVC design pattern), making it more stable and easily editable. Additionally, the inefficient AURA scanning was replaced with lightweight (Observer Pattern) reactive programming. It now updates only what is necessary when a trigger fires, rather than performing clumsy, continuous scans of a 40-man raid. By doing so, I managed to throttle down CPU and memory usage significantly, placing it on par with modern addons. Additional functionalities are being added over time to provide a holistic, healer-centered raid frame.
|
||||||
|
|
||||||
|
> **Performance First:** The raidframe is not library reliant - unlike popular raidframe replacement addons it doesn't rely at all on external frameworks. While this makes my work a bit harder this allows complete control over garbage collection and CPU use which makes it multiple times more stable and lightweight.
|
||||||
|
|
||||||
> **NOTE:** For HealBot to work correctly, the **Selfcast** feature in WoW options needs to be disabled.
|
### Development version
|
||||||
|
There is dev branch available, it might be slightly more unstabl but most of time it does have more features present. It's only merged into main when major feature set is implemented and stabilised.
|
||||||
|
|
||||||
### Reporting Errors
|
### Reporting Errors
|
||||||
Major errors will pop up a frame with error information. Take a screenshot and post comments.
|
Major errors will pop up a frame with error information. Take a screenshot and post comments.
|
||||||
@@ -19,43 +23,122 @@ Default installation path: `C:\Program Files\World of Warcraft\Interface\AddOns\
|
|||||||
* `/hb reset` - Resets the contents of the main HealBot panel
|
* `/hb reset` - Resets the contents of the main HealBot panel
|
||||||
|
|
||||||
### Key Features & Current Functionality
|
### Key Features & Current Functionality
|
||||||
* **MVC & Observer Architecture:** High-performance, reactive engine that updates frames dynamically on state changes, drastically reducing CPU and memory overhead compared to traditional polling.
|
* **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).
|
* **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.
|
||||||
|
* **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.
|
* **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).
|
||||||
* **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.
|
* **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.
|
||||||
* **Equipment Bonus Integration:** Automatically scans equipped gear (for classes capable of healing) to dynamically scale healing predictions.
|
|
||||||
* **Curse & Debuff Warning (CDC):** Dynamic visual and audio alerts for cleanable debuffs. Customizable colors based on debuff type (Curse, Poison, Disease, Magic).
|
* **Curse & Debuff Warning (CDC):** Dynamic visual and audio alerts for cleanable debuffs. Customizable colors based on debuff type (Curse, Poison, Disease, Magic).
|
||||||
|
* **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.
|
* **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
|
||||||
|
- **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
|
||||||
|
|
||||||
|
* **New spell rank bug** you may experience lua error spaming your chat frame after learning new healing spells. /reload will clear the issue.
|
||||||
|
|
||||||
|
|
||||||
### Change Log
|
### Change Log
|
||||||
|
|
||||||
**v1.3**
|
**v1.7.0**
|
||||||
* **General Options Layout & Renaming:** Relabeled "Healing panel options" to "Mana bar options:", moved the "For Healers Only" checkbox side-by-side with "Show Mana Bars", and renamed "Enable mouse over action bar" to "Hovercasting".
|
* **Feature - Raid Marks** - Added tracking and display of raid marks on unit frames.
|
||||||
* **OnShow Empty Panel Bug Fix:** Solved the rendering issue where the options panel would load empty initially until another tab was clicked.
|
* **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).
|
||||||
* **Backdrop Alpha Reset Bug Fix:** Resolved a WoW API client quirk where showing the HealBot frame would reset the background color and alpha channel back to default white/transparent by calling `SetBackdropColor` after `SetBackdrop`.
|
* **UI Layout** - Widened the Options UI and neatly centered elements to accommodate the new integrations tab.
|
||||||
* **Default Party Frame Toggle:** Added a "Hide Default Party Frames" toggle option (fully localized in English, German, French, and Korean) to hide Blizzard's default party frames. Integrated immediate toggling on joining/leaving groups.
|
* **Bug Fix - Rendering Crash** - Fixed a critical UI issue where unrecognized debuff types would crash the rendering loop, causing unit frames to disappear.
|
||||||
* **Safety Guards & Crash Prevention:** Added safety guards to `HidePartyFrame` and `ShowPartyFrame` calls to prevent nil-value crashes when solo.
|
* **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.
|
||||||
* **Checkbox State Initialization Fixes:** Fixed options menu bugs where "Hide when Solo", "Show Mana Bars", and "For Healers Only" checkboxes failed to reflect their saved configuration value when opening the menu.
|
* **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.
|
||||||
* **CurrentPanel Nil Comparison Fix:** Fixed a startup Lua comparison crash by initializing `HealBot_Options_CurrentPanel` at the top of the main options file.
|
* **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.
|
||||||
* **Monolithic Code Modularization (Options):** Split the massive, single-file options system (`HealBot_Options.xml`/`HealBot_Options.lua`) into 7 dedicated, content-named panel subfiles (`General`, `Spells`, `Healing`, `CDC`, `Skins`, `Buffs`, and `Chat`) to improve codebase modularity and stability.
|
* **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.
|
||||||
* **Core Code Decoupling (MVC & Observer Pattern):** Modularized `HealBot.lua` and `HealBot_Action.lua` by decoupling them into dedicated service files: `Range`, `Comms`, `Aura`, `Spells`, `Events` controllers, and `Layout`, `Tooltip` views.
|
* **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.
|
||||||
* **Scope Resolution Fix:** Promoted `HealBot_Options_ComboButtons_Button` to global scope in the base options file to resolve a `nil` comparison error when loading spell settings.
|
* **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.
|
||||||
* **Global Scoping & Variable Promotion:** Promoted `CalcEquipBonus`, `HealBot_EquipChangeTimer`, `HealValue`, `InitSpells`, and `Delay_RecalcParty` to global scope in `HealBot.lua` to ensure cross-module visibility.
|
* **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.
|
||||||
* **CTRA Resurrection Cancel Bug Fix:** Fixed a nil table indexing crash in the CTRA `RESNO` message handler in `HealBot_Controller_Comms.lua`.
|
* **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.
|
||||||
* **Core Options Layout Correction:** Relocated the "Defaults" and "Close" buttons back into the parent options frame's container, ensuring they display consistently at the bottom of all configuration tabs.
|
* **Bug Fix - CDC Config List** - Fixed an uninitialized dropdown list array that prevented the CDC class monitor configuration from saving correctly.
|
||||||
* **UI Layout & Skins Alignment:** Reorganized all 13 opacity sliders on the Skins panel into a clean, uniform 2-column grid with explicit width/height sizes (`123 x 17`) to resolve layout overlaps. Realigned Chat tab buttons to stay within window bounds and corrected Color Picker anchors.
|
* **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.
|
||||||
* **Startup Refresh Optimization:** Resolved initial loading lag where action bars would be missing by forcing an immediate UI refresh (`HealBot_RecalcSpells()`) once spell data loads.
|
|
||||||
* **Menu Cleanup:** Fixed Options panel checkboxes overlapping due to incorrect vertical spacing offsets.
|
|
||||||
* **Target Restoration Fix:** Fixed spell interruptions and "You don't have a target" errors when healing by implementing a 0.1-second delayed target restoration using `TargetLastEnemy` and `TargetLastTarget`.
|
|
||||||
* **Buff Watch Initialization & Options Fix:** Fixed a bug where buff watch failed to display missing buffs on login/UI reload when the player had no active buffs. Enabled immediate buff/aura rescanning when modifying options in the Buff watch configuration tab.
|
|
||||||
|
|
||||||
**v1.2.2**
|
**v1.6.5**
|
||||||
* **White background fix** Fixed issue where white background would persist while alpha channel got changes.
|
* **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.
|
||||||
* **Alpha slider** Fixed bug where alpha slider wouldn't apply changes instantly.
|
|
||||||
|
|
||||||
**v1.2.1**
|
**v1.6.4**
|
||||||
* **Initialization bug** Fixed issue where Action module would get stuck on infinite loop causing stack overflow.
|
* **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.
|
||||||
|
* **Bug Fix - CDC Colors** - Fixed health bar debuff coloring (CDC) by stopping `HealBot_HealthColor` from incorrectly querying debuffs directly, relying instead on cached debuff types.
|
||||||
|
|
||||||
|
|
||||||
|
**v1.6.3**
|
||||||
|
* **Hotfix string splitter** - added falback for string splitter if the the string is empty or nil.
|
||||||
|
* **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.
|
||||||
|
|
||||||
|
**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.
|
||||||
|
|
||||||
|
**v1.6**
|
||||||
|
* **Event Loop Decoupling:** Ripped out redundant synchronous UI redraws that were bypassed by the new MVC architecture. High-frequency events (mana regen, health ticks) now fully rely on the `HealBot_OnUpdate` dirty queue, severely reducing CPU bottlenecks.
|
||||||
|
* **Combat UI Optimizations:** Removed unnecessary full spell recalculations when dropping combat, preventing client stutter after every mob kill.
|
||||||
|
* **Memory Optimization:** Fixed severe Lua garbage collection spikes during UI reloads by preventing full party layout rebuilds on `PLAYER_TARGET_CHANGED`, and cached dynamic string concatenations directly to unit frames to eliminate memory leakage on high frequency UI refreshes.
|
||||||
|
* **Mana Validation Fix:** Removed artificial spell mana gating, fixing an issue where low-mana spells disappeared from tooltips and couldn't be cast. WoW's native mana validation now correctly processes 0-cost buffs (e.g. Clearcasting, Inner Focus) while turning low-mana tooltip spells red.
|
||||||
|
* **Self-Buff Tracking:** Fixed a bug where "Self Only" buff tracking incorrectly excluded the player when represented by party or raid frames instead of the standard "player" unit ID.
|
||||||
|
* **Settings Persistence Fix:** Changed `SavedVariables` to `SavedVariablesPerCharacter` in TOC so configurations correctly load unique per character instead of account-wide.
|
||||||
|
* **CPU Optimization:** Added early exit logic to resource tracking events (Mana, Rage, Energy) to stop background polling on party/raid members when "Show Mana Bars" is toggled off. Also removed excessive triggers (`BAG_UPDATE`, `PET_BAR_SHOWGRID`) and filtered `UNIT_INVENTORY_CHANGED` to only process the player, eliminating massive CPU spikes and unnecessary UI layout rebuilds during looting, item cooldowns, or when other players change gear.
|
||||||
|
* **OnUpdate GC Spike Fix:** Rewrote the modifier polling logic inside `HealBot_OnUpdate` to use boolean state tracking instead of dynamic string concatenation, eliminating a major source of garbage collection bloat while hovering over unit frames.
|
||||||
|
* **Aura Scanning Optimization:** Refactored Debuff tracking (`HealBot_DebuffWatch`) to use native boolean values (`true`/`false`) instead of string comparisons (`"YES"`/`"NO"`). This improves performance inside the continuous aura scanning loops.
|
||||||
|
|
||||||
|
**v1.5**
|
||||||
|
* **Macro, Item, and Script Bindings:** Support for binding named macros, inventory items, and inline scripts (e.g. `/target`) directly to mouse clicks in the Spells tab. All of these now natively support implicit `@mouseover` targeting on the unit frame you click, without losing your current target.
|
||||||
|
* **Modifier-Aware Tooltips & Resource Costs:** The tooltip dynamically updates to show exactly what action is bound when holding down Shift, Ctrl, or Alt over a frame. Spells also show their required mana cost, turning red if you do not have enough mana to cast them.
|
||||||
|
* **Memory Recycling Pool:** Added a local table recycling pool in the data layer to greatly reduce Lua garbage collection (GC) spikes, improving overall client frame rates during intense combat.
|
||||||
|
|
||||||
|
**v1.4.2**
|
||||||
|
* **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**
|
||||||
|
* **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.
|
||||||
|
* **Hovercast Incoming Heals:** Added full support for processing and displaying incoming heals when using action bar hovercasting.
|
||||||
|
* **Zero-latency Self-Heals:** Incoming heals for the local player now process instantly with zero latency and no network reliance, ensuring they function even when playing solo.
|
||||||
|
|
||||||
|
**v1.4**
|
||||||
|
* **Extra Frame support for pets and familiars added:** Togglable from healing tab - Extra frames option selected & pets selected from dropdown.
|
||||||
|
* **Customizable Health Text:** Added a new dropdown in the Healing Options tab that allows users to choose how health text is displayed on unit frames (`Name Only`, `Health Percentage`, `Real Health`, or `Health Deficit`). Includes a smart truncation algorithm to preserve critical health numbers even if the unit name is too long.
|
||||||
|
* **Non-Mana Resource Tracking:** Added a new toggle in the General Options tab to track secondary resources (Energy, Rage, Focus) for non-mana classes. Bars are dynamically color-coded based on the resource type.
|
||||||
|
* **Dropdown UI Initialization Fix:** Resolved a Vanilla API bug where dropdown menus sharing an ID (like the new Health Text dropdown) would temporarily inherit text from previously loaded dropdowns (e.g., "Modern Flat").
|
||||||
|
* **Dynamic Modifier Tooltips:** Fixed a bug where the spell tooltip would not dynamically update its spells when pressing modifier keys (Shift/Ctrl/Alt) while hovering over a unit frame. Registered the `MODIFIER_STATE_CHANGED` event to instantly refresh the tooltip.
|
||||||
|
* **Global Variable Namespace Refactoring:** Executed a codebase-wide refactoring to encapsulate all floating global variables inside the `HealBot_` or `HEALBOT_` namespace. This prevents HealBot from silently shadowing other addons or the native WoW API, ensuring strict adherence to Vanilla Lua best practices. (Also resolved a namespace collision with `InitSpells`).
|
||||||
|
* **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.
|
||||||
|
* **UI Persistence Bug Fixes:** Fixed a Vanilla WoW API quirk where unchecking the "Show Headers" or "Self Only" (Buffs) checkboxes caused the UI to either visually re-check itself or overwrite the setting with defaults upon a `/reload`.
|
||||||
|
|
||||||
|
**1.3.2**
|
||||||
|
* **UIDropDownMenu Fixes:** Resolved native client crash (`UIDROPDOWNMENU_OPEN_MENU` nil concatenation) when setting values on closed dropdowns.
|
||||||
|
|
||||||
|
**1.3.1**
|
||||||
|
* **Hotfix: missing helper function restored** Fixed issue with lua error for druids.
|
||||||
|
|
||||||
**v1.3**
|
**v1.3**
|
||||||
* **General Options Layout & Renaming:** Relabeled "Healing panel options" to "Mana bar options:", moved the "For Healers Only" checkbox side-by-side with "Show Mana Bars", and renamed "Enable mouse over action bar" to "Hovercasting".
|
* **General Options Layout & Renaming:** Relabeled "Healing panel options" to "Mana bar options:", moved the "For Healers Only" checkbox side-by-side with "Show Mana Bars", and renamed "Enable mouse over action bar" to "Hovercasting".
|
||||||
|
|||||||
Reference in New Issue
Block a user