mirror of
https://github.com/Bluewhale1337/HealBotBlue.git
synced 2026-07-27 09:44:44 +00:00
Compare commits
24 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 0186fc1d93 | |||
| ff97414bb1 | |||
| d0d6a39fb9 | |||
| 4209b05ca0 | |||
| 66172cab45 | |||
| eec5745dbb | |||
| 4678236cc0 | |||
| a1aa1a4c1d | |||
| 86e0e0b18a | |||
| becb2ddfdb | |||
| 7eb07d724e | |||
| 2e8e57f5c4 | |||
| f8c6c3493b | |||
| 01a8e3bc6c | |||
| c50bcd54f3 | |||
| 4c7cfbde8e | |||
| cb1ba1ab75 | |||
| 0c8b687f53 | |||
| 42715fba47 | |||
| 6fe02c1a16 | |||
| a6c75b78f7 | |||
| 1e1e06163c | |||
| 2995ccbd32 | |||
| 8b3355656e |
+315
-284
@@ -1,285 +1,316 @@
|
||||
--[[
|
||||
|
||||
HealBot Contined
|
||||
|
||||
]]
|
||||
|
||||
-- local _scale=0; -- moved to HealBot_Controller_Range.lua
|
||||
CalcEquipBonus=false;
|
||||
HealBot_EquipChangeTimer = 0;
|
||||
HealValue=0;
|
||||
InitSpells=1;
|
||||
local DebugDebuff=false;
|
||||
Delay_RecalcParty=0;
|
||||
|
||||
|
||||
-- Debugging and Error functions moved to HealBot_Controller_Comms.lua
|
||||
|
||||
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
|
||||
|
||||
-- HealBot_SendAddonMessage moved to HealBot_Controller_Comms.lua
|
||||
|
||||
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
|
||||
|
||||
-- Spell parsing and casting functions moved to HealBot_Controller_Spells.lua
|
||||
|
||||
function HealBot_UnitClass(unit)
|
||||
local playerClass, englishClass = UnitClass(unit);
|
||||
return englishClass;
|
||||
end
|
||||
|
||||
---- HealBot_UnitAffected moved to HealBot_Controller_Aura.lua
|
||||
-- safer to use GameTooltip:SetUnitBuff and read the lines in the tooltip ...
|
||||
-- maybe make an additional GameTooltip frame if possible ?
|
||||
|
||||
-- Spell parsing, default setup, finding, casting, and recalculating functions moved to HealBot_Controller_Spells.lua
|
||||
|
||||
--------------------------------------------------------------------------------------------------
|
||||
-- OnFoo functions
|
||||
--------------------------------------------------------------------------------------------------
|
||||
|
||||
-- Event loop handlers and event dispatcher moved to HealBot_Controller_Events.lua
|
||||
|
||||
-- SpiBonus and GetBonus functions moved to HealBot_Controller_Spells.lua
|
||||
|
||||
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
|
||||
|
||||
-- HealBot_InitSpells moved to HealBot_Controller_Spells.lua
|
||||
|
||||
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
|
||||
|
||||
-- HealBot_InitGetSpellData and HealBot_Generic_Patten moved to HealBot_Controller_Spells.lua
|
||||
|
||||
-- HealBot_Get_DebugChan moved to HealBot_Controller_Comms.lua
|
||||
|
||||
-- HealBot_Range_Check moved to HealBot_Controller_Range.lua
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
-- Native Action Bar Hovercasting (Mouseover Hook)
|
||||
--------------------------------------------------------------------------------
|
||||
do
|
||||
local pass = function() end
|
||||
local orig = UseAction
|
||||
function UseAction(slot, checkCursor, onSelf)
|
||||
if HealBot_Config.ActionMouseover == 1 then
|
||||
local mouseover = HealBot_Action_TooltipUnit
|
||||
if mouseover and mouseover ~= 'target' then
|
||||
local _PlaySound = PlaySound
|
||||
local target = UnitName("target")
|
||||
|
||||
PlaySound = pass
|
||||
ClearTarget()
|
||||
PlaySound = _PlaySound
|
||||
|
||||
do
|
||||
local autoSelfCast = GetCVar("autoSelfCast")
|
||||
SetCVar("autoSelfCast", "0") -- Ensure disabled
|
||||
orig(slot, checkCursor, onSelf)
|
||||
if autoSelfCast then
|
||||
SetCVar("autoSelfCast", autoSelfCast)
|
||||
end
|
||||
end
|
||||
|
||||
SpellTargetUnit(mouseover)
|
||||
|
||||
if target then
|
||||
PlaySound = pass
|
||||
TargetLastTarget()
|
||||
PlaySound = _PlaySound
|
||||
end
|
||||
|
||||
return
|
||||
end
|
||||
end
|
||||
orig(slot, checkCursor, onSelf)
|
||||
end
|
||||
end
|
||||
|
||||
--[[
|
||||
|
||||
HealBot Contined
|
||||
|
||||
]]
|
||||
|
||||
-- local _scale=0; -- moved to HealBot_Controller_Range.lua
|
||||
HealBot_CalcEquipBonus=false;
|
||||
HealBot_EquipChangeTimer = 0;
|
||||
HealBot_HealValue=0;
|
||||
HealBot_SpellsInitFlag=1;
|
||||
local DebugDebuff=false;
|
||||
HealBot_Delay_RecalcParty=0;
|
||||
|
||||
|
||||
-- Debugging and Error functions moved to HealBot_Controller_Comms.lua
|
||||
|
||||
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=="forms" or cmd=="form") then
|
||||
local forms = GetNumShapeshiftForms();
|
||||
if forms and forms > 0 then
|
||||
HealBot_AddChat("HealBot: Available shapeshift forms:");
|
||||
for i=1,forms do
|
||||
local icon, name, active = GetShapeshiftFormInfo(i);
|
||||
local actStr = "false"
|
||||
if active then actStr = "true" end
|
||||
HealBot_AddChat(" Form " .. i .. ": " .. (name or "nil") .. " | Icon: " .. (icon or "nil") .. " | Active: " .. actStr);
|
||||
end
|
||||
else
|
||||
HealBot_AddChat("HealBot: No shapeshift forms found.");
|
||||
end
|
||||
return
|
||||
end
|
||||
|
||||
if (cmd=="reset" or cmd=="recalc" or cmd=="defaults") then
|
||||
HealBot_SpellsInitFlag=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
|
||||
HealBot_SpellsInitFlag=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
|
||||
|
||||
-- HealBot_SendAddonMessage moved to HealBot_Controller_Comms.lua
|
||||
|
||||
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
|
||||
|
||||
-- Spell parsing and casting functions moved to HealBot_Controller_Spells.lua
|
||||
|
||||
function HealBot_UnitClass(unit)
|
||||
local playerClass, englishClass = UnitClass(unit);
|
||||
return englishClass;
|
||||
end
|
||||
|
||||
---- HealBot_UnitAffected moved to HealBot_Controller_Aura.lua
|
||||
-- safer to use GameTooltip:SetUnitBuff and read the lines in the tooltip ...
|
||||
-- maybe make an additional GameTooltip frame if possible ?
|
||||
|
||||
-- Spell parsing, default setup, finding, casting, and recalculating functions moved to HealBot_Controller_Spells.lua
|
||||
|
||||
--------------------------------------------------------------------------------------------------
|
||||
-- OnFoo functions
|
||||
--------------------------------------------------------------------------------------------------
|
||||
|
||||
-- Event loop handlers and event dispatcher moved to HealBot_Controller_Events.lua
|
||||
|
||||
-- SpiBonus and GetBonus functions moved to HealBot_Controller_Spells.lua
|
||||
|
||||
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
|
||||
|
||||
-- HealBot_InitSpells moved to HealBot_Controller_Spells.lua
|
||||
|
||||
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
|
||||
|
||||
-- HealBot_InitGetSpellData and HealBot_Generic_Patten moved to HealBot_Controller_Spells.lua
|
||||
|
||||
-- HealBot_Get_DebugChan moved to HealBot_Controller_Comms.lua
|
||||
|
||||
-- HealBot_Range_Check moved to HealBot_Controller_Range.lua
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
-- Native Action Bar Hovercasting (Mouseover Hook)
|
||||
--------------------------------------------------------------------------------
|
||||
do
|
||||
local pass = function() end
|
||||
local orig = UseAction
|
||||
function UseAction(slot, checkCursor, onSelf)
|
||||
if HealBot_Config.ActionMouseover == 1 then
|
||||
local mouseover = HealBot_Action_TooltipUnit
|
||||
if mouseover and mouseover ~= 'target' then
|
||||
local _PlaySound = PlaySound
|
||||
local target = UnitName("target")
|
||||
|
||||
PlaySound = pass
|
||||
ClearTarget()
|
||||
PlaySound = _PlaySound
|
||||
|
||||
do
|
||||
local autoSelfCast = GetCVar("autoSelfCast")
|
||||
SetCVar("autoSelfCast", "0") -- Ensure disabled
|
||||
|
||||
local spellName = nil
|
||||
if not GetActionText(slot) then
|
||||
HealBot_ScanTooltip:SetOwner(HealBot_ScanTooltip, "ANCHOR_NONE")
|
||||
HealBot_ScanTooltip:SetAction(slot)
|
||||
spellName = HealBot_ScanTooltipTextLeft1 and HealBot_ScanTooltipTextLeft1:GetText()
|
||||
end
|
||||
|
||||
HealBot_CastFailed = false
|
||||
orig(slot, checkCursor, onSelf)
|
||||
if autoSelfCast then
|
||||
SetCVar("autoSelfCast", autoSelfCast)
|
||||
end
|
||||
|
||||
if spellName and not HealBot_CastFailed then
|
||||
HealBot_CastingSpell = spellName
|
||||
HealBot_CastingTarget = mouseover
|
||||
HealBot_Process_HealValue(spellName, mouseover)
|
||||
HealBot_AnnounceCast(spellName, mouseover)
|
||||
end
|
||||
end
|
||||
|
||||
SpellTargetUnit(mouseover)
|
||||
|
||||
if target then
|
||||
PlaySound = pass
|
||||
TargetLastTarget()
|
||||
PlaySound = _PlaySound
|
||||
end
|
||||
|
||||
return
|
||||
end
|
||||
end
|
||||
orig(slot, checkCursor, onSelf)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
## Interface: 11200
|
||||
## Title: HealBotBlue
|
||||
## Version: 1.3
|
||||
## Version: 1.4.1
|
||||
## Author: Bluewhale
|
||||
## Notes: Adds panel with skinable bars for healing and decursive
|
||||
## SavedVariables: HealBot_Config
|
||||
|
||||
+14
-14
@@ -6,9 +6,9 @@
|
||||
-- http://www.curse-gaming.com/mod.php?addid=2384
|
||||
--------------------------------------------------
|
||||
|
||||
HB_BONUSSCANNER_PATTERN_SETNAME = "^(.*) %(%d/%d%)$";
|
||||
HB_BONUSSCANNER_PATTERN_GENERIC_PREFIX = "^%+(%d+)%%?(.*)$";
|
||||
HB_BONUSSCANNER_PATTERN_GENERIC_SUFFIX = "^(.*)%+(%d+)%%?$";
|
||||
HEALBOT_BONUSSCANNER_PATTERN_SETNAME = "^(.*) %(%d/%d%)$";
|
||||
HEALBOT_BONUSSCANNER_PATTERN_GENERIC_PREFIX = "^%+(%d+)%%?(.*)$";
|
||||
HEALBOT_BONUSSCANNER_PATTERN_GENERIC_SUFFIX = "^(.*)%+(%d+)%%?$";
|
||||
|
||||
HealBot_BonusScanner = {
|
||||
bonuses = 0;
|
||||
@@ -128,17 +128,17 @@ end;
|
||||
|
||||
function HealBot_BonusScanner:ScanLine(line)
|
||||
local tmpStr, found;
|
||||
if(string.sub(line,0,string.len(HB_BONUSSCANNER_PREFIX_EQUIP)) == HB_BONUSSCANNER_PREFIX_EQUIP) then
|
||||
tmpStr = string.sub(line,string.len(HB_BONUSSCANNER_PREFIX_EQUIP)+1);
|
||||
if(string.sub(line,0,string.len(HEALBOT_BONUSSCANNER_PREFIX_EQUIP)) == HEALBOT_BONUSSCANNER_PREFIX_EQUIP) then
|
||||
tmpStr = string.sub(line,string.len(HEALBOT_BONUSSCANNER_PREFIX_EQUIP)+1);
|
||||
HealBot_BonusScanner:CheckPassive(tmpStr);
|
||||
elseif(string.sub(line,0,string.len(HB_BONUSSCANNER_PREFIX_SET)) == HB_BONUSSCANNER_PREFIX_SET
|
||||
elseif(string.sub(line,0,string.len(HEALBOT_BONUSSCANNER_PREFIX_SET)) == HEALBOT_BONUSSCANNER_PREFIX_SET
|
||||
and HealBot_BonusScanner.temp.set ~= ""
|
||||
and not HealBot_BonusScanner.temp.sets[HealBot_BonusScanner.temp.set]) then
|
||||
tmpStr = string.sub(line,string.len(HB_BONUSSCANNER_PREFIX_SET)+1);
|
||||
tmpStr = string.sub(line,string.len(HEALBOT_BONUSSCANNER_PREFIX_SET)+1);
|
||||
HealBot_BonusScanner.temp.slot = "Set";
|
||||
HealBot_BonusScanner:CheckPassive(tmpStr);
|
||||
else
|
||||
_, _, tmpStr = string.find(line, HB_BONUSSCANNER_PATTERN_SETNAME);
|
||||
_, _, tmpStr = string.find(line, HEALBOT_BONUSSCANNER_PATTERN_SETNAME);
|
||||
if(tmpStr) then
|
||||
HealBot_BonusScanner.temp.set = tmpStr;
|
||||
else
|
||||
@@ -154,7 +154,7 @@ function HealBot_BonusScanner:CheckPassive(line)
|
||||
local i, p, value, found;
|
||||
|
||||
found = nil;
|
||||
for i,p in HB_BONUSSCANNER_PATTERNS_PASSIVE do
|
||||
for i,p in HEALBOT_BONUSSCANNER_PATTERNS_PASSIVE do
|
||||
_, _, value = string.find(line, "^" .. p.pattern);
|
||||
if(value) then
|
||||
HealBot_BonusScanner:AddValue(p.effect, value)
|
||||
@@ -183,9 +183,9 @@ function HealBot_BonusScanner:CheckGeneric(line)
|
||||
tmpStr = string.gsub( tmpStr, "%s+$", "" );
|
||||
tmpStr = string.gsub( tmpStr, "%.$", "" );
|
||||
|
||||
_, _, value, token = string.find(tmpStr, HB_BONUSSCANNER_PATTERN_GENERIC_PREFIX);
|
||||
_, _, value, token = string.find(tmpStr, HEALBOT_BONUSSCANNER_PATTERN_GENERIC_PREFIX);
|
||||
if(not value) then
|
||||
_, _, token, value = string.find(tmpStr, HB_BONUSSCANNER_PATTERN_GENERIC_SUFFIX);
|
||||
_, _, token, value = string.find(tmpStr, HEALBOT_BONUSSCANNER_PATTERN_GENERIC_SUFFIX);
|
||||
end
|
||||
if(token and value) then
|
||||
token = string.gsub( token, "^%s+", "" );
|
||||
@@ -202,8 +202,8 @@ end
|
||||
function HealBot_BonusScanner:CheckToken(token, value)
|
||||
local i, p, s1, s2;
|
||||
|
||||
if(HB_BONUSSCANNER_PATTERNS_GENERIC_LOOKUP[token]) then
|
||||
HealBot_BonusScanner:AddValue(HB_BONUSSCANNER_PATTERNS_GENERIC_LOOKUP[token], value);
|
||||
if(HEALBOT_BONUSSCANNER_PATTERNS_GENERIC_LOOKUP[token]) then
|
||||
HealBot_BonusScanner:AddValue(HEALBOT_BONUSSCANNER_PATTERNS_GENERIC_LOOKUP[token], value);
|
||||
return true;
|
||||
end
|
||||
return false;
|
||||
@@ -212,7 +212,7 @@ end
|
||||
function HealBot_BonusScanner:CheckOther(line)
|
||||
local i, p, value, start, found;
|
||||
|
||||
for i,p in HB_BONUSSCANNER_PATTERNS_OTHER do
|
||||
for i,p in HEALBOT_BONUSSCANNER_PATTERNS_OTHER do
|
||||
start, _, value = string.find(line, "^" .. p.pattern);
|
||||
if(start) then
|
||||
if(p.value) then
|
||||
|
||||
@@ -129,6 +129,7 @@ function HealBot_OnEvent_UnitAura(this, unit)
|
||||
["Interface\\Icons\\Spell_Holy_PowerWordShield"] = true,
|
||||
["Interface\\Icons\\Spell_Holy_SealOfProtection"] = true,
|
||||
["Interface\\Icons\\Spell_Holy_Excorcism"] = true,
|
||||
["Interface\\Icons\\btnholyscriptures"] = true,
|
||||
}
|
||||
|
||||
local i = 1;
|
||||
|
||||
@@ -70,6 +70,7 @@ function HealBot_OnEvent_AddonMsg(this, addon_id, inc_msg, dist_target, sender_i
|
||||
local tmpTest, unitname, heal_val
|
||||
tmpTest, tmpTest, unitname, heal_val = string.find(inc_msg, ">> (%a+) <<=>> (.%d+) <<" );
|
||||
if heal_val then
|
||||
if sender_id == UnitName("player") then return end
|
||||
if not HealBot_HealsIn[unitname] then
|
||||
HealBot_HealsIn[unitname] = 0;
|
||||
end
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
|
||||
HealBot_View_DirtyUnits = {}
|
||||
local HealBot_Timer1, HealsIn_Timer = 0, 0;
|
||||
HealBot_LastModState = ""
|
||||
|
||||
function HealBot_OnLoad(this)
|
||||
this:RegisterEvent("VARIABLES_LOADED");
|
||||
@@ -25,7 +26,14 @@ function HealBot_OnLoad(this)
|
||||
HealBot_View_DirtyUnits[unitID] = true
|
||||
end)
|
||||
HealBot_Model:RegisterObserver("ROSTER_CHANGED", function()
|
||||
Delay_RecalcParty = 1
|
||||
HealBot_Delay_RecalcParty = 1
|
||||
end)
|
||||
HealBot_Model:RegisterObserver("EQUIPMENT_CHANGED", function(unitID)
|
||||
if unitID == "player" then
|
||||
HealBot_BonusScanner:ScanEquipment()
|
||||
HealBot_CalcEquipBonus = true;
|
||||
HealBot_RecalcSpells();
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
@@ -34,6 +42,20 @@ function HealBot_RegisterThis(this)
|
||||
end
|
||||
|
||||
function HealBot_OnUpdate(this, arg1)
|
||||
if HealBot_Action_TooltipUnit and HealBot_Tooltip:IsVisible() then
|
||||
local currentModState = ""
|
||||
if IsShiftKeyDown() then currentModState = currentModState .. "S" end
|
||||
if IsControlKeyDown() then currentModState = currentModState .. "C" end
|
||||
if IsAltKeyDown() then currentModState = currentModState .. "A" end
|
||||
|
||||
if HealBot_LastModState ~= currentModState then
|
||||
HealBot_LastModState = currentModState
|
||||
HealBot_Action_RefreshTooltip(HealBot_Action_TooltipUnit)
|
||||
end
|
||||
else
|
||||
HealBot_LastModState = ""
|
||||
end
|
||||
|
||||
if HealBot_TargetRestorePending then
|
||||
HealBot_TargetRestoreTimer = HealBot_TargetRestoreTimer + arg1;
|
||||
if HealBot_TargetRestoreTimer >= 0.1 then
|
||||
@@ -73,23 +95,23 @@ function HealBot_OnUpdate(this, arg1)
|
||||
if HealBot_EquipChangeTimer <= 0 then
|
||||
HealBot_EquipChangeTimer = 0
|
||||
HealBot_BonusScanner:ScanEquipment()
|
||||
CalcEquipBonus = true;
|
||||
HealBot_CalcEquipBonus = true;
|
||||
HealBot_RecalcSpells();
|
||||
end
|
||||
end
|
||||
|
||||
if InitSpells > 1 then
|
||||
InitSpells = InitSpells + 1;
|
||||
if InitSpells > 2 then
|
||||
if HealBot_SpellsInitFlag > 1 then
|
||||
HealBot_SpellsInitFlag = HealBot_SpellsInitFlag + 1;
|
||||
if HealBot_SpellsInitFlag > 2 then
|
||||
local cnt = HealBot_InitSpells();
|
||||
InitSpells = 0;
|
||||
HealBot_SpellsInitFlag = 0;
|
||||
HealBot_RecalcSpells();
|
||||
end
|
||||
end
|
||||
if Delay_RecalcParty > 0 then
|
||||
Delay_RecalcParty = Delay_RecalcParty + 1
|
||||
if Delay_RecalcParty > 1 then
|
||||
Delay_RecalcParty = 0;
|
||||
if HealBot_Delay_RecalcParty > 0 then
|
||||
HealBot_Delay_RecalcParty = HealBot_Delay_RecalcParty + 1
|
||||
if HealBot_Delay_RecalcParty > 1 then
|
||||
HealBot_Delay_RecalcParty = 0;
|
||||
HealBot_RecalcParty();
|
||||
end
|
||||
end
|
||||
@@ -163,6 +185,9 @@ local HealBot_EventHandlers = {
|
||||
["PLAYER_ENTERING_WORLD"] = function(this)
|
||||
HealBot_Model:RefreshUnit("player")
|
||||
HealBot_Model:RefreshUnit("pet")
|
||||
if HealBot_UnitClass("player") == "DRUID" then
|
||||
HealBot_UpdateShapeshiftForm()
|
||||
end
|
||||
HealBot_OnEvent_PlayerEnteringWorld(this)
|
||||
end,
|
||||
["VARIABLES_LOADED"] = function(this)
|
||||
@@ -171,9 +196,9 @@ local HealBot_EventHandlers = {
|
||||
-- Legacy pass-throughs
|
||||
["CHAT_MSG_ADDON"] = function(this, arg1, arg2, arg3, arg4) HealBot_OnEvent_AddonMsg(this, arg1, arg2, arg3, arg4) end,
|
||||
["SPELLCAST_START"] = function(this, arg1, arg2) HealBot_OnEvent_SpellcastStart(this, arg1, arg2) end,
|
||||
["SPELLCAST_STOP"] = function(this) HealBot_OnEvent_SpellcastStop(this) end,
|
||||
["SPELLCAST_INTERRUPTED"] = function(this) HealBot_OnEvent_SpellcastStop(this) end,
|
||||
["SPELLCAST_FAILED"] = function(this) HealBot_OnEvent_SpellcastStop(this) end,
|
||||
["SPELLCAST_STOP"] = function(this) HealBot_OnEvent_SpellcastStop(this, "SPELLCAST_STOP") end,
|
||||
["SPELLCAST_INTERRUPTED"] = function(this) HealBot_OnEvent_SpellcastStop(this, "SPELLCAST_INTERRUPTED") end,
|
||||
["SPELLCAST_FAILED"] = function(this) HealBot_OnEvent_SpellcastStop(this, "SPELLCAST_FAILED") end,
|
||||
["PLAYER_REGEN_DISABLED"] = function(this) HealBot_OnEvent_PlayerRegenDisabled(this) end,
|
||||
["PLAYER_REGEN_ENABLED"] = function(this) HealBot_OnEvent_PlayerRegenEnabled(this) end,
|
||||
["BAG_UPDATE_COOLDOWN"] = function(this, arg1) HealBot_OnEvent_BagUpdateCooldown(this, arg1) end,
|
||||
@@ -182,11 +207,20 @@ local HealBot_EventHandlers = {
|
||||
["PARTY_MEMBER_ENABLE"] = function(this, arg1) HealBot_OnEvent_PartyMemberEnable(this, arg1) end,
|
||||
["CHAT_MSG_SYSTEM"] = function(this, arg1) HealBot_OnEvent_SystemMsg(this, arg1) end,
|
||||
["ZONE_CHANGED_NEW_AREA"] = function(this) HealBot_OnEvent_ZoneChanged(this) end,
|
||||
["UPDATE_INVENTORY_ALERTS"] = function(this) HealBot_OnEvent_PlayerEquipmentChanged(this) end,
|
||||
["UNIT_INVENTORY_CHANGED"] = function(this, arg1) HealBot_OnEvent_PlayerEquipmentChanged2(this, arg1) end,
|
||||
["UPDATE_INVENTORY_ALERTS"] = function(this)
|
||||
HealBot_Model:NotifyObservers("EQUIPMENT_CHANGED", "player")
|
||||
HealBot_OnEvent_PlayerEquipmentChanged(this)
|
||||
end,
|
||||
["UNIT_INVENTORY_CHANGED"] = function(this, arg1)
|
||||
HealBot_Model:NotifyObservers("EQUIPMENT_CHANGED", arg1)
|
||||
HealBot_OnEvent_PlayerEquipmentChanged2(this, arg1)
|
||||
end,
|
||||
["PET_BAR_SHOWGRID"] = function(this) HealBot_OnEvent_PartyMembersChanged(this) end,
|
||||
["PET_BAR_HIDEGRID"] = function(this) HealBot_OnEvent_PartyMembersChanged(this) end,
|
||||
["SPELLS_CHANGED"] = function(this, arg1) HealBot_OnEvent_SpellsChanged(this, arg1) end
|
||||
["UNIT_PET"] = function(this, arg1) HealBot_OnEvent_PartyMembersChanged(this) end,
|
||||
["SPELLS_CHANGED"] = function(this, arg1) HealBot_OnEvent_SpellsChanged(this, arg1) end,
|
||||
["UPDATE_SHAPESHIFT_FORM"] = function(this) HealBot_UpdateShapeshiftForm() end,
|
||||
["UPDATE_SHAPESHIFT_FORMS"] = function(this) HealBot_UpdateShapeshiftForm() end
|
||||
}
|
||||
|
||||
function HealBot_OnEvent(this, event, arg1, arg2, arg3, arg4)
|
||||
@@ -256,6 +290,7 @@ function HealBot_OnEvent_VariablesLoaded(this)
|
||||
this:RegisterEvent("PARTY_MEMBER_ENABLE");
|
||||
this:RegisterEvent("PET_BAR_SHOWGRID");
|
||||
this:RegisterEvent("PET_BAR_HIDEGRID");
|
||||
this:RegisterEvent("UNIT_PET");
|
||||
this:RegisterEvent("UNIT_HEALTH");
|
||||
this:RegisterEvent("UNIT_MANA");
|
||||
this:RegisterEvent("UNIT_RAGE");
|
||||
@@ -274,7 +309,12 @@ function HealBot_OnEvent_VariablesLoaded(this)
|
||||
this:RegisterEvent("CHAT_MSG_ADDON");
|
||||
this:RegisterEvent("CHAT_MSG_SYSTEM");
|
||||
this:RegisterEvent("PLAYER_ENTERING_WORLD");
|
||||
InitSpells = 2;
|
||||
if class == "DRUID" then
|
||||
this:RegisterEvent("UPDATE_SHAPESHIFT_FORM");
|
||||
this:RegisterEvent("UPDATE_SHAPESHIFT_FORMS");
|
||||
HealBot_UpdateShapeshiftForm();
|
||||
end
|
||||
HealBot_SpellsInitFlag = 2;
|
||||
end
|
||||
end
|
||||
|
||||
@@ -294,7 +334,7 @@ end
|
||||
|
||||
function HealBot_OnEvent_ZoneChanged(this)
|
||||
HealBot_ResetRangeScale();
|
||||
Delay_RecalcParty = 1;
|
||||
HealBot_Delay_RecalcParty = 1;
|
||||
end
|
||||
|
||||
function HealBot_OnEvent_PlayerRegenDisabled(this)
|
||||
@@ -334,7 +374,7 @@ end
|
||||
|
||||
function HealBot_OnEvent_PlayerRegenEnabled(this)
|
||||
HealBot_IsFighting = false;
|
||||
Delay_RecalcParty = 1;
|
||||
HealBot_Delay_RecalcParty = 1;
|
||||
end
|
||||
|
||||
function HealBot_OnEvent_PlayerTargetChanged(this)
|
||||
@@ -342,7 +382,7 @@ function HealBot_OnEvent_PlayerTargetChanged(this)
|
||||
end
|
||||
|
||||
function HealBot_OnEvent_PartyMembersChanged(this)
|
||||
Delay_RecalcParty = 1;
|
||||
HealBot_Delay_RecalcParty = 1;
|
||||
end
|
||||
|
||||
function HealBot_OnEvent_PartyMemberDisable(this, unit)
|
||||
@@ -351,9 +391,9 @@ end
|
||||
|
||||
function HealBot_OnEvent_SystemMsg(this, msg)
|
||||
if type(msg) == "string" then
|
||||
local tmpTest, tmpTest, deserter = string.find(msg, HB_HASLEFTRAID);
|
||||
local tmpTest, tmpTest, deserter = string.find(msg, HEALBOT_HASLEFTRAID);
|
||||
if not deserter then
|
||||
local tmpTest, tmpTest, deserter = string.find(msg, HB_HASLEFTPARTY);
|
||||
local tmpTest, tmpTest, deserter = string.find(msg, HEALBOT_HASLEFTPARTY);
|
||||
end
|
||||
if deserter then
|
||||
if (HealBot_Healers[deserter]) then
|
||||
@@ -369,8 +409,8 @@ function HealBot_OnEvent_SystemMsg(this, msg)
|
||||
end
|
||||
end
|
||||
end
|
||||
elseif msg == HB_YOULEAVETHEGROUP or msg == HB_YOULEAVETHERAID then
|
||||
Delay_RecalcParty = 1;
|
||||
elseif msg == HEALBOT_YOULEAVETHEGROUP or msg == HEALBOT_YOULEAVETHERAID then
|
||||
HealBot_Delay_RecalcParty = 1;
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -392,7 +432,7 @@ end
|
||||
function HealBot_OnEvent_SpellsChanged(this, arg1)
|
||||
if arg1 then return; end
|
||||
HealBot_AddDebug("HB: SpellsChanged");
|
||||
InitSpells = 2;
|
||||
HealBot_SpellsInitFlag = 2;
|
||||
end
|
||||
|
||||
function HealBot_OnEvent_TalentsChanged(this, arg1)
|
||||
@@ -415,6 +455,10 @@ end
|
||||
|
||||
function HealBot_OnEvent_PlayerEnteringWorld(this)
|
||||
HealBot_IsFighting = false;
|
||||
-- Re-apply the refresh hook late in case another addon overrode it during load
|
||||
if HealBot_ApplyRefreshHook then
|
||||
HealBot_ApplyRefreshHook()
|
||||
end
|
||||
end
|
||||
|
||||
function HealBot_OnEvent_SpellcastStart(this, spell, duration)
|
||||
@@ -429,8 +473,11 @@ function HealBot_OnEvent_SpellcastStart(this, spell, duration)
|
||||
end
|
||||
end
|
||||
|
||||
function HealBot_OnEvent_SpellcastStop(this)
|
||||
function HealBot_OnEvent_SpellcastStop(this, eventName)
|
||||
HealBot_IsCasting = false;
|
||||
if eventName == "SPELLCAST_FAILED" then
|
||||
HealBot_CastFailed = true;
|
||||
end
|
||||
HealBot_StopCasting();
|
||||
HealBot_RecalcHeals();
|
||||
if HealBot_IamRessing then
|
||||
|
||||
+216
-59
@@ -74,20 +74,14 @@ function HealBot_CastSpellByName(spell)
|
||||
CastSpell(id, BOOKTYPE_SPELL);
|
||||
end
|
||||
|
||||
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
|
||||
function HealBot_AnnounceCast(spell, target)
|
||||
if not spell or not target then return end
|
||||
|
||||
if UnitIsDeadOrGhost(target) then
|
||||
local spellLower = string.lower(spell)
|
||||
if not (string.find(spellLower, "resurrection") or string.find(spellLower, "ancestral spirit") or string.find(spellLower, "redemption") or string.find(spellLower, "rebirth")) then
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
if HealBot_Config.ChatMessages then
|
||||
@@ -95,13 +89,26 @@ function HealBot_StartCasting(spell, target, ttype)
|
||||
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, "%(")
|
||||
local parenIndex = string.find(spell, " %(")
|
||||
if parenIndex then
|
||||
baseSpell = string.sub(spell, 1, parenIndex - 1)
|
||||
else
|
||||
parenIndex = string.find(spell, "%(")
|
||||
if parenIndex then
|
||||
baseSpell = string.sub(spell, 1, parenIndex - 1)
|
||||
end
|
||||
end
|
||||
|
||||
-- Strip trailing spaces from base spell
|
||||
baseSpell = string.gsub(baseSpell, "%s+$", "")
|
||||
|
||||
for i = 1, 5 do
|
||||
local msgConf = HealBot_Config.ChatMessages[i]
|
||||
if msgConf and msgConf.Spell == baseSpell and msgConf.Channel ~= "None" then
|
||||
local configSpell = msgConf and msgConf.Spell or ""
|
||||
-- Strip trailing spaces from config spell just in case
|
||||
configSpell = string.gsub(configSpell, "%s+$", "")
|
||||
|
||||
if msgConf and configSpell ~= "" and msgConf.Channel ~= "None" and (configSpell == spell or configSpell == baseSpell) then
|
||||
local msg = msgConf.Message or ""
|
||||
msg = string.gsub(msg, "#Spell#", spell)
|
||||
msg = string.gsub(msg, "#Target#", tName)
|
||||
@@ -118,21 +125,84 @@ function HealBot_StartCasting(spell, target, ttype)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function HealBot_Process_HealValue(spell, target)
|
||||
if HealBot_Spells[spell] and HealBot_Spells[spell].CastTime > 1 then
|
||||
HealBot_HealValue = HealBot_Spells[spell].HealsDur;
|
||||
|
||||
-- Apply dynamic Preservation bonus
|
||||
if HEALBOT_REGROWTH and string.find(spell, HEALBOT_REGROWTH) then
|
||||
local presRank = HealBot_GetTalentRank("Preservation")
|
||||
if presRank > 0 then
|
||||
local hasRejuv = false
|
||||
for i=1,32 do
|
||||
local buff = UnitBuff(target, i)
|
||||
if not buff then break end
|
||||
if string.find(buff, "Spell_Nature_Rejuvenation") then
|
||||
hasRejuv = true
|
||||
break
|
||||
end
|
||||
end
|
||||
if hasRejuv then
|
||||
local extHeal = HealBot_Spells[spell].HealsExt or 0
|
||||
local bonus = extHeal * (presRank * 0.10)
|
||||
HealBot_HealValue = HealBot_HealValue + math.floor(bonus)
|
||||
end
|
||||
end
|
||||
end
|
||||
local uname = UnitName(target)
|
||||
if uname then
|
||||
HealBot_SendAddonMessage(HEALBOT_ADDON_ID, ">> " .. uname .. " <<=>> " .. HealBot_HealValue .. " << ");
|
||||
if not HealBot_HealsIn[uname] then
|
||||
HealBot_HealsIn[uname] = 0;
|
||||
end
|
||||
HealBot_HealsIn[uname] = HealBot_HealsIn[uname] + HealBot_HealValue;
|
||||
HealBot_RecalcHeals(HealBot_FindUnitID(uname));
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function HealBot_StartCasting(spell, target, ttype)
|
||||
HealBot_CastFailed = false;
|
||||
HealBot_CastSpellByName(spell);
|
||||
if ( SpellCanTargetUnit(target) ) then
|
||||
SpellTargetUnit(target);
|
||||
ttype = "fired";
|
||||
elseif SpellIsTargeting() then
|
||||
SpellTargetUnit(target);
|
||||
SpellStopTargeting()
|
||||
elseif ttype == "direct" then
|
||||
if ( UnitIsUnit(target, "player") or CheckInteractDistance(target, 4) ) then
|
||||
ttype = "fired";
|
||||
end
|
||||
end
|
||||
|
||||
if ttype == "fired" and HealBot_Spells[spell] then
|
||||
if HealBot_Spells[spell].CastTime > 1 then
|
||||
HealValue = HealBot_Spells[spell].HealsDur;
|
||||
HealBot_SendAddonMessage(HEALBOT_ADDON_ID, ">> " .. UnitName(target) .. " <<=>> " .. HealValue .. " << ");
|
||||
if not HealBot_CastFailed then
|
||||
HealBot_CastingSpell = spell;
|
||||
HealBot_CastingTarget = target;
|
||||
HealBot_Process_HealValue(spell, target);
|
||||
HealBot_AnnounceCast(spell, target);
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function HealBot_StopCasting()
|
||||
if HealBot_CastingTarget then
|
||||
if HealBot_HealsIn[UnitName(HealBot_CastingTarget)] then
|
||||
if HealValue > 0 then
|
||||
HealBot_SendAddonMessage(HEALBOT_ADDON_ID, ">> " .. UnitName(HealBot_CastingTarget) .. " <<=>> " .. 0 - HealValue .. " << ");
|
||||
HealValue = 0;
|
||||
if HealBot_HealValue > 0 then
|
||||
local uname = UnitName(HealBot_CastingTarget)
|
||||
if uname then
|
||||
HealBot_SendAddonMessage(HEALBOT_ADDON_ID, ">> " .. uname .. " <<=>> " .. 0 - HealBot_HealValue .. " << ");
|
||||
if HealBot_HealsIn[uname] then
|
||||
HealBot_HealsIn[uname] = HealBot_HealsIn[uname] - HealBot_HealValue;
|
||||
if HealBot_HealsIn[uname] < 0 then
|
||||
HealBot_HealsIn[uname] = 0;
|
||||
end
|
||||
HealBot_RecalcHeals(HealBot_FindUnitID(uname));
|
||||
end
|
||||
end
|
||||
HealBot_HealValue = 0;
|
||||
end
|
||||
end
|
||||
HealBot_CastingSpell = nil;
|
||||
@@ -218,6 +288,10 @@ function HealBot_CastSpellOnFriend(spell, target)
|
||||
local targetEnemy = UnitCanAttack("player", "target");
|
||||
local oldTarget = UnitName("target");
|
||||
|
||||
if HealBot_UnitClass("player") == "DRUID" and HealBot_ActiveShapeshiftStance and HealBot_Config.AutoUnshift == 1 then
|
||||
CastShapeshiftForm(HealBot_ActiveShapeshiftStance);
|
||||
end
|
||||
|
||||
if oldTarget ~= UnitName(target) then
|
||||
TargetUnit(target);
|
||||
end
|
||||
@@ -267,7 +341,46 @@ function HealBot_SetItemDefaults(spell)
|
||||
end
|
||||
|
||||
function HealBot_SetSpellDefaults(spell)
|
||||
HealBot_Spells[spell].HealsDur = math.floor((HealBot_Spells[spell].HealsCast + HealBot_Spells[spell].HealsExt) + HealBot_Spells[spell].RealHealing);
|
||||
local baseHeal = HealBot_Spells[spell].HealsCast or 0
|
||||
local extHeal = HealBot_Spells[spell].HealsExt or 0
|
||||
local realHeal = HealBot_Spells[spell].RealHealing or 0
|
||||
|
||||
local _, class = UnitClass("player")
|
||||
if class == "DRUID" then
|
||||
local giftRank = HealBot_GetTalentRank("Gift of Nature")
|
||||
local genRank = HealBot_GetTalentRank("Genesis")
|
||||
|
||||
local mult = 1 + (giftRank * 0.02)
|
||||
baseHeal = baseHeal * mult
|
||||
extHeal = extHeal * mult
|
||||
realHeal = realHeal * mult
|
||||
|
||||
if genRank > 0 then
|
||||
extHeal = extHeal * (1 + (genRank * 0.05))
|
||||
end
|
||||
elseif class == "PRIEST" then
|
||||
local spiritRank = HealBot_GetTalentRank("Spiritual Healing")
|
||||
local mult = 1 + (spiritRank * 0.06)
|
||||
baseHeal = baseHeal * mult
|
||||
extHeal = extHeal * mult
|
||||
realHeal = realHeal * mult
|
||||
|
||||
if HEALBOT_RENEW and string.find(spell, HEALBOT_RENEW) then
|
||||
local renewRank = HealBot_GetTalentRank("Improved Renew")
|
||||
extHeal = extHeal * (1 + (renewRank * 0.05))
|
||||
end
|
||||
elseif class == "PALADIN" then
|
||||
local hlRank = HealBot_GetTalentRank("Healing Light")
|
||||
if (HEALBOT_HOLY_LIGHT and string.find(spell, HEALBOT_HOLY_LIGHT)) or
|
||||
(HEALBOT_FLASH_OF_LIGHT and string.find(spell, HEALBOT_FLASH_OF_LIGHT)) or
|
||||
(HEALBOT_HOLY_SHOCK and string.find(spell, HEALBOT_HOLY_SHOCK)) then
|
||||
local mult = 1 + (hlRank * 0.04)
|
||||
baseHeal = baseHeal * mult
|
||||
realHeal = realHeal * mult
|
||||
end
|
||||
end
|
||||
|
||||
HealBot_Spells[spell].HealsDur = math.floor(baseHeal + extHeal + realHeal);
|
||||
end
|
||||
|
||||
function HealBot_AddHeal(spell)
|
||||
@@ -280,13 +393,13 @@ end
|
||||
|
||||
function HealBot_FindHealSpells()
|
||||
local id = 1;
|
||||
if InitSpells > 0 then NeedEquipUpdate = 1; return; end
|
||||
if HealBot_SpellsInitFlag > 0 then NeedEquipUpdate = 1; return; end
|
||||
|
||||
HealBot_Heals = { player = {}, pet = {}, party = {} };
|
||||
|
||||
table.foreach(HealBot_CurrentSpells, function (index, spell)
|
||||
if (HealBot_Spells[spell]) then
|
||||
if CalcEquipBonus then
|
||||
if HealBot_CalcEquipBonus then
|
||||
local healingbonus_penalty = 1;
|
||||
if HealBot_Spells[spell].Level < 20 then
|
||||
healingbonus_penalty = (1 - ((20 - HealBot_Spells[spell].Level) * 0.0375));
|
||||
@@ -341,10 +454,10 @@ function HealBot_FindHealSpells()
|
||||
HealBot_Heals["raidpet" .. i] = HealBot_Heals.party;
|
||||
end
|
||||
|
||||
if CalcEquipBonus then
|
||||
if HealBot_CalcEquipBonus then
|
||||
HealBot_AddDebug("...Done Equip Bonus:" .. RealHealing);
|
||||
end
|
||||
CalcEquipBonus = false;
|
||||
HealBot_CalcEquipBonus = false;
|
||||
end
|
||||
|
||||
function HealBot_CanCastSpell(spell, unit)
|
||||
@@ -365,7 +478,7 @@ function HealBot_GetHealSpell(unit, pattern)
|
||||
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;
|
||||
if HealBot_ActiveShapeshiftStance and HealBot_Config.AutoUnshift ~= 1 then return nil end;
|
||||
end
|
||||
local spell = HealBot_GetSpellName(HealBot_GetSpellId(pattern))
|
||||
local range = 40;
|
||||
@@ -402,17 +515,38 @@ function HealBot_RecalcSpells()
|
||||
HealBot_RecalcParty();
|
||||
end
|
||||
|
||||
function HealBot_GetTalentRank(talentName)
|
||||
for t = 1, GetNumTalentTabs() do
|
||||
for i = 1, GetNumTalents(t) do
|
||||
local nameTalent, icon, tier, column, currRank, maxRank = GetTalentInfo(t, i);
|
||||
if nameTalent == talentName then
|
||||
return currRank;
|
||||
end
|
||||
end
|
||||
end
|
||||
return 0;
|
||||
end
|
||||
|
||||
function HealBot_SpiBonus(spell)
|
||||
local heals_modifer = 0;
|
||||
local base, stat, posBuff, negBuff = UnitStat("player", 5);
|
||||
nameTalent, icon, tier, column, currRank, maxRank = GetTalentInfo(2, 14); -- Spiritual guidance
|
||||
spiGuideBonus = stat * 0.05;
|
||||
heals_modifer = heals_modifer + (currRank * spiGuideBonus);
|
||||
local currRank = HealBot_GetTalentRank("Spiritual Guidance")
|
||||
if currRank > 0 then
|
||||
local spiGuideBonus = stat * 0.05;
|
||||
heals_modifer = heals_modifer + (currRank * spiGuideBonus);
|
||||
end
|
||||
return heals_modifer;
|
||||
end
|
||||
|
||||
function HealBot_GetBonus()
|
||||
local HealBonus = HealBot_BonusScanner:GetBonus();
|
||||
local HealBonus = HealBot_BonusScanner:GetBonus() or 0;
|
||||
if UnitClass("player") == "PALADIN" then
|
||||
local ironRank = HealBot_GetTalentRank("Ironclad")
|
||||
if ironRank > 0 then
|
||||
local base, effectiveArmor = UnitArmor("player")
|
||||
HealBonus = HealBonus + (effectiveArmor * (ironRank * 0.01))
|
||||
end
|
||||
end
|
||||
return HealBonus;
|
||||
end
|
||||
|
||||
@@ -454,7 +588,7 @@ function HealBot_InitGetSpellData(spell, id, class)
|
||||
tmpText = getglobal("HealBot_ScanTooltipTextLeft2");
|
||||
if (tmpText:GetText()) then
|
||||
line = tmpText:GetText();
|
||||
tmpTest, tmpTest, _mana = string.find(line, HB_TOOLTIP_MANA);
|
||||
tmpTest, tmpTest, _mana = string.find(line, HEALBOT_TOOLTIP_MANA);
|
||||
else
|
||||
HealBot_Report_Error("================================");
|
||||
HealBot_Report_Error("ERROR: HealBot_ScanTooltip is lost");
|
||||
@@ -464,7 +598,7 @@ function HealBot_InitGetSpellData(spell, id, class)
|
||||
tmpText = getglobal("HealBot_ScanTooltipTextRight2");
|
||||
if (tmpText:GetText()) then
|
||||
line = tmpText:GetText();
|
||||
tmpTest, tmpTest, _range = string.find(line, HB_TOOLTIP_RANGE);
|
||||
tmpTest, tmpTest, _range = string.find(line, HEALBOT_TOOLTIP_RANGE);
|
||||
else
|
||||
HealBot_Report_Error("================================");
|
||||
HealBot_Report_Error("ERROR: HealBot_ScanTooltip is lost");
|
||||
@@ -475,12 +609,12 @@ function HealBot_InitGetSpellData(spell, id, class)
|
||||
_cast = nil;
|
||||
if (tmpText:GetText()) then
|
||||
line = tmpText:GetText();
|
||||
if (line == HB_TOOLTIP_INSTANT_CAST) then
|
||||
if (line == HEALBOT_TOOLTIP_INSTANT_CAST) then
|
||||
_cast = 0;
|
||||
elseif line == HB_TOOLTIP_CHANNELED then
|
||||
elseif line == HEALBOT_TOOLTIP_CHANNELED then
|
||||
_cast = 0;
|
||||
elseif (tmpText) then
|
||||
tmpTest, tmpTest, _cast = string.find(line, HB_TOOLTIP_CAST_TIME);
|
||||
tmpTest, tmpTest, _cast = string.find(line, HEALBOT_TOOLTIP_CAST_TIME);
|
||||
end
|
||||
else
|
||||
HealBot_Report_Error("================================");
|
||||
@@ -494,58 +628,58 @@ function HealBot_InitGetSpellData(spell, id, class)
|
||||
line = tmpText:GetText();
|
||||
if class == "PRIEST" then
|
||||
if string.sub(spell, 1, 14) == string.sub(HEALBOT_POWER_WORD_SHIELD, 1, 14) then
|
||||
tmpTest, tmpTest, _HealsMin, _shield = string.find(line, HB_SPELL_PATTERN_SHIELD);
|
||||
tmpTest, tmpTest, _HealsMin, _shield = string.find(line, HEALBOT_SPELL_PATTERN_SHIELD);
|
||||
_HealsExt = 0;
|
||||
_HealsMax = _HealsMin;
|
||||
elseif string.sub(spell, 1, 4) == string.sub(HEALBOT_RENEW, 1, 4) then
|
||||
tmpTest, tmpTest, _HealsExt, tmpTest, _duration = string.find(line, HB_SPELL_PATTERN_RENEW);
|
||||
tmpTest, tmpTest, _HealsExt, tmpTest, _duration = string.find(line, HEALBOT_SPELL_PATTERN_RENEW);
|
||||
_HealsMin = 0;
|
||||
_HealsMax = 0;
|
||||
if (_HealsExt == nil) then
|
||||
tmpTest, tmpTest, _HealsExt, _duration = string.find(line, HB_SPELL_PATTERN_RENEW1);
|
||||
tmpTest, tmpTest, _HealsExt, _duration = string.find(line, HEALBOT_SPELL_PATTERN_RENEW1);
|
||||
end
|
||||
if (_HealsExt == nil) then
|
||||
tmpTest, tmpTest, _duration, _HealsExt = string.find(line, HB_SPELL_PATTERN_RENEW2);
|
||||
tmpTest, tmpTest, _duration, _HealsExt = string.find(line, HEALBOT_SPELL_PATTERN_RENEW2);
|
||||
end
|
||||
if (_HealsExt == nil) then
|
||||
tmpTest, tmpTest, _duration, _HealsExt = string.find(line, HB_SPELL_PATTERN_RENEW3);
|
||||
tmpTest, tmpTest, _duration, _HealsExt = string.find(line, HEALBOT_SPELL_PATTERN_RENEW3);
|
||||
end
|
||||
elseif string.sub(spell, 1, 9) == string.sub(HEALBOT_LESSER_HEAL, 1, 9) then
|
||||
tmpTest, _HealsMin, _HealsMax = HealBot_Generic_Patten(line, HB_SPELL_PATTERN_LESSER_HEAL);
|
||||
tmpTest, _HealsMin, _HealsMax = HealBot_Generic_Patten(line, HEALBOT_SPELL_PATTERN_LESSER_HEAL);
|
||||
elseif string.sub(spell, 1, 9) == string.sub(HEALBOT_GREATER_HEAL, 1, 9) then
|
||||
tmpTest, _HealsMin, _HealsMax = HealBot_Generic_Patten(line, HB_SPELL_PATTERN_GREATER_HEAL);
|
||||
tmpTest, _HealsMin, _HealsMax = HealBot_Generic_Patten(line, HEALBOT_SPELL_PATTERN_GREATER_HEAL);
|
||||
elseif string.sub(spell, 1, 9) == string.sub(HEALBOT_FLASH_HEAL, 1, 9) then
|
||||
tmpTest, _HealsMin, _HealsMax = HealBot_Generic_Patten(line, HB_SPELL_PATTERN_FLASH_HEAL);
|
||||
tmpTest, _HealsMin, _HealsMax = HealBot_Generic_Patten(line, HEALBOT_SPELL_PATTERN_FLASH_HEAL);
|
||||
elseif string.sub(spell, 1, 4) == string.sub(HEALBOT_HEAL, 1, 4) then
|
||||
tmpTest, _HealsMin, _HealsMax = HealBot_Generic_Patten(line, HB_SPELL_PATTERN_HEAL);
|
||||
tmpTest, _HealsMin, _HealsMax = HealBot_Generic_Patten(line, HEALBOT_SPELL_PATTERN_HEAL);
|
||||
end
|
||||
elseif class == "DRUID" then
|
||||
if string.sub(spell, 1, 6) == string.sub(HEALBOT_REGROWTH, 1, 6) then
|
||||
tmpTest, tmpTest, _HealsMin, _HealsMax, _HealsExt = string.find(line, HB_SPELL_PATTERN_REGROWTH);
|
||||
tmpTest, tmpTest, _HealsMin, _HealsMax, _HealsExt = string.find(line, HEALBOT_SPELL_PATTERN_REGROWTH);
|
||||
if (tmpTest == nil) then
|
||||
tmpTest, tmpTest, _HealsMin, _HealsMax, tmpTest, _HealsExt = string.find(line, HB_SPELL_PATTERN_REGROWTH1);
|
||||
tmpTest, tmpTest, _HealsMin, _HealsMax, tmpTest, _HealsExt = string.find(line, HEALBOT_SPELL_PATTERN_REGROWTH1);
|
||||
end
|
||||
elseif string.sub(spell, 1, 9) == string.sub(HEALBOT_REJUVENATION, 1, 9) then
|
||||
tmpTest, tmpTest, _HealsExt, _duration = string.find(line, HB_SPELL_PATTERN_REJUVENATION);
|
||||
tmpTest, tmpTest, _HealsExt, _duration = string.find(line, HEALBOT_SPELL_PATTERN_REJUVENATION);
|
||||
_HealsMin = 0;
|
||||
_HealsMax = 0;
|
||||
if (_HealsExt == nil) then
|
||||
tmpTest, tmpTest, _HealsExt, tmpTest, _duration = string.find(line, HB_SPELL_PATTERN_REJUVENATION1);
|
||||
tmpTest, tmpTest, _HealsExt, tmpTest, _duration = string.find(line, HEALBOT_SPELL_PATTERN_REJUVENATION1);
|
||||
end
|
||||
elseif string.sub(spell, 1, 7) == string.sub(HEALBOT_HEALING_TOUCH, 1, 7) then
|
||||
tmpTest, _HealsMin, _HealsMax = HealBot_Generic_Patten(line, HB_SPELL_PATTERN_HEALING_TOUCH);
|
||||
tmpTest, _HealsMin, _HealsMax = HealBot_Generic_Patten(line, HEALBOT_SPELL_PATTERN_HEALING_TOUCH);
|
||||
end
|
||||
elseif class == "PALADIN" then
|
||||
if string.sub(spell, 1, 9) == string.sub(HEALBOT_HOLY_LIGHT, 1, 9) then
|
||||
tmpTest, _HealsMin, _HealsMax = HealBot_Generic_Patten(line, HB_SPELL_PATTERN_HOLY_LIGHT);
|
||||
tmpTest, _HealsMin, _HealsMax = HealBot_Generic_Patten(line, HEALBOT_SPELL_PATTERN_HOLY_LIGHT);
|
||||
elseif string.sub(spell, 1, 9) == string.sub(HEALBOT_FLASH_OF_LIGHT, 1, 9) then
|
||||
tmpTest, _HealsMin, _HealsMax = HealBot_Generic_Patten(line, HB_SPELL_PATTERN_FLASH_OF_LIGHT);
|
||||
tmpTest, _HealsMin, _HealsMax = HealBot_Generic_Patten(line, HEALBOT_SPELL_PATTERN_FLASH_OF_LIGHT);
|
||||
end
|
||||
elseif class == "SHAMAN" then
|
||||
if string.sub(spell, 1, 9) == string.sub(HEALBOT_HEALING_WAVE, 1, 9) then
|
||||
tmpTest, _HealsMin, _HealsMax = HealBot_Generic_Patten(line, HB_SPELL_PATTERN_HEALING_WAVE);
|
||||
tmpTest, _HealsMin, _HealsMax = HealBot_Generic_Patten(line, HEALBOT_SPELL_PATTERN_HEALING_WAVE);
|
||||
elseif string.sub(spell, 1, 9) == string.sub(HEALBOT_LESSER_HEALING_WAVE, 1, 9) then
|
||||
tmpTest, _HealsMin, _HealsMax = HealBot_Generic_Patten(line, HB_SPELL_PATTERN_LESSER_HEALING_WAVE);
|
||||
tmpTest, _HealsMin, _HealsMax = HealBot_Generic_Patten(line, HEALBOT_SPELL_PATTERN_LESSER_HEALING_WAVE);
|
||||
end
|
||||
end
|
||||
else
|
||||
@@ -561,7 +695,7 @@ function HealBot_InitGetSpellData(spell, id, class)
|
||||
if HealBot_ScanTooltipTextLeft2:GetText() then
|
||||
HealBot_Report_Error("ERROR: Tooltip = >> " .. HealBot_ScanTooltipTextLeft2:GetText() .. " <<");
|
||||
end
|
||||
HealBot_Report_Error("ERROR: Patten = >> " .. HB_TOOLTIP_MANA .. " <<");
|
||||
HealBot_Report_Error("ERROR: Patten = >> " .. HEALBOT_TOOLTIP_MANA .. " <<");
|
||||
end
|
||||
if (_range == nil) then
|
||||
HealBot_Report_Error("================================");
|
||||
@@ -570,7 +704,7 @@ function HealBot_InitGetSpellData(spell, id, class)
|
||||
if HealBot_ScanTooltipTextRight2:GetText() then
|
||||
HealBot_Report_Error("ERROR: Tooltip = >> " .. HealBot_ScanTooltipTextRight2:GetText() .. " <<");
|
||||
end
|
||||
HealBot_Report_Error("ERROR: Patten = >> " .. HB_TOOLTIP_RANGE .. " <<");
|
||||
HealBot_Report_Error("ERROR: Patten = >> " .. HEALBOT_TOOLTIP_RANGE .. " <<");
|
||||
end
|
||||
if (_cast == nil) then
|
||||
HealBot_Report_Error("================================");
|
||||
@@ -579,7 +713,7 @@ function HealBot_InitGetSpellData(spell, id, class)
|
||||
if HealBot_ScanTooltipTextLeft3:GetText() then
|
||||
HealBot_Report_Error("ERROR: Tooltip = >> " .. HealBot_ScanTooltipTextLeft3:GetText() .. " <<");
|
||||
end
|
||||
HealBot_Report_Error("ERROR: Patten = >> " .. HB_TOOLTIP_CAST_TIME .. " <<");
|
||||
HealBot_Report_Error("ERROR: Patten = >> " .. HEALBOT_TOOLTIP_CAST_TIME .. " <<");
|
||||
end
|
||||
if (tmpTest == nil) then
|
||||
HealBot_Report_Error("================================");
|
||||
@@ -640,3 +774,26 @@ function HealBot_Generic_Patten(matchStr, matchPattern)
|
||||
end
|
||||
return tmpTest, _HealsMin, _HealsMax;
|
||||
end
|
||||
|
||||
HealBot_ActiveShapeshiftStance = nil;
|
||||
|
||||
function HealBot_UpdateShapeshiftForm()
|
||||
HealBot_ActiveShapeshiftStance = HealBot_GetShapeshiftForm();
|
||||
end
|
||||
|
||||
function HealBot_GetShapeshiftForm()
|
||||
local forms = GetNumShapeshiftForms();
|
||||
if forms then
|
||||
local i;
|
||||
for i=1,forms do
|
||||
local icon,name,active = GetShapeshiftFormInfo(i);
|
||||
if active then
|
||||
local icon_lower = string.lower(icon);
|
||||
if not string.find(icon_lower, "humanoidform") and not string.find(icon_lower, "treeoflife") and not string.find(icon_lower, "stoneclawtotem") then
|
||||
return i;
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
return nil;
|
||||
end
|
||||
|
||||
@@ -14,6 +14,7 @@ HealBot_ConfigDefaults = {
|
||||
HideSolo = 0,
|
||||
OverHeal = 0.25,
|
||||
CastNotify = 1,
|
||||
AutoUnshift = 1,
|
||||
ChatMessages = {
|
||||
[1] = { Spell = "None", Message = "Casting #Spell# on #Target#", Channel = "None" },
|
||||
[2] = { Spell = "None", Message = "Casting #Spell# on #Target#", Channel = "None" },
|
||||
@@ -24,6 +25,7 @@ HealBot_ConfigDefaults = {
|
||||
HideOptions = 0,
|
||||
HideAbort = 1,
|
||||
ShowTooltip = 1,
|
||||
ShowHealthText = 0,
|
||||
GrowUpwards = 0,
|
||||
ProtectPvP = 1,
|
||||
QualityRange = 0,
|
||||
@@ -171,7 +173,9 @@ HealBot_ConfigDefaults = {
|
||||
},
|
||||
},
|
||||
EnableHealthy = 0,
|
||||
ShowNonManaBars = 0,
|
||||
ActionVisible = 0,
|
||||
ActionMouseover = 1,
|
||||
CDCLeftText = {[HEALBOT_PRIEST]="None", [HEALBOT_SHAMAN]="None", [HEALBOT_DRUID]="None", [HEALBOT_PALADIN]="None",},
|
||||
CDCRightText = {[HEALBOT_PRIEST]="None", [HEALBOT_SHAMAN]="None", [HEALBOT_DRUID]="None", [HEALBOT_PALADIN]="None",},
|
||||
Current_Skin = "Modern Flat",
|
||||
@@ -510,6 +514,7 @@ HealBot_Buff_Spells = {
|
||||
HEALBOT_PRAYER_OF_SHADOW_PROTECTION,
|
||||
HEALBOT_INNER_FIRE,
|
||||
HEALBOT_FEAR_WARD,
|
||||
HEALBOT_ENLIGHTEN,
|
||||
},
|
||||
[HEALBOT_MAGE] = {
|
||||
HEALBOT_ARCANE_INTELLECT,
|
||||
|
||||
+35
-32
@@ -70,6 +70,9 @@ HEALBOT_LESSER_HEAL = "Geringes Heilen";
|
||||
HEALBOT_LESSER_HEALING_WAVE = "Geringe Welle der Heilung";
|
||||
HEALBOT_MEND_PET = "Tier Heilen";
|
||||
HEALBOT_POWER_WORD_SHIELD = "Machtwort: Schild";
|
||||
HEALBOT_INNER_FIRE = "Inneres Feuer";
|
||||
HEALBOT_FEAR_WARD = "Furchtzauberschutz";
|
||||
HEALBOT_ENLIGHTEN = "Enlighten";
|
||||
HEALBOT_REGROWTH = "Nachwachsen";
|
||||
HEALBOT_RENEW = "Erneuerung";
|
||||
HEALBOT_REJUVENATION = "Verj\195\188ngung";
|
||||
@@ -113,25 +116,25 @@ HEALBOT_RANK_11 = " (Rang 11)";
|
||||
HEALBOT_LIBRARY_INCHEAL = "Erh\195\182ht durch Zauber und Effekte verursachte Heilung um bis zu (%d+)%.";
|
||||
HEALBOT_LIBRARY_INCDAMHEAL = "Erh\195\182ht durch Zauber und magische Effekte zugef\195\188gten Schaden und Heilung um bis zu (%d+)%.";
|
||||
|
||||
HB_BONUSSCANNER_NAMES = {
|
||||
HEALBOT_BONUSSCANNER_NAMES = {
|
||||
HEAL = "Heilung",
|
||||
}
|
||||
|
||||
HB_BONUSSCANNER_PREFIX_EQUIP = "Anlegen: ";
|
||||
HB_BONUSSCANNER_PREFIX_SET = "Set: ";
|
||||
HEALBOT_BONUSSCANNER_PREFIX_EQUIP = "Anlegen: ";
|
||||
HEALBOT_BONUSSCANNER_PREFIX_SET = "Set: ";
|
||||
|
||||
HB_BONUSSCANNER_PATTERNS_PASSIVE = {
|
||||
HEALBOT_BONUSSCANNER_PATTERNS_PASSIVE = {
|
||||
{ pattern = "Erh\195\182ht durch Zauber und magische Effekte zugef\195\188gten Schaden und Heilung um bis zu (%d+)%.", effect = {"HEAL","DMG"} },
|
||||
{ pattern = "Erh\195\182ht durch Zauber und Effekte verursachte Heilung um bis zu (%d+)%.", effect = "HEAL" },
|
||||
{ pattern = "Erh\195\182ht die durch Zauber und Effekte verursachte Heilung um bis zu (%d+)%.", effect = "HEAL" },
|
||||
};
|
||||
|
||||
HB_BONUSSCANNER_PATTERNS_GENERIC_LOOKUP = {
|
||||
HEALBOT_BONUSSCANNER_PATTERNS_GENERIC_LOOKUP = {
|
||||
["Heilzauber"] = "HEAL",
|
||||
["Heilung und Zauberschaden"] = {"HEAL","DMG"},
|
||||
};
|
||||
|
||||
HB_BONUSSCANNER_PATTERNS_OTHER = {
|
||||
HEALBOT_BONUSSCANNER_PATTERNS_OTHER = {
|
||||
{ pattern = "Zandalarianisches Siegel des Mojo", effect = {"DMG", "HEAL"}, value = 18 },
|
||||
{ pattern = "Zandalarianisches Siegel der Inneren Ruhe", effect = "HEAL", value = 33 },
|
||||
|
||||
@@ -154,32 +157,32 @@ HEALBOT_DEBUFF_WEAKENED_SOUL = "Interface\\Icons\\Spell_Holy_AshesToAshes";
|
||||
HEALBOT_DEBUFF_RECENTLY_BANDAGED = "Interface\\Icons\\INV_Misc_Bandage_08";
|
||||
|
||||
|
||||
HB_SPELL_PATTERN_LESSER_HEAL = "Euer Ziel um (%d+) bis (%d+) Punkt%(e%) heilen";
|
||||
HB_SPELL_PATTERN_HEAL = "Euer Ziel um (%d+) bis (%d+) Punkt%(e%) heilen";
|
||||
HB_SPELL_PATTERN_GREATER_HEAL = "Ein langsam zu wirkender Zauber, der ein einzelnes Ziel um (%d+) bis (%d+) Punkt%(e%) heilt";
|
||||
HB_SPELL_PATTERN_FLASH_HEAL = "Heilt ein befreundetes Ziel um (%d+) bis (%d+) Punkt%(e%)";
|
||||
HB_SPELL_PATTERN_RENEW2 = "Heilt das Ziel (%d+) Sek. lang um (%d+) bis (%d+) Schadenspunk";
|
||||
HB_SPELL_PATTERN_RENEW3 = "Heilt das Ziel (%d+) Sek. lang um (%d+) Schadenspunk";
|
||||
HB_SPELL_PATTERN_SHIELD = "absorbiert dabei (%d+) Punkt%(e%) Schaden. H\195\164lt (%d+) Sek";
|
||||
HB_SPELL_PATTERN_HEALING_TOUCH = "Heilt ein befreundetes Ziel um (%d+) bis (%d+) Punkt%(e%)";
|
||||
HB_SPELL_PATTERN_REGROWTH = "Heilt ein befreundetes Ziel um (%d+) bis (%d+) und \195\188ber (%d+) Sek%. um weitere (%d+)";
|
||||
HB_SPELL_PATTERN_REGROWTH1 = "Heilt ein befreundetes Ziel um (%d+) bis (%d+) und \195\188ber (%d+) Sek%. um weitere (%d+) bis (%d+)";
|
||||
HB_SPELL_PATTERN_HOLY_LIGHT = "Heilt ein befreundetes Ziel um (%d+) bis (%d+) Punkt%(e%)";
|
||||
HB_SPELL_PATTERN_FLASH_OF_LIGHT = "Heilt ein befreundetes Ziel um (%d+) bis (%d+) Punkt%(e%)";
|
||||
HB_SPELL_PATTERN_HEALING_WAVE = "Heilt ein befreundetes Ziel um (%d+) bis (%d+) Punkt%(e%)";
|
||||
HB_SPELL_PATTERN_LESSER_HEALING_WAVE = "Heilt ein befreundetes Ziel um (%d+) bis (%d+) Punkt%(e%)";
|
||||
HB_SPELL_PATTERN_REJUVENATION = "Heilt das Ziel von (%d+) \195\188ber (%d+) Sek";
|
||||
HB_SPELL_PATTERN_REJUVENATION1 = "Heilt das Ziel von (%d+) bis (%d+) \195\188ber (%d+) Sek";
|
||||
HEALBOT_SPELL_PATTERN_LESSER_HEAL = "Euer Ziel um (%d+) bis (%d+) Punkt%(e%) heilen";
|
||||
HEALBOT_SPELL_PATTERN_HEAL = "Euer Ziel um (%d+) bis (%d+) Punkt%(e%) heilen";
|
||||
HEALBOT_SPELL_PATTERN_GREATER_HEAL = "Ein langsam zu wirkender Zauber, der ein einzelnes Ziel um (%d+) bis (%d+) Punkt%(e%) heilt";
|
||||
HEALBOT_SPELL_PATTERN_FLASH_HEAL = "Heilt ein befreundetes Ziel um (%d+) bis (%d+) Punkt%(e%)";
|
||||
HEALBOT_SPELL_PATTERN_RENEW2 = "Heilt das Ziel (%d+) Sek. lang um (%d+) bis (%d+) Schadenspunk";
|
||||
HEALBOT_SPELL_PATTERN_RENEW3 = "Heilt das Ziel (%d+) Sek. lang um (%d+) Schadenspunk";
|
||||
HEALBOT_SPELL_PATTERN_SHIELD = "absorbiert dabei (%d+) Punkt%(e%) Schaden. H\195\164lt (%d+) Sek";
|
||||
HEALBOT_SPELL_PATTERN_HEALING_TOUCH = "Heilt ein befreundetes Ziel um (%d+) bis (%d+) Punkt%(e%)";
|
||||
HEALBOT_SPELL_PATTERN_REGROWTH = "Heilt ein befreundetes Ziel um (%d+) bis (%d+) und \195\188ber (%d+) Sek%. um weitere (%d+)";
|
||||
HEALBOT_SPELL_PATTERN_REGROWTH1 = "Heilt ein befreundetes Ziel um (%d+) bis (%d+) und \195\188ber (%d+) Sek%. um weitere (%d+) bis (%d+)";
|
||||
HEALBOT_SPELL_PATTERN_HOLY_LIGHT = "Heilt ein befreundetes Ziel um (%d+) bis (%d+) Punkt%(e%)";
|
||||
HEALBOT_SPELL_PATTERN_FLASH_OF_LIGHT = "Heilt ein befreundetes Ziel um (%d+) bis (%d+) Punkt%(e%)";
|
||||
HEALBOT_SPELL_PATTERN_HEALING_WAVE = "Heilt ein befreundetes Ziel um (%d+) bis (%d+) Punkt%(e%)";
|
||||
HEALBOT_SPELL_PATTERN_LESSER_HEALING_WAVE = "Heilt ein befreundetes Ziel um (%d+) bis (%d+) Punkt%(e%)";
|
||||
HEALBOT_SPELL_PATTERN_REJUVENATION = "Heilt das Ziel von (%d+) \195\188ber (%d+) Sek";
|
||||
HEALBOT_SPELL_PATTERN_REJUVENATION1 = "Heilt das Ziel von (%d+) bis (%d+) \195\188ber (%d+) Sek";
|
||||
|
||||
HB_TOOLTIP_MANA = "^(%d+) Mana$";
|
||||
HB_TOOLTIP_RANGE = "(%d+) m";
|
||||
HB_TOOLTIP_INSTANT_CAST = "Spontanzauber";
|
||||
HB_TOOLTIP_CAST_TIME = "(%d+.?%d*) Sek";
|
||||
HB_TOOLTIP_CHANNELED = "Abgebrochen";
|
||||
HB_HASLEFTRAID = "^([^%s]+) hat die \195\131\197\147berfallgruppe verlassen%.$";
|
||||
HB_HASLEFTPARTY = "^([^%s]+) hat die Gruppe verlassen";
|
||||
HB_YOULEAVETHEGROUP = "Du hast die Gruppe verlassen"
|
||||
HB_YOULEAVETHERAID = "Du hast den Schlachtzug verlassen"
|
||||
HEALBOT_TOOLTIP_MANA = "^(%d+) Mana$";
|
||||
HEALBOT_TOOLTIP_RANGE = "(%d+) m";
|
||||
HEALBOT_TOOLTIP_INSTANT_CAST = "Spontanzauber";
|
||||
HEALBOT_TOOLTIP_CAST_TIME = "(%d+.?%d*) Sek";
|
||||
HEALBOT_TOOLTIP_CHANNELED = "Abgebrochen";
|
||||
HEALBOT_HASLEFTRAID = "^([^%s]+) hat die \195\131\197\147berfallgruppe verlassen%.$";
|
||||
HEALBOT_HASLEFTPARTY = "^([^%s]+) hat die Gruppe verlassen";
|
||||
HEALBOT_YOULEAVETHEGROUP = "Du hast die Gruppe verlassen"
|
||||
HEALBOT_YOULEAVETHERAID = "Du hast den Schlachtzug verlassen"
|
||||
|
||||
-----------------
|
||||
-- Translation --
|
||||
@@ -327,6 +330,7 @@ HEALBOT_OPTIONS_MONITORMELEE = "Nahkampf";
|
||||
HEALBOT_OPTIONS_MONITORRANGE = "Fernkampf";
|
||||
HEALBOT_OPTIONS_MONITORHEALERS = "Heiler";
|
||||
HEALBOT_OPTIONS_MONITORCUSTOM = "Eigene";
|
||||
HEALBOT_OPTIONS_PETS = "Begleiter";
|
||||
|
||||
HEALBOT_OPTIONS_SHOWTOOLTIP = "Zeige Tooltips";
|
||||
HEALBOT_OPTIONS_SHOWDETTOOLTIP = "Zeige detaillierte Spruchinfos";
|
||||
@@ -352,7 +356,6 @@ HEALBOT_WORDS_SEC = "Sek";
|
||||
HEALBOT_WORDS_TO = "zu";
|
||||
HEALBOT_WORDS_CAST = "Zauber"
|
||||
HEALBOT_WORDS_FOR = "f\195\188r";
|
||||
|
||||
end
|
||||
|
||||
|
||||
|
||||
+37
-43
@@ -1,4 +1,4 @@
|
||||
HEALBOT_VERSION = "1.3";
|
||||
HEALBOT_VERSION = "1.4.1";
|
||||
|
||||
-------------
|
||||
-- ENGLISH --
|
||||
@@ -93,6 +93,7 @@ HEALBOT_THORNS = "Thorns";
|
||||
HEALBOT_OMEN_OF_CLARITY = "Omen of Clarity";
|
||||
HEALBOT_INNER_FIRE = "Inner Fire";
|
||||
HEALBOT_FEAR_WARD = "Fear Ward";
|
||||
HEALBOT_ENLIGHTEN = "Enlighten";
|
||||
|
||||
HEALBOT_RESURRECTION = "Resurrection";
|
||||
HEALBOT_REDEMPTION = "Redemption";
|
||||
@@ -131,19 +132,19 @@ HEALBOT_RANK_11 = " (Rank 11)";
|
||||
HEALBOT_LIBRARY_INCHEAL = "Increases healing done by spells and effects by up to (%d+)%.";
|
||||
HEALBOT_LIBRARY_INCDAMHEAL = "Increases damage and healing done by magical spells and effects by up to (%d+)%.";
|
||||
|
||||
HB_BONUSSCANNER_NAMES = {
|
||||
HEALBOT_BONUSSCANNER_NAMES = {
|
||||
HEAL = "Healing",
|
||||
};
|
||||
|
||||
HB_BONUSSCANNER_PREFIX_EQUIP = "Equip: ";
|
||||
HB_BONUSSCANNER_PREFIX_SET = "Set: ";
|
||||
HEALBOT_BONUSSCANNER_PREFIX_EQUIP = "Equip: ";
|
||||
HEALBOT_BONUSSCANNER_PREFIX_SET = "Set: ";
|
||||
|
||||
HB_BONUSSCANNER_PATTERNS_PASSIVE = {
|
||||
HEALBOT_BONUSSCANNER_PATTERNS_PASSIVE = {
|
||||
{ pattern = "Increases healing done by spells and effects by up to (%d+)%.", effect = "HEAL" },
|
||||
{ pattern = "Increases damage and healing done by magical spells and effects by up to (%d+)%.", effect = {"HEAL", "DMG"} },
|
||||
};
|
||||
|
||||
HB_BONUSSCANNER_PATTERNS_GENERIC_LOOKUP = {
|
||||
HEALBOT_BONUSSCANNER_PATTERNS_GENERIC_LOOKUP = {
|
||||
["Healing Spells"] = "HEAL",
|
||||
["Increases Healing"] = "HEAL",
|
||||
["Healing and Spell Damage"] = {"HEAL", "DMG"},
|
||||
@@ -151,7 +152,7 @@ HB_BONUSSCANNER_PATTERNS_GENERIC_LOOKUP = {
|
||||
["Spell Damage and Healing"] = {"HEAL", "DMG"},
|
||||
};
|
||||
|
||||
HB_BONUSSCANNER_PATTERNS_OTHER = {
|
||||
HEALBOT_BONUSSCANNER_PATTERNS_OTHER = {
|
||||
{ pattern = "Zandalar Signet of Mojo", effect = {"DMG", "HEAL"}, value = 18 },
|
||||
{ pattern = "Zandalar Signet of Serenity", effect = "HEAL", value = 33 },
|
||||
|
||||
@@ -173,35 +174,35 @@ HEALBOT_DEBUFF_WEAKENED_SOUL = "Interface\\Icons\\Spell_Holy_AshesToAshes";
|
||||
HEALBOT_DEBUFF_RECENTLY_BANDAGED = "Interface\\Icons\\INV_Misc_Bandage_08";
|
||||
|
||||
|
||||
HB_SPELL_PATTERN_LESSER_HEAL = "Heal your target for (%d+) to (%d+)";
|
||||
HB_SPELL_PATTERN_HEAL = "Heal your target for (%d+) to (%d+)";
|
||||
HB_SPELL_PATTERN_GREATER_HEAL = "A slow casting spell that heals a single target for (%d+) to (%d+)";
|
||||
HB_SPELL_PATTERN_FLASH_HEAL = "Heals a friendly target for (%d+) to (%d+)";
|
||||
HB_SPELL_PATTERN_RENEW = "Heals the target of (%d+) to (%d+) damage over (%d+) sec";
|
||||
HB_SPELL_PATTERN_RENEW1 = "Heals the target of (%d+) damage over (%d+) sec";
|
||||
HB_SPELL_PATTERN_RENEW2 = "Not needed for en";
|
||||
HB_SPELL_PATTERN_RENEW3 = "Not needed for en";
|
||||
HB_SPELL_PATTERN_SHIELD = "absorbing (%d+) damage. Lasts (%d+) sec.";
|
||||
HB_SPELL_PATTERN_HEALING_TOUCH = "Heals a friendly target for (%d+) to (%d+)";
|
||||
HB_SPELL_PATTERN_REGROWTH = "Heals a friendly target for (%d+) to (%d+) and another (%d+) over (%d+) sec";
|
||||
HB_SPELL_PATTERN_REGROWTH1 = "Heals a friendly target for (%d+) to (%d+) and another (%d+) to (%d+) over (%d+) sec";
|
||||
HB_SPELL_PATTERN_HOLY_LIGHT = "Heals a friendly target for (%d+) to (%d+)";
|
||||
HB_SPELL_PATTERN_FLASH_OF_LIGHT = "Heals a friendly target for (%d+) to (%d+)";
|
||||
HB_SPELL_PATTERN_HEALING_WAVE = "Heals a friendly target for (%d+) to (%d+)";
|
||||
HB_SPELL_PATTERN_LESSER_HEALING_WAVE = "Heals a friendly target for (%d+) to (%d+)";
|
||||
HB_SPELL_PATTERN_REJUVENATION = "Heals the target for (%d+) over (%d+) sec";
|
||||
HB_SPELL_PATTERN_REJUVENATION1 = "Heals the target for (%d+) to (%d+) over (%d+) sec";
|
||||
HB_SPELL_PATTERN_MEND_PET = "Heals your pet (%d+) health every second while you focus. Lasts (%d+) sec";
|
||||
HEALBOT_SPELL_PATTERN_LESSER_HEAL = "Heal your target for (%d+) to (%d+)";
|
||||
HEALBOT_SPELL_PATTERN_HEAL = "Heal your target for (%d+) to (%d+)";
|
||||
HEALBOT_SPELL_PATTERN_GREATER_HEAL = "A slow casting spell that heals a single target for (%d+) to (%d+)";
|
||||
HEALBOT_SPELL_PATTERN_FLASH_HEAL = "Heals a friendly target for (%d+) to (%d+)";
|
||||
HEALBOT_SPELL_PATTERN_RENEW = "Heals the target of (%d+) to (%d+) damage over (%d+) sec";
|
||||
HEALBOT_SPELL_PATTERN_RENEW1 = "Heals the target of (%d+) damage over (%d+) sec";
|
||||
HEALBOT_SPELL_PATTERN_RENEW2 = "Not needed for en";
|
||||
HEALBOT_SPELL_PATTERN_RENEW3 = "Not needed for en";
|
||||
HEALBOT_SPELL_PATTERN_SHIELD = "absorbing (%d+) damage. Lasts (%d+) sec.";
|
||||
HEALBOT_SPELL_PATTERN_HEALING_TOUCH = "Heals a friendly target for (%d+) to (%d+)";
|
||||
HEALBOT_SPELL_PATTERN_REGROWTH = "Heals a friendly target for (%d+) to (%d+) and another (%d+) over (%d+) sec";
|
||||
HEALBOT_SPELL_PATTERN_REGROWTH1 = "Heals a friendly target for (%d+) to (%d+) and another (%d+) to (%d+) over (%d+) sec";
|
||||
HEALBOT_SPELL_PATTERN_HOLY_LIGHT = "Heals a friendly target for (%d+) to (%d+)";
|
||||
HEALBOT_SPELL_PATTERN_FLASH_OF_LIGHT = "Heals a friendly target for (%d+) to (%d+)";
|
||||
HEALBOT_SPELL_PATTERN_HEALING_WAVE = "Heals a friendly target for (%d+) to (%d+)";
|
||||
HEALBOT_SPELL_PATTERN_LESSER_HEALING_WAVE = "Heals a friendly target for (%d+) to (%d+)";
|
||||
HEALBOT_SPELL_PATTERN_REJUVENATION = "Heals the target for (%d+) over (%d+) sec";
|
||||
HEALBOT_SPELL_PATTERN_REJUVENATION1 = "Heals the target for (%d+) to (%d+) over (%d+) sec";
|
||||
HEALBOT_SPELL_PATTERN_MEND_PET = "Heals your pet (%d+) health every second while you focus. Lasts (%d+) sec";
|
||||
|
||||
HB_TOOLTIP_MANA = "^(%d+) Mana$";
|
||||
HB_TOOLTIP_RANGE = "(%d+) yd range";
|
||||
HB_TOOLTIP_INSTANT_CAST = "Instant cast";
|
||||
HB_TOOLTIP_CAST_TIME = "(%d+.?%d*) sec cast";
|
||||
HB_TOOLTIP_CHANNELED = "Channeled";
|
||||
HB_HASLEFTRAID = "^([^%s]+) has left the raid group$";
|
||||
HB_HASLEFTPARTY = "^([^%s]+) leaves the party$";
|
||||
HB_YOULEAVETHEGROUP = "You leave the group."
|
||||
HB_YOULEAVETHERAID = "You have left the raid group"
|
||||
HEALBOT_TOOLTIP_MANA = "^(%d+) Mana$";
|
||||
HEALBOT_TOOLTIP_RANGE = "(%d+) yd range";
|
||||
HEALBOT_TOOLTIP_INSTANT_CAST = "Instant cast";
|
||||
HEALBOT_TOOLTIP_CAST_TIME = "(%d+.?%d*) sec cast";
|
||||
HEALBOT_TOOLTIP_CHANNELED = "Channeled";
|
||||
HEALBOT_HASLEFTRAID = "^([^%s]+) has left the raid group$";
|
||||
HEALBOT_HASLEFTPARTY = "^([^%s]+) leaves the party$";
|
||||
HEALBOT_YOULEAVETHEGROUP = "You leave the group."
|
||||
HEALBOT_YOULEAVETHERAID = "You have left the raid group"
|
||||
|
||||
|
||||
-----------------
|
||||
@@ -365,6 +366,7 @@ HEALBOT_OPTIONS_MONITORMELEE = "Melee";
|
||||
HEALBOT_OPTIONS_MONITORRANGE = "Ranged";
|
||||
HEALBOT_OPTIONS_MONITORHEALERS = "Healers";
|
||||
HEALBOT_OPTIONS_MONITORCUSTOM = "Custom";
|
||||
HEALBOT_OPTIONS_PETS = "Pets";
|
||||
|
||||
HEALBOT_OPTIONS_SHOWTOOLTIP = "Show tooltips";
|
||||
HEALBOT_OPTIONS_SHOWDETTOOLTIP = "Show detailed spell information";
|
||||
@@ -385,11 +387,3 @@ HEALBOT_WORDS_SEC = "sec";
|
||||
HEALBOT_WORDS_TO = "to";
|
||||
HEALBOT_WORDS_CAST = "Cast"
|
||||
HEALBOT_WORDS_FOR = "for";
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
+35
-32
@@ -61,6 +61,9 @@ HEALBOT_FLASH_HEAL = "Soins rapides";
|
||||
HEALBOT_FLASH_OF_LIGHT = "Eclair lumineux";
|
||||
HEALBOT_HOLY_SHOCK = "Holy Shock";
|
||||
HEALBOT_GREATER_HEAL = "Soins sup\195\169rieurs";
|
||||
HEALBOT_INNER_FIRE = "Feu int\195\169rieur";
|
||||
HEALBOT_FEAR_WARD = "Gardien de peur";
|
||||
HEALBOT_ENLIGHTEN = "Enlighten";
|
||||
HEALBOT_HEALING_TOUCH = "Toucher gu\195\169risseur";
|
||||
HEALBOT_HEAL = "Soins";
|
||||
HEALBOT_HEALING_WAVE = "Vague de soins";
|
||||
@@ -112,14 +115,14 @@ HEALBOT_RANK_11 = " (Rang 11)";
|
||||
HEALBOT_LIBRARY_INCHEAL = "Increases healing done by spells and effects by up to (%d+)%."; -- *************** needs French translation ***************
|
||||
HEALBOT_LIBRARY_INCDAMHEAL = "Increases damage and healing done by magical spells and effects by up to (%d+)%."; -- *************** needs French translation ***************
|
||||
|
||||
HB_BONUSSCANNER_NAMES = {
|
||||
HEALBOT_BONUSSCANNER_NAMES = {
|
||||
HEAL = "Soins",
|
||||
};
|
||||
|
||||
HB_BONUSSCANNER_PREFIX_EQUIP = "Equip\195\169 : ";
|
||||
HB_BONUSSCANNER_PREFIX_SET = "Complet : ";
|
||||
HEALBOT_BONUSSCANNER_PREFIX_EQUIP = "Equip\195\169 : ";
|
||||
HEALBOT_BONUSSCANNER_PREFIX_SET = "Complet : ";
|
||||
|
||||
HB_BONUSSCANNER_PATTERNS_PASSIVE = {
|
||||
HEALBOT_BONUSSCANNER_PATTERNS_PASSIVE = {
|
||||
{ pattern = "Augmente les effets des sorts de soins de (%d+)% au maximum.", effect = "HEAL" },
|
||||
{ pattern = "Augmente les soins prodigu\195\169s par les sorts et effets de (%d+)% au maximum.", effect = "HEAL"},
|
||||
{ pattern = "Augmente les d\195\169g\195\162ts et les soins prodigu\195\169s par les sortsfalseles effets magiques de (%d+)% au maximum.", effect = "HEAL" },
|
||||
@@ -127,39 +130,39 @@ HB_BONUSSCANNER_PATTERNS_PASSIVE = {
|
||||
};
|
||||
|
||||
|
||||
HB_BONUSSCANNER_PATTERNS_GENERIC_LOOKUP = {
|
||||
HEALBOT_BONUSSCANNER_PATTERNS_GENERIC_LOOKUP = {
|
||||
["Sorts de Soins"] = "HEAL",
|
||||
["D\195\169g\195\162ts et soins "] = {"HEAL", "DMG"},
|
||||
};
|
||||
|
||||
HB_SPELL_PATTERN_LESSER_HEAL = "Soigne la cible de (%d+) \195\160 (%d+) points de vie";
|
||||
HB_SPELL_PATTERN_HEAL = "Soigne la cible de (%d+) \195\160 (%d+) points de vie";
|
||||
HB_SPELL_PATTERN_GREATER_HEAL = "Une longue incantation qui rend (%d+) \195\160 (%d+) points de vie \195\160 une cible unique";
|
||||
HB_SPELL_PATTERN_FLASH_HEAL = "Rend (%d+) \195\160 (%d+) points de vie";
|
||||
HB_SPELL_PATTERN_RENEW = "Rend (%d+) \195\160 (%d+) points de vie \195\160 la cible en (%d+) sec";
|
||||
HB_SPELL_PATTERN_RENEW1 = "Rend (%d+) points de vie \195\160 la cible en (%d+) sec";
|
||||
HB_SPELL_PATTERN_HEALING_TOUCH = "Rend (%d+) \195\160 (%d+) points de vie";
|
||||
HB_SPELL_PATTERN_REGROWTH = "Soigne une cible amie pour (%d+) \195\160 (%d+) puis pour (%d+) points suppl.+mentaires pendant (%d+) sec";
|
||||
HB_SPELL_PATTERN_REGROWTH1 = "Soigne une cible amie pour (%d+) \195\160 (%d+) puis pour (%d+) \195\160 (%d+) points suppl.+mentaires pendant (%d+) sec";
|
||||
HB_SPELL_PATTERN_HOLY_LIGHT = "Rend (%d+) \195\160 (%d+) points de vie";
|
||||
HB_SPELL_PATTERN_FLASH_OF_LIGHT = "Rend (%d+) \195\160 (%d+) points de vie";
|
||||
HB_SPELL_PATTERN_HEALING_WAVE = "Rend (%d+) \195\160 (%d+) points de vie";
|
||||
HB_SPELL_PATTERN_LESSER_HEALING_WAVE = "Rend (%d+) \195\160 (%d+) points de vie";
|
||||
HB_SPELL_PATTERN_REJUVENATION = "Soigne la cible de (%d+) durant (%d+) sec";
|
||||
HB_SPELL_PATTERN_REJUVENATION1 = "Soigne la cible de (%d+) a (%d+) durant (%d+) sec";
|
||||
HB_SPELL_PATTERN_SHIELD = "absorbe (%d+) points de d\195\169g\195\162ts. Dure (%d+) sec";
|
||||
HB_SPELL_PATTERN_MEND_PET = "Soigne votre compagnon de (%d+) points de vie chaques secondes que vous le ciblez. Dure (%d+) sec"
|
||||
HEALBOT_SPELL_PATTERN_LESSER_HEAL = "Soigne la cible de (%d+) \195\160 (%d+) points de vie";
|
||||
HEALBOT_SPELL_PATTERN_HEAL = "Soigne la cible de (%d+) \195\160 (%d+) points de vie";
|
||||
HEALBOT_SPELL_PATTERN_GREATER_HEAL = "Une longue incantation qui rend (%d+) \195\160 (%d+) points de vie \195\160 une cible unique";
|
||||
HEALBOT_SPELL_PATTERN_FLASH_HEAL = "Rend (%d+) \195\160 (%d+) points de vie";
|
||||
HEALBOT_SPELL_PATTERN_RENEW = "Rend (%d+) \195\160 (%d+) points de vie \195\160 la cible en (%d+) sec";
|
||||
HEALBOT_SPELL_PATTERN_RENEW1 = "Rend (%d+) points de vie \195\160 la cible en (%d+) sec";
|
||||
HEALBOT_SPELL_PATTERN_HEALING_TOUCH = "Rend (%d+) \195\160 (%d+) points de vie";
|
||||
HEALBOT_SPELL_PATTERN_REGROWTH = "Soigne une cible amie pour (%d+) \195\160 (%d+) puis pour (%d+) points suppl.+mentaires pendant (%d+) sec";
|
||||
HEALBOT_SPELL_PATTERN_REGROWTH1 = "Soigne une cible amie pour (%d+) \195\160 (%d+) puis pour (%d+) \195\160 (%d+) points suppl.+mentaires pendant (%d+) sec";
|
||||
HEALBOT_SPELL_PATTERN_HOLY_LIGHT = "Rend (%d+) \195\160 (%d+) points de vie";
|
||||
HEALBOT_SPELL_PATTERN_FLASH_OF_LIGHT = "Rend (%d+) \195\160 (%d+) points de vie";
|
||||
HEALBOT_SPELL_PATTERN_HEALING_WAVE = "Rend (%d+) \195\160 (%d+) points de vie";
|
||||
HEALBOT_SPELL_PATTERN_LESSER_HEALING_WAVE = "Rend (%d+) \195\160 (%d+) points de vie";
|
||||
HEALBOT_SPELL_PATTERN_REJUVENATION = "Soigne la cible de (%d+) durant (%d+) sec";
|
||||
HEALBOT_SPELL_PATTERN_REJUVENATION1 = "Soigne la cible de (%d+) a (%d+) durant (%d+) sec";
|
||||
HEALBOT_SPELL_PATTERN_SHIELD = "absorbe (%d+) points de d\195\169g\195\162ts. Dure (%d+) sec";
|
||||
HEALBOT_SPELL_PATTERN_MEND_PET = "Soigne votre compagnon de (%d+) points de vie chaques secondes que vous le ciblez. Dure (%d+) sec"
|
||||
|
||||
HB_TOOLTIP_MANA = "^Mana : (%d+)$";
|
||||
HB_TOOLTIP_INSTANT_CAST = 'Incantation imm\195\169diate';
|
||||
HB_TOOLTIP_CAST_TIME = '(%d+.?%d*) sec';
|
||||
HEALBOT_TOOLTIP_MANA = "^Mana : (%d+)$";
|
||||
HEALBOT_TOOLTIP_INSTANT_CAST = 'Incantation imm\195\169diate';
|
||||
HEALBOT_TOOLTIP_CAST_TIME = '(%d+.?%d*) sec';
|
||||
|
||||
HB_TOOLTIP_RANGE = "de (%d+) m"
|
||||
HB_TOOLTIP_CHANNELED = "Focaliser"
|
||||
HB_HASLEFTRAID = "^([^%s]+) a quitt\195\131\194\169 le groupe de raid$";
|
||||
HB_HASLEFTPARTY = "^([^%s]+) has left the party$"; -- *************** needs French translation ***************
|
||||
HB_YOULEAVETHEGROUP = "You leave the group" -- *************** needs translation ***************
|
||||
HB_YOULEAVETHERAID = "You have left the raid group" -- *************** needs translation ***************
|
||||
HEALBOT_TOOLTIP_RANGE = "de (%d+) m"
|
||||
HEALBOT_TOOLTIP_CHANNELED = "Focaliser"
|
||||
HEALBOT_HASLEFTRAID = "^([^%s]+) a quitt\195\131\194\169 le groupe de raid$";
|
||||
HEALBOT_HASLEFTPARTY = "^([^%s]+) has left the party$"; -- *************** needs French translation ***************
|
||||
HEALBOT_YOULEAVETHEGROUP = "You leave the group" -- *************** needs translation ***************
|
||||
HEALBOT_YOULEAVETHERAID = "You have left the raid group" -- *************** needs translation ***************
|
||||
|
||||
-----------------
|
||||
-- Translation --
|
||||
@@ -266,6 +269,7 @@ HEALBOT_OPTIONS_MONITORMELEE = "M\195\169l\195\169e";
|
||||
HEALBOT_OPTIONS_MONITORRANGE = "\195\128 distance";
|
||||
HEALBOT_OPTIONS_MONITORHEALERS = "Soigneurs";
|
||||
HEALBOT_OPTIONS_MONITORCUSTOM = "Personnalis\195\169";
|
||||
HEALBOT_OPTIONS_PETS = "Familiers";
|
||||
|
||||
HEALBOT_OPTIONS_BARALPHAINHEAL= "Incoming heal opacity"; -- *************** needs French translation ***************
|
||||
|
||||
@@ -333,7 +337,6 @@ HEALBOT_WORDS_SEC = "sec"; -- *************** needs translati
|
||||
HEALBOT_WORDS_TO = "to"; -- *************** needs translation ***************
|
||||
HEALBOT_WORDS_CAST = "Cast" -- *************** needs translation ***************
|
||||
HEALBOT_WORDS_FOR = "for"; -- *************** needs translation ***************
|
||||
|
||||
end
|
||||
|
||||
|
||||
|
||||
+36
-33
@@ -61,6 +61,9 @@ HEALBOT_PRAYER_OF_HEALING = "치유의 기원";
|
||||
HEALBOT_CHAIN_HEAL = "연쇄 치유";
|
||||
|
||||
HEALBOT_POWER_WORD_FORTITUDE = "신의 권능: 인내";
|
||||
HEALBOT_INNER_FIRE = "내면의 열정";
|
||||
HEALBOT_FEAR_WARD = "공포의 결계";
|
||||
HEALBOT_ENLIGHTEN = "Enlighten";
|
||||
HEALBOT_MARK_OF_THE_WILD = "야생의 징표";
|
||||
HEALBOT_GREATER_BLESSING_OF_SALVATION = "상급 구원의 축복";
|
||||
|
||||
@@ -97,20 +100,20 @@ HEALBOT_GREATER_BLESSING_OF_SALVATION = "상급 구원의 축복";
|
||||
HEALBOT_LIBRARY_INCHEAL = "모든 주문 및 효과에 의한 치유량이 최대 (%d+)만큼 증가합니다%.";
|
||||
HEALBOT_LIBRARY_INCDAMHEAL = "모든 주문 및 효과에 의한 피해와 치유량이 최대 (%d+)만큼 증가합니다%.";
|
||||
|
||||
HB_BONUSSCANNER_NAMES = {
|
||||
HEALBOT_BONUSSCANNER_NAMES = {
|
||||
HEAL = "치유량",
|
||||
};
|
||||
|
||||
HB_BONUSSCANNER_PREFIX_EQUIP = "착용 효과: ";
|
||||
HB_BONUSSCANNER_PREFIX_SET = "세트 효과: ";
|
||||
HEALBOT_BONUSSCANNER_PREFIX_EQUIP = "착용 효과: ";
|
||||
HEALBOT_BONUSSCANNER_PREFIX_SET = "세트 효과: ";
|
||||
|
||||
HB_BONUSSCANNER_PATTERNS_PASSIVE = {
|
||||
HEALBOT_BONUSSCANNER_PATTERNS_PASSIVE = {
|
||||
{ pattern = "모든 주문 및 효과에 의한 치유량이 최대 (%d+)만큼 증가합니다%.", effect = "HEAL" },
|
||||
{ pattern = "주문과 효과에 의한 치유량이 최대 (%d+)만큼 증가합니다%.", effect = "HEAL" },
|
||||
{ pattern = "모든 주문 및 효과에 의한 피해와 치유량이 최대 (%d+)만큼 증가합니다%.", effect = {"HEAL", "DMG"} },
|
||||
};
|
||||
|
||||
HB_BONUSSCANNER_PATTERNS_GENERIC_LOOKUP = {
|
||||
HEALBOT_BONUSSCANNER_PATTERNS_GENERIC_LOOKUP = {
|
||||
["치유 주문"] = "HEAL",
|
||||
["치유량 증가"] = "HEAL",
|
||||
["치유 효과 증가"] = "HEAL",
|
||||
@@ -120,7 +123,7 @@ HEALBOT_GREATER_BLESSING_OF_SALVATION = "상급 구원의 축복";
|
||||
["치유 및 공격 주문 위력"] = {"HEAL", "DMG"},
|
||||
};
|
||||
|
||||
HB_BONUSSCANNER_PATTERNS_OTHER = {
|
||||
HEALBOT_BONUSSCANNER_PATTERNS_OTHER = {
|
||||
{ pattern = "잔달라 모조의 인장", effect = {"DMG", "HEAL"}, value = 18 },
|
||||
{ pattern = "잔달라 평온의 인장", effect = "HEAL", value = 33 },
|
||||
|
||||
@@ -132,33 +135,33 @@ HEALBOT_GREATER_BLESSING_OF_SALVATION = "상급 구원의 축복";
|
||||
{ pattern = "반짝이는 마나 오일", effect = { "MANAREG", "HEAL"}, value = {12, 25} },
|
||||
};
|
||||
|
||||
HB_SPELL_PATTERN_LESSER_HEAL = "대상의 생명력을 (%d+)~(%d+)만큼 회복시킵니다";
|
||||
HB_SPELL_PATTERN_HEAL = "대상의 생명력을 (%d+)~(%d+)만큼 회복시킵니다";
|
||||
HB_SPELL_PATTERN_GREATER_HEAL = "대상의 생명력을 (%d+)~(%d+)만큼 회복시킵니다";
|
||||
HB_SPELL_PATTERN_FLASH_HEAL = "대상의 생명력을 (%d+)~(%d+)만큼 회복시킵니다";
|
||||
HB_SPELL_PATTERN_RENEW = "(%d+)초에 걸쳐 대상의 생명력을 총 (%d+)~(%d+)만큼 회복시킵니다";
|
||||
HB_SPELL_PATTERN_RENEW1 = "(%d+)초에 걸쳐 대상의 생명력을 총 (%d+)만큼 회복시킵니다";
|
||||
HB_SPELL_PATTERN_SHIELD = "(%d+)의 피해를 흡수합니다. (%d+)초 동안 지속됩니다.";
|
||||
HB_SPELL_PATTERN_HEALING_TOUCH = "대상의 생명력을 (%d+)~(%d+)만큼 회복시킵니다";
|
||||
HB_SPELL_PATTERN_REGROWTH = "대상의 생명력을 (%d+)~(%d+)만큼 회복시키고 추가로 (%d+)초에 걸쳐 총 (%d+)의 생명력을 회복시킵니다";
|
||||
HB_SPELL_PATTERN_REGROWTH1 = "대상의 생명력을 (%d+)~(%d+)만큼 회복시키고 추가로 (%d+)초에 걸쳐 총 (%d+)~(%d+)의 생명력을 회복시킵니다";
|
||||
HB_SPELL_PATTERN_HOLY_LIGHT = "대상의 생명력을 (%d+)~(%d+)만큼 회복시킵니다";
|
||||
HB_SPELL_PATTERN_FLASH_OF_LIGHT = "대상의 생명력을 (%d+)~(%d+)만큼 회복시킵니다";
|
||||
HB_SPELL_PATTERN_HEALING_WAVE = "대상의 생명력을 (%d+)~(%d+)만큼 회복시킵니다";
|
||||
HB_SPELL_PATTERN_LESSER_HEALING_WAVE = "대상의 생명력을 (%d+)~(%d+)만큼 회복시킵니다";
|
||||
HB_SPELL_PATTERN_REJUVENATION = "(%d+)에 걸쳐 (%d+)의 생명력을 회복시킵니다";
|
||||
HB_SPELL_PATTERN_REJUVENATION1 = "(%d+)에 걸쳐 (%d+)~(%d+)의 생명력을 회복시킵니다";
|
||||
HB_SPELL_PATTERN_MEND_PET = "야수에 정신을 집중하는 동안 매초마다 (%d+)의 생명력을 치료합니다";
|
||||
HEALBOT_SPELL_PATTERN_LESSER_HEAL = "대상의 생명력을 (%d+)~(%d+)만큼 회복시킵니다";
|
||||
HEALBOT_SPELL_PATTERN_HEAL = "대상의 생명력을 (%d+)~(%d+)만큼 회복시킵니다";
|
||||
HEALBOT_SPELL_PATTERN_GREATER_HEAL = "대상의 생명력을 (%d+)~(%d+)만큼 회복시킵니다";
|
||||
HEALBOT_SPELL_PATTERN_FLASH_HEAL = "대상의 생명력을 (%d+)~(%d+)만큼 회복시킵니다";
|
||||
HEALBOT_SPELL_PATTERN_RENEW = "(%d+)초에 걸쳐 대상의 생명력을 총 (%d+)~(%d+)만큼 회복시킵니다";
|
||||
HEALBOT_SPELL_PATTERN_RENEW1 = "(%d+)초에 걸쳐 대상의 생명력을 총 (%d+)만큼 회복시킵니다";
|
||||
HEALBOT_SPELL_PATTERN_SHIELD = "(%d+)의 피해를 흡수합니다. (%d+)초 동안 지속됩니다.";
|
||||
HEALBOT_SPELL_PATTERN_HEALING_TOUCH = "대상의 생명력을 (%d+)~(%d+)만큼 회복시킵니다";
|
||||
HEALBOT_SPELL_PATTERN_REGROWTH = "대상의 생명력을 (%d+)~(%d+)만큼 회복시키고 추가로 (%d+)초에 걸쳐 총 (%d+)의 생명력을 회복시킵니다";
|
||||
HEALBOT_SPELL_PATTERN_REGROWTH1 = "대상의 생명력을 (%d+)~(%d+)만큼 회복시키고 추가로 (%d+)초에 걸쳐 총 (%d+)~(%d+)의 생명력을 회복시킵니다";
|
||||
HEALBOT_SPELL_PATTERN_HOLY_LIGHT = "대상의 생명력을 (%d+)~(%d+)만큼 회복시킵니다";
|
||||
HEALBOT_SPELL_PATTERN_FLASH_OF_LIGHT = "대상의 생명력을 (%d+)~(%d+)만큼 회복시킵니다";
|
||||
HEALBOT_SPELL_PATTERN_HEALING_WAVE = "대상의 생명력을 (%d+)~(%d+)만큼 회복시킵니다";
|
||||
HEALBOT_SPELL_PATTERN_LESSER_HEALING_WAVE = "대상의 생명력을 (%d+)~(%d+)만큼 회복시킵니다";
|
||||
HEALBOT_SPELL_PATTERN_REJUVENATION = "(%d+)에 걸쳐 (%d+)의 생명력을 회복시킵니다";
|
||||
HEALBOT_SPELL_PATTERN_REJUVENATION1 = "(%d+)에 걸쳐 (%d+)~(%d+)의 생명력을 회복시킵니다";
|
||||
HEALBOT_SPELL_PATTERN_MEND_PET = "야수에 정신을 집중하는 동안 매초마다 (%d+)의 생명력을 치료합니다";
|
||||
|
||||
HB_TOOLTIP_MANA = "^마나 (%d+)$";
|
||||
HB_TOOLTIP_RANGE = "(%d+)미터";
|
||||
HB_TOOLTIP_INSTANT_CAST = "즉시 시전";
|
||||
HB_TOOLTIP_CAST_TIME = "(%d+.?%d*)초";
|
||||
HB_TOOLTIP_CHANNELED = "채널링";
|
||||
HB_HASLEFTRAID = "^([^%s]+)님이 공격대를 떠났습니다$";
|
||||
HB_HASLEFTPARTY = "^([^%s]+)님이 파티를 떠났습니다$";
|
||||
HB_YOULEAVETHEGROUP = "당신은 파티를 떠났습니다"
|
||||
HB_YOULEAVETHERAID = "공격대를 떠났습니다"
|
||||
HEALBOT_TOOLTIP_MANA = "^마나 (%d+)$";
|
||||
HEALBOT_TOOLTIP_RANGE = "(%d+)미터";
|
||||
HEALBOT_TOOLTIP_INSTANT_CAST = "즉시 시전";
|
||||
HEALBOT_TOOLTIP_CAST_TIME = "(%d+.?%d*)초";
|
||||
HEALBOT_TOOLTIP_CHANNELED = "채널링";
|
||||
HEALBOT_HASLEFTRAID = "^([^%s]+)님이 공격대를 떠났습니다$";
|
||||
HEALBOT_HASLEFTPARTY = "^([^%s]+)님이 파티를 떠났습니다$";
|
||||
HEALBOT_YOULEAVETHEGROUP = "당신은 파티를 떠났습니다"
|
||||
HEALBOT_YOULEAVETHERAID = "공격대를 떠났습니다"
|
||||
|
||||
-----------------
|
||||
-- Translation --
|
||||
@@ -309,6 +312,7 @@ HEALBOT_GREATER_BLESSING_OF_SALVATION = "상급 구원의 축복";
|
||||
HEALBOT_OPTIONS_MONITORRANGE = "원거리";
|
||||
HEALBOT_OPTIONS_MONITORHEALERS = "힐러";
|
||||
HEALBOT_OPTIONS_MONITORCUSTOM = "사용자 정의";
|
||||
HEALBOT_OPTIONS_PETS = "소환수";
|
||||
|
||||
HEALBOT_OPTIONS_SHOWTOOLTIP = "툴팁 표시";
|
||||
HEALBOT_OPTIONS_SHOWDETTOOLTIP = "주문 정보 표시";
|
||||
@@ -329,7 +333,6 @@ HEALBOT_GREATER_BLESSING_OF_SALVATION = "상급 구원의 축복";
|
||||
HEALBOT_WORDS_TO = "~";
|
||||
HEALBOT_WORDS_CAST = "시전"
|
||||
HEALBOT_WORDS_FOR = "for";
|
||||
|
||||
end
|
||||
|
||||
|
||||
|
||||
@@ -1,6 +1,32 @@
|
||||
-- HealBot_Model.lua
|
||||
-- Centralized Data Store and Observer System for HealBotBlue
|
||||
|
||||
-- Safe local wrappers to prevent native UIDropDownMenu concatenation crashes
|
||||
-- when setting selected values on closed dropdowns during initialization.
|
||||
function HealBot_UIDropDownMenu_SetSelectedID(frame, id, useValue)
|
||||
local wasNil = false
|
||||
if not UIDROPDOWNMENU_OPEN_MENU then
|
||||
UIDROPDOWNMENU_OPEN_MENU = "DropDownList1"
|
||||
wasNil = true
|
||||
end
|
||||
UIDropDownMenu_SetSelectedID(frame, id, useValue)
|
||||
if wasNil then
|
||||
UIDROPDOWNMENU_OPEN_MENU = nil
|
||||
end
|
||||
end
|
||||
|
||||
function HealBot_UIDropDownMenu_SetSelectedValue(frame, value, useValue)
|
||||
local wasNil = false
|
||||
if not UIDROPDOWNMENU_OPEN_MENU then
|
||||
UIDROPDOWNMENU_OPEN_MENU = "DropDownList1"
|
||||
wasNil = true
|
||||
end
|
||||
UIDropDownMenu_SetSelectedValue(frame, value, useValue)
|
||||
if wasNil then
|
||||
UIDROPDOWNMENU_OPEN_MENU = nil
|
||||
end
|
||||
end
|
||||
|
||||
HealBot_Model = {
|
||||
observers = {},
|
||||
units = {},
|
||||
|
||||
+16
-3
@@ -18,6 +18,7 @@ HealBot_Options_EmergencyFilter_List = {
|
||||
HEALBOT_SHAMAN,
|
||||
HEALBOT_WARLOCK,
|
||||
HEALBOT_WARRIOR,
|
||||
HEALBOT_OPTIONS_PETS,
|
||||
HEALBOT_OPTIONS_MONITORMELEE,
|
||||
HEALBOT_OPTIONS_MONITORRANGE,
|
||||
HEALBOT_OPTIONS_MONITORHEALERS,
|
||||
@@ -247,6 +248,8 @@ function HealBot_Options_OnShow(this)
|
||||
HealBot_Options_PanelSounds:SetChecked(HealBot_Config.PanelSounds);
|
||||
HealBot_Options_ShowManaBars:SetChecked(HealBot_Config.ShowManaBars);
|
||||
HealBot_Options_ManaBarsHealersOnly:SetChecked(HealBot_Config.ManaBarsHealersOnly);
|
||||
if HealBot_Config.ShowNonManaBars == nil then HealBot_Config.ShowNonManaBars = 0; end
|
||||
HealBot_Options_ShowNonManaBars:SetChecked(HealBot_Config.ShowNonManaBars);
|
||||
|
||||
if HealBot_Config.ActionMouseover == nil then HealBot_Config.ActionMouseover = 1; end
|
||||
HealBot_Options_ActionMouseover:SetChecked(HealBot_Config.ActionMouseover);
|
||||
@@ -260,6 +263,9 @@ function HealBot_Options_OnShow(this)
|
||||
HealBot_Options_TargetHeals:SetChecked(HealBot_Config.TargetHeals);
|
||||
HealBot_Options_EmergencyHeals:SetChecked(HealBot_Config.EmergencyHeals);
|
||||
HealBot_Options_OverHeal:SetValue(HealBot_Config.OverHeal);
|
||||
if HealBot_Config.ShowHealthText == nil then HealBot_Config.ShowHealthText = 0; end
|
||||
HealBot_UIDropDownMenu_SetSelectedID(HealBot_Options_HealthText, HealBot_Config.ShowHealthText + 1);
|
||||
UIDropDownMenu_SetText(HealBot_Options_HealthText_List[HealBot_Config.ShowHealthText + 1], HealBot_Options_HealthText);
|
||||
HealBot_Options_CastNotify_OnClick(nil,HealBot_Config.CastNotify);
|
||||
HealBot_Options_SetBuffs();
|
||||
HealBot_Options_HideOptions:SetChecked(HealBot_Config.HideOptions);
|
||||
@@ -315,7 +321,8 @@ function HealBot_Options_SetSkins()
|
||||
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)
|
||||
local isShowHeaders = (HealBot_Config.ShowHeader[HealBot_Config.Current_Skin] == 1)
|
||||
HealBot_Options_ShowHeaders:SetChecked(isShowHeaders and 1 or nil)
|
||||
|
||||
local isColorMode = (HealBot_Config.bcolormode[HealBot_Config.Current_Skin] == 2)
|
||||
HealBot_Options_BarColorMode:SetChecked(isColorMode and 1 or nil)
|
||||
@@ -335,10 +342,16 @@ function HealBot_Options_SetSkins()
|
||||
end
|
||||
function HealBot_Options_ShowPanel(id)
|
||||
if HealBot_Options_CurrentPanel>0 then
|
||||
getglobal("HealBot_Options_Panel"..HealBot_Options_CurrentPanel):Hide();
|
||||
local panel = getglobal("HealBot_Options_Panel"..HealBot_Options_CurrentPanel);
|
||||
if panel then
|
||||
panel:Hide();
|
||||
end
|
||||
end
|
||||
HealBot_Options_CurrentPanel = id;
|
||||
if HealBot_Options_CurrentPanel>0 then
|
||||
getglobal("HealBot_Options_Panel"..HealBot_Options_CurrentPanel):Show();
|
||||
local panel = getglobal("HealBot_Options_Panel"..HealBot_Options_CurrentPanel);
|
||||
if panel then
|
||||
panel:Show();
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -21,9 +21,10 @@ function HealBot_Options_BuffSelf_OnLoad(self)
|
||||
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])
|
||||
local isSelf = (HealBot_Config.BuffWatchSelf[id] == 1)
|
||||
this:SetChecked(isSelf and 1 or nil)
|
||||
else
|
||||
this:SetChecked(0)
|
||||
this:SetChecked(nil)
|
||||
end
|
||||
end
|
||||
function HealBot_Options_BuffSelf_OnClick(self)
|
||||
@@ -77,7 +78,7 @@ function HealBot_Options_Buff_OnClick()
|
||||
text = HealBot_Buff_Spells[myClass][this.value]
|
||||
end
|
||||
|
||||
UIDropDownMenu_SetSelectedID(frame, this.value + 1)
|
||||
HealBot_UIDropDownMenu_SetSelectedID(frame, this.value + 1)
|
||||
UIDropDownMenu_SetText(text, frame)
|
||||
HealBot_RecalcParty();
|
||||
end
|
||||
@@ -101,15 +102,16 @@ function HealBot_Options_SetBuffs()
|
||||
if dropDown then
|
||||
local val = HealBot_Config.BuffDropDowns[myClass][i] or 0
|
||||
UIDropDownMenu_Initialize(dropDown, HealBot_Options_Buff_Initialize)
|
||||
UIDropDownMenu_SetSelectedID(dropDown, val + 1)
|
||||
HealBot_UIDropDownMenu_SetSelectedID(dropDown, val + 1)
|
||||
end
|
||||
|
||||
local selfCheck = getglobal("HealBot_Options_BuffSelf" .. i)
|
||||
if selfCheck then
|
||||
if HealBot_Config.BuffWatchSelf and HealBot_Config.BuffWatchSelf[i] then
|
||||
selfCheck:SetChecked(HealBot_Config.BuffWatchSelf[i])
|
||||
local isSelf = (HealBot_Config.BuffWatchSelf[i] == 1)
|
||||
selfCheck:SetChecked(isSelf and 1 or nil)
|
||||
else
|
||||
selfCheck:SetChecked(0)
|
||||
selfCheck:SetChecked(nil)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -51,7 +51,7 @@ 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)
|
||||
HealBot_UIDropDownMenu_SetSelectedID(HealBot_Options_CDCMonitor,HealBot_Config.CDCMonitor)
|
||||
end
|
||||
function HealBot_Options_CDCMonitor_OnLoad()
|
||||
UIDropDownMenu_Initialize(this, HealBot_Options_CDCMonitor_DropDown)
|
||||
@@ -200,14 +200,14 @@ function HealBot_Options_CDCButLeft_Refresh(onselect)
|
||||
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)
|
||||
HealBot_UIDropDownMenu_SetSelectedID(HealBot_Options_CDCButLeft,set_id)
|
||||
end
|
||||
function HealBot_Options_CDCButRight_Refresh(onselect)
|
||||
local set_id;
|
||||
local class=UnitClass("Player");
|
||||
if not onselect then HealBot_Options_CDCButRight_Initialize() end
|
||||
set_id = HealBot_Config.Debuff_Right[class];
|
||||
UIDropDownMenu_SetSelectedID(HealBot_Options_CDCButRight,set_id)
|
||||
HealBot_UIDropDownMenu_SetSelectedID(HealBot_Options_CDCButRight,set_id)
|
||||
end
|
||||
function HealBot_Options_CDCButLeft_OnLoad()
|
||||
UIDropDownMenu_Initialize(this, HealBot_Options_CDCButLeft_DropDown)
|
||||
|
||||
+13
-70
@@ -1,69 +1,10 @@
|
||||
-- HealBot Options panel file: HealBot_Options_Chat.lua
|
||||
-- Split from original HealBot_Options.lua
|
||||
|
||||
local HealBot_PlayerSpells = nil
|
||||
|
||||
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" }
|
||||
HealBot_Config.ChatMessages[id] = { Spell = "", Message = "Casting #Spell# on #Target#", Channel = "None" }
|
||||
end
|
||||
|
||||
local current = HealBot_Config.ChatMessages[id].Channel
|
||||
@@ -91,24 +32,26 @@ function HealBot_Options_SetChatMessages()
|
||||
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" }
|
||||
HealBot_Config.ChatMessages[i] = { Spell = "", Message = "Casting #Spell# on #Target#", Channel = "None" }
|
||||
end
|
||||
end
|
||||
for i = 1, 5 do
|
||||
local msgConfig = HealBot_Config.ChatMessages[i]
|
||||
if msgConfig then
|
||||
local dropDown = getglobal("HealBot_Options_ChatMsg"..i)
|
||||
local editBox = getglobal("HealBot_Options_ChatMsg"..i.."_Text")
|
||||
local spellEdit = getglobal("HealBot_Options_ChatMsg"..i.."_Spell")
|
||||
local textEdit = getglobal("HealBot_Options_ChatMsg"..i.."_Text")
|
||||
local chanButton = getglobal("HealBot_Options_ChatMsg"..i.."_Channel")
|
||||
|
||||
if dropDown then
|
||||
UIDropDownMenu_Initialize(dropDown, HealBot_Options_ChatMsg_Spell_Initialize)
|
||||
UIDropDownMenu_SetSelectedValue(dropDown, msgConfig.Spell)
|
||||
UIDropDownMenu_SetWidth(110, dropDown)
|
||||
UIDropDownMenu_SetText(msgConfig.Spell, dropDown)
|
||||
if spellEdit then
|
||||
if msgConfig.Spell == "None" then
|
||||
spellEdit:SetText("")
|
||||
msgConfig.Spell = ""
|
||||
else
|
||||
spellEdit:SetText(msgConfig.Spell or "")
|
||||
end
|
||||
end
|
||||
if editBox then
|
||||
editBox:SetText(msgConfig.Message or "")
|
||||
if textEdit then
|
||||
textEdit:SetText(msgConfig.Message or "")
|
||||
end
|
||||
if chanButton then
|
||||
chanButton:SetText(msgConfig.Channel or "None")
|
||||
|
||||
+143
-94
@@ -5,23 +5,50 @@
|
||||
<Frame name="HealBot_Options_Panel7" parent="HealBot_Options" hidden="true" setAllPoints="true">
|
||||
<Frames>
|
||||
<!-- Chat Message 1 -->
|
||||
<Frame name="HealBot_Options_ChatMsg1" inherits="UIDropDownMenuTemplate" id="1">
|
||||
<EditBox name="HealBot_Options_ChatMsg1_Spell" inherits="InputBoxTemplate" autoFocus="false">
|
||||
<Size>
|
||||
<AbsDimension x="130" y="20"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-30" />
|
||||
<AbsDimension x="25" y="-30" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</Frame>
|
||||
<EditBox name="HealBot_Options_ChatMsg1_Text" inherits="InputBoxTemplate" autoFocus="false">
|
||||
<Scripts>
|
||||
<OnTextChanged>
|
||||
if HealBot_Config.ChatMessages then
|
||||
HealBot_Config.ChatMessages[1].Spell = this:GetText();
|
||||
end
|
||||
</OnTextChanged>
|
||||
</Scripts>
|
||||
</EditBox>
|
||||
<Button name="HealBot_Options_ChatMsg1_Channel" inherits="UIPanelButtonTemplate" text="None">
|
||||
<Size>
|
||||
<AbsDimension x="200" y="20"/>
|
||||
<AbsDimension x="80" y="22"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="LEFT" relativeTo="HealBot_Options_ChatMsg1" relativePoint="RIGHT">
|
||||
<Anchor point="LEFT" relativeTo="HealBot_Options_ChatMsg1_Spell" relativePoint="RIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="2"/>
|
||||
<AbsDimension x="15" y="0"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnClick>
|
||||
HealBot_Options_ChatMsg_Channel_OnClick(1, this);
|
||||
</OnClick>
|
||||
</Scripts>
|
||||
</Button>
|
||||
<EditBox name="HealBot_Options_ChatMsg1_Text" inherits="InputBoxTemplate" autoFocus="false">
|
||||
<Size>
|
||||
<AbsDimension x="300" y="20"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_ChatMsg1_Spell" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-5"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
@@ -33,41 +60,51 @@
|
||||
</OnTextChanged>
|
||||
</Scripts>
|
||||
</EditBox>
|
||||
<Button name="HealBot_Options_ChatMsg1_Channel" inherits="UIPanelButtonTemplate" text="None">
|
||||
<!-- Chat Message 2 -->
|
||||
<EditBox name="HealBot_Options_ChatMsg2_Spell" inherits="InputBoxTemplate" autoFocus="false">
|
||||
<Size>
|
||||
<AbsDimension x="130" y="20"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="25" y="-90" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnTextChanged>
|
||||
if HealBot_Config.ChatMessages then
|
||||
HealBot_Config.ChatMessages[2].Spell = this:GetText();
|
||||
end
|
||||
</OnTextChanged>
|
||||
</Scripts>
|
||||
</EditBox>
|
||||
<Button name="HealBot_Options_ChatMsg2_Channel" inherits="UIPanelButtonTemplate" text="None">
|
||||
<Size>
|
||||
<AbsDimension x="80" y="22"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_ChatMsg1_Text" relativePoint="BOTTOMLEFT">
|
||||
<Anchor point="LEFT" relativeTo="HealBot_Options_ChatMsg2_Spell" relativePoint="RIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-5"/>
|
||||
<AbsDimension x="15" y="0"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnClick>
|
||||
HealBot_Options_ChatMsg_Channel_OnClick(1, this);
|
||||
HealBot_Options_ChatMsg_Channel_OnClick(2, this);
|
||||
</OnClick>
|
||||
</Scripts>
|
||||
</Button>
|
||||
<!-- Chat Message 2 -->
|
||||
<Frame name="HealBot_Options_ChatMsg2" inherits="UIDropDownMenuTemplate" id="2">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-90" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</Frame>
|
||||
<EditBox name="HealBot_Options_ChatMsg2_Text" inherits="InputBoxTemplate" autoFocus="false">
|
||||
<Size>
|
||||
<AbsDimension x="200" y="20"/>
|
||||
<AbsDimension x="300" y="20"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="LEFT" relativeTo="HealBot_Options_ChatMsg2" relativePoint="RIGHT">
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_ChatMsg2_Spell" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="2"/>
|
||||
<AbsDimension x="0" y="-5"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
@@ -79,41 +116,51 @@
|
||||
</OnTextChanged>
|
||||
</Scripts>
|
||||
</EditBox>
|
||||
<Button name="HealBot_Options_ChatMsg2_Channel" inherits="UIPanelButtonTemplate" text="None">
|
||||
<!-- Chat Message 3 -->
|
||||
<EditBox name="HealBot_Options_ChatMsg3_Spell" inherits="InputBoxTemplate" autoFocus="false">
|
||||
<Size>
|
||||
<AbsDimension x="130" y="20"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="25" y="-150" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnTextChanged>
|
||||
if HealBot_Config.ChatMessages then
|
||||
HealBot_Config.ChatMessages[3].Spell = this:GetText();
|
||||
end
|
||||
</OnTextChanged>
|
||||
</Scripts>
|
||||
</EditBox>
|
||||
<Button name="HealBot_Options_ChatMsg3_Channel" inherits="UIPanelButtonTemplate" text="None">
|
||||
<Size>
|
||||
<AbsDimension x="80" y="22"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_ChatMsg2_Text" relativePoint="BOTTOMLEFT">
|
||||
<Anchor point="LEFT" relativeTo="HealBot_Options_ChatMsg3_Spell" relativePoint="RIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-5"/>
|
||||
<AbsDimension x="15" y="0"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnClick>
|
||||
HealBot_Options_ChatMsg_Channel_OnClick(2, this);
|
||||
HealBot_Options_ChatMsg_Channel_OnClick(3, this);
|
||||
</OnClick>
|
||||
</Scripts>
|
||||
</Button>
|
||||
<!-- Chat Message 3 -->
|
||||
<Frame name="HealBot_Options_ChatMsg3" inherits="UIDropDownMenuTemplate" id="3">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-150" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</Frame>
|
||||
<EditBox name="HealBot_Options_ChatMsg3_Text" inherits="InputBoxTemplate" autoFocus="false">
|
||||
<Size>
|
||||
<AbsDimension x="200" y="20"/>
|
||||
<AbsDimension x="300" y="20"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="LEFT" relativeTo="HealBot_Options_ChatMsg3" relativePoint="RIGHT">
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_ChatMsg3_Spell" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="2"/>
|
||||
<AbsDimension x="0" y="-5"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
@@ -125,41 +172,51 @@
|
||||
</OnTextChanged>
|
||||
</Scripts>
|
||||
</EditBox>
|
||||
<Button name="HealBot_Options_ChatMsg3_Channel" inherits="UIPanelButtonTemplate" text="None">
|
||||
<!-- Chat Message 4 -->
|
||||
<EditBox name="HealBot_Options_ChatMsg4_Spell" inherits="InputBoxTemplate" autoFocus="false">
|
||||
<Size>
|
||||
<AbsDimension x="130" y="20"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="25" y="-210" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnTextChanged>
|
||||
if HealBot_Config.ChatMessages then
|
||||
HealBot_Config.ChatMessages[4].Spell = this:GetText();
|
||||
end
|
||||
</OnTextChanged>
|
||||
</Scripts>
|
||||
</EditBox>
|
||||
<Button name="HealBot_Options_ChatMsg4_Channel" inherits="UIPanelButtonTemplate" text="None">
|
||||
<Size>
|
||||
<AbsDimension x="80" y="22"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_ChatMsg3_Text" relativePoint="BOTTOMLEFT">
|
||||
<Anchor point="LEFT" relativeTo="HealBot_Options_ChatMsg4_Spell" relativePoint="RIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-5"/>
|
||||
<AbsDimension x="15" y="0"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnClick>
|
||||
HealBot_Options_ChatMsg_Channel_OnClick(3, this);
|
||||
HealBot_Options_ChatMsg_Channel_OnClick(4, this);
|
||||
</OnClick>
|
||||
</Scripts>
|
||||
</Button>
|
||||
<!-- Chat Message 4 -->
|
||||
<Frame name="HealBot_Options_ChatMsg4" inherits="UIDropDownMenuTemplate" id="4">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-210" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</Frame>
|
||||
<EditBox name="HealBot_Options_ChatMsg4_Text" inherits="InputBoxTemplate" autoFocus="false">
|
||||
<Size>
|
||||
<AbsDimension x="200" y="20"/>
|
||||
<AbsDimension x="300" y="20"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="LEFT" relativeTo="HealBot_Options_ChatMsg4" relativePoint="RIGHT">
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_ChatMsg4_Spell" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="2"/>
|
||||
<AbsDimension x="0" y="-5"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
@@ -171,41 +228,51 @@
|
||||
</OnTextChanged>
|
||||
</Scripts>
|
||||
</EditBox>
|
||||
<Button name="HealBot_Options_ChatMsg4_Channel" inherits="UIPanelButtonTemplate" text="None">
|
||||
<!-- Chat Message 5 -->
|
||||
<EditBox name="HealBot_Options_ChatMsg5_Spell" inherits="InputBoxTemplate" autoFocus="false">
|
||||
<Size>
|
||||
<AbsDimension x="130" y="20"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="25" y="-270" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnTextChanged>
|
||||
if HealBot_Config.ChatMessages then
|
||||
HealBot_Config.ChatMessages[5].Spell = this:GetText();
|
||||
end
|
||||
</OnTextChanged>
|
||||
</Scripts>
|
||||
</EditBox>
|
||||
<Button name="HealBot_Options_ChatMsg5_Channel" inherits="UIPanelButtonTemplate" text="None">
|
||||
<Size>
|
||||
<AbsDimension x="80" y="22"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_ChatMsg4_Text" relativePoint="BOTTOMLEFT">
|
||||
<Anchor point="LEFT" relativeTo="HealBot_Options_ChatMsg5_Spell" relativePoint="RIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-5"/>
|
||||
<AbsDimension x="15" y="0"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnClick>
|
||||
HealBot_Options_ChatMsg_Channel_OnClick(4, this);
|
||||
HealBot_Options_ChatMsg_Channel_OnClick(5, this);
|
||||
</OnClick>
|
||||
</Scripts>
|
||||
</Button>
|
||||
<!-- Chat Message 5 -->
|
||||
<Frame name="HealBot_Options_ChatMsg5" inherits="UIDropDownMenuTemplate" id="5">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-270" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</Frame>
|
||||
<EditBox name="HealBot_Options_ChatMsg5_Text" inherits="InputBoxTemplate" autoFocus="false">
|
||||
<Size>
|
||||
<AbsDimension x="200" y="20"/>
|
||||
<AbsDimension x="300" y="20"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="LEFT" relativeTo="HealBot_Options_ChatMsg5" relativePoint="RIGHT">
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_ChatMsg5_Spell" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="2"/>
|
||||
<AbsDimension x="0" y="-5"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
@@ -217,24 +284,6 @@
|
||||
</OnTextChanged>
|
||||
</Scripts>
|
||||
</EditBox>
|
||||
<Button name="HealBot_Options_ChatMsg5_Channel" inherits="UIPanelButtonTemplate" text="None">
|
||||
<Size>
|
||||
<AbsDimension x="80" y="22"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_ChatMsg5_Text" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-5"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnClick>
|
||||
HealBot_Options_ChatMsg_Channel_OnClick(5, this);
|
||||
</OnClick>
|
||||
</Scripts>
|
||||
</Button>
|
||||
</Frames>
|
||||
</Frame>
|
||||
|
||||
</Ui>
|
||||
</Ui>
|
||||
@@ -5,7 +5,8 @@ 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();
|
||||
local isChecked = this:GetChecked()
|
||||
HealBot_Config.ShowHeader[HealBot_Config.Current_Skin] = isChecked and 1 or 0;
|
||||
HealBot_Action_ResetSkin()
|
||||
end
|
||||
function HealBot_Options_BarTextureS_OnValueChanged(this)
|
||||
|
||||
@@ -102,7 +102,7 @@
|
||||
</OnLoad>
|
||||
</Scripts>
|
||||
<Size>
|
||||
<AbsDimension y="70"/>
|
||||
<AbsDimension y="95"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
@@ -156,7 +156,7 @@
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_ShowManaBars" relativePoint="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="200" y="0" />
|
||||
<AbsDimension x="180" y="0" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
@@ -174,6 +174,28 @@
|
||||
</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
<CheckButton name="HealBot_Options_ShowNonManaBars" inherits="OptionsCheckButtonTemplate">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_ShowManaBars" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-2" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>
|
||||
getglobal(this:GetName().."Text"):SetText("Track Non-Mana Resources");
|
||||
</OnLoad>
|
||||
<OnClick>
|
||||
if (this:GetChecked()) then
|
||||
HealBot_Config.ShowNonManaBars = 1;
|
||||
else
|
||||
HealBot_Config.ShowNonManaBars = 0;
|
||||
end
|
||||
HealBot_Action_Refresh();
|
||||
</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
</Frames>
|
||||
</Frame>
|
||||
|
||||
|
||||
+46
-17
@@ -85,6 +85,33 @@ function HealBot_Options_EFClass_OnClick(this)
|
||||
HealBot_Action_PartyChanged();
|
||||
end
|
||||
end
|
||||
HealBot_Options_HealthText_List = {
|
||||
"Name Only",
|
||||
"Health Percentage",
|
||||
"Real Health",
|
||||
"Health Deficit",
|
||||
}
|
||||
|
||||
function HealBot_Options_HealthText_DropDown()
|
||||
for i=1, getn(HealBot_Options_HealthText_List), 1 do
|
||||
local info = {};
|
||||
info.text = HealBot_Options_HealthText_List[i];
|
||||
info.func = HealBot_Options_HealthText_OnSelect;
|
||||
UIDropDownMenu_AddButton(info);
|
||||
end
|
||||
end
|
||||
|
||||
function HealBot_Options_HealthText_OnLoad(this)
|
||||
UIDropDownMenu_Initialize(this, HealBot_Options_HealthText_DropDown);
|
||||
UIDropDownMenu_SetWidth(110, this);
|
||||
end
|
||||
|
||||
function HealBot_Options_HealthText_OnSelect()
|
||||
HealBot_Config.ShowHealthText = this:GetID() - 1;
|
||||
HealBot_UIDropDownMenu_SetSelectedID(HealBot_Options_HealthText, this:GetID())
|
||||
HealBot_Action_RefreshButtons();
|
||||
end
|
||||
|
||||
local HealBot_Options_EmergencyFClass_List = {
|
||||
HEALBOT_CLASSES_MELEE,
|
||||
HEALBOT_CLASSES_RANGES,
|
||||
@@ -108,7 +135,7 @@ 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)
|
||||
HealBot_UIDropDownMenu_SetSelectedID(HealBot_Options_EmergencyFClass,HealBot_Config.EmergencyFClass)
|
||||
end
|
||||
|
||||
function HealBot_Options_EmergencyFClass_OnLoad()
|
||||
@@ -191,7 +218,7 @@ 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)
|
||||
HealBot_UIDropDownMenu_SetSelectedID(HealBot_Options_ExtraSort,HealBot_Config.ExtraOrder)
|
||||
end
|
||||
|
||||
function HealBot_Options_ExtraSort_OnLoad()
|
||||
@@ -225,7 +252,7 @@ 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)
|
||||
HealBot_UIDropDownMenu_SetSelectedID(HealBot_Options_EmergencyFilter,HealBot_Config.EmergIncMonitor)
|
||||
end
|
||||
|
||||
|
||||
@@ -252,7 +279,7 @@ function HealBot_Options_EmergencyFilter_Reset()
|
||||
HealBot_EmergInc[HEALBOT_SHAMAN] = 0;
|
||||
HealBot_EmergInc[HEALBOT_WARLOCK] = 0;
|
||||
HealBot_EmergInc[HEALBOT_WARRIOR] = 0;
|
||||
if HealBot_Config.EmergIncMonitor==1 then
|
||||
if HealBot_Config.EmergIncMonitor==2 then
|
||||
HealBot_EmergInc[HEALBOT_DRUID] = 1;
|
||||
HealBot_EmergInc[HEALBOT_HUNTER] = 1;
|
||||
HealBot_EmergInc[HEALBOT_MAGE] = 1;
|
||||
@@ -262,25 +289,27 @@ function HealBot_Options_EmergencyFilter_Reset()
|
||||
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;
|
||||
HealBot_EmergInc[HEALBOT_DRUID] = 1;
|
||||
elseif HealBot_Config.EmergIncMonitor==4 then
|
||||
HealBot_EmergInc[HEALBOT_MAGE] = 1;
|
||||
HealBot_EmergInc[HEALBOT_HUNTER] = 1;
|
||||
elseif HealBot_Config.EmergIncMonitor==5 then
|
||||
HealBot_EmergInc[HEALBOT_PALADIN] = 1;
|
||||
HealBot_EmergInc[HEALBOT_MAGE] = 1;
|
||||
elseif HealBot_Config.EmergIncMonitor==6 then
|
||||
HealBot_EmergInc[HEALBOT_PRIEST] = 1;
|
||||
HealBot_EmergInc[HEALBOT_PALADIN] = 1;
|
||||
elseif HealBot_Config.EmergIncMonitor==7 then
|
||||
HealBot_EmergInc[HEALBOT_ROGUE] = 1;
|
||||
HealBot_EmergInc[HEALBOT_PRIEST] = 1;
|
||||
elseif HealBot_Config.EmergIncMonitor==8 then
|
||||
HealBot_EmergInc[HEALBOT_SHAMAN] = 1;
|
||||
HealBot_EmergInc[HEALBOT_ROGUE] = 1;
|
||||
elseif HealBot_Config.EmergIncMonitor==9 then
|
||||
HealBot_EmergInc[HEALBOT_WARLOCK] = 1;
|
||||
HealBot_EmergInc[HEALBOT_SHAMAN] = 1;
|
||||
elseif HealBot_Config.EmergIncMonitor==10 then
|
||||
HealBot_EmergInc[HEALBOT_WARRIOR] = 1;
|
||||
HealBot_EmergInc[HEALBOT_WARLOCK] = 1;
|
||||
elseif HealBot_Config.EmergIncMonitor==11 then
|
||||
HealBot_EmergInc[HEALBOT_WARRIOR] = 1;
|
||||
elseif HealBot_Config.EmergIncMonitor==12 then
|
||||
-- Pets: no player classes enabled (handled separately in layout)
|
||||
elseif HealBot_Config.EmergIncMonitor==13 then
|
||||
HealBot_EmergInc[HEALBOT_DRUID] = HealBot_Config.EmergIncMelee[HEALBOT_DRUID];
|
||||
HealBot_EmergInc[HEALBOT_HUNTER] = HealBot_Config.EmergIncMelee[HEALBOT_HUNTER];
|
||||
HealBot_EmergInc[HEALBOT_MAGE] = HealBot_Config.EmergIncMelee[HEALBOT_MAGE];
|
||||
@@ -290,7 +319,7 @@ function HealBot_Options_EmergencyFilter_Reset()
|
||||
HealBot_EmergInc[HEALBOT_SHAMAN] = HealBot_Config.EmergIncMelee[HEALBOT_SHAMAN];
|
||||
HealBot_EmergInc[HEALBOT_WARLOCK] = HealBot_Config.EmergIncMelee[HEALBOT_WARLOCK];
|
||||
HealBot_EmergInc[HEALBOT_WARRIOR] = HealBot_Config.EmergIncMelee[HEALBOT_WARRIOR];
|
||||
elseif HealBot_Config.EmergIncMonitor==12 then
|
||||
elseif HealBot_Config.EmergIncMonitor==14 then
|
||||
HealBot_EmergInc[HEALBOT_DRUID] = HealBot_Config.EmergIncRange[HEALBOT_DRUID];
|
||||
HealBot_EmergInc[HEALBOT_HUNTER] = HealBot_Config.EmergIncRange[HEALBOT_HUNTER];
|
||||
HealBot_EmergInc[HEALBOT_MAGE] = HealBot_Config.EmergIncRange[HEALBOT_MAGE];
|
||||
@@ -300,7 +329,7 @@ function HealBot_Options_EmergencyFilter_Reset()
|
||||
HealBot_EmergInc[HEALBOT_SHAMAN] = HealBot_Config.EmergIncRange[HEALBOT_SHAMAN];
|
||||
HealBot_EmergInc[HEALBOT_WARLOCK] = HealBot_Config.EmergIncRange[HEALBOT_WARLOCK];
|
||||
HealBot_EmergInc[HEALBOT_WARRIOR] = HealBot_Config.EmergIncRange[HEALBOT_WARRIOR];
|
||||
elseif HealBot_Config.EmergIncMonitor==13 then
|
||||
elseif HealBot_Config.EmergIncMonitor==15 then
|
||||
HealBot_EmergInc[HEALBOT_DRUID] = HealBot_Config.EmergIncHealers[HEALBOT_DRUID];
|
||||
HealBot_EmergInc[HEALBOT_HUNTER] = HealBot_Config.EmergIncHealers[HEALBOT_HUNTER];
|
||||
HealBot_EmergInc[HEALBOT_MAGE] = HealBot_Config.EmergIncHealers[HEALBOT_MAGE];
|
||||
@@ -310,7 +339,7 @@ function HealBot_Options_EmergencyFilter_Reset()
|
||||
HealBot_EmergInc[HEALBOT_SHAMAN] = HealBot_Config.EmergIncHealers[HEALBOT_SHAMAN];
|
||||
HealBot_EmergInc[HEALBOT_WARLOCK] = HealBot_Config.EmergIncHealers[HEALBOT_WARLOCK];
|
||||
HealBot_EmergInc[HEALBOT_WARRIOR] = HealBot_Config.EmergIncHealers[HEALBOT_WARRIOR];
|
||||
elseif HealBot_Config.EmergIncMonitor==14 then
|
||||
elseif HealBot_Config.EmergIncMonitor==16 then
|
||||
HealBot_EmergInc[HEALBOT_DRUID] = HealBot_Config.EmergIncCustom[HEALBOT_DRUID];
|
||||
HealBot_EmergInc[HEALBOT_HUNTER] = HealBot_Config.EmergIncCustom[HEALBOT_HUNTER];
|
||||
HealBot_EmergInc[HEALBOT_MAGE] = HealBot_Config.EmergIncCustom[HEALBOT_MAGE];
|
||||
|
||||
@@ -183,6 +183,34 @@
|
||||
</Scripts>
|
||||
</Frame>
|
||||
|
||||
<Frame name="HealBot_Options_HealthText" inherits="UIDropDownMenuTemplate" id="1">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="155" y="-271" />
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Layers>
|
||||
<Layer level="OVERLAY">
|
||||
<FontString inherits="GameFontNormalSmall" text="Health Text">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="-110" y="-7"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
<Scripts>
|
||||
<OnLoad>
|
||||
HealBot_Options_HealthText_OnLoad(this)
|
||||
</OnLoad>
|
||||
</Scripts>
|
||||
</Frame>
|
||||
|
||||
<Frame name="HealBot_Options_EmergLFrame" inherits="OptionFrameBoxTemplate">
|
||||
<Scripts>
|
||||
<OnLoad>
|
||||
@@ -196,7 +224,7 @@
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="21" y="-275"/>
|
||||
<AbsDimension x="21" y="-308"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
<Anchor point="TOPRIGHT">
|
||||
|
||||
@@ -112,7 +112,7 @@ 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)
|
||||
HealBot_UIDropDownMenu_SetSelectedID(HealBot_Options_Skins,HealBot_Config.Skin_ID)
|
||||
end
|
||||
function HealBot_Options_Skins_OnLoad()
|
||||
UIDropDownMenu_Initialize(this, HealBot_Options_Skins_DropDown)
|
||||
|
||||
@@ -62,7 +62,7 @@ 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)
|
||||
HealBot_UIDropDownMenu_SetSelectedID(HealBot_Options_TooltipPos,HealBot_Config.TooltipPos)
|
||||
end
|
||||
|
||||
function HealBot_Options_TooltipPos_OnLoad()
|
||||
|
||||
+106
-11
@@ -132,16 +132,25 @@ function HealBot_Action_EnableButton(button)
|
||||
local pt = state.powerType
|
||||
|
||||
local showMana = false
|
||||
if HealBot_Config.ShowManaBars == 1 and state.maxMana > 0 and pt == 0 then
|
||||
if HealBot_Config.ManaBarsHealersOnly == 1 then
|
||||
if isHealer then showMana = true end
|
||||
else
|
||||
local pr, pg, pb = 0, 0, 1 -- Default Blue for Mana
|
||||
|
||||
if HealBot_Config.ShowManaBars == 1 and state.maxMana > 0 then
|
||||
if pt == 0 then
|
||||
if HealBot_Config.ManaBarsHealersOnly == 1 then
|
||||
if isHealer then showMana = true end
|
||||
else
|
||||
showMana = true
|
||||
end
|
||||
elseif HealBot_Config.ShowNonManaBars == 1 then
|
||||
showMana = true
|
||||
if pt == 1 then pr, pg, pb = 1, 0, 0 -- Rage (Red)
|
||||
elseif pt == 3 then pr, pg, pb = 1, 1, 0 -- Energy (Yellow)
|
||||
elseif pt == 2 then pr, pg, pb = 1, 0.5, 0 -- Focus (Orange)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if showMana then
|
||||
local pr, pg, pb = 0, 0, 1
|
||||
if bar3 then
|
||||
bar3:SetMinMaxValues(0, state.maxMana)
|
||||
bar3:SetValue(state.mana)
|
||||
@@ -193,10 +202,36 @@ function HealBot_Action_EnableButton(button)
|
||||
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) .. '...';
|
||||
local healthTextOpt = HealBot_Config.ShowHealthText or 0
|
||||
local displayText = name
|
||||
if healthTextOpt == 1 then
|
||||
local pct = 0
|
||||
if maxhlth > 0 then pct = math.floor((hlth / maxhlth) * 100) end
|
||||
displayText = name .. " - " .. pct .. "%"
|
||||
elseif healthTextOpt == 2 then
|
||||
displayText = name .. " - " .. hlth .. "/" .. maxhlth
|
||||
elseif healthTextOpt == 3 then
|
||||
local deficit = maxhlth - hlth
|
||||
if deficit > 0 then
|
||||
displayText = name .. " - -" .. deficit
|
||||
end
|
||||
end
|
||||
bar.txt:SetText(name);
|
||||
|
||||
if string.len(displayText) > textlen then
|
||||
if healthTextOpt > 0 then
|
||||
-- If we have numbers, just truncate the name part so the numbers still show.
|
||||
-- Find where " - " starts.
|
||||
local dashIndex = string.find(displayText, " %- ")
|
||||
if dashIndex then
|
||||
local numbersPart = string.sub(displayText, dashIndex)
|
||||
local namePart = string.sub(name, 1, math.max(1, textlen - string.len(numbersPart) - 3)) .. "..."
|
||||
displayText = namePart .. numbersPart
|
||||
end
|
||||
else
|
||||
displayText = string.sub(name, 1, textlen - 3) .. '...';
|
||||
end
|
||||
end
|
||||
bar.txt:SetText(displayText);
|
||||
bar.txt:SetTextColor(sr, sg, sb, sa);
|
||||
local fontName, fontHeight, fontFlags = bar.txt:GetFont()
|
||||
local fontOutline = HealBot_Config.bfontoutline[HealBot_Config.Current_Skin] or 0
|
||||
@@ -495,7 +530,7 @@ function HealBot_Action_PartyChanged()
|
||||
numBars = numBars + 1;
|
||||
numHeaders = numHeaders + 1;
|
||||
end
|
||||
if HealBot_Config.EmergIncMonitor == 1 then
|
||||
if HealBot_Config.EmergIncMonitor == 2 then
|
||||
if GetNumRaidMembers() > 0 then
|
||||
for j = 1, 40 do
|
||||
local PossibleEmerg = 1;
|
||||
@@ -543,6 +578,50 @@ function HealBot_Action_PartyChanged()
|
||||
end
|
||||
end
|
||||
end
|
||||
elseif HealBot_Config.EmergIncMonitor == 12 then
|
||||
if GetNumRaidMembers() > 0 then
|
||||
for j = 1, 40 do
|
||||
local unit = "raidpet" .. j;
|
||||
if not HealBot_Action_UnitButtons[unit] and HealBot_MayHeal(unit) then
|
||||
local ownerIndex = j;
|
||||
local name = UnitName(unit) or "Pet";
|
||||
local _, _, subgroup = GetRaidRosterInfo(ownerIndex);
|
||||
subgroup = subgroup or 1;
|
||||
|
||||
if HealBot_Config.ExtraOrder == 1 then
|
||||
order[unit] = name;
|
||||
elseif HealBot_Config.ExtraOrder == 2 then
|
||||
order[unit] = HEALBOT_OPTIONS_PETS;
|
||||
elseif HealBot_Config.ExtraOrder == 3 then
|
||||
order[unit] = subgroup;
|
||||
else
|
||||
order[unit] = 0 - UnitHealthMax(unit);
|
||||
if UnitHealthMax(unit) > TempMaxH then TempMaxH = UnitHealthMax(unit); end
|
||||
end
|
||||
table.insert(units, unit);
|
||||
numBars = numBars + 1;
|
||||
end
|
||||
end
|
||||
else
|
||||
local petUnits = { "pet", "partypet1", "partypet2", "partypet3", "partypet4" };
|
||||
for _, unit in ipairs(petUnits) do
|
||||
if not HealBot_Action_UnitButtons[unit] and HealBot_MayHeal(unit) then
|
||||
local name = UnitName(unit) or "Pet";
|
||||
if HealBot_Config.ExtraOrder == 1 then
|
||||
order[unit] = name;
|
||||
elseif HealBot_Config.ExtraOrder == 2 then
|
||||
order[unit] = HEALBOT_OPTIONS_PETS;
|
||||
elseif HealBot_Config.ExtraOrder == 3 then
|
||||
order[unit] = 1;
|
||||
else
|
||||
order[unit] = 0 - UnitHealthMax(unit);
|
||||
if UnitHealthMax(unit) > TempMaxH then TempMaxH = UnitHealthMax(unit); end
|
||||
end
|
||||
table.insert(units, unit);
|
||||
numBars = numBars + 1;
|
||||
end
|
||||
end
|
||||
end
|
||||
else
|
||||
if GetNumRaidMembers() > 0 then
|
||||
for j = 1, 40 do
|
||||
@@ -606,10 +685,26 @@ function HealBot_Action_PartyChanged()
|
||||
local TempSort = "init"
|
||||
TempMaxH = math.ceil(TempMaxH / 1000) * 1000;
|
||||
|
||||
if GetNumRaidMembers() > 0 then
|
||||
if GetNumRaidMembers() > 0 or HealBot_Config.EmergIncMonitor == 12 then
|
||||
for j = 1, 40 do
|
||||
if not units[j] then break end
|
||||
local name, rank, subgroup, level, class, fileName, zone, online, isDead = GetRaidRosterInfo(string.sub(units[j], 5));
|
||||
local name, rank, subgroup, level, class, fileName, zone, online, isDead;
|
||||
local ownerIndex = nil;
|
||||
if string.sub(units[j], 1, 7) == "raidpet" then
|
||||
ownerIndex = tonumber(string.sub(units[j], 8));
|
||||
elseif string.sub(units[j], 1, 4) == "raid" then
|
||||
ownerIndex = tonumber(string.sub(units[j], 5));
|
||||
end
|
||||
if ownerIndex then
|
||||
name, rank, subgroup, level, class, fileName, zone, online, isDead = GetRaidRosterInfo(ownerIndex);
|
||||
end
|
||||
|
||||
if string.sub(units[j], 1, 7) == "raidpet" or string.sub(units[j], 1, 8) == "partypet" or units[j] == "pet" then
|
||||
name = UnitName(units[j]) or "Pet";
|
||||
class = HEALBOT_OPTIONS_PETS;
|
||||
subgroup = subgroup or 1;
|
||||
end
|
||||
|
||||
if HealBot_Config.ShowHeader[HealBot_Config.Current_Skin] == 1 and HealBot_Config.ExtraOrder == 2 and TempSort ~= class then
|
||||
TempSort = class
|
||||
HeaderPos[i + 1] = class
|
||||
|
||||
@@ -26,36 +26,45 @@ Default installation path: `C:\Program Files\World of Warcraft\Interface\AddOns\
|
||||
* **Mana Bars for Healers:** Enable and position mini-mana status bars next to unit frames, toggleable to display for healer classes only or all classes.
|
||||
* **Equipment Bonus Integration:** Automatically scans equipped gear (for classes capable of healing) to dynamically scale healing predictions.
|
||||
* **Curse & Debuff Warning (CDC):** Dynamic visual and audio alerts for cleanable debuffs. Customizable colors based on debuff type (Curse, Poison, Disease, Magic).
|
||||
* **Pet & Familiar Frames:** Dedicated, toggleable frames for tracking and healing player pets.
|
||||
* **Customizable Health Text:** Dynamic unit health display (Name Only, Percentage, Real Health, or Health Deficit).
|
||||
* **Non-Mana Resource Tracking:** Track Rage, Energy, and Focus for non-mana classes.
|
||||
* **Highly Customizable Skins:** Fully configure dimensions (width, height), row spacing, column layouts, custom textures, opacity, class-colored frames, and outline of fonts.
|
||||
|
||||
### Known issues
|
||||
|
||||
* **New spell rank bug** you may experience lua error spaming your chat frame after learning new healing spells. /reload will clear the issue. To be fixed next release
|
||||
|
||||
|
||||
### Change Log
|
||||
**v1.4.1**
|
||||
* **Talent-based Healing Calculations:** Implemented dynamic spell healing calculations for Druid, Priest, and Paladin classes based on talents.
|
||||
* **Modifier Key Polling:** Replaced MODIFIER_STATE_CHANGED event with polling in HealBot_OnUpdate to track modifier keys reliably.
|
||||
* **Incoming Heals Fix:** Fixed a bug where incoming heals failed to broadcast or show on the UI due to synchronous GCD fails and `CheckInteractDistance` limitations in the 1.12 API.
|
||||
* **Hovercast Incoming Heals:** Added full support for processing and displaying incoming heals when using action bar hovercasting.
|
||||
* **Zero-latency Self-Heals:** Incoming heals for the local player now process instantly with zero latency and no network reliance, ensuring they function even when playing solo.
|
||||
|
||||
**v1.3**
|
||||
* **General Options Layout & Renaming:** Relabeled "Healing panel options" to "Mana bar options:", moved the "For Healers Only" checkbox side-by-side with "Show Mana Bars", and renamed "Enable mouse over action bar" to "Hovercasting".
|
||||
* **OnShow Empty Panel Bug Fix:** Solved the rendering issue where the options panel would load empty initially until another tab was clicked.
|
||||
* **Backdrop Alpha Reset Bug Fix:** Resolved a WoW API client quirk where showing the HealBot frame would reset the background color and alpha channel back to default white/transparent by calling `SetBackdropColor` after `SetBackdrop`.
|
||||
* **Default Party Frame Toggle:** Added a "Hide Default Party Frames" toggle option (fully localized in English, German, French, and Korean) to hide Blizzard's default party frames. Integrated immediate toggling on joining/leaving groups.
|
||||
* **Safety Guards & Crash Prevention:** Added safety guards to `HidePartyFrame` and `ShowPartyFrame` calls to prevent nil-value crashes when solo.
|
||||
* **Checkbox State Initialization Fixes:** Fixed options menu bugs where "Hide when Solo", "Show Mana Bars", and "For Healers Only" checkboxes failed to reflect their saved configuration value when opening the menu.
|
||||
* **CurrentPanel Nil Comparison Fix:** Fixed a startup Lua comparison crash by initializing `HealBot_Options_CurrentPanel` at the top of the main options file.
|
||||
* **Monolithic Code Modularization (Options):** Split the massive, single-file options system (`HealBot_Options.xml`/`HealBot_Options.lua`) into 7 dedicated, content-named panel subfiles (`General`, `Spells`, `Healing`, `CDC`, `Skins`, `Buffs`, and `Chat`) to improve codebase modularity and stability.
|
||||
* **Core Code Decoupling (MVC & Observer Pattern):** Modularized `HealBot.lua` and `HealBot_Action.lua` by decoupling them into dedicated service files: `Range`, `Comms`, `Aura`, `Spells`, `Events` controllers, and `Layout`, `Tooltip` views.
|
||||
* **Scope Resolution Fix:** Promoted `HealBot_Options_ComboButtons_Button` to global scope in the base options file to resolve a `nil` comparison error when loading spell settings.
|
||||
* **Global Scoping & Variable Promotion:** Promoted `CalcEquipBonus`, `HealBot_EquipChangeTimer`, `HealValue`, `InitSpells`, and `Delay_RecalcParty` to global scope in `HealBot.lua` to ensure cross-module visibility.
|
||||
* **CTRA Resurrection Cancel Bug Fix:** Fixed a nil table indexing crash in the CTRA `RESNO` message handler in `HealBot_Controller_Comms.lua`.
|
||||
* **Core Options Layout Correction:** Relocated the "Defaults" and "Close" buttons back into the parent options frame's container, ensuring they display consistently at the bottom of all configuration tabs.
|
||||
* **UI Layout & Skins Alignment:** Reorganized all 13 opacity sliders on the Skins panel into a clean, uniform 2-column grid with explicit width/height sizes (`123 x 17`) to resolve layout overlaps. Realigned Chat tab buttons to stay within window bounds and corrected Color Picker anchors.
|
||||
* **Startup Refresh Optimization:** Resolved initial loading lag where action bars would be missing by forcing an immediate UI refresh (`HealBot_RecalcSpells()`) once spell data loads.
|
||||
* **Menu Cleanup:** Fixed Options panel checkboxes overlapping due to incorrect vertical spacing offsets.
|
||||
* **Target Restoration Fix:** Fixed spell interruptions and "You don't have a target" errors when healing by implementing a 0.1-second delayed target restoration using `TargetLastEnemy` and `TargetLastTarget`.
|
||||
* **Buff Watch Initialization & Options Fix:** Fixed a bug where buff watch failed to display missing buffs on login/UI reload when the player had no active buffs. Enabled immediate buff/aura rescanning when modifying options in the Buff watch configuration tab.
|
||||
**v1.4**
|
||||
* **Extra Frame support for pets and familiars added:** Togglable from healing tab - Extra frames option selected & pets selected from dropdown.
|
||||
* **Customizable Health Text:** Added a new dropdown in the Healing Options tab that allows users to choose how health text is displayed on unit frames (`Name Only`, `Health Percentage`, `Real Health`, or `Health Deficit`). Includes a smart truncation algorithm to preserve critical health numbers even if the unit name is too long.
|
||||
* **Non-Mana Resource Tracking:** Added a new toggle in the General Options tab to track secondary resources (Energy, Rage, Focus) for non-mana classes. Bars are dynamically color-coded based on the resource type.
|
||||
* **Dropdown UI Initialization Fix:** Resolved a Vanilla API bug where dropdown menus sharing an ID (like the new Health Text dropdown) would temporarily inherit text from previously loaded dropdowns (e.g., "Modern Flat").
|
||||
* **Dynamic Modifier Tooltips:** Fixed a bug where the spell tooltip would not dynamically update its spells when pressing modifier keys (Shift/Ctrl/Alt) while hovering over a unit frame. Registered the `MODIFIER_STATE_CHANGED` event to instantly refresh the tooltip.
|
||||
* **Global Variable Namespace Refactoring:** Executed a codebase-wide refactoring to encapsulate all floating global variables inside the `HealBot_` or `HEALBOT_` namespace. This prevents HealBot from silently shadowing other addons or the native WoW API, ensuring strict adherence to Vanilla Lua best practices. (Also resolved a namespace collision with `InitSpells`).
|
||||
* **Chat Announcements & Mouseover Casts:** Chat announcements are now correctly fired when using native Hovercasting (Mouseover). Additionally, added safety checks to prevent spamming chat announcements when accidentally clicking on a dead player (unless casting a resurrection spell).
|
||||
* **New Priest Buff (Enlighten):** Added the custom "Enlighten" buff to Priest trackable buffs, complete with the `btnholyscriptures` icon on unit frames.
|
||||
|
||||
**v1.2.2**
|
||||
* **White background fix** Fixed issue where white background would persist while alpha channel got changes.
|
||||
* **Alpha slider** Fixed bug where alpha slider wouldn't apply changes instantly.
|
||||
|
||||
**v1.2.1**
|
||||
* **Initialization bug** Fixed issue where Action module would get stuck on infinite loop causing stack overflow.
|
||||
**1.3.3**
|
||||
* **Chat Panel Refactor:** Completely replaced the spell selection dropdowns in the Chat tab with manual text input boxes, allowing users to type exact spell names (with or without ranks) directly, matching the behavior of the key-bindings configuration. Fixed a string matching bug caused by Vanilla WoW's hidden trailing spaces when comparing spell names, ensuring that both rankless (e.g. `Flash Heal`) and ranked inputs trigger correctly.
|
||||
* **Chat Layout Stack:** Restructured the Chat Options XML layout to correctly stack the inputs into neat rows, preventing horizontal overlap and providing more space for typing long announce messages.
|
||||
* **UI Persistence Bug Fixes:** Fixed a Vanilla WoW API quirk where unchecking the "Show Headers" or "Self Only" (Buffs) checkboxes caused the UI to either visually re-check itself or overwrite the setting with defaults upon a `/reload`.
|
||||
|
||||
**1.3.2**
|
||||
* **UIDropDownMenu Fixes:** Resolved native client crash (`UIDROPDOWNMENU_OPEN_MENU` nil concatenation) when setting values on closed dropdowns.
|
||||
|
||||
**1.3.1**
|
||||
* **Hotfix: missing helper function restored** Fixed issue with lua error for druids.
|
||||
|
||||
**v1.3**
|
||||
* **General Options Layout & Renaming:** Relabeled "Healing panel options" to "Mana bar options:", moved the "For Healers Only" checkbox side-by-side with "Show Mana Bars", and renamed "Enable mouse over action bar" to "Hovercasting".
|
||||
|
||||
Reference in New Issue
Block a user