Fix torchflags

UsingBiomeTorches: Whether or not the player has the torchgod biometorches ability enabled
HappyFunTorchTime: Whether or not the player has fought the torchgod before (for logic that checks for torchgod spawning)
unlockedBiomeTorches: Whether or not the player has the torchgod biome torches ability unlocked
This commit is contained in:
Quinci135 2021-05-23 04:48:01 -07:00
parent 6856c867dd
commit 5581bf5e45
4 changed files with 26 additions and 15 deletions

View file

@ -14,6 +14,7 @@ This is the rolling changelog for TShock for Terraria. Use past tense when addin
## Upcoming changes ## Upcoming changes
* Fixed ridiculous typo in `GetDataHandlers` which caused TShock to read the wrong field in the packet for `usingBiomeTorches`. (@hakusaro, @Arthri) * Fixed ridiculous typo in `GetDataHandlers` which caused TShock to read the wrong field in the packet for `usingBiomeTorches`. (@hakusaro, @Arthri)
* Fixed torchgod settings to include whether or not torchgod has been fought by the player before and respect `usingBiomeTorches` setting. (@Quinci135)
## TShock 4.5.3 ## TShock 4.5.3
* Added permissions for using Teleportation Potions, Magic Conch, and Demon Conch. (@drunderscore) * Added permissions for using Teleportation Potions, Magic Conch, and Demon Conch. (@drunderscore)

View file

