From: Jason Self Date: Tue, 6 Apr 2021 03:51:05 +0000 (-0700) Subject: Update to serial 210405 X-Git-Tag: r1~11 X-Git-Url: https://jxself.org/git/?p=snowed-in.git;a=commitdiff_plain;h=351fcad42efbe4b60fee09fe598c6061890f7c8d Update to serial 210405 --- diff --git a/src/snowed-in.inf b/src/snowed-in.inf index ebe3aca..5f5f707 100644 --- a/src/snowed-in.inf +++ b/src/snowed-in.inf @@ -12,6 +12,7 @@ ! ! 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; Constant DEATH_MENTION_UNDO; Constant Story "Snowed In"; Constant Headline @@ -32,7 +33,7 @@ Constant Headline Include "parser"; Include "verblib"; Release 0; -Serial "210401"; +Serial "210405"; Object mainroom "Main Room" with description @@ -40,11 +41,13 @@ 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. 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, e_to office, + w_to kitchenette, has light; Object sofa "sofa" mainroom @@ -70,6 +73,49 @@ Object coffeetable "coffee table" mainroom ], has scenery supporter enterable; +Object lantern "copper lantern" coffeetable + with name 'lantern' 'copper' 'lamp', + description + "This is an exceptionally beautiful 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.", + time_left, + time_out [; + if (lantern has on) { + lantern_fuel_left = 0; + give lantern ~on; + give lantern ~light; + StopDaemon(lantern); + print_ret + "The lantern has run out of fuel and is now + off."; + } + ], + before [; + SwitchOn: + if (lantern_fuel_left > 0) { + give lantern light; + StartTimer(lantern, lantern_fuel_left); + } + else { + print_ret + "The lantern is out of fuel and cannot be turned + on."; + } + 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 @@ -99,7 +145,7 @@ Object television "flat-screen TV" mainroom 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 @@ -114,20 +160,43 @@ Object lightsocket "light socket" mainroom 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; } ], has scenery container transparent open; Object lightbulb "light bulb" lightsocket with name 'light' 'bulb' 'lightbulb', + before [; + SwitchOn: + if (lightbulb in lightsocket) { + give mainroom light; + give office light; + give kitchenette light; + give bedroom light; + give eastofcabin light; + } + 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; + ], + has switchable on; Object office "Office" with description @@ -137,6 +206,7 @@ Object office "Office" drywall and insulation cover the floor. The desk has a bullet hole through the middle.", w_to mainroom, + e_to window, has light; Object desk "solid oak desk" office @@ -204,6 +274,190 @@ Object computer "computer" desk ], 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', + 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 is a large emblem with the letters + ~CE~ in purple.", + before [; + Wear: + if (snowshoes in player && snowshoes has worn) { + print_ret "The snowsuit can't fit over the snowshoes."; + } + Remove: + if (snowshoes in player && snowshoes has worn) { + print_ret "The snowsuit can't be taken off over the snowshoes."; + } + ], + 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 && snowshoes hasnt worn) { + deadflag = 3; + } + ], + has pluralname clothing; + +Object eastofcabin "East Of Cabin" + with description [; + print "It's dark outside. "; + 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 (snowshoes in player && snowshoes has worn) { + print + "The snowshoes are doing their job by making sure + you don't sink into the snow."; + } + ], + w_to window, + has light; + [ Initialise; Location = mainroom; thedark.description = @@ -219,11 +473,23 @@ Object computer "computer" desk 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); +]; + +[ DeathMessage; + if (deadflag == 3) + 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."; ]; [ InScope; if (location == thedark && real_location == mainroom) { PlaceInScope(lightsocket); + PlaceInScope(lightbulb); } return false; ]; @@ -239,7 +505,7 @@ Object grue "grue" thedark if (location ~= thedark) { self.turns_active = 0; StopDaemon(self); - rtrue; + return true; } switch (++(self.turns_active)) { 1: @@ -247,7 +513,7 @@ Object grue "grue" thedark 2: "^You hear the clink of razor-sharp claws nearby."; 3: - deadflag = true; + deadflag = 1; "^Your last memory is of the slavering fangs of the horrible Grue as it claims you for a meal."; } @@ -294,4 +560,19 @@ Verb 'Hint' * -> 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