mirror of
https://github.com/Bluewhale1337/HealBotBlue.git
synced 2026-09-11 09:50:21 +00:00
Compare commits
23 Commits
2aaa53a9e6
..
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 2958bc8e94 | |||
| 4486682568 | |||
| 27231aaf99 | |||
| 56b55f34ad | |||
| 135a8f6bcd | |||
| 7f5b1afe23 | |||
| 00a1ddf789 | |||
| 74e940f41c | |||
| 98b34f24b8 | |||
| 604a26dbb3 | |||
| 03114d4802 | |||
| a0b6e2f72d | |||
| 7d910eadd2 | |||
| 1ef79cfcd1 | |||
| 1f9d3af81e | |||
| e9cfd2fcc7 | |||
| 7c45d85030 | |||
| 92a4cb070a | |||
| 2af99cbc2b | |||
| ebb42f936a | |||
| 04519b9631 | |||
| 3ebcecb8e6 | |||
| b0195b30b9 |
+2
-2
@@ -1,8 +1,8 @@
|
|||||||
## Interface: 11200
|
## Interface: 11200
|
||||||
## Title: HealBotBlue
|
## Title: HealBotBlue
|
||||||
## Version: 1.7.0
|
## Version: 1.7.1
|
||||||
## 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.
|
||||||
## SavedVariablesPerCharacter: HealBot_Config
|
## SavedVariablesPerCharacter: HealBot_Config
|
||||||
..\..\FrameXML\Fonts.xml
|
..\..\FrameXML\Fonts.xml
|
||||||
..\..\FrameXML\OptionsFrameTemplates.xml
|
..\..\FrameXML\OptionsFrameTemplates.xml
|
||||||
|
|||||||
+1
-1
@@ -50,7 +50,7 @@
|
|||||||
<Texture name="$parentRaidIcon" file="Interface\TargetingFrame\UI-RaidTargetingIcons" hidden="true">
|
<Texture name="$parentRaidIcon" file="Interface\TargetingFrame\UI-RaidTargetingIcons" hidden="true">
|
||||||
<Size><AbsDimension x="14" y="14"/></Size>
|
<Size><AbsDimension x="14" y="14"/></Size>
|
||||||
<Anchors>
|
<Anchors>
|
||||||
<Anchor point="CENTER">
|
<Anchor point="TOP">
|
||||||
<Offset><AbsDimension x="0" y="0"/></Offset>
|
<Offset><AbsDimension x="0" y="0"/></Offset>
|
||||||
</Anchor>
|
</Anchor>
|
||||||
</Anchors>
|
</Anchors>
|
||||||
|
|||||||
+16
-10
@@ -159,6 +159,7 @@ local HealBot_TrackedHoTs = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
local HealBot_DebuffTypeMap = nil
|
local HealBot_DebuffTypeMap = nil
|
||||||
|
local HealBot_AuraWarningPlayed = {}
|
||||||
|
|
||||||
-- HealBot_OnEvent_UnitAura: Updates debuff lists and icon textures on aura change.
|
-- HealBot_OnEvent_UnitAura: Updates debuff lists and icon textures on aura change.
|
||||||
function HealBot_OnEvent_UnitAura(this, unit)
|
function HealBot_OnEvent_UnitAura(this, unit)
|
||||||
@@ -276,19 +277,24 @@ function HealBot_OnEvent_UnitAura(this, unit)
|
|||||||
end
|
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, 40) == 1 then
|
||||||
if HealBot_Config.ShowDebuffWarning == 1 then
|
if HealBot_AuraWarningPlayed[unit] ~= DebuffType then
|
||||||
local color = HealBot_Config.CDCBarColour[DebuffType]
|
HealBot_AuraWarningPlayed[unit] = DebuffType
|
||||||
local r, g, b = 1, 0, 0
|
if HealBot_Config.ShowDebuffWarning == 1 then
|
||||||
if color then
|
local color = HealBot_Config.CDCBarColour[DebuffType]
|
||||||
r, g, b = color.R, color.G, color.B
|
local r, g, b = 1, 0, 0
|
||||||
|
if color then
|
||||||
|
r, g, b = color.R, color.G, color.B
|
||||||
|
end
|
||||||
|
UIErrorsFrame:AddMessage(UnitName(unit) .. " suffers from " .. DebuffType,
|
||||||
|
r, g, b,
|
||||||
|
1, UIERRORS_HOLD_TIME);
|
||||||
end
|
end
|
||||||
UIErrorsFrame:AddMessage(UnitName(unit) .. " suffers from " .. DebuffType,
|
if HealBot_Config.SoundDebuffWarning == 1 then HealBot_PlaySound(HealBot_Config.SoundDebuffPlay); end
|
||||||
r, g, b,
|
|
||||||
1, UIERRORS_HOLD_TIME);
|
|
||||||
end
|
end
|
||||||
if HealBot_Config.SoundDebuffWarning == 1 then HealBot_PlaySound(HealBot_Config.SoundDebuffPlay); end
|
|
||||||
end
|
end
|
||||||
|
else
|
||||||
|
HealBot_AuraWarningPlayed[unit] = nil
|
||||||
end
|
end
|
||||||
-- Check buffs synchronously because tooltip scanning fails in OnUpdate
|
-- Check buffs synchronously because tooltip scanning fails in OnUpdate
|
||||||
HealBot_CheckBuffs(unit)
|
HealBot_CheckBuffs(unit)
|
||||||
|
|||||||
+102
-16
@@ -71,33 +71,119 @@ function HealBot_SendAddonMessage(prefix, text)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
-- HealBot_OnEvent_AddonMsg: Parses incoming heal data from other clients.
|
if not HealBot_IncomingHealers then HealBot_IncomingHealers = {} end
|
||||||
function HealBot_OnEvent_AddonMsg(this, addon_id, inc_msg, dist_target, sender_id)
|
|
||||||
if addon_id == HEALBOT_ADDON_ID then
|
-- Reusable global array for gfind string splitting
|
||||||
local tmpTest, unitname, heal_val
|
if not HealBot_Comms_Args then HealBot_Comms_Args = {} end
|
||||||
tmpTest, tmpTest, unitname, heal_val = string.find(inc_msg, ">> (%a+) <<=>> (.%d+) <<" );
|
|
||||||
if heal_val then
|
local function ClearIncomingHeal(sender)
|
||||||
if sender_id == UnitName("player") then return end
|
local data = HealBot_IncomingHealers[sender]
|
||||||
if not HealBot_HealsIn[unitname] then
|
if not data then return end
|
||||||
HealBot_HealsIn[unitname] = 0;
|
local oldAmount = data.amount
|
||||||
|
for i=1, 5 do
|
||||||
|
local oldTarget = data.targets[i]
|
||||||
|
if oldTarget then
|
||||||
|
if HealBot_HealsIn[oldTarget] then
|
||||||
|
HealBot_HealsIn[oldTarget] = HealBot_HealsIn[oldTarget] - oldAmount
|
||||||
|
if HealBot_HealsIn[oldTarget] < 0 then HealBot_HealsIn[oldTarget] = 0 end
|
||||||
|
HealBot_RecalcHeals(HealBot_FindUnitID(oldTarget))
|
||||||
end
|
end
|
||||||
HealBot_Healers[sender_id] = ">> " .. unitname .. " <<=>> " .. heal_val .. " <<";
|
data.targets[i] = nil
|
||||||
HealBot_HealsIn[unitname] = HealBot_HealsIn[unitname] + tonumber(heal_val);
|
end
|
||||||
if tonumber(heal_val) > 0 then
|
end
|
||||||
HealBot_RecalcHeals(HealBot_FindUnitID(unitname))
|
data.amount = 0
|
||||||
elseif HealBot_HealsIn[unitname] < 0 then
|
end
|
||||||
HealBot_HealsIn[unitname] = 0;
|
|
||||||
|
local function SetIncomingHeal(sender, amount, protocol, t1, t2, t3, t4, t5)
|
||||||
|
-- prioritize HealComm over HealBot protocol to avoid double-counting
|
||||||
|
if HealBot_IncomingHealers[sender] and HealBot_IncomingHealers[sender].protocol == "HealComm" and protocol == "HealBot" then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
if not HealBot_IncomingHealers[sender] then
|
||||||
|
HealBot_IncomingHealers[sender] = { targets = {}, amount = 0, protocol = protocol }
|
||||||
|
end
|
||||||
|
|
||||||
|
ClearIncomingHeal(sender)
|
||||||
|
|
||||||
|
local data = HealBot_IncomingHealers[sender]
|
||||||
|
data.protocol = protocol
|
||||||
|
|
||||||
|
if amount > 0 and t1 then
|
||||||
|
data.amount = amount
|
||||||
|
data.targets[1] = t1
|
||||||
|
data.targets[2] = t2
|
||||||
|
data.targets[3] = t3
|
||||||
|
data.targets[4] = t4
|
||||||
|
data.targets[5] = t5
|
||||||
|
|
||||||
|
for i=1, 5 do
|
||||||
|
local target = data.targets[i]
|
||||||
|
if target then
|
||||||
|
if not HealBot_HealsIn[target] then HealBot_HealsIn[target] = 0 end
|
||||||
|
HealBot_HealsIn[target] = HealBot_HealsIn[target] + amount
|
||||||
|
HealBot_RecalcHeals(HealBot_FindUnitID(target))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- HealBot_OnEvent_AddonMsg: Parses incoming heal data from other clients.
|
||||||
|
function HealBot_OnEvent_AddonMsg(this, addon_id, inc_msg, dist_target, sender_id)
|
||||||
|
if sender_id == UnitName("player") then return end
|
||||||
|
|
||||||
|
if addon_id == "HealComm" then
|
||||||
|
-- Clear reusable args array
|
||||||
|
for i=1, 10 do HealBot_Comms_Args[i] = nil end
|
||||||
|
local argCount = 0
|
||||||
|
for word in string.gfind(inc_msg, "[^/]+") do
|
||||||
|
argCount = argCount + 1
|
||||||
|
HealBot_Comms_Args[argCount] = word
|
||||||
|
end
|
||||||
|
local cmd = HealBot_Comms_Args[1]
|
||||||
|
|
||||||
|
if cmd == "Heal" and HealBot_Comms_Args[2] and HealBot_Comms_Args[3] then
|
||||||
|
SetIncomingHeal(sender_id, tonumber(HealBot_Comms_Args[3]) or 0, "HealComm", HealBot_Comms_Args[2])
|
||||||
|
elseif cmd == "Healstop" then
|
||||||
|
SetIncomingHeal(sender_id, 0, "HealComm")
|
||||||
|
elseif cmd == "GrpHeal" and HealBot_Comms_Args[2] then
|
||||||
|
SetIncomingHeal(sender_id, tonumber(HealBot_Comms_Args[2]) or 0, "HealComm", HealBot_Comms_Args[4], HealBot_Comms_Args[5], HealBot_Comms_Args[6], HealBot_Comms_Args[7], HealBot_Comms_Args[8])
|
||||||
|
elseif cmd == "GrpHealstop" then
|
||||||
|
SetIncomingHeal(sender_id, 0, "HealComm")
|
||||||
|
elseif cmd == "Resurrection" then
|
||||||
|
if HealBot_Comms_Args[2] == "stop" then
|
||||||
|
HealBot_AddDebug(sender_id .. " Stopped ressing");
|
||||||
|
for unit, resser in pairs(HealBot_Ressing) do
|
||||||
|
if resser == sender_id then
|
||||||
|
HealBot_Ressing[unit] = nil;
|
||||||
|
HealBot_RecalcHeals(HealBot_FindUnitID(unit));
|
||||||
|
end
|
||||||
|
end
|
||||||
|
elseif HealBot_Comms_Args[2] and HealBot_Comms_Args[3] == "start" then
|
||||||
|
HealBot_AddDebug(sender_id .. " is ressing " .. HealBot_Comms_Args[2]);
|
||||||
|
HealBot_Ressing[HealBot_Comms_Args[2]] = sender_id;
|
||||||
|
HealBot_RecalcHeals(HealBot_FindUnitID(HealBot_Comms_Args[2]));
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
elseif addon_id == HEALBOT_ADDON_ID then
|
||||||
|
local tmpTest, tmpTest, unitname, heal_val = string.find(inc_msg, ">> (.-) <<=>> (.-) <<" );
|
||||||
|
if heal_val and unitname then
|
||||||
|
local amount = tonumber(heal_val) or 0
|
||||||
|
if amount < 0 then amount = 0 end -- HealBot sends negative to cancel
|
||||||
|
SetIncomingHeal(sender_id, amount, "HealBot", unitname)
|
||||||
|
end
|
||||||
|
|
||||||
elseif addon_id == "HealBot" then
|
elseif addon_id == "HealBot" then
|
||||||
local tmpTest, datatype, datamsg, sender
|
local tmpTest, datatype, datamsg, sender
|
||||||
local PName = UnitName("player");
|
local PName = UnitName("player");
|
||||||
tmpTest, tmpTest, datatype, sender, datamsg = string.find(inc_msg, ">> (%a+) <<=>> (%a+) <<=>> (.+)");
|
tmpTest, tmpTest, datatype, sender, datamsg = string.find(inc_msg, ">> (.-) <<=>> (.-) <<=>> (.+)");
|
||||||
if datatype == "RequestVersion" then
|
if datatype == "RequestVersion" then
|
||||||
HealBot_SendAddonMessage("HealBot", ">> SendVersion <<=>> " .. sender .. " <<=>> Version=" .. HEALBOT_VERSION);
|
HealBot_SendAddonMessage("HealBot", ">> SendVersion <<=>> " .. sender .. " <<=>> Version=" .. HEALBOT_VERSION);
|
||||||
elseif datatype == "SendVersion" and PName == sender then
|
elseif datatype == "SendVersion" and PName == sender then
|
||||||
HealBot_AddChat(sender_id .. ": " .. datamsg);
|
HealBot_AddChat(sender_id .. ": " .. datamsg);
|
||||||
end
|
end
|
||||||
|
|
||||||
elseif addon_id == "CTRA" then
|
elseif addon_id == "CTRA" then
|
||||||
if ( string.sub(inc_msg, 1, 3) == "RES" ) then
|
if ( string.sub(inc_msg, 1, 3) == "RES" ) then
|
||||||
if ( inc_msg == "RESNO" ) then
|
if ( inc_msg == "RESNO" ) then
|
||||||
|
|||||||
@@ -3,6 +3,8 @@
|
|||||||
|
|
||||||
HealBot_View_DirtyUnits = {}
|
HealBot_View_DirtyUnits = {}
|
||||||
HealBot_View_DirtyPower = {}
|
HealBot_View_DirtyPower = {}
|
||||||
|
local unitsToRefresh = {}
|
||||||
|
local powerToRefresh = {}
|
||||||
local HealBot_Timer1, HealsIn_Timer = 0, 0;
|
local HealBot_Timer1, HealsIn_Timer = 0, 0;
|
||||||
HealBot_LastModState = ""
|
HealBot_LastModState = ""
|
||||||
|
|
||||||
@@ -152,7 +154,7 @@ function HealBot_OnUpdate(this, arg1)
|
|||||||
end
|
end
|
||||||
|
|
||||||
-- Process Dirty Queue for MVC View
|
-- Process Dirty Queue for MVC View
|
||||||
local unitsToRefresh = {}
|
for k in pairs(unitsToRefresh) do unitsToRefresh[k] = nil end
|
||||||
for unitID in pairs(HealBot_View_DirtyUnits) do
|
for unitID in pairs(HealBot_View_DirtyUnits) do
|
||||||
unitsToRefresh[unitID] = true
|
unitsToRefresh[unitID] = true
|
||||||
HealBot_View_DirtyUnits[unitID] = nil
|
HealBot_View_DirtyUnits[unitID] = nil
|
||||||
@@ -162,7 +164,7 @@ function HealBot_OnUpdate(this, arg1)
|
|||||||
HealBot_Action_Refresh(unitID)
|
HealBot_Action_Refresh(unitID)
|
||||||
end
|
end
|
||||||
|
|
||||||
local powerToRefresh = {}
|
for k in pairs(powerToRefresh) do powerToRefresh[k] = nil end
|
||||||
for unitID in pairs(HealBot_View_DirtyPower) do
|
for unitID in pairs(HealBot_View_DirtyPower) do
|
||||||
powerToRefresh[unitID] = true
|
powerToRefresh[unitID] = true
|
||||||
HealBot_View_DirtyPower[unitID] = nil
|
HealBot_View_DirtyPower[unitID] = nil
|
||||||
@@ -298,9 +300,6 @@ local HealBot_EventHandlers = {
|
|||||||
["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)
|
||||||
@@ -329,9 +328,7 @@ local HealBot_EventHandlers = {
|
|||||||
HealBot_OnEvent_PlayerEquipmentChanged2(this, arg1)
|
HealBot_OnEvent_PlayerEquipmentChanged2(this, arg1)
|
||||||
end,
|
end,
|
||||||
["UNIT_PET"] = function(this, arg1) HealBot_OnEvent_PartyMembersChanged(this) end,
|
["UNIT_PET"] = function(this, arg1) HealBot_OnEvent_PartyMembersChanged(this) end,
|
||||||
["SPELLS_CHANGED"] = function(this, arg1) HealBot_OnEvent_SpellsChanged(this, arg1) end,
|
["SPELLS_CHANGED"] = function(this, arg1) HealBot_OnEvent_SpellsChanged(this, arg1) end
|
||||||
["UPDATE_SHAPESHIFT_FORM"] = function(this) HealBot_UpdateShapeshiftForm() end,
|
|
||||||
["UPDATE_SHAPESHIFT_FORMS"] = function(this) HealBot_UpdateShapeshiftForm() end
|
|
||||||
}
|
}
|
||||||
|
|
||||||
-- HealBot_OnEvent: Event dispatcher for WoW UI events.
|
-- HealBot_OnEvent: Event dispatcher for WoW UI events.
|
||||||
@@ -348,18 +345,19 @@ end
|
|||||||
function HealBot_OnEvent_VariablesLoaded(this)
|
function HealBot_OnEvent_VariablesLoaded(this)
|
||||||
local class = HealBot_UnitClass("player")
|
local class = HealBot_UnitClass("player")
|
||||||
|
|
||||||
table.foreach(HealBot_ConfigDefaults, function (key, val)
|
local function DeepCopyMissing(src, dest)
|
||||||
if not HealBot_Config[key] then
|
for k, v in pairs(src) do
|
||||||
HealBot_Config[key] = val;
|
if type(v) == "table" then
|
||||||
end
|
if type(dest[k]) ~= "table" then dest[k] = {} end
|
||||||
if type(val) == "table" and type(HealBot_Config[key]) == "table" then
|
DeepCopyMissing(v, dest[k])
|
||||||
for k, v in pairs(val) do
|
else
|
||||||
if HealBot_Config[key][k] == nil then
|
if dest[k] == nil then
|
||||||
HealBot_Config[key][k] = v
|
dest[k] = v
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end);
|
end
|
||||||
|
DeepCopyMissing(HealBot_ConfigDefaults, HealBot_Config)
|
||||||
|
|
||||||
local foundModern = false
|
local foundModern = false
|
||||||
if HealBot_Config.Skins then
|
if HealBot_Config.Skins then
|
||||||
@@ -420,11 +418,6 @@ function HealBot_OnEvent_VariablesLoaded(this)
|
|||||||
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");
|
||||||
if class == "DRUID" then
|
|
||||||
this:RegisterEvent("UPDATE_SHAPESHIFT_FORM");
|
|
||||||
this:RegisterEvent("UPDATE_SHAPESHIFT_FORMS");
|
|
||||||
HealBot_UpdateShapeshiftForm();
|
|
||||||
end
|
|
||||||
HealBot_SpellsInitFlag = 2;
|
HealBot_SpellsInitFlag = 2;
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -490,6 +483,14 @@ end
|
|||||||
function HealBot_OnEvent_PlayerRegenEnabled(this)
|
function HealBot_OnEvent_PlayerRegenEnabled(this)
|
||||||
HealBot_IsFighting = false;
|
HealBot_IsFighting = false;
|
||||||
HealBot_Delay_RecalcParty = 1;
|
HealBot_Delay_RecalcParty = 1;
|
||||||
|
|
||||||
|
if HealBot_IncomingHealers then
|
||||||
|
for sender, data in pairs(HealBot_IncomingHealers) do
|
||||||
|
if not HealBot_FindUnitID(sender) then
|
||||||
|
HealBot_IncomingHealers[sender] = nil
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
-- HealBot_OnEvent_PlayerTargetChanged: Internal utility: HealBot_OnEvent_PlayerTargetChanged
|
-- HealBot_OnEvent_PlayerTargetChanged: Internal utility: HealBot_OnEvent_PlayerTargetChanged
|
||||||
|
|||||||
@@ -159,6 +159,7 @@ function HealBot_Process_HealValue(spell, target)
|
|||||||
local uname = UnitName(target)
|
local uname = UnitName(target)
|
||||||
if uname then
|
if uname then
|
||||||
HealBot_SendAddonMessage(HEALBOT_ADDON_ID, ">> " .. uname .. " <<=>> " .. HealBot_HealValue .. " << ");
|
HealBot_SendAddonMessage(HEALBOT_ADDON_ID, ">> " .. uname .. " <<=>> " .. HealBot_HealValue .. " << ");
|
||||||
|
HealBot_SendAddonMessage("HealComm", "Heal/" .. uname .. "/" .. HealBot_HealValue .. "/1500/");
|
||||||
if not HealBot_HealsIn[uname] then
|
if not HealBot_HealsIn[uname] then
|
||||||
HealBot_HealsIn[uname] = 0;
|
HealBot_HealsIn[uname] = 0;
|
||||||
end
|
end
|
||||||
@@ -217,6 +218,7 @@ function HealBot_StopCasting()
|
|||||||
local uname = UnitName(HealBot_CastingTarget)
|
local uname = UnitName(HealBot_CastingTarget)
|
||||||
if uname then
|
if uname then
|
||||||
HealBot_SendAddonMessage(HEALBOT_ADDON_ID, ">> " .. uname .. " <<=>> " .. 0 - HealBot_HealValue .. " << ");
|
HealBot_SendAddonMessage(HEALBOT_ADDON_ID, ">> " .. uname .. " <<=>> " .. 0 - HealBot_HealValue .. " << ");
|
||||||
|
HealBot_SendAddonMessage("HealComm", "Healstop");
|
||||||
if HealBot_HealsIn[uname] then
|
if HealBot_HealsIn[uname] then
|
||||||
HealBot_HealsIn[uname] = HealBot_HealsIn[uname] - HealBot_HealValue;
|
HealBot_HealsIn[uname] = HealBot_HealsIn[uname] - HealBot_HealValue;
|
||||||
if HealBot_HealsIn[uname] < 0 then
|
if HealBot_HealsIn[uname] < 0 then
|
||||||
@@ -857,10 +859,7 @@ function HealBot_Generic_Patten(matchStr, matchPattern)
|
|||||||
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.
|
-- HealBot_GetShapeshiftForm: Detects active druid form to prevent invalid casts.
|
||||||
function HealBot_GetShapeshiftForm()
|
function HealBot_GetShapeshiftForm()
|
||||||
@@ -870,9 +869,18 @@ function HealBot_GetShapeshiftForm()
|
|||||||
for i=1,forms do
|
for i=1,forms do
|
||||||
local icon,name,active = GetShapeshiftFormInfo(i);
|
local icon,name,active = GetShapeshiftFormInfo(i);
|
||||||
if active then
|
if active then
|
||||||
return i;
|
if icon then
|
||||||
|
local icon_lower = string.lower(icon)
|
||||||
|
-- Exclude non-standard/custom forms like Tree of Life from unshifting
|
||||||
|
if not string.find(icon_lower, "humanoidform") and not string.find(icon_lower, "treeoflife") and not string.find(icon_lower, "healingway") and not string.find(icon_lower, "stoneclawtotem") then
|
||||||
|
return i;
|
||||||
|
end
|
||||||
|
else
|
||||||
|
return i;
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
return nil;
|
return nil;
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -264,11 +264,6 @@ HealBot_ConfigDefaults = {
|
|||||||
|
|
||||||
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 = {};
|
||||||
|
|||||||
+14
-12
@@ -36,22 +36,24 @@ function HealBot_Integrations_Toggle()
|
|||||||
HealBot_NampowerFrame:RegisterEvent("AURA_CAST_ON_OTHER")
|
HealBot_NampowerFrame:RegisterEvent("AURA_CAST_ON_OTHER")
|
||||||
HealBot_NampowerFrame:SetScript("OnEvent", function()
|
HealBot_NampowerFrame:SetScript("OnEvent", function()
|
||||||
if not HealBot_Integrations_Nampower_Active then return end
|
if not HealBot_Integrations_Nampower_Active then return end
|
||||||
local spellID, caster, target, _, _, _, _, duration = arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8
|
if event == "AURA_CAST_ON_SELF" or event == "AURA_CAST_ON_OTHER" then
|
||||||
if not caster or not target or duration <= 0 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")
|
local spellName = GetSpellRecField(spellID, "name")
|
||||||
if not spellName then return end
|
if not spellName then return end
|
||||||
|
|
||||||
if not HealBot_Nampower_Auras[target] then
|
if not HealBot_Nampower_Auras[target] then
|
||||||
HealBot_Nampower_Auras[target] = {}
|
HealBot_Nampower_Auras[target] = {}
|
||||||
end
|
end
|
||||||
|
|
||||||
local expirationTime = GetTime() + (duration / 1000)
|
local expirationTime = GetTime() + (duration / 1000)
|
||||||
HealBot_Nampower_Auras[target][spellName] = expirationTime
|
HealBot_Nampower_Auras[target][spellName] = expirationTime
|
||||||
|
|
||||||
local unitID = HealBot_Model:GetUnitIDByName(target)
|
local unitID = HealBot_Model:GetUnitIDByName(target)
|
||||||
if unitID then
|
if unitID then
|
||||||
HealBot_OnEvent_UnitAura(nil, unitID)
|
HealBot_OnEvent_UnitAura(nil, unitID)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
end
|
end
|
||||||
|
|||||||
+34
-10
@@ -1,6 +1,13 @@
|
|||||||
-- HealBot_Model.lua
|
-- HealBot_Model.lua
|
||||||
-- Centralized Data Store and Observer System for HealBotBlue
|
-- Centralized Data Store and Observer System for HealBotBlue
|
||||||
|
|
||||||
|
local pool_oldGUIDs = {}
|
||||||
|
local pool_newUnitForGUID = {}
|
||||||
|
local pool_stateSwaps = {}
|
||||||
|
local pool_iconSwaps = {}
|
||||||
|
local pool_missingBuffSwaps = {}
|
||||||
|
local pool_debuffSwaps = {}
|
||||||
|
|
||||||
-- Safe local wrappers to prevent native UIDropDownMenu concatenation crashes
|
-- Safe local wrappers to prevent native UIDropDownMenu concatenation crashes
|
||||||
-- when setting selected values on closed dropdowns during initialization.
|
-- when setting selected values on closed dropdowns during initialization.
|
||||||
function HealBot_UIDropDownMenu_SetSelectedID(frame, id, useValue)
|
function HealBot_UIDropDownMenu_SetSelectedID(frame, id, useValue)
|
||||||
@@ -180,14 +187,16 @@ end
|
|||||||
function HealBot_Model:PreserveStateByGUID()
|
function HealBot_Model:PreserveStateByGUID()
|
||||||
if not (HealBot_Integrations_SuperWoW_Active or HealBot_Integrations_ClassicAPI_Active) or not HealBot_GetUnitGUID then return end
|
if not (HealBot_Integrations_SuperWoW_Active or HealBot_Integrations_ClassicAPI_Active) or not HealBot_GetUnitGUID then return end
|
||||||
|
|
||||||
local oldGUIDs = {}
|
for k in pairs(pool_oldGUIDs) do pool_oldGUIDs[k] = nil end
|
||||||
|
local oldGUIDs = pool_oldGUIDs
|
||||||
for unit, guid in pairs(self.unitGUIDs) do
|
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
|
if string.find(unit, "^party") or string.find(unit, "^raid") or unit == "player" or unit == "pet" then
|
||||||
oldGUIDs[unit] = guid
|
oldGUIDs[unit] = guid
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local newUnitForGUID = {}
|
for k in pairs(pool_newUnitForGUID) do pool_newUnitForGUID[k] = nil end
|
||||||
|
local newUnitForGUID = pool_newUnitForGUID
|
||||||
-- Scan the new roster
|
-- Scan the new roster
|
||||||
for _, unit in ipairs(self.partyMembers) do
|
for _, unit in ipairs(self.partyMembers) do
|
||||||
local guid = HealBot_GetUnitGUID(unit)
|
local guid = HealBot_GetUnitGUID(unit)
|
||||||
@@ -206,10 +215,14 @@ function HealBot_Model:PreserveStateByGUID()
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local stateSwaps = {}
|
for k in pairs(pool_stateSwaps) do pool_stateSwaps[k] = nil end
|
||||||
local iconSwaps = {}
|
local stateSwaps = pool_stateSwaps
|
||||||
local missingBuffSwaps = {}
|
for k in pairs(pool_iconSwaps) do pool_iconSwaps[k] = nil end
|
||||||
local debuffSwaps = {}
|
local iconSwaps = pool_iconSwaps
|
||||||
|
for k in pairs(pool_missingBuffSwaps) do pool_missingBuffSwaps[k] = nil end
|
||||||
|
local missingBuffSwaps = pool_missingBuffSwaps
|
||||||
|
for k in pairs(pool_debuffSwaps) do pool_debuffSwaps[k] = nil end
|
||||||
|
local debuffSwaps = pool_debuffSwaps
|
||||||
|
|
||||||
for oldUnit, guid in pairs(oldGUIDs) do
|
for oldUnit, guid in pairs(oldGUIDs) do
|
||||||
local newUnit = newUnitForGUID[guid]
|
local newUnit = newUnitForGUID[guid]
|
||||||
@@ -231,11 +244,22 @@ function HealBot_Model:PreserveStateByGUID()
|
|||||||
|
|
||||||
for targetUnit, stateData in pairs(stateSwaps) do
|
for targetUnit, stateData in pairs(stateSwaps) do
|
||||||
-- Deep copy to prevent memory aliasing
|
-- Deep copy to prevent memory aliasing
|
||||||
self.units[targetUnit] = {}
|
if not self.units[targetUnit] then
|
||||||
for k, v in pairs(stateData) do
|
self.units[targetUnit] = { icons = {} }
|
||||||
self.units[targetUnit][k] = v
|
|
||||||
end
|
end
|
||||||
self.units[targetUnit].icons = {}
|
|
||||||
|
local targetIcons = self.units[targetUnit].icons
|
||||||
|
if not targetIcons then targetIcons = {} end
|
||||||
|
for k in pairs(targetIcons) do targetIcons[k] = nil end
|
||||||
|
|
||||||
|
for k in pairs(self.units[targetUnit]) do self.units[targetUnit][k] = nil end
|
||||||
|
|
||||||
|
for k, v in pairs(stateData) do
|
||||||
|
if k ~= "icons" then
|
||||||
|
self.units[targetUnit][k] = v
|
||||||
|
end
|
||||||
|
end
|
||||||
|
self.units[targetUnit].icons = targetIcons
|
||||||
|
|
||||||
if HealBot_UnitIcons and iconSwaps[targetUnit] then
|
if HealBot_UnitIcons and iconSwaps[targetUnit] then
|
||||||
if not HealBot_UnitIcons[targetUnit] then HealBot_UnitIcons[targetUnit] = {} end
|
if not HealBot_UnitIcons[targetUnit] then HealBot_UnitIcons[targetUnit] = {} end
|
||||||
|
|||||||
+12
-4
@@ -234,10 +234,18 @@ end
|
|||||||
-- HealBot_Options_Defaults_OnClick: UI handler for OnClick options panel.
|
-- 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 = {}
|
||||||
table.foreach(HealBot_ConfigDefaults, function (key,val)
|
local function DeepCopy(src, dest)
|
||||||
HealBot_Config[key] = val;
|
for k, v in pairs(src) do
|
||||||
end);
|
if type(v) == "table" then
|
||||||
|
dest[k] = {}
|
||||||
|
DeepCopy(v, dest[k])
|
||||||
|
else
|
||||||
|
dest[k] = v
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
DeepCopy(HealBot_ConfigDefaults, HealBot_Config)
|
||||||
HealBot_Options_OnShow(HealBot_Options);
|
HealBot_Options_OnShow(HealBot_Options);
|
||||||
HealBot_RecalcSpells();
|
HealBot_RecalcSpells();
|
||||||
HealBot_Action_Reset();
|
HealBot_Action_Reset();
|
||||||
|
|||||||
+7
-25
@@ -45,9 +45,9 @@ function HealBot_WarningSound_OnClick(this,id)
|
|||||||
end
|
end
|
||||||
-- HealBot_Options_CDCMonitor_DropDown: UI handler for DropDown options panel.
|
-- 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_CDCMonitor_List), 1 do
|
for i=1, getn(HealBot_Options_EmergencyFilter_List), 1 do
|
||||||
local info = {};
|
local info = {};
|
||||||
info.text = HealBot_Options_CDCMonitor_List[i];
|
info.text = HealBot_Options_EmergencyFilter_List[i];
|
||||||
info.func = HealBot_Options_CDCMonitor_OnSelect;
|
info.func = HealBot_Options_CDCMonitor_OnSelect;
|
||||||
UIDropDownMenu_AddButton(info);
|
UIDropDownMenu_AddButton(info);
|
||||||
end
|
end
|
||||||
@@ -85,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;
|
||||||
@@ -95,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];
|
||||||
@@ -123,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];
|
||||||
@@ -133,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];
|
||||||
@@ -143,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];
|
||||||
|
|||||||
@@ -102,7 +102,7 @@ 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
|
||||||
|
|||||||
@@ -49,6 +49,11 @@ Default installation path: `C:\Program Files\World of Warcraft\Interface\AddOns\
|
|||||||
|
|
||||||
### Change Log
|
### Change Log
|
||||||
|
|
||||||
|
* **v1.7.1**
|
||||||
|
* **Bug Fix - Shapeshift Auto-Unshift** - Fixed an issue where the shapeshift spell queue would incorrectly pull druids out of Tree of Life form .
|
||||||
|
* **Cleanup** - Removed deprecated `UPDATE_SHAPESHIFT_FORM` event listeners and `HealBot_UpdateShapeshiftForm` function to save CPU cycles.
|
||||||
|
|
||||||
|
|
||||||
**v1.7.0**
|
**v1.7.0**
|
||||||
* **Feature - Raid Marks** - Added tracking and display of raid marks on unit frames.
|
* **Feature - Raid Marks** - Added tracking and display of raid marks on unit frames.
|
||||||
* **External Addon Integrations** - Added a new 'Extras' tab in Options to optionally enable integrations with `UnitXP_SP3` (for ultra-precise 3D range and Line of Sight checks), `nampower` (for accurate real-time heal/buff tracking), `SuperWoW` (for robust GUID-based state tracking), and `ClassicAPI` (for native +Healing bonuses and fast 3D distance checks).
|
* **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).
|
||||||
|
|||||||
Reference in New Issue
Block a user