acdream/tests/AcDream.App.Tests/Physics
Erik 4da25a442b fix #270: run retail spawn placement at remote-body creation - standing monsters' attack animations restored
The [MT-FAIL] probe caught combat-stance monsters constantly failing to
dispatch 0x40000015 (Falling): their bodies were airborne-flagged while
standing. contact_allows_move (0x00528dd0) requires Contact+OnWalkable
and silently refuses every action animation for an airborne mover - a
spawned-standing monster's swings never played until it first moved.

Retail never has this state: CreateObject spawns run the placement
transition (CPhysicsObj::SetPosition -> SetPositionInternal 0x00515330),
which establishes CONTACT/ON_WALKABLE from the floor at spawn. Our
remote creation seeded a raw position with no placement.

SeedRemoteSpawnPlacement mirrors RemoteTeleportPlacement: engine
placement resolve (Setup-derived cylinder, TS-46) + the verbatim
CommitSetPositionTransition, wired at BOTH RemoteMotion creation sites
(UM-triggered creation - so a first-ever-UM attack animates in the same
packet - and ordinary first-UP creation). Unplaceable results leave the
body airborne exactly like a failed retail placement.

Also adds the [UM-ACT] (wire action items + stamp-gate verdict) and
[MT-FAIL] (refused animation dispatches) probes, riding
ACDREAM_DUMP_MOTION=1, which are what convicted the body state.

Complete Release suite: 10,032 passed / 5 skips / 0 failures.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-30 23:28:57 +02:00
..
DeferredLiveEntityMotionRuntimeBindingsTests.cs fix(physics): TS-46 - seed the sweep from the Setup's own sphere list 2026-07-30 09:05:44 +02:00
InboundInterpretedMotionFactoryTests.cs fix(combat): apply server attack motions locally 2026-07-11 13:34:55 +02:00
LiveCollisionAssetPublisherTests.cs feat(streaming): shadow-publish flat collision assets 2026-07-25 16:38:54 +02:00
LiveEntityCollisionBuilderTests.cs refactor(app): key live projections by runtime identity 2026-07-25 21:50:58 +02:00
LiveEntityInboundAuthorityGateTests.cs fix(interaction): restore retail loot placement and world-drop projection 2026-07-27 00:03:15 +02:00
LiveEntityNetworkBranchRoutingTests.cs refactor(world): extract live entity network updates 2026-07-21 19:11:49 +02:00
LiveEntityOrdinaryPhysicsUpdaterTests.cs fix(physics): TS-46 - seed the sweep from the Setup's own sphere list 2026-07-30 09:05:44 +02:00
MotionTableAttackDispatchProbe.cs fix #270: run retail spawn placement at remote-body creation - standing monsters' attack animations restored 2026-07-30 23:28:57 +02:00
PlayerMovementHiddenTests.cs refactor(world): canonicalize live physics host ownership 2026-07-21 14:05:34 +02:00
ProjectileControllerTests.cs fix(physics): TS-46 - seed the sweep from the Setup's own sphere list 2026-07-30 09:05:44 +02:00
RemoteInboundMotionDispatcherTests.cs feat(physics): port retail complete object frame pipeline 2026-07-20 09:10:31 +02:00
RemotePhysicsUpdaterTests.cs fix(physics): movement-parity fixes - adjusted catch-up cap, autorun retail semantics, AP-30 retired 2026-07-30 15:04:17 +02:00
RemoteTeleportControllerTests.cs refactor(runtime): close simulation ownership 2026-07-26 15:53:31 +02:00
RemoteTeleportHookTests.cs feat(vfx): port retail hidden and teleport presentation 2026-07-14 14:59:48 +02:00
RemoteTeleportPlacementTests.cs refactor(runtime): own per-session physics simulation 2026-07-26 13:39:57 +02:00