acdream/src/AcDream.Core/Items
Erik e29c61a3a4 feat(ui): inventory/shortcut/paperdoll item-name tooltips — UIElement_UIItem::UpdateTooltip port
Retail UIElement_UIItem::UpdateTooltip @0x004E1CB0 caches the item's
NAME_APPROPRIATE display name (stack-count-prefixed "%d %s" when
StackSize > 1) as m_TTText every UIItem_Update refresh; the generic
UIElementManager::CheckTooltip dwell timer is what actually shows it
on hover — no special-cased trigger of its own.

UiItemSlot cells are built programmatically (never through
LayoutImporter.Build), so #409's original round left this deferred:
the class carried neither the popup locator (P0x47/P0x48) nor a name
source. A live-DAT sweep of the shared UIItem cell-template catalog
(ItemListCellTemplate.CatalogLayoutId, 0x21000037) found all 47
UIItem-type (class 0x10000032) prototypes — inventory's cell, every
toolbar slot, every paperdoll/armor slot skin — resolve the IDENTICAL
popup locator (P0x47=0x10000395/P0x48=0x21000041) through catalog
inheritance, with no literal text authored on any of them. UiItemSlot
now hardcodes that pair and exposes GetTooltipText() via a new
TooltipTextResolve delegate, wired at every physical-item
construction site: InventoryController (main-pack cell + grid cells),
ExternalContainerController, PaperdollController (closes the
separate gmPaperDollUI::UpdateItemSlotTooltip @0x004A52EF gap too —
same cell class, same fix), VendorUiController (shop/buying/selling
lists), SecureTradeUiController, ToolbarController.

Text is the new ClientObject.GetTooltipDisplayName(): GetAppropriateName()
prefixed with the stack count via "{count} {name}" when StackSize > 1,
matching UpdateTooltip's exact NAME_APPROPRIATE + "%d %s" sprintf.
UiCatalogSlot (spell/component catalog cells, a different UiItemSlot
subclass) is unaffected — it already overrides GetTooltipText() with
its own Label.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-16 23:02:10 +02:00
..
AetheriaUnlockState.cs fix(paperdoll): port quest-gated Aetheria slots 2026-07-13 09:55:20 +02:00
ClientObject.cs feat(ui): inventory/shortcut/paperdoll item-name tooltips — UIElement_UIItem::UpdateTooltip port 2026-08-16 23:02:10 +02:00
ClientObjectTable.cs fix(vendor): grand-gate findings — wire-truth container counts, the live split bar, arrival-gated use, prepend-order race 2026-08-08 14:03:57 +02:00
ExternalContainerState.cs refactor(net): converge live session state reset 2026-07-21 12:00:48 +02:00
HouseRestrictions.cs feat(runtime): seal dormant SetPosition evaluations 2026-08-01 11:31:58 +02:00
InventoryTransactionState.cs fix: social gate round 2, part 2 - confirmation-dialog sentences + the 2026-08-13 21:10:42 +02:00
ItemCooldownDisplay.cs feat(items): port retail shared cooldown overlays 2026-07-23 10:41:16 +02:00
ItemInteractionPolicy.cs fix(vendor): 6b/6c review corrections — pre-send guards, accumulating staging, trade-note exemption, drag-over tab switch, full-stack sells 2026-08-08 12:50:28 +02:00
ItemManaState.cs refactor(runtime): expose canonical gameplay state 2026-07-26 09:12:30 +02:00
ItemWireEnums.cs feat(core): name AmmoType, CombatUse, and ItemUseable 2026-07-29 01:31:01 +02:00
PaperdollSelectionPolicy.cs fix(ui): port exact paperdoll body selection 2026-07-11 11:56:26 +02:00
ShortcutDropPlanner.cs feat(ui): complete retail item drop branches 2026-07-11 09:46:32 +02:00
ShortcutEntry.cs feat(ui): preserve exact retail shortcut records 2026-07-11 09:17:33 +02:00
ShortcutStore.cs refactor(runtime): close canonical gameplay ownership 2026-07-26 09:48:51 +02:00
StackMergePlanner.cs feat(ui): complete retail item drop branches 2026-07-11 09:46:32 +02:00
StackSplitQuantityState.cs fix(ui): port retail partial stack transfers 2026-07-11 10:34:13 +02:00
ToolbarAmmoPolicy.cs feat(ui): port retail toolbar ammo count 2026-07-11 12:29:51 +02:00
VendorDiagnostics.cs fix(vendor): evidence-based pass — max-first stack ceiling; the local player resolves never-animated MoveTo targets 2026-08-08 17:17:04 +02:00
VendorPricing.cs fix(runtime/core): Slice 5.3 review corrections — retirement/transit close, per-unit pricing, guarded auto-close dispatch 2026-08-07 16:15:57 +02:00
VendorSellAcceptability.cs fix(vendor): 6b/6c review corrections — pre-send guards, accumulating staging, trade-note exemption, drag-over tab switch, full-stack sells 2026-08-08 12:50:28 +02:00
VendorSplitPolicy.cs fix(vendor): evidence-based pass — max-first stack ceiling; the local player resolves never-animated MoveTo targets 2026-08-08 17:17:04 +02:00
VendorStagingList.cs fix(vendor): 6b/6c review corrections — pre-send guards, accumulating staging, trade-note exemption, drag-over tab switch, full-stack sells 2026-08-08 12:50:28 +02:00
VendorState.cs fix(vendor): evidence-based pass — max-first stack ceiling; the local player resolves never-animated MoveTo targets 2026-08-08 17:17:04 +02:00