From 0ade98dfab337fc0d4f05641e30df094523a21e8 Mon Sep 17 00:00:00 2001 From: Zack Piispanen Date: Thu, 24 Oct 2013 19:12:17 -0400 Subject: [PATCH] Add fix for duplicating items abusing the disable code. Add in frozen debuff to disable --- TShockAPI/GetDataHandlers.cs | 12 ++++++++++++ TShockAPI/TSPlayer.cs | 9 +++++++++ 2 files changed, 21 insertions(+) diff --git a/TShockAPI/GetDataHandlers.cs b/TShockAPI/GetDataHandlers.cs index e22181f4..49d796f2 100755 --- a/TShockAPI/GetDataHandlers.cs +++ b/TShockAPI/GetDataHandlers.cs @@ -1213,6 +1213,7 @@ namespace TShockAPI {PacketTypes.LiquidSet, HandleLiquidSet}, {PacketTypes.PlayerSpawn, HandleSpawn}, {PacketTypes.ChestGetContents, HandleChestOpen}, + {PacketTypes.ChestOpen, HandleChestActive}, {PacketTypes.ChestItem, HandleChestItem}, {PacketTypes.SignNew, HandleSign}, {PacketTypes.PlayerSlot, HandlePlayerSlot}, @@ -2772,6 +2773,17 @@ namespace TShockAPI return false; } + private static bool HandleChestActive(GetDataHandlerArgs args) + { + var id = args.Data.ReadInt16(); + var x = args.Data.ReadInt32(); + var y = args.Data.ReadInt32(); + + args.Player.ActiveChest = id; + + return false; + } + private static bool HandleChestItem(GetDataHandlerArgs args) { var id = args.Data.ReadInt16(); diff --git a/TShockAPI/TSPlayer.cs b/TShockAPI/TSPlayer.cs index b393a433..edd67a7c 100755 --- a/TShockAPI/TSPlayer.cs +++ b/TShockAPI/TSPlayer.cs @@ -797,12 +797,21 @@ namespace TShockAPI } private DateTime LastDisableNotification = DateTime.UtcNow; + public int ActiveChest = -1; + public virtual void Disable(string reason = "", bool displayConsole = true) { LastThreat = DateTime.UtcNow; SetBuff(33, 330, true); //Weak SetBuff(32, 330, true); //Slow SetBuff(23, 330, true); //Cursed + SetBuff(47, 330, true); //Frozen + + if (ActiveChest != -1) + { + SendData(PacketTypes.ChestOpen, "", -1); + } + if (!string.IsNullOrEmpty(reason)) { if ((DateTime.UtcNow - LastDisableNotification).TotalMilliseconds > 5000)