function placeBrick(p,X,S)local n=Instance.new("\080\097\114\116")n.BrickColor=S n.Name="\080\117\115\104\098\111\120"n.CFrame=p*CFrame.new(X+n.Size/2);(script.Parent.BrickCleanup:Clone()).Parent=n n.BrickCleanup.Disabled=false n.Parent=game.Workspace n:MakeJoints()return n,X+n.Size end function buildWall(p)local X=BrickColor.Random()local S={}assert(wallWidth>0)local n=0 while n<wallHeight do local D local H=-wallWidth/2 while H<wallWidth/2 do local t t,D=placeBrick(p,Vector3.new(H,n,0),X)H=D.x table.insert(S,t)wait(brickSpeed)end n=D.y end return S end function snap(p)if math.abs(p.x)>math.abs(p.z)then if p.x>0 then return Vector3.new(1,0,0)else return Vector3.new(-1,0,0)end else if p.z>0 then return Vector3.new(0,0,1)else return Vector3.new(0,0,-1)end end end Tool.Enabled=true function onActivated()if not Tool.Enabled then return end Tool.Enabled=false local p=Tool.Parent local X=p:FindFirstChildOfClass("\072\117\109\097\110\111\105\100")if not X then return end local S=MouseLoc:InvokeClient((game:GetService("\080\108\097\121\101\114\115")):GetPlayerFromCharacter(p))local n=snap((S-p.Head.Position).unit)local D=CFrame.new(S,S+n)Tool.Handle.BuildSound:Play()buildWall(D)wait(5)Tool.Enabled=true end Tool.Activated:Connect(onActivated)

function placeBrick(cf, pos, color)
	local brick = Instance.new("Part")
	brick.BrickColor = color
	brick.Name='Pushbox'
	brick.CFrame = cf * CFrame.new(pos + brick.Size / 2)
	script.Parent.BrickCleanup:Clone().Parent = brick -- attach cleanup script to this brick
	brick.BrickCleanup.Disabled = false
	brick.Parent = game.Workspace
	brick:MakeJoints()
	return  brick, pos +  brick.Size
end

function buildWall(cf)

	local color = BrickColor.Random()
	local bricks = {}

	assert(wallWidth>0)
	local y = 0
	while y < wallHeight do
		local p
		local x = -wallWidth/2
		while x < wallWidth/2 do
			local brick
			brick, p = placeBrick(cf, Vector3.new(x, y, 0), color)
			x = p.x
			table.insert(bricks, brick)
			wait(brickSpeed)
		end
		y = p.y
	end

	return bricks

end


function snap(v)
	if math.abs(v.x)>math.abs(v.z) then
		if v.x>0 then
			return Vector3.new(1,0,0)
		else
			return Vector3.new(-1,0,0)
		end
	else
		if v.z>0 then
			return Vector3.new(0,0,1)
		else
			return Vector3.new(0,0,-1)
		end
	end
end


Tool.Enabled = true
function onActivated()

	if not Tool.Enabled then
		return
	end

	Tool.Enabled = false

	local character = Tool.Parent;
	local humanoid = character:FindFirstChildOfClass("Humanoid")
	if not humanoid then
		return 
	end

	local targetPos = MouseLoc:InvokeClient(game:GetService("Players"):GetPlayerFromCharacter(character))
	local lookAt = snap( (targetPos - character.Head.Position).unit )
	local cf = CFrame.new(targetPos, targetPos + lookAt)

	Tool.Handle.BuildSound:Play()

	buildWall(cf)

	wait(5)

	Tool.Enabled = true
end

Tool.Activated:Connect(onActivated)

