You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
181 lines
5.1 KiB
181 lines
5.1 KiB
|
|
-- module independent variables --
|
|
----------------------------------
|
|
local addon, ns = ...
|
|
local C, L, I = ns.LC.color, ns.L, ns.I
|
|
if ns.client_version<4 then return end
|
|
|
|
|
|
-- module own local variables and local cached functions --
|
|
-----------------------------------------------------------
|
|
local name = "Surprise" -- L["Surprise"] L["ModDesc-Surprise"]
|
|
local ttName,ttColumns,tt,module = name.."TT",3,nil
|
|
local ITEM_DURATION,ITEM_COOLDOWN,ITEM_LOOTABLE=1,2,3
|
|
local founds,items = {};
|
|
|
|
|
|
-- register icon names and default files --
|
|
-------------------------------------------
|
|
I[name] = {iconfile="Interface\\Icons\\INV_misc_gift_01",coords={0.05,0.95,0.05,0.95}}; --IconName::Surprise--
|
|
|
|
|
|
-- some local functions --
|
|
--------------------------
|
|
local function updateBroker()
|
|
local obj = ns.LDB:GetDataObjectByName(module.ldbName);
|
|
local sum,finished = #founds,0;
|
|
for i=1, sum do
|
|
if items[founds[i].id] and items[founds[i].id][1]==ITEM_LOOTABLE then
|
|
finished = finished+1;
|
|
end
|
|
end
|
|
if sum>0 then
|
|
obj.text = C(finished==0 and "gray" or "green",finished) .. "/" .. sum;
|
|
else
|
|
obj.text = C("gray",0).."/0";
|
|
end
|
|
end
|
|
|
|
local function ScanTT_Callback(data)
|
|
tinsert(founds,data);
|
|
updateBroker();
|
|
end
|
|
|
|
local function bagCheck()
|
|
wipe(founds);
|
|
for sharedSlot,item in pairs(ns.items.bySlot) do
|
|
if item.bag>=0 and items[item.id] then
|
|
local t = CopyTable(item);
|
|
t.type = "bag";
|
|
t.callback = ScanTT_Callback;
|
|
ns.ScanTT.query(t);
|
|
end
|
|
end
|
|
end
|
|
|
|
local function createTooltip(tt)
|
|
if not (tt and tt.key and tt.key==ttName) then return end -- don't override other LibQTip tooltips...
|
|
|
|
if tt.lines~=nil then tt:Clear(); end
|
|
tt:AddHeader(C("dkyellow",L[name]))
|
|
tt:AddSeparator(4,0,0,0,0)
|
|
|
|
if #founds>0 then
|
|
tt:AddLine(C("ltblue",ITEMS));
|
|
tt:AddSeparator();
|
|
for _,item in ipairs(founds) do
|
|
tt:AddLine(
|
|
("|T%s:12:12:0:-1:64:64:4:56:4:56|t |C%s%s|r"):format(item.itemTexture,C("quality"..item.itemRarity),item.itemName),
|
|
C("dkyellow","||"),
|
|
(type(items[item.id][2])=="function" and items[item.id][2]())
|
|
or (items[item.id][2]=="tooltip" and item.lines[items[item.id][3]])
|
|
or (items[item.id][2]=="duration" and tonumber(item.duraction) and SecondsToTime(item.duraction))
|
|
or (items[item.id][1]==ITEM_LOOTABLE and C("green",L["(finished)"]))
|
|
or "("..UNKNOWN..")"
|
|
);
|
|
end
|
|
else
|
|
tt:AddLine(L["No item found."]);
|
|
end
|
|
|
|
ns.roundupTooltip(tt);
|
|
end
|
|
|
|
|
|
-- module variables for registration --
|
|
---------------------------------------
|
|
module = {
|
|
events = {},
|
|
config_defaults = {
|
|
enabled = false,
|
|
},
|
|
}
|
|
|
|
-- function module.options() return {} end
|
|
|
|
function module.init()
|
|
-- see https://wow.curseforge.com/projects/broker-everything/pages/modules/surprise
|
|
items = {
|
|
-- 1. Unhatched Jubling Egg >> A Jubling's Tiny Home
|
|
[19462] = {ITEM_COOLDOWN, "duration"},
|
|
[19450] = {ITEM_LOOTABLE},
|
|
|
|
-- 2. Mysterious Egg >> Cracked Egg
|
|
[39878] = {ITEM_DURATION, "tooltip", 4},
|
|
[39883] = {ITEM_LOOTABLE},
|
|
|
|
-- 3. Disgusting Jar >> Ripe Disgusting Jar
|
|
[44717] = {ITEM_DURATION, "tooltip", 4},
|
|
[44718] = {ITEM_LOOTABLE},
|
|
|
|
-- 4. Hyldnir Spoils (from daily quest)
|
|
[44751] = {ITEM_LOOTABLE},
|
|
|
|
-- 5. Primal Egg >> Cracked Primal Egg
|
|
[94295] = {ITEM_DURATION, "tooltip", 4},
|
|
[94296] = {ITEM_LOOTABLE},
|
|
|
|
-- 6. Warm Goren Egg >> Cracked Goren Egg
|
|
[118705] = {ITEM_DURATION, "tooltip", 4},
|
|
[118706] = {ITEM_LOOTABLE},
|
|
|
|
-- 7. Strange Green Fruit >> Ripened Strange Fruit
|
|
[127396] = {ITEM_DURATION, "tooltip", 4},
|
|
[127395] = {ITEM_LOOTABLE},
|
|
|
|
-- 8. Pulsating Sac >> Growling Sac
|
|
[137599] = {ITEM_DURATION, "tooltip", 5},
|
|
[137608] = {ITEM_LOOTABLE},
|
|
|
|
-- 9. Time-Lost Wallet (from quest)
|
|
[151482] = {ITEM_LOOTABLE},
|
|
|
|
-- 10. Fel-Spotted Egg >> Cracked Fel-Spotted Egg
|
|
[153190] = {ITEM_DURATION, "tooltip", 3},
|
|
[153191] = {ITEM_LOOTABLE},
|
|
|
|
-- 11. Viable Cobra Egg >> Cracking Cobra Egg
|
|
[160832] = {ITEM_DURATION, "tooltip", 3},
|
|
[160831] = {ITEM_LOOTABLE},
|
|
|
|
-- 12. Nightwreathed Egg >> Nightwreathed Watcher
|
|
[166525] = {ITEM_DURATION, "tooltip", 3},
|
|
[166528] = {ITEM_LOOTABLE},
|
|
|
|
-- 13. hairy egg >> Bloodlouse Larva
|
|
[182607] = {ITEM_DURATION, "tooltip", 4},
|
|
[182606] = {ITEM_LOOTABLE},
|
|
|
|
-- 14. Blight-Touched Egg >> Chewed Reins of the Callow Flayedwing
|
|
[184104] = {ITEM_DURATION, "tooltip", 3},
|
|
[181818] = {ITEM_LOOTABLE},
|
|
|
|
--
|
|
}
|
|
ns.items.RegisterCallback(name,bagCheck,"bags");
|
|
end
|
|
|
|
function module.onevent(self,event,...)
|
|
if event=="BE_UPDATE_CFG" then
|
|
updateBroker();
|
|
end
|
|
end
|
|
|
|
-- function module.optionspanel(panel) end
|
|
-- function module.onmousewheel(self,direction) end
|
|
-- function module.ontooltip(tt) end
|
|
|
|
function module.onenter(self)
|
|
if (ns.tooltipChkOnShowModifier(false)) then return; end
|
|
tt = ns.acquireTooltip({ttName, ttColumns, "LEFT", "RIGHT", "RIGHT"},{true},{self})
|
|
createTooltip(tt);
|
|
end
|
|
|
|
-- function module.onleave(self) end
|
|
-- function module.onclick(self,button) end
|
|
-- function module.ondblclick(self,button) end
|
|
|
|
|
|
-- final module registration --
|
|
-------------------------------
|
|
ns.modules[name] = module;
|
|
|