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
|
|
@ -139,6 +139,9 @@ public sealed class ChatLog
|
|||
/// </remarks>
|
||||
public void OnWeenieError(uint errorId, string? param)
|
||||
{
|
||||
if (WeenieErrorMessages.IsSilentClientControlStatus(errorId))
|
||||
return;
|
||||
|
||||
// Phase I (post-launch fix): translate the wire code into the
|
||||
// retail-faithful template via WeenieErrorMessages. Many codes
|
||||
// are *informational* (e.g. 0x051B "You have entered the X
|
||||
|
|
|
|||
|
|
@ -32,6 +32,20 @@ namespace AcDream.Core.Chat;
|
|||
/// </summary>
|
||||
public static class WeenieErrorMessages
|
||||
{
|
||||
/// <summary>
|
||||
/// Returns true for internal client-control statuses that retail consumes
|
||||
/// without adding a line to the chat scroll.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// <c>ClientCommunicationSystem::HandleFailureEvent</c>
|
||||
/// (<c>0x00571990</c>) has no display case for ILeftTheWorld
|
||||
/// (<c>0x003B</c>) or ITeleported (<c>0x003C</c>). ACE sends the latter
|
||||
/// after a successful portal use; presenting it as a failure is therefore
|
||||
/// an acdream-only artifact.
|
||||
/// </remarks>
|
||||
public static bool IsSilentClientControlStatus(uint errorCode) =>
|
||||
errorCode is 0x003Bu or 0x003Cu;
|
||||
|
||||
/// <summary>
|
||||
/// Format a WeenieError / WeenieErrorWithString into a human-readable
|
||||
/// system-message string.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue