-! Copyright (C) 2019 Jason Self <j@jxself.org>
+! Copyright (C) 2019, 2020 Jason Self <j@jxself.org>
!
-! This file is free software: you may copy, redistribute gand/or
+! This file is free software: you may copy, redistribute 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.
^Ongoing development: https://jxself.org/git/?p=homeland.git
^Send bugs and feedback by email to j@@64jxself.org.
^IFID AC0898CB-0668-4853-9EB9-757958D4AF56
- ^Copyright (C) 2019 Jason Self
+ ^Copyright (C) 2019, 2020 Jason Self
^You can change and share this game under the terms of the GNU
Affero General Public License as published by the Free Software
Foundation (FSF), either version 3 of the License, or (at your
Include "parser";
Include "verblib";
Release 0;
-Serial "190728";
-Include "src/objects/kitchen.inf";
-Include "src/objects/livingroom.inf";
-Include "src/objects/bedroom.inf";
-Include "src/objects/grandlivingroom.inf";
-Include "src/objects/sidewalk.inf";
-Include "src/objects/frontporch.inf";
-Include "src/objects/neighborlivingroom.inf";
-Include "src/objects/backyard.inf";
-Include "src/objects/neighborkitchen.inf";
-Include "src/objects/campsite.inf";
+Serial "200329";
+Include "src/objects/intro/kitchen.inf";
+Include "src/objects/intro/livingroom.inf";
+Include "src/objects/intro/bedroom.inf";
+Include "src/objects/intro/grandlivingroom.inf";
+Include "src/objects/intro/sidewalk.inf";
+Include "src/objects/intro/frontporch.inf";
+Include "src/objects/intro/neighborlivingroom.inf";
+Include "src/objects/intro/backyard.inf";
+Include "src/objects/intro/neighborkitchen.inf";
+
+Include "src/objects/overworld/campsite.inf";
+Include "src/objects/overworld/westofcampsite.inf";
[ DeathMessage;
if (deadflag == 3)
print
"While reading the morning newspaper, there was another small
explosion from your neighbor's home. This time you were able
- to see a series of three bright blue sparks that your friends
- were talking about from your kitchen window through the
- curtains covering their living room windows.^^";
+ to see the series of three bright blue sparks that your
+ friends were talking about from your kitchen window through
+ the curtains covering their living room window.^^";
print
"You crane your neck out the window to look, but all is
quiet. ~What's going on over there?~ you wonder.^^";
+++ /dev/null
-! Copyright (C) 2019 Jason Self <j@jxself.org>
-!
-! This file is free software: you may copy, redistribute gand/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 file 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 file. If not, see https://gnu.org/licenses/
-
-Object backyard "Back Yard"
- with description
- "You are in your neighbor's back yard. It is barely
- cloudy and already hot this morning. Some shade from the
- sun would be nice but the closest tree is at the sidewalk,
- on the other side of the building and the sun is causing
- all of the shadows to go in the wrong direction. The
- healthy, dark green grass is well manicured. A high wooden
- fence encompasses the area, painted a burnt umber. Their
- back door is to the east. Your kitchen window is to the
- south.",
- before [;
- Go:
- if (noun == s_obj) {
- print
- "Climbing over the fence you squeeze back through
- your kitchen window.^";
- }
- ],
- s_to window,
- n_to "Their fence is too high to climb over in that direction.",
- e_to backdoor,
- w_to "Their fence is too high to climb over in that direction.",
- has light;
-
-Object grass "grass" backyard
- with name 'green' 'grass' 'meadow' 'sod' 'turf' 'lawn',
- found_in backyard campsite,
- has scenery;
-
-Object sky "sky" backyard
- with name 'sky',
- found_in backyard frontporch kitchen sidewalk,
- has scenery;
-
-Object leaves "leaves" backyard
- with name 'leaf' 'leaves',
- found_in backyard sidewalk,
- has scenery;
-
-Object scratches "scratches" backyard
- with name 'scratch' 'scratches' 'mark' 'marks' 'marking' 'markings',
- found_in backyard neighborkitchen,
- has scenery;
-
-Object house "neighbor's house" backyard
- with name 'house' 'home' 'building',
- found_in backyard frontporch kitchen sidewalk,
- has scenery;
-
-Object backdoor "back door" backyard
- with name 'door' 'back' 'backdoor',
- description
- "Burgundy in color it seems a solid and hefty door. It
- has scratches along the bottom, as if from a pet long
- forgotten.",
- short_name [;
- if (location == backyard)
- print "door to your neighbor's house";
- else
- print "door to the back yard";
- return true;
- ],
- found_in backyard neighborkitchen,
- door_dir [;
- if (location == backyard)
- return e_to;
- else
- return w_to;
- ],
- door_to [;
- if (location == backyard)
- return neighborkitchen;
- else
- return backyard;
- ],
- has scenery door openable;
\ No newline at end of file
+++ /dev/null
-! Copyright (C) 2019 Jason Self <j@jxself.org>
-!
-! This file is free software: you may copy, redistribute gand/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 file 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 file. If not, see https://gnu.org/licenses/
-
-Object bedroom "Bedroom"
- with description
- "The green-beige walls are reminiscent of a hospital. On
- the wall is a painting. The livingroom is to the north.",
- n_to livingroom,
- cant_go
- "Since when did you get the ability to walk through
- walls? Your livingroom is to the north.",
- has light;
-
-Object painting "painting" bedroom
- with description
- "It's a picture of Aragain Falls, the most breathtaking
- and awesome waterfall in the known lands.",
- name 'painting' 'paint',
- Before [;
- Take:
- print_ret "It looks so nice, perhaps it's better to leave
- it where it is.";
- ],
- has scenery;
-
-Object bed "twin-sized bed" bedroom
- with name 'bed' 'twin',
- description
- "With a frame of solid wood with a golden brown finish,
- it's a finely crafted bed.",
- before [;
- Take, Pull, Push, PushDir:
- print_ret (The) self, " is too heavy for that.";
- ],
- has static supporter enterable;
-
-Object box "dented steel box" bed
- with name 'box' 'safe' 'safety' 'deposit',
- description
- "It's a safety deposit box. Made of steel, and dented,
- the words ~Property Of The Bank of Zork~ are on it.",
- has container openable;
-
-Object directional "compass" box
- with name 'compass',
- description [;
- if (location == bedroom || location == kitchen ||
- location == backyard || location == neighborkitchen ||
- location == neighborlivingroom)
- print
- "Ordinarily you'd expect a compass to point north
- but this one is spinning wildly in every
- direction.^";
- if (location == livingroom || location == sidewalk)
- print "The compass is pointing west.^";
- if (location == frontporch)
- print "The compass is pointing southeast.^";
- ],
- ;
\ No newline at end of file
+++ /dev/null
-! Copyright (C) 2019 Jason Self <j@jxself.org>
-!
-! This file is free software: you may copy, redistribute gand/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 file 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 file. If not, see https://gnu.org/licenses/
-
-Object campsite "Campsite"
- with description [;
- print
- "You are at an old campsite set among some low-lying
- hills. Healthy, dark green grass carpets the ground
- except around an old firepit.^^";
- print
- "You can see a log (on which are a copper lantern and
- a diary) here.^^";
- print
- "The diary is old and worn. The pages are tattered
- and yellowed, and most of the writing has faded due to
- exposure to the elements. In reviewing the pages you
- recognize it as your neighbor's handwriting and can
- make out a single passage: ~The humming... the
- humming... I can't make it stop.~";
- deadflag = 3;
- ],
- has light;
\ No newline at end of file
+++ /dev/null
-! Copyright (C) 2019 Jason Self <j@jxself.org>
-!
-! This file is free software: you may copy, redistribute gand/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 file 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 file. If not, see https://gnu.org/licenses/
-
-Object frontporch "Front Porch"
- with description
- "You are on your neighbor's front porch. It consists of a
- coffee brown wooden floor connected to and surrounded by a
- parchment white wooden fence, with an opening to the
- sidewalk in the southeast. Their front door is to the
- west.",
- cant_go "That parchment white wooden fence is too high to get over.",
- se_to sidewalk,
- w_to neighbordoor,
- has light;
-
-Object neighbordoor "front door" frontporch
- with name 'door' 'front' 'red',
- description "A deep red color it has no window and a shiny
- brass handle.",
- found_in frontporch neighborlivingroom,
- door_dir [;
- if (location == frontporch)
- return w_to;
- else
- return e_to;
- ],
- door_to [;
- if (location == frontporch)
- return neighborlivingroom;
- else
- return frontporch;
- ],
- has scenery door openable;
-
-Object brasshandle "brass door handle" frontporch
- with name 'brass' 'handle',
- found_in frontporch neighborlivingroom,
- has scenery;
-
-Object fence "wooden fence" frontporch
- with name 'fence' 'wooden' 'wood',
- found_in backyard frontporch,
- has scenery;
\ No newline at end of file
+++ /dev/null
-! Copyright (C) 2019 Jason Self <j@jxself.org>
-!
-! This file is free software: you may copy, redistribute gand/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 file 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 file. If not, see https://gnu.org/licenses/
-
-Object grandlivingroom "Grand Livingroom"
- with description [;
- if (grandlivingroom has visited) {
- print
- "This time there's no sign of the woman but the
- guards she called for are here. They grab & arrest
- you. Perhaps you should have listened.^";
- }
- if (grandlivingroom hasnt visited) {
- print
- "Feeling a little disoriented as you enter, this
- doesn't seem like the same place: The interior
- feels very open. Walls of pine extend upward to a
- ceiling soaring above this two-story height
- livingroom with windows extending all the way up
- the walls, providing an abundance of sunlight for
- the space. The ceiling is painted with soft moss
- on a deep silver background creating an inviting
- effect. A wide doorway on the other side of the
- room leads to a wide balcony, providing a perfect
- view of the garden and pond beyond it. As you
- begin to take in the bold colors of this lavish
- room a woman comes out of one of the walkways on
- the other end. Dressed in a stunning red and blue
- gown she seems a combination of surprised and
- startled to see you. ~Who are you? Why are you
- here?~ she asks, demandingly. Not giving time for
- a response she yells for the guards. I don't know
- where we are but I think now would be a good time
- to leave.^";
- }
- ],
- each_turn [;
- guardscalled = guardscalled + 1;
- if (guardscalled == 1)
- PlayerTo(neighborlivingroom);
- else
- if (guardscalled == 2) {
- deadflag = 3;
- }
- ],
- has light;
\ No newline at end of file
--- /dev/null
+! Copyright (C) 2019 Jason Self <j@jxself.org>
+!
+! This file is free software: you may copy, redistribute 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 file 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 file. If not, see https://gnu.org/licenses/
+
+Object backyard "Back Yard"
+ with description
+ "You are in your neighbor's back yard. It is barely
+ cloudy and already hot this morning. Some shade from the
+ sun would be nice but the closest tree is at the sidewalk,
+ on the other side of the building and the sun is causing
+ all of the shadows to go in the wrong direction. The
+ healthy, dark green grass is well manicured. A high wooden
+ fence encompasses the area, painted a burnt umber. Their
+ back door is to the east. Your kitchen window is to the
+ south.",
+ before [;
+ Go:
+ if (noun == s_obj) {
+ print
+ "Climbing over the fence you squeeze back through
+ your kitchen window.^";
+ }
+ ],
+ s_to window,
+ n_to "Their fence is too high to climb over in that direction.",
+ e_to backdoor,
+ w_to "Their fence is too high to climb over in that direction.",
+ has light;
+
+Object grass "grass" backyard
+ with name 'green' 'grass' 'meadow' 'sod' 'turf' 'lawn',
+ found_in backyard campsite,
+ has scenery;
+
+Object sky "sky" backyard
+ with name 'sky',
+ found_in backyard frontporch kitchen sidewalk,
+ has scenery;
+
+Object leaves "leaves" backyard
+ with name 'leaf' 'leaves',
+ found_in backyard sidewalk,
+ has scenery;
+
+Object scratches "scratches" backyard
+ with name 'scratch' 'scratches' 'mark' 'marks' 'marking' 'markings',
+ found_in backyard neighborkitchen,
+ has scenery;
+
+Object house "neighbor's house" backyard
+ with name 'neighbor' 'neighbors' 'house' 'home' 'building',
+ found_in backyard frontporch kitchen sidewalk,
+ has scenery;
+
+Object backdoor "back door" backyard
+ with name 'door' 'back' 'backdoor',
+ description
+ "Burgundy in color it seems a solid and hefty door. It
+ has scratches along the bottom, as if from a pet long
+ forgotten.",
+ short_name [;
+ if (location == backyard)
+ print "door to your neighbor's house";
+ else
+ print "door to the back yard";
+ return true;
+ ],
+ found_in backyard neighborkitchen,
+ door_dir [;
+ if (location == backyard)
+ return e_to;
+ else
+ return w_to;
+ ],
+ door_to [;
+ if (location == backyard)
+ return neighborkitchen;
+ else
+ return backyard;
+ ],
+ has scenery door openable;
\ No newline at end of file
--- /dev/null
+! Copyright (C) 2019 Jason Self <j@jxself.org>
+!
+! This file is free software: you may copy, redistribute 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 file 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 file. If not, see https://gnu.org/licenses/
+
+Object bedroom "Bedroom"
+ with description
+ "The green-beige walls are reminiscent of a hospital. The
+ livingroom is to the north.",
+ n_to livingroom,
+ cant_go
+ "Since when did you get the ability to walk through
+ walls? Your livingroom is to the north.",
+ has light;
+
+Object painting "painting" bedroom
+ with description
+ "It's a picture of Aragain Falls, the most breathtaking
+ and awesome waterfall in the known lands.",
+ before [;
+ Insert:
+ if (second == box)
+ print_ret (The) self, " is too big to fit.";
+ ],
+ name 'painting' 'paint' 'picture' 'of' 'aragain' 'falls';
+
+Object bed "twin-sized bed" bedroom
+ with name 'bed' 'twin',
+ description
+ "With a frame of solid wood with a golden brown finish,
+ it's a finely crafted bed.",
+ before [;
+ Take, Pull, Push, PushDir:
+ print_ret (The) self, " is too heavy for that.";
+ ],
+ has static supporter enterable;
+
+Object box "dented steel box" bed
+ with name 'box' 'safe' 'safety' 'deposit',
+ description
+ "It's a safety deposit box. Made of steel, and dented,
+ the words ~Property Of The Bank of Zork~ are on it.",
+ has container openable;
+
+Object directional "compass" box
+ with name 'compass',
+ description [;
+ if (location == bedroom || location == kitchen ||
+ location == backyard || location == neighborkitchen ||
+ location == neighborlivingroom)
+ print
+ "Ordinarily you'd expect a compass to point north
+ but this one is spinning wildly in every
+ direction.^";
+ if (location == livingroom || location == sidewalk)
+ print "The compass is pointing west.^";
+ if (location == frontporch)
+ print "The compass is pointing southeast.^";
+ ],
+ ;
\ No newline at end of file
--- /dev/null
+! Copyright (C) 2019 Jason Self <j@jxself.org>
+!
+! This file is free software: you may copy, redistribute 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 file 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 file. If not, see https://gnu.org/licenses/
+
+Object frontporch "Front Porch"
+ with description
+ "You are on your neighbor's front porch. It consists of a
+ coffee brown wooden floor connected to and surrounded by a
+ parchment white wooden fence, with an opening to the
+ sidewalk in the southeast. Their front door is to the
+ west.",
+ cant_go "That parchment white wooden fence is too high to get over.",
+ se_to sidewalk,
+ w_to neighbordoor,
+ has light;
+
+Object neighbordoor "front door" frontporch
+ with name 'door' 'front' 'red',
+ description "A deep red color it has no window and a shiny
+ brass handle.",
+ found_in frontporch neighborlivingroom,
+ door_dir [;
+ if (location == frontporch)
+ return w_to;
+ else
+ return e_to;
+ ],
+ door_to [;
+ if (location == frontporch)
+ return neighborlivingroom;
+ else
+ return frontporch;
+ ],
+ has scenery door openable;
+
+Object brasshandle "brass door handle" frontporch
+ with name 'brass' 'handle',
+ found_in frontporch neighborlivingroom,
+ has scenery;
+
+Object fence "wooden fence" frontporch
+ with name 'fence' 'wooden' 'wood',
+ found_in backyard frontporch,
+ has scenery;
\ No newline at end of file
--- /dev/null
+! Copyright (C) 2019 Jason Self <j@jxself.org>
+!
+! This file is free software: you may copy, redistribute 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 file 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 file. If not, see https://gnu.org/licenses/
+
+Object grandlivingroom "Grand Livingroom"
+ with description [;
+ if (grandlivingroom has visited) {
+ print
+ "This time there's no sign of the woman but the
+ guards she called for are here. They grab & arrest
+ you. Perhaps you should have listened.^";
+ }
+ if (grandlivingroom hasnt visited) {
+ print
+ "Feeling a little disoriented as you enter, this
+ doesn't seem like the same place: The interior
+ feels very open. Walls of pine extend upward to a
+ ceiling soaring above this two-story height
+ livingroom with windows extending all the way up
+ the walls, providing an abundance of sunlight for
+ the space. The ceiling is painted with soft moss
+ on a deep silver background creating an inviting
+ effect. A wide doorway on the other side of the
+ room leads to a wide balcony, providing a perfect
+ view of the garden and pond beyond it. As you
+ begin to take in the bold colors of this lavish
+ room a woman comes out of one of the walkways on
+ the other end. Dressed in a stunning red and blue
+ gown she seems a combination of surprised and
+ startled to see you. ~Who are you? Why are you
+ here?~ she asks, demandingly. Not giving time for
+ a response she yells for the guards. I don't know
+ where we are but I think now would be a good time
+ to leave.^";
+ }
+ ],
+ each_turn [;
+ guardscalled = guardscalled + 1;
+ if (guardscalled == 1)
+ PlayerTo(neighborlivingroom);
+ else
+ if (guardscalled == 2) {
+ deadflag = 3;
+ }
+ ],
+ has light;
\ No newline at end of file
--- /dev/null
+! Copyright (C) 2019 Jason Self <j@jxself.org>
+!
+! This file is free software: you may copy, redistribute 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 file 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 file. If not, see https://gnu.org/licenses/
+
+Object kitchen "Kitchen"
+ with description
+ "This looks like a restaurant-quality kitchen. It's small
+ but full of natural light coming in through the large
+ window, adding a nice sense of a warm glow. Despite the
+ small size it has a high ceiling, and the room was set up
+ into a rectangular shape. The layout allows for easy
+ access. The walls are painted a buttery yellow and broken
+ up by celery green curtains on the window. The highly
+ polished floor ties everything together to create a
+ feeling of comfort and elegance. It's the perfect example
+ of well-balanced home design. The livingroom is to the
+ east.",
+ n_to window,
+ cant_go "You walk smack into one of those buttery yellow
+ walls I described.",
+ e_to livingroom,
+ before [;
+ Go:
+ if (chair in player) {
+ print_ret "The chair is too awkward to do that while
+ you're carrying it.";
+ }
+ ],
+ has light;
+
+Object wall "wall" kitchen
+ with name 'yellow' 'wall' 'walls',
+ description [;
+ if (location == kitchen)
+ print
+ "The walls are painted a buttery yellow and
+ broken up by celery green curtains on the
+ windows.^";
+ else
+ print "You see nothing special about the walls.^";
+ ],
+ found_in kitchen livingroom bedroom neighborkitchen neighborlivingroom,
+ has scenery;
+
+Object chair "chair" kitchen
+ with name 'chair' 'backrest' 'seat',
+ description
+ "It seems to be your average kitchen chair: Four chrome
+ legs and a backrest with a yellow seat that matches the
+ walls.",
+ before [;
+ Take:
+ move chair to player;
+ print_ret "As awkward as it is, you take the chair.";
+ ],
+ has scenery supporter enterable;
+
+Object table "table" kitchen
+ with name 'table' 'kitchen table' 'formica',
+ description
+ "It looks like something right out of the 1950s: Green
+ formica and chrome legs.",
+ before [;
+ Take, Pull, Push, PushDir, Turn:
+ print_ret (The) self, " is too heavy for that.";
+ ],
+ has scenery supporter enterable;
+
+Object newspaper "newspaper" table
+ with name 'newspaper' 'paper',
+ description
+ "It's your favorite newspaper: U.S. News And Grue Report,
+ which also airs on TV. The headline story says ~The GUE's
+ redesigned 100 zorkmid bill makes history today, becoming
+ the first ever zorkmid to feature a woman on the front.
+ The bill is set to become legal tender next year, with
+ the decision finalized by the Governor yesterday.~
+ ~I have enthusiastically embraced this bold new way of
+ designing money, showing a woman's face. I believe this
+ landmark achievement will stimulate public confidence in
+ our monetary system and will help build the GUE's
+ creative capabilities,~ the Governor said. The next
+ story talks about how a local resident has won the
+ carrot-growing contest for the third time in a row.";
+
+Object window "window" kitchen
+ with name 'window' 'windows',
+ description
+ "Framed by celery green curtains it seems almost large
+ enough to climb through.",
+ short_name [;
+ if (location == kitchen)
+ print "window to your neighbor's back yard";
+ else
+ print "window to your kitchen";
+ return true;
+ ],
+ found_in kitchen backyard,
+ door_dir [;
+ if (location == kitchen)
+ return n_to;
+ else
+ return s_to;
+ ],
+ door_to [;
+ if (location == kitchen)
+ return backyard;
+ else
+ return kitchen;
+ ],
+ before [;
+ Search:
+ if (curtains has open) {
+ print "You see your neighbor's backyard.^";
+ return true;
+ }
+ else {
+ print "The curtains are closed, and you can't see
+ through them.^";
+ return true;
+ }
+ Open:
+ if (window hasnt visited) {
+ score = score + 1;
+ give window visited;
+ }
+ Climb:
+ if (window hasnt visited) {
+ score = score + 1;
+ give window visited;
+ }
+ PlayerTo(backyard);
+ ],
+ has scenery door openable;
+
+Object curtains "curtains" kitchen
+ with name 'celery' 'green' 'curtain' 'curtains',
+ description "Celery green in color, you see nothing special
+ about the curtains.",
+ before [;
+ Take, Pull, Push, PushDir:
+ print_ret "Don't you think they look nice where they are?";
+ ],
+ has scenery open openable pluralname;
+
+Object legs "legs" kitchen
+ with name 'leg' 'legs',
+ found_in kitchen neighborkitchen,
+ has scenery;
\ No newline at end of file
--- /dev/null
+! Copyright (C) 2019 Jason Self <j@jxself.org>
+!
+! This file is free software: you may copy, redistribute 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 file 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 file. If not, see https://gnu.org/licenses/
+
+Object livingroom "Livingroom"
+ with description
+ "You are in a modestly furnished livingroom. Pictures
+ hang from the walls. You can hear the sound of vehicles
+ driving by outside. The kitchen is to the west. The front
+ door is to the east. Your bedroom is to the south.",
+ before [;
+ Listen:
+ print "You can hear the sound of vehicles driving by outside.^";
+ return true;
+ ],
+ n_to
+ "Since when did you get the ability to walk through
+ walls? The kitchen is to the west. The front door is to
+ the east. Your bedroom is to the south.",
+ s_to bedroom,
+ w_to kitchen,
+ e_to frontdoor,
+ has light;
+
+Object picture "pictures" livingroom
+ with description
+ "The pictures in the room consist of a landscape painting
+ showing a strangely geometric mountain, another of a
+ still life painting of a table laid out with a feast and
+ the third is a portrait of an unknown man. He has a full
+ beard, is wearing a black robe and no shoes. On his head
+ is a large 1970s-era hard disk platter.",
+ name 'picture' 'photo' 'photos' 'frame' 'frames' 'pictures'
+ 'image' 'images',
+ Before [;
+ Take:
+ print_ret
+ "They look so nice, perhaps it's better to leave them
+ where they are.";
+ ],
+ has scenery pluralname;
+
+Object man "man" livingroom
+ with description "It's a painting of Richard Stallman dressed as
+ St IGNUcius.",
+ name 'man' 'disk' 'hard' 'platter' 'robe' 'rms' 'Richard' 'Stallman'
+ 'robe' 'black' 'image' 'images',
+ Before [;
+ Take:
+ print_ret
+ "The painting looks so nice, perhaps it's better to
+ leave it where it is.";
+ ],
+ has scenery;
+
+Object television "television" livingroom
+ with name 'television' 'tv',
+ description
+ "It's big, gray, and one of those old-fashioned CRT
+ models. It looks very heavy.",
+ watch_count 0,
+ before [;
+ Listen, Examine:
+ if (television has on) {
+ self.watch_count = self.watch_count + 1;
+ switch (self.watch_count) {
+ 1:
+ print
+ "It's big, gray, and one of those
+ old-fashioned CRT models. It looks very
+ heavy.^The TV is currently switched on. Your
+ favorite news program is on: U.S. News And
+ Grue Report.^The news anchor is saying ~In
+ other news, authorities continue to
+ investigate the missing persons case.~^";
+ score = score + 1;
+ return true;
+ 2:
+ print
+ "The news anchor continues by saying ~We're
+ told the that number of missing people is now
+ up to as many as 5.~^";
+ score = score + 1;
+ return true;
+ 3:
+ print
+ "The news anchor concludes their coverage by
+ saying ~We'll have more as the story continues
+ to develop.~^";
+ score = score + 1;
+ return true;
+ default:
+ print
+ "It's big, gray, and one of those
+ old-fashioned CRT models. It looks very
+ heavy.^The TV is currently switched on. Your
+ favorite news program is on: U.S. News And
+ Grue Report.^";
+ return true;
+ }
+ }
+ ;
+ Take, Pull, Push, PushDir:
+ print_ret (The) self, " is too heavy for that.";
+ ],
+ after [;
+ SwitchOn:
+ print
+ "The television comes to life. Your favorite news
+ program is on: U.S. News And Grue Report.^";
+ if (television hasnt visited) {
+ score = score + 1;
+ give television visited;
+ }
+ return true;
+ ],
+ has static switchable;
+
+Object couch "couch" livingroom
+ with name 'couch' 'sofa',
+ description
+ "It looks like a throwback from the 1970s but has held up
+ very well.",
+ before [;
+ Take, Pull, Push, PushDir:
+ print_ret (The) self, " is too heavy for that.";
+ ],
+ after [;
+ Enter:
+ print
+ "The couch makes a nauseating, high-pitched groan as
+ your weight is added.^";
+ return true;
+ Exit, GetOff:
+ print "The couch makes a muted snort as your weight is removed.^";
+ return true;
+ ],
+ has static supporter enterable;
+
+Object frontdoor "front door" livingroom
+ with name 'door' 'front',
+ description
+ "Cinnamon brown in color it appears to be a very solid
+ and hefty door.",
+ short_name [;
+ if (location == livingroom)
+ print "door to the outside";
+ else
+ print "door to your house";
+ return true;
+ ],
+ found_in livingroom sidewalk,
+ door_dir [;
+ if (location == sidewalk)
+ return w_to;
+ else
+ return e_to;
+ ],
+ door_to [;
+ if (location == sidewalk)
+ return livingroom;
+ else
+ return sidewalk;
+ ],
+ has scenery door openable;
\ No newline at end of file
--- /dev/null
+! Copyright (C) 2019 Jason Self <j@jxself.org>
+!
+! This file is free software: you may copy, redistribute 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 file 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 file. If not, see https://gnu.org/licenses/
+
+Object neighborkitchen "Kitchen"
+ with description
+ "You are in your neighbor's kitchen. A large kitchen,
+ though by now everything has been removed. Only the
+ kitchen island and fireplace remain in stark contrast to
+ the bare kitchen. The livingroom is to the east. The door
+ to the back yard is to the west.",
+ e_to neighborlivingroom,
+ w_to backyard,
+ has light;
+
+Object island "kitchen island" neighborkitchen
+ with name 'kitchen' 'island' 'table' 'wood' 'wooden' 'top' 'wood',
+ description
+ "It has metal legs firmly embedded into the floor, and a
+ wooden top. Strangely, all of the drawers have been
+ removed.",
+ before [;
+ Take, Pull, Push, PushDir, Turn:
+ print_ret "The kitchen island is firmly planted in the floor.";
+ ],
+ has scenery supporter enterable;
+
+Object brick "brick" neighborkitchen
+ with name 'brick' 'bricks' 'mortar',
+ description
+ "You find nothing special about the bricks that make up
+ the fireplace.",
+ has scenery;
+
+Object fireplace "fireplace" neighborkitchen
+ with name 'fireplace' 'fire' 'place' 'mouth',
+ description [;
+ print
+ "A stain is splayed against the brick fireplace,
+ making its curved mouth appear like a black, toothless
+ scream. A confection of ashes occupy the fireplace";
+ if (poker in self)
+ print
+ ", and a poker hangs out which looks like it
+ could make an effective weapon";
+ print ".";
+ new_line;
+ ],
+ has scenery container transparent open;
+
+Object poker "poker" fireplace
+ with name 'poker',
+ description
+ "This poker may have once been used to expedite the
+ flame's envelopment, as well as the house's many stories
+ and secrets.",
+ before [;
+ Take, Pull, Push, PushDir, Remove:
+ give poker ~concealed;
+ if (poker hasnt visited) {
+ score = score + 1;
+ give poker visited;
+ }
+ if (player in neighborlivingroom) {
+ if (bluebutton has on)
+ machine.shoot();
+ }
+ ],
+ has concealed;
+
+Object ashes "ashes" fireplace
+ with name 'ash' 'ashes',
+ description "It looks like a pile of ash.",
+ before [;
+ Take, Pull, Push, PushDir:
+ print_ret "The ashes are so fine they fall between your fingers.";
+ ],
+ has concealed pluralname;
+
+Object stain "stain" fireplace
+ with name 'stain',
+ has scenery;
+
+Object mouth "mouth of the fireplace" fireplace
+ with name 'mouth',
+ has scenery;
+
+Object letter "letter" island
+ with name 'letter',
+ description
+ "The letter reads: ~Thank you for evaluating this
+ prototype of the Frobozz Magic Teleporter. Please refer to
+ the enclosed manual to learn how to program destinations
+ in to your teleporter. Pressing the red button recalls the
+ last-used destination and teleports you there. Pressing
+ the blue button engages Defense Mode, which instantly
+ whisks intruders away. Use it to provide defense for any
+ location! Please send feedback about this prototype to
+ your local FrobozzCo International sales person. Warning:
+ Side effects can include disorientation, loss of memory,
+ lightheadedness, loss of appetite, nausea, vomiting,
+ weakness, and death.~";
\ No newline at end of file
--- /dev/null
+! Copyright (C) 2019 Jason Self <j@jxself.org>
+!
+! This file is free software: you may copy, redistribute 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 file 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 file. If not, see https://gnu.org/licenses/
+
+Object neighborlivingroom "Neighbor's Livingroom"
+ with description
+ "You are in your neighbor's livingroom. It seems that no
+ one has lived here in a long time, even though you saw
+ your neighbor here last week. All of the furniture has
+ been removed and the air smells stale. A large bay window
+ enclosed by sheer cobalt blue curtains allowing light to
+ come through. There's another room to the north. A door is
+ to the east.^^A machine as tall as you sits in the center
+ of their livingroom. It consists of three transparent
+ spheres joined together containing machinery. A barrel
+ with a small aperture comes out of the farthest sphere,
+ pointing down and to the wall. The entire thing rests on
+ a shiny metal platform allowing it to rotate and tilt with
+ ease.",
+ w_to neighborkitchen,
+ e_to neighbordoor,
+ n_to grandlivingroom,
+ before [;
+ Go:
+ if (bluebutton has on && poker notin machine) {
+ machine.shoot();
+ rtrue;
+ }
+ ],
+ has light;
+
+Object neighborwindow "window" neighborlivingroom
+ with name 'large' 'bay' 'window' 'windows',
+ description "A large bay window enclosed by sheer cobalt blue
+ curtains allowing light to come through.",
+ before [;
+ Go:
+ print_ret "The window is not something you can go through.";
+ Open, Close:
+ print_ret "This isn't the type of window that can be
+ opened or closed.";
+ ],
+ has scenery;
+
+Object neighborcurtains "curtains" neighborlivingroom
+ with name 'cobalt' 'blue' 'curtain' 'curtains',
+ description
+ "Cobalt blue in color, the curtains have been decorated with
+ intricate embroidery.",
+ before [;
+ Take, Pull, Push, PushDir:
+ print_ret "Don't you think they look nice where they are?";
+ ],
+ has scenery openable pluralname;
+
+Object embroidery "embroidery" neighborlivingroom
+ with name 'embroidery' 'pattern' 'patterns',
+ has scenery;
+
+Object redbutton "red button" neighborlivingroom
+ with name 'red' 'red button' 'button' 'buttons',
+ before [;
+ Push:
+ if (bluebutton has on && poker notin machine) {
+ print
+ "You reach for the red button, but not in
+ time...^ ";
+ machine.shoot();
+ rtrue;
+ }
+ if (poker in machine)
+ print_ret
+ "You press the red button but it's futile because
+ the machine's shorted out.";
+ else {
+ print
+ "You push the red button. The machine makes clunky
+ noises as machinery moves inside. A loud humming
+ begins to emanate from it. It comes to life, spins
+ around on its base, aims, and quickly fires a
+ series of three bright blue sparks at you. You
+ hear a small explosive sound as they impact your
+ chest. You feel a little disoriented as it
+ teleports you away.^";
+ PlayerTo(campsite);
+ rtrue;
+ }
+ ],
+ has scenery;
+
+Object bluebutton "blue button" neighborlivingroom
+ with name 'blue' 'blue button' 'button' 'buttons',
+ before [;
+ Push:
+ if (bluebutton has on) {
+ if (poker notin machine) {
+ print
+ "You reach for the blue button, but not
+ in time...^ ";
+ machine.shoot();
+ rtrue;
+ }
+ else {
+ give bluebutton ~on;
+ print_ret "You push the blue button. The machine
+ sounds like it powers down.";
+ }
+ }
+ else {
+ give bluebutton on;
+ if (poker notin machine) {
+ machine.shoot();
+ rtrue;
+ }
+ print_ret "You push the blue button.";
+ }
+ ],
+ has scenery on;
+
+Object machine "machine" neighborlivingroom
+ with name 'machine' 'machinery' 'sphere' 'spheres' 'platform' 'barrel'
+ 'aperture' 'metal platform' 'shiny metal platform' 'shiny platform'
+ 'shiny' 'metal',
+ description
+ "It consists of three transparent spheres joined together
+ containing machinery. A barrel with a small aperture comes
+ out of the farthest sphere, pointing down and to the wall.
+ The entire thing rests on a shiny metal platform allowing
+ it to rotate and tilt with ease. There is a blue button
+ and a red button.",
+ time_left,
+ before [ weapon;
+ Attack:
+ if (noun == self)
+ weapon = second;
+ else
+ weapon = noun;
+ if (weapon ~= poker) {
+ print "That wasn't helpful.^";
+ if (bluebutton has on)
+ self.shoot();
+ rtrue;
+ }
+ self.shortout();
+ return true;
+ Receive:
+ if (noun == poker) {
+ self.shortout();
+ return true;
+ }
+ if (bluebutton has on)
+ self.shoot();
+ rtrue;
+ ],
+ time_out [;
+ if (poker in self)
+ StopTimer(machine);
+ else
+ if (bluebutton has on)
+ self.shoot();
+ ],
+ daemon [;
+ if (poker in player)
+ rfalse;
+ if (player in parent(self) && poker notin machine)
+ self.shoot();
+ ],
+ shoot [ destination;
+ destination = random(3);
+ print
+ "^A loud humming begins to emanate from the machine.
+ It comes to life, spins around on its base, aims, and
+ quickly fires a series of three bright blue sparks at
+ you. You hear a small explosive sound as they impact
+ your chest. You feel a little disoriented as it
+ teleports you away.^";
+ if (destination == 1)
+ PlayerTo(kitchen);
+ if (destination == 2)
+ PlayerTo(livingroom);
+ if (destination == 3)
+ PlayerTo(bedroom);
+ ],
+ shortout [;
+ if (machine hasnt visited) {
+ score = score + 1;
+ give machine visited;
+ }
+ move poker to self;
+ print "You put the poker into ", (the) self,
+ ". Sparks
+ fly wildly in every direction as it shorts out.^";
+ ],
+ has scenery container open;
\ No newline at end of file
--- /dev/null
+! Copyright (C) 2019 Jason Self <j@jxself.org>
+!
+! This file is free software: you may copy, redistribute 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 file 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 file. If not, see https://gnu.org/licenses/
+
+Object Sidewalk "Sidewalk"
+ with description
+ "You are standing on the sidewalk of a very busy street
+ in front of your house. It is barely cloudy and already
+ hot this morning. Smaller branches of trees are in motion
+ from the light wind, which helps to provide some relief
+ from the heat. Your home is to the west. Your neighbor's
+ home is to the northwest.",
+ n_to
+ "Some inconsiderate person parked their car on the
+ sidewalk which blocks your path. It might be nice to call
+ Parking Enforcement so they can get a ticket for creating
+ an obstruction but you don't have a phone.",
+ s_to
+ "You arrive at an intersection. Lots of traffic drives
+ past at high speed creating a small breeze that makes your
+ shirt ripple. You decide it is better to not risk being
+ run over and go back.",
+ e_to
+ "As you start to step out into the street a car quickly
+ zooms by at high speed. You jump back to avoid becoming
+ part of the pavement.",
+ se_to
+ "As you start to step out into the street a car honks
+ impatiently for you to get out of the way. You go back to
+ your old spot.",
+ ne_to
+ "The street is very busy. Surely you'd be hit by a moving
+ vehicle if you went there.",
+ nw_to frontporch,
+ sw_to "A rock wall blocks your path.",
+ w_to frontdoor,
+ has light;
+
+Object sun "sun" sidewalk
+ with name 'sun',
+ found_in sidewalk backyard,
+ has scenery;
+
+Object clouds "clouds" sidewalk
+ with name 'cloud' 'clouds',
+ found_in sidewalk backyard,
+ has scenery;
+
+Object tree "tree" sidewalk
+ with name 'tree' 'trees' 'evergreen' 'evergreen' 'leaves' 'leaf',
+ found_in sidewalk backyard campsite,
+ description
+ "Standing strong, majestic and tall, as if reaching for
+ the sky. There are countless numbers of sun-drenched
+ leaves, each a deep green.",
+ before [;
+ Climb:
+ print_ret
+ "Despite your best efforts you're not able to.
+ There's no branch low enough to grab.";
+ Taste:
+ print_ret "It tastes like wood.";
+ Touch:
+ print_ret "The trunk of the free feels rough to the touch.";
+ Take, Pull, Push, PushDir, Turn:
+ print_ret
+ "The tree is firmly anchored into the ground by a
+ healthy root system. It's not going anywhere.";
+ Drink:
+ print_ret "The tree is not a liquid.";
+ Blow:
+ print_ret "You huff and you puff but nothing happens.";
+ Burn:
+ print_ret "Only you can prevent forest fires.";
+ Buy:
+ print_ret "The tree is not for sale.";
+ JumpOver:
+ print_ret
+ "Since when did you gain the ability to jump over
+ trees in a single bound?";
+ ],
+ has scenery;
+
+Object street "street" sidewalk
+ with name 'street' 'road',
+ description "It's your typical street.",
+ has scenery;
+
+Object rockwall "rock wall" sidewalk
+ with name 'rock' 'wall' 'stone' 'rock' 'boulder' 'stonework'
+ 'cobblestone' 'mortar' 'stones' 'rocks' 'walls',
+ description
+ "Made up of assorted stones of various sizes and shapes,
+ with a healthy dose of mortar between them to fill and
+ seal the irregular gaps between them, it serves as a wall
+ separating your property from someone else's.",
+ has scenery;
+
+Object car "car" sidewalk
+ with name 'car' 'vehicle' 'automobile',
+ description
+ "It's a white two-door car. The license plate holder says
+ FrobozzCo International.",
+ before [;
+ Unlock:
+ print_ret "The car is locked, and there is apparently no key.";
+ Open:
+ print_ret "The car is locked, and there is apparently no key.";
+ Climb:
+ print_ret
+ "I'm not sure that FrobozzCo International would
+ appreciate people climbing on one of their cars.";
+ Take:
+ print_ret
+ "I doubt that FrobozzCo International would
+ appreciate someone taking one of their cars.";
+ Pull, Push, PushDir, Turn:
+ print_ret (The) self, " is too heavy for that.";
+ ],
+ has scenery;
+
+Object licenseplateframe "license plate holder" sidewalk
+ with name 'license' 'plate' 'frame' 'holder',
+ description "It says FrobozzCo International in white letters
+ on a black frame.",
+ Before [;
+ Take, Pull, Push, PushDir, Turn:
+ print_ret (The) self, " is firmly attached to the car.";
+ ],
+ has scenery;
+++ /dev/null
-! Copyright (C) 2019 Jason Self <j@jxself.org>
-!
-! This file is free software: you may copy, redistribute gand/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 file 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 file. If not, see https://gnu.org/licenses/
-
-Object kitchen "Kitchen"
- with description
- "You are in the kitchen and in front of the window that
- looks out on to your neighbor's back yard. It's a small
- simple kitchen, but adequately lit by natural light from
- the outside. The walls are painted a buttery yellow and
- broken up by celery green curtains on the windows, which
- move slightly in a small breeze you cannot feel. The floor
- is highly polished, having received a fresh coat
- yesterday afternoon. The livingroom is to the east.",
- n_to window,
- cant_go "You walk smack into one of those buttery yellow
- walls I described.",
- e_to livingroom,
- before [;
- Go:
- if (chair in player) {
- print_ret "The chair is too awkward to do that while
- you're carrying it.";
- }
- ],
- has light;
-
-Object wall "wall" kitchen
- with name 'yellow' 'wall' 'walls',
- description [;
- if (location == kitchen)
- print
- "The walls are painted a buttery yellow and
- broken up by celery green curtains on the windows,
- which move slightly in a small breeze you cannot
- feel.^";
- else
- print "You see nothing special about the walls.^";
- ],
- found_in kitchen livingroom bedroom neighborkitchen neighborlivingroom,
- has scenery;
-
-Object chair "chair" kitchen
- with name 'chair' 'backrest' 'seat',
- description
- "It seems to be your average kitchen chair: Four chrome
- legs and a backrest with a yellow seat that matches the
- walls.",
- before [;
- Take:
- move chair to player;
- print_ret "As awkward as it is, you take the chair.";
- ],
- has scenery supporter enterable;
-
-Object table "table" kitchen
- with name 'table' 'kitchen table' 'formica',
- description
- "It looks like something right out of the 1950s: Green
- formica and chrome legs.",
- before [;
- Take, Pull, Push, PushDir, Turn:
- print_ret (The) self, " is too heavy for that.";
- ],
- has scenery supporter enterable;
-
-Object newspaper "newspaper" table
- with name 'newspaper' 'paper',
- description
- "It's your favorite newspaper: U.S. News And Grue Report,
- which also airs on TV.";
-
-Object window "window" kitchen
- with name 'window' 'windows',
- description
- "Framed by celery green curtains it seems almost large
- enough to climb through.",
- short_name [;
- if (location == kitchen)
- print "window to your neighbor's back yard";
- else
- print "window to your kitchen";
- return true;
- ],
- found_in kitchen backyard,
- door_dir [;
- if (location == kitchen)
- return n_to;
- else
- return s_to;
- ],
- door_to [;
- if (location == kitchen)
- return backyard;
- else
- return kitchen;
- ],
- before [;
- Search:
- if (curtains has open) {
- print "You see your neighbor's backyard.^";
- return true;
- }
- else {
- print "The curtains are closed, and you can't see
- through them.^";
- return true;
- }
- Open:
- if (window hasnt visited) {
- score = score + 1;
- give window visited;
- }
- Climb:
- if (window hasnt visited) {
- score = score + 1;
- give window visited;
- }
- PlayerTo(backyard);
- ],
- has scenery door openable;
-
-Object curtains "curtains" kitchen
- with name 'curtain' 'curtains' 'green curtains' 'celery' 'celery green'
- 'celery green curtains',
- description "Celery green in color, you see nothing special
- about the curtains.",
- before [;
- Take, Pull, Push, PushDir:
- print_ret "Don't you think they look nice where they are?";
- ],
- has scenery open openable pluralname;
-
-Object legs "legs" kitchen
- with name 'leg' 'legs',
- found_in kitchen neighborkitchen,
- has scenery;
\ No newline at end of file
+++ /dev/null
-! Copyright (C) 2019 Jason Self <j@jxself.org>
-!
-! This file is free software: you may copy, redistribute gand/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 file 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 file. If not, see https://gnu.org/licenses/
-
-Object livingroom "Livingroom"
- with description
- "You are in a modestly furnished livingroom. Pictures
- hang from the walls. You can hear the sound of vehicles
- driving by outside. The kitchen is to the west. The front
- door is to the east. Your bedroom is to the south.",
- before [;
- Listen:
- print "You can hear the sound of vehicles driving by outside.^";
- return true;
- ],
- n_to
- "Since when did you get the ability to walk through
- walls? The kitchen is to the west. The front door is to
- the east. Your bedroom is to the south.",
- s_to bedroom,
- w_to kitchen,
- e_to frontdoor,
- has light;
-
-Object picture "pictures" livingroom
- with description
- "The pictures in the room consist of a landscape painting
- showing a strangely geometric mountain, another of a
- still life painting of a table laid out with a feast and
- the third is a portrait of an unknown man. He has a full
- beard, is wearing a black robe and no shoes. On his head
- is a large 1970s-era hard disk platter.",
- name 'picture' 'photo' 'photos' 'frame' 'frames' 'pictures'
- 'image' 'images',
- Before [;
- Take:
- print_ret
- "They look so nice, perhaps it's better to leave them
- where they are.";
- ],
- has scenery pluralname;
-
-Object man "man" livingroom
- with description "It's a painting of Richard Stallman dressed as
- St IGNUcius.",
- name 'man' 'disk' 'hard' 'platter' 'robe' 'rms' 'Richard' 'Stallman'
- 'robe' 'black' 'image' 'images',
- Before [;
- Take:
- print_ret
- "The painting looks so nice, perhaps it's better to
- leave it where it is.";
- ],
- has scenery;
-
-Object television "television" livingroom
- with name 'television' 'tv',
- description
- "It's big, gray, and one of those old-fashioned CRT
- models. It looks very heavy.",
- watch_count 0,
- before [;
- Listen, Examine:
- if (television has on) {
- self.watch_count = self.watch_count + 1;
- switch (self.watch_count) {
- 1:
- print
- "It's big, gray, and one of those
- old-fashioned CRT models. It looks very
- heavy.^The TV is currently switched on. Your
- favorite news program is on: U.S. News And
- Grue Report.^The news anchor is saying ~In
- other news, authorities continue to
- investigate the missing persons case.~^";
- score = score + 1;
- return true;
- 2:
- print
- "The news anchor continues by saying ~We're
- told the that number of missing people is now
- up to as many as 5.~^";
- score = score + 1;
- return true;
- 3:
- print
- "The news anchor concludes their coverage by
- saying ~We'll have more as the story continues
- to develop.~^";
- score = score + 1;
- return true;
- default:
- print
- "It's big, gray, and one of those
- old-fashioned CRT models. It looks very
- heavy.^The TV is currently switched on. Your
- favorite news program is on: U.S. News And
- Grue Report.^";
- return true;
- }
- }
- ;
- Take, Pull, Push, PushDir:
- print_ret (The) self, " is too heavy for that.";
- ],
- after [;
- SwitchOn:
- print
- "The television comes to life. Your favorite news
- program is on: U.S. News And Grue Report.^";
- if (television hasnt visited) {
- score = score + 1;
- give television visited;
- }
- return true;
- ],
- has static switchable;
-
-Object couch "couch" livingroom
- with name 'couch' 'sofa',
- description
- "It looks like a throwback from the 1970s but has held up
- very well.",
- before [;
- Take, Pull, Push, PushDir:
- print_ret (The) self, " is too heavy for that.";
- ],
- after [;
- Enter:
- print
- "The couch makes a nauseating, high-pitched groan as
- your weight is added.^";
- return true;
- Exit, GetOff:
- print "The couch makes a muted snort as your weight is removed.^";
- return true;
- ],
- has static supporter enterable;
-
-Object frontdoor "front door" livingroom
- with name 'door' 'front',
- description
- "Cinnamon brown in color it appears to be a very solid
- and hefty door.",
- short_name [;
- if (location == livingroom)
- print "door to the outside";
- else
- print "door to your house";
- return true;
- ],
- found_in livingroom sidewalk,
- door_dir [;
- if (location == sidewalk)
- return w_to;
- else
- return e_to;
- ],
- door_to [;
- if (location == sidewalk)
- return livingroom;
- else
- return sidewalk;
- ],
- has scenery door openable;
\ No newline at end of file
+++ /dev/null
-! Copyright (C) 2019 Jason Self <j@jxself.org>
-!
-! This file is free software: you may copy, redistribute gand/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 file 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 file. If not, see https://gnu.org/licenses/
-
-Object neighborkitchen "Kitchen"
- with description
- "You are in your neighbor's kitchen. A large kitchen,
- though by now everything has been removed. Only the
- kitchen island and fireplace remain in stark contrast to
- the bare kitchen. The livingroom is to the east. The door
- to the back yard is to the west.",
- e_to neighborlivingroom,
- w_to backyard,
- has light;
-
-Object island "kitchen island" neighborkitchen
- with name 'kitchen' 'island' 'table' 'wood' 'wooden' 'top' 'wood',
- description
- "It has metal legs firmly embedded into the floor, and a
- wooden top. Strangely, all of the drawers have been
- removed.",
- before [;
- Take, Pull, Push, PushDir, Turn:
- print_ret "The kitchen island is firmly planted in the floor.";
- ],
- has scenery supporter enterable;
-
-Object brick "brick" neighborkitchen
- with name 'brick' 'bricks' 'mortar',
- description
- "You find nothing special about the bricks that make up
- the fireplace.",
- has scenery;
-
-Object fireplace "fireplace" neighborkitchen
- with name 'fireplace' 'fire' 'place' 'mouth',
- description [;
- print
- "A stain is splayed against the brick fireplace,
- making its curved mouth appear like a black, toothless
- scream. A confection of ashes occupy the fireplace";
- if (poker in self)
- print
- ", and a poker hangs out which looks like it
- could make an effective weapon";
- print ".";
- new_line;
- ],
- has scenery container transparent open;
-
-Object poker "poker" fireplace
- with name 'poker',
- description
- "This poker may have once been used to expedite the
- flame's envelopment, as well as the house's many stories
- and secrets.",
- before [;
- Take, Pull, Push, PushDir, Remove:
- give poker ~concealed;
- if (player in neighborlivingroom) {
- if (bluebutton has on)
- machine.shoot();
- }
- ],
- has concealed;
-
-Object ashes "ashes" fireplace
- with name 'ash' 'ashes',
- description "It looks like a pile of ash.",
- before [;
- Take, Pull, Push, PushDir:
- print_ret "The ashes are so fine they fall between your fingers.";
- ],
- has concealed pluralname;
-
-Object stain "stain" fireplace
- with name 'stain',
- has scenery;
-
-Object mouth "mouth of the fireplace" fireplace
- with name 'mouth',
- has scenery;
-
-Object letter "letter" island
- with name 'letter',
- description
- "The letter reads: ~Thank you for evaluating this
- prototype of the Frobozz Magic Teleporter. Please refer to
- the enclosed manual to learn how to program destinations
- in to your teleporter. Pressing the red button recalls the
- last-used destination and teleports you there. Pressing
- the blue button engages Defense Mode, which instantly
- whisks intruders away. Use it to provide defense for any
- location! Please send feedback about this prototype to
- your local FrobozzCo International sales person. Warning:
- Side effects can include disorientation, loss of memory,
- lightheadedness, loss of appetite, nausea, vomiting,
- weakness, and death.~";
\ No newline at end of file
+++ /dev/null
-! Copyright (C) 2019 Jason Self <j@jxself.org>
-!
-! This file is free software: you may copy, redistribute gand/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 file 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 file. If not, see https://gnu.org/licenses/
-
-Object neighborlivingroom "Neighbor's Livingroom"
- with description
- "You are in your neighor's livingroom. It seems that no
- one has lived here in a long time, even though you saw
- your neighbor here last week. All of the furniture has
- been removed and the air smells stale. There's another
- room to the north. A door is to the east.^^A machine as
- tall as you sits in the center of their livingroom. It
- consists of three transparent spheres joined together
- containing machinery. A barrel with a small aperture comes
- out of the farthest sphere, pointing down and to the wall.
- The entire thing rests on a shiny metal platform allowing
- it to rotate and tilt with ease.",
- w_to neighborkitchen,
- e_to neighbordoor,
- n_to grandlivingroom,
- before [;
- Go:
- if (bluebutton has on && poker notin machine) {
- machine.shoot();
- rtrue;
- }
- ],
- has light;
-
-Object redbutton "red button" neighborlivingroom
- with name 'red' 'red button' 'button' 'buttons',
- before [;
- Push:
- if (bluebutton has on && poker notin machine) {
- print
- "You reach for the red button, but not in
- time...^ ";
- machine.shoot();
- rtrue;
- }
- if (poker in machine)
- print_ret
- "You press the red button but it's futile because
- the machine's shorted out.";
- else {
- print
- "You push the red button. The machine makes clunky
- noises as machinery moves inside. A loud humming
- begins to emanate from it. It comes to life, spins
- around on its base, aims, and quickly fires a
- series of three bright blue sparks at you. You
- hear a small explosive sound as they impact your
- chest. You feel a little disoriented as it
- teleports you away.^";
- PlayerTo(campsite);
- rtrue;
- }
- ],
- has scenery;
-
-Object bluebutton "blue button" neighborlivingroom
- with name 'blue' 'blue button' 'button' 'buttons',
- before [;
- Push:
- if (bluebutton has on) {
- if (poker notin machine) {
- print
- "You reach for the blue button, but not
- in time...^ ";
- machine.shoot();
- rtrue;
- }
- else {
- give bluebutton ~on;
- print_ret "You push the blue button.";
- }
- }
- else {
- give bluebutton on;
- if (poker notin machine) {
- machine.shoot();
- rtrue;
- }
- print_ret "You push the blue button.";
- }
- ],
- has scenery on;
-
-Object machine "machine" neighborlivingroom
- with name 'machine' 'machinery' 'sphere' 'spheres' 'platform' 'barrel'
- 'aperture' 'metal platform' 'shiny metal platform' 'shiny platform'
- 'shiny' 'metal',
- description
- "It consists of three transparent spheres joined together
- containing machinery. A barrel with a small aperture comes
- out of the farthest sphere, pointing down and to the wall.
- The entire thing rests on a shiny metal platform allowing
- it to rotate and tilt with ease. There is a blue button
- and a red button.",
- time_left,
- before [ weapon;
- Attack:
- if (noun == self)
- weapon = second;
- else
- weapon = noun;
- if (weapon ~= poker) {
- print "That wasn't helpful.^";
- if (bluebutton has on)
- self.shoot();
- rtrue;
- }
- self.shortout();
- return true;
- Receive:
- if (noun == poker) {
- self.shortout();
- return true;
- }
- if (bluebutton has on)
- self.shoot();
- rtrue;
- ],
- time_out [;
- if (poker in self)
- StopTimer(machine);
- else
- if (bluebutton has on)
- self.shoot();
- ],
- daemon [;
- if (poker in player)
- rfalse;
- if (player in parent(self) && poker notin machine)
- self.shoot();
- ],
- shoot [ destination;
- destination = random(3);
- print
- "^A loud humming begins to emanate from the machine.
- It comes to life, spins around on its base, aims, and
- quickly fires a series of three bright blue sparks at
- you. You hear a small explosive sound as they impact
- your chest. You feel a little disoriented as it
- teleports you away.^";
- if (destination == 1)
- PlayerTo(kitchen);
- if (destination == 2)
- PlayerTo(livingroom);
- if (destination == 3)
- PlayerTo(bedroom);
- ],
- shortout [;
- if (machine hasnt visited) {
- score = score + 1;
- give machine visited;
- }
- move poker to self;
- print "You put the poker into ", (the) self,
- ". Sparks
- fly wildly in every direction as it shorts out.^";
- ],
- has scenery container open;
\ No newline at end of file
--- /dev/null
+! Copyright (C) 2019, 2020 Jason Self <j@jxself.org>
+!
+! This file is free software: you may copy, redistribute 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 file 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 file. If not, see https://gnu.org/licenses/
+
+Object campsite "Campsite"
+ with description
+ "You are at an old campsite set among some low-lying
+ hills. Healthy, dark green grass carpets the ground
+ except around an old fire pit.",
+ w_to westofcampsite,
+ before [;
+ Listen:
+ print_ret
+ "You hear chanting from right behind you but looking
+ around you see no one is there.^";
+ ],
+ u_to
+ "That's the sky. Not sure how you plan to get there but
+ maybe you know something I don't.",
+ d_to "That's the ground. Since when are you able to move through it?",
+ has light;
+
+Object firepit "firepit" campsite
+ with name 'fire' 'firepit' 'pit',
+ description
+ "The fire pit is small and nothing more than an
+ indentation in the ground. It reeks of old campfires.",
+ has scenery;
+
+Object log "log" campsite
+ with name 'log' 'wood',
+ description
+ "It's the remnant of a tree uprooted by a storm. Someone
+ has taken the time to shape it flat and square for
+ sitting. Slightly recessed into the ground, it's a
+ combination of cinnamon and caramel brown. Deep scratches
+ and ominous stains mar the surface.",
+ has supporter enterable static;
+
+Object diary "diary"
+ with name 'diary' 'book',
+ description
+ "The diary is old and worn. The pages are tattered and
+ yellowed, and most of the writing has faded due to
+ exposure to the elements over the years. In reviewing the
+ pages you can make out a single passage: ~The humming...
+ the humming... I can't make it stop.~",
+ has ;
+
+Object lantern "copper lantern" log
+ with name 'lantern' 'copper',
+ description
+ "This is an exceptionally beautiful oil lamp. About
+ eleven inches high, with a base of about 5 inches or so in
+ diameter and a large, brass-closed hook at the top. The
+ glass in the lamp has a Fresnel type of design, which is
+ used to distribute light widely. The words ~Manufactured
+ By The Frobozz Magic Lantern Company~ are engraved in the
+ base.^",
+ after [;
+ SwitchOn:
+ give lantern light;
+ SwitchOff:
+ give lantern ~light;
+ ],
+ has switchable;
\ No newline at end of file
--- /dev/null
+! Copyright (C) 2019 Jason Self <j@jxself.org>
+!
+! This file is free software: you may copy, redistribute 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 file 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 file. If not, see https://gnu.org/licenses/
+
+Object westofcampsite "West Of Campsite"
+ with description
+ "You're in an area of flat grassland just east of a
+ forest. There is a circle of dead grass near recent
+ livestock tracks in some mud. A flock of birds fly
+ overhead and disappear into the forest.",
+ before [;
+ Listen:
+ print_ret
+ "You hear strange whispers but looking around see no
+ one.^";
+ ],
+ e_to campsite,
+ cant_go
+ "That area has not yet been implemented in this game.",
+ has light;
\ No newline at end of file
+++ /dev/null
-! Copyright (C) 2019 Jason Self <j@jxself.org>
-!
-! This file is free software: you may copy, redistribute gand/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 file 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 file. If not, see https://gnu.org/licenses/
-
-Object Sidewalk "Sidewalk"
- with description
- "You are standing on the sidewalk of a very busy street
- in front of your house. It is barely cloudy and already
- hot this morning. Smaller branches of trees are in motion
- from the light wind, which helps to provide some relief
- from the heat. Your home is to the west. Your neighbor's
- home is to the northwest.",
- n_to
- "Some inconsiderate person parked their car on the
- sidewalk which blocks your path. It might be nice to call
- Parking Enforcement so they can get a ticket for creating
- an obstruction but you don't have a phone.",
- s_to
- "You arrive at an intersection. Lots of traffic drives
- past at high speed creating a small breeze that makes your
- shirt ripple. You decide it is better to not risk being
- run over and go back.",
- e_to
- "As you start to step out into the street a car quickly
- zooms by at high speed. You jump back to avoid becoming
- part of the pavement.",
- se_to
- "As you start to step out into the street a car honks
- impatiently for you to get out of the way. You go back to
- your old spot.",
- ne_to
- "The street is very busy. Surely you'd be hit by a moving
- vehicle if you went there.",
- nw_to frontporch,
- sw_to "A rock wall blocks your path.",
- w_to frontdoor,
- has light;
-
-Object sun "sun" sidewalk
- with name 'sun',
- found_in sidewalk backyard,
- has scenery;
-
-Object clouds "clouds" sidewalk
- with name 'cloud' 'clouds',
- found_in sidewalk backyard,
- has scenery;
-
-Object tree "tree" sidewalk
- with name 'tree' 'trees' 'evergreen' 'evergreen' 'leaves' 'leaf',
- found_in sidewalk backyard,
- description
- "Standing strong, majestic and tall, as if reaching for
- the sky. There are countless numbers of sundrenched
- leaves, each a deep green.",
- before [;
- Climb:
- print_ret
- "Despite your best efforts you're not able to.
- There's no branch low enough to grab.";
- Taste:
- print_ret "It tastes like wood.";
- Touch:
- print_ret "The trunk of the free feels rough to the touch.";
- Take, Pull, Push, PushDir, Turn:
- print_ret
- "The tree is firmly anchored into the ground by a
- healthy root system. It's not going anywhere.";
- Drink:
- print_ret "The tree is not a liquid.";
- Blow:
- print_ret "You huff and you puff but nothing happens.";
- Burn:
- print_ret "Only you can prevent forest fires.";
- Buy:
- print_ret "The tree is not for sale.";
- JumpOver:
- print_ret
- "Since when did you gain the ability to jump over
- trees in a single bound?";
- ],
- has scenery;
-
-Object street "street" sidewalk
- with name 'street' 'road',
- description "It's your typical street.",
- has scenery;
-
-Object rockwall "rock wall" sidewalk
- with name 'rock' 'wall' 'stone' 'rock' 'boulder' 'stonework'
- 'cobblestone' 'mortar' 'stones' 'rocks' 'walls',
- description
- "Made up of assorted stones of various sizes and shapes,
- with a healthy dose of mortar between them to fill and
- seal the irregular gaps between them, it serves as a wall
- separating your property from someone else's.",
- has scenery;
-
-Object car "car" sidewalk
- with name 'car' 'vehicle' 'automobile',
- description
- "It's a white two-door car. The license plate holder says
- FrobozzCo International.",
- before [;
- Unlock:
- print_ret "The car is locked, and there is aparently no key.";
- Open:
- print_ret "The car is locked, and there is aparently no key.";
- Climb:
- print_ret
- "I'm not sure that FrobozzCo International would
- appreciate people climbing on one of their cars.";
- Take:
- print_ret
- "I doubt that FrobozzCo International would
- appreciate someone taking one of their cars.";
- Pull, Push, PushDir, Turn:
- print_ret (The) self, " is too heavy for that.";
- ],
- has scenery;
-
-Object licenseplateframe "license plate holder" sidewalk
- with name 'license' 'plate' 'frame' 'holder',
- description "It says FrobozzCo International in white letters
- on a black frame.",
- Before [;
- Take, Pull, Push, PushDir, Turn:
- print_ret (The) self, " is firmly attached to the car.";
- ],
- has scenery;