diff --git a/TShockAPI/Commands.cs b/TShockAPI/Commands.cs index 4b7af800..38f338ad 100644 --- a/TShockAPI/Commands.cs +++ b/TShockAPI/Commands.cs @@ -3749,12 +3749,7 @@ namespace TShockAPI playerToHeal = args.Player; } - Item heart = TShock.Utils.GetItemById(58); - Item star = TShock.Utils.GetItemById(184); - for (int i = 0; i < 20; i++) - playerToHeal.GiveItem(heart.type, heart.name, heart.width, heart.height, heart.maxStack); - for (int i = 0; i < 10; i++) - playerToHeal.GiveItem(star.type, star.name, star.width, star.height, star.maxStack); + playerToHeal.Heal(); if (playerToHeal == args.Player) { args.Player.SendSuccessMessage("You just got healed!"); diff --git a/TShockAPI/GetDataHandlers.cs b/TShockAPI/GetDataHandlers.cs index abc4d8d6..fceab444 100644 --- a/TShockAPI/GetDataHandlers.cs +++ b/TShockAPI/GetDataHandlers.cs @@ -1322,6 +1322,11 @@ namespace TShockAPI args.Player.PlayerData.maxHealth = max; } + if (args.Player.Group.HasPermission(Permissions.godmode) && (cur < max)) + { + args.Player.Heal(args.TPlayer.statLifeMax); + } + return false; } @@ -1449,7 +1454,7 @@ namespace TShockAPI return true; } } - args.Player.LoginFailsBySsi = false; + args.Player.LoginFailsBySsi = false; if (group.HasPermission(Permissions.ignorestackhackdetection)) args.Player.IgnoreActionsForCheating = "none"; @@ -2937,6 +2942,11 @@ namespace TShockAPI return true; } + if (args.Player.Group.HasPermission(Permissions.godmode)) + { + args.Player.Heal(args.TPlayer.statLifeMax); + } + return false; } diff --git a/TShockAPI/Permissions.cs b/TShockAPI/Permissions.cs index 58190ee2..8330ce8e 100644 --- a/TShockAPI/Permissions.cs +++ b/TShockAPI/Permissions.cs @@ -283,6 +283,9 @@ namespace TShockAPI [Description("User can get the server info.")] public static readonly string serverinfo = "tshock.info"; + [Description("Player recovers health as damage is taken. Can be one shotted.")] + public static readonly string godmode = "tshock.godmode"; + /// /// Lists all commands associated with a given permission /// diff --git a/TShockAPI/TSPlayer.cs b/TShockAPI/TSPlayer.cs index 6f231876..1f695a20 100644 --- a/TShockAPI/TSPlayer.cs +++ b/TShockAPI/TSPlayer.cs @@ -530,10 +530,15 @@ namespace TShockAPI } TPlayer.Teleport(new Vector2(x, y), style); - NetMessage.SendData(65, -1, -1, "", 0, TPlayer.whoAmi, x, y, style); + NetMessage.SendData((int)PacketTypes.Teleport, -1, -1, "", 0, TPlayer.whoAmi, x, y, style); return true; } + public void Heal(int damage = 400) + { + NetMessage.SendData((int)PacketTypes.PlayerHealOther, -1, -1, "", this.TPlayer.whoAmi, damage); + } + public void Spawn() { Spawn(TPlayer.SpawnX, TPlayer.SpawnY); diff --git a/TerrariaServerBins/TerrariaServer.exe b/TerrariaServerBins/TerrariaServer.exe index ff81a103..841efd5f 100644 Binary files a/TerrariaServerBins/TerrariaServer.exe and b/TerrariaServerBins/TerrariaServer.exe differ