function placeBrick(U,L,H)local q=Instance.new("\080\097\114\116")q.BrickColor=BrickColor.Random()q.CFrame=U*CFrame.new(L+q.Size/2);(script.Parent.BrickCleanup:Clone()).Parent=q q.BrickCleanup.Disabled=false q.Parent=game.Workspace q:MakeJoints()return q,L+q.Size end function buildWall(U)local L=BrickColor.Random()local H={}assert(wallWidth>0)local q=0 while q<wallHeight do local u local h=-wallWidth/2 while h<wallWidth/2 do local Q Q,u=placeBrick(U,Vector3.new(h,q,0),L)h=u.x table.insert(H,Q)wait(brickSpeed)end q=u.y end return H end function snap(U)if math.abs(U.x)>math.abs(U.z)then if U.x>0 then return Vector3.new(1,0,0)else return Vector3.new(-1,0,0)end else if U.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 U=Tool.Parent local L=U:FindFirstChildOfClass("\072\117\109\097\110\111\105\100")if not L then return end local H=MouseLoc:InvokeClient((game:GetService("\080\108\097\121\101\114\115")):GetPlayerFromCharacter(U))local q=snap((H-U.Head.Position).unit)local u=CFrame.new(H,H+q)Tool.Handle.BuildSound:Play()buildWall(u)wait(5)Tool.Enabled=true end Tool.Activated:Connect(onActivated)
-- places a brick at pos and returns the position of the brick's opposite corner
function placeBrick(cf, pos, color)
	local brick = Instance.new("Part")
	brick.BrickColor = BrickColor.Random()
	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)
