re: mission scoring and the S/A/B/C/D rank thresholds
sub_8230D1F8 -- the loader that contaminated the AA_/AV_ offset search -- is the stage-settings loader. Reading its 122 field NAMES instead of its offsets found the scoring block, which nothing in docs/re owned. 24 IDXD objects per language pack x 6 = 144, each holding Score_Easy / Score_Normal / Score_Hard: 72 records per pack on one 22-field schema, no variants. Difficulty moves 10 of the 22 fields and never the five RankScore_* thresholds -- the rank bar is per stage, difficulty scales the earning rate (x0.5 / x1.0 / x2.0) and the penalties. 23 of 24 objects differ from the commonest Normal record; 9 of 72 records zero the scoring entirely. Not settled: which object is which stage. None of AUTO_SETTINGS's 28 filenames resolves to any of the 24 under 19 prefixes, and 24 vs 28 is unexplained. New doc structures/mission-scoring.md, regenerator mission_scoring.py, artefact data/mission-scoring.txt. Twelve artefacts now. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PMRJjbxLqZtsb5Vb7KunPE
This commit is contained in:
@@ -4524,3 +4524,54 @@ a future iteration.
|
||||
`sub_82398CC0` by eye before writing the six-line name-resolution script that
|
||||
settled both candidates. **Write the script first** — it is in the standing rules
|
||||
and I broke it again.
|
||||
|
||||
---
|
||||
|
||||
## ✅ 2026-08-27 — mission scoring and the S/A/B/C/D rank thresholds
|
||||
|
||||
The side finding from the blocked `AA_`/`AV_` item, followed up. New doc
|
||||
[`structures/mission-scoring.md`](structures/mission-scoring.md); regenerator
|
||||
`tools/re-capture/mission_scoring.py`; artefact `data/mission-scoring.txt`
|
||||
(**TWELVE artefacts now**).
|
||||
|
||||
**Docs checked first:** `isl-condition-builtins.md` owns `AUTO_SETTINGS` (the 28
|
||||
`stageNN_settings.tbl` **filenames**); `unit-datasheet-static.md` and
|
||||
`unit-struct-runtime.md` own the *per-unit* `ScorePoint`/`DamageScore`/
|
||||
`MassScore`. **`RankScore`, `TimeBonus`, `KillBonus`, `FFPenalty` and
|
||||
`Difficulty_*` appear nowhere in `docs/re/`** — the scoring rules were unowned.
|
||||
|
||||
✅ **`sub_8230D1F8` is the stage-settings loader**, not just a rank table: its
|
||||
122 name→offset pairs cover cameras, post-processing (bloom/DOF/fog/colour),
|
||||
supply squadrons and movies, phase names — and the scoring block. Reading its
|
||||
**names** rather than its offsets is what identified it; the offsets were the
|
||||
contaminant that blocked the `AA_`/`AV_` item.
|
||||
|
||||
✅ **24 IDXD objects per language pack × 6 = 144**, each holding exactly
|
||||
`Score_Easy` / `Score_Normal` / `Score_Hard` ⇒ 72 records per pack, **one**
|
||||
22-field schema, no variants. Groups: five `RankScore_*` thresholds; three
|
||||
`*Score_Adjustment` multipliers; `MainMissionCount`/`Bonus`; three `TimeBonus_*`;
|
||||
`KillBonus_Maximum`, `FriendlyVesselDamageBonus`, `GettingScoreBasis_*`; five
|
||||
penalties. Two of the game's typos are join keys: **`TimeBonus_Maximun`** and
|
||||
**`FFPenalty_Zessel_Maximum`**.
|
||||
|
||||
✅ **Difficulty changes the earning rate, never the bar.** Comparing the three
|
||||
records inside each object, **10 of 22 fields move and 12 never do — and the 12
|
||||
include all five `RankScore_*`**. Multipliers run `×0.5 / ×1.0 / ×2.0`. So a rank
|
||||
bar is per stage and identical on every difficulty; difficulty scales how fast
|
||||
you earn against it and how hard penalties bite. Measured over all 24 objects,
|
||||
not inferred from the names.
|
||||
|
||||
✅ **23 of 24 objects differ** from the commonest `Score_Normal` record, mostly in
|
||||
the thresholds and the objective count/bonus. **Nine of the 72 records** (three
|
||||
objects × three difficulties) zero the multipliers, penalties and time bonus —
|
||||
unscored missions.
|
||||
|
||||
🔴 **Which object is which stage is NOT settled.** None of `AUTO_SETTINGS`'s 28
|
||||
filenames resolves to any of the 24 objects under **19** prefixes. **24 objects
|
||||
vs 28 declared files is itself unexplained** — and the standing rule applies: do
|
||||
not assume the missing four are the tutorials without opening them.
|
||||
|
||||
**Method note, and it worked:** the offsets that made `sub_8230D1F8` a false
|
||||
positive last iteration are the same offsets that made it findable — but only
|
||||
after switching from *offset* to *name*. Read what a loader names, not where it
|
||||
stores.
|
||||
|
||||
Reference in New Issue
Block a user