Skip to content

fix(items): the item bundles are named alike, with their count (#815) - #835

Open
ezequielzacca wants to merge 478 commits into
sven-n:mainfrom
ezequielzacca:feat/item-bundle-names
Open

ezequielzacca wants to merge 478 commits into
sven-n:mainfrom
ezequielzacca:feat/item-bundle-names

Conversation

@ezequielzacca

@ezequielzacca ezequielzacca commented Oct 22, 2026 •

Copy link
Copy Markdown
Contributor

This step's own changes: compare with #834. The diff of this PR also holds every earlier step of #815, since a PR from a fork can only target this repository's branches.

Summary

Follow-up to #834 in #815 (data-driven item tooltips). Stacked on #834 (→ #833 → … → #813): only the last commit, fix(items): the item bundles are named alike, with their count, is this change.

The ten jewel and stone bundles were named two ways in English: "Bundle of Jewel of Bless", but "Jewel of Life Bundle". Spanish and Portuguese were worse:

  • Spanish used both "manojo" (lowercase) and "Fardo", and called the refining stones jewels.
  • Portuguese used both "feixe" and "Lote", sometimes in the wrong word order ("Joia do Lote da Vida").

Each language now names every bundle one way, after its single item. German was already consistent.

Bundle English Spanish Portuguese
12/30 Bundle of Jewel of Bless Fardo de Joyas de Bendición Lote de Joias da bênção
12/31 Bundle of Jewel of Soul Fardo de Joyas de Alma Lote de Joias da alma
12/136 Bundle of Jewel of Life Fardo de Joyas de Vida Lote de Joias da vida
12/137 Bundle of Jewel of Creation Fardo de Joyas de la Creación Lote de Joias da criação
12/138 Bundle of Jewel of Guardian Fardo de Joyas de Guardián Lote de Joias do guardião
12/139 Bundle of Gemstone Fardo de Gemas Lote de Pedras preciosas
12/140 Bundle of Jewel of Harmony Fardo de Joyas de la Armonía Lote de Joias da harmonia
12/141 Bundle of Jewel of Chaos Fardo de Joyas de Caos Lote de Joias do caos
12/142 Bundle of Lower Refining Stone Fardo de Piedras de Más Baja Refinación Lote de Pedras refinadas inferiores
12/143 Bundle of Higher Refining Stone Fardo de Piedras de Más Alta Refinación Lote de Pedras refinadas superiores

A bundle's name also says how many it holds: "x10", "x20" or "x30" instead of "+1" to "+3", which read like an item level. The count is a new ItemStats.json table, bundleCount (10, plus 10 per level), shown through the bundles' name lines:

The Bundle of Jewel of Life's name and name lines
{
  "number": 136,
  "name": {
    "en": "Bundle of Jewel of Life",
    "de": "Bündel Juwelen des Lebens",
    "es": "Fardo de Joyas de Vida",
    "pt": "Lote de Joias da vida"
  },
  "nameLines": [
    {
      "text": "{name} x{bundleCount}",
      "color": "yellow"
    }
  ]
}
{"name": "bundleCount", "caption": {"en": "Items in a Bundle (Jewel and Stone Bundles)"}, "values": 10, "perLevel": 10}

The names show in the tooltip, the windows and the server's messages. One more fix came with them: the quest window copied item names into 32-character buffers without a bound. "Bundle of Higher Refining Stone x10" is 35 characters, so the quest window now passes the name to its text directly.

{levelPlusOne}, which #833 added for the bundles, is no longer used by any item. It stays a built-in value.

Screenshots

A level-1 Bundle of Jewel of Life (20 jewels), before (#834) and after.

Before After
English, legacy
English, modern
Spanish
Portuguese

Related issues

Part of #815. Builds on #834, #833, #830, #829, #828, #827, #825, #824, #823, #822, #821, #820, #819, #818, #817, #816 and #813.

Checklist

  • I have read and followed docs/CODING_RULES.md.
  • I have built the project locally (see docs/build/README.md).
    • Windows x64 Release: all 1014 tests pass; the tooltip snapshot changes for the ten bundles only.
    • Changed lines pass clang-format 21.1.8 as CI checks them.
    • In game: the screenshots above.
  • Changes are focused on one concern; the diff is as small as it reasonably can be.

@sven-n sven-n left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed the bundle naming/count migration and quest-name handling. No independently actionable defect identified in the inspected code. Please include a test of bundle levels 0–3 across all ten bundle types, and verify the longer names in quest text and any fixed-size protocol/UI consumers. Build not run.

Reviewed with AGENTS.md and docs/CODING_RULES.md as the quality baseline.

ezequielzacca and others added 26 commits October 23, 2026 13:09
…he wings' do, without the stray "of"

Other code still prints "Increase %d%% of Damage" and "Absorb %d%% of
Damage"; they now read as the shared texts this step fixes, so the game
writes them one way in every language.
… tooltip commands refuse what wraps

The static debounced pet information request captured the first Dark Lord pet
tooltip's item and storage for good; it reads the ones of the latest call now,
and GetPetInfoRequest, which picks the request, is tested with the raven and
the horse in turn from other storages.

The control socket's tooltip command refuses a level, durability, option,
excellent, ancient or harmony value its item's fields can't hold instead of
wrapping it, and tooltip-snapshot reports a file it couldn't write completely.
…ltip-context

# Conflicts:
#	src/source/App/Control/ControlCommandsQuery.cpp
…ooltip-values

# Conflicts:
#	src/source/Engine/Object/ZzzInventory.cpp
…m-tooltip-shared-texts

# Conflicts:
#	src/source/Engine/Object/ZzzInventory.cpp
…s own item table

Run in one process after a test that loaded the item data (the MU
Helper pickup filter tests do), the comparison test crashed: it
switches the UI language for every language, the item data follows
each switch and refills ItemAttribute, which is null outside a
ClientDataScope. CTest runs each test case in its own process, so CI
did not show it. The test now runs inside a ClientDataScope, as
ClientDataScope's comment asks of a test that switches the language.
… the item data, and the gate's lines are formatted
…ltip-context

# Conflicts:
#	src/source/App/Control/ControlCommandsQuery.cpp
…tat words aren't the game's texts

The "i" of "%% increase" leaked into seven translations of "Damage +20% increase effect" ("iefecto", "infeito",
"inувеличение", ...). The level lines' test no longer compares the Fruits' stat words with the game's texts, which
keep the words this step corrects.
@Mosch0512 Mosch0512 self-assigned this Oct 24, 2026
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.

3 participants