mirror of
https://github.com/Bluewhale1337/HealBotBlue.git
synced 2026-07-27 09:44:44 +00:00
Add files via upload
First commit. Version 1.0, stable release
This commit is contained in:
@@ -0,0 +1,228 @@
|
||||
--------------------------------------------------
|
||||
-- This is a cut version on BonusScanner
|
||||
-- Healbot only cares about heals and although BonusScanner is a great addon, it lags when everts are fired.
|
||||
--
|
||||
-- Original BonusScanner here:
|
||||
-- http://www.curse-gaming.com/mod.php?addid=2384
|
||||
--------------------------------------------------
|
||||
|
||||
HB_BONUSSCANNER_PATTERN_SETNAME = "^(.*) %(%d/%d%)$";
|
||||
HB_BONUSSCANNER_PATTERN_GENERIC_PREFIX = "^%+(%d+)%%?(.*)$";
|
||||
HB_BONUSSCANNER_PATTERN_GENERIC_SUFFIX = "^(.*)%+(%d+)%%?$";
|
||||
|
||||
HealBot_BonusScanner = {
|
||||
bonuses = 0;
|
||||
IsUpdating = false;
|
||||
ShowDebug = false; -- tells when the equipment is scanned
|
||||
active = nil;
|
||||
temp = {
|
||||
sets = {},
|
||||
set = "",
|
||||
slot = "",
|
||||
bonuses = 0,
|
||||
details = {}
|
||||
};
|
||||
|
||||
types = {
|
||||
"HEAL", -- healing
|
||||
};
|
||||
|
||||
slots = {
|
||||
"Head",
|
||||
"Neck",
|
||||
"Shoulder",
|
||||
"Shirt",
|
||||
"Chest",
|
||||
"Waist",
|
||||
"Legs",
|
||||
"Feet",
|
||||
"Wrist",
|
||||
"Hands",
|
||||
"Finger0",
|
||||
"Finger1",
|
||||
"Trinket0",
|
||||
"Trinket1",
|
||||
"Back",
|
||||
"MainHand",
|
||||
"SecondaryHand",
|
||||
"Ranged",
|
||||
"Tabard",
|
||||
};
|
||||
}
|
||||
|
||||
function HealBot_BonusScanner:GetBonus()
|
||||
if(HealBot_BonusScanner.bonuses) then
|
||||
return HealBot_BonusScanner.bonuses;
|
||||
end;
|
||||
return 0;
|
||||
end
|
||||
|
||||
|
||||
function HealBot_BonusScanner_Update()
|
||||
|
||||
if (HealBot_BonusScanner.IsUpdating) then
|
||||
return;
|
||||
else
|
||||
HealBot_BonusScanner.IsUpdating = true;
|
||||
HealBot_BonusScanner:ScanEquipment();
|
||||
end
|
||||
HealBot_BonusScanner.IsUpdating = false;
|
||||
end
|
||||
|
||||
function HealBot_BonusScanner:ScanEquipment()
|
||||
local slotid, slotname, hasItem, i;
|
||||
|
||||
HealBot_BonusTooltip:SetOwner(HealBot_BonusTooltip, "ANCHOR_NONE");
|
||||
HealBot_BonusScanner.temp.bonuses = 0;
|
||||
HealBot_BonusScanner.temp.sets = {};
|
||||
HealBot_BonusScanner.temp.set = "";
|
||||
for i, slotname in HealBot_BonusScanner.slots do
|
||||
slotid, _ = GetInventorySlotInfo(slotname.. "Slot");
|
||||
hasItem = HealBot_BonusTooltip:SetInventoryItem("player", slotid);
|
||||
if ( hasItem ) then
|
||||
HealBot_BonusScanner.temp.slot = slotname;
|
||||
HealBot_BonusScanner:ScanTooltip();
|
||||
if(HealBot_BonusScanner.temp.set ~= "") then
|
||||
HealBot_BonusScanner.temp.sets[HealBot_BonusScanner.temp.set] = 1;
|
||||
end;
|
||||
end
|
||||
end
|
||||
HealBot_BonusScanner.bonuses = HealBot_BonusScanner.temp.bonuses;
|
||||
end
|
||||
|
||||
function HealBot_BonusScanner:ScanTooltip()
|
||||
local tmpTxt, line;
|
||||
local lines = HealBot_BonusTooltip:NumLines();
|
||||
for i=2, lines, 1 do
|
||||
tmpText = getglobal("HealBot_BonusTooltipTextLeft"..i);
|
||||
val = nil;
|
||||
if (tmpText:GetText()) then
|
||||
line = tmpText:GetText();
|
||||
HealBot_BonusScanner:ScanLine(line);
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function HealBot_BonusScanner:AddValue(effect, value)
|
||||
local i,e;
|
||||
if(type(effect) == "string") then
|
||||
if effect=="HEAL" then
|
||||
if(HealBot_BonusScanner.temp.bonuses) then
|
||||
HealBot_BonusScanner.temp.bonuses = HealBot_BonusScanner.temp.bonuses + value;
|
||||
else
|
||||
HealBot_BonusScanner.temp.bonuses = value;
|
||||
end
|
||||
end
|
||||
else
|
||||
if(type(value) == "table") then
|
||||
for i,e in effect do
|
||||
HealBot_BonusScanner:AddValue(e, value[i]);
|
||||
end
|
||||
else
|
||||
for i,e in effect do
|
||||
HealBot_BonusScanner:AddValue(e, value);
|
||||
end
|
||||
end
|
||||
end
|
||||
end;
|
||||
|
||||
function HealBot_BonusScanner:ScanLine(line)
|
||||
local tmpStr, found;
|
||||
if(string.sub(line,0,string.len(HB_BONUSSCANNER_PREFIX_EQUIP)) == HB_BONUSSCANNER_PREFIX_EQUIP) then
|
||||
tmpStr = string.sub(line,string.len(HB_BONUSSCANNER_PREFIX_EQUIP)+1);
|
||||
HealBot_BonusScanner:CheckPassive(tmpStr);
|
||||
elseif(string.sub(line,0,string.len(HB_BONUSSCANNER_PREFIX_SET)) == HB_BONUSSCANNER_PREFIX_SET
|
||||
and HealBot_BonusScanner.temp.set ~= ""
|
||||
and not HealBot_BonusScanner.temp.sets[HealBot_BonusScanner.temp.set]) then
|
||||
tmpStr = string.sub(line,string.len(HB_BONUSSCANNER_PREFIX_SET)+1);
|
||||
HealBot_BonusScanner.temp.slot = "Set";
|
||||
HealBot_BonusScanner:CheckPassive(tmpStr);
|
||||
else
|
||||
_, _, tmpStr = string.find(line, HB_BONUSSCANNER_PATTERN_SETNAME);
|
||||
if(tmpStr) then
|
||||
HealBot_BonusScanner.temp.set = tmpStr;
|
||||
else
|
||||
found = HealBot_BonusScanner:CheckGeneric(line);
|
||||
if(not found) then
|
||||
HealBot_BonusScanner:CheckOther(line);
|
||||
end;
|
||||
end
|
||||
end
|
||||
end;
|
||||
|
||||
function HealBot_BonusScanner:CheckPassive(line)
|
||||
local i, p, value, found;
|
||||
|
||||
found = nil;
|
||||
for i,p in HB_BONUSSCANNER_PATTERNS_PASSIVE do
|
||||
_, _, value = string.find(line, "^" .. p.pattern);
|
||||
if(value) then
|
||||
HealBot_BonusScanner:AddValue(p.effect, value)
|
||||
found = 1;
|
||||
end
|
||||
end
|
||||
if(not found) then
|
||||
HealBot_BonusScanner:CheckGeneric(line);
|
||||
end
|
||||
end
|
||||
|
||||
function HealBot_BonusScanner:CheckGeneric(line)
|
||||
local value, token, pos, tmpStr, found;
|
||||
found = false;
|
||||
while(string.len(line) > 0) do
|
||||
pos = string.find(line, "/", 1, true);
|
||||
if(pos) then
|
||||
tmpStr = string.sub(line,1,pos-1);
|
||||
line = string.sub(line,pos+1);
|
||||
else
|
||||
tmpStr = line;
|
||||
line = "";
|
||||
end
|
||||
|
||||
tmpStr = string.gsub( tmpStr, "^%s+", "" );
|
||||
tmpStr = string.gsub( tmpStr, "%s+$", "" );
|
||||
tmpStr = string.gsub( tmpStr, "%.$", "" );
|
||||
|
||||
_, _, value, token = string.find(tmpStr, HB_BONUSSCANNER_PATTERN_GENERIC_PREFIX);
|
||||
if(not value) then
|
||||
_, _, token, value = string.find(tmpStr, HB_BONUSSCANNER_PATTERN_GENERIC_SUFFIX);
|
||||
end
|
||||
if(token and value) then
|
||||
token = string.gsub( token, "^%s+", "" );
|
||||
token = string.gsub( token, "%s+$", "" );
|
||||
token = string.gsub( token, "%.$", "" );
|
||||
if(HealBot_BonusScanner:CheckToken(token,value)) then
|
||||
found = true;
|
||||
end
|
||||
end
|
||||
end
|
||||
return found;
|
||||
end
|
||||
|
||||
function HealBot_BonusScanner:CheckToken(token, value)
|
||||
local i, p, s1, s2;
|
||||
|
||||
if(HB_BONUSSCANNER_PATTERNS_GENERIC_LOOKUP[token]) then
|
||||
HealBot_BonusScanner:AddValue(HB_BONUSSCANNER_PATTERNS_GENERIC_LOOKUP[token], value);
|
||||
return true;
|
||||
end
|
||||
return false;
|
||||
end
|
||||
|
||||
function HealBot_BonusScanner:CheckOther(line)
|
||||
local i, p, value, start, found;
|
||||
|
||||
for i,p in HB_BONUSSCANNER_PATTERNS_OTHER do
|
||||
start, _, value = string.find(line, "^" .. p.pattern);
|
||||
if(start) then
|
||||
if(p.value) then
|
||||
HealBot_BonusScanner:AddValue(p.effect, p.value)
|
||||
elseif(value) then
|
||||
HealBot_BonusScanner:AddValue(p.effect, value)
|
||||
end
|
||||
return true;
|
||||
end
|
||||
end
|
||||
return false;
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user