Chat: read the host's own wording of each line
DECAL handed the original each line as the chat window shows it, tell links included; the host now reports the same wording (DisplayText). Kill, rare, combat and !report parsing and the chat frame read that, with tags stripped for the frame exactly as before; the plugin's own formatter remains only for a line the host did not word. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
5a94e1cf0b
commit
0af4efb6b6
3 changed files with 28 additions and 1 deletions
|
|
@ -19,6 +19,12 @@ internal static class ChatLineText
|
|||
|
||||
public static string Of(in PluginChatMessage message)
|
||||
{
|
||||
// The host's own wording, tell links included, is the text the
|
||||
// original was handed; the rest of this method is the fallback for a
|
||||
// line the host did not word.
|
||||
if (!string.IsNullOrEmpty(message.DisplayText))
|
||||
return message.DisplayText;
|
||||
|
||||
string text = message.Text ?? string.Empty;
|
||||
string sender = message.Sender ?? string.Empty;
|
||||
bool own = string.IsNullOrEmpty(sender) || sender == "You";
|
||||
|
|
|
|||
|
|
@ -400,11 +400,13 @@ public sealed class RecordingChat : IPluginChat
|
|||
string channelName = "",
|
||||
int logTextType = 0,
|
||||
int combatKind = 0,
|
||||
uint senderObjectId = 0u)
|
||||
uint senderObjectId = 0u,
|
||||
string displayText = "")
|
||||
{
|
||||
var message = new PluginChatMessage(
|
||||
_nextSequence++, senderObjectId, kind, sender, text, channelName)
|
||||
{
|
||||
DisplayText = displayText,
|
||||
LogTextType = logTextType,
|
||||
CombatKind = combatKind,
|
||||
Received = DateTimeOffset.UtcNow,
|
||||
|
|
|
|||
|
|
@ -181,6 +181,25 @@ public sealed class StreamGoldenTests
|
|||
Assert.Single(harness.Frames));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Chat_uses_the_hosts_wording_with_tell_links_stripped_like_the_original()
|
||||
{
|
||||
// The original read DECAL's chat text, which carries tell links; its
|
||||
// chat stream stripped tags (ChatEventRouter.cs:83-91), and its
|
||||
// !report check looked for allegiance lines ending in !report".
|
||||
using var harness = LoggedIn();
|
||||
|
||||
harness.Host.Automation.Chat.Deliver(
|
||||
"!report", kind: 2, sender: "Horan", channelName: "Allegiance", logTextType: 18,
|
||||
displayText: "[Allegiance] <Tell:IIDString:1342177282:Horan>Horan<\\Tell> says, \"!report\"");
|
||||
|
||||
Assert.Equal(
|
||||
"{\"type\":\"chat\",\"timestamp\":\"" + Stamp + "\",\"character_name\":\"Mossy\","
|
||||
+ "\"text\":\"[Allegiance] Horan says, \\\"!report\\\"\",\"color\":18}",
|
||||
Assert.Single(harness.Frames));
|
||||
Assert.StartsWith("/a Total Kills: 0, Kills per Hour: ", Assert.Single(harness.Host.Automation.Chat.Submitted));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Spawn_frame_has_string_coordinates()
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue