27. Odds & Ends
Who’s “Fate”?

Fate is the most important Actor in every storyworld. In fact, Fate is so important that you can’t delete him -- he’s a permanent fixture.

You know how, in so many movies, the bad guy gets the better of the good guy, who’s now hanging by his fingernails at the edge of the cliff, and the bad guy laughs demonically and lifts his foot to start mashing the good guy’s fingers, when suddenly a bolt of lightning hits the bad guy and he falls over the cliff and disappears screaming? Have you ever wondered, who killed the bad guy? The answer, of course, is Fate. He’s the guy who makes things happen in every story. In Storytronics, nothing ever “just happens” -- Fate makes it happen. No Event can exist without a Subject, and Fate is always the subject of those events that aren’t executed by any other Actor.

More precisely, however, YOU are Fate. After all, you’re the author of the storyworld. You’re the one who makes things happen. You are the god who controls the universe of the storyworld. And that makes you Fate. Flex your muscles.


Abort Scripts

Very rarely, you’ll encounter a situation in which you need an Actor to abort an already-established Plan. For example, suppose that Tom decides to poison Mary and the first step of his scheme is to cook the poison, which takes several hours. While the poison is cooking, Mary comes by to visit and sincerely apologizes for her past transgressions against Tom. They kiss and make up. However, the poison is still cooking and when the cooking is complete, Tom has a Plan in place to put the poison into Mary’s tea. How do you prevent this from happening?

The old way was to insert some sort of test in the Inclination Script that asked “Gee, has Mary apologized for her transgressions?” This turned out to be clumsy, and the Scripts necessary to make it work were long and complicated. So we designed a better system: the Abort Script. This Script is so rarely needed that we don’t make it an automatic part of the normal scripting process. Instead, it is optional. To turn on the Abort Script, you have to open the Properties box for the Verb and check the “Abort” checkbox therein. This places a new Script button (Abort) above the Consequences menu button. This Script takes a boolean value; if it evaluates to TRUE, then execution of the Plan containing that Verb will be aborted. The Abort Script is checked for each Plan containing that Verb. This way, Tom could abort poisoning Mary and two minutes later, John could proceed with poisoning Jane.

        
Spying

What drama would be complete without somebody spying on somebody else? You can make this happen in your storyworlds by using the Consequence Script SetActor: SetSpyingOn.

This Operator takes three arguments:

        Spy: the Actor who should do the spying

        SpiedUpon: the Actor who should be spied upon

        HowLong: the number of minutes that the Spy should continue spying


Once this Script executes, the Spy follows SpiedUpon around and witnesses every overt action taken by SpiedUpon, but remains invisible to SpiedUpon. Spy cannot witness Events with Verbs of audience type MentalEvent or CheekByJowl, but does witness anything that a regular witness would see -- without SpiedUpon knowing that he’s being observed.



Boxes

These are temporary places to store intermediate values; they save you time and tedium. There are two kinds of boxes, Verb boxes and Role boxes. The Verb boxes are calculated in the Consequences and can be used by any calculation in any Role used by that Verb. Role boxes can be used in the Role calculations and their internal Options. There are Boxes for each of the major data types: Actors, Props, Stages, Events, and Verbs, as well as one BNumber box. There are also four Global Box sets, again with one Box for each of the listed data types. These Boxes never forget the values you put into them; if you store something into a Box during one calculation, you can come back to it much later in a completely different calculation and it will still have that value in it. Be warned: it is all too easy to get into trouble using Global Boxes. We strongly urge you that, if you want to use any Global Boxes, then decide at the very beginning exactly what that Global Box will hold and never, ever change that in mid-stream. Otherwise, you’ll get confused about the meaning of the Global Box and create monster headaches for yourself.


BNumbers to UNumbers Transform

This is just for you techies who want to know the gory mathematical details. Here’s the BNumber to real number transform:





UNumbers are BNumbers squashed into the positive side of the scale



Previous tutorial:  #26 - More Special Operators         Next tutorial:  #28 - Engine Operation in Detail