From 8969ce4a949d49de52a1c2d75bbe5ef5dfedbd57 Mon Sep 17 00:00:00 2001 From: Stealownz Date: Sun, 1 Nov 2020 22:47:51 +0800 Subject: [PATCH 1/2] Add Torch God's Favor to SSC Closes #2031 --- TShockAPI/DB/CharacterManager.cs | 22 +++++++++++++--------- TShockAPI/GetDataHandlers.cs | 4 ++++ TShockAPI/PlayerData.cs | 8 ++++++++ 3 files changed, 25 insertions(+), 9 deletions(-) diff --git a/TShockAPI/DB/CharacterManager.cs b/TShockAPI/DB/CharacterManager.cs index cd2ff426..d057c39a 100644 --- a/TShockAPI/DB/CharacterManager.cs +++ b/TShockAPI/DB/CharacterManager.cs @@ -55,7 +55,8 @@ namespace TShockAPI.DB new SqlColumn("hideVisuals", MySqlDbType.Int32), new SqlColumn("skinColor", MySqlDbType.Int32), new SqlColumn("eyeColor", MySqlDbType.Int32), - new SqlColumn("questsCompleted", MySqlDbType.Int32) + new SqlColumn("questsCompleted", MySqlDbType.Int32), + new SqlColumn("unlockedBiomeTorch", MySqlDbType.Int32) ); var creator = new SqlTableCreator(db, db.GetSqlType() == SqlType.Sqlite @@ -108,6 +109,7 @@ namespace TShockAPI.DB playerData.skinColor = TShock.Utils.DecodeColor(reader.Get("skinColor")); playerData.eyeColor = TShock.Utils.DecodeColor(reader.Get("eyeColor")); playerData.questsCompleted = reader.Get("questsCompleted"); + playerData.unlockedBiomeTorches = reader.Get("unlockedBiomeTorch"); return playerData; } } @@ -174,8 +176,8 @@ namespace TShockAPI.DB try { database.Query( - "INSERT INTO tsCharacter (Account, Health, MaxHealth, Mana, MaxMana, Inventory, extraSlot, spawnX, spawnY, skinVariant, hair, hairDye, hairColor, pantsColor, shirtColor, underShirtColor, shoeColor, hideVisuals, skinColor, eyeColor, questsCompleted) VALUES (@0, @1, @2, @3, @4, @5, @6, @7, @8, @9, @10, @11, @12, @13, @14, @15, @16, @17, @18, @19, @20);", - player.Account.ID, playerData.health, playerData.maxHealth, playerData.mana, playerData.maxMana, String.Join("~", playerData.inventory), playerData.extraSlot, player.TPlayer.SpawnX, player.TPlayer.SpawnY, player.TPlayer.skinVariant, player.TPlayer.hair, player.TPlayer.hairDye, TShock.Utils.EncodeColor(player.TPlayer.hairColor), TShock.Utils.EncodeColor(player.TPlayer.pantsColor),TShock.Utils.EncodeColor(player.TPlayer.shirtColor), TShock.Utils.EncodeColor(player.TPlayer.underShirtColor), TShock.Utils.EncodeColor(player.TPlayer.shoeColor), TShock.Utils.EncodeBoolArray(player.TPlayer.hideVisibleAccessory), TShock.Utils.EncodeColor(player.TPlayer.skinColor),TShock.Utils.EncodeColor(player.TPlayer.eyeColor), player.TPlayer.anglerQuestsFinished); + "INSERT INTO tsCharacter (Account, Health, MaxHealth, Mana, MaxMana, Inventory, extraSlot, spawnX, spawnY, skinVariant, hair, hairDye, hairColor, pantsColor, shirtColor, underShirtColor, shoeColor, hideVisuals, skinColor, eyeColor, questsCompleted, unlockedBiomeTorch) VALUES (@0, @1, @2, @3, @4, @5, @6, @7, @8, @9, @10, @11, @12, @13, @14, @15, @16, @17, @18, @19, @20, @21);", + player.Account.ID, playerData.health, playerData.maxHealth, playerData.mana, playerData.maxMana, String.Join("~", playerData.inventory), playerData.extraSlot, player.TPlayer.SpawnX, player.TPlayer.SpawnY, player.TPlayer.skinVariant, player.TPlayer.hair, player.TPlayer.hairDye, TShock.Utils.EncodeColor(player.TPlayer.hairColor), TShock.Utils.EncodeColor(player.TPlayer.pantsColor),TShock.Utils.EncodeColor(player.TPlayer.shirtColor), TShock.Utils.EncodeColor(player.TPlayer.underShirtColor), TShock.Utils.EncodeColor(player.TPlayer.shoeColor), TShock.Utils.EncodeBoolArray(player.TPlayer.hideVisibleAccessory), TShock.Utils.EncodeColor(player.TPlayer.skinColor),TShock.Utils.EncodeColor(player.TPlayer.eyeColor), player.TPlayer.anglerQuestsFinished, player.TPlayer.unlockedBiomeTorches ? 1 : 0); return true; } catch (Exception ex) @@ -188,8 +190,8 @@ namespace TShockAPI.DB try { database.Query( - "UPDATE tsCharacter SET Health = @0, MaxHealth = @1, Mana = @2, MaxMana = @3, Inventory = @4, spawnX = @6, spawnY = @7, hair = @8, hairDye = @9, hairColor = @10, pantsColor = @11, shirtColor = @12, underShirtColor = @13, shoeColor = @14, hideVisuals = @15, skinColor = @16, eyeColor = @17, questsCompleted = @18, skinVariant = @19, extraSlot = @20 WHERE Account = @5;", - playerData.health, playerData.maxHealth, playerData.mana, playerData.maxMana, String.Join("~", playerData.inventory), player.Account.ID, player.TPlayer.SpawnX, player.TPlayer.SpawnY, player.TPlayer.hair, player.TPlayer.hairDye, TShock.Utils.EncodeColor(player.TPlayer.hairColor), TShock.Utils.EncodeColor(player.TPlayer.pantsColor), TShock.Utils.EncodeColor(player.TPlayer.shirtColor), TShock.Utils.EncodeColor(player.TPlayer.underShirtColor), TShock.Utils.EncodeColor(player.TPlayer.shoeColor), TShock.Utils.EncodeBoolArray(player.TPlayer.hideVisibleAccessory), TShock.Utils.EncodeColor(player.TPlayer.skinColor), TShock.Utils.EncodeColor(player.TPlayer.eyeColor), player.TPlayer.anglerQuestsFinished, player.TPlayer.skinVariant, player.TPlayer.extraAccessory ? 1 : 0); + "UPDATE tsCharacter SET Health = @0, MaxHealth = @1, Mana = @2, MaxMana = @3, Inventory = @4, spawnX = @6, spawnY = @7, hair = @8, hairDye = @9, hairColor = @10, pantsColor = @11, shirtColor = @12, underShirtColor = @13, shoeColor = @14, hideVisuals = @15, skinColor = @16, eyeColor = @17, questsCompleted = @18, skinVariant = @19, extraSlot = @20, unlockedBiomeTorch = @21 WHERE Account = @5;", + playerData.health, playerData.maxHealth, playerData.mana, playerData.maxMana, String.Join("~", playerData.inventory), player.Account.ID, player.TPlayer.SpawnX, player.TPlayer.SpawnY, player.TPlayer.hair, player.TPlayer.hairDye, TShock.Utils.EncodeColor(player.TPlayer.hairColor), TShock.Utils.EncodeColor(player.TPlayer.pantsColor), TShock.Utils.EncodeColor(player.TPlayer.shirtColor), TShock.Utils.EncodeColor(player.TPlayer.underShirtColor), TShock.Utils.EncodeColor(player.TPlayer.shoeColor), TShock.Utils.EncodeBoolArray(player.TPlayer.hideVisibleAccessory), TShock.Utils.EncodeColor(player.TPlayer.skinColor), TShock.Utils.EncodeColor(player.TPlayer.eyeColor), player.TPlayer.anglerQuestsFinished, player.TPlayer.skinVariant, player.TPlayer.extraAccessory ? 1 : 0, player.TPlayer.unlockedBiomeTorches ? 1 : 0); return true; } catch (Exception ex) @@ -244,7 +246,7 @@ namespace TShockAPI.DB try { database.Query( - "INSERT INTO tsCharacter (Account, Health, MaxHealth, Mana, MaxMana, Inventory, extraSlot, spawnX, spawnY, skinVariant, hair, hairDye, hairColor, pantsColor, shirtColor, underShirtColor, shoeColor, hideVisuals, skinColor, eyeColor, questsCompleted) VALUES (@0, @1, @2, @3, @4, @5, @6, @7, @8, @9, @10, @11, @12, @13, @14, @15, @16, @17, @18, @19, @20);", + "INSERT INTO tsCharacter (Account, Health, MaxHealth, Mana, MaxMana, Inventory, extraSlot, spawnX, spawnY, skinVariant, hair, hairDye, hairColor, pantsColor, shirtColor, underShirtColor, shoeColor, hideVisuals, skinColor, eyeColor, questsCompleted, unlockedBiomeTorch) VALUES (@0, @1, @2, @3, @4, @5, @6, @7, @8, @9, @10, @11, @12, @13, @14, @15, @16, @17, @18, @19, @20, @21);", player.Account.ID, playerData.health, playerData.maxHealth, @@ -265,7 +267,8 @@ namespace TShockAPI.DB TShock.Utils.EncodeBoolArray(playerData.hideVisuals), TShock.Utils.EncodeColor(playerData.skinColor), TShock.Utils.EncodeColor(playerData.eyeColor), - playerData.questsCompleted); + playerData.questsCompleted, + playerData.unlockedBiomeTorches); return true; } catch (Exception ex) @@ -278,7 +281,7 @@ namespace TShockAPI.DB try { database.Query( - "UPDATE tsCharacter SET Health = @0, MaxHealth = @1, Mana = @2, MaxMana = @3, Inventory = @4, spawnX = @6, spawnY = @7, hair = @8, hairDye = @9, hairColor = @10, pantsColor = @11, shirtColor = @12, underShirtColor = @13, shoeColor = @14, hideVisuals = @15, skinColor = @16, eyeColor = @17, questsCompleted = @18, skinVariant = @19, extraSlot = @20 WHERE Account = @5;", + "UPDATE tsCharacter SET Health = @0, MaxHealth = @1, Mana = @2, MaxMana = @3, Inventory = @4, spawnX = @6, spawnY = @7, hair = @8, hairDye = @9, hairColor = @10, pantsColor = @11, shirtColor = @12, underShirtColor = @13, shoeColor = @14, hideVisuals = @15, skinColor = @16, eyeColor = @17, questsCompleted = @18, skinVariant = @19, extraSlot = @20, unlockedBiomeTorch = @21 WHERE Account = @5;", playerData.health, playerData.maxHealth, playerData.mana, @@ -299,7 +302,8 @@ namespace TShockAPI.DB TShock.Utils.EncodeColor(playerData.skinColor), TShock.Utils.EncodeColor(playerData.eyeColor), playerData.questsCompleted, - playerData.extraSlot ?? 0); + playerData.extraSlot ?? 0, + playerData.unlockedBiomeTorches); return true; } catch (Exception ex) diff --git a/TShockAPI/GetDataHandlers.cs b/TShockAPI/GetDataHandlers.cs index 788b63ab..7f2c5c41 100644 --- a/TShockAPI/GetDataHandlers.cs +++ b/TShockAPI/GetDataHandlers.cs @@ -2248,6 +2248,7 @@ namespace TShockAPI BitsByte torchFlags = args.Data.ReadInt8(); bool usingBiomeTorches = torchFlags[0]; bool happyFunTorchTime = torchFlags[1]; + bool unlockedBiomeTorches = torchFlags[2]; if (OnPlayerInfo(args.Player, args.Data, playerid, hair, skinVariant, difficulty, name)) { @@ -2285,6 +2286,9 @@ namespace TShockAPI args.Player.TPlayer.hideVisibleAccessory[i+8] = hideVisual2[i]; args.Player.TPlayer.hideMisc = hideMisc; args.Player.TPlayer.extraAccessory = extraSlot; + args.Player.TPlayer.unlockedBiomeTorches = unlockedBiomeTorches; + args.Player.TPlayer.UsingBiomeTorches = unlockedBiomeTorches; + NetMessage.SendData((int)PacketTypes.PlayerInfo, -1, args.Player.Index, NetworkText.FromLiteral(args.Player.Name), args.Player.Index); return true; } diff --git a/TShockAPI/PlayerData.cs b/TShockAPI/PlayerData.cs index d6540e34..76be1421 100644 --- a/TShockAPI/PlayerData.cs +++ b/TShockAPI/PlayerData.cs @@ -49,6 +49,7 @@ namespace TShockAPI public Color? eyeColor; public bool[] hideVisuals; public int questsCompleted; + public int unlockedBiomeTorches; public PlayerData(TSPlayer player) { @@ -114,6 +115,7 @@ namespace TShockAPI this.skinColor = player.TPlayer.skinColor; this.eyeColor = player.TPlayer.eyeColor; this.questsCompleted = player.TPlayer.anglerQuestsFinished; + this.unlockedBiomeTorches = player.TPlayer.unlockedBiomeTorches ? 1 : 0; Item[] inventory = player.TPlayer.inventory; Item[] armor = player.TPlayer.armor; @@ -235,6 +237,12 @@ namespace TShockAPI else player.TPlayer.hideVisibleAccessory = new bool[player.TPlayer.hideVisibleAccessory.Length]; + if (this.unlockedBiomeTorches != null) + { + player.TPlayer.unlockedBiomeTorches = this.unlockedBiomeTorches == 1 ? true : false; + player.TPlayer.UsingBiomeTorches = this.unlockedBiomeTorches == 1 ? true : false; + } + for (int i = 0; i < NetItem.MaxInventory; i++) { if (i < NetItem.InventoryIndex.Item2) From d90302fcdcf3557702a3be49700c8617e53c4a9a Mon Sep 17 00:00:00 2001 From: Stealownz Date: Sun, 1 Nov 2020 22:56:11 +0800 Subject: [PATCH 2/2] Update CHANGELOG.md --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a7f67190..cbac005b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,7 +13,7 @@ This is the rolling changelog for TShock for Terraria. Use past tense when addin * If there is no section called "Upcoming changes" below this line, please add one with `## Upcoming changes` as the first line, and then a bulleted item directly after with the first change. ## Upcoming changes - +* Added Torch God's Favor support in SSC. (@Stealownz) ## TShock 4.4.0 (Pre-release 13) * Terraria v1.4.1.1