# Campaign AS — connected gate script (AS6, user-driven) **Purpose:** live verification of the assess/examination-window parity campaign (AS2–AS5) against ACE, retail side-by-side as the oracle. Launch: the normal connected launch (`ACDREAM_RETAIL_UI=1`, live ACE at `127.0.0.1:9000`, `ACDREAM_PAK_PATH=\artifacts\owner-gate\acdream-v5.pak`). Sections marked **[TWO-CLIENT]** use the FA-campaign account pair (`testaccount`/`+Acdream` + `testaccount2`/`+Horan`) — assess the OTHER player. Where a second retail client is available, compare the same assess performed from retail. **Two standing rulings, read before judging:** - **Row COLORS are out of scope this gate.** The Society green/red (and any buffed/debuffed row tint) is MODEL-ONLY today — `ResolveColor` renders the authored default until AP-110's FontInfo-list residual lands. Judge TEXT content, ordering, and presence only. - **The paperdoll is our registered intentional deviation (AD-114):** ours mirrors the target's live motion; retail's clone plays its own decoupled idle cycle. A mismatch there is EXPECTED and correct. --- ## 1. Header identity block (AS2) [TWO-CLIENT] Assess the other player. Under the title bar, four lines: 1. **Gender+heritage**: " " composed (e.g. "Female Aluvian") — not a raw property string. PASS: matches retail's line for the same target. 2. **Title**: the target's CURRENT display title (e.g. "War Mage"). Have the target change their display title (Character panel → Titles → Set as Display Title), re-assess: the new title shows. No title set → the line is empty (ours deliberately clears where retail can show a stale previous target's title — register AD-115; do not fail us for being cleaner than retail here). 3. **PK status**: "Non-Player Killer" for a normal character. (If a PK or PKLite character is available, verify its variant.) 4. **Allegiance name**: shown only when the target is in a named allegiance (sworn, rank ≥ 1); otherwise empty. 5. **Failed assess**: on the TARGET client enable Deception's "Attempt to Deceive" option (retail Options → Character) if available with a high-Deception target; a failed assess shows "???" attributes BUT the four header lines above still render (identity rides even on failure). Best-effort — needs a target whose Deception beats the examiner's Assess Person. 6. **The invented literal is gone**: assess a MONSTER and fail (or any monster assess) — the line that used to read "Assessment incomplete" shows nothing, matching retail. ## 2. Per-bodypart armor levels (AS3) [TWO-CLIENT] 1. Target wearing armor: three rows appear — "Head/Chest/Groin AL: a/b/c", "Bicep/Wrist/Hand AL: a/b/c", "Thigh/Shin/Foot AL: a/b/c" — values matching retail's assess of the same target (buffed values: cast an armor buff on the target and re-assess; numbers rise). 2. Target naked (bank the armor): the three rows AND their leading blank line disappear entirely. 3. Unenchantable coverage (if an unenchantable piece is available): the affected group shows "*N" (N = the level without the sentinel). 4. **The R3 legend check (explicit retail side-by-side):** "* = Unenchantable" renders as the LAST line of a player assess. Our port shows it UNCONDITIONALLY (decomp-proven structure). Confirm retail does the same on a player with NO starred values and again with NO armor at all. If retail hides it in either case, report it — that flips ruling R3 and we change ours. ## 3. Ratings block (regression) On a target with ratings (augmented/geared): "Dmg/CritDmg Rating: x/y", "Dmg/CritDmg Resist: x/y", "DoT/Life: Resist: x/y" rows as before, each appearing only when its family is nonzero. Unchanged behavior — spot-check only. ## 4. Society / allegiance / fellowship rows (AS4) [TWO-CLIENT] 1. **Fellowship**: form a fellowship (FA campaign flow), assess the other member: "Fellowship: " row appears; disband → row gone on re-assess. 2. **Allegiance cascade** (best-effort — ACE's swear-at-close-range quirk #384 may block creating fresh vassals): assess a sworn character — "Monarch:" (and "Patron:" when different, "Monarch/Patron:" when the same person). Assess a MONARCH: "Alleg. Monarch:" + "N Follower(s)". 3. **Society** (only if a faction-joined character exists on this ACE): "Society: " with the rank suffix (" ~ Initiate" … " ~ Master") per the target's standing. TEXT only — ignore colors (standing ruling). ## 5. Target-configurable extras (AS4) [TWO-CLIENT] On the TARGET client open Options → the retail Character tab and toggle each "Allow others to see..." option, re-assessing from the other client after each change (each row appears iff the target allows it — the server gates; we render what arrives): | Toggle on target | Row | Expected value shape | |---|---|---| | Date of Birth | `Arrived in Dereth:` | server-formatted date, verbatim | | Age | `Time in Dereth:` | retail duration format — bare units, e.g. "3mo 2d 5h 12m 40s"; zero components omitted except seconds | | Chess Rank | `Chess Rank:` | number | | Fishing Skill | `Fishing Skill:` | number | | Number of Deaths | `Deaths:` | number; a deathless character shows "Has never died" as the value (label stays "Deaths:") | | Number of Titles | `Titles Earned:` | number | PASS: each row toggles with its option, the labels match retail exactly, and the full extras ORDER matches retail: Society → allegiance rows → [blank] → armor trio → [blank] → ratings → [blank] → Fellowship → Arrived → Time → Chess → Fishing → Deaths → Titles → "* = Unenchantable". ## 6. Title-bar allegiance rank prefix (AS5) [TWO-CLIENT, best-effort] Assess a sworn character with an allegiance rank: the WINDOW TITLE reads " " (e.g. "Yeoman Horan") — heritage- and gender-specific title from retail's table. The character panel (F9) name line of YOUR OWN sworn character shows the same prefix. Unsworn/rank 0 → plain name in both places. (Creating a fresh sworn pair may be blocked by #384 — use any already-sworn character; otherwise mark SKIPPED.) ## 7. Combat auto-refresh Enter combat mode with the exam window open on a player: the window refreshes ~every 0.75 s; the AL trio, extras, and header lines persist and update (buff the target's armor mid-watch: values change without re-assessing manually). ## 8. Regression sweep (5 minutes) - Monster assess: species line + stat rows + ratings as before; NO armor trio, NO legend, nothing where the old invented literal was. - Item assess: the full item report unchanged; inscription flow intact. - Spell assess unchanged. - The animated paperdoll mirrors the target's motion (our AD-114 deviation — expected). - Character panel (F9): CT-campaign behaviors intact (titles page, header identity block, resize clamps 372–1000, scrollbar hand-off). --- ## Report back Per section PASS/FAIL plus anything odd. The three answers that matter most: 1. §5 — does every option-gated row toggle correctly with the target's own options, in retail's exact order? 2. §2.4 — does retail show the "* = Unenchantable" legend unconditionally (our R3 reading), or does it hide it in some case? 3. §1 — is the identity block exact against retail for the same target (composition, title live-update, PK text)?