!% -SD
!=========================================================================
-! Copyright (C) 2019 Jason Self <j@jxself.org>
+! Copyright (C) 2019, 2020, 2021 Jason Self <j@jxself.org>
!
! This program is free software: you can redistribute it and/or modify
! it under the terms of the GNU Affero General Public License as
! <https://www.gnu.org/licenses/>.
!=========================================================================
Constant Story "The Server Room";
-Constant Headline "^An Interactive Fiction by Daniel Bartholomew.^";
+Constant Headline "^An Interactive Fiction by Daniel Bartholomew
+with modifications by Jason Self.^";
Release 1;
-Serial "080625"; !for keeping track of public releases
+Serial "210202";
Constant MAX_SCORE = 6;
Include "parser";
Include "verblib";
-Global openedbackpack = 1;
-Global openedtray = 1;
-Global takencd = 1;
Global beeping = 1;
!=========================================================================
! The Game Objects
Object break_room "Break Room"
with description
- "Your standard break room. A fridge, and a long counter
- take up one wall. East is the outside world and west is
- the hallway to the server room.",
+ "This break room is a calm, quiet and peaceful place for
+ people to unwind and eat. Well kept and organized, the
+ area is clean and inviting. A large television is mounted
+ to one of the walls, next to a refrigerator. Even though
+ no one's around the smell of a pleasant coffee blend still
+ hangs in the air. A cool-looking counter and white couch
+ take up another wall. The remaining walls have posters of
+ various sports teams of the previous four years. East is
+ the outside world and west is the hallway to the server
+ room.",
w_to hallway,
e_to
"You take one look outside and think better of it. The
you have work to do.",
has light;
+Object tv "television" break_room
+ with description
+ "It looks like a cheap, generic flat screen television
+ with an edge-to-edge matte screen. You see no buttons on
+ it. There should be a remote control somewhere.",
+ name 'tv' 'television' 'telly',
+ before [;
+ SwitchOn:
+ print_ret
+ "The television can only be turned on using the
+ remote.";
+ ],
+ has container openable scenery switchable;
+
+Object whitecouch "white couch" break_room
+ with description
+ "With a smooth and modern design, this looks to be a luxurious couch.
+ It is extremely durable and easy to clean and maintain. Offering
+ enough room to sit or lay, it looks very soft and comfortable.",
+ name 'white' 'couch' 'sofa',
+ before [;
+ Take, Pull, Push, PushDir:
+ print_ret (The) self, " is too heavy for that.";
+ ],
+ has scenery static supporter enterable;
+
+Object posters "posters" break_room
+ with description
+ "Fold outs from a japanese sport fanzine, the posters
+ really show off the players and game.",
+ name 'sport' 'sports' 'poster' 'posters',
+ has scenery;
+
Object fridge "refrigerator" break_room
- with description "Your standard refrigerator.",
+ with description
+ "This refrigerator makes a statement with a sleek, modern
+ and minimal stainless steel design. Featuring large doors
+ it seems quite an impressive refrigerator that can hold a
+ lot.",
name 'fridge' 'refrigerator',
has container openable scenery;
Object counter "long counter" break_room
with description
- "A long counter. You can't quite determine the color,
- it's somewhere between green and brown. On the counter is
- a microwave.",
+ "It's a beautiful, stylish, and high-quality solid wood
+ counter that runs the length of the wall. You can't quite
+ determine the color of the sleek countertop, it's
+ somewhere between green and brown. The design on the
+ countertop consists of geometric patterns. It seems a
+ sturdy, durable, and solid counter.",
name 'counter',
has static supporter scenery;
Object microwave "microwave" counter
- with description "Your standard microwave.",
+ with description
+ "A combination of silver and black, this microwave looks
+ like a real workhorse. It's compact, quiet, and works
+ great.",
name 'microwave' 'micro',
- has container openable scenery;
+ before [;
+ Receive:
+ print "Put ";
+ print (a) noun;
+ print_ret
+ " into the microwave? Maybe you should come with a
+ warning label because you contain more than a trace
+ amount of nut.";
+ ],
+ has container openable;
-Object table "Table" break_room
- with description "It's a table. Were you expecting something else?",
+Object table "table" break_room
+ with description "The table is made of strong wood. It looks to
+ be about 6 feet across and could probably sit 6
+ to 8 people. It's white, round and seems very
+ functional as a table despite looking quite
+ heavy.",
name 'table',
before [;
Take:
"Let me spell it out for you: it is a T A B L E and you
are NOT Superman.";
],
- has supporter;
+ has scenery supporter;
Object backpack "backpack" table
- with description "Your backpack.",
+ with description
+ "This backpack looks like a modern art piece that was
+ made using brown and light blue-green watercolors. A black
+ line was traced around to make the stitching lines.
+ Well-worn and quite suitable for travel, it looks like it
+ could carry a lot of belongings.",
name 'pack' 'back' 'bag' 'backpack',
article "your",
before [;
Open:
- if (openedbackpack == 1) {
+ if (backpack hasnt visited) {
score = score + 2;
- openedbackpack = 2;
+ give backpack visited;
}
],
has clothing container openable;
name 'disk' 'disc' 'Trisquel' 'cd',
after [;
Take:
- if (takencd == 1) {
+ if (disc hasnt visited) {
score = score + 2;
- takencd = 2;
- print_ret "You pick up the Trisquel CD.^";
+ give disc visited;
}
],
has ;
Object hallway "Hallway"
with description
- "Bereft of features, adornment or even adequate lighting,
- this hallway is as plain as they come. Doors lead east
- back to the break room, north to the server room, or
- west to the restrooms.",
+ "The hallway is long and rectangular, and the walls are
+ painted a cool blue and the floor is carpeted. One of the
+ long walls is decorated with a few paintings, all of
+ different scenes from around the city. The wall opposite
+ the paintings has a glass display case. Doors lead east
+ back to the break room, north to the server room, or west
+ to the restrooms.",
e_to break_room,
- n_to server_room,
- w_to
- "When nature calls, you'll know about it, but right now,
- it isn't calling.",
+ n_to
+ "You use your key card to open the server room door but
+ instead of a beep of approval and an unlocked door you
+ get a buzz of denial and the door remains locked. Plus:
+ Through the window in the door you can see someone moving
+ around inside but there shouldn't be anyone else here
+ today.",
+ w_to restroom,
+ has light;
+
+Object carpet "carpet" hallway
+ with description
+ "The carpet is a deep red color and very well kept. It
+ covers the floor of the entire hallway. It has an
+ intricate pattern of woven vines, flowers and leaves.",
+ name 'carpet' 'floor',
+ has scenery;
+
+Object paintings "paintings" hallway
+ with description
+ "There's a painting of the city bridge with a young girl
+ standing on it and looking out to the horizon, another of
+ a large three-masted ship tied up at the docks with
+ several people on the deck looking out over the water,
+ one of an old style saloon with a bucking horse outside.",
+ name 'paint' 'painting' 'paintings',
before [;
- Go:
- if (noun == n_obj) {
- StartDaemon(server_room);
- print
- "^^You use your key card to open the server room
- door and step into your world.^";
- }
+ Take, Pull, Push, PushDir:
+ print_ret (The) self, " are firmly attached to the wall.";
+ ],
+ has scenery pluralname;
+
+Object case "glass display case" hallway
+ with description
+ "The display case is large and made of glass.",
+ name 'glass' 'display' 'case',
+ before [;
+ Take, Pull, Push, PushDir:
+ print_ret (The) self, " is too heavy for that.";
],
+ has container openable scenery transparent;
+
+Object award "crystal award" case
+ with description
+ "It's an award the company won. It's made of extremely
+ ornate crystal, in fact more so than any other crystal
+ award you've ever seen; this is probably because it's the
+ only one you've ever seen up close. The bottom is a solid
+ crystal octagon and there are actually eight more little
+ crystals that act as legs supporting the main crystal
+ octagon.",
+ name 'crystal' 'award';
+
+Object keycard "key card" break_room
+ with description
+ "The key card is thin and black with a magnetic strip
+ down the middle. The card is slightly bendable and easy
+ to grip.",
+ name 'key' 'card' 'keycard',
+ has ;
+
+Object restroom "Restroom"
+ with description
+ "This average-sized, square restroom has a sink set into a
+ resin counter. The floor is tiled, the ceiling has
+ removable tiles, and the walls are painted with a
+ wallpapered dado. Light is provided by ceiling lights. The
+ room is done in colors that remind you of the sky and
+ overall looks very eclectic.",
+ e_to hallway,
has light;
Object server_room "Server Room"
up rack 7. The little indicator light is blinking red, and
it is beeping.",
s_to hallway,
- daemon [;
- if (location ~= server_room)
- return;
+ each_turn [;
beeping = random(7);
switch (beeping) {
1:
with description "It's a CD tray. Just like every other CD tray.",
name 'cd' 'tray',
before [;
+ Receive:
+ if (noun ~= disc)
+ print_ret (The) noun, " is too big to fit.";
Open:
- if (openedtray == 1) {
+ if (tray hasnt visited) {
score = score + 2;
- openedtray = 2;
+ give tray visited;
}
],
after [;
[ Initialise;
location = break_room;
+ move keycard to player;
"^^^^It's Saturday, a nice one at that, and you've been called in
to fix a server that's on the blink. Again.^^You've had it. This
server is going to run GNU/Linux from this day forward! The
!=========================================================================
! Standard and Extended Grammar
Include "grammar";
-!=========================================================================
\ No newline at end of file
+!=========================================================================