/// <summary> /// Sets the chest item at the specified index. /// </summary> /// <param name="player">The player, which must not be <c>null</c>.</param> /// <param name="index">The index, which must be valid.</param> /// <param name="item">The item.</param> public static void SetChestItem([NotNull] this TSPlayer player, int index, NetItem item) { Debug.Assert(player != null, "Player must not be null."); Debug.Assert(0 <= index && index < Chest.maxItems, "Index must be valid."); player.SetData(ChestItemKey + index, item); }
public static NetItem ToNetItem(Item item) { NetItem toRet = new NetItem(); if (item.modItem != null) { string nameSpace = item.modItem.GetType().Namespace; string itemName = item.modItem.GetType().Name; toRet.ItemID = -1; toRet.IsModItem = true; toRet.Prefix = item.prefix; toRet.ModName = nameSpace; toRet.ItemName = itemName; toRet.IsFavorite = item.favorited; return(toRet); } else { toRet.ItemID = item.netID; toRet.IsModItem = false; toRet.Prefix = item.prefix; toRet.ModName = ""; toRet.ItemName = ""; toRet.IsFavorite = item.favorited; return(toRet); } }
public PlayerData GetPlayerData(TSPlayer player, int acctid) { PlayerData playerData = new PlayerData(player); try { using (var reader = database.QueryReader("SELECT * FROM tsCharacter WHERE Account=@0", acctid)) { if (reader.Read()) { playerData.exists = true; playerData.health = reader.Get <int>("Health"); playerData.maxHealth = reader.Get <int>("MaxHealth"); playerData.mana = reader.Get <int>("Mana"); playerData.maxMana = reader.Get <int>("MaxMana"); playerData.inventory = NetItem.Parse(reader.Get <string>("Inventory")); playerData.spawnX = reader.Get <int>("spawnX"); playerData.spawnY = reader.Get <int>("spawnY"); return(playerData); } } } catch (Exception ex) { Log.Error(ex.ToString()); } return(playerData); }
public override void Initialize(NetItem item) { base.Initialize(item); NetHoldable hold = item as NetHoldable; Damage = hold.Damage; Type = hold.Type; }
public override void Initialize(NetItem item) { base.Initialize(item); Netwearable wear = item as Netwearable; Space = wear.Space; Type = wear.Type; }
public static Item NetItem2Item(NetItem item) { var i = new Item(); i.SetDefaults(item.NetId); i.stack = item.Stack; i.prefix = item.PrefixId; return(i); }
public virtual void Initialize(NetItem item) { Name = item.Name; ID = item.ID; Health = item.Health; PrefabAddress = item.PrefabAddress; IconAddress = item.IconAddress; Slot = item.Slot; }
public static void JsonObject(Packet packet) { int id = packet.ReadInt(); if (!GameManager.players.ContainsKey(id)) { return; } string json = packet.ReadString(); JsonSerializerSettings settings = new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.All }; NetEntity jsonObj = JsonConvert.DeserializeObject <NetEntity>(json, settings); if (jsonObj is NetAnimator) { GameManager.players[id].Animator.Set(jsonObj as NetAnimator); return; } if (jsonObj is BuildingData) { GameManager.instance.SpawnStructure(jsonObj as BuildingData); return; } if (jsonObj is NetItem) { NetItem netItem = jsonObj as NetItem; if (netItem is Netwearable) { Netwearable netWear = netItem as Netwearable; Wearable wear = new Wearable(); wear.Initialize(netWear); GameManager.instance.ChangeInventory(id, wear); } if (netItem is NetHoldable) { NetHoldable netHold = netItem as NetHoldable; Holdable hold = new Holdable(); hold.Initialize(netHold); GameManager.instance.ChangeInventory(id, hold); } return; } if (jsonObj is NetLoot) { NetLoot netLoot = jsonObj as NetLoot; GameManager.instance.CheckLoot(netLoot); } if (jsonObj is NetInventory) { Debug.Log("update inventory"); } }
public int IndexOf(ItemData item) { for (int i = 0; i < this.itemArray.Length; i++) { NetItem tItem = this.itemArray[0]; if (tItem.NetId == (int)item.Type && tItem.Stack == item.StackSize && tItem.PrefixId == (int)item.Prefix) { return(i); } } return(-1); }
public CTFClass() { ID = -1; Name = null; Description = null; HP = 100; Mana = 20; Inventory = new NetItem[NetItem.MaxInventory]; for (int i = 0; i < NetItem.MaxInventory; ++i) { Inventory[i] = new NetItem(0, 0, 0); } Price = 0; Hidden = true; Sell = false; }
public void CreateInventory(string name) { int index; NetItem[] PlayerInventory = new NetItem[MaxInventory]; TSPlayer player = FindTSPlayerByUserID(UserID); if (player != null) { Item[] inventory = player.TPlayer.inventory; Item[] armor = player.TPlayer.armor; Item[] dye = player.TPlayer.dye; Item[] miscEquips = player.TPlayer.miscEquips; Item[] miscDyes = player.TPlayer.miscDyes; for (int i = 0; i < MaxInventory; i++) { if (i < InventorySlots) { PlayerInventory[i] = (NetItem)inventory[i]; } else if (i < InventorySlots + ArmorSlots) { index = i - InventorySlots; PlayerInventory[i] = (NetItem)armor[index]; } else if (i < InventorySlots + ArmorSlots + DyeSlots) { index = i - (InventorySlots + ArmorSlots); PlayerInventory[i] = (NetItem)dye[index]; } else if (i < InventorySlots + ArmorSlots + DyeSlots + MiscEquipSlots) { index = i - (InventorySlots + ArmorSlots + DyeSlots); PlayerInventory[i] = (NetItem)miscEquips[index]; } else if (i < InventorySlots + ArmorSlots + DyeSlots + MiscEquipSlots + MiscDyeSlots) { index = i - (InventorySlots + ArmorSlots + DyeSlots + MiscEquipSlots); PlayerInventory[i] = (NetItem)miscDyes[index]; } } Instance.Database.SaveInventory(UserID, name, PlayerInventory, HasInventory(name)); } }
private void OnUpdateItem(TSPlayer player, BinaryReader reader) { var itemIndex = reader.ReadInt16(); reader.ReadVector2(); reader.ReadVector2(); var stackSize = reader.ReadInt16(); var prefixId = reader.ReadByte(); reader.ReadByte(); var itemId = reader.ReadInt16(); if (itemIndex == Main.maxItems) { // Ignore hay created by the sickle, up to a certain stack size. if (player.SelectedItem.type == ItemID.Sickle && itemId == ItemID.Hay && stackSize <= 4) { return; } var balanceSheet = player.GetOrCreateBalanceSheet(); balanceSheet.AddTransaction(Transaction.WorldSlot, itemId, -stackSize, prefixId); } else { var item = Main.item[itemIndex]; var balanceSheet = player.GetOrCreateBalanceSheet(); var netItem = new NetItem(item.type, item.stack - stackSize, item.prefix); var lastNetItem = player.GetLastUpdatedItem(); // We need to specially detect if the client is stacking items, and adjust appropriately. if (netItem.NetId == lastNetItem.NetId && netItem.Stack == -lastNetItem.Stack && netItem.Stack > 0 && netItem.PrefixId == lastNetItem.PrefixId) { Debug.WriteLine($"DEBUG: Stack update at {itemIndex}"); balanceSheet.AddTransaction(Transaction.StackUpdateSlot, item.type, item.stack - stackSize, item.prefix); } else { balanceSheet.AddTransaction(Transaction.WorldSlot, item.type, item.stack - stackSize, item.prefix); } player.SetLastUpdatedItem(netItem); } }
public static void JsonPackate(int fromPlayer, Packet packet) { int id = packet.ReadInt(); string json = packet.ReadString(); JsonSerializerSettings settings = new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.All }; NetEntity netPackage = JsonConvert.DeserializeObject <NetEntity>(json, settings); if (netPackage is BuildingData) { NetworkManager.instance.ConstructionControl.BuildBuilding(id, (BuildingData)netPackage); } if (netPackage is NetItem) { NetItem netItem = netPackage as NetItem; if (netItem is Netwearable) { Netwearable netWear = netItem as Netwearable; NetworkManager.instance.InventoryControl.ChangeWear(netWear, id); } if (netItem is NetHoldable) { NetHoldable netHold = netItem as NetHoldable; Debug.Log($"got holdable: {netHold.Name}"); } } if (netPackage is NetLoot) { NetLoot netLoot = netPackage as NetLoot; if (netLoot.ownerID == -1) { NetworkManager.instance.LootControl.UpdateLoot(netLoot); } else { NetworkManager.instance.InventoryControl.TakeLoot(netLoot); } } }
public Item(NetItem netitem) { UID = netitem.UID; ParentUIDs = netitem.ParentUIDs; Class = ItemClassLoader.GetItemClassById(netitem.ClassID); if (Class == null) { Debug.LogFormat("Invalid item created (id={0})", netitem.ClassID); return; } Count = netitem.Count; InitItem(); MagicEffects = netitem.MagicEffects; UpdateItem(); }
private static WorldSectionData.ChestData ReadChest(this BinaryReader reader) { var x = reader.ReadInt32(); var y = reader.ReadInt32(); var count = reader.ReadInt32(); var items = new NetItem[count]; for (var i = 0; i < count; i++) { items[i] = new NetItem(reader.ReadInt32(), reader.ReadInt32(), reader.ReadByte()); } return(new WorldSectionData.ChestData { Items = items, X = x, Y = y }); }
public PlayerData GetPlayerData(TSPlayer player, int acctid) { PlayerData playerData = new PlayerData(player); try { using (var reader = database.QueryReader("SELECT * FROM tsCharacter WHERE Account=@0", acctid)) { if (reader.Read()) { playerData.exists = true; playerData.health = reader.Get <int>("Health"); playerData.maxHealth = reader.Get <int>("MaxHealth"); playerData.mana = reader.Get <int>("Mana"); playerData.maxMana = reader.Get <int>("MaxMana"); playerData.inventory = NetItem.Parse(reader.Get <string>("Inventory")); playerData.spawnX = reader.Get <int>("spawnX"); playerData.spawnY = reader.Get <int>("spawnY"); playerData.hair = reader.Get <int?>("hair"); playerData.hairDye = (byte)reader.Get <int>("hairDye"); playerData.hairColor = TShock.Utils.DecodeColor(reader.Get <int?>("hairColor")); playerData.pantsColor = TShock.Utils.DecodeColor(reader.Get <int?>("pantsColor")); playerData.shirtColor = TShock.Utils.DecodeColor(reader.Get <int?>("shirtColor")); playerData.underShirtColor = TShock.Utils.DecodeColor(reader.Get <int?>("underShirtColor")); playerData.shoeColor = TShock.Utils.DecodeColor(reader.Get <int?>("shoeColor")); playerData.hideVisuals = TShock.Utils.DecodeBitsByte(reader.Get <int?>("hideVisuals")); playerData.skinColor = TShock.Utils.DecodeColor(reader.Get <int?>("skinColor")); playerData.eyeColor = TShock.Utils.DecodeColor(reader.Get <int?>("eyeColor")); playerData.questsCompleted = reader.Get <int>("questsCompleted"); return(playerData); } } } catch (Exception ex) { Log.Error(ex.ToString()); } return(playerData); }
public bool InsertPlayerData(TSPlayer player) { PlayerData playerData = player.PlayerData; if (!player.IsLoggedIn) { return(false); } if (!GetPlayerData(player, player.UserID).exists) { try { database.Query("INSERT INTO tsCharacter (Account, Health, MaxHealth, Mana, MaxMana, Inventory, spawnX, spawnY) VALUES (@0, @1, @2, @3, @4, @5, @6, @7);", player.UserID, playerData.health, playerData.maxHealth, playerData.mana, playerData.maxMana, NetItem.ToString(playerData.inventory), player.TPlayer.SpawnX, player.TPlayer.SpawnY); return(true); } catch (Exception ex) { Log.Error(ex.ToString()); } } else { try { database.Query("UPDATE tsCharacter SET Health = @0, MaxHealth = @1, Mana = @2, MaxMana = @3, Inventory = @4, spawnX = @6, spawnY = @7 WHERE Account = @5;", playerData.health, playerData.maxHealth, playerData.mana, playerData.maxMana, NetItem.ToString(playerData.inventory), player.UserID, player.TPlayer.SpawnX, player.TPlayer.SpawnY); return(true); } catch (Exception ex) { Log.Error(ex.ToString()); } } return(false); }
public bool InsertPlayerData(TSPlayer player) { PlayerData playerData = player.PlayerData; if (!player.IsLoggedIn) { return(false); } if (!GetPlayerData(player, player.UserID).exists) { try { database.Query("INSERT INTO Inventory (Account, MaxHealth, Inventory) VALUES (@0, @1, @2);", player.UserID, playerData.maxHealth, NetItem.ToString(playerData.inventory)); return(true); } catch (Exception ex) { Log.Error(ex.ToString()); } } else { try { database.Query("UPDATE Inventory SET MaxHealth = @0, Inventory = @1 WHERE Account = @2;", playerData.maxHealth, NetItem.ToString(playerData.inventory), player.UserID); return(true); } catch (Exception ex) { Log.Error(ex.ToString()); } } return(false); }
public static Item GetItemFromNet(NetItem netItem) { if (netItem.IsModItem) { var target_mod = ModLoader.LoadedMods.Where(mod => mod.Name == netItem.ModName); if (target_mod.Count() == 0) { return(new Item()); } Item item = new Item(); item.netDefaults(target_mod.First().ItemType(netItem.ItemName)); item.prefix = (byte)netItem.Prefix; item.favorited = netItem.IsFavorite; return(item); } else { Item item = new Item(); item.netDefaults(netItem.ItemID); item.prefix = (byte)netItem.Prefix; item.favorited = netItem.IsFavorite; return(item); } }
/// <summary> /// Sets the last updated item sent by the specified player. /// </summary> /// <param name="player">The player, which must not be <c>null</c>.</param> /// <param name="item">The lst updated item.</param> public static void SetLastUpdatedItem([NotNull] this TSPlayer player, NetItem item) { Debug.Assert(player != null, "Player must not be null."); player.SetData(LastUpdatedItemKey, item); }
private static NetItem[] CreateInventory(TSPlayer player) { int index; var playerInventory = new NetItem[NetItem.MaxInventory]; var inventory = player.TPlayer.inventory; var armor = player.TPlayer.armor; var dye = player.TPlayer.dye; var miscEquips = player.TPlayer.miscEquips; var miscDyes = player.TPlayer.miscDyes; var piggy = player.TPlayer.bank.item; var safe = player.TPlayer.bank2.item; var trash = player.TPlayer.trashItem; var forge = player.TPlayer.bank3.item; for (var i = 0; i < NetItem.MaxInventory; i++) { if (i < NetItem.InventoryIndex.Item2) { playerInventory[i] = (NetItem)inventory[i]; } else if (i < NetItem.ArmorIndex.Item2) { index = i - NetItem.ArmorIndex.Item1; playerInventory[i] = (NetItem)armor[index]; } else if (i < NetItem.DyeIndex.Item2) { index = i - NetItem.DyeIndex.Item1; playerInventory[i] = (NetItem)dye[index]; } else if (i < NetItem.MiscEquipIndex.Item2) { index = i - NetItem.MiscEquipIndex.Item1; playerInventory[i] = (NetItem)miscEquips[index]; } else if (i < NetItem.MiscDyeIndex.Item2) { index = i - NetItem.MiscDyeIndex.Item1; playerInventory[i] = (NetItem)miscDyes[index]; } else if (i < NetItem.PiggyIndex.Item2) { index = i - NetItem.PiggyIndex.Item1; playerInventory[i] = (NetItem)piggy[index]; } else if (i < NetItem.SafeIndex.Item2) { index = i - NetItem.SafeIndex.Item1; playerInventory[i] = (NetItem)safe[index]; } else if (i < NetItem.TrashIndex.Item2) { playerInventory[i] = (NetItem)trash; } else if (i < NetItem.ForgeIndex.Item2) { index = i - NetItem.ForgeIndex.Item1; playerInventory[i] = (NetItem)forge[index]; } } return(playerInventory); }
public bool InsertPlayerData(TSPlayer player) { PlayerData playerData = player.PlayerData; if (!player.IsLoggedIn) { return(false); } if (!GetPlayerData(player, player.UserID).exists) { try { database.Query( "INSERT INTO tsCharacter (Account, Health, MaxHealth, Mana, MaxMana, Inventory, spawnX, spawnY, 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);", player.UserID, playerData.health, playerData.maxHealth, playerData.mana, playerData.maxMana, NetItem.ToString(playerData.inventory), 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.EncodeBitsByte(player.TPlayer.hideVisual), TShock.Utils.EncodeColor(player.TPlayer.skinColor), TShock.Utils.EncodeColor(player.TPlayer.eyeColor), player.TPlayer.anglerQuestsFinished); return(true); } catch (Exception ex) { Log.Error(ex.ToString()); } } else { 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 WHERE Account = @5;", playerData.health, playerData.maxHealth, playerData.mana, playerData.maxMana, NetItem.ToString(playerData.inventory), player.UserID, 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.EncodeBitsByte(player.TPlayer.hideVisual), TShock.Utils.EncodeColor(player.TPlayer.skinColor), TShock.Utils.EncodeColor(player.TPlayer.eyeColor), player.TPlayer.anglerQuestsFinished); return(true); } catch (Exception ex) { Log.Error(ex.ToString()); } } return(false); }
public static ItemData FromNetItem(NetItem netItem) { return(new ItemData(netItem.PrefixId, netItem.NetId, netItem.Stack)); }
public bool InsertPlayerData(TSPlayer player, int acctid) { PlayerData playerData = player.PlayerData; if (!GetPlayerData(player, acctid).exists) { try { database.Query("INSERT INTO Inventory (Account, MaxHealth, MaxMana, Inventory) VALUES (@0, @1, @2, @3);", acctid, playerData.maxHealth, playerData.maxMana, NetItem.ToString(playerData.inventory)); return(true); } catch (Exception ex) { Log.Error(ex.ToString()); } } else { try { database.Query("UPDATE Inventory SET MaxHealth = @0, MaxMana = @1, Inventory = @2 WHERE Account = @3;", playerData.maxHealth, playerData.maxMana, NetItem.ToString(playerData.inventory), acctid); return(true); } catch (Exception ex) { Log.Error(ex.ToString()); } } return(false); }
public static ItemData FromNetItem(NetItem netItem) { return(new ItemData((ItemPrefix)netItem.prefix, (ItemType)netItem.netID, netItem.stack)); }
public static RelevantInfo GetRelevance(QueryResult reader) { bool[] hiddens = new bool[20]; RelevantInfo relevantPlr = new RelevantInfo(); Color eyeColor = (Color)TShock.Utils.DecodeColor(reader.Get <Int32>("eyecolor")); Color hairColor = (Color)TShock.Utils.DecodeColor(reader.Get <Int32>("haircolor")); Color pantsColor = (Color)TShock.Utils.DecodeColor(reader.Get <Int32>("pantscolor")); Color shirtColor = (Color)TShock.Utils.DecodeColor(reader.Get <Int32>("shirtcolor")); Color shoeColor = (Color)TShock.Utils.DecodeColor(reader.Get <Int32>("shoecolor")); Color skinColor = (Color)TShock.Utils.DecodeColor(reader.Get <Int32>("skincolor")); Color underShirtColor = (Color)TShock.Utils.DecodeColor(reader.Get <Int32>("undershirtcolor")); relevantPlr.EyeColor = new int[] { eyeColor.R, eyeColor.G, eyeColor.B }; relevantPlr.HairColor = new int[] { hairColor.R, hairColor.G, hairColor.B }; relevantPlr.PantsColor = new int[] { pantsColor.R, pantsColor.G, pantsColor.B }; relevantPlr.ShirtColor = new int[] { shirtColor.R, shirtColor.G, shirtColor.B }; relevantPlr.ShoeColor = new int[] { shoeColor.R, shoeColor.G, shoeColor.B }; relevantPlr.SkinColor = new int[] { skinColor.R, skinColor.G, skinColor.B }; relevantPlr.UnderShirtColor = new int[] { underShirtColor.R, underShirtColor.G, underShirtColor.B }; relevantPlr.SkinVariant = reader.Get <Int32>("skinvariant"); relevantPlr.Hair = reader.Get <Int32>("hair"); bool extraSlot = reader.Get <Boolean>("extraSlot"); for (int i = 0; i < 20; i++) { if (i < 10) { hiddens[i] = (reader.Get <Int32>("hideVisuals") & 1 << i) != 0; } else { hiddens[i] = false; } } string[] inventory_entries = reader.Get <String>("inventory").Split('~'); NetItem parsed; Item item; // Because vanity items are stored after regular, if one is wearing vanity it will replace the former int not_weird = 0; for (int i = 59; i < 79; i++) { not_weird = i - 59; parsed = NetItem.Parse(inventory_entries[i]); if (parsed.NetId < 1) { continue; } if (extraSlot && (not_weird == 8 || not_weird == 18)) // lets skip the extra slots { continue; } item = new Item(); item.SetDefaults(parsed.NetId); // Head if ((i == 59 || i == 69) && item.headSlot >= 0) { relevantPlr.HeadSlot = (item.headSlot == 0) ? (int?)null : item.headSlot; } // Body else if ((i == 60 || i == 70) && item.bodySlot >= 0) { relevantPlr.BodySlot = (item.bodySlot == 0) ? (int?)null : item.bodySlot; } // Legs else if ((i == 61 || i == 71) && item.legSlot >= 0) { relevantPlr.LegsSlot = (item.legSlot == 0) ? (int?)null : item.legSlot; } // Accessories else if (((i >= 62 && i <= 67) && !hiddens[not_weird]) || i >= 72 && i <= 77) { if (item.handOnSlot >= 0) { relevantPlr.HandsOnSlot = item.handOnSlot; } if (item.handOffSlot >= 0) { relevantPlr.HandsOffSlot = item.handOffSlot; } if (item.backSlot >= 0) { relevantPlr.BackSlot = item.backSlot; relevantPlr.FrontSlot = null; } if (item.frontSlot > 0) { relevantPlr.FrontSlot = item.frontSlot; } if (item.shoeSlot > 0) { relevantPlr.ShoeSlot = item.shoeSlot; } if (item.waistSlot > 0) { relevantPlr.WaistSlot = item.waistSlot; } if (item.wingSlot > 0) { relevantPlr.WingSlot = item.wingSlot; } if (item.shieldSlot > 0) { relevantPlr.ShieldSlot = item.shieldSlot; } if (item.neckSlot > 0) { relevantPlr.NeckSlot = item.neckSlot; } if (item.faceSlot > 0) { relevantPlr.FaceSlot = item.faceSlot; } if (item.balloonSlot > 0) { relevantPlr.BalloonSlot = item.balloonSlot; } } } // Robes and set pieces that stretch bool wearsRobe = false; int news = Player.SetMatch(1, relevantPlr.BodySlot.HasValue ? relevantPlr.BodySlot.Value : 0, Terraria.ID.PlayerVariantID.Sets.Male[relevantPlr.SkinVariant], ref wearsRobe); if (news != -1) { relevantPlr.LegsSlot = news; } news = Player.SetMatch(2, relevantPlr.LegsSlot.HasValue ? relevantPlr.LegsSlot.Value : 0, Terraria.ID.PlayerVariantID.Sets.Male[relevantPlr.SkinVariant], ref wearsRobe); if (news != -1) { relevantPlr.LegsSlot = news; } news = Player.SetMatch(0, relevantPlr.HeadSlot.HasValue ? relevantPlr.HeadSlot.Value : 0, Terraria.ID.PlayerVariantID.Sets.Male[relevantPlr.SkinVariant], ref wearsRobe); if (news != -1) { relevantPlr.HeadSlot = news; } // Conditionals if (relevantPlr.WingSlot.HasValue) { relevantPlr.BackSlot = null; relevantPlr.FrontSlot = null; } if (relevantPlr.HeadSlot.HasValue && relevantPlr.HeadSlot != 0) { relevantPlr.FaceSlot = relevantPlr.FaceSlot.HasValue ? ((relevantPlr.FaceSlot == 7) ? 7 : (int?)null) : (int?)null; } return(relevantPlr); }