TooltipExpansion

Injects custom text into item tooltips without touching any game logic. Labels can appear inside the main tooltip (above the name, above the option list, above the class requirements, or at the end), or in a secondary panel rendered beside the main tooltip. Border rules tint the tooltip frame. Everything is display-only: use it to advertise set bonuses, per-level unlock tables, Jewel of Life ladders, server rules — anything you want players to read on hover.

All data is synced from the server at login, so tweaks reach every player without a client patch (after relog).

File Location#

GameServer/Data/Plugins/Items/TooltipExpansion.xml

Dependencies#

  • Purely cosmetic — pair labels with real bonuses configured in ItemOption, SetItemOption, etc. Labels do not grant stats.
  • Reloadable via the in-game reload command; players must relog to receive updated data.

Configuration Sections#

Root#

<TooltipExpansion Enabled="1">

Enabled="0" turns the whole feature off (nothing is synced to clients).

<Colors>#

A palette of reusable color indices referenced by labels.

AttributeRangeMeaning
Index0–999Palette slot referenced by <Label Color="...">
TextR/TextG/TextB0.0–1.0Text color
BgR/BgG/BgB/BgA0.0–1.0Background pill behind the line. BgA="0" (or omitted) = no background

<Labels>#

One <Label> per text line. Filters decide which items show it; omit an attribute (or set -1) to skip that check.

Filter attributeRangeMatches when
ItemMinIndex / ItemMaxIndex0–8191Item's absolute index (Group × 512 + Id) is inside the range. Example: all weapons (groups 0–5) = 0 to 3071
ItemLvlMin / ItemLvlMax0–15Item plus-level inside the range
SkillSwitch0/11 = item has Skill, 0 = item must NOT have Skill
LuckSwitch0/11 = has Luck, 0 = no Luck
AditionalMin / AditionalMax0–15+Option (Jewel of Life) level inside the range
ExcMin / ExcMax0–63Excellent bitmask inside the range. 1/63 = any excellent item, 0/0 = not excellent
Ancient0–30 = not ancient, 1 = ancient tier 1, 2 = tier 2, 3 = any ancient

Rendering attributes:

AttributeRangeMeaning
Position0–40 = before item name, 1 = before the option block, 2 = before class requirements, 3 = end of tooltip, 4 = secondary side panel
BreakLine0–10Blank lines rendered before this label
Color0–999Palette index from <Colors> (unknown index = plain white)
Bold0/1Bold font
Text≤159 charsThe line itself. Empty text = spacer row (only BreakLine applies)

Labels render in file order within each position.

<Borders>#

Same filter attributes as labels, plus R/G/B/A (0.0–1.0) for the tooltip frame color. The first matching rule wins.

Important Behavior#

  • The secondary panel (Position 4) renders to the left of the main tooltip. When the ancient-set list panel is visible it stacks further left of that panel, and clamps at the screen edge.
  • Labels longer than ~99 characters are truncated by the client's tooltip line buffer.
  • The tooltip has a hard cap of ~48 lines total (native lines + injected ones); overflowing labels are dropped silently.
  • Filters match the live item state — a label gated on AditionalMin="3" appears the moment the item reaches +Option 3.

Examples#

<Labels>
  <Label ItemMinIndex="0" ItemMaxIndex="3071" Position="4" BreakLine="1" Color="17" Bold="1" Text="Jewel Of Life Options" />
  <!-- next step grey, reached step green -->
  <Label ItemMinIndex="0" ItemMaxIndex="3071" AditionalMin="0" AditionalMax="0" Position="4" Color="10" Text="|Level:1| Double damage rate +2%" />
  <Label ItemMinIndex="0" ItemMaxIndex="3071" AditionalMin="1" AditionalMax="1" Position="4" Color="4"  Text="|Level:1| Double damage rate +2%" />
  <Label ItemMinIndex="0" ItemMaxIndex="3071" AditionalMin="1" AditionalMax="1" Position="4" Color="10" Text="|Level:2| Double damage rate +4%" />
</Labels>

Common Issues#

  • Labels don't appear: check the GameServer log for [TooltipExpansion] skip warnings (bad Position, out-of-range Index), confirm Enabled="1", and relog — data is only sent at login.
  • Wrong items match: remember ItemMinIndex/ItemMaxIndex are absolute indices (Group × 512 + Id), not group/id pairs.
  • Header has no colored background: the referenced <Color> needs BgA above 0.

Last updated July 19, 2026