@ -56,7 +56,9 @@ namespace TShockAPI.DB
new SqlColumn("skinColor", MySqlDbType.Int32), new SqlColumn("skinColor", MySqlDbType.Int32),
new SqlColumn("eyeColor", MySqlDbType.Int32), new SqlColumn("eyeColor", MySqlDbType.Int32),
new SqlColumn("questsCompleted", MySqlDbType.Int32), new SqlColumn("questsCompleted", MySqlDbType.Int32),
new SqlColumn("unlockedBiomeTorch", MySqlDbType.Int32) new SqlColumn("usingBiomeTorches", MySqlDbType.Int32),
new SqlColumn("happyFunTorchTime", MySqlDbType.Int32),
new SqlColumn("unlockedBiomeTorches", MySqlDbType.Int32)
); );
var creator = new SqlTableCreator(db, var creator = new SqlTableCreator(db,
db.GetSqlType() == SqlType.Sqlite db.GetSqlType() == SqlType.Sqlite
@ -109,7 +111,9 @@ namespace TShockAPI.DB
playerData.skinColor = TShock.Utils.DecodeColor(reader.Get<int?>("skinColor")); playerData.skinColor = TShock.Utils.DecodeColor(reader.Get<int?>("skinColor"));
playerData.eyeColor = TShock.Utils.DecodeColor(reader.Get<int?>("eyeColor")); playerData.eyeColor = TShock.Utils.DecodeColor(reader.Get<int?>("eyeColor"));
playerData.questsCompleted = reader.Get<int>("questsCompleted"); playerData.questsCompleted = reader.Get<int>("questsCompleted");
playerData.unlockedBiomeTorches = reader.Get<int>("unlockedBiomeTorch"); playerData.usingBiomeTorches = reader.Get<int>("usingBiomeTorches");
playerData.happyFunTorchTime = reader.Get<int>("happyFunTorchTime");
playerData.unlockedBiomeTorches = reader.Get<int>("unlockedBiomeTorches");
return playerData; return playerData;
} }
} }
@ -176,8 +180,8 @@ namespace TShockAPI.DB
try try
{ {
database.Query( 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, unlockedBiomeTorch) VALUES (@0, @1, @2, @3, @4, @5, @6, @7, @8, @9, @10, @11, @12, @13, @14, @15, @16, @17, @18, @19, @20, @21);", "INSERT INTO tsCharacter (Account, Health, MaxHealth, Mana, MaxMana, Inventory, extraSlot, spawnX, spawnY, skinVariant, hair, hairDye, hairColor, pantsColor, shirtColor, underShirtColor, shoeColor, hideVisuals, skinColor, eyeColor, questsCompleted, usingBiomeTorches, happyFunTorchTime, unlockedBiomeTorches) VALUES (@0, @1, @2, @3, @4, @5, @6, @7, @8, @9, @10, @11, @12, @13, @14, @15, @16, @17, @18, @19, @20, @21, @22, @23);",
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); 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.UsingBiomeTorches ? 1 : 0, player.TPlayer.happyFunTorchTime ? 1 : 0, player.TPlayer.unlockedBiomeTorches ? 1 : 0);
return true; return true;
} }
catch (Exception ex) catch (Exception ex)
@ -190,8 +194,8 @@ namespace TShockAPI.DB
try try
{ {
database.Query( 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, unlockedBiomeTorch = @21 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, usingBiomeTorches = @21, happyFunTorchTime = @22, unlockedBiomeTorches = @23 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); 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.UsingBiomeTorches ? 1 : 0, player.TPlayer.happyFunTorchTime ? 1 : 0, player.TPlayer.unlockedBiomeTorches ? 1 : 0);
return true; return true;
} }
catch (Exception ex) catch (Exception ex)
@ -246,7 +250,7 @@ namespace TShockAPI.DB
try try
{ {
database.Query( 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, unlockedBiomeTorch) VALUES (@0, @1, @2, @3, @4, @5, @6, @7, @8, @9, @10, @11, @12, @13, @14, @15, @16, @17, @18, @19, @20, @21);", "INSERT INTO tsCharacter (Account, Health, MaxHealth, Mana, MaxMana, Inventory, extraSlot, spawnX, spawnY, skinVariant, hair, hairDye, hairColor, pantsColor, shirtColor, underShirtColor, shoeColor, hideVisuals, skinColor, eyeColor, questsCompleted, usingBiomeTorches, happyFunTorchTime, unlockedBiomeTorches) VALUES (@0, @1, @2, @3, @4, @5, @6, @7, @8, @9, @10, @11, @12, @13, @14, @15, @16, @17, @18, @19, @20, @21, @22, @23);",
player.Account.ID, player.Account.ID,
playerData.health, playerData.health,
playerData.maxHealth, playerData.maxHealth,
@ -268,6 +272,8 @@ namespace TShockAPI.DB
TShock.Utils.EncodeColor(playerData.skinColor), TShock.Utils.EncodeColor(playerData.skinColor),
TShock.Utils.EncodeColor(playerData.eyeColor), TShock.Utils.EncodeColor(playerData.eyeColor),
playerData.questsCompleted, playerData.questsCompleted,
playerData.usingBiomeTorches,
playerData.happyFunTorchTime,
playerData.unlockedBiomeTorches); playerData.unlockedBiomeTorches);
return true; return true;
} }
@ -281,7 +287,7 @@ namespace TShockAPI.DB
try try
{ {
database.Query( 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, unlockedBiomeTorch = @21 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, usingBiomeTorches = @21, happyFunTorchTime = @22, unlockedBiomeTorches = @23 WHERE Account = @5;",
playerData.health, playerData.health,
playerData.maxHealth, playerData.maxHealth,
playerData.mana, playerData.mana,
@ -303,6 +309,8 @@ namespace TShockAPI.DB
TShock.Utils.EncodeColor(playerData.eyeColor), TShock.Utils.EncodeColor(playerData.eyeColor),
playerData.questsCompleted, playerData.questsCompleted,
playerData.extraSlot ?? 0, playerData.extraSlot ?? 0,
playerData.usingBiomeTorches,
playerData.happyFunTorchTime,
playerData.unlockedBiomeTorches); playerData.unlockedBiomeTorches);
return true; return true;
} }

View file

