Skip to content

feat (Forever Essentials): gathering skill in node tooltips - #2692

Merged
EllesmereGaming merged 2 commits into
EllesmereGaming:mainfrom
Jetro974:forever-gather-skill
Oct 17, 2026
Merged

EllesmereGaming merged 2 commits into
EllesmereGaming:mainfrom
Jetro974:forever-gather-skill

Conversation

@Jetro974

@Jetro974 Jetro974 commented Oct 14, 2026 •

Copy link
Copy Markdown
Contributor

Know which herbs and veins you can gather before you walk to them.
On WoW Forever, a herb or ore node's tooltip says "Requires Herbalism" or "Requires Mining", but never which skill it takes, so a gatherer only finds out by trying. This toggle adds the required skill to that line, the way Classic tooltips read ("Requires Mining (75)"), and colors it by your chance to raise your skill there.

What does this PR do?

Adds Gathering Skill in Tooltips to Forever Essentials > General > Gathering (WoW Forever only, off by default). On a herb or ore node's tooltip, the game's own "Requires Herbalism / Requires Mining" line (just "Herbalism / Mining" once you have the skill) gains the skill the node needs. When you can gather the node, the line takes the colors recipes use for skill-ups: orange, yellow, green, grey; when you cannot, the game's red stays.

In its cog, Minimap (off by default) does the same on the minimap: a tracked herb or ore node's name in the mouseover tooltip is followed by its required skill in those colors ("Silverleaf (1)"), red when you cannot gather it. Other names in the same tooltip are left alone.

Seen in game: in combat, a node's own tooltip keeps the game's line until combat ends (text the game makes secret is skipped with issecretvalue, never read or compared), while the minimap's mouseover names keep their skill.

World object tooltips carry no object ID on Forever (the tooltip data's guid and id are nil), so a node is recognized by its name:

  • Herbs: a herb node bears its herb's name, read from the herb item in the client's language (C_Item.GetItemNameByID), so every locale works with nothing to translate.
  • Ore nodes (20): matched through the locale strings. Their names are the game's official ones in each client language (Wowhead's tooltip data), added to every locale file because the feature needs them to work there; Italian has none and stays English. These are object names, not UI text, so they leave nothing for translators to do.

Required skills are the game's Classic values (Wowhead). The few nodes WoW Forever added (Marefoil, Demonsage, Death Lotus, Heavy Thorium) keep the game's line until their skill is known: the client data has the skill tiers (Lock) but not which node uses which.

How was it tested?

WoW Forever client (French), in game: Silverleaf shows "Herboristerie (1)" in the skill-up color. The other paths (a node you cannot gather keeps the game's red, a node not in the table is left alone, the minimap's mouseover with several names, the option off) were run through the hooks with the client's tooltip data. The minimap path was also run through an offline harness with the game API stubbed: 60 redraws of the same tooltip parse it once, a herb whose item loads later is picked up, a skill-up recolors the line.

python3 .tools/guardrails.py passes; _keys.txt is current; every locale file is valid UTF-8.

Screenshots

image image image

Checklist

  • New settings default OFF (no behavior change without opt-in)
  • Zero cost while disabled: the tooltip post-calls (world object, minimap mouseover) are registered only the first time the option is turned on (once registered, it returns at once while the option is off); the node table is built on first use; no event is registered while the option is off
  • Cheap while enabled: no polling, no timers. The minimap's mouseover tooltip is set again every frame the cursor is over the minimap, so each line's result is remembered by its text, as Simplified Stats does for item lines (forgotten when your skill, a herb name or the setting changes, SKILL_LINES_CHANGED registered only while the minimap option is on). A herb whose item is not loaded yet is added on its ITEM_DATA_LOAD_RESULT, unregistered once none is missing. One table lookup per world object tooltip, a line rewritten only on a gathering node
  • No writes onto Blizzard-owned frames: TooltipDataProcessor.AddTooltipPostCall only; the line's text and color are set on the tooltip's own font string, as Simplified Stats does for item lines
  • Tested in-game on live: N/A, Forever Essentials only loads on WoW Forever (tested there); no version gates or pre-Midnight APIs added

@Jetro974
Jetro974 force-pushed the forever-gather-skill branch from 061aa2a to f0d76f6 Compare October 14, 2026 16:54
@Jetro974
Jetro974 force-pushed the forever-gather-skill branch from 4e62112 to 6f93295 Compare October 16, 2026 19:50
@EllesmereGaming
EllesmereGaming merged commit d4eb56e into EllesmereGaming:main Oct 17, 2026
1 of 2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants