Make this Release 1
[snowed-in.git] / src / snowed-in.inf
index 6929991915271571ab3a8b2dd6f100656702551b..7c79275979803f598d5b4bfb795657533bd36ccf 100644 (file)
@@ -1,4 +1,4 @@
-! Copyright (C) 2021 Jason Self <j@jxself.org>
+! Copyright (C) 2021, 2022 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
@@ -15,6 +15,8 @@
 Global lantern_fuel_left = 20;
 Global body_temperature = 20;
 Global cabin_has_electricity = 1;
+Global forest_location = 1;
+Constant NO_SCORE;
 Constant DEATH_MENTION_UNDO;
 Constant Story "Snowed In";
 Constant Headline 
@@ -23,7 +25,7 @@ Constant Headline
     ^Ongoing development: https://jxself.org/git/?p=snowed-in.git
     ^Send bugs and feedback by email to j@@64jxself.org.
     ^IFID DE9FA2E5-4EC7-4166-9218-E56EFA1DF40F
-    ^Copyright (C) 2021 Jason Self <j@@64jxself.org>
+    ^Copyright (C) 2021, 2022 Jason Self <j@@64jxself.org>
     ^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,9 +36,8 @@ Constant Headline
     If not, contact the place you got it from.^^";
 Include "parser";
 Include "verblib";
-Release 0;
-Serial "210617";
-Include "src/forest.inf";
+Release 1;
+Serial "220205";
 
 Object  mainroom "Main Room"
   with  description 
@@ -114,7 +115,8 @@ Object  coffeetable "coffee table" mainroom
 Object  lantern "copper lantern" coffeetable
   with  name 'lantern' 'copper' 'lamp',
         description 
-            "This is an exceptionally beautiful lantern. About eleven 
+            "This is an exceptionally beautiful lantern, made of 
+            fired copper, and polished until it shines. About eleven 
             inches high, with a base of about 5 inches or so in 
             diameter and a large, brass-closed hook at the top. A 
             rainbow of unique colors run through the copper. The 
@@ -171,7 +173,7 @@ Object  television "flat-screen TV" mainroom
                     comes to life in one last valiant attempt to be 
                     useful. Your favorite news program is on: U.S. 
                     News And Grue Report. The news anchor is giving a 
-                    warning of Grue sightings in the area of the 
+                    warning of grue sightings in the area of the 
                     forest before the television finally dies.^";
                 give television visited;
             }
@@ -255,6 +257,15 @@ Object  office "Office"
             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.",
+        before [;
+          Go:
+            if (noun == e_obj) {
+                if (snowshoes has worn)
+                    print_ret 
+                        "You can't fit through the window while 
+                        wearing the snow shoes.";
+            }
+        ],
         w_to mainroom,
         e_to window,
   has   light;
@@ -439,7 +450,7 @@ Object  bed "bed" bedroom
   has   scenery supporter;
 
 Object  suitcase "suitcase" bedroom
-  with  name 'suitcase',
+  with  name 'suitcase' 'case',
   with  description 
             "The suitcase is made of a light metallic material that 
             you can't quite make out. The color of it is somewhere 
@@ -450,8 +461,7 @@ Object  snowsuit "snowsuit" suitcase
   with  name 'snowsuit' 'snow' 'suit',
   with  description 
             "The snowsuit is blue, decorated with white and purple 
