<<include "Verb">>
<<if $noun == 1>> /* attack tree with bloody axe */
<<W>>Striking the tree seems to have brought it to life. I suppose it was really an Ent in disguise. The axe is gone, the Ent is gone, and we’re left with... leaves.<</W>>
<<R>>At least we got rid of that scary tree and that cursed axe in one fell swoop.<</R>>
<<W>>True. I should consider the positive side of things.<</W>>
<<elseif $noun == 3>> /* attack thief with rusty mailbox */
<<W>>I guess the mailbox //was// mightier than the sword. Too bad it disintegrated. On the bright side, we've upgraded from junk mail to skeleton keys.<</W>>
<<R>>I'm slightly worried about what we might find in the next room. That thief didn't look like a scaredy-cat to me.<</R>>
<<W>>I think we might finally get to meet Zrok in person.<</W>>
<<elseif $noun == 4>> /* attack cyclops with sceptre */
<<W>>A bold strategy. I’d say he saw it coming, though clearly not for long.<</W>>
<<R>>And thus, we can finally get our hands on all that fine treasure!<</R>>
<<W>>This was rather easy. I'm starting to wonder why.<</W>>
<<R>>Don't worry! Not all games are supposed to be hard. This felt more like a walk in the park.<</R>>
<<W>>And that's just the point. Something feels off...<</W>>
<</if>>
<<include "Commands">><<include "Verb">>
<<switch $noun>>
<<case 8>> /* front door */
<<if $objects[7].examinable == 1>> /* we haven't visited the entrance hall yet */
<<W>>Are you doing this on purpose? Aren't you curious about what lies beyond?<</W>>
<<elseif $objects[0].parent == 7>> /* we are in the entrance hall */
<<W>>What'd you close that front door for? Afraid something's going to escape from us?<</W>>
<<else>>
<<W>>What'd you close that front door for? Afraid something's going to come out?<</W>>
<</if>>
<<case 12>> /* dirty window */
<<if $objects[13].examinable == 1>> /* we haven't visited the kitchen yet */
<<W>>Are you doing this on purpose? Aren't you curious about what lies beyond?<</W>>
<<elseif $objects[0].parent == 13>> /* we are in the kitchen */
<<W>>What'd you close that dirty window for? Afraid something's going to escape from us?<</W>>
<<else>>
<<W>>What'd you close that dirty window for? Afraid something's going to come out?<</W>>
<</if>>
<<case 15>> /* dusty trapdoor */
<<if $objects[16].examinable == 1>> /* we haven't visited the cellar yet */
<<W>>Are you doing this on purpose? Aren't you curious about what lies beneath?<</W>>
<<elseif $objects[0].parent == 16>> /* we are in the cellar */
<<W>>What'd you close that dusty trapdoor for? Afraid something's going to escape from us?<</W>>
<<else>>
<<W>>What'd you close that dusty trapdoor for? Afraid something's going to come out?<</W>>
<</if>>
<<case 29>> /* worn trophy case */
<<if $objects[0].parent == 23 and $objects[34].parent == 0>> /* in cyclops room holding the torn leaflet */
<<W>>Good idea. Closing that trophy case would stop us from accidentally dropping that torn leaflet in there.<</W>>
<<elseif $objects[0].parent == 14 and $objects[31].parent == 0>> /* in living room holding the smoking torch */
<<W>>Good idea. Closing that trophy case would stop us from accidentally dropping that smoking torch in there.<</W>>
<</if>>
<<case 33>> /* smelly sack */
<<if $objects[0].parent == 23 and $objects[34].parent == 0>> /* in cyclops room holding the torn leaflet */
<<W>>Good idea. Closing that smelly sack would stop us from accidentally dropping that torn leaflet in there.<</W>>
<</if>>
<</switch>>
<<include "Commands">><<set $walkthrough = setup.CreateWalkthrough()>>
<<set _c = 0>>
<<set _r = setup.GetVerbRank(0)>>
<<if _r >= 1 && _r <= 4>>
<<set _c = _c + 1>>
<<B "" "__L__ook" "l,shift + l" "Look">><<run setup.finishEvent()>><<run setup.SelectVerb(0)>><<run setup.SaveState()>><</B>>
<</if>>
<<set _r = setup.GetVerbRank(1)>>
<<if _r >= 1 && _r <= 4>>
<<set _c = _c + 1>>
<<B "" "__I__nventory" "i,shift + i" "Inventory">><<run setup.finishEvent()>><<run setup.SelectVerb(1)>><<run setup.SaveState()>><</B>>
<</if>>
<<set _r = setup.GetVerbRank(2)>>
<<if _r >= 1 && _r <= 4>>
<<set _c = _c + 1>>
<<B "" "E__x__amine" "x,shift + x" "Examine">><<run setup.finishEvent()>><<run setup.SelectVerb(2)>><<run setup.SaveState()>><</B>>
<</if>>
<<set _r = setup.GetVerbRank(3)>>
<<if _r >= 1 && _r <= 4>>
<<set _c = _c + 1>>
<<B "" "__T__ake" "t,shift + t" "Take">><<run setup.finishEvent()>><<run setup.SelectVerb(3)>><<run setup.SaveState()>><</B>>
<</if>>
<<set _r = setup.GetVerbRank(4)>>
<<if _r >= 1 && _r <= 4>>
<<set _c = _c + 1>>
<<B "" "__D__rop" "d,shift + d" "Drop">><<run setup.finishEvent()>><<run setup.SelectVerb(4)>><<run setup.SaveState()>><</B>>
<</if>>
<<set _r = setup.GetVerbRank(5)>>
<<if _r >= 1 && _r <= 4>>
<<set _c = _c + 1>>
<<B "" "__O__pen" "o,shift + o" "Open">><<run setup.finishEvent()>><<run setup.SelectVerb(5)>><<run setup.SaveState()>><</B>>
<</if>>
<<set _r = setup.GetVerbRank(6)>>
<<if _r >= 1 && _r <= 4>>
<<set _c = _c + 1>>
<<B "" "__C__lose" "c,shift + c" "Close">><<run setup.finishEvent()>><<run setup.SelectVerb(6)>><<run setup.SaveState()>><</B>>
<</if>>
<<set _r = setup.GetVerbRank(7)>>
<<if _r >= 1 && _r <= 4>>
<<set _c = _c + 1>>
<<B "" "__E__at" "e,shift + e" "Eat">><<run setup.finishEvent()>><<run setup.SelectVerb(7)>><<run setup.SaveState()>><</B>>
<</if>>
<<set _r = setup.GetVerbRank(8)>>
<<if _r >= 1 && _r <= 4>>
<<set _c = _c + 1>>
<<B "" "__F__eed" "f,shift + f" "Feed">><<run setup.finishEvent()>><<run setup.SelectVerb(8)>><<run setup.SaveState()>><</B>>
<</if>>
<<set _r = setup.GetVerbRank(9)>>
<<if _r >= 1 && _r <= 4>>
<<set _c = _c + 1>>
<<B "" "__A__ttack" "a,shift + a" "Attack">><<run setup.finishEvent()>><<run setup.SelectVerb(9)>><<run setup.SaveState()>><</B>>
<</if>>
<<set _r = setup.GetVerbRank(10)>>
<<if _r >= 1 && _r <= 4>>
<<set _c = _c + 1>>
<<B "" "__U__nlock" "u,shift + u" "Unlock">><<run setup.finishEvent()>><<run setup.SelectVerb(10)>><<run setup.SaveState()>><</B>>
<</if>>
<<set _r = setup.GetVerbRank(11)>>
<<if _r >= 1 && _r <= 4>>
<<set _c = _c + 1>>
<<B "" "__G__o" "g,shift + g" "Go">><<run setup.finishEvent()>><<run setup.SelectVerb(11)>><<run setup.SaveState()>><</B>>
<</if>>
<<for _c < 4>>
<span class="button-wrapper"><button type="button" disabled> </button></span>
<<set _c = _c + 1>>
<</for>>
<<B "" "__M__enu" "m,shift + m">><<run Engine.play('Menu',true)>><</B>>
<<C 1 3>>
<<include "Verb">>
<<set _region = setup.GetRegion()>>
<<set _maze = setup.CountMazeLeaves()>>
<<set _leaf = setup.FindLeaf()>>
<<set _held = setup.CountLeaves(0)>>
<<set _room = setup.CountLeaves(1)>>
<<if $noun == 31>> /* dropping the smoking torch */
<<if $objects[0].parent == 14>> /* we are in the living room */
<<if $item == 14>> /* we drop it in the living room */
<<W>>Burn, carpet, burn!<</W>>
<<R>>And thus, the dusty trapdoor is revealed to us.<</R>>
<<W>>And now we've got ourselves a //flaming// torch! Much better for exploring the dark.<</W>>
<<else>> /* we drop it into a container */
<<W>>That's not going to work. We wanted to drop it on the rug!<</W>>
<<R>>Hmm. Seems like the game prefers to drop items into containers.<</R>>
<<W>>Just close <<=setup.GetName($item)>> and try again.<</W>>
<</if>>
<<else>>
<<W>>We're supposed to drop that smoking torch in the living room, remember?<</W>>
<<R>>Must have slipped my mind. We wanted to try setting the carpet on fire, right?<</R>>
<<W>>Exactly! Let's pick it up again and head back to the living room.<</W>>
<</if>>
<<elseif $noun == 34 and setup.IsSeen(4)>> /* dropping the torn leaflet and we have seen the cyclops */
<<if $objects[0].parent == 23>> /* we are in the cyclops room */
<<if $item == 23>> /* we drop it in the cyclops room */
<<W>>Here you go! One ticket for you, one treasure for us.<</W>>
<<R>>Looks like this cyclops isn't as dumb as we thought.<</R>>
<<W>>Well, at least he's in attack range now. Now we just need a suitable weapon.<</W>>
<<else>> /* we drop it into a container */
<<W>>That's not going to work. We wanted to drop it on the floor!<</W>>
<<R>>Hmm. Seems like the game prefers to drop items into containers.<</R>>
<<W>>Just close <<=setup.GetName($item)>> and try again.<</W>>
<</if>>
<<else>>
<<W>>We're supposed to drop that torn leaflet in the cyclops room, remember?<</W>>
<<R>>Must have slipped my mind. We wanted to entice the cyclops to give us some of that treasure, right?<</R>>
<<W>>Exactly! Let's pick it up again and head back to the cyclops room.<</W>>
<</if>>
<<elseif $noun == 24 and _region > 0>> /* dropping the flaming torch in a dark room */
<<W>>Do keep in mind that we can't move around in the darkness without our trusty torch.<</W>>
<<elseif $noun == 28>> /* dropping a leaf */
<<if _region != 2>> /* outside the maze */
<<W>>What's the point of dropping it here?<</W>>
<<R>>What's wrong with dropping a leaf?<</R>>
<<W>>Well, we don't have that many leaves, and I suspect we need to use all of them to map out the maze.<</W>>
<<elseif _held == 0>>
<<R>>That's it, I'm out of leaves.<</R>>
<<if _maze < 0>>
<<W>>Looks like this maze room isn't unique. We'll need to change the number of leaves before we can move around again.<</W>>
<<else>>
<<W>>Let's hope we've reached the end of the maze, then.<</W>>
<</if>>
<<else>>
<<W>>Keep on dropping leaves until you think we have dropped enough.<</W>>
<<if _maze < 0>>
<<R>>Looks like we're not allowed to move.<</R>>
<<W>>This maze room isn't unique. We'll need to change the number of leaves before we can move around again.<</W>>
<</if>>
<</if>>
<<elseif $objects[0].parent == 14 and $objects[31].parent == 0>> /* dropping something while in the living room and holding the smoking torch */
<<W>>Keep on dropping! I guess we need to clear out our inventory until we hit the smoking torch.<</W>>
<<elseif $objects[0].parent == 23 and $objects[34].parent == 0>> /* dropping something while in the cyclops room and holding the torn leaflet */
<<W>>Keep on dropping! I guess we need to clear out our inventory until we hit the torn leaflet.<</W>>
<</if>>
<<include "Commands">><<include "Verb">>
<<R>>I feel like Superman! Look at my bulging muscles!<</R>>
<<W>>Yeah, you've got the bat power, all right. Makes me wonder what you can do with it.<</W>>
<<R>>I can probably uproot trees or pull locked doors right off their hinges.<</R>>
<<W>>Somehow, I doubt it'll be //that// easy. But you can probably take some things you couldn't before.<</W>>
<<if setup.IsSeen(3)>> /* we have seen the thief */
<<R>>A makeshift weapon to deal with that thief would come in very handy.<</R>>
<</if>>
<<include "Commands">>
<<include "Verb">>
<<switch $noun>>
<<case 1>> /* A large tree */
<<if $objects[26].parent == 0>> /* we have the bloody axe */
<<W>>You’ve got the bloody axe... and we’ve got a tree that looks like it eats souls.<</W>>
<<R>>if something is watching us, maybe it’s time to stare back.<</R>>
<<W>>Your move, lumberjack.<</W>>
<<elseif setup.IsSeen(26)>> /* we have seen the bloody axe */
<<W>>Remember that bloody axe the troll was carrying?<</W>>
<<R>>Yeah... I’m starting to think that wasn’t just for show.<</R>>
<<W>>This tree gives me bad vibes. Maybe it needs more than pruning.<</W>>
<<else>>
<<W>>Great. A creepy, possibly sentient tree. Just what we needed.<</W>>
<<W>>You thinking what I’m thinking? We shouldn't touch it.<</W>>
<</if>>
<<case 2>> /* A troll */
<<if $objects[35].parent == 0>> /* we have the lunch */
<<W>>Maybe offer it that moldy lunch?<</W>>
<<elseif setup.IsSeen(35)>> /* we have seen the lunch */
<<W>>Maybe we should fetch that moldy lunch and offer it?<</W>>
<<else>>
<<W>>An extremely hungry troll. Let’s hope it doesn’t like people.<</W>>
<<R>>I’d rather look for something to feed it.<</R>>
<</if>>
<<case 3>> /* A thief */
<<if $objects[32].parent == 0>> /* we have the rusty mailbox */
<<W>>I'd say we wipe that smirk off his face with the rusty mailbox. Truly, the weapon of legends!<</W>>
<<else>>
<<W>>We need some kind of weapon to wipe that smirk off his face.<</W>>
<<R>>Anything come to mind?<</R>>
<<if $objects[32].takable > 1>> /* we pulled the rusty mailbox off the ground */
<<W>>Maybe we could whack him with that rusty mailbox you pulled out of the ground.<</W>>
<<elseif $objects[32].takable == 1>> /* we did not yet pull the rusty mailbox off the ground, but we can */
<<W>>Not yet, but your bat madness might just empower you to find something suitable.<</W>>
<<else>> /* we did not consume the bat dropping yet */
<<W>>Not yet, but maybe there's some kind of power-enhancing snack nearby that might help.<</W>>
<</if>>
<</if>>
<<case 4>> /* A cyclops */
<<if $objects[34].parent >= 0>> /* need to drop the leaflet first */
<<W>>That cyclops expects us to give him some kind of treasure ticket.<</W>>
<<if $objects[34].parent == 0>> /* we have the ticket */
<<R>>Perhaps this torn leaflet will do?<</R>>
<<W>>Wouldn't hurt to try that.<</W>>
<<elseif setup.IsSeen(34)>> /* we have seen the ticket */
<<R>>Perhaps we can give him what he wants?<</R>>
<<W>>What do you mean? We don't have a treasure ticket.<</W>>
<<R>>We can try to give him that torn leaflet.<</R>>
<<W>>Wouldn't hurt to try that.<</W>>
<<else>> /* we never saw the ticket */
<<R>>I don't think we've seen anything like that yet.<</R>>
<<W>>Well, we never did check out that rusty mailbox, did we?<</W>>
<</if>>
<<elseif $objects[30].parent == 0>> /* holding the sceptre */
<<W>>You’re holding a sharp, pointy sceptre. He’s got one giant eye. Need I say more?<</W>>
<<elseif setup.IsSeen(30)>> /* we have seen the sceptre */
<<W>>Remember that sharp sceptre we saw earlier?<</W>>
<<R>>Yeah... I’m starting to think that wasn’t just for show.<</R>>
<<W>>Maybe we should go and fetch it.<</W>>
<<else>> /* we have not seen the sceptre yet */
<<W>>If we’re dealing with a cyclops... there’s gotta be something sharp and pointy around here that we can use.<</W>>
<</if>>
<<case 5>> /* S white house */
<<W>>All it needs is a fresh coat of paint and a demolition crew.<</W>>
<<case 6>> /* S faded rug */
<<W>>So, we've got ourselves an immovable rug with something important underneath. I applaud the puzzle creator!<</W>>
<<R>>The manual doesn't list MOVE as an available verb anyway, so I guess we'll need to employ a different strategy.<</R>>
<<W>>What kind of strategy do you have in mind to deal with this obstacle?<</W>>
<<if $objects[29].openable == 1>> /* we never saw the torch */
<<R>>It looks pretty flammable. Maybe we can find something to set it on fire with.<</R>>
<<elseif $objects[31].examinable == 1>> /* we never examined the torch */
<<R>>I wonder what would happen if we dropped that smoking torch on it.<</R>>
<<else>>
<<R>>I wonder what would happen if we dropped our glorified incense stick on it.<</R>>
<</if>>
<<case 8>> /* D front door */
<<if $objects[8].openable == 0>> /* locked */
<<if $objects[37].parent == 0>> /* holding the skeleton key */
<<W>>Unlock it with that skeleton key!<</W>>
<<elseif setup.IsSeen(37)>> /* we have seen the key */
<<W>>Now that skeleton key might come in handy.<</W>>
<<else>>
<<W>>Locked... I expected it to be boarded up.<</W>>
<<R>>So? What's the difference? We can't open it either way.<</R>>
<<W>>Well, if it's just locked, there might be a key somewhere to unlock it.<</W>>
<</if>>
<<elseif $objects[8].openable == 1>> /* closed and never opened before */
<<W>>Let’s open it up and have a look at what’s beyond.<</W>>
<<elseif ($objects[8].openable & 1) == 0>> /* open */
<<if $objects[7].examinable == 1>> /* never visited Entrance Hall before */
<<W>>The open front door beckons you, O great adventurer!<</W>>
<<elseif $objects[0].parent == 7>> /* player in Entrance Hall */
<<W>>Well, we can go back out if you insist.<</W>>
<<else>>
<<W>>Well, we can go back in if you insist.<</W>>
<</if>>
<<else>> /* closed */
<<W>>Closed. Well, that was unexpected.<</W>>
<<R>>Don’t goof around. You know full well I closed it.<</R>>
<</if>>
<<case 12>> /* D dirty window */
<<if $objects[12].openable == 1>> /* closed and never opened before */
<<W>>Let’s open it up and have a look at what’s beyond.<</W>>
<<elseif ($objects[12].openable & 1) == 0>> /* open */
<<if $objects[13].examinable == 1>> /* never visited Kitchen before */
<<W>>The open dirty window beckons you, O great adventurer!<</W>>
<<elseif $objects[0].parent == 13>> /* player in Kitchen */
<<W>>Well, we can go back out if you insist.<</W>>
<<else>>
<<W>>Well, we can go back in if you insist.<</W>>
<</if>>
<<else>> /* closed */
<<W>>Closed. Well, that was unexpected.<</W>>
<<R>>Don’t goof around. You know full well I closed it.<</R>>
<</if>>
<<case 15>> /* D dusty trapdoor */
<<if $objects[15].openable == 1>> /* never opened before */
<<W>>Let’s open it up and have a look at what’s beyond.<</W>>
<<elseif ($objects[15].openable & 1) == 0>> /* open */
<<if $objects[16].examinable == 1>> /* never visited the cellar */
<<W>>The open dusty trapdoor beckons you, O great adventurer!<</W>>
<<elseif $objects[0].parent == 16>>
<<W>>Well, we can go back up if you insist.<</W>>
<<else>>
<<W>>Well, we can go back down if you insist.<</W>>
<</if>>
<<else>> /* closed */
<<W>>Closed. Well, that was unexpected.<</W>>
<<R>>Don’t goof around. You know full well I closed it.<</R>>
<</if>>
<<case 24>> /* T flaming torch */
<<W>>Bright and steady. Just what we need to brighten up our underground adventures.<</W>>
<<case 25>> /* T treasure chest */
<<if $objects[4].parent > 0>> /* cyclops present */
<<W>>Oh good, treasure! Let’s hope that cyclops doesn’t mind us taking some.<</W>>
<<else>> /* just us */
<<W>>Oh good, treasure! Let's grab it before something else wanders by.<</W>>
<</if>>
<<case 26>> /* T bloody axe */
<<W>>Magical anti-drop runes? Nice. Gotta love blood-soaked axes with grip enhancements.<</W>>
<<if $objects[2].parent < 0>> /* troll is gone */
<<R>>That troll was only too eager to get rid of it, it seems. I can't blame it.<</R>>
<<if $objects[0].parent == 10>> /* at forest path */
<<W>>You’ve got the bloody axe... and we’ve got a tree that looks like it eats souls.<</W>>
<<R>>if something is watching us, maybe it’s time to stare back.<</R>>
<<W>>Your move, lumberjack.<</W>>
<<else>> /* somewhere else */
<<W>>Shall we put it to the test? There was this large tree...<</W>>
<</if>>
<<else>> /* carried by the troll */
<<R>>That axe might be useful to deal with that large tree.<</R>>
<</if>>
<<case 27>> /* T pile of leaves */
<<W>>I knew it! You can't forget a magical number like that.<</W>>
<<R>>Wow, that’s a lot of leaves.<</R>>
<<W>>Come to think of it, that pile might be useful.<</W>>
<<R>>In what way?<</R>>
<<W>>Well, there's this maze we need to map...<</W>>
<<case 28>> /* T leaf */
<<W>>How interesting. A leaf. Never seen one before?<</W>>
<<case 29>> /* C worn trophy case */
<<if $objects[29].openable == 1>> /* never opened before */
<<W>>Now this is strange. I distinctly remember the trophy case being transparent in another game.<</W>>
<<R>>Maybe they’re hiding something in the trophy case?<</R>>
<<W>>Maybe indeed. We’ll need to open it to find out.<</W>>
<</if>>
<<case 30>> /* T sceptre */
<<if $objects[0].parent == 23>> /* in Cyclops Room with Zrok */
<<if $objects[30].parent == 0>> /* holding the sceptre */
<<W>>You’re holding a sharp, pointy sceptre. He’s got one giant eye. Need I say more?<</W>>
<<else>>
<<W>>That is some sharp, pointy sceptre. He’s got one giant eye. Need I say more?<</W>>
<</if>>
<<else>> /* somewhere else */
<<W>>Shall we put it to the test? There was this huge one-eyed cyclops...<</W>>
<</if>>
<<case 31>> /* T smoking torch */
<<W>>Nothing says "heroic adventure" like lugging around a glorified incense stick.<</W>>
<<if $objects[6].examinable == 1>> /* we never examined the rug */
<<R>>Now we just need to find something to rekindle its spirit.<</R>>
<<else>>
<<R>>This might be just the ticket to deal with that faded rug.<</R>>
<</if>>
<<case 32>> /* C rusty mailbox */
<<if $objects[32].takable > 1>> /* we pulled the rusty mailbox off the ground */
<<if $objects[0].parent == 22>> /* we are at the treasure room (with the thief) */
<<W>>I'd say we wipe that smirk off his face with the rusty mailbox. Truly, the weapon of legends!<</W>>
<<else>> /* we are somewhere else */
<<W>>You have the power! Now you just need to find a suitable victim for your legendary weapon.<</W>>
<</if>>
<<elseif $objects[32].takable == 1>> /* we can pull the rusty mailbox off the ground */
<<W>>That rusty mailbox looks pretty vulnerable in light of your current bat madness.<</W>>
<<elseif $objects[32].openable == 1>> /* closed and never opened before */
<<W>>I have a feeling I already know what's in that rusty mailbox.<</W>>
<<R>>How would you know? We've never played this game before!<</R>>
<<W>>Call it a hunch.<</W>>
<</if>>
<<case 33>> /* C smelly sack */
<<if $objects[33].openable == 1>> /* closed and never opened before */
<<W>>A smelly sack, huh? I bet it's full of secrets.<</W>>
<<R>>Should I open that smelly sack and take a peek?<</R>>
<<W>>You open it, you own whatever crawls out.<</W>>
<</if>>
<<case 34>> /* T torn leaflet */
<<W>>Ah, Zrok... The only game that warns you it's terrible before you play it. Bold marketing strategy.<</W>>
<<R>>Erm, Wilco, we are already playing it.<</R>>
<<W>>Minor details are beneath my notice.<</W>>
<<if setup.IsSeen(4)>> /* we have seen the cyclops */
<<R>>That reminds me... Zrok wants to see a ticket.<</R>>
<<W>>You want to pretend this leaflet is the treasure ticket? Be my guest.<</W>>
<</if>>
<<case 35>> /* T moldy lunch */
<<W>>Great. We’ve officially discovered a new lifeform. Want to poke it?<</W>>
<<if setup.IsSeen(2)>> /* we have seen the troll */
<<R>>I'd rather feed it to that hungry troll.<</R>>
<<W>>Such a pity... a new life form, and already on the brink of extinction!<</W>>
<</if>>
<<case 36>> /* T bat dropping */
<<W>>Ah, nothing like dry, crumbly bat poop to really elevate the adventure.<</W>>
<<R>>I have a distinct feeling it might be useful somehow.<</R>>
<<W>>Well, you could try eating it and see what happens.<</W>>
<<case 37>> /* T skeleton key */
<<if $objects[0].parent == 9>> /* at west of house */
<<W>>Unlock that front door with the skeleton key!<</W>>
<<else>>
<<W>>I recall that locked front door we saw right at the beginning.<</W>>
<<R>>Do you think this key might unlock it?<</R>>
<<W>>Why not? We haven't come across anything else that needs unlocking yet.<</W>>
<</if>>
<</switch>>
<<include "Commands">>
<<include "Verb">>
<<W>>Well, feeding the troll paid off. Though I’m not sure if it’s gratitude or just him wanting to get rid of that cursed axe.<</W>>
<<R>>Oh, right. You mean we can't drop the axe, can we?<</R>>
<<W>>At least now we've got something to deal with that large tree.<</W>>
<<include "Commands">><<include "Verb">>
<<set _region = setup.GetRegion()>>
<<set _maze = setup.CountMazeLeaves()>>
<<set _leaf = setup.FindLeaf()>>
<<set _held = setup.CountLeaves(0)>>
<<set _room = setup.CountLeaves(1)>>
<<set _la = $objects[18].leaves>>
<<set _lb = $objects[19].leaves>>
<<set _lc = $objects[20].leaves>>
<<set _ld = $objects[21].leaves>>
<<if $objects[$noun].examinable == 1>>
<<switch $noun>>
<<case 7>> /* Entrance Hall */
<<W>>A plain entrance hall. I'm disappointed.<</W>>
<<R>>Why the disappointment? I see the perfect weapon for our cyclops!<</R>>
<<W>>After all these years... I expected something less mundane. Ah well, we can't have everything, I guess.<</W>>
<<case 10>> /* Forest Path */
<<W>>Hey, what happened to 'North of House'? Why did we end up on the forest path?<</W>>
<<R>>Beats me. But I do see this particularly large tree. Should we climb it?<</R>>
<<W>>It has no low branches. I guess that rules out the bird's nest and that cursed egg.<</W>>
<<R>>Nothing wrong with the egg, as far as I remember.<</R>>
<<W>>Well, I never managed to open it myself. Did you?<</W>>
<<case 11>> /* Behind House */
<<W>>Okay, we got back to Behind House. And there's a window. We need to open it to gain entry.<</W>>
<<R>>I don't see any other exits. And that window looks rather dirty; I can't see through it.<</R>>
<<W>>To me, it looks like this game goes for a rather linear approach. We should be done with it in a jiffy.<</W>>
<<case 13>> /* Kitchen */
<<W>>Aah, the kitchen. No exits leading up or down, and no glass bottle with some water either. A rather minimalistic approach.<</W>>
<<R>>Just that smelly sack.<</R>>
<<W>>Oh, right. Just that smelly sack. I fear it won’t be smelling of hot peppers.<</W>>
<<case 14>> /* Living Room */
<<W>>No wooden door with strange gothic lettering? I'm disappointed.<</W>>
<<R>>Who cares? That text wasn't meaningful anyway, if I recall correctly.<</R>>
<<W>>What's worse, I'm missing some weaponry and a light source as well. How are we supposed to fight evil in the dungeons below?<</W>>
<<case 16>> /* Cellar */
<<R>>Hey, nobody’s crashing the trapdoor shut and barring it. I wonder why.<</R>>
<<W>>I guess he got distracted somehow.<</W>>
<<R>>At least our smelly sack isn't glowing with a faint blue glow.<</R>>
<<W>>Hey, don't give this author weird ideas, alright?<</W>>
<<case 17>> /* Troll Room */
<<W>>Interesting... seems like we've got a hungry troll on our hands.<</W>>
<<R>>Maybe we can feed it instead of fighting it? We haven’t found any weapons so far.<</R>>
<<W>>Or maybe we just ignore it and move on? Though I suspect it’ll still be in our way.<</W>>
<<R>>That bloody axe would definitely come in handy for dealing with that large tree. I've never been able to chop down trees in games like this.<</R>>
<<W>>That's because games like this usually don't let players rearrange the landscape. It's not Minecraft, after all.<</W>>
<<case 18>> /* Maze 0 */
<<W>>Ah, a maze of twisty little passages. I guess we’ll need to drop some of our stuff to map it out.<</W>>
<<R>>I hope the maze isn’t too large. We don’t have much to drop.<</R>>
<<W>>Too bad we don't have a pile of leaves, we could make a proper trail with those.<</W>>
<<case 19>> /* Maze 1 */
<<W>>Well, at least our strategy of dropping leaves is working. Now we just need to make sure we drop different numbers in different maze rooms.<</W>>
<<if _maze + _held < 10>><<R>>We might have to go back and gather the leaves we dropped elsewhere then.<</R>><<W>>I did tell you not to waste any leaves, didn't I?<</W>><</if>>
<<if _la > 4>><<R>>I hope we were not overdoing it in that first maze room.<</R>><<W>>Only one way to find out.<</W>><</if>>
<<case 20>> /* Maze 2 */
<<W>>Moving right on. A few leaves here should do the trick.<</W>>
<<if _maze + _held < 10>><<R>>We might have to go back and gather the leaves we dropped elsewhere then.<</R>><<W>>I did tell you not to waste any leaves, didn't I?<</W>><</if>>
<<if _lb > 4>><<R>>I hope we were not overdoing it in that second maze room.<</R>><<W>>Only one way to find out.<</W>><</if>>
<<case 21>> /* Maze 3 */
<<W>>Hmm, we still haven't reached the end of the maze. Do we have any leaves left?<</W>>
<<if _held == 0>>
<<if _maze + _held < 10>>
<<R>>Nope, I'm all out of leaves. We'll have to go back and gather the leaves we dropped elsewhere.<</R>>
<<W>>Told you so!<</W>>
<<else>>
<<R>>Nope, I'm all out of leaves. I fear we've dropped too many leaves in the other maze rooms.<</R>>
<<W>>Then I guess all we can do is go back and get some.<</W>>
<</if>>
<<else>>
<<if _held == 1>>
<<R>>Just the one.<</R>>
<<else>>
<<R>>Just a few.<</R>>
<</if>>
<<W>>Let's hope it is enough, then.<</W>>
<</if>>
<<case 22>> /* Treasure Room */
<<W>>Ah, the Treasure Room. And here's our thief.<</W>>
<<if $steals > 0>>
<<R>>And here's the stuff he pilfered from the maze rooms while we weren't around!<</R>>
<<W>>Maybe he won't mind if we take it all back.<</W>>
<</if>>
<<R>>One thing bothers me, though. Aren't we supposed to meet and defeat a cyclops first? We haven't seen one yet.<</R>>
<<W>>Well, we know how to deal with a cyclops when we meet one. For now, let's take care of our thief friend first.<</W>>
<<case 23>> /* Cyclops Room */
<<W>>''Odysseus!'' ... ''Ulysses!''<</W>>
<<R>>What's this? Are you trying to scare the cyclops away?<</R>>
<<W>>Ah well, it was worth a try. At least Zrok took care of the thief.<</W>>
<<R>>"A snack," he called him. I have to admit, that thief looked rather thin.<</R>>
<<W>>More importantly, we'll need to get ourselves a ticket if we want to get our hands on that treasure.<</W>>
<</switch>>
<</if>>
<<include "Commands">><<include "Verb">>
<<set _util = setup.GetVerbUtil(1)>>
<<switch _util>>
<<case 3>>
<<if setup.CountContents(0) == 0>>
<<R>>Nothing in our inventory.<</R>>
<<else>>
<<R>>Nothing but what we already picked up.<</R>>
<</if>>
<<W>>So we started out empty-handed. Why am I not surprised?<</W>>
<<case 7>>
<<R>>Hmm... The first time we used the INVENTORY command, it also disappeared from the verb list.<</R>>
<<W>>I sense a pattern here.<</W>>
<<case 11>>
<<R>>There's definitely a pattern here! Using INVENTORY pops it off the verb list every time!<</R>>
<<W>>Until our inventory changes, it looks like.<</W>>
<<R>>True. Dropping or taking something would definitely allow us to take inventory again.<</R>>
<</switch>>
<<include "Commands">>
<<include "Verb">>
<<set _util = setup.GetVerbUtil(0)>>
<<switch _util>>
<<case 3>>
<<R>>Interesting. Using the LOOK command makes it disappear from the verb list.<</R>>
<<W>>I wonder if that will always be the case?<</W>>
<<case 7>>
<<R>>I used LOOK again, and lo and behold, it's gone from the list!<</R>>
<<W>>So the game consistently does this. That's good to know.<</W>>
<<case 11>>
<<R>>I used LOOK once more, and it looks like you're right. The game always drops the verb after use.<</R>>
<<W>>Until something enters or leaves the room, that is.<</W>>
<<R>>True. Dropping or taking something in the room would definitely allow us to LOOK again.<</R>>
<</switch>>
<<include "Commands">>
<<run setup.cancelEvent()>>
<<N>>This game is playable on both mobile and PC. It automatically adjusts the text size to fit the available space and supports both portrait and landscape orientations. It also includes support for both light and dark modes.<</N>>
<<N>>Some text is animated, but you can interrupt the animation by tapping the game screen or pressing the Enter key or space bar.<</N>>
<<N>>All game buttons have keyboard shortcuts, so no mouse is needed when playing on a PC. Note that if you are using a screen reader, keyboard shortcuts may not function as expected.<</N>>
<<N>>If the text effects become distracting, you can disable them by turning off the ''AI enhanced UI'' option in the Options menu.<</N>>
<<set _achievements = setup.AddAchievements()>>
<<N>>_achievements<</N>>
<<C 0 5>>
<<B "" "__C__redits" "c,shift + c">><<run Dialog.create("Credits").wikiPassage("Credits").open()>><</B>>
<<B "" "__S__aves" "s,shift + s">><<run UI.saves()>><</B>>
<<B "" "__O__ptions" "o,shift + o">><<run UI.settings()>><</B>>
<<B "" "__R__estart" "r,shift + r">><<run UI.restart()>><</B>>
<<B "" "__B__ack" "b,shift + b" $return>><</B>>
<<include "Verb">>
<<if $objects[$noun].openable == 1>> /* first opening */
<<switch $noun>>
<<case 8>> /* front door */
<<W>>Open, sesame! Finally! Let's see what lies beyond...<</W>>
<<R>>Don't get your hopes up!<</R>>
<<W>>Well, I can dream, can't I?<</W>>
<<case 12>> /* dirty window */
<<W>>That window opened more easily than I expected.<</W>>
<<R>>Looks to me like they at least oiled the hinges.<</R>>
<<W>>Most peculiar. The white house is abandoned, so why oil the hinges?<</W>>
<<case 15>> /* dusty trapdoor */
<<W>>Looks to me like they oiled the hinges on that dusty trapdoor as well.<</W>>
<<R>>Yeah, it opened just as easily as that kitchen window.<</R>>
<<W>>Feels to me like they're expecting us to go down there.<</W>>
<<case 29>> /* worn trophy case */
<<W>>And... the big reveal... is a smoking torch.<</W>>
<<R>>What did you expect? An elvish sword of great antiquity?<</R>>
<<W>>I expected at least a reliable light source. We need one to go underground.<</W>>
<<case 32>> /* rusty mailbox */
<<W>>A leaflet! Just what I expected!<</W>>
<<R>>Not much of a leaflet, it's all torn up.<</R>>
<<W>>Well, at least it's still legible. What does it say?<</W>>
<<case 33>> /* smelly sack */
<<W>>Yes! We've got ourselves a lunch and a... wait, what happened to the clove of garlic?<</W>>
<<R>>Maybe the vampire bat overcame its aversion to garlic and ate it?<</R>>
<<W>>Leaving a bat dropping in return. You may have a point there.<</W>>
<</switch>>
<<else>>
<<switch $noun>>
<<case 8>> /* front door */
<<if $objects[7].examinable == 1>> /* we haven't visited the entrance hall yet */
<<W>>Don't delay the inevitable! Let's step inside and see what awaits us!<</W>>
<</if>>
<<case 12>> /* dirty window */
<<if $objects[13].examinable == 1>> /* we haven't visited the kitchen yet */
<<W>>C'mon, let's go in! No need to play outside all day!<</W>>
<</if>>
<<case 15>> /* dusty trapdoor */
<<if $objects[16].examinable == 1>> /* we haven't visited the cellar yet */
<<W>>Are you afraid of the dark? Let's go underground and see what surprises await us!<</W>>
<</if>>
<<case 29>> /* worn trophy case */
<<if $objects[0].parent == 23 and $objects[34].parent == 0>> /* in cyclops room holding the torn leaflet */
<<W>>I'm not sure opening that trophy case is a good idea.<</W>>
<<elseif $objects[0].parent == 14 and $objects[31].parent == 0>> /* in living room holding the smoking torch */
<<W>>I'm not sure opening that trophy case is a good idea.<</W>>
<</if>>
<<case 33>> /* smelly sack */
<<if $objects[0].parent == 23 and $objects[34].parent == 0>> /* in cyclops room holding the torn leaflet */
<<W>>I'm not sure opening that smelly sack is a good idea.<</W>>
<</if>>
<</switch>>
<</if>>
<<include "Commands">><<if not tags().includes("noreturn")>><<set $return to passage()>><</if>><<R>>Let me start it up.<</R>>
<<I 600 "ZORK">>
<<W 1000>>Hey, wait! The game is called ZROK, not ZORK!<</W>>
<<R 2000>>You're right, let me fix this.<</R>>
<<I 1000 "|||ROK=">>
<<G 100 "ZROK: THE GREAT UNDERGROUND IMPALER==">>
<<run setup.CreateWorld()>>
<<run setup.SaveState()>>
<<run setup.SelectVerb(0)>>
<<run setup.ApplyVerb()>>
<<run setup.ReportVerb()>>
<<run setup.settingThemeHandler()>>
<<run setup.CheckVerbs()>>
<<W 1000>>This does look familiar somehow.<</W>>
<<R 1000>>Let's see what happens if we click on one of these buttons.<</R>>
<<W 1500>>Buttons? What buttons? This is supposed to be a parser game! What does the manual say?<</W>>
<<R 2000>>//“Due to changes in the IF landscape, we have retrofitted our parser engine with the latest in Artificial Incompetence technology. Now the player only needs to select a verb, and the AI engine will complete the command to its satisfaction.”//<</R>>
<<W 2500>>Oh boy... I'm not sure I like where this is going.<</W>>
<<include "Commands">>
<<set $objects = []>>
<<set $verbs = []>>
<<set $delta = 1>>
<<set $bat = 0>>
<<set $turns = 0>>
<<set $verb = 0>>
<<set $noun = 0>>
<<set $item = 0>>
<<set $stolen = 0>>
<<set $steals = 0>>
<<set $count = 0>>
<<set $viewtext to ['','','','','','','','','','','','','> ']>>
<<set $achievements = [0,0,0,0,0,0,0,0,0,0,0,0]>>
<<set $ranks = [-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]>>
<<set $history = "">>
<<set $walkthrough = "">><div class="viewer"><canvas id="canvas"></canvas></div>
<div class="talker" id="talker" data-passage="Talker" aria-live="polite"></div>
<div class="worker" id="passages"></div><<include "Verb">>
<<if $objects[$noun].takable == 1>> /* first take */
<<switch $noun>>
<<case 24>> /* flaming torch */
<<W>>That flaming torch might come in handy for exploring the really dark parts of this game.<</W>>
<<R>>Then I'd better hold on to it for now.<</R>>
<<W>>That smoking torch wouldn't have worked as a light source anyway.<</W>>
<<case 25>> /* treasure chest */
<<W>>I guess that's it for now. We got the chest... but then the game crashed.<</W>>
<<R>>Well, there's always //ZROK II: The Wizard of 'F'// we could check out.<</R>>
<<W>>Not me. I'm out of here. Find someone else!<</W>>
<<R 5000>>Hello? Are you still here?<</R>>
<<R>>//(looks at you)// I just knew Wilco and I weren’t the only ones playing this game.<</R>>
<<R>>Thanks for playing along with us. I hope you enjoyed it as much as we did.<</R>>
<<R>>Check out the credits in the menu. Thanks again, and have a nice day! So long for now.<</R>>
<<case 27>> /* pile of leaves */
<<W>>Whoa! A null pointer exception? Someone clearly didn't expect us to interrupt the game!<</W>>
<<R>>I guess that caused the premature destruction of the pile of leaves.<</R>>
<<W>>At least it looks like the game is still running. Shall we continue?<</W>>
<<case 29>> /* worn trophy case */
<<if $objects[32].takable == 1>> /* first take for bat set */
<<W>>Whoa! Pulling that worn trophy case off the floor like it weighs nothing, you've got bat power!<</W>>
<<R>>This is nothing compared to that solid-gold coffin I used to tote around in another game. And I didn't even need bat power for that!<</R>>
<<W>>At least now we've got a portable treasure chest to stash our loot.<</W>>
<<else>>
<<W>>There goes our bat power. I guess it ran out of juice.<</W>>
<<R>>That bat dropping was pretty dry. Not a lot of juice, if you ask me.<</R>>
<<W>>At least now we've got a portable treasure chest to stash our loot as well.<</W>>
<</if>>
<<case 30>> /* sceptre */
<<W>>Yes! We're finally getting suitable weapons. About time!<</W>>
<<R>>Let me guess... the cyclops?<</R>>
<<W>>Of course the cyclops. Who else? That huge eye is a pretty easy target, if you ask me.<</W>>
<<case 31>> /* smoking torch */
<<W>>Okay, so now we've got a smoking torch. Not much use as a light source, if you ask me.<</W>>
<<R>>I suppose we could use that rug to rekindle its fire.<</R>>
<<W>>True enough. That rug looks like it might instantaneously catch fire anyway.<</W>>
<<case 32>> /* rusty mailbox */
<<if $objects[29].takable == 1>> /* first take for bat set */
<<W>>Whoa! Pulling that rusty mailbox out of the ground like it weighs nothing, you've got bat power!<</W>>
<<R>>This is nothing compared to that solid-gold coffin I used to tote around in another game. And I didn't even need bat power for that!<</R>>
<<W>>At least now we've got a portable mailbox to stash our fan mail.<</W>>
<<else>>
<<W>>There goes our bat power. I guess it ran out of juice.<</W>>
<<R>>That bat dropping was pretty dry. Not a lot of juice, if you ask me.<</R>>
<<W>>At least now we've got a portable mailbox to stash our fan mail as well.<</W>>
<</if>>
<<case 33>> /* smelly sack */
<<W>>Eww! Keep your distance, if you don't mind! That smelly sack is //very// smelly indeed!<</W>>
<<R>>I guess its contents were stashed in there for a very long time.<</R>>
<<W>>Considering the state of the place, it might've been here for decades at least.<</W>>
<<case 34>> /* torn leaflet */
<<W>>Our ticket to untold riches and fame!<</W>>
<<R>>What gives you that idea?<</R>>
<<if setup.IsSeen(4)>> /* we have seen the cyclops */
<<W>>Zrok wants to see a ticket, remember? Let's give him one!<</W>>
<<else>>
<<W>>Just a hunch.<</W>>
<</if>>
<<case 35>> /* moldy lunch */
<<W>>Be careful not to drop it! It might start moving about.<</W>>
<<if setup.IsSeen(2)>> /* we have seen the troll */
<<R>>I'd rather pass it on to that hungry troll.<</R>>
<<W>>Yeah, I know what you mean. An axe for a lunch isn't a bad deal!<</W>>
<</if>>
<<case 36>> /* bat dropping */
<<W>>And then? Are you planning to eat it? It looks rather dry, if you ask me.<</W>>
<<R>>And no convenient bottle of water to wash it down. You have a point.<</R>>
<<W>>On the other hand, if you don't eat it, you'll never learn what it does.<</W>>
<<case 37>> /* skeleton key */
<<W>>Yes! We can finally go back and unlock that front door! Let's go!<</W>>
<<R>>How... why? You mean the front door of the white house where we started out?<</R>>
<<W>>What else? Have we encountered any other mysteriously locked doors along the way, hmm?<</W>>
<</switch>>
<<else>>
<<set _region = setup.GetRegion()>>
<<set _maze = setup.CountMazeLeaves()>>
<<set _leaf = setup.FindLeaf()>>
<<set _held = setup.CountLeaves(0)>>
<<set _room = setup.CountLeaves(1)>>
<<if $objects[0].parent == 14 and $objects[31].parent == 0>> /* we are trying to drop the smoking torch in the living room */
<<W>>The idea was to drop that smoking torch on the rug, remember?<</W>>
<<R>>And hope the rug catches fire and burns away to reveal what's underneath.<</R>>
<<W>>We both know what's under that rug, right? The infamous trap door to a grand adventure!<</W>>
<<elseif $objects[0].parent == 23 and $objects[34].parent == 0>> /* we are trying to drop the leaflet in the cyclops room */
<<W>>This isn't going to work. Aren't you going to drop that leaflet for the cyclops?<</W>>
<<R>>Oh yeah, I forgot! The pretend treasure ticket, right?<</R>>
<<W>>I just hope that cyclops isn't too bright.<</W>>
<<elseif $noun == 24 and _region > 0>> /* taking the flaming torch in a dark room */
<<W>>Good point. We can't move around in the darkness without our trusty torch.<</W>>
<<if _maze < 0>>
<<R>>But we still can't move around!<</R>>
<<W>>I guess the maze won't let us until we disambiguate this room from the others.<</W>>
<<R>>So I need to take or drop some leaves to make it different?<</R>>
<<W>>Exactly.<</W>>
<</if>>
<<elseif $noun == 28 and _region != 2>> /* taking a leaf outside the maze */
<<W>>Good point. We need all the leaves we can get for mapping out the maze.<</W>>
<<elseif $noun == 28 and _region == 2>> /* taking a leaf inside the maze */
<<if _room == 0>>
<<W>>That was the last leaf in this room! Now we can't move on!<</W>>
<<R>>Oops. Did I take too many leaves?<</R>>
<<W>>You'd better drop that leaf back if you want to try moving on.<</W>>
<<elseif _maze < 0>>
<<W>>Looks like this maze room isn't unique. We'll need to change the number of leaves before we can move around again.<</W>>
<<else>>
<<W>>Looks like this maze room is unique. We can either move on or change the number of leaves, your call.<</W>>
<</if>>
<</if>>
<</if>>
<<include "Commands">>
<<R 0>>Hey Wilco, I just got myself a new interactive fiction game!<</R>>
<<W 1000>>Cool! What did you get?<</W>>
<<R 1000>>I bought ZROK: THE GREAT UNDERGROUND IMPALER on Vapor! Wanna check it out?<</R>>
<<W 1000>>Is that a //new// game? It sounds awfully familiar... But let's have a look...<</W>>
<<C 4000 7>>
<<B "" "__R__un" "r,shift + r" "Start">><<run setup.finishEvent()>><</B>>
<span class="button-wrapper"><button type="button" disabled> </button></span>
<span class="button-wrapper"><button type="button" disabled> </button></span>
<span class="button-wrapper"><button type="button" disabled> </button></span>
<<B "" "__M__enu" "m,shift + m">><<run Engine.play('Menu',true)>><</B>><<include "Verb">>
<<W>>Do we finally get to learn what's hidden behind this mysterious door?<</W>>
<<include "Commands">>/* Button */
<<widget "B" container>>
<<set _icon = _args[0]>>
<<set _text = _args[1]>>
<<set _keys = _args[2]>>
<<set _passage = _args.length > 3 ? _args[3] : undefined>>
<<set _label = (_icon[0] === '&') ? "<icon class='tall'>_icon</icon> _text" : "<span class='tall'>_icon</span> _text">>
<<if _passage === undefined>>
<span class="button-wrapper" @data-key="_keys">
<<button _label>>_contents<</button>>
</span>
<<else>>
<span class="button-wrapper" @data-key="_keys">
<<button _label _passage>>_contents<</button>>
</span>
<</if>>
<</widget>>
/* Commentary (Roger,Wilco,Neutral) */
<<widget "R" container>>
<<if _a===undefined>><<set _a=[]>><</if>>
<<set _m = _args.length > 0 ? _args[0] : 0>>
<<if _contents.length>><<set _a.push({msec:_m,type:0,text:_contents})>><</if>>
<</widget>>
<<widget "W" container>>
<<if _a===undefined>><<set _a=[]>><</if>>
<<set _m = _args.length > 0 ? _args[0] : 0>>
<<set _a.push({msec:_m,type:1,text:_contents})>>
<</widget>>
<<widget "N" container>>
<<if _a===undefined>><<set _a=[]>><</if>>
<<set _m = _args.length > 0 ? _args[0] : 0>>
<<set _a.push({msec:_m,type:-1,text:_contents})>>
<</widget>>
<<widget "C">>
<<set _m = _args.length > 0 ? _args[0] : 0>>
<<set _s = _args.length > 1 ? _args[1] : 0>>
<<run setup.setEvent(_m,_s,_a)>>
<</widget>>
/* Gameplay (Input,Output) */
<<widget "I">>
<<set _m = _args.length > 0 ? _args[0] : 0>>
<<set _t = _args.length > 1 ? _args[1] : "">>
<<set _a.push({msec:_m,type:2,text:_t})>>
<</widget>>
<<widget "G">>
<<set _m = _args.length > 0 ? _args[0] : 0>>
<<set _t = _args.length > 1 ? _args[1] : "">>
<<set _a.push({msec:_m,type:3,text:_t})>>
<</widget>><<R>><</R>>
<<run setup.LoadState()>>
<<if settings.advanced>>
<<switch $turns>>
<<case 50>>
<<W 1000>>Hey, what's with the game screen? The text is all wobbly! Anything in the manual about this?<</W>>
<<R 1000>>//“We are very well aware that different people have different preferences for typography. We have therefore incorporated our AI-enhanced UI to cater to all our customers' needs. Now, the AI will choose any typeface you like, and there is no need to muck around with configuration options to get the settings you prefer. We cater to everyone!"//<</R>>
<<W 1000>>So, by trying to please everyone, they end up pleasing no one. I hope no more AI-enhanced garbage crops up.<</W>>
<<R 1000>>Let's focus on the gameplay.<</R>>
<<case 100>>
<<W 1000>>Now the text is zooming in and out. Let me guess... another AI-degraded UI feature?<</W>>
<<R 1000>>//“We proudly present our latest offering in autoscaling technology. Our game will automatically scale the text to cater to all your needs. No matter how large or how small, our game engine supports it all!"//<</R>>
<<W 1000>>They seem to have a different understanding of //autoscaling// than we do. Can't we just play a simple text-based game instead? One with, like, a standard typeface and no AI-induced madness trying to "improve" things?<</W>>
<<R 1000>>Let's get back to the gameplay.<</R>>
<<case 150>>
<<W 1000>>Now the text is rotating. Did we trigger the "Mobile Support" they warned about?<</W>>
<<R 1000>>I guess we did... //“No matter how you hold your device, our Mobile Support feature can handle it! We support ALL device orientations, no matter how exotic!"//<</R>>
<<W 1000>>I surrender. The sooner we finish this game, the better.<</W>>
<<R 1000>>Let's try to focus on the gameplay again.<</R>>
<</switch>>
<</if>>
<<run setup.ApplyVerb()>>
<<run setup.ReportVerb()>>
<<run setup.settingThemeHandler()>>
<<run setup.CheckVerbs()>>
<<run setup.CalcVerbUtil()>>
The game //Moon Logic// was written by Onno Brouwer in Twine for <a href="https://ifcomp.org/comp/2025" target=”_blank”>IFComp 2025</a>. The "broken AI-enhanced parser/choice" game concept is inspired by the REALLY BAD IF jam organized by Manonamora. The game //ZROK: THE GREAT UNDERGROUND IMPALER// is inspired by //ZORK I: THE GREAT UNDERGROUND EMPIRE//, originally created by <a href="https://en.wikipedia.org/wiki/Infocom" target="_blank">Infocom, Inc.</a>
Many thanks to:
- The <a href="https://neointeractives.tumblr.com/" target=”_blank”>Neo-Interactives Group</a> for organizing all kinds of cool jams.
- Hituro, Max Fog, and Andrew Schultz, for beta testing this game.
- Manonamora, Hituro, Pinkunz, Josh Grams, and all the kind folks on the Twine Discord, for helping out with technical details.
- Maliface for creating <a href="https://github.com/MalifaciousGames/Mali-s-Scripts/tree/main/twine-scripts/easy-keys" target="_blank">easy keys</a>, which made keyboard handling a breeze.
- All the kind folks at <a href="https://intfiction.org/" target=”_blank”>intfiction.org</a>, who helped me navigate the wonderful world of IF.
This is a work of fiction. Any names or characters, businesses or places, events or incidents, are fictitious. Any resemblance to actual entities or actual events is purely coincidental.
$walkthrough