feat(chat): route retail lifestone commands
Separate retail client actions, ACE server commands, and ordinary chat at the shared router. Port lifestone/lif/ls from the named retail registry through a typed App controller to game action 0x0063, keep unknown verbs on ACE Talk, and cover both UI backends plus exact outbound bytes. Co-Authored-By: Codex <codex@openai.com>
This commit is contained in:
parent
5090aa7217
commit
5a45a7ac7f
19 changed files with 604 additions and 78 deletions
|
|
@ -76,4 +76,17 @@ public sealed class WorldSessionChatTests
|
|||
using var session = NewSession();
|
||||
Assert.Throws<ArgumentNullException>(() => session.SendTalk(null!));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void SendTeleportToLifestone_EmitsRetailGameAction()
|
||||
{
|
||||
using var session = NewSession();
|
||||
byte[]? captured = null;
|
||||
session.GameActionCapture = body => captured = body;
|
||||
|
||||
session.SendTeleportToLifestone();
|
||||
|
||||
Assert.NotNull(captured);
|
||||
Assert.Equal(InteractRequests.BuildTeleToLifestone(1), captured);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue