(set_fixed_point_multiplier, 100), # This sets the units to centimeters
(init_position, pos11), # clear all data on pos10 register, we want this for the (0,0,0) rotational data.
(position_copy_origin, pos11, pos12), # pos12 is on the terrain you want to place the prop, this will give us the position while leaving the rotation (0, 0, 0)
(position_move_z, pos11, 100, 1), # move on the global z axis 100 cm, 1 m
(position_rotate_x, pos11, 90), # pitches the positional register forward to face the ground.
(cast_ray, reg0, pos10, pos11, 150), # this will cast a ray from pos11 150cm and store the collision in pos10, now that it is successful, pos10 should now be a duplicate of pos12 with the terrain normal! Reg0 is unused, but would store a prop_instance_id in the event of hitting a prop.
(copy_position_origin, pos10, pos12), # but I am a cautious man.
(position_rotate_x, pos10, 90), # you'll need to rotate the register 90 degrees again since props are typically +Z out instead of the +Y out that cast_ray returns. I am not sure this rotation is correct
(set_spawn_position, pos10), # now spawn the prop!