Sprite local variables are very useful for quickly creating and using variables but you can't monitor them easily. Turns out that that is untrue - read further one
This project uses the concept of launching another script that uses only one global variable to display several sprite local ones
I think your script would be improved by replacing the FOREVER with
REPEAT UNTIL <(script var watcher) = 87>
and then set the variable to 87 at the bottom of the procedure. (Any non-list value would do.)
It's not so practical, because every time you run the script it creates a new watcher. And HIDE VARIABLE block doesn't hide these previous run watchers.
Oh, you hide them at the end of the procedure. Or if you do HIDE VARIABLE with the input slot empty, it hides all watchers of temporary variables, even after the procedure has exited.