X-Git-Url: https://jxself.org/git/?a=blobdiff_plain;f=the-server-room.inf;h=390b4e0b4def4b6078b449cd728de29459109aa8;hb=HEAD;hp=bf16cf0c48c0897253bad56b184e163cd6298b0a;hpb=1610e991e14bfe4b88dbc2dd7501a036ca3e663c;p=the-server-room.git diff --git a/the-server-room.inf b/the-server-room.inf index bf16cf0..390b4e0 100644 --- a/the-server-room.inf +++ b/the-server-room.inf @@ -1,5 +1,24 @@ !% -SD !========================================================================= +! Copyright (C) 2019, 2020, 2021 Jason Self +! +! This program is free software: you can redistribute it and/or modify +! it under the terms of the GNU Affero General Public License as +! published by the Free Software Foundation, either version 3 of the +! License, or (at your option) any later version. +! +! This program is distributed in the hope that it will be useful, +! but WITHOUT ANY WARRANTY; without even the implied warranty of +! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +! GNU Affero General Public License for more details. +! +! You should have received a copy of the GNU Affero General Public +! License along with this program. If not, see +! . +! +!This file incorporates work covered by the following copyright and +!permission notice: +! ! Copyright (C) 2008 Daniel Bartholomew ! ! This program is free software: you can redistribute it and/or modify @@ -17,192 +36,324 @@ ! . !========================================================================= Constant Story "The Server Room"; -Constant Headline - "^An Interactive Fiction by Daniel Bartholomew.^"; -Release 1; Serial "080625"; !for keeping track of public releases - +Constant Headline "^An Interactive Fiction by Daniel Bartholomew +with modifications by Jason Self.^"; +Release 1; +Serial "210202"; Constant MAX_SCORE = 6; - -Include "Parser"; -Include "VerbLib"; - -global openedbackpack = 1; -global openedtray = 1; -global takencd = 1; -global beeping = 1; - +Include "parser"; +Include "verblib"; +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.", +Object break_room "Break Room" + with description + "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 - daystar is too bright and terrible to face today. Besides, you - have work to do.", - has light; - -Object fridge "refrigerator" break_room - with - description "Your standard refrigerator.", + e_to + "You take one look outside and think better of it. The + daystar is too bright and terrible to face today. Besides, + 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 + "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; + 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.", +Object counter "long counter" break_room + with description + "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; + has static supporter scenery; -Object microwave "microwave" counter - with - description "Your standard microwave.", +Object microwave "microwave" counter + 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; - -Object backpack "backpack" table - with - description "Your backpack.", - name 'pack' 'back' 'bag' 'backpack', article "your", - before [; - Open: - if (openedbackpack == 1) { + before [; + Take: + "Let me spell it out for you: it is a T A B L E and you + are NOT Superman."; + ], + has scenery supporter; + +Object backpack "backpack" table + 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 (backpack hasnt visited) { score = score + 2; - openedbackpack = 2; + give backpack visited; } - ], - has clothing container openable; - -Object disc "Ubuntu CD" backpack - with - description "An automatic recovery CD, guaranteed to fix almost - any server.^^Ok, it's just an install CD that auto-installs - Ubuntu, but hey, if it works, it works.", - name 'disk' 'disc' 'Ubuntu' 'cd', - after [; - Take: - if (takencd == 1) { + ], + has clothing container openable; + +Object disc "Trisquel CD" backpack + with description + "An automatic recovery CD, guaranteed to fix almost any + server.^^Ok, it's just an install CD that auto-installs + Trisquel, but hey, if it works, it works.", + name 'disk' 'disc' 'Trisquel' 'cd', + after [; + Take: + if (disc hasnt visited) { score = score + 2; - takencd = 2; - print_ret "You pick up the Ubuntu 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 + ], + has ; + +Object hallway "Hallway" + with description + "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 light; - -Object server_room "Server Room" - with - description "The fans, the lights, the chill . . . yep, it's a - server room. Full of servers from a dozen different - manufacturers, each with their own quirks.^^Your attention is - immediately drawn to a server 2/3 of the way up rack 7. The - little indicator light is blinking red, and it is beeping.", + 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" + with description + "The fans, the lights, the chill . . . yep, it's a server + room. Full of servers from a dozen different + manufacturers, each with their own quirks.^^Your + attention is immediately drawn to a server 2/3 of the way + 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: "^The beeping is driving you crazy."; - 2: "^It's hard to think, with all of the beeping."; - 3: "^The monotony of the beeping is maddening."; - 4: "^You can't stand the beeping."; - 5: "^The beeping reminds you of your alarm clock."; - 6: "^beep . . . beep . . . beep . . . beep . . . beep - . . . beep . . ."; - 7: "^If you don't stop the beeping soon, you'll loose what - little hair you have left."; + 1: + "^The beeping is driving you crazy."; + 2: + "^It's hard to think, with all of the beeping."; + 3: + "^The monotony of the beeping is maddening."; + 4: + "^You can't stand the beeping."; + 5: + "^The beeping reminds you of your alarm clock."; + 6: + "^beep . . . beep . . . beep . . . beep . . . beep + . . . beep . . ."; + 7: + "^If you don't stop the beeping soon, you'll loose + what little hair you have left."; } ], - has light; + has light; -Object server "server" server_room - with - description "The indicator light on this ancient server is - blinking orange. The rest the front is featureless except for - the CD tray. The beeping seems to emanate from somewhere +Object server "server" server_room + with description + "The indicator light on this ancient server is blinking + orange. The rest the front is featureless except for the + CD tray. The beeping seems to emanate from somewhere inside the server.", name 'server' 'machine' 'computer' 'ancient' 'old', - has scenery; + has scenery; -Object tray "tray" server_room - with - description "It's a CD tray. Just like every other CD tray.", +Object tray "tray" server_room + with description "It's a CD tray. Just like every other CD tray.", name 'cd' 'tray', - before [; - Open: - if (openedtray == 1) { + before [; + Receive: + if (noun ~= disc) + print_ret (The) noun, " is too big to fit."; + Open: + if (tray hasnt visited) { score = score + 2; - openedtray = 2; + give tray visited; } - ], - after [; - Open: + ], + after [; + Open: print_ret "You press the button and the CD tray pops out."; - Close: + Close: if (disc in self) { deadflag = 5; - print_ret "^With the CD in the tray, you quickly reboot - the server.^^After the bios posts, your disc starts - doing its thing and before you know it the server is - happily running Ubuntu, and even more than that, the - beeping has stopped. Yay!"; + print_ret + "^With the CD in the tray, you quickly reboot the + server.^^After the bios posts, your disc starts + doing its thing and before you know it the server + is happily running Trisquel, and even more than + that, the beeping has stopped. Yay!"; } - ], - has container openable scenery; + ], + has container openable scenery; !========================================================================= ! Entry point routines [ Initialise; location = break_room; - "^^^^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 Linux from this day forward! The process - will be easy - just put the disc into the server and away we go. - Now where is that Ubuntu CD?^"; + 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 + process will be easy - just put the disc into the server and away + we go. Now where is that Trisquel CD?^"; ]; [ Deathmessage; - if (deadflag == 5) print "You have won"; + if (deadflag == 5) + print "You have won"; ]; !========================================================================= ! Standard and Extended Grammar - -Include "Grammar"; - +Include "grammar"; !=========================================================================