Ditching Auto-Movement

One of the basic features of the storytelling engine has always been automatic movement. The engine detects when an Actor has nothing left to do on his current Stage, then figures out where to move that Actor based on his Plan List. The idea here is that the Actor will automatically go to the Stage containing the Actor for whom he has a Plan. That is good for the general case, but for the specific case of Siboot, it just gets in the way.

Ironically, many of the old storyworld developers objected to this system; they wanted to be in direct control of Actor movement. My only concession to them was the creation of something called TargetStage, which the storyworld builder put a value into TargetStage, then the engine would move that Actor to the TargetStage at his earliest convenient moment.

However, the movement system for Siboot will be ridiculously simple: at all times, an Actor is either meditating, hiding, interacting with another actor, or in the Dream World. The Actor gets to choose where to go whenever he finishes meditating, hiding, or closes a conversation. Hence there’s no need for automatic movement.

Implementing all this will require substantial changes in the code. I must first eliminate the entire auto-movement section of code. Then I must ditch all use of the verbs “depart for” and “arrive at”. But that raises a problem: the “arrive at” verb has a lot of code associated with it arising from lots of special needs. 

1. Props have to move with the Actor.
2. The Actor must observe visible Traits of Actors resident on the Stage.
3. The Actor must become aware of the presence of visible Props on the Stage.
4. The Actor must become aware of any visible Traits of the Stage itself.
5. We must check for alarms that go off when an Actor first meets a specific Actor, Prop, or Stage.
6. We must check for alarms that go off for residents of the Stage for the arriving Actor.

But inasmuch as I will be using NONE of these capabilities, I think that I can drop the use of the Verb “arrive at”. Instead, I’ll have a verb “go to” that will permit the Actor to simply change locations. This will require the addition of a new operator SetActorLocation(Actor, NewLocation).

I think that I can make this work.