-
Notifications
You must be signed in to change notification settings - Fork 12
/
Copy pathscenario.zil
163 lines (160 loc) · 5.23 KB
/
scenario.zil
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
"SCENARIO for
BORDER ZONE
(c) Copyright 1987 Infocom, Inc. All Rights Reserved."
<ROUTINE GOOD-SCENARIO-F (FLG "OPTIONAL" STUFF "AUX" LD)
<COND (<AND <EQUAL? .FLG ,M-BEG>
<VERB? WALK>
<NOT ,SHOES-WORN>
<EQUAL? ,SCENARIO 2>>
<TELL "You're not going anywhere without shoes." CR>
<RTRUE>)
(<AND <EQUAL? .FLG ,M-BEG>
<VERB? DROP>
<FSET? ,HERE ,SWAMPBIT>>
<TELL
"You'd only get it filthy; try putting it down somewhere else." CR>)
(<EQUAL? .FLG ,M-ENTER>
<COND (<AND ,CUT-DETECTED <G? ,CLOCK-TIME ,CUT-DETECTED>>
<SETG CUT-VIGILANCE T>)>
<COND (<OR <EQUAL? ,HERE ,OUTSIDE-HUT ,NORTH-HUT ,SOUTH-HUT>
<EQUAL? ,HERE ,D5 ,BEHIND-HUT ,ROAD-END>>
<SETG BEEN-AT-HUT? T>)>
<COND (<AND <NOT <FSET? ,HERE ,SWAMPBIT>>
,IN-SWAMP?>
<SETG IN-SWAMP? <>>)>
<COND (<NOT ,IN-SWAMP?>
<PUTP ,HERE ,P?PATH 0>
<PUTP .STUFF ,P?PATH ,HERE>)>
<SET LD <LOC ,DOGS>>
<COND (<EQUAL? .LD ,HERE>
<CRLF>
<TELL
"You can hear the guard dogs within 50 yards! Their voices
reach a fevered pitch - a guard calls out - a muffled explosion - the
night sky is lit by a single red-orange flare. In the nick of time,
you retreat to your earlier position and remind yourself to take
the chase dogs more seriously in the future." CR>
<GOTO .STUFF <>>
<RTRUE>)
(<AND <IN? ,CAR ,HERE>
<NOT <EQUAL? ,HERE ,ROAD-END>>>
<CAR-NEARLY-HITS>
<RTRUE>)
(<IN? ,SCOUT ,HERE>
<TELL CR
"You walk a short ways, then catch a glimpse of a lone guard who appears to
be checking out the area around the hut. Rather than continue on, you retreat
to your previous location">
<COND (<EQUAL? .STUFF ,HUT-STORAGE>
<FCLEAR ,HUT-BACK-DOOR ,OPENBIT>
<TELL ", closing the door behind you.">)>
<TELL ,PERIOD-CR>
<GOTO .STUFF <>>
<RTRUE>)
(<AND <IN? ,CAR ,ROAD-END>
<EQUAL? ,HERE ,D5 ,OUTSIDE-HUT>>
<COND (<OR <EQUAL? .STUFF ,C5 ,C6>
<EQUAL? .STUFF ,D4 ,OUTSIDE-SHED>>
<TELL CR
"You just start to emerge from the forest when you notice an automobile
and some guards in front of a small hut to the east of the clearing.
You retreat back into the safety of the trees, thinking that perhaps
it would be safer approaching the hut from the other side." CR>
<GOTO .STUFF <>>
<RTRUE>)>
<GUARDS-SPOTTED>
<RTRUE>)
(<IN? ,HUT-MAN ,HERE>
<MAN-CATCHES>
<RTRUE>)>
<COND (<NOT ,MOVE-FORCED>
<GONE-TO-THE-DOGS? <HOW-FAR .LD .STUFF>
<HOW-FAR .LD ,HERE>
,DOGS
<>>)>
<COND (<AND ,SL-WATCH <NOT <FSET? ,HERE ,SLVIEWBIT>>>
<CRLF>
<PERFORM ,V?OFF-2 ,TIMING-OBJECT ,SEARCHLIGHTS>)>
<COND (<AND ,G-WATCH <NOT <FSET? ,HERE ,GVIEWBIT>>>
<CRLF>
<PERFORM ,V?OFF-2 ,TIMING-OBJECT ,GUARDS>)>
<COND (,G-WATCH
<SCREEN-1>
<CURSET 3 <+ ,GUARD-MARGIN
</ <GETP .STUFF ,P?GPOS> 5>>>
<TELL " ">
<CURSET 3 <+ ,GUARD-MARGIN
</ <GETP ,HERE ,P?GPOS> 5>>>
<TELL "*">
<SCREEN-0>)>
<RTRUE>)>>
<ROUTINE BAD-SCENARIO-F (FLG "OPTIONAL" STUFF)
<COND (<AND <EQUAL? .FLG ,M-BEG>
<VERB? WALK>
,ON-THE-CAN
<NOT <EQUAL? ,PRSO ,P?UP>>>
<TELL
"You'd best get off the can first." CR>)
(<EQUAL? .FLG ,M-ENTER>
;"Hall objects"
<COND (<FSET? .STUFF ,HUTBIT>
<MOVE-ALL .STUFF
<GETP .STUFF
<GET ,FLOOR-PROPS ,HALL-FLOOR>>>)>
<COND (<AND <EQUAL? ,HERE ,HALL-1> <FSET? .STUFF ,PENBIT>>
<SETG HALL-FLOOR <GETP .STUFF ,P?SIZE>>)>
<COND (<FSET? ,HERE ,HUTBIT>
<MOVE-ALL <GETP ,HERE
<GET ,FLOOR-PROPS ,HALL-FLOOR>>
,HERE>)>
;"Turn off Topaz spots you interrupt"
<COND (<AND <NOT ,CHASE-FLAG>
<EQUAL? .STUFF ,BLDG-2>>
<DE-QUEUE ,I-TOPAZ-OFF>)>
;"For chase scene"
<PUTP ,HERE ,P?PATH 0>
<PUTP .STUFF ,P?PATH ,HERE>
<PUTP .STUFF ,P?PATH-TIME ,CLOCK-MOVE>
<RFALSE>)
(T
<RFALSE>)>>
<ROUTINE BYSTANDER-SCENARIO-F (FLG "OPTIONAL" STUFF)
<COND (<AND <EQUAL? .FLG ,M-BEG>
<VERB? DROP THROW EMPTY>
<FSET? ,HERE ,HUTBIT>>
<TELL
"With the guards watching, it isn't a good idea to litter." CR>
<RTRUE>)
(<AND <EQUAL? .FLG ,M-BEG>
<VERB? DROP>
,BUMPER-FLAG>
<SETG CLOCK-MOVE 50>
<RFALSE>)
(<AND <EQUAL? .FLG ,M-BEG>
<VERB? WALK>
,BAD-CONFINED
<EQUAL? ,PRSO ,P?EAST ,P?OUT>>
<TELL
"You start to go through your compartment's door, but are stopped by
a uniformed guard. You return to your compartment, out of sight of the guard.
You'd might as well get comfortable here until you
reach the station." CR>
<RTRUE>)
(<AND ,AT-STATION
<EQUAL? .FLG ,M-BEG>
<VERB? WALK>>
<COND (<AND <EQUAL? ,HERE ,PASS-5>
<EQUAL? ,PRSO ,P?NORTH>>
<TELL
"The guard stops you, pointing toward the south and the other exit." CR>
<RTRUE>)
(<AND <EQUAL? ,HERE ,PASS-6>
<EQUAL? ,PRSO ,P?SOUTH>>
<TELL
"You move past the guard, down the stairs, and onto the station
platform." CR CR>
<PLATFORM-ROOM-F ,M-LOOK>
<GOTO ,PLATFORM-4 <>>
<SLOW-CLOCK-QUEUE ,I-PLATFORM 30>
<RTRUE>)>)>
<RFALSE>>