acdream/src/AcDream.Core/Items
Erik 609a2dfda0
Some checks are pending
Headless portability / portable-headless (ubuntu-latest) (push) Waiting to run
Headless portability / portable-headless (windows-latest) (push) Waiting to run
Headless portability / linux-graphical (push) Waiting to run
Headless portability / linux-vulkan (push) Waiting to run
fix(runtime/core): Slice 5.3 review corrections — retirement/transit close, per-unit pricing, guarded auto-close dispatch
The adversarial review's three blocking findings, each fixed at root:

1. A vendor session now CLOSES when its entity retires (despawn,
   death, ObjectDelete) and at teleport BEGIN
   (HasPendingTeleportStart || IsTeleportActive at the existing
   per-frame seam — both hosts funnel through
   RuntimeWorldTransitState.TryQueueTeleportStart, which flips the
   pending flag strictly before activation). The previous permissive
   early-return stranded the session forever: panel pinned to a stale
   guid, ActiveVendorId swallowing Use for the rest of the session.
2. VendorShopItem carries the desc's stack size, and
   VendorPricing.PerUnitValue ports retail's stack-total division
   (VendorProfile::VendorSellPrice 0x005D1B00: <= 0 guard, integer
   division) — a stack of 50 arrows now prices per arrow, not at 50x.
3. VendorState.Close() guards its observer fanout with the
   dispatcher's catch-and-log semantics — a throwing panel listener
   can no longer propagate into the unprotected per-frame path.

Register honesty rides along: the 0.6 m UseRadius fallback was
acdream's invention (ACE's CheckClose has no fallback; retail passes
the raw authored radius) — removed, the watcher now uses the raw
radius and AP-160's citations are corrected and extended with the
accepted-position-snapshot cadence; AD-72 files VendorPricing's
double-vs-x87-extended narrowing (AD-33's class, bounded by the
±0.1 margin).

Nine tests added. Clean-room complete solution: 11,311 passed /
4 skipped / 0 failed.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-08-07 16:15:57 +02:00
..
AetheriaUnlockState.cs fix(paperdoll): port quest-gated Aetheria slots 2026-07-13 09:55:20 +02:00
ClientObject.cs fix(physics): #297 — keep the PWD bitfield live so PK status reaches the client 2026-08-03 20:59:01 +02:00
ClientObjectTable.cs fix(physics): #297 — keep the PWD bitfield live so PK status reaches the client 2026-08-03 20:59:01 +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 refactor(runtime): own inventory transaction state 2026-07-26 08:20:32 +02:00
ItemCooldownDisplay.cs feat(items): port retail shared cooldown overlays 2026-07-23 10:41:16 +02:00
ItemInteractionPolicy.cs feat(ui): port retail item appraisal reports 2026-07-23 19:08:05 +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
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
VendorState.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