{
(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>
}