(set: $inventory to (a:))\ (set: $deck to (a:))\ (set: $projectorIsOn to false)\ (set: $colour to "white")<style> body { background-color: #000000; } tw-passage { color: #ffffff; } </style>\ <p style="text-align:center;">\ <img src="The_Spectrap.jpg" alt="The Spectrap, by Alex Ball" style="width:33%" />\ </p>{ You are on the trail of a witch. You have tracked her down to a house in the forest, and are looking around inside. You go down to the dark cellar, but before you can find the light switch the door closes behind you and you hear a key turning in the lock. You are locked in! } { You scrabble around for the [[light switch->cellar]] and eventually find it next to the door. }(unless: (history:) contains "cellar")[{ Click! The light comes on and you turn to see your surroundings for the first time. } ]{ You are standing in the cellar. The [[grey door]] (unless: (history:) contains "cellar")[by which you entered] lies locked to the south. To the north is an odd-looking [[$colour door]]. } { There is a table in the middle of the room holding a [[projector]] and some unimportant bits and bobs. A [[cupboard]] stands to one side. }{ The door is plain but solid. The handle is made of chunky steel; the steel door plate below contains an empty keyhole. (unless: (history:) contains "grey door")[ You turn the handle and pull with all your might but the door does not budge in the slightest. (set: $triedIvory to false) ] } (if: $inventory contains "steel key")[{ The [[steel key->Escape]] you found looks like it might fit the keyhole. }](else-if: $inventory contains "ivory key")[{ You fish out the ivory key from your pocket and try it in the lock. (unless: $triedIvory)[It rattles around but does not catch.(set: $triedIvory to true)] (else:)[Again, no luck. This is not the right key.] It looks like you will be stuck in this [[cellar]] a while longer. }](else:)[{ There is no way you are escaping this [[cellar]] unless you can find a way to unlock the door. }]{ (unless: (history:) contains "projector")[(set: $slot to (a:))] (unless: $projectorIsOn)[ (set: $colour to "white") ](else-if: $slot contains "blue slide")[ (if: $slot contains "green slide")[(set: $colour to "cyan")] (else-if: $slot contains "red slide")[(set: $colour to "magenta")] (else:)[(set: $colour to "blue")] ](else-if: $slot contains "green slide")[ (if: $slot contains "red slide")[(set: $colour to "yellow")] (else:)[(set: $colour to "green")] ](else-if: $slot contains "red slide")[(set: $colour to "red") ](else:)[(set: $colour to "white")] The projector is an old-fashioned contraption, all brass and glass. Inside there are [[two slots]]: (if: $slot's length is 0)[both are empty.] (else:)[ one contains the **(print: $slot's 1st)** and the other (if: $slot's length is 1)[is empty.] (else:)[contains the **(print: $slot's 2nd)**.] ] } (unless: $projectorIsOn)[The projector is currently switched off,\ but there is a (link: "switch on the side")[(set: $projectorIsOn to true)(go-to: "projector")]. To the north is odd-looking [[white door]].\ ](else:)[The projector is currently switched on and humming with power.\ The light from the projector is shining north on the [[odd-looking door->$colour door]],\ (unless: $colour is "white")[turning it a brilliant shade of **$colour** and]\ making it scintillate and sparkle.] Behind you is the [[cupboard]] and to the south is the [[grey door]].(unless: (history:) contains "two slots")[(set: $firstSlide to true)]\ (if: ($slot's length is 0) and ($deck's length is 0))[\ The slots lie between the bulb and the lens.\ They look like they would hold something small, thin and square. You look again at the [[projector]].\ ](else-if: ($deck's length is 1) and $firstSlide)[\ It looks like the slide you found would fit in one of the slots. Will you (link: "give it a try")[(move: $deck's 1st into $x)\ (set: $slot to it + (a: $x))\ (set: $firstSlide to false)\ (go-to: "projector")\ ], or [[not->projector]]?\ ](else:)[\ (if: $slot's length > 0)[\ Will you take the\ (link: $slot's 1st)[(move: $slot's 1st into $x)\ (set: $deck to it + (a: $x))\ (go-to: "two slots")\ ] out of the slots?\ (if: ($slot's length is 2))[Or the\ (link: $slot's 2nd)[(move: $slot's 2nd into $x)\ (set: $deck to it + (a: $x))\ (go-to: "two slots")\ ]?\ ] ]\ (if: ($slot's length < 2) and ($deck's length > 0))[\ Will you put the\ (link: $deck's 1st)[(move: $deck's 1st into $x)\ (set: $slot to it + (a: $x))\ (go-to: "two slots")\ ] into one of the slots?\ (if: ($deck's length >= 2))[Or the\ (link: $deck's 2nd)[(move: $deck's 2nd into $x)\ (set: $slot to it + (a: $x))\ (go-to: "two slots")\ ]?\ ]\ (if: ($deck's length is 3))[Or the\ (link: $deck's 3rd)[(move: $deck's 3rd into $x)\ (set: $slot to it + (a: $x))\ (go-to: "two slots")\ ]?\ ] ]\ Or will you look again at the [[projector]]?\ ]{ (unless: (history:) contains "cupboard")[(set: $hasBlue to false)] The cupboard takes up most of one wall of the cellar. From the pattern of dust and scratches inside, it looks it was emptied recently, and in a hurry too. } (unless: $hasBlue)[\ Something shiny catches your eye.\ Trapped behind one of the shelves is a square of blue film set in a bronze frame. ](click: "blue film")[With a bit of wiggling\ you free the blue slide and pick it up.\ (set: $hasBlue to true)(set: $deck to it + (a: "blue slide")) ]{ Behind you is the [[projector]], to the south is the [[grey door]], and to the north the odd-looking [[$colour door]]. }{ The door turns out to be a life-size, life-like and highly detailed painting. It is covered in squiggles that you recognise as magical symbols, though you haven't the faintest idea what they mean. $projectorIsOn[The light from the projector makes the paint crackle and sparkle wherever it touches.] } Behind you are the [[projector]], [[cupboard]] and [[grey door]].{ (if: (history:) contains "Blue Room")[(go-to:"Blue Room")] (else:)[ The door is (if: (history:) contains "white door")[ no longer a painting but a real door, and is no longer white but ]a brilliant shade of blue. It hums and crackles with power wherever the light from the projector strikes it. Some of the magical symbols that are carved on it are glowing brightly, tracing out a sort of fish shape. You are able to turn the handle, and when you do the door moves ever so slightly. You could [[go through->Blue Room]] if you wanted. ] } Behind you are the [[projector]], [[cupboard]] and [[grey door]].{ (if: (history:) contains "Magenta Room")[(go-to:"Magenta Room")] (else:)[ The door is now a magnificent shade of magenta. Before [[passing through it->Magenta Room]], you notice that some different magical symbols are glowing; these ones seem to form a box on wheels. ] } Behind you are the [[projector]], [[cupboard]] and [[grey door]].{ (if: (history:) contains "Red Room")[(go-to:"Red Room")] (else:)[ The door is now a ravishing shade of red. Before [[passing through it->Red Room]], you notice that some different magical symbols are glowing; these ones seem to sketch out a knife, fork, and plate. ] } Behind you are the [[projector]], [[cupboard]] and [[grey door]].{ (if: (history:) contains "Yellow Room")[(go-to:"Yellow Room")] (else:)[ The door is now a yummy shade of yellow. Before [[passing through it->Yellow Room]], you notice that some different magical symbols are glowing; these ones join up to form a bobbly brick. ] } Behind you are the [[projector]], [[cupboard]] and [[grey door]].{ (if: (history:) contains "Cyan Room")[(go-to:"Cyan Room")] (else:)[ The door is now a splendid shade of cyan. Before [[passing through it->Cyan Room]], you notice that some different magical symbols are glowing; these ones look like a series of wavy lines. ] } Behind you are the [[projector]], [[cupboard]] and [[grey door]].{ (if: (history:) contains "Green Room")[(go-to:"Green Room")] (else:)[ The door is now a gorgeous shade of green. Before [[passing through it->Green Room]], you notice that some different magical symbols are glowing: a triangle filled with fifteen circles. ] } Behind you are the [[projector]], [[cupboard]] and [[grey door]].<style> body { background-color: #d0dcfb; } tw-passage { color: #0c308d; } </style>{ (unless: (history:) contains "Blue Room")[(set: $hasRed to false)] You are in a small room with pale blue walls, and lit by a couple of standard lamps. To one side is a [[wooden table]] painted navy blue. } { In the centre of the room is a large [[fish tank]], populated with an amazing variety of colourful fish. } { A [[blue door->cellar]] lies to the south. }<style> body { background-color: #d0dcfb; } tw-passage { color: #0c308d; } </style>{ (if: (history:) contains "wooden table")[ (set: $tableTop to it - $taken) ](else:)[ (set: $blueItems to (datamap: "blue ball", "shiny blue ball", "fish food", "packet of fish food", "model tower", "model of a castle tower", "fish net", "long-handled fish net")) (set: $tableTop to (shuffled: ...(datanames: $blueItems))) ] (set: $taken to (a:)) (if: $tableTop's length is 0)[ The wooden table is empty. ](else-if: $tableTop's length is 1)[ On the wooden table is a curious object: a (link-reveal: $blueItems's ($tableTop's 1st))[,\ (set: $taken to it + (a: $tableTop's 1st))\ (set: $inventory to it + (a: $tableTop's 1st))\ which you take]. ](else:)[ On the wooden table are some curious objects: * a (link-reveal: $blueItems's ($tableTop's 1st))[,\ (set: $taken to it + (a: $tableTop's 1st))\ (set: $inventory to it + (a: $tableTop's 1st))\ which you take]; * a (link-reveal: $blueItems's ($tableTop's 2nd))[,\ (set: $taken to it + (a: $tableTop's 2nd))\ (set: $inventory to it + (a: $tableTop's 2nd))\ which you take](if: $tableTop's length > 2)[;](else:)[.] (if: $tableTop's length > 2)[* a\ (link-reveal: $blueItems's ($tableTop's 3rd))[,\ (set: $taken to it + (a: $tableTop's 3rd))\ (set: $inventory to it + (a: $tableTop's 3rd))\ which you take](if: $tableTop's length > 3)[;](else:)[.]\ ](if: $tableTop's length > 3)[* a\ (link-reveal: $blueItems's ($tableTop's 4th))[,\ (set: $taken to it + (a: $tableTop's 4th))\ (set: $inventory to it + (a: $tableTop's 4th))\ which you take].\ ]\ ] Behind you is the [[fish tank]], and a [[blue door->cellar]] lies to the south. }(unless: (history:) contains "fish tank")[(set: $fishing to false)]\ $fishing[(go-to: "fishing")]\ <style> body { background-color: #d0dcfb; } tw-passage { color: #0c308d; } </style>{ You watch the fish flit around the tank, marvelling at their dazzling colours. Among many others, you spot a red and turquoise discus fish, a sunset blushing angelfish, a tiger oscar fish, and an ultramarine pindani fish. } (unless: $deck contains "red slide")[\ (click: "discus fish")[The discus fish looks big and round from the side,\ but thin from the front. It nuzzles its way into some greenery. ](click: "angelfish")[The angelfish darts playfully around the tank,\ looking for all the world like an arrowhead seeking its target. ](click: "oscar fish")[The oscar noses around just under the surface of the water,\ probably hunting for stray scraps of food. ](click: "pindani fish")[The pindani skims the gravel at the bottom of the tank,\ revealing something underneath.\ You peer at it intently.\ It seems to be a small square of\ (link: "red film")[(set: $fishing to true)(go-to: "fishing")]\ set in a brass frame. ]]{ Behind you is the [[wooden table]], and a [[blue door->cellar]] lies to the south. }<style> body { background-color: #d0dcfb; } tw-passage { color: #0c308d; } </style>{ (unless: (history:) contains "fishing")[(set: $tried to (a:))(set: $hasNowt to true)] You can't reach the red film slide since the glass walls of the tank are too high. You check your pockets for something to help. } (if: ($inventory contains "blue ball") and not ($tried contains "blue ball"))[* The\ (set: $hasNowt to false)\ (link-reveal: "blue ball")[(set: $tried to it + (a: "blue ball"))\ – no, that would be silly].]\ (if: ($inventory contains "fish food") and not ($tried contains "fish food"))[* The\ (set: $hasNowt to false)\ (link-reveal: "packet of fish food")[(set: $tried to it + (a: "fish food"))\ – you sprinkle some food in the tank,\ but while the fish gobble it up gratefully,\ none of them seem inclined to fetch the slide for you].]\ (if: ($inventory contains "model tower") and not ($tried contains "model tower"))[* The\ (set: $hasNowt to false)\ (link-reveal: "model of a castle tower")[(set: $tried to it + (a: "model tower"))\ – plunging the model tower into the tank,\ you can just about tickle the gravel with the tip,\ but frustratingly the slide remains just out of reach].]\ (if: ($inventory contains "fish net") and not ($tried contains "fish net"))[* The\ (set: $hasNowt to false)\ (link-reveal: "long-handled fish net")[(set: $tried to it + (a: "fish net"))\ (set: $hasRed to true)\ (set: $deck to it + (a: "red slide"))\ (set: $fishing to false)\ – you dip the net into the tank and after a few clumsy attempts,\ manage to scoop the (print: "**red slide**") out of the tank].]\ $hasNowt[ No, you don't have anything that might be useful. ]{ Behind you is the [[wooden table]], and a [[blue door->cellar]] lies to the south. }<style> body { background-color: #f1d0fb; } tw-passage { color: #6d0c8d; } </style>{ (unless: (history:) contains "Magenta Room")[ (set: $carriage to (shuffled: "First", "Second", "Third", "Fourth")) ] You are in a narrow corridor; the windows on either side are covered up with magenta blinds. The curve of the low ceiling, the vibration of the floor, and the clickety-clack from outside reveal you are in a railway carriage. You can count four compartments on the eastern side; you could look in the [[first->(print: $carriage's 1st) Compartment]], [[second->(print: $carriage's 2nd) Compartment]], [[third->(print: $carriage's 3rd) Compartment]] or [[fourth->(print: $carriage's 4th) Compartment]]. } A [[magenta door->cellar]] lies to the south\ and a wooden door lies north(click: "wooden door")[,\ though it is securely locked:\ you guess this is the last carriage before the engine].<style> body { background-color: #f1d0fb; } tw-passage { color: #6d0c8d; } </style>\ There are seats on either side of you,\ upholstered in a tough lilac fabric,\ and a window to the east with the magenta blind drawn down. On the floor is a circle of a wooden track,\ on which is a red toy train with blue, green and yellow carriages. (click: "toy train")[You amuse yourself running the train around the track for a few moments.\ After a while you decide this is not going to help you escape, so you stand back up. ]The [[door to the corridor->Magenta Room]] is to the west.<style> body { background-color: #f1d0fb; } tw-passage { color: #6d0c8d; } </style>{ (unless: (history:) contains "Second Compartment")[(set: $hasPinkBall to false)] There are seats on either side of you, upholstered in a tough lilac fabric, and a window to the east with the magenta blind drawn down. } In the luggage racks above the seats, there is a wooden crate and a sports bag. (click: "wooden crate")[You heave the crate down from the rack and prise open the lid.\ Inside, packed in ice, is a month's supply of pickled herring, somewhat red in colour –\ (link: "take one?")[(set: $inventory to it + (a: "red herring"))you take one.]\ You put the lid back on the crate as best you can and carefully hoist it back to the rack. ](click: "sports bag")[You lift the sports bag from the rack and unzip it.\ Inside you find a stripy waistcoat, a red bow-tie\ and a peculiar upside-down-ish pair of glasses.\ (unless: $hasPinkBall)[There is also a shiny pink ball rolling around inside –\ (link: "take it?")[(set: $hasPinkBall to true)(set: $inventory to it + (a: "pink ball"))you take it.]]\ You zip up the sports bag again and replace it on the rack. ]The [[door to the corridor->Magenta Room]] is to the west.<style> body { background-color: #f1d0fb; } tw-passage { color: #6d0c8d; } </style>{ (unless: (history:) contains "Third Compartment")[(set: $hasPrune to false)] There are seats on either side of you, upholstered in a tough lilac fabric, and a window to the east with the magenta blind drawn down. } In the luggage racks above the seats, there is a large suitcase and a shopping basket. (click: "large suitcase")[You heft the suitcase down from the rack and pop it open.\ Inside is a white surplice, a purple cassock, a golden mitre and stole,\ and some other items of church clothing. Not your sort of thing at all.\ You close the suitcase and put it back. ](click: "shopping basket")[You carefully remove the basket from the rack and look inside.\ $hasPrune[It is empty.](else:)[Rolling around inside is a fresh prune.\ It is bright purple and looks firm and juicy –\ (link: "take it?")[(set: $hasPrune to true)(set: $inventory to it + (a: "prune"))you take it].]\ You pop the basket back up on the rack. ]The [[door to the corridor->Magenta Room]] is to the west.<style> body { background-color: #f1d0fb; } tw-passage { color: #6d0c8d; } </style>\ There are seats on either side of you,\ upholstered in a tough lilac fabric,\ and a window to the east with the magenta blind drawn down. There is a newspaper on one of the seats.\ (click: "newspaper")[You flick through for any clues\ where the witch might escape to next, or how you might escape.\ All you can find is a doodle of 15 circles formed into a solid triangle, and a ring around an article on the health benefits of a rainbow diet.] The [[door to the corridor->Magenta Room]] is to the west.<style> body { background-color: #fbd0db; } tw-passage { color: #8d0c2d; } </style>{ (unless: (history:) contains "Red Room")[ (set: $hasGreen to false) (set: $foundRedBall to false) (set: $hasRedBall to false) (set: $a to "") (set: $fv to (a: "tomato", "carrot", "banana", "lettuce", "punnet of blueberries")) (set: $frveg to (shuffled: ...$fv, $a)) (set: $solution to (a: ...$fv, "prune")) ] You are in a dining room decorated with rich ruby-coloured wallpaper. There is a long table in the middle of the room, covered in a crimson velvet tablecloth, and set as if for a great feast. } { In the middle of the table is a large silver serving dome, what the people in the business call a cloche. Around it is a selection of colourful fruit and vegetables on a collection of colourful [plates]<plt|. } (click: "cloche")[\ $hasGreen[\ $hasRedBall[\ You lift up the cloche and take a peek underneath, but there is nothing there.\ ](else:)[\ $foundRedBall[\ You lift the cloche to find the shiny red ball is still there –\ (link: "take it?")[taken.\ (set: $hasRedBall to true)\ (set: $inventory to it + (a: "red ball"))\ ]\ ](else:)[\ (set: $foundRedBall to true)\ You lift up the cloche again.\ There is a ripping sound and a thud, and a shiny red ball appears underneath – \ (link: "take it?")[taken.\ (set: $hasRedBall to true)\ (set: $inventory to it + (a: "red ball"))\ ] You inspect the underside of the cloche and discover the ball had been taped there.\ ]\ ]\ ](else-if: $frveg is $solution)[\ You heave at the cloche, and this time it comes free of the table, \ though it is still unexpectedly heavy. \ Underneath is a square of green film in a brass frame –\ (link: "take it?")[taken.\ (set: $hasGreen to true)\ (set: $deck to it + (a: "green slide"))\ ]\ ](else:)[\ Try as you might, you cannot lift the cloche; it seems to be stuck to the table.\ ] ](if: $a is "")[One of the plates is empty.\ This strikes you as wrong somehow, but what can you [do?]<fixme| ](else-if: ($a is "herring") and ($inventory contains "prune"))[Hmm.\ Something still seems fishy about this.\ Perhaps the herring wasn't the right thing to put with the fruit and vegetables.\ You could try the prune instead. ]{ (if: ($inventory contains "red herring") or ($inventory contains "prune"))[ (set: $fix to " You search your pockets and turn out a ") (if: $inventory contains "red herring")[ (set: $fix to it + "red herring") (if: $inventory contains "prune")[ (set: $fix to it + " and a purple prune.") ](else:)[ (set: $fix to it + ".") ] ](else:)[ (set: $fix to it + "purple prune.") ] (append: ?fixme)[$fix] (click: "red herring")[ (set: $inventory to it - (a: "red herring")) (set: $z to ($frveg.indexOf($a))) (set: $a to "herring") (set:$dummy to $frveg.splice($z,1,$a)) (go-to: "filled plate") ] (click: "prune")[ (set: $replacing to false) (if: $a is "herring")[(set: $replacing to true)] (set: $inventory to it - (a: "prune")) (set: $z to ($frveg.indexOf($a))) (set: $a to "prune") (set:$dummy to $frveg.splice($z,1,$a)) $replacing[(go-to: "replaced plate")](else:)[(go-to: "filled plate")] ] ] (unless: ($a is "") or ($frveg is $solution))[ (click: ?plt)[(go-to: "plates")] ] }A [[red door->cellar]] lies to the south.<style> body { background-color: #fbd0db; } tw-passage { color: #8d0c2d; } </style>{ You pop it down on the empty plate. Yes, that looks much better. } You could take a closer look at the [[plates]]\ or [[step back->Red Room]] to admire your handiwork. A [[red door->cellar]] lies to the south.<style> body { background-color: #fbd0db; } tw-passage { color: #8d0c2d; } </style>{ You pick up the herring and put it to one side, then pop the prune down on the cleared plate. You have a good feeling about this. } You could take a closer look at the [[plates]]\ or [[step back->Red Room]] to admire your handiwork. A [[red door->cellar]] lies to the south.<style> body { background-color: #fbd0db; } tw-passage { color: #8d0c2d; } </style>\ There are six plates arranged in a circle around the cloche.\ Each one is a different colour. The red plate holds a **(print: $frveg's 1)**. * (link: "Swap")[(set: $x to $frveg's 1)(set: $frveg's 1 to $frveg's 2)(set: $frveg's 2 to $x)(go-to: "plates")]\ what's on the red and orange plates? The orange plate holds a **(print: $frveg's 2)**. * (link: "Swap")[(set: $x to $frveg's 2)(set: $frveg's 2 to $frveg's 3)(set: $frveg's 3 to $x)(go-to: "plates")]\ what's on the orange and yellow plates? The yellow plate holds a **(print: $frveg's 3)**. * (link: "Swap")[(set: $x to $frveg's 3)(set: $frveg's 3 to $frveg's 4)(set: $frveg's 4 to $x)(go-to: "plates")]\ what's on the yellow and green plates? The green plate holds a **(print: $frveg's 4)**. * (link: "Swap")[(set: $x to $frveg's 4)(set: $frveg's 4 to $frveg's 5)(set: $frveg's 5 to $x)(go-to: "plates")]\ what's on the green and blue plates? The blue plate holds a **(print: $frveg's 5)**. * (link: "Swap")[(set: $x to $frveg's 5)(set: $frveg's 5 to $frveg's 6)(set: $frveg's 6 to $x)(go-to: "plates")]\ what's on the blue and purple plates? The purple plate holds a **(print: $frveg's 6)**. * (link: "Swap")[(set: $x to $frveg's 6)(set: $frveg's 6 to $frveg's 1)(set: $frveg's 1 to $x)(go-to: "plates")]\ what's on the purple and red plates? (if: $frveg is $solution)[Bong! The sound of a dinner gong echoes loudly around the room. ]You could [[step back->Red Room]] to admire the full effect,\ or go south through the [[red door->cellar]].<style> body { background-color: #fbf1d0; } tw-passage { color: #8d6d0c; } </style>{ (unless: (history:) contains "Yellow Room")[ (set: $bricks to 50) (set: $model14 to false) (set: $model15 to false) (set: $model16 to false) (set: $model17 to false) (set: $model18 to false) (set: $hasIvoryKey to false) (set: $hasYellowBall to false) ] You are in a room that appears to be made out of smooth yellow plastic. The floor is covered in a regular grid of short circular stumps. In one corner is a tiny table made out of small brown and green bricks. In the other is a large yellow cylinder, rounded top and bottom, with a face painted on it in black; in other words, a giant stylised head. } (unless: $hasYellowBall)[\ (click: "tiny table")[On the table is a shiny yellow ball –\ (link: "take it?")[(set: $hasYellowBall to true)(set: $inventory to it + (a: "yellow ball"))taken.] ]](if: ($bricks is 0))[\ (click: "giant stylised head")[\ (unless: $hasIvoryKey)[\ You peer into the head. Even though you definitely emptied it before,\ it now contains a key that looks like it was made from bone or ivory –\ (link: "take it?")[(set: $hasIvoryKey to true)(set: $inventory to it + (a: "ivory key"))taken.]\ ](else:)[The head is empty.] ]](else:)[(click: "giant stylised head")[It looks like the top might come off the head. ](click: "the top")[You give the top of the head a sharp twist, and it comes loose.\ You take it off and put it to one side, then peer inside the head.\ You see a set of instructions and lots of bricks. ](click: "lots of bricks")[You count out the bricks and compare them to the instructions.\ There are enough to [[build]] some but not all of the models. ]]A [[yellow door->cellar]] lies to the south.<style> body { background-color: #fbf1d0; } tw-passage { color: #8d6d0c; } </style>\ In front of you are $bricks bricks and a set of instructions.\ The instructions tell you how to make five models: * A car (14 bricks) – $model14[\ you have built this model,\ (link: "break it up?")[(set: $model14 to false)(set: $bricks to it + 14)(go-to: "build")]\ ](else:)[\ (if: $bricks < 14)[\ but you have run out of bricks.\ ](else:)[\ (link: "build this model?")[(set: $model14 to true)(set: $bricks to it - 14)(go-to: "build")]\ ]\ ] * A van (15 bricks) – $model15[\ you have built this model,\ (link: "break it up?")[(set: $model15 to false)(set: $bricks to it + 15)(go-to: "build")]\ ](else:)[\ (if: $bricks < 15)[\ but you have run out of bricks.\ ](else:)[\ (link: "build this model?")[(set: $model15 to true)(set: $bricks to it - 15)(go-to: "build")]\ ]\ ] * A lorry (16 bricks) – $model16[\ you have built this model,\ (link: "break it up?")[\ (set: $model16 to false)(set: $bricks to it + 16)(go-to: "build")]\ ](else:)[\ (if: $bricks < 16)[\ but you have run out of bricks.\ ](else:)[\ (link: "build this model?")[(set: $model16 to true)(set: $bricks to it - 16)(go-to: "build")]\ ]\ ] * A carriage (17 bricks) – $model17[\ you have built this model,\ (link: "break it up?")[(set: $model17 to false)(set: $bricks to it + 17)(go-to: "build")]\ ](else:)[\ (if: $bricks < 17)[\ but you have run out of bricks.\ ](else:)[\ (link: "build this model?")[(set: $model17 to true)(set: $bricks to it - 17)(go-to: "build")]\ ]\ ] * A steam engine (18 bricks) – $model18[\ you have built this model,\ (link: "break it up?")[(set: $model18 to false)(set: $bricks to it + 18)(go-to: "build")]\ ](else:)[\ (if: $bricks < 18)[\ but you have run out of bricks.\ ](else:)[\ (link: "build this model?")[(set: $model18 to true)(set: $bricks to it - 18)(go-to: "build")]\ ]\ ] (if: $bricks is 0)[It could be your imagination,\ but it seems like the giant stylised head is positively beaming at you. (click: "giant stylised head")[\ (unless: $hasIvoryKey)[\ You peer into the head. Even though you definitely emptied it before,\ it now contains a key that looks like it was made from bone or ivory –\ (link: "take it?")[(set: $hasIvoryKey to true)(set: $inventory to it + (a: "ivory key"))taken.]\ ](else:)[The head is empty.] ]]A [[yellow door->cellar]] lies to the south.<style> body { background-color: #d0fbf1; } tw-passage { color: #0c8d6d; } </style>{ (unless: (history:) contains "Cyan Room")[ (set: $chestOpen to false) (set: $hasGreenBall to false) ] You are in a wood-panelled room that looks for all the world like the captain's cabin on an old sailing ship. Indeed, there is a rhythmic creaking coming from the floor, a salty tang to the air, and through the window opposite you can see an endless expanse of blue-green ocean. How this can be possible in a cellar in a forest you don't know, but it's not the strangest thing that has happened to you today. } { A large desk, topped with turquoise leather and bounded by a brass rail, stands before you, and $chestOpen[an open](else:)[a closed] chest lies on the floor to one side. } (click: "closed chest")[The chest is made of oak and bound with iron bands.\ In the front is a lock panelled with bone or ivory.\ (if: $inventory contains "ivory key")[\ The ivory key you found looks like it might fit the lock.\ ](else:)[\ You do not have a key that would fit.\ ] ](click: "open chest")[\ The chest is made of oak and bound with iron bands. $hasGreenBall[\ It is empty.\ ](else:)[\ It is empty except for a shiny green ball –\ (link: "take it?")[(set: $hasGreenBall to true)(set: $inventory to it + (a: "green ball"))taken.]\ ] ](click: "ivory key")[You turn the ivory key in the lock and it turns easily.\ There is a quiet click. You open the lid.\ (set: $chestOpen to true)$hasGreenBall[\ The chest is empty.\ ](else:)[\ The chest is empty except for a shiny green ball –\ (link: "take it?")[(set: $hasGreenBall to true)(set: $inventory to it + (a: "green ball"))taken.]\ ] ]A [[cyan door->cellar]] lies to the south.<style> body { background-color: #dbfbd0; } tw-passage { color: #2d8d0c; } </style>{ (unless: (history:) contains "Green Room")[ (set: $inPlay to (shuffled: "brown", "black")) (set: $potted to (a:)) (set: $snooker to (a: "red", "yellow", "green", "brown", "blue", "pink", "black")) (set: $hasKey to false) ] You are in a dimly lit room lined with bottle-green drapes. There is a snooker table in the centre of the room, and on one side a rack containing a rule card, a cue, some chalk, a triangle, and a score counter. } (if: $potted is $snooker)[\ (click: "snooker table")[The table is a standard snooker table covered in green baize.\ There are six holes for potting balls into.\ (unless: $hasKey)[Inside one of the pockets is a steel key –\ (link: "take it?")[(set: $inventory to it + (a: "steel key"))\ (set: $hasKey to true)taken.]\ ] ]](else:)[\ (click: "rule card")[In snooker, you use the cue to hit the cue ball,\ so that it hits the other balls and knocks them into the holes round the edge;\ this is called potting.\ There are lots of rules for how to do this,\ and while you remember some of them, you need a reminder of the rest.\ Ah yes, there is special order for potting the balls,\ which turns out to be red, yellow, green, brown, blue, pink then black. ](click: "snooker table")[The table is a standard snooker table covered in green baize.\ There are six holes for potting balls into.\ You really should be trying to find a way to escape,\ but maybe a quick game would help you to think of one. ](click: "a cue")[(set: $inventory to it + (a: "cue"))\ You pick up the cue and rub some chalk on the tip to make it less slippy.\ You are ready to [[play->snooker]]. ]]\ A [[green door->cellar]] lies to the south.<style> body { background-color: #dbfbd0; } tw-passage { color: #2d8d0c; } </style>\ On the table(if: $inPlay's length is 0)[\ is a solitary white cue ball. ](else:)[,\ as well as the white cue ball,\ (if: $inPlay's length is 1)[is a (print: $inPlay's 1st) ball.]\ (else:)[are some coloured balls:\ a (print: $inPlay's 1st) ball](if: $inPlay's length > 1)[(if: $inPlay's length is 2)[ and](else:)[,]\ a (print: $inPlay's 2nd) ball](if: $inPlay's length > 2)[(if: $inPlay's length is 3)[ and](else:)[,]\ a (print: $inPlay's 3rd) ball](if: $inPlay's length > 3)[(if: $inPlay's length is 4)[ and](else:)[,]\ a (print: $inPlay's 4th) ball](if: $inPlay's length > 4)[(if: $inPlay's length is 5)[ and](else:)[,]\ a (print: $inPlay's 5th) ball](if: $inPlay's length > 5)[(if: $inPlay's length is 6)[ and](else:)[,]\ a (print: $inPlay's 6th) ball](if: $inPlay's length > 6)[ and\ a (print: $inPlay's 7th) ball](if: $inPlay's length > 1)[.]\ (if: ($inPlay's length + $potted's length) < 7)[Is that [[enough->more balls]]?] ](if: $potted is $snooker)[(unless: $hasKey)[\ As the last ball drops into the pocket,\ it makes a strange clunking sound.\ You delve around inside the pocket and find,\ among the coloured balls, a steel key –\ (link: "take it?")[(set: $inventory to it + (a: "steel key"))\ (set: $hasKey to true)taken.] ]](else:)[\ (click: " red ball")[(set: $inPlay to it - (a: "red"))(set: $potted to it + (a: "red"))(go-to: "snooker")]\ (click: "yellow ball")[(set: $inPlay to it - (a: "yellow"))(set: $potted to it + (a: "yellow"))(go-to: "snooker")]\ (click: "green ball")[(set: $inPlay to it - (a: "green"))(set: $potted to it + (a: "green"))(go-to: "snooker")]\ (click: "brown ball")[(set: $inPlay to it - (a: "brown"))(set: $potted to it + (a: "brown"))(go-to: "snooker")]\ (click: "blue ball")[(set: $inPlay to it - (a: "blue"))(set: $potted to it + (a: "blue"))(go-to: "snooker")]\ (click: "pink ball")[(set: $inPlay to it - (a: "pink"))(set: $potted to it + (a: "pink"))(go-to: "snooker")]\ (click: "black ball")[(set: $inPlay to it - (a: "black"))(set: $potted to it + (a: "black"))(go-to: "snooker")]\ (if: $potted's length > 0)[You have potted\ the (print: $potted's 1st) ball](if: $potted's length > 1)[(if: $potted's length is 2)[ and](else:)[,]\ the (print: $potted's 2nd) ball](if: $potted's length > 2)[(if: $potted's length is 3)[ and](else:)[,]\ the (print: $potted's 3rd) ball](if: $potted's length > 3)[(if: $potted's length is 4)[ and](else:)[,]\ the (print: $potted's 4th) ball](if: $potted's length > 4)[(if: $potted's length is 5)[ and](else:)[,]\ the (print: $potted's 5th) ball](if: $potted's length > 5)[(if: $potted's length is 6)[ and](else:)[,]\ the (print: $potted's 6th) ball](if: $potted's length > 6)[and\ the (print: $potted's 7th) ball](if: $potted's length > 0)[.\ You revel in your excellent snooker skills,\ though of course you can always\ (link: "start again")[(set: $inPlay to it + $potted)(set: $potted to (a:))(go-to: "snooker")]\ if you need to. ]]\ The [[rack->Green Room]] stands to the side.\ A [[green door->cellar]] lies to the south.<style> body { background-color: #dbfbd0; } tw-passage { color: #2d8d0c; } </style>{ (set: $balls to (shuffled: "red ball", "yellow ball", "green ball", "blue ball", "pink ball")) (set: $foundBall to false) You fish around in your pockets for more snooker balls to put on the table. Hmm. (if: $inventory contains (1 of $balls))[ (set: $foundBall to true) A (print: 1 of $balls). ] (if: $inventory contains (2 of $balls))[ (set: $foundBall to true) A (print: 2 of $balls). ] (if: $inventory contains (3 of $balls))[ (set: $foundBall to true) A (print: 3 of $balls). ] (if: $inventory contains (4 of $balls))[ (set: $foundBall to true) A (print: 4 of $balls). ] (if: $inventory contains (5 of $balls))[ (set: $foundBall to true) A (print: 5 of $balls). ] $foundBall[ Will that do? ](else:)[ You don't have any on you, which is hardly surprising. Is there any chance you might find some? ] (click: "blue ball")[\ (set: $inventory to it - (a: "blue ball"))\ (set: $inPlay to it + (a: "blue"))\ ] (click: "green ball")[\ (set: $inventory to it - (a: "green ball"))\ (set: $inPlay to it + (a: "green"))\ ] (click: "pink ball")[\ (set: $inventory to it - (a: "pink ball"))\ (set: $inPlay to it + (a: "pink"))\ ] (click: "red ball")[\ (set: $inventory to it - (a: "red ball"))\ (set: $inPlay to it + (a: "red"))\ ] (click: "yellow ball")[\ (set: $inventory to it - (a: "yellow ball"))\ (set: $inPlay to it + (a: "yellow"))\ ] } You survey the [[table->snooker]] again.The steel key does indeed fit neatly in the lock. Hardly daring to breathe, you turn the key. To your immense relief, there is a loud clunk as the door unlocks. You yank open the door and, pausing only to turn out the light behind you, bound up the stairs. You are free! Now all you have to find out where the witch went... **Congratulations, you have won.**<p style='text-align:center;'><small>~ ~ ~ \ (link:"Save progress")[(if:(save-game:"Slot A"))[Progress saved!](else: )[Sorry, I couldn't save your progress.]] \ (if: (saved-games:) contains "Slot A")[| (link: "Load game")[(load-game:"Slot A")]] \ ~ ~ ~</small></p>