HMM.. If you use.. hmm... well if you make everything variable dependent like me then you can just activate that variable when needed and skip right to that line of code, because everything else is disabled.
Put the introduction in a function.
REPEAT
INPUT "Skip opening? (YES or NO)"; SKIP$
UNTIL SKIP$ =="YES" OR SKIP$ =="NO"
IF SKIP$ =="NO" THEN
SHOW_INTRO
ENDIF
'Code for the rest of the game goes here.
...
END
DEF SHOW_INTRO
'Code for the intro goes here
END
Functions are always better than GOTO and GOSUB.
I don't think the error is in your room function. I typed in your function and didn't get an error (although it would be a good idea to move the sprite definition code before the repeat loop. It seems unlikely you want to redefine it every frame).
My guess is you still have the while loop on about line 12 of your first screen shot causing problems. Can we see the code before the function call?