diff --git a/HealBot_Controller_Aura.lua b/HealBot_Controller_Aura.lua
index 9dee3c1..29f9d75 100644
--- a/HealBot_Controller_Aura.lua
+++ b/HealBot_Controller_Aura.lua
@@ -33,9 +33,32 @@ end
function HealBot_CheckShamanWeaponBuff(spellName)
local hasMainHandEnchant, _, _, hasOffHandEnchant = GetWeaponEnchantInfo()
- if hasMainHandEnchant or hasOffHandEnchant then
- return true
+ if not (hasMainHandEnchant or hasOffHandEnchant) then return false end
+
+ local firstWord = string.match(spellName, "^(%w+)")
+ if not firstWord then return false end
+
+ HealBot_ScanTooltip:SetOwner(UIParent, "ANCHOR_NONE")
+ local slots = {}
+ 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()
+ return true
+ end
+ end
+ end
end
+
+ HealBot_ScanTooltip:Hide()
return false
end
@@ -104,7 +127,7 @@ function HealBot_CheckBuffs(unit)
end
if not hasIt then
- if myClass == "SHAMAN" and UnitIsUnit(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)
end
end
diff --git a/HealBot_Localization.en.lua b/HealBot_Localization.en.lua
index 8afa9ab..cf44909 100644
--- a/HealBot_Localization.en.lua
+++ b/HealBot_Localization.en.lua
@@ -320,13 +320,14 @@ HEALBOT_OPTIONS_SOUND2 = "Sound 2"
HEALBOT_OPTIONS_SOUND3 = "Sound 3"
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_LABEL = "Group Only";
HEALBOT_OPTIONS_TANKHEALS = "Main tanks";
HEALBOT_OPTIONS_TARGETHEALS = "Targets";
-HEALBOT_OPTIONS_EMERGENCYHEALS= "Raid / Extra";
+HEALBOT_OPTIONS_EMERGENCYHEALS= "Raid";
+HEALBOT_OPTIONS_PETHEALS = "Pets";
HEALBOT_OPTIONS_HEALLEVEL = "Healing Level";
HEALBOT_OPTIONS_ALERTLEVEL = "Alert Level";
HEALBOT_OPTIONS_OVERHEAL = "Show Abort button when overhealing"
diff --git a/HealBot_Options.lua b/HealBot_Options.lua
index 9a974cc..7c49722 100644
--- a/HealBot_Options.lua
+++ b/HealBot_Options.lua
@@ -7,18 +7,7 @@ HealBot_Options_CurrentPanel = 0;
HealBot_ColourObjWaiting = nil
HealBot_Options_EmergencyFilter_List = {
- HEALBOT_OPTIONS_MONITORNO,
HEALBOT_OPTIONS_MONITORALL,
- HEALBOT_DRUID,
- HEALBOT_HUNTER,
- HEALBOT_MAGE,
- HEALBOT_PALADIN,
- HEALBOT_PRIEST,
- HEALBOT_ROGUE,
- HEALBOT_SHAMAN,
- HEALBOT_WARLOCK,
- HEALBOT_WARRIOR,
- HEALBOT_OPTIONS_PETS,
HEALBOT_OPTIONS_MONITORMELEE,
HEALBOT_OPTIONS_MONITORRANGE,
HEALBOT_OPTIONS_MONITORHEALERS,
diff --git a/HealBot_Options_Healing.lua b/HealBot_Options_Healing.lua
index ce20d92..772f17b 100644
--- a/HealBot_Options_Healing.lua
+++ b/HealBot_Options_Healing.lua
@@ -33,6 +33,14 @@ function HealBot_Options_EmergencyHeals_OnClick(this)
HealBot_Config.EmergencyHeals = this:GetChecked() or 0;
HealBot_RecalcParty();
end
+function HealBot_Options_PetHeals_OnLoad(this,text)
+ this.text = text
+ getglobal(this:GetName().."Text"):SetText(text);
+end
+function HealBot_Options_PetHeals_OnClick(this)
+ HealBot_Config.PetHeals = this:GetChecked() or 0;
+ HealBot_RecalcParty();
+end
function HealBot_Options_OverHeal_OnValueChanged(this)
HealBot_Config.OverHeal = HealBot_Options_Pct_OnValueChanged(this);
end
@@ -279,7 +287,7 @@ function HealBot_Options_EmergencyFilter_Reset()
HealBot_EmergInc[HEALBOT_SHAMAN] = 0;
HealBot_EmergInc[HEALBOT_WARLOCK] = 0;
HealBot_EmergInc[HEALBOT_WARRIOR] = 0;
- if HealBot_Config.EmergIncMonitor==2 then
+ if HealBot_Config.EmergIncMonitor==1 then
HealBot_EmergInc[HEALBOT_DRUID] = 1;
HealBot_EmergInc[HEALBOT_HUNTER] = 1;
HealBot_EmergInc[HEALBOT_MAGE] = 1;
@@ -289,27 +297,7 @@ function HealBot_Options_EmergencyFilter_Reset()
HealBot_EmergInc[HEALBOT_SHAMAN] = 1;
HealBot_EmergInc[HEALBOT_WARLOCK] = 1;
HealBot_EmergInc[HEALBOT_WARRIOR] = 1;
- elseif HealBot_Config.EmergIncMonitor==3 then
- HealBot_EmergInc[HEALBOT_DRUID] = 1;
- elseif HealBot_Config.EmergIncMonitor==4 then
- HealBot_EmergInc[HEALBOT_HUNTER] = 1;
- elseif HealBot_Config.EmergIncMonitor==5 then
- HealBot_EmergInc[HEALBOT_MAGE] = 1;
- elseif HealBot_Config.EmergIncMonitor==6 then
- HealBot_EmergInc[HEALBOT_PALADIN] = 1;
- elseif HealBot_Config.EmergIncMonitor==7 then
- HealBot_EmergInc[HEALBOT_PRIEST] = 1;
- elseif HealBot_Config.EmergIncMonitor==8 then
- HealBot_EmergInc[HEALBOT_ROGUE] = 1;
- elseif HealBot_Config.EmergIncMonitor==9 then
- HealBot_EmergInc[HEALBOT_SHAMAN] = 1;
- elseif HealBot_Config.EmergIncMonitor==10 then
- HealBot_EmergInc[HEALBOT_WARLOCK] = 1;
- elseif HealBot_Config.EmergIncMonitor==11 then
- HealBot_EmergInc[HEALBOT_WARRIOR] = 1;
- elseif HealBot_Config.EmergIncMonitor==12 then
- -- Pets: no player classes enabled (handled separately in layout)
- elseif HealBot_Config.EmergIncMonitor==13 then
+ elseif HealBot_Config.EmergIncMonitor==2 then
HealBot_EmergInc[HEALBOT_DRUID] = HealBot_Config.EmergIncMelee[HEALBOT_DRUID];
HealBot_EmergInc[HEALBOT_HUNTER] = HealBot_Config.EmergIncMelee[HEALBOT_HUNTER];
HealBot_EmergInc[HEALBOT_MAGE] = HealBot_Config.EmergIncMelee[HEALBOT_MAGE];
@@ -319,7 +307,7 @@ function HealBot_Options_EmergencyFilter_Reset()
HealBot_EmergInc[HEALBOT_SHAMAN] = HealBot_Config.EmergIncMelee[HEALBOT_SHAMAN];
HealBot_EmergInc[HEALBOT_WARLOCK] = HealBot_Config.EmergIncMelee[HEALBOT_WARLOCK];
HealBot_EmergInc[HEALBOT_WARRIOR] = HealBot_Config.EmergIncMelee[HEALBOT_WARRIOR];
- elseif HealBot_Config.EmergIncMonitor==14 then
+ elseif HealBot_Config.EmergIncMonitor==3 then
HealBot_EmergInc[HEALBOT_DRUID] = HealBot_Config.EmergIncRange[HEALBOT_DRUID];
HealBot_EmergInc[HEALBOT_HUNTER] = HealBot_Config.EmergIncRange[HEALBOT_HUNTER];
HealBot_EmergInc[HEALBOT_MAGE] = HealBot_Config.EmergIncRange[HEALBOT_MAGE];
@@ -329,7 +317,7 @@ function HealBot_Options_EmergencyFilter_Reset()
HealBot_EmergInc[HEALBOT_SHAMAN] = HealBot_Config.EmergIncRange[HEALBOT_SHAMAN];
HealBot_EmergInc[HEALBOT_WARLOCK] = HealBot_Config.EmergIncRange[HEALBOT_WARLOCK];
HealBot_EmergInc[HEALBOT_WARRIOR] = HealBot_Config.EmergIncRange[HEALBOT_WARRIOR];
- elseif HealBot_Config.EmergIncMonitor==15 then
+ elseif HealBot_Config.EmergIncMonitor==4 then
HealBot_EmergInc[HEALBOT_DRUID] = HealBot_Config.EmergIncHealers[HEALBOT_DRUID];
HealBot_EmergInc[HEALBOT_HUNTER] = HealBot_Config.EmergIncHealers[HEALBOT_HUNTER];
HealBot_EmergInc[HEALBOT_MAGE] = HealBot_Config.EmergIncHealers[HEALBOT_MAGE];
@@ -339,7 +327,7 @@ function HealBot_Options_EmergencyFilter_Reset()
HealBot_EmergInc[HEALBOT_SHAMAN] = HealBot_Config.EmergIncHealers[HEALBOT_SHAMAN];
HealBot_EmergInc[HEALBOT_WARLOCK] = HealBot_Config.EmergIncHealers[HEALBOT_WARLOCK];
HealBot_EmergInc[HEALBOT_WARRIOR] = HealBot_Config.EmergIncHealers[HEALBOT_WARRIOR];
- elseif HealBot_Config.EmergIncMonitor==16 then
+ elseif HealBot_Config.EmergIncMonitor==5 then
HealBot_EmergInc[HEALBOT_DRUID] = HealBot_Config.EmergIncCustom[HEALBOT_DRUID];
HealBot_EmergInc[HEALBOT_HUNTER] = HealBot_Config.EmergIncCustom[HEALBOT_HUNTER];
HealBot_EmergInc[HEALBOT_MAGE] = HealBot_Config.EmergIncCustom[HEALBOT_MAGE];
diff --git a/HealBot_Options_Healing.xml b/HealBot_Options_Healing.xml
index ef1d845..18d0a13 100644
--- a/HealBot_Options_Healing.xml
+++ b/HealBot_Options_Healing.xml
@@ -95,6 +95,19 @@
HealBot_Options_EmergencyHeals_OnClick(this)
+
+
+
+
+
+
+
+
+
+ HealBot_Options_PetHeals_OnLoad(this,HEALBOT_OPTIONS_PETHEALS)
+ HealBot_Options_PetHeals_OnClick(this)
+
+
diff --git a/HealBot_View_Layout.lua b/HealBot_View_Layout.lua
index 5e85306..76c56e7 100644
--- a/HealBot_View_Layout.lua
+++ b/HealBot_View_Layout.lua
@@ -602,7 +602,7 @@ function HealBot_Action_PartyChanged()
numBars = numBars + 1;
numHeaders = numHeaders + 1;
end
- if HealBot_Config.EmergIncMonitor == 2 then
+ if HealBot_Config.EmergIncMonitor == 1 then
if GetNumRaidMembers() > 0 then
for j = 1, 40 do
local PossibleEmerg = 1;
@@ -653,50 +653,7 @@ function HealBot_Action_PartyChanged()
end
end
end
- elseif HealBot_Config.EmergIncMonitor == 12 then
- if GetNumRaidMembers() > 0 then
- for j = 1, 40 do
- local unit = "raidpet" .. j;
- if not HealBot_Action_UnitButtons[unit] and HealBot_MayHeal(unit) then
- local ownerIndex = j;
- local name = UnitName(unit) or "Pet";
- local _, _, subgroup = GetRaidRosterInfo(ownerIndex);
- subgroup = subgroup or 1;
-
- if HealBot_Config.ExtraOrder == 1 then
- order[unit] = name;
- elseif HealBot_Config.ExtraOrder == 2 then
- order[unit] = HEALBOT_OPTIONS_PETS;
- elseif HealBot_Config.ExtraOrder == 3 then
- order[unit] = subgroup;
- else
- order[unit] = 0 - UnitHealthMax(unit);
- if UnitHealthMax(unit) > TempMaxH then TempMaxH = UnitHealthMax(unit); end
- end
- table.insert(units, unit);
- numBars = numBars + 1;
- 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
- local name = UnitName(unit) or "Pet";
- if HealBot_Config.ExtraOrder == 1 then
- order[unit] = name;
- elseif HealBot_Config.ExtraOrder == 2 then
- order[unit] = HEALBOT_OPTIONS_PETS;
- elseif HealBot_Config.ExtraOrder == 3 then
- order[unit] = 1;
- else
- order[unit] = 0 - UnitHealthMax(unit);
- if UnitHealthMax(unit) > TempMaxH then TempMaxH = UnitHealthMax(unit); end
- end
- table.insert(units, unit);
- numBars = numBars + 1;
- end
- end
- end
+
else
if GetNumRaidMembers() > 0 then
for j = 1, 40 do
@@ -763,25 +720,29 @@ function HealBot_Action_PartyChanged()
local TempSort = "init"
TempMaxH = math.ceil(TempMaxH / 1000) * 1000;
- if GetNumRaidMembers() > 0 or HealBot_Config.EmergIncMonitor == 12 then
- for j = 1, 40 do
- if not units[j] then break end
- local name, rank, subgroup, level, class, fileName, zone, online, isDead;
- 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);
- 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
+ for j = 1, 40 do
+ if not units[j] then break end
+ local name, rank, subgroup, level, class, fileName, zone, online, isDead;
+ 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
TempSort = class
@@ -805,12 +766,47 @@ function HealBot_Action_PartyChanged()
HealBot_Action_SetHealButton(i, units[j]);
if i == last then break end
end
- end
end
if numBars == ExtraValid + 1 and HealBot_Config.ShowHeader[HealBot_Config.Current_Skin] == 1 then
HeaderPos[i + 1] = nil;
numBars = numBars - 1;
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
+ end
+ if numBars == PetsValid + 1 and HealBot_Config.ShowHeader[HealBot_Config.Current_Skin] == 1 then
+ HeaderPos[PetsValid + 1] = nil;
+ numBars = numBars - 1;
+ numHeaders = numHeaders - 1;
+ end
local bpadding = (HealBot_Config.bpadding and HealBot_Config.bpadding[HealBot_Config.Current_Skin]) or 10
local OffsetY = bpadding;
@@ -1096,7 +1092,11 @@ function HealBot_Action_AppendNewUnits()
if CT_RA_MainTanks[j] then
for k = 1, GetNumRaidMembers() do
local unit = "raid" .. k
- if UnitName(unit) == CT_RA_MainTanks[j] then
+ 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
@@ -1114,7 +1114,10 @@ function HealBot_Action_AppendNewUnits()
if HealBot_Config.EmergencyHeals == 1 then
if GetNumRaidMembers() > 0 then
for j = 1, 40 do
- table.insert(unitsToCheck, "raid" .. j)
+ 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
diff --git a/README.md b/README.md
index 16f025b..9220c21 100644
--- a/README.md
+++ b/README.md
@@ -49,6 +49,10 @@ Default installation path: `C:\Program Files\World of Warcraft\Interface\AddOns\
### Change Log
+**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**
* **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.
diff --git a/Talents.md b/Talents.md
deleted file mode 100644
index 583181a..0000000
--- a/Talents.md
+++ /dev/null
@@ -1,40 +0,0 @@
-Druid:
-Name - Rank - Effect
-Genesis - 1 - increase damage and healing of periodic spells by 5%
-Genesis - 2 - increase damage and healing of periodic spells by 10%
-Genesis - 3 -increase damage and healing of periodic spells by 15%
-
-Gift of Nature - 1- Increases effectivenes of all healing spells by 2%
-Gift of Nature - 2- Increases effectivenes of all healing spells by 4%
-Gift of Nature - 3- Increases effectivenes of all healing spells by 6%
-Gift of Nature - 4- Increases effectivenes of all healing spells by 8%
-Gift of Nature - 5- Increases effectivenes of all healing spells by 10%
-
-Preservation - 1 - Increases the periodic healing of Regrowth by 10% if target is affected by Rejuvenation
-Preservation - 2 - Increases the periodic healing of Regrowth by 20% if target is affected by Rejuvenation
-Preservation - 3 - Increases the periodic healing of Regrowth by 30% if target is affected by Rejuvenation
-
-Paladin:
-
-Healing Light - 1 - Increases the amount of healed by Holy Light, Flash of Light and Holy Shock by 4%
-Healing Light - 2 - Increases the amount of healed by Holy Light, Flash of Light and Holy Shock by 8%
-Healing Light - 3 - Increases the amount of healed by Holy Light, Flash of Light and Holy Shock by 12%
-
-Ironclad - 1 - Improves healing done by 1% of current armour from items
-Ironclad - 2 - Improves healing done by 2% of current armour from items
-
-Priest:
-
-Improved Renew - 1 - Improves amount healed by renew by 5%
-Improved Renew - 2 - Improves amount healed by renew by 10%
-Improved Renew - 3 - Improves amount healed by renew by 15%
-
-Spiritual Healing - 1 - Improves amount healed by all healing spells by 6%
-Spiritual Healing - 2 - Improves amount healed by all healing spells by 12%
-Spiritual Healing - 3 - Improves amount healed by all healing spells by 18%
-Spiritual Healing - 4 - Improves amount healed by all healing spells by 24%
-Spiritual Healing - 5 - Improves amount healed by all healing spells by 30%
-
-Shaman:
-
-none
\ No newline at end of file