diff --git a/TShockAPI/Commands.cs b/TShockAPI/Commands.cs index ae093d78..388302ff 100755 --- a/TShockAPI/Commands.cs +++ b/TShockAPI/Commands.cs @@ -147,6 +147,8 @@ namespace TShockAPI ChatCommands.Add(new Command("whisper", "whisper", Whisper)); ChatCommands.Add(new Command("w", "whisper", Whisper)); ChatCommands.Add(new Command("tell", "whisper", Whisper)); + ChatCommands.Add(new Command("r", "whisper", Reply)); + ChatCommands.Add(new Command("reply", "whisper", Reply)); if (ConfigurationManager.DistributationAgent != "terraria-online") { ChatCommands.Add(new Command("kill", "kill", Kill)); @@ -1328,14 +1330,24 @@ namespace TShockAPI else { var plr = players[0]; - var msg = ""; - for (int i = 2; i < args.Parameters.Count; i++ ) - msg += args.Parameters[i] + " "; - msg = msg.TrimEnd(new char[] { ' ' }); + var msg = string.Join(" ", args.Parameters, 1, args.Parameters.Count - 1); plr.SendMessage("(Whisper From)" + "<" + args.Player.Name + ">" + msg, Color.MediumPurple); args.Player.SendMessage("(Whisper To)" + "<" + plr.Name + ">" + msg, Color.MediumPurple); + plr.LastWhisper = args.Player; } } + + private static void Reply(CommandArgs args) + { + if (args.Player.LastWhisper != null) + { + var msg = string.Join(" ", args.Parameters); + args.Player.LastWhisper.SendMessage("(Whisper From)" + "<" + args.Player.Name + ">" + msg, Color.MediumPurple); + args.Player.SendMessage("(Whisper To)" + "<" + args.Player.LastWhisper.Name + ">" + msg, Color.MediumPurple); + } + else + args.Player.SendMessage("You haven't previously received any whispers. Please use /whisper to whisper to other people.", Color.Red); + } #endregion General Commands #region Cheat Commands diff --git a/TShockAPI/TSPlayer.cs b/TShockAPI/TSPlayer.cs index c25eca69..a410490f 100644 --- a/TShockAPI/TSPlayer.cs +++ b/TShockAPI/TSPlayer.cs @@ -40,6 +40,7 @@ namespace TShockAPI public bool InitSpawn = false; public bool DisplayLogs = true; public Vector2 oldSpawn = Vector2.Zero; + public TSPlayer LastWhisper; public bool RealPlayer {