1 QuestHelper_File
["objtips.lua"] = "Development Version"
3 local real_GameTooltipOnShow
= GameTooltip
:GetScript("OnShow") or QuestHelper
.nop
5 local function addObjectiveObjTip(tooltip
, objective
, depth
, already_touched
)
6 if depth
> 10 then return end -- fuck that, man. Just fuck that.
7 already_touched
[objective
] = true -- YOU CANNOT EAT A PURSE
9 if objective
.watched
or objective
.progress
then
12 if objective
.quest
then
13 tooltip
:AddLine((" "):rep(depth2
)..QHFormat("TOOLTIP_QUEST", string.match(objective
.quest
.obj
or "", "^%d*/%d*/(.*)$") or "???"), 1, 1, 1)
18 if objective
.progress
then
19 QuestHelper
:AppendObjectiveProgressToTooltip(objective
, tooltip
, nil, depth2
)
21 tooltip
:AddLine((" "):rep(depth2
)..QHText("TOOLTIP_WATCHED"), unpack(QuestHelper
:GetColourTheme().tooltip
))
24 -- Calling Show again to cause the tooltip's dimensions to be recalculated.
25 -- Since the frame should already be shown, the OnShow event shouldn't be called again.
29 if objective
.used
then
30 for obj
, text
in pairs(objective
.used
) do
31 if not already_touched
[obj
] then -- no infinite loops please
32 tooltip
:AddLine((" "):rep(depth
)..QHFormat(text
, obj
.obj
), 1, 1, 1)
33 addObjectiveObjTip(tooltip
, obj
, depth
+1, already_touched
)
38 already_touched
[objective
] = nil -- oh why not. just so I can get a screenshot of some poor sap getting a 2^n case
41 local function addObjectiveTip(tooltip
, cat
, obj
)
42 local list
= QuestHelper
.objective_objects
[cat
]
44 local objective
= list
[obj
]
46 addObjectiveObjTip(tooltip
, objective
, 0, {})
51 GameTooltip
:SetScript("OnShow", function(self
, ...)
53 -- Some other AddOns hook this function, but don't bother to pass the values they were called with.
57 if QuestHelper_Pref
.tooltip
then
58 -- Apparantly, sometimes InventoryOnPar invokes our tooltip function with something that doesn't have GetItem method.
59 local monster
, item
= self
.GetUnit
and self
:GetUnit(), self
.GetItem
and self
:GetItem()
62 addObjectiveTip(self
, "monster", monster
)
66 addObjectiveTip(self
, "item", item
)
70 return real_GameTooltipOnShow(self
, ...)