• Rewind
  • Restart
  • Bookmark
  • This story was created with Twine and is powered by TiddlyWiki
<<if $secretPassage is true>>You navigate your way easily through the dark labyrinth with the map you found.<<else>>After wandering around the labyrinth of dark passageways for a while <<if $map is true>>you notice a specific pattern of turns which you recognise from that old map you found. You pull out the map and use it by torchlight to find your way to the other side of the labyrinth.<<else>>you realise that you've been walking in circles for ages now. You decide to leave the labyrinth and head back home. You cannot find your way out of the labyrinth. Eventually you starve to death.<<endif>><<endif>>\n\n<<if $map is true>>[[Lucky I found that map!|Watery Cavern]]<<else>>[[Sounds unpleasant|Death Stats]]<<endif>>\n<<set $time +=1>><<if $time is 4>><<set $time to 1>><<set $day +=1>><<endif>><<set $secretPassage to true>>
You climb up the great beast's body until you reach the sword embedded in its eye. The sword looks rather fragile to you, with a narrow handle bound in leather, a small hilt of bone, and a narrow metal blade.\n\nWhile the fae-folk leave their dead, and the dead's possessions, for the forest to reclaim, this blade would suit you nicely. From your brief interactions with them, you've gathered that the fae-folk consider you to be just another animal in the wilds. Claiming the sword for yourself is akin to the forrest claiming it; they won't mind.\n\nYou pull the sword from the great beast's eye with an extended *squelch*. The pointed blade still glows faintly with some forgotten magic.\n\n[[Cool!|Beast's Rest]]\n<<set $haveSword to true>>
<<addSound "homeMain.wav">>\n<<addSound "homeCraftAdd.wav">>\n<<addSound "wildsMain.wav">>\n<<addSound "wildsBees.wav">>\n<<addSound "wildsBeastsRest.wav">>\n<<addSound "depthsMain.wav">>\n<<addSound "depthsSpelunkersDemise.wav">>\n<<addSound "depthsTarAdd.wav">>\n<<addSound "templeMain.wav">>\n<<addSound "templeCombat1Add.wav">>\n<<addSound "templeCombat2Add.wav">>\n<<addSound "riverEscape.wav">>\n<<addSound "menuBase.wav">>\n<<addSound "deathScreen.wav">>\n<<addSound "storm.wav">>
This will be reformatted into the Wiki help page once the game logic is finished.\n\nGoal: Cross the mountains and return home before the Great Storm arrives.\n\nWays the game will end:\n- Gather enough supplies and warmth within the time limit to last the journey\n\t- If you don't have enough supplies, you starve on the journey\n\t- If you don't have enough warmth, you freeze on the journey\n- Explore enough of the depths within the time limit to find the way out the other side \n\t- Means dedicating time periods to exploring instead of gathering resources for the journey\n\t- If you don't find the right tools then you can't find the way through\n\n\nSupplies can be gathered by:\n- Collecting Honey from the Wilds (repeatable)\n- Planting the EZ-Gro seeds (Wilds) which you can find in the Depths (limited, takes extra time)\n\nSupplies required can be altered by:\n- Finding the climbing tools in the depths (faster journey)\n- Betraying your partner (half supplies needed)\n\nWarmth can be gathered by:\n- Collecting fibres from the Wilds, Tar from the Depths, and using them to make torches\n\nWarmth required can be altered by:\n- Skinning the Bear carcass in the wilds and making a pelt coat (half warmth needed)\n- Finding the parka in the Depths (half warmth needed)\n\nJourney Through The Depths requires (in this order):\n- Sword from the fae in the Wilds - To defeat the shadow monsters guarding the temple entrance\n- Key from inside the puzzle box at Home - To open the secret door in the temple\n- Map of the tunnels from the Depths, found on the spelunkers - To navigate through the back passages after the temple\n- Water Finder Medallion from the Wilds - To find the sunken river passage\n- Axylotl Mushrooms from the Depths - To travel through the sunken river without drowning.\n\nHow the Music Changes: TBA
As you approach the temple entrance, the shadow monsters drop down around you. Their ambiguous bodies shimmer with malice as they surround you.\n\n<<if $haveSword is true>>As you draw your sword the blade starts to burn with a bright and unnatural light. The light seems to shear the shadows off the monsters' bodies, exposing their pale flesh. With this, the monsters charge you en masse. With a few well placed swings, skinny limbs and spatters of white blood go flying into the air. The shadow monsters retreat from you and your blade of judgement, pulling their weakened bodies and severed limbs back into the darkness.<<endif>><<if $haveSword is false>>You pull out your carving knife and brandish it foolishly at the monsters. They swarm around you as their shadows reach out and start peeling pieces of your flesh from your bones as if you were a rotisserie chicken. Your knife simply passes through their shadowy forms without making a mark. You die.<<endif>>\n\n<<if $haveSword is true>>[[Continue into the Temple|Inside Temple]]<<endif>>\n<<if $haveSword is false>>[[Uh-oh, that's not good|Death Stats]]<<endif>>\n<<fadeOutSound "depthsMain.wav">>\n<<fadeInSound "templeMain.wav">>\n<<fadeInSound "templeCombat2Add.wav">>
<font color = red>\n<strong>Vast Place</strong></font>\nAn Exploration Survival Game\n\n[[New Game|Premise]]\n[[Content Warnings|Content Warnings]]\n\n\n<<renderLoadingText "Loading Ambience..." "Ready to go.">>\n<<display loadAudio>>\n<<nobr>>\n<<set $supplies to 0>>\n<<set $time to 1>>\n<<set $day to 1>>\n<<set $flowerFields to false>>\n<<set $fertileGrove to false>>\n<<set $beastsRest to false>>\n<<set $haveSword to false>>\n<<set $havePelt to false>>\n<<set $followedBird to false>>\n<<set $angeredBees to false>>\n<<set $haveSeeds to false>>\n<<set $spelunkersDemise to false>>\n<<set $climbingTools to false>>\n<<set $tarLake to false>>\n<<set $mushrooms to false>>\n<<set $stormDays to 8>>\n<<set $journeyDays to 7>>\n<<set $temple to false>>\n<<set $parka to false>>\n<<set $key to false>>\n<<set $map to false>>\n<<set $haveGrains to false>>\n<<set $haveFlour to false>>\n<<set $boots to false>>\n<<set $bread to false>>\n<<set $next to 0>>\n<<set $secretPassage to false>>\n<<set $looping to false>>\n<<endnobr>>
// Structure:\n// const soundGroups = {\n// default: {\n// "1.wav": { howl: new Howl(), loaded: false },\n// "2.wav": { howl: new Howl(), loaded: false },\n// },\n// battle: {\n// "battle.wav": { howl: new Howl(), loaded: false },\n// },\n// };\nconst soundGroups = {};\nconst DEFAULT_GROUP_NAME = "default";\n\nlet loadingTexts = [];\n/**\n * Dummy macro to render loading text.\n *\n * Usage: `<<renderLoadingText "loadingText" "loadedText" "groupName">>`\n * Note that double quotes are required.\n * @param {string} loadingText\n * Text to display when not yet loaded.\n * @param {string} loadedText\n * Text to display after loading.\n * @param {string} [groupName]\n * Group to check load status of. If not provided, uses the default group.\n */\nmacros.renderLoadingText = {\n handler: (\n place,\n macroName,\n [loadingText, loadedText, groupName = DEFAULT_GROUP_NAME]\n ) =>\n loadingTexts.push({\n loadingText,\n loadedText,\n groupName,\n }),\n};\n\n/**\n * Looks for renderLoadingText macro and renders loading text\n * body: div container\n * this: object referring to the current story\n * */\npostrender.checkIfLoaded = function (body) {\n const renderMacroMatches = this.text.match(/<<renderLoadingText.*?>>/g);\n if (renderMacroMatches !== null) {\n renderMacroMatches.forEach((macroMatch, index) => {\n const { loadingText, loadedText, groupName } = loadingTexts[index];\n\n const audioLoadText = document.createElement("div");\n audioLoadText.setAttribute("id", "audio-load-text-" + groupName);\n audioLoadText.innerText = soundGroups[groupName].loaded\n ? loadedText\n : loadingText;\n body.appendChild(audioLoadText);\n\n if (!soundGroups[groupName].loaded) {\n const interval = setInterval(() => {\n if (soundGroups[groupName].loaded) {\n audioLoadText.innerText = loadedText;\n clearInterval(interval);\n }\n }, 500);\n }\n });\n }\n loadingTexts = [];\n};\n\n/**\n * Adds a new howl to a group.\n * @param {string} groupName\n * The name of the group to add the howl to.\n * @param {...string} src\n * List of sources to retrieve audio data from. The first source is the\n * identifier for this audio track.\n */\nmacros.addSoundGroup = {\n handler: (place, macroName, [groupName, ...src]) => {\n if (!soundGroups[groupName]) soundGroups[groupName] = {};\n\n const newHowl = new Howl({\n src,\n loop: true,\n volume: 0,\n });\n\n soundGroups[groupName][src[0]] = newHowl;\n\n newHowl.once("load", () => {\n if (\n Object.values(soundGroups[groupName]).every(\n (howl) => howl.state() === "loaded"\n )\n ) {\n Object.defineProperty(soundGroups[groupName], "loaded", {\n value: true,\n });\n }\n });\n },\n};\n\n/**\n * Adds a new howl to the default group. Calls addSoundGroup with the name of\n * the default group appended to the parameter array.\n * @param {...string} src\n * List of sources to retrieve audio data from.\n */\nmacros.addSound = {\n handler: (place, macroName, params) => {\n macros.addSoundGroup.handler(place, macroName, [\n DEFAULT_GROUP_NAME,\n ...params,\n ]);\n },\n};\n\n/**\n * Plays all howls in a group.\n * @param {string} [groupName]\n * Name of the group to play. If not provided, uses the default group.\n */\nmacros.loopAllSilently = {\n handler: (place, macroName, [groupName = DEFAULT_GROUP_NAME]) => {\n Object.values(soundGroups[groupName]).forEach((howl) => howl.play());\n },\n};\n\n/**\n * Fades in a howl over 1 second.\n * @param {string} src\n * Name of the howl to fade in. Uses the name of the first source when added to group.\n * @param {string} [groupName]\n * Name of the group to search for the howl. If not provided, uses the default group.\n */\nmacros.fadeInSound = {\n handler: (place, macroName, [src, groupName = DEFAULT_GROUP_NAME]) => {\n const currentHowl = soundGroups[groupName][src];\n currentHowl.fade(currentHowl.volume(), 1, 2000);\n },\n};\n\n/**\n * Fades out a howl over 1 second.\n * @param {string} src\n * Name of the howl to fade out. Uses the name of the first source when added to group.\n * @param {string} [groupName]\n * Name of the group to search for the howl. If not provided, uses the default group.\n */\nmacros.fadeOutSound = {\n handler: (place, macroName, [src, groupName = DEFAULT_GROUP_NAME]) => {\n const currentHowl = soundGroups[groupName][src];\n const volume = currentHowl.volume();\n if (volume > 0) {\n currentHowl.fade(volume, 0, 2000);\n }\n },\n};\n\nconst sounds = {};\n\n/**\n * Plays a howl as a one-shot. Uses a preloaded howl with the same name, if found.\n * If the requested howl was preloaded using `preloadSound` but has not yet finished loading, it will play once loaded.\n */\nmacros.playSound = {\n handler: function (place, macroName, params) {\n if (!sounds[params[0]]) {\n sounds[params[0]] = new Howl({\n src: params,\n loop: false,\n volume: 1,\n });\n }\n sounds[params[0]].play();\n },\n};\n\n/**\n * Preloads a howl to be played as a one-shot. Once loaded, the howl can be played multiple times if desired.\n */\nmacros.preloadSound = {\n handler: function (place, macroName, params) {\n sounds[params[0]] = new Howl({\n src: params,\n loop: false,\n volume: 1,\n });\n },\n};\n
<<fadeInSound "homeMain.wav">>\n<<fadeOutSound "homeMain.wav">>\n\n<<fadeInSound "homeCraftAdd.wav">>\n<<fadeOutSound "homeCraftAdd.wav">>\n\n<<fadeInSound "wildsMain.wav">>\n<<fadeOutSound "wildsMain.wav">>\n\n<<fadeInSound "wildsBees.wav">>\n<<fadeOutSound "wildsBees.wav">>\n\n<<fadeInSound "wildsBeastsRest.wav">>\n<<fadeOutSound "wildsBeastsRest.wav">>\n\n<<fadeInSound "depthsMain.wav">>\n<<fadeOutSound "depthsMain.wav">>\n\n<<fadeInSound "depthsSpelunkersDemise.wav">>\n<<fadeOutSound "depthsSpelunkersDemise.wav">>\n\n<<fadeInSound "depthsTarAdd.wav">>\n<<fadeOutSound "depthsTarAdd.wav">>\n\n<<fadeInSound "templeMain.wav">>\n<<fadeOutSound "templeMain.wav">>\n\n<<fadeInSound "templeCombat1Add.wav">>\n<<fadeOutSound "templeCombat1Add.wav">>\n\n<<fadeInSound "templeCombat2Add.wav">>\n<<fadeOutSound "templeCombat2Add.wav">>\n\n<<fadeInSound "riverEscape.wav">>\n<<fadeOutSound "riverEscape.wav">>\n\n<<fadeInSound "menuBase.wav">>\n<<fadeOutSound "menuBase.wav">>\n\n<<fadeInSound "deathScreen.wav">>\n<<fadeOutSound "deathScreen.wav">>\n\n<<fadeInSound "storm.wav">>\n<<fadeOutSound "storm.wav">>
After checking the instructions on the seed packet, you dig into the dark soil with your hands, furrowing out a few spaces for your precious seeds. You plant the seeds and cover them back up with the soil. A quick sprinkle of moisture from your water bottle and apparently the seeds will be ready to harvest in just 3 days!\n\n[[Return to the crossroads|Wilds]]\n\n<<set $seedsPlanted to true>>\n<<set $seedDate to $day>>
The labyrinth comes out the other side into a large cavern with a fast flowing river running right through the middle. The roaring of the currents is deafening.\n\n[[Return to the Temple|Inside Temple]]\n[[Dive into the water|Watery Grave]]\n<<if $mushrooms is true>>[[Eat a weird mushroom, then dive into the water|Freedom]]<<endif>>\n\n<<set $time +=1>><<if $time is 4>><<set $time to 1>><<set $day +=1>><<endif>>\n<<fadeOutSound "templeMain.wav">>\n<<fadeInSound "riverEscape.wav">>
You pull out the wooden puzzle cube which you found in the Wilds a few weeks ago. It requires you to twist the outer layers of the cube around to orient 3 numbers into a code. It's alluded your intellect for a while now, but no longer!\n\nAfter thinking about the solution for a while, you're sure the correct code is one of 3 options:\n <<radio $choice "51 - 23 - 8">>\n <<radio $choice "7 - 11 - 13">>\n <<radio $choice "12 - 34 - 5">>\n\n <<button [[Enter the code|Code]]>>\n\n[[Finished with the cube|Home]]\n<<fadeInSound "homeCraftAdd.wav">>
You cram your fist down through the hive and start desperately digging for the last of the honey. This is the final straw for the hardworking bees. \n\nThe swarm comes down around your body and starts stinging indiscriminately. You run through the fields screaming with despair as the venom of a thousand bees causes your flesh to swell around all of your various breathing holes. \n\n[[You die painfully.|Death Stats]]\n<<set $supplies +=1>>
<<if $sunkenRuins is false>>You have discovered a site: <<endif>>Sunken Ruins\n\n<<if $sunkenRuins is false>>While exploring a crumbling building, you come across a brightly coloured packet amongst the debris. It is a packet of something called "EZ-Gro Seeds". Maybe you can find somewhere fertile to plant these!<<else>>You find nothing new in the ruins<<endif>>\n\n[[Return to the main cavern|Depths]]\n\n<<set $haveSeeds to true>>\n<<set $sunkenRuins to true>>\n<<set $time +=1>>\n<<if $time is 4>><<set $time to 1>><<set $day +=1>><<endif>>
<<if previous() is "Home" and $stormDays - $day >= -1>>There is still time to [[begin your journey|Journey Result]] if you leave right now!<<else>>The storm has come while you were preparing. The entire sky has turned a dark grey punctuated with flashes of lightning and bursts of deafening thunder. You didn't leave for your journey on time. The winds <<if previous() is "Home">>smash your camp to pieces and<<endif>> drag you out into the sky where you are dashed against the cold hard mountains above you.\n\n[[Bad timing I guess|Death Stats]]\n<<endif>>\n\n
A series of steep and craggy passages lead you down beside an underground river into a great cavern. The river continues to meander through the cavern. \n\nBy rustic torchlight you can see the hulking ruins of a city along the shores. On the far side of the cavern is a great temple, an offering to the gods of this long lost civilisation.\n\nYou are in the Depths.\n\nThere are two more passages off to the sides of the cavern. One of them leads to a great fissure in the bedrock, and another leads to a thick and constant bubbling sound coming from who knows what.\n\n<<if $sunkenRuins is false>>[[Explore the Ruins|Ruins]]<<endif>><<if $sunkenRuins is true>>[[Visit the Sunken Ruins|Ruins]]<<endif>>\n<<if $temple is false>>[[Approach the Temple|Temple Entrance]]<<endif>><<if $temple is true>>[[Enter the Temple|Inside Temple]]<<endif>>\n<<if $tarLake is false>>[[Follow the bubbling sound|Tar Lake]]<<endif>><<if $tarLake is true>>[[Visit Tar Lake|Tar Lake]]<<endif>>\n<<if $spelunkersDemise is false>>[[Investigate the Fissure|Spelunkers Demise]]<<endif>><<if $spelunkersDemise is true>>[[Visit Spelunkers Demise|Spelunkers Demise]]<<endif>>\n[[Return home|Home]]\n<<fadeOutSound "depthsTarAdd.wav">>\n<<fadeOutSound "depthsSpelunkersDemise.wav">>\n<<fadeOutSound "homeMain.wav">>\n<<fadeOutSound "templeMain.wav">>\n<<fadeOutSound "templeCombat1Add.wav">>\n<<fadeOutSound "templeCombat2Add.wav">>\n<<fadeInSound "depthsMain.wav">>
As you follow the left path through the woods, you are approached by a colourful bird. \n\nThe bird flaps up onto a branch in front of you and squawks imploringly before flying to another branch just off the trail and squawking again. \n\n[[Follow the bird|Flower Fields]]\n[[Return to the Crossroads|Wilds]]
A year ago, you left your village to seek out adventure. You set up a camp for yourself in a strange land on the other side of the great white mountains. \n\nYour cave is a safe haven between two wondrous but worrisome places. Laid out before your rocky outcropping: The verdant Wilds, full of life and wonder. You're guaranteed a hearty meal from what you can gather, as long as you can avoid becoming one.\n\nBack down into the recesses of your homely cave: the Depths, a dark place which hides many treasures. You could discover useful resources and tools in the abandoned passages, just try not to disturb the slumber of anything dwelling in the deep.\n\nThe only problem so far: the nearby fae-folk in the Wilds are talking about the coming of "the great storm". Apparently it comes once every 20 years, destroying most things in its path. The fae-folk retreat back to their homeland during the storm, and you should do the same. \n\n[[Prepare for your journey home|Home]]\n\n<<if $looping is false>><<loopAllSilently>><<endif>>\n<<set $looping to true>>\n<<fadeOutSound "homeMain.wav">>\n<<fadeInSound "menuBase.wav">>
The river currents carry you through the cavern and into some underground rapids. You get tumbled around in the water and eventually drown.\n\n[[Whoops|Death Stats]]
You use your trusty flint knife to slowly peel large sections of thick fur off the body of the beast. \n\nYou manage to gather enough fur for a pair of boots which could keep you quite warm on your journey, assuming you can find the time to craft such things.\n\n[[Kinda gross, but useful|Beast's Rest]]\n<<set $havePelt to true>>
Vast Place
<<if $temple is false>>You have discovered a site: <<endif>>The Temple.\n\n<<if $parka is false>>The inside of the temple surely used to be grand, but now it is as delapidated as the ruins which surround it. Shattered columns and decaying frescoes loom menacingly in the scattered torchlight as you walk carefully through to the main worship chamber. \n\nA gigantic statue towers over the altar, with many arms and even more teeth bared unashamedly to a non-existent congregation. \n\nOn the altar, the dessicated body of a priest lays with a large silver serving fork embedded in their chest. The priest's plush cloak still looks surprisingly intact, and as you check the tag you notice it's in your size! \n\nYou reef the cloak from the dead priest's body, which goes crashing down into the pews in a cloud of corpse dust. You've got a new fit, and it feels extra warm. Should be useful for that journey through the mountains.\n\nAs you're about to leave, you notice there is a closed doorway behind the great statue. You try to push the door open but it doesn't budge, and there's no handle, only a solitary key hole right in the middle. <<if $key is true>>You remember that you found an old key about this size back at camp! You use it to unlock the door and slowly push it open. The door opens into a labyrinth of dark narrow passageways.<<endif>><<else>>The temple remains as dark and ominous as always.<<endif>>\n\n<<if $key is true>>[[Navigate the dark passageways|Secret Passage]]<<endif>>\n[[Return to the main cavern|Depths]]\n\n<<set $parka to true>><<set $time +=1>><<if $time is 4>><<set $time to 1>><<set $day +=1>><<endif>><<set $temple to true>>\n<<fadeOutSound "templeCombat2Add.wav">>\n<<fadeOutSound "templeCombat1Add.wav">>\n<<fadeOutSound "riverEscape.wav">>\n<<fadeInSound "templeMain.wav">>
<<if previous() is "Wilds">><<set $time +=1>><<endif>><<if $time is 4>><<set $time to 1>><<set $day +=1>><<endif>><<if $stormDays - $day <= 0>>[[The storm has come|Storm Loss]]<<fadeInSound "storm.wav">><<else>><<if $beastsRest is false>>You have discovered a site: <<endif>>Beast's Rest\n\n<<if $beastsRest is false>>You come across a path of destruction in the vegetation. Trees have been crushed and knocked over entirely, and large swathes of underbrush have been dug into the ground. \n\nYou follow this new path until you reach the source of it: A great, furry, clawed beast lying dead in a pool of its own blood. The beast's body is peppered with small arrows which appear to have barely made it through the beast's thick hide. \n\nThe cause of death is a slender sword which has been thrust through the beast's eye. Another much smaller body is draped motionless over the lower branches of a nearby tree, one of the fae-folk. It looks like the beast wasn't defeated without casualty.<<endif>><<if $beastsRest is true>>The beast's great carcass lies motionless amongst the shattered vegetation<<endif>>\n\n<<if $haveSword is false>>[[Remove the blade from the beast's eye|Get Sword]]<<endif>><<if $havePelt is false and $haveSword is true>>[[Skin the beast|Skin Beast]]<<endif>>\n[[Return to the crossroads|Wilds]]\n\nIt is the <<if $time is 1>><text style="color:yellow;">morning</text><<endif>><<if $time is 2>><text style="color:orange;">afternoon</text><<endif>><<if $time is 3>><text style="color:purple;">night</text><<endif>> of day <<$day>>.\n<<set $beastsRest to true>>\n<<fadeInSound "wildsBeastsRest.wav">>\n<<endif>>\n<<fadeOutSound "wildsMain.wav">>
You easily remove some of the honey without overly disturbing the hive and store it in a container<<if $followedBird is false>>, making sure to share generously with your beaky friend who then flaps off into the treetops<<endif>>.\n\n[[Return to the crossroads|Wilds]]\n[[Collect some more honey|Collect Honey 2]]\n<<set $supplies +=1>>\n<<set $followedBird to true>>
OK then, there's still quite a bit of honey in the hive, you can get some more. The bees aren't as obliging about it this time and a couple of them sting you. \n\nHope you aren't allergic.\n\n[[Return to the crossroads|Wilds]]\n[[More honey|Collect Honey 3]]\n\n<<set $supplies +=1>>
You manage to squeeze some more honey out of the hive. Some of the other bees in the clearing are starting to take notice, and you get stung several more times, including right on the tip of your nose! A swarm of bees is starting to buzz menacingly around you.\n\nYour nose is swollen up several times its usual size, but you've got a lot of honey now.\n\n[[Get out of there|Wilds]]\n[[ALL THE HONEY!|Collect Honey 4 Death]]\n\n<<set $angeredBees to true>>\n<<set $supplies +=1>>
You begin your journey over the mountains while the storm is <<print $stormDays - $day>> day<<if $stormDays - $day > 1 or $stormDays - $day < 1>>s<<endif>> away.\n\n<<if $supplies >= $journeyDays>>You have enough supplies to last the full trip.<<set $next to 1>><<endif>><<if $supplies < $journeyDays>>You don't have enough supplies to last the trip.<<endif>> \n\n<<if $next is 0>>You collapse from hunger in the cold mountains before you can make it all the way across. <<if $journeyDays - $supplies is 1>>You were so close though!<<endif>><<endif>><<if $next is 1>><<if $parka is true and $boots is true>>Thanks to your cloak and boots, the mountains didn't even feel that cold.<<set $next to 3>><<endif>><<if $parka is true and $boots is false>>Your cloak kept the main part of your body warm, but you got frostbite and lost several toes along the way.<<set $next to 2>><<endif>><<if $parka is false and $boots is true>>Your boots kept your feet very warm, but you got frostbite and lost several fingers along the way.<<set $next to 2>><<endif>><<if $parka is false and $boots is false>>You froze to death only 2 days into your journey.<<endif>><<endif>>\n\n<<if $next is 3>>You completed your journey successfully, and return home to your village with many tales to tell. Congratulations!<<fadeInSound "menuBase.wav">><<endif>><<if $next is 2>>You completed your journey successfully, although you lost some of yourself along the way. You return home to your village with some cautionary tales to tell.<<fadeInSound "menuBase.wav">><<endif>><<if $next is 1 or $next is 0>>Better luck next time!<<fadeInSound "deathScreen.wav">><<endif>>\n<<fadeOutSound "storm.wav">>\n<<fadeOutSound "homeMain.wav">>
As you eat the mushroom, you can feel your lungs start to expand. They burn slightly as you breath in deeply and dive into the water. The river currents carry you through the cavern and into some underground rapids. You get tumbled around in the water and eventually get the air knocked out of you. As water floods your lungs you realise that you can still breathe! Just as you suspected, the mushrooms are helping you breathe underwater.\n\nEventually the current carries you out into blinding sunlight. The river came out of the caves on the other side of the mountains! \n\nYou let the river carry you down through a valley and right into your home village. Returning from your adventure while floating down the river makes you a minor celebrity for a while, and people gladly host you to tell them stories of your travels.\n\nWell done!\n\n<<fadeOutSound "riverEscape.wav">>\n<<fadeInSound "menuBase.wav">>
Just so you know, this game includes graphic descriptions of death in various, sometimes rather specific, ways (e.g. drowning, anaphylaxis). It also includes descriptions of dead wild animals, as well as dead people, both in realistic and unrealistic circumstances.\n\nIf you're not into engaging with that kinda stuff right now, don't feel bad about coming back later when you've got the stomach for it, or just giving this game a miss altogether.\n\n[[Good to know|Start]]
<<set $time +=1>><<if $time is 4>><<set $time to 1>><<set $day +=1>><<endif>><<if $stormDays - $day <= 0>>[[The storm has come|Storm Loss]]<<fadeInSound "storm.wav">><<fadeOutSound "wildsMain.wav">><<else>><<if $fertileGrove is false>>You have discovered a site: <<endif>>Fertile Grove\n\n<<if $seedsPlanted is true and $day - $seedDate < 3>>You enter the fertile grove. Your plants are coming along nicely, with tall green stalks already reaching towards the sky!<<endif>><<if $day - $seedDate >= 3>>Your plants have matured! The tall stalks appear to have grown large juicy grains on them in big bunches.<<endif>><<if $seedsPlanted is false>>You find a grove with a decent amount of dark, fertile soil. It looks like the perfect place to plant some seeds!<<endif>> <<if $haveSeeds is false>>If only you had some...<<endif>>\n<<if $haveSeeds is true and $seedsPlanted is false>>[[Plant the EZ-Gro Seeds|Plant Seeds]]<<endif>><<if $day - $seedDate >= 3 and $seedsPlanted is true>>[[Harvest the plants|Harvest Grain]]<<endif>><<if $seedsPlanted is true and $seedDate is $day>>Your seeds have been planted<<endif>>\n[[Return to the crossroads|Wilds]]\n\nIt is the <<if $time is 1>><text style="color:yellow;">morning</text><<endif>><<if $time is 2>><text style="color:orange;">afternoon</text><<endif>><<if $time is 3>><text style="color:purple;">night</text><<endif>> of day <<$day>>.\n<<set $fertileGrove to true>>\n<<endif>>
<<if $spelunkersDemise is false>>You have discovered a site: <<endif>>Spelunker's Demise\n\n<<if $spelunkersDemise is false>>You ease yourself towards the edge of the fissure and peek over the edge. In the distance below you can see something shiny amongst the craggy remains. You manage to carefully pick your way through the cleft rocks and lower yourselft down cliff faces until you reach it. There is a dessicated body wedged halfway into a small opening in the rocks. In their hands: a small pack containing basic climbing gear; some ropes, a harness, a small pickaxe. These items would be invaluable to helping you make it through the mountains quickly and safely. You take them. There also seems to be a weathered old map tucked into a pocket of the pack. It depicts a complex series of passageways leading to some sort of exit from the caves. The climber must have been looking for a way out of here.<<endif>><<if $spelunkersDemise is true>>You approach the fissure again. You cannot see anything else of value amongst the craggy remains.<<endif>>\n\n[[Return to the main passage|Depths]]\n<<nobr>>\n<<set $spelunkersDemise to true>>\n<<set $climbingTools to true>>\n<<set $journeyDays -= 1>>\n<<set $map to true>>\n<<set $time +=1>>\n<<if $time is 4>><<set $time to 1>><<set $day +=1>><<endif>>\n<<fadeOutSound "depthsMain.wav">>\n<<fadeInSound "depthsSpelunkersDemise.wav">>\n<<endnobr>>
Home.\n<<if previous() is "Wilds" or previous() is "Depths">><<set $time +=1>><<endif>><<if $time is 4>><<set $time to 1>><<set $day +=1>><<endif>><<if $stormDays - $day <= 0>>[[The storm has come|Storm Loss]]<<fadeInSound "storm.wav">><<else>>It is the <<if $time is 1>><text style="color:yellow;">morning</text><<endif>><<if $time is 2>><text style="color:orange;">afternoon</text><<endif>><<if $time is 3>><text style="color:purple;">night</text><<endif>> of day <<$day>>.\n\nYou have supplies for <<$supplies>> day<<if $supplies > 1 or $supplies < 1>>s<<endif>> of your <<$journeyDays>> day journey.\nThere <<if $stormDays - $day is 1>>is<<else>>are<<endif>> <<print $stormDays - $day>> day<<if $stormDays - $day > 1>>s<<endif>> left until the storm reaches you.\n\nWhat will you do to prepare for your journey?\n\n[[Venture into the Wilds|Wilds]]\n[[Creep into the Depths|Depths]]\n<<if $key is false>>[[Play with your puzzle cube|Cube]]<<else>>You solved the puzzle cube. You have a key.<<endif>>\n<<if $havePelt is true>>[[Turn the beast pelt into a pair of boots|Boots]]<<endif>><<if $boots is true>>You turned the beast pelt into some warm boots.<<endif>>\n<<if $haveGrains is true and $bread is false and $haveFlour is false>>[[Grind the grains into flour|Flour]]<<endif>><<if $haveFlour is true>>[[Bake the flour into bread|Bake]]<<endif>><<if $bread is true>>You've baked some delicious bread.<<endif>>\n[[Begin your journey now!|Journey Result]]\n[[Review the premise|Premise]]\n<<fadeInSound "homeMain.wav">>\n<<endif>>\n<<nobr>>\n<<fadeOutSound "homeCraftAdd.wav">>\n<<fadeOutSound "wildsMain.wav">>\n<<fadeOutSound "depthsMain.wav">>\n<<fadeOutSound "menuBase.wav">>\n<<endnobr>>
You go through the mature plants and carefully remove the bunches of grains. As you do, you notice that the grains have a hard outter shell, and the flesh inside is quite dry and bitter. Some processing is going to be required to make the grains edible for your journey.\n\n[[Return to the Crossroads|Wilds]]\n<<set $haveGrains to true>>
As you approach the temple entrance you get the sense that you're being watched. You light an extra torch and hold it high in the air. On the furthest edges of the torchlight you can see shifting shadows which are not your own. \n\n[[Attempt to enter the temple|Temple Fight]]\n[[Return to the main cavern|Depths]]\n<<fadeInSound "templeCombat1Add.wav">>
<<set $time +=1>><<if $time is 4>><<set $time to 1>><<set $day +=1>><<endif>><<if $stormDays - $day <= 0>>[[The storm has come|Storm Loss]]<<fadeInSound "storm.wav">><<else>><<if $flowerFields is false>>You have discovered a site: <<endif>>Flower Fields\n\nYou follow the <<if $followedBird is false>>bird<<else>>path<<endif>> through the ancient trees and eventually reach a clearing filled with flowers.\n\n<<if $followedBird is false>>The bird flies over to a small tree nearby and chitters at a beehive hanging from one of the branches.<<endif>><<if $followedBird is true and $angeredBees is false>>The bee hive is happily buzzing from its branch.<<endif>>\n\n<<if $angeredBees is false>>[[Collect some honey from the hive|Collect Honey 1]]<<else>>The bees recognise you as someone who raided them previously. They buzz angrily around their hive.<<endif>>\n[[Return to the crossroads|Wilds]]\n<<set $flowerFields to true>>\nIt is the <<if $time is 1>><text style="color:yellow;">morning</text><<endif>><<if $time is 2>><text style="color:orange;">afternoon</text><<endif>><<if $time is 3>><text style="color:purple;">night</text><<endif>> of day <<$day>>.\n<<fadeInSound "wildsBees.wav">>\n<<endif>>\n<<fadeOutSound "wildsMain.wav">>
<<if $stormDays - $day <= 0>>[[The storm has come|Storm Loss]]<<fadeInSound "storm.wav">><<else>>You are in the wilds at a crossroads. There are three paths to follow through the thick green underbrush:\n\n<<if $flowerFields is false>>[[Follow the left path|Path to Flower Fields]]<<endif>><<if $flowerFields is true>>[[Go to the Flower Fields|Flower Fields]]<<endif>>\n<<if $beastsRest is false>>[[Follow the centre path|Beast's Rest]]<<endif>><<if $beastsRest is true>>[[Visit the Beast's resting place|Beast's Rest]]<<endif>>\n<<if $fertileGrove is false>>[[Follow the right path|Fertile Grove]]<<endif>><<if $fertileGrove is true>>[[Visit the Fertile Grove|Fertile Grove]]<<endif>>\n\n[[Return Home|Home]]\n\nIt is the <<if $time is 1>><text style="color:yellow;">morning</text><<endif>><<if $time is 2>><text style="color:orange;">afternoon</text><<endif>><<if $time is 3>><text style="color:purple;">night</text><<endif>> of day <<$day>>.\n<<fadeInSound "wildsMain.wav">>\n<<endif>>\n<<fadeOutSound "homeMain.wav">>\n<<fadeOutSound "wildsBees.wav">>\n<<fadeOutSound "wildsBeastsRest.wav">>\n
<<if $choice is "7 - 11 - 13">>The code was correct! The cube opens up to reveal an ancient stone key. Maybe it will be useful for opening something?<<set $key to true>><<endif>><<if $choice is "12 - 34 - 5">>The code was incorrect!<<endif>><<if $choice is "51 - 23 - 8">>The code was incorrect!<<endif>>\n\n<<if $choice is "12 - 34 - 5" or $choice is "51 - 23 - 8">>[[Try again|Cube]]<<endif>><<if $choice is "7 - 11 - 13">>[[Nice work!|Home]]<<set $time +=1>><<if $time is 4>><<set $time to 1>><<set $day +=1>><<endif>><<endif>>
<<if $tarLake is false>>You have discovered a site: <<endif>>Tar Lake.\n\nThe passage leads to a large underground lake filled entirely with a thick black goop which you recognise as tar.<<if $mushrooms is false>> The shore seems to be populated by some sort of weird looking mushrooms. The mushrooms are very pale, with large wide heads resembling the gills of an Axolotl.<<endif>>\n\n<<if $mushrooms is false>>[[Pick some Mushrooms|Mushrooms]]<<endif>>\n[[Return to the main cavern|Depths]]\n<<set $tarLake to true>>\n<<fadeInSound "depthsTarAdd.wav">>
/* Your story will use the CSS in this passage to style the page.\nGive this passage more tags, and it will only affect passages with those tags.\nExample selectors: */\n\nbody {\n\t/* This affects the entire page */\n\t\n}\n#passages {\nwidth: 500px;\nfont face: "calibri";\n}\n.passage {\n\t/* This only affects passages */\n\t\n\t\n}\n.passage a {\n\t/* This affects passage links */\n\t\n\t\n}\n.passage a:hover {\n\t/* This affects links while the cursor is over them */\n\t\n\t\n}
It's dirty and smelly work, but you manage to clean the pelt you took from the dead beast in the Wilds and craft it into a pair of nice warm boots. These will come in handy on your journey over the mountains!\n\n[[Sounds useful|Home]]\n<<set $boots to true>>\n<<set $havePelt to false>>\n<<set $time +=1>><<if $time is 4>><<set $time to 1>><<set $day +=1>><<endif>>\n<<fadeInSound "homeCraftAdd.wav">>
You have collected some weird looking mushrooms! \nSurely they'll be useful for something?\n\n[[Cool!|Tar Lake]]\n\n<<set $mushrooms to true>>\n<<set $time +=1>>\n<<if $time is 4>><<set $time to 1>><<set $day +=1>><<endif>>
You died during the <<if $time is 1>>morning<<endif>><<if $time is 2>>afternoon<<endif>><<if $time is 3>>night<<endif>> of day <<$day>> of your preparations.\n\nYou had gathered <<$supplies>> day<<if $supplies > 1 or $supplies < 1>>s<<endif>> of supplies for your journey.\n\nThe storm was <<print $stormDays - $day>> day<<if $stormDays - $day > 1 or $stormDays - $day < 1>>s<<endif>> away.\n\nYou crafted or collected the following items:\n<<if $followedBird is true>>honey, <<endif>><<if $haveSword is true>>fae sword, <<endif>><<if $havePelt is true>>beast pelt, <<endif>><<if $haveSeeds is true>>EZ-Gro seeds, <<endif>><<if $climbingTools is true>>climbing tools, <<endif>><<if $mushrooms is true>>axolotl mushrooms, <<endif>><<if $parka is true>>priest's cloak, <<endif>><<if $key is true>>key, <<endif>><<if $followedBird is true>>map, <<endif>><<if $haveGrains is true>>grains, <<endif>><<if $haveFlour is true>>flour, <<endif>><<if $boots is true>>boots, <<endif>><<if $bread is true>>bread, <<endif>>and a desire to live again!\n<<fadeOutSound "wildsBees.wav">>\n<<fadeOutSound "templeCombat2Add.wav">>\n<<fadeOutSound "templeCombat1Add.wav">>\n<<fadeOutSound "templeMain.wav">>\n<<fadeOutSound "riverEscape.wav">>\n<<fadeOutSound "storm.wav">>\n<<fadeInSound "deathScreen.wav">>
!function(){"use strict";var e=function(){this.init()};e.prototype={init:function(){var e=this||n;return e._counter=1e3,e._html5AudioPool=[],e.html5PoolSize=10,e._codecs={},e._howls=[],e._muted=!1,e._volume=1,e._canPlayEvent="canplaythrough",e._navigator="undefined"!=typeof window&&window.navigator?window.navigator:null,e.masterGain=null,e.noAudio=!1,e.usingWebAudio=!0,e.autoSuspend=!0,e.ctx=null,e.autoUnlock=!0,e._setup(),e},volume:function(e){var o=this||n;if(e=parseFloat(e),o.ctx||_(),void 0!==e&&e>=0&&e<=1){if(o._volume=e,o._muted)return o;o.usingWebAudio&&o.masterGain.gain.setValueAtTime(e,n.ctx.currentTime);for(var t=0;t<o._howls.length;t++)if(!o._howls[t]._webAudio)for(var r=o._howls[t]._getSoundIds(),a=0;a<r.length;a++){var u=o._howls[t]._soundById(r[a]);u&&u._node&&(u._node.volume=u._volume*e)}return o}return o._volume},mute:function(e){var o=this||n;o.ctx||_(),o._muted=e,o.usingWebAudio&&o.masterGain.gain.setValueAtTime(e?0:o._volume,n.ctx.currentTime);for(var t=0;t<o._howls.length;t++)if(!o._howls[t]._webAudio)for(var r=o._howls[t]._getSoundIds(),a=0;a<r.length;a++){var u=o._howls[t]._soundById(r[a]);u&&u._node&&(u._node.muted=!!e||u._muted)}return o},stop:function(){for(var e=this||n,o=0;o<e._howls.length;o++)e._howls[o].stop();return e},unload:function(){for(var e=this||n,o=e._howls.length-1;o>=0;o--)e._howls[o].unload();return e.usingWebAudio&&e.ctx&&void 0!==e.ctx.close&&(e.ctx.close(),e.ctx=null,_()),e},codecs:function(e){return(this||n)._codecs[e.replace(/^x-/,"")]},_setup:function(){var e=this||n;if(e.state=e.ctx?e.ctx.state||"suspended":"suspended",e._autoSuspend(),!e.usingWebAudio)if("undefined"!=typeof Audio)try{var o=new Audio;void 0===o.oncanplaythrough&&(e._canPlayEvent="canplay")}catch(n){e.noAudio=!0}else e.noAudio=!0;try{var o=new Audio;o.muted&&(e.noAudio=!0)}catch(e){}return e.noAudio||e._setupCodecs(),e},_setupCodecs:function(){var e=this||n,o=null;try{o="undefined"!=typeof Audio?new Audio:null}catch(n){return e}if(!o||"function"!=typeof o.canPlayType)return e;var t=o.canPlayType("audio/mpeg;").replace(/^no$/,""),r=e._navigator&&e._navigator.userAgent.match(/OPR\s/([0-6].)/g),a=r&&parseInt(r[0].split("/")[1],10)<33;return e._codecs={mp3:!(a||!t&&!o.canPlayType("audio/mp3;").replace(/^no$/,"")),mpeg:!!t,opus:!!o.canPlayType('audio/ogg; codecs="opus"').replace(/^no$/,""),ogg:!!o.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),oga:!!o.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),wav:!!(o.canPlayType('audio/wav; codecs="1"')||o.canPlayType("audio/wav")).replace(/^no$/,""),aac:!!o.canPlayType("audio/aac;").replace(/^no$/,""),caf:!!o.canPlayType("audio/x-caf;").replace(/^no$/,""),m4a:!!(o.canPlayType("audio/x-m4a;")||o.canPlayType("audio/m4a;")||o.canPlayType("audio/aac;")).replace(/^no$/,""),m4b:!!(o.canPlayType("audio/x-m4b;")||o.canPlayType("audio/m4b;")||o.canPlayType("audio/aac;")).replace(/^no$/,""),mp4:!!(o.canPlayType("audio/x-mp4;")||o.canPlayType("audio/mp4;")||o.canPlayType("audio/aac;")).replace(/^no$/,""),weba:!!o.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,""),webm:!!o.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,""),dolby:!!o.canPlayType('audio/mp4; codecs="ec-3"').replace(/^no$/,""),flac:!!(o.canPlayType("audio/x-flac;")||o.canPlayType("audio/flac;")).replace(/^no$/,"")},e},_unlockAudio:function(){var e=this||n;if(!e._audioUnlocked&&e.ctx){e._audioUnlocked=!1,e.autoUnlock=!1,e._mobileUnloaded||44100===e.ctx.sampleRate||(e._mobileUnloaded=!0,e.unload()),e._scratchBuffer=e.ctx.createBuffer(1,1,22050);var o=function(n){for(;e._html5AudioPool.length<e.html5PoolSize;)try{var t=new Audio;t._unlocked=!0,e._releaseHtml5Audio(t)}catch(n){e.noAudio=!0;break}for(var r=0;r<e._howls.length;r++)if(!e._howls[r]._webAudio)for(var a=e._howls[r]._getSoundIds(),u=0;u<a.length;u++){var d=e._howls[r]._soundById(a[u]);d&&d._node&&!d._node._unlocked&&(d._node._unlocked=!0,d._node.load())}e._autoResume();var i=e.ctx.createBufferSource();i.buffer=e._scratchBuffer,i.connect(e.ctx.destination),void 0===i.start?i.noteOn(0):i.start(0),"function"==typeof e.ctx.resume&&e.ctx.resume(),i.onended=function(){i.disconnect(0),e._audioUnlocked=!0,document.removeEventListener("touchstart",o,!0),document.removeEventListener("touchend",o,!0),document.removeEventListener("click",o,!0);for(var n=0;n<e._howls.length;n++)e._howls[n]._emit("unlock")}};return document.addEventListener("touchstart",o,!0),document.addEventListener("touchend",o,!0),document.addEventListener("click",o,!0),e}},_obtainHtml5Audio:function(){var e=this||n;if(e._html5AudioPool.length)return e._html5AudioPool.pop();var o=(new Audio).play();return o&&"undefined"!=typeof Promise&&(o instanceof Promise||"function"==typeof o.then)&&o.catch(function(){console.warn("HTML5 Audio pool exhausted, returning potentially locked audio object.")}),new Audio},_releaseHtml5Audio:function(e){var o=this||n;return e._unlocked&&o._html5AudioPool.push(e),o},_autoSuspend:function(){var e=this;if(e.autoSuspend&&e.ctx&&void 0!==e.ctx.suspend&&n.usingWebAudio){for(var o=0;o<e._howls.length;o++)if(e._howls[o]._webAudio)for(var t=0;t<e._howls[o]._sounds.length;t++)if(!e._howls[o]._sounds[t]._paused)return e;return e._suspendTimer&&clearTimeout(e._suspendTimer),e._suspendTimer=setTimeout(function(){if(e.autoSuspend){e._suspendTimer=null,e.state="suspending";var n=function(){e.state="suspended",e._resumeAfterSuspend&&(delete e._resumeAfterSuspend,e._autoResume())};e.ctx.suspend().then(n,n)}},3e4),e}},_autoResume:function(){var e=this;if(e.ctx&&void 0!==e.ctx.resume&&n.usingWebAudio)return"running"===e.state&&"interrupted"!==e.ctx.state&&e._suspendTimer?(clearTimeout(e._suspendTimer),e._suspendTimer=null):"suspended"===e.state||"running"===e.state&&"interrupted"===e.ctx.state?(e.ctx.resume().then(function(){e.state="running";for(var n=0;n<e._howls.length;n++)e._howls[n]._emit("resume")}),e._suspendTimer&&(clearTimeout(e._suspendTimer),e._suspendTimer=null)):"suspending"===e.state&&(e._resumeAfterSuspend=!0),e}};var n=new e,o=function(e){var n=this;if(!e.src||0===e.src.length)return void console.error("An array of source files must be passed with any new Howl.");n.init(e)};o.prototype={init:function(e){var o=this;return n.ctx||_(),o._autoplay=e.autoplay||!1,o._format="string"!=typeof e.format?e.format:[e.format],o._html5=e.html5||!1,o._muted=e.mute||!1,o._loop=e.loop||!1,o._pool=e.pool||5,o._preload="boolean"!=typeof e.preload&&"metadata"!==e.preload||e.preload,o._rate=e.rate||1,o._sprite=e.sprite||{},o._src="string"!=typeof e.src?e.src:[e.src],o._volume=void 0!==e.volume?e.volume:1,o._xhr={method:e.xhr&&e.xhr.method?e.xhr.method:"GET",headers:e.xhr&&e.xhr.headers?e.xhr.headers:null,withCredentials:!(!e.xhr||!e.xhr.withCredentials)&&e.xhr.withCredentials},o._duration=0,o._state="unloaded",o._sounds=[],o._endTimers={},o._queue=[],o._playLock=!1,o._onend=e.onend?[{fn:e.onend}]:[],o._onfade=e.onfade?[{fn:e.onfade}]:[],o._onload=e.onload?[{fn:e.onload}]:[],o._onloaderror=e.onloaderror?[{fn:e.onloaderror}]:[],o._onplayerror=e.onplayerror?[{fn:e.onplayerror}]:[],o._onpause=e.onpause?[{fn:e.onpause}]:[],o._onplay=e.onplay?[{fn:e.onplay}]:[],o._onstop=e.onstop?[{fn:e.onstop}]:[],o._onmute=e.onmute?[{fn:e.onmute}]:[],o._onvolume=e.onvolume?[{fn:e.onvolume}]:[],o._onrate=e.onrate?[{fn:e.onrate}]:[],o._onseek=e.onseek?[{fn:e.onseek}]:[],o._onunlock=e.onunlock?[{fn:e.onunlock}]:[],o._onresume=[],o._webAudio=n.usingWebAudio&&!o._html5,void 0!==n.ctx&&n.ctx&&n.autoUnlock&&n._unlockAudio(),n._howls.push(o),o._autoplay&&o._queue.push({event:"play",action:function(){o.play()}}),o._preload&&"none"!==o._preload&&o.load(),o},load:function(){var e=this,o=null;if(n.noAudio)return void e._emit("loaderror",null,"No audio support.");"string"==typeof e._src&&(e._src=[e._src]);for(var r=0;r<e._src.length;r++){var u,d;if(e._format&&e._format[r])u=e._format[r];else{if("string"!=typeof(d=e._src[r])){e._emit("loaderror",null,"Non-string found in selected audio sources - ignoring.");continue}u=/^data:audio\s/([^;,]+);/i.exec(d),u||(u=/\s.([^.]+)$/.exec(d.split("?",1)[0])),u&&(u=u[1].toLowerCase())}if(u||console.warn('No file extension was found. Consider using the "format" property or specify an extension.'),u&&n.codecs(u)){o=e._src[r];break}}return o?(e._src=o,e._state="loading","https:"===window.location.protocol&&"http:"===o.slice(0,5)&&(e._html5=!0,e._webAudio=!1),new t(e),e._webAudio&&a(e),e):void e._emit("loaderror",null,"No codec support for selected audio sources.")},play:function(e,o){var t=this,r=null;if("number"==typeof e)r=e,e=null;else{if("string"==typeof e&&"loaded"===t._state&&!t._sprite[e])return null;if(void 0===e&&(e="__default",!t._playLock)){for(var a=0,u=0;u<t._sounds.length;u++)t._sounds[u]._paused&&!t._sounds[u]._ended&&(a++,r=t._sounds[u]._id);1===a?e=null:r=null}}var d=r?t._soundById(r):t._inactiveSound();if(!d)return null;if(r&&!e&&(e=d._sprite||"__default"),"loaded"!==t._state){d._sprite=e,d._ended=!1;var i=d._id;return t._queue.push({event:"play",action:function(){t.play(i)}}),i}if(r&&!d._paused)return o||t._loadQueue("play"),d._id;t._webAudio&&n._autoResume();var _=Math.max(0,d._seek>0?d._seek:t._sprite[e][0]/1e3),s=Math.max(0,(t._sprite[e][0]+t._sprite[e][1])/1e3-_),l=1e3*s/Math.abs(d._rate),c=t._sprite[e][0]/1e3,f=(t._sprite[e][0]+t._sprite[e][1])/1e3;d._sprite=e,d._ended=!1;var p=function(){d._paused=!1,d._seek=_,d._start=c,d._stop=f,d._loop=!(!d._loop&&!t._sprite[e][2])};if(_>=f)return void t._ended(d);var m=d._node;if(t._webAudio){var v=function(){t._playLock=!1,p(),t._refreshBuffer(d);var e=d._muted||t._muted?0:d._volume;m.gain.setValueAtTime(e,n.ctx.currentTime),d._playStart=n.ctx.currentTime,void 0===m.bufferSource.start?d._loop?m.bufferSource.noteGrainOn(0,_,86400):m.bufferSource.noteGrainOn(0,_,s):d._loop?m.bufferSource.start(0,_,86400):m.bufferSource.start(0,_,s),l!==1/0&&(t._endTimers[d._id]=setTimeout(t._ended.bind(t,d),l)),o||setTimeout(function(){t._emit("play",d._id),t._loadQueue()},0)};"running"===n.state&&"interrupted"!==n.ctx.state?v():(t._playLock=!0,t.once("resume",v),t._clearTimer(d._id))}else{var h=function(){m.currentTime=_,m.muted=d._muted||t._muted||n._muted||m.muted,m.volume=d._volume*n.volume(),m.playbackRate=d._rate;try{var r=m.play();if(r&&"undefined"!=typeof Promise&&(r instanceof Promise||"function"==typeof r.then)?(t._playLock=!0,p(),r.then(function(){t._playLock=!1,m._unlocked=!0,o||(t._emit("play",d._id),t._loadQueue())}).catch(function(){t._playLock=!1,t._emit("playerror",d._id,"Playback was unable to start. This is most commonly an issue on mobile devices and Chrome where playback was not within a user interaction."),d._ended=!0,d._paused=!0})):o||(t._playLock=!1,p(),t._emit("play",d._id),t._loadQueue()),m.playbackRate=d._rate,m.paused)return void t._emit("playerror",d._id,"Playback was unable to start. This is most commonly an issue on mobile devices and Chrome where playback was not within a user interaction.");"__default"!==e||d._loop?t._endTimers[d._id]=setTimeout(t._ended.bind(t,d),l):(t._endTimers[d._id]=function(){t._ended(d),m.removeEventListener("ended",t._endTimers[d._id],!1)},m.addEventListener("ended",t._endTimers[d._id],!1))}catch(e){t._emit("playerror",d._id,e)}};"data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA"===m.src&&(m.src=t._src,m.load());var y=window&&window.ejecta||!m.readyState&&n._navigator.isCocoonJS;if(m.readyState>=3||y)h();else{t._playLock=!0;var g=function(){h(),m.removeEventListener(n._canPlayEvent,g,!1)};m.addEventListener(n._canPlayEvent,g,!1),t._clearTimer(d._id)}}return d._id},pause:function(e){var n=this;if("loaded"!==n._state||n._playLock)return n._queue.push({event:"pause",action:function(){n.pause(e)}}),n;for(var o=n._getSoundIds(e),t=0;t<o.length;t++){n._clearTimer(o[t]);var r=n._soundById(o[t]);if(r&&!r._paused&&(r._seek=n.seek(o[t]),r._rateSeek=0,r._paused=!0,n._stopFade(o[t]),r._node))if(n._webAudio){if(!r._node.bufferSource)continue;void 0===r._node.bufferSource.stop?r._node.bufferSource.noteOff(0):r._node.bufferSource.stop(0),n._cleanBuffer(r._node)}else isNaN(r._node.duration)&&r._node.duration!==1/0||r._node.pause();arguments[1]||n._emit("pause",r?r._id:null)}return n},stop:function(e,n){var o=this;if("loaded"!==o._state||o._playLock)return o._queue.push({event:"stop",action:function(){o.stop(e)}}),o;for(var t=o._getSoundIds(e),r=0;r<t.length;r++){o._clearTimer(t[r]);var a=o._soundById(t[r]);a&&(a._seek=a._start||0,a._rateSeek=0,a._paused=!0,a._ended=!0,o._stopFade(t[r]),a._node&&(o._webAudio?a._node.bufferSource&&(void 0===a._node.bufferSource.stop?a._node.bufferSource.noteOff(0):a._node.bufferSource.stop(0),o._cleanBuffer(a._node)):isNaN(a._node.duration)&&a._node.duration!==1/0||(a._node.currentTime=a._start||0,a._node.pause(),a._node.duration===1/0&&o._clearSound(a._node))),n||o._emit("stop",a._id))}return o},mute:function(e,o){var t=this;if("loaded"!==t._state||t._playLock)return t._queue.push({event:"mute",action:function(){t.mute(e,o)}}),t;if(void 0===o){if("boolean"!=typeof e)return t._muted;t._muted=e}for(var r=t._getSoundIds(o),a=0;a<r.length;a++){var u=t._soundById(r[a]);u&&(u._muted=e,u._interval&&t._stopFade(u._id),t._webAudio&&u._node?u._node.gain.setValueAtTime(e?0:u._volume,n.ctx.currentTime):u._node&&(u._node.muted=!!n._muted||e),t._emit("mute",u._id))}return t},volume:function(){var e,o,t=this,r=arguments;if(0===r.length)return t._volume;if(1===r.length||2===r.length&&void 0===r[1]){t._getSoundIds().indexOf(r[0])>=0?o=parseInt(r[0],10):e=parseFloat(r[0])}else r.length>=2&&(e=parseFloat(r[0]),o=parseInt(r[1],10));var a;if(!(void 0!==e&&e>=0&&e<=1))return a=o?t._soundById(o):t._sounds[0],a?a._volume:0;if("loaded"!==t._state||t._playLock)return t._queue.push({event:"volume",action:function(){t.volume.apply(t,r)}}),t;void 0===o&&(t._volume=e),o=t._getSoundIds(o);for(var u=0;u<o.length;u++)(a=t._soundById(o[u]))&&(a._volume=e,r[2]||t._stopFade(o[u]),t._webAudio&&a._node&&!a._muted?a._node.gain.setValueAtTime(e,n.ctx.currentTime):a._node&&!a._muted&&(a._node.volume=e*n.volume()),t._emit("volume",a._id));return t},fade:function(e,o,t,r){var a=this;if("loaded"!==a._state||a._playLock)return a._queue.push({event:"fade",action:function(){a.fade(e,o,t,r)}}),a;e=Math.min(Math.max(0,parseFloat(e)),1),o=Math.min(Math.max(0,parseFloat(o)),1),t=parseFloat(t),a.volume(e,r);for(var u=a._getSoundIds(r),d=0;d<u.length;d++){var i=a._soundById(u[d]);if(i){if(r||a._stopFade(u[d]),a._webAudio&&!i._muted){var _=n.ctx.currentTime,s=_+t/1e3;i._volume=e,i._node.gain.setValueAtTime(e,_),i._node.gain.linearRampToValueAtTime(o,s)}a._startFadeInterval(i,e,o,t,u[d],void 0===r)}}return a},_startFadeInterval:function(e,n,o,t,r,a){var u=this,d=n,i=o-n,_=Math.abs(i/.01),s=Math.max(4,_>0?t/_:t),l=Date.now();e._fadeTo=o,e._interval=setInterval(function(){var r=(Date.now()-l)/t;l=Date.now(),d+=i*r,d=Math.round(100*d)/100,d=i<0?Math.max(o,d):Math.min(o,d),u._webAudio?e._volume=d:u.volume(d,e._id,!0),a&&(u._volume=d),(o<n&&d<=o||o>n&&d>=o)&&(clearInterval(e._interval),e._interval=null,e._fadeTo=null,u.volume(o,e._id),u._emit("fade",e._id))},s)},_stopFade:function(e){var o=this,t=o._soundById(e);return t&&t._interval&&(o._webAudio&&t._node.gain.cancelScheduledValues(n.ctx.currentTime),clearInterval(t._interval),t._interval=null,o.volume(t._fadeTo,e),t._fadeTo=null,o._emit("fade",e)),o},loop:function(){var e,n,o,t=this,r=arguments;if(0===r.length)return t._loop;if(1===r.length){if("boolean"!=typeof r[0])return!!(o=t._soundById(parseInt(r[0],10)))&&o._loop;e=r[0],t._loop=e}else 2===r.length&&(e=r[0],n=parseInt(r[1],10));for(var a=t._getSoundIds(n),u=0;u<a.length;u++)(o=t._soundById(a[u]))&&(o._loop=e,t._webAudio&&o._node&&o._node.bufferSource&&(o._node.bufferSource.loop=e,e&&(o._node.bufferSource.loopStart=o._start||0,o._node.bufferSource.loopEnd=o._stop)));return t},rate:function(){var e,o,t=this,r=arguments;if(0===r.length)o=t._sounds[0]._id;else if(1===r.length){var a=t._getSoundIds(),u=a.indexOf(r[0]);u>=0?o=parseInt(r[0],10):e=parseFloat(r[0])}else 2===r.length&&(e=parseFloat(r[0]),o=parseInt(r[1],10));var d;if("number"!=typeof e)return d=t._soundById(o),d?d._rate:t._rate;if("loaded"!==t._state||t._playLock)return t._queue.push({event:"rate",action:function(){t.rate.apply(t,r)}}),t;void 0===o&&(t._rate=e),o=t._getSoundIds(o);for(var i=0;i<o.length;i++)if(d=t._soundById(o[i])){t.playing(o[i])&&(d._rateSeek=t.seek(o[i]),d._playStart=t._webAudio?n.ctx.currentTime:d._playStart),d._rate=e,t._webAudio&&d._node&&d._node.bufferSource?d._node.bufferSource.playbackRate.setValueAtTime(e,n.ctx.currentTime):d._node&&(d._node.playbackRate=e);var _=t.seek(o[i]),s=(t._sprite[d._sprite][0]+t._sprite[d._sprite][1])/1e3-_,l=1e3*s/Math.abs(d._rate);!t._endTimers[o[i]]&&d._paused||(t._clearTimer(o[i]),t._endTimers[o[i]]=setTimeout(t._ended.bind(t,d),l)),t._emit("rate",d._id)}return t},seek:function(){var e,o,t=this,r=arguments;if(0===r.length)o=t._sounds[0]._id;else if(1===r.length){var a=t._getSoundIds(),u=a.indexOf(r[0]);u>=0?o=parseInt(r[0],10):t._sounds.length&&(o=t._sounds[0]._id,e=parseFloat(r[0]))}else 2===r.length&&(e=parseFloat(r[0]),o=parseInt(r[1],10));if(void 0===o)return t;if("number"==typeof e&&("loaded"!==t._state||t._playLock))return t._queue.push({event:"seek",action:function(){t.seek.apply(t,r)}}),t;var d=t._soundById(o);if(d){if(!("number"==typeof e&&e>=0)){if(t._webAudio){var i=t.playing(o)?n.ctx.currentTime-d._playStart:0,_=d._rateSeek?d._rateSeek-d._seek:0;return d._seek+(_+i*Math.abs(d._rate))}return d._node.currentTime}var s=t.playing(o);s&&t.pause(o,!0),d._seek=e,d._ended=!1,t._clearTimer(o),t._webAudio||!d._node||isNaN(d._node.duration)||(d._node.currentTime=e);var l=function(){t._emit("seek",o),s&&t.play(o,!0)};if(s&&!t._webAudio){var c=function(){t._playLock?setTimeout(c,0):l()};setTimeout(c,0)}else l()}return t},playing:function(e){var n=this;if("number"==typeof e){var o=n._soundById(e);return!!o&&!o._paused}for(var t=0;t<n._sounds.length;t++)if(!n._sounds[t]._paused)return!0;return!1},duration:function(e){var n=this,o=n._duration,t=n._soundById(e);return t&&(o=n._sprite[t._sprite][1]/1e3),o},state:function(){return this._state},unload:function(){for(var e=this,o=e._sounds,t=0;t<o.length;t++)o[t]._paused||e.stop(o[t]._id),e._webAudio||(e._clearSound(o[t]._node),o[t]._node.removeEventListener("error",o[t]._errorFn,!1),o[t]._node.removeEventListener(n._canPlayEvent,o[t]._loadFn,!1),o[t]._node.removeEventListener("ended",o[t]._endFn,!1),n._releaseHtml5Audio(o[t]._node)),delete o[t]._node,e._clearTimer(o[t]._id);var a=n._howls.indexOf(e);a>=0&&n._howls.splice(a,1);var u=!0;for(t=0;t<n._howls.length;t++)if(n._howls[t]._src===e._src||e._src.indexOf(n._howls[t]._src)>=0){u=!1;break}return r&&u&&delete r[e._src],n.noAudio=!1,e._state="unloaded",e._sounds=[],e=null,null},on:function(e,n,o,t){var r=this,a=r["_on"+e];return"function"==typeof n&&a.push(t?{id:o,fn:n,once:t}:{id:o,fn:n}),r},off:function(e,n,o){var t=this,r=t["_on"+e],a=0;if("number"==typeof n&&(o=n,n=null),n||o)for(a=0;a<r.length;a++){var u=o===r[a].id;if(n===r[a].fn&&u||!n&&u){r.splice(a,1);break}}else if(e)t["_on"+e]=[];else{var d=Object.keys(t);for(a=0;a<d.length;a++)0===d[a].indexOf("_on")&&Array.isArray(t[d[a]])&&(t[d[a]]=[])}return t},once:function(e,n,o){var t=this;return t.on(e,n,o,1),t},_emit:function(e,n,o){for(var t=this,r=t["_on"+e],a=r.length-1;a>=0;a--)r[a].id&&r[a].id!==n&&"load"!==e||(setTimeout(function(e){e.call(this,n,o)}.bind(t,r[a].fn),0),r[a].once&&t.off(e,r[a].fn,r[a].id));return t._loadQueue(e),t},_loadQueue:function(e){var n=this;if(n._queue.length>0){var o=n._queue[0];o.event===e&&(n._queue.shift(),n._loadQueue()),e||o.action()}return n},_ended:function(e){var o=this,t=e._sprite;if(!o._webAudio&&e._node&&!e._node.paused&&!e._node.ended&&e._node.currentTime<e._stop)return setTimeout(o._ended.bind(o,e),100),o;var r=!(!e._loop&&!o._sprite[t][2]);if(o._emit("end",e._id),!o._webAudio&&r&&o.stop(e._id,!0).play(e._id),o._webAudio&&r){o._emit("play",e._id),e._seek=e._start||0,e._rateSeek=0,e._playStart=n.ctx.currentTime;var a=1e3*(e._stop-e._start)/Math.abs(e._rate);o._endTimers[e._id]=setTimeout(o._ended.bind(o,e),a)}return o._webAudio&&!r&&(e._paused=!0,e._ended=!0,e._seek=e._start||0,e._rateSeek=0,o._clearTimer(e._id),o._cleanBuffer(e._node),n._autoSuspend()),o._webAudio||r||o.stop(e._id,!0),o},_clearTimer:function(e){var n=this;if(n._endTimers[e]){if("function"!=typeof n._endTimers[e])clearTimeout(n._endTimers[e]);else{var o=n._soundById(e);o&&o._node&&o._node.removeEventListener("ended",n._endTimers[e],!1)}delete n._endTimers[e]}return n},_soundById:function(e){for(var n=this,o=0;o<n._sounds.length;o++)if(e===n._sounds[o]._id)return n._sounds[o];return null},_inactiveSound:function(){var e=this;e._drain();for(var n=0;n<e._sounds.length;n++)if(e._sounds[n]._ended)return e._sounds[n].reset();return new t(e)},_drain:function(){var e=this,n=e._pool,o=0,t=0;if(!(e._sounds.length<n)){for(t=0;t<e._sounds.length;t++)e._sounds[t]._ended&&o++;for(t=e._sounds.length-1;t>=0;t--){if(o<=n)return;e._sounds[t]._ended&&(e._webAudio&&e._sounds[t]._node&&e._sounds[t]._node.disconnect(0),e._sounds.splice(t,1),o--)}}},_getSoundIds:function(e){var n=this;if(void 0===e){for(var o=[],t=0;t<n._sounds.length;t++)o.push(n._sounds[t]._id);return o}return[e]},_refreshBuffer:function(e){var o=this;return e._node.bufferSource=n.ctx.createBufferSource(),e._node.bufferSource.buffer=r[o._src],e._panner?e._node.bufferSource.connect(e._panner):e._node.bufferSource.connect(e._node),e._node.bufferSource.loop=e._loop,e._loop&&(e._node.bufferSource.loopStart=e._start||0,e._node.bufferSource.loopEnd=e._stop||0),e._node.bufferSource.playbackRate.setValueAtTime(e._rate,n.ctx.currentTime),o},_cleanBuffer:function(e){var o=this,t=n._navigator&&n._navigator.vendor.indexOf("Apple")>=0;if(n._scratchBuffer&&e.bufferSource&&(e.bufferSource.onended=null,e.bufferSource.disconnect(0),t))try{e.bufferSource.buffer=n._scratchBuffer}catch(e){}return e.bufferSource=null,o},_clearSound:function(e){/MSIE |Trident\s//.test(n._navigator&&n._navigator.userAgent)||(e.src="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA")}};var t=function(e){this._parent=e,this.init()};t.prototype={init:function(){var e=this,o=e._parent;return e._muted=o._muted,e._loop=o._loop,e._volume=o._volume,e._rate=o._rate,e._seek=0,e._paused=!0,e._ended=!0,e._sprite="__default",e._id=++n._counter,o._sounds.push(e),e.create(),e},create:function(){var e=this,o=e._parent,t=n._muted||e._muted||e._parent._muted?0:e._volume;return o._webAudio?(e._node=void 0===n.ctx.createGain?n.ctx.createGainNode():n.ctx.createGain(),e._node.gain.setValueAtTime(t,n.ctx.currentTime),e._node.paused=!0,e._node.connect(n.masterGain)):n.noAudio||(e._node=n._obtainHtml5Audio(),e._errorFn=e._errorListener.bind(e),e._node.addEventListener("error",e._errorFn,!1),e._loadFn=e._loadListener.bind(e),e._node.addEventListener(n._canPlayEvent,e._loadFn,!1),e._endFn=e._endListener.bind(e),e._node.addEventListener("ended",e._endFn,!1),e._node.src=o._src,e._node.preload=!0===o._preload?"auto":o._preload,e._node.volume=t*n.volume(),e._node.load()),e},reset:function(){var e=this,o=e._parent;return e._muted=o._muted,e._loop=o._loop,e._volume=o._volume,e._rate=o._rate,e._seek=0,e._rateSeek=0,e._paused=!0,e._ended=!0,e._sprite="__default",e._id=++n._counter,e},_errorListener:function(){var e=this;e._parent._emit("loaderror",e._id,e._node.error?e._node.error.code:0),e._node.removeEventListener("error",e._errorFn,!1)},_loadListener:function(){var e=this,o=e._parent;o._duration=Math.ceil(10*e._node.duration)/10,0===Object.keys(o._sprite).length&&(o._sprite={__default:[0,1e3*o._duration]}),"loaded"!==o._state&&(o._state="loaded",o._emit("load"),o._loadQueue()),e._node.removeEventListener(n._canPlayEvent,e._loadFn,!1)},_endListener:function(){var e=this,n=e._parent;n._duration===1/0&&(n._duration=Math.ceil(10*e._node.duration)/10,n._sprite.__default[1]===1/0&&(n._sprite.__default[1]=1e3*n._duration),n._ended(e)),e._node.removeEventListener("ended",e._endFn,!1)}};var r={},a=function(e){var n=e._src;if(r[n])return e._duration=r[n].duration,void i(e);if(/^data:[^;]+;base64,/.test(n)){for(var o=atob(n.split(",")[1]),t=new Uint8Array(o.length),a=0;a<o.length;++a)t[a]=o.charCodeAt(a);d(t.buffer,e)}else{var _=new XMLHttpRequest;_.open(e._xhr.method,n,!0),_.withCredentials=e._xhr.withCredentials,_.responseType="arraybuffer",e._xhr.headers&&Object.keys(e._xhr.headers).forEach(function(n){_.setRequestHeader(n,e._xhr.headers[n])}),_.onload=function(){var n=(_.status+"")[0];if("0"!==n&&"2"!==n&&"3"!==n)return void e._emit("loaderror",null,"Failed loading audio file with status: "+_.status+".");d(_.response,e)},_.onerror=function(){e._webAudio&&(e._html5=!0,e._webAudio=!1,e._sounds=[],delete r[n],e.load())},u(_)}},u=function(e){try{e.send()}catch(n){e.onerror()}},d=function(e,o){var t=function(){o._emit("loaderror",null,"Decoding audio data failed.")},a=function(e){e&&o._sounds.length>0?(r[o._src]=e,i(o,e)):t()};"undefined"!=typeof Promise&&1===n.ctx.decodeAudioData.length?n.ctx.decodeAudioData(e).then(a).catch(t):n.ctx.decodeAudioData(e,a,t)},i=function(e,n){n&&!e._duration&&(e._duration=n.duration),0===Object.keys(e._sprite).length&&(e._sprite={__default:[0,1e3*e._duration]}),"loaded"!==e._state&&(e._state="loaded",e._emit("load"),e._loadQueue())},_=function(){if(n.usingWebAudio){try{"undefined"!=typeof AudioContext?n.ctx=new AudioContext:"undefined"!=typeof webkitAudioContext?n.ctx=new webkitAudioContext:n.usingWebAudio=!1}catch(e){n.usingWebAudio=!1}n.ctx||(n.usingWebAudio=!1);var e=/iP(hone|od|ad)/.test(n._navigator&&n._navigator.platform),o=n._navigator&&n._navigator.appVersion.match(/OS (\sd+)_(\sd+)_?(\sd+)?/),t=o?parseInt(o[1],10):null;if(e&&t&&t<9){var r=/safari/.test(n._navigator&&n._navigator.userAgent.toLowerCase());n._navigator&&!r&&(n.usingWebAudio=!1)}n.usingWebAudio&&(n.masterGain=void 0===n.ctx.createGain?n.ctx.createGainNode():n.ctx.createGain(),n.masterGain.gain.setValueAtTime(n._muted?0:n._volume,n.ctx.currentTime),n.masterGain.connect(n.ctx.destination)),n._setup()}};"function"==typeof define&&define.amd&&define([],function(){return{Howler:n,Howl:o}}),"undefined"!=typeof exports&&(exports.Howler=n,exports.Howl=o),"undefined"!=typeof global?(global.HowlerGlobal=e,global.Howler=n,global.Howl=o,global.Sound=t):"undefined"!=typeof window&&(window.HowlerGlobal=e,window.Howler=n,window.Howl=o,window.Sound=t)}();
Using a mortar and pestle you take each bunch of grains you've harvested and grind them down into a fine flour.\n\nThe flour itself is not edible yet, you'll need to do some baking to make it useful for your journey.\n\n[[Let's get to work then!|Bake]]\n[[I'll do it later|Home]]\n\n<<set $time +=1>><<if $time is 4>><<set $time to 1>><<set $day +=1>><<endif>>\n<<fadeInSound "homeCraftAdd.wav">>
Regan Van Veen
You mix the flour together with some water and salt, and knead it into a dough. \n\nYou divide the dough into a few loaf sized pieces and bake them on a hot rock by the fire. \n\nThese bread loaves should keep fairly well and sustain you during your journey over the mountains.\n\n[[Smells delicious!|Home]]\n<<set $supplies += 5>>\n<<set $bread to true>>\n<<fadeInSound "homeCraftAdd.wav">>