Trick Or Treat System Doors Don't Open Again after cooldown, How To Fix?

My Trick Or Treat System works but the doors dont work again after being used
Were have i gone wrong ?

local dss = game:GetService(“DataStoreService”)
local ds = dss:GetDataStore(“TrickOrTreat”)

local playersHouses = {}

function saveData(p)

local candy = p.leaderstats.Candy.Value
local houses = playersHouses[p]

pcall(function()
	ds:SetAsync(p.UserId, {candy, houses})
end)

end

game.Players.PlayerAdded:Connect(function(p)

local ls = Instance.new("Folder", p)
ls.Name = "leaderstats"

local candy = Instance.new("IntValue", ls)
candy.Name = "Candy"


local candyData = 0
local housesData = {}


	pcall(function()
	
	local data = ds:GetAsync(p.UserId)
	
	candyData = data[1]
	housesData = data[2]
end)
playersHouses[p] = housesData

candy.Value = candyData

end)

game.Players.PlayerRemoving:Connect(saveData)

game:BindToClose(function()

for i, p in pairs(game.Players:GetPlayers()) do

	spawn(saveData(p))
end

end)

for i, house in pairs(script.Parent:GetChildren()) do

if house:IsA("Model") and house:FindFirstChild("Doorbell") then
	
	local doorOpen = false
	
	local cd = house.Doorbell.ClickDetector
	
	
	cd.MouseClick:Connect(function(p)
		
		if not table.find(playersHouses[p], house.Name) and not doorOpen then
			
			doorOpen = true
			
			
			local character = game.Players:GetPlayers()[math.random(1, #game.Players:GetPlayers())].Character
			character.Archivable = true
			character = character:Clone()
			
			character:SetPrimaryPartCFrame(house.Door.CFrame - house.Door.CFrame.LookVector * 2)
			
			wait(math.random(1, 3))
			
			character.Parent = workspace
			
			
			local cf = house.Door.CFrame
			house.Door.CFrame = cf * CFrame.Angles(0, math.rad(90), 0) + (cf.LookVector * house.Door.Size.X/2) + (cf.RightVector * house.Door.Size.X/2)
			
			
			p.leaderstats.Candy.Value += 5
			
			
			wait(5)
			
			
			house.Door.CFrame = cf
			character:Destroy()
			table.insert(playersHouses[p], house.Name)
			doorOpen = false
		end
	end)
end

end