Fix a bug when leaving truck spot; also add plural words to truck object
[snowed-in.git] / src / snowed-in.inf
index 5f5f70787ab6dc49a241b1982d324219e9e4582f..012d7d6c5f8877752dd18292ca96d55081ce7b2a 100644 (file)
 ! You should have received a copy of the GNU Affero General Public
 ! License along with this file. If not, see https://gnu.org/licenses/
 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 
@@ -21,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
+    ^Copyright (C) 2021 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 
@@ -33,7 +37,7 @@ Constant Headline
 Include "parser";
 Include "verblib";
 Release 0;
-Serial "210405";
+Serial "210823";
 
 Object  mainroom "Main Room"
   with  description 
@@ -46,10 +50,45 @@ Object  mainroom "Main Room"
             kitchenette can be found to the west. There's a doorway 
             in the south wall leading outside.",
         n_to bedroom,
+        s_to frontdoor,
         e_to office,
         w_to kitchenette,
   has   light;
 
+Object  frontdoor "front door" mainroom
+  with  name 'door' 'front',
+        description 
+            "The wooden door is made of thick oak wood with the shape 
+            of a bear claw engraved in it.",
+        short_name [;
+            if (location == mainroom)
+                print "door to the outside";
+            else
+                print "door to the cabin";
+            return true;
+        ],
+        found_in mainroom southofcabin,
+        door_dir [;
+            if (location == mainroom)
+                return s_to;
+            else
+                return n_to;
+        ],
+        door_to [;
+            if (location == mainroom)
+                return southofcabin;
+            else
+                return mainroom;
+        ],
+  has   scenery door openable;
+
+Object  bearclaw "bear claw" mainroom
+  with  name 'bear' 'claw',
+  with  description 
+            "It's in the shape of a thin, sharp claw with three jagged 
+            points at the top of it.",
+  has   scenery;
+
 Object  sofa "sofa" mainroom
   with  name 'sofa' 'couch',
   with  description 
@@ -64,8 +103,8 @@ Object  sofa "sofa" mainroom
 Object  coffeetable "coffee table" mainroom
   with  name 'coffee' 'table',
   with  description 
-            "The old coffee table looks as if it's had quite a bit 
-            of use. There are burn marks covering it and the paint is 
+            "The old coffee table looks as if it's had quite a bit of 
+            use. There are burn marks covering it and the paint is 
             worn off in most places.",
         before [;
           Take, Pull, Push, PushDir, Turn:
@@ -76,9 +115,11 @@ Object  coffeetable "coffee table" mainroom
 Object  lantern "copper lantern" coffeetable
   with  name 'lantern' 'copper' 'lamp',
         description 
-            "This is an exceptionally beautiful lamp. 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. The 
+            diameter and a large, brass-closed hook at the top. A 
+            rainbow of unique colors run through the copper. The 
             glass in the lamp has a fresnel type of design, which is 
             used to distribute light widely.",
         time_left,
@@ -89,8 +130,9 @@ Object  lantern "copper lantern" coffeetable
                 give lantern ~light;
                 StopDaemon(lantern);
                 print_ret 
-                    "The lantern has run out of fuel and is now 
-                    off.";
+                    "Suddenly, the lantern's flame begins to flicker 
+                    violently within its glass prison and then 
+                    extinguishes itself.";
             }
         ],
         before [;
@@ -101,8 +143,8 @@ Object  lantern "copper lantern" coffeetable
             }
             else {
                 print_ret 
-                    "The lantern is out of fuel and cannot be turned 
-                    on.";
+                    "You snap the switch a few times, but nothing 
+                    happens.";
             }
           SwitchOff:
             StopTimer(lantern);
@@ -119,8 +161,8 @@ Object  lantern "copper lantern" coffeetable
 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 
-            been 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.";
@@ -156,9 +198,9 @@ Object  lightsocket "light socket" mainroom
                 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.";
+                    " 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 && light has on) {
                 give mainroom light;
@@ -166,6 +208,7 @@ Object  lightsocket "light socket" mainroom
                 give kitchenette light;
                 give bedroom light;
                 give eastofcabin light;
