diff --git a/Bindings.xml b/Bindings.xml
new file mode 100644
index 0000000..f1f8434
--- /dev/null
+++ b/Bindings.xml
@@ -0,0 +1,26 @@
+
+
+ HealBot_TogglePanel(HealBot_Action)
+
+
+ HealBot_HealUnit('player',HealBot_Action_SpellPattern())
+
+
+ HealBot_HealUnit('pet',HealBot_Action_SpellPattern())
+
+
+ HealBot_HealUnit('party1',HealBot_Action_SpellPattern())
+
+
+ HealBot_HealUnit('party2',HealBot_Action_SpellPattern())
+
+
+ HealBot_HealUnit('party3',HealBot_Action_SpellPattern())
+
+
+ HealBot_HealUnit('party4',HealBot_Action_SpellPattern())
+
+
+ HealBot_HealUnit('target',HealBot_Action_SpellPattern())
+
+
diff --git a/HealBot.lua b/HealBot.lua
new file mode 100644
index 0000000..55b0980
--- /dev/null
+++ b/HealBot.lua
@@ -0,0 +1,1581 @@
+--[[
+
+ HealBot Contined
+
+]]
+
+local _scale=0;
+local CalcEquipBonus=false;
+local InitCalcEquipBonus=false;
+local FlagEquipUpdate1=1;
+local FlagEquipUpdate2=1;
+local NeedEquipUpdate=0;
+local HealValue=0;
+local InitSpells=1;
+local DebugDebuff=false;
+local Delay_RecalcParty=0;
+
+
+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_TogglePanel(panel)
+ if (not panel) then return end
+ if ( panel:IsVisible() ) then
+ HideUIPanel(panel);
+ else
+ ShowUIPanel(panel);
+ end
+end
+
+function HealBot_StartMoving(frame)
+ if ( not frame.isMoving ) and ( frame.isLocked ~= 1 ) then
+ frame:StartMoving();
+ frame.isMoving = true;
+ end
+end
+
+function HealBot_StopMoving(frame)
+ if ( frame.isMoving ) then
+ frame:StopMovingOrSizing();
+ frame.isMoving = false;
+ end
+ if HealBot_Config.GrowUpwards==1 then
+ local left,bottom = HealBot_Action:GetLeft(),HealBot_Action:GetBottom();
+ if left and bottom then
+ HealBot_Config.PanelAnchorX=left;
+ HealBot_Config.PanelAnchorY=bottom;
+ end
+-- HealBot_AddDebug("Pos X="..HealBot_Config.PanelAnchorX.." Pos Y="..HealBot_Config.PanelAnchorY)
+ end
+
+end
+
+function HealBot_SlashCmd(cmd)
+ if (cmd=="") then
+ HealBot_TogglePanel(HealBot_Action);
+ return
+ end
+ if (cmd=="options" or cmd=="opt" or cmd=="config" or cmd=="cfg") then
+ HealBot_TogglePanel(HealBot_Options);
+ return
+ end
+
+ if (cmd=="reset" or cmd=="recalc" or cmd=="defaults") then
+ initSpells=2;
+ HealBot_Options_Defaults_OnClick(HealBot_Options_Defaults);
+ return
+ end
+ if (cmd=="ui") then
+ ReloadUI();
+ return;
+ end
+ if (cmd=="init") then
+ HealBot_RegisterThis(this);
+ end
+ if (cmd=="x") then
+ initSpells=2;
+ NeedEquipUpdate=1
+ HealBot_RecalcSpells();
+ return;
+ end
+ if (cmd=="ver") then
+ local text=UnitName("player");
+ HealBot_SendAddonMessage( "HealBot", ">> RequestVersion <<=>> "..text.." <<=>> nil <<" );
+ return;
+ end
+ if (cmd=="chan") then
+ HealBot_AddDebug( "Channel active" );
+ return;
+ end
+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_TargetName()
+ if UnitIsEnemy("target","player") then return nil end
+-- if not UnitPlayerControlled("target") then return nil end
+ if (UnitIsPlayer("target")) then
+ if UnitIsUnit("target","player") then return "player" end
+ if (UnitInParty("target")) then
+ for i=1,4 do
+ if UnitIsUnit("target","party"..i) then return "party"..i end
+ end
+ end
+ if (UnitInRaid("target")) then
+ for i=1,40 do
+ if UnitIsUnit("target","raid"..i) then return "raid"..i end
+ end
+ end
+ else
+ if UnitIsUnit("target","pet") then return "pet" end
+ if (UnitInParty("player")) then
+ for i=1,4 do
+ if UnitIsUnit("target","partypet"..i) then return "partypet"..i end
+ end
+ end
+ if (UnitInRaid("player")) then
+ for i=1,40 do
+ if UnitIsUnit("target","raidpet"..i) then return "raidpet"..i end
+ end
+ end
+ end
+ return nil
+end
+
+
+
+function HealBot_PackBagSlot(bag,slot)
+ return bag*100+slot;
+end
+
+function HealBot_UnpackBagSlot(bagslot)
+ return math.floor(bagslot/100),math.mod(bagslot,100);
+end
+
+function HealBot_GetItemName(bag,slot)
+ local link = GetContainerItemLink(bag,slot);
+ if not link then return nil end;
+ local _,_,item = string.find(link,"%[(.*)%]");
+ local _,count = GetContainerItemInfo(bag,slot);
+ return item,count;
+end
+
+function HealBot_GetBagSlot(item)
+ local BagSlot,BestCount;
+ for bag=0,NUM_BAG_FRAMES do
+ for slot=1,GetContainerNumSlots(bag) do
+ local bagitem,count = HealBot_GetItemName(bag,slot);
+ if (item==bagitem) then
+ if not BestCount or BestCount>count then
+ BagSlot = HealBot_PackBagSlot(bag,slot);
+ BestCount = count;
+ end
+ end
+ end
+ end
+ return BagSlot;
+end
+
+function HealBot_UseItem(item)
+ local bagslot = HealBot_GetBagSlot(item);
+ if not bagslot then return end;
+ local bag,slot = HealBot_UnpackBagSlot(bagslot);
+ local Link = GetContainerItemLink(bag,slot);
+ UseContainerItem(bag,slot);
+end
+
+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
+ do break end
+ 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
+
+HealBot_CastingSpell = nil;
+HealBot_CastingTarget = nil;
+
+function HealBot_StartCasting(spell,target,ttype)
+ HealBot_CastSpellByName(spell);
+ HealBot_CastingSpell = spell;
+ HealBot_CastingTarget = target;
+ if ( SpellCanTargetUnit(target) ) then
+ SpellTargetUnit(target);
+ ttype="fired";
+ elseif SpellIsTargeting() then
+ SpellTargetUnit(target);
+ SpellStopTargeting()
+ elseif ttype=="direct" then
+ if ( CheckInteractDistance(target, 4) ) then
+ ttype="fired";
+ 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)
+ end
+ for i = 1, 5 do
+ local msgConf = HealBot_Config.ChatMessages[i]
+ if msgConf and msgConf.Spell == baseSpell and msgConf.Channel ~= "None" 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
+ if ttype=="fired" and HealBot_Spells[spell] then
+-- if not HealBot_Spells[spell].CastTime then
+-- if HealBot_Spells[spell].id then
+-- HealBot_InitGetSpellData(spell, HealBot_Spells[spell].id, HealBot_UnitClass("player"))
+-- HealBot_AddDebug("Requested init spell data for "..spell)
+-- end
+-- if not HealBot_Spells[spell].CastTime then
+-- HealBot_Spells[spell].CastTime=0
+-- HealBot_AddDebug("Unable to init spell data for "..spell)
+-- InitSpells=2;
+-- return
+-- end
+-- end
+ if HealBot_Spells[spell].CastTime > 1 then
+ HealValue=HealBot_Spells[spell].HealsDur;
+ HealBot_SendAddonMessage( HEALBOT_ADDON_ID, ">> "..UnitName(target).." <<=>> "..HealValue.." << " );
+ end
+ end
+end
+
+function HealBot_StopCasting()
+ if HealBot_CastingTarget then
+ if HealBot_HealsIn[UnitName(HealBot_CastingTarget)] then
+ if HealValue > 0 then
+ HealBot_SendAddonMessage( HEALBOT_ADDON_ID, ">> "..UnitName(HealBot_CastingTarget).." <<=>> "..0-HealValue.." << " );
+ HealValue=0;
+ end
+ 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
+
+
+local HealBot_Health60 = {
+ ["DRUID"] = 3500,
+ ["MAGE"] = 2500,
+ ["HUNTER"] = 3500,
+ ["PALADIN"] = 4000,
+ ["PRIEST"] = 2500,
+ ["ROGUE"] = 3500,
+ ["SHAMAN"] = 3800,
+ ["WARLOCK"] = 3500,
+ ["WARRIOR"] = 5000,
+}
+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;
+ bar.txt = getglobal(bar:GetName().."_text");
+
+ 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)
+ local old;
+ local ttype="other";
+ if (not spell or not target or not UnitName(target)) then
+ return;
+ end
+ if (UnitCanAttack("player","target")) then
+ old = "enemy";
+ else
+ old = UnitName("target");
+ if UnitName("target")~=UnitName(target) then
+ ClearTarget();
+ else
+ ttype="direct";
+ end
+ end
+ HealBot_StartCasting(spell,target,ttype);
+ if (old=="enemy") then
+ TargetLastEnemy();
+ elseif (old) then
+ TargetByName(old);
+ else
+ ClearTarget();
+ end
+end
+
+function HealBot_UnitClass(unit)
+ local playerClass, englishClass = UnitClass(unit);
+ return englishClass;
+end
+
+-- TBD: use the event UNIT_AURA to keep track instead of querying each time
+
+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
+ do break end
+ 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
+ do break end
+ end
+ if debuff==effect then
+ return debuff
+ end
+ i = i + 1
+ end
+ return nil;
+end
+-- safer to use GameTooltip:SetUnitBuff and read the lines in the tooltip ...
+-- maybe make an additional GameTooltip frame if possible ?
+
+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)
+ HealBot_Spells[spell].HealsDur = floor((HealBot_Spells[spell].HealsCast+HealBot_Spells[spell].HealsExt) + HealBot_Spells[spell].RealHealing);
+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 InitSpells>0 then NeedEquipUpdate=1; return; end
+
+ HealBot_Heals = { player = {}, pet = {}, party = {} };
+
+ table.foreach(HealBot_CurrentSpells, function (index,spell)
+ if (HealBot_Spells[spell]) then
+ if 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_SetOldDefaults(spell);
+-- HealBot_Report_Error( "================================" );
+-- HealBot_Report_Error( "ERROR: HealBot_Spells[spell].CastTime == nil" );
+-- HealBot_Report_Error( "ERROR: spell = "..spell );
+ 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 = 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
+
+ table.foreach(HealBot_Heals, function (key,val)
+ table.foreachi(val, function (i,val)
+ end);
+ end);
+ if CalcEquipBonus then
+ HealBot_AddDebug("...Done Equip Bonus:"..RealHealing);
+ end
+ CalcEquipBonus=false;
+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 and not string.find(icon,"HumanoidForm") then return i; end
+ end
+ end
+ return nil;
+end
+
+function HealBot_CanCastSpell(spell,unit)
+ local this = HealBot_Spells[spell];
+ if this.Mana>UnitMana("player") then return false end;
+ 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 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_GetShapeshiftForm() then return nil end;
+ end
+ local spell = HealBot_GetSpellName(HealBot_GetSpellId(pattern))
+ local range=40;
+ if HealBot_Spells[spell] then
+ if not HealBot_CanCastSpell(spell,unit) then return nil end;
+ range=HealBot_Spells[spell].range;
+ end
+ if HealBot_Range_Check(unit, range)==0 then return nil end;
+ return spell;
+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();
+ HealBot_Action_RefreshButtons();
+end
+
+function HealBot_RecalcSpells()
+ HealBot_FindHealSpells();
+ HealBot_RecalcParty();
+end
+
+--------------------------------------------------------------------------------------------------
+-- OnFoo functions
+--------------------------------------------------------------------------------------------------
+
+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);
+end
+
+function HealBot_RegisterThis(this)
+
+end
+
+local HealBot_Timer1,HealsIn_Timer = 0,0;
+function HealBot_OnUpdate(this,arg1)
+ 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
+ HealBot_HealsIn={};
+ HealBot_Healers={};
+ HealsIn_Timer=0;
+ InitCalcEquipBonus=true
+ end
+ if FlagEquipUpdate1>0 and FlagEquipUpdate2>0 then
+ FlagEquipUpdate1=0;
+ FlagEquipUpdate2=0;
+ NeedEquipUpdate=1;
+ elseif FlagEquipUpdate1>0 then
+ FlagEquipUpdate1=FlagEquipUpdate1+1;
+ if FlagEquipUpdate1>1 then
+ FlagEquipUpdate1=0;
+ end
+ elseif FlagEquipUpdate2>0 then
+ FlagEquipUpdate2=FlagEquipUpdate2+1;
+ if FlagEquipUpdate2>1 then
+ FlagEquipUpdate2=0;
+ end
+ end
+ if NeedEquipUpdate>0 and InitCalcEquipBonus then
+ NeedEquipUpdate=NeedEquipUpdate+1;
+ if NeedEquipUpdate>1 then
+ HealBot_BonusScanner:ScanEquipment()
+ CalcEquipBonus=true;
+ InitCalcEquipBonus=false;
+ NeedEquipUpdate=0;
+ HealBot_RecalcSpells();
+ end
+ end
+ if InitSpells>1 then
+ InitSpells=InitSpells+1;
+ if InitSpells>2 then
+ local cnt=HealBot_InitSpells();
+ InitSpells=0;
+ InitCalcEquipBonus=true;
+ end
+ end
+ if Delay_RecalcParty>0 then
+ Delay_RecalcParty=Delay_RecalcParty+1
+ if Delay_RecalcParty>1 then
+ Delay_RecalcParty=0;
+ HealBot_RecalcParty();
+ end
+ end
+ else
+ HealsIn_Timer=0;
+ end
+ HealBot_Timer1 = 0;
+ HealBot_SpamCnt = 0;
+ end
+end
+
+function HealBot_OnEvent(this, event, arg1,arg2,arg3,arg4)
+ if (event=="CHAT_MSG_ADDON") then
+ HealBot_OnEvent_AddonMsg(this,arg1,arg2,arg3,arg4);
+ elseif (event=="UNIT_HEALTH") then
+ HealBot_OnEvent_UnitHealth(this,arg1);
+ elseif (event=="UNIT_MANA" or event=="UNIT_RAGE" or event=="UNIT_ENERGY" or event=="UNIT_DISPLAYPOWER") then
+ if (arg1=="player") then HealBot_RecalcHeals(); end
+ HealBot_Action_RefreshButtons(arg1);
+ elseif (event=="UNIT_AURA") then
+ HealBot_OnEvent_UnitAura(this,arg1);
+ elseif (event=="SPELLCAST_START") then
+ HealBot_OnEvent_SpellcastStart(this,arg1,arg2);
+ elseif (event=="SPELLCAST_STOP") then
+ HealBot_OnEvent_SpellcastStop(this);
+ elseif (event=="SPELLCAST_INTERRUPTED") then
+ HealBot_OnEvent_SpellcastStop(this);
+ elseif (event=="SPELLCAST_FAILED") then
+ HealBot_OnEvent_SpellcastStop(this);
+ elseif (event=="PLAYER_REGEN_DISABLED") then
+ HealBot_OnEvent_PlayerRegenDisabled(this);
+ elseif (event=="PLAYER_REGEN_ENABLED") then
+ HealBot_OnEvent_PlayerRegenEnabled(this);
+ elseif (event=="BAG_UPDATE_COOLDOWN") then
+ HealBot_OnEvent_BagUpdateCooldown(this,arg1);
+ elseif (event=="BAG_UPDATE") then
+ HealBot_OnEvent_BagUpdate(this,arg1);
+ elseif (event=="PARTY_MEMBER_DISABLE") then
+ HealBot_OnEvent_PartyMemberDisable(this,arg1);
+ elseif (event=="PARTY_MEMBER_ENABLE") then
+ HealBot_OnEvent_PartyMemberEnable(this,arg1);
+ elseif (event=="CHAT_MSG_SYSTEM") then
+ HealBot_OnEvent_SystemMsg(this,arg1);
+ elseif (event=="PARTY_MEMBERS_CHANGED") then
+ HealBot_OnEvent_PartyMembersChanged(this);
+ elseif (event=="PLAYER_TARGET_CHANGED") then
+ HealBot_OnEvent_PlayerTargetChanged(this);
+ elseif (event=="ZONE_CHANGED_NEW_AREA") then
+ HealBot_OnEvent_ZoneChanged(this);
+ elseif (event=="UPDATE_INVENTORY_ALERTS") then
+ HealBot_OnEvent_PlayerEquipmentChanged(this);
+ elseif (event=="UNIT_INVENTORY_CHANGED") then
+ HealBot_OnEvent_PlayerEquipmentChanged2(this,arg1);
+ elseif (event=="PET_BAR_SHOWGRID") then
+ HealBot_OnEvent_PartyMembersChanged(this);
+ elseif (event=="PET_BAR_HIDEGRID") then
+ HealBot_OnEvent_PartyMembersChanged(this);
+ elseif (event=="SPELLS_CHANGED") then
+ HealBot_OnEvent_SpellsChanged(this,arg1);
+ elseif (event=="PLAYER_ENTERING_WORLD") then
+ HealBot_OnEvent_PlayerEnteringWorld(this);
+-- elseif (event=="CHARACTER_POINTS_CHANGED") then
+-- HealBot_OnEvent_TalentsChanged(this, arg1);
+ elseif (event=="VARIABLES_LOADED") then
+ HealBot_OnEvent_VariablesLoaded(this);
+ 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
+ end);
+
+ HealBot_InitData();
+
+ if class=="PRIEST" or class=="DRUID" or class=="PALADIN" or class=="SHAMAN" then
+
+ HealBot_BonusScanner:ScanEquipment();
+
+ if HealBot_Config.ActionVisible==1 then HealBot_Action:Show() end
+
+ 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("PET_BAR_SHOWGRID");
+ this:RegisterEvent("PET_BAR_HIDEGRID");
+ 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("BAG_UPDATE");
+ this:RegisterEvent("BAG_UPDATE_COOLDOWN");
+ this:RegisterEvent("UNIT_AURA");
+-- this:RegisterEvent("CHARACTER_POINTS_CHANGED");
+ 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");
+ InitSpells=2;
+ 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 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 ( strsub(inc_msg, 1, 3) == "RES" ) then
+ if ( inc_msg == "RESNO" ) then
+ HealBot_AddDebug(sender_id.." Stopped ressing");
+ if HealBot_Ressing[unitname] then HealBot_Ressing[unitname] = nil; 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;
+ end
+ end
+ HealBot_RecalcHeals(HealBot_FindUnitID(unitname));
+ end
+ end
+end
+
+
+function HealBot_OnEvent_UnitHealth(this,unit)
+ if (not HealBot_Heals[unit]) then return end
+ HealBot_CheckCasting(unit);
+ HealBot_RecalcHeals(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_AddDebug("HB: ZoneChange");
+ _scale = 0;
+ Delay_RecalcParty=1;
+end
+
+HealBot_MissingBuffs = {}
+
+function HealBot_CheckShamanWeaponBuff(spellName)
+ local hasMainHandEnchant, _, _, hasOffHandEnchant = GetWeaponEnchantInfo()
+ if not (hasMainHandEnchant or hasOffHandEnchant) then return false end
+
+ local baseName = string.gsub(spellName, " Weapon", "")
+
+ HealBot_ScanTooltip:SetOwner(UIParent, "ANCHOR_NONE")
+
+ if hasMainHandEnchant then
+ HealBot_ScanTooltip:ClearLines()
+ HealBot_ScanTooltip:SetInventoryItem("player", 16)
+ local numLines = HealBot_ScanTooltip:NumLines()
+ for i = 1, numLines do
+ local line = getglobal("HealBot_ScanTooltipTextLeft"..i)
+ if line and line:GetText() then
+ if string.find(line:GetText(), baseName) then
+ HealBot_ScanTooltip:Hide()
+ return true
+ end
+ end
+ end
+ end
+
+ if hasOffHandEnchant then
+ HealBot_ScanTooltip:ClearLines()
+ HealBot_ScanTooltip:SetInventoryItem("player", 17)
+ local numLines = HealBot_ScanTooltip:NumLines()
+ for i = 1, numLines do
+ local line = getglobal("HealBot_ScanTooltipTextLeft"..i)
+ if line and line:GetText() then
+ if string.find(line:GetText(), baseName) then
+ HealBot_ScanTooltip:Hide()
+ return true
+ end
+ end
+ end
+ end
+
+ HealBot_ScanTooltip:Hide()
+ 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 = {}
+ 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 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 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
+
+function HealBot_OnEvent_UnitAura(this,unit)
+ local DebuffType;
+
+ if HealBot_Heals[unit] and unit~="target" then
+ HealBot_UnitIcons[unit] = {}
+ local iconCount = 0
+
+ local HealBot_TrackedHoTs = {
+ ["Interface\\Icons\\Spell_Holy_Renew"] = true,
+ ["Interface\\Icons\\Spell_Nature_Rejuvenation"] = true,
+ ["Interface\\Icons\\Spell_Nature_ResistNature"] = true,
+ ["Interface\\Icons\\Spell_Holy_PowerWordShield"] = true,
+ ["Interface\\Icons\\Spell_Holy_SealOfProtection"] = true,
+ }
+
+ 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]=="YES" then
+ HealBot_UnitDebuff[unit]=debuff_type
+ DebuffType=debuff_type;
+ if HealBot_DebuffPriority[debuff_type] then
+ do break end
+ end
+ end
+ i = i + 1;
+ else
+ if i==1 then HealBot_UnitDebuff[unit] = nil; end
+ do break end
+ 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
+
+ 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
+
+function HealBot_OnEvent_PlayerRegenDisabled(this)
+ HealBot_RecalcParty();
+ if (UnitIsDeadOrGhost("player")) or (UnitOnTaxi("player")) then
+ if HealBot_Config.AutoClose==1 and HealBot_Config.ActionVisible~=0 then HealBot_Action:Hide(); end;
+ else
+ HealBot_Action:Show();
+ HealBot_IsFighting = true;
+ end
+-- HealBot_RecalcHeals();
+end
+
+function HealBot_OnEvent_PlayerRegenEnabled(this)
+ HealBot_IsFighting = false;
+ Delay_RecalcParty=1;
+end
+
+function HealBot_OnEvent_PlayerTargetChanged(this)
+ HealBot_RecalcParty();
+end
+
+function HealBot_OnEvent_PartyMembersChanged(this)
+ 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, HB_HASLEFTRAID);
+ if not deserter then
+ local tmpTest, tmpTest, deserter = string.find(msg, HB_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==HB_YOULEAVETHEGROUP or msg==HB_YOULEAVETHERAID then
+ Delay_RecalcParty=1;
+ else
+ -- find other messges
+ end
+ end
+end
+
+function HealBot_OnEvent_PartyMemberEnable(this,unit)
+ HealBot_RecalcHeals();
+end
+
+function HealBot_OnEvent_PlayerEquipmentChanged(this)
+ FlagEquipUpdate1=1;
+end
+
+function HealBot_OnEvent_PlayerEquipmentChanged2(this,unit)
+ if unit=="player" then
+ FlagEquipUpdate2=1;
+ end
+end
+
+function HealBot_OnEvent_SpellsChanged(this, arg1)
+ if arg1 then return; end
+ HealBot_AddDebug("HB: SpellsChanged");
+ InitSpells=2;
+end
+
+function HealBot_OnEvent_TalentsChanged(this, arg1)
+ HealBot_AddDebug("HB: TalentsChanged");
+end
+
+function HealBot_OnEvent_BagUpdate(this,bag)
+ if FlagEquipUpdate1==0 and FlagEquipUpdate2==0 then
+ HealBot_RecalcSpells();
+ end
+end
+
+function HealBot_OnEvent_BagUpdateCooldown(this,bag)
+ if not bag then
+ bag = "undef"
+ elseif FlagEquipUpdate1==0 and FlagEquipUpdate2==0 then
+ HealBot_RecalcSpells();
+ end
+end
+
+function HealBot_OnEvent_PlayerEnteringWorld(this)
+ HealBot_IsFighting = false;
+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_AddDebug("I am ressing "..UnitName("Target"))
+ HealBot_IamRessing=true;
+ end
+ end
+end
+
+function HealBot_OnEvent_SpellcastStop(this)
+ HealBot_IsCasting = false;
+ HealBot_StopCasting();
+ HealBot_RecalcHeals();
+ if HealBot_IamRessing then
+ HealBot_SendAddonMessage( "CTRA", "RESNO");
+ --HealBot_AddDebug("I finished ressing")
+ HealBot_IamRessing=false;
+ end
+end
+
+function HealBot_SpiBonus(spell)
+ local heals_modifer = 0;
+ local base, stat, posBuff, negBuff = UnitStat("player",5);
+ nameTalent, icon, tier, column, currRank, maxRank = GetTalentInfo(2,14); -- Spiritual guidence
+ spiGuideBonus = stat * 0.05;
+ heals_modifer = heals_modifer + (currRank * spiGuideBonus);
+ return heals_modifer;
+end
+
+function HealBot_GetBonus()
+ local HealBonus=HealBot_BonusScanner:GetBonus();
+ return HealBonus;
+end
+
+function HealBot_FindUnitID(unitname)
+ local text;
+ for _,unit in ipairs(HealBot_Action_HealGroup) do
+ text = UnitName(unit);
+ if text then
+ if text==unitname then
+ return unit;
+ end
+ end
+ end
+ for i=1,40 do
+ local unit = "raid"..i;
+ text = UnitName(unit);
+ if text then
+ if text==unitname then
+ return unit;
+ end
+ end
+ end
+ return nil;
+end
+
+function HealBot_PlaySound(id)
+ if id==1 then
+ PlaySoundFile("Sound\\Doodad\\BellTollTribal.wav");
+ elseif id==2 then
+ PlaySoundFile("Sound\\Spells\\Thorns.wav");
+ elseif id==3 then
+ PlaySoundFile("Sound\\Doodad\\BellTollNightElf.wav");
+ end
+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
+ do break end
+ 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
+ if class=="PRIEST" or class=="DRUID" or class=="PALADIN" or class=="SHAMAN" then
+ HealBot_AddChat("Initiated HealBot_CurrentSpells with ".. cnt .." Spells");
+ end
+ return cnt;
+end
+
+function HealBot_InitData()
+ HealBot_Skins = HealBot_Config.Skins;
+ if(CT_RegisterMod) then
+ CT_RegisterMod(HEALBOT_ADDON,"HealBot Options",5,"Interface\\AddOns\\HealBotBlue\\Images\\HealBot","Opens HealBot Options","off",nil,HealBot_ToggleOptions);
+ end
+
+-- remove after 1.126
+ local tmp=HealBot_Config.ShowHeader[HealBot_Config.Current_Skin] or 0
+ HealBot_Config.ShowHeader[HealBot_Config.Current_Skin]=tmp
+
+ HealBot_Options_CDCMonitor_Reset()
+ HealBot_Options_EmergencyFilter_Reset()
+ HealBot_Options_Debuff_Reset()
+end
+
+function HealBot_ToggleOptions()
+ HealBot_TogglePanel(HealBot_Options)
+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, HB_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, HB_TOOLTIP_RANGE );
+ else
+ HealBot_Report_Error( "================================" );
+ HealBot_Report_Error( "ERROR: HealBot_ScanTooltip is lost" );
+ HealBot_Report_Error( "ERROR: If BonusScanner is used, try disabling BonusScanner" );
+ end
+
+ tmpText = getglobal("HealBot_ScanTooltipTextLeft3");
+ _cast = nil;
+ if (tmpText:GetText()) then
+ line = tmpText:GetText();
+ if ( line == HB_TOOLTIP_INSTANT_CAST ) then
+ _cast = 0;
+ elseif line == HB_TOOLTIP_CHANNELED then
+ _cast = 0;
+ elseif ( tmpText ) then
+ tmpTest,tmpTest,_cast = string.find(line, HB_TOOLTIP_CAST_TIME );
+ end
+ else
+ HealBot_Report_Error( "================================" );
+ HealBot_Report_Error( "ERROR: HealBot_ScanTooltip is lost" );
+ HealBot_Report_Error( "ERROR: If BonusScanner is used, try disabling BonusScanner" );
+ end
+
+ tmpText = getglobal("HealBot_ScanTooltipTextLeft4");
+ tmpTest = nil;
+ if (tmpText:GetText()) then
+ line = tmpText:GetText();
+ if class == "PRIEST" then
+ if strsub(spell, 0, 14) == strsub(HEALBOT_POWER_WORD_SHIELD, 0, 14) then
+ tmpTest,tmpTest,_HealsMin,_shield = string.find(line, HB_SPELL_PATTERN_SHIELD );
+ _HealsExt=0;
+ _HealsMax=_HealsMin;
+ elseif strsub(spell, 0, 4) == strsub(HEALBOT_RENEW, 0, 4) then
+ tmpTest,tmpTest,_HealsExt,tmpTest,_duration = string.find(line, HB_SPELL_PATTERN_RENEW );
+ _HealsMin=0;
+ _HealsMax=0;
+ if ( _HealsExt == nil ) then
+ tmpTest,tmpTest,_HealsExt,_duration = string.find(line, HB_SPELL_PATTERN_RENEW1 );
+ end
+ if ( _HealsExt == nil ) then
+ tmpTest,tmpTest,_duration,_HealsExt = string.find(line, HB_SPELL_PATTERN_RENEW2 );
+ end
+ if ( _HealsExt == nil ) then
+ tmpTest,tmpTest,_duration,_HealsExt = string.find(line, HB_SPELL_PATTERN_RENEW3 );
+ end
+ elseif strsub(spell, 0, 9) == strsub(HEALBOT_LESSER_HEAL, 0, 9) then
+ tmpTest,_HealsMin,_HealsMax = HealBot_Generic_Patten(line,HB_SPELL_PATTERN_LESSER_HEAL);
+ elseif strsub(spell, 0, 9) == strsub(HEALBOT_GREATER_HEAL, 0, 9) then
+ tmpTest,_HealsMin,_HealsMax = HealBot_Generic_Patten(line, HB_SPELL_PATTERN_GREATER_HEAL );
+ elseif strsub(spell, 0, 9) == strsub(HEALBOT_FLASH_HEAL, 0, 9) then
+ tmpTest,_HealsMin,_HealsMax = HealBot_Generic_Patten(line, HB_SPELL_PATTERN_FLASH_HEAL );
+ elseif strsub(spell, 0, 4) == strsub(HEALBOT_HEAL, 0, 4) then
+ tmpTest,_HealsMin,_HealsMax = HealBot_Generic_Patten(line, HB_SPELL_PATTERN_HEAL );
+ end
+ elseif class=="DRUID" then
+ if strsub(spell, 0, 6) == strsub(HEALBOT_REGROWTH, 0, 6) then
+ tmpTest,tmpTest,_HealsMin,_HealsMax,_HealsExt = string.find(line, HB_SPELL_PATTERN_REGROWTH );
+ if ( tmpTest == nil ) then
+ tmpTest,tmpTest,_HealsMin,_HealsMax,tmpTest,_HealsExt = string.find(line, HB_SPELL_PATTERN_REGROWTH1 );
+ end
+ elseif strsub(spell, 0, 9) == strsub(HEALBOT_REJUVENATION, 0, 9) then
+ tmpTest,tmpTest,_HealsExt,_duration = string.find(line, HB_SPELL_PATTERN_REJUVENATION );
+ _HealsMin=0;
+ _HealsMax=0;
+ if ( _HealsExt == nil ) then
+ tmpTest,tmpTest,_HealsExt,tmpTest,_duration = string.find(line, HB_SPELL_PATTERN_REJUVENATION1 );
+ end
+ elseif strsub(spell, 0, 7) == strsub(HEALBOT_HEALING_TOUCH, 0, 7) then
+ tmpTest,_HealsMin,_HealsMax = HealBot_Generic_Patten(line, HB_SPELL_PATTERN_HEALING_TOUCH );
+ end
+ elseif class=="PALADIN" then
+ if strsub(spell, 0, 9) == strsub(HEALBOT_HOLY_LIGHT, 0, 9) then
+ tmpTest,_HealsMin,_HealsMax = HealBot_Generic_Patten(line, HB_SPELL_PATTERN_HOLY_LIGHT );
+ elseif strsub(spell, 0, 9) == strsub(HEALBOT_FLASH_OF_LIGHT, 0, 9) then
+ tmpTest,_HealsMin,_HealsMax = HealBot_Generic_Patten(line, HB_SPELL_PATTERN_FLASH_OF_LIGHT );
+ end
+ elseif class=="SHAMAN" then
+ if strsub(spell, 0, 9) == strsub(HEALBOT_HEALING_WAVE, 0, 9) then
+ tmpTest,_HealsMin,_HealsMax = HealBot_Generic_Patten(line, HB_SPELL_PATTERN_HEALING_WAVE );
+ elseif strsub(spell, 0, 9) == strsub(HEALBOT_LESSER_HEALING_WAVE, 0, 9) then
+ tmpTest,_HealsMin,_HealsMax = HealBot_Generic_Patten(line, HB_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 = >> "..HB_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 = >> "..HB_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 = >> "..HB_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
+
+function HealBot_Get_DebugChan()
+ local index = GetChannelName("HBmsg");
+ if (index>0) then
+ return index;
+ else
+ return nil;
+ end
+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 = 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
+
diff --git a/HealBot.xml b/HealBot.xml
new file mode 100644
index 0000000..f043197
--- /dev/null
+++ b/HealBot.xml
@@ -0,0 +1,666 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ HealBot_OnLoad(this);
+
+
+ HealBot_OnEvent(this,event,arg1,arg2,arg3,arg4);
+
+
+ HealBot_OnUpdate(this,arg1);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/HealBotBlue.toc b/HealBotBlue.toc
new file mode 100644
index 0000000..d6dd805
--- /dev/null
+++ b/HealBotBlue.toc
@@ -0,0 +1,14 @@
+## Interface: 11200
+## Title: HealBotBlue
+## Version: 1.0
+## Author: Bluewhale
+## Notes: Adds panel with skinable bars for healing and decursive
+## SavedVariables: HealBot_Config
+..\..\FrameXML\Fonts.xml
+..\..\FrameXML\OptionsFrameTemplates.xml
+..\..\FrameXML\UIPanelTemplates.xml
+..\..\FrameXML\UIDropDownMenu.xml
+HealBot_Error.xml
+HealBot.xml
+HealBot_Action.xml
+HealBot_Options.xml
diff --git a/HealBot_Action.lua b/HealBot_Action.lua
new file mode 100644
index 0000000..a876d5b
--- /dev/null
+++ b/HealBot_Action.lua
@@ -0,0 +1,1220 @@
+local headerno=0;
+
+HealBot_Action_HealGroup = {
+ "player",
+ "pet",
+ "party1",
+ "party2",
+ "party3",
+ "party4",
+};
+
+HealBot_Action_HealTarget = {
+};
+
+HealBot_Action_HealButtons = {
+};
+
+HealBot_Action_UnitButtons = {
+};
+
+function HealBot_Action_AddDebug(msg)
+ HealBot_AddDebug("Action: " .. msg);
+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
+ return HealBot_Config.CDCBarColour[HealBot_UnitDebuff[unit]].R,
+ HealBot_Config.CDCBarColour[HealBot_UnitDebuff[unit]].G,
+ HealBot_Config.CDCBarColour[HealBot_UnitDebuff[unit]].B,
+ 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 pctHealBot_Config.AlertLevel then
+ a=HealBot_Config.bardisa[HealBot_Config.Current_Skin];
+ end
+
+ if pct>=0.98 then r = 0.0; end
+ if pct<0.98 and pct>=0.65 then r=2.94-(pct*3); end
+ if pct<=0.64 and pct>0.31 then g=(pct-0.31)*3; end
+ if pct<=0.31 then g = 0.0; end
+ return r,g,b,a;
+end
+
+function HealBot_Action_HealthBar(button)
+ local name = button:GetName();
+ return getglobal(name.."Bar");
+end
+
+function HealBot_Action_HealthBar2(button)
+ local name = button:GetName();
+ return getglobal(name.."Bar2");
+end
+
+function HealBot_AlwaysHeal()
+ return HealBot_Config.EnableHealthy==1
+end
+
+function HealBot_MayHeal(unit)
+ if not UnitName(unit) or not HealBot_Heals[unit] then return false end
+ if unit ~= 'target' then return true end
+ if not HealBot_Config.TargetHeals or UnitCanAttack("player",unit) then return false end
+ return true;
+end
+
+function HealBot_ShouldHeal(unit)
+ if HealBot_UnitDebuff[unit] and not UnitIsDeadOrGhost(unit) then
+ if HealBot_Range_Check(unit, 30)==1 then
+ return true;
+ end
+ end
+ return HealBot_MayHeal(unit) and UnitHealth(unit)>0 and not UnitIsDeadOrGhost(unit)
+ and (UnitHealth(unit) 0 and isHealer and pt == 0 then
+ local pr, pg, pb = 0, 0, 1
+
+ if bar3 then
+ bar3:SetMinMaxValues(0, UnitManaMax(unit))
+ bar3:SetValue(UnitMana(unit))
+ bar3:SetStatusBarColor(pr, pg, pb, HealBot_Config.Barcola[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
+ bar.txt = getglobal(bar:GetName().."_text");
+ if (not HealBot_IsCasting and HealBot_CanHeal(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=1.0;
+ g=1.0;
+ b=1.0;
+ sr=0.0;
+ sg=0.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
+ if string.len(name)>textlen then
+ name = string.sub(name,1,textlen-3) .. '...';
+ end
+ bar.txt:SetText(name);
+ bar.txt:SetTextColor(sr,sg,sb,sa);
+
+ 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()
+ table.foreach(HealBot_Action_HealButtons, function (index,button)
+ HealBot_Action_EnableButton(button);
+ end);
+end
+
+function HealBot_Action_RefreshButton(button)
+ if not button then return end
+ if type(button)~="table" then DEFAULT_CHAT_FRAME:AddMessage("***** "..type(button)) 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_DiseaseColorpick:SetStatusBarTexture("Interface\\AddOns\\HealBotBlue\\images\\bar"..HealBot_Config.btexture[HealBot_Config.Current_Skin]);
+ HealBot_MagicColorpick:SetStatusBarTexture("Interface\\AddOns\\HealBotBlue\\images\\bar"..HealBot_Config.btexture[HealBot_Config.Current_Skin]);
+ HealBot_PoisonColorpick:SetStatusBarTexture("Interface\\AddOns\\HealBotBlue\\images\\bar"..HealBot_Config.btexture[HealBot_Config.Current_Skin]);
+ HealBot_CurseColorpick:SetStatusBarTexture("Interface\\AddOns\\HealBotBlue\\images\\bar"..HealBot_Config.btexture[HealBot_Config.Current_Skin]);
+ HealBot_EnTextColorpick:SetStatusBarTexture("Interface\\AddOns\\HealBotBlue\\images\\bar"..HealBot_Config.btexture[HealBot_Config.Current_Skin]);
+ HealBot_EnTextColorpickin:SetStatusBarTexture("Interface\\AddOns\\HealBotBlue\\images\\bar"..HealBot_Config.btexture[HealBot_Config.Current_Skin]);
+ HealBot_DisTextColorpick:SetStatusBarTexture("Interface\\AddOns\\HealBotBlue\\images\\bar"..HealBot_Config.btexture[HealBot_Config.Current_Skin]);
+ HealBot_DebTextColorpick:SetStatusBarTexture("Interface\\AddOns\\HealBotBlue\\images\\bar"..HealBot_Config.btexture[HealBot_Config.Current_Skin]);
+ HealBot_SetSkinColours()
+ end
+end
+
+function HealBot_Action_RefreshButtons()
+ table.foreach(HealBot_Action_HealButtons, function (index,button)
+ HealBot_Action_RefreshButton(button);
+ end);
+end
+
+function HealBot_Action_RefreshButtons(unit)
+ if unit and HealBot_Action_UnitButtons[unit] then
+ table.foreach(HealBot_Action_UnitButtons[unit], function (index,button)
+ HealBot_Action_RefreshButton(button);
+ end);
+ else
+ table.foreach(HealBot_Action_HealButtons, function (index,button)
+ 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);
+ local tmpY=OsetY
+ 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_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;
+ HealBot_Action:SetWidth(width+bwidth+10)
+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 = {};
+
+ 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
+ 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==1 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
+ 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 false end
+ return a0 then
+ for j=1,40 do
+ if not units[j] then break end
+ local name, rank, subgroup, level, class, fileName, zone, online, isDead = GetRaidRosterInfo(strsub(units[j], 5));
+ 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
+
+ OffsetY = 10;
+ OffsetX = 10;
+ MaxOffsetY=0;
+
+ if cols>(numBars-numHeaders) then
+ cols=numBars-numHeaders;
+ end
+ if cols <= 0 then cols = 1 end
+
+ local h=1;
+ local i=0;
+ local z=1;
+
+ table.foreach(HealBot_Action_HealButtons, function (index,button)
+ i=i+1;
+ local checked=false;
+ local header;
+
+ if HeaderPos[i] then
+ header=HeaderPos[i];
+ OffsetY = HealBot_Action_PositionButton(nil,OffsetX,OffsetY,bwidth,bheight,checked,header);
+ if h==ceil((numBars)/cols) and z=i then checked=true; end
+ OffsetY = HealBot_Action_PositionButton(button,OffsetX,OffsetY,bwidth,bheight,checked,nil);
+ if h==ceil((numBars)/cols) and z 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].HealsMin0 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;
+ -- GameTooltip_SetDefaultAnchor(HealBot_Tooltip,this);
+
+
+ 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
+
+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:Hide();
+ else
+ HealBot_Action_RefreshButtons(unit);
+ end
+ return;
+ end
+ HealBot_Action_RefreshButtons(unit);
+ if not HealBot_IsFighting then
+ if (HealBot_Action_MustHealSome()) then
+ HealBot_Action:Show();
+ elseif HealBot_AbortButton==0 then
+ HealBot_Action:Show();
+ elseif (not HealBot_Action_ShouldHealSome()) then
+ if HealBot_AbortButton==1 and HealBot_Config.AutoClose==1 and HealBot_Config.ActionVisible~=0 then
+ HealBot_Action:Hide();
+ end
+ end
+ end
+end
+
+function HealBot_Action_SpellPattern(button)
+ local combos = HealBot_Config.KeyCombo[UnitClass("player")]
+ if not combos then return nil end
+ local press = button;
+ if IsAltKeyDown() then press = "Alt"..press end
+ if IsControlKeyDown() then press = "Ctrl"..press end
+ if IsShiftKeyDown() then press = "Shift"..press end
+ return combos[press]
+end
+
+function HealBot_Decode_Button(button)
+ if button=="RightButton" then
+ button="Right";
+ elseif button=="MiddleButton" then
+ button="Middle";
+ elseif button=="Button4" then
+ button="Button4";
+ elseif button=="Button5" then
+ button="Button5";
+ else
+ button="Left";
+ end
+ return button
+end
+
+--------------------------------------------------------------------------------------------------
+-- Widget_OnFoo functions
+--------------------------------------------------------------------------------------------------
+
+function HealBot_Action_HealUnit_OnLoad(this)
+ this:RegisterForClicks("LeftButtonUp", "RightButtonUp", "MiddleButtonUp", "Button4Up", "Button5Up");
+end
+
+function HealBot_Action_HealUnit_OnEnter(this)
+ HealBot_Action_ShowTooltip(this);
+end
+
+function HealBot_Action_HealUnit_OnLeave(this)
+ HealBot_Action_HideTooltip(this);
+end
+
+function HealBot_Action_HealUnit_OnClick(this,button)
+ local decode_button = HealBot_Decode_Button(button);
+ local pattern = HealBot_Action_SpellPattern(decode_button);
+
+ -- Buff casting override
+ if HealBot_Config.BuffWatch == 1 then
+ local inCombat = UnitAffectingCombat("player")
+ if (not inCombat) or (HealBot_Config.BuffWatchInCombat == 1) then
+ local myClass = UnitClass("player")
+ if HealBot_MissingBuffs[this.unit] then
+ local missingBuff = HealBot_MissingBuffs[this.unit]
+ if decode_button == "Left" or decode_button == "Right" then
+ HealBot_CastSpellOnFriend(missingBuff, this.unit)
+ return
+ end
+ end
+ end
+ end
+
+ HealBot_HealUnit(this.unit,pattern);
+ end
+
+function HealBot_Action_HealUnitCheck_OnClick(this)
+ if not this.unit then return end
+ if this:GetChecked() then
+ table.insert(HealBot_Action_HealTarget,this.unit)
+ else
+ for i=1,table.getn(HealBot_Action_HealTarget) do
+ if HealBot_Action_HealTarget[i]==this.unit then
+ table.remove(HealBot_Action_HealTarget,i);
+ break;
+ end
+ end
+ end
+ HealBot_Action_PartyChanged();
+end
+
+function HealBot_Action_OptionsButton_OnClick(this)
+ HealBot_TogglePanel(HealBot_Options);
+end
+
+function HealBot_Action_AbortButton_OnClick(this)
+ SpellStopCasting();
+end
+
+local HealBot_CT_RA_UpdateMTs_Old;
+function HealBot_CT_RA_UpdateMTs()
+ local value = HealBot_CT_RA_UpdateMTs_Old();
+ return value;
+end
+
+function HealBot_CT_RaidAssist_DEAD()
+-- if (type(CT_RA_MemberFrame_OnClick)=="function") then
+-- HealBot_CT_RA_CustomOnClickFunction_Old = CT_RA_CustomOnClickFunction;
+-- CT_RA_CustomOnClickFunction = HealBot_CT_RA_CustomOnClickFunction;
+-- end
+-- if (type(CT_RA_UpdateMTs)=="function") then
+-- HealBot_CT_RA_UpdateMTs_Old = CT_RA_UpdateMTs;
+-- CT_RA_UpdateMTs = HealBot_CT_RA_UpdateMTs;
+-- end
+end
+
+--------------------------------------------------------------------------------------------------
+-- Frame_OnFoo functions
+--------------------------------------------------------------------------------------------------
+
+function HealBot_Action_OnLoad(this)
+-- HealBot_CT_RaidAssist();
+end
+
+function HealBot_Action_OnShow(this)
+ if HealBot_Config.PanelSounds==1 then
+ PlaySound("igAbilityOpen");
+ end
+ HealBot_Config.ActionVisible = 1
+ HealBot_Action:SetBackdropColor(
+ 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]);
+ HealBot_Action:SetBackdropBorderColor(
+ 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]);
+end
+
+function HealBot_Action_OnHide(this)
+ HealBot_StopMoving(this);
+ HealBot_Config.ActionVisible = 0
+end
+
+function HealBot_Action_OnMouseDown(this,button)
+ if button~="RightButton" then
+ if HealBot_Config.ActionLocked==0 then
+ HealBot_StartMoving(this);
+ end
+ end
+end
+
+function HealBot_Action_OnMouseUp(this,button)
+ if button~="RightButton" then
+ HealBot_StopMoving(this);
+ elseif not HealBot_IsFighting then
+ HealBot_Action_OptionsButton_OnClick();
+ end
+end
+
+function HealBot_Action_OnClick(this,button)
+-- HealBot_Action_AddDebug("OnClick("..button..")");
+end
+
+function HealBot_Action_OnDragStart(this,button)
+ if HealBot_Config.ActionLocked==0 then
+ HealBot_StartMoving(this);
+ end
+end
+
+function HealBot_Action_OnDragStop(this)
+ HealBot_StopMoving(this);
+end
+
+-- http://www.flexbarforums.com/viewtopic.php?t=66
+function HealBot_Action_OnKey(this,key,state)
+ local command = GetBindingAction(key);
+ if command then
+ DEFAULT_CHAT_FRAME:AddMessage(key.." "..state.." "..(command or "nil"));
+ keystate = state
+ RunBinding(command,keystate)
+ end
+ DEFAULT_CHAT_FRAME:AddMessage("HealBot_Action_OnKey - "..key);
+ if key=="SHIFT" or key=="CTRL" or key=="ALT" then
+ DEFAULT_CHAT_FRAME:AddMessage((IsShiftKeyDown() or 0).." "..(IsControlKeyDown() or 0).." "..(IsAltKeyDown() or 0));
+ HealBot_Action_Refresh();
+ end
+end
+
diff --git a/HealBot_Action.xml b/HealBot_Action.xml
new file mode 100644
index 0000000..d744213
--- /dev/null
+++ b/HealBot_Action.xml
@@ -0,0 +1,360 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ HealBot_Action_OnLoad(this);
+
+
+ HealBot_Action_OnShow(this);
+
+
+ HealBot_Action_OnHide(this);
+
+
+ HealBot_Action_OnMouseDown(this,arg1);
+
+
+ HealBot_Action_OnMouseUp(this,arg1);
+
+
+ HealBot_Action_OnClick(this,arg1);
+
+
+ HealBot_Action_OnDragStart(this,arg1);
+
+
+ HealBot_Action_OnDragStop(this);
+
+
+
+
+
diff --git a/HealBot_BonusScanner.lua b/HealBot_BonusScanner.lua
new file mode 100644
index 0000000..ce1e08e
--- /dev/null
+++ b/HealBot_BonusScanner.lua
@@ -0,0 +1,228 @@
+--------------------------------------------------
+-- This is a cut version on BonusScanner
+-- Healbot only cares about heals and although BonusScanner is a great addon, it lags when everts are fired.
+--
+-- Original BonusScanner here:
+-- 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 = {
+ bonuses = 0;
+ IsUpdating = false;
+ ShowDebug = false; -- tells when the equipment is scanned
+ active = nil;
+ temp = {
+ sets = {},
+ set = "",
+ slot = "",
+ bonuses = 0,
+ details = {}
+ };
+
+ types = {
+ "HEAL", -- healing
+ };
+
+ slots = {
+ "Head",
+ "Neck",
+ "Shoulder",
+ "Shirt",
+ "Chest",
+ "Waist",
+ "Legs",
+ "Feet",
+ "Wrist",
+ "Hands",
+ "Finger0",
+ "Finger1",
+ "Trinket0",
+ "Trinket1",
+ "Back",
+ "MainHand",
+ "SecondaryHand",
+ "Ranged",
+ "Tabard",
+ };
+}
+
+function HealBot_BonusScanner:GetBonus()
+ if(HealBot_BonusScanner.bonuses) then
+ return HealBot_BonusScanner.bonuses;
+ end;
+ return 0;
+end
+
+
+function HealBot_BonusScanner_Update()
+
+ if (HealBot_BonusScanner.IsUpdating) then
+ return;
+ else
+ HealBot_BonusScanner.IsUpdating = true;
+ HealBot_BonusScanner:ScanEquipment();
+ end
+ HealBot_BonusScanner.IsUpdating = false;
+end
+
+function HealBot_BonusScanner:ScanEquipment()
+ local slotid, slotname, hasItem, i;
+
+ HealBot_BonusTooltip:SetOwner(HealBot_BonusTooltip, "ANCHOR_NONE");
+ HealBot_BonusScanner.temp.bonuses = 0;
+ HealBot_BonusScanner.temp.sets = {};
+ HealBot_BonusScanner.temp.set = "";
+ for i, slotname in HealBot_BonusScanner.slots do
+ slotid, _ = GetInventorySlotInfo(slotname.. "Slot");
+ hasItem = HealBot_BonusTooltip:SetInventoryItem("player", slotid);
+ if ( hasItem ) then
+ HealBot_BonusScanner.temp.slot = slotname;
+ HealBot_BonusScanner:ScanTooltip();
+ if(HealBot_BonusScanner.temp.set ~= "") then
+ HealBot_BonusScanner.temp.sets[HealBot_BonusScanner.temp.set] = 1;
+ end;
+ end
+ end
+ HealBot_BonusScanner.bonuses = HealBot_BonusScanner.temp.bonuses;
+end
+
+function HealBot_BonusScanner:ScanTooltip()
+ local tmpTxt, line;
+ local lines = HealBot_BonusTooltip:NumLines();
+ for i=2, lines, 1 do
+ tmpText = getglobal("HealBot_BonusTooltipTextLeft"..i);
+ val = nil;
+ if (tmpText:GetText()) then
+ line = tmpText:GetText();
+ HealBot_BonusScanner:ScanLine(line);
+ end
+ end
+end
+
+function HealBot_BonusScanner:AddValue(effect, value)
+ local i,e;
+ if(type(effect) == "string") then
+ if effect=="HEAL" then
+ if(HealBot_BonusScanner.temp.bonuses) then
+ HealBot_BonusScanner.temp.bonuses = HealBot_BonusScanner.temp.bonuses + value;
+ else
+ HealBot_BonusScanner.temp.bonuses = value;
+ end
+ end
+ else
+ if(type(value) == "table") then
+ for i,e in effect do
+ HealBot_BonusScanner:AddValue(e, value[i]);
+ end
+ else
+ for i,e in effect do
+ HealBot_BonusScanner:AddValue(e, value);
+ end
+ end
+ end
+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);
+ HealBot_BonusScanner:CheckPassive(tmpStr);
+ elseif(string.sub(line,0,string.len(HB_BONUSSCANNER_PREFIX_SET)) == HB_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);
+ HealBot_BonusScanner.temp.slot = "Set";
+ HealBot_BonusScanner:CheckPassive(tmpStr);
+ else
+ _, _, tmpStr = string.find(line, HB_BONUSSCANNER_PATTERN_SETNAME);
+ if(tmpStr) then
+ HealBot_BonusScanner.temp.set = tmpStr;
+ else
+ found = HealBot_BonusScanner:CheckGeneric(line);
+ if(not found) then
+ HealBot_BonusScanner:CheckOther(line);
+ end;
+ end
+ end
+end;
+
+function HealBot_BonusScanner:CheckPassive(line)
+ local i, p, value, found;
+
+ found = nil;
+ for i,p in HB_BONUSSCANNER_PATTERNS_PASSIVE do
+ _, _, value = string.find(line, "^" .. p.pattern);
+ if(value) then
+ HealBot_BonusScanner:AddValue(p.effect, value)
+ found = 1;
+ end
+ end
+ if(not found) then
+ HealBot_BonusScanner:CheckGeneric(line);
+ end
+end
+
+function HealBot_BonusScanner:CheckGeneric(line)
+ local value, token, pos, tmpStr, found;
+ found = false;
+ while(string.len(line) > 0) do
+ pos = string.find(line, "/", 1, true);
+ if(pos) then
+ tmpStr = string.sub(line,1,pos-1);
+ line = string.sub(line,pos+1);
+ else
+ tmpStr = line;
+ line = "";
+ end
+
+ tmpStr = string.gsub( tmpStr, "^%s+", "" );
+ tmpStr = string.gsub( tmpStr, "%s+$", "" );
+ tmpStr = string.gsub( tmpStr, "%.$", "" );
+
+ _, _, value, token = string.find(tmpStr, HB_BONUSSCANNER_PATTERN_GENERIC_PREFIX);
+ if(not value) then
+ _, _, token, value = string.find(tmpStr, HB_BONUSSCANNER_PATTERN_GENERIC_SUFFIX);
+ end
+ if(token and value) then
+ token = string.gsub( token, "^%s+", "" );
+ token = string.gsub( token, "%s+$", "" );
+ token = string.gsub( token, "%.$", "" );
+ if(HealBot_BonusScanner:CheckToken(token,value)) then
+ found = true;
+ end
+ end
+ end
+ return found;
+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);
+ return true;
+ end
+ return false;
+end
+
+function HealBot_BonusScanner:CheckOther(line)
+ local i, p, value, start, found;
+
+ for i,p in HB_BONUSSCANNER_PATTERNS_OTHER do
+ start, _, value = string.find(line, "^" .. p.pattern);
+ if(start) then
+ if(p.value) then
+ HealBot_BonusScanner:AddValue(p.effect, p.value)
+ elseif(value) then
+ HealBot_BonusScanner:AddValue(p.effect, value)
+ end
+ return true;
+ end
+ end
+ return false;
+end
+
diff --git a/HealBot_Data.lua b/HealBot_Data.lua
new file mode 100644
index 0000000..8750c79
--- /dev/null
+++ b/HealBot_Data.lua
@@ -0,0 +1,544 @@
+HealBot_ConfigDefaults = {
+ ShowManaBars=0,
+ Version = HEALBOT_VERSION,
+ AlertLevel = 0.95,
+ AutoClose = 1,
+ PanelSounds = 1,
+ GroupHeals = 1,
+ TankHeals = 1,
+ TargetHeals = 1,
+ EmergencyHeals = 1,
+ ActionLocked = 0,
+ OverHeal = 0.25,
+ CastNotify = 1,
+ ChatMessages = {
+ [1] = { Spell = "None", Message = "Casting #Spell# on #Target#", Channel = "None" },
+ [2] = { Spell = "None", Message = "Casting #Spell# on #Target#", Channel = "None" },
+ [3] = { Spell = "None", Message = "Casting #Spell# on #Target#", Channel = "None" },
+ [4] = { Spell = "None", Message = "Casting #Spell# on #Target#", Channel = "None" },
+ [5] = { Spell = "None", Message = "Casting #Spell# on #Target#", Channel = "None" },
+ },
+ HideOptions = 0,
+ HideAbort = 1,
+ ShowTooltip = 1,
+ GrowUpwards = 0,
+ ProtectPvP = 1,
+ QualityRange = 0,
+ EmergIncMonitor = 1,
+ EmergencyFClass = 4,
+ ExtraOrder = 1,
+ ShowDebuffWarning = 0,
+ SoundDebuffWarning = 0,
+ SoundDebuffPlay = 1,
+ CDCMonitor = 1,
+ PanelAnchorX = -1,
+ PanelAnchorY = -1,
+ CDCBarColour = {
+ [HEALBOT_DISEASE_en] = { R = 0.1, G = 0.05, B = 0.2, },
+ [HEALBOT_MAGIC_en] = { R = 0.05, G = 0.05, B = 0.1, },
+ [HEALBOT_POISON_en] = { R = 0.05, G = 0.2, B = 0.1, },
+ [HEALBOT_CURSE_en] = { R = 0.2, G = 0.05, B = 0.05, },
+ },
+
+ Debuff_Left = {
+ [HEALBOT_DRUID] = 1,
+ [HEALBOT_PALADIN] = 1,
+ [HEALBOT_PRIEST] = 1,
+ [HEALBOT_SHAMAN] = 1,
+ },
+ Debuff_Right = {
+ [HEALBOT_DRUID] = 1,
+ [HEALBOT_PALADIN] = 1,
+ [HEALBOT_PRIEST] = 1,
+ [HEALBOT_SHAMAN] = 1,
+ },
+ BuffWatch = 1,
+ BuffWatchInCombat = 0,
+ BuffWatchSelf = {0,0,0,0,0,0,0,0},
+ Buff_Left = {
+ [HEALBOT_DRUID] = 1,
+ [HEALBOT_PALADIN] = 1,
+ [HEALBOT_PRIEST] = 1,
+ [HEALBOT_MAGE] = 1,
+ },
+ Buff_Right = {
+ [HEALBOT_DRUID] = 1,
+ [HEALBOT_PALADIN] = 1,
+ [HEALBOT_PRIEST] = 1,
+ [HEALBOT_MAGE] = 1,
+ },
+ EmergIncRange = {
+ [HEALBOT_DRUID] = 0,
+ [HEALBOT_HUNTER] = 1,
+ [HEALBOT_MAGE] = 1,
+ [HEALBOT_PALADIN] = 0,
+ [HEALBOT_PRIEST] = 0,
+ [HEALBOT_ROGUE] = 0,
+ [HEALBOT_SHAMAN] = 0,
+ [HEALBOT_WARLOCK] = 1,
+ [HEALBOT_WARRIOR] = 0,
+ },
+ EmergIncMelee = {
+ [HEALBOT_DRUID] = 0,
+ [HEALBOT_HUNTER] = 0,
+ [HEALBOT_MAGE] = 0,
+ [HEALBOT_PALADIN] = 0,
+ [HEALBOT_PRIEST] = 0,
+ [HEALBOT_ROGUE] = 1,
+ [HEALBOT_SHAMAN] = 0,
+ [HEALBOT_WARLOCK] = 0,
+ [HEALBOT_WARRIOR] = 1,
+ },
+ EmergIncHealers = {
+ [HEALBOT_DRUID] = 1,
+ [HEALBOT_HUNTER] = 0,
+ [HEALBOT_MAGE] = 0,
+ [HEALBOT_PALADIN] = 0,
+ [HEALBOT_PRIEST] = 1,
+ [HEALBOT_ROGUE] = 0,
+ [HEALBOT_SHAMAN] = 0,
+ [HEALBOT_WARLOCK] = 0,
+ [HEALBOT_WARRIOR] = 0,
+ },
+ EmergIncCustom = {
+ [HEALBOT_DRUID] = 1,
+ [HEALBOT_HUNTER] = 0,
+ [HEALBOT_MAGE] = 1,
+ [HEALBOT_PALADIN] = 1,
+ [HEALBOT_PRIEST] = 1,
+ [HEALBOT_ROGUE] = 0,
+ [HEALBOT_SHAMAN] = 1,
+ [HEALBOT_WARLOCK] = 1,
+ [HEALBOT_WARRIOR] = 0,
+ },
+ KeyCombo = {
+ [HEALBOT_DRUID] = {
+ ["Left"] = HEALBOT_REGROWTH,
+ ["ShiftLeft"] = HEALBOT_REGROWTH .. HEALBOT_RANK_7,
+ ["CtrlLeft"] = HEALBOT_REGROWTH .. HEALBOT_RANK_5,
+ ["ShiftCtrlLeft"] = HEALBOT_REGROWTH .. HEALBOT_RANK_3,
+ ["Right"] = HEALBOT_HEALING_TOUCH,
+ ["ShiftRight"] = HEALBOT_HEALING_TOUCH .. HEALBOT_RANK_8,
+ ["CtrlRight"] = HEALBOT_HEALING_TOUCH .. HEALBOT_RANK_6,
+ ["ShiftCtrlRight"] = HEALBOT_HEALING_TOUCH .. HEALBOT_RANK_4,
+ ["Middle"] = HEALBOT_REJUVENATION,
+ ["ShiftMiddle"] = HEALBOT_REJUVENATION .. HEALBOT_RANK_8,
+ ["CtrlMiddle"] = HEALBOT_REJUVENATION .. HEALBOT_RANK_6,
+ ["ShiftCtrlMiddle"] = HEALBOT_REJUVENATION .. HEALBOT_RANK_4,
+ ["Button4"] = HEALBOT_MARK_OF_THE_WILD,
+ },
+ [HEALBOT_PALADIN] = {
+ ["Left"] = HEALBOT_FLASH_OF_LIGHT,
+ ["ShiftLeft"] = HEALBOT_FLASH_OF_LIGHT .. HEALBOT_RANK_5,
+ ["CtrlLeft"] = HEALBOT_FLASH_OF_LIGHT .. HEALBOT_RANK_3,
+ ["ShiftCtrlLeft"] = HEALBOT_FLASH_OF_LIGHT .. HEALBOT_RANK_1,
+ ["Right"] = HEALBOT_HOLY_LIGHT,
+ ["ShiftRight"] = HEALBOT_HOLY_LIGHT .. HEALBOT_RANK_8,
+ ["CtrlRight"] = HEALBOT_HOLY_LIGHT .. HEALBOT_RANK_6,
+ ["ShiftCtrlRight"] = HEALBOT_HOLY_LIGHT .. HEALBOT_RANK_4,
+ ["Middle"] = HEALBOT_BLESSING_OF_SALVATION,
+ },
+ [HEALBOT_PRIEST] = {
+ ["Left"] = HEALBOT_FLASH_HEAL,
+ ["ShiftLeft"] = HEALBOT_FLASH_HEAL .. HEALBOT_RANK_5,
+ ["CtrlLeft"] = HEALBOT_FLASH_HEAL .. HEALBOT_RANK_3,
+ ["ShiftCtrlLeft"] = HEALBOT_FLASH_HEAL .. HEALBOT_RANK_1,
+ ["Right"] = HEALBOT_GREATER_HEAL,
+ ["ShiftRight"] = HEALBOT_GREATER_HEAL .. HEALBOT_RANK_2,
+ ["CtrlRight"] = HEALBOT_HEAL .. HEALBOT_RANK_4,
+ ["ShiftCtrlRight"] = HEALBOT_HEAL .. HEALBOT_RANK_2,
+ ["Middle"] = HEALBOT_RENEW,
+ ["ShiftMiddle"] = HEALBOT_RENEW .. HEALBOT_RANK_7,
+ ["CtrlMiddle"] = HEALBOT_RENEW .. HEALBOT_RANK_5,
+ ["ShiftCtrlMiddle"] = HEALBOT_RENEW .. HEALBOT_RANK_3,
+ ["Button4"] = HEALBOT_POWER_WORD_SHIELD,
+ ["ShiftButton4"] = HEALBOT_POWER_WORD_FORTITUDE,
+ ["Button5"] = HEALBOT_PRAYER_OF_HEALING,
+ },
+ [HEALBOT_SHAMAN] = {
+ ["Left"] = HEALBOT_LESSER_HEALING_WAVE,
+ ["ShiftLeft"] = HEALBOT_LESSER_HEALING_WAVE .. HEALBOT_RANK_5,
+ ["CtrlLeft"] = HEALBOT_LESSER_HEALING_WAVE .. HEALBOT_RANK_3,
+ ["ShiftCtrlLeft"] = HEALBOT_LESSER_HEALING_WAVE .. HEALBOT_RANK_1,
+ ["Right"] = HEALBOT_HEALING_WAVE,
+ ["ShiftRight"] = HEALBOT_HEALING_WAVE .. HEALBOT_RANK_8,
+ ["CtrlRight"] = HEALBOT_HEALING_WAVE .. HEALBOT_RANK_6,
+ ["ShiftCtrlRight"] = HEALBOT_HEALING_WAVE .. HEALBOT_RANK_4,
+ ["Middle"] = HEALBOT_CHAIN_HEAL,
+ },
+ },
+ EnableHealthy = 0,
+ ActionVisible = 0,
+ 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,
+ Skin_ID = 1,
+ Skins = {HEALBOT_SKINS_STD, "HealBot Party", "HealBot Raid", "Alteric Valley"},
+ numcols = {[HEALBOT_SKINS_STD] = 1, ["HealBot Party"] = 1, ["HealBot Raid"] = 4, ["Alteric Valley"] = 2},
+ btexture = {[HEALBOT_SKINS_STD] = 8,["HealBot Party"] = 6, ["HealBot Raid"] = 7, ["Alteric Valley"] = 9},
+ bcspace = {[HEALBOT_SKINS_STD] = 4, ["HealBot Party"] = 4, ["HealBot Raid"] = 2, ["Alteric Valley"] = 2},
+ brspace = {[HEALBOT_SKINS_STD] = 1, ["HealBot Party"] = 2, ["HealBot Raid"] = 2, ["Alteric Valley"] = 1},
+ bwidth = {[HEALBOT_SKINS_STD] = 122, ["HealBot Party"] = 115, ["HealBot Raid"] = 90, ["Alteric Valley"] = 85},
+ bheight = {[HEALBOT_SKINS_STD] = 19, ["HealBot Party"] = 18, ["HealBot Raid"] = 14, ["Alteric Valley"] = 16},
+ btextenabledcolr = {[HEALBOT_SKINS_STD] = 1, ["HealBot Party"] = 1, ["HealBot Raid"] = 1, ["Alteric Valley"] = 1},
+ btextenabledcolg = {[HEALBOT_SKINS_STD] = 1, ["HealBot Party"] = 1, ["HealBot Raid"] = 1, ["Alteric Valley"] = 1},
+ btextenabledcolb = {[HEALBOT_SKINS_STD] = 0, ["HealBot Party"] = 0, ["HealBot Raid"] = 0, ["Alteric Valley"] = 0},
+ btextenabledcola = {[HEALBOT_SKINS_STD] = 1, ["HealBot Party"] = 1, ["HealBot Raid"] = 1, ["Alteric Valley"] = 1},
+ btextdisbledcolr = {[HEALBOT_SKINS_STD] = 0.5, ["HealBot Party"] = 0.5, ["HealBot Raid"] = 0.5, ["Alteric Valley"] = 0.4},
+ btextdisbledcolg = {[HEALBOT_SKINS_STD] = 0.5, ["HealBot Party"] = 0.5, ["HealBot Raid"] = 0.5, ["Alteric Valley"] = 0.4},
+ btextdisbledcolb = {[HEALBOT_SKINS_STD] = 0.5, ["HealBot Party"] = 0.5, ["HealBot Raid"] = 0.5, ["Alteric Valley"] = 0.4},
+ btextdisbledcola = {[HEALBOT_SKINS_STD] = 0.45, ["HealBot Party"] = 0.75, ["HealBot Raid"] = 0.75, ["Alteric Valley"] = 0},
+ btextcursecolr = {[HEALBOT_SKINS_STD] = 1, ["HealBot Party"] = 1, ["HealBot Raid"] = 1, ["Alteric Valley"] = 1},
+ btextcursecolg = {[HEALBOT_SKINS_STD] = 1, ["HealBot Party"] = 1, ["HealBot Raid"] = 1, ["Alteric Valley"] = 1},
+ btextcursecolb = {[HEALBOT_SKINS_STD] = 1, ["HealBot Party"] = 1, ["HealBot Raid"] = 1, ["Alteric Valley"] = 1},
+ btextcursecola = {[HEALBOT_SKINS_STD] = 1, ["HealBot Party"] = 1, ["HealBot Raid"] = 1, ["Alteric Valley"] = 1},
+ backcola = {[HEALBOT_SKINS_STD] = 0.05, ["HealBot Party"] = 0.25, ["HealBot Raid"] = 0.25, ["Alteric Valley"] = 0},
+ Barcola = {[HEALBOT_SKINS_STD] = 0.85, ["HealBot Party"] = 0.85, ["HealBot Raid"] = 0.85, ["Alteric Valley"] = 0.85},
+ BarcolaInHeal = {[HEALBOT_SKINS_STD] = 0.40, ["HealBot Party"] = 0.35, ["HealBot Raid"] = 0.35, ["Alteric Valley"] = 0.5},
+ backcolr = {[HEALBOT_SKINS_STD] = 0.1, ["HealBot Party"] = 0.1, ["HealBot Raid"] = 0.1, ["Alteric Valley"] = 0.2},
+ backcolg = {[HEALBOT_SKINS_STD] = 0.1, ["HealBot Party"] = 0.1, ["HealBot Raid"] = 0.1, ["Alteric Valley"] = 0.2},
+ backcolb = {[HEALBOT_SKINS_STD] = 0.7, ["HealBot Party"] = 0.7, ["HealBot Raid"] = 0.7, ["Alteric Valley"] = 0.2},
+ borcolr = {[HEALBOT_SKINS_STD] = 1, ["HealBot Party"] = 1, ["HealBot Raid"] = 1, ["Alteric Valley"] = 0.2},
+ borcolg = {[HEALBOT_SKINS_STD] = 1, ["HealBot Party"] = 1, ["HealBot Raid"] = 1, ["Alteric Valley"] = 0.2},
+ borcolb = {[HEALBOT_SKINS_STD] = 1, ["HealBot Party"] = 1, ["HealBot Raid"] = 1, ["Alteric Valley"] = 0.2},
+ borcola = {[HEALBOT_SKINS_STD] = 0.25, ["HealBot Party"] = 0.8, ["HealBot Raid"] = 0.8, ["Alteric Valley"] = 0.1},
+ btextheight = {[HEALBOT_SKINS_STD] = 10, ["HealBot Party"] = 10, ["HealBot Raid"] = 9, ["Alteric Valley"] = 10},
+ bardisa = {[HEALBOT_SKINS_STD] = 0.15, ["HealBot Party"] = 0.75, ["HealBot Raid"] = 0.75, ["Alteric Valley"] = 0},
+ abortsize = {[HEALBOT_SKINS_STD] = 7, ["HealBot Party"] = 10, ["HealBot Raid"] = 5, ["Alteric Valley"] = 6},
+ babortcolr = {[HEALBOT_SKINS_STD] = 0.1, ["HealBot Party"] = 0.1, ["HealBot Raid"] = 0.1, ["Alteric Valley"] = 0.2},
+ babortcolg = {[HEALBOT_SKINS_STD] = 0.1, ["HealBot Party"] = 0.1, ["HealBot Raid"] = 0.1, ["Alteric Valley"] = 0.2},
+ babortcolb = {[HEALBOT_SKINS_STD] = 0.5, ["HealBot Party"] = 0.5, ["HealBot Raid"] = 0.5, ["Alteric Valley"] = 0.6},
+ babortcola = {[HEALBOT_SKINS_STD] = 1, ["HealBot Party"] = 1, ["HealBot Raid"] = 1, ["Alteric Valley"] = 1},
+ ShowHeader = {[HEALBOT_SKINS_STD] = 1, ["HealBot Party"] = 1, ["HealBot Raid"] = 1, ["Alteric Valley"] = 1},
+ Tooltip_ShowSpellDetail = 0,
+ Tooltip_ShowTarget = 1,
+ Tooltip_Recommend = 1,
+ TooltipPos = 1,
+};
+
+HealBot_Config = {};
+
+--HealBot_EmergIncMelee = {};
+--HealBot_EmergIncRange = {};
+--HealBot_EmergIncHealers = {};
+--HealBot_EmergIncCustom = {};
+--HealBot_KeyCombo = {};
+HealBot_HealsIn = {};
+HealBot_Healers = {};
+HealBot_UnitDebuff = {};
+HealBot_UnitIcons = {};
+
+HealBot_ResetHealsInFlag=true;
+
+HEALBOT_ADDON_ID="HealBot_Heals"
+
+HealBot_AbortButton=1;
+
+HealBot_Groups = {
+ ["ITEMS"] = {
+ HEALBOT_BANDAGES,
+ HEALBOT_HEALING_POTIONS,
+ HEALBOT_HEALTHSTONES,
+ },
+ ["PALADIN"] = {
+ HEALBOT_HOLY_LIGHT,
+ HEALBOT_FLASH_OF_LIGHT,
+ },
+}
+
+HealBot_Spells = {
+-- Cast = secs until effect starts
+-- Channel = secs until caster available
+-- Duration = secs until effect ends
+-- Shield = maximum duration
+
+ [HEALBOT_LINEN_BANDAGE] = {
+ Group = HEALBOT_BANDAGES, Range = 15, Channel = 6.0,
+ Mana = 0, HealsExt = 66, Level = 1,
+ Buff = HEALBOT_BUFF_FIRST_AID, Debuff = HEALBOT_DEBUFF_RECENTLY_BANDAGED },
+ [HEALBOT_HEAVY_LINEN_BANDAGE] = {
+ Group = HEALBOT_BANDAGES, Range = 15, Channel = 6.0,
+ Mana = 0, HealsExt = 114, Level = 1,
+ Buff = HEALBOT_BUFF_FIRST_AID, Debuff = HEALBOT_DEBUFF_RECENTLY_BANDAGED },
+ [HEALBOT_WOOL_BANDAGE] = {
+ Group = HEALBOT_BANDAGES, Range = 15, Channel = 7.0,
+ Mana = 0, HealsExt = 161, Level = 1,
+ Buff = HEALBOT_BUFF_FIRST_AID, Debuff = HEALBOT_DEBUFF_RECENTLY_BANDAGED },
+ [HEALBOT_HEAVY_WOOL_BANDAGE] = {
+ Group = HEALBOT_BANDAGES, Range = 15, Channel = 7.0,
+ Mana = 0, HealsExt = 301, Level = 1,
+ Buff = HEALBOT_BUFF_FIRST_AID, Debuff = HEALBOT_DEBUFF_RECENTLY_BANDAGED },
+ [HEALBOT_SILK_BANDAGE] = {
+ Group = HEALBOT_BANDAGES, Range = 15, Channel = 8.0,
+ Mana = 0, HealsExt = 400, Level = 1,
+ Buff = HEALBOT_BUFF_FIRST_AID, Debuff = HEALBOT_DEBUFF_RECENTLY_BANDAGED },
+ [HEALBOT_HEAVY_SILK_BANDAGE] = {
+ Group = HEALBOT_BANDAGES, Range = 15, Channel = 8.0,
+ Mana = 0, HealsExt = 640, Level = 1,
+ Buff = HEALBOT_BUFF_FIRST_AID, Debuff = HEALBOT_DEBUFF_RECENTLY_BANDAGED },
+ [HEALBOT_MAGEWEAVE_BANDAGE] = {
+ Group = HEALBOT_BANDAGES, Range = 15, Channel = 8.0,
+ Mana = 0, HealsExt = 800, Level = 1,
+ Buff = HEALBOT_BUFF_FIRST_AID, Debuff = HEALBOT_DEBUFF_RECENTLY_BANDAGED },
+ [HEALBOT_HEAVY_MAGEWEAVE_BANDAGE] = {
+ Group = HEALBOT_BANDAGES, Range = 15, Channel = 8.0,
+ Mana = 0, HealsExt = 1104, Level = 1,
+ Buff = HEALBOT_BUFF_FIRST_AID, Debuff = HEALBOT_DEBUFF_RECENTLY_BANDAGED },
+ [HEALBOT_RUNECLOTH_BANDAGE] = {
+ Group = HEALBOT_BANDAGES, Range = 15, Channel = 8.0,
+ Mana = 0, HealsExt = 1360, Level = 52,
+ Buff = HEALBOT_BUFF_FIRST_AID, Debuff = HEALBOT_DEBUFF_RECENTLY_BANDAGED },
+ [HEALBOT_HEAVY_RUNECLOTH_BANDAGE] = {
+ Group = HEALBOT_BANDAGES, Range = 15, Channel = 8.0,
+ Mana = 0, HealsExt = 2000, Level = 58,
+ Buff = HEALBOT_BUFF_FIRST_AID, Debuff = HEALBOT_DEBUFF_RECENTLY_BANDAGED },
+
+ [HEALBOT_MINOR_HEALING_POTION] = {
+ Group = HEALBOT_HEALING_POTIONS, Range = 1, Target = {"player"},
+ Mana = 0, HealsMin = 70, HealsMax = 90, Level = 5 },
+ [HEALBOT_LESSER_HEALING_POTION] = {
+ Group = HEALBOT_HEALING_POTIONS, Range = 1, Target = {"player"},
+ Mana = 0, HealsMin = 140, HealsMax = 180, Level = 13 },
+ [HEALBOT_HEALING_POTION] = {
+ Group = HEALBOT_HEALING_POTIONS, Range = 1, Target = {"player"},
+ Mana = 0, HealsMin = 280, HealsMax = 360, Level = 22 },
+ [HEALBOT_GREATER_HEALING_POTION] = {
+ Group = HEALBOT_HEALING_POTIONS, Range = 1, Target = {"player"},
+ Mana = 0, HealsMin = 455, HealsMax = 585, Level = 31 },
+ [HEALBOT_SUPERIOR_HEALING_POTION] = {
+ Group = HEALBOT_HEALING_POTIONS, Range = 1, Target = {"player"},
+ Mana = 0, HealsMin = 700, HealsMax = 900, Level = 45 },
+ [HEALBOT_MAJOR_HEALING_POTION] = {
+ Group = HEALBOT_HEALING_POTIONS, Range = 15, Target = {"player"},
+ Mana = 0, HealsMin = 1050, HealsMax = 1750, Level = 55 },
+
+ [HEALBOT_MINOR_HEALTHSTONE] = {
+ Group = HEALBOT_HEALTHSTONES, Range = 1, Target = {"player"},
+ Mana = 0, HealsMin = 110, HealsMax = 110, Level = 10 },
+ [HEALBOT_LESSER_HEALTHSTONE] = {
+ Group = HEALBOT_HEALTHSTONES, Range = 1, Target = {"player"},
+ Mana = 0, HealsMin = 275, HealsMax = 275, Level = 22 },
+ [HEALBOT_HEALTHSTONE] = {
+ Group = HEALBOT_HEALTHSTONES, Range = 1, Target = {"player"},
+ Mana = 0, HealsMin = 500, HealsMax = 500, Level = 34 },
+ [HEALBOT_GREATER_HEALTHSTONE] = {
+ Group = HEALBOT_HEALTHSTONES, Range = 1, Target = {"player"},
+ Mana = 0, HealsMin = 880, HealsMax = 880, Level = 46 },
+ [HEALBOT_MAJOR_HEALTHSTONE] = {
+ Group = HEALBOT_HEALTHSTONES, Range = 1, Target = {"player"},
+ Mana = 0, HealsMin = 1440, HealsMax = 1440, Level = 58 },
+
+-- PALADIN
+
+ [HEALBOT_HOLY_LIGHT .. HEALBOT_RANK_1] = { Group = HEALBOT_HOLY_LIGHT, Level = 1 },
+ [HEALBOT_HOLY_LIGHT .. HEALBOT_RANK_2] = { Group = HEALBOT_HOLY_LIGHT, Level = 6 },
+ [HEALBOT_HOLY_LIGHT .. HEALBOT_RANK_3] = { Group = HEALBOT_HOLY_LIGHT, Level = 14 },
+ [HEALBOT_HOLY_LIGHT .. HEALBOT_RANK_4] = { Group = HEALBOT_HOLY_LIGHT, Level = 22 },
+ [HEALBOT_HOLY_LIGHT .. HEALBOT_RANK_5] = { Group = HEALBOT_HOLY_LIGHT, Level = 30 },
+ [HEALBOT_HOLY_LIGHT .. HEALBOT_RANK_6] = { Group = HEALBOT_HOLY_LIGHT, Level = 38 },
+ [HEALBOT_HOLY_LIGHT .. HEALBOT_RANK_7] = { Group = HEALBOT_HOLY_LIGHT, Level = 46 },
+ [HEALBOT_HOLY_LIGHT .. HEALBOT_RANK_8] = { Group = HEALBOT_HOLY_LIGHT, Level = 54 },
+ [HEALBOT_HOLY_LIGHT .. HEALBOT_RANK_9] = { Group = HEALBOT_HOLY_LIGHT, Level = 60 },
+
+ [HEALBOT_FLASH_OF_LIGHT .. HEALBOT_RANK_1] = { Group = HEALBOT_FLASH_OF_LIGHT, Level = 20 },
+ [HEALBOT_FLASH_OF_LIGHT .. HEALBOT_RANK_2] = { Group = HEALBOT_FLASH_OF_LIGHT, Level = 26 },
+ [HEALBOT_FLASH_OF_LIGHT .. HEALBOT_RANK_3] = { Group = HEALBOT_FLASH_OF_LIGHT, Level = 34 },
+ [HEALBOT_FLASH_OF_LIGHT .. HEALBOT_RANK_4] = { Group = HEALBOT_FLASH_OF_LIGHT, Level = 42 },
+ [HEALBOT_FLASH_OF_LIGHT .. HEALBOT_RANK_5] = { Group = HEALBOT_FLASH_OF_LIGHT, Level = 50 },
+ [HEALBOT_FLASH_OF_LIGHT .. HEALBOT_RANK_6] = { Group = HEALBOT_FLASH_OF_LIGHT, Level = 58 },
+
+-- DRUID
+
+ [HEALBOT_REJUVENATION .. HEALBOT_RANK_1 ] = { Group = HEALBOT_REJUVENATION, Level = 4, Buff = HEALBOT_BUFF_REJUVENATION },
+ [HEALBOT_REJUVENATION .. HEALBOT_RANK_2 ] = { Group = HEALBOT_REJUVENATION, Level = 10, Buff = HEALBOT_BUFF_REJUVENATION },
+ [HEALBOT_REJUVENATION .. HEALBOT_RANK_3 ] = { Group = HEALBOT_REJUVENATION, Level = 16, Buff = HEALBOT_BUFF_REJUVENATION },
+ [HEALBOT_REJUVENATION .. HEALBOT_RANK_4 ] = { Group = HEALBOT_REJUVENATION, Level = 22, Buff = HEALBOT_BUFF_REJUVENATION },
+ [HEALBOT_REJUVENATION .. HEALBOT_RANK_5 ] = { Group = HEALBOT_REJUVENATION, Level = 28, Buff = HEALBOT_BUFF_REJUVENATION },
+ [HEALBOT_REJUVENATION .. HEALBOT_RANK_6 ] = { Group = HEALBOT_REJUVENATION, Level = 34, Buff = HEALBOT_BUFF_REJUVENATION },
+ [HEALBOT_REJUVENATION .. HEALBOT_RANK_7 ] = { Group = HEALBOT_REJUVENATION, Level = 40, Buff = HEALBOT_BUFF_REJUVENATION },
+ [HEALBOT_REJUVENATION .. HEALBOT_RANK_8 ] = { Group = HEALBOT_REJUVENATION, Level = 46, Buff = HEALBOT_BUFF_REJUVENATION },
+ [HEALBOT_REJUVENATION .. HEALBOT_RANK_9 ] = { Group = HEALBOT_REJUVENATION, Level = 52, Buff = HEALBOT_BUFF_REJUVENATION },
+ [HEALBOT_REJUVENATION .. HEALBOT_RANK_10] = { Group = HEALBOT_REJUVENATION, Level = 58, Buff = HEALBOT_BUFF_REJUVENATION },
+ [HEALBOT_REJUVENATION .. HEALBOT_RANK_11] = { Group = HEALBOT_REJUVENATION, Level = 60, Buff = HEALBOT_BUFF_REJUVENATION },
+
+ [HEALBOT_HEALING_TOUCH .. HEALBOT_RANK_1 ] = { Group = HEALBOT_HEALING_TOUCH, Level = 1 },
+ [HEALBOT_HEALING_TOUCH .. HEALBOT_RANK_2 ] = { Group = HEALBOT_HEALING_TOUCH, Level = 8 },
+ [HEALBOT_HEALING_TOUCH .. HEALBOT_RANK_3 ] = { Group = HEALBOT_HEALING_TOUCH, Level = 14 },
+ [HEALBOT_HEALING_TOUCH .. HEALBOT_RANK_4 ] = { Group = HEALBOT_HEALING_TOUCH, Level = 20 },
+ [HEALBOT_HEALING_TOUCH .. HEALBOT_RANK_5 ] = { Group = HEALBOT_HEALING_TOUCH, Level = 26 },
+ [HEALBOT_HEALING_TOUCH .. HEALBOT_RANK_6 ] = { Group = HEALBOT_HEALING_TOUCH, Level = 32 },
+ [HEALBOT_HEALING_TOUCH .. HEALBOT_RANK_7 ] = { Group = HEALBOT_HEALING_TOUCH, Level = 38 },
+ [HEALBOT_HEALING_TOUCH .. HEALBOT_RANK_8 ] = { Group = HEALBOT_HEALING_TOUCH, Level = 44 },
+ [HEALBOT_HEALING_TOUCH .. HEALBOT_RANK_9 ] = { Group = HEALBOT_HEALING_TOUCH, Level = 50 },
+ [HEALBOT_HEALING_TOUCH .. HEALBOT_RANK_10] = { Group = HEALBOT_HEALING_TOUCH, Level = 56 },
+ [HEALBOT_HEALING_TOUCH .. HEALBOT_RANK_11] = { Group = HEALBOT_HEALING_TOUCH, Level = 60 },
+
+ [HEALBOT_REGROWTH .. HEALBOT_RANK_1] = { Group = HEALBOT_REGROWTH, Level = 12, Buff = HEALBOT_BUFF_REGROWTH },
+ [HEALBOT_REGROWTH .. HEALBOT_RANK_2] = { Group = HEALBOT_REGROWTH, Level = 18, Buff = HEALBOT_BUFF_REGROWTH },
+ [HEALBOT_REGROWTH .. HEALBOT_RANK_3] = { Group = HEALBOT_REGROWTH, Level = 24, Buff = HEALBOT_BUFF_REGROWTH },
+ [HEALBOT_REGROWTH .. HEALBOT_RANK_4] = { Group = HEALBOT_REGROWTH, Level = 30, Buff = HEALBOT_BUFF_REGROWTH },
+ [HEALBOT_REGROWTH .. HEALBOT_RANK_5] = { Group = HEALBOT_REGROWTH, Level = 36, Buff = HEALBOT_BUFF_REGROWTH },
+ [HEALBOT_REGROWTH .. HEALBOT_RANK_6] = { Group = HEALBOT_REGROWTH, Level = 42, Buff = HEALBOT_BUFF_REGROWTH },
+ [HEALBOT_REGROWTH .. HEALBOT_RANK_7] = { Group = HEALBOT_REGROWTH, Level = 48, Buff = HEALBOT_BUFF_REGROWTH },
+ [HEALBOT_REGROWTH .. HEALBOT_RANK_8] = { Group = HEALBOT_REGROWTH, Level = 54, Buff = HEALBOT_BUFF_REGROWTH },
+ [HEALBOT_REGROWTH .. HEALBOT_RANK_9] = { Group = HEALBOT_REGROWTH, Level = 60, Buff = HEALBOT_BUFF_REGROWTH },
+
+-- PRIEST
+
+ [HEALBOT_LESSER_HEAL .. HEALBOT_RANK_1] = { Group = HEALBOT_LESSER_HEAL, Level = 1 },
+ [HEALBOT_LESSER_HEAL .. HEALBOT_RANK_2] = { Group = HEALBOT_LESSER_HEAL, Level = 4 },
+ [HEALBOT_LESSER_HEAL .. HEALBOT_RANK_3] = { Group = HEALBOT_LESSER_HEAL, Level = 10 },
+
+ [HEALBOT_HEAL .. HEALBOT_RANK_1] = { Group = HEALBOT_HEAL, Level = 16 },
+ [HEALBOT_HEAL .. HEALBOT_RANK_2] = { Group = HEALBOT_HEAL, Level = 22 },
+ [HEALBOT_HEAL .. HEALBOT_RANK_3] = { Group = HEALBOT_HEAL, Level = 28 },
+ [HEALBOT_HEAL .. HEALBOT_RANK_4] = { Group = HEALBOT_HEAL, Level = 34 },
+
+ [HEALBOT_GREATER_HEAL .. HEALBOT_RANK_1] = { Group = HEALBOT_GREATER_HEAL, Level = 40 },
+ [HEALBOT_GREATER_HEAL .. HEALBOT_RANK_2] = { Group = HEALBOT_GREATER_HEAL, Level = 46 },
+ [HEALBOT_GREATER_HEAL .. HEALBOT_RANK_3] = { Group = HEALBOT_GREATER_HEAL, Level = 52 },
+ [HEALBOT_GREATER_HEAL .. HEALBOT_RANK_4] = { Group = HEALBOT_GREATER_HEAL, Level = 58 },
+ [HEALBOT_GREATER_HEAL .. HEALBOT_RANK_5] = { Group = HEALBOT_GREATER_HEAL, Level = 60 },
+
+ [HEALBOT_RENEW .. HEALBOT_RANK_1] = { Group = HEALBOT_RENEW, Level = 8, Buff = HEALBOT_BUFF_RENEW },
+ [HEALBOT_RENEW .. HEALBOT_RANK_2] = { Group = HEALBOT_RENEW, Level = 14, Buff = HEALBOT_BUFF_RENEW },
+ [HEALBOT_RENEW .. HEALBOT_RANK_3] = { Group = HEALBOT_RENEW, Level = 20, Buff = HEALBOT_BUFF_RENEW },
+ [HEALBOT_RENEW .. HEALBOT_RANK_4] = { Group = HEALBOT_RENEW, Level = 26, Buff = HEALBOT_BUFF_RENEW },
+ [HEALBOT_RENEW .. HEALBOT_RANK_5] = { Group = HEALBOT_RENEW, Level = 32, Buff = HEALBOT_BUFF_RENEW },
+ [HEALBOT_RENEW .. HEALBOT_RANK_6] = { Group = HEALBOT_RENEW, Level = 38, Buff = HEALBOT_BUFF_RENEW },
+ [HEALBOT_RENEW .. HEALBOT_RANK_7] = { Group = HEALBOT_RENEW, Level = 44, Buff = HEALBOT_BUFF_RENEW },
+ [HEALBOT_RENEW .. HEALBOT_RANK_8] = { Group = HEALBOT_RENEW, Level = 50, Buff = HEALBOT_BUFF_RENEW },
+ [HEALBOT_RENEW .. HEALBOT_RANK_9] = { Group = HEALBOT_RENEW, Level = 56, Buff = HEALBOT_BUFF_RENEW },
+ [HEALBOT_RENEW .. HEALBOT_RANK_10] = { Group = HEALBOT_RENEW, Level = 60, Buff = HEALBOT_BUFF_RENEW },
+
+ [HEALBOT_FLASH_HEAL .. HEALBOT_RANK_1] = { Group = HEALBOT_FLASH_HEAL, Level = 20 },
+ [HEALBOT_FLASH_HEAL .. HEALBOT_RANK_2] = { Group = HEALBOT_FLASH_HEAL, Level = 26 },
+ [HEALBOT_FLASH_HEAL .. HEALBOT_RANK_3] = { Group = HEALBOT_FLASH_HEAL, Level = 32 },
+ [HEALBOT_FLASH_HEAL .. HEALBOT_RANK_4] = { Group = HEALBOT_FLASH_HEAL, Level = 38 },
+ [HEALBOT_FLASH_HEAL .. HEALBOT_RANK_5] = { Group = HEALBOT_FLASH_HEAL, Level = 44 },
+ [HEALBOT_FLASH_HEAL .. HEALBOT_RANK_6] = { Group = HEALBOT_FLASH_HEAL, Level = 50 },
+ [HEALBOT_FLASH_HEAL .. HEALBOT_RANK_7] = { Group = HEALBOT_FLASH_HEAL, Level = 56 },
+
+ [HEALBOT_POWER_WORD_SHIELD .. HEALBOT_RANK_1] = { Group = HEALBOT_POWER_WORD_SHIELD, Level = 6, Buff= HEALBOT_BUFF_POWER_WORD_SHIELD, Debuff = HEALBOT_DEBUF_WEAKENED_SOUL },
+ [HEALBOT_POWER_WORD_SHIELD .. HEALBOT_RANK_2] = { Group = HEALBOT_POWER_WORD_SHIELD, Level = 12, Buff= HEALBOT_BUFF_POWER_WORD_SHIELD, Debuff = HEALBOT_DEBUF_WEAKENED_SOUL },
+ [HEALBOT_POWER_WORD_SHIELD .. HEALBOT_RANK_3] = { Group = HEALBOT_POWER_WORD_SHIELD, Level = 18, Buff= HEALBOT_BUFF_POWER_WORD_SHIELD, Debuff = HEALBOT_DEBUF_WEAKENED_SOUL },
+ [HEALBOT_POWER_WORD_SHIELD .. HEALBOT_RANK_4] = { Group = HEALBOT_POWER_WORD_SHIELD, Level = 24, Buff= HEALBOT_BUFF_POWER_WORD_SHIELD, Debuff = HEALBOT_DEBUF_WEAKENED_SOUL },
+ [HEALBOT_POWER_WORD_SHIELD .. HEALBOT_RANK_5] = { Group = HEALBOT_POWER_WORD_SHIELD, Level = 30, Buff= HEALBOT_BUFF_POWER_WORD_SHIELD, Debuff = HEALBOT_DEBUF_WEAKENED_SOUL },
+ [HEALBOT_POWER_WORD_SHIELD .. HEALBOT_RANK_6] = { Group = HEALBOT_POWER_WORD_SHIELD, Level = 36, Buff= HEALBOT_BUFF_POWER_WORD_SHIELD, Debuff = HEALBOT_DEBUF_WEAKENED_SOUL },
+ [HEALBOT_POWER_WORD_SHIELD .. HEALBOT_RANK_7] = { Group = HEALBOT_POWER_WORD_SHIELD, Level = 42, Buff= HEALBOT_BUFF_POWER_WORD_SHIELD, Debuff = HEALBOT_DEBUF_WEAKENED_SOUL },
+ [HEALBOT_POWER_WORD_SHIELD .. HEALBOT_RANK_8] = { Group = HEALBOT_POWER_WORD_SHIELD, Level = 48, Buff= HEALBOT_BUFF_POWER_WORD_SHIELD, Debuff = HEALBOT_DEBUF_WEAKENED_SOUL },
+ [HEALBOT_POWER_WORD_SHIELD .. HEALBOT_RANK_9] = { Group = HEALBOT_POWER_WORD_SHIELD, Level = 54, Buff= HEALBOT_BUFF_POWER_WORD_SHIELD, Debuff = HEALBOT_DEBUF_WEAKENED_SOUL },
+ [HEALBOT_POWER_WORD_SHIELD .. HEALBOT_RANK_10] = { Group = HEALBOT_POWER_WORD_SHIELD, Level = 60, Buff= HEALBOT_BUFF_POWER_WORD_SHIELD, Debuff = HEALBOT_DEBUF_WEAKENED_SOUL },
+
+-- SHAMAN
+
+ [HEALBOT_HEALING_WAVE .. HEALBOT_RANK_1] = { Group = HEALBOT_HEALING_WAVE, Level = 1 },
+ [HEALBOT_HEALING_WAVE .. HEALBOT_RANK_2] = { Group = HEALBOT_HEALING_WAVE, Level = 6 },
+ [HEALBOT_HEALING_WAVE .. HEALBOT_RANK_3] = { Group = HEALBOT_HEALING_WAVE, Level = 12 },
+ [HEALBOT_HEALING_WAVE .. HEALBOT_RANK_4] = { Group = HEALBOT_HEALING_WAVE, Level = 18 },
+ [HEALBOT_HEALING_WAVE .. HEALBOT_RANK_5] = { Group = HEALBOT_HEALING_WAVE, Level = 24 },
+ [HEALBOT_HEALING_WAVE .. HEALBOT_RANK_6] = { Group = HEALBOT_HEALING_WAVE, Level = 32 },
+ [HEALBOT_HEALING_WAVE .. HEALBOT_RANK_7] = { Group = HEALBOT_HEALING_WAVE, Level = 40 },
+ [HEALBOT_HEALING_WAVE .. HEALBOT_RANK_8] = { Group = HEALBOT_HEALING_WAVE, Level = 48 },
+ [HEALBOT_HEALING_WAVE .. HEALBOT_RANK_9] = { Group = HEALBOT_HEALING_WAVE, Level = 56 },
+ [HEALBOT_HEALING_WAVE .. HEALBOT_RANK_10] = { Group = HEALBOT_HEALING_WAVE, Level = 60 },
+
+ [HEALBOT_LESSER_HEALING_WAVE .. HEALBOT_RANK_1] = { Group = HEALBOT_LESSER_HEALING_WAVE, Level = 20 },
+ [HEALBOT_LESSER_HEALING_WAVE .. HEALBOT_RANK_2] = { Group = HEALBOT_LESSER_HEALING_WAVE, Level = 28 },
+ [HEALBOT_LESSER_HEALING_WAVE .. HEALBOT_RANK_3] = { Group = HEALBOT_LESSER_HEALING_WAVE, Level = 36 },
+ [HEALBOT_LESSER_HEALING_WAVE .. HEALBOT_RANK_4] = { Group = HEALBOT_LESSER_HEALING_WAVE, Level = 44 },
+ [HEALBOT_LESSER_HEALING_WAVE .. HEALBOT_RANK_5] = { Group = HEALBOT_LESSER_HEALING_WAVE, Level = 52 },
+ [HEALBOT_LESSER_HEALING_WAVE .. HEALBOT_RANK_6] = { Group = HEALBOT_LESSER_HEALING_WAVE, Level = 60 },
+
+};
+
+HealBot_Debuff_Spells = {
+ [HEALBOT_PALADIN] = {
+ HEALBOT_PURIFY,
+ HEALBOT_CLEANSE,
+ },
+ [HEALBOT_DRUID] = {
+ HEALBOT_CURE_POISON,
+ HEALBOT_REMOVE_CURSE,
+ HEALBOT_ABOLISH_POISON,
+ },
+ [HEALBOT_PRIEST] = {
+ HEALBOT_CURE_DISEASE,
+ HEALBOT_ABOLISH_DISEASE,
+ HEALBOT_DISPEL_MAGIC..HEALBOT_RANK_1,
+ HEALBOT_DISPEL_MAGIC..HEALBOT_RANK_2,
+ },
+ [HEALBOT_SHAMAN] = {
+ HEALBOT_CURE_POISON,
+ HEALBOT_CURE_DISEASE,
+ },
+}
+
+HealBot_Buff_Spells = {
+ [HEALBOT_PALADIN] = {
+ HEALBOT_BLESSING_OF_KINGS,
+ HEALBOT_BLESSING_OF_MIGHT,
+ HEALBOT_BLESSING_OF_WISDOM,
+ HEALBOT_BLESSING_OF_SALVATION,
+ HEALBOT_BLESSING_OF_LIGHT,
+ HEALBOT_BLESSING_OF_SANCTUARY,
+ },
+ [HEALBOT_DRUID] = {
+ HEALBOT_MARK_OF_THE_WILD,
+ HEALBOT_GIFT_OF_THE_WILD,
+ HEALBOT_THORNS,
+ HEALBOT_OMEN_OF_CLARITY,
+ },
+ [HEALBOT_PRIEST] = {
+ HEALBOT_POWER_WORD_FORTITUDE,
+ HEALBOT_PRAYER_OF_FORTITUDE,
+ HEALBOT_DIVINE_SPIRIT,
+ HEALBOT_PRAYER_OF_SPIRIT,
+ HEALBOT_SHADOW_PROTECTION,
+ HEALBOT_PRAYER_OF_SHADOW_PROTECTION,
+ HEALBOT_INNER_FIRE,
+ HEALBOT_FEAR_WARD,
+ },
+ [HEALBOT_MAGE] = {
+ HEALBOT_ARCANE_INTELLECT,
+ HEALBOT_ARCANE_BRILLIANCE,
+ HEALBOT_DAMPEN_MAGIC,
+ HEALBOT_AMPLIFY_MAGIC,
+ },
+ [HEALBOT_SHAMAN] = {
+ HEALBOT_ROCKBITER_WEAPON,
+ HEALBOT_FLAMETONGUE_WEAPON,
+ HEALBOT_FROSTBRAND_WEAPON,
+ HEALBOT_WINDFURY_WEAPON,
+ },
+}
+
+HealBot_Debuff_Types = {
+ [HEALBOT_PURIFY] = {HEALBOT_DISEASE_en, HEALBOT_POISON_en},
+ [HEALBOT_CLEANSE] = {HEALBOT_DISEASE_en, HEALBOT_POISON_en, HEALBOT_MAGIC_en},
+ [HEALBOT_CURE_POISON] = {HEALBOT_POISON_en},
+ [HEALBOT_REMOVE_CURSE] = {HEALBOT_CURSE_en},
+ [HEALBOT_ABOLISH_POISON] = {HEALBOT_POISON_en},
+ [HEALBOT_CURE_DISEASE] = {HEALBOT_DISEASE_en},
+ [HEALBOT_ABOLISH_DISEASE] = {HEALBOT_DISEASE_en},
+ [HEALBOT_DISPEL_MAGIC..HEALBOT_RANK_1] = {HEALBOT_MAGIC_en},
+ [HEALBOT_DISPEL_MAGIC..HEALBOT_RANK_2] = {HEALBOT_MAGIC_en},
+}
+
+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_Heals = {};
+
+HealBot_CurrentSpells = {};
+
+HealBot_EmergInc = {};
+HealBot_CDCInc = {};
+HealBot_Skins = {};
+HealBot_ErrorCnt=0;
+HealBot_SpamCnt=0;
+HealBot_Action_TooltipUnit=nil;
+HealBot_Ressing = {};
+HealBot_IamRessing = false;
diff --git a/HealBot_Error.xml b/HealBot_Error.xml
new file mode 100644
index 0000000..bdc0475
--- /dev/null
+++ b/HealBot_Error.xml
@@ -0,0 +1,373 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ HealBot_Errors_OnShow(this);
+
+
+ HealBot_Errors_OnHide(this);
+
+
+ HealBot_Errors_OnDragStart(this,arg1);
+
+
+ HealBot_Errors_OnDragStop(this);
+
+
+
+
diff --git a/HealBot_Errors.lua b/HealBot_Errors.lua
new file mode 100644
index 0000000..6049ecb
--- /dev/null
+++ b/HealBot_Errors.lua
@@ -0,0 +1,35 @@
+function HealBot_Errors_OnLoad(this)
+ -- do nothing
+end
+
+function HealBot_Errors_OnShow(this)
+ local client = getglobal("HealBot_Error_Clientx")
+ client:SetText("Client="..GetLocale())
+ HealBot_Error_Versionx:SetText("Healbot verion="..HEALBOT_VERSION)
+ HealBot_Error_Classx:SetText("Player class="..HealBot_UnitClass("player"))
+end
+
+function HealBot_Errors_OnHide(this)
+ local errtext;
+ HealBot_StopMoving(this);
+ for j=1,28 do
+ errtext = getglobal("HealBot_Error"..j);
+ errtext:SetText(" ")
+ end
+ HealBot_ErrorCnt=0;
+end
+
+function HealBot_Errors_OnDragStart(this,arg1)
+ HealBot_StartMoving(this);
+end
+
+function HealBot_Errors_OnDragStop(this)
+ HealBot_StopMoving(this);
+end
+
+function HealBot_ErrorsIn(msg,id)
+ local errtext = getglobal("HealBot_Error"..id);
+ errtext:SetText(msg)
+ ShowUIPanel(HealBot_Error);
+end
+
diff --git a/HealBot_Localization.de.lua b/HealBot_Localization.de.lua
new file mode 100644
index 0000000..cba0348
--- /dev/null
+++ b/HealBot_Localization.de.lua
@@ -0,0 +1,351 @@
+------------
+-- GERMAN --
+------------
+
+-- Ä = \195\132
+-- Ö = \195\150
+-- Ü = \195\156
+-- ß = \195\159
+-- ä = \195\164
+-- ö = \195\182
+-- ü = \195\188
+
+
+if (GetLocale() == "deDE") then
+
+-------------------
+-- Compatibility --
+-------------------
+
+HEALBOT_DRUID = "Druide";
+HEALBOT_HUNTER = "J\195\164ger";
+HEALBOT_MAGE = "Magier";
+HEALBOT_PALADIN = "Paladin";
+HEALBOT_PRIEST = "Priester";
+HEALBOT_ROGUE = "Schurke";
+HEALBOT_SHAMAN = "Schamane";
+HEALBOT_WARLOCK = "Hexenmeister";
+HEALBOT_WARRIOR = "Krieger";
+
+HEALBOT_BANDAGES = "Verb\195\164nde";
+
+HEALBOT_LINEN_BANDAGE = "Leinenverband";
+HEALBOT_WOOL_BANDAGE = "Wollverband";
+HEALBOT_SILK_BANDAGE = "Seidenverband";
+HEALBOT_MAGEWEAVE_BANDAGE = "Magiestoffverband";
+HEALBOT_RUNECLOTH_BANDAGE = "Runenstoffverband";
+
+HEALBOT_HEAVY_LINEN_BANDAGE = "Schwerer Leinenverband";
+HEALBOT_HEAVY_WOOL_BANDAGE = "Schwerer Wollverband";
+HEALBOT_HEAVY_SILK_BANDAGE = "Schwerer Seidenverband";
+HEALBOT_HEAVY_MAGEWEAVE_BANDAGE = "Schwerer Magiestoffverband";
+HEALBOT_HEAVY_RUNECLOTH_BANDAGE = "Schwerer Runenstoffverband";
+
+HEALBOT_HEALING_POTIONS = "Heiltr\195\164nke";
+
+HEALBOT_MINOR_HEALING_POTION = "Geringer Heiltrank";
+HEALBOT_LESSER_HEALING_POTION = "Schwacher Heiltrank";
+HEALBOT_HEALING_POTION = "Heiltrank";
+HEALBOT_GREATER_HEALING_POTION = "Gro\195\159er Heiltrank";
+HEALBOT_SUPERIOR_HEALING_POTION = "\195\156berragender Heiltrank";
+HEALBOT_MAJOR_HEALING_POTION = "Erheblicher Heiltrank";
+
+HEALBOT_HEALTHSTONES = "Gesundheitssteine";
+
+HEALBOT_MINOR_HEALTHSTONE = "Geringer Gesundheitsstein";
+HEALBOT_LESSER_HEALTHSTONE = "Schwacher Gesundheitsstein";
+HEALBOT_HEALTHSTONE = "Gesundheitsstein";
+HEALBOT_GREATER_HEALTHSTONE = "Gro\195\159er Gesundheitsstein";
+HEALBOT_MAJOR_HEALTHSTONE = "Erheblicher Gesundheitsstein";
+
+HEALBOT_FLASH_HEAL = "Blitzheilung";
+HEALBOT_FLASH_OF_LIGHT = "Lichtblitz";
+HEALBOT_HOLY_SHOCK = "Heiliger Schock";
+HEALBOT_GREATER_HEAL = "Gro\195\159e Heilung";
+HEALBOT_HEALING_TOUCH = "Heilende Ber\195\188hrung";
+HEALBOT_HEAL = "Heilen";
+HEALBOT_HEALING_WAVE = "Welle der Heilung";
+HEALBOT_HOLY_LIGHT = "Heiliges Licht";
+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_REGROWTH = "Nachwachsen";
+HEALBOT_RENEW = "Erneuerung";
+HEALBOT_REJUVENATION = "Verj\195\188ngung";
+HEALBOT_PRAYER_OF_HEALING = "Gebet der Heilung";
+HEALBOT_CHAIN_HEAL = "Kettenheilung";
+
+HEALBOT_POWER_WORD_FORTITUDE = "Machtwort: Seelenst\195\164rke";
+HEALBOT_MARK_OF_THE_WILD = "Mal der Wildnis";
+HEALBOT_BLESSING_OF_SALVATION = "Segen der Rettung";
+
+HEALBOT_RESURRECTION = "Auferstehung";
+HEALBOT_REDEMPTION = "Erl\195\182sung";
+HEALBOT_REBIRTH = "Wiedergeburt";
+HEALBOT_ANCESTRALSPIRIT = "Geist der Ahnen";
+
+HEALBOT_CURE_DISEASE = "Krankheit heilen";
+HEALBOT_ABOLISH_DISEASE = "Krankheit aufheben";
+HEALBOT_PURIFY = "L\195\164utern";
+HEALBOT_CLEANSE = "Reinigung des Glaubens";
+HEALBOT_DISPEL_MAGIC = "Magiebannung";
+HEALBOT_CURE_POISON = "Vergiftung heilen";
+HEALBOT_ABOLISH_POISON = "Vergiftung aufheben";
+HEALBOT_REMOVE_CURSE = "Fluch aufheben";
+HEALBOT_DISEASE = "Krankheit";
+HEALBOT_MAGIC = "Magie";
+HEALBOT_CURSE = "Fluch";
+HEALBOT_POISON = "Gift";
+
+HEALBOT_RANK_1 = "(Rang 1)";
+HEALBOT_RANK_2 = "(Rang 2)";
+HEALBOT_RANK_3 = "(Rang 3)";
+HEALBOT_RANK_4 = "(Rang 4)";
+HEALBOT_RANK_5 = "(Rang 5)";
+HEALBOT_RANK_6 = "(Rang 6)";
+HEALBOT_RANK_7 = "(Rang 7)";
+HEALBOT_RANK_8 = "(Rang 8)";
+HEALBOT_RANK_9 = "(Rang 9)";
+HEALBOT_RANK_10 = "(Rang 10)";
+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 = {
+ HEAL = "Heilung",
+}
+
+HB_BONUSSCANNER_PREFIX_EQUIP = "Anlegen: ";
+HB_BONUSSCANNER_PREFIX_SET = "Set: ";
+
+HB_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 = {
+ ["Heilzauber"] = "HEAL",
+ ["Heilung und Zauberschaden"] = {"HEAL","DMG"},
+};
+
+HB_BONUSSCANNER_PATTERNS_OTHER = {
+ { pattern = "Zandalarianisches Siegel des Mojo", effect = {"DMG", "HEAL"}, value = 18 },
+ { pattern = "Zandalarianisches Siegel der Inneren Ruhe", effect = "HEAL", value = 33 },
+
+ { pattern = "Schwaches Zauber", effect = {"DMG", "HEAL"}, value = 8 },
+ { pattern = "Geringes Zauber", effect = {"DMG", "HEAL"}, value = 16 },
+ { pattern = "Zauber", effect = {"DMG", "HEAL"}, value = 24 },
+ { pattern = "Hervorragendes Zauber", effect = {"DMG", "HEAL", "SPELLCRIT"}, value = {36, 36, 1} },
+
+ { pattern = "Hervorragendes Mana", effect = { "MANAREG", "HEAL"}, value = {12, 25} }
+
+};
+
+HEALBOT_BUFF_FIRST_AID = "Interface\\Icons\\Spell_Holy_Heal";
+HEALBOT_BUFF_POWER_WORD_SHIELD = "Interface\\Icons\\Spell_Holy_PowerWordShield";
+HEALBOT_BUFF_REJUVENATION = "Interface\\Icons\\Spell_Nature_Rejuvenation";
+HEALBOT_BUFF_REGROWTH = "Interface\\Icons\\Spell_Nature_ResistNature";
+HEALBOT_BUFF_RENEW = "Interface\\Icons\\Spell_Holy_Renew";
+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";
+
+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"
+
+-----------------
+-- Translation --
+-----------------
+
+HEALBOT_ADDON = "HealBotBlue " .. HEALBOT_VERSION;
+HEALBOT_LOADED = " geladen.";
+
+HEALBOT_CASTINGSPELLONYOU = "Wirke %s auf Euch ...";
+HEALBOT_CASTINGSPELLONUNIT = "Wirke %s auf %s ...";
+HEALBOT_ABORTEDSPELLONUNIT = "... abgebrochen %s bei %s";
+
+HEALBOT_ACTION_TITLE = "HealBot";
+HEALBOT_ACTION_OPTIONS = "Optionen";
+HEALBOT_ACTION_ABORT = "Abbruch";
+
+HEALBOT_OPTIONS_TITLE = HEALBOT_ADDON;
+HEALBOT_OPTIONS_DEFAULTS = "Reset";
+HEALBOT_OPTIONS_CLOSE = "Schlie\195\159en";
+HEALBOT_OPTIONS_TAB_GENERAL = "Allg.";
+HEALBOT_OPTIONS_TAB_SPELLS = "Spr\195\188che";
+HEALBOT_OPTIONS_TAB_HEALING = "Heilung";
+HEALBOT_OPTIONS_TAB_CDC = "Debuffs";
+HEALBOT_OPTIONS_TAB_SKIN = "Skin"
+
+HEALBOT_OPTIONS_PANEL_TEXT = "Heilungspanel Optionen:"
+HEALBOT_OPTIONS_BARALPHA = "Leisten Transparenz";
+HEALBOT_OPTIONS_BARALPHAINHEAL = "Ankomm.Heilung Transparenz";
+HEALBOT_OPTIONS_ACTIONLOCKED = "Fenster fixieren";
+HEALBOT_OPTIONS_GROWUPWARDS = "Aufw\195\164rts sort.";
+HEALBOT_OPTIONS_AUTOSHOW = "Automatisch \195\150ffnen";
+HEALBOT_OPTIONS_PANELSOUNDS = "Sound beim \195\150ffnen";
+HEALBOT_OPTIONS_ALERTSECONDS = "Todescountdown";
+HEALBOT_OPTIONS_HIDEOPTIONS = "Verstecke Optionen Knopf";
+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_HEAL_CHATOPT = "Chat Optionen";
+
+HEALBOT_OPTIONS_SKINTEXT = "Skin"
+HEALBOT_SKINS_STD = "Standard"
+HEALBOT_OPTIONS_SKINTEXTURE = "Textur"
+HEALBOT_OPTIONS_SKINHEIGHT = "H\195\182he"
+HEALBOT_OPTIONS_SKINWIDTH = "Breite"
+HEALBOT_OPTIONS_SKINNUMCOLS = "Anzahl Spalten"
+HEALBOT_OPTIONS_SKINBRSPACE = "Reihenabstand"
+HEALBOT_OPTIONS_SKINBCSPACE = "Spaltenabstand"
+HEALBOT_OPTIONS_EXTRASORT = "Sort. Extraleisten nach"
+HEALBOT_SORTBY_NAME = "Name"
+HEALBOT_SORTBY_CLASS = "Klasse"
+HEALBOT_SORTBY_GROUP = "Gruppe"
+HEALBOT_SORTBY_MAXHEALTH = "Max Leben"
+HEALBOT_OPTIONS_DELSKIN = "L\195\182schen"
+HEALBOT_OPTIONS_NEWSKINTEXT = "Neuer Skin"
+HEALBOT_OPTIONS_SAVESKIN = "Speichern"
+HEALBOT_OPTIONS_SKINBARS = "Leisten Optionen"
+HEALBOT_OPTIONS_SKINPANEL = "Panel Farben"
+HEALBOT_SKIN_ENTEXT = "Aktiv"
+HEALBOT_SKIN_DISTEXT = "Inaktiv"
+HEALBOT_SKIN_DEBTEXT = "Debuff"
+HEALBOT_SKIN_BACKTEXT = "Hintergrund"
+HEALBOT_SKIN_BORDERTEXT = "Rand"
+HEALBOT_OPTIONS_HIDEABORT = "Verstecke Abbruch Knopf"
+HEALBOT_OPTIONS_SHOWHEADERS = "Zeige \195\156berschriften"
+
+HEALBOT_OPTIONS_ITEMS = "Items";
+HEALBOT_OPTIONS_SPELLS = "Spr\195\188che";
+
+HEALBOT_OPTIONS_COMBOCLASS = "Tastenkombinationen f\195\188r";
+HEALBOT_OPTIONS_CLICK = "Klick";
+HEALBOT_OPTIONS_SHIFT = "Shift+Klick:";
+HEALBOT_OPTIONS_CTRL = "Strg+Klick:";
+HEALBOT_OPTIONS_SHIFTCTRL = "Shift+Strg+Klick:";
+HEALBOT_OPTIONS_ENABLEHEALTHY = "Auch unverletzte Ziele heilen";
+
+HEALBOT_OPTIONS_CASTNOTIFY1 = "Keine Benachrichtigungen";
+HEALBOT_OPTIONS_CASTNOTIFY2 = "Nachricht an sich selbst";
+HEALBOT_OPTIONS_CASTNOTIFY3 = "Nachricht ans Ziel";
+HEALBOT_OPTIONS_CASTNOTIFY4 = "Nachricht an die Gruppe";
+HEALBOT_OPTIONS_CASTNOTIFY5 = "Nachricht an den Raid ";
+HEALBOT_OPTIONS_TARGETWHISPER = "Ziel bei Heilung anfl\195\188stern";
+
+HEALBOT_OPTIONS_HEAL_BUTTONS = "Heilungsknopf f\195\188r:"
+
+HEALBOT_OPTIONS_CDCBUTTONS = "Maustasten bei Debuffs";
+HEALBOT_OPTIONS_CDCLEFT = "Alt+Links";
+HEALBOT_OPTIONS_CDCRIGHT = "Alt+Rechts";
+HEALBOT_OPTIONS_CDCBARS = "Farbe f\195\188r Art des Zaubers";
+HEALBOT_OPTIONS_CDCCLASS = "\195\156berwache Klasse";
+HEALBOT_OPTIONS_CDCWARNINGS = "Warnung bei Debuffs";
+HEALBOT_OPTIONS_USEBUTTONS = "Definiere Spr\195\188che";
+HEALBOT_OPTIONS_CDC = "Heilen/Bannen/Reinigen f\195\188r";
+HEALBOT_OPTIONS_SHOWDEBUFFWARNING = "Zeige Warnung bei Debuff";
+HEALBOT_OPTIONS_SOUNDDEBUFFWARNING = "Spiele Ton bei Debuff";
+HEALBOT_OPTIONS_SOUND1 = "Ton 1"
+HEALBOT_OPTIONS_SOUND2 = "Ton 2"
+HEALBOT_OPTIONS_SOUND3 = "Ton 3"
+
+HEALBOT_OPTIONS_HEAL_BUTTONS = "Heilungsleisten f\195\188r";
+HEALBOT_OPTIONS_EMERGFILTER = "Notfall Optionen f\195\188r";
+
+HEALBOT_OPTIONS_GROUPHEALS = "Gruppe";
+HEALBOT_OPTIONS_TANKHEALS = "Maintanks";
+HEALBOT_OPTIONS_TARGETHEALS = "Ziele";
+HEALBOT_OPTIONS_EMERGENCYHEALS= "Notf\195\164lle";
+HEALBOT_OPTIONS_HEALLEVEL = "Heilstufe";
+HEALBOT_OPTIONS_ALERTLEVEL = "Alarmstufe";
+HEALBOT_OPTIONS_OVERHEAL = "Abbruch Knopf bei \195\156berheilung"
+HEALBOT_OPTIONS_SORTHEALTH = "Gesundheit";
+HEALBOT_OPTIONS_SORTPERCENT = "Prozent"
+HEALBOT_OPTIONS_SORTSURVIVAL = "Todescountdown";
+HEALBOT_OPTIONS_EMERGFCLASS = "Klassenauswahl nach";
+HEALBOT_OPTIONS_COMBOBUTTON = "Maustaste";
+HEALBOT_OPTIONS_BUTTONLEFT = "Linke";
+HEALBOT_OPTIONS_BUTTONMIDDLE = "Mittlere";
+HEALBOT_OPTIONS_BUTTONRIGHT = "Rechte";
+HEALBOT_OPTIONS_BUTTON4 = "Taste4";
+HEALBOT_OPTIONS_BUTTON5 = "Taste5";
+
+BINDING_HEADER_HEALBOT = "HealBot";
+BINDING_NAME_TOGGLEMAIN = "Hauptfenster an-/ausschalten";
+BINDING_NAME_HEALPLAYER = "Spieler heilen";
+BINDING_NAME_HEALPET = "Begleiter heilen";
+BINDING_NAME_HEALPARTY1 = "Gruppenmitglied 1 heilen";
+BINDING_NAME_HEALPARTY2 = "Gruppenmitglied 2 heilen";
+BINDING_NAME_HEALPARTY3 = "Gruppenmitglied 3 heilen";
+BINDING_NAME_HEALPARTY4 = "Gruppenmitglied 4 heilen";
+BINDING_NAME_HEALTARGET = "Ziel heilen";
+
+HEALBOT_OPTIONS_PROFILE = "Set Profile:";
+HEALBOT_OPTIONS_ProfilePvP = "PvP";
+HEALBOT_OPTIONS_ProfilePvE = "PvE";
+
+HEALBOT_CLASSES_ALL = "Alle Klassen";
+HEALBOT_CLASSES_MELEE = "Nahkampf";
+HEALBOT_CLASSES_RANGES = "Fernkampf";
+HEALBOT_CLASSES_HEALERS = "Heiler";
+HEALBOT_CLASSES_CUSTOM = "pers\195\182nlich";
+
+HEALBOT_OPTIONS_SHOWTOOLTIP = "Zeige Tooltips";
+HEALBOT_OPTIONS_SHOWDETTOOLTIP = "Zeige detaillierte Spruchinfos";
+HEALBOT_OPTIONS_SHOWUNITTOOLTIP = "Zeige Zielinfos";
+HEALBOT_OPTIONS_SHOWRECTOOLTIP = "Zeige empf. Sofortzauber";
+HEALBOT_TOOLTIP_POSDEFAULT = "Standardposition";
+HEALBOT_TOOLTIP_POSLEFT = "Links vom Healbot";
+HEALBOT_TOOLTIP_POSRIGHT = "Rechts vom Healbot";
+HEALBOT_TOOLTIP_POSABOVE = "\195\156ber dem Healbot";
+HEALBOT_TOOLTIP_POSBELOW = "Unter dem Healbot";
+
+HEALBOT_OPTIONS_SKINFHEIGHT = "Schrift Gr\195\182\195\159e"
+HEALBOT_OPTIONS_ABORTSIZE = "Abbruch Gr\195\182\195\159e"
+HEALBOT_OPTIONS_BARALPHADIS = "Inaktiv Transparenz"
+
+HEALBOT_TOOLTIP_RECOMMENDTEXT = "Sofortzauber Empfehlung"
+HEALBOT_TOOLTIP_NONE = "nicht verf\195\188gbar"
+HEALBOT_TOOLTIP_ITEMBONUS = "Item Bonus";
+HEALBOT_TOOLTIP_ACTUALBONUS = "Aktueller Bonus ist";
+HEALBOT_TOOLTIP_SHIELD = "Absorbiert"
+HEALBOT_WORDS_OVER = "\195\188ber";
+HEALBOT_WORDS_SEC = "Sek";
+HEALBOT_WORDS_TO = "zu";
+HEALBOT_WORDS_CAST = "Zauber"
+HEALBOT_WORDS_FOR = "f\195\188r";
+
+end
+
+
+
+
diff --git a/HealBot_Localization.en.lua b/HealBot_Localization.en.lua
new file mode 100644
index 0000000..de08eb5
--- /dev/null
+++ b/HealBot_Localization.en.lua
@@ -0,0 +1,385 @@
+HEALBOT_VERSION = "1.0";
+
+-------------
+-- ENGLISH --
+-------------
+
+-------------------
+-- Compatibility --
+-------------------
+
+HEALBOT_DRUID = "Druid";
+HEALBOT_HUNTER = "Hunter";
+HEALBOT_MAGE = "Mage";
+HEALBOT_PALADIN = "Paladin";
+HEALBOT_PRIEST = "Priest";
+HEALBOT_ROGUE = "Rogue";
+HEALBOT_SHAMAN = "Shaman";
+HEALBOT_WARLOCK = "Warlock";
+HEALBOT_WARRIOR = "Warrior";
+
+HEALBOT_BANDAGES = "Bandages";
+
+HEALBOT_LINEN_BANDAGE = "Linen Bandage";
+HEALBOT_WOOL_BANDAGE = "Wool Bandage";
+HEALBOT_SILK_BANDAGE = "Silk Bandage";
+HEALBOT_MAGEWEAVE_BANDAGE = "Mageweave Bandage";
+HEALBOT_RUNECLOTH_BANDAGE = "Runecloth Bandage";
+
+HEALBOT_HEAVY_LINEN_BANDAGE = "Heavy Linen Bandage";
+HEALBOT_HEAVY_WOOL_BANDAGE = "Heavy Wool Bandage";
+HEALBOT_HEAVY_SILK_BANDAGE = "Heavy Silk Bandage";
+HEALBOT_HEAVY_MAGEWEAVE_BANDAGE = "Heavy Mageweave Bandage";
+HEALBOT_HEAVY_RUNECLOTH_BANDAGE = "Heavy Runecloth Bandage";
+
+HEALBOT_HEALING_POTIONS = "Healing Potions";
+
+HEALBOT_MINOR_HEALING_POTION = "Minor Healing Potion";
+HEALBOT_LESSER_HEALING_POTION = "Lesser Healing Potion";
+HEALBOT_HEALING_POTION = "Healing Potion";
+HEALBOT_GREATER_HEALING_POTION = "Greater Healing Potion";
+HEALBOT_SUPERIOR_HEALING_POTION = "Superior Healing Potion";
+HEALBOT_MAJOR_HEALING_POTION = "Major Healing Potion";
+
+HEALBOT_HEALTHSTONES = "Healthstones";
+
+HEALBOT_MINOR_HEALTHSTONE = "Minor Healthstone";
+HEALBOT_LESSER_HEALTHSTONE = "Lesser Healthstone";
+HEALBOT_HEALTHSTONE = "Healthstone";
+HEALBOT_GREATER_HEALTHSTONE = "Greater Healthstone";
+HEALBOT_MAJOR_HEALTHSTONE = "Major Healthstone";
+
+HEALBOT_FLASH_HEAL = "Flash Heal";
+HEALBOT_FLASH_OF_LIGHT = "Flash of Light";
+HEALBOT_HOLY_SHOCK = "Holy Shock";
+HEALBOT_GREATER_HEAL = "Greater Heal";
+HEALBOT_HEALING_TOUCH = "Healing Touch";
+HEALBOT_HEAL = "Heal";
+HEALBOT_HEALING_WAVE = "Healing Wave";
+HEALBOT_HOLY_LIGHT = "Holy Light";
+HEALBOT_LESSER_HEAL = "Lesser Heal";
+HEALBOT_LESSER_HEALING_WAVE = "Lesser Healing Wave";
+HEALBOT_MEND_PET = "Mend Pet";
+HEALBOT_POWER_WORD_SHIELD = "Power Word: Shield";
+HEALBOT_REGROWTH = "Regrowth";
+HEALBOT_RENEW = "Renew";
+HEALBOT_REJUVENATION = "Rejuvenation";
+HEALBOT_PRAYER_OF_HEALING = "Prayer of Healing";
+HEALBOT_CHAIN_HEAL = "Chain Heal";
+
+HEALBOT_ROCKBITER_WEAPON = "Rockbiter Weapon";
+HEALBOT_FLAMETONGUE_WEAPON = "Flametongue Weapon";
+HEALBOT_FROSTBRAND_WEAPON = "Frostbrand Weapon";
+HEALBOT_WINDFURY_WEAPON = "Windfury Weapon";
+HEALBOT_POWER_WORD_FORTITUDE = "Power Word: Fortitude";
+HEALBOT_MARK_OF_THE_WILD = "Mark of the Wild";
+HEALBOT_GIFT_OF_THE_WILD = "Gift of the Wild";
+HEALBOT_BLESSING_OF_SALVATION = "Blessing of Salvation";
+HEALBOT_BLESSING_OF_MIGHT = "Blessing of Might";
+HEALBOT_BLESSING_OF_WISDOM = "Blessing of Wisdom";
+HEALBOT_BLESSING_OF_KINGS = "Blessing of Kings";
+HEALBOT_BLESSING_OF_LIGHT = "Blessing of Light";
+HEALBOT_BLESSING_OF_SANCTUARY = "Blessing of Sanctuary";
+HEALBOT_DIVINE_SPIRIT = "Divine Spirit";
+HEALBOT_PRAYER_OF_FORTITUDE = "Prayer of Fortitude";
+HEALBOT_PRAYER_OF_SPIRIT = "Prayer of Spirit";
+HEALBOT_SHADOW_PROTECTION = "Shadow Protection";
+HEALBOT_PRAYER_OF_SHADOW_PROTECTION = "Prayer of Shadow Protection";
+HEALBOT_ARCANE_INTELLECT = "Arcane Intellect";
+HEALBOT_ARCANE_BRILLIANCE = "Arcane Brilliance";
+HEALBOT_DAMPEN_MAGIC = "Dampen Magic";
+HEALBOT_AMPLIFY_MAGIC = "Amplify Magic";
+HEALBOT_THORNS = "Thorns";
+HEALBOT_OMEN_OF_CLARITY = "Omen of Clarity";
+HEALBOT_INNER_FIRE = "Inner Fire";
+HEALBOT_FEAR_WARD = "Fear Ward";
+
+HEALBOT_RESURRECTION = "Resurrection";
+HEALBOT_REDEMPTION = "Redemption";
+HEALBOT_REBIRTH = "Rebirth";
+HEALBOT_ANCESTRALSPIRIT = "Ancestral Spirit";
+
+HEALBOT_PURIFY = "Purify";
+HEALBOT_CLEANSE = "Cleanse";
+HEALBOT_CURE_POISON = "Cure Poison";
+HEALBOT_REMOVE_CURSE = "Remove Curse";
+HEALBOT_ABOLISH_POISON = "Abolish Poison";
+HEALBOT_CURE_DISEASE = "Cure Disease";
+HEALBOT_ABOLISH_DISEASE = "Abolish Disease";
+HEALBOT_DISPEL_MAGIC = "Dispel Magic";
+HEALBOT_DISEASE = "Disease";
+HEALBOT_MAGIC = "Magic";
+HEALBOT_CURSE = "Curse";
+HEALBOT_POISON = "Poison";
+HEALBOT_DISEASE_en = "Disease"; -- Do NOT localize this value.
+HEALBOT_MAGIC_en = "Magic"; -- Do NOT localize this value.
+HEALBOT_CURSE_en = "Curse"; -- Do NOT localize this value.
+HEALBOT_POISON_en = "Poison"; -- Do NOT localize this value.
+
+HEALBOT_RANK_1 = "(Rank 1)";
+HEALBOT_RANK_2 = "(Rank 2)";
+HEALBOT_RANK_3 = "(Rank 3)";
+HEALBOT_RANK_4 = "(Rank 4)";
+HEALBOT_RANK_5 = "(Rank 5)";
+HEALBOT_RANK_6 = "(Rank 6)";
+HEALBOT_RANK_7 = "(Rank 7)";
+HEALBOT_RANK_8 = "(Rank 8)";
+HEALBOT_RANK_9 = "(Rank 9)";
+HEALBOT_RANK_10 = "(Rank 10)";
+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 = {
+ HEAL = "Healing",
+};
+
+HB_BONUSSCANNER_PREFIX_EQUIP = "Equip: ";
+HB_BONUSSCANNER_PREFIX_SET = "Set: ";
+
+HB_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 = {
+ ["Healing Spells"] = "HEAL",
+ ["Increases Healing"] = "HEAL",
+ ["Healing and Spell Damage"] = {"HEAL", "DMG"},
+ ["Damage and Healing Spells"] = {"HEAL", "DMG"},
+ ["Spell Damage and Healing"] = {"HEAL", "DMG"},
+};
+
+HB_BONUSSCANNER_PATTERNS_OTHER = {
+ { pattern = "Zandalar Signet of Mojo", effect = {"DMG", "HEAL"}, value = 18 },
+ { pattern = "Zandalar Signet of Serenity", effect = "HEAL", value = 33 },
+
+ { pattern = "Minor Wizard Oil", effect = {"DMG", "HEAL"}, value = 8 },
+ { pattern = "Lesser Wizard Oil", effect = {"DMG", "HEAL"}, value = 16 },
+ { pattern = "Wizard Oil", effect = {"DMG", "HEAL"}, value = 24 },
+ { pattern = "Brilliant Wizard Oil", effect = {"DMG", "HEAL", "SPELLCRIT"}, value = {36, 36, 1} },
+
+ { pattern = "Brilliant Mana Oil", effect = { "MANAREG", "HEAL"}, value = {12, 25} },
+};
+
+HEALBOT_BUFF_FIRST_AID = "Interface\\Icons\\Spell_Holy_Heal";
+HEALBOT_BUFF_POWER_WORD_SHIELD = "Interface\\Icons\\Spell_Holy_PowerWordShield";
+HEALBOT_BUFF_REJUVENATION = "Interface\\Icons\\Spell_Nature_Rejuvenation";
+HEALBOT_BUFF_REGROWTH = "Interface\\Icons\\Spell_Nature_ResistNature";
+HEALBOT_BUFF_RENEW = "Interface\\Icons\\Spell_Holy_Renew";
+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";
+
+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"
+
+
+-----------------
+-- Translation --
+-----------------
+
+HEALBOT_ADDON = "HealBotBlue " .. HEALBOT_VERSION;
+HEALBOT_LOADED = " loaded.";
+
+HEALBOT_CASTINGSPELLONYOU = "Casting %s on you ...";
+HEALBOT_CASTINGSPELLONUNIT = "Casting %s on %s ...";
+HEALBOT_ABORTEDSPELLONUNIT = "... aborted %s on %s";
+
+HEALBOT_ACTION_TITLE = "HealBot";
+HEALBOT_ACTION_OPTIONS = "Options";
+HEALBOT_ACTION_ABORT = "Abort";
+
+HEALBOT_OPTIONS_TITLE = HEALBOT_ADDON;
+HEALBOT_OPTIONS_DEFAULTS = "Defaults";
+HEALBOT_OPTIONS_CLOSE = "Close";
+HEALBOT_OPTIONS_TAB_GENERAL = "General";
+HEALBOT_OPTIONS_TAB_SPELLS = "Spells";
+HEALBOT_OPTIONS_TAB_HEALING = "Healing";
+HEALBOT_OPTIONS_TAB_CDC = "Cure";
+HEALBOT_OPTIONS_TAB_SKIN = "Skin";
+HEALBOT_OPTIONS_TAB_BUFF = "Buff";
+HEALBOT_OPTIONS_TAB_CHAT = "Chat";
+
+HEALBOT_OPTIONS_PANEL_TEXT = "Healing panel options:"
+HEALBOT_OPTIONS_BARALPHA = "Bar opacity";
+HEALBOT_OPTIONS_BARALPHAINHEAL= "Incoming heals opacity";
+HEALBOT_OPTIONS_ACTIONLOCKED = "Lock position";
+HEALBOT_OPTIONS_GROWUPWARDS = "Grow upwards";
+HEALBOT_OPTIONS_AUTOSHOW = "Close automatically";
+HEALBOT_OPTIONS_PANELSOUNDS = "Play sound on open";
+--HEALBOT_OPTIONS_ALERTSECONDS = "Death countdown timer";
+HEALBOT_OPTIONS_HIDEOPTIONS = "Hide options button";
+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_HEAL_CHATOPT = "Chat Options";
+
+HEALBOT_OPTIONS_SKINTEXT = "Use skin"
+HEALBOT_SKINS_STD = "Standard"
+HEALBOT_OPTIONS_SKINTEXTURE = "Texture"
+HEALBOT_OPTIONS_SKINHEIGHT = "Height"
+HEALBOT_OPTIONS_SKINWIDTH = "Width"
+HEALBOT_OPTIONS_SKINNUMCOLS = "No. columns"
+HEALBOT_OPTIONS_SKINBRSPACE = "Row spacer"
+HEALBOT_OPTIONS_SKINBCSPACE = "Col spacer"
+HEALBOT_OPTIONS_EXTRASORT = "Sort extra bars by"
+HEALBOT_SORTBY_NAME = "Name"
+HEALBOT_SORTBY_CLASS = "Class"
+HEALBOT_SORTBY_GROUP = "Group"
+HEALBOT_SORTBY_MAXHEALTH = "Max health"
+HEALBOT_OPTIONS_DELSKIN = "Delete";
+HEALBOT_OPTIONS_NEWSKINTEXT = "New Skin";
+HEALBOT_OPTIONS_SAVESKIN = "Save";
+HEALBOT_OPTIONS_BUFFWATCH = "Enable Buff Watch";
+HEALBOT_OPTIONS_BUFFWATCHINCOMBAT = "Watch Buffs In Combat";
+HEALBOT_OPTIONS_BUFF1 = "Buff 1";
+HEALBOT_OPTIONS_BUFF2 = "Buff 2";
+HEALBOT_OPTIONS_BUFF3 = "Buff 3";
+HEALBOT_OPTIONS_BUFF4 = "Buff 4";
+HEALBOT_OPTIONS_BUFF5 = "Buff 5";
+HEALBOT_OPTIONS_BUFF6 = "Buff 6";
+HEALBOT_OPTIONS_BUFF7 = "Buff 7";
+HEALBOT_OPTIONS_BUFF8 = "Buff 8";
+HEALBOT_OPTIONS_SKINBARS = "Bar options"
+HEALBOT_OPTIONS_SKINPANEL = "Panel colours"
+HEALBOT_SKIN_ENTEXT = "Enabled"
+HEALBOT_SKIN_DISTEXT = "Disabled"
+HEALBOT_SKIN_DEBTEXT = "Debuff"
+HEALBOT_SKIN_BACKTEXT = "Background"
+HEALBOT_SKIN_BORDERTEXT = "Border"
+HEALBOT_OPTIONS_HIDEABORT = "Hide abort button"
+HEALBOT_OPTIONS_SKINFHEIGHT = "Font Size"
+HEALBOT_OPTIONS_ABORTSIZE = "Abort size"
+HEALBOT_OPTIONS_BARALPHADIS = "Disabled opacity"
+HEALBOT_OPTIONS_SHOWHEADERS = "Show headers"
+
+HEALBOT_OPTIONS_ITEMS = "Items";
+HEALBOT_OPTIONS_SPELLS = "Spells";
+
+HEALBOT_OPTIONS_COMBOCLASS = "Key combos for";
+HEALBOT_OPTIONS_CLICK = "Click";
+HEALBOT_OPTIONS_SHIFT = "Shift+click:";
+HEALBOT_OPTIONS_CTRL = "Ctrl+click:";
+HEALBOT_OPTIONS_SHIFTCTRL = "Shift+Ctrl+click:";
+HEALBOT_OPTIONS_ENABLEHEALTHY = "Also heal unwounded targets";
+
+HEALBOT_OPTIONS_CASTNOTIFY1 = "No messages";
+HEALBOT_OPTIONS_CASTNOTIFY2 = "Notify self";
+HEALBOT_OPTIONS_CASTNOTIFY3 = "Notify target";
+HEALBOT_OPTIONS_CASTNOTIFY4 = "Notify party";
+HEALBOT_OPTIONS_CASTNOTIFY5 = "Notify raid";
+HEALBOT_OPTIONS_TARGETWHISPER = "Whisper target when healing";
+
+HEALBOT_OPTIONS_HEAL_BUTTONS = "Healing buttons for:";
+
+HEALBOT_OPTIONS_CDCBUTTONS = "Curing buttons";
+HEALBOT_OPTIONS_CDCLEFT = "Alt+Left";
+HEALBOT_OPTIONS_CDCRIGHT = "Alt+Right";
+HEALBOT_OPTIONS_CDCBARS = "Healthbar colours";
+HEALBOT_OPTIONS_CDCCLASS = "Monitor classes";
+HEALBOT_OPTIONS_CDCWARNINGS = "Debuff warnings";
+HEALBOT_OPTIONS_USEBUTTONS = "Define spells";
+HEALBOT_OPTIONS_CDC = "Cure/Dispel/Cleanse for";
+HEALBOT_OPTIONS_SHOWDEBUFFWARNING = "Display warning on debuff";
+HEALBOT_OPTIONS_SOUNDDEBUFFWARNING = "Play sound on debuff";
+HEALBOT_OPTIONS_SOUND1 = "Sound 1"
+HEALBOT_OPTIONS_SOUND2 = "Sound 2"
+HEALBOT_OPTIONS_SOUND3 = "Sound 3"
+
+HEALBOT_OPTIONS_HEAL_BUTTONS = "Healing bars";
+HEALBOT_OPTIONS_EMERGFILTER = "Show extra bars for";
+
+HEALBOT_OPTIONS_GROUPHEALS = "Group";
+HEALBOT_OPTIONS_TANKHEALS = "Main tanks";
+HEALBOT_OPTIONS_TARGETHEALS = "Targets";
+HEALBOT_OPTIONS_EMERGENCYHEALS= "Extra";
+HEALBOT_OPTIONS_HEALLEVEL = "Healing Level";
+HEALBOT_OPTIONS_ALERTLEVEL = "Alert Level";
+HEALBOT_OPTIONS_OVERHEAL = "Show Abort button when overhealing"
+HEALBOT_OPTIONS_SORTHEALTH = "Health";
+HEALBOT_OPTIONS_SORTPERCENT = "Percent";
+HEALBOT_OPTIONS_SORTSURVIVAL = "Survival";
+HEALBOT_OPTIONS_EMERGFCLASS = "Configure classes for";
+HEALBOT_OPTIONS_COMBOBUTTON = "Button";
+HEALBOT_OPTIONS_BUTTONLEFT = "Left";
+HEALBOT_OPTIONS_BUTTONMIDDLE = "Middle";
+HEALBOT_OPTIONS_BUTTONRIGHT = "Right";
+HEALBOT_OPTIONS_BUTTON4 = "Button4";
+HEALBOT_OPTIONS_BUTTON5 = "Button5";
+
+BINDING_HEADER_HEALBOT = "HealBot";
+BINDING_NAME_TOGGLEMAIN = "Toggle main panel";
+BINDING_NAME_HEALPLAYER = "Heal player";
+BINDING_NAME_HEALPET = "Heal pet";
+BINDING_NAME_HEALPARTY1 = "Heal party1";
+BINDING_NAME_HEALPARTY2 = "Heal party2";
+BINDING_NAME_HEALPARTY3 = "Heal party3";
+BINDING_NAME_HEALPARTY4 = "Heal party4";
+BINDING_NAME_HEALTARGET = "Heal target";
+
+HEALBOT_OPTIONS_PROFILE = "Set Profile:";
+HEALBOT_OPTIONS_ProfilePvP = "PvP";
+HEALBOT_OPTIONS_ProfilePvE = "PvE";
+
+HEALBOT_CLASSES_ALL = "All classes";
+HEALBOT_CLASSES_MELEE = "Melee";
+HEALBOT_CLASSES_RANGES = "Ranged";
+HEALBOT_CLASSES_HEALERS = "Healers";
+HEALBOT_CLASSES_CUSTOM = "Custom";
+
+HEALBOT_OPTIONS_SHOWTOOLTIP = "Show tooltips";
+HEALBOT_OPTIONS_SHOWDETTOOLTIP = "Show detailed spell information";
+HEALBOT_OPTIONS_SHOWUNITTOOLTIP = "Show target information";
+HEALBOT_OPTIONS_SHOWRECTOOLTIP = "Show instant cast recommendation";
+HEALBOT_TOOLTIP_POSDEFAULT = "Default location";
+HEALBOT_TOOLTIP_POSLEFT = "Left of Healbot";
+HEALBOT_TOOLTIP_POSRIGHT = "Right of Healbot";
+HEALBOT_TOOLTIP_POSABOVE = "Above Healbot";
+HEALBOT_TOOLTIP_POSBELOW = "Below Healbot";
+HEALBOT_TOOLTIP_RECOMMENDTEXT = "Instant Cast Recommendation";
+HEALBOT_TOOLTIP_NONE = "none available";
+HEALBOT_TOOLTIP_ITEMBONUS = "Item bonuses";
+HEALBOT_TOOLTIP_ACTUALBONUS = "Actual bonus is";
+HEALBOT_TOOLTIP_SHIELD = "Ward";
+HEALBOT_WORDS_OVER = "over";
+HEALBOT_WORDS_SEC = "sec";
+HEALBOT_WORDS_TO = "to";
+HEALBOT_WORDS_CAST = "Cast"
+HEALBOT_WORDS_FOR = "for";
+
+
+
+
+
+
+
diff --git a/HealBot_Localization.fr.lua b/HealBot_Localization.fr.lua
new file mode 100644
index 0000000..7ff6da6
--- /dev/null
+++ b/HealBot_Localization.fr.lua
@@ -0,0 +1,333 @@
+------------
+-- FRENCH --
+------------
+
+-- à = \195\160
+-- â = \195\162
+-- é = \195\169
+-- ê = \195\170
+-- ï = \195\175
+-- ô = \195\180
+
+
+if (GetLocale() == "frFR") then
+
+-------------------
+-- Compatibility --
+-------------------
+
+HEALBOT_DRUID = "Druide";
+HEALBOT_HUNTER = "Chasseur";
+HEALBOT_MAGE = "Magier";
+HEALBOT_PALADIN = "Paladin";
+HEALBOT_PRIEST = "Pr\195\170tre";
+HEALBOT_ROGUE = "Voleur";
+HEALBOT_SHAMAN = "Chaman";
+HEALBOT_WARLOCK = "D\195\169moniste";
+HEALBOT_WARRIOR = "Guerrier";
+
+HEALBOT_BANDAGES = "Bandages";
+
+HEALBOT_LINEN_BANDAGE = "Bandage en lin";
+HEALBOT_WOOL_BANDAGE = "Bandage en laine";
+HEALBOT_SILK_BANDAGE = "Bandage en soie";
+HEALBOT_MAGEWEAVE_BANDAGE = "Bandage en tissu de mage";
+HEALBOT_RUNECLOTH_BANDAGE = "Bandage en \195\169toffe runique";
+
+HEALBOT_HEAVY_LINEN_BANDAGE = "Bandage en lin \195\169pais";
+HEALBOT_HEAVY_WOOL_BANDAGE = "Bandage en laine \195\169pais";
+HEALBOT_HEAVY_SILK_BANDAGE = "Bandage en soie \195\169pais";
+HEALBOT_HEAVY_MAGEWEAVE_BANDAGE = "Bandage en tissu de mage \195\169pais";
+HEALBOT_HEAVY_RUNECLOTH_BANDAGE = "Bandage en \195\169toffe runique \195\169pais";
+
+HEALBOT_HEALING_POTIONS = "Potions de soins";
+
+HEALBOT_MINOR_HEALING_POTION = "Potion de soins mineure";
+HEALBOT_LESSER_HEALING_POTION = "Potion de soins inf\195\169rieure";
+HEALBOT_HEALING_POTION = "Potion de soins";
+HEALBOT_GREATER_HEALING_POTION = "Potion de soins sup\195\169rieure";
+HEALBOT_SUPERIOR_HEALING_POTION = "Potion de soins excellente";
+HEALBOT_MAJOR_HEALING_POTION = "Potion de Soins majeure";
+
+HEALBOT_HEALTHSTONES = "Pierres de soins";
+
+HEALBOT_MINOR_HEALTHSTONE = "Pierre de soins mineure";
+HEALBOT_LESSER_HEALTHSTONE = "Pierre de soins inf\195\169rieure";
+HEALBOT_HEALTHSTONE = "Pierre de soins";
+HEALBOT_GREATER_HEALTHSTONE = "Pierre de soins sup\195\169rieure";
+HEALBOT_MAJOR_HEALTHSTONE = "Pierre de soins majeure";
+
+HEALBOT_FLASH_HEAL = "Soins rapides";
+HEALBOT_FLASH_OF_LIGHT = "Eclair lumineux";
+HEALBOT_HOLY_SHOCK = "Holy Shock";
+HEALBOT_GREATER_HEAL = "Soins sup\195\169rieurs";
+HEALBOT_HEALING_TOUCH = "Toucher gu\195\169risseur";
+HEALBOT_HEAL = "Soins";
+HEALBOT_HEALING_WAVE = "Vague de soins";
+HEALBOT_HOLY_LIGHT = "Lumi\195\168re sacr\195\169e";
+HEALBOT_LESSER_HEAL = "Soins inf\195\169rieurs";
+HEALBOT_LESSER_HEALING_WAVE = "Vague de soins mineurs";
+HEALBOT_MEND_PET = "Soigner un Familier";
+HEALBOT_POWER_WORD_SHIELD = "Mot de pouvoir : Bouclier";
+HEALBOT_REGROWTH = "R\195\169tablissement";
+HEALBOT_RENEW = "R\195\169novation";
+HEALBOT_REJUVENATION = "R\195\169cup\195\169ration";
+HEALBOT_PRAYER_OF_HEALING = "Pri\195\168re de soins";
+HEALBOT_CHAIN_HEAL = "Salve de gu\195\169rison";
+
+HEALBOT_POWER_WORD_FORTITUDE = "Mot de pouvoir : Robustesse";
+HEALBOT_MARK_OF_THE_WILD = "Marque du fauve";
+HEALBOT_BLESSING_OF_SALVATION = "B\195\169n\195\169diction de salut";
+
+HEALBOT_RESURRECTION = "R\195\169surrection";
+HEALBOT_REDEMPTION = "R\195\169demption";
+HEALBOT_REBIRTH = "Renaissance";
+HEALBOT_ANCESTRALSPIRIT = "Esprit Ancestral";
+
+HEALBOT_PURIFY = "Purification";
+HEALBOT_CLEANSE = "Epuration";
+HEALBOT_CURE_POISON = "Gu\195\169rison du poison";
+HEALBOT_REMOVE_CURSE = "D\195\169livrance de la mal\195\169diction";
+HEALBOT_ABOLISH_POISON = "Abolir le poison";
+HEALBOT_CURE_DISEASE = "Gu\195\169rison des maladies";
+HEALBOT_ABOLISH_DISEASE = "Abolir maladie";
+HEALBOT_DISPEL_MAGIC = "Dissipation de la magie";
+HEALBOT_DISEASE = "Maladie";
+HEALBOT_MAGIC = "Magie";
+HEALBOT_CURSE = "Mal\195\169diction";
+HEALBOT_POISON = "Poison";
+
+HEALBOT_RANK_1 = "(Rang 1)";
+HEALBOT_RANK_2 = "(Rang 2)";
+HEALBOT_RANK_3 = "(Rang 3)";
+HEALBOT_RANK_4 = "(Rang 4)";
+HEALBOT_RANK_5 = "(Rang 5)";
+HEALBOT_RANK_6 = "(Rang 6)";
+HEALBOT_RANK_7 = "(Rang 7)";
+HEALBOT_RANK_8 = "(Rang 8)";
+HEALBOT_RANK_9 = "(Rang 9)";
+HEALBOT_RANK_10 = "(Rang 10)";
+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 = {
+ HEAL = "Soins",
+};
+
+HB_BONUSSCANNER_PREFIX_EQUIP = "Equip\195\169 : ";
+HB_BONUSSCANNER_PREFIX_SET = "Complet : ";
+
+HB_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" },
+ { pattern = "Augmente les d\195\169g\195\162ts et les soins produits par les sorts et effets magiques de (%d+)% au maximum.", effect = {"HEAL", "DMG" }},
+};
+
+
+HB_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"
+
+HB_TOOLTIP_MANA = "^Mana : (%d+)$";
+HB_TOOLTIP_INSTANT_CAST = 'Incantation imm\195\169diate';
+HB_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 ***************
+
+-----------------
+-- Translation --
+-----------------
+
+HEALBOT_ADDON = "HealBotBlue " .. HEALBOT_VERSION;
+HEALBOT_LOADED = " chargement.";
+
+HEALBOT_CASTINGSPELLONYOU = "Lance %s sur vous ...";
+HEALBOT_CASTINGSPELLONUNIT = "Lance %s sur %s ...";
+HEALBOT_ABORTEDSPELLONUNIT = "... arrete %s sur %s";
+
+HEALBOT_ACTION_TITLE = "HealBot";
+HEALBOT_ACTION_OPTIONS = "Options";
+HEALBOT_ACTION_ABORT = "Annule";
+
+
+HEALBOT_OPTIONS_TITLE = HEALBOT_ADDON;
+HEALBOT_OPTIONS_DEFAULTS = "Defaut";
+HEALBOT_OPTIONS_CLOSE = "Fermer";
+HEALBOT_OPTIONS_TAB_GENERAL = "General";
+HEALBOT_OPTIONS_TAB_SPELLS = "Utilisation";
+HEALBOT_OPTIONS_TAB_MISC = "Divers";
+HEALBOT_OPTIONS_TAB_HEALING = "Soins";
+HEALBOT_OPTIONS_TAB_CDC = "Cure";
+HEALBOT_OPTIONS_TAB_SKIN = "Skin"
+
+
+HEALBOT_OPTIONS_PANEL_TEXT = "Panneau d'option de soin:"
+HEALBOT_OPTIONS_ACTIONLOCKED = "Bloquer la position";
+HEALBOT_OPTIONS_GROWUPWARDS = "Monter";
+HEALBOT_OPTIONS_AUTOSHOW = "Ouvrir automatiquement";
+HEALBOT_OPTIONS_PANELSOUNDS = "Son a l'ouverture";
+HEALBOT_OPTIONS_ALERTSECONDS = "Death countdown timer";
+HEALBOT_OPTIONS_SHOWTOOLTIP = "Montre tooltip pour les soins";
+HEALBOT_OPTIONS_HIDEOPTIONS = "Cache le boutton d'option";
+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_ITEMS = "Objets";
+HEALBOT_OPTIONS_SPELLS = "Sorts";
+
+HEALBOT_OPTIONS_COMBOCLASS = "Combinaison de touche pour";
+HEALBOT_OPTIONS_CLICK = "Click";
+HEALBOT_OPTIONS_SHIFT = "Shift+click:";
+HEALBOT_OPTIONS_CTRL = "Ctrl+click:";
+HEALBOT_OPTIONS_SHIFTCTRL = "Shift+Ctrl+click:";
+HEALBOT_OPTIONS_ENABLEHEALTHY = "Autoriser boutton pour soigner la cible";
+
+
+HEALBOT_OPTIONS_CASTNOTIFY1 = "Pas de messages";
+HEALBOT_OPTIONS_CASTNOTIFY2 = "Dire soit meme";
+HEALBOT_OPTIONS_CASTNOTIFY3 = "Avertir la cible";
+HEALBOT_OPTIONS_CASTNOTIFY4 = "Avertir le groupe";
+HEALBOT_OPTIONS_CASTNOTIFY5 = "Avertir le raid";
+HEALBOT_OPTIONS_TARGETWHISPER = "Whisper la cible au soin";
+HEALBOT_OPTIONS_HEAL_CHATOPT = "Option de chat";
+
+
+HEALBOT_OPTIONS_HEAL_BUTTONS = "Boutton de soin pour:"
+HEALBOT_OPTIONS_GROUPHEALS = "Groupe";
+HEALBOT_OPTIONS_TANKHEALS = "Tank principal";
+HEALBOT_OPTIONS_TARGETHEALS = "Cibles";
+HEALBOT_OPTIONS_EMERGENCYHEALS= "Urgences";
+HEALBOT_OPTIONS_HEALLEVEL = "Niveau de soin";
+HEALBOT_OPTIONS_ALERTLEVEL = "Alerte de niveau";
+HEALBOT_OPTIONS_OVERHEAL = "Montre annulation lors de gros soin"
+HEALBOT_OPTIONS_SORTHEALTH = "Vie";
+HEALBOT_OPTIONS_SORTPERCENT = "Pourcent";
+HEALBOT_OPTIONS_SORTSURVIVAL = "Survival";
+HEALBOT_OPTIONS_EMERGFILTER = "Montrer un boutton d'urgence pour";
+HEALBOT_OPTIONS_EMERGFCLASS = "Configurer la classe pour";
+HEALBOT_OPTIONS_COMBOBUTTON = "Boutton";
+HEALBOT_OPTIONS_BUTTONLEFT = "Left";
+HEALBOT_OPTIONS_BUTTONMIDDLE = "Middle";
+HEALBOT_OPTIONS_BUTTONRIGHT = "Right";
+HEALBOT_OPTIONS_BUTTON4 = "Button4";
+HEALBOT_OPTIONS_BUTTON5 = "Button5";
+
+BINDING_HEADER_HEALBOT = "HealBot";
+BINDING_NAME_TOGGLEMAIN = "Affiche al fenetre principal";
+BINDING_NAME_HEALPLAYER = "Soigne joueur";
+BINDING_NAME_HEALPET = "Soigne pet";
+BINDING_NAME_HEALPARTY1 = "Soigne groupe 1";
+BINDING_NAME_HEALPARTY2 = "Soigne groupe 2";
+BINDING_NAME_HEALPARTY3 = "Soigne groupe 3";
+BINDING_NAME_HEALPARTY4 = "Soigne groupe 4";
+BINDING_NAME_HEALTARGET = "Soigne cible";
+
+
+HEALBOT_CLASSES_ALL = "Toutes les classes";
+HEALBOT_CLASSES_MELEE = "Corps a corps";
+HEALBOT_CLASSES_RANGES = "Distances";
+HEALBOT_CLASSES_HEALERS = "Soigneurs";
+HEALBOT_CLASSES_CUSTOM = "Divers";
+
+HEALBOT_OPTIONS_BARALPHAINHEAL= "Incoming heal opacity"; -- *************** needs French translation ***************
+
+HEALBOT_OPTIONS_CDCBUTTONS = "Curing buttons"; -- *************** needs French translation ***************
+HEALBOT_OPTIONS_CDCLEFT = "Alt+Left"; -- *************** needs French translation ***************
+HEALBOT_OPTIONS_CDCRIGHT = "Alt+Right"; -- *************** needs French translation ***************
+HEALBOT_OPTIONS_CDCBARS = "Healthbar colours"; -- *************** needs French translation ***************
+HEALBOT_OPTIONS_CDCCLASS = "Monitor classes"; -- *************** needs French translation ***************
+HEALBOT_OPTIONS_CDCWARNINGS = "Debuff warnings"; -- *************** needs French translation ***************
+HEALBOT_OPTIONS_USEBUTTONS = "Define spells"; -- *************** needs French translation ***************
+HEALBOT_OPTIONS_CDC = "Cure/Dispel/Cleanse for"; -- *************** needs French translation ***************
+HEALBOT_OPTIONS_SHOWDEBUFFWARNING = "Display warning on debuff"; -- *************** needs French translation ***************
+HEALBOT_OPTIONS_SOUNDDEBUFFWARNING = "Play sound on debuff"; -- *************** needs French translation ***************
+HEALBOT_OPTIONS_SOUND1 = "Sound 1" -- *************** needs French translation ***************
+HEALBOT_OPTIONS_SOUND2 = "Sound 2" -- *************** needs French translation ***************
+HEALBOT_OPTIONS_SOUND3 = "Sound 3" -- *************** needs French translation ***************
+
+HEALBOT_OPTIONS_SKINTEXT = "Use skin" -- *************** needs French translation ***************
+HEALBOT_SKINS_STD = "Standard" -- *************** needs French translation ***************
+HEALBOT_OPTIONS_SKINTEXTURE = "Texture" -- *************** needs French translation ***************
+HEALBOT_OPTIONS_SKINHEIGHT = "Height" -- *************** needs French translation ***************
+HEALBOT_OPTIONS_SKINWIDTH = "Width" -- *************** needs French translation ***************
+HEALBOT_OPTIONS_SKINNUMCOLS = "No. columns" -- *************** needs French translation ***************
+HEALBOT_OPTIONS_SKINBRSPACE = "Row spacer" -- *************** needs French translation ***************
+HEALBOT_OPTIONS_SKINBCSPACE = "Col spacer" -- *************** needs French translation ***************
+HEALBOT_OPTIONS_EXTRASORT = "Sort extra bars by" -- *************** needs French translation ***************
+HEALBOT_SORTBY_NAME = "Name" -- *************** needs French translation ***************
+HEALBOT_SORTBY_CLASS = "Class" -- *************** needs French translation ***************
+HEALBOT_SORTBY_GROUP = "Group" -- *************** needs French translation ***************
+HEALBOT_SORTBY_MAXHEALTH = "Max health" -- *************** needs French translation ***************
+HEALBOT_OPTIONS_DELSKIN = "Delete" -- *************** needs French translation ***************
+HEALBOT_OPTIONS_NEWSKINTEXT = "New skin" -- *************** needs French translation ***************
+HEALBOT_OPTIONS_SAVESKIN = "Save" -- *************** needs French translation ***************
+HEALBOT_OPTIONS_SKINBARS = "Bar options" -- *************** needs French translation ***************
+HEALBOT_OPTIONS_SKINPANEL = "Panel colours" -- *************** needs French translation ***************
+HEALBOT_SKIN_ENTEXT = "Enabled" -- *************** needs French translation ***************
+HEALBOT_SKIN_DISTEXT = "Disabled" -- *************** needs French translation ***************
+HEALBOT_SKIN_DEBTEXT = "Debuff" -- *************** needs French translation ***************
+HEALBOT_SKIN_BACKTEXT = "Background" -- *************** needs French translation ***************
+HEALBOT_SKIN_BORDERTEXT = "Border" -- *************** needs French translation ***************
+HEALBOT_OPTIONS_HIDEABORT = "Hide abort button" -- *************** needs French translation ***************
+HEALBOT_OPTIONS_SHOWHEADERS = "Show headers"
+
+HEALBOT_OPTIONS_SHOWTOOLTIP = "Show tooltips"; -- *************** needs French translation ***************
+HEALBOT_OPTIONS_SHOWDETTOOLTIP = "Show detailed spell information"; -- *************** needs French translation ***************
+HEALBOT_OPTIONS_SHOWUNITTOOLTIP = "Show target information"; -- *************** needs French translation ***************
+HEALBOT_OPTIONS_SHOWRECTOOLTIP = "Show instant cast recommendation"; -- *************** needs French translation ***************
+HEALBOT_TOOLTIP_POSDEFAULT = "Default location"; -- *************** needs French translation ***************
+HEALBOT_TOOLTIP_POSLEFT = "Left of Healbot"; -- *************** needs French translation ***************
+HEALBOT_TOOLTIP_POSRIGHT = "Right of Healbot"; -- *************** needs French translation ***************
+HEALBOT_TOOLTIP_POSABOVE = "Above Healbot"; -- *************** needs French translation ***************
+HEALBOT_TOOLTIP_POSBELOW = "Below Healbot"; -- *************** needs translation ***************
+
+HEALBOT_OPTIONS_SKINFHEIGHT = "Font Size" -- *************** needs translation ***************
+HEALBOT_OPTIONS_ABORTSIZE = "Abort size" -- *************** needs translation ***************
+HEALBOT_OPTIONS_BARALPHADIS = "Disabled opacity" -- *************** needs translation ***************
+
+HEALBOT_TOOLTIP_RECOMMENDTEXT = "Instant Cast Recommendation"; -- *************** needs translation ***************
+HEALBOT_TOOLTIP_NONE = "none available"; -- *************** needs translation ***************
+HEALBOT_TOOLTIP_ITEMBONUS = "Item bonuses"; -- *************** needs translation ***************
+HEALBOT_TOOLTIP_ACTUALBONUS = "Actual bonus is"; -- *************** needs translation ***************
+HEALBOT_TOOLTIP_SHIELD = "Wards"
+HEALBOT_WORDS_OVER = "over"; -- *************** needs translation ***************
+HEALBOT_WORDS_SEC = "sec"; -- *************** needs translation ***************
+HEALBOT_WORDS_TO = "to"; -- *************** needs translation ***************
+HEALBOT_WORDS_CAST = "Cast" -- *************** needs translation ***************
+HEALBOT_WORDS_FOR = "for"; -- *************** needs translation ***************
+
+end
+
+
+
+
diff --git a/HealBot_Localization.kr.lua b/HealBot_Localization.kr.lua
new file mode 100644
index 0000000..dec7faa
--- /dev/null
+++ b/HealBot_Localization.kr.lua
@@ -0,0 +1,328 @@
+
+
+if (GetLocale() == "koKR") then
+ HEALBOT_DRUID = "드루이드";
+ HEALBOT_HUNTER = "사냥꾼";
+ HEALBOT_MAGE = "마법사";
+ HEALBOT_PALADIN = "성기사";
+ HEALBOT_PRIEST = "사제";
+ HEALBOT_ROGUE = "도적";
+ HEALBOT_SHAMAN = "주술사";
+ HEALBOT_WARLOCK = "흑마법사";
+ HEALBOT_WARRIOR = "전사";
+
+ HEALBOT_BANDAGES = "붕대";
+
+ HEALBOT_LINEN_BANDAGE = "리넨 붕대";
+ HEALBOT_WOOL_BANDAGE = "양모 붕대";
+ HEALBOT_SILK_BANDAGE = "비단 붕대";
+ HEALBOT_MAGEWEAVE_BANDAGE = "마법 붕대";
+ HEALBOT_RUNECLOTH_BANDAGE = "룬매듭 붕대";
+
+ HEALBOT_HEAVY_LINEN_BANDAGE = "두꺼운 리넨 붕대";
+ HEALBOT_HEAVY_WOOL_BANDAGE = "두꺼운 양모 붕대";
+ HEALBOT_HEAVY_SILK_BANDAGE = "두꺼운 비단 붕대";
+ HEALBOT_HEAVY_MAGEWEAVE_BANDAGE = "두꺼운 마법 붕대";
+ HEALBOT_HEAVY_RUNECLOTH_BANDAGE = "두꺼운 룬매듭 붕대";
+
+ HEALBOT_HEALING_POTIONS = "치유 물약";
+
+ HEALBOT_MINOR_HEALING_POTION = "최하급 치유 물약";
+ HEALBOT_LESSER_HEALING_POTION = "하급 치유 물약";
+ HEALBOT_HEALING_POTION = "치유 물약";
+ HEALBOT_GREATER_HEALING_POTION = "상급 치유 물약";
+ HEALBOT_SUPERIOR_HEALING_POTION = "최상급 치유 물약";
+ HEALBOT_MAJOR_HEALING_POTION = "일급 치유 물약";
+
+ HEALBOT_HEALTHSTONES = "생명석";
+
+ HEALBOT_MINOR_HEALTHSTONE = "최하급 생명석";
+ HEALBOT_LESSER_HEALTHSTONE = "하급 생명석";
+ HEALBOT_HEALTHSTONE = "중급 생명석";
+ HEALBOT_GREATER_HEALTHSTONE = "상급 생명석";
+ HEALBOT_MAJOR_HEALTHSTONE = "최상급 생명석";
+
+ HEALBOT_FLASH_HEAL = "순간 치유";
+ HEALBOT_FLASH_OF_LIGHT = "빛의 섬광";
+ HEALBOT_HOLY_SHOCK = "신성 충격";
+ HEALBOT_GREATER_HEAL = "상급 치유";
+ HEALBOT_HEALING_TOUCH = "치유의 손길";
+ HEALBOT_HEAL = "치유";
+ HEALBOT_HEALING_WAVE = "치유의 물결";
+ HEALBOT_HOLY_LIGHT = "성스러운 빛";
+ HEALBOT_LESSER_HEAL = "하급 치유";
+ HEALBOT_LESSER_HEALING_WAVE = "하급 치유의 물결";
+ HEALBOT_MEND_PET = "동물 치료";
+ HEALBOT_POWER_WORD_SHIELD = "신의 권능: 보호막";
+ HEALBOT_REGROWTH = "재생";
+ HEALBOT_RENEW = "소생";
+ HEALBOT_REJUVENATION = "회복";
+HEALBOT_PRAYER_OF_HEALING = "치유의 기원";
+HEALBOT_CHAIN_HEAL = "연쇄 치유";
+
+HEALBOT_POWER_WORD_FORTITUDE = "신의 권능: 인내";
+HEALBOT_MARK_OF_THE_WILD = "야생의 징표";
+HEALBOT_GREATER_BLESSING_OF_SALVATION = "상급 구원의 축복";
+
+ HEALBOT_RESURRECTION = "부활";
+ HEALBOT_REDEMPTION = "구원";
+ HEALBOT_REBIRTH = "환생";
+ HEALBOT_ANCESTRALSPIRIT = "고대의 영혼";
+
+ HEALBOT_PURIFY = "정화";
+ HEALBOT_CLEANSE = "정화";
+ HEALBOT_CURE_POISON = "해독";
+ HEALBOT_REMOVE_CURSE = "저주 해제";
+ HEALBOT_ABOLISH_POISON = "독 해제";
+ HEALBOT_CURE_DISEASE = "질병 치료";
+ HEALBOT_ABOLISH_DISEASE = "질병 해제";
+ HEALBOT_DISPEL_MAGIC = "마법 무효화";
+ HEALBOT_DISEASE = "질병";
+ HEALBOT_MAGIC = "마법";
+ HEALBOT_CURSE = "저주";
+ HEALBOT_POISON = "독";
+
+ HEALBOT_RANK_1 = "(1 레벨)";
+ HEALBOT_RANK_2 = "(2 레벨)";
+ HEALBOT_RANK_3 = "(3 레벨)";
+ HEALBOT_RANK_4 = "(4 레벨)";
+ HEALBOT_RANK_5 = "(5 레벨)";
+ HEALBOT_RANK_6 = "(6 레벨)";
+ HEALBOT_RANK_7 = "(7 레벨)";
+ HEALBOT_RANK_8 = "(8 레벨)";
+ HEALBOT_RANK_9 = "(9 레벨)";
+ HEALBOT_RANK_10 = "(10 레벨)";
+ HEALBOT_RANK_11 = "(11 레벨)";
+
+ HEALBOT_LIBRARY_INCHEAL = "모든 주문 및 효과에 의한 치유량이 최대 (%d+)만큼 증가합니다%.";
+ HEALBOT_LIBRARY_INCDAMHEAL = "모든 주문 및 효과에 의한 피해와 치유량이 최대 (%d+)만큼 증가합니다%.";
+
+ HB_BONUSSCANNER_NAMES = {
+ HEAL = "치유량",
+ };
+
+ HB_BONUSSCANNER_PREFIX_EQUIP = "착용 효과: ";
+ HB_BONUSSCANNER_PREFIX_SET = "세트 효과: ";
+
+ HB_BONUSSCANNER_PATTERNS_PASSIVE = {
+ { pattern = "모든 주문 및 효과에 의한 치유량이 최대 (%d+)만큼 증가합니다%.", effect = "HEAL" },
+ { pattern = "주문과 효과에 의한 치유량이 최대 (%d+)만큼 증가합니다%.", effect = "HEAL" },
+ { pattern = "모든 주문 및 효과에 의한 피해와 치유량이 최대 (%d+)만큼 증가합니다%.", effect = {"HEAL", "DMG"} },
+ };
+
+ HB_BONUSSCANNER_PATTERNS_GENERIC_LOOKUP = {
+ ["치유 주문"] = "HEAL",
+ ["치유량 증가"] = "HEAL",
+ ["치유 효과 증가"] = "HEAL",
+ ["치유 효과 중가"] = "HEAL",
+ ["치유 주문 효과"] = "HEAL",
+ ["치유 및 주문 공격력"] = {"HEAL", "DMG"},
+ ["치유 및 공격 주문 위력"] = {"HEAL", "DMG"},
+ };
+
+ HB_BONUSSCANNER_PATTERNS_OTHER = {
+ { pattern = "잔달라 모조의 인장", effect = {"DMG", "HEAL"}, value = 18 },
+ { pattern = "잔달라 평온의 인장", effect = "HEAL", value = 33 },
+
+ { pattern = "최하급 마술사 오일", effect = {"DMG", "HEAL"}, value = 8 },
+ { pattern = "하급 마술사 오일", effect = {"DMG", "HEAL"}, value = 16 },
+ { pattern = "마술사 오일", effect = {"DMG", "HEAL"}, value = 24 },
+ { pattern = "반짝이는 마술사 오일", effect = {"DMG", "HEAL", "SPELLCRIT"}, value = {36, 36, 1} },
+
+ { 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+)의 생명력을 치료합니다";
+
+ 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 = "공격대를 떠났습니다"
+
+ -----------------
+ -- Translation --
+ -----------------
+
+ HEALBOT_ADDON = "HealBotBlue " .. HEALBOT_VERSION;
+ HEALBOT_LOADED = " 로드";
+
+ HEALBOT_CASTINGSPELLONYOU = "당신에게 %s을 시전합니다.";
+ HEALBOT_CASTINGSPELLONUNIT = "%s을 %s님에게 시전합니다.";
+ HEALBOT_ABORTEDSPELLONUNIT = "%s 주문을 중지합니다 : %s";
+
+ HEALBOT_ACTION_TITLE = "HealBot";
+ HEALBOT_ACTION_OPTIONS = "옵션";
+ HEALBOT_ACTION_ABORT = "정지";
+
+ HEALBOT_OPTIONS_TITLE = HEALBOT_ADDON;
+ HEALBOT_OPTIONS_DEFAULTS = "기본값";
+ HEALBOT_OPTIONS_CLOSE = "닫기";
+ HEALBOT_OPTIONS_TAB_GENERAL = "일반";
+ HEALBOT_OPTIONS_TAB_SPELLS = "주문";
+ HEALBOT_OPTIONS_TAB_HEALING = "치유";
+ HEALBOT_OPTIONS_TAB_CDC = "치료";
+ HEALBOT_OPTIONS_TAB_SKIN = "스킨"
+
+ HEALBOT_OPTIONS_PANEL_TEXT = "치유 패널 옵션:"
+ HEALBOT_OPTIONS_BARALPHA = "바 불투명도";
+ HEALBOT_OPTIONS_BARALPHAINHEAL = "들어오는 치유 불투명도";
+ HEALBOT_OPTIONS_ACTIONLOCKED = "위치 고정";
+ HEALBOT_OPTIONS_GROWUPWARDS = "위치 위로";
+ HEALBOT_OPTIONS_AUTOSHOW = "자동 열기";
+ HEALBOT_OPTIONS_PANELSOUNDS = "소리 재생";
+ --HEALBOT_OPTIONS_ALERTSECONDS = "죽음 카운트다운 타이머";
+ HEALBOT_OPTIONS_HIDEOPTIONS = "옵션 버튼 숨김";
+ HEALBOT_OPTIONS_QUALITYRANGE = "27미터 거리 체크";
+ --HEALBOT_OPTIONS_INTEGRATECTRA = "CTRA 연동";
+ HEALBOT_OPTIONS_TOGGLEALTUSE = "Alt-key 토글";
+ HEALBOT_OPTIONS_PROTECTPVP = "우발적 PvP 상태 피함";
+ HEALBOT_OPTIONS_HEAL_CHATOPT = "대화창 옵션";
+
+ HEALBOT_OPTIONS_SKINTEXT = "스킨 사용"
+ HEALBOT_SKINS_STD = "표준"
+ HEALBOT_OPTIONS_SKINTEXTURE = "텍스쳐"
+ HEALBOT_OPTIONS_SKINHEIGHT = "높이"
+ HEALBOT_OPTIONS_SKINWIDTH = "넓이"
+ HEALBOT_OPTIONS_SKINNUMCOLS = "번호 컬럼"
+ HEALBOT_OPTIONS_SKINBRSPACE = "줄 간격"
+ HEALBOT_OPTIONS_SKINBCSPACE = "칸 간격"
+ HEALBOT_OPTIONS_EXTRASORT = "바 정렬"
+ HEALBOT_SORTBY_NAME = "이름"
+ HEALBOT_SORTBY_CLASS = "직업"
+ HEALBOT_SORTBY_GROUP = "그룹"
+ HEALBOT_SORTBY_MAXHEALTH = "최대 체력"
+ HEALBOT_OPTIONS_DELSKIN = "삭제"
+ HEALBOT_OPTIONS_NEWSKINTEXT = "새로운 스킨"
+ HEALBOT_OPTIONS_SAVESKIN = "저장"
+ HEALBOT_OPTIONS_SKINBARS = "바 옵션들"
+ HEALBOT_OPTIONS_SKINPANEL = "패널 색"
+ HEALBOT_SKIN_ENTEXT = "활성화"
+ HEALBOT_SKIN_DISTEXT = "비활성화"
+ HEALBOT_SKIN_DEBTEXT = "디버프"
+ HEALBOT_SKIN_BACKTEXT = "배경"
+ HEALBOT_SKIN_BORDERTEXT = "테두리"
+ HEALBOT_OPTIONS_HIDEABORT = "중지 버튼 숨김"
+ HEALBOT_OPTIONS_SKINFHEIGHT = "글꼴 크기"
+ HEALBOT_OPTIONS_ABORTSIZE = "중지 크기"
+ HEALBOT_OPTIONS_BARALPHADIS = "투명도 비활성화"
+ HEALBOT_OPTIONS_SHOWHEADERS = "헤더 표시"
+
+ HEALBOT_OPTIONS_ITEMS = "아이템들";
+ HEALBOT_OPTIONS_SPELLS = "주문들";
+
+ HEALBOT_OPTIONS_COMBOCLASS = "직업 선택";
+ HEALBOT_OPTIONS_CLICK = "클릭";
+ HEALBOT_OPTIONS_SHIFT = "Shift+클릭:";
+ HEALBOT_OPTIONS_CTRL = "Ctrl+클릭:";
+ HEALBOT_OPTIONS_SHIFTCTRL = "Shift+Ctrl+클릭:";
+ HEALBOT_OPTIONS_ENABLEHEALTHY = "상처를 입지 않는 대상 치유";
+
+ HEALBOT_OPTIONS_CASTNOTIFY1 = "알림 없음";
+ HEALBOT_OPTIONS_CASTNOTIFY2 = "본인 알림";
+ HEALBOT_OPTIONS_CASTNOTIFY3 = "대상 알림";
+ HEALBOT_OPTIONS_CASTNOTIFY4 = "파티 알림";
+ HEALBOT_OPTIONS_CASTNOTIFY5 = "공대 알림";
+ HEALBOT_OPTIONS_TARGETWHISPER = "대상에게 귓속말 알림";
+
+ HEALBOT_OPTIONS_HEAL_BUTTONS = "치료 버튼:";
+
+ HEALBOT_OPTIONS_CDCBUTTONS = "치료 버튼";
+ HEALBOT_OPTIONS_CDCLEFT = "Alt+왼쪽";
+ HEALBOT_OPTIONS_CDCRIGHT = "Alt+오른쪽";
+ HEALBOT_OPTIONS_CDCBARS = "체력바 색상";
+ HEALBOT_OPTIONS_CDCCLASS = "모니터 직업";
+ HEALBOT_OPTIONS_CDCWARNINGS = "디버프 경고";
+ HEALBOT_OPTIONS_USEBUTTONS = "주문 정의";
+ HEALBOT_OPTIONS_CDC = "치료/디스펠/정화 등";
+ HEALBOT_OPTIONS_SHOWDEBUFFWARNING = "디버프시 경고 표시";
+ HEALBOT_OPTIONS_SOUNDDEBUFFWARNING = "디버프시 소리 재생";
+ HEALBOT_OPTIONS_SOUND1 = "소리 1"
+ HEALBOT_OPTIONS_SOUND2 = "소리 2"
+ HEALBOT_OPTIONS_SOUND3 = "소리 3"
+
+ HEALBOT_OPTIONS_HEAL_BUTTONS = "치료 바";
+ HEALBOT_OPTIONS_EMERGFILTER = "치료 버튼 표시";
+
+ HEALBOT_OPTIONS_GROUPHEALS = "그룹";
+ HEALBOT_OPTIONS_TANKHEALS = "탱커";
+ HEALBOT_OPTIONS_TARGETHEALS = "대상";
+ HEALBOT_OPTIONS_EMERGENCYHEALS = "응급";
+ HEALBOT_OPTIONS_HEALLEVEL = "치료 레벨";
+ HEALBOT_OPTIONS_ALERTLEVEL = "경고 레벨";
+ HEALBOT_OPTIONS_OVERHEAL = "오버 치유 정지 버튼 표시"
+ HEALBOT_OPTIONS_SORTHEALTH = "체력";
+ HEALBOT_OPTIONS_SORTPERCENT = "백분율";
+ HEALBOT_OPTIONS_SORTSURVIVAL = "생존자";
+ HEALBOT_OPTIONS_EMERGFCLASS = "응급 버튼 표시";
+ HEALBOT_OPTIONS_COMBOBUTTON = "버튼";
+ HEALBOT_OPTIONS_BUTTONLEFT = "왼쪽";
+ HEALBOT_OPTIONS_BUTTONMIDDLE = "중간";
+ HEALBOT_OPTIONS_BUTTONRIGHT = "오른쪽";
+ HEALBOT_OPTIONS_BUTTON4 = "버튼4";
+ HEALBOT_OPTIONS_BUTTON5 = "버튼5";
+
+ BINDING_HEADER_HEALBOT = "HealBot";
+ BINDING_NAME_TOGGLEMAIN = "패널 열기";
+ BINDING_NAME_HEALPLAYER = "플레이어 치유";
+ BINDING_NAME_HEALPET = "소환수 치유";
+ BINDING_NAME_HEALPARTY1 = "파티원 1 치유";
+ BINDING_NAME_HEALPARTY2 = "파티원 2 치유";
+ BINDING_NAME_HEALPARTY3 = "파티원 3 치유";
+ BINDING_NAME_HEALPARTY4 = "파티원 4 치유";
+ BINDING_NAME_HEALTARGET = "선택 대상 치유";
+
+ HEALBOT_OPTIONS_PROFILE = "프로파일 설정:";
+ HEALBOT_OPTIONS_ProfilePvP = "PvP";
+ HEALBOT_OPTIONS_ProfilePvE = "PvE";
+
+ HEALBOT_CLASSES_ALL = "모든 직업";
+ HEALBOT_CLASSES_MELEE = "근거리";
+ HEALBOT_CLASSES_RANGES = "원거리";
+ HEALBOT_CLASSES_HEALERS = "힐러들";
+ HEALBOT_CLASSES_CUSTOM = "사용자";
+
+ HEALBOT_OPTIONS_SHOWTOOLTIP = "툴팁 표시";
+ HEALBOT_OPTIONS_SHOWDETTOOLTIP = "주문 정보 표시";
+ HEALBOT_OPTIONS_SHOWUNITTOOLTIP = "대상 정보 표시";
+ HEALBOT_OPTIONS_SHOWRECTOOLTIP = "즉각적인 주문 표시";
+ HEALBOT_TOOLTIP_POSDEFAULT = "기본 위치";
+ HEALBOT_TOOLTIP_POSLEFT = "Healbot의 좌측";
+ HEALBOT_TOOLTIP_POSRIGHT = "Healbot의 우측";
+ HEALBOT_TOOLTIP_POSABOVE = "Healbot의 상단";
+ HEALBOT_TOOLTIP_POSBELOW = "Healbot의 하단";
+ HEALBOT_TOOLTIP_RECOMMENDTEXT = "즉각적인 주문 추천";
+ HEALBOT_TOOLTIP_NONE = "사용할 수 없음";
+ HEALBOT_TOOLTIP_ITEMBONUS = "아이템 보너스";
+ HEALBOT_TOOLTIP_ACTUALBONUS = "실제 보너스";
+ HEALBOT_TOOLTIP_SHIELD = "보호";
+ HEALBOT_WORDS_OVER = "에서";
+ HEALBOT_WORDS_SEC = "초";
+ HEALBOT_WORDS_TO = "~";
+ HEALBOT_WORDS_CAST = "시전"
+ HEALBOT_WORDS_FOR = "for";
+
+end
+
+
+
diff --git a/HealBot_Options.lua b/HealBot_Options.lua
new file mode 100644
index 0000000..b1c50de
--- /dev/null
+++ b/HealBot_Options.lua
@@ -0,0 +1,1701 @@
+local HealBot_Options_ComboButtons_Button=1;
+
+function HealBot_Options_AddDebug(msg)
+ HealBot_AddDebug("Options: " .. msg);
+end
+
+function HealBot_Options_Pct_OnLoad(this,text)
+ this.text = text;
+ getglobal(this:GetName().."Text"):SetText(text);
+ getglobal(this:GetName().."Low"):SetText("0%");
+ getglobal(this:GetName().."High"):SetText("100%");
+ this:SetMinMaxValues(0.00,1.00);
+ this:SetValueStep(0.01);
+end
+
+function HealBot_Options_Pct_OnLoad_MinMax(this,text,Min,Max)
+ this.text = text;
+ local MinTxt,MaxTxt
+
+ MinTxt=(Min*100).."%";
+ MaxTxt=(Max*100).."%";
+
+ getglobal(this:GetName().."Text"):SetText(text);
+ getglobal(this:GetName().."Low"):SetText(MinTxt);
+ getglobal(this:GetName().."High"):SetText(MaxTxt);
+ this:SetMinMaxValues(Min,Max);
+ this:SetValueStep(0.01);
+end
+
+function HealBot_Options_val_OnLoad(this,text,Min,Max)
+ this.text = text;
+
+ getglobal(this:GetName().."Text"):SetText(text);
+ getglobal(this:GetName().."Low"):SetText(Min);
+ getglobal(this:GetName().."High"):SetText(Max);
+ this:SetMinMaxValues(Min,Max);
+ this:SetValueStep(1);
+end
+
+function HealBot_Options_Pct_OnValueChanged(this)
+ local pct = math.floor(this:GetValue()*100+0.5);
+ getglobal(this:GetName().."Text"):SetText(this.text .. " (" .. pct .. "%)");
+ return this:GetValue();
+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]
+ 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
+ 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_ShowHeaders_OnLoad(this)
+ getglobal(this:GetName().."Text"):SetText(HEALBOT_OPTIONS_SHOWHEADERS);
+end
+
+function HealBot_Options_ShowHeaders_OnClick(this)
+ HealBot_Config.ShowHeader[HealBot_Config.Current_Skin] = this:GetChecked();
+ 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);
+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
+
+local HealBot_ColourObjWaiting
+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()
+ local btextheight=HealBot_Config.btextheight[HealBot_Config.Current_Skin] or 10;
+
+ HealBot_EnTextColorpick:SetStatusBarColor(0,1,0,HealBot_Config.Barcola[HealBot_Config.Current_Skin]);
+ HealBot_EnTextColorpickin:SetStatusBarColor(0,1,0,HealBot_Config.Barcola[HealBot_Config.Current_Skin]*HealBot_Config.BarcolaInHeal[HealBot_Config.Current_Skin]);
+ HealBot_DisTextColorpick:SetStatusBarColor(0,1,0,HealBot_Config.bardisa[HealBot_Config.Current_Skin]);
+ HealBot_EnTextColorpickt:SetTextColor(
+ 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]);
+ HealBot_DisTextColorpickt:SetTextColor(
+ 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]);
+ HealBot_DebTextColorpickt:SetTextColor(
+ 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]);
+ HealBot_BackgroundColorpick:SetStatusBarColor(
+ 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]);
+ HealBot_BorderColorpick:SetStatusBarColor(
+ 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]);
+ HealBot_AbortColorpick:SetStatusBarColor(
+ 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]);
+
+ -- removed SetBackdropColor
+ HealBot_Action:SetBackdropBorderColor(
+ 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]);
+
+ HealBot_EnTextColorpickt:SetTextHeight(btextheight);
+ HealBot_DisTextColorpickt:SetTextHeight(btextheight);
+ HealBot_DebTextColorpickt:SetTextHeight(btextheight);
+ HealBot_EnTextColorpickt:SetText(HEALBOT_SKIN_ENTEXT);
+ HealBot_DisTextColorpickt:SetText(HEALBOT_SKIN_DISTEXT);
+ HealBot_DebTextColorpickt:SetText(HEALBOT_SKIN_DEBTEXT);
+ local 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_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_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
+
+
+function HealBot_Options_CastNotify_OnLoad(this,text)
+ getglobal(this:GetName().."Text"):SetText(text);
+end
+
+function HealBot_Options_CastNotify_OnClick(this,id)
+ -- CastNotify UI elements were removed and replaced by Custom Chat Messages
+end
+
+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_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_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
+
+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_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
+
+--------------------------------------------------------------------------------
+
+
+--------------------------------------------------------------------------------
+
+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 !
+ UIDropDownMenu_SetSelectedID(HealBot_Options_EmergencyFClass,HealBot_Config.EmergencyFClass)
+end
+
+function HealBot_Options_EmergencyFClass_OnLoad(this)
+ HealBot_Options_EmergencyFClass_Initialize()
+ UIDropDownMenu_SetWidth(100)
+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 !
+ UIDropDownMenu_SetSelectedID(HealBot_Options_ExtraSort,HealBot_Config.ExtraOrder)
+end
+
+function HealBot_Options_ExtraSort_OnLoad(this)
+ HealBot_Options_ExtraSort_Initialize()
+ UIDropDownMenu_SetWidth(100)
+end
+
+function HealBot_Options_ExtraSort_OnSelect()
+ HealBot_Config.ExtraOrder = this:GetID()
+ HealBot_Options_ExtraSort_Refresh(true)
+ HealBot_Action_PartyChanged()
+end
+
+--------------------------------------------------------------------------------
+
+local HealBot_Options_EmergencyFilter_List = {
+ HEALBOT_CLASSES_ALL,
+ HEALBOT_DRUID,
+ HEALBOT_HUNTER,
+ HEALBOT_MAGE,
+ HEALBOT_PALADIN,
+ HEALBOT_PRIEST,
+ HEALBOT_ROGUE,
+ HEALBOT_SHAMAN,
+ HEALBOT_WARLOCK,
+ HEALBOT_WARRIOR,
+ HEALBOT_CLASSES_MELEE,
+ HEALBOT_CLASSES_RANGES,
+ HEALBOT_CLASSES_HEALERS,
+ HEALBOT_CLASSES_CUSTOM,
+}
+
+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_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_EmergencyFilter_Initialize()
+ UIDropDownMenu_Initialize(HealBot_Options_EmergencyFilter,HealBot_Options_EmergencyFilter_DropDown)
+end
+
+function HealBot_Options_CDCMonitor_Initialize()
+ UIDropDownMenu_Initialize(HealBot_Options_CDCMonitor,HealBot_Options_CDCMonitor_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 !
+ UIDropDownMenu_SetSelectedID(HealBot_Options_EmergencyFilter,HealBot_Config.EmergIncMonitor)
+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 !
+ UIDropDownMenu_SetSelectedID(HealBot_Options_CDCMonitor,HealBot_Config.CDCMonitor)
+end
+
+function HealBot_Options_EmergencyFilter_OnLoad(this)
+ HealBot_Options_EmergencyFilter_Initialize()
+ UIDropDownMenu_SetWidth(100)
+end
+
+function HealBot_Options_CDCMonitor_OnLoad(this)
+ HealBot_Options_CDCMonitor_Initialize()
+ UIDropDownMenu_SetWidth(100)
+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==1 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==2 then
+ HealBot_EmergInc[HEALBOT_DRUID] = 1;
+ elseif HealBot_Config.EmergIncMonitor==3 then
+ HealBot_EmergInc[HEALBOT_HUNTER] = 1;
+ elseif HealBot_Config.EmergIncMonitor==4 then
+ HealBot_EmergInc[HEALBOT_MAGE] = 1;
+ elseif HealBot_Config.EmergIncMonitor==5 then
+ HealBot_EmergInc[HEALBOT_PALADIN] = 1;
+ elseif HealBot_Config.EmergIncMonitor==6 then
+ HealBot_EmergInc[HEALBOT_PRIEST] = 1;
+ elseif HealBot_Config.EmergIncMonitor==7 then
+ HealBot_EmergInc[HEALBOT_ROGUE] = 1;
+ elseif HealBot_Config.EmergIncMonitor==8 then
+ HealBot_EmergInc[HEALBOT_SHAMAN] = 1;
+ elseif HealBot_Config.EmergIncMonitor==9 then
+ HealBot_EmergInc[HEALBOT_WARLOCK] = 1;
+ elseif HealBot_Config.EmergIncMonitor==10 then
+ HealBot_EmergInc[HEALBOT_WARRIOR] = 1;
+ elseif HealBot_Config.EmergIncMonitor==11 then
+ HealBot_EmergInc[HEALBOT_DRUID] = HealBot_Config.EmergIncMelee[HEALBOT_DRUID];
+ HealBot_EmergInc[HEALBOT_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==12 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==13 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==14 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
+
+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==1 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==2 then
+ HealBot_CDCInc[HEALBOT_DRUID] = 1;
+ elseif HealBot_Config.CDCMonitor==3 then
+ HealBot_CDCInc[HEALBOT_HUNTER] = 1;
+ elseif HealBot_Config.CDCMonitor==4 then
+ HealBot_CDCInc[HEALBOT_MAGE] = 1;
+ elseif HealBot_Config.CDCMonitor==5 then
+ HealBot_CDCInc[HEALBOT_PALADIN] = 1;
+ elseif HealBot_Config.CDCMonitor==6 then
+ HealBot_CDCInc[HEALBOT_PRIEST] = 1;
+ elseif HealBot_Config.CDCMonitor==7 then
+ HealBot_CDCInc[HEALBOT_ROGUE] = 1;
+ elseif HealBot_Config.CDCMonitor==8 then
+ HealBot_CDCInc[HEALBOT_SHAMAN] = 1;
+ elseif HealBot_Config.CDCMonitor==9 then
+ HealBot_CDCInc[HEALBOT_WARLOCK] = 1;
+ elseif HealBot_Config.CDCMonitor==10 then
+ HealBot_CDCInc[HEALBOT_WARRIOR] = 1;
+ elseif HealBot_Config.CDCMonitor==11 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==12 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==13 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==14 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_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 !
+ UIDropDownMenu_SetSelectedID(HealBot_Options_Skins,HealBot_Config.Skin_ID)
+end
+
+function HealBot_Options_Skins_OnLoad(this)
+ HealBot_Options_Skins_Initialize()
+ UIDropDownMenu_SetWidth(100)
+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
+
+--------------------------------------------------------------------------------
+
+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 !
+ UIDropDownMenu_SetSelectedID(HealBot_Options_TooltipPos,HealBot_Config.TooltipPos)
+end
+
+function HealBot_Options_TooltipPos_OnLoad(this)
+ HealBot_Options_TooltipPos_Initialize()
+ UIDropDownMenu_SetWidth(128)
+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_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];
+ 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];
+ UIDropDownMenu_SetSelectedID(HealBot_Options_CDCButRight,set_id)
+end
+
+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_CDCButLeft_OnLoad(this)
+ HealBot_Options_CDCButLeft_Initialize()
+ UIDropDownMenu_SetWidth(140)
+end
+
+function HealBot_Options_CDCButRight_OnLoad(this)
+ HealBot_Options_CDCButRight_Initialize()
+ UIDropDownMenu_SetWidth(140)
+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_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
+
+
+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]="NO", [HEALBOT_MAGIC_en]="NO", [HEALBOT_POISON_en]="NO", [HEALBOT_CURSE_en]="NO" }
+ if spell ~= "None" then
+ table.foreach(HealBot_Debuff_Types[spell], function (index,debuff)
+ HealBot_DebuffWatch[debuff]="YES";
+ end)
+ end
+ spell = HealBot_Config.CDCRightText[UnitClass("player")];
+ if spell ~= "None" then
+ table.foreach(HealBot_Debuff_Types[spell], function (index,debuff)
+ HealBot_DebuffWatch[debuff]="YES";
+ 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_Returned_Colours()
+ local A = OpacitySliderFrame:GetValue();
+ A = ((0-A)+1);
+ if HealBot_ColourObjWaiting=="En" then
+ HealBot_Config.btextenabledcolr[HealBot_Config.Current_Skin],
+ HealBot_Config.btextenabledcolg[HealBot_Config.Current_Skin],
+ HealBot_Config.btextenabledcolb[HealBot_Config.Current_Skin] = ColorPickerFrame:GetColorRGB();
+ HealBot_Config.btextenabledcola[HealBot_Config.Current_Skin] = A;
+ elseif HealBot_ColourObjWaiting=="Dis" then
+ HealBot_Config.btextdisbledcolr[HealBot_Config.Current_Skin],
+ HealBot_Config.btextdisbledcolg[HealBot_Config.Current_Skin],
+ HealBot_Config.btextdisbledcolb[HealBot_Config.Current_Skin] = ColorPickerFrame:GetColorRGB();
+ HealBot_Config.btextdisbledcola[HealBot_Config.Current_Skin] = A;
+ elseif HealBot_ColourObjWaiting=="Debuff" then
+ HealBot_Config.btextcursecolr[HealBot_Config.Current_Skin],
+ HealBot_Config.btextcursecolg[HealBot_Config.Current_Skin],
+ HealBot_Config.btextcursecolb[HealBot_Config.Current_Skin] = ColorPickerFrame:GetColorRGB();
+ HealBot_Config.btextcursecola[HealBot_Config.Current_Skin] = A;
+ elseif HealBot_ColourObjWaiting=="Back" then
+ HealBot_Config.backcolr[HealBot_Config.Current_Skin],
+ HealBot_Config.backcolg[HealBot_Config.Current_Skin],
+ HealBot_Config.backcolb[HealBot_Config.Current_Skin] = ColorPickerFrame:GetColorRGB();
+ HealBot_Config.backcola[HealBot_Config.Current_Skin] = A;
+ elseif HealBot_ColourObjWaiting=="Bor" then
+ HealBot_Config.borcolr[HealBot_Config.Current_Skin],
+ HealBot_Config.borcolg[HealBot_Config.Current_Skin],
+ HealBot_Config.borcolb[HealBot_Config.Current_Skin] = ColorPickerFrame:GetColorRGB();
+ HealBot_Config.borcola[HealBot_Config.Current_Skin] = A;
+ elseif HealBot_ColourObjWaiting=="Abort" then
+ HealBot_Config.babortcolr[HealBot_Config.Current_Skin],
+ HealBot_Config.babortcolg[HealBot_Config.Current_Skin],
+ HealBot_Config.babortcolb[HealBot_Config.Current_Skin] = ColorPickerFrame:GetColorRGB();
+ HealBot_Config.babortcola[HealBot_Config.Current_Skin] = A;
+ else
+ HealBot_Config.CDCBarColour[HealBot_ColourObjWaiting].R,
+ HealBot_Config.CDCBarColour[HealBot_ColourObjWaiting].G,
+ HealBot_Config.CDCBarColour[HealBot_ColourObjWaiting].B = ColorPickerFrame:GetColorRGB();
+ end
+ HealBot_SetSkinColours()
+ HealBot_SetCDCBarColours()
+end
+ColorPickerFrame.func = HealBot_Returned_Colours
+
+function HealBot_UseColourPick(R, G, B, A)
+ if ColorPickerFrame:IsVisible() then
+ ColorPickerFrame:Hide();
+ elseif A then
+ ColorPickerFrame.hasOpacity = true;
+ ColorPickerFrame.opacity = A;
+ ColorPickerFrame:ClearAllPoints();
+ ColorPickerFrame:SetPoint("TOPLEFT","HealBot_Options","TOPRIGHT",0,-152);
+ ColorPickerFrame:Show();
+ OpacitySliderFrame:SetValue(1-A);
+ ColorPickerFrame:SetColorRGB(R, G, B);
+ else
+ ColorPickerFrame.hasOpacity = false;
+ ColorPickerFrame:ClearAllPoints();
+ ColorPickerFrame:SetPoint("TOPLEFT","HealBot_Options","TOPRIGHT",0,-152);
+ ColorPickerFrame:Show();
+ ColorPickerFrame:SetColorRGB(R, G, B);
+ end
+ return ColorPickerFrame:GetColorRGB();
+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
+
+--------------------------------------------------------------------------------
+
+function HealBot_Options_EditBox_OnLoad(this,text)
+ getglobal(this:GetName().."Text"):SetText(text);
+end
+
+function HealBot_Options_Click_OnTextChanged(this)
+ local class=UnitClass("Player");
+ 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");
+ 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");
+ 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");
+ 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
+
+--------------------------------------------------------------------------------
+
+function HealBot_Options_Defaults_OnClick(this)
+ HealBot_Options_CastNotify_OnClick(nil,0);
+-- HealBot_Config = HealBot_ConfigDefaults;
+ table.foreach(HealBot_ConfigDefaults, function (key,val)
+ HealBot_Config[key] = val;
+ end);
+ HealBot_Options_OnShow(HealBot_Options);
+ HealBot_RecalcSpells();
+ HealBot_Action_Reset();
+ HealBot_Config.ActionVisible = HealBot_Action:IsVisible();
+end
+
+function HealBot_Options_OnLoad(this)
+ table.insert(UISpecialFrames,this:GetName());
+
+ -- Tabs
+ PanelTemplates_SetNumTabs(this,7);
+ this.selectedTab = 1;
+ PanelTemplates_UpdateTabs(this);
+ HealBot_Options_ShowPanel(this.selectedTab);
+end
+
+function HealBot_Options_OnShow(this)
+ HealBot_Skins = HealBot_Config.Skins;
+ HealBot_Options_SetSkins()
+ HealBot_Options_ActionLocked:SetChecked(HealBot_Config.ActionLocked);
+ HealBot_Options_AlertLevel:SetValue(HealBot_Config.AlertLevel);
+ HealBot_Options_AutoShow:SetChecked(HealBot_Config.AutoClose);
+ HealBot_Options_PanelSounds:SetChecked(HealBot_Config.PanelSounds);
+ HealBot_Options_GroupHeals:SetChecked(HealBot_Config.GroupHeals);
+ if CT_RA_MainTanks then
+ HealBot_Options_TankHeals:SetChecked(HealBot_Config.TankHeals);
+ else
+ HealBot_Options_TankHeals:Disable();
+ HealBot_Options_TankHealsText:SetTextColor(0.6,0.6,0.6,0.75);
+ end
+ HealBot_Options_TargetHeals:SetChecked(HealBot_Config.TargetHeals);
+ HealBot_Options_EmergencyHeals:SetChecked(HealBot_Config.EmergencyHeals);
+ HealBot_Options_OverHeal:SetValue(HealBot_Config.OverHeal);
+ HealBot_Options_CastNotify_OnClick(nil,HealBot_Config.CastNotify);
+ HealBot_Options_SetBuffs();
+ HealBot_Options_HideOptions:SetChecked(HealBot_Config.HideOptions);
+ HealBot_Options_ShowTooltip:SetChecked(HealBot_Config.ShowTooltip);
+ HealBot_Options_GrowUpwards:SetChecked(HealBot_Config.GrowUpwards);
+ HealBot_Options_QualityRange:SetChecked(HealBot_Config.QualityRange);
+ HealBot_Options_ProtectPvP:SetChecked(HealBot_Config.ProtectPvP);
+ HealBot_Options_SoundDebuffWarning:SetChecked(HealBot_Config.SoundDebuffWarning);
+ HealBot_Options_ShowTooltipTarget:SetChecked(HealBot_Config.Tooltip_ShowTarget);
+ HealBot_Options_ShowTooltipSpellDetail:SetChecked(HealBot_Config.Tooltip_ShowSpellDetail);
+ HealBot_Options_ShowTooltipInstant:SetChecked(HealBot_Config.Tooltip_Recommend);
+ HealBot_Options_HideAbort:SetChecked(HealBot_Config.HideAbort);
+ HealBot_WarningSound_OnClick(nil,HealBot_Config.SoundDebuffPlay)
+ if HealBot_Config.SoundDebuffWarning>0 then
+ HealBot_WarningSound1:Enable();
+ HealBot_WarningSound2:Enable();
+ HealBot_WarningSound3:Enable();
+ else
+ HealBot_WarningSound1:Disable();
+ HealBot_WarningSound2:Disable();
+ HealBot_WarningSound3:Disable();
+ end
+ HealBot_Options_ShowDebuffWarning:SetChecked(HealBot_Config.ShowDebuffWarning);
+ HealBot_Options_EmergencyFilter_Refresh()
+ HealBot_Options_EmergencyFClass_Refresh();
+ HealBot_Options_EFClass_Reset();
+ HealBot_Options_CDCButLeft_Refresh()
+ HealBot_Options_CDCButRight_Refresh()
+ HealBot_SetCDCBarColours()
+ HealBot_Options_CDCMonitor_Refresh()
+ HealBot_ComboButtons_Button_OnClick(nil,HealBot_Options_ComboButtons_Button);
+ HealBot_Options_EnableHealthy:SetChecked(HealBot_Config.EnableHealthy);
+ HealBot_Options_NewSkinb:Disable();
+ HealBot_Options_ExtraSort_Refresh();
+ HealBot_Options_TooltipPos_Refresh();
+ HealBot_Options_SetChatMessages();
+end
+
+function HealBot_Options_SetSkins()
+ HealBot_Options_Skins_Refresh()
+ HealBot_Options_BarAlpha:SetValue(HealBot_Config.Barcola[HealBot_Config.Current_Skin]);
+ HealBot_Options_BarAlphaInHeal:SetValue(HealBot_Config.BarcolaInHeal[HealBot_Config.Current_Skin]);
+ HealBot_Options_BarTextureS:SetValue(HealBot_Config.btexture[HealBot_Config.Current_Skin])
+ HealBot_Options_BarHeightS:SetValue(HealBot_Config.bheight[HealBot_Config.Current_Skin])
+ HealBot_Options_BarWidthS:SetValue(HealBot_Config.bwidth[HealBot_Config.Current_Skin])
+ HealBot_Options_BarNumColsS:SetValue(HealBot_Config.numcols[HealBot_Config.Current_Skin])
+ HealBot_Options_BarBRSpaceS:SetValue(HealBot_Config.brspace[HealBot_Config.Current_Skin])
+ HealBot_Options_BarBCSpaceS:SetValue(HealBot_Config.bcspace[HealBot_Config.Current_Skin])
+ HealBot_Options_FontHeight:SetValue(HealBot_Config.btextheight[HealBot_Config.Current_Skin])
+ HealBot_Options_BarAlphaDis:SetValue(HealBot_Config.bardisa[HealBot_Config.Current_Skin])
+ HealBot_Options_AbortBarSize:SetValue(HealBot_Config.abortsize[HealBot_Config.Current_Skin])
+ HealBot_Options_ShowHeaders:SetChecked(HealBot_Config.ShowHeader[HealBot_Config.Current_Skin] or 0)
+ HealBot_SetSkinColours()
+ if HealBot_Config.Current_Skin==HEALBOT_SKINS_STD then
+ HealBot_Options_DeleteSkin:Disable();
+ else
+ HealBot_Options_DeleteSkin:Enable();
+ end
+end
+
+HealBot_Options_CurrentPanel = 0;
+
+function HealBot_Options_ShowPanel(id)
+ if HealBot_Options_CurrentPanel>0 then
+ getglobal("HealBot_Options_Panel"..HealBot_Options_CurrentPanel):Hide();
+ end
+ HealBot_Options_CurrentPanel = id;
+ if HealBot_Options_CurrentPanel>0 then
+ getglobal("HealBot_Options_Panel"..HealBot_Options_CurrentPanel):Show();
+ end
+end
+
+
+--------------------------------------------------------------------------------
+-- Chat Custom Messages UI Logic
+--------------------------------------------------------------------------------
+
+local HealBot_PlayerSpells = nil
+
+local function HealBot_GetPlayerSpells()
+ if HealBot_PlayerSpells then return HealBot_PlayerSpells end
+ local spellSet = {}
+ local i = 1
+ while true do
+ local spellName, spellRank = GetSpellName(i, BOOKTYPE_SPELL)
+ if not spellName then
+ break
+ end
+ spellSet[spellName] = true
+ i = i + 1
+ end
+ local sortedSpells = {}
+ for k, _ in pairs(spellSet) do
+ table.insert(sortedSpells, k)
+ end
+ table.sort(sortedSpells)
+ HealBot_PlayerSpells = sortedSpells
+ return sortedSpells
+end
+
+function HealBot_Options_ChatMsg_Spell_Initialize()
+ local info
+
+ info = { text = "None", func = HealBot_Options_ChatMsg_Spell_OnClick, value = "None" }
+ UIDropDownMenu_AddButton(info)
+
+ local spells = HealBot_GetPlayerSpells()
+ for _, spellName in ipairs(spells) do
+ info = {
+ text = spellName,
+ func = HealBot_Options_ChatMsg_Spell_OnClick,
+ value = spellName
+ }
+ UIDropDownMenu_AddButton(info)
+ end
+end
+
+function HealBot_Options_ChatMsg_Spell_OnClick()
+ local frameName = UIDROPDOWNMENU_OPEN_MENU
+ local frame = getglobal(frameName)
+ local id = frame:GetID()
+
+ if not HealBot_Config.ChatMessages then HealBot_Config.ChatMessages = {} end
+ if not HealBot_Config.ChatMessages[id] then
+ HealBot_Config.ChatMessages[id] = { Spell = "None", Message = "Casting #Spell# on #Target#", Channel = "None" }
+ end
+
+ HealBot_Config.ChatMessages[id].Spell = this.value
+
+ local text = this.value
+ if text == "None" then text = "None" end
+
+ UIDropDownMenu_SetSelectedValue(frame, this.value)
+ UIDropDownMenu_SetText(text, frame)
+end
+
+function HealBot_Options_ChatMsg_Channel_OnClick(id, buttonFrame)
+ if not HealBot_Config.ChatMessages then HealBot_Config.ChatMessages = {} end
+ if not HealBot_Config.ChatMessages[id] then
+ HealBot_Config.ChatMessages[id] = { Spell = "None", Message = "Casting #Spell# on #Target#", Channel = "None" }
+ end
+
+ 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 = "None", Message = "Casting #Spell# on #Target#", Channel = "None" }
+ end
+ end
+ for i = 1, 5 do
+ local msgConfig = HealBot_Config.ChatMessages[i]
+ if msgConfig then
+ local dropDown = getglobal("HealBot_Options_ChatMsg"..i)
+ local editBox = getglobal("HealBot_Options_ChatMsg"..i.."_Text")
+ local chanButton = getglobal("HealBot_Options_ChatMsg"..i.."_Channel")
+
+ if dropDown then
+ UIDropDownMenu_Initialize(dropDown, HealBot_Options_ChatMsg_Spell_Initialize)
+ UIDropDownMenu_SetSelectedValue(dropDown, msgConfig.Spell)
+ UIDropDownMenu_SetWidth(110, dropDown)
+ UIDropDownMenu_SetText(msgConfig.Spell, dropDown)
+ end
+ if editBox then
+ editBox:SetText(msgConfig.Message or "")
+ end
+ if chanButton then
+ chanButton:SetText(msgConfig.Channel or "None")
+ end
+ end
+ end
+end
+
+
+
+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
+end
+
+function HealBot_Options_BuffWatchInCombat_OnClick(self)
+ local frame = self or this
+ HealBot_Config.BuffWatchInCombat = frame:GetChecked() or 0;
+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
+ this:SetChecked(HealBot_Config.BuffWatchSelf[id])
+ else
+ this:SetChecked(0)
+ 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
+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
+
+ UIDropDownMenu_SetSelectedID(frame, this.value + 1)
+ UIDropDownMenu_SetText(text, frame)
+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)
+ UIDropDownMenu_SetSelectedID(dropDown, val + 1)
+ end
+ end
+end
+
+
+
+
+
+
+
diff --git a/HealBot_Options.xml b/HealBot_Options.xml
new file mode 100644
index 0000000..a1535c0
--- /dev/null
+++ b/HealBot_Options.xml
@@ -0,0 +1,2768 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ this:ClearFocus();
+
+
+ this:HighlightText(0, 0);
+
+
+ this:HighlightText();
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ this:SetBackdropBorderColor(0.4, 0.4, 0.4);
+ this:SetBackdropColor(0, 0, 0, 0);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ HealBot_Options_ActionLocked_OnLoad(this)
+ HealBot_Options_ActionLocked_OnClick(this)
+
+
+
+
+
+
+
+
+
+
+
+ HealBot_Options_GrowUpwards_OnLoad(this,HEALBOT_OPTIONS_GROWUPWARDS)
+ HealBot_Options_GrowUpwards_OnClick(this)
+
+
+
+
+
+
+
+
+
+
+
+
+ getglobal(this:GetName().."Text"):SetText("Show Mana Bars");
+ this:SetChecked(HealBot_Config.ShowManaBars);
+
+
+ if (this:GetChecked()) then
+ HealBot_Config.ShowManaBars = 1;
+ else
+ HealBot_Config.ShowManaBars = 0;
+ end
+ HealBot_Action_Refresh();
+
+
+
+
+
+
+
+
+
+
+
+
+ HealBot_Options_AutoShow_OnLoad(this)
+ HealBot_Options_AutoShow_OnClick(this)
+
+
+
+
+
+
+
+
+
+
+
+ HealBot_Options_PanelSounds_OnLoad(this)
+ HealBot_Options_PanelSounds_OnClick(this)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ HealBot_Options_HideOptions_OnLoad(this,HEALBOT_OPTIONS_HIDEOPTIONS)
+
+ HealBot_Options_HideOptions_OnClick(this)
+
+
+
+
+
+
+
+
+
+
+
+ HealBot_Options_HideAbort_OnLoad(this,HEALBOT_OPTIONS_HIDEABORT)
+ HealBot_Options_HideAbort_OnClick(this)
+
+
+
+
+
+
+
+
+
+
+
+ HealBot_Options_QualityRange_OnLoad(this,HEALBOT_OPTIONS_QUALITYRANGE)
+ HealBot_Options_QualityRange_OnClick(this)
+
+
+
+
+
+
+
+
+
+
+
+ HealBot_Options_ProtectPvP_OnLoad(this,HEALBOT_OPTIONS_PROTECTPVP)
+ HealBot_Options_ProtectPvP_OnClick(this)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ HealBot_ComboButtons_Button_OnLoad(this,HEALBOT_OPTIONS_BUTTONLEFT)
+ HealBot_ComboButtons_Button_OnClick(this,this:GetID())
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ HealBot_ComboButtons_Button_OnLoad(this,HEALBOT_OPTIONS_BUTTONMIDDLE)
+ HealBot_ComboButtons_Button_OnClick(this,this:GetID())
+
+
+
+
+
+
+
+
+
+
+
+ HealBot_ComboButtons_Button_OnLoad(this,HEALBOT_OPTIONS_BUTTONRIGHT)
+ HealBot_ComboButtons_Button_OnClick(this,this:GetID())
+
+
+
+
+
+
+
+
+
+
+
+ HealBot_ComboButtons_Button_OnLoad(this,HEALBOT_OPTIONS_BUTTON4)
+ HealBot_ComboButtons_Button_OnClick(this,this:GetID())
+
+
+
+
+
+
+
+
+
+
+
+ HealBot_ComboButtons_Button_OnLoad(this,HEALBOT_OPTIONS_BUTTON5)
+ HealBot_ComboButtons_Button_OnClick(this,this:GetID())
+
+
+
+
+
+
+
+
+
+
+
+
+
+ HealBot_Options_EditBox_OnLoad(this,HEALBOT_OPTIONS_CLICK)
+
+
+ HealBot_Options_Click_OnTextChanged(this)
+
+
+
+
+
+
+
+
+
+
+
+
+
+ HealBot_Options_EditBox_OnLoad(this,HEALBOT_OPTIONS_SHIFT)
+
+
+ HealBot_Options_Shift_OnTextChanged(this)
+
+
+
+
+
+
+
+
+
+
+
+
+
+ HealBot_Options_EditBox_OnLoad(this,HEALBOT_OPTIONS_CTRL)
+
+
+ HealBot_Options_Ctrl_OnTextChanged(this)
+
+
+
+
+
+
+
+
+
+
+
+
+
+ HealBot_Options_EditBox_OnLoad(this,HEALBOT_OPTIONS_SHIFTCTRL)
+
+
+ HealBot_Options_ShiftCtrl_OnTextChanged(this)
+
+
+
+
+
+
+
+
+
+
+
+
+ HealBot_Options_EnableHealthy_OnLoad(this,HEALBOT_OPTIONS_ENABLEHEALTHY)
+ HealBot_Options_EnableHealthy_OnClick(this)
+
+
+
+
+
+
+
+
+ this:SetBackdropBorderColor(0.4, 0.4, 0.4);
+ this:SetBackdropColor(0, 0, 0, 0);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ HealBot_Options_ShowTooltip_OnLoad(this,HEALBOT_OPTIONS_SHOWTOOLTIP)
+ HealBot_Options_ShowTooltip_OnClick(this)
+
+
+
+
+
+
+
+
+
+
+
+ HealBot_Options_TooltipPos_OnLoad(this)
+
+
+
+
+
+
+
+
+
+
+
+ HealBot_Options_ShowTooltipTarget_OnLoad(this,HEALBOT_OPTIONS_SHOWUNITTOOLTIP)
+ HealBot_Options_ShowTooltipTarget_OnClick(this)
+
+
+
+
+
+
+
+
+
+
+
+ HealBot_Options_ShowTooltipSpellDetail_OnLoad(this,HEALBOT_OPTIONS_SHOWDETTOOLTIP)
+ HealBot_Options_ShowTooltipSpellDetail_OnClick(this)
+
+
+
+
+
+
+
+
+
+
+
+ HealBot_Options_ShowTooltipInstant_OnLoad(this,HEALBOT_OPTIONS_SHOWRECTOOLTIP)
+ HealBot_Options_ShowTooltipInstant_OnClick(this)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ this:SetBackdropBorderColor(0.4, 0.4, 0.4);
+ this:SetBackdropColor(0, 0, 0, 0);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ HealBot_Options_GroupHeals_OnLoad(this,HEALBOT_OPTIONS_GROUPHEALS)
+ HealBot_Options_GroupHeals_OnClick(this)
+
+
+
+
+
+
+
+
+
+
+
+ HealBot_Options_TankHeals_OnLoad(this,HEALBOT_OPTIONS_TANKHEALS)
+ HealBot_Options_TankHeals_OnClick(this)
+
+
+
+
+
+
+
+
+
+
+
+ HealBot_Options_TargetHeals_OnLoad(this,HEALBOT_OPTIONS_TARGETHEALS)
+ HealBot_Options_TargetHeals_OnClick(this)
+
+
+
+
+
+
+
+
+
+
+
+ HealBot_Options_EmergencyHeals_OnLoad(this,HEALBOT_OPTIONS_EMERGENCYHEALS)
+ HealBot_Options_EmergencyHeals_OnClick(this)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ HealBot_Options_Pct_OnLoad(this,HEALBOT_OPTIONS_ALERTLEVEL)
+ HealBot_Options_AlertLevel_OnValueChanged(this)
+
+
+
+
+
+
+
+
+
+
+
+ HealBot_Options_Pct_OnLoad(this,HEALBOT_OPTIONS_OVERHEAL)
+ HealBot_Options_OverHeal_OnValueChanged(this)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ HealBot_Options_EmergencyFilter_OnLoad(this)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ HealBot_Options_ExtraSort_OnLoad(this)
+
+
+
+
+
+
+
+ this:SetBackdropBorderColor(0.4, 0.4, 0.4);
+ this:SetBackdropColor(0, 0, 0, 0);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ HealBot_Options_EmergencyFClass_OnLoad(this)
+
+
+
+
+
+
+
+
+
+
+
+
+ HealBot_Options_EFClass_OnLoad(this,HEALBOT_DRUID)
+ HealBot_Options_EFClass_OnClick(this)
+
+
+
+
+
+
+
+
+
+
+
+ HealBot_Options_EFClass_OnLoad(this,HEALBOT_HUNTER)
+ HealBot_Options_EFClass_OnClick(this)
+
+
+
+
+
+
+
+
+
+
+
+ HealBot_Options_EFClass_OnLoad(this,HEALBOT_MAGE)
+ HealBot_Options_EFClass_OnClick(this)
+
+
+
+
+
+
+
+
+
+
+
+ HealBot_Options_EFClass_OnLoad(this,HEALBOT_PALADIN)
+ HealBot_Options_EFClass_OnClick(this)
+
+
+
+
+
+
+
+
+
+
+
+ HealBot_Options_EFClass_OnLoad(this,HEALBOT_PRIEST)
+ HealBot_Options_EFClass_OnClick(this)
+
+
+
+
+
+
+
+
+
+
+
+ HealBot_Options_EFClass_OnLoad(this,HEALBOT_ROGUE)
+ HealBot_Options_EFClass_OnClick(this)
+
+
+
+
+
+
+
+
+
+
+
+ HealBot_Options_EFClass_OnLoad(this,HEALBOT_SHAMAN)
+ HealBot_Options_EFClass_OnClick(this)
+
+
+
+
+
+
+
+
+
+
+
+ HealBot_Options_EFClass_OnLoad(this,HEALBOT_WARLOCK)
+ HealBot_Options_EFClass_OnClick(this)
+
+
+
+
+
+
+
+
+
+
+
+ HealBot_Options_EFClass_OnLoad(this,HEALBOT_WARRIOR)
+ HealBot_Options_EFClass_OnClick(this)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ HealBot_Options_CDCMonitor_OnLoad(this)
+
+
+
+
+
+
+ this:SetBackdropBorderColor(0.4, 0.4, 0.4);
+ this:SetBackdropColor(0, 0, 0, 0);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ HealBot_Options_CDCButLeft_OnLoad(this)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ HealBot_Options_CDCButRight_OnLoad(this)
+
+
+
+
+
+
+
+ this:SetBackdropBorderColor(0.4, 0.4, 0.4);
+ this:SetBackdropColor(0, 0, 0, 0);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ this:SetMinMaxValues(0,100); this:SetValue(100);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ this:SetMinMaxValues(0,100); this:SetValue(100);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ this:SetMinMaxValues(0,100); this:SetValue(100);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ this:SetMinMaxValues(0,100); this:SetValue(100);
+
+
+
+
+
+
+
+
+ this:SetBackdropBorderColor(0.4, 0.4, 0.4);
+ this:SetBackdropColor(0, 0, 0, 0);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ HealBot_Options_ShowDebuffWarning_OnLoad(this,HEALBOT_OPTIONS_SHOWDEBUFFWARNING)
+ HealBot_Options_ShowDebuffWarning_OnClick(this)
+
+
+
+
+
+
+
+
+
+
+
+ HealBot_Options_SoundDebuffWarning_OnLoad(this,HEALBOT_OPTIONS_SOUNDDEBUFFWARNING)
+ HealBot_Options_SoundDebuffWarning_OnClick(this)
+
+
+
+
+
+
+
+
+
+
+
+
+ HealBot_WarningSound_OnLoad(this,HEALBOT_OPTIONS_SOUND1)
+ HealBot_WarningSound_OnClick(this,this:GetID())
+
+
+
+
+
+
+
+
+
+
+
+ HealBot_WarningSound_OnLoad(this,HEALBOT_OPTIONS_SOUND2)
+ HealBot_WarningSound_OnClick(this,this:GetID())
+
+
+
+
+
+
+
+
+
+
+
+ HealBot_WarningSound_OnLoad(this,HEALBOT_OPTIONS_SOUND3)
+ HealBot_WarningSound_OnClick(this,this:GetID())
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ HealBot_Options_Skins_OnLoad(this)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ HealBot_Options_NewSkin_OnTextChanged(this)
+
+
+
+
+
+
+
+
+ this:SetBackdropBorderColor(0.4, 0.4, 0.4);
+ this:SetBackdropColor(0, 0, 0, 0);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ HealBot_Options_ShowHeaders_OnLoad(this,HEALBOT_OPTIONS_SHOWHEADERS)
+ HealBot_Options_ShowHeaders_OnClick(this)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ HealBot_Options_val_OnLoad(this,HEALBOT_OPTIONS_SKINTEXTURE,1,14)
+ HealBot_Options_BarTextureS_OnValueChanged(this)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ HealBot_Options_val_OnLoad(this,HEALBOT_OPTIONS_SKINNUMCOLS,1,8)
+ HealBot_Options_BarNumColsS_OnValueChanged(this)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ HealBot_Options_val_OnLoad(this,HEALBOT_OPTIONS_SKINHEIGHT,10,25)
+ HealBot_Options_BarHeightS_OnValueChanged(this)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ HealBot_Options_val_OnLoad(this,HEALBOT_OPTIONS_SKINWIDTH,50,225)
+ HealBot_Options_BarWidthS_OnValueChanged(this)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ HealBot_Options_val_OnLoad(this,HEALBOT_OPTIONS_SKINBRSPACE,0,10)
+ HealBot_Options_BarBRSpaceS_OnValueChanged(this)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ HealBot_Options_val_OnLoad(this,HEALBOT_OPTIONS_SKINBCSPACE,0,25)
+ HealBot_Options_BarBCSpaceS_OnValueChanged(this)
+
+
+
+
+
+
+
+
+
+
+
+ HealBot_Options_Pct_OnLoad_MinMax(this,HEALBOT_OPTIONS_BARALPHA,0.25,1)
+ HealBot_Options_BarAlpha_OnValueChanged(this)
+
+
+
+
+
+
+
+
+
+
+
+
+ HealBot_Options_Pct_OnLoad_MinMax(this,HEALBOT_OPTIONS_BARALPHAINHEAL,0.05,0.75)
+ HealBot_Options_BarAlphaInHeal_OnValueChanged(this)
+
+
+
+
+
+
+
+
+
+
+
+ HealBot_Options_Pct_OnLoad(this,HEALBOT_OPTIONS_BARALPHADIS)
+ HealBot_Options_BarAlphaDis_OnValueChanged(this)
+
+
+
+
+
+
+
+
+
+
+
+
+
+ HealBot_Options_val_OnLoad(this,HEALBOT_OPTIONS_SKINFHEIGHT,7,18)
+ HealBot_Options_FontHeight_OnValueChanged(this)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ HealBot_Options_val_OnLoad(this,HEALBOT_OPTIONS_ABORTSIZE,0,15)
+ HealBot_Options_AbortBarSize_OnValueChanged(this)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ this:SetMinMaxValues(0,100); this:SetValue(70);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ this:SetMinMaxValues(0,100); this:SetValue(100);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ this:SetMinMaxValues(0,100); this:SetValue(100);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ this:SetMinMaxValues(0,100); this:SetValue(100);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ this:SetMinMaxValues(0,100); this:SetValue(100);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ this:SetMinMaxValues(0,100); this:SetValue(100);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ this:SetMinMaxValues(0,100); this:SetValue(100);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ this:SetBackdropBorderColor(0.4, 0.4, 0.4);
+ this:SetBackdropColor(0, 0, 0, 0);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ HealBot_WarningSound_OnLoad(this,HEALBOT_OPTIONS_BUFFWATCH)
+ HealBot_Options_BuffWatch_OnClick(this)
+
+
+
+
+
+
+
+
+
+
+
+
+ HealBot_WarningSound_OnLoad(this,HEALBOT_OPTIONS_BUFFWATCHINCOMBAT)
+ HealBot_Options_BuffWatchInCombat_OnClick(this)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ HealBot_Options_Buff_OnLoad(this)
+
+
+
+
+
+
+
+
+
+
+ HealBot_Options_BuffSelf_OnLoad(this)
+ HealBot_Options_BuffSelf_OnClick(this)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ HealBot_Options_Buff_OnLoad(this)
+
+
+
+
+
+
+
+
+
+
+ HealBot_Options_BuffSelf_OnLoad(this)
+ HealBot_Options_BuffSelf_OnClick(this)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ HealBot_Options_Buff_OnLoad(this)
+
+
+
+
+
+
+
+
+
+
+ HealBot_Options_BuffSelf_OnLoad(this)
+ HealBot_Options_BuffSelf_OnClick(this)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ HealBot_Options_Buff_OnLoad(this)
+
+
+
+
+
+
+
+
+
+
+ HealBot_Options_BuffSelf_OnLoad(this)
+ HealBot_Options_BuffSelf_OnClick(this)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ HealBot_Options_Buff_OnLoad(this)
+
+
+
+
+
+
+
+
+
+
+ HealBot_Options_BuffSelf_OnLoad(this)
+ HealBot_Options_BuffSelf_OnClick(this)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ HealBot_Options_Buff_OnLoad(this)
+
+
+
+
+
+
+
+
+
+
+ HealBot_Options_BuffSelf_OnLoad(this)
+ HealBot_Options_BuffSelf_OnClick(this)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ HealBot_Options_Buff_OnLoad(this)
+
+
+
+
+
+
+
+
+
+
+ HealBot_Options_BuffSelf_OnLoad(this)
+ HealBot_Options_BuffSelf_OnClick(this)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ HealBot_Options_Buff_OnLoad(this)
+
+
+
+
+
+
+
+
+
+
+ HealBot_Options_BuffSelf_OnLoad(this)
+ HealBot_Options_BuffSelf_OnClick(this)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ if HealBot_Config.ChatMessages then
+ HealBot_Config.ChatMessages[1].Message = this:GetText();
+ end
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ if HealBot_Config.ChatMessages then
+ HealBot_Config.ChatMessages[2].Message = this:GetText();
+ end
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ if HealBot_Config.ChatMessages then
+ HealBot_Config.ChatMessages[3].Message = this:GetText();
+ end
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ if HealBot_Config.ChatMessages then
+ HealBot_Config.ChatMessages[4].Message = this:GetText();
+ end
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ if HealBot_Config.ChatMessages then
+ HealBot_Config.ChatMessages[5].Message = this:GetText();
+ end
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ HealBot_Options_OnLoad(this);
+ HealBot_Options_OnShow(this);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Images/HealBot.tga b/Images/HealBot.tga
new file mode 100644
index 0000000..9a71465
Binary files /dev/null and b/Images/HealBot.tga differ
diff --git a/Images/WhiteLine.tga b/Images/WhiteLine.tga
new file mode 100644
index 0000000..035352b
Binary files /dev/null and b/Images/WhiteLine.tga differ
diff --git a/Images/WhiteLine2.tga b/Images/WhiteLine2.tga
new file mode 100644
index 0000000..d3964f7
Binary files /dev/null and b/Images/WhiteLine2.tga differ
diff --git a/Images/bar1.tga b/Images/bar1.tga
new file mode 100644
index 0000000..392be32
Binary files /dev/null and b/Images/bar1.tga differ
diff --git a/Images/bar10.tga b/Images/bar10.tga
new file mode 100644
index 0000000..5a5f761
Binary files /dev/null and b/Images/bar10.tga differ
diff --git a/Images/bar11.tga b/Images/bar11.tga
new file mode 100644
index 0000000..1c20a81
Binary files /dev/null and b/Images/bar11.tga differ
diff --git a/Images/bar12.tga b/Images/bar12.tga
new file mode 100644
index 0000000..31828ff
Binary files /dev/null and b/Images/bar12.tga differ
diff --git a/Images/bar13.tga b/Images/bar13.tga
new file mode 100644
index 0000000..7170a6e
Binary files /dev/null and b/Images/bar13.tga differ
diff --git a/Images/bar14.tga b/Images/bar14.tga
new file mode 100644
index 0000000..c6d849f
Binary files /dev/null and b/Images/bar14.tga differ
diff --git a/Images/bar2.tga b/Images/bar2.tga
new file mode 100644
index 0000000..5385ebd
Binary files /dev/null and b/Images/bar2.tga differ
diff --git a/Images/bar3.tga b/Images/bar3.tga
new file mode 100644
index 0000000..b8432b3
Binary files /dev/null and b/Images/bar3.tga differ
diff --git a/Images/bar4.tga b/Images/bar4.tga
new file mode 100644
index 0000000..7970438
Binary files /dev/null and b/Images/bar4.tga differ
diff --git a/Images/bar5.tga b/Images/bar5.tga
new file mode 100644
index 0000000..bdb0d97
Binary files /dev/null and b/Images/bar5.tga differ
diff --git a/Images/bar6.tga b/Images/bar6.tga
new file mode 100644
index 0000000..1f001b9
Binary files /dev/null and b/Images/bar6.tga differ
diff --git a/Images/bar7.tga b/Images/bar7.tga
new file mode 100644
index 0000000..d33bc54
Binary files /dev/null and b/Images/bar7.tga differ
diff --git a/Images/bar8.tga b/Images/bar8.tga
new file mode 100644
index 0000000..9ad81ad
Binary files /dev/null and b/Images/bar8.tga differ
diff --git a/Images/bar9.tga b/Images/bar9.tga
new file mode 100644
index 0000000..bf4c90f
Binary files /dev/null and b/Images/bar9.tga differ
diff --git a/README.md b/README.md
index a81433f..078ffdb 100644
--- a/README.md
+++ b/README.md
@@ -1 +1,42 @@
-# HealbotTurtle
\ No newline at end of file
+HealBotBlue by Bluewhale.
+
+This addon is built on top of Strife's HealBot Continues which was built on original Healbot, however a lot of code got refactored and changed, with more flexibilty and functions.
+
+--------------------------------------------
+NOTE: For HealBot to work correctly, the Selfcast feature in wow options needs to be disabled.
+--------------------------------------------
+
+Reporting ERRORS:
+================
+Major error will popup a frame with error information.
+Take a screenshot and post comments.
+
+
+Change log:
+v1.0.0
+
+This addon is built on top of HealBot Continues by Strife. Majority of code got refactored, removed and moved around.
+New functionality implemented:
+-Buff tracking
+-Hot tracking with icons
+-Incoming heals use newer protocol
+-Chat functionalities
+-Might not work on servers other than TurtleWow clones. It uses Turtle based api for some calls
+-Mana bars for healers in grid.
+
+TODO:
+- Mouseover casting
+- Updating bonus values according to TurtleWoW and it's clones talent values.
+
+Installation :
+
+Unpack the zipped file and place the HealBot folder under Interface/AddOns
+in your World of Warcraft directory. Path with default installation:
+C:\Program Files\World of Warcraft\Interface\AddOns\HealBot
+
+
+Chat commands :
+
+/hb - toggles the main HealBot panel on and off
+/hb options - toggles the HealBot options panel on and off
+/hb reset - resets the contents of the main HealBot panel