Update to serial 200329
authorJason Self <j@jxself.org>
Sun, 29 Mar 2020 17:37:32 +0000 (10:37 -0700)
committerJason Self <j@jxself.org>
Sun, 29 Mar 2020 17:37:32 +0000 (10:37 -0700)
22 files changed:
src/homeland.inf
src/objects/backyard.inf [deleted file]
src/objects/bedroom.inf [deleted file]
src/objects/campsite.inf [deleted file]
src/objects/frontporch.inf [deleted file]
src/objects/grandlivingroom.inf [deleted file]
src/objects/intro/backyard.inf [new file with mode: 0644]
src/objects/intro/bedroom.inf [new file with mode: 0644]
src/objects/intro/frontporch.inf [new file with mode: 0644]
src/objects/intro/grandlivingroom.inf [new file with mode: 0644]
src/objects/intro/kitchen.inf [new file with mode: 0644]
src/objects/intro/livingroom.inf [new file with mode: 0644]
src/objects/intro/neighborkitchen.inf [new file with mode: 0644]
src/objects/intro/neighborlivingroom.inf [new file with mode: 0644]
src/objects/intro/sidewalk.inf [new file with mode: 0644]
src/objects/kitchen.inf [deleted file]
src/objects/livingroom.inf [deleted file]
src/objects/neighborkitchen.inf [deleted file]
src/objects/neighborlivingroom.inf [deleted file]
src/objects/overworld/campsite.inf [new file with mode: 0644]
src/objects/overworld/westofcampsite.inf [new file with mode: 0644]
src/objects/sidewalk.inf [deleted file]

index 0defe48bc5e6d487a823f0b4d93b59b90436e647..bb97de1bbff158d75c75c62da11ded8c87fbd4c0 100644 (file)
@@ -1,6 +1,6 @@
-! 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.
 ! 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.
@@ -22,7 +22,7 @@ Constant Headline
     ^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
     ^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 
     ^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 
@@ -34,17 +34,19 @@ Constant Headline
 Include "parser";
 Include "verblib";
 Release 0;
 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)
 
 [ DeathMessage;
     if (deadflag == 3)
@@ -77,9 +79,9 @@ Include "src/objects/campsite.inf";
     print 
         "While reading the morning newspaper, there was another small 
         explosion from your neighbor's home. This time you were able 
     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.^^";
     print 
         "You crane your neck out the window to look, but all is 
         quiet. ~What's going on over there?~ you wonder.^^";
diff --git a/src/objects/backyard.inf b/src/objects/backyard.inf
deleted file mode 100644 (file)
index 9d10c70..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-! 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
diff --git a/src/objects/bedroom.inf b/src/objects/bedroom.inf
deleted file mode 100644 (file)
index 5d4a221..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-! 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
diff --git a/src/objects/campsite.inf b/src/objects/campsite.inf
deleted file mode 100644 (file)
index 039a7c1..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-! 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
diff --git a/src/objects/frontporch.inf b/src/objects/frontporch.inf
deleted file mode 100644 (file)
index f883ca5..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-! 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
diff --git a/src/objects/grandlivingroom.inf b/src/objects/grandlivingroom.inf
deleted file mode 100644 (file)
index 926f1b6..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-! 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
diff --git a/src/objects/intro/backyard.inf b/src/objects/intro/backyard.inf
new file mode 100644 (file)
index 0000000..4755b6d
--- /dev/null
@@ -0,0 +1,92 @@
+! 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
diff --git a/src/objects/intro/bedroom.inf b/src/objects/intro/bedroom.inf
new file mode 100644 (file)
index 0000000..7edec20
--- /dev/null
@@ -0,0 +1,70 @@
+! 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
diff --git a/src/objects/intro/frontporch.inf b/src/objects/intro/frontporch.inf
new file mode 100644 (file)
index 0000000..e85bef2
--- /dev/null
@@ -0,0 +1,55 @@
+! 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
diff --git a/src/objects/intro/grandlivingroom.inf b/src/objects/intro/grandlivingroom.inf
new file mode 100644 (file)
index 0000000..11b0071
--- /dev/null
@@ -0,0 +1,57 @@
+! 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
diff --git a/src/objects/intro/kitchen.inf b/src/objects/intro/kitchen.inf
new file mode 100644 (file)
index 0000000..51dfc7c
--- /dev/null
@@ -0,0 +1,160 @@
+! 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
diff --git a/src/objects/intro/livingroom.inf b/src/objects/intro/livingroom.inf
new file mode 100644 (file)
index 0000000..e7a473e
--- /dev/null
@@ -0,0 +1,176 @@
+! 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
diff --git a/src/objects/intro/neighborkitchen.inf b/src/objects/intro/neighborkitchen.inf
new file mode 100644 (file)
index 0000000..a81851d
--- /dev/null
@@ -0,0 +1,113 @@
+! 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
diff --git a/src/objects/intro/neighborlivingroom.inf b/src/objects/intro/neighborlivingroom.inf
new file mode 100644 (file)
index 0000000..601a6ea
--- /dev/null
@@ -0,0 +1,205 @@
+! 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
diff --git a/src/objects/intro/sidewalk.inf b/src/objects/intro/sidewalk.inf
new file mode 100644 (file)
index 0000000..3770904
--- /dev/null
@@ -0,0 +1,141 @@
+! 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;
diff --git a/src/objects/kitchen.inf b/src/objects/kitchen.inf
deleted file mode 100644 (file)
index 166d642..0000000
+++ /dev/null
@@ -1,148 +0,0 @@
-! 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
diff --git a/src/objects/livingroom.inf b/src/objects/livingroom.inf
deleted file mode 100644 (file)
index 9010e8a..0000000
+++ /dev/null
@@ -1,176 +0,0 @@
-! 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
diff --git a/src/objects/neighborkitchen.inf b/src/objects/neighborkitchen.inf
deleted file mode 100644 (file)
index 193d828..0000000
+++ /dev/null
@@ -1,109 +0,0 @@
-! 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
diff --git a/src/objects/neighborlivingroom.inf b/src/objects/neighborlivingroom.inf
deleted file mode 100644 (file)
index 1feaaae..0000000
+++ /dev/null
@@ -1,174 +0,0 @@
-! 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
diff --git a/src/objects/overworld/campsite.inf b/src/objects/overworld/campsite.inf
new file mode 100644 (file)
index 0000000..5c1a604
--- /dev/null
@@ -0,0 +1,77 @@
+! 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
diff --git a/src/objects/overworld/westofcampsite.inf b/src/objects/overworld/westofcampsite.inf
new file mode 100644 (file)
index 0000000..1cf633b
--- /dev/null
@@ -0,0 +1,31 @@
+! 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
diff --git a/src/objects/sidewalk.inf b/src/objects/sidewalk.inf
deleted file mode 100644 (file)
index c2d0136..0000000
+++ /dev/null
@@ -1,141 +0,0 @@
-! 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;