Scene Schenaningans

Moi again.

I’m basically trying to make a more comprehensive use of scenes in my current game, using scenes to determine whether certain actions are allowed or not, or have different outcomes. I’m banging my head against the wall, because they are somehow not doing what they’re supposed to.

So here we’re acting in a movie, right. The protagonist is supposed to follow her script, or at least improvise within reasonable boundaries. Any action that is too much is “scene-breaking”, and just ruins the take: such as shooting the prop gun out of line, or getting naked on set:


Taking off dress is scene-breaking behavior.
Shooting is scene-breaking behavior.

Before scene-breaking behavior during Movie:
	say "[bold type]'CUUUUT!'[roman type][paragraph break]Everyone freezes in place, every conversation dies down, the music stops. Everyone is staring at you now. Red in the face, the director storms out of the set. Immediately the cameras stop rolling, every actor and extra goes back to chatting or getting ready for the next take.";
		now Movie is done;
		now After Movie is ready.

(“done” and “ready” are my homebrew instructions for making scenes begin and end).

The problem: this works as intended during Movie (i.e. it interrupts the scene and ends it), but it keeps happening after the Movie scene has ended. (If you shoot the prop gun after the “cut!”, it shouldn’t trigger a new “Cut!”). I’ve checked with the >scenes command that the Movie scene really has ended (it has), so I have no idea why shooting is still triggering the Movie end?

EDIT: I’m using “Before” here but I’ve tried After and Instead of, and no cigar :frowning: (because I’d like the parser to report the offending action, and THEN have the cut.

2 Likes

You need encapsulating the scene-breaking behavior into the movie scene, a problem (computing sense) tailored for the During the… construct.

I’m sure that other people will provide sound snippets, but IMVHO WI 10.4 gives a solid starting point :wink:

Best regards from Italy,
dott. Piergiorgio.

1 Like

Yup, that was my first try, specifying that “Taking off dress during Movie is scene-breaking behavior”, but alas it returns an error:

Problem. You wrote ‘After scene-breaking behavior during Movie’ which seems to introduce a rule taking effect only if the action is ‘scene-breaking behavior’. But that did not make sense as a description of an action. I am unable to place this rule into any rulebook.

EDIT: And yes, it’s 10.4 I’ve been staring hole into, that’s why my first instinct was to check if somehow the scene hadn’t ended properly, not nah, it does end. Why would Inform want to keep doing things with “scene-breaking behavior” if it’s only supposed to do something about it inside the Movie scene, and there alone?

I’d suggest testing the control for an individual action first, in case the problem is in the scene-breaking categorization.

1) Getting the timing and the output of scenes to behave exactly as intended can be tricky. One thing I’d suggest trying first would be putting the text into “When <scenename> ends”, like this:

When Movie ends:
	say "Your text here.";

In a short, complete example:

The Stage is a room.

The player wears a dress.

A scene can be ready.
A scene can be done.

Movie is a scene. Movie begins when play begins. Movie ends when Movie is done.

When Movie ends:
	say "[bold type]'CUUUUT!'[roman type][paragraph break]Everyone freezes in place, every conversation dies down, the music stops. Everyone is staring at you now. Red in the face, the director storms out of the set. Immediately the cameras stop rolling, every actor and extra goes back to chatting or getting ready for the next take.";

After Movie is a scene. After Movie begins when After Movie is ready.

Taking off dress is scene-breaking behavior.
Jumping is scene-breaking behavior.

Before scene-breaking behavior during Movie:
	now Movie is done;
	now After Movie is ready.

Output:

Stage

>jump
You jump on the spot.

“CUUUUT!”

Everyone freezes in place, every conversation dies down, the music stops. Everyone is staring at you now. Red in the face, the director storms out of the set. Immediately the cameras stop rolling, every actor and extra goes back to chatting or getting ready for the next take.

>jump
You jump on the spot.

>

This has the added benefit that you get the intuitively right order: first the action description, then the crew’s reaction.

2) If the approach above doesn’t work out for you, and you’d like to use your approach as outlined in the OP, then I’d ask whether you can ideally provide a minimal, complete example which demonstrates the error with the repeated message that you mention. The following works for me; that is, it doesn’t show the “cut!” reaction on repeated attempts:

The Stage is a room.

The player wears a dress.

A scene can be ready.
A scene can be done.

Movie is a scene. Movie begins when play begins. Movie ends when Movie is done.

After Movie is a scene. After Movie begins when After Movie is ready.

Taking off dress is scene-breaking behavior.
Jumping is scene-breaking behavior.

Before scene-breaking behavior during Movie:
	say "[bold type]'CUUUUT!'[roman type][paragraph break]Everyone freezes in place, every conversation dies down, the music stops. Everyone is staring at you now. Red in the face, the director storms out of the set. Immediately the cameras stop rolling, every actor and extra goes back to chatting or getting ready for the next take.";
	now Movie is done;
	now After Movie is ready.

Output:

Stage

>jump
“CUUUUT!”

Everyone freezes in place, every conversation dies down, the music stops. Everyone is staring at you now. Red in the face, the director storms out of the set. Immediately the cameras stop rolling, every actor and extra goes back to chatting or getting ready for the next take.

You jump on the spot.

>jump
You jump on the spot.

>

(Although, as mentioned, the output order would look better with the approach from 1 above, I think.)

4 Likes