fix #212: preserve shortcut tint in physical combat

Port the retail m_bShortcutGhosted meaning instead of treating SetShortcutNum's boolean as peace versus war. Keep occupied shortcut numbers on the gold sheet in NonCombat, Melee, and Missile, reserve the gray sheet for Magic, and lock the four-mode matrix with conformance tests and corrected research.

Co-Authored-By: Codex <codex@openai.com>
This commit is contained in:
Erik 2026-07-13 11:21:12 +02:00
parent ab98cda26b
commit 5090aa7217
9 changed files with 197 additions and 112 deletions

View file

@ -46,9 +46,39 @@ Copy this block when adding a new issue:
---
## #211 — Login-equipped missile weapon incorrectly requests melee combat
## #212 — Toolbar shortcut numbers turn gray in physical combat
**Status:** IN-PROGRESS — implementation complete 2026-07-13, pending user gate
**Severity:** LOW
**Component:** retained UI / toolbar
**Description:** Entering melee or missile combat changed the numbered overlay
on occupied toolbar shortcuts from the gold mesh to the gray mesh.
**Root cause:** The port interpreted `UIElement_UIItem::SetShortcutNum`'s Boolean
as peace versus war. Retail names the stored value `m_bShortcutGhosted`, and
`gmToolbarUI::RecvNotice_SetCombatMode` passes true only for Magic combat mode.
The false interpretation therefore ghosted every occupied shortcut in every
combat stance.
**Resolution:** Shortcut state and digit arrays now use retail's regular/ghosted
terminology. NonCombat, Melee, and Missile select property `0x10000042`; Magic
alone selects ghosted property `0x10000043`. Empty slots continue to use the
stance-independent `0x1000005E` array.
**Research:** `docs/research/2026-07-10-retail-toolbar-interaction-pseudocode.md`
§2.4; `UIElement_UIItem::SetShortcutNum @ 0x004E1590`;
`gmToolbarUI::RecvNotice_SetCombatMode @ 0x004BD610`.
**Acceptance:** Compare an occupied numbered toolbar slot in peace, melee, and
missile modes: the mesh remains gold/yellow. Enter Magic mode: physical-item
shortcuts use the gray ghosted mesh.
---
## #211 — Login-equipped missile weapon incorrectly requests melee combat
**Status:** DONE — 2026-07-13, user confirmed combat entry works (`ab98cda2`)
**Severity:** HIGH
**Component:** inventory projection / combat mode