-! 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
!
! 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
^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, 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
Include "parser";
Include "verblib";
Release 0;
-Serial "210401";
+Serial "220205";
Object mainroom "Main Room"
with description
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. 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.",
+ out. This cabin has three other rooms. There's an office
+ area to the east, and a bedroom to the north. A
+ 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
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:
],
has scenery supporter enterable;
+Object lantern "copper lantern" coffeetable
+ with name 'lantern' 'copper' 'lamp',
+ description
+ "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
+ glass in the lamp has a fresnel type of design, which is
+ used to distribute light widely.",
+ time_left,
+ time_out [;
+ if (lantern has on) {
+ lantern_fuel_left = 0;
+ give lantern ~on;
+ give lantern ~light;
+ StopDaemon(lantern);
+ print_ret
+ "Suddenly, the lantern's flame begins to flicker
+ violently within its glass prison and then
+ extinguishes itself.";
+ }
+ ],
+ before [;
+ SwitchOn:
+ if (lantern_fuel_left > 0) {
+ give lantern light;
+ StartTimer(lantern, lantern_fuel_left);
+ }
+ else {
+ print_ret
+ "You snap the switch a few times, but nothing
+ happens.";
+ }
+ SwitchOff:
+ StopTimer(lantern);
+ give lantern ~light;
+ ],
+ daemon [;
+ if (lantern has on)
+ lantern_fuel_left = lantern.time_left;
+ if (lantern has on && lantern_fuel_left <= 5)
+ print_ret "The lantern's fuel runs low.";
+ ],
+ has switchable;
+
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.";
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;
}
has scenery switchable;
Object lightsocket "light socket" mainroom
- with name 'light' 'socket' 'lightsocket',
+ with name 'socket' 'lightsocket',
before [;
Take, Pull, Push, PushDir, Turn:
print_ret
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) {
+ if (noun == lightbulb && light has on) {
give mainroom light;
give office light;
+ give kitchenette light;
+ give bedroom light;
+ give eastofcabin light;
+ give southofcabin light;
}
],
has scenery container transparent open;
Object lightbulb "light bulb" lightsocket
with name 'light' 'bulb' 'lightbulb',
+ before [;
+ SwitchOn:
+ if (lightbulb in lightsocket) {
+ 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
+ "Turn on a lightbulb when it's not in the
+ socket? What a strange idea.";
+ }
+ ],
after [;
- Take, Pull, Push, PushDir, Turn:
+ Take, Pull, Push, PushDir, Turn, SwitchOff:
+ give lightbulb ~on;
give mainroom ~light;
give office ~light;
- ];
+ give kitchenette ~light;
+ give bedroom ~light;
+ give eastofcabin ~light;
+ give southofcabin ~light;
+ ],
+ has switchable on;
Object office "Office"
with description
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;
Object desk "solid oak desk" office
],
has switchable;
+Object drywall "drywall" office
+ with name 'drywall' 'dry' 'wall',
+ before [;
+ Take, Pull, Push, PushDir, Turn:
+ print_ret "Taking that would achieve little.";
+ ],
+ has scenery;
+
+Object insulation "insulation" office
+ with name 'insulation',
+ before [;
+ Take, Pull, Push, PushDir, Turn:
+ print_ret "Taking that would achieve little.";
+ ],
+ has scenery;
+
+Object bullethole "bullet hole" desk
+ with name 'bullet' 'hole' 'holes',
+ with description
+ "Looks to have come from something that's capable of
+ doing a lot of damage.",
+ found_in desk bedroom,
+ has scenery;
+
+Object window "window" office
+ with name 'window' 'windows',
+ description
+ "The window faces the east side of the cabin. It's broken,
+ letting in the cold air from outside.",
+ short_name [;
+ if (location == office)
+ print "window";
+ else
+ print "window into the cabin";
+ return true;
+ ],
+ found_in office eastofcabin,
+ door_dir [;
+ if (location == office)
+ return e_to;
+ else
+ return w_to;
+ ],
+ door_to [;
+ if (location == office)
+ return eastofcabin;
+ else
+ return office;
+ ],
+ before [;
+ Search:
+ print_ret "The window faces the east side of the cabin.";
+ Open, Close:
+ print_ret
+ "The window's broken so it's not clear how
+ you'd do that.";
+ ],
+ has scenery door openable open;
+
+Object kitchenette "Kitchenette"
+ with description
+ "The kitchenette is empty. A sink, you think, though it's
+ hard to tell what's a pipe and what's a faucet. A
+ refrigerator, standing open and empty. The door has been
+ ripped off. There's no indication as to where it
+ went. There's no food anywhere in here.",
+ e_to mainroom,
+ has light;
+
+Object refrigerator "refrigerator" kitchenette
+ with name 'fridge' 'refrigerator',
+ with description
+ "An old rusty refrigerator, standing open and empty. The
+ door has been ripped off. There's no indication as to
+ where it went.",
+ before [;
+ Take, Pull, Push, PushDir, Turn:
+ print_ret (The) self, " is too heavy for that.";
+ Open, Close:
+ print_ret (The) self, " door is missing.";
+ ],
+ has scenery enterable container openable open;
+
+Object sink "sink" kitchenette
+ with name 'sink' 'pipe' 'faucet',
+ with description
+ "A sink, you think, though it's hard to tell what's a
+ pipe and what's a faucet.",
+ after [;
+ SwitchOn:
+ print_ret
+ "Pipes from in the walls make a groaning sound,
+ almost like pain and despair. No water comes out.";
+ ],
+ has scenery container switchable;
+
+Object bedroom "Bedroom"
+ with description
+ "This bedroom is small and cramped, and looks like a
+ major fight happened as the exterior wall has bullet
+ holes. The bed is lying on the floor, torn to shreds. It
+ has no sheets, just a bare mattress.",
+ s_to mainroom,
+ has light;
+
+Object bed "bed" bedroom
+ with name 'bed' 'mattress',
+ with description "The mattress is bare and empty.",
+ before [;
+ Take, Pull, Push, PushDir, Turn:
+ print_ret (The) self, " is too heavy for that.";
+ ],
+ has scenery supporter;
+
+Object suitcase "suitcase" bedroom
+ 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
+ between silver and grey.",
+ has container open openable;
+
+Object snowsuit "snowsuit" suitcase
+ with name 'snowsuit' 'snow' 'suit',
+ with description
+ "The snowsuit is blue, decorated with white and purple
+ designs. On the chest are the letters ~CE~ in purple.",
+ before [;
+ Wear:
+ if (snowshoes in player && snowshoes has worn) {
+ print_ret "The snowsuit can't fit over the snowshoes.";
+ }
+ 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 description
+ "They're light blue in color and have a thick, hard
+ rubber bottom that's attached to a metal frame that keeps
+ you from sinking into the snow. They look to be warm and
+ comfortable.",
+ after [;
+ Wear:
+ print_ret (The) self,
+ " fit perfectly and go up to your
+ knees.";
+ ],
+ daemon [;
+ if (location ~= mainroom && location ~= office && location ~=
+ kitchenette && location ~= bedroom && location ~= thedark &&
+ location ~= eastofcabin && snowshoes hasnt worn) {
+ deadflag = 3;
+ }
+ ],
+ has pluralname clothing;
+
+Object southofcabin "South Of Cabin"
+ with description [;
+ 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();
+ ! }
+ 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. ";
+ }
+ 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.";
+ }
+ if (location == eastofcabin) {
+ print "^";
+ }
+];
+
+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;
Location = mainroom;
thedark.description =
the town. You finally manage to find an old cabin in the
woods and get inside but have no idea where you are. You're
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
+ "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;
if (location == thedark && real_location == mainroom) {
PlaceInScope(lightsocket);
+ PlaceInScope(lightbulb);
}
return false;
];
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);
- rtrue;
+ 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 = true;
- "^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;
* -> Help;
Verb 'xyzzy'
- * -> Xyzzy;
\ No newline at end of file
+ * -> Xyzzy;
+
+Verb 'crawl'
+ * 'through' / 'out' / 'via' noun -> Go;
+
+Verb 'escape'
+ * 'through' / 'out' / 'via' noun -> Go;
+
+Extend 'jump'
+ * 'through' / 'out' / 'via' noun -> Go;
+
+Extend 'climb'
+ * 'through' / 'out' / 'via' noun -> Go;
+
+Extend 'go'
+ * 'through' / 'out' / 'via' noun -> Go;
\ No newline at end of file