A patched copy of TipTac Reborn by Frozn45, the tooltip enhancement addon. It lets you move, restyle, rescale and extend every tooltip in the game.
This fork tracks upstream and adds fixes for Midnight's secret values and taint, plus support for WoW Forever. It isn't a separate project. Upstream does the feature work, and this fork keeps it working on the current clients until those fixes land upstream.
Current version: 26.09.03 (upstream) + local fixes.
| Client | Version | ## Interface |
TOC used |
|---|---|---|---|
| Retail (Midnight) | 12.1.0, 12.1.5 | 120100, 120105 |
<Addon>.toc |
| WoW Forever | 1.60.1 | 16001 |
<Addon>.toc |
| Mists of Pandaria Classic | 5.5.4 | 50504 |
<Addon>_Mists.toc |
| Burning Crusade Anniversary | 2.5.6 | 20506 |
<Addon>_TBC.toc |
| Classic Era | 1.15.9 | 11509 |
<Addon>_Vanilla.toc |
WoW Forever (game type camelot, WOW_PROJECT_ID 18) runs on the Midnight client and loads the mainline UI. So it uses the same base TOC and the same code paths as retail. See WoW Forever notes.
The addon is four folders, and all four go in Interface\AddOns:
TipTac: core tooltip handling, anchoring, bars, aurasTipTacItemRef: item, spell, currency and other reference tooltipsTipTacTalents: spec, talents and average item level on player tooltipsTipTacOptions: the options window (/tip), loaded on demand
AddOns folder per client:
World of Warcraft\_retail_\Interface\AddOns
World of Warcraft\_forever_\Interface\AddOns
World of Warcraft\_classic_\Interface\AddOns (MoP Classic)
World of Warcraft\_anniversary_\Interface\AddOns (TBC Anniversary)
World of Warcraft\_classic_era_\Interface\AddOns
Copy the folders from this repo, leaving out .git:
robocopy <repo>\TipTac "<WoW>\_retail_\Interface\AddOns\TipTac" /E /XD .gitDo the same for TipTacItemRef, TipTacTalents and TipTacOptions.
Don't update through CurseForge or WowUp. They install the upstream release over these folders and silently remove the local fixes.
These fixes are on top of upstream v26.09.03. Most of them guard calls that started throwing under Midnight's secret values when TipTac's execution is tainted. Upstream checks whether a value is secret. That misses the case where the value is fine but the execution context is tainted, so these fixes wrap the call in pcall and skip the line on failure.
| Fix | File(s) | Symptom it prevents |
|---|---|---|
Guard GetAuraDataByAuraInstanceID in the aura-instance hook against a secret auraInstanceID |
TipTacItemRef/ttItemRef.lua |
"Auras cannot be accessed when secret" on mouseover of nameplate auras in combat |
Wrap the same call in pcall for tainted execution |
TipTacItemRef/ttItemRef.lua |
The same error from Blizzard_CooldownViewer tooltips on the player's own auras |
Wrap C_UnitAuras.GetAuraApplicationDisplayCount in pcall; hide the stack count on failure |
TipTac/modules/ttAuras.lua |
"bad argument #1" from the mouseover aura display (12.1.0) |
Guard petOrBattlePetOrNPCTitle comparisons with IsSecretValue and then pcall |
TipTac/modules/ttStyle.lua |
"attempt to compare … a secret string value" on pets and vehicles in raids, hundreds of times per session |
Bail out of GetTalents on a secret or invalid unit id |
*/libs/LibFroznFunctions-1.0/LibFroznFunctions-1.0.lua (all 4 copies) |
"Secret values are only allowed during untainted execution" from UnitIsUnit |
Use C_Item.GetItemInfo for the macro item lookup |
TipTacItemRef/ttItemRef.lua |
Calls to the deprecated global GetItemInfo |
Add 12.1.5 (120105) to the base TOCs |
*/<Addon>.toc |
"Out of date" on 12.1.5 |
Hook pet-battle / journal tooltip functions only if the global exists (hookGlobalFuncIfExists, marked Local fix) |
TipTacItemRef/ttItemRef.lua |
"hooksecurefunc(): FloatingPetBattleAbility_Show is not a function" on Forever, where FloatingPetBattleTooltip.lua doesn't load |
WoW Forever support: 16001 in the base TOCs, Forever detection in LibFroznFunctions (library minor bumped to 68) |
*/<Addon>.toc, all 4 LibFroznFunctions copies |
"Out of date" on Forever; Forever being classified by expansion level |
Run git log upstream/main..main for the full reasoning behind each fix. Each commit message records the error it fixes.
- Detection:
LibFroznFunctions.isWoWFlavor.Foreveris true whenWOW_PROJECT_ID == WOW_PROJECT_CAMELOT.isWoWFlavor.MNis set as well, so Forever keeps the Midnight API behaviour and the Midnight lookup tables (enchants, mounts). Without those tables the enchant lookup errors. - GearScore: Forever has vanilla-era item levels, so it doesn't use the Midnight tier-set baseline (219).
itemLevelOfFirstRaidTierSetisfalsethere, which means plain item level sums, so the number isn't comparable with retail. - Talents on other players: Forever has one spec per class, and its inspect window has no talent tab. Tooltips for other players will probably show only the class spec name, with no point breakdown.
- Forever is new. The game type might be renamed from
camelottoforever, and the interface number will change with patches. Check the TOC and the detection after each Forever patch.
- Fetch and merge upstream:
git fetch upstream git merge upstream/main - Resolve any conflicts. The fixes touch the files listed above. Keep upstream's change, then re-apply the guard if the call is still unguarded.
- LibFroznFunctions is bundled four times, under
TipTac,TipTacItemRef,TipTacTalentsandTipTacOptions. All four copies must stay byte-identical. Edit one, copy it over the other three, and bumpLIB_MINORif you changed it. LibStub loads only the highest version. - Check that the base TOCs still list every client's interface number (
120100, 120105, 16001, plus any new patch). - Check syntax with
luac -pon the changed files, then deploy.
Before copying over an existing install, do a dry run to see whether the game folder has files the repo doesn't:
robocopy <repo>\TipTac "<WoW>\_retail_\Interface\AddOns\TipTac" /E /XD .git /Lrobocopy keeps no backup. When it reports Older files, compare their contents with Get-FileHash before overwriting. They're often just newer timestamps, but they can be edits that never made it into the repo.
Font not set
Set both Font → Font Face and Bars → Font Face to a valid font.
Action[SetPoint] failed because [SetPoint would result in anchor family connection]: attempted from: GameTooltip:SetPoint
Delete WTF\Account\<Account>\<Server>\<Character>\layout-local.txt for the affected character.
Lua errors
Install BugGrabber and BugSack. Errors are saved to WTF\Account\<Account>\SavedVariables\!BugGrabber.lua on /reload or logout. If an error comes from upstream code rather than one of the fixes above, check upstream's issues first.
- Frozn45: TipTac Reborn, which this fork is based on and which does nearly all the work. If you'd like to support the addon, donate to the upstream author.
- Aezay: the original TipTac, abandoned in 2020 and continued by Frozn45.
Licensed under the same terms as upstream. See LICENSE.