Update to serial 210401
authorJason Self <j@jxself.org>
Fri, 2 Apr 2021 04:03:56 +0000 (21:03 -0700)
committerJason Self <j@jxself.org>
Fri, 2 Apr 2021 04:03:56 +0000 (21:03 -0700)
src/snowed-in.inf

index cf58fbf08b1d8bdb574b9b830614eef14868985d..ebe3aca6e6a020c78f9198d245d35379509efefb 100644 (file)
@@ -32,7 +32,7 @@ Constant Headline
 Include "parser";
 Include "verblib";
 Release 0;
-Serial "210331";
+Serial "210401";
 
 Object  mainroom "Main Room"
   with  description 
@@ -40,9 +40,11 @@ Object  mainroom "Main Room"
             happened in here. There's a ripped up sofa and a broken 
             old coffee table in the middle of the room. A flat-screen 
             TV is mounted against the wall, with the screen dangling 
-            out. A bare light bulb hangs from the ceiling, but no other 
-            lights are on. There's a doorway in the south wall leading 
-            outside.",
+            out. Tis cabin has three other rooms. There's an office 
+            area with a desk and computer to the east. There's a 
+            bedroom to the north and a kitchenette to the west. 
+            There's a doorway in the south wall leading outside.",
+        e_to office,
   has   light;
 
 Object  sofa "sofa" mainroom
@@ -71,8 +73,8 @@ Object  coffeetable "coffee table" mainroom
 Object  television "flat-screen TV" mainroom
   with  name 'TV' 'television' 'flat' 'screen' 'flat-screen',
   with  description 
-            "The flat-screen TV looks fairly modern but it's broken 
-            in a fight and the screen is dangling out.",
+            "The flat-screen TV looks fairly modern but it's 
+            been broken in a fight and the screen is dangling out.",
         before [;
           Take, Pull, Push, PushDir, Turn:
             print_ret (The) self, " is firmly mounted to the wall.";
@@ -89,15 +91,124 @@ Object  television "flat-screen TV" mainroom
             }
             else {
                 print 
-                    "The television is broken and can't be turned 
-                    on.^";
+                    "The flat-screen TV is broken and can't be 
+                    turned on.^";
             }
             return true;
         ],
   has   scenery switchable;
 
+Object  lightsocket "light socket" mainroom
+  with  name 'light' 'socket' 'lightsocket',
+        before [;
+          Take, Pull, Push, PushDir, Turn:
+            print_ret 
+                "You don't have the tools to remove a light 
+                socket.";
+          Receive:
+            if (noun ~= lightbulb) {
+                print "Put ";
+                print (a) noun;
+                print_ret 
+                    " into the light socket? Maybe you should come with a
+                    warning label because you contain more than a trace
+                    amount of nut.";
+            }
+            if (noun == lightbulb) {
+                give mainroom light;
+                give office light;
+            }
+        ],
+  has   scenery container transparent open;
+
+Object  lightbulb "light bulb" lightsocket
+  with  name 'light' 'bulb' 'lightbulb',
+        after [;
+          Take, Pull, Push, PushDir, Turn:
+            give mainroom ~light;
+            give office ~light;
+        ];
+
+Object  office "Office"
+  with  description 
+            "There seems to have been quite a fight in here. The room 
+            is a wreck. Holes are in the walls and the windows are 
+            broken, letting in the cold air from outside. Chunks of 
+            drywall and insulation cover the floor. The desk has a 
+            bullet hole through the middle.",
+        w_to mainroom,
+  has   light;
+
+Object  desk "solid oak desk" office
+  with  name 'solid' 'oak' 'desk',
+  with  description 
+            "The desk is old and made of solid oak. The right side of 
+            it has been smashed and all of the drawers have been 
+            removed. A bullet hole goes straight through the middle of 
+            the desk.",
+        before [;
+          Take, Pull, Push, PushDir, Turn:
+            print_ret (The) self, " is too heavy for that.";
+        ],
+  has   scenery supporter enterable;
+
+Object  businesscard "business card" desk
+  with  name 'business' 'card',
+  with  description 
+            "The business card is white and has blacked edges. It 
+            bears the name ~Lasting Solutions~, a local data recovery 
+            company, in bold letters on the top. The company's 
+            website URL is printed in blue at the bottom.";
+
+Object  salesreceipt "sales receipt" desk
+  with  name 'sales' 'receipt',
+  with  description 
+            "The sales receipt is for $200, dated three years ago. 
+            It's printed on old tractor feed printer paper and bears 
+            the name ~Lasting Solutions~, a local data recovery 
+            company. A handwritten note is scrawled on the bottom: 
+            ~Start working on these hard drives soon.~";
+
+Object  computer "computer" desk
+  with  name 'computer' 'PC',
+  with  description 
+            "It's a heavy older model that appears to have been 
+            seriously damaged in a fight. It's clearly on its last 
+            legs but is perhaps still useful.",
+        before [;
+          Take, Pull, Push, PushDir, Turn:
+            print_ret (The) self, " is too heavy for that.";
+          SwitchOn:
+            if (computer hasnt visited) {
+                print 
+                    "The computer makes some concerning noises while 
+                    lights on the front also illuminate. The last 
+                    file is quickly displayed. ~If anyone else reads 
+                    this, you're in serious danger. I've been fighting 
+                    a ferocious grue for the last three days. I'm 
+                    almost out of supplies and can't last much 
+                    longer. I'm going to take the last of the supplies 
+                    and escape through the office window in a 
+                    last-ditch effort to get away and get back into 
+                    town. I hope I can make it.~ The computer then 
+                    makes a sickly sound and finally dies as some 
+                    smoke comes out of it.^";
+                give computer visited;
+            }
+            else {
+                print 
+                    "The display briefly flickers but nothing 
+                    else happens.^";
+            }
+            return true;
+        ],
+  has   switchable;
+
 [ Initialise;
     Location = mainroom;
+    thedark.description = 
+        "It is pitch black. You are likely to be eaten 
+        by a grue.";
     print 
         "You're trapped in a snowstorm while visiting the forest 
         during your vacation to a small rural town. This is the worst 
@@ -110,6 +221,45 @@ Object  television "flat-screen TV" mainroom
         not dressed for this weather.^";
 ];
 
+[ InScope;
+    if (location == thedark && real_location == mainroom) {
+        PlaceInScope(lightsocket);
+    }
+    return false;
+];
+
+Object  grue "grue" thedark
+  with  article "the",
+        name 'grue' 'monster',
+        each_turn [;
+            StartDaemon(self);
+        ],
+        turns_active,
+        daemon [;
+            if (location ~= thedark) {
+                self.turns_active = 0;
+                StopDaemon(self);
+                rtrue;
+            }
+            switch (++(self.turns_active)) {
+              1:
+                "^You hear horrible gurgling sounds in the dark.";
+              2:
+                "^You hear the clink of razor-sharp claws nearby.";
+              3:
+                deadflag = true;
+                "^Your last memory is of the slavering fangs of the 
+                horrible Grue as it claims you for a meal.";
+            }
+        ],
+  has   scenery;
+
+[ DarkToDark;
+    deadflag = 1;
+    "Oh, no! You have walked into the slavering fangs of a lurking 
+    grue!";
+];
+
 [ URL;
     print 
         "^If you need help try some of the commands from: