{<script> $(".lvl, .card, .card2").addClass(style); </script> }<div class = "lvl"><h2>Chapter (print: (ceil: $level/5)).(abs: $level - ((floor: ($level-1)/5) * 5)): (print: $level of $levelNames)</h2></div> (set: _orientation to $orientation)<div class = "row"><div class = "card"><h3>Action</h3>|action>[(display: "actions")]</div> <div class = "card"><h3>Observation</h3>|observe>[]</div> <div class = "card lore">|lore>[<h3>Sight</h3>|display>[]]</div></div><div class="row"><div class="card2"><h3>Location</h3>(display: "flavour")</div><div class="card2"><h3>Elements</h3>(display: "elements")</div></div>\ (replace: ?display)[(display: "look")]\ (replace: ?observe)[(display: "observe")]{ (set: $tempDisplay to false) (set: $tiles to (dm: "w", (dm: "name", "wall", "determiner", "the", "closeup", "This section of wall is (either: 'largely featureless', 'wholly uninteresting').", "solid", true, "immobile", true), '0', (dm: "name", "nothing", "solid", false), '1', (dm: "name", "pushblock", "determiner", "a", "closeup", "''Note to self:'' pushing the pushblock will push the pushblock.", "solid", true, "immobile", false, "description", "a block that can be pushed"), '2', (dm: "name", "iceblock", "determiner", "an", "closeup", "Cold radiates from the ice.", "solid", true, "immobile", false, "description", "a block that can be pushed. Being made of ice, it is not subject to friction"), '3', (dm: "name", "somewhat sentient pushblock", "determiner", "a", "solid", true, "immobile", false, "closeup", "The pushblock is studded with eyes. (either: 'They gaze blankly up at you', 'Each looks in a different direction', 'One slowly blinks').", "description", "a solitary block-thing that refuses to be pushed near others of its kind"), '4', (dm: "name", "rope bridge", "determiner", "a", "solid", false, "immobile", true, "closeup", "The bridge is beginning to fall apart, but it will probably bear your weight.", "onText", "The ropes sway and creak underfoot.", "description", "strong enough to hold you, but impossible to push anything across of"), '5', (dm: "name", "tome of cultish lore", "determiner", "a", "solid", true, "immobile", "n/a"), '6', (dm: "name", "launch-plate", "determiner", "a", "solid", true, "immobile", true, "closeup", "The launch-plate thrums with some mysterious energy.", "description", "Will fling people and other objects a short distance away."), '7', (dm: "name", "somewhat bottomless pit", "determiner", "a", "closeup", "A sour breeze rises from the pit. You can't see the bottom.", "solid", true, "immobile", true, "description", "may or may not be bottomless. It will consume anything pushed into it"), "8", (dm: "name", "empty barrel and a pressure plate", "determiner", "an", "closeup", "The weight of the barrel fails to activate the pressure plate. A hidden door fails to open.", "solid", true, "immobile", false), '9', (dm: "name", "pressure plate", "determiner", "a", "solid", false, "immobile", true, "onText", "The pressure plate buckles slightly underfoot.", "description", "can be activated to solve the puzzle"), 'b', (dm: "name", "empty barrel", "determiner", "an", "solid", true, "immobile", false, "closeup", "''Note to self:'' this barrel is empty and can be pushed.", "description", "a barrel that can be pushed, but is too light to activate the pressure plate"), 'B', (dm: "name", "full barrel", "determiner", "a", "closeup", "The barrel is too heavy to push. It smells faintly of cinnamon, clove, and nutmeg.", "solid", true, "immobile", true, "description", "a barrel that is heavy enough to activate the pressure plate, but also too heavy to push"), 'c', (dm: "name", "much-eroded wallcarving", "determiner", "a", "closeup", "The carving spans the width of the wall. You're not sure what it's meant to depict.", "solid", true, "immobile", true), 'C', (dm: "name", "Burning Cultist", "determiner", "the", "closeup", "The Burning Cultist smiles at you encouragingly. The flames are toasty and warm.", "solid", true, "immobile", true), 'd', (dm: "name", "exit door", "determiner", "the", "solid", true, "immobile", true, "closeup", "The door waits woodenly for you to pass through it.", "description", "allows passage to the next room"), 'l', (dm: "name", "slime wall", "determiner", "a", "solid", true, "immobile", true, "closeup", "This section of the wall is slick with slime."), "L", (dm: "name", "wall", "determiner", "the", "closeup", "Someone has carved a mandala of salamander shapes into the wall. The grooves are thick with slime.", "solid", true, "immobile", true), 'm', (dm: "name", "pushblock storage crate", "determiner", "a", "solid", true, "immobile", false, "closeup", "The crate is empty inside.", "description", "a moveable crate"), 'M', (dm: "name", "wooden support beam", "determiner", "a", "solid", true, "immobile", true, "closeup", "''Note to self:'' You cannot walk through the support beam.", "description", "an immovable beam that holds up the weight of the earth"), 'o', (dm: "name", "ornmanetal potplant", "determiner", "an", "solid", true, "immobile", true, "closeup", "You could probably just vault over the potplant, but you won't.", "description", "immovable by any forces known to man"), 'p', (dm: "name", "pile of rough-hewn pushblocks", "determiner", "a", "closeup", "The pushblocks must have been abandoned when the cultists fled the mines.", "solid", true, "immobile", true, "description", "heavy, unpolished, and immobile"), 's', (dm: "name", "row of musty bookshelves", "determiner", "a", "closeup", "The books are interspersed with replicas of human skulls.", "solid", true, "immobile", true), 'r', (dm: "name", "rack of mysterious glass bottles", "determiner", "a", "closeup", "The bottles come in many colours. This one might contain (either: 'mead', 'rum', 'clove-water', 'orange liqueur'); this one might be (either: 'watermelon juice', 'hemlock extract', 'milk', 'olive oil', 'blood').", "solid", true, "immobile", true), 'S', (dm: "name", "nondescript statue", "determiner", "a", "solid", true, "immobile", true, "closeup", "You're not sure who the statue depicts. It might be one of the lesser Crabcosan gods. Tanu or Ergloth or Sprud, or someone else like that.", "description", "an immovable obstacle"), 't', (dm: "name", "row of stalactites", "determiner", "a", "solid", true, "immobile", true, "closeup", "The stalactites jut down from the ceiling"), 'T', (dm: "name", "solitary stalagmite", "determiner", "a", "solid", true, "immobile", true, "closeup", "The stalagmite juts up from the floor."), 'U', (dm: "name", "mushroom cluster", "determiner", "a", "solid", false, "immobile", true, "onText", "Mushrooms crumple underfoot. (either: 'They spurt spores into the air', 'They feel a bit like a rotting high-pile rug').", "description", "an inconsequential cluster of mushrooms"), 'v', (dm: "name", "watermelon vines", "determiner", "some", "solid", true, "immobile", true, "closeup", "The bewitching smell of watermelons is especially strong here.", "description", "an immovable tangle of unpassable vines"), 'V', (dm: "name", "oversized watermelon", "determiner", "an", "solid", true, "immobile", true, "closeup", "The oversized watermelon towers above you. There's no way you could move it.", "description", "immovable due to its unusual enormity"), 'W', (dm: "name", "angry sommelier", "determiner", "an", "closeup", "The sommelier refuses to speak with you.", "solid", true, "immobile", true), 'X', (dm: "name", "wall", "determiner", "the", "closeup", "This section of wall is mildly unusual.", "solid", true, "immobile", true) )) (set: $variants to (dm: "Main", "", "spin", " ''*Dizziness:*'' You sometimes pivot randomly before advancing.", "semiblind", " ''Confused terror:'' You can't see anything that's in front of you, except insofar as what's in front of you is the waterlogged cultist.", "dark", " ''Darkness:'' You can't see anything that's not immediately in front of you.", "pivot", " ''Disequilibrium:'' You can't control how far you pivot, and you've forgotten the distinction between left and right.")) (set: $pushSpecial to (dm: '0', 'nothing', 'd', 'door', '7', 'pit', '8', 'barrelplate', '2', 'ice', '3', 'sentient', '5', 'lore', '6', 'launchSelf', 'X', 'secretExit')) (set: $collision to (dm: '7', 'pitCollide', '9', 'plateCollide', '4', 'bridge', '6', 'launchObject')) (set: $defaultRoom to (dm: 'name', 'Nondescript room', 'text', 'The room is nondescript because I forgot to include roomtext.', 'flavour', 'Nothing is notably different from how it was before.')) (set: $shame to 0) (set: $level to 1) (set: $hints to (shuffled: ...(a: "You can push the push blocks by walking into them.", "Glancing lets you look around without changing the orientation of your body.", "The Black-Robed Cultist commands the respect of most, but not all, of the other cultists.", "The game's plot is allegorical.", "Technically, pushing a somewhat sentient push-block into a pit constitutes murder.", "Lore books are hidden in each of the six areas of the dungeon.", "Your observations are recorded on the 'Observation' card.", "You can skip any level, but doing so will cause you to accrue shame.", "You might need to reset the puzzle if you make bad block-pushing decisions.", "Most puzzles can be solved by pushing a block onto a pressure plate.", "The Archivist archives in the Archives.", "Many rooms have decorations that span an entire wall. You can use these to get your bearings.", "Technically, mapping the room using pen and paper constitutes cheating.", "Most of these hints aren't actually helpful.", "The game saves automatically at the beginning of each level.", "Clicking 'hint:' will display hints.", "Most (but not all) rooms are either square or rectangular.", "Some puzzles require you to reach a door rather than activate a pressure plate.", "The Fungus Keeper is responsible for cultivating the cult's supply of fungi.", "As in life, there are 30 levels in this game.", "As in real life, ice blocks in this game are not subject to friction.", "Somewhat sentient push-blocks have volition, but can do nothing with it."))) (set: $about to (a: "This game was made in honour of Jarryd Marrick's 30th birthday", "This game is a game about pushing blocks", "This game is loosely inspired by real events", "This game is a spiritual successor to The Birthday Dungeon", "This game was created with Twine, and also with love", "This game can't be enjoyed, but it can be 'enjoyed'", "This game has a wildly uneven difficulty curve", "This game has barely been playtested at all")) (set: $lore to (dm: 2, "*There are two leading theories on why the cermony is performed topless. The first links the cult's current practices to some older fertility festival. The second holds that it's probably just to stop the watermlon juices from getting on one's clothes.*", 7, "*The cult once had two chapters. The ceremonies performed by either chapter diverged by degrees until they were amost unrecognisable. The American chapter officially broke with the Australian chapter when they dropped the watermelon-related aspects of the ceremony altogether.*", 14, "The ceremonial cudgels can be made from any combination of materials materials, but they are always carved into one of three familiar shapes. The Tree, The Head, The Squid. The significance of these shapes has been lost, but the tradition remains.", 23, "*Watermelons serve as an ideal vessel for ill will. The watermelon's veins can accomodate many kinds of unwanted emotions, which can be made to dissapate entirely by destroying the watermelon in the normal way.*", 27, "*The ceremonies are traditionally held on Ostara and Mabon. After each ceremony the remains of the watermelons are left to feed the grass. When we die we can take solace from the fact that our bodies will feed the watermelons, and so the great circle will continue to turn.*")) (set: $levelNames to (dm: 1, 'The Library', 2, 'Still the Library', 3, 'The Archives', 4, 'Still the Archives', 5, 'The Restricted Section', 6, 'An Important Meading', 7, 'Push Barrel Puzzle', 8, 'Confrontation', 9, 'Confusion', 10, 'Close Quarters', 11, 'Catacombs Entryway', 12, 'A Growing Darkness', 13, 'The Growing Darkness Deepens', 14, 'The Darkest Darkness', 15, 'The Burning Cultist', 16, 'The Pushblock Mines', 17, 'Still the Pushblock Mines', 18, 'The Last of the Pushblock Miners', 19, 'Post-Storage', 20, 'Sentience', 21, 'Getting over It', 22, 'Salamandala', 23, 'Squeezing Room Only', 24, 'Mush Room', 25, 'Fun Guy', 26, 'Watermelon Fields', 27, 'Watermelon Fields', 28, 'Watermelon Fields Forever', 29, 'Watermelon Fields Forever', 30, 'Watermelon Fields Forever and Ever' )) (set: $chapterNames to (dm: 1, 'library', 2, 'cellar', 3, 'catacombs', 4, 'mine', 5, 'cave', 6, 'watermelon field')) (set: $speakers to (dm: 1, '<img src = "cultist.png">', 2, '<img src = "cultistRed.png">', 3, '<img src = "cultistBlue.png">', 4, '<img src = "cultistBlue.png">', 5, '<img src="cultistFish.png">', 6, '<img src="sommelier.png">', 7, '<img src="rat.png">', 10, '<img src = "ratKing.png">', 11, '<img src="cultistByrne.png">', 12, '<img src="catWhite.png">', 13, '<img src="candle.png">', 14, '<img src="candleDead.png">', 15, '<img src="cultistByrne.png">', 16, '<img src="lantern.png">', 17, '<img src="skeleton.png">', 18, '<img src="cultistPurple.png">', 19, '<img src="crate.png">', 20, '<img src="block.png">', 21, '<img src="bat.png">', 22, '<img src="salamander.png">', 23, '<img src="fungus.png">', 24, '<img src="fungusKeeper.png">', 25, '<img src="fungalOutcast.png">', 26, '<img src="melon.png">', 27, '<img src="melon.png">', 28, '<img src="melon.png">', 29, '<img src="melon.png">', 30, '<img src="melonie.png">', 31, '<img src="cultistFish.png">', 34, '<img src = "cultist.png">', 96, '<img src="door.png">', 97, '<img src = "gong.png">', 98, '<img src="shame.png">', 99, '<img src="lore.png">')) }<script> A.newTrack('library', 'audio/library.mp3'); A.newTrack('cellars', 'audio/cellars.mp3'); A.newTrack('catacombs', 'audio/catacombs.mp3'); A.newTrack('mines', 'audio/mines.mp3'); A.newTrack('caves', 'audio/caves.mp3'); A.newTrack('fields', 'audio/fields.mp3'); A.newTrack('plate', 'audio/plate.wav'); A.newTrack('collide', 'audio/collide.wav'); A.newTrack('fall', 'audio/fall.wav'); A.newTrack('push', 'audio/push.wav'); A.newTrack('shame', 'audio/shame.wav'); A.newTrack('ice', 'audio/ice.wav'); A.newTrack('fling', 'audio/fling.wav'); A.newTrack('outro', 'audio/outro.mp3'); </script>{<script>var style = "library";</script> (set: $map to (a: (a: 'w','w','w','w','w','w','w'), (a: 'w','0','0','0','0','0','w'), (a: 'w','0','1','0','9','0','w'), (a: 'w','0','0','0','0','0','w'), (a: 's','s','s','s','s','s','s'))) (set: $location to (a: 4,3)) (set: $orientation to (a: (a: 1,0), (a: 0,1), (a: -1, 0), (a: 0,-1))) (set: $level to 1) (set: $shame to 0) (set: $room to $defaultRoom + (dm: "name", "library", "text", "Books are confined here.", "curses", false)) (set: $elements to (a: '1', '9')) (set: $variant to "Main") (if: (history:) contains (text: $level))[(goto: $variant)] (display: "talk") (replace: ?dialogue)[''Black-robed Cultist: ''Oh. It's you.] (replace: ?reply)[[[The same could be said about you.|1B]] [[*Ignore the black-robed cultist.*|1E]]]}{ (set: $level to GE["level"]) (set: $shame to GE["shame"]) (set: _images to (shuffled: ...(datavalues: $speakers))) (set: $delayExecute to $about) (set: $map to $hints) <script>$(".card, .card2").addClass("lurid");</script> }<h1>Push: Block</h1><div class="row"><div class = "card sink">(print: _images's 1st)(set: _images to it - (a: _images's 1st)) </h3>(link: "Begin playing")[(if: $level > 1)[This will erase your save file. (link: "Continue?")[(set: $level to 1)<script>A.stopAll()</script>(display: "audio")(set: $shame to 0)<script> window.localStorage.setItem('level', '1'); window.localStorage.setItem('shame', '0'); </script>(goto: "1")]](else:)[(set: $level to 1)<script> window.localStorage.setItem('level', '1'); window.localStorage.setItem('shame', '0'); </script>(display: "audio")(goto: "1")]]</h3></div> <div class = "card sink">(print: _images's 1st)(set: _images to it - (a: _images's 1st)) </h3>(link: "Continue playing")[(if: $level > 1)[<script>A.stopAll()</script>(display: "audio")(goto: (text: $level))](else:)[''Error:'' Error occured.]]</h3></div> <div class = "card sink">(print: _images's 1st)(set: _images to it - (a: _images's 1st)) </h3>(link-repeat: "Stop playing")[<script>window.close();</script><script> window.history.back();</script>]</h3></div></div> <div class="row"> <div class="card2 imageLeft"><div class = "speaker">(print: _images's 1st)</div><div class = "dialogue">(link-repeat: "''Hint: ''")[(replace: ?hint)[(print: 1st of $map)(set: $map to (rotated: 1, ...$map))]]|hint>[You need to click on the words to do things, which is awkward. I'm sorry.] </div></div> <div class = "card2 imageLeft"><div class = "speaker"><img src="greenGiraffe.png"></div><div class = "dialogue">(link-repeat: "''About: ''")[(replace: ?about)[(print: 1st of $delayExecute)(set: $delayExecute to (rotated: 1, ...$delayExecute))]]|about>[This game was made by Green Giraffe Games].</div></div> </div>{ (set: $track to (a:))(set: $ahead to (a:)) (if: _orientation's 1st is (a: 1,0))[ (set: _row to $location's 2nd of $map) (set: $ahead to _row's (range: $location's 1st + 1, _row's length)) ] (if: _orientation's 1st is (a: -1, 0))[ (set: _row to (range: 1, $location's 1st - 1) of $location's 2nd of $map) (for: each _thing, ..._row) [ (set: $ahead to it + (a: _thing)) (if: $ahead's length > 1) [ (set: $ahead to (rotated: 1, ...$ahead)) ] ] ] (if: _orientation's 1st is (a: 0, 1))[ (for: each _thing, ...$map's (range: $location's 2nd + 1, $map's length)) [ (set: $ahead to it + (a: $location's 1st of _thing)) ] ] (if: _orientation's 1st is (a: 0, -1))[ (for: each _thing, ...$map's (range: 1, $location's 2nd - 1)) [ (set: $ahead to it + (a: $location's 1st of _thing)) (if: $ahead's length > 1) [ (set: $ahead to (rotated: 1, ...$ahead)) ] ] ] }(for: each _thing, ...$ahead) [(set: _qualities to _thing of $tiles)\ (unless: _qualities's name is "nothing" or $track contains 'w')[(upperfirst: _qualities's determiner) (lowercase: _qualities's name), (abs: $track's length) metres away.<br>](replace: "1 metres")[1 metre](replace: "0 metres away")[right before you]\ (set: $track to it + (a: _thing))]{ (set: _forwards to (a: ($location's 1st + 1st of $orientation's 1st), ($location's 2nd + 2nd of $orientation's 1st))) (set: _pushElement to _forwards's 1st of _forwards's 2nd of $map) (set: _qualities to _pushElement of $tiles) (set: _forwards2 to (a: (_forwards's 1st + 1st of $orientation's 1st), (_forwards's 2nd + 2nd of $orientation's 1st))) (set: _pushToElement to _forwards2's 1st of _forwards2's 2nd of $map) (set: _qualities2 to _pushToElement of $tiles) (if: (datanames: $pushSpecial) contains _pushElement) [ (display: _pushElement of $pushSpecial) ] (if: _qualities's immobile is true)[ (if: _qualities's solid is false) [ (set: $location to _forwards) (set: $tempDisplay to (a: _qualities's onText)) (goto: $variant) ] (else:) [ (set: $tempDisplay to (a: "You cannot walk through the (print: $tempDisplay's 2nd), try though you might.", _qualities's name)) (goto: $variant) ] ] (if: _qualities's immobile is false)[ (if: (datanames: $collision) contains _pushToElement) [ (display: _pushToElement of $collision) ] (else-if: _qualities2's solid is false) [ <script>A.track('push').play();</script> (set: $tempDisplay to (a: "The (print: $tempDisplay's 2nd) slides across the floor before of you.", _qualities's name)) (set: _forwards's 1st of _forwards's 2nd of $map to '0') (set: _forwards2's 1st of _forwards2's 2nd of $map to _pushElement) (set: $location to _forwards) (goto: $variant) ] (else-if: _qualities2's solid is true) [ (set: $tempDisplay to (a: "You cannot push the (print: $tempDisplay's 2nd) any further. Its path is blocked by the (print: $tempDisplay's 3rd).", _qualities's name, _qualities2's name)) <script>A.track('collide').play();</script> (goto: $variant) ] ] }You can [(link-repeat: "advance")[(display: "advance")]]<advance| Pivot [(link-repeat: "left")[(set: $orientation to (rotated: -1, ...$orientation))(set: _orientation to $orientation)(replace: ?display)[(display: "look")](replace: ?observe)[(display: "observe")]] or (link-repeat: "right")[(set: $orientation to (rotated: 1, ...$orientation))(set: _orientation to $orientation)(replace: ?display)[(display: "look")](replace: ?observe)[(display: "observe")]]]<pivot| Glance [(link-repeat: "left")[(set: _orientation to (rotated: -1, ...$orientation))(replace: ?observe)[To your left, you see: (display: "look")]] or (link-repeat: "right")[(set: _orientation to (rotated: 1, ...$orientation))(replace: ?observe)[To your right, you see: (display: "look")]]]<glance| [(link: "Restart")[(goto: (text: $level))] or (link: "skip")[(replace: ?skip)[Are you sure you want to skip? (link: "Yes")[(goto: "skip")]]] the level.]<skip|You are in the ''(print: $room's name)''. (print: $room's text)\ (print: $variant of $variants)(for: each _signifier, ...$elements)[''(upperfirst: name of _signifier of $tiles):'' (print: description of _signifier of $tiles). ]{<script>var style = "library";</script> (set: $map to (a: (a: 'w','w','w','w','w','0'), (a: 'w','0','0','0','w','0'), (a: 'w','0','1','0','w','X','w'), (a: 'w','0','0','0','0','0','w'), (a: 'w','0','0','0','9','0','w'), (a: 'w','0','0','0','0','0','w'), (a: 'w','s','s','s','s','s','w'))) (set: $location to (a: 3,5)) (set: $orientation to (a: (a: 1,0), (a: 0,1), (a: -1, 0), (a: 0,-1))) (set: $variant to "Main") (set: $level to 3) (set: $room to $defaultRoom + (dm: "name", "archives", "text", "The air is thick with tome-dust.", "curses", false)) (set: $elements to (a: '1', '9')) (if: (history:) contains (text: $level))[(goto: $variant)] (display: "talk") (replace: ?dialogue)[''Archivist: '' What are you doing in the archives?] (replace: ?reply)[[[Obtaining watermelons.|3B]] [[Loitering.|3C]] [[What are *you* doing in the archives?|3A]]] }(if: $tempDisplay is not false)[(print: $tempDisplay's 1st) ]\ (else:)[|words>[(print: 1st of (shuffled: ...(a: $room's flavour) + (repeated: 9, "Nothing is notably different from how it was before.")))]\ (if: (datanames: 1st of $ahead of $tiles) contains "closeup" and $tempDisplay is false)[(set: _next to 1st of $ahead of $tiles)(replace: ?words)[(print: _next's closeup) ]]](set: $tempDisplay to false)(display: "talk") (replace: ?dialogue)[''Black-robed Cultist:'' We need a fresh watermelon for the ritual. Your job is to retrieve one from the supply cupboard.] (replace: ?reply)[[[I'll leave right away.|1D]] [[Why can't you do it?|1C]]](display: "talk") (replace: ?dialogue)[''Black-robed Cultist:'' I'm going to be cleaning the cudgels instead, as befits a cultist of my station.] (replace: ?reply)[[[I won't forget my station again, oh black-robed one.|1D]]](display: "talk") (replace: ?dialogue)[''Black-robed Cultist:'' There are many push block puzzles between here and there. Please make sure you reset them behind you.] (replace: ?reply)[(link: "Will do.")[<script>var style = "library";</script>(goto: $variant)]]{<script>var style = "library";</script> (set: $map to (a: (a: 'w','w','w','w','w','w','w','w'), (a: 's','0','0','0','0','0','w','w','w'), (a: 's','0','0','0','1','1','9','0','w'), (a: 's','0','0','0','0','0','w','5','w'), (a: 'w','w','w','w','w','w','w','w'))) (set: $location to (a: 2,3)) (set: $orientation to (a: (a: 1,0), (a: 0,1), (a: -1, 0), (a: 0,-1))) (set: $level to 2) (set: $room to $defaultRoom + (dm: "name", "lower library", "text", "More books are contained here.", "flavour", "The Librarian Cultist tuts as your shoes squeak on the tiles.")) (set: $elements to (a: '1', '9')) (set: $variant to "Main") (if: (history:) contains (text: $level))[(goto: $variant)] (display: "talk") (replace: ?dialogue)[''Librarian cultist: '' Who goes there?] (replace: ?reply)[[[I do.|2B]] [[*Sneak past.*|2D]]] }(display: "talk") (replace: ?dialogue)[''Librarian cultist:'' And what, exactly, brings you to the lower library?] (replace: ?reply)[[[Important cult business.|2C]] [[Watermelons.|2C]]](display: "talk") (replace: ?dialogue)[''Librarian cultist: '' Say no more.] (replace: ?reply)[(link: "*Leave.*")[(goto: $variant)]]{<script>var style = "library";</script> (set: $map to (a: (a: 'w','s','s','s','s','s','w'), (a: 'w','0','0','0','0','0','w'), (a: 'w','0','1','0','o','0','w'), (a: 'w','0','0','0','0','0','w'), (a: 'w','0','0','0','o','9','w'), (a: 'w','w','w','w','w','w','w'))) (set: $location to (a: 3,5)) (set: $level to 4) (set: $orientation to (a: (a: 1,0), (a: 0,1), (a: -1, 0), (a: 0,-1))) (set: $room to $defaultRoom + (dm: "name", "lower archives", "text", "You are alone. Only your footsteps break the silence.", "curses", false)) (set: $variant to "Main") (set: $elements to (a: '1', '9', 'o')) (if: (history:) contains "4")[(goto: $variant)] (display: "talk") (replace: ?dialogue)[''Archivist: '' Hello again.] (replace: ?reply)[[[Hi, Archivist!|4B]]] }(set: $tempDisplay to (a: "(replace: ?observe)[The exit door swings open. It's time to leave.] (replace: ?action)[(link: 'Leave')[<script>window.localStorage.setItem('level', +localStorage.getItem('level') + 1);</script>(set: $level to it + 1)(goto: (text: $level))] the (print: $room's name).] (replace: ?display)[Darkness and opportunity.]"))(goto: $variant){ (set: $slide to 0) (for: each _metre, ...(range: 2, $ahead's length)) [ (if: (all-pass: _tile where solid of _tile of $tiles is false, ...$ahead's (range: 2, _metre)))[(set: $slide to it + 1)] ] (set: _forwards2 to (a: (_forwards's 1st + (1st of $orientation's 1st * $slide)), (_forwards's 2nd + (2nd of $orientation's 1st * $slide)))) (set: _forwards3 to (a: (_forwards2's 1st + 1st of $orientation's 1st), (_forwards2's 2nd + 2nd of $orientation's 1st))) (set: _pushToElement to _forwards2's 1st of _forwards2's 2nd of $map) (set: _qualities2 to _pushToElement of $tiles) (set: _pushCollide to _forwards3's 1st of _forwards3's 2nd of $map) (set: _qualities3 to _pushCollide of $tiles) (if: (datanames: $collision) contains _pushCollide) [ (display: _pushCollide of $collision) ] (else-if: (datanames: $collision) contains _pushToElement) [ (display: _pushToElement of $collision) ] (else-if: _qualities2's solid is false) [ <script>A.track('ice').play();</script> (set: $tempDisplay to (a: "The ice block slides across the floor until it hits the (print: $tempDisplay's 2nd).", _qualities3's name)) (set: _forwards's 1st of _forwards's 2nd of $map to '0') (set: _forwards2's 1st of _forwards2's 2nd of $map to _pushElement) (set: $location to _forwards) (goto: $variant) ] (else-if: _qualities2's solid is true) [ (set: $tempDisplay to (a: "You cannot push the (print: $tempDisplay's 2nd) any further. Its path is blocked by the (print: $tempDisplay's 3rd).", _qualities's name, _qualities3's name)) (goto: $variant) ] }(set: $tempDisplay to false)<script>A.track('plate').play();</script>(replace: ?observe)[The weight of the (print: _qualities's name) activates the pressure plate. A hidden door creaks open.] (replace: ?action)[(link: "Leave")[<script>window.localStorage.setItem('level', +localStorage.getItem('level') + 1);</script>(set: $level to it + 1)(goto: (text: $level))] the (print: $room's name).](unless: _pushElement is 'b') [ <script>A.track('plate').play();</script> (set: $tempDisplay to (a: "(replace: ?observe)[The weight of the (print: $tempDisplay's 2nd) activates the pressure plate. A hidden door creaks open.] (replace: ?action)[(link: 'Leave')[(set: $level to it + 1)(goto: (text: $level))] the (print: $room's name).]", (print: _qualities's name))) (goto: $variant) ] (else:) [ (set: _forwards's 1st of _forwards's 2nd of $map to '0') (set: _forwards2's 1st of _forwards2's 2nd of $map to '8') (set: $location to _forwards) (goto: $variant) ]{ (if: _qualities2's solid is false) [ (set: _forwards's 1st of _forwards's 2nd of $map to '9') (set: _forwards2's 1st of _forwards2's 2nd of $map to 'b') (set: $location to _forwards) (set: $tempDisplay to (a: "The barrel slides across the floor before of you. The pressure plate buckles slightly underfoot.")) (goto: $variant) ] (else:) [ (set: $tempDisplay to (a: "You cannot push the barrel off the pressure plate. Its path is blocked by the (print: $tempDisplay's 2nd).", _qualities2's name)) (goto: $variant) ](set: $tempDisplay to (a: "The (print: $tempDisplay's 2nd) falls neatly into the pit. You never hear it hit the bottom.", _qualities's name)) (set: _forwards's 1st of _forwards's 2nd of $map to '0') (set: $location to _forwards) <script>A.track('fall').play();</script> (goto: $variant){ <script>var style = "cellar";</script> (set: $map to (a: (a: 'w','r','r','r','r','r','w'), (a: 'w','0','0','0','0','0','w'), (a: 'w','0','0','1','0','0','w'), (a: 'w','0','0','9','0','0','w'), (a: 'w','0','0','b','0','0','w'), (a: 'w','w','w','0','w','w','w'), (a: 'w','w','w','w','w','w','w'))) (set: $location to (a: 4,6)) (set: $orientation to (a: (a: 0,-1), (a: 1,0), (a: 0,1), (a: -1, 0))) (set: $room to $defaultRoom + (dm: "name", "cellar antechamber", "text", "It is a cozy room filled with wooden barrels. The sommelier wanders from barrel to barrel, pressing his ears against them with a look of concentration on his face.", "flavour", "The sommelier mutters about how a particular wine would pair wonderfully with watermelon.")) (set: $elements to (a: '1', 'b','9')) (set: $level to 6) (set: $variant to "Main") (if: (history:) contains (text: $level))[(goto: $variant)] (display: "progress")(display: "talk") (replace: ?img)[<img src="sommelier.png">] (replace: ?dialogue)[''Sommelier: ''Please don't bother me. I'm doing very important work.] (replace: ?reply)[[[Can you help me find where the watermelons are stored?|6B]] [[I shouldn't bother you. You look like you're doing very important work. |6A]]] }(display: "Main")(replace: ?advance)[(link-repeat: "advance")[(set: $orientation to (rotated: (either: 0, 0, 0, 0, 0, 0, 0, 1, -1), ...$orientation))(display: "advance")]](set: $location to _forwards) (goto: $variant)You can (link-repeat: "advance")[(set: $orientation to (rotated: (either: 0, 0, 0, 0, 0, 1, -1), ...$orientation))(display: "advance")] Pivot (link-repeat: "left")[(set: $orientation to (rotated: -1, ...$orientation))(set: _orientation to $orientation)(replace: ?display)[(display: "look")](replace: ?observe)[(display: "observe")]] or (link-repeat: "right")[(set: $orientation to (rotated: 1, ...$orientation))(set: _orientation to $orientation)(replace: ?display)[(display: "look")](replace: ?observe)[(display: "observe")]]] Glance (link-repeat: "left")[(set: _orientation to (rotated: -1, ...$orientation))(replace: ?observe)[To your left, you see: (display: "look")]] or (link-repeat: "right")[(set: _orientation to (rotated: 1, ...$orientation))(replace: ?observe)[To your right, you see: (display: "look")]] [(link: "Restart")[(goto: (text: $level))] or (link: "skip")[(replace: ?skip)[Are you sure you want to skip? (link: "Yes")[(goto: "skip")]]] the level]<skip|{<script>var style = "library";</script> (set: $map to (a: (a: 'w','s','s','s','s','s','s','s','s'), (a: 'w','0','0','0','0','0','0','0','0','w'), (a: 'w','0','0','0','0','0','0','0','0','w'), (a: 'w','0','0','9','0','o','0','1','0','w'), (a: 'w','0','0','0','0','0','0','0','0','w'), (a: 'w','0','0','0','0','0','0','0','0','w'), (a: 'w','w','w','w','w','w','w','w','w'))) (set: $location to (a: 2,4)) (set: $orientation to (a: (a: 1,0), (a: 0,1), (a: -1, 0), (a: 0,-1))) (set: $room to $defaultRoom + (dm: "name", "restricted wing", "text", "The books here mutter among themselves. You feel uneasy, and also dizzy.")) (set: $elements to (a: '1', '9', 'o')) (set: $level to 5) (set: $variant to "spin") (if: (history:) contains (text: $level))[(goto: $variant)] (display: "talk") (replace: ?img)[<img src="cultistFish.png">] (replace: ?dialogue)[''Waterlogged cultist: '' ...] (replace: ?reply)[[[... hello?|5B]]]}<script>$(".card").addClass(style);</script> <script>A.track('shame').play();</script>{ (set: $level to it + 1) (set: $shame to it + 1) }<div class = "card cardLong"><div class = "speaker"><img src = "shame.png"></div><div class = "dialogue">You have gained ''1'' shame point.(if: $shame > 1)[ Shamefully, you now have ''(print: $shame)'' shame points.]</div></div></div> <div class = "cardLong shame">(link: "*Feel ashamed.*")[<script> window.localStorage.setItem('level', +localStorage.getItem('level') + 1); window.localStorage.setItem('shame', +localStorage.getItem('shame') + 1);</script>(goto: (text: $level))]</div>(display: "talk") (replace: ?dialogue)[''Archivist: '' Ah. I take it the Order are gathering upstairs tonight?] (replace: ?reply)[[[They are.|3C]] [[I'm just feeling peckish.|3D]]](display: "talk") (replace: ?dialogue)[''Archivist: '' Okay, but make sure you avoid the restricted wing. Even I am afraid to go there, and I am a paragon of bravery.] (replace: ?reply)[(link: "Noted.")[(goto: $variant)]](display: "talk") (replace: ?dialogue)[''Archivist: '' The watermelons are not there for you to 'snack' on. We have a limited supply, and I know all too well the hunger that can overcome one who partakes of watermelon outside of the proper context.] (replace: ?reply)[[[Actually, I lied. I'm really fetching the watermelon for official cult purposes.|3C]]](display: "talk") (replace: ?dialogue)[''Archivist: '' I am an archivist. And I am archiving. I ask again: what are you doing in the archives?] (replace: ?reply)[[[Obtaining watermelons.|3B]] [[Loitering.|3C]]](display: "talk") (replace: ?dialogue)[''Archivist: '' Would you mind pushing these blocks a bit less noisily? Some of us are doing important archival work.] (replace: ?reply)[[[Sure.|4C]] [[I don't know any other way to push blocks.|4D]]](display: "talk") (replace: ?dialogue)[''Archivist: '' Why were you pushing them so noisily in the first place?] (replace: ?reply)[[[I don't know any other way to push blocks|4D]]](display: "talk") (replace: ?dialogue)[''Archivist: '' Well, I suppose one can only do what is in one's nature.] (replace: ?reply)[[[Indeed. One *can* only do what is in one's nature.|4E]]](display: "talk") (replace: ?dialogue)[''Archivist: '' And I suppose it is in your nature to push blocks noisily?] (replace: ?reply)[[[It is.|4F]]](display: "talk") (replace: ?dialogue)[''Archivist: '' Very well. In that case I will leave you here, and return to work in the upper archives.] (replace: ?reply)[(link: "Bye, Archivist!")[(goto: $variant)]](display: "talk") (replace: ?img)[] (replace: ?dialogue)[*It's gone.*] (replace: ?reply)[(link: "...")[(goto: $variant)]](display: "talk") (replace: ?dialogue)[''Black-robed Cultist:'' You cannot ignore me. Did you not notice the black colour of my robes, or are you not aware of what they signify?] (replace: ?reply)[[[Sorry, I didn't notice the colour.|1B]] [[Sorry, I forgot what they signify.|1B]]](display: "talk") (replace: ?dialogue)[''Librarian cultist: '' You cannot sneak past me!] (replace: ?reply)[(link: "*Continue sneaking.*")[(goto: $variant)]]{<script>var style = "cellar";</script> (set: $map to (a: (a: 'w','w','w','w','w','w','w','w','w'), (a: 'r','0','0','b','0','B','0','0','0','w'), (a: 'r','0','0','b','0','0','0','B','0','d'), (a: 'r','0','0','b','0','B','0','0','0','w'), (a: 'w','w','w','w','w','w','w','0','w'), (a: 'w','w','w','w','w','w','w','5','w'))) (set: $location to (a: 2,3)) (set: $orientation to (a: (a: 1,0), (a: 0,1), (a: -1, 0), (a: 0,-1))) (set: $room to $defaultRoom + (dm: "name", "hallway", "text", "It has been repurposed as an extra storeroom. Barrels crowd the floor.", "flavour", "A rat darts from behind a barrel to behind another.")) (set: $elements to (a: 'b', 'B','d')) (set: $level to 7) (set: $variant to "Main") (if: (history:) contains (text: $level))[(goto: $variant)] (display: "talk") (replace: ?img)[<img src="rat.png">] (replace: ?dialogue)[''Rat: ''Squeak.] (replace: ?reply)[[[I don't believe you.|7B]] [[I'm not sure if I should trust you.|7B]]]}<script> $(".card").addClass(style); </script><div class = "card cardLong"><div class = "speaker">|img>[(print: $speakers's $level)]</div><div class = "dialogue">|dialogue>[''Black-robed Cultist: ''Oh. It's you.]</div></div> <div class = "card cardRespond">|reply>[Words Words]</div>(display: "talk") (replace: ?img)[<img src="sommelier.png">] (replace: ?dialogue)[''Sommelier: ''Hmph. And what, exactly, caused you to come and break my concentration?] (replace: ?reply)[[[I'm fetching a watermelon for the black-robed cultist.|6C]]](display: "talk") (replace: ?img)[<img src="sommelier.png">] (replace: ?dialogue)[''Sommelier: ''Hmph. I surmise the black-robed cultist sent you?] (replace: ?reply)[[[Yes.|6C]]](display: "talk") (replace: ?img)[<img src="sommelier.png">] (replace: ?dialogue)[''Sommelier: ''Thank you. Now go, but please be careful in these cellars. And do not listen to the rats; they do not have your best interests at heart.] (replace: ?reply)[(link: "Good advice. One should never trust rats")[(goto: "Main")] [[Talking rats? How implausible!|6G]]](display: "talk") (replace: ?img)[<img src="sommelier.png">] (replace: ?dialogue)[''Sommelier: ''Typical. She thinks herself too important to complete such errands herself. But the eyes of our master recognise no differences in status. There are differences only in the roles we must play, and in the colour of our robes.] (replace: ?reply)[[[Well said.|6D]] [[This is awkward, but can you remind me who our master is and why we need watermelons?|6E]]](display: "talk") (replace: ?img)[<img src="sommelier.png">] (replace: ?dialogue)[''Sommelier: ''I'm busy. I don't have time to joke around.] (replace: ?reply)[[[I'm sorry for the interruption.|6D]] [[I've really actually forgotten. Please help me.|6F]]](display: "talk") (replace: ?img)[<img src="sommelier.png">] (replace: ?dialogue)[''Sommelier: ''Pah. Begone, then. And good luck to you.] (replace: ?reply)[(link: "To you too!")[(goto: "Main")]](display: "talk") (replace: ?img)[<img src="sommelier.png">] (replace: ?dialogue)[''Sommelier: ''You are very droll, but drollery won't ferment my grapes. And as I said earlier, I'm very busy.] (replace: ?reply)[[[I'm sorry for the interruption.|6D]]]{<script>var style = "cellar";</script> (set: $map to (a: (a: 'w','w','w','w','w','w','w'), (a: 'w','0','b','0','0','W','r'), (a: 'w','b','9','b','0','0','r'), (a: 'w','0','b','0','0','0','r'), (a: 'w','0','0','0','0','0','r'), (a: 'w','0','0','0','1','0','r'), (a: 'w','0','0','0','0','0','r'), (a: 'w','w','w','w','w','w','w'))) (set: $location to (a: 3,6)) (set: $orientation to (a: (a: 0,-1), (a: 1,0), (a: 0,1), (a: -1, 0))) (set: $room to $defaultRoom + (dm: "name", "storeroom", "text", "The sommelier stands nearby, scowling. He won't help you.", "flavour", "The sommelier sighs, pointedly.")) (set: $elements to (a: '1', 'b', '9')) (set: $level to 8) (set: $variant to "Main") (if: (history:) contains (text: $level))[(goto: $variant)] (display: "talk") (replace: ?img)[<img src="sommelier.png">] (replace: ?dialogue)[''Sommelier: ''We meet again.] (replace: ?reply)[[[Hi Sommelier!|8A]]]}<script>var style = "cellar";</script>{<script>var style = "cellar";</script> (set: $map to (a: (a: 'w','w','w','w'), (a: 'w','0','0','w'), (a: 'd','0','0','w'), (a: 'w','w','w','w'))) (set: $location to (a: 2,2)) (set: $orientation to (a: (a: 1,0), (a: 0,1), (a: -1, 0), (a: 0,-1))) (set: $room to $defaultRoom + (dm: "name", "somewhere", "text", "")) (set: $elements to (a: 'd')) (set: $level to 9) (set: $variant to "semiblind") (if: (history:) contains (text: $level))[(goto: $variant)] (display: "talk") (replace: ?img)[<img src = "cultistFish.png">] (replace: ?dialogue)[''Waterlogged cultist: ''...] (replace: ?reply)[[[Hello?|9A]]]}<script>var style = "cellar";</script>{<script>var style = "cellar";</script> (set: $map to (a: (a: 'w','w','w','w','w','w','w'), (a: 'w','B','B','9','B','B','w'), (a: 'w','0','0','0','0','0','w'), (a: 'w','0','B','b','B','0','w'), (a: 'w','0','0','1','0','0','w'), (a: 'w','0','0','0','0','0','w'), (a: 'w','r','r','r','r','r','w'))) (set: $location to (a: 4,6)) (set: $orientation to (a: (a: 0,-1), (a: 1,0), (a: 0,1), (a: -1, 0))) (set: $room to $defaultRoom + (dm: "name", "crowded storeroom", "text", "The barrels leave little room to maneuver.")) (set: $elements to (a: '1', 'b', '9')) (set: $level to 10) (set: $variant to "Main") (if: (history:) contains (text: $level))[(goto: $variant)] (display: "talk") (replace: ?img)[<img src = "ratKing.png">] (replace: ?dialogue)[''King Rat: ''Hello.] (replace: ?reply)[[[Hello.|10A]] [[You can talk!!|10A]]]}{<script>var style = "catacombs";</script> (display: "progress") (set: $map to (a: (a: 'w','w','w','w','w','w'), (a: 'w','0','0','0','0','w'), (a: 'w','0','2','0','0','w'), (a: 'w','0','0','0','0','w'), (a: 'w','0','0','0','0','w'), (a: 'w','0','0','0','9','w'), (a: 'w','c','c','c','c','w'))) (set: $location to (a: 3,6)) (set: $orientation to (a: (a: 0,-1), (a: 1,0), (a: 0,1), (a: -1, 0))) (set: $room to $defaultRoom + (dm: "name", "Catacombs entrance", "text", "It's cold here, and almost lightless. Torches line the walls, but most have gone out.", "flavour", "You shiver, just slightly, in the chill.")) (set: $elements to (a: '2', '9')) (set: $level to 11) (set: $variant to "Main") (if: (history:) contains (text: $level))[(goto: $variant)] (display: "talk") (replace: ?dialogue)[''Burning cultist:'' A visitor! It has been a long while since someone has come all this way to see me.] (replace: ?reply)[[[Why are you on fire?|11A]] [[Why does your head look so small?|11A2]]]}(display: "talk") (replace: ?dialogue)[''Rat:'' (either: 'Squeak', 'Squeak', 'Squeak', 'Squeak squeak', 'Squeeeeeak')(either: ' squeak', '', '')(either: ' squeak', '', '')(either: ' squeak', '', '')(either: '.', '.', '?', '!', '?!')] (replace: ?reply)[[[(either: 'Squeak squeak?', 'Squeak?', 'Squeak.')|7B]] [[(either: 'Squeak! Squeak!', 'Squeak squeak squeak.', 'Squeak!', 'Squeak squeak squeak!')|7B]] (link: '*Leave*')[(goto: $variant)]](if: (history: )'s 6thlast is "7B")[(goto: '7C')](display: "talk") (replace: ?img)[<img src="sommelier.png">] (replace: ?dialogue)[''Sommelier: ''I smell rat-stench on you. Who have you been speaking to?] (replace: ?reply)[[[Rats.|8B]] [[Creatures that smell similar to, but are not actually, rats.|8C]]](display: "talk") (replace: ?img)[<img src="sommelier.png">] (replace: ?dialogue)[''Sommelier: ''Did you not hear my warning? The rats are not to be trusted.] (replace: ?reply)[[[I followed your advice. I did not trust the rats.|8C]] [[*Squeak*|8D]]](display: "talk") (replace: ?img)[<img src="sommelier.png">] (replace: ?dialogue)[''Sommelier: ''I have a keen sense of smell, and I can smell a lie when I hear one.] (replace: ?reply)[[[No, really. I'm telling the truth.|8C]] [[What do you have against rats, anyway?|8E]]](display: "talk") (replace: ?img)[<img src="sommelier.png">] (replace: ?dialogue)[''Sommelier: ''Begone, then. You will get no more help from me.] (replace: ?reply)[(link: "*Squeak*")[(goto: $variant)]](display: "talk") (replace: ?img)[<img src="sommelier.png">] (replace: ?dialogue)[''Sommelier: ''They keep getting into my barrels and polluting the taste of my mead. I don't mind the taste myself, but the last time I brought rat-mead to a ceremony the black-robed cultist denigrated my abilities as a sommelier.] (replace: ?reply)[[[That must have been difficult for you.|8F]] [[In fairness, it doesn't sound like you're very good at your job.|8G]]](display: "talk") (replace: ?img)[<img src="sommelier.png">] (replace: ?dialogue)[''Sommelier: ''Pah. Begone, then. You will get no more help from me.] (replace: ?reply)[(link: "Bye, Sommelier!")[(goto: $variant)]](display: "talk") (replace: ?img)[<img src="sommelier.png">] (replace: ?dialogue)[''Sommelier: ''And now here you are, conspiring with my enemies! Begone. You will get no more help from me.] (replace: ?reply)[[[I don't think you're being fair.|8H]] (link: "Bye, Sommelier!")[(goto: $variant)]](display: "talk") (replace: ?img)[<img src="sommelier.png">] (replace: ?dialogue)[*The sommelier doesn't say anything further.*] (replace: ?reply)[(link: "Bye, Sommelier!")[(goto: $variant)]](display: "talk") (replace: ?img)[<img src = "cultistFish2.png">] (replace: ?dialogue)[*The Waterlogged Cultist removes its hood.*] (replace: ?reply)[[[...|9B]]](display: "talk") (replace: ?img)[<img src = "cultistFish2.png">] (replace: ?dialogue)[*The Waterlogged Cultist steps towards you.*] (replace: ?reply)[[[*Back away slowly*|9D]] [[*Back away quickly*|9D]]](display: "talk") (replace: ?img)[] (replace: ?dialogue)[*It's gone.*] (replace: ?reply)[(link: "...")[(goto: $variant)]](display: "talk") (replace: ?img)[<img src = "cultistFish2.png">] (replace: ?dialogue)[*The Waterlogged Cultist lifts its head, soggy and magesterial.*] (replace: ?reply)[[[...|9C]]](set: $tempDisplay to (a: "You cannot push the (print: $tempDisplay's 2nd) over the rope bridge.", _qualities's name)) (goto: $variant){<script> $(".lvl").addClass(style); $(".card").addClass(style); $(".card2").addClass(style); </script> }<div class = "lvl"><h2>Chapter (print: (ceil: $level/5)).(abs: $level - ((floor: ($level-1)/5) * 5)): (print: $level of $levelNames)</h2></div> (set: _orientation to $orientation)<div class = "row"><div class = "card"><h3>Action</h3>|action>[(display: "semiblindActions")]</div> <div class = "card"><h3>Observation</h3>|observe>[]</div> <div class = "card"><h3>Sight</h3>|display>[]</div></div><div class="row"><div class="card2"><h3>Location</h3>(display: "flavour")</div><div class="card2"><h3>Elements</h3>(display: "elements")</div></div>\ (replace: ?display)[(display: "waterlogged")]\ (replace: ?observe)[(display: "semiblindObserve")]You can (link-repeat: "advance")[(display: "advance")] Pivot (link-repeat: "left")[(set: $orientation to (rotated: -1, ...$orientation))(set: _orientation to $orientation)(replace: ?display)[(display: "waterlogged")](replace: ?observe)[(display: "semiblindObserve")]] or (link-repeat: "right")[(set: $orientation to (rotated: 1, ...$orientation))(set: _orientation to $orientation)(replace: ?display)[(display: "waterlogged")](replace: ?observe)[(display: "semiblindObserve")]] Glance (link-repeat: "left")[(set: _orientation to (rotated: -1, ...$orientation))(replace: ?observe)[To your left, you see: (display: "waterlogged")]] or (link-repeat: "right")[(set: _orientation to (rotated: 1, ...$orientation))(replace: ?observe)[To your right, you see: (display: "waterlogged")]] [(link: "Restart")[(goto: (text: $level))] or (link: "skip")[(replace: ?skip)[Are you sure you want to skip? (link: "Yes")[(goto: "skip")]]] the level.]<skip|The Waterlogged Cultist, (either: "walking towards you", "lifting a clammy finger", "peeling back its hood", "staring with dead-fish eyes", "approaching", "getting closer", "lifting its head", "slimy and magesterial").(if: $tempDisplay is not false)[(print: $tempDisplay's 1st)(set: $tempDisplay to false) ]\ (else:)[You observe nothing.](display: "talk") (replace: ?img)[<img src = "ratKing.png">] (replace: ?dialogue)[''King Rat: ''Something has gone deeply wrong in these cellars. Something unnatural lurks down here.] (replace: ?reply)[[[I know. I have seen it.|10B]] [[You can talk!!|10C]]](display: "talk") (replace: ?img)[<img src = "ratKing.png">] (replace: ?dialogue)[''King Rat: ''It appears to all of us differently. To us it looks like a rat, but never exactly like a rat. The face will be wrong, or the fur, or in place of the eyes there will be two empty holes.] (replace: ?reply)[[[It appears to me as a waterlogged cultist.|10D]] [[The Sommelier, I think, has seen it too.|10E]] [[You can talk!|10F]]](display: "talk") (replace: ?img)[<img src = "ratKing.png">] (replace: ?dialogue)[''King Rat: ''I think you have seen it too.] (replace: ?reply)[[[Seen what?|10B]] [[You can talk!|10B]]](display: "talk") (replace: ?img)[<img src = "ratKing.png">] (replace: ?dialogue)[''King Rat: ''That sounds like the kind of thing It would do.] (replace: ?reply)[[[Can you help me?|10G]] [[You can talk!|10G]]](display: "talk") (replace: ?img)[<img src = "ratKing.png">] (replace: ?dialogue)[''King Rat: ''I think so too. He and I once got along well, but something has changed in him. Now he is afraid of something as trivial as drinking a little bit of rat-mead.] (replace: ?reply)[[[Can you help me?|10G]] [[You can talk!|10F]]](display: "talk") (replace: ?img)[<img src = "ratKing.png">] (replace: ?dialogue)[''King Rat: ''Be careful. I suspect you journeying to retrive a watermelons, and whatever this Presence is, it seems to be strongest on the lower levels.] (replace: ?reply)[[[Can you help me?|10G2]] [[You can talk!|10H]]](display: "talk") (replace: ?img)[<img src = "ratKing.png">] (replace: ?dialogue)[''King Rat: ''I don't know how. My subjects and I have tried fleeing to the lower levels, but if anything it seems to gather strength the further down one goes.] (replace: ?reply)[[[Thank you for your warning.|10H]] [[You can talk!|10H]]](display: "talk") (replace: ?img)[<img src = "ratKing.png">] (replace: ?dialogue)[''King Rat: ''Good luck.] (replace: ?reply)[(link: "To you, too.")[(goto: $variant)] (link: "You can talk!")[(goto: $variant)]](display: "talk") (replace: ?img)[<img src = "ratKing.png">] (replace: ?dialogue)[''King Rat: ''I wish I could. But all I can offer is advice. Be careful. Be safe. Hurry back upstairs as soon as you can.] (replace: ?reply)[[[Thank you for your warning.|10H]] [[You can talk!|10H]]]<script> var x = document.getElementById("snackbar"); x.className = "show"; setTimeout(function(){ x.className = x.className.replace("show", ""); }, 5000); </script> <div id = "snackbar">You have left the (print: $chapterNames's (abs: (floor: ($level-1)/5))), and are entering the (print: $chapterNames's (abs: 1 + (floor: ($level-1)/5))).</div>(display: "audio")(replace: ?observe)[The lore-tome is musty and old. You could (link-repeat: "read it")[<script>$(".lore").addClass("imageLeft");</script>(replace: ?lore)[<div class = "speaker"><img src = "lore.png"></div><div class = "dialogue">(print: $level of $lore) (link: "*Stop reading*")[(goto: $variant)]]</div>].](set: _forwards3 to (a: (_forwards2's 1st + 1st of $orientation's 1st), (_forwards2's 2nd + 2nd of $orientation's 1st))) (set: _forwards4 to (a: (_forwards2's 1st + 1st of $orientation's 2nd), (_forwards2's 2nd + 2nd of $orientation's 2nd))) (set: _forwards5 to (a: (_forwards2's 1st + 1st of $orientation's 4th), (_forwards2's 2nd + 2nd of $orientation's 4th))) (set: _pushToAdjacent1 to _forwards3's 1st of _forwards3's 2nd of $map) (set: _pushToAdjacent2 to _forwards4's 1st of _forwards4's 2nd of $map) (set: _pushToAdjacent3 to _forwards5's 1st of _forwards5's 2nd of $map) (if: _pushToAdjacent1 is '3' or _pushToAdjacent2 is '3' or _pushToAdjacent3 is '3') [ (set: $tempDisplay to (a: "The somewhat sentient pushblock refuses to be pushed near another somewhat sentient pushblock. It is like trying to shift a mountain.",_pushToAdjacent1, _pushToAdjacent2, _pushToAdjacent3)) (goto: $variant) ] (set: _forwards to (a: ($location's 1st + 1st of $orientation's 1st), ($location's 2nd + 2nd of $orientation's 1st))) (set: _pushElement to _forwards's 1st of _forwards's 2nd of $map) (set: _qualities to _pushElement of $tiles) (set: _forwards2 to (a: (_forwards's 1st + 1st of $orientation's 1st), (_forwards's 2nd + 2nd of $orientation's 1st))) (set: _pushToElement to _forwards2's 1st of _forwards2's 2nd of $map) (set: _qualities2 to _pushToElement of $tiles)(set: $tempDisplay to (a: "You decide not to throw yourself into the pit.")) (goto: $variant)(display: "talk") (replace: ?img)[<img src="cultistByrne.png">] (replace: ?dialogue)[''Burning cultist:'' I'll tell you later.] (replace: ?reply)[[[Where can I find a watermelon for tonight's ceremony?|11B]]](display: "talk") (replace: ?img)[<img src="cultistByrne.png">] (replace: ?dialogue)[''Burning cultist:'' You're headed the right way. There's a pressure plate here that will open a door to a series of hidden chambers. These chambers lead eventually to the mines. The watermelon storage room is somewhere beyond that.] (replace: ?reply)[(link: "Thank you for your help, Burning Cultist!")[(goto: $variant)]](display: "talk") (replace: ?img)[<img src="cultistByrne.png">] (replace: ?dialogue)[''Burning cultist:'' It's the robes I'm wearing. I wanted to make my head smaller. And the easiest way to do that was to make my body bigger.] (replace: ?reply)[[[But why are you on fire?|11A]]]{<script>var style = "catacombs";</script> (set: $map to (a: (a: 'w','w','w','w','w','w'), (a: 'w','0','0','0','0','0','c'), (a: 'w','0','0','0','0','1','c'), (a: 'w','0','2','0','9','0','c'), (a: 'w','0','0','0','0','1','c'), (a: 'w','0','0','0','0','0','c'), (a: 'w','w','w','w','w','w','w'))) (set: $location to (a: 6,4)) (set: $orientation to (a: (a: 0,-1), (a: 1,0), (a: 0,1), (a: -1, 0))) (set: $room to $defaultRoom + (dm: "name", "high-ceilinged cavern", "text", "You can't make out the ceiling, likely because it is so high up.")) (set: $elements to (a: '1', '2', '9')) (set: $level to 12) (set: $variant to "Main") (if: (history:) contains (text: $level))[(goto: $variant)] (display: "talk") (replace: ?dialogue)[''White cat:'' Why hello there.] (replace: ?reply)[[[What are you doing in the catacombs?|12A]]]}{<script>var style = "catacombs";</script> (set: $map to (a: (a: 'w','c','c','c','c','c'), (a: 'w','0','0','1','0','w'), (a: 'w','0','0','0','9','w'), (a: 'w','0','0','0','0','w'), (a: 'w','0','2','0','0','w'), (a: 'w','S','0','0','0','w'), (a: 'w','w','w','w','w','w'))) (set: $location to (a: 5,2)) (set: $orientation to (a: (a: 0,-1), (a: 1,0), (a: 0,1), (a: -1, 0))) (set: $room to $defaultRoom + (dm: "name", "dark passageway", "text", "You can see very little here", "flavour", "The candle's flame flickers and revives.")) (set: $elements to (a: '1', '2', '9','S')) (set: $level to 13) (set: $variant to "Main") (if: (history:) contains (text: $level))[(goto: $variant)] (display: "talk") (replace: ?dialogue)[*Candles have been planted in the recesses of the walls. Some have burned down, but others are still burning.*] (replace: ?reply)[[[*Watch*|13A]]]}(display: "talk") (replace: ?dialogue)[''White cat:'' I assume this is a joke? Asking what I, a *cat*, am doing in the *Cat*-acombs?] (replace: ?reply)[[[I don't get it.|12B]] [[It's a legitimate question. What are you doing in the Catacombs, Cat?|12C]]](display: "talk") (replace: ?dialogue)[''White cat:'' No. The last cultist to come this way didn't get it either.] (replace: ?reply)[[[Have you met others of our order?|12D]]](display: "talk") (replace: ?dialogue)[''White cat:'' A silly question. More pressing matters are at hand. You humans are always talking just for the sake of it.] (replace: ?reply)[[[Have you met others of our Order?|12D]] [[You can't exactly talk, Talking Cat|12F]]](display: "talk") (replace: ?dialogue)[''White cat:'' Yes. I've met them on their way down to the watermelon storage chamber. I've never met any coming back up.] (replace: ?reply)[[[But watermelons are rountinely retrieved for our ceremonies, so clearly some have made the return journey.|12E]] [[Bye, Talking Cat!|12F]]](display: "talk") (replace: ?dialogue)[''White cat:'' I'll wish you luck for when you reach the mines. I'm sure you have nothing to fear. Nothing rotted, waterlogged, and rotten, or anything like that.] (replace: ?reply)[(link: "Bye, White Cat!")[(goto: $variant)]](display: "talk") (replace: ?dialogue)[''White cat:'' Goodbye, talking human. Best of luck for when you reach the mines. I look forward to seeing if you make it back alive.] (replace: ?reply)[(link: "Goodbye, Talking Cat!")[(goto: $variant)]](display: "talk") (replace: ?dialogue)[*A gust of wind blows through the chamber. All the candles gutter and die, save for one precarious flame.*] (replace: ?reply)[(link: "*Begin*")[(goto: "Main")]]{<script>var style = "catacombs";</script> (set: $map to (a: (a: 'w','c','c','c','c','c'), (a: 'w','0','0','0','0','7','w'), (a: 'w','S','0','2','0','7','w'), (a: 'w','0','0','0','0','7','w'), (a: 'w','0','9','0','w','w','w'), (a: 'w','0','S','0','0','5'), (a: 'w','w','w','w','w','w'))) (set: $location to (a: 5,3)) (set: $orientation to (a: (a: 0,-1), (a: 1,0), (a: 0,1), (a: -1, 0))) (set: $room to $defaultRoom + (dm: "name", "near-pitch darkness", "text", "You can barely see the hands in front of your face.", "flavour", "Your eyes struggle and fail to adjust to the darkness.")) (set: $elements to (a: '2', '9','S','7')) (set: $level to 14) (set: $variant to "dark") (if: (history:) contains (text: $level))[(goto: $variant)] (display: "talk") (replace: ?dialogue)[*A sour gust of wind extinguishes all the candles in the room. You can see almost nothing. You certainly can't see anything further than two metres away from you.*] (replace: ?reply)[(link: "Open your eyes as widely as your face-muscles allow.")[(goto: $variant)]]}{<script> $(".lvl").addClass(style); $(".card").addClass(style); $(".card2").addClass(style); </script> }<div class = "lvl"><h2>Chapter (print: (ceil: $level/5)).(abs: $level - ((floor: ($level-1)/5) * 5)): (print: $level of $levelNames)</h2></div> (set: _orientation to $orientation)<div class = "row"><div class = "card"><h3>Action</h3>|action>[(display: "darkActions")]</div> <div class = "card"><h3>Observation</h3>|observe>[]</div> <div class = "card"><h3>Sight</h3>|display>[]</div></div><div class="row"><div class="card2"><h3>Location</h3>(display: "flavour")</div><div class="card2"><h3>Elements</h3>(display: "elements")</div></div>\ (replace: ?display)[(display: "darkSight")]\ (replace: ?observe)[(display: "observe")]You can (link-repeat: "advance")[(display: "advance")] Pivot (link-repeat: "left")[(set: $orientation to (rotated: -1, ...$orientation))(set: _orientation to $orientation)(replace: ?display)[(display: "darkSight")](replace: ?observe)[(display: "observe")]] or (link-repeat: "right")[(set: $orientation to (rotated: 1, ...$orientation))(set: _orientation to $orientation)(replace: ?display)[(display: "darkSight")](replace: ?observe)[(display: "observe")]] Glance (link-repeat: "left")[(set: _orientation to (rotated: -1, ...$orientation))(replace: ?observe)[To your left, you see: (display: "darkSight")]] or (link-repeat: "right")[(set: _orientation to (rotated: 1, ...$orientation))(replace: ?observe)[To your right, you see: (display: "darkSight")]] [(link: "Restart")[(goto: (text: $level))] or (link: "skip")[(replace: ?skip)[Are you sure you want to skip? (link: "Yes")[(goto: "skip")]]] the level.]<skip|{ (set: $track to (a:))(set: $ahead to (a:)) (if: _orientation's 1st is (a: 1,0))[ (set: _row to $location's 2nd of $map) (set: $ahead to _row's (range: $location's 1st + 1, _row's length)) ] (if: _orientation's 1st is (a: -1, 0))[ (set: _row to (range: 1, $location's 1st - 1) of $location's 2nd of $map) (for: each _thing, ..._row) [ (set: $ahead to it + (a: _thing)) (if: $ahead's length > 1) [ (set: $ahead to (rotated: 1, ...$ahead)) ] ] ] (if: _orientation's 1st is (a: 0, 1))[ (for: each _thing, ...$map's (range: $location's 2nd + 1, $map's length)) [ (set: $ahead to it + (a: $location's 1st of _thing)) ] ] (if: _orientation's 1st is (a: 0, -1))[ (for: each _thing, ...$map's (range: 1, $location's 2nd - 1)) [ (set: $ahead to it + (a: $location's 1st of _thing)) (if: $ahead's length > 1) [ (set: $ahead to (rotated: 1, ...$ahead)) ] ] ] (set: _next to $ahead's 1st) }(if: _next is '0')[You can't make out anything in the darkness.]\ (else:)[(set: _qualities to _next of $tiles)\ You see (lowerfirst: _qualities's determiner) (lowercase: _qualities's name) right before you.(if: $ahead's length > 1)[ You can make out nothing beyond that.]]{<script>var style = "catacombs";</script> (set: $map to (a: (a: 'w','c','c','c','c','c','w'), (a: 'c','0','0','0','0','0','c'), (a: 'c','0','2','0','2','0','c'), (a: 'c','0','0','9','0','0','c'), (a: 'c','0','2','0','2','0','c'), (a: 'c','0','0','C','0','0','c'), (a: 'w','c','c','c','c','c','w'))) (set: $location to (a: 3,2)) (set: $orientation to (a: (a: 0,-1), (a: 1,0), (a: 0,1), (a: -1, 0))) (set: $room to $defaultRoom + (dm: "name", "mineshaft antechamber", "text", "The Burning Cultist stands in the corner, burning. Skulls are piled in fastidious pyramids. Strange symbols are carved on all the walls.", "flavour", "The Burning Cultist burns merrily.")) (set: $elements to (a: '2', '9')) (set: $level to 15) (set: $variant to "Main") (if: (history:) contains (text: $level))[(goto: $variant)] (display: "talk") (replace: ?img)[] (replace: ?dialogue)[*You hear moist plodding sounds. Whatever is making them seems to be getting closer.*] (replace: ?reply)[[[*Back away*|15A]] [[*Wait*|15B]]]}(display: "talk") (replace: ?img)[<img src="cultistFish.png">] (replace: ?dialogue)[*It's the waterlogged cultist! It opens its mouth and begins to sing. Its voice is sombre and soggy and strangely familiar.*] (replace: ?reply)[[[*Close your eyes*|15C1]] [[*Close your ears*|15C2]]](display: "talk") (replace: ?img)[] (replace: ?dialogue)[*You make it only a few steps before bumping into a wall. You can't continue in this direction, and the sounds are getting closer.*] (replace: ?reply)[[[*Try a different direction*|15A2]] [[*Wait*|15B]]](display: "talk") (replace: ?img)[] (replace: ?dialogue)[*You find your way blocked by (either: 'a large statue', 'an ornamental potplant', 'a possibly bottomless pit', 'a grave niche', 'a mysterious wall-carving'). (either: 'Whatever is following you is still following you', 'You are still being followed by the thing that is following you', 'There is no escape here').*] (replace: ?reply)[[[Try a different direction*|15A2]] [[*Wait*|15B]]](display: "talk") (replace: ?img)[<img src="cultistFish.png">] (replace: ?dialogue)[*You have never heard its song before - how could you have? - but you know it, unmistakably. It is the tang of blood and the weight of stones and the door to the den left slightly ajar, white light spilling onto the carpet outside. It is the dullness of anger and the thrill of regret.] (replace: ?reply)[[[*Listen*|15D]]](display: "talk") (replace: ?img)[<img src="cultistFish.png">] (replace: ?dialogue)[*You try, but fail, to close your ears.*] (replace: ?reply)[[[*Close your eyes*|15C1]]](display: "talk") (replace: ?img)[] (replace: ?dialogue)[*Silence.*] (replace: ?reply)[[[*Open your eyes*|15E]]](display: "talk") (replace: ?dialogue)[''Burning cultist:'' Sorry to interrupt, but it looked like you were in a bit of a pickle.] (replace: ?reply)[[[How did you rescue me?|15F1]] [[What was that thing?|15F2]]](display: "talk") (replace: ?dialogue)[''Burning cultist:'' I knew what not to do, is what I did do.] (replace: ?reply)[[[What was that thing?|15F2]] [[Can you help me?|15G]]](display: "talk") (replace: ?dialogue)[''Burning cultist:'' I'll tell you later.] (replace: ?reply)[[[How did you rescue me?|15F1]] [[Can you help me?|15G]]](display: "talk") (replace: ?dialogue)[I see the candles have blown out. I can light this room for you, but I cannot help you any further. This next door leads to the mines, and I never go to the mines anymore.] (replace: ?reply)[(link: "Thanks.")[(goto: $variant)] (link: "Thanks, I guess.")[(goto: $variant)] [[Go away. I don't need light.|15H]]]{ (set: $map to (a: (a: 'w','c','c','c','c','c'), (a: 'c','0','0','0','0','0','c'), (a: 'c','0','2','0','2','0','c'), (a: 'c','0','0','9','0','0','c'), (a: 'c','0','2','0','2','0','c'), (a: 'c','0','0','0','0','0','c'), (a: 'w','c','c','c','c','c','w'))) (set: $room to $defaultRoom + (dm: "text", "The room is dark as pitch. If only there were some appropriate cultist around to shed some light.", "flavour", "The room did not need to be this dark. You may or may not regret your decision.")) (set: $variant to "dark") }(display: "talk") (replace: ?dialogue)[Have it your way.] (replace: ?reply)[(link: "Bye, Burning Cultist!")[(goto: $variant)]]{<script>var style = "mines";</script> (display: "progress") (set: $map to (a: (a: 'w','w','w','w','w','w'), (a: 'w','7','7','7','w','w','w'), (a: 'w','0','0','1','0','0','w'), (a: 'w','0','M','0','M','0','d'), (a: 'w','0','0','1','0','0','w'), (a: 'w','7','7','7','w','w','w'), (a: 'w','w','w','w','w','w'))) (set: $location to (a: 2,4)) (set: $orientation to (a: (a: 1,0), (a: 0,1), (a: -1, 0), (a: 0,-1))) (set: $room to $defaultRoom + (dm: "name", "mineshaft (A)", "text", "Tools and hardhats lay abandoned in the dirt. A thick blanket of dust covers everything in the room.")) (set: $elements to (a: '1', '7', 'M','d')) (set: $tempDisplay to 0) (set: $level to 16) (set: $variant to "Main") (if: (history:) contains (text: $level))[(goto: $variant)] (display: "talk") (replace: ?dialogue)[*A lantern burns by the entrance of the mines. You could pick it up and take it with you.*] (replace: ?reply)[[[Pick it up and take it with you|16B]] [[Don't pick it up and take it with you|16A]]]}(set: $tempDisplay to false)(display: "talk") (replace: ?dialogue)[*You pick up the lantern and take it with you.*] (replace: ?reply)[(link: "Onwards!")[(goto: $variant)]](set: $tempDisplay to it + 1)(display: "talk") (replace: ?img)[] (replace: ?dialogue)[*(if: $tempDisplay > 7)[You feel compelled to pick up the lantern. Doing so violates your sense of autonomy, but you see you other option.](else:)[You (either: "think about", "consider", "toy with the idea of", "seriously consider", "almost decide against") not picking up the lantern, but then (either: "you realise", "you come to realise", "it dawns on you") that (either: "it would be best to", "you should definitely", "it would be wisest to", "it will be very dark unless you", "you won't be able to see where you're going unless you", "you should probably", "it's probably a better idea to") pick up the lantern (either: "and take it with you", "and use it to light your way", "and carry it with you", "to help guide you through the darkness").]*] (replace: ?reply)[[[Pick up the lantern and take it with you|16B]](unless: $tempDisplay > 7)[ [[Don't pick it up and take it with you|16A]]]](display: "talk") (replace: ?dialogue)[*The rat scurries away.*] (replace: ?reply)[(link: '*Leave*')[(goto: $variant)]]{<script>var style = "mines";</script> (set: $map to (a: (a: 'w','w','w','w','w','w','w','w','w'), (a: 'w','p','0','0','0','0','0','0','7','w'), (a: 'w','p','0','3','0','0','9','3','7','w'), (a: 'w','p','0','0','0','0','0','0','7','w'), (a: 'w','w','w','w','w','w','w','w','w'))) (set: $location to (a: 3,3)) (set: $orientation to (a: (a: 1,0), (a: 0,1), (a: -1, 0), (a: 0,-1))) (set: $room to $defaultRoom + (dm: "name", "mineshaft (B)", "text", "Rough-hewn pushblocks are piled in the corners, and some have been left half-extracted from the earth.", "flavour", "The hairs on the back of your neck stand on end. You feel you are being watched.")) (set: $elements to (a: '3', '7', 'p', '9')) (set: $level to 17) (set: $variant to "Main") (if: (history:) contains (text: $level))[(goto: $variant)] (display: "talk") (replace: ?dialogue)[''Skeleton:'' ...] (replace: ?reply)[[[Hi, Skeleton!|17A]] (link: "*Leave*")[(goto: $variant)]] }(display: "talk") (replace: ?dialogue)[''Skeleton:'' ...] (replace: ?reply)[[[I thought these mines were abandoned!|17B]] [[Can you point me toward the watermelons?|17B]] (link: "*Leave*")[(goto: $variant)]](display: "talk") (replace: ?dialogue)[''Skeleton:'' ...] (replace: ?reply)[[[What's your name?|17C]] [[What's your role in this organisation?|17C]] (link: "*Leave*")[(goto: $variant)]](display: "talk") (replace: ?dialogue)[''Skeleton:'' ...] (replace: ?reply)[[[You don't talk much, do you?|17D]] [[You're really good at listening.|17D]] [[I'm going to call you Wesley P. Skelliman|17E]] (link: "*Leave*")[(goto: $variant)]](display: "talk") (replace: ?dialogue)[''Skeleton:'' ...] (replace: ?reply)[(link: "*Leave*")[(goto: $variant)]](display: "talk") (replace: ?dialogue)[''Wesley P. Skelliman:'' ...] (replace: ?reply)[(link: "*Leave*")[(goto: $variant)]]{<script>var style = "mines";</script> (set: $map to (a: (a: 'w','w','w','w','w','w','w'), (a: 'w','p','0','0','0','7','w'), (a: 'w','0','0','0','0','0','w'), (a: 'w','0','M','3','9','3','w'), (a: 'w','0','0','0','0','0','w'), (a: 'w','p','0','0','0','7','w'), (a: 'w','w','w','w','w','w','w'))) (set: $location to (a: 2,4)) (set: $orientation to (a: (a: 1,0), (a: 0,1), (a: -1, 0), (a: 0,-1))) (set: $room to $defaultRoom + (dm: "name", "pushblock storage room (A)", "text", "Something terribly wrong has happened here. You can feel it in some subterranian dread-locked part of you. ", "flavour", "Wait. What were you doing? What were you thinking of?")) (set: $elements to (a: '3', '7', 'p', '9')) (set: $level to 18) (set: $variant to "spin") (if: (history:) contains (text: $level))[(goto: $variant)] (display: "talk") (replace: ?dialogue)[''Fear-Crazed Cultist:'' Go back! Go back! It's not safe here!] (replace: ?reply)[[[But I need watermelons.|18B]] [[I can't trust your advice. You're fear-crazed.|18B]] [[*Sneak past the Fear-Crazed Cultist*|18A]]] }(display: "talk") (replace: ?dialogue)[''Fear-Crazed Cultist:'' Let me tell you what happened down here.] (replace: ?reply)[[[By all means.|18C]] [[No.|18C2]](if: last of (history:) is '18A')[ (link: '*Slither away*')[(goto: $variant)]]](display: "talk") (replace: ?dialogue)[''Fear-Crazed Cultist:'' I note that you've dropped to the ground and started slithering. Unfortunately, your fondness for dirt won't protect you here!!] (replace: ?reply)[[[*Stand back up*|18B]] [[*Keep slithering*|18B]]](display: "talk") (replace: ?dialogue)[''Fear-Crazed Cultist:'' I came to the pushblock mines to mine pushblocks. Many of my closest friends came with me. I'm the only one left. We delved too deep, and we found only horrors.] (replace: ?reply)[[[What happened to your friends?|18D]] [[Can you describe these horrors with greater specificity?|18E]]](display: "talk") (replace: ?dialogue)[''Fear-Crazed Cultist:'' My friends claimed to be haunted by something. Something empty; something hungry. Something that appeared to all of them differently, and waited calmly for them to give themselves up to it.] (replace: ?reply)[[[What happened next?|18F]]](display: "talk") (replace: ?dialogue)[''Fear-Crazed Cultist:'' I cannot, for my friends all saw it differently. But whatever it was, it was dreadful. It pulled on us as inexorably as the tides.] (replace: ?reply)[[[What happened next?|18F]]](display: "talk") (replace: ?dialogue)[''Fear-Crazed Cultist:'' *Gurgle*] (replace: ?reply)[[[Are you okay?|18G]] [[Bless you.|18G]]](display: "talk") (replace: ?img)[<img src = "cultistPurpleFishy.png">] (replace: ?dialogue)[''Increasingly Waterlogged Cultist:'' *Splutter*] (replace: ?reply)[[[Bless you profoundly.|18H]] [[I think you might not be okay.|18H]]](display: "talk") (replace: ?img)[<img src = "cultistPurpleFishy2.png">] (replace: ?dialogue)[''Formerly Fear-Crazed and Presently Waterlogged Cultist:'' ...] (replace: ?reply)[[[Try taking some deep breaths. You'll be okay.|18I]] (link: "I'll look for help in the watermelon storage room.")[(goto: $variant)] (link: "*Run away*")[(goto: $variant)]](display: "talk") (replace: ?img)[<img src = "cultistPurpleFishy2.png">] (replace: ?dialogue)[''Formerly Fear-Crazed and Presently Waterlogged Cultist:'' ...] (replace: ?reply)[(link: "... I might leave you to it, then.")[(goto: $variant)]]{<script>var style = "mines";</script> (set: $map to (a: (a: 'w','w','w','w','w','w','w','w'), (a: 'w','7','m','0','0','0','m','7','w'), (a: 'w','7','m','3','9','3','m','7','w'), (a: 'w','7','m','0','0','0','m','7','w'), (a: 'w','w','w','w','w','w','w','w'))) (set: $location to (a: 5,3)) (set: $orientation to (a: (a: -1, 0), (a: 0,-1), (a: 1,0), (a: 0,1))) (set: $room to $defaultRoom + (dm: "name", "pushblock storage room (B)", "text", "The room is filled with empty crates.", "flavour", "You think you hear something moving in the distance. But it might just be cave-wind.")) (set: $elements to (a: 'm', '3', '7', '9')) (set: $level to 19) (set: $variant to "Main") (if: (history:) contains (text: $level))[(goto: $variant)] (display: "talk") (replace: ?dialogue)[*The room is filled with pushblock-sized crates. Some have been opened.*] (replace: ?reply)[[[*Look inside one of them*|19A]] [[*Look inside all of them*|19B]] (link: "*Avert your eyes and being solving the puzzle*")[(goto: $variant)]] }(display: "talk") (replace: ?dialogue)[*It's empty. The wood inside has been scuffed.*] (replace: ?reply)[(link: "How interesting!")[(goto: $variant)]](display: "talk") (replace: ?dialogue)[*They are all empty, and all of them have been at least a little bit damaged. The wood of some of the crates has been splintered, and the inside surface of the others has been thoroughly scuffed.*] (replace: ?reply)[(link: "How interesting!")[(goto: $variant)]](set: _forwards3 to (a: ($location's 1st + 1st of $orientation's 1st + 1st of $orientation's 1st + 1st of $orientation's 1st), ($location's 2nd + 2nd of $orientation's 1st + 2nd of $orientation's 1st + 2nd of $orientation's 1st))) (set: _flingToElement to _forwards3's 1st of _forwards3's 2nd of $map) (set: _qualities3 to _flingToElement of $tiles) (unless: _qualities3's solid is false) [ (set: $tempDisplay to (a: "Stepping onto the launch-plate would launch you into the (print: $tempDisplay's 2nd). This would be inadvisable.", _qualities3's name)) (goto: $variant) ] (else:) [ <script>A.track('fling').play();</script> (set: $tempDisplay to (a: "You spin through the air like a (either: 'flightless roundbird', 'winged brick') and land heavily on your (either: 'knees', 'ribcage', 'back', 'elbows').")) (set: $location to _forwards3) (goto: $variant) ]{<script>var style = "mines";</script> (set: $map to (a: (a: 'w','w','w','w','w','w'), (a: 'w','0','0','7','0','0','w'), (a: 'w','0','3','7','3','0','w'), (a: 'w','0','0','M','0','0','w'), (a: 'w','0','3','9','3','0','w'), (a: 'w','0','0','M','0','0','w'), (a: 'w','0','3','7','3','0','w'), (a: 'w','0','0','7','0','0','w'), (a: 'w','w','w','w','w','w'))) (set: $location to (a: 2,5)) (set: $orientation to (a: (a: 1,0), (a: 0,1), (a: -1, 0), (a: 0,-1))) (set: $room to $defaultRoom + (dm: "name", "mineshaft (C)", "text", "The entrance to the caves is just ahead.")) (set: $elements to (a: '3', '7', 'M', '9')) (set: $level to 20) (set: $variant to "Main") (if: (history:) contains (text: $level))[(goto: $variant)] (display: "talk") (replace: ?dialogue)[''Sentient Push-Block:'' Hi!] (replace: ?reply)[[[Um.|20A]] [[Hello?|20A]]] }(display: "talk") (replace: ?dialogue)[''Sentient Push-Block:'' I'm a Sentient Push-Block!] (replace: ?reply)[[[How did you come to be alive?|20B]] [[Your face is unsettling.|20C]]](display: "talk") (replace: ?dialogue)[''Sentient Push-Block:'' I was once part of the grand expanse of earth. Since being mined from the wall the scope of my self has become smaller, and I have become more me.] (replace: ?reply)[[[Are there others like you?|20D]]](display: "talk") (replace: ?dialogue)[''Sentient Push-Block:'' At least I'm not made of meat. Unlike some.] (replace: ?reply)[[[Are there others like you?|20D]] [[One benefit of being made of meat is that I have-legs I can use to move around. Unlike some.|20E]]](display: "talk") (replace: ?dialogue)[''Sentient Push-Block:'' Many of my sisters and brothers are insensate, but others are beginning to wake up.] (replace: ?reply)[[[Can you feel pain?|20F]] [[What good is sentience if you can't move around?|20E]]](display: "talk") (replace: ?dialogue)[''Sentient Push-Block:'' It's true that we need humans to push us around. Fortunately, humans keep coming down here to do just that.] (replace: ?reply)[[[Would you like me to push you somewhere?|20G]] [[Don't think I'm going to push you anywhere.|20H]]](display: "talk") (replace: ?dialogue)[''Sentient Push-Block:'' No. But I experience block-feelings you can't begin to understand.] (replace: ?reply)[[[What good is sentience if you can't move around?|20E]]](display: "talk") (replace: ?dialogue)[''Sentient Push-Block:'' No, I'm okay. I see you're headed to the caves, and there's nothing for me there. More humans will come this way soon, and one of them will doubtless take me to where I want to be.] (replace: ?reply)[[[Where is that?|20I]] [[I'm leaving now, Sentient Push-Block, and you can't follow me.|20J]]](display: "talk") (replace: ?dialogue)[''Sentient Push-Block:'' Not a problem. More humans will come, and one of them will doubtless take me to where I want to be.] (replace: ?reply)[[[Where is that?|20I]] [[I'm leaving now, Sentient Push-Block, and you can't follow me.|20J]]](display: "talk") (replace: ?dialogue)[''Sentient Push-Block:'' Atop a pressure plate. It feels wonderful there.] (replace: ?reply)[(link: "Well, bye.")[(goto: $variant)] (link: "Well, bye. Also, ew.")[(goto: $variant)]](display: "talk") (replace: ?dialogue)[''Sentient Push-Block:'' Good luck, meat-person.] (replace: ?reply)[(link: "To you too!")[(goto: $variant)]]{<script>var style = "dark";</script> (display: "progress") (set: $map to (a: (a: 'w','w','w','w','w','w',), (a: 'w','0','0','0','w','w','w'), (a: 'w','0','1','0','w','w','w'), (a: 'w','7','4','7','w','w','w'), (a: 'w','0','0','0','0','0','w'), (a: 'w','0','9','0','1','0','w'), (a: 'w','t','t','t','t','t'))) (set: $location to (a: 3,2)) (set: $orientation to (a: (a: 0,1), (a: -1, 0), (a: 0,-1), (a: 1,0))) (set: $room to $defaultRoom + (dm: "name", "bridge-cave", "text", "An unusual confluence of stalactites, stalagmites, and rope-fungus form a functional rope bridge. Nature is amazing.", "flavour", "Somewhere in the darkness, a drop of water plinks into a pool.")) (set: $elements to (a: '1', '4', '7', '9')) (set: $level to 21) (set: $variant to "Main") (if: (history:) contains (text: $level))[(goto: $variant)] (display: "talk") (replace: ?dialogue)[''Cave Bat:'' Screeech.] (replace: ?reply)[[[Hi, Cave Bat!|21A]] [[*Screeeeech*|21A]]] }{<script>var style = "dark";</script> (set: $map to (a: (a: 'w','w','w','w','w','w','w'), (a: 'L','0','0','T','0','0','0','w'), (a: 'w','7','4','7','4','7','4','w'), (a: 'w','9','0','1','0','0','0','w'), (a: 'w','l','l','l','l','l','l'))) (set: $location to (a: 3,4)) (set: $orientation to (a: (a: 1,0), (a: 0,1), (a: -1, 0), (a: 0,-1))) (set: $room to $defaultRoom + (dm: "name", "slime cave", "text", "The walls ooze with moisture.", "flavour", "A cave salamander scurries past your feet.")) (set: $elements to (a: '1', '4', '7', '9')) (set: $level to 22) (set: $variant to "Main") (if: (history:) contains (text: $level))[(goto: $variant)] (display: "talk") (replace: ?dialogue)[*A Cave Salamander silently stares at you.*] (replace: ?reply)[[[Hi, Cave Salamander!|22A]]]}(display: "talk") (replace: ?dialogue)[*The cave salamander emits a salamander-noise and scurries away.*] (replace: ?reply)[(link: "Bye, Cave Salamander!")[(goto: $variant)]](display: "talk") (replace: ?dialogue)[*The cave bat flies away.*] (replace: ?reply)[(link: "Bye, Cave Bat!")[(goto: $variant)] (link: "*Screeeech*")[(goto: $variant)]](display: "talk") (replace: ?dialogue)[''Fear-Crazed Cultist:'' You can't stop me from talking.] (replace: ?reply)[ [[Yes.|18C]] [[No.|18C]]]{<script>var style = "dark";</script> (set: $map to (a: (a: 'w','w','w','w','w','w','w','w'), (a: 'w','w','w','w','w','0','0','0','w'), (a: 'w','w','w','w','w','0','w','0','w'), (a: 'w','9','0','1','0','0','4','0','w'), (a: 'w','0','w','0','w','0','w','w','w'), (a: 'w','5','w','0','0','0','w','w'), (a: 'w','w','w','w','w','w','w','w'))) (set: $location to (a: 3,4)) (set: $orientation to (a: (a: 1,0), (a: 0,1), (a: -1, 0), (a: 0,-1))) (set: $room to $defaultRoom + (dm: "name", "fungal warren", "text", "Tight little passageways squeeze through the rocks. You can feel the full weight of the earth just above your head.", "flavour", "Stands of fungus wave gently in the cave-wind. The air is thick with spores.")) (set: $elements to (a: '1', '4','9')) (set: $level to 23) (set: $variant to "Main")(display: "talk") (replace: ?dialogue)[*You spot some fungi sprouting from the cave floor. You feel like it might be watching you.*] (replace: ?reply)[[[*Greet it cheerfully*|23A]] [[*Stare at it*|23B]] (link: "*Ignore it*")[(goto: $variant)]]}{<script>var style = "dark";</script> (set: $map to (a: (a: 'w','w','w','w','w','w','w','w'), (a: 'w','0','0','0','7','0','0','0','w'), (a: 'w','0','9','0','4','0','1','0','w'), (a: 'w','T','0','t','7','t','0','T','w'), (a: 'w','0','0','0','0','0','0','0','w'), (a: 'w','U','U','U','U','U','U','U','w'), (a: 'w','w','w','w','w','w','w','w'))) (set: $location to (a: 2,3)) (set: $orientation to (a: (a: 1,0), (a: 0,1), (a: -1, 0), (a: 0,-1))) (set: $room to $defaultRoom + (dm: "name", "fungal caves", "text", "The air is thick with spores.", "flavour", "You hear a damp rustling coming from a nearby chamber. Is it the fungus-keeper? Or something else?")) (set: $elements to (a: '1', '4', '7', '9', 'U')) (set: $level to 24) (set: $variant to "Main") (if: (history:) contains (text: $level))[(goto: $variant)] (display: "talk") (replace: ?dialogue)[''Fungus farmer: ''You're a long way from the surface of the earth.] (replace: ?reply)[[[The Black-Robed Cultist sent me.|24A]] [[Where else would one find watermelonds?|24B]]]}(display: "talk") (replace: ?dialogue)[''Fungus farmer: ''Ah, yes. She has something of a habit of sending lower-ranked cultists to perform her duties. But at least this affords you the opportunity to travel to some interesting places. So tell me: how are you finding my caves?] (replace: ?reply)[[[Dark.|24C]] [[Dreary.|24C]] [[Delightful.|24D]]](display: "talk") (replace: ?dialogue)[''Fungus farmer: ''True. Very true. And how do you find my caves?] (replace: ?reply)[[[Dark.|24C]] [[Dreary.|24C]] [[Delightful.|24D]]](display: "talk") (replace: ?dialogue)[''Fungus farmer: ''I suppose it is. But at least the fungus down here is nice.] (replace: ?reply)[[[Is it?|24E]] [[You've changed my mind. The caves are great!|24D]]](display: "talk") (replace: ?dialogue)[''Fungus farmer: ''This is why I love having visitors down here! There are so many things to see and do.] (replace: ?reply)[[[I'm going to go see and do some of them right now!|24F]] [[Can you help me solve some of the cave-puzzles?|24G]]](display: "talk") (replace: ?dialogue)[''Fungus farmer: ''Yes. It is.] (replace: ?reply)[[[You've changed my mind. The caves are great!|24D]]](display: "talk") (replace: ?dialogue)[''Fungus farmer: ''Goodbye, fellow cultist! If you need me, I'll be tending to some fungi nearby.] (replace: ?reply)[(link: "Goodbye, Fungus Farmer!")[(goto: $variant)]](display: "talk") (replace: ?dialogue)[''Fungus farmer: ''I would if I could, but I urgently need to tend to some nearby fungi.] (replace: ?reply)[(link: "Goodbye, Fungus Farmer!")[(goto: $variant)]](display: "talk") (replace: ?dialogue)[*It doesn't reply.*] (replace: ?reply)[(link: "*Ignore it*")[(goto: $variant)]](display: "talk") (replace: ?dialogue)[*It doesn't make any sudden movements.*] (replace: ?reply)[(link: "*Ignore it*")[(goto: $variant)]]<script>A.stopAll()</script>{ (set: _chapterMusic to (dm: 1, "<script>A.track('library').loop(true).play();</script>", 2, "<script>A.track('cellars').loop(true).play();</script>", 3, "<script>A.track('catacombs').loop(true).play();</script>", 4, "<script>A.track('mines').loop(true).play();</script>", 5, "<script>A.track('caves').loop(true).play();</script>", 6, "<script>A.track('fields').loop(true).play();</script>", 7, "<script>A.track('outro').loop(true).play();</script>")) (print: _chapterMusic's (abs: 1 + (floor: ($level-1)/5)))}(set: _forwards3 to (a: ($location's 1st + 1st of $orientation's 1st + 1st of $orientation's 1st + 1st of $orientation's 1st + 1st of $orientation's 1st), ($location's 2nd + 2nd of $orientation's 1st + 2nd of $orientation's 1st + 2nd of $orientation's 1st + 2nd of $orientation's 1st))) (set: _flingToElement to _forwards3's 1st of _forwards3's 2nd of $map) (set: _qualities3 to _flingToElement of $tiles) (if: _qualities3's solid is true) [ (set: $tempDisplay to (a: "The launch-plate would launch the (print: $tempDisplay's 2nd) into the (print: $tempDisplay's 3rd), and for some reason you don't want that to happen.", _qualities's name, _qualities3's name)) (goto: $variant) ] (else:) [ <script>A.track('fling').play();</script> (set: $tempDisplay to (a: "The (print: $tempDisplay's 2nd) spins through the air.", _qualities's name)) (set: _forwards's 1st of _forwards's 2nd of $map to '0') (set: $location to _forwards) (if: (datanames: $collision) contains _flingToElement) [ (display: _flingToElement of $collision) ] (else:) [ (set: _forwards3's 1st of _forwards3's 2nd of $map to _pushElement) ] (goto: $variant) ]{<script>var style = "dark";</script> (set: $map to (a: (a: 'w','w','w','w','w','w','w','w'), (a: 'w','0','T','0','7','0','0','U','w'), (a: 'w','0','0','0','4','0','0','U','w'), (a: 'w','0','0','0','7','0','0','U','w'), (a: 'w','7','4','7','7','0','0','U','w'), (a: 'w','0','1','0','4','0','0','U','w'), (a: 'w','t','d','t','t','t','t','t'))) (set: $location to (a: 3,3)) (set: $orientation to (a: (a: 0,1), (a: -1, 0), (a: 0,-1), (a: 1,0))) (set: $level to 25) (set: $room to $defaultRoom + (dm: "name", "cave adjoining the watermelon fields", "text", "You inhale great lungfulls of fungal spores with every breath.", "flavour", "A vibrant green glow leaks from the direction of the watermelon fields")) (set: $elements to (a: '1', '4', '7','d')) (set: $tempDisplay to 0) (set: $variant to "pivot") (if: (history:) contains (text: $level))[(goto: $variant)] (display: "talk") (replace: ?dialogue)[''Fungal Outcast: ''.... urgh....] (replace: ?reply)[[[Hi, Fungal Outcast!|25A]] (link: "*Leave. It has no legs and therefore cannot follow you.*")[(set: $tempDisplay to false)(goto: $variant)]]}{(set: $tempDisplay to it + 1) (set: _fungalSpeech to (a: "urgh", "ooooooo", "sssssshhhhh", "iiiisssss", "eeeeeee", "aaurgh", "ffffflluuu", "uudge", "nnnnng", "mmmmmehl", "sssssssss")) (set: _translate to (a: "(either: 'splurge', 'urge', 'berg')", "(either: 'you', 'you', 'goo', 'blue', 'moon', 'spoon', 'tune', 'flew', 'grew')", "(either: 'ash', 'lash', 'squash', 'moss', 'shore', 'shame', 'shaman')", "(either: 'is', 'is', 'miss', 'missed', 'ice', 'fleece', 'mice')", "(either: 'bleed', 'be', 'see', 'sea', 'seed', 'flee', 'green', 'tree', 'he', 'she', 'mead', 'leave')", "(either: 'urge', 'auger', 'large', 'targe', 'lurge', 'trudge', 'smudge')", "(either: 'flue', 'flu', 'flock', 'flew', 'flood', 'fool', 'fluke', 'flume', 'flame')", "(either: 'nudge', 'urge', 'surge', 'merge', 'turgid', 'cudgel', 'judge', 'grudge', 'smudge', 'trudge')", "(either: 'hang', 'swang', 'tang', 'swung', 'brang', 'brung')", "(either: 'melon', 'meld', 'smelled', 'smelt', 'melt', 'melodie', 'melon')", "(either: 'sacrifice', 'so', 'solder', 'seperate', 'slay', 'sap', 'says', 'sister')")) (set: _words to (shuffled: ...(range: 1,8))) (display: "talk") (unless: $tempDisplay > 10)[(replace: ?dialogue)[''Fungal Outcast: ''....(print: 1st of _words of _fungalSpeech)....(print: 2nd of _words of _fungalSpeech).....(print: 3rd of _words of _fungalSpeech).....] (replace: ?reply)[[[...(print: 1st of _words of _translate) (print: 2nd of _words of _translate) (print: 3rd of _words of _translate)?|25A]] [[...(print: 1st of _words of _translate) (print: 2nd of _words of _translate) (print: 3rd of _words of _translate)?|25A]] [[I'm sorry. I don't understand.|25B]]]] (else:)[(replace: ?dialogue)[*The Fungal Outcast falls into silence.*] (replace: ?reply)[(link: "*Leave. It has no legs and therefore cannot follow you.*")[(set: $tempDisplay to false)(goto: $variant)]]]}(display: "talk") (replace: ?dialogue)[*The Fungal Outcast contorts and quivers.*] (replace: ?reply)[[[Please, tell me more.|25A]] (link: "*Leave. It has no legs and therefore cannot follow you.*")[(set: $tempDisplay to false)(goto: $variant)]]{<script>var style = "watermelon";</script> (set: $map to (a: (a: 'w','w','w','w','w','w','w'), (a: 'w','0','0','0','0','0','0','v'), (a: 'w','0','0','9','6','1','0','v'), (a: 'w','0','0','0','0','0','0','v'), (a: 'w','w','w','w','w','w','w'))) (set: $location to (a: 2,3)) (set: $orientation to (a: (a: 1,0), (a: 0,1), (a: -1, 0), (a: 0,-1))) (set: $level to 26) (set: $room to $defaultRoom + (dm: "name", "watermelon fields", "text", "Vines coil like serpents on the floor. At intervals they bulge, obscenely, into the shapes of maturing watermelons.")) (set: $elements to (a: '1', '6', '9')) (set: $variant to "Main") (if: (history:) contains (text: $level))[(goto: $variant)] (display: "talk") (replace: ?dialogue)[*You found a watermelon! It's not quite right, though. When you shake it, the insides slosh like water. It has probably rotted. ''...Or worse''.*] (replace: ?reply)[(link: "*Push onwards*")[(goto: $variant)]]}{<script>var style = "watermelon";</script> (set: $map to (a: (a: 'w','w','w','w','w','w','w','w'), (a: 'w','V','0','V','0','0','0','0','v'), (a: 'w','0','0','0','0','V','0','0','v'), (a: 'w','0','0','0','6','1','9','0','v'), (a: 'w','0','0','0','0','V','0','0','v'), (a: 'w','V','0','V','0','0','0','0','v'), (a: 'w','5','0','w','w','w','w','w'), (a: 'w','w','w','w','w','w','w','w'))) (set: $location to (a: 2,4)) (set: $orientation to (a: (a: 1,0), (a: 0,1), (a: -1, 0), (a: 0,-1))) (set: $level to 27) (set: $room to $defaultRoom + (dm: "name", "watermelon fields", "text", "Green and purple birds flutter against the black roof of the cave. Half-eaten chunks of watermelon litter the floor. You surmise that the birds feed on the watermelons. They must pierce through the thick green flesh with their unreasonably sharp beaks.", "flavour", "A bird-thing screeches (either: 'obnoxiously', 'loudly', 'frantically').")) (set: $elements to (a: '1', '6', '9', 'V')) (set: $variant to "Main") (if: (history:) contains (text: $level))[(goto: $variant)] (display: "talk") (replace: ?dialogue)[*You found a watermelon! It's not quite right, though. This one is larger than you are, and you doubt you could carry it all the way back upstairs.*] (replace: ?reply)[(link: "*Push onwards*")[(goto: $variant)]]}{<script>var style = "watermelon";</script> (set: $map to (a: (a: 'w','w','w','w','w','w','w'), (a: 'v','V','0','0','7','6','0','w'), (a: 'v','0','0','0','7','0','0','w'), (a: 'v','0','0','6','7','0','0','w'), (a: 'v','0','1','0','7','9','0','w'), (a: 'v','0','0','6','7','0','0','w'), (a: 'v','0','0','0','7','0','0','w'), (a: 'v','V','0','0','7','6','0','w'), (a: 'w','w','w','w','w','w','w'))) (set: $location to (a: 7,5)) (set: $orientation to (a: (a: -1, 0), (a: 0,-1), (a: 1,0), (a: 0,1))) (set: $level to 28) (set: $room to $defaultRoom + (dm: "name", "watermelon fields", "text", "The air is thick with the heady scent of watermelons.", "flavour", "You are tumescent with hungers. You are gravid with craving.")) (set: $elements to (a: '1', '6', '9', 'V')) (set: $variant to "Main") (if: (history:) contains (text: $level))[(goto: $variant)] (display: "talk") (replace: ?dialogue)[*You found a watermelon! It's not quite right, though. This one is twitching and lolling about on the grass. If used for the ceremony, it might fall from the pedestal before a single blow of the cudgel can connect with its flesh.*] (replace: ?reply)[(link: "*Push onwards*")[(goto: $variant)]]}{<script>var style = "watermelon";</script> (set: $map to (a: (a: 'w','v','v','v','v','v','v','v'), (a: 'w','0','0','0','0','0','0','0','w'), (a: 'w','0','9','0','0','0','0','0','w'), (a: 'w','0','0','0','6','0','0','0','w'), (a: 'w','7','7','7','7','7','4','7','w'), (a: 'w','0','6','0','0','0','0','0','w'), (a: 'w','0','0','0','0','0','1','0','w'), (a: 'w','0','0','0','0','0','0','0','w'), (a: 'w','w','w','w','w','w','w','w'))) (set: $location to (a: 7,3)) (set: $orientation to (a: (a: 0,1), (a: -1, 0), (a: 0,-1), (a: 1,0))) (set: $level to 29) (set: $room to $defaultRoom + (dm: "name", "watermelon fields", "text", "The air is thick with the heady scent of watermelons.", "flavour", "You experience a fleeting urge to lay yourself on the ground and gnaw through a watermelon's shell and consume and consume until the flesh falls from your bones and the plants, in their turn, begin to consume you.")) (set: $elements to (a: '1', '7', '4', '6', '9')) (set: $variant to "Main") (if: (history:) contains (text: $level))[(goto: $variant)] (display: "talk") (replace: ?dialogue)[*You found a watermelon! It's not quite right, though. This one bleeds real blood, which might be unsettling for any cultists partaking in tonight's ceremony.*] (replace: ?reply)[(link: "*Push onwards*")[(goto: $variant)]]}{<script>var style = "watermelon";</script> (set: $map to (a: (a: 'w','w','w','w','w','w'), (a: 'w','0','0','0','0','0','w'), (a: 'w','0','1','0','9','0','w'), (a: 'w','0','0','0','0','0','w'), (a: 'w','v','v','v','v','v'))) (set: $location to (a: 4,3)) (set: $orientation to (a: (a: 1,0), (a: 0,1), (a: -1, 0), (a: 0,-1))) (set: $level to 30) (set: $room to $defaultRoom + (dm: "name", "most pungent part of the watermelon fields", "text", "Birds screech, stomachs gurgle, the scent of watermelon continues its relentless colonisation of your nostrils. You no longer know where you are. Frankly, you barely remember who you are, and you're no longer sure if you've ever been anywhere else.", "flavour", "All is as it ever was, and all is as it ever shall be.")) (set: $elements to (a: '1', '9')) (set: $variant to "Main") (if: (history:) contains (text: $level))[(goto: $variant)] (display: "talk") (replace: ?dialogue)[''Melonie, Keeper of Watermelons:'' I've been waiting for you a long time... Jared.] (replace: ?reply)[[[How did you know my name?|30B]] [[My name isn't Jared.|30A]]]}(display: "talk") (replace: ?dialogue)[''Melonie, Keeper of Watermelons:'' We can talk more soon. You have one more puzzle to complete.] (replace: ?reply)[(link: "Very well.")[(goto: $variant)]](display: "talk") (replace: ?dialogue)[''Melonie, Keeper of Watermelons:'' I know you better than you know yourself, and yes. Your name is Jared.] (replace: ?reply)[[[How did you know my name?|30B]]]<script>A.stopAll()</script><script>var style = "watermelon";</script>(display: "talk") (replace: ?img)[<img src="melonie.png">] (replace: ?dialogue)[''Melonie, Keeper of the Watermelons: ''So. You have your watermelon.] (replace: ?reply)[[[I do.|31A]]]<script>var style = "dark";</script>(display: "audio")(display: "talk") (replace: ?img)[<img src="fungusKeeper.png">] (replace: ?dialogue)[''Fungus farmer: ''I see you found your watermelon! That's wonderful!] (replace: ?reply)[[[Thank you, Fungus Farmer!|33A]]](display: "talk") (replace: ?img)[<img src="melonie.png">] (replace: ?dialogue)[''Melonie, Keeper of the Watermelons: ''And you are ready to take it upstairs?] (replace: ?reply)[[[I am.|31B]]](display: "talk") (replace: ?img)[<img src="melonie2.png">] (replace: ?dialogue)[''Melonie, Keeper of the Watermelons? ''You should stay here. With me. In the darkness. We could revel in song and dissolution. You could shield yourself forever from our swollen sun.] (replace: ?reply)[[[I can't. I made a promise to retrieve a watermelon.|31C]] [[That does sound alluring...|31D]]](display: "talk") (replace: ?img)[<img src="melonie3.png">] (replace: ?dialogue)[''Melonie? Keeper of the Watermelons? ''The watermelon doesn't matter. The watermelon is a symbol. The ceremony is a symbol. The cult is a sheen of oil on the surface of the ocean, ignorant of the currents dispersing it from below. I am offering you something *real*.] (replace: ?reply)[[[You don't sound like the real Melonie, keeper of the watermelons...|31E]]](display: "talk") (replace: ?img)[<img src="melonie3.png">] (replace: ?dialogue)[''Melonie? Keeper of the Watermelons?'' So leave the cult. Stay with me. The cult is a sheen of oil on the surface of the ocean, ignorant of the currents dispersing it from below. I am offering you something more. I am offering you something real.] (replace: ?reply)[[[You don't sound like the real Melonie, keeper of the watermelons...|31E]]](display: "talk") (replace: ?img)[<img src="cultistFish2.png">] (replace: ?dialogue)[''????? ''There is plenty of time to come back. I will wait for you.] (replace: ?reply)[(link: "*Continue*")[<script>window.localStorage.setItem('level', 33);</script>(set: $level to 33)(goto: "33")]](display: "talk") (replace: ?img)[<img src="melonieFish.png">] (replace: ?dialogue)[''????? ''You should not have left Melonie in the darkness. She is not Melonie anymore. She seethes with something you can barely comprehend.] (replace: ?reply)[[[I'm going to be honest. You're not selling me on staying with you.|31F1]] [[I too want to seethe with something I can barely comprehend!|31F2]]](display: "talk") (replace: ?img)[<img src="cultistFish.png">] (replace: ?dialogue)[''????? ''It doesn't matter. You can't escape my influence, above or below the ground. But I won't force you to remain down here. You are free to go.] (replace: ?reply)[[[*Stay*|32]] [[*Leave*|31H]]](display: "talk") (replace: ?img)[<img src="cultistFish.png">] (replace: ?dialogue)[''????? ''So stay.] (replace: ?reply)[[[*Stay*|32]] [[*Leave*|31H]]]{<script>var style = "watermelon";</script> <script>window.localStorage.setItem('level', 32);</script> <script> $(".card").addClass(style); </script> }<div class = "card cardLong"><div class = "speaker"><img src="cultistFish2.png"></div><div class = "dialogue">|dialogue>[*You have decided to stay with the waterlogged cultist. The birds squabble, the vines grow, and by degrees the world above begins to fade. But there is plenty of light left in your eyes.*]</div></div>(display: "talk") (replace: ?img)[<img src="fungusKeeper.png">] (replace: ?dialogue)[''Fungus farmer: ''Enjoy tonight's ceremony!] (replace: ?reply)[[[I will!|33B]] [[Enjoy your fungus-keeping duties!|33B]]]<script>var style = "mines";</script>(display: "talk") (replace: ?img)[<img src="block.png">] (replace: ?dialogue)[''Sentient Push-Block:'' Hi! I'm the sentient push-block you met earlier!] (replace: ?reply)[[[Indeed you are! And that's great!|33C]]](display: "talk") (replace: ?img)[<img src="block.png">] (replace: ?dialogue)[''Sentient Push-Block:'' All the best for your future travels, sentient human!] (replace: ?reply)[[[All the best for yours, sentient push-block!|33D]]]<script>var style = "catacombs";</script>(display: "talk") (replace: ?img)[<img src="catWhite.png">] (replace: ?dialogue)[''White Cat:'' Hello again. I see you survived.] (replace: ?reply)[[[I did! And I feel great!|33E1]] [[I did! And I feel a little uncomfortable about the things I witnessed!|33E2]]](display: "talk") (replace: ?img)[<img src="catWhite.png">] (replace: ?dialogue)[''White Cat:'' I am very happy for you. Now if you'll excuse me, I recently spotted a rat wearing an adorable little crown, and I want to hunt, kill, and eat it.] (replace: ?reply)[[[All the best!|33F]] [[Please don't do that.|33E3]]](display: "talk") (replace: ?img)[<img src="catWhite.png">] (replace: ?dialogue)[''White Cat:'' I am sure that, with time, you will emerge from this experience all the stronger. Or at least interestingly different. Now if you'll excuse me, I recently spotted a rat wearing an adorable little crown, and I want to hunt, kill, and eat it.] (replace: ?reply)[[[All the best!|33F]] [[Please don't do that.|33E3]]]<script>var style = "cellar";</script>(display: "talk") (replace: ?img)[<img src="sommelier.png">] (replace: ?dialogue)[*The sommelier is engrossed in his work.*] (replace: ?reply)[[[Hi, Sommelier! It's good to see you!|33G]]]<script>var style = "catacombs";</script>(display: "talk") (replace: ?img)[<img src="catWhite.png">] (replace: ?dialogue)[''White Cat:'' Well. Okay. For you. Since you so improbably survived.] (replace: ?reply)[[[Thanks, White Cat!|33F]]](display: "talk") (replace: ?img)[<img src="sommelier.png">] (replace: ?dialogue)[''Sommelier: ''Hmph.] (replace: ?reply)[[[Bye, Sommelier!|33H]]]<script>var style = "library";</script>(display: "talk") (replace: ?img)[<img src="cultistRed.png">] (replace: ?dialogue)[''Archivist: ''It's good to see you again. But quick - hurry upstairs. The ceremony is about to start, and the Black-Robed Cultist is waiting for you.] (replace: ?reply)[(link: "Will do.")[(set: $level to 34)(goto: "34")]]{<script>var style = "lurid";</script>(display: "talk") (replace: ?dialogue)[''Black-robed Cultist: ''You there! Arrange the cudgels from smallest to largest! You there! Collect the readings from the archives. You there! Unravel four medium-sized gongs into triangles, assemble the four medium-sized triangles into one extra-large triangle, and then re-ravel the triangle into an extra-large gong!] (replace: ?reply)[[[I'm back.|34A]]]}(display: "talk") (replace: ?dialogue)[''Black-robed Cultist: ''You! You're just in time. Did you remember to reset the puzzles behind you?] (replace: ?reply)[[[...no|34B]] [[...maybe?|34B]]](display: "talk") (replace: ?dialogue)[''Black-robed Cultist: ''No matter. I'll send someone else down later.] (replace: ?reply)[[[Great! Thank you!|34C]]](display: "talk") (replace: ?dialogue)[''Black-robed Cultist: ''I would thank you for your help, but first I need to sound the shame-gong for each unit of shame you've acquired.] (replace: ?reply)[[[Um.|34C1]]](display: "talk") (replace: ?dialogue)[''Black-robed cultist:'' Now. Thank you for your help. I have to go carry the watermelon to the pedestal, but before I do, I think I owe you some answers. That is, if you have any questions you want to ask.] (replace: ?reply)[(link: "Why do we meet to smash watermelons?")[(goto: "Why do we meet to smash watermelons?")] [[Who, or what, is the waterlogged cultist?]] [[Why are the watermelons so difficult to retrieve?]] [[No. I'm not confused by this situation at all.|I'm no longer confused by this situation at all.]]][[Why do we meet to smash watermelons?]] [[Who, or what, is the waterlogged cultist?]] [[Why are the watermelons so difficult to retrieve?]] [[I'm no longer confused by this situation at all.]](display: "talk") (replace: ?dialogue)[''Black-robed cultist:'' I can't explain it. Not fully. I'm not sure if there is a full explanation. It is an untraditional tradition, and it is one that is all our own. It is a source of meaning, and togetherness, and watermelon giblets. Do you have any other questions?](replace: ?reply)[(link: "Who, or what, is the waterlogged cultist?")[(goto: "Who, or what, is the waterlogged cultist?")] [[Why are the watermelons so difficult to retrieve?]] [[No. I'm not confused by this situation at all.|I'm no longer confused by this situation at all.]]](display: "talk") (replace: ?dialogue)[''Black-robed cultist:'' An allegory and a threat and a burden. But here, in this place, on this night, it won't bother you. Do you have any other questions?] (replace: ?reply)[(link: "Why do we meet to smash watermelons?")[(goto: "Why do we meet to smash watermelons?")] [[Why are the watermelons so difficult to retrieve?]] [[No. I'm not confused by this situation at all.|I'm no longer confused by this situation at all.]]](display: "talk") (replace: ?dialogue)[''Black-robed cultist:'' To defer watermelon-thieves. Do you have any other questions?] (replace: ?reply)[(link: "Why do we meet to smash watermelons?")[(goto: "Why do we meet to smash watermelons?")] [[Who, or what, is the waterlogged cultist?]] [[I'm no longer confused by this situation at all.]]](display: "talk") (replace: ?dialogue)[''Black-robed Cultist: ''You have done a good thing today. Now go - enjoy the ceremony. And thank you again for your work.] (replace: ?reply)[(link: "*This is the end, but it is also a beginning. All things are as they should be. You have done well.*")[(goto: "Intro")]](display: "talk") (replace: ?dialogue)[(if: $shame < 1)[... wait. You've acquired 0 units of shame. Well done.](else:)[''(for: each _unit, ...(repeated: $shame, 1))[(print: "Shame. ")]''(replace: ?img)[<img src="gong.png">]]] (replace: ?reply)[[[...okay?|34D]]](display: "Main")(replace: ?pivot)[(link-repeat: "randomly")[(set: $orientation to (rotated: (either: 1, 2, 3), ...$orientation))(set: _orientation to $orientation)(replace: ?display)[(display: "look")](replace: ?observe)[(display: "observe")]]]\ (replace: ?glance)[(link-repeat: "to one side")[(set: _orientation to (rotated: (either: 1, -1), ...$orientation))(replace: ?observe)[To one side, you see: (display: "look")]]](set: $tempDisplay to (a: "The wall looked unusual because it is actually a door. You could (link-repeat: 'step through.')[(replace: ?observe)[''Warning:'' If you take this shortcut, you will skip a significant chunk of the game. (link: '*Proceed anyway.*')[(goto: 'levelSkip')]]]"))(goto: $variant){ <script>A.stopAll()</script> <script>window.localStorage.setItem('level', +localStorage.getItem('level') + 7);</script> (set: $level to it + 7) (display: "talk") (replace: ?img)[<img src="door.png">] (replace: ?dialogue)[*The door opens to a steep staircase. It spirals down into darkness.*] (replace: ?reply)[(link: "*Continue, fearlessly*")[(set: $tempDisplay to "fearlessly")(goto: "levelSkip2")] (link: "*Continue, fearfully*")[(set: $tempDisplay to "fearfully")(goto: "levelSkip2")]]}(display: "talk") (replace: ?img)[<img src="door.png">] (replace: ?dialogue)[*The floor evens out. You've arrived, (print: $tempDisplay), in Some Place. There's a door in front of you.*] (replace: ?reply)[(link: "*Open it*")[(goto: (text: $level))]] (set: $tempDisplay to false)