fix #234: port retail appraisal floaty and inscriptions

This commit is contained in:
Erik 2026-07-23 12:12:57 +02:00
parent 643cdfe66e
commit f1a7912160
23 changed files with 1310 additions and 106 deletions

View file

@ -74,6 +74,44 @@ Copy this block when adding a new issue:
---
## #234 — Monster assessment held busy and examination used the shared panel
**Status:** DONE — 2026-07-23, corrective connected gate pending
**Severity:** HIGH
**Filed:** 2026-07-23
**Component:** appraisal protocol / retained examination UI / item writing
**Description:** Assessing a monster appeared to hang the UI with the busy
cursor. Examination also replaced Inventory/Skills in the shared primary
panel, while retail opens its own floaty window. Assessed item inscriptions
were display-only.
**Root cause / status:** The local IdentifyResponse enum did not match
ACE/retail: creature profile bit `0x0100` was labeled WeaponProfile. The strict
parser consequently rejected normal creature responses before the appraisal
owner could release its balanced busy reference. The examination LayoutDesc
had also been incorrectly registered as synthetic main-panel id
`0x80000001`; retail's concrete root is `gmFloatyExaminationUI`. Exact response
bits/order are now pinned by literal packet tests, the floaty is registered as
an independent top-level window, and the imported multiline field sends
retail's CP-1252 `SetInscription (0x00BF)` under its ownership/authorship rules.
**Files:** `src/AcDream.Core.Net/Messages/AppraiseInfoParser.cs`;
`src/AcDream.App/UI/RetailUiRuntime.cs`;
`src/AcDream.App/UI/Layout/AppraisalUiController.cs`;
`src/AcDream.App/UI/UiField.cs`;
`src/AcDream.Core.Net/Messages/InventoryActions.cs`.
**Research:**
[`research/2026-07-23-retail-appraisal-ui-pseudocode.md`](research/2026-07-23-retail-appraisal-ui-pseudocode.md).
**Acceptance:** Monster/NPC/player assessment opens and clears busy; the
examination window coexists with the shared primary panel; an owned
inscribable weapon can be edited/cleared and reassessed; foreign/nonowned/
noninscribable cases show retail's exact permission messages.
---
## #235 — Capped/RDP jump presentation aliases the 30 Hz object clock
**Status:** OPEN