From 4e26051869b0e4350f043ae6022f9c885f658008 Mon Sep 17 00:00:00 2001 From: SGKoishi Date: Sat, 15 Mar 2025 14:09:00 +0900 Subject: [PATCH 1/2] Fix some confusion introduced by 98eed42 and b184133 --- TShockAPI/DB/CharacterManager.cs | 2 +- TShockAPI/GetDataHandlers.cs | 16 ++++++++++++---- TShockAPI/Permissions.cs | 4 ++++ 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/TShockAPI/DB/CharacterManager.cs b/TShockAPI/DB/CharacterManager.cs index e9e1974a..c0551b65 100644 --- a/TShockAPI/DB/CharacterManager.cs +++ b/TShockAPI/DB/CharacterManager.cs @@ -79,7 +79,7 @@ namespace TShockAPI.DB public PlayerData GetPlayerData(TSPlayer player, int acctid) { - PlayerData playerData = new PlayerData(false); + PlayerData playerData = new PlayerData(true); try { diff --git a/TShockAPI/GetDataHandlers.cs b/TShockAPI/GetDataHandlers.cs index f4b04954..a4969cf0 100644 --- a/TShockAPI/GetDataHandlers.cs +++ b/TShockAPI/GetDataHandlers.cs @@ -3619,8 +3619,9 @@ namespace TShockAPI return false; } - private static readonly int[] invasions = { -1, -2, -3, -4, -5, -6, -7, -8, -10, -11 }; + private static readonly int[] invasions = { -1, -2, -3, -4, -5, -6, -7, -8, -10 }; private static readonly int[] pets = { -12, -13, -14, -15 }; + private static readonly int[] upgrades = { -11, -17, -18 }; private static bool HandleSpawnBoss(GetDataHandlerArgs args) { if (args.Player.IsBouncerThrottled()) @@ -3632,8 +3633,8 @@ namespace TShockAPI var plr = args.Data.ReadInt16(); var thingType = args.Data.ReadInt16(); - var isKnownBoss = thingType > 0 && thingType < Terraria.ID.NPCID.Count && NPCID.Sets.MPAllowedEnemies[thingType]; - if ((isKnownBoss || thingType == -16) && !args.Player.HasPermission(Permissions.summonboss)) + var isKnownBoss = (thingType > 0 && thingType < Terraria.ID.NPCID.Count && NPCID.Sets.MPAllowedEnemies[thingType]) || thingType == -16; + if (isKnownBoss && !args.Player.HasPermission(Permissions.summonboss)) { TShock.Log.ConsoleDebug(GetString("GetDataHandlers / HandleSpawnBoss rejected boss {0} {1}", args.Player.Name, thingType)); args.Player.SendErrorMessage(GetString("You do not have permission to summon bosses.")); @@ -3654,6 +3655,13 @@ namespace TShockAPI return true; } + if (upgrades.Contains(thingType) && !args.Player.HasPermission(Permissions.worldupgrades)) + { + TShock.Log.ConsoleDebug(GetString("GetDataHandlers / HandleSpawnBoss rejected upgrade {0} {1}", args.Player.Name, thingType)); + args.Player.SendErrorMessage(GetString("You do not have permission to use permanent boosters.")); + return true; + } + if (plr != args.Player.Index) return true; @@ -3720,7 +3728,7 @@ namespace TShockAPI break; } - if (NPCID.Sets.MPAllowedEnemies[thingType]) + if (thingType < 0 || isKnownBoss) { if (TShock.Config.Settings.AnonymousBossInvasions) TShock.Utils.SendLogs(thing, Color.PaleVioletRed, args.Player); diff --git a/TShockAPI/Permissions.cs b/TShockAPI/Permissions.cs index 4dd84c67..59df7182 100644 --- a/TShockAPI/Permissions.cs +++ b/TShockAPI/Permissions.cs @@ -346,9 +346,13 @@ namespace TShockAPI [Description("User can change the homes of NPCs.")] public static readonly string movenpc = "tshock.world.movenpc"; + [Obsolete("Feature no longer available.")] [Description("User can convert hallow into corruption and vice-versa.")] public static readonly string converthardmode = "tshock.world.converthardmode"; + [Description("User can use world-based permanent boosters like Advanced Combat Techniques")] + public static readonly string worldupgrades = "tshock.world.worldupgrades"; + [Description("User can force the server to Halloween mode.")] public static readonly string halloween = "tshock.world.sethalloween"; From ea5c274279f2f7b93aad06e968a39489c6f4a231 Mon Sep 17 00:00:00 2001 From: SGKoishi Date: Sat, 15 Mar 2025 14:21:28 +0900 Subject: [PATCH 2/2] Add default permissions --- TShockAPI/DB/GroupManager.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/TShockAPI/DB/GroupManager.cs b/TShockAPI/DB/GroupManager.cs index ed90a11a..4a9f8afb 100644 --- a/TShockAPI/DB/GroupManager.cs +++ b/TShockAPI/DB/GroupManager.cs @@ -74,6 +74,7 @@ namespace TShockAPI.DB Permissions.canchangepassword, Permissions.canlogout, Permissions.summonboss, + Permissions.worldupgrades, Permissions.whisper, Permissions.wormhole, Permissions.canpaint,