fix #270: retry spawn placement until first success (lost-cell recovery analog) + attributed probes
The creation-only spawn placement could no-op or fail during the login flood (cell id not yet hydrated / streaming collision not resident) with nothing retrying - monsters created in that window stayed airborne-flagged forever and their action animations remained refused. Retail's answer to 'object addressed before its cell exists' is the CObjectMaint lost-cell list (GotoLostCell): park, re-place when the cell is available. The UM dispatch path now retries SeedRemoteSpawnPlacement while the body has never been successfully placed (no contact AND no stored plane); one success ends the retries. Probes: [SPAWN-PLACE] logs each placement outcome (guid/cell/ok/ contact/walkable); [UM-ACT]/[MT-FAIL] now carry the owning guid via MotionInterpreter.DiagnosticGuid (probe-identity-attribution lesson) plus the body's live contact/walkable flags. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
4da25a442b
commit
807fdb5f7f
3 changed files with 35 additions and 8 deletions
|
|
@ -45,6 +45,8 @@ internal sealed class LiveEntityMotionRuntimeController
|
|||
rm.Sink = new AcDream.Core.Physics.Motion.MotionTableDispatchSink(sequencer);
|
||||
rm.Motion.DefaultSink = rm.Sink;
|
||||
}
|
||||
// #270 probe identity — strip with the probes.
|
||||
rm.Motion.DiagnosticGuid = serverGuid;
|
||||
// #174 (2026-07-05): the RemoveLinkAnimations seam is retail
|
||||
// CPhysicsObj::RemoveLinkAnimations 0x0050fe20 — a TAILCALL to
|
||||
// CPartArray::HandleEnterWorld 0x00517d70 →
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue