test(app): D.2b-B B-Wire — burden wire-first + live-refresh tests + review notes
Final-review response. Adds the spec §5 / Task-16 burden end-to-end coverage the per-task plan missed: (1) burden reads wire EncumbranceVal over the carried sum (asserts 50% from wire 7500, not 20% from sum 3000 — retires AP-48's fallback as the primary), (2) a live player-int update repaints the bar (60%), which only happens via the C1d Concerns `o.ObjectId == p` branch. Both are discriminating (fail if the respective branch is reverted). Plus two clarifying comments from the review: the 0x02CD player route depends on the login PD upsert having created the player object (no-ops, no phantom, if not); and a TODO that the container-open phase must treat ViewContents as a full replace, not the additive merge used here. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
aa0ecaeb4d
commit
7badecf387
3 changed files with 48 additions and 1 deletions
|
|
@ -34,7 +34,10 @@ public static class ObjectTableWiring
|
|||
|
||||
// B-Wire: PrivateUpdatePropertyInt (0x02CD) carries no guid — it targets the
|
||||
// local player. Route it to the player object so live EncumbranceVal updates the
|
||||
// burden bar. (No-op if the player guid isn't wired yet.)
|
||||
// burden bar. The player ClientObject is created at login by the PD UpsertProperties
|
||||
// call (which precedes any live 0x02CD), so UpdateIntProperty finds it. If it somehow
|
||||
// hasn't yet, this no-ops (UpdateIntProperty returns false on an unknown guid) rather
|
||||
// than creating a phantom — the next PD / CreateObject seeds it.
|
||||
session.PlayerIntPropertyUpdated += u =>
|
||||
{
|
||||
if (playerGuid is not null)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue