Instead of stages['Stage'..i], you could use Floor after the Floor variable is declared. Also, you should store the Height variable outside of the loop, it’s only being changed for that current iteration.
local Height = 0
for i = 1,8 do
-- now change the height variable using Height = Floor:WaitForChild('Height').Value, this will change the variable outside of the loop, and make it accessible for the other iterations.
I’m off to bed as well, I will check back here tomorrow!
What did was make a Part Called Center and get the height of each Center of each Stages and for spawning the next stage increase it’s Center’s CFrame by the Height of the Previous stage’s Center.