mirror of
https://github.com/Bluewhale1337/HealBotBlue.git
synced 2026-07-27 09:44:44 +00:00
Compare commits
68 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 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 | |||
| dc50c9797f | |||
| dd7fcaf082 | |||
| b77c4d73c6 | |||
| e567c0f394 | |||
| b8b6a57ef8 | |||
| 3ae3f26f77 | |||
| 786e5d66df | |||
| 63fc88b006 | |||
| 03634b37e4 | |||
| dd9cfc301a |
+50
-1428
File diff suppressed because it is too large
Load Diff
+1
-1
@@ -18,7 +18,7 @@
|
||||
<FontString name="$parent_text" inherits="GameFontNormalSmall">
|
||||
<Anchors>
|
||||
<Anchor point="CENTER">
|
||||
<Offset> <AbsDimension y="1"/> </Offset>
|
||||
<Offset> <AbsDimension y="0"/> </Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
|
||||
+17
-2
@@ -1,15 +1,30 @@
|
||||
## Interface: 11200
|
||||
## Title: HealBotBlue
|
||||
## Version: 1.2.2
|
||||
## Version: 1.6.0
|
||||
## Author: Bluewhale
|
||||
## Notes: Adds panel with skinable bars for healing and decursive
|
||||
## SavedVariables: HealBot_Config
|
||||
## SavedVariablesPerCharacter: HealBot_Config
|
||||
..\..\FrameXML\Fonts.xml
|
||||
..\..\FrameXML\OptionsFrameTemplates.xml
|
||||
..\..\FrameXML\UIPanelTemplates.xml
|
||||
..\..\FrameXML\UIDropDownMenu.xml
|
||||
HealBot_Error.xml
|
||||
HealBot_Model.lua
|
||||
HealBot_Controller_Range.lua
|
||||
HealBot_Controller_Comms.lua
|
||||
HealBot_Controller_Aura.lua
|
||||
HealBot_Controller_Spells.lua
|
||||
HealBot_Controller_Events.lua
|
||||
HealBot.xml
|
||||
HealBot_View_Layout.lua
|
||||
HealBot_View_Tooltip.lua
|
||||
HealBot_Action.xml
|
||||
HealBot_Options.xml
|
||||
HealBot_Options_General.xml
|
||||
HealBot_Options_Spells.xml
|
||||
HealBot_Options_Healing.xml
|
||||
HealBot_Options_CDC.xml
|
||||
HealBot_Options_Skins.xml
|
||||
HealBot_Options_Buffs.xml
|
||||
HealBot_Options_Chat.xml
|
||||
HealBot_Options_Auto.xml
|
||||
|
||||
+158
-1055
File diff suppressed because it is too large
Load Diff
+14
-14
@@ -6,9 +6,9 @@
|
||||
-- http://www.curse-gaming.com/mod.php?addid=2384
|
||||
--------------------------------------------------
|
||||
|
||||
HB_BONUSSCANNER_PATTERN_SETNAME = "^(.*) %(%d/%d%)$";
|
||||
HB_BONUSSCANNER_PATTERN_GENERIC_PREFIX = "^%+(%d+)%%?(.*)$";
|
||||
HB_BONUSSCANNER_PATTERN_GENERIC_SUFFIX = "^(.*)%+(%d+)%%?$";
|
||||
HEALBOT_BONUSSCANNER_PATTERN_SETNAME = "^(.*) %(%d/%d%)$";
|
||||
HEALBOT_BONUSSCANNER_PATTERN_GENERIC_PREFIX = "^%+(%d+)%%?(.*)$";
|
||||
HEALBOT_BONUSSCANNER_PATTERN_GENERIC_SUFFIX = "^(.*)%+(%d+)%%?$";
|
||||
|
||||
HealBot_BonusScanner = {
|
||||
bonuses = 0;
|
||||
@@ -128,17 +128,17 @@ end;
|
||||
|
||||
function HealBot_BonusScanner:ScanLine(line)
|
||||
local tmpStr, found;
|
||||
if(string.sub(line,0,string.len(HB_BONUSSCANNER_PREFIX_EQUIP)) == HB_BONUSSCANNER_PREFIX_EQUIP) then
|
||||
tmpStr = string.sub(line,string.len(HB_BONUSSCANNER_PREFIX_EQUIP)+1);
|
||||
if(string.sub(line,0,string.len(HEALBOT_BONUSSCANNER_PREFIX_EQUIP)) == HEALBOT_BONUSSCANNER_PREFIX_EQUIP) then
|
||||
tmpStr = string.sub(line,string.len(HEALBOT_BONUSSCANNER_PREFIX_EQUIP)+1);
|
||||
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 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:CheckPassive(tmpStr);
|
||||
else
|
||||
_, _, tmpStr = string.find(line, HB_BONUSSCANNER_PATTERN_SETNAME);
|
||||
_, _, tmpStr = string.find(line, HEALBOT_BONUSSCANNER_PATTERN_SETNAME);
|
||||
if(tmpStr) then
|
||||
HealBot_BonusScanner.temp.set = tmpStr;
|
||||
else
|
||||
@@ -154,7 +154,7 @@ function HealBot_BonusScanner:CheckPassive(line)
|
||||
local i, p, value, found;
|
||||
|
||||
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);
|
||||
if(value) then
|
||||
HealBot_BonusScanner:AddValue(p.effect, value)
|
||||
@@ -183,9 +183,9 @@ function HealBot_BonusScanner:CheckGeneric(line)
|
||||
tmpStr = string.gsub( tmpStr, "%s+$", "" );
|
||||
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
|
||||
_, _, token, value = string.find(tmpStr, HB_BONUSSCANNER_PATTERN_GENERIC_SUFFIX);
|
||||
_, _, token, value = string.find(tmpStr, HEALBOT_BONUSSCANNER_PATTERN_GENERIC_SUFFIX);
|
||||
end
|
||||
if(token and value) then
|
||||
token = string.gsub( token, "^%s+", "" );
|
||||
@@ -202,8 +202,8 @@ end
|
||||
function HealBot_BonusScanner:CheckToken(token, value)
|
||||
local i, p, s1, s2;
|
||||
|
||||
if(HB_BONUSSCANNER_PATTERNS_GENERIC_LOOKUP[token]) then
|
||||
HealBot_BonusScanner:AddValue(HB_BONUSSCANNER_PATTERNS_GENERIC_LOOKUP[token], value);
|
||||
if(HEALBOT_BONUSSCANNER_PATTERNS_GENERIC_LOOKUP[token]) then
|
||||
HealBot_BonusScanner:AddValue(HEALBOT_BONUSSCANNER_PATTERNS_GENERIC_LOOKUP[token], value);
|
||||
return true;
|
||||
end
|
||||
return false;
|
||||
@@ -212,7 +212,7 @@ end
|
||||
function HealBot_BonusScanner:CheckOther(line)
|
||||
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);
|
||||
if(start) then
|
||||
if(p.value) then
|
||||
|
||||
@@ -0,0 +1,203 @@
|
||||
-- HealBot_Controller_Aura.lua
|
||||
-- Handles tracking buffs/debuffs (auras) on group/raid units
|
||||
|
||||
HealBot_MissingBuffs = {}
|
||||
local StaticHasBuff = {}
|
||||
|
||||
function HealBot_UnitAffected(unit, effect)
|
||||
if not effect then return nil; end
|
||||
local i = 1
|
||||
while true do
|
||||
local buff = UnitBuff(unit, i)
|
||||
if not buff then
|
||||
break
|
||||
end
|
||||
if buff == effect then
|
||||
return buff
|
||||
end
|
||||
i = i + 1
|
||||
end
|
||||
i = 1
|
||||
while true do
|
||||
local debuff = UnitDebuff(unit, i)
|
||||
if not debuff then
|
||||
break
|
||||
end
|
||||
if debuff == effect then
|
||||
return debuff
|
||||
end
|
||||
i = i + 1
|
||||
end
|
||||
return nil;
|
||||
end
|
||||
|
||||
function HealBot_CheckShamanWeaponBuff(spellName)
|
||||
local hasMainHandEnchant, _, _, hasOffHandEnchant = GetWeaponEnchantInfo()
|
||||
if hasMainHandEnchant or hasOffHandEnchant then
|
||||
return true
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
function HealBot_CheckBuffs(unit)
|
||||
if HealBot_Config.BuffWatch ~= 1 then
|
||||
HealBot_MissingBuffs[unit] = nil
|
||||
return
|
||||
end
|
||||
|
||||
local inCombat = UnitAffectingCombat("player") or UnitAffectingCombat(unit)
|
||||
if inCombat and HealBot_Config.BuffWatchInCombat ~= 1 then
|
||||
HealBot_MissingBuffs[unit] = nil
|
||||
return
|
||||
end
|
||||
|
||||
local myClass = UnitClass("player")
|
||||
if not HealBot_Buff_Spells[myClass] then return end
|
||||
|
||||
if UnitIsDeadOrGhost(unit) or not UnitIsConnected(unit) then
|
||||
HealBot_MissingBuffs[unit] = nil
|
||||
return
|
||||
end
|
||||
|
||||
-- Group Buff Equivalents
|
||||
local HealBot_Buff_Equivalents = {
|
||||
[HEALBOT_POWER_WORD_FORTITUDE] = HEALBOT_PRAYER_OF_FORTITUDE,
|
||||
[HEALBOT_DIVINE_SPIRIT] = HEALBOT_PRAYER_OF_SPIRIT,
|
||||
[HEALBOT_SHADOW_PROTECTION] = HEALBOT_PRAYER_OF_SHADOW_PROTECTION,
|
||||
[HEALBOT_ARCANE_INTELLECT] = HEALBOT_ARCANE_BRILLIANCE,
|
||||
[HEALBOT_MARK_OF_THE_WILD] = HEALBOT_GIFT_OF_THE_WILD,
|
||||
}
|
||||
|
||||
-- Gather buffs on unit
|
||||
local hasBuff = StaticHasBuff
|
||||
for k in pairs(hasBuff) do
|
||||
hasBuff[k] = nil
|
||||
end
|
||||
local i = 1
|
||||
while true do
|
||||
local buffTexture = UnitBuff(unit, i)
|
||||
if not buffTexture then break end
|
||||
HealBot_ScanTooltip:SetOwner(UIParent, "ANCHOR_NONE")
|
||||
HealBot_ScanTooltip:ClearLines()
|
||||
HealBot_ScanTooltip:SetUnitBuff(unit, i)
|
||||
local buffName = HealBot_ScanTooltipTextLeft1:GetText()
|
||||
if buffName then
|
||||
hasBuff[buffName] = true
|
||||
end
|
||||
i = i + 1
|
||||
end
|
||||
HealBot_ScanTooltip:Hide()
|
||||
|
||||
HealBot_MissingBuffs[unit] = nil
|
||||
|
||||
if HealBot_Config.BuffDropDowns and HealBot_Config.BuffDropDowns[myClass] then
|
||||
for j = 1, 8 do
|
||||
local val = HealBot_Config.BuffDropDowns[myClass][j]
|
||||
if val and val > 0 then
|
||||
local isSelfOnly = (HealBot_Config.BuffWatchSelf and HealBot_Config.BuffWatchSelf[j] == 1)
|
||||
if not (isSelfOnly and not UnitIsUnit(unit, "player")) then
|
||||
local spellName = HealBot_Buff_Spells[myClass][val]
|
||||
|
||||
local hasIt = hasBuff[spellName]
|
||||
if not hasIt and HealBot_Buff_Equivalents[spellName] then
|
||||
hasIt = hasBuff[HealBot_Buff_Equivalents[spellName]]
|
||||
end
|
||||
|
||||
if not hasIt then
|
||||
if myClass == "SHAMAN" and UnitIsUnit(unit, "player") and string.find(spellName, " Weapon") then
|
||||
hasIt = HealBot_CheckShamanWeaponBuff(spellName)
|
||||
end
|
||||
end
|
||||
|
||||
if not hasIt then
|
||||
HealBot_MissingBuffs[unit] = spellName
|
||||
break
|
||||
end
|
||||
end
|
||||
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,
|
||||
}
|
||||
|
||||
function HealBot_OnEvent_UnitAura(this, unit)
|
||||
local DebuffType;
|
||||
|
||||
if HealBot_Heals[unit] and unit ~= "target" then
|
||||
if not HealBot_UnitIcons[unit] then
|
||||
HealBot_UnitIcons[unit] = {}
|
||||
end
|
||||
for j = 1, 5 do
|
||||
HealBot_UnitIcons[unit][j] = nil
|
||||
end
|
||||
local iconCount = 0
|
||||
local i = 1;
|
||||
while true do
|
||||
local debuff, tmp, debuff_type = UnitDebuff(unit, i, 1)
|
||||
if debuff then
|
||||
if iconCount < 5 then
|
||||
iconCount = iconCount + 1
|
||||
HealBot_UnitIcons[unit][iconCount] = debuff
|
||||
end
|
||||
if HealBot_CDCInc[UnitClass(unit)] == 1 and HealBot_DebuffWatch[debuff_type] then
|
||||
HealBot_UnitDebuff[unit] = debuff_type
|
||||
DebuffType = debuff_type;
|
||||
if HealBot_DebuffPriority[debuff_type] then
|
||||
break
|
||||
end
|
||||
end
|
||||
i = i + 1;
|
||||
else
|
||||
if i == 1 then HealBot_UnitDebuff[unit] = nil; end
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
local b = 1
|
||||
while true do
|
||||
local buff = UnitBuff(unit, b)
|
||||
if not buff then break end
|
||||
if HealBot_TrackedHoTs[buff] and iconCount < 5 then
|
||||
iconCount = iconCount + 1
|
||||
HealBot_UnitIcons[unit][iconCount] = buff
|
||||
end
|
||||
b = b + 1
|
||||
end
|
||||
|
||||
local d = 1
|
||||
while true do
|
||||
local debuff = UnitDebuff(unit, d)
|
||||
if not debuff then break end
|
||||
if HealBot_TrackedHoTs[debuff] and iconCount < 5 then
|
||||
iconCount = iconCount + 1
|
||||
HealBot_UnitIcons[unit][iconCount] = debuff
|
||||
end
|
||||
d = d + 1
|
||||
end
|
||||
|
||||
if HealBot_UnitDebuff[unit] then
|
||||
if DebuffType and HealBot_Range_Check(unit, 27) == 1 then
|
||||
if HealBot_Config.ShowDebuffWarning == 1 then
|
||||
UIErrorsFrame:AddMessage(UnitName(unit) .. " suffers from " .. DebuffType,
|
||||
HealBot_Config.CDCBarColour[DebuffType].R,
|
||||
HealBot_Config.CDCBarColour[DebuffType].G,
|
||||
HealBot_Config.CDCBarColour[DebuffType].B,
|
||||
1, UIERRORS_HOLD_TIME);
|
||||
end
|
||||
if HealBot_Config.SoundDebuffWarning == 1 then HealBot_PlaySound(HealBot_Config.SoundDebuffPlay); end
|
||||
end
|
||||
end
|
||||
HealBot_CheckBuffs(unit);
|
||||
HealBot_RecalcHeals(unit);
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,115 @@
|
||||
-- HealBot_Controller_Comms.lua
|
||||
-- Handles network sync (addon messaging), errors, and chat debugging
|
||||
|
||||
function HealBot_Get_DebugChan()
|
||||
local index = GetChannelName("HBmsg");
|
||||
if (index > 0) then
|
||||
return index;
|
||||
else
|
||||
return nil;
|
||||
end
|
||||
end
|
||||
|
||||
function HealBot_AddChat(msg)
|
||||
local chanid = HealBot_Get_DebugChan();
|
||||
if chanid and HealBot_SpamCnt < 3 then
|
||||
HealBot_SpamCnt = HealBot_SpamCnt + 1;
|
||||
local hour, minute = GetGameTime();
|
||||
if minute == 0 then
|
||||
msg = "[" .. hour .. ":00] " .. msg;
|
||||
elseif minute < 10 then
|
||||
msg = "[" .. hour .. ":0" .. minute .. "] " .. msg;
|
||||
else
|
||||
msg = "[" .. hour .. ":" .. minute .. "] " .. msg;
|
||||
end
|
||||
SendChatMessage(msg, "CHANNEL", nil, chanid);
|
||||
elseif ( DEFAULT_CHAT_FRAME ) then
|
||||
DEFAULT_CHAT_FRAME:AddMessage(msg);
|
||||
end
|
||||
end
|
||||
|
||||
function HealBot_AddDebug(msg)
|
||||
local chanid = HealBot_Get_DebugChan();
|
||||
if chanid and HealBot_SpamCnt < 3 then
|
||||
HealBot_SpamCnt = HealBot_SpamCnt + 1;
|
||||
local hour, minute = GetGameTime();
|
||||
if minute == 0 then
|
||||
msg = "[" .. hour .. ":00] DEBUG: " .. msg;
|
||||
elseif minute < 10 then
|
||||
msg = "[" .. hour .. ":0" .. minute .. "] DEBUG: " .. msg;
|
||||
else
|
||||
msg = "[" .. hour .. ":" .. minute .. "] DEBUG: " .. msg;
|
||||
end
|
||||
SendChatMessage(msg, "CHANNEL", nil, chanid);
|
||||
end
|
||||
end
|
||||
|
||||
function HealBot_Report_Error(msg)
|
||||
if HealBot_ErrorCnt < 28 then
|
||||
HealBot_ErrorCnt = HealBot_ErrorCnt + 1;
|
||||
ShowUIPanel(HealBot_Error);
|
||||
HealBot_ErrorsIn(msg, HealBot_ErrorCnt);
|
||||
end
|
||||
end
|
||||
|
||||
function HealBot_AddError(msg)
|
||||
UIErrorsFrame:AddMessage(msg, 1.0, 1.0, 1.0, 1.0, UIERRORS_HOLD_TIME);
|
||||
HealBot_AddDebug(msg);
|
||||
end
|
||||
|
||||
function HealBot_SendAddonMessage(prefix, text)
|
||||
if GetNumRaidMembers() > 0 then
|
||||
SendAddonMessage(prefix, text, "RAID")
|
||||
elseif GetNumPartyMembers() > 0 then
|
||||
SendAddonMessage(prefix, text, "PARTY")
|
||||
end
|
||||
end
|
||||
|
||||
function HealBot_OnEvent_AddonMsg(this, addon_id, inc_msg, dist_target, sender_id)
|
||||
if addon_id == HEALBOT_ADDON_ID then
|
||||
local tmpTest, unitname, heal_val
|
||||
tmpTest, tmpTest, unitname, heal_val = string.find(inc_msg, ">> (%a+) <<=>> (.%d+) <<" );
|
||||
if heal_val then
|
||||
if sender_id == UnitName("player") then return end
|
||||
if not HealBot_HealsIn[unitname] then
|
||||
HealBot_HealsIn[unitname] = 0;
|
||||
end
|
||||
HealBot_Healers[sender_id] = ">> " .. unitname .. " <<=>> " .. heal_val .. " <<";
|
||||
HealBot_HealsIn[unitname] = HealBot_HealsIn[unitname] + tonumber(heal_val);
|
||||
if tonumber(heal_val) > 0 then
|
||||
HealBot_RecalcHeals(HealBot_FindUnitID(unitname))
|
||||
elseif HealBot_HealsIn[unitname] < 0 then
|
||||
HealBot_HealsIn[unitname] = 0;
|
||||
end
|
||||
end
|
||||
elseif addon_id == "HealBot" then
|
||||
local tmpTest, datatype, datamsg, sender
|
||||
local PName = UnitName("player");
|
||||
tmpTest, tmpTest, datatype, sender, datamsg = string.find(inc_msg, ">> (%a+) <<=>> (%a+) <<=>> (.+)");
|
||||
if datatype == "RequestVersion" then
|
||||
HealBot_SendAddonMessage("HealBot", ">> SendVersion <<=>> " .. sender .. " <<=>> Version=" .. HEALBOT_VERSION);
|
||||
elseif datatype == "SendVersion" and PName == sender then
|
||||
HealBot_AddChat(sender_id .. ": " .. datamsg);
|
||||
end
|
||||
elseif addon_id == "CTRA" then
|
||||
if ( string.sub(inc_msg, 1, 3) == "RES" ) then
|
||||
if ( inc_msg == "RESNO" ) then
|
||||
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
|
||||
else
|
||||
local unitname, tmpTest
|
||||
tmpTest, tmpTest, unitname = string.find(inc_msg, "^RES (.+)$");
|
||||
if ( unitname ) then
|
||||
HealBot_AddDebug(sender_id .. " is ressing " .. unitname);
|
||||
HealBot_Ressing[unitname] = sender_id;
|
||||
HealBot_RecalcHeals(HealBot_FindUnitID(unitname));
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,467 @@
|
||||
-- HealBot_Controller_Events.lua
|
||||
-- Manages WoW Frame events and periodic updates, routing to respective services
|
||||
|
||||
HealBot_View_DirtyUnits = {}
|
||||
local HealBot_Timer1, HealsIn_Timer = 0, 0;
|
||||
HealBot_LastModState = ""
|
||||
|
||||
function HealBot_OnLoad(this)
|
||||
this:RegisterEvent("VARIABLES_LOADED");
|
||||
|
||||
SLASH_HEALBOT1 = "/healbot";
|
||||
SLASH_HEALBOT2 = "/hb";
|
||||
SlashCmdList["HEALBOT"] = function(msg)
|
||||
HealBot_SlashCmd(msg);
|
||||
end
|
||||
HealBot_AddError(HEALBOT_ADDON .. HEALBOT_LOADED);
|
||||
|
||||
-- Register MVC Observers
|
||||
HealBot_Model:RegisterObserver("UNIT_HEALTH_CHANGED", function(unitID)
|
||||
HealBot_View_DirtyUnits[unitID] = true
|
||||
end)
|
||||
HealBot_Model:RegisterObserver("UNIT_POWER_CHANGED", function(unitID)
|
||||
HealBot_View_DirtyUnits[unitID] = true
|
||||
end)
|
||||
HealBot_Model:RegisterObserver("UNIT_AURA_CHANGED", function(unitID)
|
||||
HealBot_View_DirtyUnits[unitID] = true
|
||||
end)
|
||||
HealBot_Model:RegisterObserver("ROSTER_CHANGED", function()
|
||||
HealBot_Delay_RecalcParty = 1
|
||||
end)
|
||||
HealBot_Model:RegisterObserver("EQUIPMENT_CHANGED", function(unitID)
|
||||
if unitID == "player" then
|
||||
HealBot_EquipChangeTimer = 1
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
function HealBot_RegisterThis(this)
|
||||
-- Deprecated / not used
|
||||
end
|
||||
|
||||
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
|
||||
HealBot_TargetRestoreTimer = HealBot_TargetRestoreTimer + arg1;
|
||||
if HealBot_TargetRestoreTimer >= 0.1 then
|
||||
local pending = HealBot_TargetRestorePending;
|
||||
HealBot_TargetRestorePending = nil;
|
||||
HealBot_TargetRestoreTimer = 0;
|
||||
if pending.type == "enemy" then
|
||||
TargetLastEnemy();
|
||||
elseif pending.type == "friend" then
|
||||
TargetLastTarget();
|
||||
elseif pending.type == "clear" then
|
||||
ClearTarget();
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- Process Dirty Queue for MVC View
|
||||
local unitID, _ = next(HealBot_View_DirtyUnits)
|
||||
while unitID do
|
||||
HealBot_Action_RefreshButtons(unitID)
|
||||
HealBot_View_DirtyUnits[unitID] = nil
|
||||
unitID, _ = next(HealBot_View_DirtyUnits)
|
||||
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
|
||||
|
||||
HealBot_Timer1 = HealBot_Timer1 + arg1;
|
||||
if HealBot_Timer1 >= 2.5 then
|
||||
if not HealBot_IsFighting then
|
||||
HealsIn_Timer = HealsIn_Timer + 1;
|
||||
if HealsIn_Timer >= 10 then
|
||||
for k in pairs(HealBot_HealsIn) do HealBot_HealsIn[k] = nil end
|
||||
for k in pairs(HealBot_Healers) do HealBot_Healers[k] = nil end
|
||||
HealsIn_Timer = 0;
|
||||
end
|
||||
|
||||
|
||||
|
||||
if HealBot_SpellsInitFlag > 1 then
|
||||
HealBot_SpellsInitFlag = HealBot_SpellsInitFlag + 1;
|
||||
if HealBot_SpellsInitFlag > 2 then
|
||||
local cnt = HealBot_InitSpells();
|
||||
HealBot_SpellsInitFlag = 0;
|
||||
HealBot_RecalcSpells();
|
||||
end
|
||||
end
|
||||
if HealBot_Delay_RecalcParty > 0 then
|
||||
HealBot_Delay_RecalcParty = HealBot_Delay_RecalcParty + 1
|
||||
if HealBot_Delay_RecalcParty > 1 then
|
||||
HealBot_Delay_RecalcParty = 0;
|
||||
HealBot_RecalcParty();
|
||||
end
|
||||
end
|
||||
else
|
||||
HealsIn_Timer = 0;
|
||||
end
|
||||
HealBot_Timer1 = 0;
|
||||
HealBot_SpamCnt = 0;
|
||||
end
|
||||
end
|
||||
|
||||
local HealBot_EventHandlers = {
|
||||
["UNIT_HEALTH"] = function(this, arg1)
|
||||
if HealBot_Model:UpdateUnitHealth(arg1) then
|
||||
HealBot_Model:NotifyObservers("UNIT_HEALTH_CHANGED", arg1)
|
||||
end
|
||||
HealBot_OnEvent_UnitHealth(this, arg1)
|
||||
end,
|
||||
["UNIT_MANA"] = function(this, arg1)
|
||||
if arg1 ~= "player" and HealBot_Config.ShowManaBars == 0 then return end
|
||||
if HealBot_Model:UpdateUnitPower(arg1) then
|
||||
HealBot_Model:NotifyObservers("UNIT_POWER_CHANGED", arg1)
|
||||
end
|
||||
end,
|
||||
["UNIT_RAGE"] = function(this, arg1)
|
||||
if arg1 ~= "player" and HealBot_Config.ShowManaBars == 0 then return end
|
||||
if HealBot_Model:UpdateUnitPower(arg1) then
|
||||
HealBot_Model:NotifyObservers("UNIT_POWER_CHANGED", arg1)
|
||||
end
|
||||
end,
|
||||
["UNIT_ENERGY"] = function(this, arg1)
|
||||
if arg1 ~= "player" and HealBot_Config.ShowManaBars == 0 then return end
|
||||
if HealBot_Model:UpdateUnitPower(arg1) then
|
||||
HealBot_Model:NotifyObservers("UNIT_POWER_CHANGED", arg1)
|
||||
end
|
||||
end,
|
||||
["UNIT_DISPLAYPOWER"] = function(this, arg1)
|
||||
if arg1 ~= "player" and HealBot_Config.ShowManaBars == 0 then return end
|
||||
if HealBot_Model:UpdateUnitPower(arg1) then
|
||||
HealBot_Model:NotifyObservers("UNIT_POWER_CHANGED", arg1)
|
||||
end
|
||||
end,
|
||||
["UNIT_AURA"] = function(this, arg1)
|
||||
HealBot_Model:MarkAuraChanged(arg1)
|
||||
HealBot_Model:NotifyObservers("UNIT_AURA_CHANGED", arg1)
|
||||
HealBot_OnEvent_UnitAura(this, arg1)
|
||||
end,
|
||||
["PLAYER_TARGET_CHANGED"] = function(this)
|
||||
if HealBot_Model:UpdateUnitIdentity("target") then
|
||||
HealBot_Model:NotifyObservers("ROSTER_CHANGED", "target")
|
||||
end
|
||||
HealBot_Model:UpdateUnitStatus("target")
|
||||
HealBot_Model:UpdateUnitHealth("target")
|
||||
HealBot_Model:UpdateUnitPower("target")
|
||||
HealBot_OnEvent_PlayerTargetChanged(this)
|
||||
end,
|
||||
["PARTY_MEMBERS_CHANGED"] = 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,
|
||||
["PLAYER_ENTERING_WORLD"] = function(this)
|
||||
HealBot_Model:RefreshUnit("player")
|
||||
HealBot_Model:RefreshUnit("pet")
|
||||
if HealBot_UnitClass("player") == "DRUID" then
|
||||
HealBot_UpdateShapeshiftForm()
|
||||
end
|
||||
HealBot_OnEvent_PlayerEnteringWorld(this)
|
||||
end,
|
||||
["VARIABLES_LOADED"] = function(this)
|
||||
HealBot_OnEvent_VariablesLoaded(this)
|
||||
end,
|
||||
-- Legacy pass-throughs
|
||||
["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_STOP"] = function(this) HealBot_OnEvent_SpellcastStop(this, "SPELLCAST_STOP") end,
|
||||
["SPELLCAST_INTERRUPTED"] = function(this) HealBot_OnEvent_SpellcastStop(this, "SPELLCAST_INTERRUPTED") end,
|
||||
["SPELLCAST_FAILED"] = function(this) HealBot_OnEvent_SpellcastStop(this, "SPELLCAST_FAILED") end,
|
||||
["PLAYER_REGEN_DISABLED"] = function(this) HealBot_OnEvent_PlayerRegenDisabled(this) end,
|
||||
["PLAYER_REGEN_ENABLED"] = function(this) HealBot_OnEvent_PlayerRegenEnabled(this) 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,
|
||||
["CHAT_MSG_SYSTEM"] = function(this, arg1) HealBot_OnEvent_SystemMsg(this, arg1) end,
|
||||
["ZONE_CHANGED_NEW_AREA"] = function(this) HealBot_OnEvent_ZoneChanged(this) end,
|
||||
["UPDATE_INVENTORY_ALERTS"] = function(this)
|
||||
HealBot_Model:NotifyObservers("EQUIPMENT_CHANGED", "player")
|
||||
HealBot_OnEvent_PlayerEquipmentChanged(this)
|
||||
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
|
||||
}
|
||||
|
||||
function HealBot_OnEvent(this, event, arg1, arg2, arg3, arg4)
|
||||
local handler = HealBot_EventHandlers[event]
|
||||
if handler then
|
||||
handler(this, arg1, arg2, arg3, arg4)
|
||||
else
|
||||
HealBot_AddDebug("OnEvent (" .. event .. ")")
|
||||
end
|
||||
end
|
||||
|
||||
function HealBot_OnEvent_VariablesLoaded(this)
|
||||
local class = HealBot_UnitClass("player")
|
||||
|
||||
table.foreach(HealBot_ConfigDefaults, function (key, val)
|
||||
if not HealBot_Config[key] then
|
||||
HealBot_Config[key] = val;
|
||||
end
|
||||
if type(val) == "table" and type(HealBot_Config[key]) == "table" then
|
||||
for k, v in pairs(val) do
|
||||
if HealBot_Config[key][k] == nil then
|
||||
HealBot_Config[key][k] = v
|
||||
end
|
||||
end
|
||||
end
|
||||
end);
|
||||
|
||||
local foundModern = false
|
||||
if HealBot_Config.Skins then
|
||||
for _, skin in ipairs(HealBot_Config.Skins) do
|
||||
if skin == "Modern Flat" then foundModern = true break end
|
||||
end
|
||||
if not foundModern then
|
||||
table.insert(HealBot_Config.Skins, "Modern Flat")
|
||||
end
|
||||
end
|
||||
|
||||
HealBot_InitData();
|
||||
|
||||
if not HealBot_PartyFrameHooked then
|
||||
local origShowPartyFrame = ShowPartyFrame;
|
||||
ShowPartyFrame = function()
|
||||
if HealBot_Config.HideParty == 1 then
|
||||
if HidePartyFrame then HidePartyFrame(); end
|
||||
elseif origShowPartyFrame then
|
||||
origShowPartyFrame();
|
||||
end
|
||||
end
|
||||
HealBot_PartyFrameHooked = true;
|
||||
end
|
||||
|
||||
if HealBot_Config.HideParty == 1 and HidePartyFrame then
|
||||
HidePartyFrame();
|
||||
end
|
||||
|
||||
if class == "PRIEST" or class == "DRUID" or class == "PALADIN" or class == "SHAMAN" then
|
||||
HealBot_BonusScanner:ScanEquipment();
|
||||
|
||||
HealBot_Action_ShowFrame();
|
||||
|
||||
this:RegisterEvent("ZONE_CHANGED_NEW_AREA");
|
||||
this:RegisterEvent("PLAYER_REGEN_DISABLED");
|
||||
this:RegisterEvent("PLAYER_REGEN_ENABLED");
|
||||
this:RegisterEvent("PLAYER_TARGET_CHANGED");
|
||||
this:RegisterEvent("PARTY_MEMBERS_CHANGED");
|
||||
this:RegisterEvent("PARTY_MEMBER_DISABLE");
|
||||
this:RegisterEvent("PARTY_MEMBER_ENABLE");
|
||||
this:RegisterEvent("UNIT_PET");
|
||||
this:RegisterEvent("UNIT_HEALTH");
|
||||
this:RegisterEvent("UNIT_MANA");
|
||||
this:RegisterEvent("UNIT_RAGE");
|
||||
this:RegisterEvent("UNIT_ENERGY");
|
||||
this:RegisterEvent("UNIT_DISPLAYPOWER");
|
||||
this:RegisterEvent("SPELLS_CHANGED");
|
||||
this:RegisterEvent("SPELLCAST_START");
|
||||
this:RegisterEvent("SPELLCAST_STOP");
|
||||
this:RegisterEvent("SPELLCAST_INTERRUPTED");
|
||||
this:RegisterEvent("SPELLCAST_FAILED");
|
||||
this:RegisterEvent("UNIT_AURA");
|
||||
this:RegisterEvent("UPDATE_INVENTORY_ALERTS");
|
||||
this:RegisterEvent("UNIT_INVENTORY_CHANGED");
|
||||
this:RegisterEvent("CHAT_MSG_ADDON");
|
||||
this:RegisterEvent("CHAT_MSG_SYSTEM");
|
||||
this:RegisterEvent("PLAYER_ENTERING_WORLD");
|
||||
if class == "DRUID" then
|
||||
this:RegisterEvent("UPDATE_SHAPESHIFT_FORM");
|
||||
this:RegisterEvent("UPDATE_SHAPESHIFT_FORMS");
|
||||
HealBot_UpdateShapeshiftForm();
|
||||
end
|
||||
HealBot_SpellsInitFlag = 2;
|
||||
end
|
||||
end
|
||||
|
||||
function HealBot_OnEvent_UnitHealth(this, unit)
|
||||
if (not HealBot_Heals[unit]) then return end
|
||||
HealBot_CheckCasting(unit);
|
||||
if unit == HealBot_Action_TooltipUnit then
|
||||
HealBot_Action_RefreshTooltip(HealBot_Action_TooltipUnit);
|
||||
end
|
||||
end
|
||||
|
||||
function HealBot_OnEvent_UnitMana(this, unit)
|
||||
if (unit ~= "player") then return end
|
||||
HealBot_RecalcHeals();
|
||||
end
|
||||
|
||||
function HealBot_OnEvent_ZoneChanged(this)
|
||||
HealBot_ResetRangeScale();
|
||||
HealBot_Delay_RecalcParty = 1;
|
||||
end
|
||||
|
||||
function HealBot_OnEvent_PlayerRegenDisabled(this)
|
||||
-- Removed HealBot_RecalcParty();
|
||||
if (UnitIsDeadOrGhost("player")) or (UnitOnTaxi("player")) then
|
||||
if HealBot_Config.AutoClose==1 and HealBot_Config.ActionVisible~=0 then
|
||||
HealBot_Action.ProgrammaticHide = true;
|
||||
HealBot_Action:Hide();
|
||||
HealBot_Action.ProgrammaticHide = nil;
|
||||
end;
|
||||
else
|
||||
HealBot_Action_ShowFrame();
|
||||
|
||||
-- Reapply user settings to override the engine's white default
|
||||
if HealBot_Config and HealBot_Config.Current_Skin then
|
||||
local skin = HealBot_Config.Current_Skin;
|
||||
if HealBot_Config.backcolr and HealBot_Config.backcolr[skin] then
|
||||
HealBot_Action:SetBackdropColor(
|
||||
HealBot_Config.backcolr[skin],
|
||||
HealBot_Config.backcolg[skin],
|
||||
HealBot_Config.backcolb[skin],
|
||||
HealBot_Config.backcola[skin]
|
||||
);
|
||||
HealBot_Action:SetBackdropBorderColor(
|
||||
HealBot_Config.borcolr[skin],
|
||||
HealBot_Config.borcolg[skin],
|
||||
HealBot_Config.borcolb[skin],
|
||||
HealBot_Config.borcola[skin]
|
||||
);
|
||||
end
|
||||
end
|
||||
|
||||
HealBot_IsFighting = true;
|
||||
end
|
||||
-- HealBot_RecalcHeals();
|
||||
end
|
||||
|
||||
function HealBot_OnEvent_PlayerRegenEnabled(this)
|
||||
HealBot_IsFighting = false;
|
||||
-- Removed HealBot_Delay_RecalcParty = 1;
|
||||
end
|
||||
|
||||
function HealBot_OnEvent_PlayerTargetChanged(this)
|
||||
if HealBot_Action_UnitButtons and HealBot_Action_UnitButtons["target"] then
|
||||
HealBot_View_DirtyUnits["target"] = true
|
||||
HealBot_OnEvent_UnitAura(nil, "target");
|
||||
end
|
||||
end
|
||||
|
||||
function HealBot_OnEvent_PartyMembersChanged(this)
|
||||
HealBot_Delay_RecalcParty = 1;
|
||||
end
|
||||
|
||||
function HealBot_OnEvent_PartyMemberDisable(this, unit)
|
||||
HealBot_RecalcHeals();
|
||||
end
|
||||
|
||||
function HealBot_OnEvent_SystemMsg(this, msg)
|
||||
if type(msg) == "string" then
|
||||
local tmpTest, tmpTest, deserter = string.find(msg, HEALBOT_HASLEFTRAID);
|
||||
if not deserter then
|
||||
local tmpTest, tmpTest, deserter = string.find(msg, HEALBOT_HASLEFTPARTY);
|
||||
end
|
||||
if deserter then
|
||||
if (HealBot_Healers[deserter]) then
|
||||
local tmpTest, unitname, heal_val, heal_valn
|
||||
tmpTest, tmpTest, unitname, heal_val = string.find(HealBot_Healers[deserter], ">> (%a+) <<=>> (.%d+) <<" );
|
||||
heal_valn = tonumber(heal_val)
|
||||
HealBot_Healers[deserter] = nil;
|
||||
HealBot_AddDebug("Healer " .. deserter .. " left the group - Last known activity was heal " .. unitname .. " for " .. heal_val .. " << trapped in event SystemMsg");
|
||||
if heal_valn > 0 and HealBot_HealsIn[unitname] then
|
||||
HealBot_HealsIn[unitname] = HealBot_HealsIn[unitname] - heal_valn;
|
||||
if HealBot_HealsIn[unitname] < 0 then
|
||||
HealBot_HealsIn[unitname] = 0;
|
||||
end
|
||||
end
|
||||
end
|
||||
elseif msg == HEALBOT_YOULEAVETHEGROUP or msg == HEALBOT_YOULEAVETHERAID then
|
||||
HealBot_Delay_RecalcParty = 1;
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function HealBot_OnEvent_PartyMemberEnable(this, unit)
|
||||
HealBot_RecalcHeals();
|
||||
end
|
||||
|
||||
function HealBot_OnEvent_PlayerEquipmentChanged(this)
|
||||
HealBot_EquipChangeTimer = 1;
|
||||
end
|
||||
|
||||
function HealBot_OnEvent_PlayerEquipmentChanged2(this, unit)
|
||||
if unit == "player" then
|
||||
HealBot_EquipChangeTimer = 1;
|
||||
end
|
||||
end
|
||||
|
||||
function HealBot_OnEvent_SpellsChanged(this, arg1)
|
||||
if arg1 then return; end
|
||||
HealBot_AddDebug("HB: SpellsChanged");
|
||||
HealBot_SpellsInitFlag = 2;
|
||||
end
|
||||
|
||||
function HealBot_OnEvent_TalentsChanged(this, arg1)
|
||||
HealBot_AddDebug("HB: TalentsChanged");
|
||||
end
|
||||
|
||||
function HealBot_OnEvent_PlayerEnteringWorld(this)
|
||||
HealBot_IsFighting = false;
|
||||
-- Re-apply the refresh hook late in case another addon overrode it during load
|
||||
if HealBot_ApplyRefreshHook then
|
||||
HealBot_ApplyRefreshHook()
|
||||
end
|
||||
end
|
||||
|
||||
function HealBot_OnEvent_SpellcastStart(this, spell, duration)
|
||||
HealBot_IsCasting = true;
|
||||
HealBot_RecalcHeals();
|
||||
HealBot_CheckCasting();
|
||||
if spell == HEALBOT_RESURRECTION or spell == HEALBOT_ANCESTRALSPIRIT or spell == HEALBOT_REBIRTH or spell == HEALBOT_REDEMPTION then
|
||||
if UnitName("Target") then
|
||||
HealBot_SendAddonMessage("CTRA", "RES " .. UnitName("Target"));
|
||||
HealBot_IamRessing = true;
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function HealBot_OnEvent_SpellcastStop(this, eventName)
|
||||
HealBot_IsCasting = false;
|
||||
if eventName == "SPELLCAST_FAILED" then
|
||||
HealBot_CastFailed = true;
|
||||
end
|
||||
HealBot_StopCasting();
|
||||
HealBot_RecalcHeals();
|
||||
if HealBot_IamRessing then
|
||||
HealBot_SendAddonMessage("CTRA", "RESNO");
|
||||
HealBot_IamRessing = false;
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,42 @@
|
||||
-- HealBot_Controller_Range.lua
|
||||
-- Handles periodic range checking for units
|
||||
|
||||
local _scale = 0
|
||||
|
||||
function HealBot_ResetRangeScale()
|
||||
_scale = 0
|
||||
end
|
||||
|
||||
function HealBot_Range_Check(unit, range)
|
||||
local return_val = 0;
|
||||
if not range then
|
||||
range = 40;
|
||||
end
|
||||
if ( unit == "player" ) then
|
||||
return_val = 1;
|
||||
elseif ( UnitIsVisible(unit) == 1 ) then
|
||||
local tx, ty = GetPlayerMapPosition(unit)
|
||||
local dist
|
||||
if tx > 0 or ty > 0 then
|
||||
local px, py = GetPlayerMapPosition("player")
|
||||
dist = math.sqrt((px - tx)^2 + (py - ty)^2)
|
||||
if dist > _scale and (px > 0 or py > 0) then
|
||||
if ( CheckInteractDistance(unit, 4) ) then
|
||||
_scale = dist
|
||||
end
|
||||
end
|
||||
if dist <= (_scale * range / 27) then
|
||||
return_val = 1
|
||||
end
|
||||
else
|
||||
if ( HealBot_Config.QualityRange == 1 ) or range <= 27 then
|
||||
if ( CheckInteractDistance(unit, 4) ) then
|
||||
return_val = 1;
|
||||
end
|
||||
else
|
||||
return_val = 1;
|
||||
end
|
||||
end
|
||||
end
|
||||
return return_val;
|
||||
end
|
||||
@@ -0,0 +1,822 @@
|
||||
-- HealBot_Controller_Spells.lua
|
||||
-- Centralized Spell management, calculation, and casting logic
|
||||
|
||||
HealBot_CastingSpell = nil;
|
||||
HealBot_CastingTarget = nil;
|
||||
HealBot_TargetRestorePending = nil;
|
||||
HealBot_TargetRestoreTimer = 0;
|
||||
|
||||
local HealBot_Health60 = {
|
||||
["DRUID"] = 3500,
|
||||
["MAGE"] = 2500,
|
||||
["HUNTER"] = 3500,
|
||||
["PALADIN"] = 4000,
|
||||
["PRIEST"] = 2500,
|
||||
["ROGUE"] = 3500,
|
||||
["SHAMAN"] = 3800,
|
||||
["WARLOCK"] = 3500,
|
||||
["WARRIOR"] = 5000,
|
||||
}
|
||||
|
||||
function HealBot_GetSpellName(id)
|
||||
if (not id) then
|
||||
return nil;
|
||||
end
|
||||
local spellName, subSpellName = GetSpellName(id, BOOKTYPE_SPELL);
|
||||
if (not spellName) then
|
||||
return nil;
|
||||
end
|
||||
if (not subSpellName or subSpellName == "") then
|
||||
return spellName;
|
||||
end
|
||||
return spellName .. " (" .. subSpellName .. ")";
|
||||
end
|
||||
|
||||
function HealBot_GetSpellId(spell)
|
||||
local id, idd = 1, 0;
|
||||
while true do
|
||||
local spellName, subSpellName = GetSpellName(id, BOOKTYPE_SPELL);
|
||||
if (spellName) then
|
||||
if (spell == spellName .. " (" .. subSpellName .. ")") or (spell == spellName .. "(" .. subSpellName .. ")") then
|
||||
return id;
|
||||
end
|
||||
if (spell == spellName) then
|
||||
idd = id;
|
||||
end
|
||||
else
|
||||
break
|
||||
end
|
||||
id = id + 1;
|
||||
end
|
||||
if idd > 0 then
|
||||
return idd
|
||||
else
|
||||
return nil;
|
||||
end
|
||||
end
|
||||
|
||||
function HealBot_CastSpellByName(spell)
|
||||
if (HealBot_Spells[spell] and HealBot_Spells[spell].BagSlot) then
|
||||
HealBot_UseItem(spell);
|
||||
return;
|
||||
end
|
||||
local id;
|
||||
if not HealBot_Spells[spell] then
|
||||
id = HealBot_GetSpellId(spell);
|
||||
elseif HealBot_Spells[spell].id then
|
||||
id = HealBot_Spells[spell].id
|
||||
else
|
||||
id = HealBot_GetSpellId(spell);
|
||||
end
|
||||
if (not id) then
|
||||
return;
|
||||
end
|
||||
CastSpell(id, BOOKTYPE_SPELL);
|
||||
end
|
||||
|
||||
function HealBot_AnnounceCast(spell, target)
|
||||
if not spell or not target then return end
|
||||
|
||||
if UnitIsDeadOrGhost(target) then
|
||||
local spellLower = string.lower(spell)
|
||||
if not (string.find(spellLower, "resurrection") or string.find(spellLower, "ancestral spirit") or string.find(spellLower, "redemption") or string.find(spellLower, "rebirth")) then
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
if HealBot_Config.ChatMessages then
|
||||
local tName = target
|
||||
if target == "target" then tName = HealBot_TargetName() or "target" else tName = UnitName(target) end
|
||||
if not tName then tName = target end
|
||||
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
|
||||
|
||||
-- Strip trailing spaces from base spell
|
||||
baseSpell = string.gsub(baseSpell, "%s+$", "")
|
||||
|
||||
for i = 1, 5 do
|
||||
local msgConf = HealBot_Config.ChatMessages[i]
|
||||
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 ""
|
||||
msg = string.gsub(msg, "#Spell#", spell)
|
||||
msg = string.gsub(msg, "#Target#", tName)
|
||||
local chan = msgConf.Channel
|
||||
if chan == "Say" then
|
||||
SendChatMessage(msg, "SAY")
|
||||
elseif chan == "Party" and GetNumPartyMembers() > 0 then
|
||||
SendChatMessage(msg, "PARTY")
|
||||
elseif chan == "Raid" and GetNumRaidMembers() > 0 then
|
||||
SendChatMessage(msg, "RAID")
|
||||
elseif chan == "Whisper" and UnitIsPlayer(target) then
|
||||
SendChatMessage(msg, "WHISPER", nil, tName)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function HealBot_Process_HealValue(spell, target)
|
||||
if HealBot_Spells[spell] and HealBot_Spells[spell].CastTime > 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
|
||||
|
||||
function HealBot_StartCasting(spell, target, ttype)
|
||||
HealBot_CastFailed = false;
|
||||
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[spell] then
|
||||
if not HealBot_CastFailed then
|
||||
HealBot_CastingSpell = spell;
|
||||
HealBot_CastingTarget = target;
|
||||
HealBot_Process_HealValue(spell, target);
|
||||
HealBot_AnnounceCast(spell, target);
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function HealBot_StopCasting()
|
||||
if HealBot_CastingTarget then
|
||||
if HealBot_HealValue > 0 then
|
||||
local uname = UnitName(HealBot_CastingTarget)
|
||||
if uname then
|
||||
HealBot_SendAddonMessage(HEALBOT_ADDON_ID, ">> " .. uname .. " <<=>> " .. 0 - HealBot_HealValue .. " << ");
|
||||
if HealBot_HealsIn[uname] then
|
||||
HealBot_HealsIn[uname] = HealBot_HealsIn[uname] - HealBot_HealValue;
|
||||
if HealBot_HealsIn[uname] < 0 then
|
||||
HealBot_HealsIn[uname] = 0;
|
||||
end
|
||||
HealBot_RecalcHeals(HealBot_FindUnitID(uname));
|
||||
end
|
||||
end
|
||||
HealBot_HealValue = 0;
|
||||
end
|
||||
end
|
||||
HealBot_CastingSpell = nil;
|
||||
HealBot_CastingTarget = nil;
|
||||
local bar = HealBot_Action_HealthBar(HealBot_Action_AbortButton);
|
||||
local ar = HealBot_Config.babortcolr[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 aa = HealBot_Config.babortcola[HealBot_Config.Current_Skin] or 1;
|
||||
bar.txt = getglobal(bar:GetName() .. "_text");
|
||||
bar:SetStatusBarColor(ar, ag, ab, 0);
|
||||
local sr = HealBot_Config.btextdisbledcolr[HealBot_Config.Current_Skin];
|
||||
local sg = HealBot_Config.btextdisbledcolg[HealBot_Config.Current_Skin];
|
||||
local sb = HealBot_Config.btextdisbledcolb[HealBot_Config.Current_Skin];
|
||||
local sa = HealBot_Config.btextdisbledcola[HealBot_Config.Current_Skin];
|
||||
bar.txt:SetTextColor(sr, sg, sb, sa);
|
||||
end
|
||||
|
||||
function HealBot_UnitHealth(unit)
|
||||
local Current, Desired = UnitHealth(unit), UnitHealthMax(unit);
|
||||
if unit == 'target' and Desired == 100 then
|
||||
local class, level = HealBot_UnitClass(unit), UnitLevel(unit);
|
||||
if HealBot_Health60[class] and level > 0 then
|
||||
Desired = math.floor(HealBot_Health60[class] / 60 * level + 0.5)
|
||||
else
|
||||
Desired = UnitHealthMax('player');
|
||||
end
|
||||
Current = Desired / 100 * Current;
|
||||
end
|
||||
return Current, Desired;
|
||||
end
|
||||
|
||||
function HealBot_CheckCasting(unit)
|
||||
if not HealBot_CastingSpell or HealBot_AlwaysHeal() then return nil end
|
||||
if not HealBot_Spells[HealBot_CastingSpell] then return nil end
|
||||
if not unit then unit = HealBot_CastingTarget end
|
||||
if unit ~= HealBot_CastingTarget then return nil end
|
||||
|
||||
local bar = HealBot_Action_HealthBar(HealBot_Action_AbortButton);
|
||||
local ar = HealBot_Config.babortcolr[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 aa = HealBot_Config.babortcola[HealBot_Config.Current_Skin] or 1;
|
||||
if not bar.txt then bar.txt = getglobal(bar:GetName() .. "_text") end
|
||||
|
||||
if HealBot_IsCasting == false and HealBot_AbortButton == 0 then
|
||||
bar:SetStatusBarColor(ar, ag, ab, 0);
|
||||
local sr = HealBot_Config.btextdisbledcolr[HealBot_Config.Current_Skin];
|
||||
local sg = HealBot_Config.btextdisbledcolg[HealBot_Config.Current_Skin];
|
||||
local sb = HealBot_Config.btextdisbledcolb[HealBot_Config.Current_Skin];
|
||||
local sa = HealBot_Config.btextdisbledcola[HealBot_Config.Current_Skin];
|
||||
bar.txt:SetTextColor(sr, sg, sb, sa);
|
||||
return nil
|
||||
end
|
||||
|
||||
local Current, Desired = HealBot_UnitHealth(unit)
|
||||
local Needed = Desired - Current;
|
||||
Needed = Needed * (1 + (HealBot_Config.OverHeal * 4));
|
||||
if Needed < 0 then Needed = 0 end
|
||||
if (Needed > HealBot_Spells[HealBot_CastingSpell].HealsDur) then
|
||||
local sr = HealBot_Config.btextdisbledcolr[HealBot_Config.Current_Skin];
|
||||
local sg = HealBot_Config.btextdisbledcolg[HealBot_Config.Current_Skin];
|
||||
local sb = HealBot_Config.btextdisbledcolb[HealBot_Config.Current_Skin];
|
||||
local sa = HealBot_Config.btextdisbledcola[HealBot_Config.Current_Skin];
|
||||
bar.txt:SetTextColor(sr, sg, sb, sa);
|
||||
bar:SetStatusBarColor(ar, ag, ab, 0);
|
||||
return nil
|
||||
elseif HealBot_AbortButton == 1 and HealBot_IsCasting == true then
|
||||
bar:SetStatusBarColor(ar, ag, ab, aa);
|
||||
local sr = HealBot_Config.btextenabledcolr[HealBot_Config.Current_Skin];
|
||||
local sg = HealBot_Config.btextenabledcolg[HealBot_Config.Current_Skin];
|
||||
local sb = HealBot_Config.btextenabledcolb[HealBot_Config.Current_Skin];
|
||||
local sa = HealBot_Config.btextenabledcola[HealBot_Config.Current_Skin];
|
||||
bar.txt = getglobal(bar:GetName() .. "_text");
|
||||
bar.txt:SetTextColor(sr, sg, sb, sa);
|
||||
end
|
||||
end
|
||||
|
||||
function HealBot_CastSpellOnFriend(spell, target)
|
||||
if (not spell or not target or not UnitName(target)) then
|
||||
return;
|
||||
end
|
||||
local targetEnemy = UnitCanAttack("player", "target");
|
||||
local oldTarget = UnitName("target");
|
||||
|
||||
if HealBot_UnitClass("player") == "DRUID" and HealBot_ActiveShapeshiftStance and HealBot_Config.AutoUnshift == 1 then
|
||||
CastShapeshiftForm(HealBot_ActiveShapeshiftStance);
|
||||
end
|
||||
|
||||
if oldTarget ~= UnitName(target) then
|
||||
TargetUnit(target);
|
||||
end
|
||||
|
||||
HealBot_StartCasting(spell, target, "direct");
|
||||
|
||||
if targetEnemy then
|
||||
HealBot_TargetRestorePending = { type = "enemy" };
|
||||
elseif oldTarget and oldTarget ~= UnitName(target) then
|
||||
HealBot_TargetRestorePending = { type = "friend" };
|
||||
elseif not oldTarget then
|
||||
HealBot_TargetRestorePending = { type = "clear" };
|
||||
end
|
||||
HealBot_TargetRestoreTimer = 0;
|
||||
end
|
||||
|
||||
function HealBot_SetItemDefaults(spell)
|
||||
if not HealBot_Spells[spell].Target then
|
||||
HealBot_Spells[spell].Target = {"player", "party", "pet"};
|
||||
end
|
||||
if not HealBot_Spells[spell].Price then
|
||||
HealBot_Spells[spell].Price = 0;
|
||||
end
|
||||
if not HealBot_Spells[spell].CastTime then
|
||||
HealBot_Spells[spell].CastTime = 0;
|
||||
end
|
||||
if not HealBot_Spells[spell].Mana then
|
||||
HealBot_Spells[spell].Mana = 0;
|
||||
end
|
||||
if not HealBot_Spells[spell].Channel then
|
||||
HealBot_Spells[spell].Channel = HealBot_Spells[spell].CastTime;
|
||||
end
|
||||
if not HealBot_Spells[spell].Duration then
|
||||
HealBot_Spells[spell].Duration = HealBot_Spells[spell].Channel;
|
||||
end
|
||||
if not HealBot_Spells[spell].HealsMin then
|
||||
HealBot_Spells[spell].HealsMin = 0;
|
||||
end
|
||||
if not HealBot_Spells[spell].HealsMax then
|
||||
HealBot_Spells[spell].HealsMax = 0;
|
||||
end
|
||||
HealBot_Spells[spell].RealHealing = 0;
|
||||
HealBot_Spells[spell].HealsCast = (HealBot_Spells[spell].HealsMin + HealBot_Spells[spell].HealsMax) / 2;
|
||||
if not HealBot_Spells[spell].HealsExt then
|
||||
HealBot_Spells[spell].HealsExt = 0;
|
||||
end
|
||||
end
|
||||
|
||||
function HealBot_SetSpellDefaults(spell)
|
||||
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
|
||||
|
||||
function HealBot_AddHeal(spell)
|
||||
HealBot_SetSpellDefaults(spell);
|
||||
table.foreachi(HealBot_Spells[spell].Target, function (i, val)
|
||||
table.insert(HealBot_Heals[val], spell);
|
||||
end);
|
||||
HealBot_Spells[spell].BagSlot = HealBot_GetBagSlot(spell);
|
||||
end
|
||||
|
||||
function HealBot_FindHealSpells()
|
||||
local id = 1;
|
||||
if HealBot_SpellsInitFlag > 0 then NeedEquipUpdate = 1; return; end
|
||||
|
||||
HealBot_Heals = { player = {}, pet = {}, party = {} };
|
||||
|
||||
table.foreach(HealBot_CurrentSpells, function (index, spell)
|
||||
if (HealBot_Spells[spell]) then
|
||||
if HealBot_CalcEquipBonus then
|
||||
local healingbonus_penalty = 1;
|
||||
if HealBot_Spells[spell].Level < 20 then
|
||||
healingbonus_penalty = (1 - ((20 - HealBot_Spells[spell].Level) * 0.0375));
|
||||
end
|
||||
local temp_Spell_cast = 3.5;
|
||||
if HealBot_Spells[spell].CastTime == 0 then
|
||||
temp_Spell_cast = 3.5;
|
||||
end
|
||||
if not HealBot_Spells[spell].CastTime then
|
||||
HealBot_Spells[spell].CastTime = 1.5;
|
||||
end
|
||||
if HealBot_Spells[spell].CastTime >= 1.5 and HealBot_Spells[spell].CastTime < 3.5 then
|
||||
temp_Spell_cast = HealBot_Spells[spell].CastTime;
|
||||
end
|
||||
RealHealing = ((HealBot_GetBonus() * healingbonus_penalty) * (temp_Spell_cast / 3.5));
|
||||
local playerClass, englishClass = UnitClass("player");
|
||||
local SpiBonus = 0;
|
||||
if (englishClass == "PRIEST") then
|
||||
SpiBonus = ((HealBot_SpiBonus(spell) * healingbonus_penalty) * (temp_Spell_cast / 3.5))
|
||||
RealHealing = RealHealing + SpiBonus;
|
||||
end
|
||||
RealHealing = math.floor(RealHealing);
|
||||
HealBot_Spells[spell].RealHealing = RealHealing;
|
||||
end
|
||||
HealBot_AddHeal(spell);
|
||||
end
|
||||
end);
|
||||
|
||||
local items = {};
|
||||
for bag = 0, NUM_BAG_FRAMES do
|
||||
for slot = 1, GetContainerNumSlots(bag) do
|
||||
local item = HealBot_GetItemName(bag, slot);
|
||||
if HealBot_Spells[item] and not items[item] then
|
||||
HealBot_SetItemDefaults(item);
|
||||
HealBot_AddHeal(item);
|
||||
items[item] = 1;
|
||||
end
|
||||
end
|
||||
end
|
||||
table.foreach(HealBot_Heals, function (key, val)
|
||||
if (table.getn(val) == 0) then
|
||||
HealBot_Heals[key] = nil;
|
||||
end
|
||||
end);
|
||||
HealBot_Heals.target = HealBot_Heals.party;
|
||||
for i = 1, 4 do
|
||||
HealBot_Heals["party" .. i] = HealBot_Heals.party;
|
||||
HealBot_Heals["partypet" .. i] = HealBot_Heals.party;
|
||||
end
|
||||
for i = 1, 40 do
|
||||
HealBot_Heals["raid" .. i] = HealBot_Heals.party;
|
||||
HealBot_Heals["raidpet" .. i] = HealBot_Heals.party;
|
||||
end
|
||||
|
||||
if HealBot_CalcEquipBonus then
|
||||
HealBot_AddDebug("...Done Equip Bonus:" .. RealHealing);
|
||||
end
|
||||
HealBot_CalcEquipBonus = false;
|
||||
end
|
||||
|
||||
function HealBot_CanCastSpell(spell, unit)
|
||||
local this = HealBot_Spells[spell];
|
||||
-- Removed manual mana check so WoW can properly handle 0-cost buffs (Clearcasting/Inner Focus)
|
||||
-- and so tooltips can render in red instead of disappearing.
|
||||
if this.BagSlot then
|
||||
local bag, slot = HealBot_UnpackBagSlot(this.BagSlot);
|
||||
local start, duration, enable = GetContainerItemCooldown(bag, slot);
|
||||
if (start > 0 and duration > 0 and enable > 0) then
|
||||
return false;
|
||||
end
|
||||
end
|
||||
return true;
|
||||
end
|
||||
|
||||
function HealBot_GetHealSpell(unit, pattern)
|
||||
if (not UnitName(unit)) then return nil end;
|
||||
if not pattern then return nil end;
|
||||
if UnitOnTaxi("player") then return nil end;
|
||||
if HealBot_Config.ProtectPvP == 1 and UnitIsPVP(unit) and not UnitIsPVP("player") then return nil end
|
||||
if HealBot_UnitClass("player") == "DRUID" then
|
||||
if HealBot_ActiveShapeshiftStance and HealBot_Config.AutoUnshift ~= 1 then return nil end;
|
||||
end
|
||||
|
||||
-- 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
|
||||
|
||||
function HealBot_HealUnit(unit, pattern)
|
||||
HealBot_CastSpellOnFriend(HealBot_GetHealSpell(unit, pattern), unit);
|
||||
end
|
||||
|
||||
function HealBot_RecalcHeals(unit)
|
||||
HealBot_Action_Refresh(unit);
|
||||
end
|
||||
|
||||
function HealBot_RecalcParty()
|
||||
HealBot_Action_PartyChanged();
|
||||
if HealBot_Action_HealButtons then
|
||||
for _, button in ipairs(HealBot_Action_HealButtons) do
|
||||
if button and button.unit then
|
||||
HealBot_OnEvent_UnitAura(nil, button.unit);
|
||||
end
|
||||
end
|
||||
end
|
||||
HealBot_Action_RefreshButtons();
|
||||
end
|
||||
|
||||
function HealBot_RecalcSpells()
|
||||
HealBot_FindHealSpells();
|
||||
HealBot_RecalcParty();
|
||||
end
|
||||
|
||||
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
|
||||
|
||||
function HealBot_SpiBonus(spell)
|
||||
local heals_modifer = 0;
|
||||
local base, stat, posBuff, negBuff = UnitStat("player", 5);
|
||||
local currRank = HealBot_GetTalentRank("Spiritual Guidance")
|
||||
if currRank > 0 then
|
||||
local spiGuideBonus = stat * 0.05;
|
||||
heals_modifer = heals_modifer + (currRank * spiGuideBonus);
|
||||
end
|
||||
return heals_modifer;
|
||||
end
|
||||
|
||||
function HealBot_GetBonus()
|
||||
local HealBonus = HealBot_BonusScanner:GetBonus() or 0;
|
||||
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;
|
||||
end
|
||||
|
||||
function HealBot_InitSpells()
|
||||
local id = 1
|
||||
local cnt = 0;
|
||||
local class = HealBot_UnitClass("player")
|
||||
HealBot_CurrentSpells = {};
|
||||
while true do
|
||||
local spell = HealBot_GetSpellName(id);
|
||||
if not spell then
|
||||
break
|
||||
end
|
||||
if (HealBot_Spells[spell]) then
|
||||
HealBot_Spells[spell].id = id;
|
||||
HealBot_InitGetSpellData(spell, id, class);
|
||||
table.insert(HealBot_CurrentSpells, spell);
|
||||
cnt = cnt + 1;
|
||||
end
|
||||
id = id + 1;
|
||||
end
|
||||
|
||||
return cnt;
|
||||
end
|
||||
|
||||
function HealBot_InitGetSpellData(spell, id, class)
|
||||
local i, _mana, _cast, _HealsMin, _HealsMax, _HealsExt, _duration, _range, _shield, _channel;
|
||||
local tooltip = getglobal("HealBot_ScanTooltip");
|
||||
local tmpText, line, tmpTest
|
||||
|
||||
if (not spell) then
|
||||
return;
|
||||
end
|
||||
|
||||
HealBot_ScanTooltip:SetOwner(HealBot_ScanTooltip, "ANCHOR_NONE")
|
||||
HealBot_ScanTooltip:SetSpell(id, BOOKTYPE_SPELL);
|
||||
tmpText = getglobal("HealBot_ScanTooltipTextLeft2");
|
||||
if (tmpText:GetText()) then
|
||||
line = tmpText:GetText();
|
||||
tmpTest, tmpTest, _mana = string.find(line, HEALBOT_TOOLTIP_MANA);
|
||||
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_ScanTooltipTextRight2");
|
||||
if (tmpText:GetText()) then
|
||||
line = tmpText:GetText();
|
||||
tmpTest, tmpTest, _range = string.find(line, HEALBOT_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 == HEALBOT_TOOLTIP_INSTANT_CAST) then
|
||||
_cast = 0;
|
||||
elseif line == HEALBOT_TOOLTIP_CHANNELED then
|
||||
_cast = 0;
|
||||
elseif (tmpText) then
|
||||
tmpTest, tmpTest, _cast = string.find(line, HEALBOT_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;
|
||||
if (tmpText:GetText()) then
|
||||
line = tmpText:GetText();
|
||||
if class == "PRIEST" then
|
||||
if string.sub(spell, 1, 14) == string.sub(HEALBOT_POWER_WORD_SHIELD, 1, 14) then
|
||||
tmpTest, tmpTest, _HealsMin, _shield = string.find(line, HEALBOT_SPELL_PATTERN_SHIELD);
|
||||
_HealsExt = 0;
|
||||
_HealsMax = _HealsMin;
|
||||
elseif string.sub(spell, 1, 4) == string.sub(HEALBOT_RENEW, 1, 4) then
|
||||
tmpTest, tmpTest, _HealsExt, tmpTest, _duration = string.find(line, HEALBOT_SPELL_PATTERN_RENEW);
|
||||
_HealsMin = 0;
|
||||
_HealsMax = 0;
|
||||
if (_HealsExt == nil) then
|
||||
tmpTest, tmpTest, _HealsExt, _duration = string.find(line, HEALBOT_SPELL_PATTERN_RENEW1);
|
||||
end
|
||||
if (_HealsExt == nil) then
|
||||
tmpTest, tmpTest, _duration, _HealsExt = string.find(line, HEALBOT_SPELL_PATTERN_RENEW2);
|
||||
end
|
||||
if (_HealsExt == nil) then
|
||||
tmpTest, tmpTest, _duration, _HealsExt = string.find(line, HEALBOT_SPELL_PATTERN_RENEW3);
|
||||
end
|
||||
elseif string.sub(spell, 1, 9) == string.sub(HEALBOT_LESSER_HEAL, 1, 9) then
|
||||
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
|
||||
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
|
||||
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
|
||||
tmpTest, _HealsMin, _HealsMax = HealBot_Generic_Patten(line, HEALBOT_SPELL_PATTERN_HEAL);
|
||||
end
|
||||
elseif class == "DRUID" then
|
||||
if string.sub(spell, 1, 6) == string.sub(HEALBOT_REGROWTH, 1, 6) then
|
||||
tmpTest, tmpTest, _HealsMin, _HealsMax, _HealsExt = string.find(line, HEALBOT_SPELL_PATTERN_REGROWTH);
|
||||
if (tmpTest == nil) then
|
||||
tmpTest, tmpTest, _HealsMin, _HealsMax, tmpTest, _HealsExt = string.find(line, HEALBOT_SPELL_PATTERN_REGROWTH1);
|
||||
end
|
||||
elseif string.sub(spell, 1, 9) == string.sub(HEALBOT_REJUVENATION, 1, 9) then
|
||||
tmpTest, tmpTest, _HealsExt, _duration = string.find(line, HEALBOT_SPELL_PATTERN_REJUVENATION);
|
||||
_HealsMin = 0;
|
||||
_HealsMax = 0;
|
||||
if (_HealsExt == nil) then
|
||||
tmpTest, tmpTest, _HealsExt, tmpTest, _duration = string.find(line, HEALBOT_SPELL_PATTERN_REJUVENATION1);
|
||||
end
|
||||
elseif string.sub(spell, 1, 7) == string.sub(HEALBOT_HEALING_TOUCH, 1, 7) then
|
||||
tmpTest, _HealsMin, _HealsMax = HealBot_Generic_Patten(line, HEALBOT_SPELL_PATTERN_HEALING_TOUCH);
|
||||
end
|
||||
elseif class == "PALADIN" then
|
||||
if string.sub(spell, 1, 9) == string.sub(HEALBOT_HOLY_LIGHT, 1, 9) then
|
||||
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
|
||||
tmpTest, _HealsMin, _HealsMax = HealBot_Generic_Patten(line, HEALBOT_SPELL_PATTERN_FLASH_OF_LIGHT);
|
||||
end
|
||||
elseif class == "SHAMAN" then
|
||||
if string.sub(spell, 1, 9) == string.sub(HEALBOT_HEALING_WAVE, 1, 9) then
|
||||
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
|
||||
tmpTest, _HealsMin, _HealsMax = HealBot_Generic_Patten(line, HEALBOT_SPELL_PATTERN_LESSER_HEALING_WAVE);
|
||||
end
|
||||
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
|
||||
|
||||
if (_mana == nil) then
|
||||
HealBot_Report_Error("================================");
|
||||
HealBot_Report_Error("ERROR: _mana is NIL");
|
||||
HealBot_Report_Error("ERROR: Spell: " .. spell);
|
||||
if HealBot_ScanTooltipTextLeft2:GetText() then
|
||||
HealBot_Report_Error("ERROR: Tooltip = >> " .. HealBot_ScanTooltipTextLeft2:GetText() .. " <<");
|
||||
end
|
||||
HealBot_Report_Error("ERROR: Patten = >> " .. HEALBOT_TOOLTIP_MANA .. " <<");
|
||||
end
|
||||
if (_range == nil) then
|
||||
HealBot_Report_Error("================================");
|
||||
HealBot_Report_Error("ERROR: _range is NIL");
|
||||
HealBot_Report_Error("ERROR: Spell: " .. spell);
|
||||
if HealBot_ScanTooltipTextRight2:GetText() then
|
||||
HealBot_Report_Error("ERROR: Tooltip = >> " .. HealBot_ScanTooltipTextRight2:GetText() .. " <<");
|
||||
end
|
||||
HealBot_Report_Error("ERROR: Patten = >> " .. HEALBOT_TOOLTIP_RANGE .. " <<");
|
||||
end
|
||||
if (_cast == nil) then
|
||||
HealBot_Report_Error("================================");
|
||||
HealBot_Report_Error("ERROR: _cast is NIL");
|
||||
HealBot_Report_Error("ERROR: Spell: " .. spell);
|
||||
if HealBot_ScanTooltipTextLeft3:GetText() then
|
||||
HealBot_Report_Error("ERROR: Tooltip = >> " .. HealBot_ScanTooltipTextLeft3:GetText() .. " <<");
|
||||
end
|
||||
HealBot_Report_Error("ERROR: Patten = >> " .. HEALBOT_TOOLTIP_CAST_TIME .. " <<");
|
||||
end
|
||||
if (tmpTest == nil) then
|
||||
HealBot_Report_Error("================================");
|
||||
HealBot_Report_Error("ERROR: tmpTest == nil");
|
||||
HealBot_Report_Error("ERROR: spell = " .. spell);
|
||||
if line then
|
||||
HealBot_Report_Error("ERROR: Tooltip = >> " .. line .. " <<");
|
||||
end
|
||||
end
|
||||
|
||||
HealBot_Spells[spell].CastTime = tonumber(_cast);
|
||||
HealBot_Spells[spell].Mana = tonumber(_mana);
|
||||
HealBot_Spells[spell].Range = tonumber(_range);
|
||||
HealBot_Spells[spell].HealsMin = tonumber(_HealsMin);
|
||||
HealBot_Spells[spell].HealsMax = tonumber(_HealsMax);
|
||||
if _HealsExt then
|
||||
HealBot_Spells[spell].HealsExt = tonumber(_HealsExt);
|
||||
end
|
||||
if _duration then
|
||||
HealBot_Spells[spell].Duration = tonumber(_duration);
|
||||
end
|
||||
if _shield then
|
||||
HealBot_Spells[spell].Shield = tonumber(_shield);
|
||||
end
|
||||
if _channel then
|
||||
HealBot_Spells[spell].Channel = tonumber(_channel);
|
||||
end
|
||||
|
||||
if not HealBot_Spells[spell].Target then
|
||||
HealBot_Spells[spell].Target = {"player", "party", "pet"};
|
||||
end
|
||||
if not HealBot_Spells[spell].Price then
|
||||
HealBot_Spells[spell].Price = 0;
|
||||
end
|
||||
if not HealBot_Spells[spell].Channel then
|
||||
HealBot_Spells[spell].Channel = HealBot_Spells[spell].CastTime;
|
||||
end
|
||||
if not HealBot_Spells[spell].Duration then
|
||||
HealBot_Spells[spell].Duration = HealBot_Spells[spell].Channel;
|
||||
end
|
||||
if not HealBot_Spells[spell].RealHealing then
|
||||
HealBot_Spells[spell].RealHealing = 0;
|
||||
end
|
||||
HealBot_Spells[spell].HealsCast = (HealBot_Spells[spell].HealsMin + HealBot_Spells[spell].HealsMax) / 2;
|
||||
if not HealBot_Spells[spell].HealsExt then
|
||||
HealBot_Spells[spell].HealsExt = 0;
|
||||
end
|
||||
end
|
||||
|
||||
function HealBot_Generic_Patten(matchStr, matchPattern)
|
||||
local tmpTest, _HealsMin, _HealsMax, _HealsExt, _duration
|
||||
tmpTest, tmpTest, _HealsMin, _HealsMax = string.find(matchStr, matchPattern);
|
||||
if (tmpTest == nil) then
|
||||
HealBot_Report_Error("================================");
|
||||
HealBot_Report_Error("ERROR: tmpTest == nil");
|
||||
HealBot_Report_Error("ERROR: pattern = " .. matchPattern);
|
||||
HealBot_Report_Error("ERROR: Tooltip = >> " .. matchStr .. " <<");
|
||||
end
|
||||
return tmpTest, _HealsMin, _HealsMax;
|
||||
end
|
||||
|
||||
HealBot_ActiveShapeshiftStance = nil;
|
||||
|
||||
function HealBot_UpdateShapeshiftForm()
|
||||
HealBot_ActiveShapeshiftStance = HealBot_GetShapeshiftForm();
|
||||
end
|
||||
|
||||
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
|
||||
local icon_lower = string.lower(icon);
|
||||
if not string.find(icon_lower, "humanoidform") and not string.find(icon_lower, "treeoflife") and not string.find(icon_lower, "stoneclawtotem") then
|
||||
return i;
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
return nil;
|
||||
end
|
||||
+63
-6
@@ -1,7 +1,21 @@
|
||||
HealBot_ConfigDefaults = {
|
||||
ShowManaBars=0,
|
||||
ManaBarsHealersOnly=1,
|
||||
ManaBarsHealersOnly=0,
|
||||
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,
|
||||
AutoClose = 1,
|
||||
PanelSounds = 1,
|
||||
@@ -10,8 +24,11 @@ HealBot_ConfigDefaults = {
|
||||
TargetHeals = 1,
|
||||
EmergencyHeals = 1,
|
||||
ActionLocked = 0,
|
||||
ActionVisible = 1,
|
||||
HideSolo = 0,
|
||||
OverHeal = 0.25,
|
||||
CastNotify = 1,
|
||||
AutoUnshift = 1,
|
||||
ChatMessages = {
|
||||
[1] = { Spell = "None", Message = "Casting #Spell# on #Target#", Channel = "None" },
|
||||
[2] = { Spell = "None", Message = "Casting #Spell# on #Target#", Channel = "None" },
|
||||
@@ -22,6 +39,7 @@ HealBot_ConfigDefaults = {
|
||||
HideOptions = 0,
|
||||
HideAbort = 1,
|
||||
ShowTooltip = 1,
|
||||
ShowHealthText = 0,
|
||||
GrowUpwards = 0,
|
||||
ProtectPvP = 1,
|
||||
QualityRange = 0,
|
||||
@@ -169,18 +187,30 @@ HealBot_ConfigDefaults = {
|
||||
},
|
||||
},
|
||||
EnableHealthy = 0,
|
||||
ShowNonManaBars = 0,
|
||||
ActionVisible = 0,
|
||||
ActionMouseover = 1,
|
||||
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",},
|
||||
Current_Skin = HEALBOT_SKINS_STD,
|
||||
Current_Skin = "Modern Flat",
|
||||
Skin_ID = 1,
|
||||
Skins = {HEALBOT_SKINS_STD, "HealBot Party", "HealBot Raid", "Alteric Valley", "Modern Flat"},
|
||||
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},
|
||||
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},
|
||||
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},
|
||||
bwidth = {[HEALBOT_SKINS_STD] = 122, ["HealBot Party"] = 115, ["HealBot Raid"] = 90, ["Alteric Valley"] = 85, ["Modern Flat"] = 122},
|
||||
bheight = {[HEALBOT_SKINS_STD] = 19, ["HealBot Party"] = 18, ["HealBot Raid"] = 14, ["Alteric Valley"] = 16, ["Modern Flat"] = 20},
|
||||
bwidth = {[HEALBOT_SKINS_STD] = 122, ["HealBot Party"] = 115, ["HealBot Raid"] = 90, ["Alteric Valley"] = 85, ["Modern Flat"] = 100},
|
||||
bheight = {[HEALBOT_SKINS_STD] = 19, ["HealBot Party"] = 18, ["HealBot Raid"] = 14, ["Alteric Valley"] = 16, ["Modern Flat"] = 40},
|
||||
btextenabledcolr = {[HEALBOT_SKINS_STD] = 1, ["HealBot Party"] = 1, ["HealBot Raid"] = 1, ["Alteric Valley"] = 1, ["Modern Flat"] = 1},
|
||||
btextenabledcolg = {[HEALBOT_SKINS_STD] = 1, ["HealBot Party"] = 1, ["HealBot Raid"] = 1, ["Alteric Valley"] = 1, ["Modern Flat"] = 1},
|
||||
btextenabledcolb = {[HEALBOT_SKINS_STD] = 0, ["HealBot Party"] = 0, ["HealBot Raid"] = 0, ["Alteric Valley"] = 0, ["Modern Flat"] = 1},
|
||||
@@ -213,11 +243,17 @@ HealBot_ConfigDefaults = {
|
||||
ShowHeader = {[HEALBOT_SKINS_STD] = 1, ["HealBot Party"] = 1, ["HealBot Raid"] = 1, ["Alteric Valley"] = 1, ["Modern Flat"] = 1},
|
||||
bcolormode = {[HEALBOT_SKINS_STD] = 1, ["HealBot Party"] = 1, ["HealBot Raid"] = 1, ["Alteric Valley"] = 1, ["Modern Flat"] = 2},
|
||||
bborder = {[HEALBOT_SKINS_STD] = 2, ["HealBot Party"] = 2, ["HealBot Raid"] = 2, ["Alteric Valley"] = 2, ["Modern Flat"] = 1},
|
||||
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},
|
||||
bfontoutline = {[HEALBOT_SKINS_STD] = 0, ["HealBot Party"] = 0, ["HealBot Raid"] = 0, ["Alteric Valley"] = 0, ["Modern Flat"] = 1},
|
||||
ShowTooltip = 1,
|
||||
ShowManaBars = 0,
|
||||
ManaBarsHealersOnly = 0,
|
||||
Tooltip_ShowSpellDetail = 0,
|
||||
Tooltip_ShowTarget = 1,
|
||||
Tooltip_Recommend = 1,
|
||||
TooltipPos = 1,
|
||||
HideParty = 0,
|
||||
};
|
||||
|
||||
HealBot_Config = {};
|
||||
@@ -502,6 +538,7 @@ HealBot_Buff_Spells = {
|
||||
HEALBOT_PRAYER_OF_SHADOW_PROTECTION,
|
||||
HEALBOT_INNER_FIRE,
|
||||
HEALBOT_FEAR_WARD,
|
||||
HEALBOT_ENLIGHTEN,
|
||||
},
|
||||
[HEALBOT_MAGE] = {
|
||||
HEALBOT_ARCANE_INTELLECT,
|
||||
@@ -532,7 +569,7 @@ HealBot_Debuff_Types = {
|
||||
HealBot_IsFighting = false;
|
||||
|
||||
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 = {};
|
||||
|
||||
@@ -546,3 +583,23 @@ HealBot_SpamCnt=0;
|
||||
HealBot_Action_TooltipUnit=nil;
|
||||
HealBot_Ressing = {};
|
||||
HealBot_IamRessing = false;
|
||||
|
||||
-- Table Recycling Pool (Puppeteer-inspired)
|
||||
local tablePool = {}
|
||||
function HealBot_GetTable()
|
||||
local t = table.remove(tablePool)
|
||||
if not t then
|
||||
t = {}
|
||||
end
|
||||
return t
|
||||
end
|
||||
|
||||
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
|
||||
|
||||
|
||||
+44
-33
@@ -70,6 +70,9 @@ HEALBOT_LESSER_HEAL = "Geringes Heilen";
|
||||
HEALBOT_LESSER_HEALING_WAVE = "Geringe Welle der Heilung";
|
||||
HEALBOT_MEND_PET = "Tier Heilen";
|
||||
HEALBOT_POWER_WORD_SHIELD = "Machtwort: Schild";
|
||||
HEALBOT_INNER_FIRE = "Inneres Feuer";
|
||||
HEALBOT_FEAR_WARD = "Furchtzauberschutz";
|
||||
HEALBOT_ENLIGHTEN = "Enlighten";
|
||||
HEALBOT_REGROWTH = "Nachwachsen";
|
||||
HEALBOT_RENEW = "Erneuerung";
|
||||
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_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",
|
||||
}
|
||||
|
||||
HB_BONUSSCANNER_PREFIX_EQUIP = "Anlegen: ";
|
||||
HB_BONUSSCANNER_PREFIX_SET = "Set: ";
|
||||
HEALBOT_BONUSSCANNER_PREFIX_EQUIP = "Anlegen: ";
|
||||
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 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",
|
||||
["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 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";
|
||||
|
||||
|
||||
HB_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";
|
||||
HB_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%)";
|
||||
HB_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";
|
||||
HB_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%)";
|
||||
HB_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+)";
|
||||
HB_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%)";
|
||||
HB_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%)";
|
||||
HB_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_LESSER_HEAL = "Euer Ziel um (%d+) bis (%d+) Punkt%(e%) heilen";
|
||||
HEALBOT_SPELL_PATTERN_HEAL = "Euer Ziel um (%d+) bis (%d+) Punkt%(e%) heilen";
|
||||
HEALBOT_SPELL_PATTERN_GREATER_HEAL = "Ein langsam zu wirkender Zauber, der ein einzelnes Ziel um (%d+) bis (%d+) Punkt%(e%) heilt";
|
||||
HEALBOT_SPELL_PATTERN_FLASH_HEAL = "Heilt ein befreundetes Ziel um (%d+) bis (%d+) Punkt%(e%)";
|
||||
HEALBOT_SPELL_PATTERN_RENEW2 = "Heilt das Ziel (%d+) Sek. lang um (%d+) bis (%d+) Schadenspunk";
|
||||
HEALBOT_SPELL_PATTERN_RENEW3 = "Heilt das Ziel (%d+) Sek. lang um (%d+) Schadenspunk";
|
||||
HEALBOT_SPELL_PATTERN_SHIELD = "absorbiert dabei (%d+) Punkt%(e%) Schaden. H\195\164lt (%d+) Sek";
|
||||
HEALBOT_SPELL_PATTERN_HEALING_TOUCH = "Heilt ein befreundetes Ziel um (%d+) bis (%d+) Punkt%(e%)";
|
||||
HEALBOT_SPELL_PATTERN_REGROWTH = "Heilt ein befreundetes Ziel um (%d+) bis (%d+) und \195\188ber (%d+) Sek%. um weitere (%d+)";
|
||||
HEALBOT_SPELL_PATTERN_REGROWTH1 = "Heilt ein befreundetes Ziel um (%d+) bis (%d+) und \195\188ber (%d+) Sek%. um weitere (%d+) bis (%d+)";
|
||||
HEALBOT_SPELL_PATTERN_HOLY_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%)";
|
||||
HEALBOT_SPELL_PATTERN_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%)";
|
||||
HEALBOT_SPELL_PATTERN_REJUVENATION = "Heilt das Ziel von (%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$";
|
||||
HB_TOOLTIP_RANGE = "(%d+) m";
|
||||
HB_TOOLTIP_INSTANT_CAST = "Spontanzauber";
|
||||
HB_TOOLTIP_CAST_TIME = "(%d+.?%d*) Sek";
|
||||
HB_TOOLTIP_CHANNELED = "Abgebrochen";
|
||||
HB_HASLEFTRAID = "^([^%s]+) hat die \195\131\197\147berfallgruppe verlassen%.$";
|
||||
HB_HASLEFTPARTY = "^([^%s]+) hat die Gruppe verlassen";
|
||||
HB_YOULEAVETHEGROUP = "Du hast die Gruppe verlassen"
|
||||
HB_YOULEAVETHERAID = "Du hast den Schlachtzug verlassen"
|
||||
HEALBOT_TOOLTIP_MANA = "^(%d+) Mana$";
|
||||
HEALBOT_TOOLTIP_RANGE = "(%d+) m";
|
||||
HEALBOT_TOOLTIP_INSTANT_CAST = "Spontanzauber";
|
||||
HEALBOT_TOOLTIP_CAST_TIME = "(%d+.?%d*) Sek";
|
||||
HEALBOT_TOOLTIP_CHANNELED = "Abgebrochen";
|
||||
HEALBOT_HASLEFTRAID = "^([^%s]+) hat die \195\131\197\147berfallgruppe verlassen%.$";
|
||||
HEALBOT_HASLEFTPARTY = "^([^%s]+) hat die Gruppe verlassen";
|
||||
HEALBOT_YOULEAVETHEGROUP = "Du hast die Gruppe verlassen"
|
||||
HEALBOT_YOULEAVETHERAID = "Du hast den Schlachtzug verlassen"
|
||||
|
||||
-----------------
|
||||
-- Translation --
|
||||
@@ -205,7 +208,7 @@ HEALBOT_OPTIONS_TAB_HEALING = "Heilung";
|
||||
HEALBOT_OPTIONS_TAB_CDC = "Debuffs";
|
||||
HEALBOT_OPTIONS_TAB_SKIN = "Skin"
|
||||
|
||||
HEALBOT_OPTIONS_PANEL_TEXT = "Heilungspanel Optionen:"
|
||||
HEALBOT_OPTIONS_PANEL_TEXT = "Manabalken Optionen:"
|
||||
HEALBOT_OPTIONS_BARALPHA = "Leisten Transparenz";
|
||||
HEALBOT_OPTIONS_BARALPHAINHEAL = "Ankomm.Heilung Transparenz";
|
||||
HEALBOT_OPTIONS_ACTIONLOCKED = "Fenster fixieren";
|
||||
@@ -218,6 +221,7 @@ HEALBOT_OPTIONS_QUALITYRANGE = "Exakter 25 Meter Check in Instanzen";
|
||||
HEALBOT_OPTIONS_INTEGRATECTRA = "Integriere CTRA";
|
||||
HEALBOT_OPTIONS_TOGGLEALTUSE = "Toggle Alt-key";
|
||||
HEALBOT_OPTIONS_PROTECTPVP = "Vermeidung des PvP Flags";
|
||||
HEALBOT_OPTIONS_HIDEPARTY = "Standard-Gruppenfenster ausblenden";
|
||||
HEALBOT_OPTIONS_HEAL_CHATOPT = "Chat Optionen";
|
||||
|
||||
HEALBOT_OPTIONS_SKINTEXT = "Skin"
|
||||
@@ -320,6 +324,14 @@ HEALBOT_CLASSES_RANGES = "Fernkampf";
|
||||
HEALBOT_CLASSES_HEALERS = "Heiler";
|
||||
HEALBOT_CLASSES_CUSTOM = "pers\195\182nlich";
|
||||
|
||||
HEALBOT_OPTIONS_MONITORNO = "Keine";
|
||||
HEALBOT_OPTIONS_MONITORALL = "Alle";
|
||||
HEALBOT_OPTIONS_MONITORMELEE = "Nahkampf";
|
||||
HEALBOT_OPTIONS_MONITORRANGE = "Fernkampf";
|
||||
HEALBOT_OPTIONS_MONITORHEALERS = "Heiler";
|
||||
HEALBOT_OPTIONS_MONITORCUSTOM = "Eigene";
|
||||
HEALBOT_OPTIONS_PETS = "Begleiter";
|
||||
|
||||
HEALBOT_OPTIONS_SHOWTOOLTIP = "Zeige Tooltips";
|
||||
HEALBOT_OPTIONS_SHOWDETTOOLTIP = "Zeige detaillierte Spruchinfos";
|
||||
HEALBOT_OPTIONS_SHOWUNITTOOLTIP = "Zeige Zielinfos";
|
||||
@@ -344,7 +356,6 @@ HEALBOT_WORDS_SEC = "Sek";
|
||||
HEALBOT_WORDS_TO = "zu";
|
||||
HEALBOT_WORDS_CAST = "Zauber"
|
||||
HEALBOT_WORDS_FOR = "f\195\188r";
|
||||
|
||||
end
|
||||
|
||||
|
||||
|
||||
+48
-45
@@ -1,4 +1,4 @@
|
||||
HEALBOT_VERSION = "1.2.2";
|
||||
HEALBOT_VERSION = GetAddOnMetadata("HealBotBlue", "Version");
|
||||
|
||||
-------------
|
||||
-- ENGLISH --
|
||||
@@ -93,6 +93,7 @@ HEALBOT_THORNS = "Thorns";
|
||||
HEALBOT_OMEN_OF_CLARITY = "Omen of Clarity";
|
||||
HEALBOT_INNER_FIRE = "Inner Fire";
|
||||
HEALBOT_FEAR_WARD = "Fear Ward";
|
||||
HEALBOT_ENLIGHTEN = "Enlighten";
|
||||
|
||||
HEALBOT_RESURRECTION = "Resurrection";
|
||||
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_INCDAMHEAL = "Increases damage and healing done by magical spells and effects by up to (%d+)%.";
|
||||
|
||||
HB_BONUSSCANNER_NAMES = {
|
||||
HEALBOT_BONUSSCANNER_NAMES = {
|
||||
HEAL = "Healing",
|
||||
};
|
||||
|
||||
HB_BONUSSCANNER_PREFIX_EQUIP = "Equip: ";
|
||||
HB_BONUSSCANNER_PREFIX_SET = "Set: ";
|
||||
HEALBOT_BONUSSCANNER_PREFIX_EQUIP = "Equip: ";
|
||||
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 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",
|
||||
["Increases Healing"] = "HEAL",
|
||||
["Healing and Spell Damage"] = {"HEAL", "DMG"},
|
||||
@@ -151,7 +152,7 @@ HB_BONUSSCANNER_PATTERNS_GENERIC_LOOKUP = {
|
||||
["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 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";
|
||||
|
||||
|
||||
HB_SPELL_PATTERN_LESSER_HEAL = "Heal your target for (%d+) to (%d+)";
|
||||
HB_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+)";
|
||||
HB_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";
|
||||
HB_SPELL_PATTERN_RENEW1 = "Heals the target of (%d+) damage over (%d+) sec";
|
||||
HB_SPELL_PATTERN_RENEW2 = "Not needed for en";
|
||||
HB_SPELL_PATTERN_RENEW3 = "Not needed for en";
|
||||
HB_SPELL_PATTERN_SHIELD = "absorbing (%d+) damage. Lasts (%d+) sec.";
|
||||
HB_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";
|
||||
HB_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+)";
|
||||
HB_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+)";
|
||||
HB_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";
|
||||
HB_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_LESSER_HEAL = "Heal your target for (%d+) to (%d+)";
|
||||
HEALBOT_SPELL_PATTERN_HEAL = "Heal your target for (%d+) to (%d+)";
|
||||
HEALBOT_SPELL_PATTERN_GREATER_HEAL = "A slow casting spell that heals a single target for (%d+) to (%d+)";
|
||||
HEALBOT_SPELL_PATTERN_FLASH_HEAL = "Heals a friendly target for (%d+) to (%d+)";
|
||||
HEALBOT_SPELL_PATTERN_RENEW = "Heals the target of (%d+) to (%d+) damage over (%d+) sec";
|
||||
HEALBOT_SPELL_PATTERN_RENEW1 = "Heals the target of (%d+) damage over (%d+) sec";
|
||||
HEALBOT_SPELL_PATTERN_RENEW2 = "Not needed for en";
|
||||
HEALBOT_SPELL_PATTERN_RENEW3 = "Not needed for en";
|
||||
HEALBOT_SPELL_PATTERN_SHIELD = "absorbing (%d+) damage. Lasts (%d+) sec.";
|
||||
HEALBOT_SPELL_PATTERN_HEALING_TOUCH = "Heals a friendly target for (%d+) to (%d+)";
|
||||
HEALBOT_SPELL_PATTERN_REGROWTH = "Heals a friendly target for (%d+) to (%d+) and another (%d+) over (%d+) sec";
|
||||
HEALBOT_SPELL_PATTERN_REGROWTH1 = "Heals a friendly target for (%d+) to (%d+) and another (%d+) to (%d+) over (%d+) sec";
|
||||
HEALBOT_SPELL_PATTERN_HOLY_LIGHT = "Heals a friendly target for (%d+) to (%d+)";
|
||||
HEALBOT_SPELL_PATTERN_FLASH_OF_LIGHT = "Heals a friendly target for (%d+) to (%d+)";
|
||||
HEALBOT_SPELL_PATTERN_HEALING_WAVE = "Heals a friendly target for (%d+) to (%d+)";
|
||||
HEALBOT_SPELL_PATTERN_LESSER_HEALING_WAVE = "Heals a friendly target for (%d+) to (%d+)";
|
||||
HEALBOT_SPELL_PATTERN_REJUVENATION = "Heals the target for (%d+) over (%d+) sec";
|
||||
HEALBOT_SPELL_PATTERN_REJUVENATION1 = "Heals the target for (%d+) to (%d+) over (%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$";
|
||||
HB_TOOLTIP_RANGE = "(%d+) yd range";
|
||||
HB_TOOLTIP_INSTANT_CAST = "Instant cast";
|
||||
HB_TOOLTIP_CAST_TIME = "(%d+.?%d*) sec cast";
|
||||
HB_TOOLTIP_CHANNELED = "Channeled";
|
||||
HB_HASLEFTRAID = "^([^%s]+) has left the raid group$";
|
||||
HB_HASLEFTPARTY = "^([^%s]+) leaves the party$";
|
||||
HB_YOULEAVETHEGROUP = "You leave the group."
|
||||
HB_YOULEAVETHERAID = "You have left the raid group"
|
||||
HEALBOT_TOOLTIP_MANA = "^(%d+) Mana$";
|
||||
HEALBOT_TOOLTIP_RANGE = "(%d+) yd range";
|
||||
HEALBOT_TOOLTIP_INSTANT_CAST = "Instant cast";
|
||||
HEALBOT_TOOLTIP_CAST_TIME = "(%d+.?%d*) sec cast";
|
||||
HEALBOT_TOOLTIP_CHANNELED = "Channeled";
|
||||
HEALBOT_HASLEFTRAID = "^([^%s]+) has left the raid group$";
|
||||
HEALBOT_HASLEFTPARTY = "^([^%s]+) leaves the party$";
|
||||
HEALBOT_YOULEAVETHEGROUP = "You leave the group."
|
||||
HEALBOT_YOULEAVETHERAID = "You have left the raid group"
|
||||
|
||||
|
||||
-----------------
|
||||
@@ -230,7 +231,7 @@ HEALBOT_OPTIONS_TAB_SKIN = "Skin";
|
||||
HEALBOT_OPTIONS_TAB_BUFF = "Buff";
|
||||
HEALBOT_OPTIONS_TAB_CHAT = "Chat";
|
||||
|
||||
HEALBOT_OPTIONS_PANEL_TEXT = "Healing panel options:"
|
||||
HEALBOT_OPTIONS_PANEL_TEXT = "Mana bar options:"
|
||||
HEALBOT_OPTIONS_BARALPHA = "Bar opacity";
|
||||
HEALBOT_OPTIONS_BARALPHAINHEAL= "Incoming heals opacity";
|
||||
HEALBOT_OPTIONS_ACTIONLOCKED = "Lock position";
|
||||
@@ -243,6 +244,7 @@ HEALBOT_OPTIONS_QUALITYRANGE = "Exact 27yard range check in instances";
|
||||
--HEALBOT_OPTIONS_INTEGRATECTRA = "Integrate CTRA";
|
||||
HEALBOT_OPTIONS_TOGGLEALTUSE = "Toggle Alt-key";
|
||||
HEALBOT_OPTIONS_PROTECTPVP = "Avoid accidental PvP flagging";
|
||||
HEALBOT_OPTIONS_HIDEPARTY = "Hide Default Party Frames";
|
||||
HEALBOT_OPTIONS_HEAL_CHATOPT = "Chat Options";
|
||||
|
||||
HEALBOT_OPTIONS_SKINTEXT = "Use skin"
|
||||
@@ -321,9 +323,10 @@ HEALBOT_OPTIONS_HEAL_BUTTONS = "Healing bars";
|
||||
HEALBOT_OPTIONS_EMERGFILTER = "Show extra bars for";
|
||||
|
||||
HEALBOT_OPTIONS_GROUPHEALS = "Group";
|
||||
HEALBOT_OPTIONS_GROUPHEALS_LABEL = "Group Only";
|
||||
HEALBOT_OPTIONS_TANKHEALS = "Main tanks";
|
||||
HEALBOT_OPTIONS_TARGETHEALS = "Targets";
|
||||
HEALBOT_OPTIONS_EMERGENCYHEALS= "Extra";
|
||||
HEALBOT_OPTIONS_EMERGENCYHEALS= "Raid / Extra";
|
||||
HEALBOT_OPTIONS_HEALLEVEL = "Healing Level";
|
||||
HEALBOT_OPTIONS_ALERTLEVEL = "Alert Level";
|
||||
HEALBOT_OPTIONS_OVERHEAL = "Show Abort button when overhealing"
|
||||
@@ -358,6 +361,14 @@ HEALBOT_CLASSES_RANGES = "Ranged";
|
||||
HEALBOT_CLASSES_HEALERS = "Healers";
|
||||
HEALBOT_CLASSES_CUSTOM = "Custom";
|
||||
|
||||
HEALBOT_OPTIONS_MONITORNO = "None";
|
||||
HEALBOT_OPTIONS_MONITORALL = "All";
|
||||
HEALBOT_OPTIONS_MONITORMELEE = "Melee";
|
||||
HEALBOT_OPTIONS_MONITORRANGE = "Ranged";
|
||||
HEALBOT_OPTIONS_MONITORHEALERS = "Healers";
|
||||
HEALBOT_OPTIONS_MONITORCUSTOM = "Custom";
|
||||
HEALBOT_OPTIONS_PETS = "Pets";
|
||||
|
||||
HEALBOT_OPTIONS_SHOWTOOLTIP = "Show tooltips";
|
||||
HEALBOT_OPTIONS_SHOWDETTOOLTIP = "Show detailed spell information";
|
||||
HEALBOT_OPTIONS_SHOWUNITTOOLTIP = "Show target information";
|
||||
@@ -377,11 +388,3 @@ HEALBOT_WORDS_SEC = "sec";
|
||||
HEALBOT_WORDS_TO = "to";
|
||||
HEALBOT_WORDS_CAST = "Cast"
|
||||
HEALBOT_WORDS_FOR = "for";
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
+44
-33
@@ -61,6 +61,9 @@ HEALBOT_FLASH_HEAL = "Soins rapides";
|
||||
HEALBOT_FLASH_OF_LIGHT = "Eclair lumineux";
|
||||
HEALBOT_HOLY_SHOCK = "Holy Shock";
|
||||
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_HEAL = "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_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",
|
||||
};
|
||||
|
||||
HB_BONUSSCANNER_PREFIX_EQUIP = "Equip\195\169 : ";
|
||||
HB_BONUSSCANNER_PREFIX_SET = "Complet : ";
|
||||
HEALBOT_BONUSSCANNER_PREFIX_EQUIP = "Equip\195\169 : ";
|
||||
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 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" },
|
||||
@@ -127,39 +130,39 @@ HB_BONUSSCANNER_PATTERNS_PASSIVE = {
|
||||
};
|
||||
|
||||
|
||||
HB_BONUSSCANNER_PATTERNS_GENERIC_LOOKUP = {
|
||||
HEALBOT_BONUSSCANNER_PATTERNS_GENERIC_LOOKUP = {
|
||||
["Sorts de Soins"] = "HEAL",
|
||||
["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";
|
||||
HB_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";
|
||||
HB_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";
|
||||
HB_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";
|
||||
HB_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";
|
||||
HB_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";
|
||||
HB_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";
|
||||
HB_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";
|
||||
HB_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_LESSER_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";
|
||||
HEALBOT_SPELL_PATTERN_GREATER_HEAL = "Une longue incantation qui rend (%d+) \195\160 (%d+) points de vie \195\160 une cible unique";
|
||||
HEALBOT_SPELL_PATTERN_FLASH_HEAL = "Rend (%d+) \195\160 (%d+) points de vie";
|
||||
HEALBOT_SPELL_PATTERN_RENEW = "Rend (%d+) \195\160 (%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";
|
||||
HEALBOT_SPELL_PATTERN_HEALING_TOUCH = "Rend (%d+) \195\160 (%d+) points de vie";
|
||||
HEALBOT_SPELL_PATTERN_REGROWTH = "Soigne une cible amie pour (%d+) \195\160 (%d+) puis pour (%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";
|
||||
HEALBOT_SPELL_PATTERN_HOLY_LIGHT = "Rend (%d+) \195\160 (%d+) points de vie";
|
||||
HEALBOT_SPELL_PATTERN_FLASH_OF_LIGHT = "Rend (%d+) \195\160 (%d+) points de vie";
|
||||
HEALBOT_SPELL_PATTERN_HEALING_WAVE = "Rend (%d+) \195\160 (%d+) points de vie";
|
||||
HEALBOT_SPELL_PATTERN_LESSER_HEALING_WAVE = "Rend (%d+) \195\160 (%d+) points de vie";
|
||||
HEALBOT_SPELL_PATTERN_REJUVENATION = "Soigne la cible de (%d+) durant (%d+) sec";
|
||||
HEALBOT_SPELL_PATTERN_REJUVENATION1 = "Soigne la cible de (%d+) a (%d+) durant (%d+) sec";
|
||||
HEALBOT_SPELL_PATTERN_SHIELD = "absorbe (%d+) points de d\195\169g\195\162ts. 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+)$";
|
||||
HB_TOOLTIP_INSTANT_CAST = 'Incantation imm\195\169diate';
|
||||
HB_TOOLTIP_CAST_TIME = '(%d+.?%d*) sec';
|
||||
HEALBOT_TOOLTIP_MANA = "^Mana : (%d+)$";
|
||||
HEALBOT_TOOLTIP_INSTANT_CAST = 'Incantation imm\195\169diate';
|
||||
HEALBOT_TOOLTIP_CAST_TIME = '(%d+.?%d*) sec';
|
||||
|
||||
HB_TOOLTIP_RANGE = "de (%d+) m"
|
||||
HB_TOOLTIP_CHANNELED = "Focaliser"
|
||||
HB_HASLEFTRAID = "^([^%s]+) a quitt\195\131\194\169 le groupe de raid$";
|
||||
HB_HASLEFTPARTY = "^([^%s]+) has left the party$"; -- *************** needs French translation ***************
|
||||
HB_YOULEAVETHEGROUP = "You leave the group" -- *************** needs translation ***************
|
||||
HB_YOULEAVETHERAID = "You have left the raid group" -- *************** needs translation ***************
|
||||
HEALBOT_TOOLTIP_RANGE = "de (%d+) m"
|
||||
HEALBOT_TOOLTIP_CHANNELED = "Focaliser"
|
||||
HEALBOT_HASLEFTRAID = "^([^%s]+) a quitt\195\131\194\169 le groupe de raid$";
|
||||
HEALBOT_HASLEFTPARTY = "^([^%s]+) has left the party$"; -- *************** needs French translation ***************
|
||||
HEALBOT_YOULEAVETHEGROUP = "You leave the group" -- *************** needs translation ***************
|
||||
HEALBOT_YOULEAVETHERAID = "You have left the raid group" -- *************** needs translation ***************
|
||||
|
||||
-----------------
|
||||
-- Translation --
|
||||
@@ -188,7 +191,7 @@ HEALBOT_OPTIONS_TAB_CDC = "Cure";
|
||||
HEALBOT_OPTIONS_TAB_SKIN = "Skin"
|
||||
|
||||
|
||||
HEALBOT_OPTIONS_PANEL_TEXT = "Panneau d'option de soin:"
|
||||
HEALBOT_OPTIONS_PANEL_TEXT = "Options de barre de mana:"
|
||||
HEALBOT_OPTIONS_ACTIONLOCKED = "Bloquer la position";
|
||||
HEALBOT_OPTIONS_GROWUPWARDS = "Monter";
|
||||
HEALBOT_OPTIONS_AUTOSHOW = "Ouvrir automatiquement";
|
||||
@@ -200,6 +203,7 @@ HEALBOT_OPTIONS_QUALITYRANGE = "Exact 27yard range check in instances";
|
||||
HEALBOT_OPTIONS_INTEGRATECTRA = "Intregrer CTRA";
|
||||
HEALBOT_OPTIONS_TOGGLEALTUSE = "Toggle Alt-key";
|
||||
HEALBOT_OPTIONS_PROTECTPVP = "Avoid accidental PvP flagging";
|
||||
HEALBOT_OPTIONS_HIDEPARTY = "Masquer les cadres de groupe par défaut";
|
||||
|
||||
|
||||
HEALBOT_OPTIONS_ITEMS = "Objets";
|
||||
@@ -259,6 +263,14 @@ HEALBOT_CLASSES_RANGES = "Distances";
|
||||
HEALBOT_CLASSES_HEALERS = "Soigneurs";
|
||||
HEALBOT_CLASSES_CUSTOM = "Divers";
|
||||
|
||||
HEALBOT_OPTIONS_MONITORNO = "Aucun";
|
||||
HEALBOT_OPTIONS_MONITORALL = "Tous";
|
||||
HEALBOT_OPTIONS_MONITORMELEE = "M\195\169l\195\169e";
|
||||
HEALBOT_OPTIONS_MONITORRANGE = "\195\128 distance";
|
||||
HEALBOT_OPTIONS_MONITORHEALERS = "Soigneurs";
|
||||
HEALBOT_OPTIONS_MONITORCUSTOM = "Personnalis\195\169";
|
||||
HEALBOT_OPTIONS_PETS = "Familiers";
|
||||
|
||||
HEALBOT_OPTIONS_BARALPHAINHEAL= "Incoming heal opacity"; -- *************** needs French translation ***************
|
||||
|
||||
HEALBOT_OPTIONS_CDCBUTTONS = "Curing buttons"; -- *************** needs French translation ***************
|
||||
@@ -325,7 +337,6 @@ HEALBOT_WORDS_SEC = "sec"; -- *************** needs translati
|
||||
HEALBOT_WORDS_TO = "to"; -- *************** needs translation ***************
|
||||
HEALBOT_WORDS_CAST = "Cast" -- *************** needs translation ***************
|
||||
HEALBOT_WORDS_FOR = "for"; -- *************** needs translation ***************
|
||||
|
||||
end
|
||||
|
||||
|
||||
|
||||
+45
-34
@@ -61,6 +61,9 @@ HEALBOT_PRAYER_OF_HEALING = "치유의 기원";
|
||||
HEALBOT_CHAIN_HEAL = "연쇄 치유";
|
||||
|
||||
HEALBOT_POWER_WORD_FORTITUDE = "신의 권능: 인내";
|
||||
HEALBOT_INNER_FIRE = "내면의 열정";
|
||||
HEALBOT_FEAR_WARD = "공포의 결계";
|
||||
HEALBOT_ENLIGHTEN = "Enlighten";
|
||||
HEALBOT_MARK_OF_THE_WILD = "야생의 징표";
|
||||
HEALBOT_GREATER_BLESSING_OF_SALVATION = "상급 구원의 축복";
|
||||
|
||||
@@ -97,20 +100,20 @@ HEALBOT_GREATER_BLESSING_OF_SALVATION = "상급 구원의 축복";
|
||||
HEALBOT_LIBRARY_INCHEAL = "모든 주문 및 효과에 의한 치유량이 최대 (%d+)만큼 증가합니다%.";
|
||||
HEALBOT_LIBRARY_INCDAMHEAL = "모든 주문 및 효과에 의한 피해와 치유량이 최대 (%d+)만큼 증가합니다%.";
|
||||
|
||||
HB_BONUSSCANNER_NAMES = {
|
||||
HEALBOT_BONUSSCANNER_NAMES = {
|
||||
HEAL = "치유량",
|
||||
};
|
||||
|
||||
HB_BONUSSCANNER_PREFIX_EQUIP = "착용 효과: ";
|
||||
HB_BONUSSCANNER_PREFIX_SET = "세트 효과: ";
|
||||
HEALBOT_BONUSSCANNER_PREFIX_EQUIP = "착용 효과: ";
|
||||
HEALBOT_BONUSSCANNER_PREFIX_SET = "세트 효과: ";
|
||||
|
||||
HB_BONUSSCANNER_PATTERNS_PASSIVE = {
|
||||
HEALBOT_BONUSSCANNER_PATTERNS_PASSIVE = {
|
||||
{ pattern = "모든 주문 및 효과에 의한 치유량이 최대 (%d+)만큼 증가합니다%.", effect = "HEAL" },
|
||||
{ pattern = "주문과 효과에 의한 치유량이 최대 (%d+)만큼 증가합니다%.", effect = "HEAL" },
|
||||
{ pattern = "모든 주문 및 효과에 의한 피해와 치유량이 최대 (%d+)만큼 증가합니다%.", effect = {"HEAL", "DMG"} },
|
||||
};
|
||||
|
||||
HB_BONUSSCANNER_PATTERNS_GENERIC_LOOKUP = {
|
||||
HEALBOT_BONUSSCANNER_PATTERNS_GENERIC_LOOKUP = {
|
||||
["치유 주문"] = "HEAL",
|
||||
["치유량 증가"] = "HEAL",
|
||||
["치유 효과 증가"] = "HEAL",
|
||||
@@ -120,7 +123,7 @@ HEALBOT_GREATER_BLESSING_OF_SALVATION = "상급 구원의 축복";
|
||||
["치유 및 공격 주문 위력"] = {"HEAL", "DMG"},
|
||||
};
|
||||
|
||||
HB_BONUSSCANNER_PATTERNS_OTHER = {
|
||||
HEALBOT_BONUSSCANNER_PATTERNS_OTHER = {
|
||||
{ pattern = "잔달라 모조의 인장", effect = {"DMG", "HEAL"}, value = 18 },
|
||||
{ pattern = "잔달라 평온의 인장", effect = "HEAL", value = 33 },
|
||||
|
||||
@@ -132,33 +135,33 @@ HEALBOT_GREATER_BLESSING_OF_SALVATION = "상급 구원의 축복";
|
||||
{ pattern = "반짝이는 마나 오일", effect = { "MANAREG", "HEAL"}, value = {12, 25} },
|
||||
};
|
||||
|
||||
HB_SPELL_PATTERN_LESSER_HEAL = "대상의 생명력을 (%d+)~(%d+)만큼 회복시킵니다";
|
||||
HB_SPELL_PATTERN_HEAL = "대상의 생명력을 (%d+)~(%d+)만큼 회복시킵니다";
|
||||
HB_SPELL_PATTERN_GREATER_HEAL = "대상의 생명력을 (%d+)~(%d+)만큼 회복시킵니다";
|
||||
HB_SPELL_PATTERN_FLASH_HEAL = "대상의 생명력을 (%d+)~(%d+)만큼 회복시킵니다";
|
||||
HB_SPELL_PATTERN_RENEW = "(%d+)초에 걸쳐 대상의 생명력을 총 (%d+)~(%d+)만큼 회복시킵니다";
|
||||
HB_SPELL_PATTERN_RENEW1 = "(%d+)초에 걸쳐 대상의 생명력을 총 (%d+)만큼 회복시킵니다";
|
||||
HB_SPELL_PATTERN_SHIELD = "(%d+)의 피해를 흡수합니다. (%d+)초 동안 지속됩니다.";
|
||||
HB_SPELL_PATTERN_HEALING_TOUCH = "대상의 생명력을 (%d+)~(%d+)만큼 회복시킵니다";
|
||||
HB_SPELL_PATTERN_REGROWTH = "대상의 생명력을 (%d+)~(%d+)만큼 회복시키고 추가로 (%d+)초에 걸쳐 총 (%d+)의 생명력을 회복시킵니다";
|
||||
HB_SPELL_PATTERN_REGROWTH1 = "대상의 생명력을 (%d+)~(%d+)만큼 회복시키고 추가로 (%d+)초에 걸쳐 총 (%d+)~(%d+)의 생명력을 회복시킵니다";
|
||||
HB_SPELL_PATTERN_HOLY_LIGHT = "대상의 생명력을 (%d+)~(%d+)만큼 회복시킵니다";
|
||||
HB_SPELL_PATTERN_FLASH_OF_LIGHT = "대상의 생명력을 (%d+)~(%d+)만큼 회복시킵니다";
|
||||
HB_SPELL_PATTERN_HEALING_WAVE = "대상의 생명력을 (%d+)~(%d+)만큼 회복시킵니다";
|
||||
HB_SPELL_PATTERN_LESSER_HEALING_WAVE = "대상의 생명력을 (%d+)~(%d+)만큼 회복시킵니다";
|
||||
HB_SPELL_PATTERN_REJUVENATION = "(%d+)에 걸쳐 (%d+)의 생명력을 회복시킵니다";
|
||||
HB_SPELL_PATTERN_REJUVENATION1 = "(%d+)에 걸쳐 (%d+)~(%d+)의 생명력을 회복시킵니다";
|
||||
HB_SPELL_PATTERN_MEND_PET = "야수에 정신을 집중하는 동안 매초마다 (%d+)의 생명력을 치료합니다";
|
||||
HEALBOT_SPELL_PATTERN_LESSER_HEAL = "대상의 생명력을 (%d+)~(%d+)만큼 회복시킵니다";
|
||||
HEALBOT_SPELL_PATTERN_HEAL = "대상의 생명력을 (%d+)~(%d+)만큼 회복시킵니다";
|
||||
HEALBOT_SPELL_PATTERN_GREATER_HEAL = "대상의 생명력을 (%d+)~(%d+)만큼 회복시킵니다";
|
||||
HEALBOT_SPELL_PATTERN_FLASH_HEAL = "대상의 생명력을 (%d+)~(%d+)만큼 회복시킵니다";
|
||||
HEALBOT_SPELL_PATTERN_RENEW = "(%d+)초에 걸쳐 대상의 생명력을 총 (%d+)~(%d+)만큼 회복시킵니다";
|
||||
HEALBOT_SPELL_PATTERN_RENEW1 = "(%d+)초에 걸쳐 대상의 생명력을 총 (%d+)만큼 회복시킵니다";
|
||||
HEALBOT_SPELL_PATTERN_SHIELD = "(%d+)의 피해를 흡수합니다. (%d+)초 동안 지속됩니다.";
|
||||
HEALBOT_SPELL_PATTERN_HEALING_TOUCH = "대상의 생명력을 (%d+)~(%d+)만큼 회복시킵니다";
|
||||
HEALBOT_SPELL_PATTERN_REGROWTH = "대상의 생명력을 (%d+)~(%d+)만큼 회복시키고 추가로 (%d+)초에 걸쳐 총 (%d+)의 생명력을 회복시킵니다";
|
||||
HEALBOT_SPELL_PATTERN_REGROWTH1 = "대상의 생명력을 (%d+)~(%d+)만큼 회복시키고 추가로 (%d+)초에 걸쳐 총 (%d+)~(%d+)의 생명력을 회복시킵니다";
|
||||
HEALBOT_SPELL_PATTERN_HOLY_LIGHT = "대상의 생명력을 (%d+)~(%d+)만큼 회복시킵니다";
|
||||
HEALBOT_SPELL_PATTERN_FLASH_OF_LIGHT = "대상의 생명력을 (%d+)~(%d+)만큼 회복시킵니다";
|
||||
HEALBOT_SPELL_PATTERN_HEALING_WAVE = "대상의 생명력을 (%d+)~(%d+)만큼 회복시킵니다";
|
||||
HEALBOT_SPELL_PATTERN_LESSER_HEALING_WAVE = "대상의 생명력을 (%d+)~(%d+)만큼 회복시킵니다";
|
||||
HEALBOT_SPELL_PATTERN_REJUVENATION = "(%d+)에 걸쳐 (%d+)의 생명력을 회복시킵니다";
|
||||
HEALBOT_SPELL_PATTERN_REJUVENATION1 = "(%d+)에 걸쳐 (%d+)~(%d+)의 생명력을 회복시킵니다";
|
||||
HEALBOT_SPELL_PATTERN_MEND_PET = "야수에 정신을 집중하는 동안 매초마다 (%d+)의 생명력을 치료합니다";
|
||||
|
||||
HB_TOOLTIP_MANA = "^마나 (%d+)$";
|
||||
HB_TOOLTIP_RANGE = "(%d+)미터";
|
||||
HB_TOOLTIP_INSTANT_CAST = "즉시 시전";
|
||||
HB_TOOLTIP_CAST_TIME = "(%d+.?%d*)초";
|
||||
HB_TOOLTIP_CHANNELED = "채널링";
|
||||
HB_HASLEFTRAID = "^([^%s]+)님이 공격대를 떠났습니다$";
|
||||
HB_HASLEFTPARTY = "^([^%s]+)님이 파티를 떠났습니다$";
|
||||
HB_YOULEAVETHEGROUP = "당신은 파티를 떠났습니다"
|
||||
HB_YOULEAVETHERAID = "공격대를 떠났습니다"
|
||||
HEALBOT_TOOLTIP_MANA = "^마나 (%d+)$";
|
||||
HEALBOT_TOOLTIP_RANGE = "(%d+)미터";
|
||||
HEALBOT_TOOLTIP_INSTANT_CAST = "즉시 시전";
|
||||
HEALBOT_TOOLTIP_CAST_TIME = "(%d+.?%d*)초";
|
||||
HEALBOT_TOOLTIP_CHANNELED = "채널링";
|
||||
HEALBOT_HASLEFTRAID = "^([^%s]+)님이 공격대를 떠났습니다$";
|
||||
HEALBOT_HASLEFTPARTY = "^([^%s]+)님이 파티를 떠났습니다$";
|
||||
HEALBOT_YOULEAVETHEGROUP = "당신은 파티를 떠났습니다"
|
||||
HEALBOT_YOULEAVETHERAID = "공격대를 떠났습니다"
|
||||
|
||||
-----------------
|
||||
-- Translation --
|
||||
@@ -184,7 +187,7 @@ HEALBOT_GREATER_BLESSING_OF_SALVATION = "상급 구원의 축복";
|
||||
HEALBOT_OPTIONS_TAB_CDC = "치료";
|
||||
HEALBOT_OPTIONS_TAB_SKIN = "스킨"
|
||||
|
||||
HEALBOT_OPTIONS_PANEL_TEXT = "치유 패널 옵션:"
|
||||
HEALBOT_OPTIONS_PANEL_TEXT = "마나 바 옵션:"
|
||||
HEALBOT_OPTIONS_BARALPHA = "바 불투명도";
|
||||
HEALBOT_OPTIONS_BARALPHAINHEAL = "들어오는 치유 불투명도";
|
||||
HEALBOT_OPTIONS_ACTIONLOCKED = "위치 고정";
|
||||
@@ -197,6 +200,7 @@ HEALBOT_GREATER_BLESSING_OF_SALVATION = "상급 구원의 축복";
|
||||
--HEALBOT_OPTIONS_INTEGRATECTRA = "CTRA 연동";
|
||||
HEALBOT_OPTIONS_TOGGLEALTUSE = "Alt-key 토글";
|
||||
HEALBOT_OPTIONS_PROTECTPVP = "우발적 PvP 상태 피함";
|
||||
HEALBOT_OPTIONS_HIDEPARTY = "기본 파티 프레임 숨김";
|
||||
HEALBOT_OPTIONS_HEAL_CHATOPT = "대화창 옵션";
|
||||
|
||||
HEALBOT_OPTIONS_SKINTEXT = "스킨 사용"
|
||||
@@ -302,6 +306,14 @@ HEALBOT_GREATER_BLESSING_OF_SALVATION = "상급 구원의 축복";
|
||||
HEALBOT_CLASSES_HEALERS = "힐러들";
|
||||
HEALBOT_CLASSES_CUSTOM = "사용자";
|
||||
|
||||
HEALBOT_OPTIONS_MONITORNO = "없음";
|
||||
HEALBOT_OPTIONS_MONITORALL = "모두";
|
||||
HEALBOT_OPTIONS_MONITORMELEE = "근접";
|
||||
HEALBOT_OPTIONS_MONITORRANGE = "원거리";
|
||||
HEALBOT_OPTIONS_MONITORHEALERS = "힐러";
|
||||
HEALBOT_OPTIONS_MONITORCUSTOM = "사용자 정의";
|
||||
HEALBOT_OPTIONS_PETS = "소환수";
|
||||
|
||||
HEALBOT_OPTIONS_SHOWTOOLTIP = "툴팁 표시";
|
||||
HEALBOT_OPTIONS_SHOWDETTOOLTIP = "주문 정보 표시";
|
||||
HEALBOT_OPTIONS_SHOWUNITTOOLTIP = "대상 정보 표시";
|
||||
@@ -321,7 +333,6 @@ HEALBOT_GREATER_BLESSING_OF_SALVATION = "상급 구원의 축복";
|
||||
HEALBOT_WORDS_TO = "~";
|
||||
HEALBOT_WORDS_CAST = "시전"
|
||||
HEALBOT_WORDS_FOR = "for";
|
||||
|
||||
end
|
||||
|
||||
|
||||
|
||||
+28
-2
@@ -1,6 +1,32 @@
|
||||
-- HealBot_Model.lua
|
||||
-- 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
|
||||
|
||||
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 = {
|
||||
observers = {},
|
||||
units = {},
|
||||
@@ -32,11 +58,11 @@ function HealBot_Model:RegisterObserver(event, callback)
|
||||
table.insert(self.observers[event], callback)
|
||||
end
|
||||
|
||||
function HealBot_Model:NotifyObservers(event, unitID, ...)
|
||||
function HealBot_Model:NotifyObservers(event, unitID, arg1, arg2)
|
||||
if self.observers[event] then
|
||||
local len = table.getn(self.observers[event])
|
||||
for i = 1, len do
|
||||
self.observers[event][i](unitID, unpack(arg))
|
||||
self.observers[event][i](unitID, arg1, arg2)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
+96
-1503
File diff suppressed because it is too large
Load Diff
+16
-2576
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,82 @@
|
||||
function HealBot_Options_AutoSwap_OnClick(this)
|
||||
if this:GetChecked() then
|
||||
HealBot_Config.AutoSwap_Enabled = 1
|
||||
else
|
||||
HealBot_Config.AutoSwap_Enabled = 0
|
||||
end
|
||||
HealBot_Action_PartyChanged()
|
||||
end
|
||||
|
||||
function HealBot_Options_Auto_Initialize()
|
||||
local dropdownName = UIDROPDOWNMENU_OPEN_MENU
|
||||
if not dropdownName then return end
|
||||
local dropdownFrame = getglobal(dropdownName)
|
||||
if not dropdownFrame then return end
|
||||
local id = dropdownFrame:GetID()
|
||||
if not id then return end
|
||||
|
||||
for i=1, getn(HealBot_Config.Skins), 1 do
|
||||
local info = {}
|
||||
info.text = HealBot_Config.Skins[i]
|
||||
info.func = HealBot_Options_Auto_OnSelect
|
||||
info.value = id
|
||||
if not HealBot_Config.AutoSwap_Profiles then HealBot_Config.AutoSwap_Profiles = {} end
|
||||
if HealBot_Config.AutoSwap_Profiles[id] == HealBot_Config.Skins[i] then
|
||||
info.checked = 1
|
||||
else
|
||||
info.checked = nil
|
||||
end
|
||||
UIDropDownMenu_AddButton(info)
|
||||
end
|
||||
end
|
||||
|
||||
function HealBot_Options_Auto_OnSelect()
|
||||
local skin = this:GetText()
|
||||
local id = this.value
|
||||
if not id or not skin then return end
|
||||
|
||||
if not HealBot_Config.AutoSwap_Profiles then HealBot_Config.AutoSwap_Profiles = {} end
|
||||
HealBot_Config.AutoSwap_Profiles[id] = skin
|
||||
|
||||
local dropdowns = {
|
||||
"HealBot_Options_Auto_Solo",
|
||||
"HealBot_Options_Auto_Party",
|
||||
"HealBot_Options_Auto_Raid15",
|
||||
"HealBot_Options_Auto_Raid25",
|
||||
"HealBot_Options_Auto_Raid40"
|
||||
}
|
||||
local dropdownName = dropdowns[id]
|
||||
local dropdownFrame = getglobal(dropdownName)
|
||||
HealBot_UIDropDownMenu_SetSelectedValue(dropdownFrame, skin)
|
||||
UIDropDownMenu_SetText(skin, dropdownFrame)
|
||||
|
||||
HealBot_Action_PartyChanged()
|
||||
end
|
||||
|
||||
function HealBot_Options_Auto_OnShow(this)
|
||||
if HealBot_Config.AutoSwap_Enabled == 1 then
|
||||
HealBot_Options_AutoSwap:SetChecked(1)
|
||||
else
|
||||
HealBot_Options_AutoSwap:SetChecked(nil)
|
||||
end
|
||||
|
||||
local dropdowns = {
|
||||
"HealBot_Options_Auto_Solo",
|
||||
"HealBot_Options_Auto_Party",
|
||||
"HealBot_Options_Auto_Raid15",
|
||||
"HealBot_Options_Auto_Raid25",
|
||||
"HealBot_Options_Auto_Raid40"
|
||||
}
|
||||
for id, name in ipairs(dropdowns) do
|
||||
local dropdownFrame = getglobal(name)
|
||||
if dropdownFrame then
|
||||
UIDropDownMenu_SetWidth(150, dropdownFrame)
|
||||
if not HealBot_Config.AutoSwap_Profiles then HealBot_Config.AutoSwap_Profiles = {} end
|
||||
local skin = HealBot_Config.AutoSwap_Profiles[id]
|
||||
if skin then
|
||||
HealBot_UIDropDownMenu_SetSelectedValue(dropdownFrame, skin)
|
||||
UIDropDownMenu_SetText(skin, dropdownFrame)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,152 @@
|
||||
<Ui xmlns="http://www.blizzard.com/wow/ui/"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://www.blizzard.com/wow/ui/ ..\FrameXML\UI.xsd">
|
||||
<Script file="HealBot_Options_Auto.lua" />
|
||||
<Frame name="HealBot_Options_Panel8" parent="HealBot_Options" hidden="true" setAllPoints="true">
|
||||
<Frames>
|
||||
<CheckButton name="HealBot_Options_AutoSwap" inherits="OptionsCheckButtonTemplate">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="25" y="-30" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>
|
||||
getglobal(this:GetName().."Text"):SetText("Enable Auto-Swap");
|
||||
</OnLoad>
|
||||
<OnClick>
|
||||
HealBot_Options_AutoSwap_OnClick(this);
|
||||
</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
|
||||
<Frame name="HealBot_Options_Auto_Solo" inherits="UIDropDownMenuTemplate" id="1">
|
||||
<Layers>
|
||||
<Layer level="BACKGROUND">
|
||||
<FontString name="$parentLabel" text="Solo Skin:" inherits="GameFontNormalSmall">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset><AbsDimension x="-10" y="15" /></Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset><AbsDimension x="30" y="-80" /></Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>
|
||||
UIDropDownMenu_Initialize(this, HealBot_Options_Auto_Initialize);
|
||||
</OnLoad>
|
||||
</Scripts>
|
||||
</Frame>
|
||||
|
||||
<Frame name="HealBot_Options_Auto_Party" inherits="UIDropDownMenuTemplate" id="2">
|
||||
<Layers>
|
||||
<Layer level="BACKGROUND">
|
||||
<FontString name="$parentLabel" text="Party Skin:" inherits="GameFontNormalSmall">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset><AbsDimension x="-10" y="15" /></Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset><AbsDimension x="30" y="-130" /></Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>
|
||||
UIDropDownMenu_Initialize(this, HealBot_Options_Auto_Initialize);
|
||||
</OnLoad>
|
||||
</Scripts>
|
||||
</Frame>
|
||||
|
||||
<Frame name="HealBot_Options_Auto_Raid15" inherits="UIDropDownMenuTemplate" id="3">
|
||||
<Layers>
|
||||
<Layer level="BACKGROUND">
|
||||
<FontString name="$parentLabel" text="Raid 15 Skin:" inherits="GameFontNormalSmall">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset><AbsDimension x="-10" y="15" /></Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset><AbsDimension x="30" y="-180" /></Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>
|
||||
UIDropDownMenu_Initialize(this, HealBot_Options_Auto_Initialize);
|
||||
</OnLoad>
|
||||
</Scripts>
|
||||
</Frame>
|
||||
|
||||
<Frame name="HealBot_Options_Auto_Raid25" inherits="UIDropDownMenuTemplate" id="4">
|
||||
<Layers>
|
||||
<Layer level="BACKGROUND">
|
||||
<FontString name="$parentLabel" text="Raid 25 Skin:" inherits="GameFontNormalSmall">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset><AbsDimension x="-10" y="15" /></Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset><AbsDimension x="30" y="-230" /></Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>
|
||||
UIDropDownMenu_Initialize(this, HealBot_Options_Auto_Initialize);
|
||||
</OnLoad>
|
||||
</Scripts>
|
||||
</Frame>
|
||||
|
||||
<Frame name="HealBot_Options_Auto_Raid40" inherits="UIDropDownMenuTemplate" id="5">
|
||||
<Layers>
|
||||
<Layer level="BACKGROUND">
|
||||
<FontString name="$parentLabel" text="Raid 40 Skin:" inherits="GameFontNormalSmall">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset><AbsDimension x="-10" y="15" /></Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset><AbsDimension x="30" y="-280" /></Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>
|
||||
UIDropDownMenu_Initialize(this, HealBot_Options_Auto_Initialize);
|
||||
</OnLoad>
|
||||
</Scripts>
|
||||
</Frame>
|
||||
|
||||
</Frames>
|
||||
<Scripts>
|
||||
<OnShow>
|
||||
HealBot_Options_Auto_OnShow(this);
|
||||
</OnShow>
|
||||
</Scripts>
|
||||
</Frame>
|
||||
</Ui>
|
||||
@@ -0,0 +1,118 @@
|
||||
-- HealBot Options panel file: HealBot_Options_Buffs.lua
|
||||
-- Split from original HealBot_Options.lua
|
||||
|
||||
function HealBot_Options_BuffWatch_OnClick(self)
|
||||
local frame = self or this
|
||||
HealBot_Config.BuffWatch = frame:GetChecked() or 0;
|
||||
if HealBot_Config.BuffWatch == 0 then
|
||||
HealBot_Options_BuffWatchInCombat:Disable()
|
||||
else
|
||||
HealBot_Options_BuffWatchInCombat:Enable()
|
||||
end
|
||||
HealBot_RecalcParty();
|
||||
end
|
||||
function HealBot_Options_BuffWatchInCombat_OnClick(self)
|
||||
local frame = self or this
|
||||
HealBot_Config.BuffWatchInCombat = frame:GetChecked() or 0;
|
||||
HealBot_RecalcParty();
|
||||
end
|
||||
function HealBot_Options_BuffSelf_OnLoad(self)
|
||||
local frame = self or this
|
||||
getglobal(this:GetName().."Text"):SetText("Self Only")
|
||||
local id = this:GetID()
|
||||
if HealBot_Config.BuffWatchSelf and HealBot_Config.BuffWatchSelf[id] then
|
||||
local isSelf = (HealBot_Config.BuffWatchSelf[id] == 1)
|
||||
this:SetChecked(isSelf and 1 or nil)
|
||||
else
|
||||
this:SetChecked(nil)
|
||||
end
|
||||
end
|
||||
function HealBot_Options_BuffSelf_OnClick(self)
|
||||
local frame = self or this
|
||||
local id = this:GetID()
|
||||
if not HealBot_Config.BuffWatchSelf then
|
||||
HealBot_Config.BuffWatchSelf = {0,0,0,0,0,0,0,0}
|
||||
end
|
||||
if frame:GetChecked() then
|
||||
HealBot_Config.BuffWatchSelf[id] = 1
|
||||
else
|
||||
HealBot_Config.BuffWatchSelf[id] = 0
|
||||
end
|
||||
HealBot_RecalcParty();
|
||||
end
|
||||
function HealBot_Options_Buff_OnLoad(self)
|
||||
local frame = self or this
|
||||
UIDropDownMenu_Initialize(frame, HealBot_Options_Buff_Initialize)
|
||||
UIDropDownMenu_SetWidth(110, frame)
|
||||
end
|
||||
function HealBot_Options_Buff_Initialize()
|
||||
local myClass = UnitClass("player")
|
||||
local info
|
||||
|
||||
info = { text = "None", func = HealBot_Options_Buff_OnClick, value = 0 }
|
||||
UIDropDownMenu_AddButton(info)
|
||||
|
||||
if HealBot_Buff_Spells[myClass] then
|
||||
for i, spellName in ipairs(HealBot_Buff_Spells[myClass]) do
|
||||
info = {
|
||||
text = spellName,
|
||||
func = HealBot_Options_Buff_OnClick,
|
||||
value = i
|
||||
}
|
||||
UIDropDownMenu_AddButton(info)
|
||||
end
|
||||
end
|
||||
end
|
||||
function HealBot_Options_Buff_OnClick()
|
||||
local frameName = UIDROPDOWNMENU_OPEN_MENU
|
||||
local frame = getglobal(frameName)
|
||||
local myClass = UnitClass("player")
|
||||
local id = frame:GetID()
|
||||
|
||||
if not HealBot_Config.BuffDropDowns then HealBot_Config.BuffDropDowns = {} end
|
||||
if not HealBot_Config.BuffDropDowns[myClass] then HealBot_Config.BuffDropDowns[myClass] = {} end
|
||||
HealBot_Config.BuffDropDowns[myClass][id] = this.value
|
||||
|
||||
local text = "None"
|
||||
if this.value > 0 then
|
||||
text = HealBot_Buff_Spells[myClass][this.value]
|
||||
end
|
||||
|
||||
HealBot_UIDropDownMenu_SetSelectedID(frame, this.value + 1)
|
||||
UIDropDownMenu_SetText(text, frame)
|
||||
HealBot_RecalcParty();
|
||||
end
|
||||
function HealBot_Options_SetBuffs()
|
||||
local myClass = UnitClass("player")
|
||||
if HealBot_Options_BuffWatch then
|
||||
HealBot_Options_BuffWatch:SetChecked(HealBot_Config.BuffWatch)
|
||||
HealBot_Options_BuffWatchInCombat:SetChecked(HealBot_Config.BuffWatchInCombat)
|
||||
if HealBot_Config.BuffWatch == 0 then
|
||||
HealBot_Options_BuffWatchInCombat:Disable()
|
||||
else
|
||||
HealBot_Options_BuffWatchInCombat:Enable()
|
||||
end
|
||||
end
|
||||
|
||||
if not HealBot_Config.BuffDropDowns then HealBot_Config.BuffDropDowns = {} end
|
||||
if not HealBot_Config.BuffDropDowns[myClass] then HealBot_Config.BuffDropDowns[myClass] = {} end
|
||||
|
||||
for i = 1, 8 do
|
||||
local dropDown = getglobal("HealBot_Options_Buff" .. i)
|
||||
if dropDown then
|
||||
local val = HealBot_Config.BuffDropDowns[myClass][i] or 0
|
||||
UIDropDownMenu_Initialize(dropDown, HealBot_Options_Buff_Initialize)
|
||||
HealBot_UIDropDownMenu_SetSelectedID(dropDown, val + 1)
|
||||
end
|
||||
|
||||
local selfCheck = getglobal("HealBot_Options_BuffSelf" .. i)
|
||||
if selfCheck then
|
||||
if HealBot_Config.BuffWatchSelf and HealBot_Config.BuffWatchSelf[i] then
|
||||
local isSelf = (HealBot_Config.BuffWatchSelf[i] == 1)
|
||||
selfCheck:SetChecked(isSelf and 1 or nil)
|
||||
else
|
||||
selfCheck:SetChecked(nil)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,372 @@
|
||||
<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_Buffs.lua" />
|
||||
<Frame name="HealBot_Options_Panel6" parent="HealBot_Options" hidden="true" setAllPoints="true">
|
||||
<Frames>
|
||||
<Frame name="HealBot_Options_BuffFrame" inherits="OptionFrameBoxTemplate">
|
||||
<Scripts>
|
||||
<OnLoad>
|
||||
this:SetBackdropBorderColor(0.4, 0.4, 0.4);
|
||||
this:SetBackdropColor(0, 0, 0, 0);
|
||||
</OnLoad>
|
||||
</Scripts>
|
||||
<Size>
|
||||
<AbsDimension y="330"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="21" y="-35"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
<Anchor point="TOPRIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="-21" y="0"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Layers>
|
||||
<Layer level="BACKGROUND">
|
||||
<FontString name="HealBot_BuffPanel_Text" text="Buff Settings" inherits="GameFontNormalSmall">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="15" y="10" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
</Frame>
|
||||
|
||||
<CheckButton name="HealBot_Options_BuffWatch" inherits="OptionsCheckButtonTemplate">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_BuffFrame" relativePoint="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="15" y="-15"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_WarningSound_OnLoad(this,HEALBOT_OPTIONS_BUFFWATCH)</OnLoad>
|
||||
<OnClick>HealBot_Options_BuffWatch_OnClick(this)</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
|
||||
<CheckButton name="HealBot_Options_BuffWatchInCombat" inherits="OptionsCheckButtonTemplate">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_BuffWatch" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="20" y="0"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_WarningSound_OnLoad(this,HEALBOT_OPTIONS_BUFFWATCHINCOMBAT)</OnLoad>
|
||||
<OnClick>HealBot_Options_BuffWatchInCombat_OnClick(this)</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
|
||||
<Frame name="HealBot_Options_Buff1" inherits="UIDropDownMenuTemplate" id="1">
|
||||
<Layers>
|
||||
<Layer level="BACKGROUND">
|
||||
<FontString name="HealBot_Options_Buff1Text" text="HEALBOT_OPTIONS_BUFF1" inherits="GameFontNormalSmall">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="-10" y="15" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_BuffWatchInCombat" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="-15" y="-30" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad> HealBot_Options_Buff_OnLoad(this) </OnLoad>
|
||||
</Scripts>
|
||||
</Frame>
|
||||
<CheckButton name="HealBot_Options_Buff1Self" inherits="OptionsCheckButtonTemplate" id="1">
|
||||
<Size><AbsDimension x="20" y="20"/></Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_Buff1" relativePoint="TOPLEFT">
|
||||
<Offset><AbsDimension x="40" y="18"/></Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_Options_BuffSelf_OnLoad(this)</OnLoad>
|
||||
<OnClick>HealBot_Options_BuffSelf_OnClick(this)</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
<Frame name="HealBot_Options_Buff2" inherits="UIDropDownMenuTemplate" id="2">
|
||||
<Layers>
|
||||
<Layer level="BACKGROUND">
|
||||
<FontString name="HealBot_Options_Buff2Text" text="HEALBOT_OPTIONS_BUFF2" inherits="GameFontNormalSmall">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="-10" y="15" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_Buff1" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-35" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad> HealBot_Options_Buff_OnLoad(this) </OnLoad>
|
||||
</Scripts>
|
||||
</Frame>
|
||||
<CheckButton name="HealBot_Options_Buff2Self" inherits="OptionsCheckButtonTemplate" id="2">
|
||||
<Size><AbsDimension x="20" y="20"/></Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_Buff2" relativePoint="TOPLEFT">
|
||||
<Offset><AbsDimension x="40" y="18"/></Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_Options_BuffSelf_OnLoad(this)</OnLoad>
|
||||
<OnClick>HealBot_Options_BuffSelf_OnClick(this)</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
<Frame name="HealBot_Options_Buff3" inherits="UIDropDownMenuTemplate" id="3">
|
||||
<Layers>
|
||||
<Layer level="BACKGROUND">
|
||||
<FontString name="HealBot_Options_Buff3Text" text="HEALBOT_OPTIONS_BUFF3" inherits="GameFontNormalSmall">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="-10" y="15" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_Buff2" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-35" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad> HealBot_Options_Buff_OnLoad(this) </OnLoad>
|
||||
</Scripts>
|
||||
</Frame>
|
||||
<CheckButton name="HealBot_Options_Buff3Self" inherits="OptionsCheckButtonTemplate" id="3">
|
||||
<Size><AbsDimension x="20" y="20"/></Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_Buff3" relativePoint="TOPLEFT">
|
||||
<Offset><AbsDimension x="40" y="18"/></Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_Options_BuffSelf_OnLoad(this)</OnLoad>
|
||||
<OnClick>HealBot_Options_BuffSelf_OnClick(this)</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
<Frame name="HealBot_Options_Buff4" inherits="UIDropDownMenuTemplate" id="4">
|
||||
<Layers>
|
||||
<Layer level="BACKGROUND">
|
||||
<FontString name="HealBot_Options_Buff4Text" text="HEALBOT_OPTIONS_BUFF4" inherits="GameFontNormalSmall">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="-10" y="15" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_Buff3" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-35" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad> HealBot_Options_Buff_OnLoad(this) </OnLoad>
|
||||
</Scripts>
|
||||
</Frame>
|
||||
<CheckButton name="HealBot_Options_Buff4Self" inherits="OptionsCheckButtonTemplate" id="4">
|
||||
<Size><AbsDimension x="20" y="20"/></Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_Buff4" relativePoint="TOPLEFT">
|
||||
<Offset><AbsDimension x="40" y="18"/></Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_Options_BuffSelf_OnLoad(this)</OnLoad>
|
||||
<OnClick>HealBot_Options_BuffSelf_OnClick(this)</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
<Frame name="HealBot_Options_Buff5" inherits="UIDropDownMenuTemplate" id="5">
|
||||
<Layers>
|
||||
<Layer level="BACKGROUND">
|
||||
<FontString name="HealBot_Options_Buff5Text" text="HEALBOT_OPTIONS_BUFF5" inherits="GameFontNormalSmall">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="-10" y="15" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_BuffWatchInCombat" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="160" y="-30" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad> HealBot_Options_Buff_OnLoad(this) </OnLoad>
|
||||
</Scripts>
|
||||
</Frame>
|
||||
<CheckButton name="HealBot_Options_Buff5Self" inherits="OptionsCheckButtonTemplate" id="5">
|
||||
<Size><AbsDimension x="20" y="20"/></Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_Buff5" relativePoint="TOPLEFT">
|
||||
<Offset><AbsDimension x="40" y="18"/></Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_Options_BuffSelf_OnLoad(this)</OnLoad>
|
||||
<OnClick>HealBot_Options_BuffSelf_OnClick(this)</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
<Frame name="HealBot_Options_Buff6" inherits="UIDropDownMenuTemplate" id="6">
|
||||
<Layers>
|
||||
<Layer level="BACKGROUND">
|
||||
<FontString name="HealBot_Options_Buff6Text" text="HEALBOT_OPTIONS_BUFF6" inherits="GameFontNormalSmall">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="-10" y="15" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_Buff5" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-35" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad> HealBot_Options_Buff_OnLoad(this) </OnLoad>
|
||||
</Scripts>
|
||||
</Frame>
|
||||
<CheckButton name="HealBot_Options_Buff6Self" inherits="OptionsCheckButtonTemplate" id="6">
|
||||
<Size><AbsDimension x="20" y="20"/></Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_Buff6" relativePoint="TOPLEFT">
|
||||
<Offset><AbsDimension x="40" y="18"/></Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_Options_BuffSelf_OnLoad(this)</OnLoad>
|
||||
<OnClick>HealBot_Options_BuffSelf_OnClick(this)</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
<Frame name="HealBot_Options_Buff7" inherits="UIDropDownMenuTemplate" id="7">
|
||||
<Layers>
|
||||
<Layer level="BACKGROUND">
|
||||
<FontString name="HealBot_Options_Buff7Text" text="HEALBOT_OPTIONS_BUFF7" inherits="GameFontNormalSmall">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="-10" y="15" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_Buff6" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-35" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad> HealBot_Options_Buff_OnLoad(this) </OnLoad>
|
||||
</Scripts>
|
||||
</Frame>
|
||||
<CheckButton name="HealBot_Options_Buff7Self" inherits="OptionsCheckButtonTemplate" id="7">
|
||||
<Size><AbsDimension x="20" y="20"/></Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_Buff7" relativePoint="TOPLEFT">
|
||||
<Offset><AbsDimension x="40" y="18"/></Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_Options_BuffSelf_OnLoad(this)</OnLoad>
|
||||
<OnClick>HealBot_Options_BuffSelf_OnClick(this)</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
<Frame name="HealBot_Options_Buff8" inherits="UIDropDownMenuTemplate" id="8">
|
||||
<Layers>
|
||||
<Layer level="BACKGROUND">
|
||||
<FontString name="HealBot_Options_Buff8Text" text="HEALBOT_OPTIONS_BUFF8" inherits="GameFontNormalSmall">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="-10" y="15" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_Buff7" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-35" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad> HealBot_Options_Buff_OnLoad(this) </OnLoad>
|
||||
</Scripts>
|
||||
</Frame>
|
||||
<CheckButton name="HealBot_Options_Buff8Self" inherits="OptionsCheckButtonTemplate" id="8">
|
||||
<Size><AbsDimension x="20" y="20"/></Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_Buff8" relativePoint="TOPLEFT">
|
||||
<Offset><AbsDimension x="40" y="18"/></Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_Options_BuffSelf_OnLoad(this)</OnLoad>
|
||||
<OnClick>HealBot_Options_BuffSelf_OnClick(this)</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
|
||||
</Frames>
|
||||
</Frame>
|
||||
|
||||
</Ui>
|
||||
@@ -0,0 +1,289 @@
|
||||
-- HealBot Options panel file: HealBot_Options_CDC.lua
|
||||
-- Split from original HealBot_Options.lua
|
||||
|
||||
function HealBot_Options_ShowDebuffWarning_OnLoad(this,text)
|
||||
getglobal(this:GetName().."Text"):SetText(text);
|
||||
end
|
||||
function HealBot_Options_ShowDebuffWarning_OnClick(this)
|
||||
HealBot_Config.ShowDebuffWarning = this:GetChecked() or 0;
|
||||
end
|
||||
function HealBot_Options_SoundDebuffWarning_OnLoad(this,text)
|
||||
getglobal(this:GetName().."Text"):SetText(text);
|
||||
end
|
||||
function HealBot_Options_SoundDebuffWarning_OnClick(this)
|
||||
HealBot_Config.SoundDebuffWarning = this:GetChecked() or 0;
|
||||
if HealBot_Config.SoundDebuffWarning==0 then
|
||||
HealBot_WarningSound1:Disable();
|
||||
HealBot_WarningSound2:Disable();
|
||||
HealBot_WarningSound3:Disable();
|
||||
else
|
||||
HealBot_WarningSound1:Enable();
|
||||
HealBot_WarningSound2:Enable();
|
||||
HealBot_WarningSound3:Enable();
|
||||
end
|
||||
end
|
||||
function HealBot_WarningSound_OnLoad(this,text)
|
||||
getglobal(this:GetName().."Text"):SetText(text);
|
||||
end
|
||||
function HealBot_WarningSound_OnClick(this,id)
|
||||
if HealBot_Config.SoundDebuffPlay>0 then
|
||||
getglobal("HealBot_WarningSound"..HealBot_Config.SoundDebuffPlay):SetChecked(nil);
|
||||
end
|
||||
HealBot_Config.SoundDebuffPlay = id;
|
||||
if HealBot_Config.SoundDebuffPlay>0 then
|
||||
getglobal("HealBot_WarningSound"..HealBot_Config.SoundDebuffPlay):SetChecked(1);
|
||||
if this then
|
||||
HealBot_PlaySound(HealBot_Config.SoundDebuffPlay)
|
||||
end
|
||||
end
|
||||
end
|
||||
function HealBot_Options_CDCMonitor_DropDown()
|
||||
for i=1, getn(HealBot_Options_EmergencyFilter_List), 1 do
|
||||
local info = {};
|
||||
info.text = HealBot_Options_EmergencyFilter_List[i];
|
||||
info.func = HealBot_Options_CDCMonitor_OnSelect;
|
||||
UIDropDownMenu_AddButton(info);
|
||||
end
|
||||
end
|
||||
function HealBot_Options_CDCMonitor_Initialize()
|
||||
UIDropDownMenu_Initialize(HealBot_Options_CDCMonitor,HealBot_Options_CDCMonitor_DropDown)
|
||||
end
|
||||
function HealBot_Options_CDCMonitor_Refresh(onselect)
|
||||
if not HealBot_Config.CDCMonitor then return end
|
||||
if not onselect then HealBot_Options_CDCMonitor_Initialize() end -- or wrong menu may be used !
|
||||
HealBot_UIDropDownMenu_SetSelectedID(HealBot_Options_CDCMonitor,HealBot_Config.CDCMonitor)
|
||||
end
|
||||
function HealBot_Options_CDCMonitor_OnLoad()
|
||||
UIDropDownMenu_Initialize(this, HealBot_Options_CDCMonitor_DropDown)
|
||||
UIDropDownMenu_SetWidth(100, this)
|
||||
end
|
||||
function HealBot_Options_CDCMonitor_OnSelect()
|
||||
HealBot_Config.CDCMonitor = this:GetID()
|
||||
HealBot_Options_CDCMonitor_Refresh(true)
|
||||
HealBot_Options_CDCMonitor_Reset()
|
||||
end
|
||||
function HealBot_Options_CDCMonitor_Reset()
|
||||
|
||||
HealBot_CDCInc[HEALBOT_DRUID] = 0;
|
||||
HealBot_CDCInc[HEALBOT_HUNTER] = 0;
|
||||
HealBot_CDCInc[HEALBOT_MAGE] = 0;
|
||||
HealBot_CDCInc[HEALBOT_PALADIN] = 0;
|
||||
HealBot_CDCInc[HEALBOT_PRIEST] = 0;
|
||||
HealBot_CDCInc[HEALBOT_ROGUE] = 0;
|
||||
HealBot_CDCInc[HEALBOT_SHAMAN] = 0;
|
||||
HealBot_CDCInc[HEALBOT_WARLOCK] = 0;
|
||||
HealBot_CDCInc[HEALBOT_WARRIOR] = 0;
|
||||
if HealBot_Config.CDCMonitor==2 then
|
||||
HealBot_CDCInc[HEALBOT_DRUID] = 1;
|
||||
HealBot_CDCInc[HEALBOT_HUNTER] = 1;
|
||||
HealBot_CDCInc[HEALBOT_MAGE] = 1;
|
||||
HealBot_CDCInc[HEALBOT_PALADIN] = 1;
|
||||
HealBot_CDCInc[HEALBOT_PRIEST] = 1;
|
||||
HealBot_CDCInc[HEALBOT_ROGUE] = 1;
|
||||
HealBot_CDCInc[HEALBOT_SHAMAN] = 1;
|
||||
HealBot_CDCInc[HEALBOT_WARLOCK] = 1;
|
||||
HealBot_CDCInc[HEALBOT_WARRIOR] = 1;
|
||||
elseif HealBot_Config.CDCMonitor==3 then
|
||||
HealBot_CDCInc[HEALBOT_DRUID] = 1;
|
||||
elseif HealBot_Config.CDCMonitor==4 then
|
||||
HealBot_CDCInc[HEALBOT_HUNTER] = 1;
|
||||
elseif HealBot_Config.CDCMonitor==5 then
|
||||
HealBot_CDCInc[HEALBOT_MAGE] = 1;
|
||||
elseif HealBot_Config.CDCMonitor==6 then
|
||||
HealBot_CDCInc[HEALBOT_PALADIN] = 1;
|
||||
elseif HealBot_Config.CDCMonitor==7 then
|
||||
HealBot_CDCInc[HEALBOT_PRIEST] = 1;
|
||||
elseif HealBot_Config.CDCMonitor==8 then
|
||||
HealBot_CDCInc[HEALBOT_ROGUE] = 1;
|
||||
elseif HealBot_Config.CDCMonitor==9 then
|
||||
HealBot_CDCInc[HEALBOT_SHAMAN] = 1;
|
||||
elseif HealBot_Config.CDCMonitor==10 then
|
||||
HealBot_CDCInc[HEALBOT_WARLOCK] = 1;
|
||||
elseif HealBot_Config.CDCMonitor==11 then
|
||||
HealBot_CDCInc[HEALBOT_WARRIOR] = 1;
|
||||
elseif HealBot_Config.CDCMonitor==12 then
|
||||
HealBot_CDCInc[HEALBOT_DRUID] = HealBot_Config.EmergIncMelee[HEALBOT_DRUID];
|
||||
HealBot_CDCInc[HEALBOT_HUNTER] = HealBot_Config.EmergIncMelee[HEALBOT_HUNTER];
|
||||
HealBot_CDCInc[HEALBOT_MAGE] = HealBot_Config.EmergIncMelee[HEALBOT_MAGE];
|
||||
HealBot_CDCInc[HEALBOT_PALADIN] = HealBot_Config.EmergIncMelee[HEALBOT_PALADIN];
|
||||
HealBot_CDCInc[HEALBOT_PRIEST] = HealBot_Config.EmergIncMelee[HEALBOT_PRIEST];
|
||||
HealBot_CDCInc[HEALBOT_ROGUE] = HealBot_Config.EmergIncMelee[HEALBOT_ROGUE];
|
||||
HealBot_CDCInc[HEALBOT_SHAMAN] = HealBot_Config.EmergIncMelee[HEALBOT_SHAMAN];
|
||||
HealBot_CDCInc[HEALBOT_WARLOCK] = HealBot_Config.EmergIncMelee[HEALBOT_WARLOCK];
|
||||
HealBot_CDCInc[HEALBOT_WARRIOR] = HealBot_Config.EmergIncMelee[HEALBOT_WARRIOR];
|
||||
elseif HealBot_Config.CDCMonitor==13 then
|
||||
HealBot_CDCInc[HEALBOT_DRUID] = HealBot_Config.EmergIncRange[HEALBOT_DRUID];
|
||||
HealBot_CDCInc[HEALBOT_HUNTER] = HealBot_Config.EmergIncRange[HEALBOT_HUNTER];
|
||||
HealBot_CDCInc[HEALBOT_MAGE] = HealBot_Config.EmergIncRange[HEALBOT_MAGE];
|
||||
HealBot_CDCInc[HEALBOT_PALADIN] = HealBot_Config.EmergIncRange[HEALBOT_PALADIN];
|
||||
HealBot_CDCInc[HEALBOT_PRIEST] = HealBot_Config.EmergIncRange[HEALBOT_PRIEST];
|
||||
HealBot_CDCInc[HEALBOT_ROGUE] = HealBot_Config.EmergIncRange[HEALBOT_ROGUE];
|
||||
HealBot_CDCInc[HEALBOT_SHAMAN] = HealBot_Config.EmergIncRange[HEALBOT_SHAMAN];
|
||||
HealBot_CDCInc[HEALBOT_WARLOCK] = HealBot_Config.EmergIncRange[HEALBOT_WARLOCK];
|
||||
HealBot_CDCInc[HEALBOT_WARRIOR] = HealBot_Config.EmergIncRange[HEALBOT_WARRIOR];
|
||||
elseif HealBot_Config.CDCMonitor==14 then
|
||||
HealBot_CDCInc[HEALBOT_DRUID] = HealBot_Config.EmergIncHealers[HEALBOT_DRUID];
|
||||
HealBot_CDCInc[HEALBOT_HUNTER] = HealBot_Config.EmergIncHealers[HEALBOT_HUNTER];
|
||||
HealBot_CDCInc[HEALBOT_MAGE] = HealBot_Config.EmergIncHealers[HEALBOT_MAGE];
|
||||
HealBot_CDCInc[HEALBOT_PALADIN] = HealBot_Config.EmergIncHealers[HEALBOT_PALADIN];
|
||||
HealBot_CDCInc[HEALBOT_PRIEST] = HealBot_Config.EmergIncHealers[HEALBOT_PRIEST];
|
||||
HealBot_CDCInc[HEALBOT_ROGUE] = HealBot_Config.EmergIncHealers[HEALBOT_ROGUE];
|
||||
HealBot_CDCInc[HEALBOT_SHAMAN] = HealBot_Config.EmergIncHealers[HEALBOT_SHAMAN];
|
||||
HealBot_CDCInc[HEALBOT_WARLOCK] = HealBot_Config.EmergIncHealers[HEALBOT_WARLOCK];
|
||||
HealBot_CDCInc[HEALBOT_WARRIOR] = HealBot_Config.EmergIncHealers[HEALBOT_WARRIOR];
|
||||
elseif HealBot_Config.CDCMonitor==15 then
|
||||
HealBot_CDCInc[HEALBOT_DRUID] = HealBot_Config.EmergIncCustom[HEALBOT_DRUID];
|
||||
HealBot_CDCInc[HEALBOT_HUNTER] = HealBot_Config.EmergIncCustom[HEALBOT_HUNTER];
|
||||
HealBot_CDCInc[HEALBOT_MAGE] = HealBot_Config.EmergIncCustom[HEALBOT_MAGE];
|
||||
HealBot_CDCInc[HEALBOT_PALADIN] = HealBot_Config.EmergIncCustom[HEALBOT_PALADIN];
|
||||
HealBot_CDCInc[HEALBOT_PRIEST] = HealBot_Config.EmergIncCustom[HEALBOT_PRIEST];
|
||||
HealBot_CDCInc[HEALBOT_ROGUE] = HealBot_Config.EmergIncCustom[HEALBOT_ROGUE];
|
||||
HealBot_CDCInc[HEALBOT_SHAMAN] = HealBot_Config.EmergIncCustom[HEALBOT_SHAMAN];
|
||||
HealBot_CDCInc[HEALBOT_WARLOCK] = HealBot_Config.EmergIncCustom[HEALBOT_WARLOCK];
|
||||
HealBot_CDCInc[HEALBOT_WARRIOR] = HealBot_Config.EmergIncCustom[HEALBOT_WARRIOR];
|
||||
end
|
||||
|
||||
HealBot_Action_PartyChanged()
|
||||
end
|
||||
function HealBot_Options_GetDebuffSpells_List(class)
|
||||
local DebuffSpells = HealBot_Debuff_Spells[class];
|
||||
return DebuffSpells;
|
||||
end
|
||||
function HealBot_Options_CDCButLeft_DropDown()
|
||||
local classEN=HealBot_UnitClass("player")
|
||||
if classEN=="PRIEST" or classEN=="DRUID" or classEN=="PALADIN" or classEN=="SHAMAN" then
|
||||
local class=UnitClass("Player");
|
||||
local DebuffSpells_List = HealBot_Options_GetDebuffSpells_List(class)
|
||||
local info = {};
|
||||
info.text = "None";
|
||||
info.func = HealBot_Options_CDCButLeft_OnSelect;
|
||||
UIDropDownMenu_AddButton(info);
|
||||
for i=1, getn(DebuffSpells_List), 1 do
|
||||
local spell=HealBot_GetSpellName(HealBot_GetSpellId(DebuffSpells_List[i]));
|
||||
if spell then
|
||||
local info = {};
|
||||
info.text = spell;
|
||||
info.func = HealBot_Options_CDCButLeft_OnSelect;
|
||||
UIDropDownMenu_AddButton(info);
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
function HealBot_Options_CDCButRight_DropDown()
|
||||
local classEN=HealBot_UnitClass("player")
|
||||
if classEN=="PRIEST" or classEN=="DRUID" or classEN=="PALADIN" or classEN=="SHAMAN" then
|
||||
local class=UnitClass("Player");
|
||||
local DebuffSpells_List = HealBot_Options_GetDebuffSpells_List(class)
|
||||
local info = {};
|
||||
info.text = "None";
|
||||
info.func = HealBot_Options_CDCButRight_OnSelect;
|
||||
UIDropDownMenu_AddButton(info);
|
||||
for i=1, getn(DebuffSpells_List), 1 do
|
||||
local spell=HealBot_GetSpellName(HealBot_GetSpellId(DebuffSpells_List[i]));
|
||||
if spell then
|
||||
local info = {};
|
||||
info.text = spell;
|
||||
info.func = HealBot_Options_CDCButRight_OnSelect;
|
||||
UIDropDownMenu_AddButton(info);
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
function HealBot_Options_CDCButLeft_Initialize()
|
||||
UIDropDownMenu_Initialize(HealBot_Options_CDCButLeft,HealBot_Options_CDCButLeft_DropDown)
|
||||
end
|
||||
function HealBot_Options_CDCButRight_Initialize()
|
||||
UIDropDownMenu_Initialize(HealBot_Options_CDCButRight,HealBot_Options_CDCButRight_DropDown)
|
||||
end
|
||||
function HealBot_Options_CDCButLeft_Refresh(onselect)
|
||||
local set_id=1;
|
||||
local class=UnitClass("Player");
|
||||
if not onselect then HealBot_Options_CDCButLeft_Initialize() end
|
||||
set_id = HealBot_Config.Debuff_Left[class];
|
||||
HealBot_UIDropDownMenu_SetSelectedID(HealBot_Options_CDCButLeft,set_id)
|
||||
end
|
||||
function HealBot_Options_CDCButRight_Refresh(onselect)
|
||||
local set_id;
|
||||
local class=UnitClass("Player");
|
||||
if not onselect then HealBot_Options_CDCButRight_Initialize() end
|
||||
set_id = HealBot_Config.Debuff_Right[class];
|
||||
HealBot_UIDropDownMenu_SetSelectedID(HealBot_Options_CDCButRight,set_id)
|
||||
end
|
||||
function HealBot_Options_CDCButLeft_OnLoad()
|
||||
UIDropDownMenu_Initialize(this, HealBot_Options_CDCButLeft_DropDown)
|
||||
UIDropDownMenu_SetWidth(140, this)
|
||||
end
|
||||
function HealBot_Options_CDCButRight_OnLoad()
|
||||
UIDropDownMenu_Initialize(this, HealBot_Options_CDCButRight_DropDown)
|
||||
UIDropDownMenu_SetWidth(140, this)
|
||||
end
|
||||
function HealBot_Options_CDCButLeft_OnSelect()
|
||||
local class=UnitClass("Player");
|
||||
HealBot_Config.Debuff_Left[class] = this:GetID();
|
||||
HealBot_Options_CDCButLeft_Refresh(true)
|
||||
HealBot_Config.CDCLeftText[class]=HealBot_Options_CDCButLeftText:GetText();
|
||||
if this:GetID()>1 then
|
||||
HealBot_Options_CDC_SetCombo(HealBot_Options_CDCButLeftText:GetText(), "Left", class)
|
||||
end
|
||||
HealBot_DebuffPriority = HealBot_Debuff_Types[HealBot_Options_CDCButLeftText:GetText()];
|
||||
HealBot_Options_Debuff_Reset()
|
||||
end
|
||||
function HealBot_Options_CDCButRight_OnSelect()
|
||||
local class=UnitClass("Player");
|
||||
HealBot_Config.Debuff_Right[class] = this:GetID();
|
||||
HealBot_Options_CDCButRight_Refresh(true)
|
||||
HealBot_Config.CDCRightText[class]=HealBot_Options_CDCButRightText:GetText();
|
||||
if this:GetID()>1 then
|
||||
HealBot_Options_CDC_SetCombo(HealBot_Options_CDCButRightText:GetText(), "Right", class)
|
||||
end
|
||||
HealBot_Options_Debuff_Reset()
|
||||
end
|
||||
function HealBot_Options_CDC_SetCombo(spell, button, class)
|
||||
local combo = HealBot_Config.KeyCombo[class]
|
||||
combo["Alt"..button] = spell
|
||||
HealBot_Options_KeyCombo_Change()
|
||||
end
|
||||
function HealBot_Options_Debuff_Reset()
|
||||
local classEN=HealBot_UnitClass("player")
|
||||
if classEN=="PRIEST" or classEN=="DRUID" or classEN=="PALADIN" or classEN=="SHAMAN" then
|
||||
local spell = HealBot_Config.CDCLeftText[UnitClass("player")];
|
||||
HealBot_DebuffWatch = {[HEALBOT_DISEASE_en]=false, [HEALBOT_MAGIC_en]=false, [HEALBOT_POISON_en]=false, [HEALBOT_CURSE_en]=false }
|
||||
if spell ~= "None" then
|
||||
table.foreach(HealBot_Debuff_Types[spell], function (index,debuff)
|
||||
HealBot_DebuffWatch[debuff]=true;
|
||||
end)
|
||||
end
|
||||
spell = HealBot_Config.CDCRightText[UnitClass("player")];
|
||||
if spell ~= "None" then
|
||||
table.foreach(HealBot_Debuff_Types[spell], function (index,debuff)
|
||||
HealBot_DebuffWatch[debuff]=true;
|
||||
end)
|
||||
end
|
||||
end
|
||||
end
|
||||
function HealBot_Colorpick_OnClick(CDCType)
|
||||
HealBot_ColourObjWaiting=CDCType;
|
||||
HealBot_UseColourPick(HealBot_Config.CDCBarColour[CDCType].R,HealBot_Config.CDCBarColour[CDCType].G,HealBot_Config.CDCBarColour[CDCType].B, nil)
|
||||
end
|
||||
function HealBot_SetCDCBarColours()
|
||||
HealBot_DiseaseColorpick:SetStatusBarColor(HealBot_Config.CDCBarColour[HEALBOT_DISEASE_en].R,
|
||||
HealBot_Config.CDCBarColour[HEALBOT_DISEASE_en].G,
|
||||
HealBot_Config.CDCBarColour[HEALBOT_DISEASE_en].B,
|
||||
HealBot_Config.Barcola[HealBot_Config.Current_Skin]);
|
||||
HealBot_MagicColorpick:SetStatusBarColor(HealBot_Config.CDCBarColour[HEALBOT_MAGIC_en].R,
|
||||
HealBot_Config.CDCBarColour[HEALBOT_MAGIC_en].G,
|
||||
HealBot_Config.CDCBarColour[HEALBOT_MAGIC_en].B,
|
||||
HealBot_Config.Barcola[HealBot_Config.Current_Skin]);
|
||||
HealBot_PoisonColorpick:SetStatusBarColor(HealBot_Config.CDCBarColour[HEALBOT_POISON_en].R,
|
||||
HealBot_Config.CDCBarColour[HEALBOT_POISON_en].G,
|
||||
HealBot_Config.CDCBarColour[HEALBOT_POISON_en].B,
|
||||
HealBot_Config.Barcola[HealBot_Config.Current_Skin]);
|
||||
HealBot_CurseColorpick:SetStatusBarColor(HealBot_Config.CDCBarColour[HEALBOT_CURSE_en].R,
|
||||
HealBot_Config.CDCBarColour[HEALBOT_CURSE_en].G,
|
||||
HealBot_Config.CDCBarColour[HEALBOT_CURSE_en].B,
|
||||
HealBot_Config.Barcola[HealBot_Config.Current_Skin]);
|
||||
HealBot_DebTextColorpick:SetStatusBarColor(HealBot_Config.CDCBarColour[HEALBOT_DISEASE_en].R,
|
||||
HealBot_Config.CDCBarColour[HEALBOT_DISEASE_en].G,
|
||||
HealBot_Config.CDCBarColour[HEALBOT_DISEASE_en].B,
|
||||
HealBot_Config.Barcola[HealBot_Config.Current_Skin])
|
||||
end
|
||||
@@ -0,0 +1,450 @@
|
||||
<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_CDC.lua" />
|
||||
<Frame name="HealBot_Options_Panel4" parent="HealBot_Options" hidden="true" setAllPoints="true">
|
||||
<Frames>
|
||||
|
||||
<Frame name="HealBot_Options_CDCMonitor" inherits="UIDropDownMenuTemplate" id="1">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="170" y="-30" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Layers>
|
||||
<Layer level="OVERLAY">
|
||||
<FontString inherits="GameFontNormalSmall" text="HEALBOT_OPTIONS_CDCCLASS">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="-105" y="-7"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
<Scripts>
|
||||
<OnLoad> HealBot_Options_CDCMonitor_OnLoad(this) </OnLoad>
|
||||
</Scripts>
|
||||
</Frame>
|
||||
|
||||
<Frame name="HealBot_Options_CureDispelCleanse" inherits="OptionFrameBoxTemplate">
|
||||
<Scripts>
|
||||
<OnLoad>
|
||||
this:SetBackdropBorderColor(0.4, 0.4, 0.4);
|
||||
this:SetBackdropColor(0, 0, 0, 0);
|
||||
</OnLoad>
|
||||
</Scripts>
|
||||
<Size>
|
||||
<AbsDimension y="110"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="21" y="-75"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
<Anchor point="TOPRIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="-21" y="-75"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Layers>
|
||||
<Layer level="BACKGROUND">
|
||||
<FontString name="HealBot_CDCBut_Text" text="HEALBOT_OPTIONS_CDCBUTTONS" inherits="GameFontNormalSmall">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="105" y="-12" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
</Frame>
|
||||
<Frame name="HealBot_Options_CDCButLeft" inherits="UIDropDownMenuTemplate" id="1">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_CureDispelCleanse" relativePoint="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="100" y="-35" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Layers>
|
||||
<Layer level="OVERLAY">
|
||||
<FontString inherits="GameFontNormalSmall" text="HEALBOT_OPTIONS_CDCLEFT">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_CureDispelCleanse" relativePoint="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="40" y="-42"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
<Scripts>
|
||||
<OnLoad>
|
||||
HealBot_Options_CDCButLeft_OnLoad(this)
|
||||
</OnLoad>
|
||||
</Scripts>
|
||||
</Frame>
|
||||
<Frame name="HealBot_Options_CDCButRight" inherits="UIDropDownMenuTemplate" id="1">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_CureDispelCleanse" relativePoint="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="100" y="-67" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Layers>
|
||||
<Layer level="OVERLAY">
|
||||
<FontString inherits="GameFontNormalSmall" text="HEALBOT_OPTIONS_CDCRIGHT">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_CureDispelCleanse" relativePoint="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="40" y="-74"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
<Scripts>
|
||||
<OnLoad>
|
||||
HealBot_Options_CDCButRight_OnLoad(this)
|
||||
</OnLoad>
|
||||
</Scripts>
|
||||
</Frame>
|
||||
|
||||
<Frame name="HealBot_Options_CureDispelCleanseCol" inherits="OptionFrameBoxTemplate">
|
||||
<Scripts>
|
||||
<OnLoad>
|
||||
this:SetBackdropBorderColor(0.4, 0.4, 0.4);
|
||||
this:SetBackdropColor(0, 0, 0, 0);
|
||||
</OnLoad>
|
||||
</Scripts>
|
||||
<Size>
|
||||
<AbsDimension y="95"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="21" y="-185"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
<Anchor point="TOPRIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="-21" y="-190"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Layers>
|
||||
<Layer level="BACKGROUND">
|
||||
<FontString name="HealBot_CDCCol_Text" text="HEALBOT_OPTIONS_CDCBARS" inherits="GameFontNormalSmall">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="98" y="-12" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
</Frame>
|
||||
<Button name="HealBot_DiseaseColorpickb">
|
||||
<Size>
|
||||
<AbsDimension x="130" y="20"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="BOTTOM" relativeTo="HealBot_Options_CureDispelCleanseCol" relativePoint="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="81" y="-55"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnClick>HealBot_Colorpick_OnClick(HEALBOT_DISEASE_en)</OnClick>
|
||||
</Scripts>
|
||||
</Button>
|
||||
<StatusBar name="HealBot_DiseaseColorpick" inherits="TextStatusBar">
|
||||
<Size>
|
||||
<AbsDimension x="130" y="20"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="BOTTOM" relativeTo="HealBot_Options_CureDispelCleanseCol" relativePoint="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="81" y="-55"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Layers>
|
||||
<Layer level="OVERLAY">
|
||||
<FontString inherits="GameFontNormalSmall" text="HEALBOT_DISEASE">
|
||||
<Anchors>
|
||||
<Anchor point="CENTER" relativeTo="HealBot_DiseaseColorpick" relativePoint="CENTER">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="1"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
<Scripts>
|
||||
<OnLoad> this:SetMinMaxValues(0,100); this:SetValue(100); </OnLoad>
|
||||
</Scripts>
|
||||
<BarTexture file="Interface\TargetingFrame\UI-StatusBar"/>
|
||||
<BarColor r="0" g="1" b="0"/>
|
||||
</StatusBar>
|
||||
|
||||
<Button name="HealBot_MagicColorpickb">
|
||||
<Size>
|
||||
<AbsDimension x="130" y="20"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_DiseaseColorpick" relativePoint="TOPRIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="5" y="0"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnClick>HealBot_Colorpick_OnClick(HEALBOT_MAGIC_en)</OnClick>
|
||||
</Scripts>
|
||||
</Button>
|
||||
<StatusBar name="HealBot_MagicColorpick" inherits="TextStatusBar">
|
||||
<Size>
|
||||
<AbsDimension x="130" y="20"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_DiseaseColorpick" relativePoint="TOPRIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="5" y="0"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Layers>
|
||||
<Layer level="OVERLAY">
|
||||
<FontString inherits="GameFontNormalSmall" text="HEALBOT_MAGIC">
|
||||
<Anchors>
|
||||
<Anchor point="CENTER" relativeTo="HealBot_MagicColorpick" relativePoint="CENTER">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="1"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
<Scripts>
|
||||
<OnLoad> this:SetMinMaxValues(0,100); this:SetValue(100); </OnLoad>
|
||||
</Scripts>
|
||||
<BarTexture file="Interface\TargetingFrame\UI-StatusBar"/>
|
||||
<BarColor r="0" g="1" b="0"/>
|
||||
</StatusBar>
|
||||
|
||||
<Button name="HealBot_PoisonColorpickb">
|
||||
<Size>
|
||||
<AbsDimension x="130" y="20"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="BOTTOM" relativeTo="HealBot_DiseaseColorpick" relativePoint="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="65" y="-45"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnClick>HealBot_Colorpick_OnClick(HEALBOT_POISON_en)</OnClick>
|
||||
</Scripts>
|
||||
</Button>
|
||||
<StatusBar name="HealBot_PoisonColorpick" inherits="HealBot_ColourButtonTemplate">
|
||||
<Size>
|
||||
<AbsDimension x="130" y="20"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="BOTTOM" relativeTo="HealBot_DiseaseColorpick" relativePoint="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="65" y="-45"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Layers>
|
||||
<Layer level="OVERLAY">
|
||||
<FontString inherits="GameFontNormalSmall" text="HEALBOT_POISON">
|
||||
<Anchors>
|
||||
<Anchor point="CENTER" relativeTo="HealBot_PoisonColorpick" relativePoint="CENTER">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="1"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
<Scripts>
|
||||
<OnLoad> this:SetMinMaxValues(0,100); this:SetValue(100); </OnLoad>
|
||||
</Scripts>
|
||||
<BarTexture file="Interface\TargetingFrame\UI-StatusBar"/>
|
||||
<BarColor r="0" g="1" b="0"/>
|
||||
</StatusBar>
|
||||
|
||||
<Button name="HealBot_CurseColorpickb">
|
||||
<Size>
|
||||
<AbsDimension x="130" y="20"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_PoisonColorpick" relativePoint="TOPRIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="5" y="0"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnClick>HealBot_Colorpick_OnClick(HEALBOT_CURSE_en)</OnClick>
|
||||
</Scripts>
|
||||
</Button>
|
||||
<StatusBar name="HealBot_CurseColorpick" inherits="HealBot_ColourButtonTemplate">
|
||||
<Size>
|
||||
<AbsDimension x="130" y="20"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_PoisonColorpick" relativePoint="TOPRIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="5" y="0"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Layers>
|
||||
<Layer level="OVERLAY">
|
||||
<FontString inherits="GameFontNormalSmall" text="HEALBOT_CURSE">
|
||||
<Anchors>
|
||||
<Anchor point="CENTER" relativeTo="HealBot_CurseColorpick" relativePoint="CENTER">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="1"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
<Scripts>
|
||||
<OnLoad> this:SetMinMaxValues(0,100); this:SetValue(100); </OnLoad>
|
||||
</Scripts>
|
||||
<BarTexture file="Interface\TargetingFrame\UI-StatusBar"/>
|
||||
<BarColor r="0" g="1" b="0"/>
|
||||
</StatusBar>
|
||||
|
||||
<Frame name="HealBot_Options_CureDispelCleanseWarn" inherits="OptionFrameBoxTemplate">
|
||||
<Scripts>
|
||||
<OnLoad>
|
||||
this:SetBackdropBorderColor(0.4, 0.4, 0.4);
|
||||
this:SetBackdropColor(0, 0, 0, 0);
|
||||
</OnLoad>
|
||||
</Scripts>
|
||||
<Size>
|
||||
<AbsDimension y="120"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="21" y="-285"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
<Anchor point="TOPRIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="-21" y="-290"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Layers>
|
||||
<Layer level="BACKGROUND">
|
||||
<FontString name="HealBot_CDCWarn_Text" text="HEALBOT_OPTIONS_CDCWARNINGS" inherits="GameFontNormalSmall">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="98" y="-12" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
</Frame>
|
||||
<CheckButton name="HealBot_Options_ShowDebuffWarning" inherits="OptionsCheckButtonTemplate">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_CureDispelCleanseWarn" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="25" y="90" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_Options_ShowDebuffWarning_OnLoad(this,HEALBOT_OPTIONS_SHOWDEBUFFWARNING)</OnLoad>
|
||||
<OnClick>HealBot_Options_ShowDebuffWarning_OnClick(this)</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
<CheckButton name="HealBot_Options_SoundDebuffWarning" inherits="OptionsCheckButtonTemplate">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_ShowDebuffWarning" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="5" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_Options_SoundDebuffWarning_OnLoad(this,HEALBOT_OPTIONS_SOUNDDEBUFFWARNING)</OnLoad>
|
||||
<OnClick>HealBot_Options_SoundDebuffWarning_OnClick(this)</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
|
||||
<CheckButton name="HealBot_WarningSound1" inherits="SendMailRadioButtonTemplate" id="1">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_SoundDebuffWarning" relativePoint="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="25" y="-30"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_WarningSound_OnLoad(this,HEALBOT_OPTIONS_SOUND1)</OnLoad>
|
||||
<OnClick>HealBot_WarningSound_OnClick(this,this:GetID())</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
<CheckButton name="HealBot_WarningSound2" inherits="SendMailRadioButtonTemplate" id="2">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_WarningSound1" relativePoint="TOPRIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="55" y="0"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_WarningSound_OnLoad(this,HEALBOT_OPTIONS_SOUND2)</OnLoad>
|
||||
<OnClick>HealBot_WarningSound_OnClick(this,this:GetID())</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
<CheckButton name="HealBot_WarningSound3" inherits="SendMailRadioButtonTemplate" id="3">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_WarningSound2" relativePoint="TOPRIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="65" y="0"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_WarningSound_OnLoad(this,HEALBOT_OPTIONS_SOUND3)</OnLoad>
|
||||
<OnClick>HealBot_WarningSound_OnClick(this,this:GetID())</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
</Frames>
|
||||
</Frame>
|
||||
|
||||
</Ui>
|
||||
@@ -0,0 +1,79 @@
|
||||
-- HealBot Options panel file: HealBot_Options_Chat.lua
|
||||
-- Split from original HealBot_Options.lua
|
||||
|
||||
function HealBot_Options_ChatMsg_Channel_OnClick(id, buttonFrame)
|
||||
if not HealBot_Config.ChatMessages then HealBot_Config.ChatMessages = {} end
|
||||
if not HealBot_Config.ChatMessages[id] then
|
||||
HealBot_Config.ChatMessages[id] = { Spell = "", Message = "Casting #Spell# on #Target#", Channel = "None" }
|
||||
end
|
||||
|
||||
local current = HealBot_Config.ChatMessages[id].Channel
|
||||
local nextChan = "None"
|
||||
|
||||
if current == "None" then
|
||||
nextChan = "Say"
|
||||
elseif current == "Say" then
|
||||
nextChan = "Party"
|
||||
elseif current == "Party" then
|
||||
nextChan = "Raid"
|
||||
elseif current == "Raid" then
|
||||
nextChan = "Whisper"
|
||||
elseif current == "Whisper" then
|
||||
nextChan = "None"
|
||||
end
|
||||
|
||||
HealBot_Config.ChatMessages[id].Channel = nextChan
|
||||
buttonFrame:SetText(nextChan)
|
||||
end
|
||||
|
||||
function HealBot_Options_SetChatMessages()
|
||||
if not HealBot_Config.ChatMessages then
|
||||
HealBot_Config.ChatMessages = {}
|
||||
end
|
||||
for i = 1, 5 do
|
||||
if not HealBot_Config.ChatMessages[i] then
|
||||
HealBot_Config.ChatMessages[i] = { Spell = "", Message = "Casting #Spell# on #Target#", Channel = "None" }
|
||||
end
|
||||
end
|
||||
for i = 1, 5 do
|
||||
local msgConfig = HealBot_Config.ChatMessages[i]
|
||||
if msgConfig then
|
||||
local spellEdit = getglobal("HealBot_Options_ChatMsg"..i.."_Spell")
|
||||
local textEdit = getglobal("HealBot_Options_ChatMsg"..i.."_Text")
|
||||
local chanButton = getglobal("HealBot_Options_ChatMsg"..i.."_Channel")
|
||||
|
||||
if spellEdit then
|
||||
if msgConfig.Spell == "None" then
|
||||
spellEdit:SetText("")
|
||||
msgConfig.Spell = ""
|
||||
else
|
||||
spellEdit:SetText(msgConfig.Spell or "")
|
||||
end
|
||||
end
|
||||
if textEdit then
|
||||
textEdit:SetText(msgConfig.Message or "")
|
||||
end
|
||||
if chanButton then
|
||||
chanButton:SetText(msgConfig.Channel or "None")
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,289 @@
|
||||
<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_Chat.lua" />
|
||||
<Frame name="HealBot_Options_Panel7" parent="HealBot_Options" hidden="true" setAllPoints="true">
|
||||
<Frames>
|
||||
<!-- Chat Message 1 -->
|
||||
<EditBox name="HealBot_Options_ChatMsg1_Spell" inherits="InputBoxTemplate" autoFocus="false">
|
||||
<Size>
|
||||
<AbsDimension x="130" y="20"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="25" y="-30" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnTextChanged>
|
||||
if HealBot_Config.ChatMessages then
|
||||
HealBot_Config.ChatMessages[1].Spell = this:GetText();
|
||||
end
|
||||
</OnTextChanged>
|
||||
</Scripts>
|
||||
</EditBox>
|
||||
<Button name="HealBot_Options_ChatMsg1_Channel" inherits="UIPanelButtonTemplate" text="None">
|
||||
<Size>
|
||||
<AbsDimension x="80" y="22"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="LEFT" relativeTo="HealBot_Options_ChatMsg1_Spell" relativePoint="RIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="15" y="0"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnClick>
|
||||
HealBot_Options_ChatMsg_Channel_OnClick(1, this);
|
||||
</OnClick>
|
||||
</Scripts>
|
||||
</Button>
|
||||
<EditBox name="HealBot_Options_ChatMsg1_Text" inherits="InputBoxTemplate" autoFocus="false">
|
||||
<Size>
|
||||
<AbsDimension x="300" y="20"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_ChatMsg1_Spell" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-5"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnTextChanged>
|
||||
if HealBot_Config.ChatMessages then
|
||||
HealBot_Config.ChatMessages[1].Message = this:GetText();
|
||||
end
|
||||
</OnTextChanged>
|
||||
</Scripts>
|
||||
</EditBox>
|
||||
<!-- Chat Message 2 -->
|
||||
<EditBox name="HealBot_Options_ChatMsg2_Spell" inherits="InputBoxTemplate" autoFocus="false">
|
||||
<Size>
|
||||
<AbsDimension x="130" y="20"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="25" y="-90" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnTextChanged>
|
||||
if HealBot_Config.ChatMessages then
|
||||
HealBot_Config.ChatMessages[2].Spell = this:GetText();
|
||||
end
|
||||
</OnTextChanged>
|
||||
</Scripts>
|
||||
</EditBox>
|
||||
<Button name="HealBot_Options_ChatMsg2_Channel" inherits="UIPanelButtonTemplate" text="None">
|
||||
<Size>
|
||||
<AbsDimension x="80" y="22"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="LEFT" relativeTo="HealBot_Options_ChatMsg2_Spell" relativePoint="RIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="15" y="0"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnClick>
|
||||
HealBot_Options_ChatMsg_Channel_OnClick(2, this);
|
||||
</OnClick>
|
||||
</Scripts>
|
||||
</Button>
|
||||
<EditBox name="HealBot_Options_ChatMsg2_Text" inherits="InputBoxTemplate" autoFocus="false">
|
||||
<Size>
|
||||
<AbsDimension x="300" y="20"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_ChatMsg2_Spell" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-5"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnTextChanged>
|
||||
if HealBot_Config.ChatMessages then
|
||||
HealBot_Config.ChatMessages[2].Message = this:GetText();
|
||||
end
|
||||
</OnTextChanged>
|
||||
</Scripts>
|
||||
</EditBox>
|
||||
<!-- Chat Message 3 -->
|
||||
<EditBox name="HealBot_Options_ChatMsg3_Spell" inherits="InputBoxTemplate" autoFocus="false">
|
||||
<Size>
|
||||
<AbsDimension x="130" y="20"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="25" y="-150" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnTextChanged>
|
||||
if HealBot_Config.ChatMessages then
|
||||
HealBot_Config.ChatMessages[3].Spell = this:GetText();
|
||||
end
|
||||
</OnTextChanged>
|
||||
</Scripts>
|
||||
</EditBox>
|
||||
<Button name="HealBot_Options_ChatMsg3_Channel" inherits="UIPanelButtonTemplate" text="None">
|
||||
<Size>
|
||||
<AbsDimension x="80" y="22"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="LEFT" relativeTo="HealBot_Options_ChatMsg3_Spell" relativePoint="RIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="15" y="0"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnClick>
|
||||
HealBot_Options_ChatMsg_Channel_OnClick(3, this);
|
||||
</OnClick>
|
||||
</Scripts>
|
||||
</Button>
|
||||
<EditBox name="HealBot_Options_ChatMsg3_Text" inherits="InputBoxTemplate" autoFocus="false">
|
||||
<Size>
|
||||
<AbsDimension x="300" y="20"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_ChatMsg3_Spell" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-5"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnTextChanged>
|
||||
if HealBot_Config.ChatMessages then
|
||||
HealBot_Config.ChatMessages[3].Message = this:GetText();
|
||||
end
|
||||
</OnTextChanged>
|
||||
</Scripts>
|
||||
</EditBox>
|
||||
<!-- Chat Message 4 -->
|
||||
<EditBox name="HealBot_Options_ChatMsg4_Spell" inherits="InputBoxTemplate" autoFocus="false">
|
||||
<Size>
|
||||
<AbsDimension x="130" y="20"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="25" y="-210" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnTextChanged>
|
||||
if HealBot_Config.ChatMessages then
|
||||
HealBot_Config.ChatMessages[4].Spell = this:GetText();
|
||||
end
|
||||
</OnTextChanged>
|
||||
</Scripts>
|
||||
</EditBox>
|
||||
<Button name="HealBot_Options_ChatMsg4_Channel" inherits="UIPanelButtonTemplate" text="None">
|
||||
<Size>
|
||||
<AbsDimension x="80" y="22"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="LEFT" relativeTo="HealBot_Options_ChatMsg4_Spell" relativePoint="RIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="15" y="0"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnClick>
|
||||
HealBot_Options_ChatMsg_Channel_OnClick(4, this);
|
||||
</OnClick>
|
||||
</Scripts>
|
||||
</Button>
|
||||
<EditBox name="HealBot_Options_ChatMsg4_Text" inherits="InputBoxTemplate" autoFocus="false">
|
||||
<Size>
|
||||
<AbsDimension x="300" y="20"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_ChatMsg4_Spell" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-5"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnTextChanged>
|
||||
if HealBot_Config.ChatMessages then
|
||||
HealBot_Config.ChatMessages[4].Message = this:GetText();
|
||||
end
|
||||
</OnTextChanged>
|
||||
</Scripts>
|
||||
</EditBox>
|
||||
<!-- Chat Message 5 -->
|
||||
<EditBox name="HealBot_Options_ChatMsg5_Spell" inherits="InputBoxTemplate" autoFocus="false">
|
||||
<Size>
|
||||
<AbsDimension x="130" y="20"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="25" y="-270" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnTextChanged>
|
||||
if HealBot_Config.ChatMessages then
|
||||
HealBot_Config.ChatMessages[5].Spell = this:GetText();
|
||||
end
|
||||
</OnTextChanged>
|
||||
</Scripts>
|
||||
</EditBox>
|
||||
<Button name="HealBot_Options_ChatMsg5_Channel" inherits="UIPanelButtonTemplate" text="None">
|
||||
<Size>
|
||||
<AbsDimension x="80" y="22"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="LEFT" relativeTo="HealBot_Options_ChatMsg5_Spell" relativePoint="RIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="15" y="0"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnClick>
|
||||
HealBot_Options_ChatMsg_Channel_OnClick(5, this);
|
||||
</OnClick>
|
||||
</Scripts>
|
||||
</Button>
|
||||
<EditBox name="HealBot_Options_ChatMsg5_Text" inherits="InputBoxTemplate" autoFocus="false">
|
||||
<Size>
|
||||
<AbsDimension x="300" y="20"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_ChatMsg5_Spell" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-5"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnTextChanged>
|
||||
if HealBot_Config.ChatMessages then
|
||||
HealBot_Config.ChatMessages[5].Message = this:GetText();
|
||||
end
|
||||
</OnTextChanged>
|
||||
</Scripts>
|
||||
</EditBox>
|
||||
</Frames>
|
||||
</Frame>
|
||||
</Ui>
|
||||
@@ -0,0 +1,292 @@
|
||||
-- HealBot Options panel file: HealBot_Options_General.lua
|
||||
-- Split from original HealBot_Options.lua
|
||||
|
||||
function HealBot_Options_ShowHeaders_OnLoad(this)
|
||||
getglobal(this:GetName().."Text"):SetText(HEALBOT_OPTIONS_SHOWHEADERS);
|
||||
end
|
||||
function HealBot_Options_ShowHeaders_OnClick(this)
|
||||
local isChecked = this:GetChecked()
|
||||
HealBot_Config.ShowHeader[HealBot_Config.Current_Skin] = isChecked and 1 or 0;
|
||||
HealBot_Action_ResetSkin()
|
||||
end
|
||||
function HealBot_Options_BarTextureS_OnValueChanged(this)
|
||||
HealBot_Config.btexture[HealBot_Config.Current_Skin] = this:GetValue();
|
||||
getglobal(this:GetName().."Text"):SetText(this.text .. ": " .. this:GetValue());
|
||||
HealBot_Action_ResetSkin()
|
||||
end
|
||||
function HealBot_Options_BarHeightS_OnValueChanged(this)
|
||||
HealBot_Config.bheight[HealBot_Config.Current_Skin] = this:GetValue();
|
||||
getglobal(this:GetName().."Text"):SetText(this.text .. ": " .. this:GetValue());
|
||||
HealBot_Action_ResetSkin()
|
||||
end
|
||||
function HealBot_Options_BarWidthS_OnValueChanged(this)
|
||||
HealBot_Config.bwidth[HealBot_Config.Current_Skin] = this:GetValue();
|
||||
getglobal(this:GetName().."Text"):SetText(this.text .. ": " .. this:GetValue());
|
||||
HealBot_Action_ResetSkin()
|
||||
end
|
||||
function HealBot_Options_BarNumColsS_OnValueChanged(this)
|
||||
HealBot_Config.numcols[HealBot_Config.Current_Skin] = this:GetValue();
|
||||
getglobal(this:GetName().."Text"):SetText(this.text .. ": " .. this:GetValue());
|
||||
HealBot_Action_ResetSkin()
|
||||
end
|
||||
function HealBot_Options_BarBRSpaceS_OnValueChanged(this)
|
||||
HealBot_Config.brspace[HealBot_Config.Current_Skin] = this:GetValue();
|
||||
getglobal(this:GetName().."Text"):SetText(this.text .. ": " .. this:GetValue());
|
||||
HealBot_Action_ResetSkin()
|
||||
end
|
||||
function HealBot_Options_BarBCSpaceS_OnValueChanged(this)
|
||||
HealBot_Config.bcspace[HealBot_Config.Current_Skin] = this:GetValue();
|
||||
getglobal(this:GetName().."Text"):SetText(this.text .. ": " .. this:GetValue());
|
||||
HealBot_Action_ResetSkin()
|
||||
end
|
||||
function HealBot_Options_FontHeight_OnValueChanged(this)
|
||||
HealBot_Config.btextheight[HealBot_Config.Current_Skin] = this:GetValue();
|
||||
getglobal(this:GetName().."Text"):SetText(this.text .. ": " .. this:GetValue());
|
||||
HealBot_Action_ResetSkin()
|
||||
end
|
||||
function HealBot_Options_AbortBarSize_OnValueChanged(this)
|
||||
HealBot_Config.abortsize[HealBot_Config.Current_Skin] = this:GetValue();
|
||||
getglobal(this:GetName().."Text"):SetText(this.text .. ": " .. this:GetValue());
|
||||
HealBot_Action_ResetSkin()
|
||||
end
|
||||
function HealBot_Options_ActionAlpha_OnValueChanged(this)
|
||||
HealBot_Config.backcola[HealBot_Config.Current_Skin] = HealBot_Options_Pct_OnValueChanged(this);
|
||||
HealBot_Action_ResetSkin()
|
||||
end
|
||||
function HealBot_Options_BarAlpha_OnValueChanged(this)
|
||||
HealBot_Config.Barcola[HealBot_Config.Current_Skin] = HealBot_Options_Pct_OnValueChanged(this);
|
||||
HealBot_Action_ResetSkin()
|
||||
end
|
||||
function HealBot_Options_BarAlphaInHeal_OnValueChanged(this)
|
||||
HealBot_Config.BarcolaInHeal[HealBot_Config.Current_Skin] = HealBot_Options_Pct_OnValueChanged(this);
|
||||
HealBot_Action_ResetSkin()
|
||||
end
|
||||
function HealBot_Options_BarAlphaDis_OnValueChanged(this)
|
||||
HealBot_Config.bardisa[HealBot_Config.Current_Skin] = HealBot_Options_Pct_OnValueChanged(this);
|
||||
HealBot_Action_ResetSkin()
|
||||
end
|
||||
function HealBot_SkinColorpick_OnClick(SkinType)
|
||||
HealBot_ColourObjWaiting=SkinType;
|
||||
|
||||
if SkinType=="En" then
|
||||
HealBot_UseColourPick(HealBot_Config.btextenabledcolr[HealBot_Config.Current_Skin],
|
||||
HealBot_Config.btextenabledcolg[HealBot_Config.Current_Skin],
|
||||
HealBot_Config.btextenabledcolb[HealBot_Config.Current_Skin],
|
||||
HealBot_Config.btextenabledcola[HealBot_Config.Current_Skin]);
|
||||
elseif SkinType=="Dis" then
|
||||
HealBot_UseColourPick(HealBot_Config.btextdisbledcolr[HealBot_Config.Current_Skin],
|
||||
HealBot_Config.btextdisbledcolg[HealBot_Config.Current_Skin],
|
||||
HealBot_Config.btextdisbledcolb[HealBot_Config.Current_Skin],
|
||||
HealBot_Config.btextdisbledcola[HealBot_Config.Current_Skin])
|
||||
elseif SkinType=="Debuff" then
|
||||
HealBot_UseColourPick(HealBot_Config.btextcursecolr[HealBot_Config.Current_Skin],
|
||||
HealBot_Config.btextcursecolg[HealBot_Config.Current_Skin],
|
||||
HealBot_Config.btextcursecolb[HealBot_Config.Current_Skin],
|
||||
HealBot_Config.btextcursecola[HealBot_Config.Current_Skin])
|
||||
elseif SkinType=="Back" then
|
||||
HealBot_UseColourPick(HealBot_Config.backcolr[HealBot_Config.Current_Skin],
|
||||
HealBot_Config.backcolg[HealBot_Config.Current_Skin],
|
||||
HealBot_Config.backcolb[HealBot_Config.Current_Skin],
|
||||
HealBot_Config.backcola[HealBot_Config.Current_Skin])
|
||||
elseif SkinType=="Bor" then
|
||||
HealBot_UseColourPick(HealBot_Config.borcolr[HealBot_Config.Current_Skin],
|
||||
HealBot_Config.borcolg[HealBot_Config.Current_Skin],
|
||||
HealBot_Config.borcolb[HealBot_Config.Current_Skin],
|
||||
HealBot_Config.borcola[HealBot_Config.Current_Skin])
|
||||
elseif SkinType=="Abort" then
|
||||
HealBot_UseColourPick(HealBot_Config.babortcolr[HealBot_Config.Current_Skin],
|
||||
HealBot_Config.babortcolg[HealBot_Config.Current_Skin],
|
||||
HealBot_Config.babortcolb[HealBot_Config.Current_Skin],
|
||||
HealBot_Config.babortcola[HealBot_Config.Current_Skin])
|
||||
end
|
||||
end
|
||||
function HealBot_SetSkinColours()
|
||||
-- Cache the current skin configuration for performance and readability
|
||||
local skin = HealBot_Config.Current_Skin
|
||||
local btextheight = HealBot_Config.btextheight[skin] or 10
|
||||
|
||||
-- 1. Set Status Bar Colors (Green with variations based on configuration)
|
||||
local alpha = HealBot_Config.Barcola[skin]
|
||||
local inHealAlpha = alpha * (HealBot_Config.BarcolaInHeal[skin] or 1)
|
||||
local disabledAlpha = HealBot_Config.bardisa[skin]
|
||||
|
||||
HealBot_EnTextColorpick:SetStatusBarColor(0, 1, 0, alpha)
|
||||
HealBot_EnTextColorpickin:SetStatusBarColor(0, 1, 0, inHealAlpha)
|
||||
HealBot_DisTextColorpick:SetStatusBarColor(0, 1, 0, disabledAlpha)
|
||||
|
||||
-- 2. Set Text Colors
|
||||
HealBot_EnTextColorpickt:SetTextColor(
|
||||
HealBot_Config.btextenabledcolr[skin], HealBot_Config.btextenabledcolg[skin],
|
||||
HealBot_Config.btextenabledcolb[skin], HealBot_Config.btextenabledcola[skin]
|
||||
)
|
||||
HealBot_DisTextColorpickt:SetTextColor(
|
||||
HealBot_Config.btextdisbledcolr[skin], HealBot_Config.btextdisbledcolg[skin],
|
||||
HealBot_Config.btextdisbledcolb[skin], HealBot_Config.btextdisbledcola[skin]
|
||||
)
|
||||
HealBot_DebTextColorpickt:SetTextColor(
|
||||
HealBot_Config.btextcursecolr[skin], HealBot_Config.btextcursecolg[skin],
|
||||
HealBot_Config.btextcursecolb[skin], HealBot_Config.btextcursecola[skin]
|
||||
)
|
||||
|
||||
-- 3. Set Preview Component Colors
|
||||
local bgR, bgG, bgB, bgA = HealBot_Config.backcolr[skin], HealBot_Config.backcolg[skin], HealBot_Config.backcolb[skin], HealBot_Config.backcola[skin]
|
||||
local borderR, borderG, borderB, borderA = HealBot_Config.borcolr[skin], HealBot_Config.borcolg[skin], HealBot_Config.borcolb[skin], HealBot_Config.borcola[skin]
|
||||
|
||||
HealBot_BackgroundColorpick:SetStatusBarColor(bgR, bgG, bgB, bgA)
|
||||
HealBot_BorderColorpick:SetStatusBarColor(borderR, borderG, borderB, borderA)
|
||||
HealBot_AbortColorpick:SetStatusBarColor(
|
||||
HealBot_Config.babortcolr[skin], HealBot_Config.babortcolg[skin],
|
||||
HealBot_Config.babortcolb[skin], HealBot_Config.babortcola[skin]
|
||||
)
|
||||
|
||||
-- 4. Setup Main Panel Backdrop (Fixed scoping bugs)
|
||||
local borderStyle = HealBot_Config.bborder[skin] or 2
|
||||
local backdrop = {
|
||||
bgFile = "Interface\\Tooltips\\UI-Tooltip-Background",
|
||||
tile = true,
|
||||
tileSize = 8,
|
||||
}
|
||||
|
||||
if borderStyle == 0 then
|
||||
-- No border
|
||||
backdrop.edgeFile = "Interface\\Buttons\\WHITE8X8"
|
||||
backdrop.edgeSize = 1
|
||||
backdrop.insets = { left = 1, right = 1, top = 1, bottom = 1 }
|
||||
HealBot_Action:SetBackdrop(backdrop)
|
||||
HealBot_Action:SetBackdropBorderColor(0, 0, 0, 0)
|
||||
HealBot_Action:SetBackdropColor(bgR, bgG, bgB, bgA)
|
||||
|
||||
elseif borderStyle == 1 then
|
||||
-- Custom flat border
|
||||
local bboffset = (HealBot_Config.bboffset and HealBot_Config.bboffset[skin]) or 1
|
||||
local bpadding = (HealBot_Config.bpadding and HealBot_Config.bpadding[skin]) or 10
|
||||
|
||||
backdrop.edgeFile = "Interface\\Buttons\\WHITE8X8"
|
||||
backdrop.edgeSize = bboffset
|
||||
backdrop.insets = { left = bpadding, right = bpadding, top = bpadding, bottom = bpadding }
|
||||
|
||||
HealBot_Action:SetBackdrop(backdrop)
|
||||
HealBot_Action:SetBackdropColor(bgR, bgG, bgB, bgA)
|
||||
HealBot_Action:SetBackdropBorderColor(borderR, borderG, borderB, borderA)
|
||||
|
||||
else
|
||||
-- Default Blizzard Tooltip Border
|
||||
backdrop.edgeFile = "Interface\\Tooltips\\UI-Tooltip-Border"
|
||||
backdrop.edgeSize = 16
|
||||
backdrop.insets = { left = 4, right = 4, top = 4, bottom = 4 }
|
||||
|
||||
HealBot_Action:SetBackdrop(backdrop)
|
||||
HealBot_Action:SetBackdropColor(bgR, bgG, bgB, bgA)
|
||||
HealBot_Action:SetBackdropBorderColor(borderR, borderG, borderB, borderA)
|
||||
end
|
||||
|
||||
-- 5. Update Text Labels
|
||||
HealBot_EnTextColorpickt:SetTextHeight(btextheight)
|
||||
HealBot_DisTextColorpickt:SetTextHeight(btextheight)
|
||||
HealBot_DebTextColorpickt:SetTextHeight(btextheight)
|
||||
|
||||
HealBot_EnTextColorpickt:SetText(HEALBOT_SKIN_ENTEXT)
|
||||
HealBot_DisTextColorpickt:SetText(HEALBOT_SKIN_DISTEXT)
|
||||
HealBot_DebTextColorpickt:SetText(HEALBOT_SKIN_DEBTEXT)
|
||||
|
||||
-- 6. Force UI redraw (Kept the scale hack since it addresses a specific engine quirk)
|
||||
local barScale = HealBot_EnTextColorpick:GetScale()
|
||||
HealBot_EnTextColorpick:SetScale(barScale + 0.01); HealBot_EnTextColorpick:SetScale(barScale)
|
||||
HealBot_DisTextColorpick:SetScale(barScale + 0.01); HealBot_DisTextColorpick:SetScale(barScale)
|
||||
HealBot_DebTextColorpick:SetScale(barScale + 0.01); HealBot_DebTextColorpick:SetScale(barScale)
|
||||
|
||||
HealBot_Action_PartyChanged()
|
||||
end
|
||||
function HealBot_Options_AlertLevel_OnValueChanged(this)
|
||||
HealBot_Config.AlertLevel = HealBot_Options_Pct_OnValueChanged(this);
|
||||
HealBot_Action_Refresh();
|
||||
end
|
||||
function HealBot_Options_AutoShow_OnLoad(this)
|
||||
getglobal(this:GetName().."Text"):SetText(HEALBOT_OPTIONS_AUTOSHOW);
|
||||
end
|
||||
function HealBot_Options_AutoShow_OnClick(this)
|
||||
HealBot_Config.AutoClose = this:GetChecked() or 0;
|
||||
HealBot_Action_Refresh();
|
||||
end
|
||||
function HealBot_Options_PanelSounds_OnLoad(this)
|
||||
getglobal(this:GetName().."Text"):SetText(HEALBOT_OPTIONS_PANELSOUNDS);
|
||||
end
|
||||
function HealBot_Options_PanelSounds_OnClick(this)
|
||||
HealBot_Config.PanelSounds = this:GetChecked() or 0;
|
||||
end
|
||||
function HealBot_Options_ActionMouseover_OnLoad(this, text)
|
||||
getglobal(this:GetName().."Text"):SetText(text);
|
||||
end
|
||||
function HealBot_Options_ActionMouseover_OnClick(this)
|
||||
HealBot_Config.ActionMouseover = this:GetChecked() or 0;
|
||||
end
|
||||
function HealBot_Options_ActionLocked_OnLoad(this)
|
||||
getglobal(this:GetName().."Text"):SetText(HEALBOT_OPTIONS_ACTIONLOCKED);
|
||||
end
|
||||
function HealBot_Options_ActionLocked_OnClick(this)
|
||||
HealBot_Config.ActionLocked = this:GetChecked() or 0;
|
||||
end
|
||||
function HealBot_Options_HideOptions_OnLoad(this,text)
|
||||
getglobal(this:GetName().."Text"):SetText(text);
|
||||
end
|
||||
function HealBot_Options_HideOptions_OnClick(this)
|
||||
HealBot_Config.HideOptions = this:GetChecked() or 0;
|
||||
HealBot_Action_PartyChanged();
|
||||
end
|
||||
function HealBot_Options_HideAbort_OnLoad(this,text)
|
||||
getglobal(this:GetName().."Text"):SetText(text);
|
||||
end
|
||||
function HealBot_Options_HideAbort_OnClick(this)
|
||||
HealBot_Config.HideAbort = this:GetChecked() or 0;
|
||||
HealBot_Action_PartyChanged();
|
||||
end
|
||||
function HealBot_Options_GrowUpwards_OnLoad(this,text)
|
||||
getglobal(this:GetName().."Text"):SetText(text);
|
||||
end
|
||||
function HealBot_Options_GrowUpwards_OnClick(this)
|
||||
HealBot_Config.GrowUpwards = this:GetChecked() or 0;
|
||||
HealBot_Action_PartyChanged();
|
||||
end
|
||||
function HealBot_Options_QualityRange_OnLoad(this,text)
|
||||
getglobal(this:GetName().."Text"):SetText(text);
|
||||
end
|
||||
function HealBot_Options_QualityRange_OnClick(this)
|
||||
HealBot_Config.QualityRange = this:GetChecked() or 0;
|
||||
HealBot_Action_PartyChanged();
|
||||
end
|
||||
function HealBot_Options_ProtectPvP_OnLoad(this,text)
|
||||
getglobal(this:GetName().."Text"):SetText(text);
|
||||
end
|
||||
function HealBot_Options_ProtectPvP_OnClick(this)
|
||||
HealBot_Config.ProtectPvP = this:GetChecked() or 0;
|
||||
HealBot_Action_Refresh();
|
||||
end
|
||||
function HealBot_Options_FramePaddingS_OnValueChanged(this)
|
||||
if not HealBot_Config.bpadding then HealBot_Config.bpadding = {} end
|
||||
HealBot_Config.bpadding[HealBot_Config.Current_Skin] = this:GetValue();
|
||||
getglobal(this:GetName().."Text"):SetText(this.text .. ": " .. this:GetValue());
|
||||
HealBot_Action_ResetSkin()
|
||||
end
|
||||
function HealBot_Options_BorderThicknessS_OnValueChanged(this)
|
||||
if not HealBot_Config.bboffset then HealBot_Config.bboffset = {} end
|
||||
HealBot_Config.bboffset[HealBot_Config.Current_Skin] = this:GetValue();
|
||||
getglobal(this:GetName().."Text"):SetText(this.text .. ": " .. this:GetValue());
|
||||
HealBot_Action_ResetSkin()
|
||||
end
|
||||
|
||||
function HealBot_Options_HideParty_OnLoad(this, text)
|
||||
getglobal(this:GetName().."Text"):SetText(text);
|
||||
end
|
||||
|
||||
function HealBot_Options_HideParty_OnClick(this)
|
||||
HealBot_Config.HideParty = this:GetChecked() or 0;
|
||||
HealBot_Options_TogglePartyFrames();
|
||||
end
|
||||
|
||||
function HealBot_Options_TogglePartyFrames()
|
||||
if HealBot_Config.HideParty == 1 then
|
||||
if HidePartyFrame then HidePartyFrame(); end
|
||||
else
|
||||
if ShowPartyFrame then ShowPartyFrame(); end
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,303 @@
|
||||
<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_General.lua" />
|
||||
<Frame name="HealBot_Options_Panel1" parent="HealBot_Options" hidden="true" setAllPoints="true">
|
||||
|
||||
<Frames>
|
||||
|
||||
<CheckButton name="HealBot_Options_ActionLocked" inherits="OptionsCheckButtonTemplate">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="31" y="-40" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_Options_ActionLocked_OnLoad(this)</OnLoad>
|
||||
<OnClick>HealBot_Options_ActionLocked_OnClick(this)</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
<CheckButton name="HealBot_Options_GrowUpwards" inherits="OptionsCheckButtonTemplate">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_ActionLocked" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="5" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_Options_GrowUpwards_OnLoad(this,HEALBOT_OPTIONS_GROWUPWARDS)</OnLoad>
|
||||
<OnClick>HealBot_Options_GrowUpwards_OnClick(this)</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
<CheckButton name="HealBot_Options_ActionMouseover" inherits="OptionsCheckButtonTemplate">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_GrowUpwards" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="5" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_Options_ActionMouseover_OnLoad(this,"Hovercasting")</OnLoad>
|
||||
<OnClick>HealBot_Options_ActionMouseover_OnClick(this)</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
<CheckButton name="HealBot_Options_AutoShow" inherits="OptionsCheckButtonTemplate">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_ActionLocked" relativePoint="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="200" y="0" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_Options_AutoShow_OnLoad(this)</OnLoad>
|
||||
<OnClick>HealBot_Options_AutoShow_OnClick(this)</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
<CheckButton name="HealBot_Options_PanelSounds" inherits="OptionsCheckButtonTemplate">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_GrowUpwards" relativePoint="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="200" y="0" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_Options_PanelSounds_OnLoad(this)</OnLoad>
|
||||
<OnClick>HealBot_Options_PanelSounds_OnClick(this)</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
<CheckButton name="HealBot_Options_HideSolo" inherits="OptionsCheckButtonTemplate">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_ActionMouseover" relativePoint="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="200" y="0" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>
|
||||
getglobal(this:GetName().."Text"):SetText("Hide when Solo");
|
||||
</OnLoad>
|
||||
<OnClick>
|
||||
if (this:GetChecked()) then
|
||||
HealBot_Config.HideSolo = 1;
|
||||
else
|
||||
HealBot_Config.HideSolo = 0;
|
||||
end
|
||||
HealBot_Action_ShowFrame();
|
||||
</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
|
||||
<Frame name="HealBot_Options_GenFrame" inherits="OptionFrameBoxTemplate">
|
||||
<Scripts>
|
||||
<OnLoad>
|
||||
this:SetBackdropBorderColor(0.4, 0.4, 0.4);
|
||||
this:SetBackdropColor(0, 0, 0, 0);
|
||||
</OnLoad>
|
||||
</Scripts>
|
||||
<Size>
|
||||
<AbsDimension y="95"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="21" y="-135"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
<Anchor point="TOPRIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="-21" y="-135"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Layers>
|
||||
<Layer level="BACKGROUND">
|
||||
<FontString name="HealBot_GeneralPanel_Text" text="HEALBOT_OPTIONS_PANEL_TEXT" inherits="GameFontNormalSmall">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="130" y="-12" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
<Frames>
|
||||
<CheckButton name="HealBot_Options_ShowManaBars" inherits="OptionsCheckButtonTemplate">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="10" y="-30" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>
|
||||
getglobal(this:GetName().."Text"):SetText("Show Mana Bars");
|
||||
</OnLoad>
|
||||
<OnClick>
|
||||
if (this:GetChecked()) then
|
||||
HealBot_Config.ShowManaBars = 1;
|
||||
else
|
||||
HealBot_Config.ShowManaBars = 0;
|
||||
end
|
||||
HealBot_Action_Refresh();
|
||||
</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
<CheckButton name="HealBot_Options_ManaBarsHealersOnly" inherits="OptionsCheckButtonTemplate">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_ShowManaBars" relativePoint="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="180" y="0" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>
|
||||
getglobal(this:GetName().."Text"):SetText("For Healers Only");
|
||||
</OnLoad>
|
||||
<OnClick>
|
||||
if (this:GetChecked()) then
|
||||
HealBot_Config.ManaBarsHealersOnly = 1;
|
||||
else
|
||||
HealBot_Config.ManaBarsHealersOnly = 0;
|
||||
end
|
||||
HealBot_Action_Refresh();
|
||||
</OnClick>
|
||||
</Scripts>
|
||||
</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>
|
||||
</Frame>
|
||||
|
||||
<CheckButton name="HealBot_Options_HideOptions" inherits="OptionsCheckButtonTemplate">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_GenFrame" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="10" y="-10" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_Options_HideOptions_OnLoad(this,HEALBOT_OPTIONS_HIDEOPTIONS)</OnLoad>
|
||||
<OnClick>HealBot_Options_HideOptions_OnClick(this)</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
<CheckButton name="HealBot_Options_HideAbort" inherits="OptionsCheckButtonTemplate">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_HideOptions" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-2" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_Options_HideAbort_OnLoad(this,HEALBOT_OPTIONS_HIDEABORT)</OnLoad>
|
||||
<OnClick>HealBot_Options_HideAbort_OnClick(this)</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
<CheckButton name="HealBot_Options_QualityRange" inherits="OptionsCheckButtonTemplate">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_HideAbort" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-2" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_Options_QualityRange_OnLoad(this,HEALBOT_OPTIONS_QUALITYRANGE)</OnLoad>
|
||||
<OnClick>HealBot_Options_QualityRange_OnClick(this)</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
<CheckButton name="HealBot_Options_ProtectPvP" inherits="OptionsCheckButtonTemplate">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_QualityRange" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-2" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_Options_ProtectPvP_OnLoad(this,HEALBOT_OPTIONS_PROTECTPVP)</OnLoad>
|
||||
<OnClick>HealBot_Options_ProtectPvP_OnClick(this)</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
<CheckButton name="HealBot_Options_HideParty" inherits="OptionsCheckButtonTemplate">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_ProtectPvP" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-2" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_Options_HideParty_OnLoad(this,HEALBOT_OPTIONS_HIDEPARTY)</OnLoad>
|
||||
<OnClick>HealBot_Options_HideParty_OnClick(this)</OnClick>
|
||||
</Scripts>
|
||||
</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>
|
||||
</Frame>
|
||||
|
||||
</Ui>
|
||||
@@ -0,0 +1,367 @@
|
||||
-- HealBot Options panel file: HealBot_Options_Healing.lua
|
||||
-- Split from original HealBot_Options.lua
|
||||
|
||||
function HealBot_Options_GroupHeals_OnLoad(this,text)
|
||||
this.text = text
|
||||
getglobal(this:GetName().."Text"):SetText(text);
|
||||
end
|
||||
function HealBot_Options_GroupHeals_OnClick(this)
|
||||
HealBot_Config.GroupHeals = this:GetChecked() or 0;
|
||||
HealBot_RecalcParty();
|
||||
end
|
||||
function HealBot_Options_TankHeals_OnLoad(this,text)
|
||||
this.text = text
|
||||
getglobal(this:GetName().."Text"):SetText(text);
|
||||
end
|
||||
function HealBot_Options_TankHeals_OnClick(this)
|
||||
HealBot_Config.TankHeals = this:GetChecked() or 0;
|
||||
HealBot_RecalcParty();
|
||||
end
|
||||
function HealBot_Options_TargetHeals_OnLoad(this,text)
|
||||
this.text = text
|
||||
getglobal(this:GetName().."Text"):SetText(text);
|
||||
end
|
||||
function HealBot_Options_TargetHeals_OnClick(this)
|
||||
HealBot_Config.TargetHeals = this:GetChecked() or 0;
|
||||
HealBot_RecalcParty();
|
||||
end
|
||||
function HealBot_Options_EmergencyHeals_OnLoad(this,text)
|
||||
this.text = text
|
||||
getglobal(this:GetName().."Text"):SetText(text);
|
||||
end
|
||||
function HealBot_Options_EmergencyHeals_OnClick(this)
|
||||
HealBot_Config.EmergencyHeals = this:GetChecked() or 0;
|
||||
HealBot_RecalcParty();
|
||||
end
|
||||
function HealBot_Options_OverHeal_OnValueChanged(this)
|
||||
HealBot_Config.OverHeal = HealBot_Options_Pct_OnValueChanged(this);
|
||||
end
|
||||
function HealBot_Options_EFClass_OnLoad(this,text)
|
||||
getglobal(this:GetName().."Text"):SetText(text);
|
||||
end
|
||||
function HealBot_Options_EFClass_OnClick(this)
|
||||
if HealBot_Config.EmergencyFClass==1 then
|
||||
HealBot_Config.EmergIncMelee[HEALBOT_DRUID] = HealBot_Options_EFClassDruid:GetChecked() or 0;
|
||||
HealBot_Config.EmergIncMelee[HEALBOT_HUNTER] = HealBot_Options_EFClassHunter:GetChecked() or 0;
|
||||
HealBot_Config.EmergIncMelee[HEALBOT_MAGE] = HealBot_Options_EFClassMage:GetChecked() or 0;
|
||||
HealBot_Config.EmergIncMelee[HEALBOT_PALADIN] = HealBot_Options_EFClassPaladin:GetChecked() or 0;
|
||||
HealBot_Config.EmergIncMelee[HEALBOT_PRIEST] = HealBot_Options_EFClassPriest:GetChecked() or 0;
|
||||
HealBot_Config.EmergIncMelee[HEALBOT_ROGUE] = HealBot_Options_EFClassRogue:GetChecked() or 0;
|
||||
HealBot_Config.EmergIncMelee[HEALBOT_SHAMAN] = HealBot_Options_EFClassShaman:GetChecked() or 0;
|
||||
HealBot_Config.EmergIncMelee[HEALBOT_WARLOCK] = HealBot_Options_EFClassWarlock:GetChecked() or 0;
|
||||
HealBot_Config.EmergIncMelee[HEALBOT_WARRIOR] = HealBot_Options_EFClassWarrior:GetChecked() or 0;
|
||||
elseif HealBot_Config.EmergencyFClass==2 then
|
||||
HealBot_Config.EmergIncRange[HEALBOT_DRUID] = HealBot_Options_EFClassDruid:GetChecked() or 0;
|
||||
HealBot_Config.EmergIncRange[HEALBOT_HUNTER] = HealBot_Options_EFClassHunter:GetChecked() or 0;
|
||||
HealBot_Config.EmergIncRange[HEALBOT_MAGE] = HealBot_Options_EFClassMage:GetChecked() or 0;
|
||||
HealBot_Config.EmergIncRange[HEALBOT_PALADIN] = HealBot_Options_EFClassPaladin:GetChecked() or 0;
|
||||
HealBot_Config.EmergIncRange[HEALBOT_PRIEST] = HealBot_Options_EFClassPriest:GetChecked() or 0;
|
||||
HealBot_Config.EmergIncRange[HEALBOT_ROGUE] = HealBot_Options_EFClassRogue:GetChecked() or 0;
|
||||
HealBot_Config.EmergIncRange[HEALBOT_SHAMAN] = HealBot_Options_EFClassShaman:GetChecked() or 0;
|
||||
HealBot_Config.EmergIncRange[HEALBOT_WARLOCK] = HealBot_Options_EFClassWarlock:GetChecked() or 0;
|
||||
HealBot_Config.EmergIncRange[HEALBOT_WARRIOR] = HealBot_Options_EFClassWarrior:GetChecked() or 0;
|
||||
elseif HealBot_Config.EmergencyFClass==3 then
|
||||
HealBot_Config.EmergIncHealers[HEALBOT_DRUID] = HealBot_Options_EFClassDruid:GetChecked() or 0;
|
||||
HealBot_Config.EmergIncHealers[HEALBOT_HUNTER] = HealBot_Options_EFClassHunter:GetChecked() or 0;
|
||||
HealBot_Config.EmergIncHealers[HEALBOT_MAGE] = HealBot_Options_EFClassMage:GetChecked() or 0;
|
||||
HealBot_Config.EmergIncHealers[HEALBOT_PALADIN] = HealBot_Options_EFClassPaladin:GetChecked() or 0;
|
||||
HealBot_Config.EmergIncHealers[HEALBOT_PRIEST] = HealBot_Options_EFClassPriest:GetChecked() or 0;
|
||||
HealBot_Config.EmergIncHealers[HEALBOT_ROGUE] = HealBot_Options_EFClassRogue:GetChecked() or 0;
|
||||
HealBot_Config.EmergIncHealers[HEALBOT_SHAMAN] = HealBot_Options_EFClassShaman:GetChecked() or 0;
|
||||
HealBot_Config.EmergIncHealers[HEALBOT_WARLOCK] = HealBot_Options_EFClassWarlock:GetChecked() or 0;
|
||||
HealBot_Config.EmergIncHealers[HEALBOT_WARRIOR] = HealBot_Options_EFClassWarrior:GetChecked() or 0;
|
||||
elseif HealBot_Config.EmergencyFClass==4 then
|
||||
HealBot_Config.EmergIncCustom[HEALBOT_DRUID] = HealBot_Options_EFClassDruid:GetChecked() or 0;
|
||||
HealBot_Config.EmergIncCustom[HEALBOT_HUNTER] = HealBot_Options_EFClassHunter:GetChecked() or 0;
|
||||
HealBot_Config.EmergIncCustom[HEALBOT_MAGE] = HealBot_Options_EFClassMage:GetChecked() or 0;
|
||||
HealBot_Config.EmergIncCustom[HEALBOT_PALADIN] = HealBot_Options_EFClassPaladin:GetChecked() or 0;
|
||||
HealBot_Config.EmergIncCustom[HEALBOT_PRIEST] = HealBot_Options_EFClassPriest:GetChecked() or 0;
|
||||
HealBot_Config.EmergIncCustom[HEALBOT_ROGUE] = HealBot_Options_EFClassRogue:GetChecked() or 0;
|
||||
HealBot_Config.EmergIncCustom[HEALBOT_SHAMAN] = HealBot_Options_EFClassShaman: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;
|
||||
end
|
||||
if HealBot_Config.EmergIncMonitor>10 then
|
||||
HealBot_Action_PartyChanged();
|
||||
end
|
||||
end
|
||||
HealBot_Options_HealthText_List = {
|
||||
"Name Only",
|
||||
"Health Percentage",
|
||||
"Real Health",
|
||||
"Health Deficit",
|
||||
}
|
||||
|
||||
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
|
||||
|
||||
function HealBot_Options_HealthText_OnLoad(this)
|
||||
UIDropDownMenu_Initialize(this, HealBot_Options_HealthText_DropDown);
|
||||
UIDropDownMenu_SetWidth(110, this);
|
||||
end
|
||||
|
||||
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 = {
|
||||
HEALBOT_CLASSES_MELEE,
|
||||
HEALBOT_CLASSES_RANGES,
|
||||
HEALBOT_CLASSES_HEALERS,
|
||||
HEALBOT_CLASSES_CUSTOM,
|
||||
}
|
||||
|
||||
function HealBot_Options_EmergencyFClass_DropDown()
|
||||
for i=1, getn(HealBot_Options_EmergencyFClass_List), 1 do
|
||||
local info = {};
|
||||
info.text = HealBot_Options_EmergencyFClass_List[i];
|
||||
info.func = HealBot_Options_EmergencyFClass_OnSelect;
|
||||
UIDropDownMenu_AddButton(info);
|
||||
end
|
||||
end
|
||||
|
||||
function HealBot_Options_EmergencyFClass_Initialize()
|
||||
UIDropDownMenu_Initialize(HealBot_Options_EmergencyFClass,HealBot_Options_EmergencyFClass_DropDown)
|
||||
end
|
||||
|
||||
function HealBot_Options_EmergencyFClass_Refresh(onselect)
|
||||
if not HealBot_Config.EmergencyFClass then return end
|
||||
if not onselect then HealBot_Options_EmergencyFClass_Initialize() end -- or wrong menu may be used !
|
||||
HealBot_UIDropDownMenu_SetSelectedID(HealBot_Options_EmergencyFClass,HealBot_Config.EmergencyFClass)
|
||||
end
|
||||
|
||||
function HealBot_Options_EmergencyFClass_OnLoad()
|
||||
UIDropDownMenu_Initialize(this, HealBot_Options_EmergencyFClass_DropDown)
|
||||
UIDropDownMenu_SetWidth(100, this)
|
||||
end
|
||||
|
||||
function HealBot_Options_EmergencyFClass_OnSelect()
|
||||
HealBot_Config.EmergencyFClass = this:GetID()
|
||||
HealBot_Options_EmergencyFClass_Refresh(true)
|
||||
HealBot_Options_EFClass_Reset()
|
||||
end
|
||||
|
||||
function HealBot_Options_EFClass_Reset()
|
||||
if HealBot_Config.EmergencyFClass==1 then
|
||||
HealBot_Options_EFClassDruid:SetChecked(HealBot_Config.EmergIncMelee[HEALBOT_DRUID]);
|
||||
HealBot_Options_EFClassHunter:SetChecked(HealBot_Config.EmergIncMelee[HEALBOT_HUNTER]);
|
||||
HealBot_Options_EFClassMage:SetChecked(HealBot_Config.EmergIncMelee[HEALBOT_MAGE]);
|
||||
HealBot_Options_EFClassPaladin:SetChecked(HealBot_Config.EmergIncMelee[HEALBOT_PALADIN]);
|
||||
HealBot_Options_EFClassPriest:SetChecked(HealBot_Config.EmergIncMelee[HEALBOT_PRIEST]);
|
||||
HealBot_Options_EFClassRogue:SetChecked(HealBot_Config.EmergIncMelee[HEALBOT_ROGUE]);
|
||||
HealBot_Options_EFClassShaman:SetChecked(HealBot_Config.EmergIncMelee[HEALBOT_SHAMAN]);
|
||||
HealBot_Options_EFClassWarlock:SetChecked(HealBot_Config.EmergIncMelee[HEALBOT_WARLOCK]);
|
||||
HealBot_Options_EFClassWarrior:SetChecked(HealBot_Config.EmergIncMelee[HEALBOT_WARRIOR]);
|
||||
elseif HealBot_Config.EmergencyFClass==2 then
|
||||
HealBot_Options_EFClassDruid:SetChecked(HealBot_Config.EmergIncRange[HEALBOT_DRUID]);
|
||||
HealBot_Options_EFClassHunter:SetChecked(HealBot_Config.EmergIncRange[HEALBOT_HUNTER]);
|
||||
HealBot_Options_EFClassMage:SetChecked(HealBot_Config.EmergIncRange[HEALBOT_MAGE]);
|
||||
HealBot_Options_EFClassPaladin:SetChecked(HealBot_Config.EmergIncRange[HEALBOT_PALADIN]);
|
||||
HealBot_Options_EFClassPriest:SetChecked(HealBot_Config.EmergIncRange[HEALBOT_PRIEST]);
|
||||
HealBot_Options_EFClassRogue:SetChecked(HealBot_Config.EmergIncRange[HEALBOT_ROGUE]);
|
||||
HealBot_Options_EFClassShaman:SetChecked(HealBot_Config.EmergIncRange[HEALBOT_SHAMAN]);
|
||||
HealBot_Options_EFClassWarlock:SetChecked(HealBot_Config.EmergIncRange[HEALBOT_WARLOCK]);
|
||||
HealBot_Options_EFClassWarrior:SetChecked(HealBot_Config.EmergIncRange[HEALBOT_WARRIOR]);
|
||||
elseif HealBot_Config.EmergencyFClass==3 then
|
||||
HealBot_Options_EFClassDruid:SetChecked(HealBot_Config.EmergIncHealers[HEALBOT_DRUID]);
|
||||
HealBot_Options_EFClassHunter:SetChecked(HealBot_Config.EmergIncHealers[HEALBOT_HUNTER]);
|
||||
HealBot_Options_EFClassMage:SetChecked(HealBot_Config.EmergIncHealers[HEALBOT_MAGE]);
|
||||
HealBot_Options_EFClassPaladin:SetChecked(HealBot_Config.EmergIncHealers[HEALBOT_PALADIN]);
|
||||
HealBot_Options_EFClassPriest:SetChecked(HealBot_Config.EmergIncHealers[HEALBOT_PRIEST]);
|
||||
HealBot_Options_EFClassRogue:SetChecked(HealBot_Config.EmergIncHealers[HEALBOT_ROGUE]);
|
||||
HealBot_Options_EFClassShaman:SetChecked(HealBot_Config.EmergIncHealers[HEALBOT_SHAMAN]);
|
||||
HealBot_Options_EFClassWarlock:SetChecked(HealBot_Config.EmergIncHealers[HEALBOT_WARLOCK]);
|
||||
HealBot_Options_EFClassWarrior:SetChecked(HealBot_Config.EmergIncHealers[HEALBOT_WARRIOR]);
|
||||
elseif HealBot_Config.EmergencyFClass==4 then
|
||||
HealBot_Options_EFClassDruid:SetChecked(HealBot_Config.EmergIncCustom[HEALBOT_DRUID]);
|
||||
HealBot_Options_EFClassHunter:SetChecked(HealBot_Config.EmergIncCustom[HEALBOT_HUNTER]);
|
||||
HealBot_Options_EFClassMage:SetChecked(HealBot_Config.EmergIncCustom[HEALBOT_MAGE]);
|
||||
HealBot_Options_EFClassPaladin:SetChecked(HealBot_Config.EmergIncCustom[HEALBOT_PALADIN]);
|
||||
HealBot_Options_EFClassPriest:SetChecked(HealBot_Config.EmergIncCustom[HEALBOT_PRIEST]);
|
||||
HealBot_Options_EFClassRogue:SetChecked(HealBot_Config.EmergIncCustom[HEALBOT_ROGUE]);
|
||||
HealBot_Options_EFClassShaman:SetChecked(HealBot_Config.EmergIncCustom[HEALBOT_SHAMAN]);
|
||||
HealBot_Options_EFClassWarlock:SetChecked(HealBot_Config.EmergIncCustom[HEALBOT_WARLOCK]);
|
||||
HealBot_Options_EFClassWarrior:SetChecked(HealBot_Config.EmergIncCustom[HEALBOT_WARRIOR]);
|
||||
end
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
local HealBot_Options_ExtraSort_List = {
|
||||
HEALBOT_SORTBY_NAME,
|
||||
HEALBOT_SORTBY_CLASS,
|
||||
HEALBOT_SORTBY_GROUP,
|
||||
HEALBOT_SORTBY_MAXHEALTH,
|
||||
}
|
||||
|
||||
function HealBot_Options_ExtraSort_DropDown()
|
||||
for i=1, getn(HealBot_Options_ExtraSort_List), 1 do
|
||||
local info = {};
|
||||
info.text = HealBot_Options_ExtraSort_List[i];
|
||||
info.func = HealBot_Options_ExtraSort_OnSelect;
|
||||
UIDropDownMenu_AddButton(info);
|
||||
end
|
||||
end
|
||||
|
||||
function HealBot_Options_ExtraSort_Initialize()
|
||||
UIDropDownMenu_Initialize(HealBot_Options_ExtraSort,HealBot_Options_ExtraSort_DropDown)
|
||||
end
|
||||
|
||||
function HealBot_Options_ExtraSort_Refresh(onselect)
|
||||
if not HealBot_Config.ExtraOrder then return end
|
||||
if not onselect then HealBot_Options_ExtraSort_Initialize() end -- or wrong menu may be used !
|
||||
HealBot_UIDropDownMenu_SetSelectedID(HealBot_Options_ExtraSort,HealBot_Config.ExtraOrder)
|
||||
end
|
||||
|
||||
function HealBot_Options_ExtraSort_OnLoad()
|
||||
UIDropDownMenu_Initialize(this, HealBot_Options_ExtraSort_DropDown)
|
||||
UIDropDownMenu_SetWidth(100, this)
|
||||
end
|
||||
|
||||
function HealBot_Options_ExtraSort_OnSelect()
|
||||
HealBot_Config.ExtraOrder = this:GetID()
|
||||
HealBot_Options_ExtraSort_Refresh(true)
|
||||
HealBot_Action_PartyChanged()
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function HealBot_Options_EmergencyFilter_DropDown()
|
||||
for i=1, getn(HealBot_Options_EmergencyFilter_List), 1 do
|
||||
local info = {};
|
||||
info.text = HealBot_Options_EmergencyFilter_List[i];
|
||||
info.func = HealBot_Options_EmergencyFilter_OnSelect;
|
||||
UIDropDownMenu_AddButton(info);
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
function HealBot_Options_EmergencyFilter_Initialize()
|
||||
UIDropDownMenu_Initialize(HealBot_Options_EmergencyFilter,HealBot_Options_EmergencyFilter_DropDown)
|
||||
end
|
||||
|
||||
|
||||
function HealBot_Options_EmergencyFilter_Refresh(onselect)
|
||||
if not HealBot_Config.EmergIncMonitor then return end
|
||||
if not onselect then HealBot_Options_EmergencyFilter_Initialize() end -- or wrong menu may be used !
|
||||
HealBot_UIDropDownMenu_SetSelectedID(HealBot_Options_EmergencyFilter,HealBot_Config.EmergIncMonitor)
|
||||
end
|
||||
|
||||
|
||||
function HealBot_Options_EmergencyFilter_OnLoad()
|
||||
UIDropDownMenu_Initialize(this, HealBot_Options_EmergencyFilter_DropDown)
|
||||
UIDropDownMenu_SetWidth(100, this)
|
||||
end
|
||||
|
||||
|
||||
function HealBot_Options_EmergencyFilter_OnSelect()
|
||||
HealBot_Config.EmergIncMonitor = this:GetID()
|
||||
HealBot_Options_EmergencyFilter_Refresh(true)
|
||||
HealBot_Options_EmergencyFilter_Reset()
|
||||
end
|
||||
|
||||
function HealBot_Options_EmergencyFilter_Reset()
|
||||
|
||||
HealBot_EmergInc[HEALBOT_DRUID] = 0;
|
||||
HealBot_EmergInc[HEALBOT_HUNTER] = 0;
|
||||
HealBot_EmergInc[HEALBOT_MAGE] = 0;
|
||||
HealBot_EmergInc[HEALBOT_PALADIN] = 0;
|
||||
HealBot_EmergInc[HEALBOT_PRIEST] = 0;
|
||||
HealBot_EmergInc[HEALBOT_ROGUE] = 0;
|
||||
HealBot_EmergInc[HEALBOT_SHAMAN] = 0;
|
||||
HealBot_EmergInc[HEALBOT_WARLOCK] = 0;
|
||||
HealBot_EmergInc[HEALBOT_WARRIOR] = 0;
|
||||
if HealBot_Config.EmergIncMonitor==2 then
|
||||
HealBot_EmergInc[HEALBOT_DRUID] = 1;
|
||||
HealBot_EmergInc[HEALBOT_HUNTER] = 1;
|
||||
HealBot_EmergInc[HEALBOT_MAGE] = 1;
|
||||
HealBot_EmergInc[HEALBOT_PALADIN] = 1;
|
||||
HealBot_EmergInc[HEALBOT_PRIEST] = 1;
|
||||
HealBot_EmergInc[HEALBOT_ROGUE] = 1;
|
||||
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
|
||||
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];
|
||||
HealBot_EmergInc[HEALBOT_PALADIN] = HealBot_Config.EmergIncMelee[HEALBOT_PALADIN];
|
||||
HealBot_EmergInc[HEALBOT_PRIEST] = HealBot_Config.EmergIncMelee[HEALBOT_PRIEST];
|
||||
HealBot_EmergInc[HEALBOT_ROGUE] = HealBot_Config.EmergIncMelee[HEALBOT_ROGUE];
|
||||
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
|
||||
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];
|
||||
HealBot_EmergInc[HEALBOT_PALADIN] = HealBot_Config.EmergIncRange[HEALBOT_PALADIN];
|
||||
HealBot_EmergInc[HEALBOT_PRIEST] = HealBot_Config.EmergIncRange[HEALBOT_PRIEST];
|
||||
HealBot_EmergInc[HEALBOT_ROGUE] = HealBot_Config.EmergIncRange[HEALBOT_ROGUE];
|
||||
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
|
||||
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];
|
||||
HealBot_EmergInc[HEALBOT_PALADIN] = HealBot_Config.EmergIncHealers[HEALBOT_PALADIN];
|
||||
HealBot_EmergInc[HEALBOT_PRIEST] = HealBot_Config.EmergIncHealers[HEALBOT_PRIEST];
|
||||
HealBot_EmergInc[HEALBOT_ROGUE] = HealBot_Config.EmergIncHealers[HEALBOT_ROGUE];
|
||||
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
|
||||
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];
|
||||
HealBot_EmergInc[HEALBOT_PALADIN] = HealBot_Config.EmergIncCustom[HEALBOT_PALADIN];
|
||||
HealBot_EmergInc[HEALBOT_PRIEST] = HealBot_Config.EmergIncCustom[HEALBOT_PRIEST];
|
||||
HealBot_EmergInc[HEALBOT_ROGUE] = HealBot_Config.EmergIncCustom[HEALBOT_ROGUE];
|
||||
HealBot_EmergInc[HEALBOT_SHAMAN] = HealBot_Config.EmergIncCustom[HEALBOT_SHAMAN];
|
||||
HealBot_EmergInc[HEALBOT_WARLOCK] = HealBot_Config.EmergIncCustom[HEALBOT_WARLOCK];
|
||||
HealBot_EmergInc[HEALBOT_WARRIOR] = HealBot_Config.EmergIncCustom[HEALBOT_WARRIOR];
|
||||
end
|
||||
|
||||
HealBot_Action_PartyChanged()
|
||||
end
|
||||
|
||||
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
@@ -0,0 +1,387 @@
|
||||
<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_Healing.lua" />
|
||||
<Frame name="HealBot_Options_Panel3" parent="HealBot_Options" hidden="true" setAllPoints="true">
|
||||
<Frames>
|
||||
|
||||
<Frame name="HealBot_Options_HealTargetFrame" inherits="OptionFrameBoxTemplate">
|
||||
<Scripts>
|
||||
<OnLoad>
|
||||
this:SetBackdropBorderColor(0.4, 0.4, 0.4);
|
||||
this:SetBackdropColor(0, 0, 0, 0);
|
||||
</OnLoad>
|
||||
</Scripts>
|
||||
<Size>
|
||||
<AbsDimension y="88"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="21" y="-30"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
<Anchor point="TOPRIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="-21" y="0"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
|
||||
<Layers>
|
||||
<Layer level="BACKGROUND">
|
||||
<FontString name="HealBot_HealButtons_Text" text="HEALBOT_OPTIONS_HEAL_BUTTONS" inherits="GameFontNormalSmall">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="100" y="-8" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
|
||||
<Frames>
|
||||
<CheckButton name="HealBot_Options_GroupHeals" inherits="OptionsCheckButtonTemplate">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="25" y="-21" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_Options_GroupHeals_OnLoad(this,HEALBOT_OPTIONS_GROUPHEALS_LABEL)</OnLoad>
|
||||
<OnClick>HealBot_Options_GroupHeals_OnClick(this)</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
<CheckButton name="HealBot_Options_TankHeals" inherits="OptionsCheckButtonTemplate">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_GroupHeals" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="5" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_Options_TankHeals_OnLoad(this,HEALBOT_OPTIONS_TANKHEALS)</OnLoad>
|
||||
<OnClick>HealBot_Options_TankHeals_OnClick(this)</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
<CheckButton name="HealBot_Options_TargetHeals" inherits="OptionsCheckButtonTemplate">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_GroupHeals" relativePoint="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="122" y="0" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_Options_TargetHeals_OnLoad(this,HEALBOT_OPTIONS_TARGETHEALS)</OnLoad>
|
||||
<OnClick>HealBot_Options_TargetHeals_OnClick(this)</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
<CheckButton name="HealBot_Options_EmergencyHeals" inherits="OptionsCheckButtonTemplate">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_GroupHeals" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="122" y="5" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_Options_EmergencyHeals_OnLoad(this,HEALBOT_OPTIONS_EMERGENCYHEALS)</OnLoad>
|
||||
<OnClick>HealBot_Options_EmergencyHeals_OnClick(this)</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
|
||||
</Frames>
|
||||
</Frame>
|
||||
|
||||
<Slider name="HealBot_Options_AlertLevel" inherits="HealBot_Options_SliderTemplate">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="45" y="-132" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_Options_Pct_OnLoad(this,HEALBOT_OPTIONS_ALERTLEVEL)</OnLoad>
|
||||
<OnValueChanged>HealBot_Options_AlertLevel_OnValueChanged(this)</OnValueChanged>
|
||||
</Scripts>
|
||||
</Slider>
|
||||
<Slider name="HealBot_Options_OverHeal" inherits="HealBot_Options_SliderTemplate">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_AlertLevel" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-27" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_Options_Pct_OnLoad(this,HEALBOT_OPTIONS_OVERHEAL)</OnLoad>
|
||||
<OnValueChanged>HealBot_Options_OverHeal_OnValueChanged(this)</OnValueChanged>
|
||||
</Scripts>
|
||||
</Slider>
|
||||
|
||||
|
||||
<Frame name="HealBot_Options_EmergencyFilter" inherits="UIDropDownMenuTemplate" id="1">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="155" y="-205" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Layers>
|
||||
<Layer level="OVERLAY">
|
||||
<FontString inherits="GameFontNormalSmall" text="HEALBOT_OPTIONS_EMERGFILTER">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="-110" y="-7"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
<Scripts>
|
||||
<OnLoad>
|
||||
HealBot_Options_EmergencyFilter_OnLoad(this)
|
||||
</OnLoad>
|
||||
</Scripts>
|
||||
</Frame>
|
||||
|
||||
<Frame name="HealBot_Options_ExtraSort" inherits="UIDropDownMenuTemplate" id="1">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="155" y="-238" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Layers>
|
||||
<Layer level="OVERLAY">
|
||||
<FontString inherits="GameFontNormalSmall" text="HEALBOT_OPTIONS_EXTRASORT">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="-110" y="-7"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
<Scripts>
|
||||
<OnLoad>
|
||||
HealBot_Options_ExtraSort_OnLoad(this)
|
||||
</OnLoad>
|
||||
</Scripts>
|
||||
</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">
|
||||
<Scripts>
|
||||
<OnLoad>
|
||||
this:SetBackdropBorderColor(0.4, 0.4, 0.4);
|
||||
this:SetBackdropColor(0, 0, 0, 0);
|
||||
</OnLoad>
|
||||
</Scripts>
|
||||
<Size>
|
||||
<AbsDimension y="125"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="21" y="-308"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
<Anchor point="TOPRIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="-21" y="0"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
|
||||
<Frames>
|
||||
|
||||
<Frame name="HealBot_Options_EmergencyFClass" inherits="UIDropDownMenuTemplate" id="1">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="128" y="-10" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Layers>
|
||||
<Layer level="OVERLAY">
|
||||
<FontString inherits="GameFontNormalSmall" text="HEALBOT_OPTIONS_EMERGFCLASS">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="-105" y="-7"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
<Scripts>
|
||||
<OnLoad> HealBot_Options_EmergencyFClass_OnLoad(this) </OnLoad>
|
||||
</Scripts>
|
||||
</Frame>
|
||||
|
||||
<CheckButton name="HealBot_Options_EFClassDruid" inherits="SendMailRadioButtonTemplate" id="1">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_EmergencyFClass" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="-90" y="-8"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_Options_EFClass_OnLoad(this,HEALBOT_DRUID)</OnLoad>
|
||||
<OnClick>HealBot_Options_EFClass_OnClick(this)</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
<CheckButton name="HealBot_Options_EFClassHunter" inherits="SendMailRadioButtonTemplate" id="2">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_EFClassDruid" relativePoint="TOPRIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="62" y="0"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_Options_EFClass_OnLoad(this,HEALBOT_HUNTER)</OnLoad>
|
||||
<OnClick>HealBot_Options_EFClass_OnClick(this)</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
<CheckButton name="HealBot_Options_EFClassMage" inherits="SendMailRadioButtonTemplate" id="3">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_EFClassHunter" relativePoint="TOPRIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="62" y="0"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_Options_EFClass_OnLoad(this,HEALBOT_MAGE)</OnLoad>
|
||||
<OnClick>HealBot_Options_EFClass_OnClick(this)</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
<CheckButton name="HealBot_Options_EFClassPaladin" inherits="SendMailRadioButtonTemplate" id="4">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_EFClassDruid" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-8"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_Options_EFClass_OnLoad(this,HEALBOT_PALADIN)</OnLoad>
|
||||
<OnClick>HealBot_Options_EFClass_OnClick(this)</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
<CheckButton name="HealBot_Options_EFClassPriest" inherits="SendMailRadioButtonTemplate" id="5">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_EFClassPaladin" relativePoint="TOPRIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="62" y="0"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_Options_EFClass_OnLoad(this,HEALBOT_PRIEST)</OnLoad>
|
||||
<OnClick>HealBot_Options_EFClass_OnClick(this)</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
<CheckButton name="HealBot_Options_EFClassRogue" inherits="SendMailRadioButtonTemplate" id="6">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_EFClassPriest" relativePoint="TOPRIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="62" y="0"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_Options_EFClass_OnLoad(this,HEALBOT_ROGUE)</OnLoad>
|
||||
<OnClick>HealBot_Options_EFClass_OnClick(this)</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
<CheckButton name="HealBot_Options_EFClassShaman" inherits="SendMailRadioButtonTemplate" id="7">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_EFClassPaladin" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-8"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_Options_EFClass_OnLoad(this,HEALBOT_SHAMAN)</OnLoad>
|
||||
<OnClick>HealBot_Options_EFClass_OnClick(this)</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
<CheckButton name="HealBot_Options_EFClassWarlock" inherits="SendMailRadioButtonTemplate" id="8">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_EFClassShaman" relativePoint="TOPRIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="62" y="0"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_Options_EFClass_OnLoad(this,HEALBOT_WARLOCK)</OnLoad>
|
||||
<OnClick>HealBot_Options_EFClass_OnClick(this)</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
<CheckButton name="HealBot_Options_EFClassWarrior" inherits="SendMailRadioButtonTemplate" id="9">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_EFClassWarlock" relativePoint="TOPRIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="62" y="0"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_Options_EFClass_OnLoad(this,HEALBOT_WARRIOR)</OnLoad>
|
||||
<OnClick>HealBot_Options_EFClass_OnClick(this)</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
</Frames>
|
||||
</Frame>
|
||||
</Frames>
|
||||
</Frame>
|
||||
|
||||
</Ui>
|
||||
@@ -0,0 +1,150 @@
|
||||
-- HealBot Options panel file: HealBot_Options_Skins.lua
|
||||
-- Split from original HealBot_Options.lua
|
||||
|
||||
function HealBot_Options_BarMaxRowsS_OnValueChanged(this)
|
||||
if not HealBot_Config.bmaxrows then HealBot_Config.bmaxrows = {} end
|
||||
HealBot_Config.bmaxrows[HealBot_Config.Current_Skin] = this:GetValue()
|
||||
HealBot_Action_PartyChanged()
|
||||
end
|
||||
|
||||
function HealBot_Options_GridOrientation_OnClick(this)
|
||||
if not HealBot_Config.GridOrientation then HealBot_Config.GridOrientation = {} end
|
||||
if this:GetChecked() then
|
||||
HealBot_Config.GridOrientation[HealBot_Config.Current_Skin] = 2 -- Horizontal
|
||||
else
|
||||
HealBot_Config.GridOrientation[HealBot_Config.Current_Skin] = 1 -- Vertical
|
||||
end
|
||||
HealBot_Action_PartyChanged()
|
||||
end
|
||||
|
||||
function HealBot_Options_NewSkin_OnTextChanged(this)
|
||||
local text= this:GetText()
|
||||
if string.len(text)>0 then
|
||||
HealBot_Options_NewSkinb:Enable();
|
||||
else
|
||||
HealBot_Options_NewSkinb:Disable();
|
||||
end
|
||||
end
|
||||
function HealBot_Options_NewSkinb_OnClick(this)
|
||||
HealBot_Config.numcols[HealBot_Options_NewSkin:GetText()] = HealBot_Config.numcols[HealBot_Config.Current_Skin]
|
||||
if not HealBot_Config.bmaxrows then HealBot_Config.bmaxrows = {} end
|
||||
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.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.bwidth[HealBot_Options_NewSkin:GetText()] = HealBot_Config.bwidth[HealBot_Config.Current_Skin]
|
||||
HealBot_Config.bheight[HealBot_Options_NewSkin:GetText()] = HealBot_Config.bheight[HealBot_Config.Current_Skin]
|
||||
HealBot_Config.btextenabledcolr[HealBot_Options_NewSkin:GetText()] = HealBot_Config.btextenabledcolr[HealBot_Config.Current_Skin]
|
||||
HealBot_Config.btextenabledcolg[HealBot_Options_NewSkin:GetText()] = HealBot_Config.btextenabledcolg[HealBot_Config.Current_Skin]
|
||||
HealBot_Config.btextenabledcolb[HealBot_Options_NewSkin:GetText()] = HealBot_Config.btextenabledcolb[HealBot_Config.Current_Skin]
|
||||
HealBot_Config.btextenabledcola[HealBot_Options_NewSkin:GetText()] = HealBot_Config.btextenabledcola[HealBot_Config.Current_Skin]
|
||||
HealBot_Config.btextdisbledcolr[HealBot_Options_NewSkin:GetText()] = HealBot_Config.btextdisbledcolr[HealBot_Config.Current_Skin]
|
||||
HealBot_Config.btextdisbledcolg[HealBot_Options_NewSkin:GetText()] = HealBot_Config.btextdisbledcolg[HealBot_Config.Current_Skin]
|
||||
HealBot_Config.btextdisbledcolb[HealBot_Options_NewSkin:GetText()] = HealBot_Config.btextdisbledcolb[HealBot_Config.Current_Skin]
|
||||
HealBot_Config.btextdisbledcola[HealBot_Options_NewSkin:GetText()] = HealBot_Config.btextdisbledcola[HealBot_Config.Current_Skin]
|
||||
HealBot_Config.btextcursecolr[HealBot_Options_NewSkin:GetText()] = HealBot_Config.btextcursecolr[HealBot_Config.Current_Skin]
|
||||
HealBot_Config.btextcursecolg[HealBot_Options_NewSkin:GetText()] = HealBot_Config.btextcursecolg[HealBot_Config.Current_Skin]
|
||||
HealBot_Config.btextcursecolb[HealBot_Options_NewSkin:GetText()] = HealBot_Config.btextcursecolb[HealBot_Config.Current_Skin]
|
||||
HealBot_Config.btextcursecola[HealBot_Options_NewSkin:GetText()] = HealBot_Config.btextcursecola[HealBot_Config.Current_Skin]
|
||||
HealBot_Config.backcola[HealBot_Options_NewSkin:GetText()] = HealBot_Config.backcola[HealBot_Config.Current_Skin]
|
||||
HealBot_Config.Barcola[HealBot_Options_NewSkin:GetText()] = HealBot_Config.Barcola[HealBot_Config.Current_Skin]
|
||||
HealBot_Config.BarcolaInHeal[HealBot_Options_NewSkin:GetText()] = HealBot_Config.BarcolaInHeal[HealBot_Config.Current_Skin]
|
||||
HealBot_Config.backcolr[HealBot_Options_NewSkin:GetText()] = HealBot_Config.backcolr[HealBot_Config.Current_Skin]
|
||||
HealBot_Config.backcolg[HealBot_Options_NewSkin:GetText()] = HealBot_Config.backcolg[HealBot_Config.Current_Skin]
|
||||
HealBot_Config.backcolb[HealBot_Options_NewSkin:GetText()] = HealBot_Config.backcolb[HealBot_Config.Current_Skin]
|
||||
HealBot_Config.borcolr[HealBot_Options_NewSkin:GetText()] = HealBot_Config.borcolr[HealBot_Config.Current_Skin]
|
||||
HealBot_Config.borcolg[HealBot_Options_NewSkin:GetText()] = HealBot_Config.borcolg[HealBot_Config.Current_Skin]
|
||||
HealBot_Config.borcolb[HealBot_Options_NewSkin:GetText()] = HealBot_Config.borcolb[HealBot_Config.Current_Skin]
|
||||
HealBot_Config.borcola[HealBot_Options_NewSkin:GetText()] = HealBot_Config.borcola[HealBot_Config.Current_Skin]
|
||||
HealBot_Config.btextheight[HealBot_Options_NewSkin:GetText()] = HealBot_Config.btextheight[HealBot_Config.Current_Skin]
|
||||
HealBot_Config.bardisa[HealBot_Options_NewSkin:GetText()] = HealBot_Config.bardisa[HealBot_Config.Current_Skin]
|
||||
HealBot_Config.abortsize[HealBot_Options_NewSkin:GetText()] = HealBot_Config.abortsize[HealBot_Config.Current_Skin]
|
||||
HealBot_Config.babortcolr[HealBot_Options_NewSkin:GetText()] = HealBot_Config.babortcolr[HealBot_Config.Current_Skin]
|
||||
HealBot_Config.babortcolg[HealBot_Options_NewSkin:GetText()] = HealBot_Config.babortcolg[HealBot_Config.Current_Skin]
|
||||
HealBot_Config.babortcolb[HealBot_Options_NewSkin:GetText()] = HealBot_Config.babortcolb[HealBot_Config.Current_Skin]
|
||||
HealBot_Config.babortcola[HealBot_Options_NewSkin:GetText()] = HealBot_Config.babortcola[HealBot_Config.Current_Skin]
|
||||
HealBot_Config.ShowHeader[HealBot_Options_NewSkin:GetText()] = HealBot_Config.ShowHeader[HealBot_Config.Current_Skin]
|
||||
|
||||
table.insert(HealBot_Skins,2,HealBot_Options_NewSkin:GetText())
|
||||
HealBot_Config.Skin_ID = 2;
|
||||
HealBot_Config.Skins = HealBot_Skins; HealBot_Config.Current_Skin = HealBot_Options_NewSkin:GetText();
|
||||
HealBot_Options_SetSkins()
|
||||
HealBot_Options_NewSkin:SetText("")
|
||||
end
|
||||
function HealBot_Options_DeleteSkin_OnClick(this)
|
||||
if HealBot_Config.Current_Skin~=HEALBOT_SKINS_STD then
|
||||
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.bcspace[HealBot_Options_SkinsText:GetText()] = nil
|
||||
HealBot_Config.brspace[HealBot_Options_SkinsText:GetText()] = nil
|
||||
HealBot_Config.bwidth[HealBot_Options_SkinsText:GetText()] = nil
|
||||
HealBot_Config.bheight[HealBot_Options_SkinsText:GetText()] = nil
|
||||
HealBot_Config.btextenabledcolr[HealBot_Options_SkinsText:GetText()] = nil
|
||||
HealBot_Config.btextenabledcolg[HealBot_Options_SkinsText:GetText()] = nil
|
||||
HealBot_Config.btextenabledcolb[HealBot_Options_SkinsText:GetText()] = nil
|
||||
HealBot_Config.btextenabledcola[HealBot_Options_SkinsText:GetText()] = nil
|
||||
HealBot_Config.btextdisbledcolr[HealBot_Options_SkinsText:GetText()] = nil
|
||||
HealBot_Config.btextdisbledcolg[HealBot_Options_SkinsText:GetText()] = nil
|
||||
HealBot_Config.btextdisbledcolb[HealBot_Options_SkinsText:GetText()] = nil
|
||||
HealBot_Config.btextdisbledcola[HealBot_Options_SkinsText:GetText()] = nil
|
||||
HealBot_Config.btextcursecolr[HealBot_Options_SkinsText:GetText()] = nil
|
||||
HealBot_Config.btextcursecolg[HealBot_Options_SkinsText:GetText()] = nil
|
||||
HealBot_Config.btextcursecolb[HealBot_Options_SkinsText:GetText()] = nil
|
||||
HealBot_Config.btextcursecola[HealBot_Options_SkinsText:GetText()] = nil
|
||||
HealBot_Config.backcola[HealBot_Options_SkinsText:GetText()] = nil
|
||||
HealBot_Config.Barcola[HealBot_Options_SkinsText:GetText()] = nil
|
||||
HealBot_Config.BarcolaInHeal[HealBot_Options_SkinsText:GetText()] = nil
|
||||
HealBot_Config.backcolr[HealBot_Options_SkinsText:GetText()] = nil
|
||||
HealBot_Config.backcolg[HealBot_Options_SkinsText:GetText()] = nil
|
||||
HealBot_Config.backcolb[HealBot_Options_SkinsText:GetText()] = nil
|
||||
HealBot_Config.borcolr[HealBot_Options_SkinsText:GetText()] = nil
|
||||
HealBot_Config.borcolg[HealBot_Options_SkinsText:GetText()] = nil
|
||||
HealBot_Config.borcolb[HealBot_Options_SkinsText:GetText()] = nil
|
||||
HealBot_Config.borcola[HealBot_Options_SkinsText:GetText()] = nil
|
||||
HealBot_Config.btextheight[HealBot_Options_SkinsText:GetText()] = nil
|
||||
HealBot_Config.bardisa[HealBot_Options_SkinsText:GetText()] = nil
|
||||
HealBot_Config.abortsize[HealBot_Options_SkinsText:GetText()] = nil
|
||||
HealBot_Config.babortcolr[HealBot_Options_SkinsText:GetText()] = nil
|
||||
HealBot_Config.babortcolg[HealBot_Options_SkinsText:GetText()] = nil
|
||||
HealBot_Config.babortcolb[HealBot_Options_SkinsText:GetText()] = nil
|
||||
HealBot_Config.babortcola[HealBot_Options_SkinsText:GetText()] = nil
|
||||
HealBot_Config.ShowHeader[HealBot_Options_SkinsText:GetText()] = nil
|
||||
table.remove(HealBot_Skins,HealBot_Config.Skin_ID)
|
||||
HealBot_Config.Skin_ID = 1;
|
||||
HealBot_Config.Skins = HealBot_Skins;
|
||||
HealBot_Config.Current_Skin = HEALBOT_SKINS_STD;
|
||||
HealBot_Options_SetSkins()
|
||||
end
|
||||
end
|
||||
function HealBot_Options_Skins_DropDown()
|
||||
for i=1, getn(HealBot_Skins), 1 do
|
||||
local info = {};
|
||||
info.text = HealBot_Skins[i];
|
||||
info.func = HealBot_Options_Skins_OnSelect;
|
||||
UIDropDownMenu_AddButton(info);
|
||||
end
|
||||
end
|
||||
function HealBot_Options_Skins_Initialize()
|
||||
UIDropDownMenu_Initialize(HealBot_Options_Skins,HealBot_Options_Skins_DropDown)
|
||||
end
|
||||
function HealBot_Options_Skins_Refresh(onselect)
|
||||
if not HealBot_Config.Skin_ID then return end
|
||||
if not onselect then HealBot_Options_Skins_Initialize() end -- or wrong menu may be used !
|
||||
HealBot_UIDropDownMenu_SetSelectedID(HealBot_Options_Skins,HealBot_Config.Skin_ID)
|
||||
end
|
||||
function HealBot_Options_Skins_OnLoad()
|
||||
UIDropDownMenu_Initialize(this, HealBot_Options_Skins_DropDown)
|
||||
UIDropDownMenu_SetWidth(100, this)
|
||||
end
|
||||
function HealBot_Options_Skins_OnSelect()
|
||||
HealBot_Config.Skin_ID = this:GetID()
|
||||
HealBot_Options_Skins_Refresh(true)
|
||||
if this:GetID()>=1 then
|
||||
HealBot_Config.Current_Skin = this:GetText()
|
||||
HealBot_Options_SetSkins()
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,712 @@
|
||||
<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_Skins.lua" />
|
||||
<Frame name="HealBot_Options_Panel5" parent="HealBot_Options" hidden="true" setAllPoints="true">
|
||||
<Frames>
|
||||
|
||||
|
||||
<Frame name="HealBot_Options_Skins" inherits="UIDropDownMenuTemplate" id="1">
|
||||
<Layers>
|
||||
<Layer level="BACKGROUND">
|
||||
<FontString name="HealBot_Options_ScaleFrameText" text="HEALBOT_OPTIONS_SKINTEXT" inherits="GameFontNormalSmall">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="-45" y="-5" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="70" y="-28" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad> HealBot_Options_Skins_OnLoad(this) </OnLoad>
|
||||
</Scripts>
|
||||
</Frame>
|
||||
<Button name="HealBot_Options_DeleteSkin" inherits="UIPanelButtonTemplate" text="HEALBOT_OPTIONS_DELSKIN">
|
||||
<Size>
|
||||
<AbsDimension x="80" y="22"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_Skins" relativePoint="TOPRIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="7" y="-1"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnClick>HealBot_Options_DeleteSkin_OnClick(this)</OnClick>
|
||||
</Scripts>
|
||||
</Button>
|
||||
|
||||
<EditBox name="HealBot_Options_NewSkin" inherits="HealBot_Options_EditBoxTemplate">
|
||||
<Size>
|
||||
<AbsDimension x="100" y="20"/>
|
||||
</Size>
|
||||
<Layers>
|
||||
<Layer level="BACKGROUND">
|
||||
<FontString name="HealBot_Options_ScaleFrameText2" text="HEALBOT_OPTIONS_NEWSKINTEXT" inherits="GameFontNormalSmall">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="-70" y="-2" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_Skins" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="25" y="-2"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnTextChanged>
|
||||
HealBot_Options_NewSkin_OnTextChanged(this)
|
||||
</OnTextChanged>
|
||||
</Scripts>
|
||||
</EditBox>
|
||||
<Button name="HealBot_Options_NewSkinb" inherits="UIPanelButtonTemplate" text="HEALBOT_OPTIONS_SAVESKIN">
|
||||
<Size>
|
||||
<AbsDimension x="80" y="22"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_NewSkin" relativePoint="TOPRIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="32" y="2"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnClick>HealBot_Options_NewSkinb_OnClick(this)</OnClick>
|
||||
</Scripts>
|
||||
</Button>
|
||||
|
||||
<Frame name="HealBot_Options_Scale" inherits="OptionFrameBoxTemplate">
|
||||
<Scripts>
|
||||
<OnLoad>
|
||||
this:SetBackdropBorderColor(0.4, 0.4, 0.4);
|
||||
this:SetBackdropColor(0, 0, 0, 0);
|
||||
</OnLoad>
|
||||
</Scripts>
|
||||
<Size>
|
||||
<AbsDimension y="325"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="20" y="-88"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
<Anchor point="TOPRIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="-20" y="-180"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Layers>
|
||||
<Layer level="BACKGROUND">
|
||||
<FontString name="HealBot_Options_ScaleFrameText3" text="HEALBOT_OPTIONS_SKINBARS" inherits="GameFontNormalSmall">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="50" y="-12" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
<Frames>
|
||||
<CheckButton name="HealBot_Options_ShowHeaders" inherits="SendMailRadioButtonTemplate">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="155" y="-8" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_Options_ShowHeaders_OnLoad(this,HEALBOT_OPTIONS_SHOWHEADERS)</OnLoad>
|
||||
<OnClick>HealBot_Options_ShowHeaders_OnClick(this)</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
<CheckButton name="HealBot_Options_BarColorMode" inherits="SendMailRadioButtonTemplate">
|
||||
<Anchors><Anchor point="TOPLEFT"><Offset><AbsDimension x="290" y="-8" /></Offset></Anchor></Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>getglobal(this:GetName().."Text"):SetText("Class Colors")</OnLoad>
|
||||
<OnClick>HealBot_Config.bcolormode[HealBot_Config.Current_Skin] = (this:GetChecked() and 2 or 1); HealBot_Action_ResetSkin()</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
<CheckButton name="HealBot_Options_FontOutline" inherits="SendMailRadioButtonTemplate">
|
||||
<Anchors><Anchor point="TOPLEFT"><Offset><AbsDimension x="290" y="-33" /></Offset></Anchor></Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>getglobal(this:GetName().."Text"):SetText("Font Outline")</OnLoad>
|
||||
<OnClick>HealBot_Config.bfontoutline[HealBot_Config.Current_Skin] = (this:GetChecked() and 1 or 0); HealBot_Action_ResetSkin()</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
<CheckButton name="HealBot_Options_1pxBorders" inherits="SendMailRadioButtonTemplate">
|
||||
<Anchors><Anchor point="TOPLEFT"><Offset><AbsDimension x="290" y="-58" /></Offset></Anchor></Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>getglobal(this:GetName().."Text"):SetText("1px Borders")</OnLoad>
|
||||
<OnClick>HealBot_Config.bborder[HealBot_Config.Current_Skin] = (this:GetChecked() and 1 or 2); HealBot_Action_ResetSkin()</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
|
||||
<Slider name="HealBot_Options_BarTextureS" inherits="HealBot_Options_SliderTemplate">
|
||||
<Size>
|
||||
<AbsDimension x="123" y="17" />
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="20" y="-40" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_Options_val_OnLoad(this,HEALBOT_OPTIONS_SKINTEXTURE,1,14)</OnLoad>
|
||||
<OnValueChanged>HealBot_Options_BarTextureS_OnValueChanged(this)</OnValueChanged>
|
||||
</Scripts>
|
||||
</Slider>
|
||||
<Slider name="HealBot_Options_BarNumColsS" inherits="HealBot_Options_SliderTemplate">
|
||||
<Size>
|
||||
<AbsDimension x="123" y="18" />
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_BarTextureS" relativePoint="TOPRIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="10" y="0" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_Options_val_OnLoad(this,HEALBOT_OPTIONS_SKINNUMCOLS,1,8)</OnLoad>
|
||||
<OnValueChanged>HealBot_Options_BarNumColsS_OnValueChanged(this)</OnValueChanged>
|
||||
</Scripts>
|
||||
</Slider>
|
||||
<Slider name="HealBot_Options_BarHeightS" inherits="HealBot_Options_SliderTemplate">
|
||||
<Size>
|
||||
<AbsDimension x="123" y="18" />
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_BarTextureS" relativePoint="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-32" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_Options_val_OnLoad(this,HEALBOT_OPTIONS_SKINHEIGHT,10,100)</OnLoad>
|
||||
<OnValueChanged>HealBot_Options_BarHeightS_OnValueChanged(this)</OnValueChanged>
|
||||
</Scripts>
|
||||
</Slider>
|
||||
<Slider name="HealBot_Options_BarWidthS" inherits="HealBot_Options_SliderTemplate">
|
||||
<Size>
|
||||
<AbsDimension x="123" y="17" />
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_BarHeightS" relativePoint="TOPRIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="10" y="0" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_Options_val_OnLoad(this,HEALBOT_OPTIONS_SKINWIDTH,50,225)</OnLoad>
|
||||
<OnValueChanged>HealBot_Options_BarWidthS_OnValueChanged(this)</OnValueChanged>
|
||||
</Scripts>
|
||||
</Slider>
|
||||
|
||||
<Slider name="HealBot_Options_BarBRSpaceS" inherits="HealBot_Options_SliderTemplate">
|
||||
<Size>
|
||||
<AbsDimension x="123" y="17" />
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_BarHeightS" relativePoint="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-32" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_Options_val_OnLoad(this,HEALBOT_OPTIONS_SKINBRSPACE,0,10)</OnLoad>
|
||||
<OnValueChanged>HealBot_Options_BarBRSpaceS_OnValueChanged(this)</OnValueChanged>
|
||||
</Scripts>
|
||||
</Slider>
|
||||
<Slider name="HealBot_Options_BarBCSpaceS" inherits="HealBot_Options_SliderTemplate">
|
||||
<Size>
|
||||
<AbsDimension x="123" y="17" />
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_BarBRSpaceS" relativePoint="TOPRIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="10" y="0" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_Options_val_OnLoad(this,HEALBOT_OPTIONS_SKINBCSPACE,0,25)</OnLoad>
|
||||
<OnValueChanged>HealBot_Options_BarBCSpaceS_OnValueChanged(this)</OnValueChanged>
|
||||
</Scripts>
|
||||
</Slider>
|
||||
<Slider name="HealBot_Options_FramePaddingS" inherits="HealBot_Options_SliderTemplate">
|
||||
<Size>
|
||||
<AbsDimension x="123" y="17" />
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_BarBCSpaceS" relativePoint="TOPRIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="10" y="0" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_Options_val_OnLoad(this,"Frame Padding",0,50)</OnLoad>
|
||||
<OnValueChanged>HealBot_Options_FramePaddingS_OnValueChanged(this)</OnValueChanged>
|
||||
</Scripts>
|
||||
</Slider>
|
||||
|
||||
|
||||
<Slider name="HealBot_Options_BarAlpha" inherits="HealBot_Options_SliderTemplate">
|
||||
<Size>
|
||||
<AbsDimension x="123" y="17" />
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_BarBRSpaceS" relativePoint="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-35" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_Options_Pct_OnLoad_MinMax(this,HEALBOT_OPTIONS_BARALPHA,0.25,1)</OnLoad>
|
||||
<OnValueChanged>HealBot_Options_BarAlpha_OnValueChanged(this)</OnValueChanged>
|
||||
</Scripts>
|
||||
</Slider>
|
||||
|
||||
<Slider name="HealBot_Options_BarAlphaInHeal" inherits="HealBot_Options_SliderTemplate">
|
||||
<Size>
|
||||
<AbsDimension x="123" y="17" />
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_BarAlpha" relativePoint="TOPRIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="10" y="0" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_Options_Pct_OnLoad_MinMax(this,HEALBOT_OPTIONS_BARALPHAINHEAL,0.05,0.75)</OnLoad>
|
||||
<OnValueChanged>HealBot_Options_BarAlphaInHeal_OnValueChanged(this)</OnValueChanged>
|
||||
</Scripts>
|
||||
</Slider>
|
||||
<Slider name="HealBot_Options_BarAlphaDis" inherits="HealBot_Options_SliderTemplate">
|
||||
<Size>
|
||||
<AbsDimension x="123" y="17" />
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_BarAlpha" relativePoint="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-35" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_Options_Pct_OnLoad(this,HEALBOT_OPTIONS_BARALPHADIS)</OnLoad>
|
||||
<OnValueChanged>HealBot_Options_BarAlphaDis_OnValueChanged(this)</OnValueChanged>
|
||||
</Scripts>
|
||||
</Slider>
|
||||
<Slider name="HealBot_Options_AbortBarSize" inherits="HealBot_Options_SliderTemplate">
|
||||
<Size>
|
||||
<AbsDimension x="123" y="17" />
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_BarAlphaDis" relativePoint="TOPRIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="10" y="0" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_Options_val_OnLoad(this,"Abort size",0,15)</OnLoad>
|
||||
<OnValueChanged>HealBot_Options_AbortBarSize_OnValueChanged(this)</OnValueChanged>
|
||||
</Scripts>
|
||||
</Slider>
|
||||
<Slider name="HealBot_Options_FontHeight" inherits="HealBot_Options_SliderTemplate">
|
||||
<Size>
|
||||
<AbsDimension x="123" y="17" />
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_BarAlphaDis" relativePoint="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-35" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_Options_val_OnLoad(this,HEALBOT_OPTIONS_SKINFHEIGHT,7,18)</OnLoad>
|
||||
<OnValueChanged>HealBot_Options_FontHeight_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">
|
||||
<Size>
|
||||
<AbsDimension x="87" y="20"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_FontHeight" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-15"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnClick>HealBot_SkinColorpick_OnClick("En")</OnClick>
|
||||
</Scripts>
|
||||
</Button>
|
||||
<StatusBar name="HealBot_EnTextColorpick" inherits="TextStatusBar">
|
||||
<Size>
|
||||
<AbsDimension x="87" y="20"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_FontHeight" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-15"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Layers>
|
||||
<Layer level="OVERLAY">
|
||||
<FontString name="HealBot_EnTextColorpickt" inherits="GameFontNormalSmall" text="HEALBOT_SKIN_ENTEXT">
|
||||
<Anchors>
|
||||
<Anchor point="CENTER" relativeTo="HealBot_EnTextColorpick" relativePoint="CENTER">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="1"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
<Scripts>
|
||||
<OnLoad> this:SetMinMaxValues(0,100); this:SetValue(70); </OnLoad>
|
||||
</Scripts>
|
||||
<BarTexture file="Interface\TargetingFrame\UI-StatusBar"/>
|
||||
<BarColor r="0" g="1" b="0"/>
|
||||
</StatusBar>
|
||||
<StatusBar name="HealBot_EnTextColorpickin" inherits="TextStatusBar">
|
||||
<Size>
|
||||
<AbsDimension x="87" y="20"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_FontHeight" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-15"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad> this:SetMinMaxValues(0,100); this:SetValue(100); </OnLoad>
|
||||
</Scripts>
|
||||
<BarTexture file="Interface\TargetingFrame\UI-StatusBar"/>
|
||||
<BarColor r="0" g="1" b="0"/>
|
||||
</StatusBar>
|
||||
|
||||
<Button name="HealBot_DisTextColorpickb">
|
||||
<Size>
|
||||
<AbsDimension x="87" y="20"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_EnTextColorpick" relativePoint="TOPRIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="5" y="0"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnClick>HealBot_SkinColorpick_OnClick("Dis")</OnClick>
|
||||
</Scripts>
|
||||
</Button>
|
||||
<StatusBar name="HealBot_DisTextColorpick" inherits="TextStatusBar">
|
||||
<Size>
|
||||
<AbsDimension x="87" y="20"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_EnTextColorpick" relativePoint="TOPRIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="5" y="0"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Layers>
|
||||
<Layer level="OVERLAY">
|
||||
<FontString name="HealBot_DisTextColorpickt" inherits="GameFontNormalSmall" text="HEALBOT_SKIN_DISTEXT">
|
||||
<Anchors>
|
||||
<Anchor point="CENTER" relativeTo="HealBot_DisTextColorpick" relativePoint="CENTER">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="1"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
<Scripts>
|
||||
<OnLoad> this:SetMinMaxValues(0,100); this:SetValue(100); </OnLoad>
|
||||
</Scripts>
|
||||
<BarTexture file="Interface\TargetingFrame\UI-StatusBar"/>
|
||||
<BarColor r="0" g="1" b="0"/>
|
||||
</StatusBar>
|
||||
|
||||
<Button name="HealBot_DebTextColorpickb">
|
||||
<Size>
|
||||
<AbsDimension x="87" y="20"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_DisTextColorpick" relativePoint="TOPRIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="5" y="0"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnClick>HealBot_SkinColorpick_OnClick("Debuff")</OnClick>
|
||||
</Scripts>
|
||||
</Button>
|
||||
<StatusBar name="HealBot_DebTextColorpick" inherits="HealBot_ColourButtonTemplate">
|
||||
<Size>
|
||||
<AbsDimension x="87" y="20"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_DisTextColorpick" relativePoint="TOPRIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="5" y="0"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Layers>
|
||||
<Layer level="OVERLAY">
|
||||
<FontString name="HealBot_DebTextColorpickt" inherits="GameFontNormalSmall" text="HEALBOT_SKIN_DEBTEXT">
|
||||
<Anchors>
|
||||
<Anchor point="CENTER" relativeTo="HealBot_DebTextColorpick" relativePoint="CENTER">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="1"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
<Scripts>
|
||||
<OnLoad> this:SetMinMaxValues(0,100); this:SetValue(100); </OnLoad>
|
||||
</Scripts>
|
||||
<BarTexture file="Interface\TargetingFrame\UI-StatusBar"/>
|
||||
<BarColor r="0" g="1" b="0"/>
|
||||
</StatusBar>
|
||||
|
||||
|
||||
<Button name="HealBot_BackgroundColorpickb">
|
||||
<Size>
|
||||
<AbsDimension x="87" y="20"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_EnTextColorpick" relativePoint="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-25"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnClick>HealBot_SkinColorpick_OnClick("Back")</OnClick>
|
||||
</Scripts>
|
||||
</Button>
|
||||
<StatusBar name="HealBot_BackgroundColorpick" inherits="HealBot_ColourButtonTemplate">
|
||||
<Size>
|
||||
<AbsDimension x="87" y="20"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_EnTextColorpick" relativePoint="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-25"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Layers>
|
||||
<Layer level="OVERLAY">
|
||||
<FontString inherits="GameFontNormalSmall" text="HEALBOT_SKIN_BACKTEXT">
|
||||
<Anchors>
|
||||
<Anchor point="CENTER" relativeTo="HealBot_BackgroundColorpick" relativePoint="CENTER">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="1"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
<Scripts>
|
||||
<OnLoad> this:SetMinMaxValues(0,100); this:SetValue(100); </OnLoad>
|
||||
</Scripts>
|
||||
<BarTexture file="Interface\TargetingFrame\UI-StatusBar"/>
|
||||
<BarColor r="0" g="1" b="0"/>
|
||||
</StatusBar>
|
||||
<Button name="HealBot_BorderColorpickb">
|
||||
<Size>
|
||||
<AbsDimension x="87" y="20"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_BackgroundColorpick" relativePoint="TOPRIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="5" y="0"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnClick>HealBot_SkinColorpick_OnClick("Bor")</OnClick>
|
||||
</Scripts>
|
||||
</Button>
|
||||
<StatusBar name="HealBot_BorderColorpick" inherits="HealBot_ColourButtonTemplate">
|
||||
<Size>
|
||||
<AbsDimension x="87" y="20"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_BackgroundColorpick" relativePoint="TOPRIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="5" y="0"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Layers>
|
||||
<Layer level="OVERLAY">
|
||||
<FontString inherits="GameFontNormalSmall" text="HEALBOT_SKIN_BORDERTEXT">
|
||||
<Anchors>
|
||||
<Anchor point="CENTER" relativeTo="HealBot_BorderColorpick" relativePoint="CENTER">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="1"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
<Scripts>
|
||||
<OnLoad> this:SetMinMaxValues(0,100); this:SetValue(100); </OnLoad>
|
||||
</Scripts>
|
||||
<BarTexture file="Interface\TargetingFrame\UI-StatusBar"/>
|
||||
<BarColor r="0" g="1" b="0"/>
|
||||
</StatusBar>
|
||||
<Button name="HealBot_AbortColorpickb">
|
||||
<Size>
|
||||
<AbsDimension x="87" y="20"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_BorderColorpick" relativePoint="TOPRIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="5" y="0"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnClick>HealBot_SkinColorpick_OnClick("Abort")</OnClick>
|
||||
</Scripts>
|
||||
</Button>
|
||||
<StatusBar name="HealBot_AbortColorpick" inherits="HealBot_ColourButtonTemplate">
|
||||
<Size>
|
||||
<AbsDimension x="87" y="20"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_BorderColorpick" relativePoint="TOPRIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="5" y="0"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Layers>
|
||||
<Layer level="OVERLAY">
|
||||
<FontString inherits="GameFontNormalSmall" text="HEALBOT_ACTION_ABORT">
|
||||
<Anchors>
|
||||
<Anchor point="CENTER" relativeTo="HealBot_AbortColorpick" relativePoint="CENTER">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="1"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
<Scripts>
|
||||
<OnLoad> this:SetMinMaxValues(0,100); this:SetValue(100); </OnLoad>
|
||||
</Scripts>
|
||||
<BarTexture file="Interface\TargetingFrame\UI-StatusBar"/>
|
||||
<BarColor r="0" g="1" b="0"/>
|
||||
</StatusBar>
|
||||
|
||||
</Frames>
|
||||
</Frame>
|
||||
|
||||
</Frames>
|
||||
</Frame>
|
||||
|
||||
</Ui>
|
||||
@@ -0,0 +1,199 @@
|
||||
-- HealBot Options panel file: HealBot_Options_Spells.lua
|
||||
-- Split from original HealBot_Options.lua
|
||||
|
||||
function HealBot_ComboButtons_Button_OnLoad(this,text)
|
||||
getglobal(this:GetName().."Text"):SetText(text);
|
||||
end
|
||||
function HealBot_ComboButtons_Button_OnClick(this,id)
|
||||
if HealBot_Options_ComboButtons_Button>0 then
|
||||
getglobal("HealBot_ComboButtons_Button"..HealBot_Options_ComboButtons_Button):SetChecked(nil);
|
||||
end
|
||||
HealBot_Options_ComboButtons_Button = id;
|
||||
if HealBot_Options_ComboButtons_Button>0 then
|
||||
getglobal("HealBot_ComboButtons_Button"..HealBot_Options_ComboButtons_Button):SetChecked(1);
|
||||
end
|
||||
HealBot_Options_ComboClass_Text()
|
||||
end
|
||||
function HealBot_Options_ShowTooltip_OnLoad(this,text)
|
||||
getglobal(this:GetName().."Text"):SetText(text);
|
||||
end
|
||||
function HealBot_Options_ShowTooltip_OnClick(this)
|
||||
HealBot_Config.ShowTooltip = this:GetChecked() or 0;
|
||||
end
|
||||
function HealBot_Options_ShowTooltipTarget_OnLoad(this,text)
|
||||
getglobal(this:GetName().."Text"):SetText(text);
|
||||
end
|
||||
function HealBot_Options_ShowTooltipTarget_OnClick(this)
|
||||
HealBot_Config.Tooltip_ShowTarget = this:GetChecked() or 0;
|
||||
end
|
||||
function HealBot_Options_ShowTooltipSpellDetail_OnLoad(this,text)
|
||||
getglobal(this:GetName().."Text"):SetText(text);
|
||||
end
|
||||
function HealBot_Options_ShowTooltipSpellDetail_OnClick(this)
|
||||
HealBot_Config.Tooltip_ShowSpellDetail = this:GetChecked() or 0;
|
||||
end
|
||||
function HealBot_Options_ShowTooltipInstant_OnLoad(this,text)
|
||||
getglobal(this:GetName().."Text"):SetText(text);
|
||||
end
|
||||
function HealBot_Options_ShowTooltipInstant_OnClick(this)
|
||||
HealBot_Config.Tooltip_Recommend = this:GetChecked() or 0;
|
||||
end
|
||||
local HealBot_Options_TooltipPos_List = {
|
||||
HEALBOT_TOOLTIP_POSDEFAULT,
|
||||
HEALBOT_TOOLTIP_POSLEFT,
|
||||
HEALBOT_TOOLTIP_POSRIGHT,
|
||||
HEALBOT_TOOLTIP_POSABOVE,
|
||||
HEALBOT_TOOLTIP_POSBELOW,
|
||||
}
|
||||
|
||||
function HealBot_Options_TooltipPos_DropDown()
|
||||
for i=1, getn(HealBot_Options_TooltipPos_List), 1 do
|
||||
local info = {};
|
||||
info.text = HealBot_Options_TooltipPos_List[i];
|
||||
info.func = HealBot_Options_TooltipPos_OnSelect;
|
||||
UIDropDownMenu_AddButton(info);
|
||||
end
|
||||
end
|
||||
|
||||
function HealBot_Options_TooltipPos_Initialize()
|
||||
UIDropDownMenu_Initialize(HealBot_Options_TooltipPos,HealBot_Options_TooltipPos_DropDown)
|
||||
end
|
||||
|
||||
function HealBot_Options_TooltipPos_Refresh(onselect)
|
||||
if not HealBot_Config.TooltipPos then return end
|
||||
if not onselect then HealBot_Options_TooltipPos_Initialize() end -- or wrong menu may be used !
|
||||
HealBot_UIDropDownMenu_SetSelectedID(HealBot_Options_TooltipPos,HealBot_Config.TooltipPos)
|
||||
end
|
||||
|
||||
function HealBot_Options_TooltipPos_OnLoad()
|
||||
UIDropDownMenu_Initialize(this, HealBot_Options_TooltipPos_DropDown)
|
||||
UIDropDownMenu_SetWidth(128, this)
|
||||
end
|
||||
|
||||
function HealBot_Options_TooltipPos_OnSelect()
|
||||
HealBot_Config.TooltipPos = this:GetID()
|
||||
HealBot_Options_TooltipPos_Refresh(true)
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
local HealBot_Options_ComboClass_List = {
|
||||
HEALBOT_DRUID,
|
||||
HEALBOT_PALADIN,
|
||||
HEALBOT_PRIEST,
|
||||
HEALBOT_SHAMAN,
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
function HealBot_Options_ComboClass_Text()
|
||||
local class=UnitClass("Player");
|
||||
local combo = HealBot_Config.KeyCombo[class]
|
||||
local button = HealBot_Options_ComboClass_Button()
|
||||
if combo then
|
||||
HealBot_Options_Click:SetText(combo[button] or "")
|
||||
HealBot_Options_Shift:SetText(combo["Shift"..button] or "")
|
||||
HealBot_Options_Ctrl:SetText(combo["Ctrl"..button] or "")
|
||||
HealBot_Options_ShiftCtrl:SetText(combo["ShiftCtrl"..button] or "")
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
function HealBot_Options_ComboClass_Button()
|
||||
local button = "Left"
|
||||
if HealBot_Options_ComboButtons_Button==2 then button = "Middle"; end
|
||||
if HealBot_Options_ComboButtons_Button==3 then button = "Right"; end
|
||||
if HealBot_Options_ComboButtons_Button==4 then button = "Button4"; end
|
||||
if HealBot_Options_ComboButtons_Button==5 then button = "Button5"; end
|
||||
return button;
|
||||
end
|
||||
|
||||
|
||||
|
||||
|
||||
ColorPickerFrame.func = HealBot_Returned_Colours
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function HealBot_Options_EditBox_OnLoad(this,text)
|
||||
getglobal(this:GetName().."Text"):SetText(text);
|
||||
end
|
||||
|
||||
function HealBot_Options_Click_OnTextChanged(this)
|
||||
local class=UnitClass("Player");
|
||||
if not HealBot_Config.KeyCombo[class] then HealBot_Config.KeyCombo[class] = {} end
|
||||
local combo = HealBot_Config.KeyCombo[class]
|
||||
local button = HealBot_Options_ComboClass_Button()
|
||||
combo[button] = this:GetText()
|
||||
HealBot_Options_KeyCombo_Change()
|
||||
end
|
||||
|
||||
function HealBot_Options_Shift_OnTextChanged(this)
|
||||
local class=UnitClass("Player");
|
||||
if not HealBot_Config.KeyCombo[class] then HealBot_Config.KeyCombo[class] = {} end
|
||||
local combo = HealBot_Config.KeyCombo[class]
|
||||
local button = HealBot_Options_ComboClass_Button()
|
||||
combo["Shift"..button] = this:GetText()
|
||||
HealBot_Options_KeyCombo_Change()
|
||||
end
|
||||
|
||||
function HealBot_Options_Ctrl_OnTextChanged(this)
|
||||
local class=UnitClass("Player");
|
||||
if not HealBot_Config.KeyCombo[class] then HealBot_Config.KeyCombo[class] = {} end
|
||||
local combo = HealBot_Config.KeyCombo[class]
|
||||
local button = HealBot_Options_ComboClass_Button()
|
||||
combo["Ctrl"..button] = this:GetText()
|
||||
HealBot_Options_KeyCombo_Change()
|
||||
end
|
||||
|
||||
function HealBot_Options_ShiftCtrl_OnTextChanged(this)
|
||||
local class=UnitClass("Player");
|
||||
if not HealBot_Config.KeyCombo[class] then HealBot_Config.KeyCombo[class] = {} end
|
||||
local combo = HealBot_Config.KeyCombo[class]
|
||||
local button = HealBot_Options_ComboClass_Button()
|
||||
combo["ShiftCtrl"..button] = this:GetText()
|
||||
HealBot_Options_KeyCombo_Change()
|
||||
end
|
||||
|
||||
function HealBot_Options_KeyCombo_Change()
|
||||
local class=UnitClass("Player");
|
||||
HealBot_Config.KeyCombo[class]=HealBot_Config.KeyCombo[class];
|
||||
|
||||
end
|
||||
|
||||
function HealBot_Options_EnableHealthy_OnLoad(this,text)
|
||||
getglobal(this:GetName().."Text"):SetText(text);
|
||||
end
|
||||
|
||||
function HealBot_Options_EnableHealthy_OnClick(this)
|
||||
HealBot_Config.EnableHealthy = this:GetChecked() or 0;
|
||||
HealBot_Action_EnableButtons();
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
-- Chat Custom Messages UI Logic
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
@@ -0,0 +1,308 @@
|
||||
<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_Spells.lua" />
|
||||
<Frame name="HealBot_Options_Panel2" parent="HealBot_Options" hidden="true" setAllPoints="true">
|
||||
<Frames>
|
||||
<Frame name="HealBot_Options_KeysFrame" inherits="OptionFrameBoxTemplate">
|
||||
<Size>
|
||||
<AbsDimension y="268"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="21" y="-30"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
<Anchor point="TOPRIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="-21" y="0"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Layers>
|
||||
<Layer level="BACKGROUND">
|
||||
<FontString name="HealBot_ComboButtons_ButtonText1" text="HEALBOT_OPTIONS_USEBUTTONS" inherits="GameFontNormalSmall">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="110" y="-10" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
<Frames>
|
||||
<Slider name="HealBot_Options_Dummy" hidden="true" inherits="HealBot_Options_SliderTemplate">
|
||||
<Anchors>
|
||||
<Anchor point="TOP">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="0" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</Slider>
|
||||
<Frame name="HealBot_Options_ComboClassButton">
|
||||
<Layers>
|
||||
<Layer level="BACKGROUND">
|
||||
<FontString name="HealBot_ComboButtons_ButtonText" text="HEALBOT_OPTIONS_COMBOBUTTON" inherits="GameFontNormalSmall">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_Dummy" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="-5" y="-25" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
</Frame>
|
||||
|
||||
<CheckButton name="HealBot_ComboButtons_Button1" inherits="SendMailRadioButtonTemplate" id="1">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_Dummy" relativePoint="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="40" y="-30"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_ComboButtons_Button_OnLoad(this,HEALBOT_OPTIONS_BUTTONLEFT)</OnLoad>
|
||||
<OnClick>HealBot_ComboButtons_Button_OnClick(this,this:GetID())</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
|
||||
|
||||
|
||||
<CheckButton name="HealBot_ComboButtons_Button2" inherits="SendMailRadioButtonTemplate" id="2">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_ComboButtons_Button1" relativePoint="TOPRIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="40" y="0"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_ComboButtons_Button_OnLoad(this,HEALBOT_OPTIONS_BUTTONMIDDLE)</OnLoad>
|
||||
<OnClick>HealBot_ComboButtons_Button_OnClick(this,this:GetID())</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
<CheckButton name="HealBot_ComboButtons_Button3" inherits="SendMailRadioButtonTemplate" id="3">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_ComboButtons_Button2" relativePoint="TOPRIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="50" y="0"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_ComboButtons_Button_OnLoad(this,HEALBOT_OPTIONS_BUTTONRIGHT)</OnLoad>
|
||||
<OnClick>HealBot_ComboButtons_Button_OnClick(this,this:GetID())</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
<CheckButton name="HealBot_ComboButtons_Button4" inherits="SendMailRadioButtonTemplate" id="4">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_ComboButtons_Button1" relativePoint="TOPRIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-18"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_ComboButtons_Button_OnLoad(this,HEALBOT_OPTIONS_BUTTON4)</OnLoad>
|
||||
<OnClick>HealBot_ComboButtons_Button_OnClick(this,this:GetID())</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
<CheckButton name="HealBot_ComboButtons_Button5" inherits="SendMailRadioButtonTemplate" id="5">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_ComboButtons_Button4" relativePoint="TOPRIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="55" y="0"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_ComboButtons_Button_OnLoad(this,HEALBOT_OPTIONS_BUTTON5)</OnLoad>
|
||||
<OnClick>HealBot_ComboButtons_Button_OnClick(this,this:GetID())</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
|
||||
<EditBox name="HealBot_Options_Click" inherits="HealBot_Options_EditBoxTemplate">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_Dummy" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="-5" y="-68"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>
|
||||
HealBot_Options_EditBox_OnLoad(this,HEALBOT_OPTIONS_CLICK)
|
||||
</OnLoad>
|
||||
<OnTextChanged>
|
||||
HealBot_Options_Click_OnTextChanged(this)
|
||||
</OnTextChanged>
|
||||
</Scripts>
|
||||
</EditBox>
|
||||
<EditBox name="HealBot_Options_Shift" inherits="HealBot_Options_EditBoxTemplate">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_Click" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-20"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>
|
||||
HealBot_Options_EditBox_OnLoad(this,HEALBOT_OPTIONS_SHIFT)
|
||||
</OnLoad>
|
||||
<OnTextChanged>
|
||||
HealBot_Options_Shift_OnTextChanged(this)
|
||||
</OnTextChanged>
|
||||
</Scripts>
|
||||
</EditBox>
|
||||
<EditBox name="HealBot_Options_Ctrl" inherits="HealBot_Options_EditBoxTemplate">
|
||||
<Anchors>
|
||||
<Anchor point="TOPRIGHT" relativeTo="HealBot_Options_Shift" relativePoint="BOTTOMRIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-20"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>
|
||||
HealBot_Options_EditBox_OnLoad(this,HEALBOT_OPTIONS_CTRL)
|
||||
</OnLoad>
|
||||
<OnTextChanged>
|
||||
HealBot_Options_Ctrl_OnTextChanged(this)
|
||||
</OnTextChanged>
|
||||
</Scripts>
|
||||
</EditBox>
|
||||
<EditBox name="HealBot_Options_ShiftCtrl" inherits="HealBot_Options_EditBoxTemplate">
|
||||
<Anchors>
|
||||
<Anchor point="TOPRIGHT" relativeTo="HealBot_Options_Ctrl" relativePoint="BOTTOMRIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-20"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>
|
||||
HealBot_Options_EditBox_OnLoad(this,HEALBOT_OPTIONS_SHIFTCTRL)
|
||||
</OnLoad>
|
||||
<OnTextChanged>
|
||||
HealBot_Options_ShiftCtrl_OnTextChanged(this)
|
||||
</OnTextChanged>
|
||||
</Scripts>
|
||||
</EditBox>
|
||||
<CheckButton name="HealBot_Options_EnableHealthy" inherits="OptionsCheckButtonTemplate">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_ShiftCtrl" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="25" y="-4" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_Options_EnableHealthy_OnLoad(this,HEALBOT_OPTIONS_ENABLEHEALTHY)</OnLoad>
|
||||
<OnClick>HealBot_Options_EnableHealthy_OnClick(this)</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
</Frames>
|
||||
</Frame>
|
||||
|
||||
<Frame name="HealBot_Options_TooltipsPanel" inherits="OptionFrameBoxTemplate">
|
||||
<Scripts>
|
||||
<OnLoad>
|
||||
this:SetBackdropBorderColor(0.4, 0.4, 0.4);
|
||||
this:SetBackdropColor(0, 0, 0, 0);
|
||||
</OnLoad>
|
||||
</Scripts>
|
||||
<Size>
|
||||
<AbsDimension y="118"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="20" y="-300"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
<Anchor point="TOPRIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="-20" y="-180"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Frames>
|
||||
<CheckButton name="HealBot_Options_ShowTooltip" inherits="OptionsCheckButtonTemplate">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_TooltipsPanel" relativePoint="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="20" y="-4" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_Options_ShowTooltip_OnLoad(this,HEALBOT_OPTIONS_SHOWTOOLTIP)</OnLoad>
|
||||
<OnClick>HealBot_Options_ShowTooltip_OnClick(this)</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
<Frame name="HealBot_Options_TooltipPos" inherits="UIDropDownMenuTemplate" id="1">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_ShowTooltip" relativePoint="TOPRIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="68" y="-2" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_Options_TooltipPos_OnLoad(this) </OnLoad>
|
||||
</Scripts>
|
||||
</Frame>
|
||||
<CheckButton name="HealBot_Options_ShowTooltipTarget" inherits="OptionsCheckButtonTemplate">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_TooltipsPanel" relativePoint="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="20" y="-30" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_Options_ShowTooltipTarget_OnLoad(this,HEALBOT_OPTIONS_SHOWUNITTOOLTIP)</OnLoad>
|
||||
<OnClick>HealBot_Options_ShowTooltipTarget_OnClick(this)</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
<CheckButton name="HealBot_Options_ShowTooltipSpellDetail" inherits="OptionsCheckButtonTemplate">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_TooltipsPanel" relativePoint="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="20" y="-55" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_Options_ShowTooltipSpellDetail_OnLoad(this,HEALBOT_OPTIONS_SHOWDETTOOLTIP)</OnLoad>
|
||||
<OnClick>HealBot_Options_ShowTooltipSpellDetail_OnClick(this)</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
<CheckButton name="HealBot_Options_ShowTooltipInstant" inherits="OptionsCheckButtonTemplate">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_TooltipsPanel" relativePoint="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="20" y="-80" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_Options_ShowTooltipInstant_OnLoad(this,HEALBOT_OPTIONS_SHOWRECTOOLTIP)</OnLoad>
|
||||
<OnClick>HealBot_Options_ShowTooltipInstant_OnClick(this)</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
|
||||
</Frames>
|
||||
</Frame>
|
||||
</Frames>
|
||||
</Frame>
|
||||
|
||||
</Ui>
|
||||
@@ -0,0 +1,997 @@
|
||||
-- HealBot_View_Layout.lua
|
||||
-- Manages skins, status bar layouts, anchoring, and grid rendering for the HealBot panel
|
||||
|
||||
local headerno = 0
|
||||
|
||||
HealBot_Action_HealGroup = {
|
||||
"player",
|
||||
"pet",
|
||||
"party1",
|
||||
"party2",
|
||||
"party3",
|
||||
"party4",
|
||||
};
|
||||
|
||||
HealBot_Action_HealTarget = {};
|
||||
HealBot_Action_HealButtons = {};
|
||||
HealBot_Action_UnitButtons = {};
|
||||
|
||||
function HealBot_Action_SetTexture(bar, btexture)
|
||||
if not bar then return end
|
||||
if btexture == 10 then
|
||||
bar:SetStatusBarTexture("Interface\\Buttons\\WHITE8X8");
|
||||
else
|
||||
bar:SetStatusBarTexture("Interface\\AddOns\\HealBotBlue\\Images\\bar" .. tostring(btexture) .. ".tga");
|
||||
end
|
||||
end
|
||||
|
||||
function HealBot_HealthColor(unit, hlth, maxhlth)
|
||||
if HealBot_UnitDebuff[unit] then
|
||||
local debuff, tmp, debuff_type = UnitDebuff(unit, 1, 1)
|
||||
if not debuff then
|
||||
HealBot_UnitDebuff[unit] = nil;
|
||||
HealBot_UnitDebuff[unit .. "_debuff_texture"] = nil
|
||||
else
|
||||
local dr = HealBot_Config.CDCBarColour[debuff_type].R
|
||||
local dg = HealBot_Config.CDCBarColour[debuff_type].G
|
||||
local db = HealBot_Config.CDCBarColour[debuff_type].B
|
||||
if HealBot_Config.btexture[HealBot_Config.Current_Skin] == 10 then
|
||||
dr = dr * 4
|
||||
dg = dg * 4
|
||||
db = db * 4
|
||||
if dr > 1 then dr = 1 end
|
||||
if dg > 1 then dg = 1 end
|
||||
if db > 1 then db = 1 end
|
||||
end
|
||||
return dr, dg, db, HealBot_Config.Barcola[HealBot_Config.Current_Skin];
|
||||
end
|
||||
end
|
||||
|
||||
local text = UnitName(unit);
|
||||
if not HealBot_HealsIn[text] then
|
||||
HealBot_HealsIn[text] = 0;
|
||||
end
|
||||
|
||||
local pct = hlth + HealBot_HealsIn[text];
|
||||
if maxhlth and maxhlth > 0 then
|
||||
if pct < maxhlth then
|
||||
pct = pct / maxhlth;
|
||||
else
|
||||
pct = 1;
|
||||
end
|
||||
else
|
||||
pct = 0;
|
||||
end
|
||||
|
||||
local r, g, b = 1.0, 1.0, 0.0;
|
||||
local a = HealBot_Config.Barcola[HealBot_Config.Current_Skin];
|
||||
if pct > HealBot_Config.AlertLevel then
|
||||
a = HealBot_Config.bardisa[HealBot_Config.Current_Skin];
|
||||
end
|
||||
|
||||
local colorMode = HealBot_Config.bcolormode[HealBot_Config.Current_Skin] or 1
|
||||
if colorMode == 2 and HealBot_Model and HealBot_Model.units[unit] and HealBot_Model.units[unit].englishClass and RAID_CLASS_COLORS and RAID_CLASS_COLORS[HealBot_Model.units[unit].englishClass] then
|
||||
local engClass = HealBot_Model.units[unit].englishClass
|
||||
r = RAID_CLASS_COLORS[engClass].r
|
||||
g = RAID_CLASS_COLORS[engClass].g
|
||||
b = RAID_CLASS_COLORS[engClass].b
|
||||
elseif colorMode == 2 and string.find(unit, "pet") then
|
||||
r, g, b = 0.4, 0.9, 0.6 -- Mint color
|
||||
else
|
||||
if pct >= 0.98 then r = 0.0; end
|
||||
if pct < 0.98 and pct >= 0.65 then r = 2.94 - (pct * 3); end
|
||||
if pct <= 0.64 and pct > 0.31 then g = (pct - 0.31) * 3; end
|
||||
if pct <= 0.31 then g = 0.0; end
|
||||
end
|
||||
return r, g, b, a;
|
||||
end
|
||||
|
||||
function HealBot_Action_HealthBar(button)
|
||||
if not button.bar then
|
||||
button.bar = getglobal(button:GetName() .. "Bar")
|
||||
end
|
||||
return button.bar;
|
||||
end
|
||||
|
||||
function HealBot_Action_HealthBar2(button)
|
||||
if not button.bar2 then
|
||||
button.bar2 = getglobal(button:GetName() .. "Bar2")
|
||||
end
|
||||
return button.bar2;
|
||||
end
|
||||
|
||||
function HealBot_Action_EnableButton(button)
|
||||
local unit = button.unit;
|
||||
local state = HealBot_Model.units[unit]
|
||||
if not state then return end
|
||||
|
||||
local hlth = state.health
|
||||
local maxhlth = state.maxHealth
|
||||
local name = state.name
|
||||
if not name then name = UnitName(unit) end -- fallback
|
||||
|
||||
local bar = HealBot_Action_HealthBar(button);
|
||||
local bar2 = HealBot_Action_HealthBar2(button);
|
||||
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 bheight = HealBot_Config.bheight[HealBot_Config.Current_Skin];
|
||||
local sr = HealBot_Config.btextenabledcolr[HealBot_Config.Current_Skin];
|
||||
local sg = HealBot_Config.btextenabledcolg[HealBot_Config.Current_Skin];
|
||||
local sb = HealBot_Config.btextenabledcolb[HealBot_Config.Current_Skin];
|
||||
local sa = HealBot_Config.btextenabledcola[HealBot_Config.Current_Skin];
|
||||
local r, g, b, a = HealBot_HealthColor(button.unit, hlth, maxhlth)
|
||||
local btextheight = HealBot_Config.btextheight[HealBot_Config.Current_Skin] or 10;
|
||||
if btextheight == 0 then btextheight = 10 end
|
||||
local bwidth = HealBot_Config.bwidth[HealBot_Config.Current_Skin]
|
||||
local textlen = math.floor(5 + (((bwidth * 1.8) / btextheight) - (btextheight / 2)))
|
||||
|
||||
bar:SetMinMaxValues(0, maxhlth);
|
||||
bar:SetValue(hlth);
|
||||
|
||||
local englishClass = state.englishClass
|
||||
local isHealer = false
|
||||
if englishClass == "PALADIN" or englishClass == "DRUID" or englishClass == "SHAMAN" or englishClass == "PRIEST" then
|
||||
isHealer = true
|
||||
end
|
||||
local pt = state.powerType
|
||||
|
||||
local showMana = false
|
||||
local pr, pg, pb = 0, 0, 1 -- Default Blue for Mana
|
||||
|
||||
if HealBot_Config.ShowManaBars == 1 and state.maxMana > 0 then
|
||||
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
|
||||
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
|
||||
|
||||
if showMana then
|
||||
if bar3 then
|
||||
bar3:SetMinMaxValues(0, state.maxMana)
|
||||
bar3:SetValue(state.mana)
|
||||
bar3:SetStatusBarColor(pr, pg, pb, HealBot_Config.Barcola[HealBot_Config.Current_Skin])
|
||||
HealBot_Action_SetTexture(bar3, HealBot_Config.btexture[HealBot_Config.Current_Skin])
|
||||
bar3:Show()
|
||||
bar3:SetHeight(bheight * 0.2)
|
||||
end
|
||||
bar:SetHeight(bheight * 0.8)
|
||||
bar2:SetHeight(bheight * 0.8)
|
||||
else
|
||||
if bar3 then
|
||||
bar3:Hide()
|
||||
end
|
||||
bar:SetHeight(bheight)
|
||||
bar2:SetHeight(bheight)
|
||||
end
|
||||
|
||||
if HealBot_HealsIn[name] then
|
||||
bar2:SetMinMaxValues(0, maxhlth);
|
||||
bar2:SetValue(hlth + HealBot_HealsIn[name]);
|
||||
else
|
||||
bar2:SetValue(0);
|
||||
end
|
||||
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
|
||||
button:Enable();
|
||||
if HealBot_UnitDebuff[unit] then
|
||||
sr = HealBot_Config.btextcursecolr[HealBot_Config.Current_Skin];
|
||||
sg = HealBot_Config.btextcursecolg[HealBot_Config.Current_Skin];
|
||||
sb = HealBot_Config.btextcursecolb[HealBot_Config.Current_Skin];
|
||||
sa = HealBot_Config.btextcursecola[HealBot_Config.Current_Skin];
|
||||
elseif HealBot_MissingBuffs[unit] then
|
||||
r = r * 0.5;
|
||||
g = g * 0.5;
|
||||
b = b * 0.5;
|
||||
sr = 1.0;
|
||||
sg = 1.0;
|
||||
sb = 0.0;
|
||||
end
|
||||
bar:SetStatusBarColor(r, g, b, HealBot_Config.Barcola[HealBot_Config.Current_Skin]);
|
||||
bar2:SetStatusBarColor(r, g, b, HealBot_Config.BarcolaInHeal[HealBot_Config.Current_Skin]);
|
||||
else
|
||||
button:Disable();
|
||||
sr = HealBot_Config.btextdisbledcolr[HealBot_Config.Current_Skin];
|
||||
sg = HealBot_Config.btextdisbledcolg[HealBot_Config.Current_Skin];
|
||||
sb = HealBot_Config.btextdisbledcolb[HealBot_Config.Current_Skin];
|
||||
sa = HealBot_Config.btextdisbledcola[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]);
|
||||
end
|
||||
local healthTextOpt = HealBot_Config.ShowHealthText or 0
|
||||
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
|
||||
|
||||
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);
|
||||
local fontName, fontHeight, fontFlags = bar.txt:GetFont()
|
||||
local fontOutline = HealBot_Config.bfontoutline[HealBot_Config.Current_Skin] or 0
|
||||
if fontOutline == 1 then
|
||||
bar.txt:SetFont(fontName, fontHeight, "OUTLINE")
|
||||
else
|
||||
bar.txt:SetFont(fontName, fontHeight, "")
|
||||
end
|
||||
|
||||
for i = 1, 5 do
|
||||
local icon = getglobal(button:GetName() .. "BarIcon" .. i)
|
||||
if icon then
|
||||
if HealBot_UnitIcons and HealBot_UnitIcons[unit] and HealBot_UnitIcons[unit][i] then
|
||||
icon:SetTexture(HealBot_UnitIcons[unit][i])
|
||||
icon:Show()
|
||||
else
|
||||
icon:Hide()
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function HealBot_Action_EnableButtons()
|
||||
for index, button in pairs(HealBot_Action_HealButtons) do
|
||||
HealBot_Action_EnableButton(button)
|
||||
end
|
||||
end
|
||||
|
||||
function HealBot_Action_RefreshButton(button)
|
||||
if not button then return end
|
||||
local unit = button.unit;
|
||||
if HealBot_MayHeal(unit) then
|
||||
HealBot_Action_EnableButton(button)
|
||||
end
|
||||
end
|
||||
|
||||
function HealBot_Action_ResetSkin()
|
||||
HealBot_Action_PartyChanged()
|
||||
if HealBot_Options:IsVisible() then
|
||||
HealBot_Action_SetTexture(HealBot_DiseaseColorpick, HealBot_Config.btexture[HealBot_Config.Current_Skin])
|
||||
HealBot_Action_SetTexture(HealBot_MagicColorpick, HealBot_Config.btexture[HealBot_Config.Current_Skin])
|
||||
HealBot_Action_SetTexture(HealBot_PoisonColorpick, HealBot_Config.btexture[HealBot_Config.Current_Skin])
|
||||
HealBot_Action_SetTexture(HealBot_CurseColorpick, HealBot_Config.btexture[HealBot_Config.Current_Skin])
|
||||
HealBot_Action_SetTexture(HealBot_EnTextColorpick, HealBot_Config.btexture[HealBot_Config.Current_Skin])
|
||||
HealBot_Action_SetTexture(HealBot_EnTextColorpickin, HealBot_Config.btexture[HealBot_Config.Current_Skin])
|
||||
HealBot_Action_SetTexture(HealBot_DisTextColorpick, HealBot_Config.btexture[HealBot_Config.Current_Skin])
|
||||
HealBot_Action_SetTexture(HealBot_DebTextColorpick, HealBot_Config.btexture[HealBot_Config.Current_Skin])
|
||||
HealBot_SetSkinColours()
|
||||
end
|
||||
end
|
||||
|
||||
function HealBot_Action_RefreshButtons(unit)
|
||||
if unit and HealBot_Action_UnitButtons[unit] then
|
||||
for index, button in pairs(HealBot_Action_UnitButtons[unit]) do
|
||||
HealBot_Action_RefreshButton(button)
|
||||
end
|
||||
else
|
||||
for index, button in pairs(HealBot_Action_HealButtons) do
|
||||
HealBot_Action_RefreshButton(button)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function HealBot_Action_PositionButton(button, OsetX, OsetY, bwidth, bheight, checked, header)
|
||||
local brspace = HealBot_Config.brspace[HealBot_Config.Current_Skin] or 3;
|
||||
if header then
|
||||
headerno = headerno + 1;
|
||||
local headerobj = getglobal("HealBot_Action_Header" .. headerno);
|
||||
headerobj:SetText(header)
|
||||
headerobj:Show();
|
||||
headerobj:ClearAllPoints();
|
||||
headerobj:SetHeight(bheight);
|
||||
headerobj:SetWidth(bwidth);
|
||||
headerobj:SetPoint("TOPLEFT", "HealBot_Action", "TOPLEFT", OsetX, -OsetY);
|
||||
headerobj:Disable();
|
||||
OsetY = OsetY + headerobj:GetHeight() + brspace;
|
||||
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
|
||||
OsetY = OsetY + button:GetHeight() + brspace;
|
||||
else
|
||||
button:Hide();
|
||||
end
|
||||
end
|
||||
return OsetY;
|
||||
end
|
||||
|
||||
function HealBot_Action_PositionButtonHorizontal(button, OsetX, OsetY, bwidth, bheight, checked, header)
|
||||
local bcspace = HealBot_Config.bcspace[HealBot_Config.Current_Skin] or 3;
|
||||
if header then
|
||||
headerno = headerno + 1;
|
||||
local headerobj = getglobal("HealBot_Action_Header" .. headerno);
|
||||
headerobj:SetText(header)
|
||||
headerobj:Show();
|
||||
headerobj:ClearAllPoints();
|
||||
headerobj:SetHeight(bheight);
|
||||
headerobj:SetWidth(bwidth);
|
||||
headerobj:SetPoint("TOPLEFT", "HealBot_Action", "TOPLEFT", OsetX, -OsetY);
|
||||
headerobj:Disable();
|
||||
OsetX = OsetX + bwidth + bcspace;
|
||||
else
|
||||
local unit = button.unit;
|
||||
button:SetText(" ");
|
||||
if (HealBot_MayHeal(unit)) then
|
||||
button:Show();
|
||||
button:ClearAllPoints();
|
||||
button:SetHeight(bheight);
|
||||
if checked then
|
||||
button:SetWidth(bwidth - 14);
|
||||
button:SetPoint("TOPLEFT", "HealBot_Action", "TOPLEFT", OsetX + 14, -OsetY);
|
||||
else
|
||||
button:SetWidth(bwidth);
|
||||
button:SetPoint("TOPLEFT", "HealBot_Action", "TOPLEFT", OsetX, -OsetY);
|
||||
end
|
||||
OsetX = OsetX + bwidth + bcspace;
|
||||
else
|
||||
button:Hide();
|
||||
end
|
||||
end
|
||||
return OsetX;
|
||||
end
|
||||
|
||||
function HealBot_Action_SetHeightWidth(width, height, bwidth)
|
||||
if HealBot_ActionHeight then
|
||||
HealBot_Action:SetHeight(HealBot_ActionHeight);
|
||||
end
|
||||
if HealBot_Config.GrowUpwards == 1 then
|
||||
local left, bottom = HealBot_Action:GetLeft(), HealBot_Action:GetBottom();
|
||||
if left and bottom then
|
||||
if HealBot_Config.PanelAnchorX == -1 then HealBot_Config.PanelAnchorX = left; end
|
||||
if HealBot_Config.PanelAnchorY == -1 then HealBot_Config.PanelAnchorY = bottom; end
|
||||
HealBot_Action:ClearAllPoints();
|
||||
HealBot_Action:SetPoint("BOTTOMLEFT", "UIParent", "BOTTOMLEFT", HealBot_Config.PanelAnchorX, HealBot_Config.PanelAnchorY);
|
||||
end
|
||||
else
|
||||
local left, top = HealBot_Action:GetLeft(), HealBot_Action:GetTop();
|
||||
if left and top then
|
||||
HealBot_Action:ClearAllPoints();
|
||||
HealBot_Action:SetPoint("TOPLEFT", "UIParent", "BOTTOMLEFT", left, top);
|
||||
end
|
||||
end
|
||||
HealBot_Action:SetHeight(height);
|
||||
HealBot_ActionHeight = height;
|
||||
local bpadding = (HealBot_Config.bpadding and HealBot_Config.bpadding[HealBot_Config.Current_Skin]) or 10
|
||||
HealBot_Action:SetWidth(width + bwidth + bpadding)
|
||||
end
|
||||
|
||||
function HealBot_Action_SetHealButton(index, unit)
|
||||
if not index then
|
||||
HealBot_Action_HealButtons = {};
|
||||
HealBot_Action_UnitButtons = {};
|
||||
return nil
|
||||
end
|
||||
local button = getglobal("HealBot_Action_HealUnit" .. index);
|
||||
button.unit = unit;
|
||||
if unit then
|
||||
table.insert(HealBot_Action_HealButtons, button);
|
||||
if not HealBot_Action_UnitButtons[unit] then HealBot_Action_UnitButtons[unit] = {} end
|
||||
table.insert(HealBot_Action_UnitButtons[unit], button);
|
||||
else
|
||||
button:Hide();
|
||||
end
|
||||
return button;
|
||||
end
|
||||
|
||||
function HealBot_Action_PartyChanged()
|
||||
if not HealBot_IsFighting then
|
||||
local numBars = 0;
|
||||
local numHeaders = 0;
|
||||
local TempMaxH = 0;
|
||||
local HeaderPos = {};
|
||||
|
||||
if HealBot_Config.AutoSwap_Enabled == 1 then
|
||||
local totalMembers = GetNumRaidMembers()
|
||||
if totalMembers == 0 then totalMembers = GetNumPartyMembers() end
|
||||
|
||||
local threshold = 1
|
||||
if totalMembers == 0 then
|
||||
threshold = 1 -- Solo
|
||||
elseif totalMembers > 0 and totalMembers <= 5 then
|
||||
threshold = 2 -- Party
|
||||
elseif totalMembers > 5 and totalMembers <= 15 then
|
||||
threshold = 3 -- Raid15
|
||||
elseif totalMembers > 15 and totalMembers <= 25 then
|
||||
threshold = 4 -- Raid25
|
||||
else
|
||||
threshold = 5 -- Raid40
|
||||
end
|
||||
|
||||
if not HealBot_Config.AutoSwap_Profiles then HealBot_Config.AutoSwap_Profiles = {} end
|
||||
local swapSkin = HealBot_Config.AutoSwap_Profiles[threshold]
|
||||
if swapSkin and swapSkin ~= HealBot_Config.Current_Skin then
|
||||
HealBot_Config.Current_Skin = swapSkin
|
||||
HealBot_Options_SetSkins()
|
||||
end
|
||||
end
|
||||
|
||||
for j = 1, 15 do
|
||||
local headerobj = getglobal("HealBot_Action_Header" .. j);
|
||||
headerobj:SetText(" ")
|
||||
headerobj:Hide();
|
||||
end
|
||||
|
||||
local bwidth = HealBot_Config.bwidth[HealBot_Config.Current_Skin] or 85;
|
||||
local sr = HealBot_Config.btextdisbledcolr[HealBot_Config.Current_Skin] or 0.4;
|
||||
local sg = HealBot_Config.btextdisbledcolg[HealBot_Config.Current_Skin] or 0.4;
|
||||
local sb = HealBot_Config.btextdisbledcolb[HealBot_Config.Current_Skin] or 0.4;
|
||||
local sa = HealBot_Config.btextdisbledcola[HealBot_Config.Current_Skin] or 0.6;
|
||||
local bheight = HealBot_Config.bheight[HealBot_Config.Current_Skin] or 18;
|
||||
local btexture = HealBot_Config.btexture[HealBot_Config.Current_Skin] or 5;
|
||||
local bcspace = HealBot_Config.bcspace[HealBot_Config.Current_Skin] or 4;
|
||||
local cols = HealBot_Config.numcols[HealBot_Config.Current_Skin] or 2;
|
||||
local btextheight = HealBot_Config.btextheight[HealBot_Config.Current_Skin] or 10;
|
||||
local abortsize = HealBot_Config.abortsize[HealBot_Config.Current_Skin] or 10;
|
||||
local checked_start = 0;
|
||||
local checked_end = 0;
|
||||
headerno = 0;
|
||||
|
||||
for j = 1, 41 do
|
||||
HealBot_Action_SetHealButton(j, nil);
|
||||
end
|
||||
for j = 51, 60 do
|
||||
HealBot_Action_SetHealButton(j, nil);
|
||||
end
|
||||
HealBot_Action_SetHealButton();
|
||||
|
||||
local i = 0;
|
||||
local last = 0;
|
||||
local GroupValid = numBars;
|
||||
last = last + 6
|
||||
if HealBot_Config.GroupHeals == 1 then
|
||||
if HealBot_Config.ShowHeader[HealBot_Config.Current_Skin] == 1 then
|
||||
HeaderPos[i + 1] = HEALBOT_OPTIONS_GROUPHEALS
|
||||
end
|
||||
for _, unit in ipairs(HealBot_Action_HealGroup) do
|
||||
if not HealBot_Action_UnitButtons[unit] and HealBot_MayHeal(unit) then
|
||||
i = i + 1;
|
||||
HealBot_Action_SetHealButton(i, unit);
|
||||
numBars = numBars + 1;
|
||||
end
|
||||
if i == last then break end
|
||||
end
|
||||
end
|
||||
if numBars > GroupValid and HealBot_Config.ShowHeader[HealBot_Config.Current_Skin] == 1 then
|
||||
numBars = numBars + 1;
|
||||
numHeaders = numHeaders + 1;
|
||||
end
|
||||
|
||||
last = last + 10
|
||||
local TankValid = numBars;
|
||||
if HealBot_Config.TankHeals == 1 then
|
||||
if GetNumRaidMembers() > 0 and CT_RA_MainTanks then
|
||||
if HealBot_Config.ShowHeader[HealBot_Config.Current_Skin] == 1 then
|
||||
HeaderPos[i + 1] = HEALBOT_OPTIONS_TANKHEALS
|
||||
end
|
||||
for j = 1, 10 do
|
||||
if CT_RA_MainTanks[j] then
|
||||
for k = 1, GetNumRaidMembers() do
|
||||
local unit = "raid" .. k;
|
||||
local PossibleMT = 1;
|
||||
if UnitInParty(unit) and HealBot_Config.GroupHeals == 1 then
|
||||
if not UnitIsUnit(unit, "player") then
|
||||
PossibleMT = 0;
|
||||
end
|
||||
end
|
||||
if PossibleMT == 1 then
|
||||
if UnitName(unit) == CT_RA_MainTanks[j] then
|
||||
if not HealBot_Action_UnitButtons[unit] and HealBot_MayHeal(unit) then
|
||||
i = i + 1;
|
||||
HealBot_Action_SetHealButton(i, unit);
|
||||
numBars = numBars + 1;
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
if i == last then break end
|
||||
end
|
||||
end
|
||||
end
|
||||
if numBars > TankValid and HealBot_Config.ShowHeader[HealBot_Config.Current_Skin] == 1 then
|
||||
numBars = numBars + 1;
|
||||
numHeaders = numHeaders + 1;
|
||||
end
|
||||
|
||||
last = last + 10;
|
||||
local h = 50;
|
||||
local TargetValid = numBars;
|
||||
if HealBot_Config.TargetHeals == 1 then
|
||||
if HealBot_Config.ShowHeader[HealBot_Config.Current_Skin] == 1 then
|
||||
HeaderPos[i + 1] = HEALBOT_OPTIONS_TARGETHEALS
|
||||
end
|
||||
for _, unit in ipairs(HealBot_Action_HealTarget) do
|
||||
if not HealBot_Action_UnitButtons[unit] and HealBot_MayHeal(unit) then
|
||||
i = i + 1;
|
||||
h = h + 1;
|
||||
if checked_start == 0 then checked_start = i; end
|
||||
checked_end = i;
|
||||
HealBot_Action_SetHealButton(h, unit);
|
||||
local check = getglobal("HealBot_Action_HealUnit" .. h .. "Check");
|
||||
check.unit = unit;
|
||||
check:SetChecked(1);
|
||||
check:Show();
|
||||
numBars = numBars + 1;
|
||||
end
|
||||
if i == last then break end
|
||||
end
|
||||
|
||||
last = last + 1
|
||||
local unit = HealBot_TargetName()
|
||||
if not HealBot_Action_UnitButtons[unit] and HealBot_MayHeal("target") then
|
||||
i = i + 1;
|
||||
h = h + 1;
|
||||
if h < 61 then
|
||||
HealBot_Action_SetHealButton(h, "target");
|
||||
local check = getglobal("HealBot_Action_HealUnit" .. h .. "Check");
|
||||
|
||||
check:SetChecked(0);
|
||||
check.unit = unit;
|
||||
if check.unit then
|
||||
if checked_start == 0 then checked_start = i; end
|
||||
checked_end = i;
|
||||
check:Show();
|
||||
else
|
||||
check:Hide();
|
||||
end
|
||||
else
|
||||
HealBot_Action_SetHealButton(i, "target");
|
||||
end
|
||||
numBars = numBars + 1;
|
||||
end
|
||||
end
|
||||
if numBars > TargetValid and HealBot_Config.ShowHeader[HealBot_Config.Current_Skin] == 1 then
|
||||
numBars = numBars + 1;
|
||||
numHeaders = numHeaders + 1;
|
||||
end
|
||||
|
||||
last = last + 40
|
||||
local ExtraValid = numBars;
|
||||
if HealBot_Config.EmergencyHeals == 1 then
|
||||
local order = {};
|
||||
local units = {};
|
||||
if HealBot_Config.ShowHeader[HealBot_Config.Current_Skin] == 1 and HealBot_Config.ExtraOrder == 1 then
|
||||
HeaderPos[i + 1] = HEALBOT_OPTIONS_EMERGENCYHEALS
|
||||
numBars = numBars + 1;
|
||||
numHeaders = numHeaders + 1;
|
||||
end
|
||||
if HealBot_Config.EmergIncMonitor == 2 then
|
||||
if GetNumRaidMembers() > 0 then
|
||||
for j = 1, 40 do
|
||||
local PossibleEmerg = 1;
|
||||
local unit = "raid" .. j;
|
||||
local name, rank, subgroup, level, class, fileName, zone, online, isDead = GetRaidRosterInfo(j);
|
||||
if not name then name = "not known" end
|
||||
if not class then class = "not known" end
|
||||
if not subgroup then subgroup = "not known" end
|
||||
|
||||
if UnitInParty(unit) and HealBot_Config.GroupHeals == 1 then
|
||||
PossibleEmerg = 0;
|
||||
end
|
||||
if PossibleEmerg == 1 then
|
||||
if not HealBot_Action_UnitButtons[unit] and HealBot_MayHeal(unit) then
|
||||
if HealBot_Config.ExtraOrder == 1 then
|
||||
order[unit] = name;
|
||||
elseif HealBot_Config.ExtraOrder == 2 then
|
||||
order[unit] = class;
|
||||
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
|
||||
end
|
||||
else
|
||||
for _, unit in ipairs(HealBot_Action_HealGroup) do
|
||||
if not HealBot_Action_UnitButtons[unit] and HealBot_MayHeal(unit) then
|
||||
if HealBot_Config.ExtraOrder == 1 then
|
||||
order[unit] = name;
|
||||
elseif HealBot_Config.ExtraOrder == 2 then
|
||||
order[unit] = class;
|
||||
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
|
||||
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
|
||||
local unit = "raid" .. j;
|
||||
local Class = UnitClass(unit);
|
||||
local ProcessUnit = 0;
|
||||
local PossibleEmerg = 1;
|
||||
local name, rank, subgroup, level, class, fileName, zone, online, isDead = GetRaidRosterInfo(j);
|
||||
if not name then name = "not known" end
|
||||
if not class then class = "not known" end
|
||||
if not subgroup then subgroup = "not known" end
|
||||
|
||||
if HealBot_EmergInc[Class] == 1 then
|
||||
ProcessUnit = 1;
|
||||
end
|
||||
if UnitInParty(unit) and HealBot_Config.GroupHeals == 1 then
|
||||
PossibleEmerg = 0;
|
||||
end
|
||||
|
||||
if ProcessUnit == 1 and PossibleEmerg == 1 then
|
||||
if not HealBot_Action_UnitButtons[unit] and HealBot_MayHeal(unit) then
|
||||
if HealBot_Config.ExtraOrder == 1 then
|
||||
order[unit] = name;
|
||||
elseif HealBot_Config.ExtraOrder == 2 then
|
||||
order[unit] = class;
|
||||
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
|
||||
end
|
||||
else
|
||||
for _, unit in ipairs(HealBot_Action_HealGroup) do
|
||||
if not HealBot_Action_UnitButtons[unit] and HealBot_MayHeal(unit) then
|
||||
if HealBot_Config.ExtraOrder == 1 then
|
||||
order[unit] = name;
|
||||
elseif HealBot_Config.ExtraOrder == 2 then
|
||||
order[unit] = class;
|
||||
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
|
||||
end
|
||||
end
|
||||
table.sort(units, function (a, b)
|
||||
if order[a] < order[b] then return true end
|
||||
if order[a] > order[b] then return false end
|
||||
return a < b
|
||||
end)
|
||||
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
|
||||
|
||||
if HealBot_Config.ShowHeader[HealBot_Config.Current_Skin] == 1 and HealBot_Config.ExtraOrder == 2 and TempSort ~= class then
|
||||
TempSort = class
|
||||
HeaderPos[i + 1] = class
|
||||
numBars = numBars + 1;
|
||||
numHeaders = numHeaders + 1;
|
||||
end
|
||||
if HealBot_Config.ShowHeader[HealBot_Config.Current_Skin] == 1 and HealBot_Config.ExtraOrder == 3 and TempSort ~= subgroup then
|
||||
TempSort = subgroup
|
||||
HeaderPos[i + 1] = HEALBOT_OPTIONS_GROUPHEALS .. subgroup
|
||||
numBars = numBars + 1;
|
||||
numHeaders = numHeaders + 1;
|
||||
end
|
||||
if HealBot_Config.ShowHeader[HealBot_Config.Current_Skin] == 1 and HealBot_Config.ExtraOrder == 4 and TempMaxH > UnitHealthMax(units[j]) then
|
||||
TempMaxH = TempMaxH - 1000
|
||||
HeaderPos[i + 1] = ">" .. tostring(TempMaxH / 1000) .. "k"
|
||||
numBars = numBars + 1;
|
||||
numHeaders = numHeaders + 1;
|
||||
end
|
||||
i = i + 1;
|
||||
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
|
||||
|
||||
local bpadding = (HealBot_Config.bpadding and HealBot_Config.bpadding[HealBot_Config.Current_Skin]) or 10
|
||||
local OffsetY = bpadding;
|
||||
local OffsetX = bpadding;
|
||||
local MaxOffsetY = 0;
|
||||
local MaxOffsetX = 0;
|
||||
|
||||
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;
|
||||
end
|
||||
if cols <= 0 then cols = 1 end
|
||||
|
||||
local h = 1;
|
||||
local i = 0;
|
||||
local z = 1;
|
||||
local brspace = HealBot_Config.brspace[HealBot_Config.Current_Skin] or 3;
|
||||
local bcspace = HealBot_Config.bcspace[HealBot_Config.Current_Skin] or 3;
|
||||
|
||||
local limit = math.ceil((numBars) / cols)
|
||||
if orientation == 1 and maxRows > 0 then
|
||||
limit = maxRows
|
||||
elseif orientation == 2 then
|
||||
limit = cols
|
||||
end
|
||||
|
||||
for index, button in pairs(HealBot_Action_HealButtons) do
|
||||
i = i + 1;
|
||||
local checked = false;
|
||||
local header;
|
||||
|
||||
if HeaderPos[i] then
|
||||
header = HeaderPos[i];
|
||||
if orientation == 1 then
|
||||
OffsetY = HealBot_Action_PositionButton(nil, OffsetX, OffsetY, bwidth, bheight, checked, header);
|
||||
if h == limit and z < numBars then
|
||||
h = 0;
|
||||
if MaxOffsetY < OffsetY then MaxOffsetY = OffsetY; end
|
||||
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
|
||||
h = h + 1;
|
||||
z = z + 1;
|
||||
end
|
||||
|
||||
if checked_start <= i and checked_end >= i then checked = true; end
|
||||
|
||||
if orientation == 1 then
|
||||
OffsetY = HealBot_Action_PositionButton(button, OffsetX, OffsetY, bwidth, bheight, checked, nil);
|
||||
if h == limit and z < numBars then
|
||||
h = 0;
|
||||
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
|
||||
|
||||
z = z + 1;
|
||||
h = h + 1;
|
||||
local bar = HealBot_Action_HealthBar(button);
|
||||
local bar2 = HealBot_Action_HealthBar2(button);
|
||||
bar.txt = getglobal(bar:GetName() .. "_text");
|
||||
bar:SetHeight(bheight);
|
||||
HealBot_Action_SetTexture(bar, btexture);
|
||||
bar.txt:SetTextHeight(btextheight);
|
||||
local barScale = bar:GetScale();
|
||||
bar:SetScale(barScale + 0.01);
|
||||
bar:SetScale(barScale);
|
||||
bar2:SetHeight(bheight);
|
||||
HealBot_Action_SetTexture(bar2, btexture);
|
||||
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
|
||||
|
||||
if HealBot_Config.HideOptions == 1 then
|
||||
HealBot_Action_OptionsButton:Hide();
|
||||
else
|
||||
HealBot_Action_OptionsButton:SetPoint("BOTTOM", "HealBot_Action", "BOTTOM", 0, bpadding);
|
||||
HealBot_Action_OptionsButton:Show();
|
||||
MaxOffsetY = MaxOffsetY + 30;
|
||||
end
|
||||
|
||||
if HealBot_Config.HideAbort == 1 then
|
||||
HealBot_Action_AbortButton:Hide();
|
||||
else
|
||||
local bar = HealBot_Action_HealthBar(HealBot_Action_AbortButton);
|
||||
local denom = 6 - (abortsize / 3)
|
||||
if denom == 0 then denom = 1 end
|
||||
local width = (bwidth - 12) + (OffsetX / denom);
|
||||
|
||||
bar.txt = getglobal(bar:GetName() .. "_text");
|
||||
bar.txt:SetTextColor(sr, sg, sb, sa);
|
||||
bar.txt:SetText(HEALBOT_ACTION_ABORT);
|
||||
HealBot_Action_SetTexture(bar, btexture);
|
||||
bar:SetMinMaxValues(0, 100);
|
||||
bar:SetValue(100);
|
||||
bar:ClearAllPoints();
|
||||
bar:SetHeight(bheight + abortsize);
|
||||
bar:SetWidth(width);
|
||||
bar:SetStatusBarColor(0.1, 0.1, 0.4, 0);
|
||||
MaxOffsetY = MaxOffsetY + 30 + abortsize;
|
||||
HealBot_Action_AbortButton:ClearAllPoints();
|
||||
HealBot_Action_AbortButton:SetWidth(width)
|
||||
HealBot_Action_AbortButton:SetHeight(bheight + abortsize);
|
||||
if HealBot_Config.HideOptions == 1 then
|
||||
HealBot_Action_AbortButton:SetPoint("BOTTOM", "HealBot_Action", "BOTTOM", 0, bpadding);
|
||||
bar:SetPoint("BOTTOM", "HealBot_Action", "BOTTOM", 0, bpadding);
|
||||
else
|
||||
HealBot_Action_AbortButton:SetPoint("BOTTOM", "HealBot_Action_OptionsButton", "TOP", 0, 10);
|
||||
bar:SetPoint("BOTTOM", "HealBot_Action_OptionsButton", "TOP", 0, 10);
|
||||
end
|
||||
HealBot_Action_AbortButton:Show();
|
||||
end
|
||||
|
||||
HealBot_Action_SetHeightWidth(OffsetX, MaxOffsetY + bpadding, bwidth);
|
||||
if HealBot_Config.HideParty == 1 and HidePartyFrame then
|
||||
HidePartyFrame();
|
||||
end
|
||||
end
|
||||
HealBot_Action_RefreshButtons();
|
||||
HealBot_Action_ShowFrame();
|
||||
end
|
||||
|
||||
function HealBot_Action_ShowFrame()
|
||||
if HealBot_Config.ActionVisible == 1 then
|
||||
if HealBot_Config.HideSolo == 1 and GetNumPartyMembers() == 0 and GetNumRaidMembers() == 0 then
|
||||
HealBot_Action.ProgrammaticHide = true;
|
||||
HealBot_Action:Hide();
|
||||
HealBot_Action.ProgrammaticHide = nil;
|
||||
else
|
||||
HealBot_Action:Show();
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function HealBot_Action_Reset()
|
||||
HealBot_Action:ClearAllPoints();
|
||||
HealBot_Action:SetPoint("TOP", "MinimapCluster", "BOTTOM", 7, 10);
|
||||
HealBot_Action_HealTarget = {};
|
||||
HealBot_Action_PartyChanged();
|
||||
end
|
||||
|
||||
function HealBot_Action_Refresh(unit)
|
||||
if (UnitIsDeadOrGhost("player")) or (UnitOnTaxi("player")) then
|
||||
if HealBot_Config.AutoClose == 1 and HealBot_Config.ActionVisible ~= 0 then
|
||||
HealBot_Action.ProgrammaticHide = true;
|
||||
HealBot_Action:Hide();
|
||||
HealBot_Action.ProgrammaticHide = nil;
|
||||
else
|
||||
HealBot_Action_RefreshButtons(unit);
|
||||
end
|
||||
return;
|
||||
end
|
||||
HealBot_Action_RefreshButtons(unit);
|
||||
if not HealBot_IsFighting then
|
||||
if (HealBot_Action_MustHealSome()) then
|
||||
HealBot_Action_ShowFrame();
|
||||
elseif HealBot_AbortButton == 0 then
|
||||
HealBot_Action_ShowFrame();
|
||||
elseif (not HealBot_Action_ShouldHealSome()) then
|
||||
if HealBot_AbortButton == 1 and HealBot_Config.AutoClose == 1 and HealBot_Config.ActionVisible ~= 0 then
|
||||
HealBot_Action.ProgrammaticHide = true;
|
||||
HealBot_Action:Hide();
|
||||
HealBot_Action.ProgrammaticHide = nil;
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,270 @@
|
||||
-- HealBot_View_Tooltip.lua
|
||||
-- Handles rendering of unit and spell tooltips in the HealBot UI
|
||||
|
||||
HealBot_Action_TooltipUnit = nil
|
||||
|
||||
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
|
||||
|
||||
function HealBot_Action_RefreshTooltip(unit)
|
||||
if HealBot_Config.ShowTooltip==0 then return end
|
||||
if not unit then unit = HealBot_Action_TooltipUnit end
|
||||
if not unit then return end;
|
||||
|
||||
local hlth=UnitHealth(unit);
|
||||
local maxhlth=UnitHealthMax(unit);
|
||||
|
||||
local spellLeft = HealBot_GetHealSpell(unit,HealBot_Action_SpellPattern("Left"));
|
||||
local spellMiddle = HealBot_GetHealSpell(unit,HealBot_Action_SpellPattern("Middle"));
|
||||
local spellRight = HealBot_GetHealSpell(unit,HealBot_Action_SpellPattern("Right"));
|
||||
local spellButton4 = HealBot_GetHealSpell(unit,HealBot_Action_SpellPattern("Button4"));
|
||||
local spellButton5 = HealBot_GetHealSpell(unit,HealBot_Action_SpellPattern("Button5"));
|
||||
local linenum = 1
|
||||
|
||||
HealBot_Action_Tooltip_ClearLines();
|
||||
|
||||
if HealBot_Config.Tooltip_ShowTarget==1 then
|
||||
if UnitName(unit) then
|
||||
HealBot_Action_Tooltip_SetLineLeft(UnitName(unit),0,1,0,linenum)
|
||||
if hlth and maxhlth then
|
||||
local r,g,b,a=HealBot_HealthColor(unit,hlth,maxhlth);
|
||||
HealBot_Action_Tooltip_SetLineRight(hlth.."/"..maxhlth.." (-"..maxhlth-hlth..")",r,g,b,linenum)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if HealBot_Config.Tooltip_ShowSpellDetail==1 then
|
||||
if spellLeft then
|
||||
linenum=linenum+2
|
||||
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);
|
||||
end
|
||||
if spellMiddle then
|
||||
linenum=linenum+2
|
||||
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);
|
||||
end
|
||||
if spellRight then
|
||||
linenum=linenum+2
|
||||
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);
|
||||
end
|
||||
if spellButton4 then
|
||||
linenum=linenum+2
|
||||
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);
|
||||
end
|
||||
if spellButton5 then
|
||||
linenum=linenum+2
|
||||
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);
|
||||
end
|
||||
else
|
||||
if spellLeft then
|
||||
linenum=linenum+1
|
||||
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)
|
||||
end
|
||||
if spellMiddle then
|
||||
linenum=linenum+1
|
||||
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)
|
||||
end
|
||||
if spellRight then
|
||||
linenum=linenum+1
|
||||
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)
|
||||
end
|
||||
if spellButton4 then
|
||||
linenum=linenum+1
|
||||
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)
|
||||
end
|
||||
if spellButton5 then
|
||||
linenum=linenum+1
|
||||
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)
|
||||
end
|
||||
end
|
||||
if HealBot_Config.Tooltip_Recommend==1 then
|
||||
local Instant_check=0;
|
||||
if HealBot_Config.Tooltip_ShowSpellDetail==1 then linenum=linenum+1; end
|
||||
linenum=linenum+1
|
||||
HealBot_Action_Tooltip_SetLineLeft(HEALBOT_TOOLTIP_RECOMMENDTEXT,0.8,0.8,0,linenum)
|
||||
Instant_check=0;
|
||||
Instant_check,linenum=HealBot_Action_Tooltip_CheckForInstant(unit,spellLeft,"upd",linenum,Instant_check);
|
||||
Instant_check,linenum=HealBot_Action_Tooltip_CheckForInstant(unit,spellMiddle,"upd",linenum,Instant_check);
|
||||
Instant_check,linenum=HealBot_Action_Tooltip_CheckForInstant(unit,spellRight,"upd",linenum,Instant_check);
|
||||
Instant_check,linenum=HealBot_Action_Tooltip_CheckForInstant(unit,spellButton4,"upd",linenum,Instant_check);
|
||||
Instant_check,linenum=HealBot_Action_Tooltip_CheckForInstant(unit,spellButton5,"upd",linenum,Instant_check);
|
||||
if Instant_check==0 then
|
||||
linenum=linenum+1
|
||||
HealBot_Action_Tooltip_SetLineLeft(" None",0.4,0.4,0.4,linenum)
|
||||
end
|
||||
end
|
||||
|
||||
local height = 20
|
||||
local width = 0
|
||||
for i = 1, linenum do
|
||||
local txtL = getglobal("HealBot_TooltipTextL" .. i)
|
||||
local txtR = getglobal("HealBot_TooltipTextR" .. i)
|
||||
height = height + txtL:GetHeight() + 2
|
||||
if (txtL:GetWidth() + txtR:GetWidth() + 25 > width) then
|
||||
width = txtL:GetWidth() + txtR:GetWidth() + 25
|
||||
end
|
||||
end
|
||||
HealBot_Tooltip:SetWidth(width)
|
||||
HealBot_Tooltip:SetHeight(height)
|
||||
HealBot_Tooltip:ClearAllPoints();
|
||||
if HealBot_Config.TooltipPos>1 then
|
||||
if HealBot_Config.TooltipPos==2 then
|
||||
HealBot_Tooltip:SetPoint("TOPRIGHT","HealBot_Action","TOPLEFT",0,0);
|
||||
elseif HealBot_Config.TooltipPos==3 then
|
||||
HealBot_Tooltip:SetPoint("TOPLEFT","HealBot_Action","RIGHT",0,0);
|
||||
elseif HealBot_Config.TooltipPos==4 then
|
||||
HealBot_Tooltip:SetPoint("BOTTOM","HealBot_Action","TOP",0,0);
|
||||
else
|
||||
HealBot_Tooltip:SetPoint("TOP","HealBot_Action","BOTTOM",0,0);
|
||||
end
|
||||
else
|
||||
HealBot_Tooltip:SetPoint("BOTTOMRIGHT","WorldFrame","BOTTOMRIGHT",-105,105);
|
||||
end
|
||||
HealBot_Tooltip:Show();
|
||||
end
|
||||
|
||||
function HealBot_Action_Tooltip_SpellInfo(spell,linenum)
|
||||
local text
|
||||
if HealBot_Spells[spell] then
|
||||
if HealBot_Spells[spell].HealsDur>0 then
|
||||
linenum=linenum+1
|
||||
HealBot_Action_Tooltip_SetLineLeft(HEALBOT_WORDS_CAST..": "..HealBot_Spells[spell].CastTime.." "..HEALBOT_WORDS_SEC..".",0.8,0.8,0.8,linenum)
|
||||
HealBot_Action_Tooltip_SetLineRight("Mana: "..HealBot_Spells[spell].Mana,0.5,0.5,1,linenum)
|
||||
if HealBot_Spells[spell].HealsMax>0 then
|
||||
local Heals = HEALBOT_HEAL.." "
|
||||
if HealBot_Spells[spell].Shield then
|
||||
Heals = HEALBOT_TOOLTIP_SHIELD.." "
|
||||
end
|
||||
if HealBot_Spells[spell].HealsMin<HealBot_Spells[spell].HealsMax then
|
||||
text=Heals..format("%d", HealBot_Spells[spell].HealsMin + HealBot_Spells[spell].RealHealing) .." "..HEALBOT_WORDS_TO.." "..format("%d",HealBot_Spells[spell].HealsMax + HealBot_Spells[spell].RealHealing)
|
||||
else
|
||||
text=Heals..format("%d", HealBot_Spells[spell].HealsMax + HealBot_Spells[spell].RealHealing)
|
||||
end
|
||||
linenum=linenum+1
|
||||
HealBot_Action_Tooltip_SetLineLeft(text,1,1,1,linenum)
|
||||
end
|
||||
if HealBot_Spells[spell].HealsExt>0 then
|
||||
text=HEALBOT_HEAL.." "..HealBot_Spells[spell].HealsDur.." "..HEALBOT_WORDS_OVER.." "..HealBot_Spells[spell].Duration-HealBot_Spells[spell].CastTime.." sec."
|
||||
linenum=linenum+1
|
||||
HealBot_Action_Tooltip_SetLineLeft(text,1,1,1,linenum)
|
||||
end
|
||||
if not HealBot_Spells[spell].Shield then
|
||||
text=HEALBOT_TOOLTIP_ITEMBONUS.." +"..HealBot_GetBonus().." | "..HEALBOT_TOOLTIP_ACTUALBONUS.." +"..HealBot_Spells[spell].RealHealing.." "
|
||||
linenum=linenum+1
|
||||
HealBot_Action_Tooltip_SetLineLeft(text,0.8,0.8,0.8,linenum)
|
||||
end
|
||||
end
|
||||
end
|
||||
return linenum
|
||||
end
|
||||
|
||||
function HealBot_Action_Tooltip_SpellSummary(spell)
|
||||
local ret_val = " ";
|
||||
if HealBot_Spells[spell] then
|
||||
if HealBot_Spells[spell].HealsDur and HealBot_Spells[spell].HealsDur>0 then
|
||||
if HealBot_Spells[spell].HealsMax and HealBot_Spells[spell].HealsMax>0 then
|
||||
local Heals = " "..HEALBOT_HEAL.." ";
|
||||
if HealBot_Spells[spell].Shield then
|
||||
Heals = " "..HEALBOT_TOOLTIP_SHIELD.." ";
|
||||
end
|
||||
if (HealBot_Spells[spell].HealsMin or 0)<(HealBot_Spells[spell].HealsMax or 0) then
|
||||
ret_val=ret_val..Heals..format("%d", (((HealBot_Spells[spell].HealsMin or 0)+(HealBot_Spells[spell].HealsMax or 0))/2) + (HealBot_Spells[spell].RealHealing or 0));
|
||||
else
|
||||
ret_val=ret_val..Heals..format("%d", (HealBot_Spells[spell].HealsMax or 0) + (HealBot_Spells[spell].RealHealing or 0));
|
||||
end
|
||||
end
|
||||
if HealBot_Spells[spell].HealsExt and HealBot_Spells[spell].HealsExt>0 then
|
||||
ret_val=ret_val.." HoT "..HealBot_Spells[spell].HealsDur;
|
||||
end
|
||||
if HealBot_Spells[spell].Mana then
|
||||
ret_val=ret_val.." "..HEALBOT_WORDS_FOR.." "..HealBot_Spells[spell].Mana.." Mana";
|
||||
end
|
||||
end
|
||||
end
|
||||
if string.len(ret_val)<5 then ret_val = " - "..spell; end
|
||||
return ret_val
|
||||
end
|
||||
|
||||
function HealBot_Action_Tooltip_CheckForInstant(unit,spell,upd,linenum,check)
|
||||
if HealBot_Spells[spell] then
|
||||
if HealBot_Spells[spell].CastTime == 0 then
|
||||
if HealBot_UnitAffected(unit,HealBot_Spells[spell].Buff) then return check,linenum end;
|
||||
if HealBot_UnitAffected(unit,HealBot_Spells[spell].Debuff) then return check,linenum end;
|
||||
if upd=="upd" then
|
||||
linenum=linenum+1
|
||||
HealBot_Action_Tooltip_SetLineLeft(" "..spell,1,1,1,linenum)
|
||||
end
|
||||
else
|
||||
return check,linenum;
|
||||
end
|
||||
else
|
||||
return check,linenum
|
||||
end
|
||||
return check+1,linenum;
|
||||
end
|
||||
|
||||
function HealBot_Action_Tooltip_SetLineLeft(Text,R,G,B,linenum)
|
||||
local txtL = getglobal("HealBot_TooltipTextL" .. linenum)
|
||||
txtL:SetTextColor(R,G,B)
|
||||
txtL:SetText(Text)
|
||||
txtL:Show()
|
||||
end
|
||||
|
||||
function HealBot_Action_Tooltip_SetLineRight(Text,R,G,B,linenum)
|
||||
local txtR = getglobal("HealBot_TooltipTextR" .. linenum)
|
||||
txtR:SetTextColor(R,G,B)
|
||||
txtR:SetText(Text)
|
||||
txtR:Show()
|
||||
end
|
||||
|
||||
function HealBot_Action_Tooltip_ClearLines()
|
||||
for j=1,30 do
|
||||
local txtL = getglobal("HealBot_TooltipTextL" .. j)
|
||||
local txtR = getglobal("HealBot_TooltipTextR" .. j)
|
||||
txtL:SetText(" ")
|
||||
txtR:SetText(" ")
|
||||
txtL:Hide()
|
||||
txtR:Hide()
|
||||
end
|
||||
end
|
||||
|
||||
function HealBot_Action_ShowTooltip(this)
|
||||
if HealBot_Config.ShowTooltip==0 then return end
|
||||
if not this.unit then return end;
|
||||
if not this:IsEnabled() then return end;
|
||||
|
||||
HealBot_Action_TooltipUnit = this.unit;
|
||||
HealBot_Action_RefreshTooltip(this.unit);
|
||||
end
|
||||
|
||||
function HealBot_Action_HideTooltip(this)
|
||||
if HealBot_Config.ShowTooltip==0 then return end
|
||||
HealBot_Tooltip:Hide();
|
||||
HealBot_Action_TooltipUnit = nil;
|
||||
end
|
||||
@@ -3,6 +3,10 @@ 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.
|
||||
|
||||
> **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.
|
||||
|
||||
### Reporting Errors
|
||||
Major errors will pop up a frame with error information. Take a screenshot and post comments.
|
||||
|
||||
@@ -15,9 +19,104 @@ Default installation path: `C:\Program Files\World of Warcraft\Interface\AddOns\
|
||||
* `/hb options` - Toggles the HealBot options panel on and off
|
||||
* `/hb reset` - Resets the contents of the main HealBot panel
|
||||
|
||||
### Option Changes from the original HealBot Continues
|
||||
### Key Features & Current Functionality
|
||||
* **MVC & Observer Architecture:** High-performance, reactive engine that updates frames dynamically on state changes, drastically reducing CPU and memory overhead. Features memory recycling pool and event loop decoupling for zero-stutter combat.
|
||||
* **Native Hovercasting (Mouseover):** Cast configured spells on hovered unit frames using keybinds directly from your action bars, without losing your current target. (Toggleable in Options -> General).
|
||||
* **Macro, Item, & Script Bindings:** Bind named macros, inventory items, and scripts directly to mouse clicks. Supports implicit `@mouseover` targeting natively.
|
||||
* **Zero-Latency Self-Heals:** Incoming heals for the local player process instantly with zero latency, independent of network lag.
|
||||
* **Talent-Based Calculations & Equipment Bonus:** Dynamic spell healing calculations for Druid, Priest, and Paladin based on talents, and automatically scans equipped gear to scale healing predictions - currently only TurtleWoW patch 1.18 supported.
|
||||
* **Modifier-Aware Tooltips:** Tooltips dynamically update to show exact bound actions (Shift/Ctrl/Alt) and required mana costs (turns red if insufficient mana).
|
||||
* **Blizzard Party Frame Toggle:** Toggle to automatically hide Blizzard's default party frames when in a group in favor of HealBot's layouts.
|
||||
* **HoT & Buff Tracking:** Intelligently track active HoTs and buffs directly on the grid frames with custom icons (e.g., Renew, Rejuvenation, Regrowth, Fear Ward).
|
||||
* **Mana Bars for Healers:** Enable and position mini-mana status bars next to unit frames, toggleable to display for healer classes only or all classes.
|
||||
* **Curse & Debuff Warning (CDC):** Dynamic visual and audio alerts for cleanable debuffs. Customizable colors based on debuff type (Curse, Poison, Disease, Magic).
|
||||
* **Pet & Familiar Frames:** Dedicated, toggleable frames for tracking and healing player pets.
|
||||
* **Customizable Health Text:** Dynamic unit health display (Name Only, Percentage, Real Health, or Health Deficit).
|
||||
* **Non-Mana Resource Tracking:** Track Rage, Energy, and Focus for non-mana classes.
|
||||
* **Highly Customizable Skins:** Fully configure dimensions (width, height), row spacing, column layouts, custom textures, opacity, class-colored frames, and outline of fonts.
|
||||
|
||||
### To be implemented
|
||||
- **GUID-based frame mapping:** Migrate internal state to use lightweight GUID tracking to resolve bugs when targets switch or duplicate names appear (e.g., enemy mobs, warlock pets).
|
||||
- **Mod Integration Optimization:** Add conditional SuperWoW/UnitXP SP3 integration to reduce GC spikes and improve frame rendering accuracy.
|
||||
|
||||
### 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
|
||||
|
||||
**v1.6.1**
|
||||
* **Hotfix** - With class colours toggled extra frames for player pets were given some classy mint colour.
|
||||
|
||||
**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**
|
||||
* **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".
|
||||
* **OnShow Empty Panel Bug Fix:** Solved the rendering issue where the options panel would load empty initially until another tab was clicked.
|
||||
* **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`.
|
||||
* **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.
|
||||
* **Safety Guards & Crash Prevention:** Added safety guards to `HidePartyFrame` and `ShowPartyFrame` calls to prevent nil-value crashes when solo.
|
||||
* **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.
|
||||
* **CurrentPanel Nil Comparison Fix:** Fixed a startup Lua comparison crash by initializing `HealBot_Options_CurrentPanel` at the top of the main options file.
|
||||
* **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.
|
||||
* **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.
|
||||
* **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.
|
||||
* **Global Scoping & Variable Promotion:** Promoted `CalcEquipBonus`, `HealBot_EquipChangeTimer`, `HealValue`, `InitSpells`, and `Delay_RecalcParty` to global scope in `HealBot.lua` to ensure cross-module visibility.
|
||||
* **CTRA Resurrection Cancel Bug Fix:** Fixed a nil table indexing crash in the CTRA `RESNO` message handler in `HealBot_Controller_Comms.lua`.
|
||||
* **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.
|
||||
* **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.
|
||||
* **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**
|
||||
* **White background fix** Fixed issue where white background would persist while alpha channel got changes.
|
||||
* **Alpha slider** Fixed bug where alpha slider wouldn't apply changes instantly.
|
||||
@@ -39,11 +138,12 @@ Default installation path: `C:\Program Files\World of Warcraft\Interface\AddOns\
|
||||
* **Bug Fix:** Fixed division-by-zero math errors during UI scaling that caused the addon to crash.
|
||||
|
||||
**v1.0**
|
||||
* **Buff tracking** - Added submenu for tracking buffs on element
|
||||
* ***Hot tracking with icons** - Hots and DoTs display on player bars
|
||||
* **Incoming heals use newer protocol**
|
||||
* **Chat functionalities** - modified chat functionalities for spellcast announcements
|
||||
* **Mana Bars** - Mana bars for healers in the grid added togglable from options menu.
|
||||
* **Buff tracking:** Added a submenu for tracking buffs on elements.
|
||||
* **HoT tracking with icons:** HoTs and DoTs display on player bars.
|
||||
* **Incoming heals:** Now using a newer protocol.
|
||||
* **Chat functionalities:** Modified chat functionalities for spellcast announcements.
|
||||
* **Mana Bars:** Mana bars for healers in the grid added, toggleable from the options menu.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user