-            designs. On the chest is a large emblem with the letters 
-            ~CE~ in purple.",
+            designs. On the chest are the letters ~CE~ in purple.",
         before [;
           Wear:
             if (snowshoes in player && snowshoes has worn) {
@@ -544,33 +554,288 @@ Object  snowshoes "snowshoes" bedroom
         daemon [;
             if (location ~= mainroom && location ~= office && location ~=
             kitchenette && location ~= bedroom && location ~= thedark &&
-            snowshoes hasnt worn) {
+            location ~= eastofcabin && snowshoes hasnt worn) {
                 deadflag = 3;
             }
         ],
   has   pluralname clothing;
 
-Forest  southofcabin "South Of Cabin"
+Object  southofcabin "South Of Cabin"
   with  description [;
-            print "The wind is howling, and there's snow flying everywhere.";
+            print 
+                "The wind is howling, and there's snow flying 
+                everywhere. ";
             if (snowsuit hasnt worn)
                 print 
-                    " It's really cold and 
-                    you're not dressed for this weather.";
-            if (frontdoor has open) {
-                check_for_cabin_lighting();
+                    "It's really cold and you're not dressed for 
+                    this weather. ";
+            ! if (frontdoor has open) {
+            check_for_cabin_lighting();
+            ! }
+            if (cabin_has_electricity == 1) {
+                if (television has visited || computer has visited) {
+                    print "The grue set a trap for you to come outside. ";
+                }
+                print 
+                    "Your last memory is of a large log attached to ropes on 
+                    neighboring trees as it collides with your face.";
+                deadflag = 1;
             }
+            print "^";
         ],
         n_to frontdoor,
+        s_to forest,
         e_to eastofcabin,
         w_to westofcabin,
   has   light;
 
+Object  truckspot "Forest"
+  with  description 
+            "The blizzard is still going on. You don't think it's 
+            letting up anytime soon. There is a blue and white 
+            pickup truck here. It looks like it got stuck in the snow 
+            and is slowly being covered by it. The windows are iced 
+            up and you can't see inside.",
+        before [;
+          Go:
+            forest_location = forest_location++;
+            PlayerTo(forest, 1);
+        ];
+
+Object  truck "blue and white pickup truck" truckspot
+  with  name 'pickup' 'truck' 'door' 'doors',
+  with  description 
+            "The blue and white pickup truck looks old and battered. 
+            The paint has chipped and faded. The windows are iced up 
+            and you can't see inside.",
+        before [;
+          Take, Pull, Push, PushDir, Turn:
+            print_ret (The) self, " is too heavy for that.";
+          Search:
+            print_ret 
+                "The windows are iced up and you can't see 
+                inside.";
+          Enter, Open, GoIn:
+            print_ret (The) self, " is frozen shut.";
+        ],
+  has   scenery supporter enterable openable;
+
+Object  backpacklocation "Forest"
+  with  description 
+            "You keep walking and walking. The snowfall is still as 
+            heavy as ever. As you continue trudging through the snow, 
+            you wonder if you're actually moving in the right 
+            direction. You can't see anything through the blizzard. 
+            You wonder if you might be going in circles and end up 
+            wandering around forever, never finding your way out of 
+            this white void. You're unsure of which way to go. The 
+            snowfall is so thick that you can barely see your hand if 
+            you hold it right in front of your face. You have no idea 
+            how far you've come or in what direction.",
+        before [;
+          Go:
+            forest_location = forest_location++;
+            PlayerTo(forest, 1);
+        ];
+
+Object  backpack "backpack" backpacklocation
+  with  name 'back' 'pack' 'blood',
+  with  description 
+            "The backpack is of medium size, black, with three white 
+            stripes running vertically on the back. The middle stripe 
+            is broken up by a red line running down the center of it 
+            toward the bottom of the backpack. On the side are the 
+            letters ~CE~ in purple. The backpack is covered in blood, 
+            as if the owner met with an untimely demise.",
+  has   clothing container openable;
+
+Object  flashlight "flashlight" backpack
+  with  name 'flash' 'light' 'torch',
+        description 
+            "It looks like a cheap red plastic model, about eight 
+            inches long.",
+        before [;
+          SwitchOn:
+            give flashlight light;
+          SwitchOff:
+            give lantern ~light;
+        ],
+  has   switchable;
+
+[ print_forest_description;
+    if (location ~= thedark) {
+        switch (forest_location) {
+          1:
+            print_ret 
+                "You push on despite the bitter cold and the heavy 
+                snowfall as you come to a fork. There are two ways to 
+                go here, one is going up a hill to the south. The 
+                other way is continuing through the woods to the 
+                north.";
+          2:
+            print_ret 
+                "The wind is bitterly cold. You plow through the 
+                snowfall, which is still as heavy as ever. You can 
+                barely see where you are going, making it hard to 
+                tell which direction is which. Out of the corner of 
+                your eye, you spot a tall, shadowy figure lingering 
+                at the edge of your vision. When you turn to look at 
+                it directly, however, it disappears. You continue 
+                walking. The wind is howling louder than ever. The 
+                endless snowfall makes it difficult to see where 
+                you're going. You can't tell where the white sky and 
+                white ground begin and end.";
+          3:
+            PlayerTo(truckspot);
+          4:
+            print_ret 
+                "You trudge through the snow. The wind is really 
+                strong and howling like a banshee. You hear a horrible 
+                howl in the distance or is it the wind? Looking 
+                around you see nothing in this barren landscape but 
+                snow. You're not sure what to make of it, but you 
+                don't want to stick around to find out. The whole 
+                world is white. You can barely see five feet ahead of 
+                you. You hope you're going the right way. This place 
+                is so desolate and barren.";
+          5:
+            print_ret 
+                "You trudge through the snow. The wind is really 
+                strong and howling like a banshee. You hear a horrible 
+                howl in the distance or is it the wind? Looking 
+                around you see nothing in this barren landscape but 
+                snow. You're not sure what to make of it, but you 
+                don't want to stick around to find out. The whole 
+                world is white. You can barely see five feet ahead of 
+                you. You hope you're going the right way. This place 
+                is so desolate and barren. There's no left, right, 
+                backward or forward. There's nothing but endless, 
+                unchanging whiteness.";
+          6:
+            PlayerTo(backpacklocation);
+          7:
+            print_ret 
+                "It feels like you're lost in a maze of snow without 
+                a map. You keep trudging through the heavy snowfall, 
+                not knowing if you're even going in any particular 
+                direction anymore. The wind is really picking up now 
+                and the snowfall is getting heavier. You have to keep 
+                going. You can't let the snowstorm get the best of 
+                you. You can't give up. You must find a way out of 
+                this frozen wasteland. The snowstorm has made it 
+                impossible to see anything more than a few feet in 
+                front of you.";
+          8:
+            print_ret 
+                "The wind is now a shrieking banshee, freezing and 
+                relentless, as it throws the snow into your face, 
+                blinding you. It's hard to walk against the brutal 
+                winds. You can't see anything, but you must keep 
+                going. There is no choice. You continue your way 
+                through the snowy white void, what with the snow 
+                piling up around you. The wind screams in your ears 
+                and you can't see anything. Can't go back. Can't go 
+                forward. You can't even see where you are. You hope 
+                that, as long as you keep moving, you'll eventually 
+                find a way out of this frozen wasteland.";
+          9:
+            print_ret 
+                "The blizzard rages, but you continue to press on. 
+                There's nothing here but you, the snowfall, and the 
+                fierce wind howling through this frozen landscape. 
+                This isn't just a place of cold and ice - it's 
+                other-worldly. You trudge on and try to keep your 
+                spirits up and not let the snowstorm get to you. Every 
+                step is an effort. You wish you had the powers of a 
+                superhero right now. You can barely see where you are 
+                going. The wind knocks you down on your hands and 
+                knees. You get back up, but you're slipping and 
+                sliding all over the place.";
+          10:
+            print_ret 
+                "You wander around in the impenetrable white void. 
+                The wind is howling louder than ever. You try to 
+                persevere. You don't know if you're going in circles 
+                or what, but you start to feel that this frozen, 
+                lifeless landscape is sucking away your very life 
+                force. You can't see your hand in front of your face. 
+                You can barely keep moving. Every step you take is 
+                hard-fought. You just want this awful nightmare to 
+                end. You begin to feel sleepy but you're in danger 
+                here. You have to keep moving. Sleep is not an option 
+                when you're in a place like this.";
+          11:
+            print_ret 
+                "You try to remember the survival tips you've read 
+                on the internet, but frankly, you don't remember most 
+                of them right now. As you walk you try to keep your 
+                mind occupied with anything other than the storm. 
+                Nothing makes any sense and you feel like you're 
+                starting to go in circles. The wind starts starts to 
+                pick up as it begins howling louder than ever. You're 
+                determined to live but the blizzard doesn't seem to 
+                care whether you live or die. It just keeps howling 
+                and shrieking. It's not getting any easier to move in 
+                this blizzard.";
+          12:
+            print_ret 
+                "You keep walking. The snow is drifting and piling 
+                up around you, making movement almost impossible. You 
+                look around the barren landscape, but there's nothing 
+                nearby except snow. It's almost as if you're lost in 
+                a white, endless void. You start to get disoriented. 
+                You don't even know if you're walking in a circle or 
+                not. The situation is looking very grim. Your life 
+                feels as if it is slowly ebbing away in the 
+                relentless grip of the snowstorm. It feels like 
+                you've been wandering for hours, but that's probably 
+                just your perception of time slipping away.";
+          13:
+            print_ret 
+                "You can barely see anything, and you stumble 
+                forward. You could be wandering aimlessly in any 
+                direction right now and you wouldn't know the 
+                difference. It's as if you're in a sea of white. 
+                You're not sure that you're going in the right 
+                direction but you can't stop now. There has to be 
+                something here besides endless snow. You know that 
+                staying here is a death sentence. You have to escape. 
+                You're cold, tired, miserable, and desperate to get 
+                out of this mess. You have no idea where you are. You 
+                keep wandering through endless whiteness. You won't 
+                give up.";
+          14:
+            deadflag = 2;
+            print_ret 
+                "You see something in the distance but can't make it 
+                out. You walk toward it to find out that it's the 
+                hotel. You collapse in the lobby as the hotel staff 
+                rush over to you.";
+        }
+    }
+];
+
+Object  forest "Forest"
+  with  description [;
+            print_forest_description();
+        ],
+        before [;
+          Go:
+            if (location == thedark) {
+                DarkToDark();
+            }
+            if (noun == d_obj || noun == u_obj) {
+                print_ret "You can't go that way.";
+            }
+            forest_location = forest_location++;
+        ],
+        cant_go print_forest_description;
+
 [ check_for_cabin_lighting;
     if (lightbulb has on) {
         print 
-            "The light from inside the cabin only penetrates 
-            a few feet from the building. ";
+            "The light from inside the cabin only penetrates a few 
+            feet from the building. ";
     }
     else
         if (lantern in player && lantern has on) {
@@ -585,11 +850,14 @@ Forest  southofcabin "South Of Cabin"
     if (snowshoes in player && snowshoes has worn) {
         print 
             "The snowshoes are doing their job by making sure 
-            you don't sink into the snow.^";
+            you don't sink into the snow.";
+    }
+    if (location == eastofcabin) {
+        print "^";
     }
 ];
 
-Forest  eastofcabin "East Of Cabin"
+Object  eastofcabin "East Of Cabin"
   with  description [;
             print "It's dark outside. ";
             check_for_cabin_lighting();
@@ -598,7 +866,7 @@ Forest  eastofcabin "East Of Cabin"
         s_to southofcabin,
   has   light;
 
-Forest  westofcabin "Westh Of Cabin"
+Object  westofcabin "West Of Cabin"
   with  description 
             "The snow is falling so fast that you can barely see 
             anything. You can't even be sure you're going in the right 
@@ -710,7 +978,7 @@ Object  grue "grue" thedark
             if (location == mainroom || location == office || location ==
             kitchenette || location == bedroom && self.grue_active_around_cabin
             == 15) {
-                print "^The lights flicker and suddenly go out.";
+                print "^The lights flicker and suddenly go out.^";
                 cabin_has_electricity = 0;
                 give lightbulb ~on;
                 give mainroom ~light;