Exemplo n.º 1
0
        private void OnUpdateChestItem(TSPlayer player, BinaryReader reader)
        {
            var chestIndex = reader.ReadInt16();
            var itemIndex  = reader.ReadByte();
            var stackSize  = reader.ReadInt16();
            var prefix     = reader.ReadByte();
            var itemId     = reader.ReadInt16();

            NetItem item;

            if (_infiniteChests)
            {
                item = player.GetChestItem(itemIndex);
                player.SetChestItem(itemIndex, new NetItem(itemId, stackSize, prefix));
            }
            else
            {
                item = (NetItem)Main.chest[chestIndex].item[itemIndex];
            }

            var balanceSheet = player.GetOrCreateBalanceSheet();

            if (item.NetId == itemId)
            {
                balanceSheet.AddTransaction(1000 + itemIndex, item.NetId, item.Stack - stackSize, item.PrefixId);
            }
            else
            {
                balanceSheet.AddTransaction(1000 + itemIndex, item.NetId, item.Stack, item.PrefixId);
                balanceSheet.AddTransaction(1000 + itemIndex, itemId, -stackSize, prefix);
            }
        }