@ -2305,8 +2305,9 @@ namespace TShockAPI
args.Player.TPlayer.hideVisibleAccessory[i+8] = hideVisual2[i]; args.Player.TPlayer.hideVisibleAccessory[i+8] = hideVisual2[i];
args.Player.TPlayer.hideMisc = hideMisc; args.Player.TPlayer.hideMisc = hideMisc;
args.Player.TPlayer.extraAccessory = extraSlot; args.Player.TPlayer.extraAccessory = extraSlot;
args.Player.TPlayer.unlockedBiomeTorches = unlockedBiomeTorches;
args.Player.TPlayer.UsingBiomeTorches = usingBiomeTorches; args.Player.TPlayer.UsingBiomeTorches = usingBiomeTorches;
args.Player.TPlayer.happyFunTorchTime = happyFunTorchTime;
args.Player.TPlayer.unlockedBiomeTorches = unlockedBiomeTorches;
NetMessage.SendData((int)PacketTypes.PlayerInfo, -1, args.Player.Index, NetworkText.FromLiteral(args.Player.Name), args.Player.Index); NetMessage.SendData((int)PacketTypes.PlayerInfo, -1, args.Player.Index, NetworkText.FromLiteral(args.Player.Name), args.Player.Index);
return true; return true;

View file

@ -49,6 +49,8 @@ namespace TShockAPI
public Color? eyeColor; public Color? eyeColor;
public bool[] hideVisuals; public bool[] hideVisuals;
public int questsCompleted; public int questsCompleted;
public int usingBiomeTorches;
public int happyFunTorchTime = 1;
public int unlockedBiomeTorches; public int unlockedBiomeTorches;
public PlayerData(TSPlayer player) public PlayerData(TSPlayer player)
@ -115,6 +117,8 @@ namespace TShockAPI
this.skinColor = player.TPlayer.skinColor; this.skinColor = player.TPlayer.skinColor;
this.eyeColor = player.TPlayer.eyeColor; this.eyeColor = player.TPlayer.eyeColor;
this.questsCompleted = player.TPlayer.anglerQuestsFinished; this.questsCompleted = player.TPlayer.anglerQuestsFinished;
this.usingBiomeTorches = player.TPlayer.UsingBiomeTorches ? 1 : 0;
this.happyFunTorchTime = player.TPlayer.happyFunTorchTime ? 1 : 0;
this.unlockedBiomeTorches = player.TPlayer.unlockedBiomeTorches ? 1 : 0; this.unlockedBiomeTorches = player.TPlayer.unlockedBiomeTorches ? 1 : 0;
Item[] inventory = player.TPlayer.inventory; Item[] inventory = player.TPlayer.inventory;
@ -210,6 +214,9 @@ namespace TShockAPI
player.sY = this.spawnY; player.sY = this.spawnY;
player.TPlayer.hairDye = this.hairDye; player.TPlayer.hairDye = this.hairDye;
player.TPlayer.anglerQuestsFinished = this.questsCompleted; player.TPlayer.anglerQuestsFinished = this.questsCompleted;
player.TPlayer.UsingBiomeTorches = this.usingBiomeTorches == 1;
player.TPlayer.happyFunTorchTime = this.happyFunTorchTime == 1;
player.TPlayer.unlockedBiomeTorches = this.unlockedBiomeTorches == 1;
if (extraSlot != null) if (extraSlot != null)
player.TPlayer.extraAccessory = extraSlot.Value == 1 ? true : false; player.TPlayer.extraAccessory = extraSlot.Value == 1 ? true : false;
@ -237,12 +244,6 @@ namespace TShockAPI
else else
player.TPlayer.hideVisibleAccessory = new bool[player.TPlayer.hideVisibleAccessory.Length]; 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++) for (int i = 0; i < NetItem.MaxInventory; i++)
{ {
if (i < NetItem.InventoryIndex.Item2) if (i < NetItem.InventoryIndex.Item2)