From 37487891106f2a9e7bae2d72ee3e0320efc9bba5 Mon Sep 17 00:00:00 2001 From: Stealownz Date: Sat, 5 Jul 2014 00:08:21 +0800 Subject: [PATCH] Adds kick/ban on hardcore death. --- TShockAPI/ConfigFile.cs | 17 +++++++++++++++-- TShockAPI/GetDataHandlers.cs | 13 +++++++++++++ 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/TShockAPI/ConfigFile.cs b/TShockAPI/ConfigFile.cs index 7824267b..26479995 100755 --- a/TShockAPI/ConfigFile.cs +++ b/TShockAPI/ConfigFile.cs @@ -93,9 +93,9 @@ namespace TShockAPI public bool HardcoreOnly; [Description("Mediumcore players ONLY. This means softcore players cannot join.")] public bool MediumcoreOnly; - [Description("Kicks a hardcore player on death.")] + [Description("Kicks a mediumcore player on death.")] public bool KickOnMediumcoreDeath; - [Description("Bans a hardcore player on death.")] + [Description("Bans a mediumcore player on death.")] public bool BanOnMediumcoreDeath; [Description("Enable/disable Terraria's built in auto save.")] @@ -375,6 +375,19 @@ namespace TShockAPI [Description("Specifies which string starts a command")] public string CommandSpecifier = "/"; + + [Description("Kicks a hardcore player on death.")] + public bool KickOnHardcoreDeath; + + [Description("Bans a hardcore player on death.")] + public bool BanOnHardcoreDeath; + + [Description("Bans a hardcore player on death.")] + public string HardcoreBanReason = "Death results in a ban"; + + [Description("Kicks a hardcore player on death.")] + public string HardcoreKickReason = "Death results in a kick"; + /// /// Reads a configuration file from a given path diff --git a/TShockAPI/GetDataHandlers.cs b/TShockAPI/GetDataHandlers.cs index da820780..31503560 100755 --- a/TShockAPI/GetDataHandlers.cs +++ b/TShockAPI/GetDataHandlers.cs @@ -2612,6 +2612,19 @@ namespace TShockAPI } } + if (args.TPlayer.difficulty == 2 && (TShock.Config.KickOnHardcoreDeath || TShock.Config.BanOnHardcoreDeath)) + { + if (TShock.Config.BanOnHardcoreDeath) + { + if (!TShock.Utils.Ban(args.Player, TShock.Config.HardcoreBanReason, false, "hardcore-death")) + TShock.Utils.ForceKick(args.Player, "Death results in a ban, but can't ban you.", true); + } + else + { + TShock.Utils.ForceKick(args.Player, TShock.Config.HardcoreKickReason, true, false); + } + } + if (args.TPlayer.difficulty == 2 && TShock.Config.ServerSideCharacter && args.Player.IsLoggedIn) { User user = TShock.Users.GetUserByName(args.Player.UserAccountName);