fix(client): restore retail interaction parity
Harden keyboard and camera routing, inventory and vendor interactions, chat/emotes, relog portal flow, and paperdoll rendering. Add retail research, connected gate coverage, and release-gate validation.
This commit is contained in:
parent
0c699240e0
commit
f6fe0f2a4f
151 changed files with 10162 additions and 1211 deletions
|
|
@ -17,6 +17,22 @@ public sealed class ChatCommandTargetStateTests
|
|||
Assert.Equal("Caith", targets.LastOutgoingTellTarget);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void TracksIndependentMonarchAndPatronReplyTargetsFromLegacyBroadcasts()
|
||||
{
|
||||
var chat = new ChatLog();
|
||||
using var targets = new ChatCommandTargetState(chat);
|
||||
|
||||
// 0x0147 does not carry a sender GUID; the incoming sender name is
|
||||
// nevertheless authoritative for retail's monarch/patron reply keys.
|
||||
chat.OnChannelBroadcast(0x4000u, "Monarch", "orders");
|
||||
chat.OnChannelBroadcast(0x2000u, "Patron", "hello");
|
||||
chat.OnChannelBroadcast(0x4000u, "New Monarch", "new orders");
|
||||
|
||||
Assert.Equal("New Monarch", targets.LastMonarchSender);
|
||||
Assert.Equal("Patron", targets.LastPatronSender);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ResetSessionForgetsTargetsButPreservesTranscript()
|
||||
{
|
||||
|
|
@ -29,6 +45,8 @@ public sealed class ChatCommandTargetStateTests
|
|||
|
||||
Assert.Null(targets.LastIncomingTellSender);
|
||||
Assert.Null(targets.LastOutgoingTellTarget);
|
||||
Assert.Null(targets.LastMonarchSender);
|
||||
Assert.Null(targets.LastPatronSender);
|
||||
Assert.Equal(2, chat.Count);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -32,6 +32,12 @@ public sealed class InventoryFailureMessagesTests
|
|||
[InlineData(
|
||||
InventoryRequestKind.SplitToContainer, "Arrows", 0x36u,
|
||||
"The Arrows can't be split - action cancelled")]
|
||||
[InlineData(
|
||||
InventoryRequestKind.Move, "Sword", 0u,
|
||||
"The Sword can't be moved")]
|
||||
[InlineData(
|
||||
InventoryRequestKind.Wield, "Sword", 0x1Du,
|
||||
"The Sword can't be wielded - you're too busy")]
|
||||
public void ComposeMatchesServerSaysAttemptFailed(
|
||||
InventoryRequestKind kind,
|
||||
string name,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue