The issue with this is the 2nd parameter for CFrame.new is where you want to part to be looking at, not the orientation value. So instead of making the orientation equal to 0, 90, 0 the script is making the part look at the position 0, 90, 0
You could just set the first parameter for the position, leave the second parameter blank, and then multiple the first cframe by cframe.angles to get it to rotate
I tested this out on a part and it works with CFrame.Angles(0, math.rad(90), 0) but in the code I wrote above, the orientation gets set to (0, 90, 90) instead of (90, 90, 0)
I’ll mess with this a bit, I just think roblox’s rotation system is super weird lol. Instead of having one vector rotation be from 0-360 degrees, it’s -180 to 180 and it makes for some pretty weird glitches sometimes