From 9e59de4f5a043ab60684de55161113c00692ea22 Mon Sep 17 00:00:00 2001 From: Zack Piispanen Date: Thu, 3 Oct 2013 23:26:53 -0400 Subject: [PATCH] Add more annoy commands, because MarioE loves them so much ;) --- TShockAPI/Commands.cs | 43 ++++++++++++++++++++++++++++++++++++ TShockAPI/GetDataHandlers.cs | 36 +++++++++++++++++++++++++++++- TShockAPI/TSPlayer.cs | 7 +++++- 3 files changed, 84 insertions(+), 2 deletions(-) diff --git a/TShockAPI/Commands.cs b/TShockAPI/Commands.cs index cc84f935..f5d04037 100755 --- a/TShockAPI/Commands.cs +++ b/TShockAPI/Commands.cs @@ -230,6 +230,8 @@ namespace TShockAPI add(Permissions.whisper, Whisper, "whisper", "w", "tell"); add(Permissions.whisper, Reply, "reply", "r"); add(Permissions.annoy, Annoy, "annoy"); + add(Permissions.annoy, Confuse, "confuse"); + add(Permissions.annoy, Rocket, "rocket"); add(Permissions.kill, Kill, "kill"); add(Permissions.godmode, ToggleGodMode, "godmode"); add(Permissions.butcher, Butcher, "butcher"); @@ -3558,6 +3560,47 @@ namespace TShockAPI } } + private static void Confuse(CommandArgs args) + { + if (args.Parameters.Count != 1) + { + args.Player.SendErrorMessage("Invalid syntax! Proper syntax: /confuse "); + return; + } + var players = TShock.Utils.FindPlayer(args.Parameters[0]); + if (players.Count == 0) + args.Player.SendErrorMessage("Invalid player!"); + else if (players.Count > 1) + TShock.Utils.SendMultipleMatchError(args.Player, players.Select(p => p.Name)); + else + { + var ply = players[0]; + ply.Confused = !ply.Confused; + args.Player.SendSuccessMessage("{0} is {1} confused.", ply.Name, ply.Confused ? "now" : "no longer"); + } + } + + private static void Rocket(CommandArgs args) + { + if (args.Parameters.Count != 1) + { + args.Player.SendErrorMessage("Invalid syntax! Proper syntax: /rocket "); + return; + } + var players = TShock.Utils.FindPlayer(args.Parameters[0]); + if (players.Count == 0) + args.Player.SendErrorMessage("Invalid player!"); + else if (players.Count > 1) + TShock.Utils.SendMultipleMatchError(args.Player, players.Select(p => p.Name)); + else + { + var ply = players[0]; + ply.TPlayer.velocity.Y = -50; + TSPlayer.All.SendData(PacketTypes.PlayerUpdate, "", ply.Index); + args.Player.SendSuccessMessage("Rocketed {0}.", ply.Name); + } + } + private static void Aliases(CommandArgs args) { if (args.Parameters.Count < 1) diff --git a/TShockAPI/GetDataHandlers.cs b/TShockAPI/GetDataHandlers.cs index ad3bb608..e969720b 100755 --- a/TShockAPI/GetDataHandlers.cs +++ b/TShockAPI/GetDataHandlers.cs @@ -2309,8 +2309,42 @@ namespace TShockAPI { args.TPlayer.direction = 1; } - NetMessage.SendData((int) PacketTypes.PlayerUpdate, -1, args.Player.Index, "", args.Player.Index); + + + if (args.Player.Confused && TShock.Config.ServerSideCharacter && args.Player.IsLoggedIn) + { + if (args.TPlayer.controlUp) + { + args.TPlayer.controlDown = true; + args.TPlayer.controlUp = false; + } + else if (args.TPlayer.controlDown) + { + args.TPlayer.controlDown = false; + args.TPlayer.controlUp = true; + } + + if (args.TPlayer.controlLeft) + { + args.TPlayer.controlRight = true; + args.TPlayer.controlLeft = false; + } + else if (args.TPlayer.controlRight) + { + args.TPlayer.controlRight = false; + args.TPlayer.controlLeft = true; + } + + + args.TPlayer.UpdatePlayer(args.TPlayer.whoAmi); + NetMessage.SendData((int)PacketTypes.PlayerUpdate, -1, -1, "", args.Player.Index); + return true; + } + + + + NetMessage.SendData((int)PacketTypes.PlayerUpdate, -1, args.Player.Index, "", args.Player.Index); return true; } diff --git a/TShockAPI/TSPlayer.cs b/TShockAPI/TSPlayer.cs index 950df7cb..ae778248 100755 --- a/TShockAPI/TSPlayer.cs +++ b/TShockAPI/TSPlayer.cs @@ -293,7 +293,12 @@ namespace TShockAPI /// public bool GodMode = false; - /// + /// + /// Players controls are inverted if using SSC + /// + public bool Confused = false; + + /// /// Whether the player is a real, human, player on the server. /// public bool RealPlayer