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