I want to make a door that for it to open needs plates to be activated beforehand but it doesn't work as intended this is the script inside the model for the door to move

local val = script.Parent.Values
local dis = 150
local moved = false
local door = script.Parent.Door


if val.Value1.Value == "false" and val.Value2.Value == "false" and val.Value3.Value == "false" and val.Value4.Value == "false" and val.Value5.Value == "false" and val.Value6.Value == "false" and val.Value7.Value == "false" and val.Value8.Value == "false" and val.Value9.Value == "false" then
		if moved == false then
				moved = true
			for i=0, dis do
				door.CFrame = door.CFrame + Vector3.new(0,0,0.2)
				wait()
			end
		end
elseif moved == true then
		moved = false 
	for i=0, dis do
			door.CFrame = door.CFrame + Vector3.new(0,0,-0.2)
	end
end

and this is the script inside the plates:


local touched = false
script.Parent.Touched:connect(function(hit)
	if touched == false then
		touched = true
		if script.Parent.Parent.Values.Value1.Value == "false" then
			script.Parent.BrickColor = BrickColor.new(302)
			script.Parent.Parent.Values.Value1.Value = "true"
		elseif script.Parent.Parent.Values.Value1.Value == "true" then
			script.Parent.BrickColor = BrickColor.new(194)
			script.Parent.Parent.Values.Value1.Value = "false"
		end
		wait(1)
		touched = false
	end
end)

I'm not sure where the problem lies but I believe it has to do with the first script checking only once if the conditions are met?