re: the reactive-chatter rule table behind ORDOR_SQUADRON_EXTENDED
864 records = 144 rule tables per language pack x 6. One schema for all 9216 event records; MessageCount*2 == positional count with zero mismatches. Named 136/144 by two independent routes that agree as sets. 2388/2405 message ids join the settled sound-cue table. Corrects squadron-orders.md: the executable misspells all four SQUADRON entries of the 0x820AEEB0 enum as ORDOR_, and the disc data matches. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PMRJjbxLqZtsb5Vb7KunPE
This commit is contained in:
@@ -4029,3 +4029,67 @@ cinematic — before crashing at the same `0x82307128`. The crash is intermitten
|
||||
in **where** it fires, not whether, so there is no menu route around it. See
|
||||
[`title-crash-stl-tree.md`](title-crash-stl-tree.md) for the end-to-end
|
||||
measurement and for what has been ruled out (`--mem_watch=false`, twice).
|
||||
|
||||
---
|
||||
|
||||
## ✅ 2026-08-27 — `ORDOR_SQUADRON_EXTENDED` opened: the reactive-chatter rule table
|
||||
|
||||
The biggest unopened record name in the 3 496-name census (**864 records**) is a
|
||||
record in the **chatter rule table**: 144 objects per language pack × 6 packs.
|
||||
Write-up: [`structures/preset-message-rules.md`](structures/preset-message-rules.md);
|
||||
artefact `data/preset-messages.txt`; regenerator
|
||||
`tools/re-capture/preset_messages.py`.
|
||||
|
||||
**Docs checked before claiming anything** — `squadron-orders.md`,
|
||||
`sound-cue-table.md`, `cutscene-message-table.md`, `ixud-localised-text.md`,
|
||||
`isl-message-dialogue-link.md`, `movie-subtitles.md`, `mission-phase-deployment.md`,
|
||||
`mission-phase-membership.md`. Two of them own parts of this:
|
||||
|
||||
* `ixud-localised-text.md` owns "`PresetMessage_*` is reactive combat chatter
|
||||
keyed by speaker class", and `mission-phase-deployment.md` owns the route in
|
||||
(`UnitMessageSet_S<NN>.tbl` → `PresetMessage_Phase1/2/3`). **What neither says**
|
||||
is what is inside the table.
|
||||
* `cutscene-message-table.md` owns the `Generic`+`Message_NNN` layout for the 32
|
||||
cutscene objects per pack. **What it does not say** is that the same layout
|
||||
carries **137 more** objects per pack for in-mission chatter. Control: of 273
|
||||
`PresetMessage_*` names that hit an IDXD entry, 136 are rule tables and 137 are
|
||||
message tables — the prefix names two different shapes.
|
||||
|
||||
✅ **One schema, no variants.** All 9 216 event records (144 × 64) carry the same
|
||||
seven named fields — `EffectiveTime, Interval, Priority, Probability,
|
||||
MessageCount, IntervalFluctuation, Pattern` — then positional `(message id,
|
||||
Yes/No)` pairs. **`MessageCount · 2 == positional count` in 9 216/9 216, zero
|
||||
mismatches**, which is what pins the pairing.
|
||||
|
||||
✅ **Named twice, independently, with the same answer.** Harvested
|
||||
`PresetMessage_*` strings hashed under `message\` → 136/144; the
|
||||
`PresetMessage_Phase1/2/3` declarations of the 22 `UnitMessageSet_S<NN>.tbl`
|
||||
tables → 136/144; **the two routes name the same set** (set identity, not a
|
||||
matching count).
|
||||
|
||||
✅ **Joins to the settled cue table**: 2 388 of 2 405 distinct message ids
|
||||
resolve (99.3 %) through `sound-cue-table.md`'s index.
|
||||
|
||||
⚠️ **A trap that doc had already paid for, and I walked into it anyway.**
|
||||
Rewriting `MSG_`→`VOICE_` unconditionally scores 2 353/2 405, and the 52 misses
|
||||
looked like a finding ("lines with no recording"). 44 of them were a naming
|
||||
artefact: `sound-cue-table.md` states that a name already carrying `VOICE_` keeps
|
||||
the one it has. Applying the documented exception gives 2 388/2 405. Reading the
|
||||
owning doc caught this *after* the first write-up was drafted — the earlier grep
|
||||
found the ownership, but the rule inside it still had to be read.
|
||||
|
||||
✅ **Correction to `squadron-orders.md`** — it rendered the `0x820AEEB0` enum as
|
||||
twelve `ORDER_*` names. The executable's own strings misspell all four SQUADRON
|
||||
entries as **`ORDOR_*`**, and the disc data carries the identical misspelling,
|
||||
which is how the two sides join. That doc's 🔴 "this is a UI/comms axis, not the
|
||||
order classes" now has its explanation: the twelve are bark *events*.
|
||||
|
||||
❔ **Not settled.** What the seven numeric fields mean (schema only, not
|
||||
measured against the running game); the `Yes`/`No` element of each pair; which of
|
||||
the 49 `Sperkers` speakers is a wingman (the "13 tables voice every player-facing
|
||||
event" partition is a count, not a verified roster). 🟡 **8 of the 144 rule
|
||||
tables are named by neither route** — nothing on the disc declares them.
|
||||
`UnitMessageSet_S<NN>.tbl` exists for 22 of the 28 stages and the six missing are
|
||||
exactly **S18–S23, the tutorials** (same set as the missing `AIParams_SNN.tbl`),
|
||||
so tutorial chatter is the plausible reading — but there is no tutorial
|
||||
`UnitMessageSet` to confirm it, so it stays a reading.
|
||||
|
||||
Reference in New Issue
Block a user