X-Git-Url: https://jxself.org/git/?a=blobdiff_plain;f=src%2Fsnowed-in.inf;h=c0b9f000f845bd373a258c54eb01405cddf1ad9a;hb=3a7e5fe18b87c2374bc7ea8ea96f58df26c94025;hp=ebe3aca6e6a020c78f9198d245d35379509efefb;hpb=8b233f8de5416ffcc414affa15b2ebf493b12639;p=snowed-in.git diff --git a/src/snowed-in.inf b/src/snowed-in.inf index ebe3aca..c0b9f00 100644 --- a/src/snowed-in.inf +++ b/src/snowed-in.inf @@ -12,6 +12,11 @@ ! ! 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 @@ -20,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 ^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 @@ -32,7 +37,7 @@ Constant Headline Include "parser"; Include "verblib"; Release 0; -Serial "210401"; +Serial "210823"; Object mainroom "Main Room" with description @@ -40,13 +45,50 @@ 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, + 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 @@ -61,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: @@ -70,11 +112,57 @@ 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 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."; @@ -99,7 +187,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 @@ -110,24 +198,57 @@ 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) { + 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 @@ -136,7 +257,17 @@ 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; Object desk "solid oak desk" office @@ -204,6 +335,512 @@ 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' '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 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."; + } + 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(); + } + ], + 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: + PlayerTo(forest); + ]; + +Object truck "blue and white pickup truck" truckspot + with name 'pickup' 'truck' 'door', + 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; Location = mainroom; thedark.description = @@ -219,11 +856,39 @@ 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); + 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; ]; @@ -231,26 +896,66 @@ Object computer "computer" desk 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; @@ -294,4 +999,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