acdream/src/AcDream.Core
Erik be3e617a2b fix: trade gate round 4 - "The trade has been cancelled." + retail's
staged-item trading marker

- Cancel text: ClientTradeSystem::Handle_Trade__Recv_CloseTrade
  @0x0056DE30 shows "The trade has been cancelled." UNCONDITIONALLY
  (every close reason) as 0x1A ClientLocal - the yellow top-center
  SpewBox line. Wired at the router's onTradeClose beside ApplyClose;
  the string lives in ClientTextRefusals with its citation.
- Staged-item marker: retail's mechanism decoded end-to-end - the
  UIItem prototype (catalog 0x21000037) authors overlay child
  0x10000438 (sprite 0x06001DAE, the green frame + corner trade icon),
  bound @0x004E18FC and SetVisible(tradeState != 0) @0x004E2420;
  gmSecureTradeUI::AddItem @0x004CA801 sets
  ACCWeenieObject::SetTradeState(1) on YOUR staged items. Ported as:
  UiItemSlot.ShowTradeOverlay + TradeOverlaySprite (drawn over the
  icon), set on the trade window's self-grid cells; and
  RuntimeTradeState now borrows the canonical object table and
  maintains ClientObject.TradeState (1 at stage, 0 at remove/failure/
  reset/close/clear) - which also brings the ALREADY-PORTED placement
  policy's "You cannot move an item while it is being traded" refusal
  to life (its input field previously had no live producer).

Runtime 1,626, App 4,992/3 - green.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-14 12:45:10 +02:00
..
Audio feat(audio): Ctrl+M instant mute + inn-chatter investigation closed as server content 2026-08-09 14:09:24 +02:00
Chat fix: trade gate round 4 - "The trade has been cancelled." + retail's 2026-08-14 12:45:10 +02:00
Combat feat(core): adopt the retail members the equipment and physics enums were missing 2026-07-29 01:27:57 +02:00
Content fix(rendering): bound portal resource lifetime 2026-07-18 21:35:16 +02:00
Input feat(ui): Campaign OP slice OP8 — Configure Keyboard 2026-08-11 09:19:54 +02:00
Items fix: social gate round 2, part 2 - confirmation-dialog sentences + the 2026-08-13 21:10:42 +02:00
Lighting perf(lighting): bound global light selection 2026-07-25 05:40:32 +02:00
Meshing fix(rendering): bound portal resource lifetime 2026-07-18 21:35:16 +02:00
Physics fix(chat): Campaign CH user-gate round 2 -- portal notice rerouted to SpewBox, verbatim /help extraction, jump-in-air evidence 2026-08-10 08:40:24 +02:00
Player feat(player): port retail augmentation stat chain 2026-07-31 08:08:23 +02:00
Plugins fix(rendering): bound portal resource lifetime 2026-07-18 21:35:16 +02:00
Properties feat(core): give AC's seven property tables names, verified against two oracles 2026-07-29 01:11:16 +02:00
Rendering probe(physics): ACDREAM_PROBE_SUPPORT + ACDREAM_WIRE_MESH — separate #337's three candidates 2026-08-06 19:49:59 +02:00
Selection feat(runtime): FA4 -- fellowship roster enumeration + Social selection source 2026-08-12 04:40:19 +02:00
Social refactor(runtime): expose canonical gameplay state 2026-07-26 09:12:30 +02:00
Spells feat(player): port retail augmentation stat chain 2026-07-31 08:08:23 +02:00
Terrain refactor: #100 — remove hiddenTerrainCells / BuildingTerrainCells plumbing 2026-05-25 21:37:53 +02:00
Textures fix(render): keep authored surface translucency on composite textures 2026-07-29 21:40:26 +02:00
Ui fix(interaction): port retail's wielded-item pickup rejection (Slice 4 F1) 2026-07-29 19:09:38 +02:00
Vfx fix(vfx): classify hardwareless particle emitters once 2026-07-27 00:03:44 +02:00
World feat(ui): Campaign OP slice OP4 — the Character tab 2026-08-11 04:31:34 +02:00
AcDream.Core.csproj feat(runtime): atomically replace collision generations 2026-08-01 17:33:34 +02:00