acdream/src/AcDream.Runtime/Gameplay
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
..
CharacterOptionsBlobSource.cs feat(runtime,net): Campaign OP slice OP1 — full character-option table, dirty model, real 0x01A1 blob builder 2026-08-10 23:31:34 +02:00
CharacterOptionTable.cs feat(runtime,net): Campaign OP slice OP1 — full character-option table, dirty model, real 0x01A1 blob builder 2026-08-10 23:31:34 +02:00
InteractionState.cs refactor(runtime): own canonical action state 2026-07-26 10:44:09 +02:00
LocalPlayerOutboundController.cs refactor(runtime): own local movement and outbound cadence 2026-07-26 12:33:53 +02:00
PlayerMovementController.cs fix: airborne jump refusal fires at RELEASE, not press (user retail 2026-08-14 08:31:22 +02:00
PlayerPhysicsQuantumCapture.cs fix(physics): port retail slope landing stop 2026-07-31 09:10:53 +02:00
RuntimeActionState.cs feat(headless): complete deterministic bot command parity 2026-07-27 08:23:36 +02:00
RuntimeAllegianceState.cs fix(net,runtime): FA2 fix-round MUST-FIX -- allegiance clears at reset, 0x027C stops seeding 2026-08-12 02:17:04 +02:00
RuntimeCharacterState.cs feat(ui): Campaign OP slice OP4 — the Character tab 2026-08-11 04:31:34 +02:00
RuntimeCombatAttackState.cs refactor(runtime): own combat and magic intent 2026-07-26 11:56:40 +02:00
RuntimeCombatModeState.cs refactor(runtime): own combat and magic intent 2026-07-26 11:56:40 +02:00
RuntimeCombatTargetState.cs refactor(runtime): own combat and magic intent 2026-07-26 11:56:40 +02:00
RuntimeCommunicationState.cs fix(ui,runtime): OP4 review fixes — live re-seed, enable-gating, Combat panel re-point, universal timestamps 2026-08-11 05:30:26 +02:00
RuntimeFellowshipState.cs feat(runtime): FA4 -- fellowship roster enumeration + Social selection source 2026-08-12 04:40:19 +02:00
RuntimeFriendlyTargetQuery.cs fix(headless): FA6 — name-match the Recruit bot instead of nearest-any-player 2026-08-12 09:53:46 +02:00
RuntimeGameplayOwnership.cs feat: secure trade with other players - wire, RuntimeTradeState, the 2026-08-14 11:49:13 +02:00
RuntimeHostileTargetQuery.cs feat(headless): complete deterministic bot command parity 2026-07-27 08:23:36 +02:00
RuntimeInteractionTransactionState.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
RuntimeInventoryState.cs feat(vendor): Slice 6 buy arc — shop items are real objects, vendor selection is THE selection, and Buy works (0x005F) 2026-08-07 20:28:26 +02:00
RuntimeLocalPlayerFirstEntryState.cs fix(runtime): name why a placement is parked and fail closed when it cannot resolve 2026-08-03 13:55:16 +02:00
RuntimeLocalPlayerFrameController.cs fix(headless): #365 — collision-admission-open window drove the first-entry conductor into a permanent seal refusal 2026-08-10 11:34:36 +02:00
RuntimeLocalPlayerIdentityState.cs refactor(runtime): compose canonical game runtime root 2026-07-26 18:51:17 +02:00
RuntimeLocalPlayerMovementState.cs fix(ui,runtime): OP4 review fixes — live re-seed, enable-gating, Combat panel re-point, universal timestamps 2026-08-11 05:30:26 +02:00
RuntimeLocalPlayerPhysicsPublicationState.cs fix(runtime): transient collision-seal failure no longer terminal for login (#357) 2026-08-09 12:32:53 +02:00
RuntimeSpellCastState.cs refactor(runtime): own combat and magic intent 2026-07-26 11:56:40 +02:00
RuntimeTradeState.cs fix: trade gate round 4 - "The trade has been cancelled." + retail's 2026-08-14 12:45:10 +02:00
RuntimeVendorRangeQuery.cs fix(vendor): the range watcher measures retail's cylinder-gap — the acceptance-band self-close is dead (Fable, from the live trace) 2026-08-08 17:24:49 +02:00
TurbineChatMembershipGate.cs fix(chat): CH3 review fixes — phantom UN-9, allegiance-broadcast echo, /a legacy fallback 2026-08-09 20:24:29 +02:00
VendorShopItemMaterializer.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