+                give southofcabin light;
             }
         ],
   has   scenery container transparent open;
@@ -175,11 +218,19 @@ Object  lightbulb "light bulb" lightsocket
         before [;
           SwitchOn:
             if (lightbulb in lightsocket) {
-                give mainroom light;
-                give office light;
-                give kitchenette light;
-                give bedroom light;
-                give eastofcabin light;
+                if (cabin_has_electricity == 1) {
+                    give mainroom light;
+                    give office light;
+                    give kitchenette light;
+                    give bedroom light;
+                    give eastofcabin light;
+                    give southofcabin light;
+                }
+                else {
+                    print_ret 
+                        "You flip the switch a few times, but nothing 
+                        happens.";
+                }
             }
             else {
                 print_ret 
@@ -195,6 +246,7 @@ Object  lightbulb "light bulb" lightsocket
             give kitchenette ~light;
             give bedroom ~light;
             give eastofcabin ~light;
+            give southofcabin ~light;
         ],
   has   switchable on;
 
@@ -205,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;
@@ -389,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 
@@ -407,15 +468,79 @@ Object  snowsuit "snowsuit" suitcase
             if (snowshoes in player && snowshoes has worn) {
                 print_ret "The snowsuit can't fit over the snowshoes.";
             }
-          Remove:
+          Disrobe, Remove:
             if (snowshoes in player && snowshoes has worn) {
                 print_ret "The snowsuit can't be taken off over the snowshoes.";
             }
         ],
+        daemon [;
+            if (location ~= mainroom && location ~= office && location ~=
+            kitchenette && location ~= bedroom && location ~= thedark &&
+            snowsuit hasnt worn) {
+                body_temperature = --body_temperature;
+            }
+            if (location == mainroom || location == office || location ==
+            kitchenette || location == bedroom || snowsuit has worn && body_temperature
+            < 20) {
+                body_temperature = ++body_temperature;
+            }
+            if (body_temperature == 0) {
+                deadflag = 4;
+            }
+            if (body_temperature <= 5)
+                print_ret 
+                    "You're shivering uncontrollably, and it's hard 
+                    to move. You feel very exhausted and drowsy. It's 
+                    all you can do to keep from falling over.";
+            if (body_temperature > 5 && location ~= mainroom && location
+            ~= office && location ~= kitchenette && location ~= bedroom
+            && location ~= thedark && snowsuit hasnt worn) {
+                switch (body_temperature) {
+                  19:
+                    "The feeling of cold overwhelms you. Surely the cold will get to 
+                    you before anything else does. Right?";
+                  18:
+                    "You can feel yourself getting colder and colder.";
+                  17:
+                    "You can see your own breath freezing in the air, forming little 
+                    clouds.";
+                  16:
+                    "You shiver in the cold.";
+                  15:
+                    "You continue to shiver in the cold.";
+                  14:
+                    "Your hands grow numb from the cold.";
+                  13:
+                    "You continue shivering in order to keep warm.";
+                  12:
+                    "Your shivering grows worse as your body becomes colder by the
+                    minute.";
+                  11:
+                    "Your teeth begin to chatter as you desperately try to warm 
+                    yourself up.";
+                  10:
+                    "Your shivering intensifies as your body begins to freeze over 
+                    from the cold.";
+                  9:
+                    "Your fingers become stiff and you feel sharp pains all over your
+                    body.";
+                  8:
+                    "The cold has gotten to a point where it is too much for you. You 
+                    begin to shiver uncontrollably.";
+                  7:
+                    "Your eyesight begins to fade and you can't even feel yourself 
+                    shivering anymore.";
+                  6:
+                    "You can feel your body shutting down from the cold as you slowly 
+                    begin to lose consciousness.";
+                }
+            }
+        ],
   has   clothing;
 
 Object  snowshoes "snowshoes" bedroom
-  with  name 'snowshoe' 'snowshoes' 'snow' 'boot' 'boots' 'shoe' 'shoes' 'metal' 'frame',
+  with  name 'snowshoe' 'snowshoes' 'snow' 'boot' 'boots' 'shoe' 'shoes'
+        'metal' 'frame',
   with  description 
             "They're light blue in color and have a thick, hard 
             rubber bottom that's attached to a metal frame that keeps 
