fix(world): preserve portal materialization effects
Route accepted Hidden and UnHide transitions through retail's internal typed-script path so their DAT scripts queue while the owner is cell-less and resume at the destination. Consume ACE's successful teleport control statuses silently, matching retail HandleFailureEvent. Co-authored-by: OpenAI Codex <codex@openai.com>
This commit is contained in:
parent
bfb4b26dff
commit
4b1bceefbb
12 changed files with 142 additions and 8 deletions
|
|
@ -271,6 +271,14 @@ PlayerTeleported():
|
|||
SendMovementEvent()
|
||||
```
|
||||
|
||||
The numeric `0x3c` is the internal `ITeleported` completion status, not a
|
||||
player-visible error. `ClientCommunicationSystem::HandleFailureEvent`
|
||||
`0x00571990` has a visible case for `0x3d` (`YouChargedTooFar`) but no case for
|
||||
`0x3b` (`ILeftTheWorld`) or `0x3c`; both fall through without adding scroll
|
||||
text. ACE also sends `ITeleported` after a successful portal use. acdream must
|
||||
consume those two control statuses silently rather than formatting an unknown
|
||||
`WeenieError` line.
|
||||
|
||||
The viewer reset copies the player's complete position into both `viewer` and
|
||||
`viewer_sought_position`. Subsequent ordinary camera updates extend the chase
|
||||
boom outward through the same damped and swept path used after camera
|
||||
|
|
@ -384,6 +392,12 @@ no Marketplace-specific classifier or portal-exit behavior is required.
|
|||
`AnimationSequencer.Manager.HandleEnterWorld`, matching retail's PartArray
|
||||
boundary for player, creature, and object animations without classifying the
|
||||
preceding action.
|
||||
- Hidden/UnHide typed scripts use retail's internal path, not ordinary
|
||||
`CPhysicsObj::play_script` (`0x00513260`). `set_hidden` resolves the current
|
||||
PhysicsScriptTable and calls `play_script_internal` even when the object has
|
||||
no current cell. The serial script remains paused until destination re-entry;
|
||||
this preserves table `0x34000004`'s purple Hidden emitters across asynchronous
|
||||
portal placement. Ordinary F755/default-hook playback retains the cell gate.
|
||||
- Destination residency remains acdream's asynchronous adaptation. It supplies
|
||||
the same `EndTeleportAnimation` edge retail receives when its blocking cell
|
||||
load completes; it does not alter presentation ordering.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue