"VERBS for
SUSPENSION
(c) Copyright 1982 Infocom, Inc. All Rights Reserved.
"
"SUBTITLE DESCRIBE THE UNIVERSE"
"SUBTITLE SETTINGS FOR VARIOUS LEVELS OF DESCRIPTION"
"SUBTITLE DESCRIBERS"
<ROUTINE V-LOOK ("AUX" STR AV)
(ELSE
<TELL "Inside the " D ,CAR "." CR>)
(ELSE
<GLOBAL IRIS-BLIND
<PLTABLE
"I can't see a thing." "I can't see." "Visual function nonfunctional."
"Everything is dark." "Where's my white cane?" "Get me a seeing-eye robot."
"Get me a seeing-eye cane. Without my visual function, I'm worthless."
"I don't mean to complain, but it would be nice if I got repaired."
"I'm doing the best I can, but without visual circuits, that's next to nothing.">>
<ROUTINE LONG-DESCS ()
(ELSE
Some robots (not Whiz or Waldo!) can see each other at a distance, according to the CORRIDOR property.
<ROUTINE LOOK-CORRIDOR ()
<ROUTINE DESCRIBE-ROBOTS ("AUX" (COUNT -1) (OFFS 0) OBJ LEADER RC)
<SET COUNT 0>)>
<REPEAT ()
<SET COUNT <+ .COUNT 1>>)>
<COND (<G? <SET OFFS <+ .OFFS 1>> 6>
<RETURN>)>>
<COND (<EQUAL? .COUNT 0> <RTRUE>)>
<COND (<AND <IRIS?>
<RTRUE>>)>
<TELL "Standing outside the " D ,CAR " ">)
(ELSE
<TELL "In the room with me ">)>
<COND (<EQUAL? .COUNT 1>
<TELL "are ">)
(ELSE
<TELL "is ">)>)
(T
<TELL "are ">)>
<SET OFFS 0>
<REPEAT ()
<TELL "some ">)>
<TELL "non-functional ">)>
<TELL D .OBJ>
<TELL " (in motion)">)>
<TELL " whom I'm following">)>
<SET RC 0>
<REPEAT ()
<SET RC <+ .RC 1>>
<COND (<EQUAL? .RC 7>
<RETURN>)
(T
<COND (<EQUAL? <GET ,DRAG-TBL .RC> .OBJ>
<TELL " (being dragged)">
<RETURN>)>)>>
<TELL " (plugged in)">)>
<COND (<EQUAL? .COUNT 1>
<TELL "." CR>
<RETURN>)
(<EQUAL? .COUNT 2>
<TELL " and ">)
(T <TELL ", ">)>
<SET COUNT <- .COUNT 1>>)>
<SET OFFS <+ .OFFS 1>>>>
<ROUTINE DESCRIBE-OBJECTS ("AUX" (OFFS 0) OBJ)
<REPEAT ()
<COND (<G? <SET OFFS <+ .OFFS 1>> 5>
<RETURN>)>>
<COND (<AND <IRIS?>
<RTRUE>>)>
<ROUTINE DESCRIBABLE? (OBJ)
<RTRUE>)>>
<ROUTINE PRINT-CONTENTS (OBJ "AUX" F N (1ST? T) NUM)
<COND (<SET F <FIRST? .OBJ>>
<REPEAT ()
<SET N <NEXT? .F>>
<COND (.1ST?
<SET 1ST? <>>
<COND (<SET NUM <GETP .OBJ ,P?ROBOT>>
<COND (<EQUAL? .NUM 7>
<TELL "The " D .OBJ
" are carrying ">)
(T
<TELL D .OBJ
" is carrying ">)>)>)
(T
<TELL ", ">
<COND (<NOT .N> <TELL "and ">)>)>
<TELL "a " D .F>)>
<SET F .N>
<COND (<NOT .F>
<COND (<AND <NOT .1ST?> <GETP .OBJ ,P?ROBOT>>
<TELL "." CR>)>
<RETURN>)>>)>>
<ROUTINE PRINT-CONT (OBJ "OPTIONAL" (LEVEL 0) "AUX" Y (1ST? T))
<COND (<NOT <SET Y <FIRST? .OBJ>>> <RTRUE>)>
<REPEAT ()
<AND <NOT <EQUAL? .OBJ ,CAR>>
<COND (.1ST?
<SET 1ST? <>>)>
<COND (<NOT <SET Y <NEXT? .Y>>>
<RETURN <NOT .1ST?>>)>>>
<GLOBAL CARRY-TBL
<PLTABLE "I am carrying..." "I am grasping..." "Sensors indicate I'm holding..." "My ears can hear the following in my extensions..." "My Zen Master says I am grasping..." "CLC feedback indicates I'm holding...">>
<ROUTINE FIRSTER (OBJ LEVEL "AUX" CNT)
<TELL "Sitting ">
<TELL "in">)
(T
<TELL "on">)>
<TELL " the " D .OBJ >
<COND (<L? .CNT 2>
<TELL " is... " CR>)
(ELSE
<TELL " are... " CR>)>)
(ELSE
"The " D .OBJ " contains..." CR>)>)>>
<ROUTINE DESCRIBE-OBJECT (OBJ LEVEL "AUX" (STR <>) (WCOUNT 0))
<COND (<AND <0? .LEVEL>
<RTRUE>)
(<AND <0? .LEVEL>
(<0? .LEVEL>
<TELL "There is a " D .OBJ " here">
<COND (<AND <EQUAL? .OBJ ,WEDGE>
<TELL " supporting ">
<TELL "me">)
(T
<REPEAT ()
<COND (<G? <SET WCOUNT <+ .WCOUNT 1>> 6>
<RETURN>)
(T
<TELL D
<TELL ".">)
(ELSE
<TELL "A " D .OBJ>
<COND (<FSET? .OBJ ,WEARBIT> <TELL " (being worn)">)>)>
<CRLF>
<ROUTINE PRE-EXAMINE ()
<RTRUE>)
(T
<RTRUE>)>)>>
<ROUTINE V-EXAMINE ("AUX" STR)
<RTRUE>)
<RTRUE>)
<IRIS?>
<RTRUE>)>
<COND (<NOT <EQUAL? .STR 0>>
<TELL "The " D ,PRSO " is set at "
"." CR>)>)
<COND (<NOT <EQUAL? .STR 0>>
<TELL .STR " ">)>
(ELSE
<ROBOT-TELL "I perceive nothing special about the " <>>
"SUBTITLE SCORING"
<ROUTINE V-SCORE ("OPTIONAL" (ASK? T))
#DECL ((ASK?) <OR ATOM FALSE>)
<TELL "There have been ">
<TELL " casualties (original population: 30,172,000) in ">
<COND (<1? ,MOVES> <TELL " cycle.">) (ELSE <TELL " cycles.">)>
<CRLF>>
<ROUTINE FINISH ()
<QUIT>>
<ROUTINE V-QUIT ("OPTIONAL" (ASK? T) "AUX" SCOR)
#DECL ((ASK?) <OR ATOM <PRIMTYPE LIST>> (SCOR) FIX)
<COND (<OR <AND .ASK?
<TELL
"Do you wish to leave the game? (Y is affirmative): ">
<NOT .ASK?>>
<QUIT>)
(ELSE <TELL "Ok." CR>)>>
<ROUTINE YES? ()
<PRINTI ">">
<COND (<EQUAL? <GET ,P-LEXV 1> ,W?YES ,W?Y>
<RTRUE>)
(T
<RFALSE>)>>
Print the title, release, and serial number.
In 1982, Infocom briefly branded its games as “INTERLOGIC”. They had mostly switched to “interactive fiction” by 1984.
<ROUTINE V-VERSION ("AUX" (CNT 17))
<TELL
"SUSPENDED: INTERLOGIC Science Fiction|
Copyright (c) 1983 by Infocom, Inc. All rights reserved.|
SUSPENDED and INTERLOGIC are trademarks of Infocom, Inc.|
Release ">
<PRINTN <BAND <GET 0 1> *3777*>>
<TELL " / Serial number ">
<REPEAT ()
<COND (<G? <SET CNT <+ .CNT 1>> 23>
<RETURN>)
(T
<PRINTC <GETB 0 .CNT>>)>>
<CRLF>>
"SUBTITLE DEATH AND TRANSFIGURATION"
Handles the abrupt death of a robot. Sets the CUTBIT flag and marks the robot as terminal in DEADBOTS.
(Acid damage is handled in the individual robot action routines.)
<ROUTINE JIGS-UP (DESC ROBOT)
<TELL .DESC CR>
<CRLF>
<TELL "FC: So much for that robot. Too bad." CR>
<RFATAL>>
<ROUTINE V-RESTORE ()
<COND (<RESTORE>
<TELL "Ok." CR>
(T
<TELL "Failed." CR>)>>
<ROUTINE V-SAVE ()
<COND (<SAVE>
<TELL "Ok." CR>)
(T
<TELL "Failed." CR>)>>
<ROUTINE V-RESTART ()
<TELL "Do you wish to restart? (Y is affirmative): ">
<TELL "Restarting." CR>
<RESTART>
<TELL "Failed." CR>)>>
<CONSTANT REXIT 0>
<CONSTANT UEXIT 1>
<CONSTANT NEXIT 2>
<CONSTANT FEXIT 3>
<CONSTANT CEXIT 4>
<CONSTANT DEXIT 5>
<CONSTANT NEXITSTR 0>
<CONSTANT FEXITFCN 0>
<CONSTANT CEXITFLAG 1>
<CONSTANT CEXITSTR 1>
<CONSTANT DEXITOBJ 1>
<CONSTANT DEXITSTR 1>
<ROUTINE V-WALK-AROUND ()
<ROBOT-TELL "Give me a direction for movement or a location to move to.">>
<ROUTINE GO-NEXT (TBL "AUX" VAL)
#DECL ((TBL) TABLE (VAL) ANY)
<ROUTINE PRE-LAMP-ON ()
(T <TELL "the " D ,PRSO>)>
<TELL "." CR>
<RFATAL>)>>
<ROUTINE V-LAMP-ON ()
<RTRUE>)
<RTRUE>)
<ROUTINE V-LAMP-OFF ()
<RTRUE>)
<RTRUE>)
<ROUTINE LKP (ITM TBL "AUX" (CNT 0) (LEN <GET .TBL 0>))
#DECL ((ITM) ANY (TBL) TABLE (CNT LEN) FIX)
<REPEAT ()
<COND (<G? <SET CNT <+ .CNT 1>> .LEN>
<RFALSE>)
(<==? <GET .TBL .CNT> .ITM>
<COND (<==? .CNT .LEN> <RFALSE>)
(T
<RETURN <GET .TBL <+ .CNT 1>>>)>)>>>
<ROUTINE V-WALK ("AUX" PT PTS STR OBJ RM)
#DECL ((PT) <OR FALSE TABLE> (PTS) FIX (STR) <OR STRING FALSE>
(OBJ) OBJECT (RM) <OR FALSE OBJECT>)
<ROBOT-TELL "Okay, but I have to stop following.">
<RTRUE>)
<COND (<==? <SET PTS <PTSIZE .PT>> ,UEXIT>
<RFATAL>)
<COND (<SET RM <APPLY <GET .PT ,FEXITFCN>>>
(T
<RFATAL>)>)
<TELL .STR CR>
<RFATAL>)
(T
<RFATAL>)>)
<TELL .STR CR>
<RFATAL>)
(T
<TELL "The " D .OBJ " is closed." CR>
<RFATAL>)>)>)
(T
<RFATAL>)>>
<GLOBAL CANT-GO <PLTABLE
"I don't see how."
"Sonar can't detect a passage in that direction."
"Sensors indicate a dead-end that way."
"Echo patterns describe a wall there."
"I haven't the means to justify a dead-end."
"The CLC cannot confirm a passage there.">>
<ROUTINE THIS-IS-IT (OBJ)
<ROUTINE V-INVENTORY ("AUX" OBJ STR)
<COND (<AUDA?>
<COND (<SET OBJ <FIRST? ,AUDA>>
<COND (<EQUAL? .STR 0>
<RTRUE>)
<GLOBAL INVEN-QUIPS
<PLTABLE "I am holding nothing in my dainty extensions."
"My extensions grasp nothing."
"I cannot sense a thing in my grasping extensions."
"I can't hear a thing in my extension."
"As far as I know, I'm Zen on inventory."
"CLC feedback indicates I carry nothing.">>
<ROUTINE V-COUNT ("AUX" TEMP)
<ROBOT-TELL "There are two of them. And they're weird things, too.">
<RTRUE>)
"I have my counting abilities, and they only extend to extensions.">
<RTRUE>)>
<RTRUE>)
<TELL " extension">)
(T <TELL " extensions">)>
<TELL "." CR>)
<TELL "There ">
<TELL "is">)
(T <TELL "are">)>
<TELL "s">)>
<TELL " in " D ,PRSI "." CR>)>>
<ROUTINE PRE-TAKE ()
<ROBOT-TELL "It's too high up there and I can't reach it.">
<RTRUE>)
<RTRUE>)
(<AND <IRIS?>
<RFATAL>)
<RTRUE>)
<TELL D ,PRSI " has it attached." CR>
<RTRUE>)
(<==? ,PRSO <LOC ,WINNER>> <TELL "I'm in it, loser." CR>)>>
<ROUTINE V-TAKEOUT ()
<TELL D ,PRSO " isn't in ">
<TELL "the ">)>
<RTRUE>)
<ROUTINE V-TAKE ()
This game inherits the Zork mechanic where carrying too many objects gives a random chance of fumbling. However, this only applies when carrying more than FUMBLE-NUMBER objects, which is seven. And no robot has eight arms! So this never happens.
<GLOBAL FUMBLE-NUMBER 7>
<GLOBAL FUMBLE-PROB 8>
<ROUTINE TRYTAKE ()
<GLOBAL EXTEN-QUIPS
<PLTABLE
"I'm not Waldo, you know. I've only got 2 extensions, and they're full."
"What do you want from me? I can only do 6 things at once!"
"Please don't use me as a pack mule. I have but 3 extensions to give for my complex."
"Did I hear you right? Me, with but 1 measly extension, and full at that?"
"An Army of Arms,|
A farewell to hands|
Without even place|
to strike up the band."
"The CLC limits my load to 2 objects."
"What do you want from me? Even with the extra extension, I can only do 7 things at once!">>
<ROUTINE ITAKE ("OPTIONAL" (VB T) "AUX" CNT OBJ WLOC TBL)
#DECL ((VB) <OR ATOM FALSE> (CNT) FIX (OBJ) OBJECT)
<COND (.VB
<RFALSE>)
<COND (<AND <WALDO?>
(T
<RFALSE>)
<COND (<AND .VB
<ROBOT-TELL "I have a free extension, but I'm not strong enough to carry that" <>>
<TELL " and what I'm carrying">)>
<TELL "." CR>)
(.VB
<RFATAL>)
<SET OBJ <NEXT? .OBJ>>
"Oh, no. The " <>>
<TELL D .OBJ " slips from my extenders while taking the "
D ,PRSO " and both tumble to the ground." CR>
(ELSE
<MOVE .OBJ .WLOC>
<RFATAL>)
(T
<RTRUE>)>>
<ROUTINE PRE-PUT ()
<RTRUE>)
<TELL "FC: Nice try." CR>)
<RTRUE>)
<RTRUE>)>
<RFALSE>)
>>
<ROUTINE V-PUT-AGAINST ()
<RTRUE>)
<RTRUE>)
(T
<ROUTINE V-PUT ()
(T
<RTRUE>)>
<TELL D ,PRSI " isn't open." CR>)
<COND (<AND <WALDO?>
<RTRUE>)
(T
<TELL D ,PRSO " is already in the " D ,PRSI "." CR>)>)
<RTRUE>)
(T
" OOOH! That felt good! Close my panel, big boy."
CR>)
<ROUTINE PRE-DROP ()
<RTRUE>)>>
"SZAP => ZAP who WITH what"
<ROUTINE PRE-SZAP ()
<RTRUE>>
"ZAP => ZAP <weapon> <who>"
<ROUTINE PRE-ZAP ()
(ELSE <TELL
"You have nothing to shoot the " D ,PRSO " with." CR>)>>
<ROUTINE DONT-HAVE (OBJ)
<TELL "the ">)>
<TELL D .OBJ "." CR>>
<ROUTINE V-ZAP ()
<TELL "You can't use a " D ,PRSO " as a ray gun!" CR>)
(<NOT ,PRSI> <TELL "At what?" CR>)
(ELSE <TELL "Nothing happens." CR>)>>
<ROUTINE V-SZAP ()
<TELL "ZAPPP!!" CR>>
<GLOBAL GIVEN-BAG <>>
<ROUTINE PRE-GIVE ()
"That's easy to say since I don't even have it.">)
<ROBOT-TELL "One thing at a time. First tell me where it is.">
<RTRUE>)
<RTRUE>)
(ELSE
<RTRUE>)>)
(ELSE
"They don't seem to be interested in that.">
<RTRUE>)>)>>
<ROUTINE PRE-SGIVE ()
<RTRUE>>
<ROUTINE V-GIVE ("AUX" OBJ)
<ROUTINE V-SGIVE ()
<TELL "FOOOO!!" CR>>
<ROUTINE V-DROP () <COND (<IDROP>
<TELL "(removing it first)" CR>
<ROUTINE IDROP ()
<RFALSE>)
<TELL D ,PRSO " is closed." CR>
<RFALSE>)
(T
<ROUTINE ALREADY (ON-OFF "OPTIONAL" (OBJ <>))
<COND (.OBJ
<TELL D .OBJ " is ">)
(ELSE
<TELL "already " .ON-OFF "." CR>>
<ROUTINE V-OPEN ("AUX" F STR)
" opens only when a robot attempts to enter it." CR>
<RTRUE>)
"I'm not sure anyone is clever enough to do that to the " <>>
<TELL D ,PRSO " is a robot. That's spelled R-O-B-O-T!" CR>)
(T
(T
<TELL D ,PRSO " I detect ">
<TELL "." CR>)>)>)
(T <TELL D ,PRSO " cannot be opened." CR>)>>
<ROUTINE V-CLOSE ()
<ROBOT-TELL "You must tell me how to do that to a " <>>
<ROBOT-TELL "Not a likely occurrence within reality, no?">)
<TELL " would like that." CR>
<RTRUE>)
(ELSE
<ROUTINE CCOUNT (OBJ "AUX" (CNT 0) X)
<COND (<SET X <FIRST? .OBJ>>
<REPEAT ()
<SET CNT <+ .CNT 1>>)>
<COND (<NOT <SET X <NEXT? .X>>>
<RETURN>)>>)>
.CNT>
<ROUTINE CABLECOUNT (OBJ "AUX" (CNT 0) X)
<COND (<SET X <FIRST? .OBJ>>
<REPEAT ()
<SET CNT <+ .CNT 1>>
<COND (<NOT <SET X <NEXT? .X>>>
<RETURN>)>>)>
.CNT>
"WEIGHT: Get sum of SIZEs of supplied object, recursing to the nth level."
<ROUTINE WEIGHT
(OBJ "AUX" CONT (WT 0))
#DECL ((OBJ) OBJECT (CONT) <OR FALSE OBJECT> (WT) FIX)
<COND (<SET CONT <FIRST? .OBJ>>
<REPEAT ()
<SET WT <+ .WT <WEIGHT .CONT>>>
<COND (<NOT <SET CONT <NEXT? .CONT>>> <RETURN>)>>)>
<GLOBAL COPR-NOTICE
" a transcript of interaction with SUSPENDED.
SUSPENDED is a trademark of Infocom, Inc.
Copyright (c) 1983 Infocom, Inc. All rights reserved.">
<ROUTINE V-SCRIPT ()
<PUT 0 8 <BOR <GET 0 8> 1>>
<ROUTINE V-UNSCRIPT ()
<PUT 0 8 <BAND <GET 0 8> -2>>
<RTRUE>>
<ROUTINE PRE-MOVE ()
<RTRUE>)>)
<RTRUE>)
<ROBOT-TELL "There's no way to do that from here.">)
<RTRUE>)
<RTRUE>)>>
<ROUTINE V-MOVE ()
<CRLF>)
<TELL D ,PRSO " reveals nothing." CR>)
" to be dragged, you should supply a location, too." CR>
<RTRUE>)
<RTRUE>)
<TELL "the ">)>
<ROUTINE V-MOVE-ROBOT-TO-LOC ()
<ROBOT-TELL "There's no place for me to get a grip on her.">)
<ROBOT-TELL "There's nothing to be gained by doing that. Franklin destroyed this robot beyond all hopes of repairing.">)
<RTRUE>)
<ROBOT-TELL "I suppose you'll have me chasing my tail, next.">)
<ROBOT-TELL "Give me a break, would you? One at a time!">)
<ROBOT-TELL "You'll have to tell me where the " <>>
<TELL D ,PRSO " get there alone." CR>)
(T
<RFATAL>)>>
<ROUTINE V-WAIT ("OPTIONAL" (NUM 3))
#DECL ((NUM) FIX)
<TELL "FC: Time passes..." CR>
<REPEAT ()
<COND (<L? <SET NUM <- .NUM 1>> 0> <RETURN>)
(T
<ROUTINE PRE-BOARD ("AUX" AV)
(T <RFALSE>)>)
(T
<ROBOT-TELL "I suppose you have a theory on boarding a " <>>
<RFATAL>>
<ROUTINE V-BOARD ("AUX" AV)
#DECL ((AV) OBJECT)
<ROBOT-TELL "There's no room in there for me, too.">
<RTRUE>)>
<CRLF>)>
<ROBOT-TELL "My gyroscopic stabilizers detect motion.">
<CRLF>
<CRLF>
<RTRUE>
>
<ROUTINE V-THROUGH ("OPTIONAL" (OBJ <>) "AUX" M TBL)
#DECL ((OBJ) <OR OBJECT FALSE> (M) <PRIMTYPE VECTOR>)
<RTRUE>)
<ROBOT-TELL "That would involve quite a contortion!">)
(ELSE
<ROUTINE V-DISEMBARK ()
<RFATAL>)
(T
<ROBOT-TELL "I am on my mobile extensions again.">
<ROUTINE GOTO (RM "OPTIONAL" (V? T) "AUX" (WLOC <LOC ,WINNER>) OLIT
(COUNT 0) L F)
#DECL ((RM WLOC) OBJECT)
<REPEAT ()
<COND (<G? <SET COUNT <+ .COUNT 1>> 6>
<RETURN>)
(ELSE
<RETURN>)>)>)>>
<RTRUE>)>
<RTRUE>>
<ROUTINE V-DRINK ()
<ROUTINE V-EAT ()
<GLOBAL EAT-QUIPS
<PLTABLE
"Really, now. A robot? Eating?"
"Get serious, amigo."
"With whose orifice? Yours?"
"I'll shut my ears and pretend you didn't say that."
"Never. I'm a starving artist."
"The CLC wouldn't approve.">>
<ROUTINE V-CURSES ()
<TELL "Insults of this nature won't help you." CR>)
(T
<TELL "What a loony!" CR>)>)
(T
<TELL
"Such language in a high-class establishment like this!" CR>)>>
<ROUTINE PRE-LISTEN ()
<COND (<NOT <AUDA?>>
<ROUTINE V-LISTEN ()
<ROBOT-TELL "Okay, okay already. I'm listening.">)
(T
This table indicates which robot is being FOLLOWed by a given robot. (Not the same as ROBOT-FOLLOW!)
<GLOBAL FOLLOW-TBL
<LTABLE 0 0 0 0 0 0>>
<ROUTINE V-FOLLOW ()
<RFATAL>)>
<NOT <EQUAL?
<TELL "the " D ,PRSO " are." CR>)
(ELSE
<TELL D ,PRSO " is." CR>)>
<RFATAL>)>
<RTRUE>)>
<TELL "the ">)>
<ROUTINE V-LEAP ("AUX" T S)
#DECL ((T) <OR FALSE TABLE>)
<TELL D ,PRSO " is too big to jump over." CR>)
<SET S <PTSIZE .T>>
<COND (<OR <==? .S 2>
<AND <==? .S 4>
<NOT <VALUE <GETB .T 1>>>>>
<TELL
"FC: This was not a very safe place to try jumping." CR>
<JIGS-UP "You should have looked before you leaped."
<ROUTINE V-SKIP ()
<GLOBAL HS 0>
<ROUTINE V-HELLO ()
"I think that only schizophrenics say \"Hello\" to a "<>>
<GLOBAL HELLOS
<PLTABLE "Hello."
"Nice weather we've been having lately."
"You talking to me, man?"
"Are you trying to accomplish something?"
"Hello dere."
"Goodbye.">>
<ROUTINE V-HINT ("AUX" TEMP)
<TELL "FC: Whiz is no longer operational, and there's nothing I can do to help you without him." CR>
<RTRUE>)
<TELL "FC: Whiz is plugged in to the Advisory Pedestal and ready to ask about things for you." CR>
<RTRUE>)
<TELL "FC: I've taken the liberty of directing Whiz to plug in to the Advisory Pedestal. You may now direct him to ask about things for you." CR>
(T
<TELL "FC: I'm taking the liberty of directing Whiz to the Advisory Peripheral so you may later have him ask about things." CR>
<CRLF>
<RTRUE>)>>
<GLOBAL WHEEEEE
<PLTABLE "This kind of action can just kill my knee-joints."
"I wasn't built for this kind of abuse, you know."
"I'd say this was fun, but I'm only a robot. Without a sense of humor.">>
<ROUTINE V-READ ()
<IRIS?>
<RTRUE>)
<RTRUE>)
<NOT <IRIS?>>>
"I'm not equipped with the necessary visual sensors.">
<RTRUE>)
(T
<ROUTINE V-LOOK-UNDER ()
<NOT <AUDA?>>>
(T <ROBOT-TELL "There is nothing but dust there.">)>>
<ROUTINE V-LOOK-INSIDE ()
<ROBOT-TELL "There is nothing special to be seen.">)
<RTRUE>)
(T
<TELL D ,PRSO " is empty." CR>)>)
<TELL D ,PRSO " is closed." CR>)>)
(ELSE <ROBOT-TELL "I don't know how to look inside a " <>>
<ROUTINE SEE-INSIDE? (OBJ)
<ROUTINE PRE-TURN ()
<ROBOT-TELL "I certainly can't turn it with a " <>>
<ROUTINE V-TURN () <ROBOT-TELL "You must be more specific.">>
<ROUTINE V-KILL ()
<ROUTINE IKILL (STR)
#DECL ((STR) STRING)
<COND (<NOT ,PRSO> <TELL "There is nothing here to " .STR "." CR>)
<ROBOT-TELL "I've known strange people, but fighting a " <>>
<TELL .STR>
<TELL " the">)>
(ELSE <TELL "I can't." CR>)>>
<ROUTINE V-ATTACK () <IKILL "attack">>
<ROUTINE V-RAISE ()
<RTRUE>)
(T
<ROUTINE V-LOWER () <HACK-HACK "Playing in this way with ">>
<ROUTINE V-RUB () <HACK-HACK "Fiddling with ">>
<ROUTINE PRE-MUNG ()
<ROUTINE FUTILE (STR)
<TELL .STR>
<TELL " a">)>
<ROUTINE V-MUNG ()
<ROUTINE HACK-HACK
(STR)
#DECL ((STR) STRING)
<TELL .STR>
<TELL "the ">)>
<GLOBAL HO-HUMS
<PLTABLE " is not what I was designed for."
" would hurt my extensions."
" offends my sensibilities."
" is the worst thing I've ever heard."
" goes against my Zen training."
" contradicts the CLC directives.">>
<ROUTINE WORD-TYPE
(OBJ WORD "AUX" SYNS)
#DECL ((OBJ) OBJECT (WORD SYNS) TABLE)
<- </ <PTSIZE .SYNS> 2> 1>>>
<ROUTINE V-KNOCK ()
<GLOBAL YELL-QUIPS
<PLTABLE "Well shut my eyes, I never heard of such a thing!"
"With whose external organs, yours? Cut me some slack."
"Sensory mechanisms are one-way, dummy."
"I'll pretend I didn't hear that insanity."
"If only I could, I could release some of this built-up tension."
"The CLC is the only one who'd listen if I did.">>
<ROUTINE V-PLUGIN ("AUX" TBL)
<COND (<NOT <WHIZ?>>
<ROBOT-TELL "It's great to be home. Plugged in to the " <>>
" Ready to process queries." CR>)
(T
<ROBOT-TELL "There's nothing to plug in to here.">)>>
<GLOBAL PLUG-LOCS
<PLTABLE "Index Pedestal."
"Technical Pedestal."
"Advisory Pedestal."
"Historical Pedestal.">>
<ROUTINE V-UNPLUG ()
<COND (<NOT <WHIZ?>>
<ROBOT-TELL "Who do you think I am, Whiz? Gimme a break!">)
"That's not possible. I'm not plugged in.">)
(ELSE
<ROUTINE V-QUERY ()
<COND (<AND <NOT <WHIZ?>>
(<NOT <WHIZ?>>
<TELL "FC: I'm translating that command into a request for a description of the " D ,PRSO "." CR>
<RTRUE>)
<ROBOT-TELL "I can't until a CLC link is established.">
<RFATAL>)
<RTRUE>)
<RTRUE>)
(ELSE
<GLOBAL PLUGOUTS
<PLTABLE "IP: " "TP: " "AP: " "HP: ">>
<ROUTINE DO-QUERY ("AUX" STR OUTSTR (COUNT 0))
<COND (<NOT .STR>
<TELL .OUTSTR "Index search indicates no data stored on that subject." CR>)
(T
<TELL .OUTSTR
"No data available on that subject from the "
<RTRUE>)
<REPEAT ()
<SET COUNT <+ .COUNT 1>>
<COND (<EQUAL? .COUNT 4>
<RTRUE>)>
<COND (<NOT <EQUAL? <GET .STR .COUNT> 0>>
<TELL .OUTSTR "Data available from the "
(ELSE
<COND (<NOT <EQUAL? <SET STR <GET .STR <- ,PLUGGED-IN 1>>> 0>>
<TELL .OUTSTR .STR CR>)
(T
<TELL .OUTSTR
"No data available on that subject at this peripheral." CR>)>)>>
<ROUTINE V-SHAKE ("AUX" X)
<ROBOT-TELL "It sounds as if there is something inside the " <>>
<REPEAT ()
(ELSE <RETURN>)>>
<ROBOT-TELL "All of the objects spill onto the floor.">)
<ROUTINE V-DIG () <ROBOT-TELL "What a silly idea!">>
<ROUTINE V-SMELL ()
<ROUTINE GLOBAL-IN? (OBJ1 OBJ2 "AUX" T)
#DECL ((OBJ1 OBJ2) OBJECT (T) <OR FALSE TABLE>)
<ZMEMQB .OBJ1 .T <- <PTSIZE .T> 1>>)>>
<ROUTINE HERE?? (OBJ)
<ROUTINE V-SWIM ()
<ROUTINE V-ALARM ()
<RFATAL>)
<TELL CR
"\"Beat it, you stupid robot! Can't you see we're trying to sleep?!\"" CR>)>
<TELL CR
"WALDO: The " D ,PEOPLE " are motioning violently and then resuming their reclining positions." CR>)
<TELL CR
"SENSA: The air is becoming charged with ionic activity as the " D ,PEOPLE
" stir from quiescence. They then return to a quiet state." CR>)
<TELL CR
"POET: Like loaves of bread sitting on a warm oven, the " D ,PEOPLE
" rise then fall." CR>)>)
(T
<ROUTINE V-ZORK () <TELL "I see no Zork here." CR>>
<ROUTINE V-COMMAND ()
<TELL "The " D ,PRSO " pays no attention." CR>)
(ELSE
<TELL "You cannot talk to that!" CR>)>>
<ROUTINE V-CLIMB-ON ()
<RTRUE>)
(T
<TELL "I can't climb onto the " D ,PRSO "." CR>)>>
<ROUTINE V-GET-OFF ()
(ELSE
<ROUTINE V-CLIMB-UP ("OPTIONAL" (DIR ,P?UP) (OBJ <>) "AUX" X)
#DECL ((DIR) FIX (OBJ) <OR ATOM FALSE> (X) TABLE)
<RTRUE>)
(<NOT .OBJ>
<RTRUE>)
(ELSE <TELL "Bizarre!" CR>)>>
<ROUTINE V-CLIMB-DOWN ()
<RTRUE>)
<RTRUE>)
<ROUTINE V-PUT-UNDER ()
<RTRUE>)>
<TELL "I can't do that." CR>>
<ROUTINE V-ENTER ()
<ROUTINE V-EXIT ()
<ROUTINE V-SEARCH ()
<RTRUE>)
<ROUTINE V-FIND ("AUX" (L <LOC ,PRSO>))
<RTRUE>)
(T <TELL "It's">)>
<TELL " right here." CR>)
<TELL D .L " have it." CR>)
<TELL D .L "." CR>)
(ELSE
<GLOBAL TELL-QUIPS
<PLTABLE "I can't do that. I only have eyes for you."
"I wouldn't be very handy if I did."
"Unable to articulate speech patterns."
"I hear you but I can't believe you."
"Sure. Mairzy dotes & dozey dotes."
"My connecting cable won't reach.">>
The previous WINNER value. This is needed, for example, to reset the WINNER after a BOTH command.
<GLOBAL OLD-WINNER <>>
<ROUTINE REAL-ROBOT (OBJ)
Indicates the robot you are currently commanding. This is a numeric index, not an object value. See NAME-TBL, ROBOT.
<GLOBAL ROFF <>>
<ROUTINE V-$TELL ()
(T
<TELL "FC: You can't talk to the " D ,PRSO "!" CR>
<RFATAL>)>>
<ROUTINE V-ANSWER ()
<TELL "Nobody is awaiting your answer." CR>
<RFATAL>>
<ROUTINE V-REPLY ()
<TELL "It is hardly likely that the " D ,PRSO " is interested." CR>
<RFATAL>>
<ROUTINE V-IS-IN ()
<TELL "Yes, it is ">
<TELL "on">)
(T <TELL "in">)>
<TELL " the " D ,PRSI "." CR>)
(T <TELL "No, it isn't." CR>)>>
<ROUTINE V-KISS ()
<COND (<IRIS?> <ROBOT-TELL "Without lips, that's quite a trick.">)
(<WHIZ?> <ROBOT-TELL "I'd sooner kiss the CLC.">)>>
<ROUTINE V-RAPE ()
<ROUTINE FIND-IN (WHERE WHAT "AUX" W)
<SET W <FIRST? .WHERE>>
<COND (<NOT .W> <RFALSE>)>
<REPEAT ()
<COND (<FSET? .W .WHAT> <RETURN .W>)
(<NOT <SET W <NEXT? .W>>> <RETURN <>>)>>>
<ROUTINE V-WEAR ()
<ROBOT-TELL "An interesting but highly unlikely thought.">)
(ELSE
<ROUTINE V-REMOVE ()
<ROUTINE V-TAKE-OFF ()
<RTRUE>)
<ROUTINE V-STEP-ON ()
<RTRUE>)
<ROBOT-TELL "There's no need for that since I'm working fine.">)
(ELSE
<TELL "That's a silly thing to do." CR>)>>
<ROUTINE V-PUT-ON ()
(ELSE
<ROUTINE ROB (WHO "OPTIONAL" (WHERE <>) (HIDE? <>) "AUX" N X (ROBBED? <>))
<SET X <FIRST? .WHO>>
<REPEAT ()
<COND (<NOT .X> <RETURN .ROBBED?>)>
<SET N <NEXT? .X>>
<SET ROBBED? .X>)>
<SET X .N>>>
<ROUTINE RIPOFF (X WHERE)
<COND (<AND <NOT <IN? .X .WHERE>>
<COND (.WHERE <MOVE .X .WHERE>)
(ELSE <REMOVE .X>)>
<RTRUE>)>>
<ROUTINE V-STAND ()
<RTRUE>)
(ELSE
<TELL "I'm already standing, I think." CR>)>>
<ROUTINE V-NO ()
<TELL "FC: You sound rather negative." CR>>
<ROUTINE V-YES ()
<TELL "FC: You sound rather positive." CR>>
<ROUTINE V-POINT ("AUX" W)
<TELL "selves." CR>)
(T
<TELL "self." CR>)>)
<TELL "FC: There's no need to do that." CR>)
(T
<TELL D ,TV " has been pointed at ">
<TELL "the ">)>
<CRLF>
" Transmission indicates the cables rest in the grooves in the following order: ">
(ELSE
<TELL "empty">)>
(T
(ELSE
<TELL "empty. ">)>)>
<RTRUE>)
" The little sign presents me with the access code the machine in the Main Supply Room needs to reset the Filtering Computers. It says " SD ,CODE1 SD ,CODE2 "." CR>
<RTRUE>)>
<TELL "a ">)>
<GLOBAL IRIS-TV-QUIPS
<PLTABLE
"The image is rather fuzzy, but it looks like "
"I can't make it out too clearly, but it seems like "
"You call this clear reception? All I can make out is the shape of "
"The image is broken up, but it looks as if it could be "
"Now I know why cable-tv was invented. All I can make out is the shape of ">>
<ROUTINE V-SET ("AUX" DIALOFF OLDNUM)
<COND (<NOT .DIALOFF>
<TELL "a ">)>
<TELL D ,PRSO "." CR> <RTRUE>)>
<ROBOT-TELL "How am I supposed to accomplish that?"><RTRUE>)>
<TELL "forward">)
(T
<TELL "right">)>
<TELL " any more." CR>)>)
<COND (<EQUAL? .OLDNUM 0>
<TELL "back">)
(T
<TELL "left">)>
<TELL " any more." CR> <RTRUE>)
(<L? .OLDNUM 10>
(ELSE
<ROBOT-TELL "That setting is out of range."> <RTRUE>)>
<ROBOT-TELL "That's where it was already set."> <RTRUE>)>
<ROUTINE V-PLAY ()
<TELL "Playing a " D ,PRSO "?" CR>>
<ROUTINE V-$VERIFY ()
<TELL "Verifying game..." CR>
<COND (<VERIFY> <TELL "Game correct." CR>)
(T <TELL CR "** Game File Failure **" CR>)>>
<ROUTINE V-STAND-ON ()
<RTRUE>)
(ELSE
<ROUTINE V-ALL-REPORT ("AUX" TEMP (COUNT -1) ROB)
<REPEAT ()
<SET COUNT <+ .COUNT 1>>
<COND (<EQUAL? .COUNT 6>
<RETURN>)>
<TELL "FC: " SD .ROB " is no longer functional." CR>
<COND (<L? .COUNT 5>
<CRLF>)>)
(T
<COND (<L? .COUNT 5>
<CRLF>)>)>>
<ROUTINE V-ALL-REPORT-LOC ("AUX" TEMP (COUNT -1) ROB)
<REPEAT ()
<SET COUNT <+ .COUNT 1>>
<COND (<EQUAL? .COUNT 6>
<RETURN>)>
<TELL "FC: " SD .ROB
" is no longer in communication." CR>)
(T
<ROUTINE V-REPORT ()
<TELL "FC: Full report from ">
<COND (<AUDA?>
<TELL "Auditory circuits active." CR>)
(T
<TELL "Auditory circuits inactive." CR>)>)>
<COND (<POET?>
<RTRUE>)>
<COND (<WHIZ?>
(T <TELL "Unable to process queries at this time." CR>)>)>>
<ROUTINE V-REPORT-LOC ()
<RTRUE>)
(T
(T
<TELL "." CR>)>>
This is the LOOK AT __ THROUGH __ command, which is copied straight over from Starcross. Suspended has no transparent objects, so the action is useless.
(The “X isn’t transparent” message is misleading, really. Only Iris would notice! And Waldo’s sonar can penetrate some surfaces, and so on.)
The action is called LOOK-SAFELY because Starcross has a laser that can blind you.
<ROUTINE V-LOOK-SAFELY ()
<TELL "The " D ,PRSO " looks as before, only tinged by the
color of the " D ,PRSI "." CR>)
(ELSE <TELL "The " D ,PRSI " isn't transparent." CR>)>>
<ROUTINE V-REACH ()
<TELL "There is something">)
(ELSE <TELL "There is nothing">)>
<TELL " sitting on the ">)
(ELSE <TELL " inside the ">)>
<ROUTINE V-REACH-FOR ()
<RTRUE>)
<TELL "It's here! Now what?" CR>)
(ELSE <TELL "It is out of reach." CR>)>>
<ROUTINE DO-WALK (DIR)
<GLOBAL WALK-INSULTS
<PLTABLE "I have enough trouble seeing where I am without being told to go to where I already am."
"That's easy. Poof. Sonar indicates that's where I was and still am."
"Sensory mechanisms detect that I am where you want me to be already."
"From what I hear, I am where you want me to be."
"How can you be two places at once when you're not anywhere at all?"
"I'm confused. That's where I am.">>
<GLOBAL ORDER-RCD
<PLTABLE "Got it, good looking. I'll let you know when I get there."
"I'm on my way. Expect a report on arrival."
"Order input acknowledged. Output on arrival."
"I hear you loud and clear. Talk to you when I get there."
"All life's a stage, so just consider me a player. See you."
"CLC setting coordinates. Will report in on arrival.">>
<ROUTINE V-WALK-TO ()
<TELL "FC: What makes you think you're not already there?" CR>
<RTRUE>)
<TELL "FC: " D ,PRSO "'s location: ">)
(T
<TELL "FC: " D ,PRSO " is non-functional. Last known location: ">)>
<TELL SD <LOC ,PRSO> ". Establishing path..." CR>
(T
<ROBOT-TELL "You'll have to tell me where it is first.">)>>
<ROUTINE CHECK-MORE? ()
<TELL CR "FC: When " D ,WINNER
" arrives, you'll have to tell ">
<TELL " what to do then. I have too much to keep track of already." CR>
<RFATAL>)>>
<ROUTINE DO-THE-TV ()
<TELL "(Unplugging " D ,TV " first.)" CR>)
<TELL "(getting off the " D ,WEDGE " first.)" CR>
<ROUTINE V-STOP ()
<TELL "the ">)>
<RTRUE>)>
<AUDA?>>
<ROBOT-TELL "Okay. Auditory sensors deactivated.">
<RTRUE>)
<TELL "." CR>
<ROBOT-TELL "I wasn't going anywhere special anyway.">
<RTRUE>)
<ROUTINE V-FLY ()
<ROBOT-TELL "Robots are not usually equipped for flying.">>
<ROUTINE V-SMILE ()
%<COND (<GASSIGNED? ZILCH> T)
(T '<ROUTINE V-ESCAPE ()
<QUITTER <ASCII 7> ,INCHAN>>)>
<ROUTINE GRASPING? (OBJ)
<REPEAT ()
<COND (<NOT .OBJ>
<RFALSE>)>
<RTRUE>)
(ELSE
<SET OBJ <LOC .OBJ>>)>>>
<ROUTINE PRE-REPLACE ("AUX" OBJ)
<RTRUE>)
<ROBOT-TELL "I'd better grasp one of them first.">
<RFATAL>)
"You've asked me to replace something with itself.">
<RFATAL>)
<RFALSE>)>>
<ROUTINE V-REPLACE ("AUX" LOC)
<TELL D ,PRSO " and the " D ,PRSI " aren't the same size."CR>
<RTRUE>)
(T
<COND (<AND <EQUAL? .LOC ,PANEL>
" OOOH! That felt good! Close my panel, big boy."
CR>)
<ROUTINE V-CUT ()
<RTRUE>)
<RTRUE>)
<RTRUE>)
<TELL "the ">)>
<TELL D ,PRSI " will work very well for this job." CR>)
(ELSE
<ROUTINE V-TOUCH ("AUX" (NUM 0) TBL)
<COND (<POET?>
<SET NUM
<COND (<G? .NUM 18>
(ELSE
<ROBOT-TELL "Sensory pads detect no abnormal flow.">)>)
(<WALDO?>
<RTRUE>)
(ELSE
<ROBOT-TELL "Not me, man. Better ask someone else.">)>>
<ROUTINE META-LOC (OBJ)
<REPEAT ()
<RFALSE>)>
<RETURN .OBJ>)
(ELSE
<SET OBJ <LOC .OBJ>>)>>>
<ROUTINE V-PUSH-UP ()
<RTRUE>)
<TELL
"FC: I think you're following the path of Franklin." CR>
<RTRUE>)
<TELL " keeps moving away." CR>
<RTRUE>)
<ROBOT-TELL "Umph! Hard work, but consider it done!">
(T
<ROBOT-TELL "I'd like to, but there's no way to get " <>>
<TELL " up that high from where I am." CR>)>>
<ROUTINE V-REPAIR ()
(T
<ROBOT-TELL "It doesn't seem to be in need of repairs.">)>>
<ROUTINE BIG-NUM-PRINT (NUM "AUX" TEMP)
<COND (<EQUAL? .NUM 0>
<TELL "0">
<RTRUE>)
(<G? .NUM 999>
<SET TEMP </ .NUM 1000>>
<SET NUM <MOD .NUM 1000>>
<TELL N .TEMP ",">
<COND (<EQUAL? .NUM 0>
<TELL "000">)
(<L? .NUM 10>
<TELL "00" N .NUM>)
(<L? .NUM 100>
<TELL "0" N .NUM>)
(T <TELL N .NUM>)>)
(T
<TELL N .NUM>)>
<TELL ",000">>
<ROUTINE V-ADVANCED ()
<TELL
"FC: You are already in the advanced situation." CR>)
" Your request for the advanced game has been rejected since " N ,MOVES " cycles have already transpired. Please consult your indoctrination manual for the proper procedure." CR>)
(T
<TELL
"FC: Request for advanced game acknowledged." CR>
<CRLF>
<ROUTINE V-IMPOSSIBLE ()
<TELL
"FC: It is impossible to do that now. Please refer to your indoctrination manual for the proper way to initiate the impossible game." CR>
<RTRUE>)
(T
<TELL "FC: Okay, you asked for it..." CR CR>
<TELL
"FC INTERRUPT: External sensors detect huge radiation abnormalities in the star which provides Contra with all light and heat.|
|
WARNING! TIME CRITICAL!!|
|
External sensors detect significant instability in the star." CR>)>>
IMPOSSIBLE mode is of course a joke. The star goes nova in two turns and there’s nothing you can do about it.
I don’t know if the wonderful game Outer Wilds (2019) was inspired by this. I hope so.
I know that I was inspired to add an IMPOSSIBLE mode to my game The Dreamhold (2004). Although – spoiler – in my game, it’s not truly impossible!
<ROUTINE I-IMP ()
<TELL CR
"FC INTERRUPT: Oh oh. Abnormalities in star approaching critical level.
NOVA IMMINENT!|
|
So long from all the gang -- Iris, Waldo, Sensa, Auda, Poet, Whiz, FRED, and last but not least, we three FCs." CR>
<QUIT>>
<ROUTINE V-WHY ()
<COND (<NOT <WHIZ?>>
<ROBOT-TELL "Sure beats me. You might ask Whiz...">)
(T
"Please refer to your manual for proper querying procedures.">)>>