{ (set: $stamina to 10) (if: $crystal_charged > 0)[ (set: $crystal_charged to 1) ] (if: (history:) contains "start")[ (if: $door_open is 0)[ <p>Day slices through cracks in the siding.</p> ](else:)[ <p>The front door hangs ajar.</p> ] <p>The windows are frosted over.</p> (if: $cellar_open is 1)[ <p>A rush of cold air flows from [[the kitchen->Kitchen]].</p> ] ](else:)[ <p>Ma and Pop are dead; the farmhouse, bitter cold.</p> <p>You've got to finish what you started.</p> ] [[Go Up->Landing]]<br> (if: $cellar_open is 1)[ [[Go Down->Cellar]]<br> ](else:)[ [[Go Down->Cellar Door]]<br> ] (if: $seen_recipe is 1)[ (if: $door_open is 1)[ [[Go Out->Front Yard]]<br> ](else:)[ [[Go Out->Front Door]]<br> ] ] [[Go Through->Bedroom]] } <script> if ( A.foley.landing.playing() ) { A.foley.landing.stop(); } if ( !A.bg.wind.playing( A.wind ) ) { A.wind = A.bg.wind.play(); } var ratio = 1 - A.bg.wind.volume( A.wind ); A.bg.wind.fade( A.bg.wind.volume( A.wind ), 0.9, ratio * 2500, A.wind ); if ( A.bg.winter.volume( A.winter ) > 0 ) { var ratio = A.bg.winter.volume( A.winter ) / 1; A.bg.winter.fade( A.bg.winter.volume( A.winter ), 0, ratio * 2500, A.winter ); } else { A.bg.winter.stop( A.winter ); } if ( A.bg.woodstove.playing( A.woodstove ) ) { var ratio = A.bg.woodstove.volume( A.woodstove ) / 1; A.bg.woodstove.fade( A.bg.woodstove.volume( A.woodstove ), 0, ratio * 4000, A.woodstove ); } else { A.bg.woodstove.stop( A.woodstove ); } </script>{ (unless: (history:) contains (passage:)'s name)[ <script> A.foley.landing.play(); </script> ] (unless: "boots" of $inventory is 1)[ <p>The stairs creak in protest.</p> ](else:)[ <p>The floorboards groan.</p> ] <p>Puffs of condensation mirror every breath.</p> (if: "boots" of $inventory is 0)[ <p>[[Your boots->Put On Boots]] are on the landing.</p> ](else:)[ <p>Most of the [[rooms up here->Upper Rooms]] are empty.</p> ] }\ [[Go Up->Attic]] [[Go Down->start]]{ (if: $door_open is 0)[ (unless: (history:) contains (passage:)'s name)[ <p>The door won't budge. Must be frozen again.</p> ](else:)[ <p>Door won't unstick itself.</p> ] (if: "boots" of $inventory is 1)[ (set: $door_open to 1) <p>You fasten your boots.</p> <p>A few good kicks loosens the hinges.</p> <script> A.foley.kick_door.play(); </script> ](else:)[ (unless: (history:) contains (passage:)'s name)[ <script> A.foley.door_stuck.play(); </script> ] <p>Your bare feet are useless.</p> ] ] <div class="nav"> (if: (passage: last of (history:))'s name is "Front Yard")[ [[Go Through->start]]<br> ](else:)[ (if: $door_open is 1)[ [[Go Through->Front Yard]]<br>] ] (link-goto: "Go Back", $back) </div> }{ (unless: (history:) contains "Bedroom")[ <p>Like this, it's easy to mistake them for sleeping.</p> <script> A.foley.ma_pop_room.play(); </script> ] <p>There's Ma, hands tucked up under her chin.</p> <p>There's Pop, mouth open, (if: "meat" of $inventory is 0)[ (if: $seen_recipe is 1)[ [[meat drooping->Meat Arm]](print:" ") ](else:)[ arm dangling(print:" ") ] ](else:)[ bloody stump dangling(print:" ") ] over the side of the bed.</p> (if: (history:) contains "Bedroom")[ <p>Before, you never would've come in here.</p> ] <div class="nav"> [[Go Back->start]]<br> (if: "jacket" of $inventory is 0)[ [[Go Through->Closet]] </div> ] }{ (if: $recipe is 0)[ <p>Now, now. You haven't fixed [[a proper meal->The Recipe]].</p> ](else:)[ (set: $pit_fed to 1) <p>Hoisting the stew above the steaming gullet, you pour.</p> <p>[[The Pit guzzles->Pit Dive]] with appalling vigor.</p> <script> A.foley.pit_eats.play(); </script> ] }{ <p>You lean over the gaping maw.</p> <p>Wet flesh tunnels downward; the smell is suffocating.</p> <p>It doesn't have to [[end this way->Pit Death 1]].</p> [[Go Back->Cellar]] (unless: (history:) contains (passage:)'s name)[ <script> A.foley.pit_lean.play(); </script> ] }{ (if: $stamina is 10)[ (save-game:"A") <script>console.log("saving A")</script> ](else:)[ <script>console.log("A already exists")</script> ] (if: last of (history:) is "Cellar")[ (unless: (history:) contains (passage:)'s name)[ <script> A.foley.cellar_out.play(); </script> ] <p>You throw open the shutters.</p> <p>Frozen filth rains from above.</p> ](else:)[ <p>The back wall of the house sags.</p> <p>The sky is a vastness of soot.</p> ] (if: "firewood" of $inventory is 0)[ <p>What's left of [[the woodpile->Grab Logs]] lies under heavy snow.</p> ](else:)[ <p>Splinters are all that remains of the wood pile.</p> ] <p>The silhouette of [[the barn->Barn]] is just visible.</p> [[Go Down->Cellar]]<br> [[Go Around->Front Yard]] }\ <script> if ( !A.bg.winter.playing( A.winter ) ) { A.winter = A.bg.winter.play(); console.log("new instance of snd"); } var ratio = 1 - A.bg.winter.volume( A.winter ); A.bg.winter.fade( A.bg.winter.volume( A.winter ), 0.7, ratio * 3000, A.winter ); if ( A.bg.wind.volume( A.wind ) > 0 ) { var ratio = A.bg.wind.volume( A.wind ) / 1; A.bg.wind.fade( A.bg.wind.volume( A.wind ), 0, ratio * 3000, A.wind ); } else { A.bg.wind.stop( A.wind ); } </script>{ (set: $stamina to -1) <p>You step out over nothingness.</p> <p>To your surprise, it isn't the jaws that take you.</p> <p>Juices flood the gullet; you try to scream, but the air is pure acid.</p> <p>As your skin boils, you abandon yourself to singular, endless pain.</p> <span class="nodeath">[Taking the easy way out again?]<restart|</span> (click: ?restart)[ (if: (saved-games:) contains "B")[ (set: $current_save to "B") ] (goto: "Claw Back") ] }\ <script> A.foley.pit_death.play(); if ( A.bg.wind.volume( A.wind ) > 0 ) { var ratio = A.bg.wind.volume( A.wind ) / 1; A.bg.wind.fade( A.bg.wind.volume( A.wind ), 0, ratio * 2500, A.wind ); } else { A.bg.wind.stop( A.wind ); } $( '.nodeath' ).css( 'opacity', 0 ); $( '.nodeath' ).css( 'pointer-events', 'none' ); setTimeout( function() { $( '.nodeath' ).css( 'opacity', 1 ); }, 1500 ); $( '.nodeath' ).on( 'transitionend webkitTransitionEnd', function() { $( '.nodeath' ).css( 'pointer-events', 'auto' ); }); </script>{ (set: $stamina to $stamina + 10) (set: $fire_started to 1) <p>It takes some work, but the cedar burns.</p> <p>You huddle by the flames as the [[ancient oven warms->Stove Lit]].</p> }\ <script> A.foley.start_fire.play(); if ( !A.bg.woodstove.playing( A.woodstove ) ) { A.woodstove = A.bg.woodstove.play(); } var ratio = 1 - A.bg.woodstove.volume( A.woodstove ); A.bg.woodstove.fade( A.bg.woodstove.volume( A.woodstove ), 0.5, ratio * 1500, A.woodstove ); </script>{ (if: length of (history:) > 0)[ (set: $back to last of (history:)) ] (set: $current to "name" of (passage:)) (if: length of (passage:)'s tags > 0 and (passage:)'s tags contains "newloc")[ (unless: (history:) contains $current)[ <script> $( 'tw-passage' ).css( 'opacity', '0' ); $( 'tw-link' ).css( 'color', 'white'); $( 'tw-link' ).css( 'transition', 'color 1.5s linear'); $( 'tw-link' ).css( '-webkit-transition', 'color 1.5s linear'); $( 'tw-link' ).css( 'pointer-events', 'none' ); setTimeout( function() { $( 'tw-passage' ).css( 'opacity', '1' ); }, 1); $( 'tw-passage' ).on( 'transitionend webkitTransitionEnd', function() { $( 'tw-link' ).css( 'color', '#FF001F'); }); $( 'tw-link' ).on( 'transitionend webkitTransitionEnd', function() { $( 'tw-link' ).css( 'transition', 'color 0.1s ease-in-out'); $( 'tw-link' ).css( '-webkit-transition', 'color 0.1s ease-in-out'); $( 'tw-link' ).css( 'pointer-events', 'auto' ); }); </script> ] ] }{ (set: $stamina to 10) (set: $inventory to (datamap: "meat", 0, "milk", 0, "salt", 0, "firewood", 0, "boots", 0, "jacket", 0, "knife", 0, "gascan", 0, "crowbar", 0, "battery", 0, "milled_meat", 0, "necklace", 0, "pickaxe", 0, "rusty_knife", 0, "room_key", 0, "camera", 0)) (set: $fire_started to 0) (set: $pit_fed to 0) (set: $door_open to 0) (set: $rat_fled to 0) (set: $looked_chest to 0) (set: $cellar_open to 0) (set: $recipe to 0) (set: $gas_mill to 0) (set: $meat_mill to 0) (set: $dodged_snake to 0) (set: $meat_added to 0) (set: $milk_added to 0) (set: $salt_added to 0) (set: $seen_recipe to 0) (set: $battery_in to 0) (set: $crystal_charged to 0) (set: $dirt_speaks to 0) (set: $charm_transformed to 0) (set: $survived_fall to 0) (set: $stopped_axe to 0) (set: $cavern_axe to "Cavern 2") (set: $current_save to "") (set: $retry to 0) (set: $dead to (dataset: "Frozen", "Rat Death", "Rat Death 2", "Pit Death", "Snake Deather", "Small Comfort Death")) (set: $outdoor_loc to (dataset: "Barn", "Barn Side", "Barn Noise", "Wood Pile", "The Grain", "Feed Mill", "Door Locked", "Front Yard", "Junk Pile")) }\ <script> if ( !window.A ) { window.A = {}; } if ( !window.Mgr ) { window.Mgr = {}; Mgr.audio_loaded = false; Mgr.load_percent = 0; } A.bg = {}; A.foley = {}; A.death = {}; var howl_path = 'sfx/'; //var howl_path = 'C:/Users/hexcavator/Documents/Twine/Stories/Unbecoming/sfx/'; A.bg.wind = new Howl({ src: [howl_path+'wind.mp3'], html5: true, loop: true, volume: 0, }); A.wind = A.bg.wind.play(); A.bg.wind.stop(A.wind); A.bg.rumble = new Howl({ src: [howl_path+'rumble.mp3'], html5: true, loop: true, volume: 0, }); A.rumble = A.bg.rumble.play(); A.bg.rumble.stop(A.rumble); A.bg.winter = new Howl({ src: [howl_path+'winter.mp3'], html5: true, loop: true, volume: 0, onvolume: function () { console.log("volume changed"); }, }); A.winter = A.bg.winter.play(); A.bg.winter.stop(A.winter); A.bg.heartbeat = new Howl({ src: [howl_path+'heartbeat.mp3'], html5: true, loop: true, volume: 0, }); A.heartbeat = A.bg.heartbeat.play(); A.bg.heartbeat.stop(A.heartbeat); A.bg.death_hum = new Howl({ src: [howl_path+'death_hum.mp3'], html5: true, loop: true, volume: 0, }); A.death_hum = A.bg.death_hum.play(); A.bg.death_hum.stop(A.death_hum); A.bg.tuba = new Howl({ src: [howl_path+'bg_tuba.mp3'], html5: true, loop: true, volume: 0, }); A.tuba = A.bg.tuba.play(); A.bg.tuba.stop(A.tuba); A.bg.boil = new Howl({ src: [howl_path+'bg_whistle.mp3'], html5: true, loop: false, volume: 0, }); A.boil = A.bg.boil.play(); A.bg.boil.stop(A.boil); A.bg.sanctum = new Howl({ src: [howl_path+'bg_sanctum.mp3'], html5: true, loop: true, volume: 0, }); A.sanctum = A.bg.sanctum.play(); A.bg.sanctum.stop(A.sanctum); A.bg.bells = new Howl({ src: [howl_path+'sanctum_deep.mp3'], html5: true, loop: false, volume: 0, }); A.bells = A.bg.bells.play(); A.bg.bells.stop(A.bells); A.bg.spring = new Howl({ src: [howl_path+'bg_spring.mp3'], html5: true, loop: true, volume: 0, }); A.spring = A.bg.spring.play(); A.bg.spring.stop(A.spring); A.bg.fireplace = new Howl({ src: [howl_path+'bg_fireplace.mp3'], html5: true, loop: true, volume: 0, }); A.fireplace = A.bg.fireplace.play(); A.bg.fireplace.stop(A.fireplace); A.bg.woodstove = new Howl({ src: [howl_path+'bg_woodstove.mp3'], html5: true, loop: true, volume: 0, }); A.woodstove = A.bg.woodstove.play(); A.bg.woodstove.stop(A.woodstove); A.foley.jacket = new Howl({ src: [howl_path+'jacket.wav'], html5: true, loop: false, volume: 0.5, }); A.foley.pit_intro = new Howl({ src: [howl_path+'pit_intro.wav'], html5: true, loop: false, volume: 1.0, }); A.foley.photo = new Howl({ src: [howl_path+'photo.wav'], html5: true, loop: false, volume: 0.5, }); A.foley.chop_arm = new Howl({ src: [howl_path+'chop_arm.wav'], html5: true, loop: false, volume: 0.9, }); A.foley.room_locked = new Howl({ src: [howl_path+'room_locked.wav'], html5: true, loop: false, volume: 0.6, }); A.foley.unlock_room = new Howl({ src: [howl_path+'unlock_room.wav'], html5: true, loop: false, volume: 0.8, }); A.foley.crowbar = new Howl({ src: [howl_path+'crowbar.wav'], html5: true, loop: false, volume: 0.65, }); A.foley.boots = new Howl({ src: [howl_path+'boots.wav'], html5: true, loop: false, volume: 0.4, }); A.foley.attic = new Howl({ src: [howl_path+'attic.mp3'], html5: true, loop: false, volume: 0.5, }); A.foley.cellar_pry = new Howl({ src: [howl_path+'cellar_pry.wav'], html5: true, loop: false, volume: 0.7, }); A.foley.chest_open = new Howl({ src: [howl_path+'chest_open.mp3'], html5: true, loop: false, volume: 0.5, }); A.foley.arm_shoulder = new Howl({ src: [howl_path+'arm_shoulder.wav'], html5: true, loop: false, volume: 0.6, }); A.foley.spark = new Howl({ src: [howl_path+'spark.wav'], html5: true, loop: false, volume: 0.8, }); A.foley.stone_pulse = new Howl({ src: [howl_path+'stone_pulse.wav'], html5: true, loop: false, volume: 0.2, }); A.foley.gather_salt = new Howl({ src: [howl_path+'gather_salt.wav'], html5: true, loop: false, volume: 0.8, }); A.foley.battery_connect = new Howl({ src: [howl_path+'battery_connect1.wav'], html5: true, loop: false, volume: 0.75, }); A.foley.start_fire = new Howl({ src: [howl_path+'start_fire.wav'], html5: true, loop: false, volume: 0.5, }); A.foley.add_salt = new Howl({ src: [howl_path+'add_salt.wav'], html5: true, loop: false, volume: 0.5, }); A.foley.add_meat = new Howl({ src: [howl_path+'add_meat.wav'], html5: true, loop: false, volume: 0.5, }); A.foley.add_milk = new Howl({ src: [howl_path+'add_milk.wav'], html5: true, loop: false, volume: 0.5, }); A.foley.meal_ready = new Howl({ src: [howl_path+'meal_ready.wav'], html5: true, loop: false, volume: 0.5, }); A.foley.cleaver = new Howl({ src: [howl_path+'cleaver.wav'], html5: true, loop: false, volume: 0.6, }); A.foley.mill_feed = new Howl({ src: [howl_path+'mill_feed.wav'], html5: true, loop: false, volume: 0.9, }); A.foley.arm_mill = new Howl({ src: [howl_path+'arm_mill.wav'], html5: true, loop: false, volume: 0.6, }); A.foley.gas_mill = new Howl({ src: [howl_path+'gas_mill.wav'], html5: true, loop: false, volume: 0.6, }); A.foley.rattle = new Howl({ src: [howl_path+'rattle.wav'], html5: true, loop: false, volume: 0.8, }); A.foley.snake_fall = new Howl({ src: [howl_path+'snake_fall.wav'], html5: true, loop: false, volume: 0.7, }); A.foley.snake_leave = new Howl({ src: [howl_path+'snake_leave.wav'], html5: true, loop: false, volume: 0.8, }); A.foley.snake_miss = new Howl({ src: [howl_path+'snake_miss.wav'], html5: true, loop: false, volume: 0.8, }); A.foley.snake_flee = new Howl({ src: [howl_path+'snake_flee.wav'], html5: true, loop: false, volume: 0.8, }); A.foley.burrow = new Howl({ src: [howl_path+'burrow.wav'], html5: true, loop: false, volume: 0.9, }); A.foley.barn_door = new Howl({ src: [howl_path+'barn_door.wav'], html5: true, loop: false, volume: 0.85, }); A.foley.milk_pail = new Howl({ src: [howl_path+'milk_pail.wav'], html5: true, loop: false, volume: 0.4, }); A.foley.wood_get = new Howl({ src: [howl_path+'wood_get.wav'], html5: true, loop: false, volume: 0.9, }); A.foley.search_grain = new Howl({ src: [howl_path+'search_grain.wav'], html5: true, loop: false, volume: 0.75, }); A.foley.find_key = new Howl({ src: [howl_path+'find_key.wav'], html5: true, loop: false, volume: 0.85, }); A.foley.kick_door = new Howl({ src: [howl_path+'kick_door.wav'], html5: true, loop: false, volume: 0.8, }); A.foley.rat_flee = new Howl({ src: [howl_path+'rat_flee.wav'], html5: true, loop: false, volume: 0.9, }); A.foley.rat_bite = new Howl({ src: [howl_path+'rat_bite.wav'], html5: true, loop: false, volume: 0.9, }); A.foley.rat_stumble = new Howl({ src: [howl_path+'rat_stumble.wav'], html5: true, loop: false, volume: 0.9, }); A.foley.rat_feed = new Howl({ src: [howl_path+'rat_feed.wav'], html5: true, loop: false, volume: 0.8, }); A.foley.door_stuck = new Howl({ src: [howl_path+'door_stuck.wav'], html5: true, loop: false, volume: 1.0, }); A.foley.fill_flask = new Howl({ src: [howl_path+'fill_flask.wav'], html5: true, loop: false, volume: 0.8, }); A.foley.check_can = new Howl({ src: [howl_path+'check_can.wav'], html5: true, loop: false, volume: 0.8, }); A.foley.pit_tongue = new Howl({ src: [howl_path+'pit_tongue.wav'], html5: true, loop: false, volume: 0.7, }); A.foley.pit_eats = new Howl({ src: [howl_path+'pit_eats.wav'], html5: true, loop: false, volume: 0.7, }); A.foley.pit_grow = new Howl({ src: [howl_path+'pit_grow.wav'], html5: true, loop: false, volume: 0.8, }); A.foley.pit_dive = new Howl({ src: [howl_path+'pit_dive.wav'], html5: true, loop: false, volume: 1.0, }); A.foley.necklace_find = new Howl({ src: [howl_path+'necklace_find.wav'], html5: true, loop: false, volume: 0.9, }); A.foley.necklace_tie = new Howl({ src: [howl_path+'necklace_tie.wav'], html5: true, loop: false, volume: 0.9, }); A.foley.pit_hole = new Howl({ src: [howl_path+'pit_hole.wav'], html5: true, loop: false, volume: 0.9, }); A.foley.get_batt = new Howl({ src: [howl_path+'get_batt.wav'], html5: true, loop: false, volume: 0.8, }); A.foley.get_batt_clean = new Howl({ src: [howl_path+'get_batt_clean.wav'], html5: true, loop: false, volume: 0.8, }); A.foley.hole_ready = new Howl({ src: [howl_path+'hole_ready.wav'], html5: true, loop: false, volume: 0.8, }); A.foley.hole_fall = new Howl({ src: [howl_path+'hole_fall.wav'], html5: true, loop: false, volume: 0.8, }); A.foley.hole_slide = new Howl({ src: [howl_path+'hole_slide.wav'], html5: true, loop: false, volume: 0.8, }); A.foley.hole_ankle = new Howl({ src: [howl_path+'hole_ankle.wav'], html5: true, loop: false, volume: 0.8, }); A.foley.cavern_pump = new Howl({ src: [howl_path+'cavern_pump.wav'], html5: true, loop: false, volume: 1.0, }); A.foley.camera = new Howl({ src: [howl_path+'camera.wav'], html5: true, loop: false, volume: 0.8, }); A.foley.cave_steam = new Howl({ src: [howl_path+'cave_steam.wav'], html5: true, loop: false, volume: 0.7, }); A.foley.cave_pebbles = new Howl({ src: [howl_path+'cave_pebbles.wav'], html5: true, loop: false, volume: 0.6, }); A.foley.flesh_cross = new Howl({ src: [howl_path+'flesh_cross.wav'], html5: true, loop: false, volume: 0.9, }); A.foley.cave_orifice = new Howl({ src: [howl_path+'cave_orifice.wav'], html5: true, loop: false, volume: 0.9, }); A.foley.cave_thrust = new Howl({ src: [howl_path+'cave_thrust.wav'], html5: true, loop: false, volume: 0.9, }); A.foley.cave_reach = new Howl({ src: [howl_path+'cave_reach.wav'], html5: true, loop: false, volume: 0.9, }); A.foley.war_chest = new Howl({ src: [howl_path+'war_chest.wav'], html5: true, loop: false, volume: 0.9, }); A.foley.fleshling_feed = new Howl({ src: [howl_path+'fleshling_feed.wav'], html5: true, loop: false, volume: 0.8, }); A.foley.fleshling_grow = new Howl({ src: [howl_path+'fleshling_grow.wav'], html5: true, loop: false, volume: 0.8, }); A.foley.cave_purr = new Howl({ src: [howl_path+'cave_purr.wav'], html5: true, loop: false, volume: 0.9, }); A.foley.cave_jump = new Howl({ src: [howl_path+'cave_jump.wav'], html5: true, loop: false, volume: 1.0, }); A.foley.cave_land = new Howl({ src: [howl_path+'cave_land1.wav'], html5: true, loop: false, volume: 0.8, }); A.foley.cave_purchase = new Howl({ src: [howl_path+'cave_purchase.wav'], html5: true, loop: false, volume: 0.9, }); A.foley.old_blade = new Howl({ src: [howl_path+'old_blade.wav'], html5: true, loop: false, volume: 0.9, }); A.foley.get_blade = new Howl({ src: [howl_path+'get_blade.wav'], html5: true, loop: false, volume: 0.7, }); A.foley.get_pickaxe = new Howl({ src: [howl_path+'get_pickaxe.wav'], html5: true, loop: false, volume: 0.75, }); A.foley.throw_pickaxe = new Howl({ src: [howl_path+'throw_pickaxe.wav'], html5: true, loop: false, volume: 0.75, }); A.foley.blade_pocket = new Howl({ src: [howl_path+'blade_pocket.wav'], html5: true, loop: false, volume: 0.75, }); A.foley.cave_shelf = new Howl({ src: [howl_path+'cave_shelf.wav'], html5: true, loop: false, volume: 0.75, }); A.foley.cave_plummet = new Howl({ src: [howl_path+'cave_plummet.wav'], html5: true, loop: false, volume: 0.85, }); A.foley.cave_plummet_1 = new Howl({ src: [howl_path+'cave_plummet_1.wav'], html5: true, loop: false, volume: 1.0, }); A.foley.cave_rise = new Howl({ src: [howl_path+'cave_rise.wav'], html5: true, loop: false, volume: 0.8, }); A.foley.cave_suck = new Howl({ src: [howl_path+'cave_suck.wav'], html5: true, loop: false, volume: 0.65, }); A.foley.cave_safe_land = new Howl({ src: [howl_path+'cave_safe_land.wav'], html5: true, loop: false, volume: 0.9, }); A.foley.cave_smash = new Howl({ src: [howl_path+'cave_smash.wav'], html5: true, loop: false, volume: 0.6, }); A.foley.fleshling_protest = new Howl({ src: [howl_path+'fleshling_protest.wav'], html5: true, loop: false, volume: 0.6, }); A.foley.cave_relent = new Howl({ src: [howl_path+'cave_relent.wav'], html5: true, loop: false, volume: 0.8, }); A.foley.cave_persist = new Howl({ src: [howl_path+'cave_persist.wav'], html5: true, loop: false, volume: 0.8, }); A.foley.fleshling_leave = new Howl({ src: [howl_path+'fleshling_leave.wav'], html5: true, loop: false, volume: 1.0, }); A.foley.sanctum_kneel = new Howl({ src: [howl_path+'sanctum_kneel.wav'], html5: true, loop: false, volume: 1.0, }); A.foley.sanctum_unborn = new Howl({ src: [howl_path+'sanctum_unborn.wav'], html5: true, loop: false, volume: 0.9, }); A.foley.sanctum_unsheath = new Howl({ src: [howl_path+'sanctum_unsheath.wav'], html5: true, loop: false, volume: 1.0, }); A.foley.sanctum_sever = new Howl({ src: [howl_path+'sanctum_sever.wav'], html5: true, loop: false, volume: 0.9, }); A.foley.sanctum_ring = new Howl({ src: [howl_path+'sanctum_ring.wav'], html5: true, loop: false, volume: 0.8, }); A.foley.sanctum_rumble = new Howl({ src: [howl_path+'sanctum_rumble.wav'], html5: true, loop: false, volume: 0.9, }); A.foley.sanctum_collapse = new Howl({ src: [howl_path+'sanctum_collapse.wav'], html5: true, loop: false, volume: 0.8, }); A.foley.sanctum_ascend = new Howl({ src: [howl_path+'sanctum_ascend.wav'], html5: true, loop: false, volume: 1.0, }); A.foley.expunged = new Howl({ src: [howl_path+'expunged.wav'], html5: true, loop: false, volume: 0.9, }); A.foley.renewal = new Howl({ src: [howl_path+'renewal.wav'], html5: true, loop: false, volume: 1.0, }); A.foley.striding = new Howl({ src: [howl_path+'striding.wav'], html5: true, loop: false, volume: 0.65, }); A.foley.take_babe = new Howl({ src: [howl_path+'take_babe.wav'], html5: true, loop: false, volume: 0.7, }); A.foley.follow_babe = new Howl({ src: [howl_path+'follow_babe.wav'], html5: true, loop: false, volume: 0.9, }); A.foley.take_babe_1 = new Howl({ src: [howl_path+'take_babe_1.wav'], html5: true, loop: false, volume: 0.7, }); A.foley.up_hill = new Howl({ src: [howl_path+'up_hill.wav'], html5: true, loop: false, volume: 0.8, }); A.foley.stumble_in = new Howl({ src: [howl_path+'stumble_in.wav'], html5: true, loop: false, volume: 0.8, }); A.foley.end_bedroom = new Howl({ src: [howl_path+'end_bedroom.wav'], html5: true, loop: false, volume: 0.8, }); A.foley.kid_room = new Howl({ src: [howl_path+'kid_room.wav'], html5: true, loop: false, volume: 0.8, }); A.foley.woman_hum = new Howl({ src: [howl_path+'woman_hum.wav'], html5: true, loop: false, volume: 0.8, }); A.foley.child_room = new Howl({ src: [howl_path+'child_room.wav'], html5: true, loop: false, volume: 0.8, }); A.foley.stretch_out = new Howl({ src: [howl_path+'stretch_out.wav'], html5: true, loop: false, volume: 0.8, }); A.foley.paper_burn = new Howl({ src: [howl_path+'paper_burn.wav'], html5: true, loop: false, volume: 0.7, }); A.foley.offer_bowl = new Howl({ src: [howl_path+'offer_bowl.wav'], html5: true, loop: false, volume: 0.75, }); A.foley.eat_soup = new Howl({ src: [howl_path+'eat_soup.wav'], html5: true, loop: false, volume: 0.9, }); A.foley.retire_chair = new Howl({ src: [howl_path+'retire_chair.wav'], html5: true, loop: false, volume: 0.45, }); A.foley.rocking_chair = new Howl({ src: [howl_path+'rocking_chair.wav'], html5: true, loop: false, volume: 0.5, }); A.foley.suck_face = new Howl({ src: [howl_path+'suck_face.wav'], html5: true, loop: false, volume: 0.65, }); A.foley.suck_close = new Howl({ src: [howl_path+'suck_close.wav'], html5: true, loop: false, volume: 0.6, }); A.foley.landing = new Howl({ src: [howl_path+'landing.wav'], html5: true, loop: false, volume: 0.65, }); A.foley.ma_pop_room = new Howl({ src: [howl_path+'ma_pop_room.wav'], html5: true, loop: false, volume: 0.7, }); A.foley.pit_lean = new Howl({ src: [howl_path+'pit_lean.wav'], html5: true, loop: false, volume: 0.9, }) A.foley.pit_death = new Howl({ src: [howl_path+'pit_death.wav'], html5: true, loop: false, volume: 0.8, }); A.foley.cellar_blocked = new Howl({ src: [howl_path+'cellar_blocked.wav'], html5: true, loop: false, volume: 0.8, }); A.foley.your_room = new Howl({ src: [howl_path+'your_room.wav'], html5: true, loop: false, volume: 0.9, }); A.foley.charred_spot = new Howl({ src: [howl_path+'charred_spot.wav'], html5: true, loop: false, volume: 0.8, }); A.foley.stone_plug = new Howl({ src: [howl_path+'stone_plug.wav'], html5: true, loop: false, volume: 0.85, }); A.foley.battery_setup = new Howl({ src: [howl_path+'battery_setup.wav'], html5: true, loop: false, volume: 0.9, }); A.foley.tinnitus = new Howl({ src: [howl_path+'tinnitus.wav'], html5: true, loop: false, volume: 0.8, }); A.foley.larvae = new Howl({ src: [howl_path+'larvae.wav'], html5: true, loop: false, volume: 0.8, }); A.foley.cellar_out = new Howl({ src: [howl_path+'cellar_out.wav'], html5: true, loop: false, volume: 0.8, }); A.foley.barn_approach = new Howl({ src: [howl_path+'barn_approach.wav'], html5: true, loop: false, volume: 0.85, }); A.foley.barn_ladder = new Howl({ src: [howl_path+'barn_ladder.wav'], html5: true, loop: false, volume: 0.8, }); A.foley.snake_mount = new Howl({ src: [howl_path+'snake_mount.wav'], html5: true, loop: false, volume: 0.8, }); A.foley.pit_jaws = new Howl({ src: [howl_path+'pit_jaws.wav'], html5: true, loop: false, volume: 0.8, }); A.death.plectrum = new Howl({ src: [howl_path+'death_plectrum.mp3'], html5: true, loop: false, volume: 0.8, }); A.death.harmonic = new Howl({ src: [howl_path+'death_harmonic.mp3'], html5: true, loop: false, volume: 0.8, }); A.death.cello = new Howl({ src: [howl_path+'death_cello.mp3'], html5: true, loop: false, volume: 0.8, }); A.death_snd = A.death.cello.play(); A.death.cello.stop( A.death_snd ); var allSnd = 0; var loaded = false; var total_snd = Object.keys( A.bg ).length + Object.keys( A.death ).length + Object.keys( A.foley ).length; for ( var snd in A.bg ) { //console.log( A.bg[snd] ); A.bg[snd].once( 'load', function() { allSnd++; if ( allSnd === total_snd ) { Mgr.audio_loaded = true; } else { Mgr.load_percent = ((allSnd / total_snd) * 100).toFixed(1); //console.log(Mgr.load_percent); } }); } for ( var snd in A.foley ) { //console.log( A.foley[snd] ); A.foley[snd].once( 'load', function() { allSnd++; if ( allSnd === total_snd ) { Mgr.audio_loaded = true; } else { Mgr.load_percent = ((allSnd / total_snd) * 100).toFixed(1); //console.log(Mgr.load_percent); } }); } for ( var snd in A.death ) { //console.log( A.death[snd] ); A.death[snd].once( 'load', function() { allSnd++; if ( allSnd === total_snd ) { Mgr.audio_loaded = true; } else { Mgr.load_percent = ((allSnd / total_snd) * 100).toFixed(1); //console.log(Mgr.load_percent); } }); } </script>{ (set: $current to (passage:)'s name) (if: $dead contains $current)[ ](elseif: $outdoor_loc contains $current)[ (if: "jacket" of $inventory is 0)[ (set: $stamina to $stamina - 1) ] (if: "boots" of $inventory is 0)[ (set: $stamina to $stamina - 1) ] ] (if: $outdoor_loc contains $current)[ (if: $stamina < 10 and $stamina >= 8)[ <p>The frigid air shocks your limbs. (if: "boots" of $inventory is 0)[ Your feet throb. ]</p> ](else-if: $stamina < 8 and $stamina >= 6)[ <p>You feel light-headed. Need to warm up, fast.</p> ](else-if: $stamina < 6 and $stamina >= 4)[ <p>Your limbs are numb. Can't take much more of this.</p> ](else-if: $stamina < 4 and $stamina >= 2)[ <p>A strange heat surges. Your vision doubles.</p> ](else-if: $stamina < 2 and $stamina > -10)[ (go-to: "Frozen") ] ] (if: $crystal_charged is 2)[ <p>The crystal surges with energy.</p> ](else-if: $crystal_charged is 3)[ <p>The heartstone pierces the darkness.</p> ](else-if: $crystal_charged is 4)[ <p>The heartstone flutters and dims.</p> ](else-if: $crystal_charged is 5)[ <p>The fleshling's glow pierces the darkness.</p> ](else-if: $crystal_charged is 6)[ <p>The fleshling's glow wanes.</p> ](else-if: $crystal_charged is 7)[ <p>The heartstone pulses, brighter than before.</p> ] }{ (set: $stamina to -11) <p>The cold is too much to bear.</p> <p>You feel oblivion reaching to consume you.</p> <span class="nodeath">[Not so fast, child. Back to work.]<restart|</span> (click: ?restart)[ (if: (saved-games:) contains "A")[ (set: $current_save to "A") ] (goto: "Claw Back") <script> if ( A.bg.death_hum.volume( A.death_hum ) > 0 ) { A.bg.death_hum.fade( A.bg.death_hum.volume( A.death_hum ), 0, 4000, A.death_hum ); } </script> ] }\ <script> if ( !A.bg.death_hum.playing( A.death_hum ) ) { A.death_hum = A.bg.death_hum.play(); } var ratio = 1 - A.bg.death_hum.volume( A.death_hum ); A.bg.death_hum.fade( A.bg.death_hum.volume( A.death_hum ), 0.75, ratio * 6000, A.death_hum ); if ( A.bg.winter.volume( A.winter ) > 0 ) { var ratio = A.bg.winter.volume( A.winter ) / 1; A.bg.winter.fade( A.bg.winter.volume( A.winter ), 0, ratio * 4000, A.winter ); } else { A.bg.winter.stop( A.winter ); } $( '.nodeath' ).css( 'opacity', 0 ); $( '.nodeath' ).css( 'pointer-events', 'none' ); setTimeout( function() { $( '.nodeath' ).css( 'opacity', 1 ); }, 1500 ); $( '.nodeath' ).on( 'transitionend webkitTransitionEnd', function() { $( '.nodeath' ).css( 'pointer-events', 'auto' ); }); </script>{ (set: $inventory's "firewood" to "1") <p>You brush away icy crud and grab a few sodden logs.</p> <p>Enough to keep [[the stove burning->Wood Pile]].</p> }\ <script> A.foley.wood_get.play(); </script>{ (unless: (history:) contains "Kitchen")[ <p>Once-spotless, the galley is a frozen shambles.</p> ](else:)[ <p>An icy spike plunges from the tap.</p> <p>Broken dishes pile in towers.</p> ] (if: $recipe is 0)[ (if: $fire_started is 1)[ <p>[[The stovetop creaks->Stove Lit]] from the heat of the fire below.</p> <script> if ( !A.bg.woodstove.playing( A.woodstove ) ) { A.woodstove = A.bg.woodstove.play(); } var ratio = 1 - A.bg.woodstove.volume( A.woodstove ); A.bg.woodstove.fade( A.bg.woodstove.volume( A.woodstove ), 0.5, ratio * 1500, A.woodstove ); </script> ](else:)[ <p>The [[stovetop is cold ->Stove Unlit]] and empty.</p>] ](else:)[ <p>The oven cools as the logs burn to ash.</p> <script> if ( A.bg.woodstove.playing( A.woodstove ) ) { var ratio = A.bg.woodstove.volume( A.woodstove ) / 1; A.bg.woodstove.fade( A.bg.woodstove.volume( A.woodstove ), 0, ratio * 4000, A.woodstove ); } else { A.bg.woodstove.stop( A.woodstove ); } </script> ] (if: "knife" of $inventory is 0)[ <p>[[Ma's cleaver->Cleaver]] is wedged in the counter.</p> ] <div class="nav">(link-goto: "Go Back", "start")</div> }{ (if: $inventory's "knife" is 0)[ <p>What are you going to cut it with, [[your fists->Bedroom]]?</p> ](else:)[ (set: $inventory's "meat" to 1) <p>You raise the cleaver and [[brace yourself->Cold Makes Easy]].</p> ] }{ (if: (passage: last of (history:))'s name is "Feed the Pit")[ (set: $back to "See the Pit") ](else-if: (passage: last of (history:))'s name is "Collect Meat")[ (set: $back to "Barn Noise") ](else-if: (passage: last of (history:))'s name is "The Milk")[ (set: $back to "Barn Side") ](else-if: (passage: last of (history:))'s name is "Few Chunks")[ (set: $back to "Your Room Inner") ](else-if: (passage: last of (history:))'s name is "Charred Spot")[ (set: $back to "Your Room Inner") ](else-if: (passage: last of (history:))'s name is "Stove Lit")[ (set: $back to "Stove Lit") ] (set: $seen_recipe to 1) (if: "milled_meat" of $inventory is 1)[ <p>You've got the meat.</p> ](else:)[ <p>You haven't got the meat.</p> ] (if: "milk" of $inventory is 1)[ <p>You've got the milk.</p> ](else:)[ <p>You haven't got the milk.</p> ] (if: "salt" of $inventory is 1)[ <p>You've got the salt.</p> ](else:)[ <p>You haven't got the salt.</p> ] (if: $recipe is 1)[ (link-goto: "Back", $back) ](else:)[ (link-goto: "Back", $back) ] }{ (set: $inventory's "boots" to 1)(set: $stamina to $stamina + 10) <p>You jam your toes into stiff leather.</p> <p>After a moment, worn treads settle underfoot.</p> <p>[[Better than nothing->Landing]].</p> <script> A.foley.boots.play(); if ( A.foley.landing.playing() ) { A.foley.landing.stop(); } </script> }{ (if: (history:) contains "Your Room Inner")[ <p>The thrum of new birth permeates every aspect.</p> ](else:)[ <p>Everything's just as you left it.</p> <script> A.foley.your_room.play(); </script> ] <p>Copper wires criss-cross at a thousand angles, trailing to (if: $crystal_charged is 0)[ [[a charred spot->Charred Spot]] ](else:)[ a charred spot ] on the floor.</p> (if: $crystal_charged is 0)[ (if: $battery_in is 1)[ <p>The new battery is cabled and ready.</p> ](else:)[ <p>[[Lead-acid pools->Battery Desc]] near a hand-wired switch.</p> ] ](else:)[ <p>The spent Exide seeps blue smoke.</p> ] (if: "salt" of $inventory is 0)[ <p>A bloodied [[crust of halite->Halite Chunk]] rests.</p> ] }\ [[Go Out->Upper Rooms]]{ (set: $inventory's "jacket" to 1) <p>In the closet, Pop's work coat billows.</p> <p>You slide your arms into the sleeves.</p> <p>A flask rattles in the pocket.</p> <p>[[Shame it's empty->Bedroom]].</p> (set: $inventory's "jacket" to 1) <script> A.foley.jacket.play(); </script> }{ <p>The attic exposes its bones.</p> <p>Tobacco musk hangs heavy.</p> (if: "crowbar" of $inventory is 0)[ <p>Clothes moths flutter overhead.</p> ](else:)[ (if: (history:) contains "Attic History")[ <p>You've always hated this place.</p> ](else:)[ <p>The history here [[spans generations->Attic History]].</p> ] ] (if: "crowbar" of $inventory is 0)[ <p>A [[streak of metal->Crowbar]] glimmers at the far wall.</p> ] <div class="nav">[[Go Down->Landing]]</div> (unless: (history:) contains (passage:)'s name)[ <script> A.foley.attic.play(); </script> ] }\ <script> if ( A.bg.heartbeat.playing( A.heartbeat ) ) { var ratio = A.bg.heartbeat.volume( A.heartbeat ) / 1; A.bg.heartbeat.fade( A.bg.heartbeat.volume( A.heartbeat ), 0, ratio * 3000, A.heartbeat ); } else { A.bg.heartbeat.stop( A.heartbeat ); } if ( A.bg.rumble.volume( A.rumble ) > 0 ) { var ratio = A.bg.rumble.volume( A.rumble ) / 1; A.bg.rumble.fade( A.bg.rumble.volume( A.rumble ), 0, ratio * 3000, A.rumble ); } else { A.bg.rumble.stop( A.rumble ); } </script>{ (if: $stamina is 10)[ (save-game:"A") <script>console.log("saving A")</script> ](else:)[ <script>console.log("A already exists")</script> ] <p>Grey light subsumes all.</p> (if: "gascan" of $inventory is 1)[ <p>Fog devours the long driveway.</p> <p>Best leave the rats to themselves.</p> ](else:)[ <p>The garage buckles under weight of winter. ] (if: "gascan" of $inventory is 0)[ <p>[[Scrap spills through->Junk Pile]] the rotting walls.</p> ] <div class="nav"> (if: "boots" of $inventory is 0)[ [[Go In->Door Locked]]<br> ](else:)[ (if: $door_open is 1)[ [[Go In->start]]<br> ](else:)[ [[Go In->Front Door]]<br> ] ] [[Go Around->Wood Pile]] </div> }\ <script> if ( !A.bg.winter.playing( A.winter ) ) { A.winter = A.bg.winter.play(); console.log("new instance of snd"); } var ratio = 1 - A.bg.winter.volume( A.winter ); A.bg.winter.fade( A.bg.winter.volume( A.winter ), 0.7, ratio * 2500, A.winter ); if ( A.bg.wind.volume( A.wind ) > 0 ) { var ratio = A.bg.wind.volume( A.wind ) / 1; A.bg.wind.fade( A.bg.wind.volume( A.wind ), 0, ratio * 2500, A.wind ); } else { A.bg.wind.stop( A.wind ); } </script>{ (if: $rat_fled is 0)[ <p>Ratshit and bedfeathers clot heaped debris.</p> <p>You notice the [[mass pulsing->Poke Rats]] slightly.</p> ](else:)[ <p>The stink of piss and upturned nest.</p> ] (if: "gascan" of $inventory is 0)[ <p>A crumpled [[gas can->Gas Can]] catches your eye.</p> <div class="nav">[[Go Back->Front Yard]]</div> ] }{ (if: "boots" of $inventory is 1)[ (set: $rat_fled to 1) <p>You prod the nest. [[A rat pounces->Fangs Splinter]].</p> <script> A.foley.rat_bite.play(); </script> ](else:)[ (goto: "Pre Rat Death 2") ] }{ (if: $rat_fled is 0)[ (go-to: "Pre Rat Death") ] (if: $inventory's "jacket" is 1)[ (set: $inventory's "gascan" to 1) <p>You tip the battered jerry can.</p> (unless: (history:) contains "Gas Gan")[ <p>It's half-rusted, but there's fuel at the bottom.</p> ] <p>You empty what you can [[into Pop's flask->Front Yard]].</p> <script> A.foley.fill_flask.play(); </script> ](else:)[ <p>You lift the tank to inspect it.</p> <p>Fuel sloshes from the rust-eaten base.</p> <p>You can't carry it around [[like this->Front Yard]].</p> (unless: (history:) contains "Gas Gan")[ <script> A.foley.check_can.play(); </script> ] ] }{ (set: $stamina to -11) <p>Instantly, a dozen more vermin are upon you.</p> <p>Desperate mouths gnaw feverishly, exposing pink meat.</p> <p>If you weren't so frail, you'd be strong enough to stop the feast.</p> <span class="nodeath">[But it didn't happen like that.]<restart|</span> (click: ?restart)[ (if: (saved-games:) contains "A")[ (set: $current_save to "A") ] (goto: "Claw Back") <script> if ( A.bg.death_hum.volume( A.death_hum ) > 0 ) { A.bg.death_hum.fade( A.bg.death_hum.volume( A.death_hum ), 0, 2500, A.death_hum ); } </script> ] }\ <script> A.foley.rat_feed.play(); $( '.nodeath' ).css( 'opacity', 0 ); $( '.nodeath' ).css( 'pointer-events', 'none' ); setTimeout( function() { $( '.nodeath' ).css( 'opacity', 1 ); }, 1500 ); $( '.nodeath' ).on( 'transitionend webkitTransitionEnd', function() { $( '.nodeath' ).css( 'pointer-events', 'auto' ); }); </script>{ (unless: (history:) contains (passage:)'s name)[ <p>The hinges are caked with ice.</p> <p>Should've [[worn your boots->Front Yard]].</p> <script> A.foley.door_stuck.play(); </script> ](else:)[ <p>The door stares back, [[unwilling->Front Yard]].</p> ] }{ (set: $inventory's "knife" to 1) <p>You wrench the blade from the stained wood.</p> <p>The edge is sharp as the day Pop brought it home.</p> <p><i>Some things are [[worth the price->Kitchen]].</i></p> }\ <script> A.foley.cleaver.play(); </script>{ (set: $stamina to -11) <p>Instantly, a dozen more vermin are upon you.</p> <p>Desperate mouths gnaw ravenously, exposing pink meat.</p> <p>If you weren't so frail, you'd be strong enough to stop the feast.</p> <span class="nodeath">[That's not right. You're misremembering.]<restart|</span> (click: ?restart)[ (if: (saved-games:) contains "A")[ (set: $current_save to "A") ] (goto: "Claw Back") <script> if ( A.bg.death_hum.volume( A.death_hum ) > 0 ) { A.bg.death_hum.fade( A.bg.death_hum.volume( A.death_hum ), 0, 4000, A.death_hum ); } </script> ] }\ <script> A.foley.rat_feed.play(); $( '.nodeath' ).css( 'opacity', 0 ); $( '.nodeath' ).css( 'pointer-events', 'none' ); setTimeout( function() { $( '.nodeath' ).css( 'opacity', 1 ); }, 4000 ); $( '.nodeath' ).on( 'transitionend webkitTransitionEnd', function() { $( '.nodeath' ).css( 'pointer-events', 'auto' ); }); </script>{ <i> <p>Great-great Grandpop built the house with his bare hands.</p> <p>Great-great Grandma kept [[the child fed->Great Grandpop]].</p> </i> } <script> if ( !A.bg.heartbeat.playing( A.heartbeat ) ) { A.heartbeat = A.bg.heartbeat.play(); } var ratio = 1 - A.bg.heartbeat.volume( A.heartbeat ); A.bg.heartbeat.fade( A.bg.heartbeat.volume( A.heartbeat ), 1.0, ratio * 1500, A.heartbeat ); </script>{ (set: $inventory's "crowbar" to 1) }\ { <p>Near Pop's steamer trunk, an iron crowbar leans.</p> <p>It fits snugly into your belt.</p> <p>You notice the padlock on the trunk snapped in two.</p> <p>You promised [[never to look->War Chest]].</p> <script> A.foley.crowbar.play(); </script> }{ <p>The lid opens with a grating sound.</p> <p>Inside are letters from Ma,</p> <p>a stained uniform,</p> <p>sheepskin condoms.</p> <p>At the bottom, [[a photograph->Attic Photo]].</p> <script> A.foley.war_chest.play(); </script> }{ (unless: (history:) contains "Barn")[ <p>The wind rises as you press on.<p>Soon the battered walls loom.</p> <script> A.foley.barn_approach.play(); </script> ](else:)[ <p>The cowshed's battered walls loom.</p> ] <p>The [[side door moans->Barn Side]] on its hinges.</p> (if: $dodged_snake is 1)[ <p>The mill and the grain [[rot below->Barn Noise]].</p> ](else:)[ <p>Below, you hear [[something rustling->Barn Noise]] in the feed.</p> ] [[Go Back->Wood Pile]] }\ <script> if ( !A.bg.winter.playing( A.winter ) ) { A.winter = A.bg.winter.play(); } var ratio = 1 - A.bg.winter.volume( A.winter ); A.bg.winter.fade( A.bg.winter.volume( A.winter ), 0.7, ratio * 2500, A.winter ); if ( A.bg.wind.volume( A.wind ) > 0 ) { var ratio = A.bg.wind.volume( A.wind ) / 1; A.bg.wind.fade( A.bg.wind.volume( A.wind ), 0, ratio * 2500, A.wind ); } else { A.bg.wind.stop( A.wind ); } </script>{ (if: "room_key" of $inventory is 0)[ (unless: (history:) contains "Room Door")[ <p>Your head pounds as you near the threshold.</p> <p>You twist the knob. It jams.</p> <p>Ma's once-voice taunts:</p> <p><i>I'd like to [[see you try->Upper Rooms]], child.</i><p> <script> A.foley.room_locked.play(); </script> ] (else:) [ <p>There was a key, somewhere.</p> <p>They hid it when you misbehaved.</p> <p>Probably in that [[shit-heap of a barn->Upper Rooms]].</p> ] ](else:)[ (if: "necklace" of $inventory is 0)[ (if: (history:) contains "Your Room Inner")[ (go-to: "Your Room Inner") ](else:)[ <p>You turn the key from the grain heap in the rusty lock.</p> <p>Something in you aches; a gnawing lack.</p> <p>You [[cross the threshold->Your Room Inner]].</p> <script> A.foley.unlock_room.play(); </script> ] ](else:)[ (if: (history:) contains "Your Room Inner")[ (go-to: "Your Room Inner") ](else:)[ <p>You turn the key from the grain heap in the rusty lock.</p> <p>Around your neck, the crystal shard hums.</p> <p>You [[cross the threshold->Your Room Inner]].</p> <script> A.foley.unlock_room.play(); </script> ] ] ] }{ <p>Ma's raggedy Holsteins crowd the stanchions.</p> (unless: (history:) contains "Barn Side")[ <p>It takes you a moment to realize they're frozen solid.</p> <script> A.foley.barn_door.play(); </script> ](else:)[ <p>Their dead faces offer no pardon.</p> ] (if: "milk" of $inventory is 0)[ <p>A [[pail of milk->The Milk]], rock hard, sits by one stool.</p> ] [[Go Back->Barn]]<br> [[Go Down->Barn Noise]] }\ <script> if ( !A.bg.wind.playing( A.wind ) ) { A.wind = A.bg.wind.play(); } var ratio = 1 - A.bg.wind.volume( A.wind ); A.bg.wind.fade( A.bg.wind.volume( A.wind ), 0.9, ratio * 2500, A.wind ); if ( A.bg.winter.volume( A.winter ) > 0 ) { var ratio = A.bg.winter.volume( A.winter ) / 1; A.bg.winter.fade( A.bg.winter.volume( A.winter ), 0, ratio * 2500, A.winter ); } else { A.bg.winter.stop( A.winter ); } if ( A.foley.barn_approach.playing() ) { A.foley.barn_approach.stop(); } </script>{ (if: $dodged_snake is 0)[ <p>You spot it as you (if: (passage:last of (history:))'s name is "Barn Side")[ step off the basement ladder: <script> A.foley.barn_ladder.play(); </script> ](else:)[ turn the corner: ]</p> <p>Between [[the grain->The Grain]] and [[the feed mill->Feed Mill]], a fist-sized tunnel.</p> <p>A [[coiled rattler->Rattler]] guards the mouth.</p> ](else:)[ <p>The barn basement.</p> (if: "room_key" of $inventory is 0)[ <p>[[Moulding grain's->The Grain]] piled to one side.</p> ](else:)[ <p>The grain still rots.</p> ] (if: "milled_meat" of $inventory is 0)[ <p>The [[feed mill->Feed Mill]] sits unused.</p> ](else:)[ <p>The mill has served its purpose.</p> ] (if: $dirt_speaks is 0)[ <p>[[Warm air->Warm Air]] creeps from the rattler's empty lair.</p> ] [[Go Up->Barn]] ] }\ <script> if ( !A.bg.wind.playing( A.wind ) ) { A.wind = A.bg.wind.play(); } var ratio = 1 - A.bg.wind.volume( A.wind ); A.bg.wind.fade( A.bg.wind.volume( A.wind ), 0.8, ratio * 2500, A.wind ); if ( A.bg.winter.volume( A.winter ) > 0 ) { var ratio = A.bg.winter.volume( A.winter ) / 1; A.bg.winter.fade( A.bg.winter.volume( A.winter ), 0, ratio * 2500, A.winter ); } else { A.bg.winter.stop( A.winter ); } if ( A.foley.barn_approach.playing() ) { A.foley.barn_approach.fade( A.foley.barn_approach.volume(), 0, ratio * 2500 ); } </script>{ (if: "firewood" of $inventory is 0)[ <p>You look inside the fire box; nothing but ashes.</p> <p>You'll need some [[wood to burn->Kitchen]].</p> ](else:)[ <p>You have an armful of cedar logs.</p> <p>You could [[add them to the fire box->Stoke Fire]].</p> ] }{ (if: "crowbar" of $inventory is 0)[ <p>You're not supposed to go down there.</p> <p>Besides, it's [[all boarded up->Boarded Up]].</p> ](else:)[ (unless: (history:) contains (passage:)'s name)[ <p>Heavy timber bars the door.</p> ] <p>You're not supposed to go down there.</p> <p>Then again, some doors were [[meant to be opened->Boarded Up]].</p> ] }{ (if: "crowbar" of $inventory is 1)[ <p>You hoist the crowbar and start prying out nails.</p> <p>The muscles in your arms scream.</p> <p>Before long, the [[path is clear->Cellar]].</p> <script> A.foley.cellar_pry.play(); </script> ] (else:)[ (unless: (history:) contains (passage:)'s name)[ <script> A.foley.cellar_blocked.play(); </script> ] <p>Scraps of timber bar the door. Nails all over.</p> <p>You're not getting through [[bare-handed->start]].</p> ] (if: $cellar_open is 1)[[[Go Down->Cellar]]] }{ <p>You can't remember the last time a boarder came to stay.</p> (unless: (history:) contains "Upper Rooms")[ <p>Beds lie buried under yellowing papers.</p> <p>Fly-husks litter the windows.</p> ](else:)[ <p>What's unlived-in is slowly consumed by junk.</p> ] (unless: (history:) contains "Upper Rooms")[ <p>Down at the end, of course, [[there's your room->Room Door]].</p> ](else:)[ <p>Your room is the [[last on the left->Room Door]].</p>] [[Go Back->Landing]] }\ <script> if ( A.foley.landing.playing() ) { A.foley.landing.stop(); } </script>{ (if: $pit_fed is 0 and $recipe is 0)[ <p>The Pit spreads its jaws as you approach.</p> <p>Strands of mucus dangle from the huge teeth.</p> <p>You know [[what it wants->Feed the Pit]].</p> (unless: (history:) contains (passage:)'s name)[ <script> A.foley.pit_jaws.play(); </script> ] ](else-if: $recipe is 1)[ <p>The Pit squeals as you near.</p> <p>Its hideous tongue emerges to lap the air.</p> <p>You know [[what it needs->Feed the Pit]].</p> <script> A.foley.pit_tongue.play(); </script> ] (if: "necklace" of $inventory is 0 and $seen_recipe is 1)[ <p>A [[jagged something->Salt Rune]] gleams in the dirt.</p> ] (if: "battery" of $inventory is 0)[ (if: "necklace" of $inventory is 1 and (history:) contains "Battery Desc")[ <p>[[Pop's workbench->Get Battery Clean]] moulders.</p> ] ] (if:$seen_recipe is 1)[ [[Go Down->Pit]]<br> ] [[Go Back->Cellar]] (if: $crystal_charged is 1)[ <p>The heartstone glows steadily.</p> ] }{ (if: $dodged_snake is 0)[ (go-to: "Snake Death") ](else:)[ <p>The grub exudes rancid warmth.</p> <p>You cover your mouth to keep from choking.</p> <p>Who knows what festers [[deeper in the pile->Grain Deeper]]?</p> ] [[Go Back->Barn]] }{ (if: $dodged_snake is 0)[ (go-to: "Snake Death") ](else:)[ <p>Pop spent a fortune on this thing.</p> <p>Now it's rusting in the cold.</p> ] (if: $inventory's "meat" is 1)[ (if: $meat_mill is 0)[ <p>Might as well get it [[over with->Over With]].</p> ](else:)[ <p>His dead arm is wedged in the hopper.</p> ] ](else:)[ <p>You've got nothing to grind.</p> ] (if: $meat_mill is 1)[ (if: $inventory's "gascan" is 1)[ (if: $gas_mill is 0)[ <p>You've got what fuel the [[crusher needs->Add Gas]].</p> ](else:)[ <p>The tank's full of gas.</p> ] ](else:)[ <p>The tank's empty. Needs gas.</p> ] ] (if: $meat_mill is 1 and $gas_mill is 1)[ <p>[[Everything's ready->Grind Arm]].</p> ] (else:) [ [[Go Back->Barn Noise]] ] }{ <p>No slow-blooded serpent creeps in winter.</p> <p>Something under must've forced it up.</p> <p>You stamp your foot; the tailbones chatter.</p> <p>You could [[chase it->Chase Snake]], or you could [[back away->Retreat Snake]].</p> }\ <script> A.foley.rattle.play(); </script>{ (set:$dodged_snake to 1) <p>You lunge.</p> <p>The rattler strikes, [[fangs bared->Fangs Bared]].</p> }\ <script> A.foley.snake_miss.play(); </script>{ <p>Pop's voice jars your memory: <i>Don't crowd it.</i></p> <p>Without breaking eye contact, you step back.</p> <p>Too late, your feel your heel catch on a loose stone.</p> <p>[[Down you go->Sprawled Snake]].</p> }\ <script> A.foley.snake_fall.play(); </script>{ (set: $inventory's "milk" to 1) <p>You wrestle the bucket from the hard earth.</p> <p>The weight is obscene; the icy handle burns your palms.</p> <p>Whatever you [[need to do->The Recipe]], do it fast.</p> }\ <script> A.foley.milk_pail.play(); </script>{ (set: $dirt_speaks to 1) <p>On your knees, you approach the den.</p> <p>Acid stings your nostrils.</p> <p>The dirt whispers: <i>Not here. [[Not like this->Barn Noise]].</i></p> }\ <script> A.foley.burrow.play(); </script>{ (set:$dodged_snake to 1) <p>As you lie stunned, the serpent slithers onto your chest.</p> <p>Its tongue flicks your chin.</p> <p>Suddenly, [[the ground trembles->Sprawled Leaves]].</p> }\ <script> A.foley.snake_mount.play(); if ( ! A.bg.rumble.playing( A.rumble ) ) { A.bg.rumble.play( A.rumble ); } var ratio = 1 - A.bg.rumble.volume( A.rumble ); A.bg.rumble.fade(A.bg.rumble.volume( A.rumble ), 0.85, ratio * 1000, A.rumble ); </script> { <p>The rattler stiffens, called to attention.</p> <p>For a moment the world draws no breath.</p> <p>Then the snake glides gently into the grass.</p> <p>You [[dust yourself off->Barn Noise]].</p> }\ <script> A.foley.snake_leave.play(); if (A.bg.rumble.volume( A.rumble ) > 0) { var ratio = A.bg.rumble.volume( A.rumble ) / 1; A.bg.rumble.fade( A.bg.rumble.volume( A.rumble ), 0, ratio * 3000, A.rumble ); } </script>{ <p>Lucky for you, the cold's gone to its head.</p> <p>The bite sinks harmlessly into the dirt.</p> <p>Dazed, [[the serpent flees->Barn Noise]].</p> }\ <script> A.foley.snake_flee.play(); </script>{ <p>You pump the primer and start the engine.</p> <p>The mill feeds fast and hard.</p> <p>Before long only the hand remains, senseless fingers clawing the air.</p> <p>You cover your eyes and [[force it through->Collect Meat]].</p> }\ <script> A.foley.mill_feed.play(); </script>{ (set: $stamina to -11) <p>You know you shouldn't, but you hurry.</p> <p>The snake rears, plunges its fangs into your ankle.</p> <p>It only stings [[for a moment->Snake Death Contd]].</p> }\ <script> A.foley.snake_miss.play(); if ( !A.bg.death_hum.playing( A.death_hum ) ) { A.death_hum = A.bg.death_hum.play(); } var ratio = 1 - A.bg.death_hum.volume( A.death_hum ); A.bg.death_hum.fade( A.bg.death_hum.volume( A.death_hum ), 0.75, ratio * 8000, A.death_hum ); if ( A.bg.wind.volume( A.wind ) > 0 ) { var ratio = A.bg.wind.volume( A.wind ) / 1; A.bg.wind.fade(A.bg.wind.volume( A.wind ), 0, ratio * 5000, A.wind ); } else { A.bg.wind.stop( A.wind ); } </script>{ <p>You turn toward the house.</p> <p>A feeling coats your insides, makes the world spin.</p> <p>You try to clear your throat, but the muscles won't listen.</p> <p>Your legs [[aren't working right->Snake Deather]].</p> }{ (set: $stamina to 10) (set: $inventory to (datamap: "meat", 0, "milk", 0, "salt", 0, "firewood", 0, "boots", 0, "jacket", 0, "knife", 0, "gascan", 0, "crowbar", 0, "battery", 0, "milled_meat", 0, "necklace", 0, "pickaxe", 0, "rusty_knife", 0, "room_key", 0, "camera", 0)) (set: $fire_started to 0) (set: $pit_fed to 0) (set: $door_open to 0) (set: $rat_fled to 0) (set: $looked_chest to 0) (set: $cellar_open to 0) (set: $recipe to 0) (set: $gas_mill to 0) (set: $meat_mill to 0) (set: $dodged_snake to 0) (set: $meat_added to 0) (set: $milk_added to 0) (set: $salt_added to 0) (set: $seen_recipe to 0) (set: $battery_in to 0) (set: $crystal_charged to 0) (set: $dirt_speaks to 0) (set: $charm_transformed to 0) (set: $survived_fall to 0) (set: $stopped_axe to 0) (set: $cavern_axe to "Cavern 2") }{ (if: $back is "Salt Rune")[ (set: $back to "Fasten Necklace") ](else-if: $back is "Room Door")[ (set: $back to "Upper Rooms") ](else-if: $back is "Need Charm")[ (set: $back to "Gaping Hole") ](else-if: $back is "Charred Spot")[ (set: $back to "Your Room Inner") ] <i> <p>It knows the words.</p> <p>It sings through you.</p> <p>It (link-goto: "lights the way", $back).</p> </i> }{ (set: $inventory's "milled_meat" to 1) <p>Gnarled flesh piles beneath the machine.</p> <p>You bundle as much as your kerchief will hold.</p> <p>What [[eats is hungry->The Recipe]]. It'll do.</p> }{ (set: $inventory's "room_key" to 1) <p>You sink your arm into rotting grain.</p> <p>A memory flickers; you chase it, digging with both hands.</p> <p>Finally, your fingers [[brush the prize->Room Key Get]].</p> }\ <script> A.foley.search_grain.play(); </script>{ (set: $inventory's "necklace" to 1) <p>You skirt the rupture and kneel in the damp soil.</p> <p>A halite shard, pierced by a length of twine.</p> <p>At the center, [[a pinkish mass->Necklace Desc]] glows faintly.</p> }\ <script> A.foley.necklace_find.play(); </script>{ (if: "necklace" of $inventory is 1)[ (if: $crystal_charged > 0)[ (if: $pit_fed is 0)[ <p>The compass is primed,</p> <p>but there's no path forward while [[the wyrm hungers->The Recipe]].</p> ] ](else:)[ (if: $battery_in is 1)[ <p>You inspect the heartstone.</p> <p>At either end, chiseled pores expose inner flesh.</p> <p>You insert the leads and place it on the ground.</p> <p>[[Next comes the charge->Connect Battery]].</p> <script> A.foley.stone_plug.play(); </script> ](else:)[ (unless: (history:) contains (passage:)'s name)[ <script> A.foley.charred_spot.play(); </script> ] <p>The heartstone pulses.</p> <p>Change takes energy. If nothing else, Pop taught you that.</p> (if: "battery" of $inventory is 0)[ <p>You need a cell to [[power the reaction->Your Room Inner]].</p> ](else:)[ <p>You've got the battery. [[Wire it already->Your Room Inner]].</p> ] ] ] ](else:)[ <p>Something interrupted.</p> <p>A memory of need.</p> (if: $pit_fed is 1)[ <p>The Pit is fed, but the heartstone yearns.</p> ] <p><i>Search for [[the embers below->Necklace Desc]].</i></p> ] }{ <p>You fasten a knot and drape the charm around your neck.</p> <p>It fits as well [[as you remember->Cellar]].</p> }\ <script> A.foley.necklace_tie.play(); </script>{ (set: $inventory's "salt" to 1) <p>Your scabbed forearms crawl at the sight.</p> <p>Getting it here was [[no easy task->Few Chunks]].</p> }{ (if: "milk" of $inventory is 1)[ (if: $milk_added is 0)[ <p>While the range is hot, you set the frozen [[milk to thaw->Adding Milk]].</p> ](else:)[ <p>The milky broth seethes.</p> (if: "milled_meat" of $inventory is 1)[ (if: $meat_added is 0)[ <p>You empty ground arm into [[the bubbling stock->Adding Meat]].</p> ](else:)[ <p>The meat fattens the meal.</p>] ](else:)[ (if: "meat" of $inventory is 1)[ <p>The arm won't cook whole. Need to [[break it down->The Recipe]].</p> ](else:)[ <p>There's no fat yet. [[Too thin to satisfy->The Recipe]].</p> ] ] (if: "salt" of $inventory is 1)[ (if: $salt_added is 0)[ <p>You add salt [[to the brew->Adding Salt]].</p> ](else:)[ <p>The salt gives it tang.</p>] ](else:)[ <p>It's still bland. [[Needs flavor->The Recipe]].</p>] (if: $milk_added is 1 and $salt_added is 1 and $meat_added is 1)[ <p>It's [[just about ready.->Meal Ready]]</p> ](else:)[ <p>Hurry and [[gather what you need->Kitchen]].</p> ] ] ](else:)[ (if: "meat" of $inventory is 1 or "salt" of $inventory is 1)[ <p><i>Good stew starts with hearty broth.</i></p> ] <p>The fire won't last long.</p> <p>Hurry and gather [[what you need->Kitchen]].</p> ] }{ (set: $recipe to 1) <p>The smell tickles your throat: hunger and revulsion in equal measures.</p> <p>You lift the pail from the range, careful not to spill.</p> <p>In the cellar, [[the Pit roars->Kitchen]].</p> }\ <script> A.foley.meal_ready.play(); </script>{ <p>You sling the meat over your shoulder.<p> <p>All that's left is to [[break it down->Bedroom]].</p> } <script> A.foley.arm_shoulder.play(); </script>{ <p>As it drinks, sinew thickens.</p> <p>The cellar fills with the reek of old death.</p> <p>When the pail is empty, the throat spasms.</p> <p>Beneath the earth, [[unseen organs constrict->Pit Dive 2]].</p> }\ <script> A.foley.pit_grow.play(); if ( !A.bg.rumble.playing( A.rumble ) ) { A.rumble = A.bg.rumble.play(); } var ratio = 1 - A.bg.rumble.volume( A.rumble ); A.bg.rumble.fade( A.bg.rumble.volume( A.rumble ), 0.5, ratio * 1000, A.rumble ); </script>{ (unless: (history:) contains "Gaping Hole")[ <p>When the air clears, a chasm scars the soil.</p> <p>Rancid air wafts [[from the depths->Need Charm]].</p> ](else:)[ <p>Foulness spills [[from the abyss->Need Charm]].</p> ] (if: "battery" of $inventory is 0)[ <p>[[Pop's tools->Battery]] lie buried in the rubble.</p> ] (else:) [ <p>The back wall keens dangerously.</p> ] [[Go Back->Cellar]] (if: $crystal_charged is 1)[ <p>The heartstone glows steadily.</p> ] (unless: (history:) contains "Gaping Hole")[ <script> A.foley.pit_hole.play(); </script> ] }{ <p>In a torrent of rot, the Pit retreats.</p> <p>Dust rains from above; Pop's workbench shudders, cleaves.</p> <p>You pray [[the foundation holds->Gaping Hole]].</p> }\ <script> A.foley.pit_dive.play(); if ( A.bg.rumble.volume( A.rumble ) > 0 ) { var ratio = A.bg.rumble.volume( A.rumble ) / 1; A.bg.rumble.fade( A.bg.rumble.volume( A.rumble ), 0, ratio * 3000, A.rumble ); } else { A.bg.rumble.stop( A.rumble ); } </script>{ (if: $crystal_charged > 0)[ <p>Darkness envelops, but the pulse of the heartstone reassures.</p> <p>You whisper the song [[they taught you->Song They Taught]].</p> <script> A.foley.hole_ready.play(); if ( !A.bg.heartbeat.playing( A.heartbeat ) ) { A.heartbeat = A.bg.heartbeat.play(); } var ratio = 1 - A.bg.heartbeat.volume( A.heartbeat ); A.bg.heartbeat.fade( A.bg.heartbeat.volume( A.heartbeat ), 1.0, ratio * 1500, A.heartbeat ); </script> ](else:)[ <p>Even if you survived the drop, how would you seek it?</p> <p>Something is missing.</p> <p>A compass; your [[salt-bound kindred->Necklace Desc]].</p> ] }{ (set: $inventory's "battery" to 1) <p>You make out the angles of a battery, pry it from the dirt.</p> <p>Pop kept these for the tractor he couldn't afford.</p> <p>No use letting it [[go to waste->Cellar ]].</p> }\ <script> A.foley.get_batt.play(); </script>{ <p>You reconnect the battery.</p> <p><i>Positive first. Don't burn your damn fingers</i>.</p> <p>Teeth bared, you [[flip the switch->Flip Switch]].</p> }\ <script> A.foley.battery_connect.play(); </script>{ <p>The old Exide must've melted down.</p> <p>A miniscule price to pay.</p> (if: "battery" of $inventory is 0)[ <p>Besides, Pop kept spares [[under his bench->Your Room Inner]].</p> ](else:)[ (set: $battery_in to 1) <p>You replace it with [[a fresh cell->Your Room Inner]].</p> <script> A.foley.battery_setup.play(); </script> ] }{ <p>The room ignites as current floods the copper lattice.</p> <p>Raw, crackling power [[engulfs your senses->Quiet and Bright]].</p> } <script> if (A.foley.battery_connect.playing()) { A.foley.battery_connect.stop(); } if ( A.bg.wind.playing( A.wind ) ) { A.bg.wind.stop( A.wind ); } A.foley.spark.play(); setTimeout(function() { A.foley.tinnitus.play(); A.foley.tinnitus.volume( 0 ); A.foley.tinnitus.fade( 0, 0.9, 35000 ); }, 1500); </script>{ (set: $crystal_charged to 1) <p>The crystal shudders. Within, a tiny larva convulses.</p> <p>You strip the leads and refasten the charm around your neck.</p> <p>[[The void beckons->Your Room Inner]].</p> }\ <script> A.foley.stone_pulse.play(); A.foley.larvae.play(); </script>{ (set: $stamina to 10) (set: $crystal_charged to 0) <p>At the final word, [[you drop->Free Fall]].</p> } <script> if ( !A.bg.rumble.playing( A.rumble ) ) { A.rumble = A.bg.rumble.play(); } var ratio = 1 - A.bg.rumble.volume( A.rumble ); A.bg.rumble.fade( A.bg.rumble.volume( A.rumble ), 0.5, ratio * 1000, A.rumble ); if ( A.bg.wind.volume( A.wind ) > 0 ) { var ratio = A.bg.wind.volume( A.wind ) / 1; A.bg.wind.fade( A.bg.wind.volume( A.wind ), 0, ratio * 2500, A.wind ); } else { A.bg.wind.stop( A.wind ); } </script>{ <p>Pain explodes through your lower half.</p> <p>You know without seeing that your ankle's broken.</p> <p>Foulness weeps from a gash in your shin.</p> <p>Still, you [[force yourself to rise->Enter Cavern]].</p> }\ <script> A.foley.hole_ankle.play(); if ( A.foley.hole_slide.playing() ) { A.foley.hole_slide.stop(); } </script>{ (if: $charm_transformed > 0)[ (set: $crystal_charged to 5) ](else:)[ (set: $crystal_charged to 3) ] (if: $stopped_axe is 1)[ (go-to: "Cavern Changed") ] (if: (history:) contains "Cavern 1")[ <p>The route seems longer than before.</p> ](else:)[ <p>You limp along a shallow passage.</p> ] (if: "pickaxe" of $inventory is 1)[ (unless: (saved-games:) contains "C")[ (save-game:"C") <script>console.log("saving C")</script> ] (else:)[ <script>console.log("C already exists")</script> ] <p>Primal hunger engulfs your senses.</p> ](else:)[ <p>The salt walls contract in time with your steps.</p> ] (unless: (history:) contains "Cavern 1")[ <p>Inside your boot, your shattered ankle swells.</p> ] (if: (history:) contains "Cavern 1")[ <p>Finally, you reach the junction.</p> (if: "camera" of $inventory is 0)[ <p>You notice [[something buried->Camera]] in the dust.</p> ] ](else:)[ <p>Finally, you reach a junction. ] [[Go On->Cavern 2]]<br> [[Go Here->Cavern Down]]<br> [[Go There->Cavern Up]]<br> [[Go Back->Enter Cavern]]<br> }\ <script> if ( !A.bg.rumble.playing( A.rumble ) ) { A.rumble = A.bg.rumble.play(); } var ratio = 1 - A.bg.rumble.volume( A.rumble ); A.bg.rumble.fade( A.bg.rumble.volume( A.rumble ), 0.8, ratio * 5000, A.rumble ); </script>{ (if: $charm_transformed > 0)[ (set: $crystal_charged to 5) ](else:)[ (set: $crystal_charged to 3) ] (if: $charm_transformed is 0)[ <p>The tunnel converges on [[a rocky orifice->Cavern Anus]].</p> <p>Streaks of grime paint the walls. (unless: (history:) contains (passage:)'s name)[ <script> A.foley.cave_orifice.play(); </script> ] ](else-if: $charm_transformed is 1)[ (set: $charm_transformed to 2) <p>A sucking sound fills the chamber.</p> <p>The aperture seals.</p> <p>There's no getting past now.</p> <script> A.foley.cave_suck.play(); </script> ](else:)[ <p>A dead end.</p> <p>The rock is salt-scarred.</p> ] (if: "pickaxe" of $inventory is 1)[ (if: $stopped_axe is 0)[ <p>Pick in hand, you eye the wall.</p> <p>A few well-placed blows should [[clear a path->Attack Anus]].</p> ](else:)[ <p>Crystal hardens in the fissures.<p> ] ] [[Go Back->Cavern 1]] }\ <script> if ( A.bg.boil.playing( A.boil ) ) { var ratio = A.bg.boil.volume( A.boil ) / 1; A.bg.boil.fade( A.bg.boil.volume( A.boil ), 0, ratio * 4000, A.boil ); } else { A.bg.boil.stop( A.boil ); } </script>{ (if: $charm_transformed > 0)[ (set: $crystal_charged to 6) ](else:)[ (set: $crystal_charged to 4) ] (if: $survived_fall is 0)[ (unless: (history:) contains (passage:)'s name)[ <p>The tunnel descends. Suddenly, the ground falls away.</p> <p>Reeling, you feel a blast of steam [[from the depths->Chasm]].</p> <script> A.foley.cave_steam.play(); </script> ](else:)[ (if: $charm_transformed > 0)[ (set: $crystal_charged to 0) <p>You approach the precipice.</p> <p>The fleshling's glow reveals [[a jagged slope->Chasm]].</p> ](else:)[ <p>You fail to see a way across the chasm.</p> [[Go Back->Cavern 1]] ] ] ](else:)[ <p>Your nerves stand on end.</p> <p>There's no reason to [[go back there->Cavern 1]].</p> ] }{ (if: $charm_transformed > 0)[ (set: $crystal_charged to 6) ](else:)[ (set: $crystal_charged to 4) ] (unless: (history:) contains (passage:)'s name)[ <p>A seam of amethyst runs through pale rock.</p> <p>You swear there's liquid pumping in the veins.</p> <script> A.foley.cavern_pump.play(); </script> ](else:)[ <p>Behind quartz, something blood-like courses.</p> ] (if: "pickaxe" of $inventory is 1)[ (if: $stopped_axe is 0)[ <p>Pick in hand, you eye the wall.</p> <p>A few well-placed blows might [[clear a path->Attack Anus]]. ](else:)[ Crystal hardens in the damaged face.<p> ] ] [[Go Back->Cavern 1]] }{ (set: $crystal_charged to 0) <p>Warmth streams from the abscess.</p> <p>Around your neck, the pupa cries out.</p> <p>Compelled by its need,</p> <p>you [[thrust your arm through->Cavern Pre Sweat]].</p> }\ <script> A.foley.cave_thrust.play(); </script>{ <p>A dampness coats your fingers. You draw back your arm.</p> <p>Something like sweat, but thicker, rust-colored.</p> <p>In its cocoon, the fleshling thrills.</p> <p>You dribble the liquid [[through the pores->Larvae Birth]].</p> }\ <script> A.foley.fleshling_feed.play(); </script>{ (set: $charm_transformed to 1) <p>Before your eyes, the tiny trunk sprouts fibrous limbs.</p> <p>The fractured shell becomes a carapace.</p> <p>There's no face, but a forked tongue tastes the air.</p> <p>It climbs your arm to perch [[on your shoulder->Cavern 2]].</p> }\ <script> A.foley.fleshling_grow.play(); </script>{ (set: $crystal_charged to 0) <p>In the dim, you figure eight feet across.</p> <p>Longshot for a busted leg.</p> <p>Then the light catches [[a narrow shelf->Cross Gap]].</p> }{ (set: $crystal_charged to 0) <p>The fleshling purrs.</p> <p>Your stomach knots.</p> <p>Stepping back, you [[draw a breath->Last Second Lunge]].</p> }\ <script> A.foley.cave_purr.play(); </script>{ (set: $crystal_charged to 0) (unless: (history:) contains "Far Side")[ <p>Reaching your goal, your heart sinks.</p> <p>A wall of rubble blocks the path.</p> ](else:)[ <p>An old cave-in blocks the path.</p> ] (if: "rusty_knife" of $inventory is 0)[ <p>[[Human bones->Bones]] protrude from the debris.</p> ] (if: "pickaxe" of $inventory is 0)[ <p>Near the torso, a [[rusty pickaxe mourns->Pickaxe]].</p> ] (if: (history:) contains "Far Side")[ <p>The fleshling emits a dull aura. ] (if: "pickaxe" of $inventory is 1 and "rusty_knife" of $inventory is 1)[ You shudder at the thought of [[finding your way back->Gap Return]]. ] }\ <script> if ( A.bg.rumble.volume( A.rumble ) > 0.5 ) { var ratio = A.bg.rumble.volume( A.rumble ) / 1; A.bg.rumble.fade( A.bg.rumble.volume( A.rumble ), 0.5, ratio * 2500, A.rumble ); } </script>{ (set: $crystal_charged to 0) (if: $charm_transformed > 0)[ <p>Squinting, you set the creature down.</p> <p>To your surprise, it scrambles along the wall to [[the far side->Jump Gap]].</p> <script> A.foley.flesh_cross.play(); </script> ](else:)[ <p>You strain to see the other side; nothing but pitch.</p> <p>Jumping [[would be suicide->Cavern 1]].</p> (unless: (history:) contains (passage:)'s name)[ <script> A.foley.cave_pebbles.play(); </script> ] ] }{ <p>A uniform clings to the muckman's remains:</p> <p><i>Norwid Salt Co.</i> threaded on the sleeve.</p> <p>With your good foot, you nudge the corpse.</p> <p>A [[small blade->Metal Blade]] clangs loose.</p> }\ <script> A.foley.old_blade.play(); </script>{ (set: $inventory's "pickaxe" to 1) <p>You inspect the long-buried tool.</p> <p>Wear's mostly on the surface.</p> <p>Still [[good for something->Far Side]].</p> }\ <script> A.foley.get_pickaxe.play(); </script>{ (set: $inventory's "rusty_knife" to 1) <p>Old blood stains the leather hilt.</p> <i>Some debts are cancelled deep.</i> <p>Suddenly, the knife is in your hand.</p> <p>It rests easy [[against your palm->Tuck Blade]].</p> }\ <script> A.foley.get_blade.play(); </script>{ <p>First things first: you lob the pickaxe across the chasm.</p> <p>It lands clear with a satisfying crunch.</p> <p>The fleshling skitters after, back to safety.</p> <p>Finally, you inch [[onto the rock shelf->Shelf Collapse]].</p> }\ <script> A.foley.throw_pickaxe.play(); </script>{ (if: $charm_transformed > 0)[ (set: $crystal_charged to 5) ](else:)[ (set: $crystal_charged to 3)] <p>In the strange light, a narrow cavern takes shape.</p> <p>The stink, the ur-heat stir some memory within you.</p> [[Go Through->Cavern 1]] }{ <p>Immediately, you feel the wall crumbling.</p> <p>As your foothold collapses, you [[dive into open air->Dive For Edge]].</p> }\ <script> A.foley.cave_shelf.play(); </script>{ <p>The sense of speed is beyond measure.</p> <p>A feeling like regret arrives.</p> <p>It seems stupidly practical.<p> <p>[[Then,->Plummet Up]]</p> }\ <script> A.foley.cave_plummet_1.play(); </script>{ <p>Onrushing air. Tidal, massive.</p> <p>As quickly as you fell,</p> <p>you're propelled upwards,</p> <p>scalded [[by stygian jets->Safe Landing]].</p> }\ <script> A.foley.cave_rise.play(); if ( A.bg.tuba.playing( A.tuba ) ) { var ratio = A.bg.tuba.volume( A.tuba ) / 1; A.bg.tuba.fade( A.bg.tuba.volume( A.tuba ), 0, ratio * 5000, A.tuba ); } else { A.bg.tuba.stop( A.tuba ); } </script>{ (set: $survived_fall to 1) <p>The updraft dumps you at the cliff's edge.</p> <p>In the shadows, the fleshling urges.</p> <p>You rise stiffly, search the for pick.</p> <p>You've got to finish [[what you started->Cavern 1]].</p> }\ <script> A.foley.cave_safe_land.play(); </script>{ (if: (passage: last of (history:))'s name is "Cavern 2")[ (set: $cavern_axe to "Cavern 2") ](else:)[ (set: $cavern_axe to "Cavern Up") ] (set: $crystal_charged to 0) <p>You test your aim, draw breath, swing.</p> <p>As the wall fractures, a burning mist fills the chamber.</p> <p>At once, the fleshling is upon you, [[shrieking->Fleshling Shriek]].</p> }\ <script> A.foley.cave_smash.play(); </script>{ (set: $stopped_axe to 1) <p>The nymph has led you this far. Better to heed it.</p> <p>Wheezing, you lower the bloodied pick.</p> <p>Before your eyes, bruise-quartz fills shattered rock.</p> <p>You'll have (link-goto: "find another way", $cavern_axe).</p> }\ <script> A.foley.cave_relent.play(); if ( A.bg.boil.playing( A.boil ) ) { var ratio = A.bg.boil.volume( A.boil ) / 1; A.bg.boil.fade( A.bg.boil.volume( A.boil ), 0, ratio * 6000, A.boil ); } else { A.bg.boil.stop( A.boil ); } </script>{ <p>Shirking the creature, you strike again.</p> <p>A plume of gore jets.</p> <p>The fleshling's wail rises to fever pitch.</p> <p>You [[clutch your ears->Axe Silence]] in agony.</p> }\ <script> A.foley.cave_persist.play(); if ( A.bg.rumble.volume( A.rumble ) > 0 ) { var ratio = A.bg.rumble.volume( A.rumble ) / 1; A.bg.rumble.fade( A.bg.rumble.volume( A.rumble ), 0, ratio * 8000, A.rumble ); } else { A.bg.rumble.stop( A.rumble ); } if ( A.bg.boil.volume( A.boil ) > 0 ) { var ratio = A.bg.boil.volume( A.boil ) / 1; A.bg.boil.fade( A.bg.boil.volume( A.boil ), 0, ratio * 8000, A.boil ); } else { A.bg.boil.stop( A.boil ); } </script>{ <p>You wrench the creature from your chest.</p> <p>It howls, sending shockwaves through your spine.</p> <p>You regard the eyeless face.</p> <p>Could be [[a portent->Stop Axe]]. Could be [[a ruse->Keep Axing]].</p> }\ <script> A.foley.fleshling_protest.play(); if ( !A.bg.boil.playing( A.boil ) ) { A.boil = A.bg.boil.play(); } var ratio = 1 - A.bg.boil.volume( A.boil ); A.bg.boil.fade( A.bg.boil.volume( A.boil ), 0.8, ratio * 5000, A.boil ); </script>{ <p>Madness falls to silence.</p> <p>Feeling returns to your arms; sight and sound do not.</p> <p>Blindly, you probe the cavern walls.</p> <p>There is [[only jagged pulp->Small Comfort Pre Death]].</p> }{ <p>It's not the end you dreamt of.</p> <p>Lost in hallowed depths, wounds curdling to rot.</p> <p>The betrayed fleshling remains by your side;</p> <p>its small limbs [[give sparse comfort->Small Comfort Death]].</p> }{ <p>You prod with your toes, stupidly.</p> <p>A rat bursts through, sinks its fangs into your heel.</p> <p>Pain-wracked, [[you tumble backwards->Rat Death 2]].</p> }\ <script> A.foley.rat_stumble.play(); if ( !A.bg.death_hum.playing( A.death_hum ) ) { A.death_hum = A.bg.death_hum.play(); } var ratio = 1 - A.bg.death_hum.volume( A.death_hum ); A.bg.death_hum.fade( A.bg.death_hum.volume( A.death_hum ), 0.75, ratio * 8000, A.death_hum ); if ( A.bg.winter.volume( A.winter ) > 0 ) { var ratio = A.bg.winter.volume( A.winter ) / 1; A.bg.winter.fade(A.bg.winter.volume( A.winter ), 0, ratio * 5000, A.winter ); } else { A.bg.winter.stop( A.winter ); } </script>{ <p>You reach over the nest, realize too late.</p> <p>A rat lunges, sinks its teeth into your palm.</p> <p>Pain-wracked, [[you collapse->Rat Death]].</p> }\ <script> A.foley.rat_stumble.play(); if ( !A.bg.death_hum.playing( A.death_hum ) ) { A.death_hum = A.bg.death_hum.play(); } var ratio = 1 - A.bg.death_hum.volume( A.death_hum ); A.bg.death_hum.fade( A.bg.death_hum.volume( A.death_hum ), 0.75, ratio * 8000, A.death_hum ); if ( A.bg.winter.volume( A.winter ) > 0 ) { var ratio = A.bg.winter.volume( A.winter ) / 1; A.bg.winter.fade(A.bg.winter.volume( A.winter ), 0, ratio * 5000, A.winter ); } else { A.bg.winter.stop( A.winter ); } </script>{ (set: $stamina to -11) <p>In time, it too falls quiet.</p> <p>The days loop back on themselves.</p> <p>You roam, or linger, or fall endlessly.</p> <p>Embracing the void, you fade.</p> <span class="nodeath">[Stop wasting time. You've promises to keep.]<restart|</span> (click: ?restart)[ (if: (saved-games:) contains "C")[ (set: $current_save to "C") ] <script>console.log("loaded C")</script> (goto: "Claw Back") ] }\ <script> $( '.nodeath' ).css( 'opacity', 0 ); $( '.nodeath' ).css( 'pointer-events', 'none' ); setTimeout( function() { $( '.nodeath' ).css( 'opacity', 1 ); }, 1500 ); $( '.nodeath' ).on( 'transitionend webkitTransitionEnd', function() { $( '.nodeath' ).css( 'pointer-events', 'auto' ); }); </script> { (set: $crystal_charged to 0) <p>Seeking the junction, you find the cavern changed.</p> <p>Crystals fine as hair brim from every wall.</p> <p>The floor softens, buckles underfoot.</p> <p>Atop your shoulder, [[the creature trembles->Membrane]].</p> }\ <script> if ( A.bg.rumble.volume( A.rumble ) > 0.2 ) { var ratio = A.bg.rumble.volume( A.rumble ) / 1; A.bg.rumble.fade( A.bg.rumble.volume( A.rumble ), 0.2, ratio * 8000, A.rumble ); } else { A.bg.rumble.stop( A.rumble ); } if ( !A.bg.sanctum.playing( A.sanctum ) ) { A.sanctum = A.bg.sanctum.play(); } var ratio = 1 - A.bg.sanctum.volume( A.sanctum ); A.bg.sanctum.fade( A.bg.sanctum.volume( A.sanctum ), 0.65, ratio * 4000, A.sanctum ); </script>{ <p>You round a corner to face it:</p> <p>taut muscle stretched from floor to ceiling.</p> <p>The tunnel seems alive, enfleshed.</p> <p>Drawn forth, [[you enter->Womb]].</p> }\ <script> </script>{ <p>Within, Center's slick innards throb.</p> <p>The fleshling leaps free.</p> <p>You watch it scurry under some prepuce.</p> <p>An ache rises [[in your chest->Meet Center]].</p> }\ <script> A.foley.fleshling_leave.play(); </script>{ <p>Every born thing knows its maker.</p> <p>You're no different.</p> <p>Doesn't matter how far you stray.</p> <p>The beauty of it drops you [[to your knees->Unborn Memory]].</p> }\ <script> A.foley.sanctum_kneel.play(); </script>{ <p>Before you, in a tapestry of gore, the newborn swims.</p> <p>Tiny ring of teeth; belly swollen and pink.</p> <p>So much [[ like you remember->Self Memory]].</p> }\ <script> A.foley.sanctum_unborn.play(); </script>{ <i> <p>Back then we had nothing.</p> <p>Ma was barren. The crops rotted.</p> <p>My limbs ached so I couldn't work.</p> <p>Then [[you came along->Salt Memory]].</p> </i> }\ <script> if ( !A.bg.heartbeat.playing( A.heartbeat ) ) { A.heartbeat = A.bg.heartbeat.play(); } var ratio = 1 - A.bg.heartbeat.volume( A.heartbeat ); A.bg.heartbeat.fade( A.bg.heartbeat.volume( A.heartbeat ), 1.0, ratio * 4000, A.heartbeat ); </script>{ (set: $stamina to -11) <p>A patch of earth beckons; you sit down hard.</p> <p>You realize what's coming when your eyelids hang themselves.</p> <p>Ah, well. Better just to sleep.</p> <span class="nodeath">[We raised you smarter than that. Get up.]<restart|</span> (click: ?restart)[ (if: (saved-games:) contains "A")[ (set: $current_save to "A") ] (goto: "Claw Back") <script> if ( A.bg.death_hum.volume( A.death_hum ) > 0 ) { A.bg.death_hum.fade( A.bg.death_hum.volume( A.death_hum ), 0, 4000, A.death_hum ); } </script> ] }\ <script> $( '.nodeath' ).css( 'opacity', 0 ); $( '.nodeath' ).css( 'pointer-events', 'none' ); setTimeout( function() { $( '.nodeath' ).css( 'opacity', 1 ); }, 1500 ); $( '.nodeath' ).on( 'transitionend webkitTransitionEnd', function() { $( '.nodeath' ).css( 'pointer-events', 'auto' ); }); </script>{ (set: $looked_chest to 1) <p>Pop in the mines holding what looks like a baby.</p> <p>The picture-taker's shadow falls across the frame.</p> <p>Something oozes from the cavern walls.</p> <p>[[You feel sick->Attic]].</p> <script> A.foley.photo.play(); if ( !A.bg.rumble.playing( A.rumble ) ) { A.rumble = A.bg.rumble.play(); } var ratio = 1 - A.bg.rumble.volume( A.rumble ); A.bg.rumble.fade( A.bg.rumble.volume( A.rumble ), 0.75, ratio * 1000, A.rumble ); </script> }{ <p>Center lowers the fetal sac.</p> <p>Fragile tendrils cradle eager life.</p> <p>The pickaxe is too crude for this task.</p> <p>You withdraw [[the miner's blade->Free Unborn]].</p> }\ <script> A.foley.sanctum_unsheath.play(); </script>{ <i> <p>The moment we found you, we knew.</p> <p>Wasn't hard to see the reason in it.</p> <p>There was fear, too. Of course.</p> <p>But some things are [[worth the price->Slice Unborn]].</p> </i> }{ <p>One by one, you sever the umbilici.</p> <p>Center squirms; it's never easy letting go.</p> <p>You learned that [[the hard way->The Hard Way]].</p> }\ <script> A.foley.sanctum_sever.play(); </script>{ <p>Walls slick with viscera guide you deeper.</p> <p>Finally, just as you gain your bearings,</p> <p>You [[tumble to hard earth->Ankle Broken]].</p> }\ <script> A.foley.hole_slide.play(); </script>{ <i> <p>When the time comes, you'll feel it.</p> <p>Don't worry after us.</p> <p>We've made our peace.</p> <p>We wouldn't [[change a thing->Change Things]].</p> </i> }\ <script> </script>{ <p>They lied.</p> <p>When the pipes froze.</p> <p>When the fire wouldn't start.</p> <p>When the sun refused to rise.</p> <p>They [[turned against you->Against You]].</p> }\ <script> A.foley.sanctum_ring.play(); </script>{ <p>The newborn twitches as you cut the last cord.</p> <p>From sulfurous warmth, you receive your kin.</p> <p>Suddenly, the cavern rocks.</p> <p>Center unleashes [[a seismic moan->Center Wail]].</p> }\ <script> A.foley.sanctum_rumble.play(); if ( !A.bg.rumble.playing( A.rumble ) ) { A.rumble = A.bg.rumble.play(); } var ratio = 1 - A.bg.rumble.volume( A.rumble ); A.bg.rumble.fade( A.bg.rumble.volume( A.rumble ), 0.5, ratio * 5000, A.rumble ); if ( A.bg.sanctum.volume( A.sanctum ) > 0.2 ) { var ratio = A.bg.sanctum.volume( A.sanctum ) / 1; A.bg.sanctum.fade( A.bg.sanctum.volume( A.sanctum ), 0.2, ratio * 5000, A.sanctum ); } if ( A.bg.heartbeat.playing( A.heartbeat ) ) { var ratio = A.bg.heartbeat.volume( A.heartbeat ) / 1; A.bg.heartbeat.fade( A.bg.heartbeat.volume( A.heartbeat ), 0, ratio * 5000, A.heartbeat ); } else { A.bg.heartbeat.stop( A.heartbeat ); } </script> { <p>In the narthex, pillars of salt rupture.</p> <p>The wyrm's visceral walls constrict.</p> <p>You clutch the infant [[to your chest->Ice Scream]].</p> }\ <script> A.foley.sanctum_collapse.play(); </script>{ <p>Center's abominable weight bears inward.</p> <p>Forgotten nerves harden into altars of pain.</p> <p>You fight for air, but it's no use.</p> <p>Only the infant's beating heart [[anchors you->Just As Bad]].</p> }\ <script> if ( !A.bg.bells.playing( A.bells ) ) { A.bells = A.bg.bells.play(); } var ratio = 1 - A.bg.bells.volume( A.bells ); A.bg.bells.fade( A.bg.bells.volume( A.bells ), 0.7, ratio * 5000, A.bells ); </script>{ <i> <p>To see your fledgling cut loose,</p> <p>gone to take its place in the order of things,</p> <p>is the [[burden of creation->Pre Pre Expunged]].</p> </i> }\ <script> if ( A.bg.sanctum.volume( A.sanctum ) > 0 ) { var ratio = A.bg.sanctum.volume( A.sanctum ) / 1; A.bg.sanctum.fade( A.bg.sanctum.volume( A.sanctum ), 0, ratio * 5000, A.sanctum ); } else { A.bg.sanctum.stop( A.sanctum ); } </script>{ <p>Life fades. With it, memory.</p> <p>Center's mass bores through the earth.</p> <p>Blindly, like a wave under ice.</p> <p>You drift in the [[belly of the One->Loyalty]].</p> }{ (set: $crystal_charged to 0) <p>The light of the world spills in.</p> (unless: (history:) contains ("Hillside"))[ <p>You find yourself on [[a barren slope->Hillside]].</p> ](else:)[ <p>Frozen fields thaw in the winter sun.</p> ] (unless: (history:) contains ("The Purpose"))[ <p>In your arms, [[renewal->The Purpose]]. ](else:)[ <p>The newborn shivers.</p> ] (if: (history:) contains "Hillside")[ (if: (history:) contains "The Purpose")[ <p>[[A figure approaches->Figure Approach]]. <script> A.foley.striding.play(); </script> ] ] }\ <script> </script>{ <p>Your fingers brush the newborn's face.</p> <p>Tender, needful thing.</p> <p>Instinctively, you draw it closer.</p> <p><i>You had a father once. [[Raised you right->Expunged]].</i></p> }\ <script> A.foley.renewal.play(); </script>{ (set: $seen_hillside to 1) <p>Patches of earth scar the snow-cover.</p> <p>A muddy path winds to the crest.</p> <p>There, [[a rough-hewn house->Expunged]] stands.</p> }{ <p>From the hilltop, striding, she nears.</p> <p>A woman, about your age.</p> <p>[[Her expression is bleak->Extend Arms]].</p> }{ <p>You raise your arms, pleading.</p> <p>Seeing the child, she stops short.</p> <p>You try to speak, but all that comes is a rasp.</p> <p>Her eyes dart between yours and the [[small, limp body->Takes the babe]].</p> }\ <script> A.foley.take_babe.play(); </script>{ <p>Infant swaddled, the woman quickens up the hill.</p> <p>Slowly, painfully, you follow.</p> <p>Your legs ache like they've never known [[solid ground->The Sun Dips]].</p> }\ <script> A.foley.follow_babe.play(); </script>{ <p>Hickory smoke curls from the chimney.</p> <p>The smell makes your mouth water.</p> <p>You stumble inside, [[pry off your boots->Foyer End]].</p> }\ <script> A.foley.stumble_in.play(); if ( A.bg.spring.volume( A.spring ) > 0 ) { var ratio = A.bg.spring.volume( A.spring ) / 1; A.bg.spring.fade( A.bg.spring.volume( A.spring ), 0, ratio * 3000, A.spring ); } if ( !A.bg.fireplace.playing( A.fireplace ) ) { A.fireplace = A.bg.fireplace.play(); console.log("playing"+A.fireplace); } var ratio = 1 - A.bg.fireplace.volume( A.fireplace ); A.bg.fireplace.fade( A.bg.fireplace.volume( A.fireplace ), 0.7, ratio * 8000, A.fireplace ); </script>{ <p>Something savory bubbles on the stove.</p> <p>As she stirs, the woman sings.</p> <p>The tune [[sparks a memory->Tune Sparks]].</p> }\ <script> A.foley.woman_hum.play(); if (A.foley.stumble_in.playing) { A.foley.stumble_in.stop(); } </script>{ (set: $crystal_charged to 0) (set: $inventory's "camera" to 1) <p>You shake dirt from the ancient Brownie.</p> <p>The lens is jammed, but the rear panel opens.</p> <p>Empty; whoever left it was smart enough to [[take the film->Cavern 1]].</p> }\ <script> A.foley.camera.play(); </script>{ <p>Among the cedar logs, crumpled paper burns.</p> <p>Short verses in harsh script;</p> <p>promises meant to smolder.</p> <p>As you watch, they [[flicker to dust->Sit Eat]].</p> }\ <script> A.foley.paper_burn.play(); </script>{ <p>The woman reappears, kettle in tow.</p> <p>Across her chest, the slung newborn dreams.</p> <p>She sets supper on the hearth, [[offers you a bowl->Offer Bowl]].</p> }\ <script> A.foley.offer_bowl.play(); </script>{ <p>Sated, you retire to a worn chair.</p> <p>The woman rocks in her own, caressing the sleeping babe.</p> <p>After a while, she [[regards you again->Terse]].</p> }\ <script> A.foley.retire_chair.play(); A.foley.rocking_chair.play(); </script>{ <p>Senses flare: heat, cold, pressure, release.</p> <p>Still, no pattern emerges; no history reveals itself.</p> <p>All that's for certain is [[you've come home->Come Home]].</p> }\ <script> if ( !A.bg.heartbeat.playing( A.heartbeat ) ) { A.heartbeat = A.bg.heartbeat.play(); } var ratio = 1 - A.bg.heartbeat.volume( A.heartbeat ); A.bg.heartbeat.fade( A.bg.heartbeat.volume( A.heartbeat ), 1.0, ratio * 4000, A.heartbeat ); </script>{ <p>Whatever's lost, you'll search til you find it.</p> <p>Whatever comes, she'll keep the child fed.</p> <p>Together, you'll teach [[what needs knowing->Mirror]].</p> }{ <p>Night settles over the house.</p> <p>At the edge of sleep, your eyes wander.</p> <p>A darkened windows scars the empty wall.</p> <p>The glass catches your reflection, [[throws it back->Mirror See]].</p> }{ <p>The face watching you seems out of step with time.</p> <p>A father's, a child's, [[an unborn son's->You Smile]].</p> }{ <p>The house is sparse but welcoming.</p> (unless: (history:) contains "End Kid Kid Room")[ <p>Rustic hand-me-downs crowd the parlor.</p> ] (unless: (history:) contains "End Bedroom")[ <p>Across the hall is [[a private room->End Bedroom]].</p> ](else:)[ <p>The bedroom is comfortably plain.</p> ] (unless: (history:) contains "Voice Hums")[ <p>In the kitchen, [[a voice hums->Voice Hums]].</p> ](else:)[ <p>Supper stews in the kitchen.</p> ] (unless: (history:) contains "End Kid Kid Room")[ <p>Crooked stairs lead to [[the second floor->End Kid Room]].</p> ](else:)[ (if: (history:) contains "Voice Hums" and (history:) contains "End Bedroom")[ <p>The upper rooms keep their peace.</p> <p>Exhausted, you seek the [[warmth of the hearth->Fire End]].</p> ](else:)[ <p>The upper rooms keep their peace.</p> ] ] }\ <script> if ( !A.bg.fireplace.playing( A.fireplace ) ) { A.fireplace = A.bg.fireplace.play(); } var ratio = 1 - A.bg.fireplace.volume( A.fireplace ); A.bg.fireplace.fade( A.bg.fireplace.volume( A.fireplace ), 0.7, ratio * 4000, A.fireplace ); if ( A.foley.follow_babe.playing() ) { A.foley.follow_babe.stop(); } if ( A.foley.up_hill.playing() ) { A.foley.up_hill.stop(); } </script>{ <p>The door creaks as you enter. Needs oil.</p> <p>Other than a dusty closet, the walls are bare.</p> <p>You take off your coat and [[hang it up->Quilt Pattern]].</p> }\ <script> A.foley.end_bedroom.play(); if (A.foley.stumble_in.playing) { A.foley.stumble_in.stop(); } if ( A.bg.fireplace.volume( A.fireplace ) > 0.5 ) { var ratio = A.bg.fireplace.volume( A.fireplace ) / 1; A.bg.fireplace.fade( A.bg.fireplace.volume( A.fireplace ), 0.5, ratio * 3000, A.fireplace ); } </script>{ <p>Most of the rooms are junk-cluttered.</p> <p>Old clothes, books — a generation's worth at least.</p> <p>The one at the end [[seems different->End Kid Kid Room]].</p> }\ <script> if (A.foley.stumble_in.playing) { A.foley.stumble_in.stop(); } A.foley.kid_room.play(); if ( A.bg.fireplace.volume( A.fireplace ) > 0.3 ) { var ratio = A.bg.fireplace.volume( A.fireplace ) / 1; A.bg.fireplace.fade( A.bg.fireplace.volume( A.fireplace ), 0.3, ratio * 3000, A.fireplace ); } </script>{ <p>You stretch out beside the glowing embers.</p> <p>The heat soothes your battered body.</p> <p>Something in the flames [[catches your eye->Tinder]].</p> }\ <script> A.foley.stretch_out.play(); if ( !A.bg.fireplace.playing( A.fireplace ) ) { A.fireplace = A.bg.fireplace.play(); } var ratio = 1 - A.bg.fireplace.volume( A.fireplace ); A.bg.fireplace.fade( A.bg.fireplace.volume( A.fireplace ), 1.0, ratio * 4000, A.fireplace ); </script>{ (set: $stamina to 10) (unless: (saved-games:) contains "B")[ (save-game:"B") <script>console.log("saving B")</script> ](else:)[ <script>console.log("B already exists")</script> ] (set: $cellar_open to 1) <p>The cellar is shadows and damp earth.</p> (unless: (history:) contains "Cellar")[ <p>The stench of bile rises as you descend.</p> <p>You hear it before [[you see it->See the Pit]].</p> <script> A.foley.pit_intro.play(); </script> ](else:)[ (if: $pit_fed is 0)[ <p>Beneath you, the soil churns with [[obscene life->See the Pit]].</p> ](else:)[ <p>The Pit has descended, but the stink remains.</p> <p>Deep fissures [[carve the soil->Gaping Hole]].</p> ] (if: $pit_fed is 1 and "battery" of $inventory is 0)[ <p>Pop's workbench is upended, [[debris everywhere->Battery]].</p> ] ] [[Go Up->start]]<br> (if: $seen_recipe is 1)[ [[Go Out->Wood Pile]] ] } <script> if ( !A.bg.wind.playing( A.wind ) ) { A.wind = A.bg.wind.play(); } var ratio = 1 - A.bg.wind.volume( A.wind ); A.bg.wind.fade( A.bg.wind.volume( A.wind ), 0.9, ratio * 2500, A.wind ); if ( A.bg.winter.volume( A.winter ) > 0 ) { var ratio = A.bg.winter.volume( A.winter ) / 1; A.bg.winter.fade( A.bg.winter.volume( A.winter ), 0, ratio * 2500, A.winter ); } else { A.bg.winter.stop( A.winter ); } </script>{ <p>Minutes to hours to days, [[time unfurls->Without Distance]].</p> }\ <script> </script>{ <p>Ma and Pop tried their best.</p> <p>But fear betrays knowing.</p> <p>In the end,</p> <p>the path [[was yours alone->Pre Expunged]].</p> }{ <p>You feel lighter as you cross the threshold.</p> <p>A picture window overlooks the yard.</p> <p>The single bed is neatly kept.</p> <p>Perfect for [[a growing boy->Foyer End]].</p> }\ <script> A.foley.child_room.play(); </script>{ <p>This time, a glimmer of comfort crosses her face.</p> <p>Terse, but unafraid.</p> <p>A weight shifts, settles, takes root.</p> <p>You feel your [[limbs grow heavy->Unafraid]].</p> }{ <p>You smile.</p> <p>A sucking sound fills the room as your ring of teeth dilates.</p> <p>Narrow, perfect incisors, [[glistening in the firelight->Last But But]].</p> }\ <script> A.foley.suck_face.play(); </script>{ <p>Sylvite constricts, gnawing your wrists.</p> <p>At limit of your reach, you feel it:</p> <p>the expanse of [[another chamber->Cavern Sweat]].</p> }\ <script> A.foley.cave_reach.play(); </script>{ <p>The key to your room.</p> <p>Oily goo coats the tarnished brass.</p> <p>You clean it and slip it into your pocket.</p> <p>[[Where it belongs->Barn Noise]].</p> }\ <script> A.foley.find_key.play(); </script>{ <p>Nothing lasts.</p> <p>But you wouldn't</p> <p>change a thing.</p> <br> <br> <br> <span class="fader">[[Credits->credits]]</span> }\ <script> if ( A.bg.heartbeat.playing( A.heartbeat ) ) { var ratio = A.bg.heartbeat.volume( A.heartbeat ) / 1; A.bg.heartbeat.fade( A.bg.heartbeat.volume( A.heartbeat ), 0, ratio * 3000, A.heartbeat ); } else { A.bg.heartbeat.stop( A.heartbeat ); } $( '.fader' ).css( 'opacity', 0 ); setTimeout(function(){ $( '.fader' ).css( 'opacity', 1 ); }, 2000); </script>{ <p><span class="loader"></span></p> <p><span class="fader">[[U n b e c o m i n g->start]]</span></p> }\ <script> $( '.loader' ).css( 'text-align', 'center' ); $( '.fader' ).css( 'opacity', 0 ); $( '.fader' ).css( 'pointer-events', 'none' ); var load = setInterval ( function() { if ( Mgr.audio_loaded ) { setTimeout( function() { $( '.fader' ).css( 'opacity', 1 ); }, 1500); $( '.fader' ).on( 'transitionend webkitTransitionEnd', function() { $( '.fader' ).css( 'pointer-events', 'auto' ); }); $( '.loader' ).css( 'display', 'none' ); clearInterval( load ); } else { $(".loader").html( 'Loading...' + Mgr.load_percent.toString() + '%' ); console.log(Mgr.load_percent); } }, 5); </script>{ <div class="credits"> <h3>narrative, design, & sound editing:</h3> <h3><b>bryan depuy</b></h3> <h3>source audio (via freesound.org):</h3> <p>"doorcreak" by <b>0xmusex0</b></p> <p>"falling scrap metal" by <b>13fpanska`_`tolar`_`david</b></p> <p>"hair brushing" by <b>13gpanska`_`stanek`_`vojtech</b></p> <p>"theladysaysno" by <b>acclivity</b></p> <p>"door open close" by <b>adam`_`n</b></p> <p>"plunger 3" by <b>adam`_`n</b></p> <p>"rocks" by <b>adamgryu</b></p> <p>"pickaxe 3" by <b>agaxly</b></p> <p>"dog retreiver fast panting 16" by <b>agfx</b></p> <p>"cracking celery 01" by <b>aglinder</b></p> <p>"impacts 01" by <b>aglinder</b></p> <p>"syn whoosh 01" by <b>aishabag23</b></p> <p>"rattling door" by <b>alegemaate</b></p> <p>"leather rubbing foley sound" by <b>allanz10d</b></p> <p>"mountain climber or skydiver opening parachute" by <b>allanz10d</b></p> <p>"steam" by <b>altfuture</b></p> <p>"tying shoe laces edited" by <b>amberdemeillon</b></p> <p>"tinfoil 04" by <b>anthousai</b></p> <p>"water ice cooler dropping a chunk of ice into cooler 04" by <b>anthousai</b></p> <p>"slime 13" by <b>archos</b></p> <p>"clarinet low a" by <b>arightwizard</b></p> <p>"breaking ice" by <b>aurelon</b></p> <p>"crowbar hitting metal clang" by <b>australopithecusman</b></p> <p>"clay in water" by <b>ayamahambho</b></p> <p>"gasp" by <b>bacruz666</b></p> <p>"rope cracking" by <b>bahaish</b></p> <p>"garbage disposal" by <b>baidonovan</b></p> <p>"caged birds need h2o light" by <b>batchku</b></p> <p>"ceramic plate set down" by <b>bbrocer</b></p> <p>"slow pebble tumble" by <b>bbrocer</b></p> <p>"drips in mine" by <b>benboncan</b></p> <p>"fly 1" by <b>benboncan</b></p> <p>"rockfall in mine" by <b>benboncan</b></p> <p>"door slam 2" by <b>bennstir</b></p> <p>"dangerous mine shaft" by <b>bkamuse</b></p> <p>"sfx person falling on wooden floor" by <b>blouhond</b></p> <p>"animal cartoon cooing curr" by <b>breviceps</b></p> <p>"gagging vomit throwing up" by <b>breviceps</b></p> <p>"water boiling" by <b>brianobush</b></p> <p>"foley tossing wood onto a woodpile" by <b>cgeffex</b></p> <p>"old metal pail" by <b>cgeffex</b></p> <p>"bike gear shift" by <b>chemicatz</b></p> <p>"glass smash" by <b>chewiesmissus</b></p> <p>"natural sandy soil dirt spade shovel digging scraping" by <b>cjfilmmaker</b></p> <p>"metal scrape04" by <b>claire`_`h</b></p> <p>"hard candy bone crunch" by <b>cliftonmcarlson</b></p> <p>"owi coughing or choking" by <b>cllari</b></p> <p>"dogs drinking liquids" by <b>cognito`_`perceptu</b></p> <p>"wind gust" by <b>crashoverride61088</b></p> <p>"flask" by <b>cupido`_`1</b></p> <p>"picking up dvds" by <b>daboy291</b></p> <p>"belt unbuckle" by <b>danhelbling</b></p> <p>"feet land on gravel" by <b>danhelbling</b></p> <p>"bigchain" by <b>daveincamas</b></p> <p>"plates set down" by <b>davjanus</b></p> <p>"roasting frying meat cooking sizzling" by <b>dawnton</b></p> <p>"laying down on getting off of creaky bed" by <b>deleted`_`user`_`7146007</b></p> <p>"pebbles" by <b>dersuperanton</b></p> <p>"dirt slide 02" by <b>dheming</b></p> <p>"whoosh short low" by <b>djt4nn3r</b></p> <p>"080904 01 grinder metal" by <b>dkustic</b></p> <p>"20110503 fireplace 00" by <b>dobroide</b></p> <p>"big smash no 2" by <b>drewkelly</b></p> <p>"female humming" by <b>alexandra drotz ruhn</b></p> <p>"pot" by <b>dsukari</b></p> <p>"deep thumps" by <b>eardeer</b></p> <p>"monster long rumble 2" by <b>ecfike</b></p> <p>"boots on aluminum ladder 01" by <b>eelke</b></p> <p>"leather around handle" by <b>eelke</b></p> <p>"brushing snow or rain off a nylon down coat or jacket" by <b>elementals</b></p> <p>"sfx destruction ice x04" by <b>euphrosyyn</b></p> <p>"electricity" by <b>flashtrauma</b></p> <p>"high voltage discharge 1" by <b>follytowers</b></p> <p>"eating chips" by <b>freqman</b></p> <p>"spark fm tri 90 sin 110" by <b>freqman</b></p> <p>"rummaging through pockets" by <b>fugeni</b></p> <p>"creaky shed door" by <b>gabirel</b></p> <p>"g sword unsheath" by <b>gamedevc</b></p> <p>"boiling water pot 1 cover" by <b>geodylabs</b></p> <p>"horse eating" by <b>gibarroule</b></p> <p>"rustling leaves" by <b>giddster</b></p> <p>"papershuffling" by <b>gjos</b></p> <p>"rocks dropped tumble 1" by <b>halleck</b></p> <p>"chewing gum" by <b>hannahj</b></p> <p>"4 car collapsed" by <b>heigh`_`hoo</b></p> <p>"finding the plug" by <b>housed1j</b></p> <p>"ringing in the ears" by <b>hykenfreak</b></p> <p>"belt buckle" by <b>indigoray</b></p> <p>"cat screaming a" by <b>inspectorj</b></p> <p>"dust scatter a" by <b>inspectorj</b></p> <p>"pencil writing close a" by <b>inspectorj</b></p> <p>"water pouring a" by <b>inspectorj</b></p> <p>"stream river water up close" by <b>jackmurrayofficial</b></p> <p>"tying handkerchief 2" by <b>jaklocke</b></p> <p>"unsheathing a knife" by <b>jaklocke</b></p> <p>"unlock lock unlock door inside" by <b>jakobhandersen</b></p> <p>"creak 6" by <b>jameswrowles</b></p> <p>"bath with gurgle 01" by <b>jarredgibb</b></p> <p>"charging power" by <b>javierzumer</b></p> <p>"flashover discharge 280kv" by <b>jensfelger</b></p> <p>"door pounding increasing intensity" by <b>jhumbucker</b></p> <p>"boots and spurs" by <b>jjhouse4</b></p> <p>"pull chain switch" by <b>joedeshon</b></p> <p>"thwop" by <b>joeliomartini</b></p> <p>"stone tile dragging friction scrape m10" by <b>johanwestling</b></p> <p>"pour splash metal bucket water" by <b>johnsonbrandediting</b></p> <p>"gravel impact 3" by <b>jorickhoofd</b></p> <p>"shriek male" by <b>jorickhoofd</b></p> <p>"wind gust" by <b>joseph.larralde</b></p> <p>"steps on loose stones actions" by <b>julius`_`galla</b></p> <p>"liquid drip" by <b>junkfood2121</b></p> <p>"cello screech2" by <b>juskiddink</b></p> <p>"water flood enhanced" by <b>kevint1001</b></p> <p>"crunching scraping" by <b>keweldog</b></p> <p>"yawn" by <b>kgatto</b></p> <p>"mixing food wooden spoon" by <b>kidscasttechy</b></p> <p>"mower close startup idle shutoff" by <b>kierankeegan</b></p> <p>"rural wind holland germent 121226 00" by <b>klankbeeld</b></p> <p>"pebbles scrape drag foot" by <b>kmoon</b></p> <p>"axe chop into old upside down wood rowboat hollow nice blade pull out detail" by <b>kyles</b></p> <p>"axe chop into wood little debris" by <b>kyles</b></p> <p>"axe chops through thin wood trailer rv wall and tear splinters out various" by <b>kyles</b></p> <p>"chair leather sit down get up creaks smooth" by <b>kyles</b></p> <p>"dog small growling playing with rope" by <b>kyles</b></p> <p>"door wood old creaky rickety almost wicker open" by <b>kyles</b></p> <p>"drawer wood of junk deep open close rattle" by <b>kyles</b></p> <p>"flashlight big chunky plastic emergency light fall on gritty concrete cellar floor and bounce and rock close nice impact" by <b>kyles</b></p> <p>"metal heavy drag gritty long" by <b>kyles</b></p> <p>"plastic gas container fill" by <b>kyles</b></p> <p>"keys rattle" by <b>lamamakesmusic</b></p> <p>"bush weed scrape pile rustle dump" by <b>lampeight</b></p> <p>"wood panel board debris rummage increasing" by <b>lampeight</b></p> <p>"80 lifting mannequin" by <b>leoctiurs</b></p> <p>"foley fight moves struggling" by <b>leonelmail</b></p> <p>"gloves rubber movement" by <b>leonelmail</b></p> <p>"jacket handling" by <b>leonelmail</b></p> <p>"parched drawing crispy paper shoji pencil stroke scribble long steady" by <b>leonelmail</b></p> <p>"avalanche land mono 1" by <b>leonsptvx</b></p> <p>"saltandpeppershakers limbo63</b></p> <p>"soft impact" by <b>lipalearning</b></p> <p>"largeearthquake" by <b>loafdv</b></p> <p>"cat eating wet food purring at start but not throughout" by <b>lolamadeus</b></p> <p>"creaky door closing" by <b>lolamadeus</b></p> <p>"steam train in motion 4 from inside window rattling" by <b>lolamadeus</b></p> <p>"luffy fire1" by <b>luffy</b></p> <p>"luffy fire3alternate" by <b>luffy</b></p> <p>"blade slice2" by <b>lukesharples</b></p> <p>"heavy wall pounding" by <b>lunafarrowe</b></p> <p>"blade knife drag sound" by <b>macif</b></p> <p>"sucking in" by <b>mafon2</b></p> <p>"tumble downstairs a" by <b>malexmedia</b></p> <p>"jump landing in snow02" by <b>mallement</b></p> <p>"owls" by <b>manda`_`g</b></p> <p>"flushing" by <b>manotrop</b></p> <p>"socket and plug" by <b>marco`_`luzi</b></p> <p>"fireplace" by <b>martats</b></p> <p>"180904 woodland04 run steps skip jump clip" by <b>martian</b></p> <p>"fish scales scraper longer converted" by <b>martian</b></p> <p>"tongue stretching" by <b>mateozugi19</b></p> <p>"cellar door wooden corridor2 int" by <b>matucha</b></p> <p>"howling wind in chimney" by <b>maurice`_`j`_`k</b></p> <p>"dying rasp" by <b>metrostock99</b></p> <p>"tool box rustling" by <b>metrostock99</b></p> <p>"kaka new zealand parrot" by <b>mings</b></p> <p>"oldschoolcamerawindingandclick" by <b>mmaruska</b></p> <p>"fumbling" by <b>modulationstation</b></p> <p>"whip" by <b>morgantj</b></p> <p>"knife sheath" by <b>motion`_`s</b></p> <p>"hangers1 orig" by <b>mr`_`tea</b></p> <p>"couch quick rise up 2 bip" by <b>muses212</b></p> <p>"sliding door opening and closing" by <b>musicandsoundyay</b></p> <p>"meat slap 3" by <b>mwlandi</b></p> <p>"meat slap 5" by <b>mwlandi</b></p> <p>"pumpmkin guts 9 falling out" by <b>mwlandi</b></p> <p>"pumpmkin guts squish 1" by <b>mwlandi</b></p> <p>"folding fabric sheets" by <b>nebulousflynn</b></p> <p>"pouring glass of wine from bottle" by <b>nebulousflynn</b></p> <p>"steps on wooden stairs" by <b>nikomyth</b></p> <p>"radar scanner deepsea hydrogen skyline com" by <b>norman`_`hittle</b></p> <p>"metal pan crashes" by <b>nothayama</b></p> <p>"hydraulic suction sound of a train toilet" by <b>oneirophile</b></p> <p>"building collapse03 distant clatter" by <b>onteca</b></p> <p>"1 impact wet" by <b>original`_`sound</b></p> <p>"drink sip and swallow" by <b>owlstorm</b></p> <p>"sopa" by <b>paulosilva1</b></p> <p>"talking rat" by <b>peacewaves</b></p> <p>"ice block sliding crunching scraping" by <b>percy`_`duke</b></p> <p>"dog eating" by <b>peridactyloptrix</b></p> <p>"bundle falling to ground" by <b>pfranzen</b></p> <p>"getting dressed super fast" by <b>pfranzen</b></p> <p>"guy choking" by <b>pfranzen</b></p> <p>"wire snippers" by <b>plingativator</b></p> <p>"eating juicy meat" by <b>productionnow</b></p> <p>"chicken meat slime" by <b>qubodup</b></p> <p>"person knocked down" by <b>qubodup</b></p> <p>"sheathknife" by <b>qubodup</b></p> <p>"hiss3" by <b>reitanna seishin</b></p> <p>"splash11" by <b>rocktopus</b></p> <p>"opening antique trunk latches and opening" by <b>rodincoil</b></p> <p>"opening antique trunk more latches" by <b>rodincoil</b></p> <p>"mais objetos caindo na madeira" by <b>roteiroescroto</b></p> <p>"upright piano b extended weirdness close mic 2" by <b>rutgermuller</b></p> <p>"chair squeak" by <b>sacredmatt</b></p> <p>"slosh a" by <b>samuelcable</b></p> <p>"tuba sustain a 1 tuba3 sus a 0 v1 rr1 mid" by <b>samulis</b></p> <p>"stairs" by <b>screamstudio</b></p> <p>"knife slides" by <b>scriptique</b></p> <p>"brushwood in the fire 1" by <b>selector</b></p> <p>"tea kettle boiling whistling" by <b>sethlind</b></p> <p>"splash 1" by <b>sforsman</b></p> <p>"wet celery break 3" by <b>sforsman</b></p> <p>"sfxsource mountain lion wild animal sound effect" by <b>sfxsource.com</b></p> <p>"slowbreathing 1" by <b>shanef91</b></p> <p>"pouringtea" by <b>shelbyshark</b></p> <p>"cant open" by <b>simpsi</b></p> <p>"baby snoring snore sleeping breathing" by <b>skymary</b></p> <p>"steam" by <b>sniperous</b></p> <p>"glug" by <b>spaztastic</b></p> <p>"tearing paper" by <b>sphion</b></p> <p>"hand digging dirt leaves crunch" by <b>splicesound</b></p> <p>"chest opening" by <b>spookymodem</b></p> <p>"falling rock" by <b>spookymodem</b></p> <p>"pick hitting rock" by <b>spookymodem</b></p> <p>"iron whoosh" by <b>squidge316</b></p> <p>"stomach gurgle 4" by <b>sribubba</b></p> <p>"room with buzz incandescent light bulb" by <b>st303</b></p> <p>"rockingchair1" by <b>stevelalonde</b></p> <p>"flowing sand" by <b>stevemeli</b></p> <p>"baby cry angry" by <b>stevious42</b></p> <p>"stringharmonics" by <b>stomachache</b></p> <p>"a walk with stop" by <b>straget</b></p> <p>"dog snarl" by <b>strongbot</b></p> <p>"soil 14d lightshoes onoff" by <b>sturmankin</b></p> <p>"cold water in a hot frying pan" by <b>suprasummun</b></p> <p>"gulping" by <b>swordofkings128</b></p> <p>"alfred purr" by <b>taure</b></p> <p>"mr hangers1 orig" by <b>tea</b></p> <p>"111614 walking up creaky apartment stairs 2" by <b>thaighaudio</b></p> <p>"nails crackle 1" by <b>the`_`yura</b></p> <p>"melon stabs clean" by <b>thefilmlook</b></p> <p>"door slam" by <b>tieswijnen</b></p> <p>"kahn grapefruit squish" by <b>tim</b></p> <p>"tinnitus" by <b>tnturner</b></p> <p>"rat squeak" by <b>toefur</b></p> <p>"angry bird squeal" by <b>toiletrolltube</b></p> <p>"plectrum run slow" by <b>toiletrolltube</b></p> <p>"crawling broken glass003" by <b>tritus</b></p> <p>"drawers small plastic supplies" by <b>ultradust</b></p> <p>"boiling towel" by <b>unfa</b></p> <p>"clean explosions" by <b>unfa</b></p> <p>"baloon skin" by <b>uzbazur</b></p> <p>"voice elephant" by <b>vataaa</b></p> <p>"walking through grass" by <b>vgraham1</b></p> <p>"strong man lift" by <b>vikuserro</b></p> <p>"bones breaking" by <b>vlatkoblazek</b></p> <p>"moving and stopping" by <b>warcakestudios</b></p> <p>"wood3" by <b>wildweasel</b></p> <p>"heavyringingclang" by <b>wilhellboy</b></p> <p>"rubbing squishy ball on metal03" by <b>wjoojoo</b></p> <p>"stan baby cooing" by <b>wjoojoo</b></p> <p>"heartbeatnew" by <b>woodingp</b></p> <p>"foot drag dirt 4" by <b>worthahep88</b></p> <p>"sticks in dirt 2" by <b>worthahep88</b></p> <p>"steam hiss" by <b>wubitog</b></p> <p>"egg crack and pulp" by <b>xenognosis</b></p> <p>"peeing water dripping on soil" by <b>yellowbear</b></p> <p>"small animal scurrying through leaves" by <b>yin`_`yang`_`jake007</b></p> <p>"vauva itku parku a baby babygirl five months of age cries and bawls whimpers in a room hungry interior" by <b>ylearkisto</b></p> <p>"dog gnawing a bone" by <b>yoh</b></p> <p>"thunder 1" by <b>yoyodaman234</b></p> <p>"hinge slow motion" by <b>yuval</b></p> <p>"churchbells" by <b>zabuhailo</b></p> <p>"whoosh" by <b>zevcuk</b></p> <p>"short wave radio noise 1" by <b>zmobie</b></p> <br> <p>All sounds licensed under CC BY 2.0/3.0/4.0 or CC0</p> <br> <h3>Built using:</h3> <p>Twine 2.2.1 by <b>Chris Klimas</b> (GPL v3)</p> <p>Harlowe 2.1.0 by <b>Leon Arnott</b> (zlib License)</p> <p>Howler.js 2.1.1 by <b>James Simpson</b> (MIT License)</p> <br> <p>With gratitude to <b>Jesse Gazic</b>, <b>Jim Munroe</b>, <b>Dave Proctor</b>, and <b>Carl Rauscher</b> for testing and feedback.</p> </div> <p>thanks.</p> (link: "Start Over")[(reload:)] }{ <p>Ma and Pop...</p> <p>Well, that [[you already know->Attic]].</p> }{ <i> <p>Great Grandpop lost his mind and froze in the fields.</p> <p>Great Grandma kept [[the child fed->Grandpop]].</p> </i> }{ <i> <p>Grandpop never met his father. Always watched the sky.</p> <p>Grandma [[didn't much like children->Already Know]].</p> </i> }{ <p>Finally, the world reemerges.</p> <p>You pick up [[the charged heartstone->Heartstone Charged]]. } <script> if ( !A.bg.wind.playing( A.wind ) ) { A.wind = A.bg.wind.play(); } var ratio = 1 - A.bg.wind.volume( A.wind ); A.bg.wind.fade( A.bg.wind.volume( A.wind ), 0.9, ratio * 10000, A.wind ); </script>{ (set: $meat_mill to 1) <p>Time and cold have stiffened Pop's arm.</p> <p>You look away, snap the elbow, [[wrestle it down->Feed Mill]].</p> }\ <script> A.foley.arm_mill.play(); </script>{ (set: $gas_mill to 1) <p>You open your flask, sniff, take a little swig.</p> <p>The cold gas sears, puts a kick in your step.</p> <p>The rest you empty [[into the mill->Feed Mill]].</p> }\ <script> A.foley.gas_mill.play(); </script>{ <i> <p>It's out the back [[window->Down to the Cellar]]...</p> </i> }{ <i> <p>it's down to the [[cellar->To Pray]]...</p> </i> }{ <i> <p>to pray 'fore the [[preacher->Older Than Hell]]...<p> </i> }{ <i> <p>who's older than [[hell->Enter Pit]]...</p> </i> }{ <p>The first moments are a free fall.</p> <p>Then [[the tunnel slopes->Enter Pit 2]].</p> }\ <script> A.foley.hole_fall.play(); if ( A.bg.heartbeat.playing( A.heartbeat ) ) { var ratio = A.bg.heartbeat.volume( A.heartbeat ) / 1; A.bg.heartbeat.fade( A.bg.heartbeat.volume( A.heartbeat ), 0, ratio * 3000, A.heartbeat ); } else { A.bg.heartbeat.stop( A.heartbeat ); } </script>{ <p>The wall flies to meet you.</p> <p>Your limbs contort in agony.</p> <p>Tired treads struggle to [[grip loose rock->Find Purchase]].</p> }\ <script> A.foley.cave_land.play(); if (A.foley.cave_jump.playing() ) { A.foley.cave_jump.stop(); } </script>{ <p>Desperate, arms outstretched, you hear the fleshling squeal.</p> <p>It's no use. [[You plummet->Plummet]].</p> }\ <script> A.foley.cave_plummet.play(); if ( !A.bg.tuba.playing( A.tuba ) ) { A.tuba = A.bg.tuba.play(); } var ratio = 1 - A.bg.tuba.volume( A.tuba ); A.bg.tuba.fade( A.bg.tuba.volume( A.tuba ), 1.0, ratio * 5000, A.tuba ); </script>{ <p>At last, [[you are expunged->Expunged]].</p> }\ <script> A.foley.expunged.play(); if ( A.foley.sanctum_ascend.playing ) { A.foley.sanctum_ascend.stop(); } if ( A.bg.bells.playing( A.bells ) ) { A.bg.bells.stop( A.bells ); } if ( A.bg.rumble.playing( A.rumble ) ) { A.bg.rumble.stop( A.rumble ); } if ( !A.bg.spring.playing( A.spring ) ) { A.spring = A.bg.spring.play(); } var ratio = 1 - A.bg.spring.volume( A.spring ); A.bg.spring.fade( A.bg.spring.volume( A.spring ), 0.9, ratio * 5000, A.spring ); </script>{ <i> <p>It's out the back window...</p> <p>It's...it's...</p> </i> <p>Damn it. [[The words are tangled->Song Tangled]].</p> }{ <p>Now, now.</p> <p>There'll be [[time for that->Foyer End]].</p> }{ <p>The cold makes it easy.</p> <p>The [[limb detaches->Take Arm]] with a single blow.</p> } <script> A.foley.chop_arm.play(); </script>{ (set: $inventory's "battery" to 1) <p>On the bottom shelf, you make out the angles of a battery.</p> <p>Pop kept these for the tractor he couldn't afford.</p> <p>No use letting it [[go to waste->Cellar]].</p> }\ <script> A.foley.get_batt_clean.play(); </script>{ (set: $salt_added to 1) <p>The crystal froths as [[it dissolves->Stove Lit]].</p> }\ <script> A.foley.add_salt.play(); </script>{ (set: $meat_added to 1) <p>The churning boil quickly rends [[fat from bone->Stove Lit]].</p> }\ <script> A.foley.add_meat.play(); </script>{ (set: $milk_added to 1) <p>After a while, the [[grey broth simmers->Stove Lit]].</p> }\ <script> A.foley.add_milk.play(); </script>{ <p>Its fangs splinter against your steel-toe.</p> <p>You watch with disgust as [[the brood scatters->Junk Pile]].</p> }\ <script> A.foley.rat_flee.play(); </script>{ <p>For a while, all is [[quiet and bright->World Reemerges]].</p> }{ <p>You slide the weapon into your pocket.</p> <p>[[Where it belongs->Far Side]].</p> }\ <script> A.foley.blade_pocket.play(); </script>{ <p>Without distance, [[there is no end->Without Mercy]].</p> }{ <p>Without mercy, there is no [[illusion of hope->Integration]].</p> }\ <script> if ( A.bg.bells.volume( A.bells ) > 0 ) { var ratio = A.bg.bells.volume( A.bells ) / 1; A.bg.bells.fade( A.bg.bells.volume( A.bells ), 0, ratio * 10000, A.bells ); } else { A.bg.bells.stop( A.bells ); } if ( !A.bg.rumble.playing( A.rumble ) ) { A.rumble = A.bg.rumble.play(); } var ratio = 1 - A.bg.rumble.volume( A.rumble ); A.bg.rumble.fade( A.bg.rumble.volume( A.rumble ), 1, ratio * 10000, A.rumble ); </script>{ <p>Three hearts, two hearts, [[one heart->At Last Expunged]].</p> }{ <p>What was divided is whole again.</p> <p>[[What was sleeping sings->One Heart]].</p> }\ <script> A.foley.sanctum_ascend.play(); </script>{ <p>The sun dips as you climb.</p> <p>Your skin tingles in the damp and chill.</p> <p>It's nearly dark when you [[reach the porch->Climb to House]].</p> }\ <script> A.foley.up_hill.play(); if ( A.bg.spring.volume( A.spring ) > 0.5 ) { var ratio = A.bg.spring.volume( A.spring ) / 1; A.bg.spring.fade( A.bg.spring.volume( A.spring ), 0.5, ratio * 4000, A.spring ); } </script>{ <p>Some struggle twists the woman's face.</p> <p>Fear cut by deeper resolve;</p> <p>long lines converging on a point.</p> <p>Finally, she [[takes the babe->Follow Baby]].</p> }\ <script> A.foley.take_babe_1.play(); </script>{ <p>The hearty broth stills your mind.</p> <p>Not too salty, not too thin.</p> <p>Reminds you of [[someplace far off->Frayed Memory]].</p> }\ <script> A.foley.eat_soup.play(); </script>{ <p>You gather a few small chunks.</p> <p>Salt's salt. Should [[flavor the meal->The Recipe]].</p> }\ <script> A.foley.gather_salt.play(); </script>{ (set: $retry to (random: 0, 4)) (if: $retry is 0)[ (set: $dmsg0 to "Can't stop what's coming.") ](elseif: $retry is 1)[ (set: $dmsg0 to "What's signed is sworn.") ](elseif: $retry is 2)[ (set: $dmsg0 to "A promise is a promise.") ](elseif: $retry is 3)[ (set: $dmsg0 to "Some of us were born to serve.") ](elseif: $retry is 4)[ (set: $dmsg0 to "The wheel's already turning.") ] (set: $retry to (random: 0, 4)) (if: $retry is 0)[ (set: $dmsg1 to "You know that better than most.") ](elseif: $retry is 1)[ (set: $dmsg1 to "There's no use fighting it.") ](elseif: $retry is 2)[ (set: $dmsg1 to "We taught you as best we could.") ](elseif: $retry is 3)[ (set: $dmsg1 to "We've all got a purpose. This is yours.") ](elseif: $retry is 4)[ (set: $dmsg1 to "What makes you think you're special?") ] (set: $retry to (random: 0, 4)) (if: $retry is 0)[ (set: $dmsg2 to "Finish the work while you still can.") ](elseif: $retry is 1)[ (set: $dmsg2 to "Don't you dare turn your back on us now.") ](elseif: $retry is 2)[ (set: $dmsg2 to "Hold fast. The worst'll be over soon.") ](elseif: $retry is 3)[ (set: $dmsg2 to "Stand proud. Show what you're made of.") ](elseif: $retry is 4)[ (set: $dmsg2 to "Accept your lot. Bring truth to bear.") ] <p><span id="quick-fade">[$dmsg0]<first|</span></p> <p><span id="quick-fade1">|second)[$dmsg1]</span></p> <p><span id="quick-fade2">|third)[$dmsg2]</span></p> (click: ?first) [ (show: ?second) <script> $( '#quick-fade1' ).css( 'opacity', 0 ); setTimeout( function() { $( '#quick-fade1' ).css( 'opacity', 1 ); }, 1); </script> ] (click: ?second) [ (show: ?third) <script> $( '#quick-fade2' ).css( 'opacity', 0 ); setTimeout( function() { $( '#quick-fade2' ).css( 'opacity', 1 ); }, 1); </script> ] (click: ?third) [ <script> rnd_death.fade( rnd_death.volume( A.death_snd ), 0, 2500, A.death_snd); </script> (unless: $current_save is "")[ (load-game: $current_save) ](else:)[ (reload:) ] ] }\ <script> var keys = Object.keys(A.death); var rnd_death = A.death[ keys[ keys.length * Math.random() << 0 ] ]; console.log(rnd_death); A.death_snd = rnd_death.play(); $( '#quick-fade' ).css( 'opacity', 0 ); setTimeout( function() { $( '#quick-fade' ).css( 'opacity', 1 ); }, 1); </script>{ <p>Finally, through the panic, you find purchase.</p> <p>Gasping, you [[shuffle to safety->Far Side]].</p> }\ <script> A.foley.cave_purchase.play(); </script>{ <p>You grit your teeth and sprint.</p> <p>The crevasse opens into oblivion.</p> <p>At the last instant, [[you lunge->You Lunge]].</p> }\ <script> A.foley.cave_jump.play(); </script>{ <p>A homemade quilt adorns the bed.</p> <p>The stitched patterns are complex, almost crystalline.</p> <p>A pleasing shiver runs [[down your spine->Foyer End]].</p> }