For some reason, my inventory system acts as if there is something in the cell that it is checking when there isn't and it is blocking the player/looting system from placing it there, and on other occasions, it acts as if there isn't an item where one is
function logic:CheckCell(pos, index) for i, v in pairs(data.Inventory) do if i ~= index then if v.Position.X == pos.X or v.Position.Y == pos.Y then return false end for _, v in pairs(v.OtherCells) do if v.X == pos.X or v.Y == pos.Y then return false end end end end return true end function logic:CheckItemRoom(pos) for i, v in pairs(data.Inventory) do if v.Position.X == pos.X or v.Position.Y == pos.Y then return false end for _, v in pairs(v.OtherCells) do if v.X == pos.X or v.Y == pos.Y then return false end end end return true end function logic:LootItem(item) local canloot = false print(item.Name) local itemData = require(replicatedStorage.ItemModules:FindFirstChild(item.Name)) local posX,posY for x = 0,9-itemData.Size.X do for y = 0,9-itemData.Size.Y do local blocked = false print("Checking "..x..","..y) for ix = x,x+itemData.Size.X do for iy = y,y+itemData.Size.Y do if logic:CheckItemRoom(Vector2.new(ix,iy)) then if blocked == false then canloot = true end --print(ix..","..iy.." Is Clear") else --print(ix..","..iy.." Is Not Clear") canloot = false blocked = true end end end print(blocked) if not blocked then break end end end if canloot then print("Chosen "..posX..","..posY) local othercells = {} for x = posX,posX+(itemData.Size.X) do for y = posY,posY+(itemData.Size.Y) do table.insert(othercells, Vector2.new(x,y)) end end local specialdata = {} if itemData.Type == "Gun" then specialdata.Rounds = item.Rounds end network:send('l'..'o'..'o'..'t'..'e'..'d', input.player, input.player, item.Part) table.insert(data.Inventory, {Name=item.Name,Position=Vector2.new(posX,posY), OtherCells=othercells, unpack(specialdata)}) hud:updateInventory(data.Inventory) end end