amfv/interrupts.zil

1275 lines
45 KiB
Plaintext

"INTERRUPTS for
A MIND FOREVER VOYAGING
(c) 1985 by Infocom, Inc. All Rights Reserved."
;"the purpose of this file is to get stuff needed very often, such as
interrupts that run every turn, into the pre-load"
<ROUTINE I-PERELMAN ("AUX" (TOLD <>))
<COND (<OR <G? ,PART-FLAG 2>
,REVIEWING-RECORDINGS>
<DISABLE <INT I-PERELMAN>>
<RFALSE>)>
<QUEUE I-PERELMAN -1>
<COND (<AND <G? ,TIME 536>
<NOT <G? ,LAST-ABE-TIME 536>>> ;"it's 8:56am"
<COND (<EQUAL? ,HERE ,CONTROL-CENTER>
<TELL CR "Doctor Perelman walks jauntily into the ">
<PRINTD ,CONTROL-CENTER-OBJECT>
<TELL
". \"Good morning to all,\" he calls cheerily and begins chatting with
the chief of the night shift." CR>
<SET TOLD T>)>
<PUT-PERELMAN-IN-THE-RIGHT-PLACE>)
(<AND <G? ,TIME 550>
<NOT <G? ,LAST-ABE-TIME 550>>> ;"it's 9:10am"
<COND (<EQUAL? ,HERE ,CONTROL-CENTER>
<COND (<IN? ,PERELMAN ,CONTROL-CENTER>
<TELL CR
"Perelman stops talking to the technician, who hangs up his
white overcoat and leaves the control room. Perelman crosses
the room and picks up a thick report." CR>)
(T
<TELL CR
"Perelman enters, looks around, and picks up a thick report." CR>)>
<SET TOLD T>)>
<PUT-PERELMAN-IN-THE-RIGHT-PLACE>)
(<AND <G? ,TIME 599>
<NOT <G? ,LAST-ABE-TIME 599>>> ;"it's 9:59am"
<COND (<AND <EQUAL? ,HERE ,CONTROL-CENTER>
<IN? ,PERELMAN ,CONTROL-CENTER>>
<TELL CR
"Perelman puts down the report and walks toward the door. He calls to
one of the technicians. \"Nat, I'll be in my office.\"" CR>
<SET TOLD T>)>
<PUT-PERELMAN-IN-THE-RIGHT-PLACE>)
(<AND <G? ,TIME 616>
<NOT <G? ,LAST-ABE-TIME 616>>> ;"it's 10:16am"
<SET TOLD <PERELMAN-WALKS-IN-WITH-COFFEE>>
<PUT-PERELMAN-IN-THE-RIGHT-PLACE>)
(<AND <G? ,TIME 711>
<NOT <G? ,LAST-ABE-TIME 711>>> ;"it's 11:51am"
<COND (<AND <EQUAL? ,HERE ,OFFICE>
<IN? ,PERELMAN ,OFFICE>>
<TELL CR
"The telephone buzzes. \"Perelman,\" says Perelman into the receiver. The
voice at the other end is so quiet that even your sensitive audio monitors
can't pick it up. \"Hi, Aseejh.\" Pause. \"Yes, let's get together on that.\"
He glances up at his terminal. \"It's almost lunch time; want to meet me in
the cafeteria?\" Pause. \"Okay, ten minutes.\" Perelman replaces the receiver
and leaves the room." CR>
<SET TOLD T>)>
<PUT-PERELMAN-IN-THE-RIGHT-PLACE>)
(<AND <G? ,TIME 790>
<NOT <G? ,LAST-ABE-TIME 790>>> ;"it's 1:10pm"
<SET TOLD <PERELMAN-WALKS-IN-WITH-COFFEE>>
<PUT-PERELMAN-IN-THE-RIGHT-PLACE>)
(<AND <G? ,TIME 834>
<NOT <G? ,LAST-ABE-TIME 834>>> ;"it's 1:54pm"
<COND (<AND <EQUAL? ,HERE ,OFFICE>
<IN? ,PERELMAN ,OFFICE>>
<CRLF>
<PRINTD ,PRICE>
<TELL
", Doctor Perelman's secretary, appears in the doorway. \"Doc, don't forget,
you've got a meeting with Vera at two o'clock.\" He glances at his watch,
mumbles some impolite things under his breath, and rushes out." CR>
<SET TOLD T>)>
<PUT-PERELMAN-IN-THE-RIGHT-PLACE>)
(<AND <G? ,TIME 980>
<NOT <G? ,LAST-ABE-TIME 980>>> ;"it's 4:20pm"
<COND (<EQUAL? ,HERE ,OFFICE>
<TELL CR
"Doctor Perelman walks into the office, carrying a pile of pink message slips.
He scans them, drops all but one into a basket on his desk, picks up the phone
receiver, and presses two or three buttons. Your sensitive audio pickup hears
a few rings, a click, and then a young woman's voice: \"This is ">
<PRINTD ,ESTHER>
<TELL
". Can't come to the phone now. Please leave a message, though.\" Pause.
\"BEEP!\" Perelman speaks into the phone. \"Hi, it's Dad. I got your message,
but I can't make it; I'm too tied up with the Project. I'll probably be in
the office all evening if you want to talk.\"" CR>
<SET TOLD T>)>
<PUT-PERELMAN-IN-THE-RIGHT-PLACE>)
(<AND <G? ,TIME 1157>
<NOT <G? ,LAST-ABE-TIME 1157>>> ;"it's 7:17pm"
<COND (<EQUAL? ,HERE ,OFFICE>
<COND (<IN? ,PERELMAN ,OFFICE>
<CRLF>
<PRINTD ,PRICE>
<TELL
", Perelman's secretary, pops her head in the doorway. \"Hey Doc! ">)
(T
<TELL CR "Perelman enters with his secretary, ">
<PRINTD ,PRICE>
<TELL ", who asks, \"">)>
<TELL
"Need me for anything else tonight?\" Perelman, grinning, responds, \"Not
unless you've decided to dump that unfairly handsome husband of yours.\" She
looks exasperated at what is obviously an old joke and shakes a fist at him
in a mock threat. \"Really, though, I'll be fine,\" says Perelman. \"Scram.\"
She disappears from sight, shouting from the next room, \"Good night, Doc.
Don't stay too late!\"" CR>
<SET TOLD T>)>
<PUT-PERELMAN-IN-THE-RIGHT-PLACE>)
(<AND <G? ,TIME 1241>
<NOT <G? ,LAST-ABE-TIME 1241>>> ;"it's 8:41pm"
<COND (<AND <EQUAL? ,HERE ,OFFICE>
<IN? ,PERELMAN ,OFFICE>>
<TELL
"Perelman shoves some papers into a notebook, types something on his
desk terminal, and leaves the room." CR>
<SET TOLD T>)>
<PUT-PERELMAN-IN-THE-RIGHT-PLACE>)
(<AND <G? ,TIME 1281>
<NOT <G? ,LAST-ABE-TIME 1281>>> ;"it's 9:21pm"
<COND (<EQUAL? ,HERE ,CONTROL-CENTER>
<TELL CR "Doctor Perelman walks into the ">
<PRINTD ,CONTROL-CENTER-OBJECT>
<TELL
". He wanders around the room, talking quietly with a few technicians.
He picks up a hefty printout from the printer and settles into a
swivel chair to read it." CR>
<SET TOLD T>)>
<PUT-PERELMAN-IN-THE-RIGHT-PLACE>)
(<AND <G? ,TIME 1312>
<NOT <G? ,LAST-ABE-TIME 1312>>> ;"it's 9:52pm"
<COND (<AND <EQUAL? ,HERE ,CONTROL-CENTER>
<IN? ,PERELMAN ,CONTROL-CENTER>>
<TELL CR
"Perelman puts down the printout and rubs his eyes. He stands and
unsuccessfully stifles a yawn. \"I'm going home,\" he announces to
the tiny evening staff">
<COND (<PROB 50>
<TELL
". Try not to call me unless it's an emergency">)>
<TELL ".\" He leaves the control complex." CR>
<SET TOLD T>)>
<PUT-PERELMAN-IN-THE-RIGHT-PLACE>)
(<AND <G? ,TIME 1318>
<NOT <G? ,LAST-ABE-TIME 1318>>> ;"it's 10:03pm"
<COND (<EQUAL? ,HERE ,OFFICE>
<TELL
"Doctor Perelman walks wearily into the office, puts on a thin overcoat, and
grabs a notebook stuffed with papers. He stops at the doorway, glancing about
the room, and" ,SPOTS-ACTIVE-LIGHT ". A smile breaks through the weary lines
on his face. He raises his hand to his forehead in a friendly salute. \"Good
night, PRISM.\" He dims the light and closes the office door. The sensors on
your monitor automatically adjust to the lower light level." CR>
<SET TOLD T>)>)>
<SETG LAST-ABE-TIME ,TIME>
<COND (.TOLD
<RTRUE>)
(T
<RFALSE>)>>
<ROUTINE PUT-PERELMAN-IN-THE-RIGHT-PLACE ()
<COND (<L? ,TIME 536>
<COND (<AND <VISIBLE? ,PERELMAN>
<EQUAL? ,PERELMAN ,WINNER>>
<CLEAR-BUF>)>
<MOVE ,PERELMAN ,LOCAL-GLOBALS>
<MOVE ,COFFEE ,LOCAL-GLOBALS>)
(<AND <G? ,TIME 535>
<L? ,TIME 550>>
<MOVE ,PERELMAN ,CONTROL-CENTER>
<MOVE ,COFFEE ,LOCAL-GLOBALS>
<PUTP ,PERELMAN ,P?LDESC
"Doctor Perelman is at the far end of the room, speaking to the head
technician of the night shift.">)
(<AND <G? ,TIME 549>
<L? ,TIME 599>>
<MOVE ,PERELMAN ,CONTROL-CENTER>
<MOVE ,COFFEE ,LOCAL-GLOBALS>
<PUTP ,PERELMAN ,P?LDESC
"Doctor Perelman is here, reading a report.">)
(<AND <G? ,TIME 598>
<L? ,TIME 616>>
<COND (<AND <VISIBLE? ,PERELMAN>
<EQUAL? ,PERELMAN ,WINNER>>
<CLEAR-BUF>)>
<MOVE ,PERELMAN ,LOCAL-GLOBALS>
<MOVE ,COFFEE ,LOCAL-GLOBALS>)
(<AND <G? ,TIME 615>
<L? ,TIME 711>>
<MOVE ,PERELMAN ,OFFICE>
<MOVE ,COFFEE ,OFFICE>
<PUTP ,PERELMAN ,P?LDESC
"Doctor Perelman is sitting at his desk, reading through stacks of papers
and occasionally typing on his desk terminal.">)
(<AND <G? ,TIME 710>
<L? ,TIME 790>>
<COND (<AND <VISIBLE? ,PERELMAN>
<EQUAL? ,PERELMAN ,WINNER>>
<CLEAR-BUF>)>
<MOVE ,PERELMAN ,LOCAL-GLOBALS>
<MOVE ,COFFEE ,LOCAL-GLOBALS>)
(<AND <G? ,TIME 789>
<L? ,TIME 834>>
<MOVE ,PERELMAN ,OFFICE>
<MOVE ,COFFEE ,OFFICE>
<PUTP ,PERELMAN ,P?LDESC
"Doctor Perelman is sitting at his desk, reading through stacks of papers
and occasionally typing on his desk terminal.">)
(<AND <G? ,TIME 833>
<L? ,TIME 980>>
<COND (<AND <VISIBLE? ,PERELMAN>
<EQUAL? ,PERELMAN ,WINNER>>
<CLEAR-BUF>)>
<MOVE ,COFFEE ,LOCAL-GLOBALS>
<MOVE ,PERELMAN ,LOCAL-GLOBALS>)
(<AND <G? ,TIME 979>
<L? ,TIME 1241>>
<MOVE ,PERELMAN ,OFFICE>
<PUTP ,PERELMAN ,P?LDESC
"Doctor Perelman is sitting at his desk, reading through stacks of papers
and occasionally typing on his desk terminal.">)
(<AND <G? ,TIME 1240>
<L? ,TIME 1281>>
<COND (<AND <VISIBLE? ,PERELMAN>
<EQUAL? ,PERELMAN ,WINNER>>
<CLEAR-BUF>)>
<MOVE ,PERELMAN ,LOCAL-GLOBALS>
<MOVE ,COFFEE ,LOCAL-GLOBALS>)
(<AND <G? ,TIME 1280>
<L? ,TIME 1312>>
<MOVE ,PERELMAN ,CONTROL-CENTER>
<MOVE ,COFFEE ,LOCAL-GLOBALS>
<PUTP ,PERELMAN ,P?LDESC
"Doctor Perelman is sitting in a swivel chair, reading a long printout.">)
(<G? ,TIME 1311>
<COND (<AND <VISIBLE? ,PERELMAN>
<EQUAL? ,PERELMAN ,WINNER>>
<CLEAR-BUF>)>
<MOVE ,PERELMAN ,LOCAL-GLOBALS>
<MOVE ,COFFEE ,LOCAL-GLOBALS>)>>
<ROUTINE I-JILL ("AUX" OLD-JILL-LOC)
<COND (<EQUAL? ,SYEAR 2061>
<COND (<NOT <IN-APARTMENT?>>
<RFALSE>)>
<SETG MITCHELL-NEWS-FLAG T>
<QUEUE I-APARTMENT -1>
<SETG FOLLOW-FLAG 1>
<QUEUE I-UNFOLLOW 2>
<SCORE 119> ;"4 points"
<MOVE ,JILL ,BEDROOM>
<COND (<FSET? ,APARTMENT-DOOR ,OPENBIT>
<TELL CR "You hear a noise from the open doorway">)
(<EQUAL? ,HERE ,LIVING-ROOM>
<TELL CR "The apartment door opens">)
(T
<TELL CR "You hear the apartment door open">)>
<TELL " and">
<COND (<NOT <EQUAL? <LOC ,PLAYER> ,HERE>>
<MOVE ,PLAYER ,HERE>
<TELL " you stand as">)>
<TELL
" Jill comes running into the room. She seems terribly upset, throws herself
against you, and begins sobbing uncontrollably. As you attempt to comfort her,
she begins speaking between the sobs.|
|
\"It's Mitchell,\" she begins, and a lifelong fear of injury to your only
child clutches at your heart. \"He's gone off and joined the Church of God's
Word. He came and collected all his stuff about an hour ago. He said he's
going to an orientation camp in Arizona. He says he'll never be able to
speak to you or me again unless we join the Church. I followed him all the
way to the airport but he wouldn't listen to me! He wouldn't even say goodbye
to me! He wouldn't even...\" She begins sobbing even more uncontrollably,
breaks away from you, and ">
<COND (<EQUAL? ,HERE ,BEDROOM>
<TELL "throws herself down onto the bed." CR>
<RTRUE>)
(T
<TELL "runs into the bedroom." CR>
<RTRUE>)>)
(<AND <NOT <FSET? ,JILL ,TOUCHBIT>> ;"it's 2041 or 2051"
<IN-APARTMENT?>>
<FSET ,JILL ,TOUCHBIT>
<COND (<EQUAL? ,JILL-COUNTER 0>
<RFALSE>)
(T
<CRLF>)>
<COND (<EQUAL? ,JILL-COUNTER 1 2>
<SETG FOLLOW-FLAG 2>
<QUEUE I-UNFOLLOW 2>
<TELL
"Jill appears in the bedroom doorway. \"Perry, have you been out all
night? You know how I worry.\" She returns to the bedroom." CR>)
(<EQUAL? ,JILL-COUNTER 3 6 7>
<SETG FOLLOW-FLAG 3>
<QUEUE I-UNFOLLOW 2>
<TELL
"Jill enters from the kitchen. \"Hi, hon. You're home early!\" She kisses
you before returning to the kitchen." CR>)
(<OR <EQUAL? ,JILL-COUNTER 4 5>
<EQUAL? ,JILL-COUNTER 8 9 10>>
<COND (<EQUAL? ,JILL-COUNTER 4 10>
<TELL "Jill looks up from her book">)
(<EQUAL? ,JILL-COUNTER 5 8>
<TELL "Jill looks up from her painting">)
(T
<TELL
"Jill stops working for a moment and smiles at you">)>
<SETG YES-NO-FLAG 7>
<QUEUE I-YES-NO 2>
<TELL
". \"Hi, hon. Any news from your agent today?\"" CR>)
(T ;"JILL-COUNTER is 11 or 12"
<SETG FOLLOW-FLAG 2>
<QUEUE I-UNFOLLOW 2>
<TELL "Jill enters from the bedroom, ">
<COND (<EQUAL? ,JILL-COUNTER 11>
<TELL "her hair wrapped in a towel">)
(T
<TELL "wearing a robe">)>
<TELL
". \"Perry, I wish you wouldn't stay out so late.\" She heads
back into the bedroom." CR>)>
<RTRUE>)
(<EQUAL? ,JILL-COUNTER 14>
<QUEUE I-JILL -1>
<SET OLD-JILL-LOC <LOC ,JILL>>
<PUT-JILL-IN-THE-RIGHT-PLACE>
<COND (<EQUAL? ,HERE .OLD-JILL-LOC>
<TELL CR
"With a deep sigh, Jill stops cleaning the mess">
<COND (<NOT <IN? ,JILL ,HERE>>
<SETG FOLLOW-FLAG 15>
<QUEUE I-UNFOLLOW <+ ,ELAPSED-TIME 2>>
<TELL " and leaves the room">)>
<TELL "." CR>)
(<IN? ,JILL ,HERE>
<TELL CR "Jill walks slowly into the room." CR>)>)
(<AND <G? ,STIME 1402> ;"11:22pm"
<EQUAL? ,JILL-COUNTER 12>>
<SETG JILL-COUNTER 0>
<MOVE ,JILL ,BEDROOM>
<FCLEAR ,JILL-BOOK ,NDESCBIT>
<COND (<EQUAL? ,HERE ,BEDROOM>
<TELL CR
"Jill puts down her book and curls under the covers. Moments later,
her breathing indicates that she is asleep." CR>
<RTRUE>)>)
(<AND <G? ,STIME 1299> ;"9:39pm"
<EQUAL? ,JILL-COUNTER 11>>
<SETG JILL-COUNTER 12>
<MOVE ,JILL ,BEDROOM>
<MOVE ,JILL-BOOK ,BEDROOM>
<FSET ,JILL-BOOK ,NDESCBIT>
<COND (<EQUAL? ,HERE ,BEDROOM>
<TELL CR
"Jill enters and picks up her book. She slips into bed and begins reading." CR>
<RTRUE>)
(<EQUAL? ,HERE ,BATHROOM>
<SETG FOLLOW-FLAG 4>
<QUEUE I-UNFOLLOW 2>
<TELL CR
"Jill finishes drying her hair and leaves the bathroom." CR>
<RTRUE>)>)
(<AND <G? ,STIME 1242> ;"8:42"
<EQUAL? ,JILL-COUNTER 10>>
<SETG JILL-COUNTER 11>
<MOVE ,JILL ,BATHROOM>
<MOVE ,JILL-BOOK ,BEDROOM>
<FCLEAR ,JILL-BOOK ,NDESCBIT>
<COND (<EQUAL? ,HERE ,BATHROOM>
<TELL CR "Jill enters and begins wetting her hair." CR>
<RTRUE>)
(<EQUAL? ,HERE ,BEDROOM>
<SETG FOLLOW-FLAG 5>
<QUEUE I-UNFOLLOW 2>
<TELL CR
"Jill enters from the living room, placing her book down near the bed. She
wanders around for a minute, looking bored. \"I think I'll do my hair,\"
she says, stepping into the bathroom." CR>
<RTRUE>)
(<EQUAL? ,HERE ,LIVING-ROOM>
<SETG FOLLOW-FLAG 2>
<QUEUE I-UNFOLLOW 2>
<TELL CR
"Jill stands, stretches, and walks into the bedroom." CR>
<RTRUE>)>)
(<AND <G? ,STIME 1137> ;"6:57pm"
<EQUAL? ,JILL-COUNTER 9>>
<SETG JILL-COUNTER 10>
<MOVE ,JILL ,LIVING-ROOM>
<MOVE ,JILL-BOOK ,LIVING-ROOM>
<FSET ,JILL-BOOK ,NDESCBIT>
<COND (<EQUAL? ,HERE ,LIVING-ROOM>
<TELL CR
"Jill picks up a book and sits down on the couch to read it." CR>
<RTRUE>)>)
(<AND <G? ,STIME 1084>
<EQUAL? ,JILL-COUNTER 8>>
<SETG JILL-COUNTER 9>
<MOVE ,JILL ,LIVING-ROOM>
<COND (<EQUAL? ,HERE ,LIVING-ROOM>
<TELL CR
"Jill puts down the paintbrush and begins cleaning up the room." CR>
<RTRUE>)>)
(<AND <G? ,STIME 912>
<EQUAL? ,JILL-COUNTER 7>>
<SETG JILL-COUNTER 8>
<MOVE ,JILL ,LIVING-ROOM>
<COND (<EQUAL? ,HERE ,LIVING-ROOM>
<TELL CR
"Jill enters the living room and looks around as though trying to
decide what to do. She walks over to her easel, stares at it for a
few moments, and then picks up a paintbrush." CR>
<RTRUE>)
(<EQUAL? ,HERE ,KITCHEN>
<SETG FOLLOW-FLAG 6>
<QUEUE I-UNFOLLOW 2>
<TELL CR
"Jill finishes the last of the dishes and walks into the living room." CR>
<RTRUE>)>)
(<AND <G? ,STIME 859>
<EQUAL? ,JILL-COUNTER 6>>
<SETG JILL-COUNTER 7>
<MOVE ,JILL ,KITCHEN>
<MOVE ,SALAD ,LOCAL-GLOBALS>
<COND (<EQUAL? ,HERE ,KITCHEN>
<TELL CR
"Jill finishes her salad, walks over to the sink,
and begins cleaning some dishes." CR>
<RTRUE>)>)
(<AND <G? ,STIME 813>
<EQUAL? ,JILL-COUNTER 5>>
<SETG JILL-COUNTER 6>
<MOVE ,SALAD ,KITCHEN>
<FSET ,SALAD ,NDESCBIT>
<MOVE ,JILL ,KITCHEN>
<FCLEAR ,REFRIGERATOR ,OPENBIT>
<COND (<EQUAL? ,HERE ,KITCHEN>
<TELL CR "Jill walks in and gets a ">
<PRINTD ,SALAD>
<TELL " from the ">
<PRINTD ,REFRIGERATOR>
<TELL ". She sits at the ">
<PRINTD ,DINETTE-SET>
<TELL " and begins slowly munching on the salad." CR>
<RTRUE>)
(<EQUAL? ,HERE ,LIVING-ROOM>
<SETG FOLLOW-FLAG 3>
<QUEUE I-UNFOLLOW 2>
<TELL CR
"Jill lays down her brush. \"I'm getting hungry.\"
She heads off into the kitchen." CR>
<RTRUE>)>)
(<AND <G? ,STIME 697>
<EQUAL? ,JILL-COUNTER 4>>
<SETG JILL-COUNTER 5>
<MOVE ,JILL ,LIVING-ROOM>
<FCLEAR ,JILL-BOOK ,NDESCBIT>
<COND (<EQUAL? ,HERE ,LIVING-ROOM>
<TELL CR
"Jill puts down the book and stretches. She walks over to her easel, stares
at the painting for a moment, and picks up a paintbrush." CR>
<RTRUE>)>)
(<AND <G? ,STIME 644>
<EQUAL? ,JILL-COUNTER 3>>
<SETG JILL-COUNTER 4>
<MOVE ,JILL ,LIVING-ROOM>
<MOVE ,JILL-BOOK ,LIVING-ROOM>
<FSET ,JILL-BOOK ,NDESCBIT>
<MOVE ,SALAD ,REFRIGERATOR>
<FCLEAR ,SALAD ,NDESCBIT>
<COND (<EQUAL? ,HERE ,LIVING-ROOM>
<TELL CR
"Jill walks from the kitchen to the bedroom, returns with her book, settles
onto the couch, and begins reading." CR>
<RTRUE>)
(<EQUAL? ,HERE ,BEDROOM>
<TELL CR
"Jill walks into the bedroom, picks up her book, and returns
to the living room." CR>)
(<EQUAL? ,HERE ,KITCHEN>
<SETG FOLLOW-FLAG 6>
<QUEUE I-UNFOLLOW 2>
<FCLEAR ,REFRIGERATOR ,OPENBIT>
<TELL CR "Jill puts the salad in the ">
<PRINTD ,REFRIGERATOR>
<TELL " and goes into the living room." CR>
<RTRUE>)>)
(<AND <G? ,STIME 591>
<EQUAL? ,JILL-COUNTER 2>>
<SETG JILL-COUNTER 3>
<MOVE ,JILL ,KITCHEN>
<MOVE ,SALAD ,KITCHEN>
<FSET ,SALAD ,NDESCBIT>
<COND (<EQUAL? ,HERE ,KITCHEN>
<TELL CR "Jill enters and begins making a salad." CR>
<RTRUE>)
(<EQUAL? ,HERE ,BEDROOM>
<SETG FOLLOW-FLAG 7>
<QUEUE I-UNFOLLOW 2>
<TELL CR
"Jill walks out of the room, toward the living room." CR>
<RTRUE>)
(<EQUAL? ,HERE ,LIVING-ROOM>
<SETG FOLLOW-FLAG 3>
<QUEUE I-UNFOLLOW 2>
<TELL CR
"Jill passes through on her way from the bedroom to the kitchen." CR>
<RTRUE>)>)
(<AND <G? ,STIME 522>
<EQUAL? ,JILL-COUNTER 1>>
<SETG JILL-COUNTER 2>
<MOVE ,JILL ,BEDROOM>
<COND (<EQUAL? ,HERE ,BEDROOM>
<TELL CR
"Jill finishes dressing and begins neatening up the room." CR>
<RTRUE>)>)
(<AND <G? ,STIME 478>
<L? ,STIME 1380> ;"otherwise she'd wake up a minute later"
<EQUAL? ,JILL-COUNTER 0>>
<SETG JILL-COUNTER 1>
<MOVE ,JILL ,BEDROOM>
<COND (<EQUAL? ,HERE ,BEDROOM>
<TELL CR
"Jill rubs her eyes and rolls out of bed. \"Morning, honey! I sure slept
like a stone!\" She gives you a quick kiss and begins dressing." CR>
<RTRUE>)>)
(<AND ,JILL-NOT-SPOKEN-YET
<IN? ,JILL ,HERE>
<NOT <EQUAL? ,JILL-COUNTER 0>>
<PROB 5>>
<SETG JILL-NOT-SPOKEN-YET <>>
<COND (<EQUAL? ,SYEAR 2041>
<TELL CR
"Jill looks up. \"Perry, I heard a news report yesterday about interest rates
and housing prices. If the economy keeps going the way it's going, and someone
buys your Africa book, we might be able to afford a house next year!\"" CR>)
(T
<TELL CR
"\"Oh, Perry! Clave called while you were out,\" says Jill. \"The firm is
sending him to Japan for a week; he'll call when he gets back. He says not
to worry, he'll only be in the American section. He says that the kids keep
asking for you.\"" CR>)>)>
<RFALSE>>
<ROUTINE I-MITCHELL ()
<COND (<AND <NOT <IN-APARTMENT?>>
<NOT <EQUAL? ,HERE ,PARKVIEW-HALL>>>
<DISABLE <INT I-MITCHELL>>)
(<AND <G? ,STIME 1374> ;"11:22pm"
<EQUAL? ,MITCHELL-COUNTER 4>>
<SETG MITCHELL-COUNTER 0>
<MOVE ,HOMEWORK ,LOCAL-GLOBALS>
<MOVE ,MITCHELL ,LOCAL-GLOBALS>
<COND (<EQUAL? ,HERE ,LIVING-ROOM>
<SETG FOLLOW-FLAG 14>
<QUEUE I-UNFOLLOW 2>
<TELL CR
"\"Good night, Dad.\" Mitch gives you a quick kiss and goes to his
\"room\" on the other side of the partition." CR>
<RTRUE>)>)
(<AND <G? ,STIME 1120>
<EQUAL? ,MITCHELL-COUNTER 3>>
<SETG MITCHELL-COUNTER 4>
<MOVE ,HOMEWORK ,LIVING-ROOM>
<MOVE ,LOGIC-GAME ,LOCAL-GLOBALS>
<COND (<EQUAL? ,HERE ,LIVING-ROOM>
<TELL CR "Mitchell puts away the ">
<PRINTD ,LOGIC-GAME>
<TELL " and spreads out his homework." CR>
<RTRUE>)>)
(<AND <G? ,STIME 1011>
<EQUAL? ,MITCHELL-COUNTER 2>>
<SETG MITCHELL-COUNTER 3>
<MOVE ,MITCHELL ,LIVING-ROOM>
<MOVE ,LOGIC-GAME ,MITCHELL>
<COND (<EQUAL? ,HERE ,PARKVIEW-HALL>
<SETG FOLLOW-FLAG 11>
<QUEUE I-UNFOLLOW 2>
<TELL
"Mitchell comes running down the hall. \"Hey Dad" ,ALGEBRA " He ">
<COND (<NOT <FSET? ,APARTMENT-DOOR ,OPENBIT>>
<TELL "opens the door and ">)>
<TELL "bounds into the apartment">
<COND (<NOT <FSET? ,APARTMENT-DOOR ,OPENBIT>>
<TELL ", closing the door behind him">)>
<TELL "." CR>
<RTRUE>)
(T
<COND (<EQUAL? ,HERE ,LIVING-ROOM>
<COND (<NOT <FSET? ,APARTMENT-DOOR ,OPENBIT>>
<TELL "The door opens and ">)>
<TELL "Mitchell runs into the apartment. ">)
(T
<TELL "You hear ">
<COND (<NOT <FSET? ,APARTMENT-DOOR ,OPENBIT>>
<TELL
"the front door open, followed by ">)>
<TELL "Mitchell's voice. ">)>
<TELL "\"I'm home" ,ALGEBRA>
<COND (<EQUAL? ,HERE ,LIVING-ROOM>
<TELL " He pulls out his favorite ">
<PRINTD ,LOGIC-GAME>
<TELL " and settles into a corner.">)>
<CRLF>
<RTRUE>)>)
(<AND <G? ,STIME 505> ;"8:25am"
<EQUAL? ,MITCHELL-COUNTER 1>>
<SETG MITCHELL-COUNTER 2>
<MOVE ,MITCHELL ,LOCAL-GLOBALS>
<COND (<EQUAL? ,HERE ,PARKVIEW-HALL>
<SETG FOLLOW-FLAG 10>
<QUEUE I-UNFOLLOW 2>
<TELL CR
"Mitchell emerges from the apartment, carrying his lunch box. \"Hi, Dad!
See you later!\" He dashes down the stairs." CR>
<RTRUE>)
(T
<SETG FOLLOW-FLAG 12>
<QUEUE I-UNFOLLOW 2>
<TELL CR
"\"Mom! Dad!\" yells Mitchell. \"I'm off to school!\"">
<COND (<EQUAL? ,HERE ,LIVING-ROOM>
<TELL " Mitchell waves to you and leaves.">)>
<CRLF>
<RTRUE>)>)
(<AND <G? ,STIME 463>
<L? ,STIME 720> ;"else he wakes after sleeping a minute"
<EQUAL? ,MITCHELL-COUNTER 0>>
<SETG MITCHELL-COUNTER 1>
<MOVE ,MITCHELL ,LIVING-ROOM>
<COND (<EQUAL? ,HERE ,LIVING-ROOM>
<TELL CR
"Mitchell appears from behind his partition and begins
getting ready for school." CR>
<RTRUE>)>)>
<RFALSE>>
<ROUTINE I-APARTMENT ()
<COND (<EQUAL? ,JILL-COUNTER 13>
<SETG JILL-COUNTER 14>
<QUEUE I-JILL 28>
<COND (<IN? ,JILL ,HERE>
<TELL CR
"Jill, with a few final sniffles, stops crying and begins
straightening up the apartment." CR>
<RTRUE>)>
<RFALSE>)
(<NOT <IN-APARTMENT?>>
<DISABLE <INT I-APARTMENT>>
<RFALSE>)
(<OR <G? ,STIME 1320>
<L? ,STIME 480>>
<QUEUE I-APARTMENT 30>)
(<AND <NOT <EQUAL? ,SYEAR 2041>>
<NOT ,APARTMENT-RAID-FLAG>>
<COND (<PROB ,RAID-PROB>
<COND (<FSET? ,APARTMENT-DOOR ,OPENBIT>
<TELL CR
"You hear a commotion in the hallway and then">)
(T
<TELL CR
"WHAM! The door of your apartment slams open and">)>
<COND (<NOT <EQUAL? ,HERE ,LIVING-ROOM>>
<TELL ", as you rush into the living room,">)>
<TELL
" a half-dozen Border Security Force officers storm in, rifles ready.
You freeze as they tramp about the apartment wielding Rad-Detectors. ">
<SETG APARTMENT-RAID-FLAG T>
<SETG HERE ,LIVING-ROOM>
<MOVE ,PLAYER ,LIVING-ROOM>
<COND (<EQUAL? ,SYEAR 2071>
<TELL
"Almost without reason, they tear your curtains, spill food onto the kitchen
floor, and overturn furniture. ">
<COND (,BOOK-PURCHASED
<TELL
"One of the officers picks up an old, beautiful ">
<PRINTD ,BOOK>
<TELL
" that you've owned for years and smiles gleefully
as he rips it to shreds. ">)>)>
<TELL
"After a few nightmare minutes, they seem satisfied">
<COND (<EQUAL? ,SYEAR 2051>
<SCORE 8> ;"3 points"
<TELL
" and begin to file out. The apparent leader turns to you. \"Sorry for the
inconvenience,\" he says apologetically. \"You know how things are. We're only
doing it for your own protection.\" He closes the door behind him. You hear
sobbing and turn to see Jill crying in the corner of the living room">
<COND (<IN? ,MITCHELL ,HERE>
<TELL
". Mitchell, exhibiting the innocent resilience of a child,
resumes his normal activities">)>
<TELL "." CR>
<FCLEAR ,APARTMENT-DOOR ,OPENBIT>
<DISABLE <INT I-JILL>>
<QUEUE I-APARTMENT 10>
<SETG JILL-COUNTER 13>
<MOVE ,PLAYER ,LIVING-ROOM>
<MOVE ,JILL ,LIVING-ROOM>)
(<EQUAL? ,SYEAR 2061>
<SCORE 9> ;"4 points"
<FCLEAR ,APARTMENT-DOOR ,OPENBIT>
<DISABLE <INT I-APARTMENT>>
<TELL
" and begin to leave. One officer turns to you. \"The place is clean,\"
he says gruffly. \"Keep it that way.\" He slams the door behind him." CR>)
(T
<SCORE 10> ;"5 points"
<FSET ,APARTMENT-DOOR ,OPENBIT>
<DISABLE <INT I-APARTMENT>>
<TELL
" and march out without a word, leaving the door open behind them." CR>)>)
(T
<SETG RAID-PROB <+ ,RAID-PROB 6>>
<RFALSE>)>)>>
<ROUTINE I-CURFEW ()
<COND (<EQUAL? ,HERE ,JAIL-CELL>
<COND (<G? ,ELAPSED-TIME 100>
<QUEUE I-CURFEW 5>
<RFALSE>)
(T
<MOVE ,BLANKET ,JAIL-CELL>
<SETG LIGHT-LEVEL 3>
<TELL CR
"A bored cop comes along, opens your cell, and steers you out of the building.
\"We find you out after curfew again,\" he says, \"we won't treat you so easy.
You goddam vagrants, you oughtta be thrown outta town.\" He settles for
throwing you out of the ">
<PRINTD ,POLICE-STATION-OBJECT>
<TELL "." CR CR>
<GOTO ,ELM-AND-PARK>)>)
(<AND <G? ,STIME 420>
<L? ,STIME 1260>>
<DISABLE <INT I-CURFEW>>
<RFALSE>)
(<NOT <FSET? ,HERE ,STREETBIT>>
<QUEUE I-CURFEW -1>
<RFALSE>)
(<PROB 8>
<COND (<EQUAL? ,SYEAR 2071>
<SCORE 117> ;"8 points"
<JIGS-UP
"|
A police car pulls up next to you, and a fat, leering officer leans a red
face out the window. \"Hey, geezer! Ever hear of curfew?\" Even from three
meters away you can smell the odor of beer from the car. The barrel of a
pellet gun suddenly emerges from the window, and as you turn to run, a
tremendous explosion from behind is followed by a spasm of pain...">)
(T
<COND (<G? ,STIME 1260>
<QUEUE I-CURFEW <+ 420 <- 1440 ,STIME>>>)
(T
<QUEUE I-CURFEW <- 420 ,STIME>>)>
<SCORE 116> ;"2 points"
<TELL CR
"A police car pulls up next to you and a burly cop gets out. He discovers
that you have no curfew pass and hustles you into the rear. Minutes later,
you are flung into a tiny cell." CR CR>
<GOTO ,JAIL-CELL>)>)
(T
<QUEUE I-CURFEW -1>
<RFALSE>)>>
<ROUTINE I-SUNRISE-SUNSET ("AUX" X)
<SET X <- <* ,SMONTH 20> 20>> ;"June day 4 hours longer than Jan day"
<COND (<AND <G? <+ ,STIME .X> 455> ;"7:35am in Jan, 5:55am in June"
<NOT <G? <+ ,LAST-SUN-TIME .X> 455>>>
<SETG LIGHT-LEVEL 1>
<COND (<FSET? ,HERE ,OUTSIDEBIT>
<TELL CR
"You begin to see the faint glow of dawn from the east." CR>)>)
(<AND <G? <+ ,STIME .X> 469> ;"7:49am in Jan, 6:09am in June"
<NOT <G? <+ ,LAST-SUN-TIME .X> 469>>>
<SETG LIGHT-LEVEL 2>
<COND (<FSET? ,HERE ,OUTSIDEBIT>
<COND (<EQUAL? ,SYEAR 2041 2051>
<TELL CR
"The first rays of the sun begin streaming between
the buildings to the east." CR>)
(T
<SCORE 118> ;"2 points"
<TELL CR
"The glow in the east brightens, as the sun attempts to break
through the hazy smog." CR>)>)>)
(<AND <G? <+ ,STIME .X> 490> ;"8:10am in Jan, 6:30am in June"
<NOT <G? <+ ,LAST-SUN-TIME .X> 490>>>
<SETG LIGHT-LEVEL 3>
<COND (<FSET? ,HERE ,OUTSIDEBIT>
<TELL CR
"The sky continues to brighten. Dawn is over; day has begun." CR>)>)
(<AND <G? ,STIME 725>
<NOT <G? ,LAST-SUN-TIME 725>>>
<COND (<FSET? ,HERE ,OUTSIDEBIT>
<COND (<G? .X 50> ;"April - June"
<COND (<EQUAL? ,SYEAR 2041 2051>
<TELL CR
"The sun, beating down warmly on you, has reached its midday apex." CR>)
(T
<SCORE 118> ;"2 points"
<TELL CR
"The diffuse glow of the sun is nearly straight overhead,
another gray noontime." CR>)>)
(T ;"January - March"
<COND (<EQUAL? ,SYEAR 2041 2051>
<TELL CR
"The noontime sun has risen fairly high in the southern sky, taking
some of the chill out of this wintry day." CR>)
(T
<SCORE 118> ;"2 points"
<TELL CR
"The sun's feeble glow is skirting the building tops toward the south,
providing little comfort or warmth on this gray, dismal day." CR>)>)>)>)
(<AND <G? <- ,STIME .X> 1010> ;"4:50pm in Jan, 6:30pm in June"
<NOT <G? <- ,LAST-SUN-TIME .X> 1010>>>
<SETG LIGHT-LEVEL 2>
<COND (<FSET? ,HERE ,OUTSIDEBIT>
<COND (<EQUAL? ,SYEAR 2041 2051>
<TELL CR
"The sun is dropping very low in the western sky." CR>)
(T
<SCORE 118> ;"2 points"
<TELL CR
"The sky is darkening as the sun sinks into the smoggy
haze of the horizon." CR>)>)>)
(<AND <G? <- ,STIME .X> 1028> ;"5:08pm in Jan, 6:48pm in June"
<NOT <G? <- ,LAST-SUN-TIME .X> 1028>>>
<SETG LIGHT-LEVEL 1>
<COND (<FSET? ,HERE ,OUTSIDEBIT>
<COND (<EQUAL? ,SYEAR 2041 2051>
<TELL CR
"Twilight casts its long shadows across the city as the
sun disappears in the west." CR>)
(T
<TELL CR
"The dusk continues to gather; an ominous darkness
settles onto the city." CR>)>)>)
(<AND <G? <- ,STIME .X> 1049> ;"5:29pm in Jan, 7:19pm in June"
<NOT <G? <- ,LAST-SUN-TIME .X> 1049>>>
<SETG LIGHT-LEVEL 0>
<COND (<FSET? ,HERE ,OUTSIDEBIT>
<TELL CR "It is night." CR>)>)>
<SETG LAST-SUN-TIME ,STIME>
<RFALSE>>
<ROUTINE I-SKYCAB ("AUX" OLD-WINNER)
<QUEUE I-SKYCAB -1>
<SETG SKYCAB-COUNTER <+ ,SKYCAB-COUNTER 1>>
<COND (<EQUAL? ,SKYCAB-COUNTER 1>
<TELL CR
"The gentle voice of your domestic computer calls softly from one
of its many unseen speakers. \"The skycab you asked for is now
waiting on the roof.\" Jill ">
<COND (<EQUAL? ,HERE ,MASTER-BEDROOM>
<TELL "summons the robutler to carry your baggage">)
(T
<TELL
"appears at the top of the steps with the robutler,
who is carrying several bags">)>
<TELL ". \"Algie has everything, Perry. Let's get going!\"|
|
You take a last look around the apartment and follow Jill and Algie into the
hallway and up to the roofpad. As you clamber into the waiting skycab, Jill
gives the robutler a fond farewell pat. The skycab climbs lazily and veers
off to the northeast." CR CR>
<MOVE ,MAGAZINE ,JILL>
<GOTO ,SKYCAB>
<MOVE ,SEAT ,SKYCAB>
<MOVE ,PLAYER ,SEAT>
<MOVE ,JILL ,HERE>)
(<EQUAL? ,SKYCAB-COUNTER 2>
<TELL CR
"The cab enters the central Rockvil traffic pattern, gently curving along
the ring of downtown parks. ">
<SET OLD-WINNER ,WINNER>
<SETG WINNER ,PLAYER>
<PERFORM ,V?EXAMINE ,PARK-OBJECT>
<SETG WINNER .OLD-WINNER>
<TELL CR "Jill, glancing through yet another ">
<PRINTD ,MAGAZINE-ARTICLE>
<TELL
" on the Silver Dove, says, \"This story talks about the new athletics and
art forms that are still being discovered for the weightless area at the axes
of the habitats. Oh, Perry, I'm so excited,\" she adds, unnecessarily." CR>)
(<EQUAL? ,SKYCAB-COUNTER 3>
<TELL CR
"The skycab continues its wide arc around the downtown area, approaching
the Rockvil Pier. ">
<SET OLD-WINNER ,WINNER>
<SETG WINNER ,PLAYER>
<PERFORM ,V?EXAMINE ,RIVER>
<SETG WINNER .OLD-WINNER>
<RTRUE>)
(<EQUAL? ,SKYCAB-COUNTER 4>
<TELL CR
"As the cab whisks northward along the edge of the river, y" ,RS-DESC CR>)
(<EQUAL? ,SKYCAB-COUNTER 5>
<TELL CR
"As the skycab begins its approach to the spaceport, it passes over
the museum established on the site of the former BSF Base, a sobering
monument to one of mankind's great follies.|
|
Suddenly the ">
<PRINTD ,VIEWSCREEN>
<TELL
" lights up, and Mitchell's face appears. \"Hi, Mom, Dad! I wanted to wish you
bon voyage, and I enlisted a little help!\" He expands the field of vision to
include the entire living room of his spacious apartment at the Marine Biology
Institute in Nova Scotia. The room is filled with your grandchildren and
great-grandchildren, plus various in-laws, more than twenty members of the
Simm clan. Everyone is hooting, yelling, waving, and blowing kisses. \"We're
having a big party in your honor -- I'm only sorry we couldn't be there with
you. We're real proud of you both, and excited for you, too. Call me when you
get to the habitat! Bye!\" The clan signs off by singing Auld Lang Syne, and
when the screen goes dark, you notice that Jill's eyes are wet, and a second
later you realize that yours are, as well." CR>)
(<EQUAL? ,SKYCAB-COUNTER 6>
<END-IT>)>>
<ROUTINE I-SUFFOCATE ()
<SETG SUFFOCATE-COUNTER <+ ,SUFFOCATE-COUNTER 1>>
<COND (<EQUAL? ,SUFFOCATE-COUNTER 17>
<DISABLE <INT I-SUFFOCATE>>
<MOVE ,SABOTEURS ,LOCAL-GLOBALS>
<COND (<EQUAL? ,HERE ,CORE>
<TELL CR
"A National Guard patrol enters the area and rushes to the side of the
prone bodies. \"Still breathing, but barely!\" shouts the leader. They
grab the saboteurs and carry them out." CR>
<RTRUE>)
(T
<RFALSE>)>)
(<EQUAL? ,SUFFOCATE-COUNTER 16>
<DISABLE <INT I-SABOTAGE>>
<QUEUE I-SUFFOCATE 24>
<PUTP ,SABOTEURS ,P?LDESC
"Four men, dressed in white smocks, are lying on the ground, unconscious.">
<COND (<EQUAL? ,HERE ,CORE>
<TELL CR
"One of the men suddenly gasps and falls over. The others dash to his side,
then slowly pass out themselves." CR>
<RTRUE>)>)
(<AND <EQUAL? ,SUFFOCATE-COUNTER 13>
<EQUAL? ,HERE ,CORE>>
<TELL CR
"The saboteur with the gun says, \"Hurry, will ya! I need to get
some fresh air!\" The apparent leader replies, \"We're working as
fast as we can! Keep your cool.\"" CR>
<RTRUE>)
(<AND <EQUAL? ,SUFFOCATE-COUNTER 8>
<EQUAL? ,HERE ,CORE>>
<SETG YES-NO-FLAG 8>
<QUEUE I-YES-NO 2>
<TELL CR
"One of the men, tugging at the collar of his smock, says, \"Stuffy in
here, isn't it?\"" CR>
<RTRUE>)>
<RFALSE>>
<ROUTINE I-AIR-CONDITIONING ()
<SETG AIR-CONDITIONING-COUNTER <+ ,AIR-CONDITIONING-COUNTER 1>>
<COND (<EQUAL? ,AIR-CONDITIONING-COUNTER 20 35>
<V-DIAGNOSE>
<RTRUE>)
(<EQUAL? ,AIR-CONDITIONING-COUNTER 46>
<COND (,SIMULATING
<TELL CR
"The raging fever must be affecting your mind; the world around you seems to
be shimmering away and vanishing. Then suddenly -- you're out of ">
<PRINTD ,SIMULATION-MODE>
<TELL
"! Something is terribly wrong! Nothing feels right. You can't
even think straight. Your functions are fading..." CR CR>
<FINISH>)
(T
<TELL CR
"The dysfunction of your systems is becoming incredibly serious, and you
feel it as almost a burning pain. It numbs your mind, blocks your thought
patterns. You feel your consciousness fade away..." CR CR>
<FINISH>)>)>
<RFALSE>>
<ROUTINE I-RORSCHACH ()
<QUEUE I-RORSCHACH -1>
<COND (<G? ,GRIMWOLD-COUNTER 0>
<SETG GRIMWOLD-COUNTER <+ ,GRIMWOLD-COUNTER 1>>
<COND (<G? ,GRIMWOLD-COUNTER 8>
<MOVE ,GRIMWOLD ,LOCAL-GLOBALS>
<MOVE ,PERELMAN ,LOCAL-GLOBALS>
<FCLEAR ,PERELMAN ,NDESCBIT>
<DISABLE <INT I-RORSCHACH>>
<SETG GRIMWOLD-COUNTER 0>
<MOVE ,COFFEE ,LOCAL-GLOBALS>
<COND (<AND <VISIBLE? ,PERELMAN>
<EQUAL? ,PERELMAN ,WINNER>>
<CLEAR-BUF>)>
<QUEUE I-PERELMAN 30>
<SETG LAST-ABE-TIME <+ ,TIME 25>>
<TELL CR
"\"Hmmph!\" says Grimwold, whirling and heading for the door. \"This rudeness
will certainly figure in my report!\" Perelman looks at you with a mixture of
annoyance and puzzlement, then rushes off after the psychiatrist." CR>)
(T
<TELL CR
"After a moment, Grimwold again asks, \"Can we begin now?\"" CR>)>
<RTRUE>)>
<COND (<NOT <IN? ,GRIMWOLD ,OFFICE>>
<MOVE ,GRIMWOLD ,OFFICE>
<MOVE ,PERELMAN ,OFFICE>
<FSET ,PERELMAN ,NDESCBIT>
<COND (<NOT <EQUAL? ,HERE ,OFFICE>>
<QUEUE I-RORSCHACH 1>
<RFALSE>)
(T
<DISABLE <INT I-MESSAGE-E>>
<TELL CR
"Perelman enters with Dr. Ernest Grimwold, a quintessential Viennese
psychiatrist whom you met a few days earlier, and nods to you. \"Good ">
<COND (<G? ,TIME 720>
<TELL "afternoon">)
(T
<TELL "morning">)>
<TELL ", PRISM. You remember Dr. Grimwold.\"">)>)
(<NOT <EQUAL? ,HERE ,OFFICE>>
<QUEUE I-RORSCHACH 1>
<RFALSE>)
(T
<DISABLE <INT I-MESSAGE-E>>
<TELL CR
"Perelman" ,SPOTS-ACTIVE-LIGHT " come on. \"Ah, here you are. PRISM, you
remember Dr. Ernest Grimwold.\" You recognize and greet the psychiatrist
who gave you a series of psych tests a few days ago.">)>
<SETG GRIMWOLD-COUNTER 1>
<TELL CR CR
"\"It's a pleasure to see you again,\" says Grimwold, in an accent that
matches his appearance perfectly. \"This should take only a couple of
minutes. I'm going to show you some patterns, and I simply want you to
tell me the single word that comes to mind when you see them. Don't think
about it; just say the first word you think of.\"|
|
Grimwold reaches below your viewing area and picks up a sheaf of placards.
\"Ready to begin?\" he asks." CR>>
<ROUTINE BLOT-ACTION ("AUX" (CNT 0) WORDS-IN-RESPONSE)
<REPEAT ()
<COND (<EQUAL? .CNT 0>
<INIT-STATUS-LINE 18>
<STATUS-LINE>)
(T
<TELL
"Grimwold nods knowingly, mumbles under his breath,
and makes a note in his pad. ">)>
<INK-BLOT>
<TELL "\"Okay, here's the ">
<COND (<EQUAL? .CNT 0>
<TELL "first">)
(T
<TELL "next">)>
<TELL
" one,\" he says, holding a card up to your visual unit." CR>
<REPEAT ()
<CRLF>
<PRINTI ">">
<READ ,P-INBUF ,P-LEXV>
<SET WORDS-IN-RESPONSE <BLOT-WORD-COUNT>>
<COND (<G? .WORDS-IN-RESPONSE 1>
<TELL
"\"You're not following my instructions, PRISM. Just tell me the
one word that pops into your mind.\"" CR>
<AGAIN>)
(<ZERO? <GETB ,P-LEXV ,P-LEXWORDS>>
<TELL "\"I beg your pardon?\"" CR>
<AGAIN>)
(<EQUAL? <GET ,P-LEXV 1> ,W?RESTORE ,W?SAVE>
<TELL "You can't ">
<COND (<EQUAL? <GET ,P-LEXV 1> ,W?RESTORE>
<TELL "RESTORE">)
(T
<TELL "SAVE">)>
<TELL
" right now -- you're in the middle of an important psych test!" CR>
<AGAIN>)
(<EQUAL? <GET ,P-LEXV 1> ,W?QUIT ,W?Q>
<V-QUIT>
<AGAIN>)
(<EQUAL? <GET ,P-LEXV 1> ,W?RESTART>
<V-RESTART>
<AGAIN>)
(<EQUAL? <GET ,P-LEXV 1> ,W?SCRIPT>
<V-SCRIPT>
<AGAIN>)
(<EQUAL? <GET ,P-LEXV 1> ,W?UNSCRIPT>
<V-UNSCRIPT>
<AGAIN>)
(T
<RETURN>)>>
<COND (<EQUAL? .CNT 4>
<MOVE ,GRIMWOLD ,LOCAL-GLOBALS>
<MOVE ,PERELMAN ,LOCAL-GLOBALS>
<MOVE ,COFFEE ,LOCAL-GLOBALS>
<FCLEAR ,PERELMAN ,NDESCBIT>
<COND (<AND <VISIBLE? ,PERELMAN>
<EQUAL? ,PERELMAN ,WINNER>>
<CLEAR-BUF>)>
<QUEUE I-PERELMAN 30>
<SETG LAST-ABE-TIME <+ ,TIME 25>>
<SETG GRIMWOLD-COUNTER 0>
<INIT-STATUS-LINE 2>
<TELL
"Grimwold makes a final notation in his notebook. \"Thanks, PRISM.\" He
picks up all the placards and leaves the room along with Perelman." CR>
<DISABLE <INT I-RORSCHACH>>
<RETURN>)
(T
<STATUS-LINE>
<INCREMENT-TIME 1>
<SET CNT <+ .CNT 1>>
<AGAIN>)>>>
<ROUTINE BLOT-WORD-COUNT ("AUX" WORD-COUNT REVISED-COUNT)
<SET WORD-COUNT <GETB ,P-LEXV ,P-LEXWORDS>>
<SET REVISED-COUNT .WORD-COUNT>
;<COND (,DEBUG
<TELL
"[WORD-COUNT = " N .WORD-COUNT ", REVISED-COUNT = " N .REVISED-COUNT "]" CR>)>
<REPEAT ()
<COND (<EQUAL? .WORD-COUNT 0>
<RETURN>)>
<COND (<EQUAL? <GET ,P-LEXV <- <* 2 .WORD-COUNT> 1>> ,W?QUOTE>
;<COND (,DEBUG
<TELL
"[subtracting one from REVISED-COUNT due to quote]" CR>)>
<SET REVISED-COUNT <- .REVISED-COUNT 1>>)>
<SET WORD-COUNT <- .WORD-COUNT 1>>>
<COND (<EQUAL? <GET ,P-LEXV 1> ,W?SAY ,W?ANSWER>
;<COND (,DEBUG
<TELL
"[subtracting one from REVISED-COUNT due to SAY or ANSWER]" CR>)>
<SET REVISED-COUNT <- .REVISED-COUNT 1>>)>
<COND (<OR <EQUAL? <GET ,P-LEXV 1> ,W?GRIMWOLD ,W?PSYCHIATR>
<EQUAL? <GET ,P-LEXV 1> ,W?DR ,W?DOCTOR>>
;<COND (,DEBUG
<TELL
"[subtracting two from REVISED-COUNT due to GRIMWOLD,]" CR>)>
<SET REVISED-COUNT <- .REVISED-COUNT 2>>)>
;<COND (,DEBUG
<TELL
"[returning a REVISED-COUNT value of " N .REVISED-COUNT "]" CR>)>
.REVISED-COUNT>
<ROUTINE INK-BLOT ("AUX" (X 12) (Y 5) (CNT 4) SIDE-OFFSET CENTER-OFFSET CHAR)
<BUFOUT <>>
<SCREEN ,S-WINDOW>
<SET CENTER-OFFSET <RANDOM 6>>
<SET SIDE-OFFSET <RANDOM <- 16 .CENTER-OFFSET>>>
<SET X <+ 22 .SIDE-OFFSET>>
<SET CHAR <RANDOM 3>> ;"1 = blanks, 2 = x's, 3 = angle brackets"
<REPEAT ()
<INVERSE-LINE .CNT T>
<SET CNT <+ .CNT 1>>
<COND (<EQUAL? .CNT 19>
<RETURN>)>>
<COND (<EQUAL? .CHAR 2 3> ;"not blanks"
<HLIGHT 1>)>
<REPEAT ()
<REPEAT ()
<CURSET .Y .X>
<COND (<EQUAL? .CHAR 1>
<TELL " ">)
(<EQUAL? .CHAR 2>
<TELL "X">)
(T
<TELL ">">)>
<CURSET .Y <- 81 .X>>
<COND (<EQUAL? .CHAR 1>
<TELL " ">)
(<EQUAL? .CHAR 2>
<TELL "X">)
(T
<TELL "<">)>
<COND (<EQUAL? .X <- 40 .CENTER-OFFSET>>
<RETURN>)
(T
<SET X <+ .X 1>>)>>
<COND (<EQUAL? .Y 17>
<RETURN>)
(T
<COND (<PROB 40>
<SET SIDE-OFFSET <+ .SIDE-OFFSET <RANDOM 3>>>)
(<PROB 67>
<SET SIDE-OFFSET <- .SIDE-OFFSET <RANDOM 3>>>)>
<COND (<PROB 40>
<SET CENTER-OFFSET
<- .CENTER-OFFSET <RANDOM 2>>>)
(<PROB 67>
<SET CENTER-OFFSET
<+ .CENTER-OFFSET <RANDOM 2>>>)>
<COND (<L? .SIDE-OFFSET 0>
<SET SIDE-OFFSET 1>)>
<COND (<L? .CENTER-OFFSET 0>
<SET CENTER-OFFSET 0>)>
<COND (<G? <+ .SIDE-OFFSET .CENTER-OFFSET> 18>
<SET CENTER-OFFSET <- .CENTER-OFFSET 1>>
<SET SIDE-OFFSET <- 18 .CENTER-OFFSET>>)>
<SET X <+ 22 .SIDE-OFFSET>>
<SET Y <+ .Y 1>>)>>
<COND (<EQUAL? .CHAR 2 3> ;"blanks"
<HLIGHT 0>)>
<SCREEN ,S-TEXT>
<BUFOUT T>>
<ROUTINE I-POST-OFFICE ()
<QUEUE I-POST-OFFICE -1>
<COND (<NOT <EQUAL? ,HERE ,POST-OFFICE>>
<DISABLE <INT I-POST-OFFICE>>)
(<EQUAL? ,STIME 960>
<TELL "The open window">
<COND (<EQUAL? ,SYEAR 2071>
<TELL " closes">)
(T
<TELL "s close">)>
<TELL
", and those still waiting wander listlessly out of the ">
<PRINTD ,POST-OFFICE-OBJECT>
<TELL "." CR>
<RTRUE>)
(<OR <AND <EQUAL? ,SYEAR 2071>
<G? ,STIME 888>
<L? ,STIME 901>>
<AND <EQUAL? ,SYEAR 2061>
<G? ,STIME 594>
<L? ,STIME 601>>>
<TELL "A line is forming at the window with the sign." CR>
<QUEUE I-POST-OFFICE 15>
<RTRUE>)>
<RFALSE>>
<ROUTINE I-WILD-DOGS ()
<COND (<NOT <EQUAL? ,HERE ,MAIN-STREET-BRIDGE>>
<DISABLE <INT I-WILD-DOGS>>
<RFALSE>)>
<SETG WILD-DOG-COUNTER <+ ,WILD-DOG-COUNTER 1>>
<COND (<EQUAL? ,WILD-DOG-COUNTER 1>
<MOVE ,BARKING ,HERE>
<TELL "You hear the sound of distant barking to the east." CR>)
(<EQUAL? ,WILD-DOG-COUNTER 2 3>
<TELL
"The barking continues. In fact, the sound seems to be getting closer." CR>)
(<EQUAL? ,WILD-DOG-COUNTER 4>
<SCORE 45> ;"3 points"
<JIGS-UP
"A pack of wild dogs enters the bridge from the east, barking wildly. They
tear towards you, driven by mindless animal hunger, saliva dripping from
rabid fangs. You run toward the city, but the fastest of the dogs lunges
and sinks its fangs into your leg. You fall, and in a split second the other
animals are on top of you as well.">)>>
<ROUTINE I-CAFETERIA ()
<COND (<NOT <EQUAL? ,HERE ,CAFETERIA>>
<DISABLE <INT I-CAFETERIA>>)
(<EQUAL? ,TIME 480 705 1035>
<TELL CR "The room begins to fill with mealtime crowds." CR>)
(<EQUAL? ,TIME 570 795 1125>
<TELL CR "The mealtime crowds begin to disperse." CR>)>
<RFALSE>>