Improve description of the break room
[the-server-room.git] / the-server-room.inf
1 !% -SD
2 !=========================================================================
3 ! Copyright (C) 2019 Jason Self <j@jxself.org>
4 !
5 ! This program is free software: you can redistribute it and/or modify
6 ! it under the terms of the GNU Affero General Public License as
7 ! published by the Free Software Foundation, either version 3 of the
8 ! License, or (at your option) any later version.
9 !
10 ! This program is distributed in the hope that it will be useful,
11 ! but WITHOUT ANY WARRANTY; without even the implied warranty of
12 ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 ! GNU Affero General Public License for more details.
14 !
15 ! You should have received a copy of the GNU Affero General Public
16 ! License along with this program. If not, see
17 ! <https://www.gnu.org/licenses/>.
18 !
19 !This file incorporates work covered by the following copyright and
20 !permission notice:
21 !
22 ! Copyright (C) 2008 Daniel Bartholomew
23 !
24 ! This program is free software: you can redistribute it and/or modify
25 ! it under the terms of the GNU General Public License as published by
26 ! the Free Software Foundation, either version 3 of the License, or
27 ! (at your option) any later version.
28 !
29 ! This program is distributed in the hope that it will be useful,
30 ! but WITHOUT ANY WARRANTY; without even the implied warranty of
31 ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
32 ! GNU General Public License for more details.
33 !
34 ! You should have received a copy of the GNU General Public License
35 ! along with this program. If not, see
36 ! <https://www.gnu.org/licenses/>.
37 !=========================================================================
38 Constant Story "The Server Room";
39 Constant Headline "^An Interactive Fiction by Daniel Bartholomew.^";
40 Release 1;
41 Serial "190908";
42 Constant MAX_SCORE = 6;
43 Include "parser";
44 Include "verblib";
45 Global openedbackpack = 1;
46 Global openedtray = 1;
47 Global takencd = 1;
48 Global beeping = 1;
49 !=========================================================================
50 ! The Game Objects
51
52 Object  break_room "Break Room"
53   with  description
54             "This break room is a calm, quiet and peaceful for people
55             to unwind and eat. Well kept and organized, the area is
56             clean and inviting. A large television is mounted to one
57             of the walls, next to a refrigerator. Even though no
58             one's around the smell of a pleasant coffee blend still
59             hangs in the air. A cool-looking counter and white couch
60             take up another wall. The remaining walls have posters of
61             various sports teams of the previous four years. East is
62             the outside world and west is the hallway to the server
63             room.",
64         w_to hallway,
65         e_to
66             "You take one look outside and think better of it. The
67             daystar is too bright and terrible to face today. Besides,
68             you have work to do.",
69   has   light;
70
71 Object  fridge "refrigerator" break_room
72   with  description
73             "This refrigerator makes a statement with a sleek, modern
74             and minimal stainless steel design. Featuring large doors
75             it seems quite an impressive refrigerator that can hold a
76             lot.",
77         name 'fridge' 'refrigerator',
78   has   container openable scenery;
79
80 Object  counter "long counter" break_room
81   with  description
82             "A long counter. You can't quite determine the color,
83             it's somewhere between green and brown. On the counter is
84             a microwave.",
85         name 'counter',
86   has   static supporter scenery;
87
88 Object  microwave "microwave" counter
89   with  description
90             "A combination of silver and black, this microwave looks
91             like a real workhorse. It's compact, quiet, and works
92             great.",
93         name 'microwave' 'micro',
94   has   container openable scenery;
95
96 Object  table "table" break_room
97   with  description "It's a table. Were you expecting something else?",
98         name 'table',
99         before [;
100           Take:
101             "Let me spell it out for you: it is a T A B L E and you
102             are NOT Superman.";
103         ],
104   has   supporter;
105
106 Object  backpack "backpack" table
107   with  description
108             "This backpack looks like a modern art piece that was
109             made using brown and light blue-green watercolors. A black
110             line was traced around to make the stitching lines.
111             Well-worn and quite suitable for travel, it looks like it
112             could carry a lot of belongings.",
113         name 'pack' 'back' 'bag' 'backpack',
114         article "your",
115         before [;
116           Open:
117             if (openedbackpack == 1) {
118                 score = score + 2;
119                 openedbackpack = 2;
120             }
121         ],
122   has   clothing container openable;
123
124 Object  disc "Trisquel CD" backpack
125   with  description
126             "An automatic recovery CD, guaranteed to fix almost any
127             server.^^Ok, it's just an install CD that auto-installs
128             Trisquel, but hey, if it works, it works.",
129         name 'disk' 'disc' 'Trisquel' 'cd',
130         after [;
131           Take:
132             if (takencd == 1) {
133                 score = score + 2;
134                 takencd = 2;
135                 print_ret "You pick up the Trisquel CD.^";
136             }
137         ],
138   has   ;
139
140 Object  hallway "Hallway"
141   with  description
142             "Bereft of features, adornment or even adequate lighting,
143             this hallway is as plain as they come. Doors lead east
144             back to the break room, north to the server room, or
145             west to the restrooms.",
146         e_to break_room,
147         n_to
148             "You use your key card to open the server room door but
149             instead of a beep of approval and an unlocked door you
150             get a buzz of denial and the door remains locked. Plus:
151             Through the window in the door you can see someone moving
152             around inside but there shouldn't be anyone else here
153             today.",
154         w_to restroom,
155   has   light;
156
157 Object  restroom "Restroom"
158   with  description
159             "This average-sized, square restroom has a sink set into a
160             resin counter. The floor is tiled, the ceiling has
161             removable tiles, and the walls are painted with a
162             wallpapered dado. Light is provided by ceiling lights. The
163             room is done in colors that remind you of the sky and
164             overall looks very eclectic.",
165         e_to hallway,
166   has   light;
167
168 Object  server_room "Server Room"
169   with  description
170             "The fans, the lights, the chill . . . yep, it's a server
171             room. Full of servers from a dozen different
172             manufacturers, each with their own quirks.^^Your
173             attention is immediately drawn to a server 2/3 of the way
174             up rack 7. The little indicator light is blinking red, and
175             it is beeping.",
176         s_to hallway,
177         each_turn [;
178             beeping = random(7);
179             switch (beeping) {
180               1:
181                 "^The beeping is driving you crazy.";
182               2:
183                 "^It's hard to think, with all of the beeping.";
184               3:
185                 "^The monotony of the beeping is maddening.";
186               4:
187                 "^You can't stand the beeping.";
188               5:
189                 "^The beeping reminds you of your alarm clock.";
190               6:
191                 "^beep . . . beep . . . beep . . . beep . . . beep
192                 . . . beep . . .";
193               7:
194                 "^If you don't stop the beeping soon, you'll loose
195                 what little hair you have left.";
196             }
197         ],
198   has   light;
199
200 Object  server "server" server_room
201   with  description
202             "The indicator light on this ancient server is blinking
203             orange. The rest the front is featureless except for the
204             CD tray. The beeping seems to emanate from somewhere
205             inside the server.",
206         name 'server' 'machine' 'computer' 'ancient' 'old',
207   has   scenery;
208
209 Object  tray "tray" server_room
210   with  description "It's a CD tray. Just like every other CD tray.",
211         name 'cd' 'tray',
212         before [;
213           Receive:
214             if (noun ~= disc)
215                 print_ret (The) noun, " is too big to fit.";
216           Open:
217             if (openedtray == 1) {
218                 score = score + 2;
219                 openedtray = 2;
220             }
221         ],
222         after [;
223           Open:
224             print_ret "You press the button and the CD tray pops out.";
225           Close:
226             if (disc in self) {
227                 deadflag = 5;
228                 print_ret
229                     "^With the CD in the tray, you quickly reboot the
230                     server.^^After the bios posts, your disc starts
231                     doing its thing and before you know it the server
232                     is happily running Trisquel, and even more than
233                     that, the beeping has stopped. Yay!";
234             }
235         ],
236   has   container openable scenery;
237
238 !=========================================================================
239 ! Entry point routines
240
241 [ Initialise;
242     location = break_room;
243     "^^^^It's Saturday, a nice one at that, and you've been called in
244     to fix a server that's on the blink. Again.^^You've had it. This
245     server is going to run GNU/Linux from this day forward! The
246     process will be easy - just put the disc into the server and away
247     we go. Now where is that Trisquel CD?^";
248 ];
249
250 [ Deathmessage;
251     if (deadflag == 5)
252         print "You have won";
253 ];
254
255 !=========================================================================
256 ! Standard and Extended Grammar
257 Include "grammar";
258 !=========================================================================