@@ -428,34 +553,293 @@ Object  snowshoes "snowshoes" bedroom
                 knees.";
         ],
         daemon [;
-            if (location ~= mainroom && location ~= office && location ~= kitchenette
-            && location ~= bedroom && snowshoes hasnt worn) {
+            if (location ~= mainroom && location ~= office && location ~=
+            kitchenette && location ~= bedroom && location ~= thedark &&
+            location ~= eastofcabin && snowshoes hasnt worn) {
                 deadflag = 3;
             }
         ],
   has   pluralname clothing;
 
-Object  eastofcabin "East Of Cabin"
+Object  southofcabin "South Of Cabin"
   with  description [;
-            print "It's dark outside. ";
-            if (lightbulb has on) {
+            print 
+                "The wind is howling, and there's snow flying 
+                everywhere.^";
+            if (snowsuit hasnt worn)
                 print 
-                    "The light from inside the cabin only penetrates 
-                    a few feet from the building. ";
+                    "^It's really cold and you're not dressed for 
+                    this weather.^";
+            if (frontdoor has open) {
+                check_for_cabin_lighting();
             }
-            else
-                if (lantern in player && lantern has on) {
-                    print 
-                        "The lantern provides the only source of 
-                        light. ";
-                }
-            if (snowshoes in player && snowshoes has worn) {
-                print 
-                    "The snowshoes are doing their job by making sure 
-                    you don't sink into the snow.";
+        ],
+        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;
+
+[ print_forest_description;
+    if (location ~= thedark) {
+        switch (forest_location) {
+          1:
+            print_ret 
+                "It's not getting any easier to move in this 
+                blizzard. You can barely see five feet ahead of you. 
+                The wind is really strong. You try to remember the 
+                survival tips you've read on the internet, but 
+                frankly, you don't remember most of them right now. 
+                You just want this awful nightmare to end.";
+          2:
+            print_ret 
+                "You can't see anything through the blizzard. The 
+                snow is drifting and piling up around you, making 
+                movement almost impossible. You can't see your hand 
+                in front of your face. The wind is bitterly cold. The 
+                situation is looking very grim. Your life feels as if 
+                it is slowly ebbing away in the relentless grip of 
+                the snowstorm.";
+          3:
+            print_ret 
+                "You plow through the heavy snowfall. You're cold, 
+                tired, miserable, and desperate to get out of this 
+                mess. The wind is howling like a banshee. You can 
+                barely keep moving. You wish you had the powers of a 
+                superhero right now. You try to persevere. 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.";
+          4:
+            print_ret 
+                "You trudge through the snow. The wind is howling 
+                louder than ever. It's almost as if you're lost in a 
+                white, endless void.";
+          5:
+            print_ret 
+                "You continue your way through the snowy white void, 
+                what with the snow piling up around you. This is 
+                getting really old, really fast. It's hard to tell 
+                which direction is which. You wonder if you might be 
+                going in circles and end up wandering around forever, 
+                never finding your way out of this white void.";
+          6:
+            print_ret 
+                "You wander around in the impenetrable white void. 
+                The snowfall is still as heavy as ever. You're unsure 
+                of which way to go. There's no left, right, backward 
+                or forward. There's nothing but endless, unchanging 
+                whiteness. You could be wandering aimlessly in any 
+                direction right now and you wouldn't know the 
+                difference.";
+          7:
+            PlayerTo(truckspot);
+          8:
+            print_ret 
+                "You keep wandering through endless whiteness. It 
+                feels like you've been wandering for hours, but 
+                that's probably just your perception of time slipping 
+                away. You keep trudging through the heavy snowfall, 
+                not knowing if you're even going in any particular 
+                direction anymore. You hope that, as long as you keep 
+                moving, you'll eventually find a way out of this 
+                frozen wasteland.";
+          9:
+            print_ret 
+                "You wander around through the white void. There's 
+                nothing here but you, the snowfall, and the fierce 
+                wind howling through this frozen landscape. You start 
+                to get disoriented. 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.";
+          10:
+            print_ret 
+                "This isn't just a place of cold and ice - it's 
+                other-worldly. You're in danger here. You have to 
+                keep moving. Sleep is not an option when you're in a 
+                place like this. You have to escape. Somehow, you 
+                know that staying here is a death sentence.";
+          11:
+            print_ret 
+                "The wind starts starts to pick up as it begins 
+                howling louder than ever. You look around the barren 
+                landscape, but there's nothing nearby except snow. 
+                You don't even see any trees to break the force of 
+                this terrible wind. The snowfall is still as heavy as 
+                ever. You can barely see where you are going.";
+          12:
+            print_ret 
+                "The snowfall is still as heavy as ever. The wind is 
+                howling louder than ever. You can barely see where 
+                you are going. This place is so desolate and barren. 
+                As you continue trudging through the snow, you wonder 
+                if you're actually moving in the right direction.";
+          13:
+            print_ret 
+                "The endless snowfall makes it difficult to see where 
+                you're going. It feels like you're lost in a maze of 
+                snow without a map. 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 think you're going mad.";
+          14:
+            print_ret 
+                "You continue walking. You're not sure that you're 
+                going in the right direction but you can't stop now. 
+                You must find a way out of this frozen wasteland. 
+                There has to be something here besides endless snow. 
+                You won't give up. You can't give up.";
+          15:
+            print_ret 
+                "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. You keep walking. The wind is really 
+                picking up now and the snowfall is getting heavier.";
+          16:
+            print_ret 
+                "The wind is now a shrieking banshee, freezing and 
+                relentless, as it throws the snow into your face, 
+                blinding you. Every step you take is hard-fought. The 
+                whole world is white. You can't see anything, but you 
+                must keep going. There is no choice. You have no idea 
+                where you are.";
+          17:
+            print_ret 
+                "The blizzard rages, but you continue to press on. 
+                It's hard to walk against the brutal winds. Every 
+                step is an effort. You can barely see anything, and 
+                you stumble forward. You're determined to live but 
+                the blizzard doesn't seem to care whether you live or 
+                die. It just keeps howling and shrieking.";
+          18:
+            print_ret 
+                "The wind screams in your ears and you can't see 
+                anything. It's as if you're in a sea of white. You 
+                trudge on and try to keep your spirits up and not let 
+                the snowstorm get to you. The wind knocks you down on 
+                your hands and knees. You get back up, but you're 
+                slipping and sliding all over the place.";
+          19:
+            print_ret 
+                "Can't go back. Can't go forward. You can't even see 
+                where you are. The snowstorm has made it impossible 
+                to see anything more than a few feet in front of you. 
+                Nothing makes any sense and you feel like you're 
+                starting to go in circles.";
+          20:
+            print_ret 
+                "You hope you're going the right way. You can't let 
+                the snowstorm get the best of you. You have to keep 
+                going. As you walk you try to keep your mind occupied 
+                with anything other than the storm. You really have 
+                no idea how far you've come or in what direction.";
+          21:
+            print_ret 
+                "You keep walking and walking. You can't tell where 
+                the white sky and white ground begin and end. You 
+                don't even know if you're walking in a circle or not. 
+                The snowfall is so thick that you can barely see your 
+                hand if you hold it right in front of your face.";
+          22:
+            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. ";
+    }
+    else
+        if (lantern in player && lantern has on) {
+            print 
+                "The lantern provides the only source of 
+                light. ";
+        }
+    if (location has light)
+        print 
+            "The snow stings your face and you can barely see three feet in 
+            front of you. ";
+    if (snowshoes in player && snowshoes has worn) {
+        print 
+            "The snowshoes are doing their job by making sure 
+            you don't sink into the snow.^";
+    }
+];
+
+Object  eastofcabin "East Of Cabin"
+  with  description [;
+            print "It's dark outside. ";
+            check_for_cabin_lighting();
         ],
         w_to window,
+        s_to southofcabin,
+  has   light;
+
+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 
+            direction.",
+        s_to southofcabin,
   has   light;
 
 [ Initialise;
@@ -475,15 +859,31 @@ Object  eastofcabin "East Of Cabin"
         not dressed for this weather.^";
     StartDaemon(lantern);
     StartDaemon(snowshoes);
+    StartDaemon(snowsuit);
+    StartDaemon(grue);
 ];
 
 [ DeathMessage;
     if (deadflag == 3)
+        print "You sink into the deep snow and are unable to move.";
+    if (deadflag == 4)
         print 
-            "You sink into the deep snow and are unable to move. 
-            It's only a matter of time until your light source dies and the grue 
-            comes. Or until you freeze to death. Or both. I wonder if the grue 
-            likes a popsicle.";
+            "Finally, you succumb to the cold. Your mind goes blank as 
+            you slip away into the endless darkness and the deep sleep 
+            of death.";
+];
+
+! Don't have 'take all' take the lightbulb in the mainroom of the 
+! cabin
+
+[ ChooseObjects obj code;
+    if (code < 2) {
+        if (obj has scenery)
+            return 2;
+        rfalse;
+    }
+    if (obj == lightbulb)
+        return 0;
 ];
 
 [ InScope;
@@ -497,26 +897,66 @@ Object  eastofcabin "East Of Cabin"
 Object  grue "grue" thedark
   with  article "the",
         name 'grue' 'monster',
-        each_turn [;
-            StartDaemon(self);
-        ],
-        turns_active,
+        grue_active_around_cabin,
+        grue_active_in_the_dark,
         daemon [;
-            if (location ~= thedark) {
-                self.turns_active = 0;
-                StopDaemon(self);
-                return true;
+            if (location == thedark) {
+                switch (++(self.grue_active_in_the_dark)) {
+                  1:
+                    "^You hear horrible gurgling sounds in the dark.";
+                  2:
+                    "^You hear the clink of razor-sharp claws nearby.";
+                  3:
+                    deadflag = 1;
+                    "^Your last memory is of the slavering fangs of the 
+                    horrible Grue as it claims you for a meal.";
+                }
             }
-            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 = 1;
-                "^Your last memory is of the slavering fangs of the 
-                horrible Grue as it claims you for a meal.";
+            if (location == mainroom || location == office || location ==
+            kitchenette || location == bedroom) {
+                switch (++(self.grue_active_around_cabin)) {
+                  1:
+                    "^You hear the wind howling outside, if it is the wind.";
+                  2:
+                    "^You hear horrible gurgling sounds outside.";
+                  3:
+                    "^The noise outside gets louder.";
+                  4:
+                    "^You hear the sound of shuffling feet outside.";
+                  5:
+                    "^You hear something sniffing around the cabin.";
+                  6:
+                    "^You hear a deep guttural sound from outside that sends a chill down your spine.";
+                  7:
+                    "^You hear something scratching on the cabin walls from outside.";
+                  8:
+                    "^You hear something howl outside. It's a chilling, mournful wail that sends a chill down your spine.";
+                  9:
+                    "^A thunderous CRACK can be heard coming from outside.";
+                  10:
+                    "^There's a sudden crashing sound as something is thrown against the cabin walls.";
+                  11:
+                    "^Something begins to beat against the walls of the cabin, as if trying to to break in. It makes a loud, thunderous noise.";
+                  12:
+                    "^The wind is howling and the walls are being beaten so hard it feels like the cabin is shaking.";
+                  13:
+                    "^Suddenly, there's ominous silence from outside the cabin.";
+                }
+            }
+            if (location == mainroom || location == office || location ==
+            kitchenette || location == bedroom && self.grue_active_around_cabin
+            == 15) {
+                print "^The lights flicker and suddenly go out.^";
+                cabin_has_electricity = 0;
+                give lightbulb ~on;
+                give mainroom ~light;
+                give office ~light;
+                give kitchenette ~light;
+                give bedroom ~light;
+                give eastofcabin ~light;
+                give southofcabin ~light;
             }
+            return true;
         ],
   has   scenery;