The state variable that determines what the PEOPLE are doing.
<GLOBAL PR-NUMBER 0>
<GLOBAL CHASING-THIEF <>>
<ROUTINE AUDA-HEARS? ()
<AUDA?>>
<ROUTINE AUDA-SPEAKS ()
<COND (<NOT <AUDA?>>
<TELL CR <GET ,INTER-TBL 4> " Listening..." CR>)
(T
<CRLF>)>>
<ROUTINE ROBOT-THERE? (RBT)
<COND (<AND <IN? .RBT <LOC ,PEOPLE>>
<NOT <FSET? .RBT ,CUTBIT>>>)>>
<TELL CR
"FC INTERRUPT: ALERT! ALERT!|
Intruders detected in Sterilization Chamber!" CR>
<RFATAL>>
<ROUTINE PARRIVE1 ("AUX" TEMP)
<TELL
"I can hear the sound of metal against metal, followed by the sound of a creaking door opening.|
|
\"I've got the toolbag. Everything in it seems intact.\"|
\"Well, don't lose it, man. We're lost without it. We'll never pull the switch on him if we lose it.\"|
\"Don't worry. I won't let it out of my sight.\"|
\"I'm getting sleepy. It was a long ride down here. What do you say we catch some sleep?\"|
\"You really think we should? With all the devastation taking place?\"|
\"I don't have much choice. I'm not thinking clearly, and I really need to sleep. More casualties will occur if we don't take care of ourselves.\"|
\"Good point. Let's go.\"" CR>)>
" The mobile objects have stopped for a moment. I also detect the " D
D ,TOOLBAG " and are grasping it." CR>
" I can detect the cycling of a mechanism attached to the " D
" As the amazing " D ,PEOPLE " check in, they casually remove something from a " D ,PEOPLE-CABINET ". It appears to be a " D ,TOOLBAG "." CR>
<ROUTINE PARRIVE2 ("AUX" TEMP)
<RFALSE>)>
<TELL
"\"Well, this is some sleep chamber. No frills.\"|
\"Don't complain. At least there's bunks for us.\"|
\"I suppose. I'm going to put the toolbag on the floor while I grab some shuteye.\"|
\"What about the robot?\"|
\"What, that ear thing? Gimme a break!\"|
|
AUDA: I hear the sound of metal being placed on the floor." CR>)>
" The mobile objects are moving over to the platforms and are reclining." CR>)
" I detect an extreme drop in electrical and ionic activity in this area as the " D ,PEOPLE " become immobile." CR>
" Ah, yawn. Ho hum. These people are boring." CR>)>
<RTRUE>>
<GLOBAL SNORES-TBL
<PTABLE
"I can hear slow breathing and the occasional rustling of cloth."
"One of the mechanisms tosses and turns."
"One of the mechanisms has begun snoring. It is irritating."
"The breathing of the mechanisms has become irregular and they begin to stir.">>
<RTRUE>)>)
<RTRUE>)>)
<RTRUE>)>)
<RTRUE>)>)>
<RFALSE>>
<GLOBAL FED-UP <>>
In this routine definition, the < and > delimiters are unbalanced. There’s one close-bracket too many.
Any modern language would scream bloody murder about this kind of mistake, but apparently Infocom’s ZIL compiler silently ignored it. So did the MDL compiler that it was based on. See discussion.
<ROUTINE ENOUGH-TRADING ()
<TELL
"\"Enough is enough! We'll never get anywhere with this little thing pestering us.\"|
\"Tell me about it. Let's just get on with this.\"|
\"Fine with me. Grab the bag.\"|
\"Okay.\"" CR>)>
<ROUTINE PEOPLE-GIVEN-BAG ()
<TELL
"\"It's a good thing that little thief gave the bag back.\"|
\"I'll say. Let's get some more sleep.\"|
\"Okay.\"|
\"You're not worried about leaving the bag on the floor, now, are you?\"|
\"Nah. I'm not worried.\"" CR>)>)
(ELSE
<RFALSE>)>>
Send the PEOPLE off to the INNER-CORE. When they arrive, they will spend a few turns looking up replacement procedures (I-PEOPLE4).
<ROUTINE I-PEOPLE2 ("AUX" (FLG <>))
<SET FLG T>
<TELL
"\"I really needed more rest than that, but it'll have to do. Let's get on with what this.\"|
\"Okay. Just give me a second. Where to now?\"|
\"The Central Library. We've got to get a little info before we can pull the switch.\"|
\"Oops. Almost forgot the tool bag!\"" CR>)>
<SET FLG T>
" The mobile objects are resuming their normal positions and are becoming active." CR>)
<SET FLG T>
" The air is becoming charged with ionic activity as the creatures stir from quiescence." CR>)
<SET FLG T>
" Like loaves of bread sitting on a warm oven, the Creators rise." CR>)>
.FLG>
<ROUTINE PARRIVE3 ()
<TELL
"I can hear them talking, but I can't make out what's being said." CR>)>
" Humans querying the CLC regarding proper replacement procedure for you. CLC is responding with the human access code for reviving one of your clones."
CR>)>>
<TELL
"\"That information should do the trick. Let's get the replacement.\"|
\"Yeah. Sounds good to me. I guess that person really went over the deep end, poor thing. Sitting in that capsule can't be a lot of fun.\"|
\"Well, that's the way it goes.\"" CR>)>>
<ROUTINE PARRIVE4 ("AUX" (FLG <>))
<SET FLG T>
<TELL
"\"Let's get into the car and get this thing over with. The clones are near the end of this tube.\"|
\"Sounds good to me. This place gives me the creeps.\"|
|
AUDA: I hear the sounds of the people entering the car, then the whoosh as the car takes off to the east." CR>)>
.FLG)
(ELSE
<TELL
"\"We'll have to wait for the car. We can't negotiate this tube on foot.\"|
\"Fine. I've got nothing but time.\"" CR>)>)>)>>
If the car is available, the PEOPLE will take it to the bio area and begin reviving a replacement clone (I-KILL).
If a robot is camping in the car or has moved it to the far end, the humans will wait up to 75 turns. After that they give up and head towards the CPU-ROOM to shut you down, clone or no clone. (See PARRIVE7.)
<ROUTINE I-CAR-WAIT ()
<DISABLE <INT I-CAR-WAIT>>
(ELSE
<TELL
"\"Man, I just hate the way this car was designed.\"|
\"Yeah, well, join the club. We'll just have to wait. We can't go back to the surface until we've pulled the switch, anyway.\"" CR>)
<TELL
"\"I'm getting real angry. How long are you gonna wait?\"" CR>)
<TELL
"\"When that robot gets out of that car, I'm going to dismantle the little bugger.\"|
\"You'll have to stand in line. My boredom factor is real low.\"" CR>)
<TELL
The game clearly wants to avoid assumptions about the player’s gender, but these dialogue snippets slip in several places. A development version of the source code corrects these (“the plug”, “the clone”). However, that version was never released.
"\"I'm tired of waiting around, man. Let's go pull his plug and get this thing over with.\"|
\"But what about his clone?\"|
\"Forget it. We'll put everything on manual override and take care of this later. Too many people are at stake here. Okay?\"|
\"Okay. Lead on.\"" CR>)>
<DISABLE <INT I-CAR-WAIT>>)>)>>
Handles the PEOPLE working to revive a clone. This takes 15 turns. After that, they’re on their way back to the CPU-ROOM to shut you down. (See PARRIVE5.)
<ROUTINE I-KILL ("AUX" TEMP)
"I hear the whoosh of the car returning and the noisy talking mechanisms getting out of it.">)>
" are holding another thing like themselves between them." CR>
<TELL "SENSA: Sensory inputs detect a third life form." CR>)
<TELL "POET: Here come da clone, here come da clone." CR>)>
This travel callback executes when the PEOPLE reach the CPU-ROOM with your clone in tow. More precisely, it executes you.
<ROUTINE PARRIVE5 ()
<TELL CR
"As the door swings open you are blinded by intense light and incredible
pain. Just before everything overloads and you fade from existence, you can
make out the shapes of three humans, one of them holding onto the door of the
cylinder, another of them looking exactly like you, and then everything goes
dark." CR>
<QUIT>>
Handles the PEOPLE chasing a robot who has grabbed the TOOLBAG. The function name is misleading; it can be any robot (RTHIEF).
If you lead the humans to observe the acid leak, they’ll fix it and then head to the REC-AREA. Otherwise, they’ll eventually catch up with you, get the toolbag back, and return to their original plan (I-PEOPLE2).
<ROUTINE I-CHASEAUDA ("AUX" TEMP TWINNER)
<TELL
"\"Give me that, you little devil!\"|
\"That robot's a thief! Let's get it!\"" CR>)>
<TELL CR
"WALDO: The mobile devices are waving their extensions madly. I think I'm in trouble." CR>)
<TELL CR
"SENSA: The air in this area has become highly electrified, charged by the creatures." CR>)
<TELL CR
"POET: I believe the Creators have caught an extension in the cookie jar. Better take it on the lam, and pronto." CR>)>
<RFALSE>)
<RFALSE>)
(T
<RFALSE>)
<DISABLE <INT I-CHASEAUDA>>
<TELL
"\"Here's the toolbag. Looks like the little 'bot dropped it.\"|
\"Just as well. Let's get on with this.\"" CR>)>
(T
(T
<RFALSE>)>)
<TELL
"\"Oh, wow, look at that! The mist is coming up through the grating!\"|
\"Yeah. What's below this room? The Maintenance Area?\"|
\"Yes. The cooling system for the Filtering Computers has a regulatory valve there.... Maybe that's what's wrong here.\"|
\"What are you talking about?\"|
\"This acid mist -- it could be what's causing all the trouble. Let's get back down there and turn the wheel, get the cooling system rerouted.\"|
\"It's worth a try. If you're right, we won't have to pull this person's plug.\"|
\"Well, let's go. We're wasting time.\"" CR>)>
<DISABLE <INT I-CHASEAUDA>>
<CRLF>
" They've taken something from my extensions!" CR>)
(ELSE
" The bag is melting!" CR>
<DISABLE <INT I-CHASEAUDA>>
<TELL
"\"Hey -- Look at that! The pipes going up to the Filtering Computers have burst.\"|
\"Yeah. Maybe the person in the cylinder isn't at fault....\"|
\"Hmm. You could be right. Let's fix this and then see if things return to normal.\"|
|
AUDA: I can hear the sound of metal, like a wheel turning, and the hissing
stop.|
|
\"That should take care of that leak. Let's go up to the Rec Area and wait for awhile.\"|
\"Fine. Meanwhile, I'll get our toolbag back.\"|
|
AUDA: I hear footsteps as the talking mechanisms walk away." CR>)>
<TELL CR
"WALDO: I can detect the large, circular object high overhead turning." CR>)
<TELL CR
"SENSA: I detect the flow within the pipes overhead stopping and the acid leak stopping, too." CR>)
<TELL CR
"POET: Here they come to save the day..." CR>)>)
(ELSE
<TELL
"\"We've got him now. He's cornered. Let's grab that tool bag and get on with this fiasco.\"" CR>)>
<CRLF>
"Oh oh. I feel something wrenching the " <>>
<TELL D ,TOOLBAG " from my extensions." CR>
<DISABLE <INT I-CHASEAUDA>>)>)
(ELSE
<RFALSE>)>>
<ROUTINE PARRIVE6 ()
<TELL
"\"Let's play this game while we wait to see what's happening.\"|
\"What's it called?\"|
\"Starcross. Looks really good.\"|
\"Okay.\"" CR>)>>
Handles the PEOPLE waiting in the REC-AREA. They’ve just fixed the acid leak and are giving you a chance to repair everything else.
After 200 turns, they give up and head to the INNER-CORE. See I-PEOPLE4.
They spend their down-time playing Starcross. 200 turns is definitely not enough time to win Starcross.
<ROUTINE I-STARCROSS ()
<RFALSE>)
(T
<DISABLE <INT I-STARCROSS>>
<TELL
"\"I think we've waited long enough. This person in the cylinder isn't all together upstairs, if
you know what I mean.\"|
\"I do, and I agree. We've given him more than enough time. Let's yank the fool out of there immediately, then get the replacement clone.\"|
\"No way. Procedure requires we get the replacement first, and that's what
we're going to do. Now let's move.\"" CR>)>)>>
This travel callback executes when the PEOPLE reach the CPU-ROOM without a clone. You still die, of course.
<ROUTINE PARRIVE7 ()
<TELL CR
"As the door swings open you are blinded by intense light and incredible
pain. Just before everything overloads and you fade from existence, you can
make out the shape of two figures outside, one of them holding onto the door of the cylinder, and then everything goes dark." CR>
<QUIT>>
<ROUTINE PARRIVE8 ()
<TELL
"\"Hey -- Look at that! The pipes going up to the Filtering Computers have burst.\"|
\"Yeah. Maybe the person in the cylinder isn't at fault....\"|
\"Hmm. You could be right. Let's fix this and then give him some time.\"|
|
AUDA: I can hear the sound of metal, like a wheel turning, and the hissing
stop.|
|
\"That should take care of that leak. Let's go up to the Rec Area and wait for awhile.\"|
\"Fine.\"|
|
AUDA: I hear footsteps as the talking mechanisms walk away." CR>)>
<TELL CR
"WALDO: I can detect the circular object high overhead turning." CR>)
<TELL CR
"SENSA: I detect the flow within the pipes overhead stopping and the acid leak stopping, too." CR>)
<TELL CR
"POET: Here they come to save the day..." CR>)>>
<ROUTINE PARRIVE9 ()
<RFALSE>>