feat(vfx): decode retail hooks and typed tables

Replace the incomplete package path with one DatCollection-backed compatibility seam for PhysicsScripts and Animations. Preserve CreateBlockingParticle's inherited payload and following cursor, route every production and audit consumer through the corrected loaders, and apply retail's post-UnPack StartTime ordering.

Add exact stored-order PhysicsScriptTable upper-threshold resolution, high-byte DID and embedded-ID validation, plus live effect profiles with Setup-to-PhysicsDesc precedence across top-level and attached entity lifetimes. Keep blocking execution deferred and narrow TS-11 accordingly.

Pin synthetic malformed/cursor/order fixtures, installed-DAT blocking and recall audits, high-index IDs, IEEE boundaries, profile teardown, and ordinary decoder parity; synchronize architecture, inventory, milestones, roadmap, research, and memory.

Co-Authored-By: Codex <noreply@openai.com>
This commit is contained in:
Erik 2026-07-14 08:17:44 +02:00
parent 8dd996053d
commit 363e046112
31 changed files with 1102 additions and 73 deletions

View file

@ -339,6 +339,11 @@ Oracles:
- `ScriptManager::NextHook` at `0x0051B3F0`
- `ScriptManager::UpdateScripts` at `0x0051B480`
`PhysicsScript::UnPack` at `0x005218B0` first sorts its decoded hook records
by ascending `StartTime` with `PhysicsScriptData::Sort` at `0x00521600`.
This sort applies to PhysicsScript hook time, not to PhysicsScriptTable `Mod`
thresholds (which must remain in stored DAT order).
```text
add(script):
node = new ScriptData
@ -661,11 +666,13 @@ noncopyrighted fixtures:
- `tests/AcDream.Core.Net.Tests/Messages/ProjectileVfxPacketFixtures.cs`:
exact F754/F755, a broad projectile-field CreateObject, isolated Movement
and AnimationFrame branches, and absent-versus-present-zero PeTable shapes.
Step 1 adds truncation at each gated cursor.
Step 1 tests include truncation at each gated cursor.
- `tests/AcDream.Content.Tests/Vfx/ProjectileVfxDatFixtures.cs`: a synthetic raw
PhysicsScript and Animation container, each containing a complete
CreateBlocking payload followed by an AnimationDone hook at the exact
expected cursor.
expected cursor. `RetailDatLoaderTests` verifies both corrected containers,
ordinary-hook parity with the package decoder, malformed-entry rejection,
and representative installed blocking scripts.
Representative installed raw-entry identities are pinned as metadata, not
copied bytes: