#!/bin/bash # BASH model for potential Aliceblue Android game # Authors: John Selmys, Chris Selmys, Melinda Selmys # Tested by: Agnes Selmys, Barbara Selmys # # Date: Summer 2012, Winter 2019 # # Notes: # 1. This script should be run in a Gnome Terminal # with BASH version 4 or better to work properly # 2. You'll need to install the dconf command using # sudo apt-get install dconf-cli # 3. You'll need to install the resize command using # sudo apt-get install xterm # # To run the script enter # ./aliceblue # obviously this function should perform a restart # setting all data to initial values, except of course, # the initial room is chosen randomally # https://creativecommons.org/licenses/by-sa/3.0/us/ [CC - BY - SA link] # start a timer in shared memory, clicking every second function startTimer() { echo 0 > /tmp/aliceTimer while true do echo $(($(/tmp/aliceTimer sleep 1 done } # If user hits CTRL-C then quit the game function abortAlice() { quitGame } function doTop() { local anykey while [ "$anykey" != "q" ] do clear top -n 1 -b | head -23 | sed 's/Xorg/ALICE/' sleep 2 read anykey done exit } function paplay() { start $1 } function dconf() { true } function wmctrl() { true } function resize() { true } function doFortune() { paplay sound/Windchimes.ogg 2>/dev/null & local number x if [ -f myfortune.txt ] then number=$(cat myfortune.txt | wc -l) x=$((RANDOM%number+1)) head -$x myfortune.txt | tail -1 | fmt -w 80 else fortune | fmt -w 80 fi read -n1 -s -r exit } function doCredits() { paplay sound/Cin-Sting.ogg 2>/dev/null & setUnixColours "#F0F8FF" "#000000" echo -e '\033[7mALICE BLUE - an interactive memory \033[0m' setUnixColours2 "#F0F8FF" "#000000" echo echo "Written by Chris, John & Melinda Selmys"| fmt -w 80 echo echo -e "Music by Eric Matyas (www.soundimage.org)"| fmt -w 80 echo echo -e "See documentation for more detail and additional credits. (Alice-Manual.pdf)."| fmt -w 80 echo read -n1 -s -r exit } function doPhobia() { paplay sound/Static.ogg 2>/dev/null & for((i=0;i<888;i++)) do local number x if [ -f phobia.txt ] then number=$(cat phobia.txt | wc -l) x=$((RANDOM%number+1)) head -$x phobia.txt | tail -1 | fmt -w 80 else fortune | fmt -w 80 sleep 0.05 fi done sleep .1 setUnixColours "#000000" "#FF0000" sleep .1 setUnixColours "#000000" "#000000" exit } function restartGame() { score=0 initialize fillup1 currentRoom=$(($RANDOM%12 + 1)) } # prints characters one at a time with a delay in between # a delay of 0.05 seconds gives a nice effect function slowPrint() { arg=${@} for (( i=0; i < ${#arg}; i+=1 )) ; do echo -n "${arg:$i:1}" sleep $PRINTDELAY done } # set foreground and background colours for terminal function setUnixColours() { # $1 is foreground colour #RRGGBB # $2 is background colour #RRGGBB # for example do the call like this # setUnixColours "#RRGGBB" "#RRGGBB" frr=$(printf "%d" "0x`(echo "$1" | cut -c2,3)`") fgg=$(printf "%d" "0x`(echo "$1" | cut -c4,5)`") fbb=$(printf "%d" "0x`(echo "$1" | cut -c6,7)`") brr=$(printf "%d" "0x`(echo "$2" | cut -c2,3)`") bgg=$(printf "%d" "0x`(echo "$2" | cut -c4,5)`") bbb=$(printf "%d" "0x`(echo "$2" | cut -c6,7)`") # now set the terminal colours echo -ne "\033[38;2;$frr;$fgg;$fbb;48;2;$brr;$bgg;${bbb}m";clear } # set foreground and background colours for terminal without a clear at the end, used for fixing a strange bug we don't understand in a hackish way function setUnixColours2() { # $1 is foreground colour #RRGGBB # $2 is background colour #RRGGBB # for example do the call like this # setUnixColours "#RRGGBB" "#RRGGBB" frr=$(printf "%d" "0x`(echo "$1" | cut -c2,3)`") fgg=$(printf "%d" "0x`(echo "$1" | cut -c4,5)`") fbb=$(printf "%d" "0x`(echo "$1" | cut -c6,7)`") brr=$(printf "%d" "0x`(echo "$2" | cut -c2,3)`") bgg=$(printf "%d" "0x`(echo "$2" | cut -c4,5)`") bbb=$(printf "%d" "0x`(echo "$2" | cut -c6,7)`") # now set the terminal colours echo -ne "\033[38;2;$frr;$fgg;$fbb;48;2;$brr;$bgg;${bbb}m"; } # Get original (initial) terminal information function getTerminalInfo() { # get terminal profile ID ID="" #$(gsettings get org.gnome.Terminal.ProfilesList default | tr -d \') profileID=":$ID/" # get terminal colours oldBackground="" #$(dconf read /org/gnome/terminal/legacy/profiles:/${profileID}background-color) oldForeground="" #$(dconf read /org/gnome/terminal/legacy/profiles:/${profileID}foreground-color) # get original font oldFont="" #$(dconf read /org/gnome/terminal/legacy/profiles:/${profileID}font) # get original terminal size ORIGINAL_COLUMNS=$(tput cols) ORIGINAL_LINES=$(tput lines) } # introduce the player to the game function prologue() { clear paplay sound/Windchimes.ogg 2>/dev/null & setColours "#F0F8FF" "#0000CD" local number x if [ -f myfortune.txt ] then number=$(cat myfortune.txt | wc -l) x=$((RANDOM%number+1)) head -$x myfortune.txt | tail -1 | fmt -w 80 else fortune | fmt -w 80 fi sleep 5 clear echo "Do not go into the mirrors. Do not be curious about the mirrors or about what they contain. There are demons in the mirrors."| fmt -w 80 echo echo echo ALICE BLUE echo An Interactive Memory echo echo Version 64 Release 1 Autumn, 2019 echo echo echo echo "The girl in the mirror is sleight, she has just woken up and her hair is short and sticking out at various scraggly angles. I remember that my hair was golden like liquid sunlight, and I was a princess, but the girl in the mirror has strange, alien skin. Her face is saddle-brown, the colour of tanned leather, her hair is like the feathers of a bedraggled crow. She is a stranger. She lives on the other side of the mirror where the demons are."| fmt -w 80 echo echo #amixer -q set 'Master' 30% paplay sound/Arrival.ogg & prologue_pid=$! read -p "Press [Enter] to begin " anykey # kill $prologue_pid setColours "#000000" "#00FF00" # ogg123 -q -r sound/Darkness.ogg & # ogg123 -q -r sound/Darkness.ogg sound/Alien.ogg sound/Mech-Drone.ogg sound/Darkness.ogg sound/Deserted.ogg sound/Disturbed.ogg & # darkness_pid=$! clear } # summarize the results of the game and call quitGame # to reset the terminal back to original state function epilogue() { setColours "#F0F8FF" "#0000CD" echo echo "Thank you for playing Alice Blue. Your final score is $(($score/10)) out of a possible 124 points. Please send coments, questions, bug reports, or any other feedback to numinologist@protonmail.com."| fmt -w 100 echo echo read -p "" anykey endGame } function doInvent() { paplay sound/Lamp_On.ogg 2>/dev/null & paplay sound/Static.ogg & setUnixColours "#DCDCDC" "#000000" echo -e '\033[7mInventory \033[0m' setUnixColours2 "#DCDCDC" "#000000" echo echo You are carrying: echo echo A heavy heart echo An empty stomach echo Some aching muscles echo Two bloody feet echo Grandmas stories echo Missing time echo An alter ego echo Some forgotten memories echo A breath of Spring echo A burning love echo Creeping terror echo A ray of hope echo read -n1 -s -r paplay sound/Lamp_On.ogg 2>/dev/null & sleep .1 exit } function doExits() { paplay sound/cp4.ogg & setUnixColours "#F0F8FF" "#0000CD" echo -e '\033[7mExits \033[0m' setUnixColours2 "#F0F8FF" "#0000CD" echo echo Nowhere, Somewhere, Elsewhere, Wherever... echo read -n1 -s -r pp1="";pp2="";pp3="";pp4="";pp5="" exit } function doUndo() { paplay sound/cp1.ogg & setUnixColours "#F0F8FF" "#0000CD" echo -e '\033[7mOne Way Street \033[0m' setUnixColours2 "#F0F8FF" "#0000CD" echo echo Time rolls forward only... echo read -n1 -s -r pp1="";pp2="";pp3="";pp4="";pp5="" exit } function doSuperC() { paplay sound/cp4.ogg & setUnixColours "#A52A2A" "#000000" echo -e '\033[7mAdjective \033[0m' setUnixColours2 "#A52A2A" "#000000" echo echo "I’m afraid to speak."| fmt -w 80 echo echo "Umm… Diddle, diddle? Ayyy"| fmt -w 80 echo echo "So it goes."| fmt -w 80 echo read -n1 -s -r exit } function doFootnote1() { paplay cx6.ogg & setUnixColours "#A52A2A" "#000000" echo -e '\033[7mFOOTNOTE 1 \033[0m' setUnixColours2 "#A52A2A" "#000000" echo echo "This is a work of fiction. Names, characters, places and incidents are the products of the author's imagination. Any resemblances to actual events, locales or persons, living or otherwise, are open to a wide range of possible interpretations, all of which are at least a little bit creepy."| fmt -w 80 echo read -n1 -s -r exit } function doSing() { paplay sound/sing.ogg & setUnixColours "#00FF00" "#000000" echo -e '\033[7mHope \033[0m' setUnixColours2 "#00FF00" "#000000" echo read -n1 -s -r exit } function doCragne() { paplay sound/cp4.ogg & setUnixColours "#000000" "#FFD700" echo -e '\033[7mBackwater \033[0m' setUnixColours2 "#000000" "#FFD700" echo echo "That verb dosen’t work here, or, at least, not right now, but it might work somewhere later."| fmt -w 80 echo read -n1 -s -r exit } function doSmell() { paplay sound/cp2.ogg & setUnixColours "#F0F8FF" "#0000CD" echo -e '\033[7mBody \033[0m' setUnixColours2 "#F0F8FF" "#0000CD" echo echo "[Scratch 'n' sniff spot number 8. Hit the RETURN/ENTER key to continue.]"| fmt -w 80 echo read -n1 -s -r exit } function doFeel() { paplay sound/cp2.ogg & setUnixColours "#F0F8FF" "#0000CD" echo -e '\033[7mBody \033[0m' setUnixColours2 "#F0F8FF" "#0000CD" echo echo "[Super-Feelie pouch number 2. Hit the RETURN/ENTER key to continue.]"| fmt -w 80 echo read -n1 -s -r exit } function doListen() { paplay sound/cp2.ogg & local anykey setUnixColours "#F0F8FF" "#0000CD" echo -e '\033[7mBody \033[0m' setUnixColours2 "#F0F8FF" "#0000CD" echo echo "[Flexidisc track number 4. Hit the RETURN/ENTER key to continue.]"| fmt -w 80 echo read -n1 -s -r exit } function doTaste() { paplay sound/cp2.ogg & local anykey setUnixColours "#F0F8FF" "#0000CD" echo -e '\033[7mBody \033[0m' setUnixColours2 "#F0F8FF" "#0000CD" echo echo "[The Gainsboro coloured jellybean. Hit the RETURN/ENTER key to continue.]"| fmt -w 80 echo read -p "" anykey exit } function doTopics() { paplay sound/q7.ogg & local anykey setUnixColours "#00FF00" "#000000" echo -e '\033[7m??? \033[0m' setUnixColours2 "#00FF00" "#000000" echo echo "I would like to ask Grandma about the flowers."| fmt -w 80 echo read -n1 -s -r exit } function doThatway() { paplay sound/cp4.ogg & setUnixColours "#00FF00" "#000000" echo -e '\033[7m??? \033[0m' setUnixColours2 "#00FF00" "#000000" echo echo You can\'t go that way... echo read -n1 -s -r exit } function doCry() { paplay sound/cp2.ogg & setUnixColours "#00FF00" "#000000" echo -e '\033[7mBody \033[0m' setUnixColours2 "#00FF00" "#000000" echo echo "Torrents of sorrow cascade down your face."| fmt -w 80 echo read -n1 -s -r exit } function doWait() { paplay sound/cp2.ogg & setUnixColours "#00FF00" "#000000" echo -e '\033[7mIn the Shell \033[0m' setUnixColours2 "#00FF00" "#000000" echo echo Time keeps rolling on... echo read -n1 -s -r exit } function doLook() { paplay sound/Arrival.ogg & setUnixColours "#00FF00" "#000000" echo -e '\033[7mIn the Shell \033[0m' setUnixColours2 "#00FF00" "#000000" echo echo "The girl in the mirror is sleight, she has just woken up and her hair is short and sticking out at various scraggly angles. I remember that my hair was golden like liquid sunlight, and I was a princess, but the girl in the mirror has strange, alien skin. Her face is the colour of tanned leather, her hair is like the feathers of a bedraggled crow. She is a stranger. She lives on the other side of the mirror where the demons are."| fmt -w 80 echo read -n1 -s -r exit } function doWhoami() { paplay sound/cp4.ogg & setUnixColours "#00FF00" "#000000" echo -e '\033[7mIn the Shell \033[0m' setUnixColours2 "#00FF00" "#000000" echo echo "alice?"| fmt -w 80 echo read -n1 -s -r exit } function doPwd() { paplay sound/cx2.ogg & setUnixColours "#00FF00" "#0000CD" echo -e '\033[7mTerminal \033[0m' setUnixColours2 "#00FF00" "#0000CD" echo echo "/homeless/alice"| fmt -w 80 echo read -n1 -s -r exit } function doScream() { paplay sound/Scream.ogg & setUnixColours "#000000" "#000000" sleep 1.8 setUnixColours "#000000" "#FF0000" sleep .1 setUnixColours "#000000" "#000000" exit } # functions for the list of named colours function doAliceBlue() { paplay sound/Lamp_On.ogg 2>/dev/null & paplay sound/cx6.ogg 2>/dev/null & # setUnixColours "#000000" "#F0F8FF" setUnixColours "#F0F8FF" "#0000CD" echo -e '\033[7mIn the Shell \033[0m' # setUnixColours2 "#000000" "#F0F8FF" setUnixColours2 "#F0F8FF" "#0000CD" echo echo "Everybody knows that narrative is an emergent property of conciousness, but the reverse is also true..."| fmt -w 80 echo read -n1 -s -r paplay sound/Lamp_On.ogg 2>/dev/null & sleep .5 exit } function doRebeccaPurple() { paplay sound/Lamp_On.ogg 2>/dev/null & paplay sound/cx6.ogg 2>/dev/null & # setUnixColours "#000000" "#F0F8FF" setUnixColours "#663399" "#000000" echo -e '\033[7mSomeone Else \033[0m' # setUnixColours2 "#000000" "#F0F8FF" setUnixColours2 "#663399" "#000000" echo echo "Everybody knows that narrative is an emergent property of conciousness, but the reverse is also true..."| fmt -w 80 echo read -n1 -s -r paplay sound/Lamp_On.ogg 2>/dev/null & sleep .5 exit } function doAntiqueWhite() { paplay sound/Horrible.ogg & setUnixColours "#FAEBD7" "#000000" echo -e '\033[7mThe White Archetypal Square \033[0m' setUnixColours2 "#FAEBD7" "#000000" echo echo "The Judge The Fool The Crone"| fmt -w 80 echo echo "The Cripple * The Simpleton"| fmt -w 80 echo echo "The Accuser The Mule The Witch"| fmt -w 80 echo read -n1 -s -r exit } function doBlueViolet() { paplay sound/Sinister.ogg & setUnixColours "#8A2BE2" "#000000" echo -e '\033[7mOutside \033[0m' setUnixColours2 "#8A2BE2" "#000000" echo echo "Well lit by darkness"| fmt -w 80 echo "Flowerbells fall electric"| fmt -w 80 echo "On Olivedrab moss"| fmt -w 80 echo read -n1 -s -r exit } function doBrown() { paplay sound/Lul-Sting.ogg & setUnixColours "#A52A2A" "#FFD700" echo -e '\033[7mAshdown Forest \033[0m' setUnixColours2 "#A52A2A" "#FFD700" echo echo "Winius ille est tristus, tristus, ursus, et clamat ad te..."| fmt -w 80 echo read -n1 -s -r exit } function doBurlywood() { paplay sound/Ghoul.ogg & setUnixColours "#8B4513" "#DEB887" echo -e '\033[7mThe Secret Box \033[0m' setUnixColours2 "#8B4513" "#DEB887" echo echo "There was a place in my heart that I usually kept locked up, a place on the inside where I went to weep. Now the door to that weeping place had opened itself a little, and the sacred smoke from inside was getting into my eyes."| fmt -w 80 echo read -n1 -s -r exit } function doChartreuse() { paplay sound/Dread.ogg 2>/dev/null & setUnixColours "#7FFF00" "#C71585" echo -e '\033[7mTop of the Hill \033[0m' setUnixColours2 "#7FFF00" "#C71585" echo echo "It was on the third day that I finally realized the truth. Looking down at my hands. I could see through them. I couldn't see through them a lot, but I could a little."| fmt -w 80 echo read -n1 -s -r exit } function doCoral() { paplay sound/Sunday.ogg & setUnixColours "#FF7F50" "#000000" echo -e '\033[7mUnreal City \033[0m' setUnixColours2 "#FF7F50" "#000000" echo echo "Alex has a way of walking, very confident, where he does not look at the things that are sliding past him. The city is a beige haze, a ghost city where corn-husk people go about their business in hollow throngs. It is a good thing that Alex knows where he is going. I would get lost."| fmt -w 80 echo read -n1 -s -r exit } function doCornflowerBlue() { paplay sound/Illo.ogg & 2>/dev/null & setUnixColours "#6495ED" "#000000" echo -e '\033[7mThe Cosmic Egg \033[0m' setUnixColours2 "#6495ED" "#000000" echo echo "'Listen: there was once a king sitting on his throne. Around Him stood great and wonderfully beautiful columns ornamented with ivory, bearing the banners of the king with great honour. Then it pleased the king to raise a small feather from the ground, and he commanded it to fly. The feather flew, not because of anything in itself but because the air bore it along. Thus am I, a feather on the breath of God.'"| fmt -w 80 echo echo "~ Hildegaard of Bingen"| fmt -w 80 echo read -n1 -s -r exit } function doCornsilk() { paplay sound/Monster.ogg & setUnixColours "#000000" "#FFF8DC" echo -e '\033[7mAshdown Forest \033[0m' setUnixColours2 "#000000" "#FFF8DC" echo echo "My grandfather had once taken me into the woods and shown me a terrible thing. A butterfly's cocoon with a tiny, tiny hole in the side. He opened it with the tip of his knife. Inside there were wasp larvae, their translucent bodies slowly hardening to black. The half-formed wings on the butterfly’s exoskeleton were reduced to a glittering silver filigree."| fmt -w 80 echo echo "“The wasp lays her eggs inside of the butterfly's pupa. When the eggs hatch they devour the butterfly in the midst of its metamorphosis. When the cocoon opens it only releases a wasp.”"| fmt -w 80 echo read -n1 -s -r exit } function doCrimson() { paplay sound/Horrible.ogg & setUnixColours "#DC143C" "#000000" echo -e '\033[7mAshdown Forest \033[0m' setUnixColours2 "#DC143C" "#000000" echo echo "Sometimes a human being turns into an animal. A snake, or a bear, or a dog. When this happens, their right to live or to die must be judged as the living and the dying of animals. A good animal, not needed for food, an animal like that, it is wrong to kill it. But if the animal is dangerous, if it attacks a human being..."| fmt -w 80 echo read -n1 -s -r exit } function doDarkBlue() { paplay sound/Freezer.ogg & setUnixColours "#F0FFFF" "#00008B" echo -e '\033[7mNearer, Mirror \033[0m' setUnixColours2 "#F0FFFF" "#00008B" echo echo "Objects in the mirror may be closer than they appear."| fmt -w 80 echo read -n1 -s -r exit } function doDarkRed() { paplay sound/HongKong.ogg & setUnixColours "#0000CD" "#8B0000" echo -e '\033[7mChinese Room \033[0m' setUnixColours2 "#0000CD" "#8B0000" echo echo "Red dragons on the walls and rice-paper windows. A scrap of paper appears under the door. All around are books piled on books, and one great Master Book, which tells where to look in the others. There are strange symbols on the paper. The Master Book is titled, “What to do if someone pushes Chinese lettering under the door.” I look at the symbols. Are they Chinese? What if they are Korean? Or Verdurian? In a web of indecision: caught. If the writing is Chinese I must interpret it. If it is not I would be making a mistake. I rip tiny strips off the edge of the paper, as fine as I can peel them. It Chineses... It Chineses not..."| fmt -w 80 echo read -n1 -s -r exit } function doDarkSlateGray() { paplay sound/Windchimes.ogg & setUnixColours "#2F4F4F" "#8B0000" echo -e '\033[7mZero Room \033[0m' setUnixColours2 "#2F4F4F" "#8B0000" echo echo "The Doctor said that he, like Alice, tries to believe seven impossible things before breakfast. Do I do that?"| fmt -w 80 echo read -n1 -s -r exit } function doDimGray() { paplay sound/Sphinx.ogg & setUnixColours "#696969" "#DCDCDC" echo -e '\033[7mOutside \033[0m' setUnixColours2 "#696969" "#DCDCDC" echo echo "Wind putting footsteps"| fmt -w 80 echo "to bed under dusty sheets"| fmt -w 80 echo "sings of eternity"| fmt -w 80 echo read -n1 -s -r exit } function doFirebrick() { paplay sound/Surreal.ogg& setUnixColours "#B22222" "#F0F8FF" echo -e '\033[7mTop of the Hill \033[0m' setUnixColours2 "#B22222" "#F0F8FF" echo echo "A smoke signal sent from half-way up the hill would have been an indication that all is well. This one signifies danger."| fmt -w 80 echo read -n1 -s -r exit } function doGainsboro() { paplay sound/Antonio.ogg& setUnixColours "#DC143C" "#FFD700" echo -e '\033[7mPalate \033[0m' setUnixColours2 "#DC143C" "#FFD700" echo echo "Tastes just like real Gainsboro..."| fmt -w 80 echo read -n1 -s -r exit } function doGold() { paplay sound/Cookie.ogg& setUnixColours "#DC143C" "#FFD700" echo -e '\033[7mA Kingly Feast \033[0m' setUnixColours2 "#DC143C" "#FFD700" echo echo "A platter with buttery-golden shortbreads from Scotland. Someone had formed a little fortress out of them, with tiny icing figures of men in kilts. An army with bagpipes squatted on a watermelon hill, and little wild-strawberry British soldiers were running away, tumble-bumble, into a sea of foaming whipped cream."| fmt -w 80 echo read -n1 -s -r exit } function doGoldenrod() { paplay sound/Sphinx.ogg & setUnixColours "#DAA520" "#A52A2A" echo -e '\033[7mHeart of Gold \033[0m' setUnixColours2 "#DAA520" "#A52A2A" echo echo "Lucretius studied the sunbeams in shadowy spaces and found dancing bodies moved by invisible blows."| fmt -w 80 echo read -n1 -s -r exit } function doHotPink() { paplay sound/Sunday.ogg & setUnixColours "#000000" "#FF69B4" echo -e '\033[7mUnreal City \033[0m' setUnixColours2 "#000000" "#FF69B4" echo echo "Across the street there is a flashing neon sign of a large pink hand with the word “psychic” underneath it. A yellowed bill declaims that Madame Sosistris can tell you your past, your present, your future. My 'fortune'. Also, that the first fifteen minutes will be free. I do not have any money, but the clock tells me that I have fifteen minutes free."| fmt -w 80 echo read -n1 -s -r exit } function doLawnGreen() { paplay sound/Sunday.ogg & setUnixColours "#006400" "#7CFC00" echo -e '\033[7mTop of the Hill \033[0m' setUnixColours2 "#006400" "#7CFC00" echo echo "“I couldn't find you, so I decided that I would wander about in the woods. My plan was to go blind and live on nothing except for roots and berries, bereft of sanity by grief, and then I was going to one day find you in a clearing, or something like that. It wasn't a very well developed plan.”"| fmt -w 80 echo echo "“What else.”" echo echo "“I found you on top of this hill. You had a leaf under your tongue. When I took it out you came back to life.”"| fmt -w 80 echo read -n1 -s -r exit } function doLightBlue() { paplay sound/Danube.ogg & setUnixColours "ADD8E6" "#000000" echo -e '\033[7mAn der Schönen Blauen Donau \033[0m' setUnixColours2 "ADD8E6" "#000000" echo echo "Der Teufel hast den Waltzen genahmt."| fmt -w 80 echo read -n1 -s -r exit } function doLightGoldenrodYellow() { paplay sound/Drums.ogg & setUnixColours "#FAFAD2" "#000000" echo -e '\033[7mMidas Bluffs \033[0m' setUnixColours2 "#FAFAD2" "#000000" echo echo "It isn’t true what"| fmt -w 80 echo "you’ve been told, everything I"| fmt -w 80 echo "touch turns to pyrite"| fmt -w 80 echo read -n1 -s -r exit } function doLightGreen() { paplay sound/Sinister.ogg & setUnixColours "#90EE90" "#000000" echo -e '\033[7mTop of the Hill \033[0m' setUnixColours2 "#90EE90" "#000000" echo echo "“Give me the leaf.”"| fmt -w 80 echo echo "“I didn't keep it.”"| fmt -w 80 echo echo "“Then we are lost.”"| fmt -w 80 echo read -n1 -s -r exit } function doLightPink() { paplay sound/cx3.ogg & paplay sound/Sinister.ogg & setUnixColours "#9FFB6C1" "#000000" echo -e '\033[7m Tiffany \033[0m' setUnixColours2 "#9FFB6C1" "#000000" echo echo "“If he asks, your name is Tiffany.” Alex had taken me out shopping with the money from the man we killed. We bought a white fur fox to wrap around my neck, and some dresses that seemed made of spun sugar and spider webs. “This is what Tiffany wears,” he says."| fmt -w 80 echo echo "I did not really get to know Tiffany. When the white fox settled around my shoulders I would forget everything."| fmt -w 80 echo read -n1 -s -r exit } function doLimeGreen() { paplay sound/Illo.ogg & setUnixColours "#000000" "#32CD32" echo -e '\033[7mIn Illo Tempore \033[0m' setUnixColours2 "#000000" "#32CD32" echo echo "The snake showed me the way. Not a poisonous snake, a house snake. A little one that ate the mice. Those snakes were the brothers of one of our ancestors, a very long time ago. They were transformed into snakes, I don't remember why anymore. At first their brother was frightened, but they only looked evil. Really, they were his kin. Do you see?"| fmt -w 80 echo read -n1 -s -r exit } function doMediumAquamarine() { paplay sound/Monkey.ogg & setUnixColours "#F0F8FF" "#66CDAA" echo -e '\033[7mAt Sea \033[0m' setUnixColours2 "#F0F8FF" "#66CDAA" echo echo "“Do you think that when Ishmael told his tale, anyone thought it was the truth?”"| fmt -w 80 echo echo "“Every man's hand was against him.”"| fmt -w 80 echo read -n1 -s -r exit } function doMediumBlue() { paplay sound/Cookie.ogg & setUnixColours "#FFFFF0" "#0000CD" echo -e '\033[7mA Kingly Feast \033[0m' setUnixColours2 "#FFFFF0" "#0000CD" echo echo "A German torte crowned the feast: seven layered, with marzipan saints and angels climbing up and down caramel ladders along its sides. At the top a glory-cloud of spun sugar obscured a sapphire throne of blueberry sorbet."| fmt -w 80 echo read -n1 -s -r exit } function doMediumSpringGreen() { paplay sound/Mister.ogg & setUnixColours "#00FA9A" "#000000" echo -e '\033[7mAt Sea \033[0m' setUnixColours2 "#00FA9A" "#000000" echo echo "“Out, vile spinach!”"| fmt -w 80 echo echo "“Why is the spinach vile?”"| fmt -w 80 echo echo "“That’s just what Goneril said to Popeye. Now watch, I just drop this down the hatch, and faster than boiled asparagus, I can conquer the fiercest foes with a single blow of my anti-anemic fist!”"| fmt -w 80 echo read -n1 -s -r exit } function doMediumTurquoise() { paplay sound/Mister.ogg & setUnixColours "#48D1CC" "#000000" echo -e '\033[7mAt Sea \033[0m' setUnixColours2 "#48D1CC" "#000000" echo echo "“I take you, Alice Blue, to be my wife, by the power invested in me as the captain of this ship, with the sun as my witness. I shall be lovingly faithful, protect and care for you, for better or worse. We shall not part!”"| fmt -w 80 echo echo "“'Till death,” I reminded him."| fmt -w 80 echo echo "“Let him try it.”"| fmt -w 80 echo read -n1 -s -r exit } function doMediumVioletRed() { paplay sound/Arrival.ogg & setUnixColours "#C71585" "#000000" echo -e '\033[7mPage Four \033[0m' setUnixColours2 "#C71585" "#000000" echo echo "Lashings of the old"| fmt -w 80 echo "ultraviolence bit, said"| fmt -w 80 echo "the little red hen"| fmt -w 80 echo read -n1 -s -r exit } function doNavajoWhite() { paplay sound/Bossa.ogg & setUnixColours "#FFDEAD" "#000000" echo -e '\033[7mGolgotha \033[0m' setUnixColours2 "#FFDEAD" "#000000" echo echo "Eloi Eloi Thanam o'n Dhoul!"| fmt -w 80 echo read -n1 -s -r exit } function doExample() { paplay sound/Lamp_On.ogg 2>/dev/null & setUnixColours "#F0F8FF" "#0000CD" echo -e '\033[7m \033[0m' setUnixColours2 "#F0F8FF" "#0000CD" echo echo 'Some other text...' # this read statement has no prompt and accepts ANY character including CR read -n1 -s -r paplay sound/Lamp_On.ogg 2>/dev/null & sleep .5 exit } function doOliveDrab() { paplay sound/Science.ogg & setUnixColours "#688E23" "#000000" echo -e '\033[7mMaze of Twisting Pines \033[0m' setUnixColours2 "#688E23" "#000000" echo echo "They all look as alike as the pieces of sky in a jigsaw puzzle."| fmt -w 80 echo read -n1 -s -r exit } function doOrangeRed() { paplay sound/Science.ogg & setUnixColours "#FF4500" "#000000" echo -e '\033[7mMaze of Twisty Pines \033[0m' setUnixColours2 "#FF4500" "#000000" echo echo "OrangeRed: Constant morphology and low genetic varriation suggest recent near extinction. Or is that blackjack?"| fmt -w 80 echo read -n1 -s -r exit } function doOrchid() { setUnixColours "#DA70D6" "#808000" echo -e '\033[7mOrchidaceae \033[0m' setUnixColours2 "#DA70D6" "#808000" echo echo "Vanilla beans are not really beans. A capsule filled with thousands of gleaming orbs that nourish the wooly bear moths. I’m singing ha-dee-dah."| fmt -w 80 echo read -n1 -s -r exit } function doPurplishBrown() { setUnixColours "#00FF00" "#0000CD" echo -e '\033[7mTerminal \033[0m' setUnixColours2 "#00FF00" "#0000CD" echo echo "'Purplish brown? Let's agree it / is a color so bad we all flee it / it has no good use / so let's name it Puce / from the sound we make when we see it.' ~ Walter Darby Bannard."| fmt -w 80 echo read -n1 -s -r exit } function doPeru() { paplay sound/Cookie.ogg& setUnixColours "#8B4513" "#CD853F" echo -e '\033[7mThe King\s Feast \033[0m' setUnixColours2 "#8B4513" "#CD853F" echo echo "Next there was a chocolate city from Peru. Cookie-cutter llamas climbed the terraced mountains, and raw chocolate beans, leafed in real gold, were won and lost in games of dice by cocoa-faced natives."| fmt -w 80 echo read -n1 -s -r exit } function doPink() { setUnixColours "#BA55D3" "#FFC0CB" echo -e '\033[7mMedicine Room \033[0m' setUnixColours2 "#BA55D3" "#FFC0CB" echo echo "There are needles strewn across the floor, waiting for someone to come and pick them up. I am terrified that I will step on one of them. When I was escaping there were needles everywhere and they pricked my feet. The man who goes up and down along the rows doesn't look much like a doctor, and that endears me to him a little bit. He bows to his patients, and treats them with deference, and chalks down their ailments on a little slate board. He is a purveyor of many medicines: honeyed liquids in hypodermic tubes, pale powders and little pills as colourful as jelly beans. He gives the patients their dosages and then retreats politely, allowing them to administer their dose to themselves."| fmt -w 80 echo read -n1 -s -r exit } function doPlum() { paplay sound/Arabian.ogg & setUnixColours "#DDA0DD" "#800080" echo -e '\033[7mPage One \033[0m' setUnixColours2 "#DDA0DD" "#800080" echo echo "Ill prune-black toss done"| fmt -w 80 echo "Bloody cut the tail undone"| fmt -w 80 echo "Sheherazade"| fmt -w 80 echo read -n1 -s -r exit } function doRosyBrown() { setUnixColours "#000000" "#BC8F8F" echo -e '\033[7mAt Sea \033[0m' setUnixColours2 "#000000" "#BC8F8F" echo echo "“Don't call me that. It isn't my real name.”"| fmt -w 80 echo echo "“Do you have a real name? One that you remember, I mean?”"| fmt -w 80 echo echo "“Alice Blue. It's the only name that I know for myself. I don't know if it's real.”"| fmt -w 80 echo read -n1 -s -r exit } function doSaddleBrown() { setUnixColours "#D2B48C" "#8B4513" echo -e '\033[7mIn the Mirror \033[0m' setUnixColours2 "#D2B48C" "#8B4513" echo echo "I was like a girl who had been taken away by the moon. First I would feed on moon food, then they would take out my heart and replace it with moon stone. The coyote spirit inside of me would learn to cringe and whine. My soul was scrubbed away and they gave me a new name. They took away my skin and made me into a patchwork girl. They made me forget. Sometimes I tried to look down from the moon and see the place I had come from, but we were on the wrong side. There was nowhere from which I could look and see anything except for the darkness. And I learned to live in the darkness and forget who I was."| fmt -w 80 echo read -n1 -s -r exit } function doSandyBrown() { paplay sound/Funeral.ogg & setUnixColours "#A52A2A" "#FFD700" echo -e '\033[7mFuneral Procession \033[0m' setUnixColours2 "#A52A2A" "#FFD700" echo echo "The beach is my glass"| fmt -w 80 echo "(twice as big as it needs to)"| fmt -w 80 echo "Slippery slope"| fmt -w 80 echo read -n1 -s -r exit } function doSeaGreen() { paplay sound/Clocks.ogg & setUnixColours "#000000" "#2E8B57" echo -e '\033[7mUnder Sea \033[0m' setUnixColours2 "#000000" "#2E8B57" echo echo "The Prince of the ocean nods back and forth in his slumber. His great hands rise up mindlessly to seize the sea-sorrows that are tangled like worms in his hair, and bear them to his sleeping mouth. As he fattens on lost sailor’s dreams and the tears of weeping wives, Ceto is diligently weaving weeds into wedding cloth."| fmt -w 80 echo read -n1 -s -r exit } function doSpringGreen() { paplay sound/Cin-Sting.ogg & setUnixColours "#00FF7F" "#000000" echo "The Medean Garden"| fmt -w 80 setUnixColours2 "#00FF7F" "#000000" echo echo "One for the rook, One"| fmt -w 80 echo "for the crow, One to rot, One"| fmt -w 80 echo "Root to rule them all"| fmt -w 80 echo echo "No, that’s not right..."| fmt -w 80 echo read -n1 -s -r exit } function doSlateGray() { paplay sound/Clocks.ogg & setUnixColours "#FFFAFA" "#708090" echo -e '\033[7mLeaving Shore \033[0m' setUnixColours2 "#FFFAFA" "#708090" echo echo "A deep breath of salty air. Raindrops spattering the pavement. Swollen, slate-colored clouds that blanket the sky muttering ominous portents to one another. Welcome to... "| fmt -w 80 echo read -n1 -s -r exit } function doSteelBlue() { paplay sound/Clocks.ogg & setUnixColours "#4682B4" "#000000" echo -e '\033[7mIncarcerated \033[0m' setUnixColours2 "#4682B4" "#000000" echo echo "Steal Blue: The colour of law."| fmt -w 80 echo read -n1 -s -r exit } function doThistle() { paplay sound/Freezer.ogg & setUnixColours "#D8BFD8" "#000000" echo -e '\033[7mNearer, Mirror \033[0m' setUnixColours2 "#D8BFD8" "#000000" echo echo "Under the mirror there is a wardrobe with sticky drawers. Inside there are several sets of clothing. I take one, instinctively. It is a man's clothes. I begin to dress the girl in the mirror. I bind her breasts up tightly, so that they will not show through the shirt that I will put on her. I arrange the hair, just so. I look at the face. It is still a woman's face. It will have to change. I set it very carefully, jaw, eyes, lips, cheekbones, everything, just so. After a little while it starts to turn into a man's face. Alexander's face. His hair is askew, but it does not make him look unkempt, merely dismissive, dangerous, and daring the world with that hair. Challenge me. I can manage it. Whatever you want to throw at me."| fmt -w 80 echo read -n1 -s -r exit } function doTurquoise() { paplay sound/Clocks.ogg & setUnixColours "#40E0D0" "#000000" echo -e '\033[7mIncarcerated \033[0m' setUnixColours2 "#40E0D0" "#000000" echo echo -e "“I'm afraid,” I reply in a little girl whisper. “What if the door is locked. What if this room is all that there is.” I am not telling the truth. I am, deeper down, afraid that the door is not locked and that this room is not all that there is."| fmt -w 80 echo read -n1 -s -r exit } function doYellowGreen() { paplay sound/Peaceful.ogg & setUnixColours "#9ACD32" "#000000" echo -e '\033[7mAnother Garden \033[0m' setUnixColours2 "#9ACD32" "#000000" echo echo -e "The sun is hanging like a cantaloupe in the sky. I remember my grandmother's garden, how she showed me that melons and corn are sisters and friends, and how to thump on the skin of a melon to see if it is just juicy-ripe. For a moment, I am happy."| fmt -w 80 echo read -n1 -s -r exit } function doXyzzy() { paplay sound/q18.ogg & setUnixColours "#DC143C" "#FFD700" echo Terminal setUnixColours2 "#DC143C" "#FFD700" echo echo "Not much happens."| fmt -w 80 echo read -n1 -s -r exit } function doIvory() { paplay sound/Lurking.ogg & setUnixColours "#F0F8FF" "#FFFFF0" echo read -n1 -s -r exit } function doHoneydew() { paplay sound/Horrible.ogg & setUnixColours "#F0F8FF" "#F0FFF0" echo read -n1 -s -r exit } function doPapayawhip() { paplay sound/Alone.ogg & setUnixColours "#F0F8FF" "#FFEFD5" echo read -n1 -s -r exit } function doGhostWhite() { paplay sound/Surreal.ogg & setUnixColours "#F0F8FF" "#F8F8FF" echo read -n1 -s -r exit } function doForalWhite() { paplay sound/Peaceful_Stalker.ogg & setUnixColours "#F0F8FF" "#FFFAF0" echo read -n1 -s -r exit } function doMintCream() { paplay sound/Ballooning.ogg & setUnixColours "#F0F8FF" "#F5FFFA" echo read -n1 -s -r exit } function doSnow() { paplay sound/Meadow.ogg & setUnixColours "#F0F8FF" "#FFFAFA" echo read -n1 -s -r exit } function doWhiteSmoke() { paplay sound/Horror.ogg & setUnixColours "#F0F8FF" "#F5F5F5" echo read -n1 -s -r exit } function doOldLace() { paplay sound/Changes.ogg & setUnixColours "#F0F8FF" "#FDF5E6" echo read -n1 -s -r exit } function doLinen() { paplay sound/Isolation.ogg & setUnixColours "#F0F8FF" "#FAF0E6" echo read -n1 -s -r exit } function doLightYellow() { paplay sound/Ominous.ogg & setUnixColours "#F0F8FF" "#FFFFE0" echo read -n1 -s -r exit } function doSeashell() { paplay sound/Ocean.ogg & setUnixColours "#F0F8FF" "#FFF5EE" echo read -n1 -s -r exit } function doWteohllliyg() { paplay sound/Lamp_on.ogg 2>/dev/null & paplay sound/Science.ogg 2>/dev/null & paplay sound/Science.ogg 2>/dev/null & paplay sound/Science.ogg 2>/dev/null & paplay sound/Science.ogg 2>/dev/null & paplay sound/Science.ogg 2>/dev/null & paplay sound/am6.ogg 2>/dev/null & sleep .5 paplay sound/Static.ogg 2>/dev/null & local foreground background foreground="#FFFFE0" background="#000000" setUnixColours "$foreground" "$background" for((i=0;i<31;i++)) do setUnixColours "$background" "$foreground" sleep 0.05 setUnixColours "$foreground" "$background" sleep 0.05 done exit } # Place-holder funcions for obscure colours function doAquamarine() { paplay sound/Lamp_on.ogg 2>/dev/null & paplay sound/Static.ogg 2>/dev/null & local foreground background foreground="#7FFFD4" background="#000000" setUnixColours "$foreground" "$background" for((i=0;i<22;i++)) do setUnixColours "$background" "$foreground" sleep 0.05 setUnixColours "$foreground" "$background" sleep 0.05 done exit } function doAzure() { paplay sound/Lamp_on.ogg 2>/dev/null & paplay sound/Static.ogg 2>/dev/null & local foreground background foreground="#F0FFFF" background="#000000" setUnixColours "$foreground" "$background" for((i=0;i<22;i++)) do setUnixColours "$background" "$foreground" sleep 0.05 setUnixColours "$foreground" "$background" sleep 0.05 done exit } function doBeige() { paplay sound/Lamp_on.ogg 2>/dev/null paplay sound/Static.ogg 2>/dev/null & local foreground background foreground="#F5F5DC" background="#000000" setUnixColours "$foreground" "$background" for((i=0;i<22;i++)) do setUnixColours "$background" "$foreground" sleep 0.05 setUnixColours "$foreground" "$background" sleep 0.05 done exit } function doBisque() { paplay sound/Lamp_on.ogg 2>/dev/null & paplay sound/Static.ogg 2>/dev/null & local foreground background foreground="#FFE4C4" background="#000000" setUnixColours "$foreground" "$background" for((i=0;i<22;i++)) do setUnixColours "$background" "$foreground" sleep 0.05 setUnixColours "$foreground" "$background" sleep 0.05 done exit } function doBlanchedAlmond() { paplay sound/Lamp_on.ogg 2>/dev/null & paplay sound/Static.ogg 2>/dev/null & local foreground background foreground="#FFEBCD" background="#000000" setUnixColours "$foreground" "$background" for((i=0;i<22;i++)) do setUnixColours "$background" "$foreground" sleep 0.05 setUnixColours "$foreground" "$background" sleep 0.05 done exit } function doCadetBlue() { paplay sound/Lamp_on.ogg 2>/dev/null & paplay sound/Static.ogg 2>/dev/null & local foreground background foreground="#5F9EA0" background="#000000" setUnixColours "$foreground" "$background" for((i=0;i<22;i++)) do setUnixColours "$background" "$foreground" sleep 0.05 setUnixColours "$foreground" "$background" sleep 0.05 done exit } function doChocolate() { paplay sound/Lamp_on.ogg 2>/dev/null & paplay sound/Static.ogg 2>/dev/null & local foreground background foreground="#D2691E" background="#000000" setUnixColours "$foreground" "$background" for((i=0;i<22;i++)) do setUnixColours "$background" "$foreground" sleep 0.05 setUnixColours "$foreground" "$background" sleep 0.05 done exit } function doCyan() { paplay sound/Lamp_on.ogg 2>/dev/null & paplay sound/Static.ogg 2>/dev/null & local foreground background foreground="#00FFFF" background="#000000" setUnixColours "$foreground" "$background" for((i=0;i<22;i++)) do setUnixColours "$background" "$foreground" sleep 0.05 setUnixColours "$foreground" "$background" sleep 0.05 done exit } function doDarkCyan() { paplay sound/Lamp_on.ogg 2>/dev/null & paplay sound/Static.ogg 2>/dev/null & local foreground background foreground="#008B8B" background="#000000" setUnixColours "$foreground" "$background" for((i=0;i<22;i++)) do setUnixColours "$background" "$foreground" sleep 0.05 setUnixColours "$foreground" "$background" sleep 0.05 done exit } function doDarkGoldenrod() { paplay sound/Lamp_on.ogg 2>/dev/null & paplay sound/Static.ogg 2>/dev/null & local foreground background foreground="#B8860B" background="#000000" setUnixColours "$foreground" "$background" for((i=0;i<22;i++)) do setUnixColours "$background" "$foreground" sleep 0.05 setUnixColours "$foreground" "$background" sleep 0.05 done exit } function doDarkGray() { paplay sound/Lamp_on.ogg 2>/dev/null & paplay sound/Static.ogg 2>/dev/null & local foreground background foreground="#A9A9A9" background="#000000" setUnixColours "$foreground" "$background" for((i=0;i<22;i++)) do setUnixColours "$background" "$foreground" sleep 0.05 setUnixColours "$foreground" "$background" sleep 0.05 done exit } function doDarkGreen() { paplay sound/Lamp_on.ogg 2>/dev/null & paplay sound/Static.ogg 2>/dev/null & local foreground background foreground="#006400" background="#000000" setUnixColours "$foreground" "$background" for((i=0;i<22;i++)) do setUnixColours "$background" "$foreground" sleep 0.05 setUnixColours "$foreground" "$background" sleep 0.05 done exit } function doDarkKhaki() { paplay sound/Lamp_on.ogg 2>/dev/null & paplay sound/Static.ogg 2>/dev/null & local foreground background foreground="#BDB76B" background="#000000" setUnixColours "$foreground" "$background" for((i=0;i<22;i++)) do setUnixColours "$background" "$foreground" sleep 0.05 setUnixColours "$foreground" "$background" sleep 0.05 done exit } function doDarkMagenta() { paplay sound/Lamp_on.ogg 2>/dev/null & paplay sound/Static.ogg 2>/dev/null & local foreground background foreground="#8B008B" background="#000000" setUnixColours "$foreground" "$background" for((i=0;i<22;i++)) do setUnixColours "$background" "$foreground" sleep 0.05 setUnixColours "$foreground" "$background" sleep 0.05 done exit } function doDarkOliveGreen() { paplay sound/Lamp_on.ogg 2>/dev/null & paplay sound/Static.ogg 2>/dev/null & local foreground background foreground="#556B2F" background="#000000" setUnixColours "$foreground" "$background" for((i=0;i<22;i++)) do setUnixColours "$background" "$foreground" sleep 0.05 setUnixColours "$foreground" "$background" sleep 0.05 done exit } function doDarkOrange() { paplay sound/Lamp_on.ogg 2>/dev/null & paplay sound/Static.ogg 2>/dev/null & local foreground background foreground="#FF8C00" background="#000000" setUnixColours "$foreground" "$background" for((i=0;i<22;i++)) do setUnixColours "$background" "$foreground" sleep 0.05 setUnixColours "$foreground" "$background" sleep 0.05 done exit } function doDarkOrchid() { paplay sound/Lamp_on.ogg 2>/dev/null & paplay sound/Static.ogg 2>/dev/null & local foreground background foreground="#9932CC" background="#000000" setUnixColours "$foreground" "$background" for((i=0;i<22;i++)) do setUnixColours "$background" "$foreground" sleep 0.05 setUnixColours "$foreground" "$background" sleep 0.05 done exit } function doDarkSalmon() { paplay sound/Lamp_on.ogg 2>/dev/null & paplay sound/Static.ogg 2>/dev/null & local foreground background foreground="#E9967A" background="#000000" setUnixColours "$foreground" "$background" for((i=0;i<22;i++)) do setUnixColours "$background" "$foreground" sleep 0.05 setUnixColours "$foreground" "$background" sleep 0.05 done exit } function doDarkSeaGreen() { paplay sound/Lamp_on.ogg 2>/dev/null & paplay sound/Static.ogg 2>/dev/null & local foreground background foreground="#8FBC8F" background="#000000" setUnixColours "$foreground" "$background" for((i=0;i<22;i++)) do setUnixColours "$background" "$foreground" sleep 0.05 setUnixColours "$foreground" "$background" sleep 0.05 done exit } function doDarkSlateBlue() { paplay sound/Lamp_on.ogg 2>/dev/null & paplay sound/Static.ogg 2>/dev/null & local foreground background foreground="#483D8B" background="#000000" setUnixColours "$foreground" "$background" for((i=0;i<22;i++)) do setUnixColours "$background" "$foreground" sleep 0.05 setUnixColours "$foreground" "$background" sleep 0.05 done exit } function doDarkTurquoise() { paplay sound/Lamp_on.ogg 2>/dev/null & paplay sound/Static.ogg 2>/dev/null & local foreground background foreground="#00CED1" background="#000000" setUnixColours "$foreground" "$background" for((i=0;i<22;i++)) do setUnixColours "$background" "$foreground" sleep 0.05 setUnixColours "$foreground" "$background" sleep 0.05 done exit } function doDarkViolet() { paplay sound/Lamp_on.ogg 2>/dev/null & paplay sound/Static.ogg 2>/dev/null & local foreground background foreground="#9400D3" background="#000000" setUnixColours "$foreground" "$background" for((i=0;i<22;i++)) do setUnixColours "$background" "$foreground" sleep 0.05 setUnixColours "$foreground" "$background" sleep 0.05 done exit } function doDeepPink() { paplay sound/Lamp_on.ogg 2>/dev/null & paplay sound/Static.ogg 2>/dev/null & local foreground background foreground="#FF1493" background="#000000" setUnixColours "$foreground" "$background" for((i=0;i<22;i++)) do setUnixColours "$background" "$foreground" sleep 0.05 setUnixColours "$foreground" "$background" sleep 0.05 done exit } function doDeepSkyBlue() { paplay sound/Lamp_on.ogg 2>/dev/null & paplay sound/Static.ogg 2>/dev/null & local foreground background foreground="#00BFFF" background="#000000" setUnixColours "$foreground" "$background" for((i=0;i<22;i++)) do setUnixColours "$background" "$foreground" sleep 0.05 setUnixColours "$foreground" "$background" sleep 0.05 done exit } function doDodgerBlue() { paplay sound/Lamp_on.ogg 2>/dev/null & paplay sound/Static.ogg 2>/dev/null & local foreground background foreground="#1E90FF" background="#000000" setUnixColours "$foreground" "$background" for((i=0;i<22;i++)) do setUnixColours "$background" "$foreground" sleep 0.05 setUnixColours "$foreground" "$background" sleep 0.05 done exit } function doForestGreen() { paplay sound/Lamp_on.ogg 2>/dev/null & paplay sound/Static.ogg 2>/dev/null & local foreground background foreground="#228B22" background="#000000" setUnixColours "$foreground" "$background" for((i=0;i<22;i++)) do setUnixColours "$background" "$foreground" sleep 0.05 setUnixColours "$foreground" "$background" sleep 0.05 done exit } function doGreenYellow() { paplay sound/Lamp_on.ogg 2>/dev/null & paplay sound/Static.ogg 2>/dev/null & local foreground background foreground="#ADFF2F" background="#000000" setUnixColours "$foreground" "$background" for((i=0;i<22;i++)) do setUnixColours "$background" "$foreground" sleep 0.05 setUnixColours "$foreground" "$background" sleep 0.05 done exit } function doIndianRed() { paplay sound/Lamp_on.ogg 2>/dev/null & paplay sound/Static.ogg 2>/dev/null & local foreground background foreground="#CD5C5C" background="#000000" setUnixColours "$foreground" "$background" for((i=0;i<22;i++)) do setUnixColours "$background" "$foreground" sleep 0.05 setUnixColours "$foreground" "$background" sleep 0.05 done exit } function doIndigo() { paplay sound/Lamp_on.ogg 2>/dev/null & paplay sound/Static.ogg 2>/dev/null & local foreground background foreground="#4B0082" background="#000000" setUnixColours "$foreground" "$background" for((i=0;i<22;i++)) do setUnixColours "$background" "$foreground" sleep 0.05 setUnixColours "$foreground" "$background" sleep 0.05 done exit } function doKhaki() { paplay sound/Lamp_on.ogg 2>/dev/null & paplay sound/Static.ogg 2>/dev/null & local foreground background foreground="#F0E68C" background="#000000" setUnixColours "$foreground" "$background" for((i=0;i<22;i++)) do setUnixColours "$background" "$foreground" sleep 0.05 setUnixColours "$foreground" "$background" sleep 0.05 done exit } function doLavender() { paplay sound/Lamp_on.ogg 2>/dev/null & paplay sound/Static.ogg 2>/dev/null & local foreground background foreground="#E6E6FA" background="#000000" setUnixColours "$foreground" "$background" for((i=0;i<22;i++)) do setUnixColours "$background" "$foreground" sleep 0.05 setUnixColours "$foreground" "$background" sleep 0.05 done exit } function doLavenderBlush() { paplay sound/Lamp_on.ogg 2>/dev/null & paplay sound/Static.ogg 2>/dev/null & local foreground background foreground="#FFF0F5" background="#000000" setUnixColours "$foreground" "$background" for((i=0;i<22;i++)) do setUnixColours "$background" "$foreground" sleep 0.05 setUnixColours "$foreground" "$background" sleep 0.05 done exit } function doLemonChiffon() { paplay sound/Lamp_on.ogg 2>/dev/null & paplay sound/Static.ogg 2>/dev/null & local foreground background foreground="#FFFACD" background="#000000" setUnixColours "$foreground" "$background" for((i=0;i<22;i++)) do setUnixColours "$background" "$foreground" sleep 0.05 setUnixColours "$foreground" "$background" sleep 0.05 done exit } function doLightCoral() { paplay sound/Lamp_on.ogg 2>/dev/null & paplay sound/Static.ogg 2>/dev/null & local foreground background foreground="#F08080" background="#000000" setUnixColours "$foreground" "$background" for((i=0;i<22;i++)) do setUnixColours "$background" "$foreground" sleep 0.05 setUnixColours "$foreground" "$background" sleep 0.05 done exit } function doLightCyan() { paplay sound/Lamp_on.ogg 2>/dev/null & paplay sound/Static.ogg 2>/dev/null & local foreground background foreground="#E0FFFF" background="#000000" setUnixColours "$foreground" "$background" for((i=0;i<22;i++)) do setUnixColours "$background" "$foreground" sleep 0.05 setUnixColours "$foreground" "$background" sleep 0.05 done exit } function doLightGray() { paplay sound/Lamp_on.ogg 2>/dev/null & paplay sound/Static.ogg 2>/dev/null & local foreground background foreground="#D3D3D3" background="#000000" setUnixColours "$foreground" "$background" for((i=0;i<22;i++)) do setUnixColours "$background" "$foreground" sleep 0.05 setUnixColours "$foreground" "$background" sleep 0.05 done exit } function doLightSalmon() { paplay sound/Lamp_on.ogg 2>/dev/null & paplay sound/Static.ogg 2>/dev/null & local foreground background foreground="#FFA07A" background="#000000" setUnixColours "$foreground" "$background" for((i=0;i<22;i++)) do setUnixColours "$background" "$foreground" sleep 0.05 setUnixColours "$foreground" "$background" sleep 0.05 done exit } function doLightSeaGreen() { paplay sound/Lamp_on.ogg 2>/dev/null & paplay sound/Static.ogg 2>/dev/null & local foreground background foreground="#20B2AA" background="#000000" setUnixColours "$foreground" "$background" for((i=0;i<22;i++)) do setUnixColours "$background" "$foreground" sleep 0.05 setUnixColours "$foreground" "$background" sleep 0.05 done exit } function doLightSkyBlue() { paplay sound/Lamp_on.ogg 2>/dev/null & paplay sound/Static.ogg 2>/dev/null & local foreground background foreground="#87CEFA" background="#000000" setUnixColours "$foreground" "$background" for((i=0;i<22;i++)) do setUnixColours "$background" "$foreground" sleep 0.05 setUnixColours "$foreground" "$background" sleep 0.05 done exit } function doLightSteelBlue() { paplay sound/Lamp_on.ogg 2>/dev/null & paplay sound/Static.ogg 2>/dev/null & local foreground background foreground="#B0C4DE" background="#000000" setUnixColours "$foreground" "$background" for((i=0;i<22;i++)) do setUnixColours "$background" "$foreground" sleep 0.05 setUnixColours "$foreground" "$background" sleep 0.05 done exit } function doLightSlateGray() { paplay sound/Lamp_on.ogg 2>/dev/null & paplay sound/Static.ogg 2>/dev/null & local foreground background foreground="#778899" background="#000000" setUnixColours "$foreground" "$background" for((i=0;i<22;i++)) do setUnixColours "$background" "$foreground" sleep 0.05 setUnixColours "$foreground" "$background" sleep 0.05 done exit } function doMagenta() { paplay sound/Lamp_on.ogg 2>/dev/null & paplay sound/Static.ogg 2>/dev/null & local foreground background foreground="#FF00FF" background="#000000" setUnixColours "$foreground" "$background" for((i=0;i<22;i++)) do setUnixColours "$background" "$foreground" sleep 0.05 setUnixColours "$foreground" "$background" sleep 0.05 done exit } function doMediumOrchid() { paplay sound/Lamp_on.ogg 2>/dev/null & paplay sound/Static.ogg 2>/dev/null & local foreground background foreground="#BA55D3" background="#000000" setUnixColours "$foreground" "$background" for((i=0;i<22;i++)) do setUnixColours "$background" "$foreground" sleep 0.05 setUnixColours "$foreground" "$background" sleep 0.05 done exit } function doMediumPurple() { paplay sound/Lamp_on.ogg 2>/dev/null & paplay sound/Static.ogg 2>/dev/null & local foreground background foreground="#9370D8" background="#000000" setUnixColours "$foreground" "$background" for((i=0;i<22;i++)) do setUnixColours "$background" "$foreground" sleep 0.05 setUnixColours "$foreground" "$background" sleep 0.05 done exit } function doMediumSeaGreen() { paplay sound/Lamp_on.ogg 2>/dev/null & paplay sound/Static.ogg 2>/dev/null & local foreground background foreground="#3CB371" background="#000000" setUnixColours "$foreground" "$background" for((i=0;i<22;i++)) do setUnixColours "$background" "$foreground" sleep 0.05 setUnixColours "$foreground" "$background" sleep 0.05 done exit } function doMediumSlateBlue() { paplay sound/Lamp_on.ogg 2>/dev/null & paplay sound/Static.ogg 2>/dev/null & local foreground background foreground="#7B68EE" background="#000000" setUnixColours "$foreground" "$background" for((i=0;i<22;i++)) do setUnixColours "$background" "$foreground" sleep 0.05 setUnixColours "$foreground" "$background" sleep 0.05 done exit } function doMidnightBlue() { paplay sound/Lamp_on.ogg 2>/dev/null & paplay sound/Static.ogg 2>/dev/null & local foreground background foreground="#191970" background="#000000" setUnixColours "$foreground" "$background" for((i=0;i<22;i++)) do setUnixColours "$background" "$foreground" sleep 0.05 setUnixColours "$foreground" "$background" sleep 0.05 done exit } function doMistyRose() { paplay sound/Lamp_on.ogg 2>/dev/null & paplay sound/Static.ogg 2>/dev/null & local foreground background foreground="#FFE4E1" background="#000000" setUnixColours "$foreground" "$background" for((i=0;i<22;i++)) do setUnixColours "$background" "$foreground" sleep 0.05 setUnixColours "$foreground" "$background" sleep 0.05 done exit } function doMoccasin() { paplay sound/Lamp_on.ogg 2>/dev/null & paplay sound/Static.ogg 2>/dev/null & local foreground background foreground="#FFE4B5" background="#000000" setUnixColours "$foreground" "$background" for((i=0;i<22;i++)) do setUnixColours "$background" "$foreground" sleep 0.05 setUnixColours "$foreground" "$background" sleep 0.05 done exit } function doOrange() { paplay sound/Lamp_on.ogg 2>/dev/null & paplay sound/Static.ogg 2>/dev/null & local foreground background foreground="#FFA500" background="#000000" setUnixColours "$foreground" "$background" for((i=0;i<22;i++)) do setUnixColours "$background" "$foreground" sleep 0.05 setUnixColours "$foreground" "$background" sleep 0.05 done exit } function doPaleGoldenrod() { paplay sound/Lamp_on.ogg 2>/dev/null & paplay sound/Static.ogg 2>/dev/null & local foreground background foreground="#EEE8AA" background="#000000" setUnixColours "$foreground" "$background" for((i=0;i<22;i++)) do setUnixColours "$background" "$foreground" sleep 0.05 setUnixColours "$foreground" "$background" sleep 0.05 done exit } function doPaleGreen() { paplay sound/Lamp_on.ogg 2>/dev/null & paplay sound/Static.ogg 2>/dev/null & local foreground background foreground="#98FB98" background="#000000" setUnixColours "$foreground" "$background" for((i=0;i<22;i++)) do setUnixColours "$background" "$foreground" sleep 0.05 setUnixColours "$foreground" "$background" sleep 0.05 done exit } function doPaleTurquoise() { paplay sound/Lamp_on.ogg 2>/dev/null & paplay sound/Static.ogg 2>/dev/null & local foreground background foreground="#AFEEEE" background="#000000" setUnixColours "$foreground" "$background" for((i=0;i<22;i++)) do setUnixColours "$background" "$foreground" sleep 0.05 setUnixColours "$foreground" "$background" sleep 0.05 done exit } function doPaleVioletRed() { paplay sound/Lamp_on.ogg 2>/dev/null & paplay sound/Static.ogg 2>/dev/null & local foreground background foreground="#D87093" background="#000000" setUnixColours "$foreground" "$background" for((i=0;i<22;i++)) do setUnixColours "$background" "$foreground" sleep 0.05 setUnixColours "$foreground" "$background" sleep 0.05 done exit } function doPeachPuff() { paplay sound/Lamp_on.ogg 2>/dev/null & paplay sound/Static.ogg 2>/dev/null & local foreground background foreground="#FFDAB9" background="#000000" setUnixColours "$foreground" "$background" for((i=0;i<22;i++)) do setUnixColours "$background" "$foreground" sleep 0.05 setUnixColours "$foreground" "$background" sleep 0.05 done exit } function doPowderBlue() { paplay sound/Lamp_on.ogg 2>/dev/null & paplay sound/Static.ogg 2>/dev/null & local foreground background foreground="#B0E0E6" background="#000000" setUnixColours "$foreground" "$background" for((i=0;i<22;i++)) do setUnixColours "$background" "$foreground" sleep 0.05 setUnixColours "$foreground" "$background" sleep 0.05 done exit } function doRoyalBlue() { paplay sound/Lamp_on.ogg 2>/dev/null & paplay sound/Static.ogg 2>/dev/null & local foreground background foreground="#4169E1" background="#000000" setUnixColours "$foreground" "$background" for((i=0;i<22;i++)) do setUnixColours "$background" "$foreground" sleep 0.05 setUnixColours "$foreground" "$background" sleep 0.05 done exit } function doSalmon() { paplay sound/Lamp_on.ogg 2>/dev/null & paplay sound/Static.ogg 2>/dev/null & local foreground background foreground="#FA8072" background="#000000" setUnixColours "$foreground" "$background" for((i=0;i<22;i++)) do setUnixColours "$background" "$foreground" sleep 0.05 setUnixColours "$foreground" "$background" sleep 0.05 done exit } function doSienna() { paplay sound/Lamp_on.ogg 2>/dev/null & paplay sound/Static.ogg 2>/dev/null & local foreground background foreground="#A0522D" background="#000000" setUnixColours "$foreground" "$background" for((i=0;i<22;i++)) do setUnixColours "$background" "$foreground" sleep 0.05 setUnixColours "$foreground" "$background" sleep 0.05 done exit } function doSkyBlue() { paplay sound/Lamp_on.ogg 2>/dev/null & paplay sound/Static.ogg 2>/dev/null & local foreground background foreground="#87CEEB" background="#000000" setUnixColours "$foreground" "$background" for((i=0;i<22;i++)) do setUnixColours "$background" "$foreground" sleep 0.05 setUnixColours "$foreground" "$background" sleep 0.05 done exit } function doSlateBlue() { paplay sound/Lamp_on.ogg 2>/dev/null & paplay sound/Static.ogg 2>/dev/null & local foreground background foreground="#6A5ACD" background="#000000" setUnixColours "$foreground" "$background" for((i=0;i<22;i++)) do setUnixColours "$background" "$foreground" sleep 0.05 setUnixColours "$foreground" "$background" sleep 0.05 done exit } function doSpringGreen() { paplay sound/Lamp_on.ogg 2>/dev/null & paplay sound/Static.ogg 2>/dev/null & local foreground background foreground="#00FF7F" background="#000000" setUnixColours "$foreground" "$background" for((i=0;i<22;i++)) do setUnixColours "$background" "$foreground" sleep 0.05 setUnixColours "$foreground" "$background" sleep 0.05 done exit } function doTan() { paplay sound/Lamp_on.ogg 2>/dev/null & paplay sound/Static.ogg 2>/dev/null & local foreground background foreground="#D2B48C" background="#000000" setUnixColours "$foreground" "$background" for((i=0;i<22;i++)) do setUnixColours "$background" "$foreground" sleep 0.05 setUnixColours "$foreground" "$background" sleep 0.05 done exit } function doTomato() { paplay sound/Lamp_on.ogg 2>/dev/null & paplay sound/Static.ogg 2>/dev/null & local foreground background foreground="#FF6347" background="#000000" setUnixColours "$foreground" "$background" for((i=0;i<22;i++)) do setUnixColours "$background" "$foreground" sleep 0.05 setUnixColours "$foreground" "$background" sleep 0.05 done exit } function doViolent() { paplay sound/Lamp_on.ogg 2>/dev/null & paplay sound/Static.ogg 2>/dev/null & local foreground background foreground="#EE82EE" background="#000000" setUnixColours "$foreground" "$background" for((i=0;i<22;i++)) do setUnixColours "$background" "$foreground" sleep 0.05 setUnixColours "$foreground" "$background" sleep 0.05 done exit } function doWheat() { paplay sound/Lamp_on.ogg 2>/dev/null & paplay sound/Static.ogg 2>/dev/null & local foreground background foreground="#F5DEB3" background="#000000" setUnixColours "$foreground" "$background" for((i=0;i<22;i++)) do setUnixColours "$background" "$foreground" sleep 0.05 setUnixColours "$foreground" "$background" sleep 0.05 done exit } #[Antiquewhite]="#FAEBD7" #[Aquamarine]="#7FFFD4" #[Azure]="#F0FFFF" #[Beige]="#F5F5DC" #[Bisque]="#FFE4C4" #[Blanchedalmond]="#FFEBCD" #[Blueviolet]="#8A2BE2" #[Brown]="#A52A2A" #[Cadetblue]="#5F9EA0" #[Chartreuse]="#7FFF00" #[Chocolate]="#D2691E" #[Coral]="#FF7F50" #[Cornflowerblue]="#6495ED" #[Crimson]="#DC143C" #[Cyan]="#00FFFF" #[Darkblue]="#00008B" #[Darkcyan]="#008B8B" #[Darkgoldenrod]="#B8860B" #[Darkgray]="#A9A9A9" #[Darkgreen]="#006400" #[Darkkhaki]="#BDB76B" #[Darkmagenta]="#8B008B" #[Darkolivegreen]="#556B2F" #[Darkorange]="#FF8C00" #[Darkorchid]="#9932CC" #[Darksalmon]="#E9967A" #[Darkseagreen]="#8FBC8F" #[Darkslateblue]="#483D8B" #[Darkslategray]="#2F4F4F" #[Darkturquoise]="#00CED1" #[Darkviolet]="#9400D3" #[Deeppink]="#FF1493" #[Deepskyblue]="#00BFFF" #[Dimgray]="#696969" #[Dodgerblue]="#1E90FF" #[Firebrick]="#B22222" #[Forestgreen]="#228B22" #[Gainsboro]="#DCDCDC" #[Goldenrod]="#DAA520" #[Greenyellow]="#ADFF2F" #[Indianred]="#CD5C5C" #[Indigo]="#4B0082" #[Khaki]="#F0E68C" #[Lavender]="#E6E6FA" #[Lavenderblush]="#FFF0F5" #[Lemonchiffon]="#FFFACD" #[Lightblue]="#ADD8E6" #[Lightcoral]="#F08080" #[Lightcyan]="#E0FFFF" #[Lightgoldenrodyellow]="#FAFAD2" #[Lightgreen]="#90EE90" #[Lightgray]="#D3D3D3" #[Lightpink]="#FFB6C1" #[Lightsalmon]="#FFA07A" #[Lightseagreen]="#20B2AA" #[Lightskyblue]="#87CEFA" #[Lightslategray]="#778899" #[Lightsteelblue]="#B0C4DE" #[Magenta]="#FF00FF" #[Mediumblue]="#0000CD" #[Mediumorchid]="#BA55D3" #[Mediumpurple]="#9370D8" #[Mediumseagreen]="#3CB371" #[Mediumslateblue]="#7B68EE" #[Mediumspringgreen]="#00FA9A" #[Mediumturquoise]="#48D1CC" #[Mediumvioletred]="#C71585" #[Midnightblue]="#191970" #[Mistyrose]="#FFE4E1" #[Moccasin]="#FFE4B5" #[Navajowhite]="#FFDEAD" #[Olivedrab]="#688E23" #[Orange]="#FFA500" #[Orangered]="#FF4500" #[Orchid]="#DA70D6" #[Palegoldenrod]="#EEE8AA" #[Palegreen]="#98FB98" #[Paleturquoise]="#AFEEEE" #[Palevioletred]="#D87093" #[Peachpuff]="#FFDAB9" #[Plum]="#DDA0DD" #[Powderblue]="#B0E0E6" #[Royalblue]="#4169E1" #[Salmon]="#FA8072" #[Sandybrown]="#F4A460" #[Sienna]="#A0522D" #[Skyblue]="#87CEEB" #[Slateblue]="#6A5ACD" #[Springgreen]="#00FF7F" #[Steelblue]="#4682B4" #[Tan]="#D2B48C" #[Thistle]="#D8BFD8" #[Tomato]="#FF6347" #[Turquoise]="#40E0D0" #[Violet]="#EE82EE" #[Wheat]="#F5DEB3" #[Yellowgreen]="#9ACD32") # no longer used - this info should probably be added to # the doHelp function function menu() { local choice clear echo 1 HOW TO PLAY echo 2 ABOUT echo 3 HINTS echo 4 SAVE echo 5 RESTORE echo 6 RESTART echo 7 QUIT read -p "Enter choice <1,2,3,4,5,6,7> " choice case $choice in 1) doHelp ;; 2) doAbout ;; 3) doHint ;; 4) saveGame ;; 5) restoreGame ;; 6) restartGame ;; 8) quitGame ;; esac } # This function is run in a separate Gnome Terminal # so make sure the lines displayed by echo will fit in the terminal # without wrappiing # Also, notice the exit at the end needed to close the terminal # and return to the game function doHelp() { local anykey setUnixColours "#00FF00" "#000000" echo "If you get really stuck you can always read the source..." echo echo read -p "" anykey exit } # see notes for doHelp function function doAbout() { local anykey clear echo ABOUT THIS GAME echo echo BASH model for eventual Aliceblue Android game echo Authors: John Selmys, Chris Selmys, Melinda Selmys echo Tested by: Agnes Selmys echo read -p "Enter to continue" anykey exit } # see notes for doHelp function function doHint() { local anykey setUnixColours "#F0F8FF" "#0000CD" echo "FORBIDDEN GATEWAY" echo echo "UNAUTHORIZED TIMEOUT" echo echo read -p "" anykey exit } # sets the table array to all zeros function initialize() { local r local c for r in $(seq $nodes) do for c in {1..4} do table[$r,$c]=0 done done } # unused function used to dump the table for debugging purposes function show() { local r local c for r in $(seq $nodes) do echo -ne "$r\t" for c in {1..4} do echo -ne "${table[$r,$c]}\t" done echo done } # Alternative to fillup1 which connects the nodes (rooms) # in a random fashion function fillup() { local r local c local n local x for r in $(seq $nodes) do for c in {1..4} do inserted=0 while [[ $inserted -eq 0 ]]; do ((n=$RANDOM%$nodes+1)) while [[ $n -eq $r ]]; do ((n=$RANDOM%$nodes+1)) done if [[ ${table[$r,$c]} -eq 0 ]];then doit=1 for p in {1..4}; do if [[ ${table[$r,$p]} -eq $n ]]; then doit=0 fi done if [[ $doit -eq 1 ]]; then table[$r,$c]=$n case $c in 1) x=2;; 2) x=1;; 3) x=4;; 4) x=3;; esac if [[ ${table[$n,$x]} -eq 0 ]]; then table[$n,$x]=$r fi inserted=1 fi else inserted=1 fi done done done } # replacemant for fillup() using 12 graphs # this is the first graph function fillup1() { for r in 1 2 3 4 5 6 7 8 9 10 11 12 do case $r in 1) table[1,1]=2 table[1,2]=12 table[1,3]=6 table[1,4]=8 ;; 2) table[2,1]=3 table[2,2]=1 table[2,3]=7 table[2,4]=9 ;; 3) table[3,1]=4 table[3,2]=2 table[3,3]=8 table[3,4]=10 ;; 4) table[4,1]=5 table[4,2]=3 table[4,3]=9 table[4,4]=11 ;; 5) table[5,1]=6 table[5,2]=4 table[5,3]=10 table[5,4]=12 ;; 6) table[6,1]=7 table[6,2]=5 table[6,3]=11 table[6,4]=1 ;; 7) table[7,1]=8 table[7,2]=6 table[7,3]=12 table[7,4]=2 ;; 8) table[8,1]=9 table[8,2]=7 table[8,3]=1 table[8,4]=3 ;; 9) table[9,1]=10 table[9,2]=8 table[9,3]=2 table[9,4]=4 ;; 10) table[10,1]=11 table[10,2]=9 table[10,3]=3 table[10,4]=5 ;; 11) table[11,1]=12 table[11,2]=10 table[11,3]=4 table[11,4]=6 ;; 12) table[12,1]=1 table[12,2]=11 table[12,3]=5 table[12,4]=7 ;; esac done } # end the game and reset terminal to original state function quitGame() { local reply read -p "Are you sure want to quit without saving first? [y/n] " reply if [ "$reply" == "y" ] then # restore original terminal colours setColours $oldBackground $oldForeground # restore original terminal font dconf write /org/gnome/terminal/legacy/profiles:/${profileID}font "$oldFont" # restore original terminal size wmctrl -r :ACTIVE: -b toggle,fullscreen resize -s $ORIGINAL_LINES $ORIGINAL_COLUMNS # quit the game #killall paplay #killall ogg123 # set -m should turn off error messages (set -m;kill $timerPID) (set -m;kill $alarmPID) # get end time in seconds since Unix Epoch endTime=$SECONDS playTime=$((endTime-startTime)) clear echo Time played is $playTime seconds exit 0 fi } # We have a winner so .... # end the game and reset terminal to original state function endGame() { # restore original terminal colours setColours $oldBackground $oldForeground # restore original terminal font dconf write /org/gnome/terminal/legacy/profiles:/${profileID}font "$oldFont" # restore original terminal size wmctrl -r :ACTIVE: -b toggle,fullscreen resize -s $ORIGINAL_LINES $ORIGINAL_COLUMNS # end the game #killall paplay #killall ogg123 kill -9 $timerPID kill -9 $alarmPID clear exit 0 } # saves the game in several hidden files function saveGame() { local rows=$(tput lines) local thefile='.aliceblue' tput cup $((rows-2)) 0 echo "Freezing memories... " sleep .75 echo $score > ${thefile}.score echo $currentRoom > ${thefile}.room tput cup $((rows-2)) 0 echo "Preserving surealism... " cp /dev/null ${thefile}.points sleep .75 for i in {1..96}; do for j in {1..4}; do echo ${points[$i,$j]} >> ${thefile}.points done done tput cup $((rows-2)) 0 echo "Encoding vocabulary... " sleep .75 cp /dev/null ${thefile}.active for i in {1..12}; do for j in {1..5}; do echo ${active[$i,$j]} >> ${thefile}.active done done tput cup $((rows-2)) 0 echo "Trans-substantiating narrative... " sleep .75 cp /dev/null ${thefile}.rooms for i in {1..12}; do for j in {1..3}; do echo ${rooms[$i,$j]} >> ${thefile}.rooms done done tput cup $((rows-2)) 0 echo "Hybernating homonymns... " sleep .75 cp /dev/null ${thefile}.words for II in {1..12}; do for JJ in {1..5}; do for KK in {a..z} {A..Z} do echo ${words[$II,$JJ,$KK]} >> ${thefile}.words done done done tput cup $((rows-2)) 0 echo "Reticulating synesthesia... " sleep .75 cp /dev/null ${thefile}.table for i in {1..12}; do for j in {1..4}; do echo ${table[$i,$j]} >> ${thefile}.table done done tput cup $((rows-2)) 0 echo "Precipitating encapsulation... " sleep .75 cp /dev/null ${thefile}.roomcolour for i in {1..12}; do for j in 1 2; do echo ${roomcolour[$i,$j]} >> ${thefile}.roomcolour done done tput cup $((rows-2)) 0 echo "Sublimating correspondences... " sleep .75 cp /dev/null ${thefile}.solvedRooms for i in {1..12}; do echo ${solvedRooms[$i]} >> ${thefile}.solvedRooms done tput cup $((rows-2)) 0 echo "Salivating time-stamp... " sleep .75 cp /dev/null ${thefile}.pps echo $pp1 >> ${thefile}.pps echo $pp2 >> ${thefile}.pps echo $pp3 >> ${thefile}.pps echo $pp4 >> ${thefile}.pps echo $pp5 >> ${thefile}.pps tput cup $((rows-2)) 0 echo "Magic complete! " sleep 1 tput cup $((rows-2)) 0 read -p "Game saved. Hit enter to continue." akey } function restoreGame() { local rows=$(tput lines) local thefile='.aliceblue' if [[ ! -f "$thefile.room" ]] && [[ ! -f "$thefile.score" ]] && [[ ! -f "$thefile.points" ]] && [[ ! -f "$thefile.active" ]] && [[ ! -f "$thefile.rooms" ]] && [[ ! -f "$thefile.words" ]] && [[ ! -f "$thefile.table" ]] && [[ ! -f "$thefile.roomcolour" ]]&& [[ ! -f "$thefile.solvedRooms" ]] && [[ ! -f "$thefile.pps" ]] then # nothing to restore so just return to the game return fi tput cup $((rows-2)) 0 echo "Resociating cryptomnesia... " sleep .75 read score < ${thefile}.score read currentRoom < ${thefile}.room tput cup $((rows-2)) 0 echo "Decocting essence... " sleep .75 for i in {1..96}; do for j in {1..4}; do read points[$i,$j] done done < ${thefile}.points tput cup $((rows-2)) 0 echo "Evocating guardians... " sleep .75 for i in {1..12}; do for j in {1..5}; do read active[$i,$j] done done < ${thefile}.active tput cup $((rows-2)) 0 echo "Defrosting memories... " sleep .75 for i in {1..12}; do for j in {1..3}; do read rooms[$i,$j] done done < ${thefile}.rooms tput cup $((rows-2)) 0 echo "Rastling daemons... " sleep .75 for I in {1..12}; do for J in {1..5}; do for K in {a..z} {A..Z} do read words[$I,$J,$K] done done done < ${thefile}.words tput cup $((rows-2)) 0 echo "Naming colors... " sleep .75 for i in {1..12}; do for j in {1..4}; do read table[$i,$j] done done < ${thefile}.table tput cup $((rows-2)) 0 echo "Activating psychometry... " sleep .75 for i in {1..12}; do for j in 1 2; do read roomcolour[$i,$j] done done < ${thefile}.roomcolour tput cup $((rows-2)) 0 echo "Heightening unease... " sleep .75 for i in {1..12} do read solvedRooms[$i] done < ${thefile}.solvedRooms tput cup $((rows-2)) 0 echo "Removing seals... " sleep .75 for i in {1..5} do read pp$i done < ${thefile}.pps tput cup $((rows-2)) 0 echo "Magic complete! " sleep 1 # pp1="";pp2="";pp3="";pp4="";pp5="" tput cup $((rows-2)) 0 read -p "The game is back now. Touch enter." akey } # unused only for debugging to see the active table function dumpactive() { local room valance cp /dev/null xyzzy echo " 1 2 3 4 5" >> xyzzy for room in {1..12} do echo -n " "$room >> xyzzy for valance in {1..5} do echo -n ${active[$room,$valance]}" " >> xyzzy done echo >> xyzzy done } # Activate a room when solved function checkforactivations() { local room=$1 valance=$2 phrase=$3 # My Bedroom if [ "$room" == "1" -a "$valance" == "3" -a "$phrase" == "b" ] then rooms[1,3]=on fi # The Breakfast Table if [ "$room" == "2" -a "$valance" == "1" -a "$phrase" == "z" ] then rooms[2,3]=on fi # The Garden if [ "$room" == "3" -a "$valance" == "1" -a "$phrase" == "b" ] then rooms[3,3]=on fi # The Pine Forest if [ "$room" == "4" -a "$valance" == "5" -a "$phrase" == "A" ] then rooms[4,3]=on fi # The Seashore if [ "$room" == "5" -a "$valance" == "3" -a "$phrase" == "B" ] then rooms[5,3]=on fi # The Witch's Hearth if [ "$room" == "6" -a "$valance" == "1" -a "$phrase" == "R" ] then rooms[6,3]=on fi # The Toy Room if [ "$room" == "7" -a "$valance" == "1" -a "$phrase" == "h" ] then rooms[7,3]=on fi # The Dressing Room if [ "$room" == "8" -a "$valance" == "5" -a "$phrase" == "l" ] then rooms[8,3]=on fi # A Meadow of Flowers if [ "$room" == "9" -a "$valance" == "1" -a "$phrase" == "z" ] then rooms[9,3]=on fi # A Closet if [ "$room" == "10" -a "$valance" == "1" -a "$phrase" == "g" ] then rooms[10,3]=on fi # A Cemetary if [ "$room" == "11" -a "$valance" == "1" -a "$phrase" == "e" ] then rooms[11,3]=on fi # Sunlight if [ "$room" == "12" -a "$valance" == "1" -a "$phrase" == "a" ] then rooms[12,3]=on fi } # must be using a gnome terminal for this to work # usage: setColours background foreground function setColours() { bColor=$1 fColor=$2 if [[ ! "$bColor" =~ rgb ]]; then bColor=\'$bColor\' fColor=\'$fColor\' fi dconf write /org/gnome/terminal/legacy/profiles:/${profileID}background-color $bColor dconf write /org/gnome/terminal/legacy/profiles:/${profileID}foreground-color $fColor } # default font for the game is 14 points # default font for the game is 14 points function setFontSize() { local fontsize font if [ "$1" == "" ]; then fontsize="14'" else fontsize="$1'" fi font="'Monospace Regular " font=$font$fontsize echo "$font" dconf write /org/gnome/terminal/legacy/profiles:/${profileID}font "$font" } # two arguments $1 is the keyword and $2 is the room function checkscore() { local i tablen=${#points[*]} ((tablen=tablen/4)) for i in $(seq $tablen) do if [[ "$1" == ${points[$i,1]} && "$2" == ${points[$i,2]} && "0" == ${points[$i,4]} ]] then value=${points[$i,3]} case "$value" in "1") paplay sound/Lamp_Off.ogg&;; "2") paplay sound/Lamp_On.ogg&;; "5") paplay sound/cp1.ogg&;; ".2") paplay sound/cp4.ogg&;; ".1") paplay sound/cp2.ogg&;; "10") paplay sound/Windchimes.ogg&;; esac score=$(($score+${points[$i,3]})) points[$i,4]="1" return fi done } # display paints the screen each time the user enters something function display() { local a rows cols p1row p2row p3row p4row p5row space space=" " rows=$(tput lines); cols=$(tput cols) p1row=3 p2row=$(((rows-3)/5)); p3row=$((p2row*2)); p4row=$((p2row*3));p5row=$((p2row*4)) currentRoom=$1 if [[ "$2" == "" ]] then previousRoom=0 else previousRoom=$2 fi if [[ $currentRoom != $previousRoom ]]; then previousRoom=$currentRoom tput cup 0 0 tput clear pp1="";pp2="";pp3="";pp4="";pp5="" fi # show the score at top right corner of window tput cup 0 $((cols-27)) #echo -ne Score is $(($score/10)) out of 124 echo -ne Score is $(($score/10)) out of 124 # set the room colour setColours "${roomcolour[$1,1]}" "${roomcolour[$1,2]}" if [[ ${rooms[$1,3]} == "on" ]]; then tput cup 0 0 echo -ne ${rooms[$1,2]} | fmt -w $FMTWIDTH fi if [[ ${active[$1,1]} != "0" ]]; then a=${active[$1,1]} tput cup $p1row 0 cp1=$(echo -ne ${phrases[$1,1,$a]} | fmt -w $FMTWIDTH) if [[ "$cp1" != "$pp1" ]]; then echo -ne "$CLRLINE" # do not slowPrint valance 1, use echo instead #slowPrint "$cp1" echo -ne "$cp1" pp1="$cp1" fi fi if [[ ${active[$1,2]} != "0" ]]; then a=${active[$1,2]} if [[ $a == A ]]; then # erase valances 2,3,4,5 tput cup $p1row 0 echo -ne "$CLRDOWN" tput cup $p1row 0 else tput cup $p2row 0 fi cp2=$(echo -ne ${phrases[$1,2,$a]} | fmt -w $FMTWIDTH) if [[ "$cp2" != "$pp2" ]]; then echo -ne "$CLRLINE" # do not slowPrint valance 2, use echo instead #slowPrint "$cp2" echo -ne "$cp2" pp2="$cp2" fi fi if [[ ${active[$1,3]} != "0" ]]; then a=${active[$1,3]} if [[ $a == A ]]; then # erase valances 2,3,4,5 tput cup $p1row 0 echo -ne "$CLRDOWN" tput cup $p1row 0 else tput cup $p3row 0 fi cp3=$(echo -ne ${phrases[$1,3,$a]} | fmt -w $FMTWIDTH) if [[ "$cp3" != "$pp3" ]]; then echo -ne "$CLRLINE" # do not slowPrint valance 3, use echo instead #slowPrint "$cp3" echo -ne "$cp3" pp3="$cp3" fi fi if [[ ${active[$1,4]} != "0" ]]; then a=${active[$1,4]} if [[ $a == A ]]; then # erase valances 2,3,4,5 tput cup $p1row 0 echo -ne "$CLRDOWN" tput cup $p1row 0 else tput cup $p4row 0 fi cp4=$(echo -ne ${phrases[$1,4,$a]} | fmt -w $FMTWIDTH) if [[ "$cp4" != "$pp4" ]]; then echo -ne "$CLRLINE" # do not slowPrint valance 4, use echo instead #slowPrint "$cp4" echo -ne "$cp4" pp4="$cp4" fi fi if [[ ${active[$1,5]} != "0" ]]; then a=${active[$1,5]} cp5=$(echo -ne ${phrases[$1,5,$a]} | fmt -w $FMTWIDTH) if [[ $a == A ]]; then # erase valances 2,3,4,5 tput cup $p1row 0 echo -ne "$CLRDOWN" tput cup $p1row 0 else # I added in this if statement to prevent clearing the line # when you enter the same keyword two or more times. if [[ "$cp5" != "$pp5" ]]; then tput cup $p5row 0 echo -ne "$CLRLINE" tput cup $p5row 0 fi fi if [[ "$cp5" != "$pp5" ]]; then if [[ $a == A && ${solvedRooms[$1]} == 0 ]]; then solvedRooms[$1]="1" slowPrint "$cp5" else echo -ne "$cp5" fi else echo -ne "$cp5" fi pp5="$cp5" fi tput cup $((rows-2)) 0 printf "%0.s " $(seq 1 100) tput cup $((rows-2)) 0 } # Second display function function displayBrief() { local a rows cols p1row p2row p3row p4row p5row space space=" " rows=$(tput lines); cols=$(tput cols) p1row=3 p2row=$(((rows-3)/5)); p3row=$((p2row*2)); p4row=$((p2row*3));p5row=$((p2row*4)) currentRoom=$1 if [[ "$2" == "" ]] then previousRoom=0 else previousRoom=$2 fi if [[ $currentRoom != $previousRoom ]]; then previousRoom=$currentRoom tput cup 0 0 tput clear pp1="";pp2="";pp3="";pp4="";pp5="" fi # show the score at top right corner of window tput cup 0 $((cols-27)) #echo -ne Score is $(($score/10)) out of 124 echo -ne Score is $(($score/10)) out of 124 # set the room colour setColours "${roomcolour[$1,1]}" "${roomcolour[$1,1]}" if [[ ${rooms[$1,3]} == "on" ]]; then tput cup 0 0 echo -ne ${rooms[$1,2]} | fmt -w $FMTWIDTH fi if [[ ${active[$1,1]} != "0" ]]; then a=${active[$1,1]} tput cup $p1row 0 cp1=$(echo -ne ${phrases[$1,1,$a]} | fmt -w $FMTWIDTH) if [[ "$cp1" != "$pp1" ]]; then echo -ne "$CLRLINE" # do not slowPrint valance 1, use echo instead #slowPrint "$cp1" echo -ne "$cp1" pp1="$cp1" fi fi if [[ ${active[$1,2]} != "0" ]]; then a=${active[$1,2]} if [[ $a == A ]]; then # erase valances 2,3,4,5 tput cup $p1row 0 echo -ne "$CLRDOWN" tput cup $p1row 0 else tput cup $p2row 0 fi cp2=$(echo -ne ${phrases[$1,2,$a]} | fmt -w $FMTWIDTH) if [[ "$cp2" != "$pp2" ]]; then echo -ne "$CLRLINE" # do not slowPrint valance 2, use echo instead #slowPrint "$cp2" echo -ne "$cp2" pp2="$cp2" fi fi if [[ ${active[$1,3]} != "0" ]]; then a=${active[$1,3]} if [[ $a == A ]]; then # erase valances 2,3,4,5 tput cup $p1row 0 echo -ne "$CLRDOWN" tput cup $p1row 0 else tput cup $p3row 0 fi cp3=$(echo -ne ${phrases[$1,3,$a]} | fmt -w $FMTWIDTH) if [[ "$cp3" != "$pp3" ]]; then echo -ne "$CLRLINE" # do not slowPrint valance 3, use echo instead #slowPrint "$cp3" echo -ne "$cp3" pp3="$cp3" fi fi if [[ ${active[$1,4]} != "0" ]]; then a=${active[$1,4]} if [[ $a == A ]]; then # erase valances 2,3,4,5 tput cup $p1row 0 echo -ne "$CLRDOWN" tput cup $p1row 0 else tput cup $p4row 0 fi cp4=$(echo -ne ${phrases[$1,4,$a]} | fmt -w $FMTWIDTH) if [[ "$cp4" != "$pp4" ]]; then echo -ne "$CLRLINE" # do not slowPrint valance 4, use echo instead #slowPrint "$cp4" echo -ne "$cp4" pp4="$cp4" fi fi if [[ ${active[$1,5]} != "0" ]]; then a=${active[$1,5]} cp5=$(echo -ne ${phrases[$1,5,$a]} | fmt -w $FMTWIDTH) if [[ $a == A ]]; then # erase valances 2,3,4,5 tput cup $p1row 0 echo -ne "$CLRDOWN" tput cup $p1row 0 else # I added in this if statement to prevent clearing the line # when you enter the same keyword two or more times. if [[ "$cp5" != "$pp5" ]]; then tput cup $p5row 0 echo -ne "$CLRLINE" tput cup $p5row 0 fi fi if [[ "$cp5" != "$pp5" ]]; then if [[ $a == A && ${solvedRooms[$1]} == 0 ]]; then setColours "${roomcolour[$1,1]}" "${roomcolour[$1,2]}" solvedRooms[$1]="1" slowPrint "$cp5" else if [[ ${solvedRooms[$1]} == 1 ]]; then setColours "${roomcolour[$1,1]}" "${roomcolour[$1,2]}" fi echo -ne "$cp5" fi setUnixColours2 "${roomcolour[$1,1]}" "${roomcolour[$1,1]}" else echo -ne "$cp5" fi pp5="$cp5" fi tput cup $((rows-2)) 0 printf "%0.s " $(seq 1 100) tput cup $((rows-2)) 0 } # endingsequence is called when room 12 is solved - this function ends the game function endingsequence() { clear paplay sound/DialM.ogg 2>/dev/null & # gconftool-2 --set "/apps/gnome-terminal/profiles/Default/background_color" --type string "Oldlace" # gconftool-2 --set "/apps/gnome-terminal/profiles/Default/foreground_color" --type string "Black" setColours "#FDF5E6" "#000000" echo The Dressing Room echo aLine=$(echo 'I was in my room, playing dress up. I had on a princess gown that my father bought for me. It was the last thing that he had ever bought for me. I heard the crunch of wheels on the snow and looked out of the window. A fancy black car had come to collect me.'| fmt -w 100) slowPrint "$aLine" read anykey clear # gconftool-2 --set "/apps/gnome-terminal/profiles/Default/background_color" --type string "Floralwhite" setColours "#FFFAF0" "#000000" echo A Meadow of Flowers echo aLine=$(echo 'I think it must have been a funeral parlour, but I remember it as a field of flowers frozen in stasis. A little boy danced with me amongst the dead roses until the adults pulled us apart. You are not supposed to dance at a funeral.'| fmt -w 100) slowPrint "$aLine" read anykey clear # gconftool-2 --set "/apps/gnome-terminal/profiles/Default/background_color" --type string "Ghostwhite" setColours "#F8F8FF" "#000000" echo A Cemetary echo aLine=$(echo 'The grave was dark and frightening, like a black mouth in the earth. “What is in the box?” I asked. “Shhh.” “Do you not understand, child, your father is in there.” I did not understand. How could a person be in a box?'|fmt -w 100) slowPrint "$aLine" read anykey clear # gconftool-2 --set "/apps/gnome-terminal/profiles/Default/background_color" --type string "Seashell" setColours "#FFF5EE" "#000000" echo The Seashore echo aLine=$(echo 'I was a castaway, half-drowned, washed up on the shore. I had to go through my house, collecting my memories like seashells, putting them into little plastic bags with sticky labels.'|fmt -w 100) slowPrint "$aLine" echo read anykey clear # gconftool-2 --set "/apps/gnome-terminal/profiles/Default/background_color" --type string "Papayawhip" setColours "#FFEFD5" "#000000" echo The Breakfast Table echo aLine=$(echo -e '“Eat your breakfast.” \n“I don\047t want to eat my breakfast. This isn\047t what I like to eat. I want to go home.”'|fmt -w 100) slowPrint "$aLine" read anykey clear # gconftool-2 --set "/apps/gnome-terminal/profiles/Default/background_color" --type string "Linen" setColours "#FAF0E6" "#000000" echo A Closet echo aLine=$(echo 'I refused to eat. After a couple of days I sat down quietly folding and unfolding the sheets, pretending I was helping my grandmother with the laundry.'|fmt -w 100) slowPrint "$aLine" read anykey clear # gconftool-2 --set "/apps/gnome-terminal/profiles/Default/background_color" --type string "Honeydew" setColours "#F0FFF0" "#000000" echo The Garden echo aLine=$(echo '“Do you want to know,” she asked me, “what happens to children who do not do as they are told. I was weak and hungry. I could not tell how long I had been in the closet but it seemed like forever. She took me out into the garden. There was a fresh hole dug in the ground, not deep enough for a proper grave. '|fmt -w 100) slowPrint "$aLine" echo read anykey clear # gconftool-2 --set "/apps/gnome-terminal/profiles/Default/background_color" --type string "Mintcream" setColours "#F5FFFA" "#000000" echo The Toy Room echo aLine=$(echo 'Every time I picked up a toy, it turned me into a different person. There was one self that I kept secret: the girl on the back of the milk carton looking out, lost and unafraid.'|fmt -w 100) slowPrint "$aLine" read anykey clear # gconftool-2 --set "/apps/gnome-terminal/profiles/Default/background_color" --type string "Whitesmoke" setColours "#F5F5F5" "#000000" echo -e 'The Witch Hearth' echo aLine=$(echo 'I must have grown up a lot, because my limbs were long and when I caught a glimpse of myself in the glass, I had become beautiful. Then the window glazed over with the oily residue of the fire.'|fmt -w 100) slowPrint "$aLine" read anykey clear # gconftool-2 --set "/apps/gnome-terminal/profiles/Default/background_color" --type string "Snow" setColours "#FFFAFA" "#000000" echo -e A Pine Forest echo aLine=$(echo 'The boy was older than me. I tried to talk to him as he led me back through the forest, but he could not speak because he had turned into a wolf person. It was in case I tried to misbehave.'|fmt -w 100) slowPrint "$aLine" read anykey clear # gconftool-2 --set "/apps/gnome-terminal/profiles/Default/background_color" --type string "Ivory" setColours "#FFFFF0" "#000000" echo -e My Bedroom echo aLine=$(echo 'I had an old piece of a bone that had not burned properly. I took it back to my room and sharpened it, slowly, and carefully, over a long time, in the night. I made it into a key that would unlock the heart of the boy who led me through the forest. '|fmt -w 100) slowPrint "$aLine" read anykey clear # gconftool-2 --set "/apps/gnome-terminal/profiles/Default/background_color" --type string "Lightyellow" setColours "#FFFFE0" "#000000" echo -e Sunlight echo aLine=$(echo 'Today, I have become the milk-carton girl for good. I have my knife hidden underneath my dress when the boy comes to lead me through the forest. When we reach the gate, a light comes on. That is when he changes: his lips pull back a little, and his eyes go narrow. Now he is a wolf-boy.'|fmt -w 100) slowPrint "$aLine" echo aLine=$(echo 'In the middle of the forest, the ground hums and throbs with life. The soil draws sustenance from old rotten trees and seashells abandoned by the glaciers. I put roots down into the ground and all of that life fills my body, making me impossibly strong.'|fmt -w 100) slowPrint "$aLine" echo aLine=$(echo 'He growls at me, seeing that I do not follow. I take out the knife and it goes into him, clean.'|fmt -w 100) slowPrint "$aLine" echo aLine=$(echo 'A bright ray stabs down through the sighing trees. The sunlight breaks in waves above my head, fragments on the snowflake shards that dust the forest floor. '|fmt -w 100) slowPrint "$aLine" echo echo -e 'Run [ENTER]' # let's not use red inside functions #echo -e '${red}Run${off}.' #echo read -n1 -s -r clear # summary at end of game then exit epilogue } # checkword compares the user's entered word with each word in the words table # and if there is a match a new phrase replaces the old phrase function checkword() { local i j p q r n l letter word phlist room=$1 for i in {1..5} do # check only the keywords in the displayed phrases phlist= for j in {1..5} do if [ "${active[$room,$j]}" != "0" ]; then phlist=$phlist" "${active[$1,$j]} fi done for letter in $phlist do p=1 word=$(echo "${words[$room,$i,$letter]}" | cut -d" " -f$p) while [ "$word" != "" ]; do if [[ "$2" == "$word" ]]; then checkscore $word $room q=$((p+1)) n=$(echo "${words[$room,$i,$letter]}" | cut -d" " -f$q | cut -c1) l=$(echo "${words[$room,$i,$letter]}" | cut -d" " -f$q | cut -c2) # check if alternate room is given r=$(echo "${words[$room,$i,$letter]}" | cut -d" " -f$q | cut -c3-) if [[ $l != A ]]; then # alternate room if [ "$r" != "" ]; then active[$r,$n]=$l checkforactivations $r $n $l # current room else active[$room,$n]=$l checkforactivations $room $n $l fi else case $room in 1) paplay sound/Lurking.ogg&;; 2) paplay sound/Alone.ogg&;; 3) paplay sound/Horrible.ogg&;; 4) paplay sound/Meadow.ogg&;; 5) paplay sound/Ocean.ogg& paplay sound/Dread.ogg&;; 6) paplay sound/Horror.ogg&;; 7) paplay sound/Ballooning.ogg&;; 8) paplay sound/Changes.ogg&;; 9) paplay sound/Peaceful_Stalker.ogg&;; 10) paplay sound/Isolation.ogg&;; 11) paplay sound/Surreal.ogg&;; 12) paplay sound/Ominous.ogg&;; esac # room is solved # check if this is the last room (12) and # if so call the ending sequence from which # there is no return as the game is over if [ $room == 12 ]; then endingsequence fi for k in {1..5} do active[$room,$k]="A" holdcolour=${rooms[$room,1]} roomcolour[$room,1]=${unixcolour[$holdcolour]} if [[ "${rooms[$room,1]}" =~ "^Dark" ]]; then roomcolour[$room,2]=#ffffff else roomcolour[$room,2]=#000000 fi done fi fi p=$((p+2)) word=$(echo "${words[$1,$i,$letter]}" | cut -d" " -f$p) done done done } # set up ANSI escape sequences for turning # colours on and off black='\033[0;30m' green='\033[0;32m' red='\033[0;31m' yellow='\033[0;33m' off='\033[0m' off10='\033[0m\033[0m\033[0m\033[0m\033[0m\033[0m\033[0m\033[0m\033[0m\033[0m\033[0m\033[0m\033[0m\033[0m\033[0m\033[0m' CLRDOWN='\033[J' CLRLINE='\033[K' # duplicate solved rooms array for slowprint declare -A solvedRooms=( [1]="0" [2]="0" [3]="0" [4]="0" [5]="0" [6]="0" [7]="0" [8]="0" [9]="0" [10]="0" [11]="0" [12]="0") # points awarded per room # keyword, room, points, awarded? declare -A points=( [1,1]="grandmother" [1,2]="1" [1,3]="20" [1,4]="0" [33,1]="door" [33,2]="1" [33,3]="10" [33,4]="0" [34,1]="sunlight" [34,2]="1" [34,3]="10" [34,4]="0" [2,1]="ivory" [2,2]="1" [2,3]="50" [2,4]="0" [39,1]="remember" [39,2]="2" [39,3]="10" [39,4]="0" [3,1]="papayawhip" [3,2]="2" [3,3]="50" [3,4]="0" [32,1]="garden" [32,2]="3" [32,3]="10" [32,4]="0" [4,1]="grandmother" [4,2]="3" [4,3]="20" [4,4]="0" [5,1]="parsley" [5,2]="3" [5,3]="10" [5,4]="0" [35,1]="sunlight" [35,2]="3" [35,3]="10" [35,4]="0" [6,1]="honeydew" [6,2]="3" [6,3]="50" [6,4]="0" [28,1]="run" [28,2]="4" [28,3]="10" [28,4]="0" [29,1]="no" [29,2]="4" [29,3]="10" [29,4]="0" [30,1]="winter" [30,2]="4" [30,3]="10" [30,4]="0" [36,1]="sunlight" [36,2]="4" [36,3]="10" [36,4]="0" [40,1]="remember" [40,2]="4" [40,3]="10" [40,4]="0" [7,1]="snow" [7,2]="4" [7,3]="50" [7,4]="0" [31,1]="self" [31,2]="5" [31,3]="10" [31,4]="0" [25,1]="fur" [25,2]="5" [25,3]="10" [25,4]="0" [22,1]="Oliver" [22,2]="5" [22,3]="10" [22,4]="0" [46,1]="oliver" [46,2]="5" [46,3]="10" [46,4]="0" [43,1]="here" [43,2]="5" [43,3]="10" [43,4]="0" # same problem as below comment [44,1]="Ishmael" [44,2]="5" [44,3]="10" [44,4]="0" [37,1]="sunlight" [37,2]="5" [37,3]="10" [37,4]="0" [8,1]="seashell" [8,2]="5" [8,3]="50" [8,4]="0" [9,1]="grandmother" [9,2]="6" [9,3]="20" [9,4]="0" [10,1]="hearth" [10,2]="6" [10,3]="10" [10,4]="0" [11,1]="room" [11,2]="6" [11,3]="10" [11,4]="0" [41,1]="remember" [41,2]="6" [41,3]="10" [41,4]="0" [12,1]="whitesmoke" [12,2]="6" [12,3]="50" [12,4]="0" [26,1]="I" [26,2]="7" [26,3]="10" [26,4]="0" [38,1]="sunlight" [38,2]="7" [38,3]="10" [38,4]="0" [42,1]="remember" [42,2]="7" [42,3]="10" [42,4]="0" [13,1]="mintcream" [13,2]="7" [13,3]="50" [13,4]="0" [27,1]="dress-form" [27,2]="8" [27,3]="10" [27,4]="0" [14,1]="closet" [14,2]="8" [14,3]="10" [14,4]="0" [15,1]="grandmother" [15,2]="8" [15,3]="10" [15,4]="0" [16,1]="oldlace" [16,2]="8" [16,3]="50" [16,4]="0" [17,1]="Remember" [17,2]="9" [17,3]="100" [17,4]="0" [45,1]="remember" [45,2]="9" [45,3]="100" [45,4]="0" # Because of the capitalization there are two different entries for this scoring. # This could concievably cause a problem later. [24,1]="you" [24,2]="9" [24,3]="6" [24,4]="0" [18,1]="floralwhite" [18,2]="9" [18,3]="50" [18,4]="0" [19,1]="linen" [19,2]="10" [19,3]="50" [19,4]="0" [20,1]="place" [20,2]="11" [20,3]="10" [20,4]="0" [21,1]="ghostwhite" [21,2]="11" [21,3]="50" [21,4]="0" [23,1]="lightyellow" [23,2]="12" [23,3]="100" [23,4]="0" # Mini points follow [47,1]="stairs" [47,2]="1" [47,3]="2" [47,4]="0" [48,1]="cobwebs" [48,2]="1" [48,3]="2" [48,4]="0" [49,1]="keyhole" [49,2]="1" [49,3]="2" [49,4]="0" [50,1]="bone" [50,2]="1" [50,3]="2" [50,4]="0" [51,1]="cat" [51,2]="1" [51,3]="2" [51,4]="0" [52,1]="beans" [52,2]="2" [52,3]="2" [52,4]="0" [53,1]="pins" [53,2]="2" [53,3]="2" [53,4]="0" [54,1]="ankle" [54,2]="2" [54,3]="2" [54,4]="0" [55,1]="crumbs" [55,2]="2" [55,3]="2" [55,4]="0" [56,1]="window" [56,2]="2" [56,3]="2" [56,4]="0" [57,1]="meal" [57,2]="3" [57,3]="2" [57,4]="0" [58,1]="hair" [58,2]="3" [58,3]="2" [58,4]="0" [59,1]="weeds" [59,2]="3" [59,3]="2" [59,4]="0" [60,1]="silver" [60,2]="3" [60,3]="2" [60,4]="0" [61,1]="friend" [61,2]="3" [61,3]="2" [61,4]="0" [62,1]="mushrooms" [62,2]="4" [62,3]="2" [62,4]="0" [63,1]="blowing" [63,2]="4" [63,3]="2" [63,4]="0" [64,1]="safe" [64,2]="4" [64,3]="2" [64,4]="0" [65,1]="broom" [65,2]="4" [65,3]="2" [65,4]="0" [66,1]="spirits" [66,2]="4" [66,3]="2" [66,4]="0" [67,1]="self" [67,2]="5" [67,3]="2" [67,4]="0" [68,1]="memories" [68,2]="5" [68,3]="2" [68,4]="0" [69,1]="honey" [69,2]="5" [69,3]="2" [69,4]="0" [70,1]="ship" [70,2]="5" [70,3]="2" [70,4]="0" [71,1]="snotgreen" [71,2]="5" [71,3]="2" [71,4]="0" [72,1]="tear" [72,2]="6" [72,3]="2" [72,4]="0" [73,1]="oranges" [73,2]="6" [73,3]="2" [73,4]="0" [74,1]="luxury" [74,2]="6" [74,3]="2" [74,4]="0" [75,1]="dangerous" [75,2]="6" [75,3]="2" [75,4]="0" [76,1]="heart" [76,2]="6" [76,3]="2" [76,4]="0" [77,1]="city" [77,2]="7" [77,3]="2" [77,4]="0" [78,1]="zero" [78,2]="7" [78,3]="2" [78,4]="0" [79,1]="garden" [79,2]="7" [79,3]="2" [79,4]="0" [80,1]="hat" [80,2]="7" [80,3]="2" [80,4]="0" [81,1]="ballgown" [81,2]="7" [81,3]="2" [81,4]="0" [82,1]="breast" [82,2]="8" [82,3]="2" [82,4]="0" [83,1]="child" [83,2]="8" [83,3]="2" [83,4]="0" [84,1]="portrait" [84,2]="8" [84,3]="2" [84,4]="0" [85,1]="bird" [85,2]="8" [85,3]="2" [85,4]="0" [86,1]="prince" [86,2]="8" [86,3]="2" [86,4]="0" [87,1]="God" [87,2]="9" [87,3]="2" [87,4]="0" [88,1]="fear" [88,2]="9" [88,3]="2" [88,4]="0" [89,1]="pomegranate" [89,2]="9" [89,3]="2" [89,4]="0" [90,1]="shoes" [90,2]="9" [90,3]="2" [90,4]="0" [91,1]="needles" [91,2]="9" [91,3]="2" [91,4]="0" [92,1]="scent" [92,2]="10" [92,3]="2" [92,4]="0" [93,1]="eternal" [93,2]="11" [93,3]="2" [93,4]="0" [94,1]="womb" [94,2]="11" [94,3]="2" [94,4]="0" [95,1]="seashells" [95,2]="11" [95,3]="2" [95,4]="0" [96,1]="valley" [96,2]="11" [96,3]="2" [96,4]="0" # Secret points follow #[97,1]="saddle-brown" [97,2]="4" [97,3]="1" [97,4]="0" #[98,1]="light-blue" [98,2]="5" [98,3]="1" [98,4]="0" #[99,1]="orange-red" [99,2]="0" [99,3]="1" [99,4]="0" #[100,1]="goldenrod" [100,2]="0" [100,3]="1" [100,4]="0" ) # active holds the state of the 5 phrases for each room declare -A active=([1,1]="a" [1,2]="a" [1,3]="a" [1,4]="0" [1,5]="0" [2,1]="a" [2,2]="0" [2,3]="0" [2,4]="0" [2,5]="0" [3,1]="a" [3,2]="a" [3,3]="0" [3,4]="0" [3,5]="0" [4,1]="a" [4,2]="0" [4,3]="0" [4,4]="0" [4,5]="0" [5,1]="a" [5,2]="0" [5,3]="0" [5,4]="0" [5,5]="0" [6,1]="a" [6,2]="0" [6,3]="0" [6,4]="0" [6,5]="0" [7,1]="a" [7,2]="0" [7,3]="0" [7,4]="0" [7,5]="0" [8,1]="a" [8,2]="0" [8,3]="0" [8,4]="0" [8,5]="0" [9,1]="a" [9,2]="0" [9,3]="0" [9,4]="0" [9,5]="0" [10,1]="a" [10,2]="0" [10,3]="0" [10,4]="0" [10,5]="0" [11,1]="a" [11,2]="0" [11,3]="0" [11,4]="0" [11,5]="0" [12,1]="a" [12,2]="0" [12,3]="0" [12,4]="0" [12,5]="0") # rooms holds the room colour with the room title declare -A rooms=([1,1]="Ivory" [1,2]="My Bedroom" [1,3]="off" [2,1]="Papayawhip" [2,2]="The Breakfast Table" [2,3]="off" [3,1]="Honeydew" [3,2]="The Garden" [3,3]="off" [4,1]="Snow" [4,2]="The Pine Forest" [4,3]="off" [5,1]="Seashell" [5,2]="The Seashore" [5,3]="off" [6,1]="Whitesmoke" [6,2]="The Witch's Hearth" [6,3]="off" [7,1]="Mintcream" [7,2]="The Toy Room" [7,3]="off" [8,1]="Oldlace" [8,2]="The Dressing Room" [8,3]="off" [9,1]="Floralwhite" [9,2]="A Meadow of Flowers" [9,3]="off" [10,1]="Linen" [10,2]="A Closet" [10,3]="off" [11,1]="Ghostwhite" [11,2]="A Cemetary" [11,3]="off" [12,1]="Lightyellow" [12,2]="Sunlight" [12,3]="off") # table of current room colours # initially all rooms are black declare -A roomcolour=( [1,1]="#000000" [1,2]="#00ff00" [2,1]="#000000" [2,2]="#00ff00" [3,1]="#000000" [3,2]="#00ff00" [4,1]="#000000" [4,2]="#00ff00" [5,1]="#000000" [5,2]="#00ff00" [6,1]="#000000" [6,2]="#00ff00" [7,1]="#000000" [7,2]="#00ff00" [8,1]="#000000" [8,2]="#00ff00" [9,1]="#000000" [9,2]="#00ff00" [10,1]="#000000" [10,2]="#00ff00" [11,1]="#000000" [11,2]="#00ff00" [12,1]="#000000" [12,2]="#00ff00") # table of unix colours declare -A colours=( [1,1]="Aliceblue" [1,2]="#F0F8FF" [2,1]="Antiquewhite" [2,2]="#FAEBD7" [3,1]="Aquamarine" [3,2]="#7FFFD4" [4,1]="Azure" [4,2]="#F0FFFF" [5,1]="Beige" [5,2]="#F5F5DC" [6,1]="Bisque" [6,2]="#FFE4C4" [7,1]="Blanchedalmond" [7,2]="#FFEBCD" [8,1]="Blueviolet" [8,2]="#8A2BE2" [9,1]="Brown" [9,2]="#A52A2A" [10,1]="Burlywood" [10,2]="#DEB887" [11,1]="Cadetblue" [11,2]="#5F9EA0" [12,1]="Chartreuse" [12,2]="#7FFF00" [13,1]="Chocolate" [13,2]="#D2691E" [14,1]="Coral" [14,2]="#FF7F50" [15,1]="CornflowerBlue" [15,2]="#6495ED" [16,1]="Cornsilk" [16,2]="#FFF8DC" [17,1]="Crimson" [17,2]="#DC143C" [18,1]="Cyan" [18,2]="#00FFFF" [19,1]="DarkBlue" [19,2]="#00008B" [20,1]="DarkCyan" [20,2]="#008B8B" [21,1]="DarkGoldenrod" [21,2]="#B8860B" [22,1]="DarkGray" [22,2]="#A9A9A9" [23,1]="DarkGreen" [23,2]="#006400" [24,1]="DarkKhaki" [24,2]="#BDB76B" [25,1]="DarkMagenta" [25,2]="#8B008B" [26,1]="DarkOliveGreen" [26,2]="#556B2F" [27,1]="DarkOrange" [27,2]="#FF8C00" [28,1]="DarkOrchid" [28,2]="#9932CC" [29,1]="Darkred" [29,2]="#8B0000" [30,1]="Darksalmon" [30,2]="#E9967A" [31,1]="Darkseagreen" [31,2]="#8FBC8F" [32,1]="Darkslateblue" [32,2]="#483D8B" [33,1]="Darkslategray" [33,2]="#2F4F4F" [34,1]="Darkturquoise" [34,2]="#00CED1" [35,1]="Darkviolet" [35,2]="#9400D3" [36,1]="Deeppink" [36,2]="#FF1493" [37,1]="Deepskyblue" [37,2]="#00BFFF" [38,1]="Dimgray" [38,2]="#696969" [39,1]="Dodgerblue" [39,2]="#1E90FF" [40,1]="Firebrick" [40,2]="#B22222" [41,1]="Floralwhite" [41,2]="#FFFAF0" [42,1]="Forestgreen" [42,2]="#228B22" [43,1]="Gainsboro" [43,2]="#DCDCDC" [44,1]="Ghostwhite" [44,2]="#F8F8FF" [45,1]="Gold" [45,2]="#FFD700" [46,1]="Goldenrod" [46,2]="#DAA520" [47,1]="Greenyellow" [47,2]="#ADFF2F" [48,1]="Honeydew" [48,2]="#F0FFF0" [49,1]="Hotpink" [49,2]="#FF69B4" [50,1]="Indianred" [50,2]="#CD5C5C" [51,1]="Indigo" [51,2]="#4B0082" [52,1]="Ivory" [52,2]="#FFFFF0" [53,1]="Khaki" [53,2]="#F0E68C" [54,1]="Lavender" [54,2]="#E6E6FA" [55,1]="Lavenderblush" [55,2]="#FFF0F5" [56,1]="Lawngreen" [56,2]="#7CFC00" [57,1]="Lemonchiffon" [57,2]="#FFFACD" [58,1]="Lightblue" [58,2]="#ADD8E6" [59,1]="Lightcoral" [59,2]="#F08080" [60,1]="Lightcyan" [60,2]="#E0FFFF" [61,1]="Lightgoldenrodyellow" [61,2]="#FAFAD2" [62,1]="Lightgreen" [62,2]="#90EE90" [63,1]="Lightgray" [63,2]="#D3D3D3" [64,1]="Lightpink" [64,2]="#FFB6C1" [65,1]="Lightsalmon" [65,2]="#FFA07A" [66,1]="Lightseagreen" [66,2]="#20B2AA" [67,1]="Lightskyblue" [67,2]="#87CEFA" [68,1]="Lightslategray" [68,2]="#778899" [69,1]="Lightsteelblue" [69,2]="#B0C4DE" [70,1]="Lightyellow" [70,2]="#FFFFE0" [71,1]="Limegreen" [71,2]="#32CD32" [72,1]="Linen" [72,2]="#FAF0E6" [73,1]="Magenta" [73,2]="#FF00FF" [74,1]="Mediumaquamarine" [74,2]="#66CDAA" [75,1]="Mediumblue" [75,2]="#0000CD" [76,1]="Mediumorchid" [76,2]="#BA55D3" [77,1]="Mediumpurple" [77,2]="#9370D8" [78,1]="Mediumseagreen" [78,2]="#3CB371" [79,1]="Mediumslateblue" [79,2]="#7B68EE" [80,1]="Mediumspringgreen" [80,2]="#00FA9A" [81,1]="Mediumturquoise" [81,2]="#48D1CC" [82,1]="Mediumvioletred" [82,2]="#C71585" [83,1]="Midnightblue" [83,2]="#191970" [84,1]="Mintcream" [84,2]="#F5FFFA" [85,1]="Mistyrose" [85,2]="#FFE4E1" [86,1]="Moccasin" [86,2]="#FFE4B5" [87,1]="Navajowhite" [87,2]="#FFDEAD" [88,1]="Oldlace" [88,2]="#FDF5E6" [89,1]="Olivedrab" [89,2]="#688E23" [90,1]="Orange" [90,2]="#FFA500" [91,1]="Orangered" [91,2]="#FF4500" # [92,1]="Orchid" [92,2]="#DA70D6" [93,1]="Palegoldenrod" [93,2]="#EEE8AA" [94,1]="Palegreen" [94,2]="#98FB98" [95,1]="Paleturquoise" [95,2]="#AFEEEE" [96,1]="Palevioletred" [96,2]="#D87093" [97,1]="Papayawhip" [97,2]="#FFEFD5" [98,1]="PeachPuff" [98,2]="#FFDAB9" [99,1]="Peru" [99,2]="#CD853F" [100,1]="Pink" [100,2]="#FFC0CB" [101,1]="Plum" [101,2]="#DDA0DD" [102,1]="Powderblue" [102,2]="#B0E0E6" [103,1]="Rosybrown" [103,2]="#BC8F8F" [104,1]="Royalblue" [104,2]="#4169E1" [105,1]="Saddlebrown" [105,2]="#8B4513" [106,1]="Salmon" [106,2]="#FA8072" [107,1]="Sandybrown" [107,2]="#F4A460" [108,1]="Seagreen" [108,2]="#2E8B57" [109,1]="Seashell" [109,2]="#FFF5EE" [110,1]="Sienna" [110,2]="#A0522D" [111,1]="Skyblue" [111,2]="#87CEEB" [112,1]="Slateblue" [112,2]="#6A5ACD" [113,1]="Slategray" [113,2]="#708090" [114,1]="Snow" [114,2]="#FFFAFA" [115,1]="Springgreen" [115,2]="#00FF7F" [116,1]="Steelblue" [116,2]="#4682B4" [117,1]="Tan" [117,2]="#D2B48C" [118,1]="Thistle" [118,2]="#D8BFD8" [119,1]="Tomato" [119,2]="#FF6347" [120,1]="Turquoise" [120,2]="#40E0D0" [121,1]="Violet" [121,2]="#EE82EE" [122,1]="Wheat" [122,2]="#F5DEB3" [123,1]="Whitesmoke" [123,2]="#F5F5F5" [124,1]="Yellowgreen" [124,2]="#9ACD32") # another table of unix colours declare -A unixcolour=( [Aliceblue]="#F0F8FF" [Antiquewhite]="#FAEBD7" [Aquamarine]="#7FFFD4" [Azure]="#F0FFFF" [Beige]="#F5F5DC" [Bisque]="#FFE4C4" [Blanchedalmond]="#FFEBCD" [Blueviolet]="#8A2BE2" [Brown]="#A52A2A" [Burlywood]="#DEB887" [Cadetblue]="#5F9EA0" [Chartreuse]="#7FFF00" [Chocolate]="#D2691E" [Coral]="#FF7F50" [Cornflowerblue]="#6495ED" [Cornsilk]="#FFF8DC" [Crimson]="#DC143C" [Cyan]="#00FFFF" [Darkblue]="#00008B" [Darkcyan]="#008B8B" [Darkgoldenrod]="#B8860B" [Darkgray]="#A9A9A9" [Darkgreen]="#006400" [Darkkhaki]="#BDB76B" [Darkmagenta]="#8B008B" [Darkolivegreen]="#556B2F" [Darkorange]="#FF8C00" [Darkorchid]="#9932CC" [Darkred]="#8B0000" [Darksalmon]="#E9967A" [Darkseagreen]="#8FBC8F" [Darkslateblue]="#483D8B" [Darkslategray]="#2F4F4F" [Darkturquoise]="#00CED1" [Darkviolet]="#9400D3" [Deeppink]="#FF1493" [Deepskyblue]="#00BFFF" [Dimgray]="#696969" [Dodgerblue]="#1E90FF" [Firebrick]="#B22222" [Floralwhite]="#FFFAF0" [Forestgreen]="#228B22" [Gainsboro]="#DCDCDC" [Ghostwhite]="#F8F8FF" [Gold]="#FFD700" [Goldenrod]="#DAA520" [Greenyellow]="#ADFF2F" [Honeydew]="#F0FFF0" [Hotpink]="#FF69B4" [Indianred]="#CD5C5C" [Indigo]="#4B0082" [Ivory]="#FFFFF0" [Khaki]="#F0E68C" [Lavender]="#E6E6FA" [Lavenderblush]="#FFF0F5" [Lawngreen]="#7CFC00" [Lemonchiffon]="#FFFACD" [Lightblue]="#ADD8E6" [Lightcoral]="#F08080" [Lightcyan]="#E0FFFF" [Lightgoldenrodyellow]="#FAFAD2" [Lightgreen]="#90EE90" [Lightgray]="#D3D3D3" [Lightpink]="#FFB6C1" [Lightsalmon]="#FFA07A" [Lightseagreen]="#20B2AA" [Lightskyblue]="#87CEFA" [Lightslategray]="#778899" [Lightsteelblue]="#B0C4DE" [Lightyellow]="#FFFFE0" [Limegreen]="#32CD32" [Linen]="#FAF0E6" [Magenta]="#FF00FF" [Mediumaquamarine]="#66CDAA" [Mediumblue]="#0000CD" [Mediumorchid]="#BA55D3" [Mediumpurple]="#9370D8" [Mediumseagreen]="#3CB371" [Mediumslateblue]="#7B68EE" [Mediumspringgreen]="#00FA9A" [Mediumturquoise]="#48D1CC" [Mediumvioletred]="#C71585" [Midnightblue]="#191970" [Mintcream]="#F5FFFA" [Mistyrose]="#FFE4E1" [Moccasin]="#FFE4B5" [Navajowhite]="#FFDEAD" [Oldlace]="#FDF5E6" [Olivedrab]="#688E23" [Orange]="#FFA500" [Orangered]="#FF4500" [Orchid]="#DA70D6" [Palegoldenrod]="#EEE8AA" [Palegreen]="#98FB98" [Paleturquoise]="#AFEEEE" [Palevioletred]="#D87093" [Papayawhip]="#FFEFD5" [Peachpuff]="#FFDAB9" [Peru]="#CD853F" [Pink]="#FFC0CB" [Plum]="#DDA0DD" [Powderblue]="#B0E0E6" [Rosybrown]="#BC8F8F" [Royalblue]="#4169E1" [Saddlebrown]="#8B4513" [Salmon]="#FA8072" [Sandybrown]="#F4A460" [Seagreen]="#2E8B57" [Seashell]="#FFF5EE" [Sienna]="#A0522D" [Skyblue]="#87CEEB" [Slateblue]="#6A5ACD" [Slategray]="#708090" [Snow]="#FFFAFA" [Springgreen]="#00FF7F" [Steelblue]="#4682B4" [Tan]="#D2B48C" [Thistle]="#D8BFD8" [Tomato]="#FF6347" [Turquoise]="#40E0D0" [Violet]="#EE82EE" [Wheat]="#F5DEB3" [Whitesmoke]="#F5F5F5" [Yellowgreen]="#9ACD32") # words contains the list of clickable (in this case, typed in) words and # the new phrase to display declare -A words=( [1,1,a]="morning 1b testing 1Q" [1,1,Q]="testing 1a" [1,1,b]="light 5b window 1c" [1,1,c]="stone 5a dawnlight 5b cobwebs 5f flies 5g" [1,2,a]="bed 2b" [1,2,b]="corner 4a quilt 5h straw 4b sleep 5i" [1,3,a]="door 3b" [1,3,b]="wood 5o keyhole 5p" [1,4,a]="hole 4b sunlight 5c stone 5a fingernails 5j" [1,4,b]="recess 4c mortar 5k" [1,4,c]="key 4d ivory 1b12 ivory 1z2 ivory 5A bone 5l" [1,4,d]="ivory 1b12 ivory 1z2 ivory 5A" [1,5,b]="sunlight 5c" [1,5,c]="stomach 5s grandmother 5d grandmother 3a9 hair 5e" [1,5,f]="sunlight 5c" [1,5,g]="bed 2b" [1,5,l]="ivory 1b12 ivory 1z2 ivory 5A cat 5m" [1,5,p]="stairs 5r someone 5q" [1,5,r]="someone 5q" [2,1,a]="board 1b food 2a" [2,1,b]="leg 5a meal 4b" [2,1,d]="breakfast 2b wobbles 3a woman 3c pot 5r" [2,1,z]="woman 3c table 1d breakfast 2b" [2,2,b]="she 3a plate 9a beans 5g Beans 5g sausage 4a Sausage 4a" [2,2,c]="breakfast 2b beans 5g Beans 5g sausage 4a Sausage 4a eat 4c little 5s" [2,3,a]="woman 3c pocket 3d shortened 5z ankle 5d loops 5e pins 5f iron 3b chain 3b ironchain 3b" [2,3,b]="pulled 3e ankle 5d" [2,3,c]="pocket 3d eat 4c victuals 2c" [2,3,d]="ask 5t show 5u" [2,3,e]="ankle 5d" [2,4,a]="fat 5h parsley 5i crumbs 5m meat 4b" [2,4,b]="fat 5h parsley 5i crumbs 5m eat 4c" [2,4,c]="Oliver 5o Oliver 3a5 oliver 5o oliver 3a5" [2,5,a]="something 5b" [2,5,i]="garden 5j garden 4a3 window 5k" [2,5,j]="woman 3c" [2,5,k]="sugar 5l" [2,5,m]="home 5n" [2,5,o]="goat 5q friend 5p" [2,5,q]="sausage 4a sausage 5y" [2,5,r]="beans 5g fat 5h" [2,5,t]="tell 5w speak 5v remember 5x" [2,5,u]="tell 5w ask 5t papayawhip 1c12 papayawhip 2c3 papayawhip 5A" [3,1,a]="garden 1b" [3,1,b]="eleven 1c plots 1c grid 1d fruits 5a vegetables 5a" [3,1,c]="beds 3a grid 1d fruits 5a vegetables 5a" [3,1,d]="beds 3a grid 1d fruits 5a vegetables 5a vacant 5m weeds 5n" [3,2,a]="garden 1b cottage 2b" [3,2,b]="garden 1b dwelling 5e gingerbreading 5f eaves 5g" [3,2,c]="woman 3h standing 2d hut 3g" [3,2,d]="woman 3h hut 3g" [3,3,a]="raised 3b breath 5b" [3,3,b]="earth 3c compost 3d" [3,3,c]="deep 5c compost 3d" [3,3,d]="bone 5d blood 5d meal 5d deep 5c boneandblood 5d" [3,3,e]="tree 5h world 3f sunlight 5i tree 5h" [3,3,f]="pines 5w sunlight 5i cheek 5k" [3,3,g]="sorrows 5l" [3,3,h]="silver 5o bells 5o sliverbells 5o cockleshells 5p pretty 5q maids 5q captor 3i pitchfork 3j vacant 5m" [3,3,i]="pitchfork 3j vacant 5m" [3,3,j]="hand 5r deep 5c weeds 5n roots 5s sun 5t faint 5u Faster 5v honeydew 1d12 honeydew 4a4 honeydew 5A" [3,4,a]="parsley 4c windowsill 4b" [3,4,b]="parsley 4c" [3,5,g]="roof 3e" [3,5,i]="grandmother 5I grandmother 3a9 hair 5j" [3,5,l]="Oliver 5x Oliver 3a5 oliver 5x oliver 3a5" [3,5,o]="beds 3a" [3,5,x]="goat 5z friend 5y" [3,5,z]="weeds 5n" [4,1,a]="pine 1c forest 1b endless 2a" [4,1,b]="endless 2a pine 1c trees 2d floor 1d saddle-brown 1B needles 3a" [4,1,B]="endless 2a pine 1c trees 2d floor 1d needles 3a" [4,1,c]="red 5h whispering 2b breeze 1e endlessly 2a" [4,1,d]="endless 2a pine 1c trees 2d mushrooms 5c needles 3a" [4,1,e]="blowing 5g pine 1c trees 2d whisper 2b" [4,2,a]="forest 1b remember 5a wayout 5b out 5b way 5b" [4,2,b]="harpies 2c sleep 5G" [4,2,c]="hunt 2j night 2h" [4,2,d]="impressive 5L cedar 2e" [4,2,e]="twistedtrunk 2f twisted 2f trunk 2f" [4,2,f]="coiled 2g snake 2g" [4,2,g]="animal 2k" [4,2,k]="tracks 2i" [4,2,i]="pine-needles 3a needles 3a" [4,4,J]="wildflowers 4K snow 1e12 snow 1z5 snow 5A" [4,3,a]="feet 5W pricking 5j" [4,3,b]="prick 5j calloused 5k skin 5k" [4,3,d]="denizens 3e inhabit 3f forest 1b" [4,3,e]="spirits 5E" [4,3,f]="gathering 4j darkness 4j" [4,3,g]="remember 5a Don't 5B don't 5B panic 5H" [4,4,a]="running 4b pricking 5j feet 5W" [4,4,b]="away 4r pitchfork 4c anything 3d" [4,4,c]="shoulder 5F safer 5l slows 4d woman 4f fast 4s" [4,4,d]="weapon 4e speed 4h caught 4q help 5m" [4,4,e]="fleshandblood 4t flesh 4t blood 4t" [4,4,f]="broom 5n wind 4g tree 2d" [4,4,g]="air 5D lungs 5o spirits 5E 5h speed 4h feet 5W gathering 4j darkness 4j" [4,4,h]="forward 4i out 4k" [4,4,i]="run 4a" [4,4,j]="lost 3g think 4l remember 5a" [4,4,k]="way 5b calm 5p think 4l back 5z remember 5a persevere 4i" [4,4,l]="memory 5s time 5q winter 5t sunlight 4m" [4,4,m]="Yes 4n yes 4n" [4,4,n]="walk 4o" [4,4,o]="feet 5W sore 4r keep 4p going 4p go 4p" [4,4,p]="clearing 4J snow 1e12 snow 1z5 snow 5A" [4,4,q]="back 5z gathering 4j darkness 4j persevere 4i" [4,4,r]="lost 3g think 4l" [4,4,s]="speed 4h" [4,4,t]="movement 4u Wolves 4u wolves 4u Hungry 5c hungry 5c" [4,4,u]="no 4a" [4,5,c]="amanita 5d death-cap 5f Death-Cap 5f" [4,5,d]="hallucinogenic 5e red-to-yellow 5g" [4,5,e]="air 5d" [4,5,x]="poisonous 5y" [4,4,K]="Eglantine 5u eglantine 5u foxglove 5v crocus 5w belladonna 5x snow 1e12 snow 1z5 snow 5A" [5,1,a]="Sea 1b Sand 1c Sun 1d sea 1b sand 1c sun 1d" [5,1,b]="Sand 1c Sun 1d sand 1c sun 1d Great 1e great 1e greasy 1f grey-green 1g" [5,1,c]="Sea 1b Sun 1d sea 1b sun 1d scattered 1l beach 1k" [5,1,d]="Sea 1b Sand 1c sea 1b sand 1c shining 1o Phoebus 2o Apollo 2o phoebus 2o apollo 2o" [5,1,e]="Sand 1c Sun 1d Great 1e sand 1c sun 1d great 1e greasy 1f grey-green 1g sea 1b distance 1h white 5c whale 2c" [5,1,f]="Sand 1c Sun 1d Great 1e sand 1c sun 1d great 1e grey-green 1g sea 1b horizon 5e ship 5m painted 5d" [5,1,g]="Great 1e great 1e greasy 1f sea 1b Sand 1c Sun 1d sand 1c sun 1d snotgreen 5a dogsbody 3q shore 5f shore 1w" [5,1,h]="sea 1b sand 1c sun 1d waves 1i" [5,1,i]="sand 1c sun 1d greasy 1f slug 5b" [5,5,e]="sun 1d" [5,5,f]="Sand 5F sand 5F" [5,5,F]="Shore 5f shore 5f" [5,1,j]="Sea 1b Sun 1d sea 1b sun 1d scattered 1l beach 1k" [5,1,k]="beach 1k children 1m children 3i pebbles 1j pebbles 3m Sea 1b Sun 1d sea 1b sun 1d" [5,1,l]="Sea 1b Sun 1d sea 1b sun 1d beach 1k Pebbles 1j Pebbles 3m pebbles 1j pebbles 3m brokenthoughts 5g broken 5g thoughts 5g" [5,1,m]="Barefoot 5h barefoot 5h children 1m children 3i footprints 1n sand 1c sand 3g longago 5w long 5w ago 5w" [5,5,h]="sun 1d sand 1c" [5,1,n]="beach 1k trail 5i" [5,5,i]="sand 1c waves 1i slug 5b" [5,1,o]="Sea 1b Sand 1c sea 1b sand 1c honey 5j lady 1p harbour 1s" [5,1,p]="Sea 1b Sand 1c Venus 1q sea 1b sand 1c venus 1q" [5,1,q]="Sea 1b Sand 1c sea 1b sand 1c eveningstar 3h eveningstar 5k horizon 5e sun 1d sinks 1r" [5,1,r]="Sea 1b Sand 1c sea 1b sand 1c sun 1d waves 1i ship 3n ship 5m" [5,1,s]="single 5l ship 3n ship 5m Sea 1b Sand 1c sea 1b sand 1c sun 1d sails 2z" [5,1,z]="seashore 1t seashore 4a shells 1t shells 4a" [5,1,t]="sunlight 1v shore 1w water 1u water 3e" [5,4,a]="litter 4b" [5,1,u]="shore 1w water 1u water 3e deep 1x whale 2c" [5,1,v]="Apollo 2o apollo 2o sleep 5y shore 1w shore 5f water 1u water 3e" [5,1,w]="dogsbody 3q Sunlight 1v sunlight 1v water 1u water 3e deep 1x" [5,1,x]="surfaces 1y Sunlight 1v sunlight 1v Water 1u water 3e Shore 1w Shore 5f Shells 4a shore 1w shore 5f shells 4a" [5,1,y]="memories 5z memories 3j water 1u water 3e Nothing 5s nothing 5s" [5,2,c]="something 2n name 2d" [5,2,n]="Ishmael 5n sure 2e" [5,2,d]="sure 2e Moby 5o" [5,2,e]="born 2f" [5,2,f]="light 2g safety 2l safety 3o darkness 2k" [5,2,g]="Bright 2i bright 2i blinding 2j" [5,2,i]="sun 1d" [5,2,j]="darkness 2k" [5,2,k]="Safety 2l safety 2l" [5,2,l]="people 2m people 3d stay 2m die 5p" [5,2,m]="seashore 1t" [5,2,o]="Associations 2p associations 2p sun 1d sea 1b sea 3f" [5,2,p]="One 5q one 5q connects 2q another 5r train 2r thought 2u" [5,2,q]="Nothing 5s nothing 5s together 5t trainwreck 2s thought 2u" [5,2,r]="held 2v wheels 5u entire 2w" [5,5,u]="beginning 2y" [5,2,s]="crashing 2t" [5,2,t]="waves 1i waves 3k" [5,2,u]="Broken 5g broken 5g" [5,2,v]="warmth 5v lingering 2x shining 1o sun 1o" [5,2,w]="beginning 2y" [5,2,x]="stay 2m" [5,2,y]="light 2g" [5,2,z]="Longago 5w Longago 3p long 5w long 3p ago 5w ago 3p" [5,3,a]="Oliver 3b here 3B oliver 3b" [5,3,B]="Oliver 3b oliver 3b" [5,3,q]="rock 3r familiaris 3w half-rotten 3t glass 3s eyed 3x" [5,3,r]="half-rotten 3t" [5,3,s]="friend 3a broken 5g thoughts 5g" [5,3,t]="fur 3v touch 3u" [5,3,u]="fur 3v warm 5v sun 1d" [5,3,w]="glass 3s eyed 3x gazes 5x" [5,3,x]="gaze 5x soul 3y heart 3z" [5,4,b]="packages 4e styrofoam 4c shells 1t shells 4a" [5,4,c]="eggshells 4d light-blue 3l" [5,4,d]="shore 1w shore 5f snails 3c snails 4o" [5,4,e]="paper 4g chestnuts 4f" [5,4,f]="shells 1t shells 4a" [5,4,g]="peanuts 4h" [5,4,h]="self-realization 5B nutcracker 4l discrimination 4k" [5,5,B]="tablet 4j white 5c" [5,5,C]="C 5J c 5j shell 1t shell 3c shell 4a" [5,4,j]="C 5J c 5j shell 1t shell 3c shell 4a" [5,4,k]="faculty 4m intolerance 4n shell 4a shell 1t" [5,4,l]="shell 4a shell 1t crab 4r" [5,4,m]="shell 4a shell 1t self 5W" [5,4,n]="shell 4a shell 1t mind 4o" [5,4,o]="Round 4q round 4q spiral 4p" [5,4,p]="seashell 1f12 seashell 1z6 seashell 5A " [5,4,q]="eggshell 4d" [5,4,r]="intolerance 4n" [6,1,a]="Dark 5z dark 5z smell 5B taste 5C" [6,1,z]="Mother 1b ashes 1c face 1e" [6,1,b]="ashes 1c face 1e" [6,1,c]="sweep 1d nose 1f mouth 1g" [6,1,d]="dustpan 1m broom 1l heavy 2j ashes 1c 1n" [6,1,e]="tear 5a Mother 1b ashes 1c" [6,1,f]="Mother 1b breathe 1h" [6,1,g]="coughing 1i" [6,1,h]="work 1j" [6,1,i]="kick 2a work 1j" [6,1,j]="unswept 1k" [6,5,b]="mother 1b" [6,1,l]="dustpan 1m iron 1n bristles 5c" [6,1,m]="ashcan 1o bone 1p" [6,1,n]="hair 5d woman 5b work 1j" [6,5,d]="grandmother 5e grandmother 3a9" [6,1,o]="bone 1p" [6,1,p]="pocket 1q" [6,1,q]="finishsweeping 1r finish 1r treasures 3a" [6,1,r]="fire 4a hearth 1R" [6,1,R]="fire 4a" [6,2,a]="vengeance 2b weak 2h" [6,2,b]="I 2c back 2f bleeds 2g" [6,2,c]="evil 2d" [6,2,d]="heart 5l good 2e" [6,2,e]="woman 5b" [6,2,f]="strong 2i" [6,2,g]="work 1j" [6,2,h]="stronger 2i Stronger 2i" [6,2,i]="father 2s" [6,2,j]="heart 5l home 2o" [6,2,k]="Sixteen 2l sixteen 2l" [6,2,l]="child 2m" [6,2,m]="everything 2n remember 5f" [6,2,n]="Father 2s father 2s Home 2o home 2o Mommy 2p mommy 2p" [6,2,o]="remember 5f oranges 5g Mommy 2p Father 2s" #gold 5h [6,5,h]="hair 5d" [6,2,p]="remember 5f face 2q name 2r" [6,2,q]="Father 2s" [6,2,r]="Father 2s different 5j" [6,2,s]="pin 5k love 2t heart 5l mind 2v" [6,2,t]="luxury 5n dangerous 5m freedom 2u" [6,2,u]="iron 1n" [6,2,v]="work 1j" [6,3,a]="cheese 3b letter 3c" [6,3,b]="letter 3c" [6,3,c]="moment 5o" [6,4,a]="logs 5p straw 5q embers 5r ember 5r emberjar 5r blow 4b" [6,4,f]="whitesmoke 1g12 whitesmoke 1z7 whitesmoke 5A" [6,5,r]="burn 4c" [6,4,b]="burns 4c" [6,4,c]="warmth 4d chimney 4e whitesmoke 1g12 whitesmoke 1z7 whitesmoke 5A" [6,4,d]="smoke 4f eyes 5s" [6,4,e]="smoke 4d" [7,1,a]="Red 1b red 1b Yellow 1c yellow 1c Blue 1d blue 1d" [7,1,b]="Roses 5a roses 5a apples 5b Moses 5c blood 5d Yellow 1c yellow 1c Blue 1d blue 1d" [7,1,c]="Red 1b red 1b Banana 5e banana 5e hat 5f goldenrod 5g It 5h it 5h Blue 1d blue 1d" [7,1,d]="Red 1b red 1b Yellow 1c yellow 1c Ball 5i ball 5i airplane 5j bulb 5k musicbox 5l box 5l" [7,1,z]="White 1e white 1e" [7,1,e]="Chalk 1f chalk 1f Paper 2a paper 2a Milk 1g milk 1g" [7,1,f]="circle 1h ground 1i" [7,1,h]="shelves 1k toys 2z paper 2a milk 1g chalk 1f circle 1f chalkcircle 1f" [7,1,i]="blackstone 1j black 1j stone 1j zero 5n" [7,1,j]="shelves 1k toys 2z paper 2a milk 1g table 1l" [7,1,k]="toys 2z paper 2a milk 1g table 1l" [7,1,l]="paper 2a milk 1g chalk 1f circle 1f chalkcircle 1f reachit 2y" [7,2,a]="Chicago 2b Tribune 2e chicago 2b tribune 2e" [7,2,b]="TheWindyCity 2c WindyCity 2c Windy 2c windy 2c City 2c city 2c" [7,2,c]="UrbsinHorto 2d urbs 2d horto 2d Urbs 2d Horto 2d" [7,2,d]="City 5m Garden 5o city 5m garden 5o" [7,2,e]="power 2g Rome 2f rome 2f" [7,2,f]="Eternal 2h City 5m eternal 2h city 5m" [7,2,h]="World 3a world 3a end 2j" [7,2,j]="apocalypse 2k" [7,2,k]="world 3a end 2j" [7,2,g]="Kingdom 2l glory 2m kingdom 2l" [7,2,l]="King 2p king 2p father 2q" [7,2,p]="Hispicture 4b his 4b picture 4b front 4a" [7,2,m]="Shining 2n shining 2n sun 2o" [7,2,m]="sun 2o sunlight 2o" [7,2,o]="world 3a" [7,1,g]="thisgirl 2r girl 2r picture 2s pictureofher 2s" [7,2,r]="seen 2t milk 1g" [7,2,t]="milk 1g" [7,2,s]="pretty 2u prettydress 2u dress 2u" [7,2,u]="ball 5i ball 3a ball 1h ball 2X" [7,3,a]="globe 3h" [7,3,h]="I 3m i 3m different 3b differentperson 3b person 3b" [7,3,b]="I 3m i 3m child 3d longer 3c" [7,3,c]="I 3m i 3m child 3d ever 3e" [7,3,d]="I 3m i 3m mother 3f insignificant 3j old 2x woman 2v" [7,3,n]="I 3m i 3m witch 5p" [7,3,e]="ages 3g" [7,3,g]="World 3a world 3a end 2j" [7,3,f]="I 3m i 3m world 3a womb 3i" [7,3,i]="Matter 3l matter 3l Matrix 3l matrix 3l Mater 3l mater 3l" [7,3,j]="I 3m i 3m supercede 3k" [7,3,k]="I 3m i 3m" [7,3,l]="me 3m" [7,3,m]="globe 3h" [7,4,a]="headline 5q" [7,5,q]="WEEPS 4d weeps 4d MISSING 4c missing 4c" [7,4,b]="weeping 4d happy 4e" [7,4,c]="hispicture 4b his 4b picture 4b" [7,4,d]="Tears 4f tears 4f" [7,4,f]="dissolve 4g" [7,4,e]="remembering 5r bright 5s tears 4f" [7,5,r]="bright 5s" [7,5,s]="shining 2n sun 2o" [7,4,g]="forget 5t ballgown 5u mintcream 1h12 mintcream 1z8 mintcream 5A" [8,1,a]="mirror 5a floors 5b armoire 5c marbletop 5d marble 5d unguents 5e perfumes 5f cosmetics 5g velvet 5h settee 5i window 5j bird 5k dress-form 5l" [8,2,a]="carriage 2c drive 2b" [8,2,b]="carriage 2c drive 2b" [8,2,c]="carriage 2c drive 2b" [8,1,z]="dress 2i mirror 5a floors 5b armoire 5c marbletop 5d marble 5d unguents 5e perfumes 5f cosmetics 5g velvet 5h settee 5i window 5j bird 5k form 5M casement 2d" [8,2,d]="dress 2i breast 5m lights 5n driveway 2e" [8,2,e]="dress 2i breast 5m lights 5n hoping 5N come 2f" [8,2,f]="dress 2i breast 5m lights 5n driveway 2e hoping 5n nothing 2g" [8,2,g]="dress 2i breast 5m lights 5n driveway 2e hoping 5n come 2f bogeyman 2h" [8,2,h]="dress 2i breast 5m lights 5n driveway 2e hoping 5n come 2f nothing 2g bogeyman 2h closet 5o" [8,2,i]="fabric 2j ready 2s breast 5m mirror 5a" [8,2,j]="dress 2i cradling 2l forget 2l" [8,2,k]="child 5p ready 2s" [8,2,l]="danced 2q night 2r he 2m wonder 2m Prince 5s flowers 2p" [8,2,m]="secret 2n" [8,2,n]="gift 2o bird 5k" [8,2,o]="danced 2q night 2r flowers 2p" [8,2,p]="danced 2q midnight 2r flash-frozen 5r" [8,2,q]="stars 5q love 5t night 2r flowers 2p" [8,2,r]="ready 2s" [8,2,s]="go 3a memories 2t" [8,2,t]="His 2m his 2m" [8,3,a]="drawer 3b" [8,3,b]="box 3c" [8,3,c]="choker 4a oldlace 1z9 oldlace 1i12 oldlace 5A" [8,4,a]="grandmother 5u grandmother 3a9 silhoutteportrait 5v portrait 5v silhoutte 5v neck 5w oldlace 1z9 oldlace 1i12 oldlace 5A" [8,5,j]="courtyard 5J" [9,1,a]="azaleas 5U begonias 5B chrysanthamums 5C daffodils 5D echinacea 5E foxglove 5F gazanias 5G hibiscus 5H inula 5I juniper 5J knapweed 5K lavender 5L moonflower 5M nightshade 5N Orchidaceae 5O orchidaceae 5O Poppy 5P poppy 5p lace 5Q rhododendron 5R snapdragon 5S tobacco 5T verbascum 5V wormwood 5W xylosma 5X yarrow 5Y single 2a zinnia 2a snowandice 2b snow 2b ice 2b u 5Z you 5Z" [9,2,a]="butterflies 2c" [9,2,c]="spring 2e Mexico 2f" [9,2,f]="South 2y" [9,2,z]="azaleas 5U begonias 5B chrysanthamums 5C daffodils 5D echinacea 5E foxglove 5F gazanias 5g hibiscus 5H inula 5I juniper 5J knapweed 5K lavender 5L moonflower 5M nightshade 5N Orchidaceae 5O orchidaceae 5O Poppy 5P poppy 5P lace 5Q Rhododendron 5R rhododendron 5R Snapdragon 5S snapdragon 5S Tobacco 5T tobacco 5T verbascum 5V wormwood 5W xylosma 5X yarrow 5Y singlepinkzinnia 2a zinnia 2a forest 5e snow 1d ice 1f" [9,1,d]="snowflake 5j flowers 1e zinnia 2a zinnia 3l forest 5e snow 1d ice 1f" [9,1,f]="zinnia 2a zinnia 3l snow 1d tufts 2g wildflowers 1e" [9,5,j]="memory 5k" [9,1,e]="azaleas 5U begonias 5B chrysanthamums 5C daffodils 5D echinacea 5E foxglove 5F gazanias 5g hibiscus 5H inula 5I juniper 5J knapweed 5K lavender 5L moonflower 5M nightshade 5N Orchidaceae 5O orchidaceae 5O Poppy 5P poppy 5P lace 5Q Rhododendron 5R rhododendron 5R Snapdragon 5S snapdragon 5S Tobacco 5T tobacco 5T verbascum 5V wormwood 5W xylosma 5X yarrow 5Y singlepinkzinnia 2a zinnia 2a snow 1d ice 1f" [9,1,z]="snow 1d ice 1f zinnia 3l forest 5e" [9,2,g]="ruby-red 5f slippers 2h" [9,5,f]="pomegranate 5l" [9,2,h]="glass 2i ice 1f" [9,2,i]="needles 5g painful 2j cold 2k" [9,2,j]="dance 2l danceforever 2l forever 2l" [9,2,k]="slippers 2h" [9,2,l]="shoes 5h redshoes 5h red 5h whirl 2m" [9,2,m]="senses 5i ice 1f fall 2n" [9,2,n]="snow 1d" [9,3,l]="living 5n hand 3m picks 3q" [9,5,n]="beauty 5o" [9,5,o]="Truth 5p truth 5p" [9,5,p]="Beauty 5o beauty 5o" [9,3,m]="man 3n look 2o face 2o" [9,2,o]="Masked 2p masked 2p" [9,2,p]="featureless 2q" [9,2,q]="expression 2r" [9,2,r]="smile 2s tear 2t" [9,2,s]="obsequiously 2u" [9,2,t]="smile 2s" [9,2,u]="displeasing 2v" [9,2,v]="please 2w" [9,2,w]="beg 2x" [9,3,n]="Prince 3o prince 3o" [9,3,o]="afraid 3p" [9,3,p]="fear 5q plucked 3q" [9,3,q]="colour 5r zinnia 2a floralwhite 1j12 floralwhite 1z10 floralwhite 5A" # 4z 3z and 5q are empty lines for clearing text away. Because 3l-3q are in use 3A follows 3k in the Grandma's ghost section. This should probably be cleaned up when someone has a lot of spare time. [9,3,a]="Grandma'sghost 3c ghost 3c" [9,3,c]="God 5a God's 5a rules 5b dead 5c talk 3b talk 5q" [9,3,b]="Yes 4a yes 3z Yes 3z yes 4a" [9,4,a]="? 3d ? 4z ? 5s" [9,5,s]="Grandma? 3e Grandma 3e Grandma? 5q Grandma 5q grandma? 3e grandma 3e grandma? 5q grandma 5q" [9,3,e]="Yes 4b yes 3z Yes 3z yes 4b" [9,4,b]="? 4z ? 5t ? 3f" [9,5,t]="Grandma? 3g Grandma 3g Grandma? 5q Grandma 5q grandma? 3g grandma 3g grandma? 5q grandma 5q" [9,3,g]="Yes 4c yes 3z Yes 3z yes 4c" [9,4,c]="? 4z ? 5u ? 3h" [9,5,u]="Grandma? 3i Grandma 3i Grandma? 5q Grandma 5q grandma? 3i grandma 3i grandma? 5q grandma 5q" [9,3,i]="Yes 4d yes 3z Yes 3z yes 4d" [9,4,d]="? 4z ? 5v ? 3j" [9,5,v]="Grandma? 3k Grandma 3k Grandma? 5q Grandma 5q grandma? 3k grandma 3k grandma? 5q grandma 5q" [9,3,k]="Yes 4e yes 3z Yes 3z yes 4e" [9,4,e]="? 4z ? 5w ? 3X" [9,5,w]="Grandma? 3B Grandma 3B Grandma? 5q Grandma 5q grandma? 3B grandma 3B grandma? 5q grandma 5q" [9,3,B]="Yes 4f yes 3z Yes 3z yes 4f" [9,4,f]="sometimes 4z stuck 4z past 4z sometimes 5x stuck 5x past 5x sometimes 3C stuck 3C past 3C" [9,5,x]="Grandma? 3D Grandma 3D Grandma? 5q Grandma 5q grandma? 3D grandma 3D grandma? 5q grandma 5q" [9,3,D]="Yes 4g yes 3z Yes 3z yes 4g" [9,4,g]="? 4z ? 5y ? 3E" [9,5,y]="Grandma? 3F Grandma 3F Grandma? 5q Grandma 5q grandma? 3F grandma 3F grandma? 5q grandma 5q" [9,3,F]="Yes 4h yes 3z Yes 3z yes 4h" [9,4,h]="? 4z ? 3G ? 5q" [9,3,G]="Remember 4i Remember 3z remember 4i remember 3z" [9,4,i]="Remember 5z Remember 4z remember 5z remember 4z" [10,1,a]="Everything 1b everything 1b neatly 1c away 1g" [10,1,b]="should 1a" [10,1,c]="Folded 1d folded 1d sorted 1e stacked 1f" [10,1,d]="half 5a more 1b" [10,1,e]="Everything 1b everything 1b neatpiles 1c piles 1c neat 1c" [10,1,f]="ontop 1b on 1b top 1b One 5b one 5b another 5c" [10,1,g]="neatly 1c stacked 1f" [10,1,z]="Everything 1t everything 1t hidden 1h" [10,1,t]="It 1z it 1z shouldbe 1z should 1z be 1z Itisasitshouldbe 1z is 1z asitshouldbe 1z as 1z" [10,1,u]="Folded 1v folded 1v sorted 1w stacked 1x" [10,1,v]="Inhalf 5a in 5a half 5a sometimesmore 1t sometimes 1t more 1t" [10,1,w]="Everything 1t everything 1t neatpiles 1u neat 1u piles 1u" [10,1,x]="ontop 1u top 1u on 1u One 5b one 5b another 5c" [10,1,h]="shelves 1i exactly 1k uppermost 2a" [10,1,i]="closet 1j shelves 1j" [10,1,j]="Everything 1t everything 1t neatly 1u hidden 1h" [10,1,k]="neat 1l sorted 1w stacked 1x" [10,1,l]="Real 1m neat 1m real 1m Realneat 1m" [10,1,m]="Everything 1z everything 1z asitshouldbe 1n as 1n it 1n should 1n" [10,1,n]="Neatly 1u neatly 1u hidden 1h" [10,2,a]="sheets 2b" [10,2,b]="Cotton 2c cotton 2c Flannel 2d flannel 2d Polyester 2e polyester 2e" [10,2,c]="sheets 2b" [10,2,d]="sheets 2b" [10,2,e]="hate 2f" [10,2,f]="witch 2g neverused 2j never 2j used 2j" [10,2,g]="oldhag 2h old 2h hag 2h closet 1j" [10,2,h]="notlooking 2i not 2i looking 2i" [10,2,i]="open 2k openthem 2k them 2k" [10,2,j]="see 2i" [10,2,k]="threesheets 2l sheets 2l three 2l" [10,2,l]="paper 3a" [10,3,a]="Red 4a red 4a Blue 4b blue 4b Violet 4c violet 4c Red 5x red 5x Blue 5y blue 5y Violet 5z violet 5z" # 3rd valence now keeps the 3 colours, 4 holds the letter and 5 holds the rest. The phrases table needs to be adjuted accordingly. [10,5,x]="burns 5d" [10,5,y]="scent 5e" [10,5,z]="different 5f linen 1k12 linen 1z11 linen 5A" [11,1,a]="rowonrow 1b row 1b Row 1b Rowonrow 1b" [11,1,b]="Still 1c still 1c quiet 1d" [11,1,c]="place 1e still 1a quiet 1a stillquiet 1a" [11,1,d]="Quietandstill 1a Quiet 1a still 1a" [11,1,z]="silent 1f tombstones 2q snowflakes 2k angel 2n foldedwings 2n wings 2n" [11,1,f]="feet 5h snowflakes 2k angel 2n frozengrass 1g frozen 1g grass 1g" [11,1,g]="snowflakes 2k angel 2n sharpshards 1h shards 1h freezingrain 2b rain 2b lastnight 5m feet 5h glass 2a truth 2r tombstones 2q" [11,1,h]="snowflakes 2k angel 2n sharpshards 1h shards 1h freezingrain 2b rain 2b feet 5h glass 2a truth 2r lastnight 5m tombstones 2q" [11,2,a]="window 5a mirror 5b" [11,2,b]="tears 2c sky 5e" [11,2,c]="soft 2d liquid 2d softandliquid 2d" [11,2,d]="melt 2e melthearts 2e earth 2g frozen 2g frozenearth 2g" [11,2,e]="heart 2f stone 2f heartofstone 2f" [11,2,f]="glass 2a" [11,2,g]="Nothing 2h ground 2j thaws 2j groundthaws 2j" [11,2,h]="Thenothing 2i denseandthick 2i" [11,2,i]="darkens 5c sky 5e" [11,2,j]="spring 5d" [11,2,k]="catch 2l broken 2m evaporate 2l seized 2l moment 5n" [11,2,l]="moments 5n" [11,2,m]="catch 2l glass 2a" [11,2,n]="shame 5j grief 5k fear 5l recognized 5i face 2o" [11,2,o]="somewhere 2p" [11,2,p]="face 2o" [11,2,q]="names 3a passed 5f thisway 5f passedthisway 5f" [11,2,r]="truth 2s" [11,3,a]="effaced 3b" [11,3,b]="time 3c tears 2c" [11,3,c]="dawn 4a" [11,4,a]="horizon 4c creep 4f light 4b" [11,4,b]="cold 4d grey 4e" [11,4,c]="Cold 4d cold 4d grey 4e light 4b sky 5e fingers 5q" [11,4,d]="forward 4g" [11,4,e]="Cold 4d cold 4d light 4b angel 2n tombs 2q sky 5e" [11,4,f]="forward 4g" [11,4,g]="tomb 4h" [11,4,h]="She 4j she 4j standing 4i" [11,4,i]="witch 4k" [11,4,j]="Standing 4i standing 4i" [11,4,k]="Climb 4l climb 4l check 4l" [11,4,l]="push 4m pushher 4m pushherin 4m" [11,4,m]="seashells 5x pocket 4n" # there are two 5r's - the 'seashells' 5r should change to 5x [11,4,n]="shell 5r cracking 4o fingers 5q" [11,4,o]="sorry 4p" [11,4,p]="intact 5s shell 5r climb 4q climbinside 4q inside 4q" [11,4,q]="stone 4r alone 4t" [11,4,r]="roll 4s rollitaway 4s angel 2n face 2o" [11,4,s]="stone 4r alone 4t" [11,4,t]="ghostwhite 1z12 ghostwhite 5A" [11,5,a]="Mirror 5b" [11,5,b]="Window 5a" [11,5,c]="dawn 4a" [11,5,d]="eternal 5t" [11,5,e]="womb 5u" [11,5,f]="thevalleyoftheshadowofdeath 5g shadowofdeath 5g valley 5g" [11,5,q]="cold 4d" [12,1,z]="lightyellow 5A") # phrases is a list of all possible phrases for each room declare -A phrases=( [1,1,a]="It's ${red}morning${off}." [1,1,Q]="It's ${red}testing${off}." [1,1,b]="I can tell that it's morning because there is a little ${red}light${off} filtering in through the ${red}window${off}." [1,1,c]="A single, high-set opening in the ${red}stone${off} allows a smudge of ${red}dawnlight${off} to trickle in past thick ${red}cobwebs${off} laden with the husks of ${red}flies${off}." [1,2,a]="I am in ${red}bed${off}." [1,2,b]="In the ${red}corner${off} there is an old moth-eaten ${red}quilt${off}, settled atop a pile of ${red}straw${off}. This is where I ${red}sleep${off}." [1,3,a]="The ${red}door${off} is to the south." [1,3,b]="The door is locked. It looks like it's made of rotten ${red}wood${off}, but it's really strong. There is a ${red}keyhole${off}, but no doorknob." [1,4,a]="I often dream of digging a ${red}hole${off} here and climbing out into the ${red}sunlight${off}. There are shallow scratches on the ${red}stone${off}, and my ${red}fingernails${off} are worn to nothing." [1,4,b]="I pull back the mildewy straw and uncover a tiny ${red}recess${off} where the ${red}mortar${off} has been pried loose." [1,4,c]="Out of the recess, I pull a ${red}key${off} made of ${yellow}ivory${off} coloured ${red}bone${off}." [1,4,d]="The ${yellow}ivory${off} key is clearly the work of many sleepless nights. I vaguely recall the feel of it,trembling in my palm as I painstakingly grind it into shape against a burr in the wall. A pang of fear sings in my heart. I'm not sure why." [1,5,a]="Stone: The walls, the ceiling, the floor, all of the same rough-hewn grey." [1,5,b]="Dawnlight: I bathe my face in the fragile, liquid illumination. The ${red}sunlight${off} will only be here for a few minutes more." [1,5,c]="Sunlight: It triggers a memory: lying on my ${red}stomach${off} in the sun, while my ${red}grandmother${off} plaits my ${red}hair${off}." [1,5,d]="Grandmother: She's not here." [1,5,e]="Hair: A matted mess, short-shorn." [1,5,f]="Cobwebs: If I could brush them away, I would be able to get more ${red}sunlight${off} in here, but I can't reach." [1,5,g]="Flies: Those that haven't been caught are hovering in a thick cloud near my ${red}bed${off}." [1,5,h]="Quilt: It smells bad, but there's nowhere to wash it." [1,5,i]="Sleep: ...I daren't." [1,5,j]="Fingernails: They were beautiful once. Now they're chipped and raw." [1,5,k]="Mortar: It's old and crumbly, and I remember that it tastes like chalk." [1,5,l]="Bone: A slender bit of bleached ${yellow}ivory${off} from the carcasse of some poor unfortunate creature. I prefer to imagine it belonged to a ${red}cat${off}." [1,5,m]="Cat: I think I used to have a cat, but I might just be imagining it." [1,5,n]="Footsteps: This must be why I'm afraid." [1,5,o]="Wood: Oak." [1,5,p]="Keyhole: Looking through the keyhole, I can see some ${red}stairs${off}. I hear ${red}someone${off} moving out there." [1,5,q]="Someone: My first impulse is to shout for help, but something stops me. I wish I knew who it was, walking around." [1,5,r]="Stairs: They lead up. There's ${red}someone${off} moving around, out of sight, at the top." [1,5,s]="Stomach: Empty." [1,5,A]="I am in a small room, little more than a cage, with a squalid pile of straw in the corner for a bed. As the door creaks open on rusty hinges, I hide a home-made key in a crack in the stone, pushing the straw quickly back in place. There is a woman standing there, old, with a rottenapple face. She squints at me short-sightedly. I am stronger than her, I'm sure, and yet I feel certain that if I pushed past her and ran, I would suffer some terrible punishment. I bow my head. Breakfast time, she says. There's work to do today." [1,5,X]="You are carrying a heavy heart." [2,1,a]="The ${red}board${off} is laid out with ${red}food${off}." [2,1,b]="A humble wooden board, with one ${red}leg${off} shorter than the others, bears our ${red}meal${off} on its back." [2,1,d]="${red}Breakfast${off} is served on a humble wooden table, which ${red}wobbles${off} slightly. The old ${red}woman${off} bends over the ${red}pot${off}." [2,1,z]="The old ${red}woman${off} stands next to a ${red}table${off}, laid out with ${red}breakfast${off}." [2,2,a]="I dare not take anything until I've been called." [2,2,b]="${red}She${off} takes down a ${red}plate${off} and dishes up a hefty helping of sweet baked beans${off}. A fat, juicy ${red}sausage${off} is laid beside it. ${red}She${off} puts it down and serves up another." [2,2,c]="Victuals: ${red}Breakfast${off} smells so good. ${red}Beans${off}. ${red}Sausage${off}. Maybe I could I ${red}eat${off} just a ${red}little${off}." [2,3,a]="The old ${red}woman${off} leads me forward and makes me sit. ${red}She${off} takes an iron ${red}chain${off} out of her ${red}pocket${off} and slips one end around a ${red}shortened${off} table-leg, the other around my ${red}ankle${off}, holding the ${red}loops${off} together with ${red}pins${off}." [2,3,b]="I am bound to the table by a slender iron chain. It looks like it would break if I ${red}pulled${off}, but the raw pain around my ${red}ankle${off} tells a different story." [2,3,c]="The woman is wearing an apron, with a large ${red}pocket${off} in the front. ${red}Eat${off} up your ${red}victuals${off}, she says." [2,3,d]="Oh, the old woman scolds, You'd like to see what I have in my pocket, wouldn't you? Just ${red}ask${off}, and I'll ${red}show${off} you." [2,3,e]="My ${red}ankle${off} refuses to fight. The body remembers pain, even when the mind forgets. I have already failed at this." [2,4,a]="The sausage is bursting with ${red}fat${off}, stuffed with ${red}parsley${off} and rich brown bread ${red}crumbs${off}. It's only the ${red}meat${off}..." [2,4,b]="The sausage is bursting with ${red}fat${off}, stuffed with ${red}parsley${off} and rich brown bread ${red}crumbs${off}. No matter how appetizing it looks, I remember that I must not ${red}eat${off}." [2,4,c]="Eat: I can't eat any of this delicious breakfast, because it's ${red}Oliver${off}." [2,5,a]="The leg is shortened so that ${red}something${off} can be slipped on and off." [2,5,b]="Something I don't like, but I don't remember what." [2,5,c]="The body remembers pain, even when the mind forgets. I have already failed at this." [2,5,d]="Ankle: It is bruised, with a deep welt in exactly the place where the chain pulls against it." [2,5,e]="Loops: The chain around my ankle is very tight. It hurts." [2,5,f]="Pins: Just as the chain looks easy to snap, the pins should be easy to pull out. But if you touch them, they burn like hot irons." [2,5,g]="Baked Beans: The beans look so delicious, and I'm so hungry. I wish that I could eat." [2,5,h]="Fat: Crispy, fried fat. So tempting." [2,5,i]="Parsley: There's a ${red}garden${off} full of it just outside the ${red}window${off}." [2,5,j]="Garden: The old woman's garden. It's outside." [2,5,k]="Window:The window is frosted, like spun ${red}sugar${off}. It lets light in, but you can't see out." [2,5,l]="Sugar: Everything is reminding me of food." [2,5,m]="Bread Crumbs: If only I had trail of them to follow ${red}home${off}..." [2,5,n]="Home: Far, far away." [2,5,o]="Oliver: He was a ${red}goat${off}, my ${red}friend${off}." [2,5,p]="Friend: Friends don't eat friends." [2,5,q]="Goat: A frisky, friendly, free-gamboling creature, now ground up for ${red}sausage${off} meat." [2,5,r]="Pot: It's full of ${red}beans${off}, fried in ${red}fat${off}." [2,5,s]="Little: I must be going insane. It's the hunger that does it." [2,5,t]="Never ask. Never ${red}tell${off}. Never ${red}speak${off}. I do ${red}remember${off} that." [2,5,u]="She'll never tell me. Not unless I ${red}ask${off}. There's something in there, though, round, and roly-poly, that smells like ${yellow}papayawhip${off}." [2,5,v]="Speak: Never." [2,5,w]="Tell: Never." [2,5,x]="Remember: If only I could." # 5x used to be double plotted. I have changed one of them to 5z. [2,5,z]="Shortened Table-leg: It's cut short to accomodate the iron loop." [2,5,y]="Sausage: Flesh bound in skin." [2,5,A]="I remember. My favourite desert, the smell of it released in a magical cloud as the golden lid is whisked from the serving tray. Fruit brought from a thousand miles away, carefully cut into long, chewy orange strips, dried, soaked, cut, whipped together with fresh-skimmed cream. Strange, how sharply scent can trigger a memory. The remembrance of food past only whets my appetite for the feast laid out before me. I am attached to the table with a slender chain of iron which will not break. I think that I must have tried to escape once before. The old woman sits down across from me. She slurps noisily at her beans, allows the fat of her sausage to dribble down her chin. I sit and look desperately at the plate of food in front of me. I must not eat. I must not eat. I'm so hungry. Finally, she finishes and looks at me. You'd better eat up, she says, I have a lot for you to do today. I won't have you weak. \nI don't touch a morsel. When she sees that I won't eat, she returns the food to the pot. “A matter of time, she says, only a matter of time. She takes off her apron and hangs it on a peg. We're going to be outside today. I think you'll like that." [3,1,a]="A ${red}garden${off}." [3,1,b]="${red}Eleven${off} ${red}plots${off}, neatly arranged in a ${red}grid${off} pattern, growing ${red}fruits${off} and ${red}vegetables${off}." [3,1,c]="Eleven little ${red}beds${off}, sleeping side by side, form a neat ${red}grid${off}, laden with ${red}fruits${off} and ${red}vegetables${off}." [3,1,d]="Eleven ${red}beds${off} are arranged in a three by four pattern, each growing different ${red}fruits${off} and ${red}vegetables${off}, but one corner is ${red}vacant${off}, covered in scrubby ${red}weeds${off}." [3,2,a]="The ${red}garden${off} is beside a pleasant looking ${red}cottage${off}." [3,2,b]="Next to the ${red}garden${off} is a small ${red}dwelling${off} with ${red}gingerbreading${off} around the ${red}eaves${off}." [3,2,c]="The ${red}woman${off} is ${red}standing${off} beside her little ${red}hut${off}." [3,2,d]="The ${red}woman${off} is leaning, crook-backed, against her ${red}hut${off}." [3,3,a]="Each bed is slightly ${red}raised${off}, suggesting a chest raised by ${red}breath${off}." [3,3,b]="The ${red}earth${off} is well ${red}tilled${off}, with ${red}compost${off} mixed in." [3,3,c]="The dark, rich soil has been dug ${red}deep${off}, and ${red}compost${off} mixed in." [3,3,d]="Composted bone and blood ${red}meal${off} is mixed into the ${red}deep${off}-tilled soil." [3,3,e]="I climb up a ${red}tree${off}, unto the roof, and sit looking over the ${red}world${off}. The ${red}sunlight${off} is warm on my ${red}cheek${off}. Beautiful." [3,3,f]="I can see the ${red}pines${off} closing in around the cottage from all sides. The ${red}sunlight${off} is warm on my ${red}cheek${off}." [3,3,g]="The hut is where we came from. Superficially pleasant, but full of ${red}sorrows${off}." [3,3,h]="Mary, Mary, quite contrary, how does your garden grow? With ${red}silver${off} bells, and ${red}cockleshells${off}, and pretty ${red}maids${off} all in a row, my ${red}captor${off} sings in a croaking voice. She picks up a ${red}pitchfork${off} and leads me to the ${red}vacant${off} back corner of the garden." [3,3,i]="The old woman is remarkably ugly. The folds of skin at her neck are twisted, as though someone once tried, and failed, to kill her. She uses the ${red}pitchfork${off} like a staff as she leads me towards the ${red}vacant${off} bed." [3,3,j]="I take the tool reluctantly from her ${red}hand${off} and begin pushing it ${red}deep${off} into the soil. The ${red}weeds${off} have grasping ${red}roots${off} that are hard to turn up. I'm so weak, sweating and trembling from the exertion. The ${red}sun${off}, my old friend, has turned against me. It beats down hard. I feel like I'm going to ${red}faint${off}. ${red}Faster${off}, the old woman says, ${red}Faster${off}. I need to plant my ${yellow}honeydew${off}." [3,4,a]="There is a patch of ${red}parsley${off} growing under the ${red}windowsill${off}." [3,4,b]="The window looks back into the kitchen. A patch of ${red}parsley${off} grows beneath it." [3,4,c]="When no one is looking, I reach down and grab a handful of parsley, gobbling it ravenously. It tastes unbelievably good. Even though I know that there isn't really much nutrition in it, it lifts my spirits and seems to give me strength." [3,5,a]="Fruits and vegetables: They look delicious, but they're not ripe yet." [3,5,b]="I like thinking of the gardens lying there, breathlessly awaiting their produce." [3,5,c]="No, not six feet deep. I must be getting paranoid." [3,5,d]="Bone and blood meal: A very rich fertilizer." [3,5,e]="I can't recall who lives here." [3,5,f]="Gingerbreading: I think, unaccountably - nibble nibble, like a mouse, who's been nibbling at my house?" [3,5,g]="Eaves: You know, the edge of a ${red}roof${off}." [3,5,h]="Tree: I think it's a yew." [3,5,i]="Sunlight: It triggers a memory: lying in the sun, while my ${red}grandmother${off} plaits my ${red}hair${off}." [3,5,I]="Grandmother: She's not here." [3,5,j]="Hair: It used to be long and golden." [3,5,k]="Cheek: A maiden blush bepaints it." [3,5,l]="I shed a tear, remembering my poor ${red}Oliver${off}." [3,5,m]="Vacant: Stark. Empty. A conspicuous vacancy." [3,5,n]="Weeds: They're not very healthy. The soil must be poor." [3,5,o]="Silver bells: Pretty little flowers, nodding sleepily on the borders of the ${red}beds${off}." [3,5,p]="They remind me of the seashore, and make me feel strangely sad." [3,5,q]="I used to be pretty. That was a long time ago." [3,5,r]="Old, withered, merciless." [3,5,s]="Black, tuberous, with tough, fibrous tendrils leaching the soil dry." [3,5,t]="It's not his fault he's so hot. I forgive him." [3,5,u]="I momentarily let go of my consciousness. A painful tug at my ankle restores me to my senses." [3,5,v]="I'm working as fast as I can." [3,5,w]="Pines: A vast forest." [3,5,x]="He was a ${red}goat${off}, my ${red}friend${off}." [3,5,y]="Friend: A necessary risk." [3,5,z]="Goat: They like to eat ${red}weeds${off}." [3,5,A]="I have finished turning up the vacant square of soil at the back of the cottage garden. A shudder passes through me and I sink to my knees, totally exhausted. The old woman laughs. She leaves me there, thinking that I'm too weak even to try escaping. Now to get the fertilizer, she says. You stay here. Quiet as a mouse.” I can't believe my luck. My chance, at last. I watch as her knobbly back retreats into the hut. I gather my strength. I wait." [4,1,a]="A ${red}forest${off}, seemingly ${red}endless${off}, ${red}pine${off}." [4,1,b]="A seemingly ${red}endless${off} stand of close-planted ${red}pine${off} trees, its ${red}floor${off} softly padded with saddle-brown ${red}needles${off}." [4,1,B]="A seemingly ${red}endless${off} stand of close-planted ${red}pine${off} trees, its ${red}floor${off} softly padded with ${red}needles${off}." [4,1,c]="The ${red}red${off} pines are planted closely together, ${red}whispering${off} to one another in the ${red}breeze${off}. The seem to go on ${red}endlessly${off}, in all directions." [4,2,a]="Of course the ${red}forest${off} isn't really endless. I just don't ${red}remember${off} the ${red}way${off} out." [4,5,a]="Remember: There are lots of things I don't remember." [4,5,b]="Way: Out there. Somewhere. I hope." [4,1,d]="As I study the floor beneath the ${red}endless pine trees${off}, I can see ${red}mushrooms${off} poking up from under the soft carpetting of ${red}needles${off}." [4,5,c]="Mushrooms: ${red}amanita muscaria${off} - the ${red}Death-Cap${off}." [4,5,d]="Amanita muscaria: A ${red}hallucinogenic${off}, spotted, firebrick specimen of the amanita genus." [4,5,e]="Hallucinogenic: I'm already confused enough." [4,5,f]="Death Cap: I don't know why, but it's true. Death wears a hat." [4,5,g]="Red-to-yellow: No two are the same." [4,2,b]="Whisper. Whisper. Doubtless ${red}harpies${off}, muttering in their ${red}sleep${off}." [4,2,c]="The harpies prefer to ${red}hunt${off} at ${red}night${off}." [4,2,j]="I could crouch here, catch something to eat, but I am the hunted." [4,2,h]="Sensations are heightened." [4,2,d]="A little ways off, I can see a particularly ${red}impressive${off} old ${red}cedar${off}." [4,2,e]="An old cedar tree with a ${red}twisted${off} trunk stands surrounded by pines." [4,2,f]="The trunk winds around on itself, like a ${red}coiled${off} snake." [4,2,g]="Involuntarily, I look around for the ${red}animal${off} which the shape of the tree suggests. I don't see any snakes here." [4,2,k]="I can tell, by the ${red}tracks${off}, that all sorts of animals live amongst the pines, but I can't see any. Perhaps they're not awake." [4,2,i]="Animal tracks criss-cross here and there, but they're hard to make out. The ${red}pine-needles${off} won't hold an imprint." [4,5,L]="Impressive: It sends a shiver down my spine." [4,1,e]="A stiff breeze is ${red}blowing${off} through the ${red}pine trees${off}, inciting them to ${red}whisper${off} darkly to one another." [4,5,g]="Blowing: Ooooh, eee. Oooo, eee." [4,3,a]="The needles crunch beneath my bare ${red}feet${off}. My soles are sensitive to their ${red}pricking${off}. It reminds me of something. Something that frightens me." [4,5,h]="Red: Three-needled pines. The bark is flaky and bright orange-red in the upper crown; the tree's name is thus derived." [4,5,W]="Feet: Delicate enough for glass slippers." [4,3,b]="The needles ${red}prick${off} the soles of my feet where thin strips of ${red}calloused${off} skin have been peeled from my heels. I don't remember whether I did that myself." [4,5,j]="Prick: No. Please. Don't." [4,5,k]="Skin: I must have been going barefoot a lot lately." [4,4,a]="I am ${red}running${off} hard, the pine-needles ${red}pricking${off} beneath my ${red}feet${off}." [4,4,b]="I have so little energy, but I must get ${red}away${off}. I think of dropping the ${red}pitchfork${off}, to lighten myself, but I might need it. The forest could be full of ${red}anything${off}." [4,4,c]="I have the pitchfork slung over my ${red}shoulder${off}. It makes me feel a little ${red}safer${off}, even though it ${red}slows${off} me down. It's okay, I think, the old ${red}woman${off} isn't very ${red}fast${off}." [4,5,l]="Safe: Like a child clinging to a security blanket to protect itself from a dragon." [4,4,d]="Reluctantly, I decide to relinquish my ${red}weapon${off}. ${red}Speed${off} is more important. If I get ${red}caught${off}, nothing will ${red}help${off} me." [4,5,m]=" Help: I pray. I don't recall if I believe in a God, but now seems the time to hope." [4,4,e]="On second thought, there are a lot of things in this forest that are of pure ${red}flesh${off} and blood. I'd better hang on to this." [4,4,f]="I keep thinking that I can hear her, coming up behind me, riding a ${red}broom${off}, borne on the ${red}wind${off}. But it's just the trees ${red}whispering${off}." [4,4,g]="I pull the ${red}air${off} deep into my ${red}lungs${off}, and ask the ${red}spirits${off} of the wind to ${red}speed${off} my ${red}feet${off}. I surge forward, into the ${red}gathering darkness${off}." [4,4,h]="I drop everything and push myself ${red}forward${off}. Nothing matters except to get ${red}out${off}." [4,5,n]="Broom: A silly fantasy. Of course she doesn't ride a broom." [4,5,o]="Lungs: Bursting. Burning. Young. Strong." [4,4,i]="I ${red}run${off}, and ${red}run${off}, but it's so easy to get turned around in a forest. At last, feeling as if my lungs are set afire within me, I burst into a clearing. There is a little hut. White smoke is rising from its chimney. The old woman is standing there, a severe look on her face. 'It is too early,' she says, 'but I have no choice.' Exhausted, I fall to the ground. She picks binds my ankle with an iron chain and brings me over to the freshly cultivated earth, plants my feet in the rich soil, and begins to mutter quietly to herself. I feel my feet transforming, roots going far down into the earth. I stretch my hands upwards, desperately, as if I could grab hold of the sky and pull myself free. My arms solidify in that position. The old woman goes into the house, brings out her apron, and begins to pluck my scattered memories, like fruit from my branches." [4,4,j]="I'm going to get ${red}lost${off} in the darkness. I need to ${red}think${off}, to ${red}remember${off} the way." [4,4,k]="I pull to a halt. I realize that I don't know the ${red}way${off} out. I need to ${red}calm${off} down, to ${red}think${off}. Should I go back, try to ${red}remember${off} the way, or should I ${red}persevere${off}?" [4,5,p]="Calm down: Deep breath. Deep breath. Visualize. Fear, a dark purple stain, running down my spine and out through the soles of my feet." [4,4,l]="I push into the soft surfaces of my ${red}memory${off}. A long ${red}time${off} ago. The forest in ${red}winter${off}. Which way was the ${red}sunlight${off} slanting?" [4,5,q]="Time: I shudder. I hadn't realized that it had been months." [4,4,m]="${red}Yes${off}. I remember. That way. To the north." [4,4,n]="Turning north, I ${red}walk${off}." [4,4,o]=" My ${red}feet${off} are getting sore. I keep ${red}go${off}ing." [4,5,r]="Sore feet: I don't have time to stop and rest." [4,4,p]="At last I come to a ${red}clearing${off}. Here, the ground dips down, and a little valley holds the last of the winter ${yellow}snow${off}." [4,4,J]="The pine forest surrounds a little patch of swaying ${red}wildflowers${off}. I wonder why the ${yellow}snow${off} should have lingered here amongst the blossoms?" [4,4,K]="${red}Eglantine${off}, ${red}foxglove${off}, ${red}crocus${off}, ${red}belladonna${off}, all bloom together out of season. I wonder why the ${yellow}snow${off} should have lingered here amongst the blossoms?" [4,5,s]="Memory: So unreliable. So fragile. The matrix of identity." [4,5,t]="Winter: Yes, I remember now. When I came here, there was snow on the ground." [4,5,u]="Eglantine: Rosa rubiginosa" [4,5,v]="Foxglove: Digitalis purpurea" [4,5,w]="Crocus: Crocus longiflorus" [4,5,x]="Belladonna: Atropa belladonna. Deadly nightshade - very ${red}poisonous${off}." [4,5,y]="Poisonous: Contains scopolamine and hyoscyamine." [4,4,q]="Just the thought of having to go ${red}back${off} there terrifies me. I ${red}persevere${off}, into the gathering ${red}darkness${off}." [4,5,z]="Go back: No. Not for anything." [4,5,F]="Shoulder: It's a bit sore from all that work. I'll survive." [4,4,r]="I must get away, no matter where, at any cost. I stop. I realize I'm ${red}lost${off}. I need to ${red}think${off}." [4,3,d]="My mind has started to invent ${red}denizens${off} to ${red}inhabit${off} the ${red}forest${off}." [4,3,e]="I'm sure that there are harpies here. Fell ${red}spirits${off}. Watching." [4,3,f]="Anything could be lurking in the gathering ${red}darkness${off}." [4,3,g]="Have I been here before? I don't properly ${red}remember${off}. Everything all looks the same. ${red}Don't panic${off}." [4,5,B]="Don't panic: But I don't know where my towel is." [4,5,H]="Panic: Okay." [4,4,s]="Then again, maybe she is fast. Maybe I should pick up ${red}speed${off}." [4,4,t]="I can see ${red}movement${off}. ${red}Wolves${off}, maybe. ${red}Hungry${off}." [4,4,u]="A shadow. I turn. It leaps. I hold the pitchfork out in front of me, and the creature yelps, loud, as it is impaled on the tines. The weight of it knocks me over. Its claws graze my thigh as it kicks helplessly against its impending death. I lie pressed beneath it, and it grows heavier by the moment, crushing me down. I look up, into its face, which has turned towards me. 'I knew you,' it says. It isn't a wolf. A man. Someone that I knew. 'I'm sorry. I didn't know.' 'You knew.' I don't have any words for that. But ${red}no${off}, that was somewhere else. I'm getting it all mixed up." [4,5,G]="Sleep: I daren't." [4,5,C]="Hungry: I don't have time to find food." [4,5,D]="Air: Fresh. Pine-scented." [4,5,E]="Spirits: I can hear them moving in the air above, below, all around." [4,5,A]="In the depths of the pine forest, this clearing holds time. Summer, winter, the freshly turned leaves. I walk onto the icy shell of hardened snow, and it numbs my aching feet. I punch a hole in it and pick out a handful of the powder inside. It's wonderfully cold. One large snowflake holds its shape perfectly, mirroring itself again and again in a fractal arrangement of frozen crystals. I remember and remember. A sudden gust of wind sweeps the moment away..." [5,1,a]="${red}Sea${off}, ${red}sand${off}, ${red}sun${off}." [5,1,b]="${red}Great${off}, ${red}greasy${off}, ${red}grey-green${off} sea. ${red}Sand${off}. ${red}Sun${off}." [5,1,e]="A vast, ${red}greasy${off}, ${red}grey-green${off} sea. A ${red}white whale${off} spouts in the ${red}distance${off}. ${red}Sand${off}. ${red}Sun${off}." [5,1,f]="${red}Great${off}, oily, ${red}grey-green${off} sea. A ${red}painted ship${off} lies idle on the ${red}horizon${off}. ${red}Sand${off}. ${red}Sun${off}." [5,1,g]="${red}Great${off}, ${red}greasy${off}, ${red}snotgreen${off} sea. A ${red}dogsbody${off} lies on the ${red}shore${off}. ${red}Sand${off}. ${red}Sun${off}." [5,1,h]="Far across the ${red}sea${off}, I can see the ${red}waves${off} rising and falling like belaboured ${red}breaths${off}. Beneath my feet, ${red}sand${off}. Above, ${red}sun${off}." [5,1,i]="Slick, ${red}greasy${off} waves leave a residue like ${red}slug${off} trails on the ${red}sand${off}. It shimmers in the ${red}sun${off}." [5,5,a]="Snotgreen: A distinctive shade of green. Not part of the extended list of named colors." [5,5,b]="Slug: Shudder. " [5,5,c]="White: A terrifying colour. " [5,5,d]="Painted: A lady in oils. " [5,5,e]="Horizon: The ${red}sun${off} hovers there. " [5,5,f]="Shore: ${red}Sand${off}." [5,5,F]="Sand: ${red}Shore${off}." [5,1,c]="Pebbles lie ${red}scattered${off} on the ${red}beach${off}. ${red}Sea${off}. ${red}Sun${off}." [5,1,j]="${red}Egg-shaped${off} stones lie ${red}scattered${off} on the ${red}beach${off}. ${red}Sea${off}. ${red}Sun${off}." [5,1,k]="Yes. This is a ${red}beach${off} where ${red}children${off} come to gather ${red}pebbles${off}. ${red}Sea${off}. ${red}Sun${off}." [5,1,l]="${red}Pebbles${off} lie scattered on the ${red}beach${off} like ${red}broken thoughts${off}. ${red}Sea${off}. ${red}Sun${off}." [5,5,g]="Broken Thoughts: I cannot repair." [5,1,m]="${red}Barefoot children${off} left their ${red}footprints${off} in the ${red}sand${off}, but they ran off ${red}long ago${off}." [5,5,h]="Barefoot: I can feel the ${red}sun${off}-warm ${red}sand${off} between my toes." [5,1,n]="Walking across the ${red}beach${off}, I notice that I leave no ${red}trail${off} behind me." [5,5,i]="Trail: The ${red}waves${off} leave ${red}slug${off}-trails on the ${red}sand${off}." [5,1,d]="${red}Sea${off}. ${red}Sand${off}. ${red}Phoebus Apollo shining${off}." [5,1,o]="${red}Sea${off}. ${red}Sand${off}. The sun ${red}pours${off} down like ${red}honey${off} on our ${red}lady${off} of the ${red}harbour${off}. " [5,5,j]="Honey: Shhh. It's okay." [5,1,p]="${red}Sea${off}. ${red}Sand${off}. ${red}Venus${off} is rising." [5,1,q]="${red}Sea${off}. ${red}Sand${off}. The ${red}evening star${off} winks on the horizon as the sun sinks down." [5,5,k]="Evening star: I recall seeing it through a telescope when I was a child." [5,1,r]="${red}Sea${off}. ${red}Sand${off}. The sun lies ${red}ship${off}wrecked above the ${red}waves${off}." [5,1,s]="${red}Sea${off}. ${red}Sand${off}. The sinking sun is caught in the ${red}sails${off} of a ${red}single ship${off}." [5,5,l]="Single: Lonely." [5,5,m]="Ship: She has no life. She has no crew." [5,1,z]="I am by the ${red}seashore${off}, gathering ${red}shells${off}. " [5,1,t]="${red}Sunlight${off} sparkles on the ${red}water${off}. The ${red}water${off} laps at the ${red}shore${off}." [5,1,u]="A ${red}whale${off} spouts in the ${red}deep water${off}. The ${red}water${off} laps at the ${red}shore${off}." [5,1,v]="${red}Apollo${off} lays his head low and thinks of ${red}sleep${off}. The ${red}water${off} laps at the ${red}shore${off}." [5,5,y]="Sleep: Perchance to dream." [5,1,w]="A ${red}dogsbody${off} is lapped by the ${red}water${off}. ${red}Sunlight${off} sparkles on the ${red}deep${off}." [5,1,x]="I prefer ${red}surfaces${off}. ${red}Sunlight${off}. ${red}Water${off}. ${red}Shore${off}. ${red}Shells${off}." [5,1,y]="${red}Memories${off} surface from the ${red}water${off}. ${red}Nothing${off} seems real." [5,5,z]="Memories: Diamonds and rust." [5,2,a]="First train of thought" [5,2,c]="Call me...${red}something${off}. Does the whale know my ${red}name${off}?" [5,2,n]="Something: Not ${red}Ishmael${off}. I'm ${red}sure${off} of that." [5,5,n]="Ishmael: Every man's hand is against him." [5,2,d]="His name is ${red}Moby${off}. I'm ${red}sure${off} of that." [5,5,o]="Moby: A pet name for a strange loop." [5,2,e]="Sure as your ${red}born${off}." [5,2,f]="A sudden emergence of ${red}light${off} into the ${red}safety${off} of ${red}darkness${off}." [5,2,g]="${red}Bright, ${red}blinding${off}." [5,2,i]="Here comes the ${red}sun${off}." [5,2,j]="Let there be ${red}darkness${off}." [5,2,k]="${red}Safety${off}." [5,2,l]="Safety is where ${red}people stay${off} to ${red}die${off}." [5,5,p]="Die: Roll 1D6" [5,2,m]="Lingering on the ${red}seashore${off}." [5,2,o]="${red}Associations${off} flash out from the ${red}sun${off}lit ${red}sea${off}, like lightning from shook foil." [5,2,p]="${red}One${off} thing ${red}connects${off} to ${red}another${off}. A ${red}train${off} of ${red}thought${off}." [5,5,q]="One: I." [5,5,r]="Another: Beloved." [5,2,q]="${red}Nothing${off} comes ${red}together${off} yet. A ${red}trainwreck${off} of ${red}thought${off}." [5,5,s]="Nothing: Nihil. Rien." [5,5,t]="Together: We." [5,2,r]="I rode on a train once, with my ${red}father${off}. He ${red}held${off} my hand the ${red}entire${off} way. The ${red}wheels${off} went clickedy-clack beneath our feet." [5,5,u]="Wheels: Never ending or ${red}beginning${off}, in an ever spinning real." [5,2,s]="It all comes ${red}crashing${off} down." [5,2,t]="Like the ${red}waves${off}." [5,2,u]="${red}Broken${off}." [5,2,v]="I can feel his ${red}warmth lingering${off} like the ${red}shining sun${off}." [5,5,v]="Warmth: Excitation of molecules." [5,2,w]="Back to the ${red}beginning${off}." [5,2,x]="I'd like to ${red}stay${off}." [5,2,y]="Let there be ${red}light${off}." [5,2,z]="We used to go sailing together. ${red}Long ago${off}." [5,5,w]="Long ago: And far, far away." [5,3,a]="${red}Oliver${off} is ${red}here${off}." [5,3,B]="${red}Oliver${off} is here." [5,3,b]="A small goat is singing to the ocean." [5,3,c]="'She sells...by the seashore.'" [5,3,d]="'My sister, my sister. The fires are lit. The pots are ready.'" [5,3,e]="'Water, water everywhere, and not a drop to drink.'" [5,3,f]="'I ran to the sea, it was boiling. I ran to the sea. It was bleeding.'" [5,3,g]="'I will show you fear in a handful of dust.'" [5,3,h]="'Up above the world so high. Like a diamond in the sky.'" [5,3,i]="'Lulay lulay, my little tiny child. Bye bye lulay lulay.'" [5,3,j]="'I remember when I recalled what happiness was.'" [5,3,k]="'Unda fluxit sanguine.'" [5,3,l]="'Little girl blue come blow your horn.'" [5,3,m]="'Take a pocketful of stones.'" [5,3,n]="'Oh beautiful pussy, my love, my love.'" [5,3,o]="'When the bough breaks.'" [5,3,p]="'And it's time, time, time that you love.'" [5,3,q]="Under a ${red}rock${off}: Canis ${red}familiaris${off}, ${red}half-rotten${off}, glassy-eyed." [5,3,r]="The ${red}rock${off} won't hide me. It can't even hide the ${red}half-rotten${off} body of a dog." [5,3,s]="Through a glass, darkly, I can see the ${red}broken thoughts${off} of an old ${red}friend${off}." [5,3,t]="The ${red}fur${off} of the dog is still sleek, but when I ${red}touch${off} it, it comes out." [5,3,u]="The dog's ${red}fur${off} is ${red}warm${off}. It must be the ${red}sun${off}." [5,3,v]="I take a couple strands of dog's fur and stow them in a locket." [5,3,w]="The dog is familiar. I think he used to be mine. He ${red}gazes${off} at me, glassy-eyed." [5,3,x]="The eyes are the ${red}windows${off} of the ${red}soul${off}. The dead dog looks into my ${red}heart${off}. I follow his ${red}gaze${off}." [5,5,x]="Gaze: A look shared between two." [5,3,y]="'I cannot live without my life. I cannot live without my soul.'" [5,3,z]="It will never be yours." [5,4,a]="Shells ${red}litter${off} the shore. I gather them." [5,4,b]="Discarded ${red}packages${off}, ${red}styrofoam${off} shells." [5,4,c]="They open to reveal delicate light-blue ${red}eggshells${off}." [5,4,d]="I crumble the eggshells along the ${red}shore${off}, to frighten off ${red}snails${off}." [5,4,e]="Brown ${red}paper${off} packages. Inside there are bright ${red}chestnuts${off}." [5,4,f]="I can hear them rattling in their ${red}shells${off}." [5,4,g]="A brown-paper bag, full of ${red}peanuts${off}." [5,4,h]="To eat of the peanut of ${red}self-realization${off}, you must use the ${red}nutcracker${off} of ${red}discrimination${off}." [5,5,B]="My name, inscribed on a ${red}white tablet${off}." [5,5,C]="It's running a ${red}C shell${off}." [5,5,J]="C: No, that's not right." [5,4,j]="It's running a ${red}C shell${off}." [5,4,k]="A finely tuned ${red}faculty${off} in a ${red}shell${off} of ${red}intolerance${off}." [5,4,l]="I crack open the ${red}shell${off} of a ${red}crab${off}." [5,4,m]="Faculty of memory: the ${red}shell${off} of my former ${red}self${off}." [5,4,n]="A protective ${red}shell${off} around the ${red}mind${off}." [5,4,o]="${red}Round${off}, like a circle in a ${red}spiral${off}." [5,4,p]="I reach down and pick up a perfect spiral ${yellow}seashell${off}." [5,4,q]="Round, like an ${red}eggshell${off}." [5,4,r]="A creature reknowned for its ${red}intolerance${off}." [5,5,W]="My former self: ACCESS DENIED" [5,5,A]="I stand here on the shore, looking out to sea. The sands of time are falling through my fingers and my thumb. The seashell, like the snowflake, is round and self-referencing. Lifting it to my ear I listen as it sings me a lullaby from a long time ago. Far away, far away. I am bringing my memories closer. I am recollecting." [6,1,a]="${red}Dark${off}." [6,1,z]="${red}Mother${off}. The ${red}ashes${off} are flying in my ${red}face${off}." [6,5,B]="Ashes." [6,5,C]="Ashes." [6,5,z]="Dark: No light. ${black}[FOOTNOTE-1]${off}" [6,1,b]="I am supposed to call her mother, even though she isn't. 'The ${red}ashes${off} are flying in my ${red}face${off}.'" [6,1,c]="The ashes fly into the air as I ${red}sweep${off} them up. 'They're getting in my ${red}nose${off} and ${red}mouth${off}.'" [6,1,d]="A cast iron ${red}broom${off} and ${red}dustpan${off} seem very ${red}heavy${off}. The hearth is piled high with ${red}ashes${off}." [6,1,e]="I lift my ${red}tear${off}-stained face and look up. '${red}Mother${off}, the ${red}ashes${off}.'" [6,5,a]="Tear: Sorrow leaving the body." [6,1,f]="'I can't ${red}breathe${off}, ${red}Mother${off}.'" [6,1,g]="I begin ${red}coughing${off}." [6,1,h]="'Stop complaining. Do your ${red}work${off}.'" [6,1,i]="A sharp ${red}kick${off} rattles my ribs. I get back to ${red}work${off}." [6,1,j]="It seems like the hearth has been left ${red}unswept${off} for years and years." [6,1,k]="The old ${red}woman${off} never cleans anything. She says it has been a long time since she had a little ${red}girl${off}." [6,5,b]="Old woman: Not my ${red}mother${off}. Not my ${red}mother${off}. Not my ${red}mother${off}." [6,1,l]="The broom has an ${red}iron${off} handle, and stiff metal ${red}bristles${off}. It matches the ${red}dustpan${off}." [6,5,c]="Metal bristles: They are very rough, and they can scour off your skin." [6,1,m]="As I empty the dustpan into the ${red}ashcan${off}, I notice a piece of ${red}bone${off}." [6,1,n]="The old ${red}woman${off} brings in an iron and settles it above the hearth. '${red}Work${off},' she pulls my ${red}hair${off}, '${red}Work${off}.'" [6,5,d]="Hair: My long, beautiful, golden hair, that my ${red}grandmother${off} loved." [6,5,e]="Grandmother: Gentle hands. A soft voice. I wish she was here." [6,1,o]="I can see the ${red}bone${off}, sticking out." [6,1,p]="When she is not looking, I pick up the bone and put it in my ${red}pocket${off}." [6,1,q]="I don't know what I'll use the bone for, but I like to have it. I put it in my pocket, with my other ${red}treasures${off}. I ${red}finish${off} sweeping." [6,1,r]="The ${red}hearth${off} is now perfectly in order. Ready to build a ${red}fire${off}." [6,1,R]="It's time to build a ${red}fire${off}." [6,2,a]="I begin to dream of ${red}vengeance${off}. Today, I am ${red}weak${off}. But I am growing up, and she is growing ${red}old${off}." [6,2,b]="One day, ${red}I${off} will be the one who scrubs her ${red}back${off} until it ${red}bleeds${off}." [6,2,c]="No. I shouldn't think like that. It will make me ${red}evil${off}." [6,2,d]="Evil can only enter the ${red}heart${off} that lets it in. I will remain ${red}good${off}." [6,2,e]="I will not become like the old ${red}woman${off}." [6,2,f]="It doesn't hurt that much. I am learning how to be ${red}strong${off}." [6,2,g]="It's stopped now. But it reminds me to get back to ${red}work${off}." [6,2,h]="I will get ${red}stronger${off}. Everyday. ${red}Stronger${off}." [6,2,i]="I become strong like my father${off} was." [6,2,j]="My ${red}heart${off} lies heavy within me. I want to go ${red}home${off}." [6,2,k]="I'm not so little. ${red}Sixteen${off}, if I remember correctly." [6,2,l]="Yes, I'm sure of it. Sixteen, and yet I feel like such a ${red}child${off}. " [6,2,m]="Perhaps, even then, I didn't really remember ${red}everything${off}. " [6,5,f]="Remember: I'm remembering. I'm remembering. But it's so hard. " [6,2,n]="${red}Home${off}. ${red}Father${off}. ${red}Mommy${off}. " [6,2,o]="Home. I don't ${red}remember${off} it, but it was long ago. It glittered like gold and smelled like ${red}oranges${off}. ${red}Mommy${off} and ${red}Father${off} lived there. " [6,5,g]="Oranges: They come from far away, just like me. " #[6,5,h]="Gold: Like my ${red}hair${off}. " [6,2,p]="I used to have a real mommy. I can't ${red}remember${off} a single thing about her. Not even her ${red}face${off}, or her ${red}name${off}. " [6,2,q]="Her face wasn't like mine. I have my ${red}Father${off}'s features. " [6,2,r]="I wonder, did she have my name, ${red}Father${off}'s name? Or something ${red}different${off}? " [6,5,j]="Different: A comforting word. I want to be different. " [6,2,s]="My father's image comes so clearly into my ${red}mind${off}, that for a second I feel like a ${red}pin${off} has just been jabbed into my ${red}heart${off}. I ${red}love${off} you. I ${red}love${off} you. " [6,5,k]="Pin: Like you use to hold a butterfly on a placard. " [6,5,l]="Heart: A place where pain and joy are kept safely locked away. " [6,2,t]="Love is a ${red}luxury${off}, an even greater luxury than ${red}freedom${off}, and much more ${red}dangerous${off}. " [6,5,m]="Dangerous: Like beauty and truth. " [6,5,n]="Luxury: A thing which one cannot afford, but which one savours intensely. " [6,2,u]="Freedom. “Stop dreaming,” she says, “or I'll get the ${red}iron${off}.” " [6,2,v]="I'd better keep my mind on the ${red}work${off}. " [6,3,a]="In my pocket, I have a little piece of bone, a nibble of cheese, and a folded ${red}letter${off}. " [6,3,b]="The cheese is to make me strong, for when I escape. The ${red}letter${off} is for today. " [6,3,c]="I had better keep it safe, and wait until the right ${red}moment${off}. " [6,5,o]="Right moment: When the fire is hot, and the wind is right. " [6,4,a]="I pile up the ${red}logs${off}, lay down some ${red}straw${off}, take the ${red}embers${off} from the ${red}ember${off} jar, and blow${off}. " [6,5,p]="Logs: Burlywood. Hard to start, but they burn well. " [6,5,q]="Straw: Light-goldenrod-yellow stalks discarded by the wheat. It burns easily." [6,5,r]="I don't have tongs. They ${red}burn${off} my fingers, but I don't dare complain. " [6,4,b]="I huff and I puff, and at last it ${red}burns${off}.. " [6,4,c]="A crackling ${red}warmth${off} fills the room. Bright ${yellow}whitesmoke${off} rises into the ${red}chimney${off}. " [6,4,d]="It feels so nice to be warm, that I don't mind the ${red}smoke${off} getting in my ${red}eyes${off}. " [6,5,s]="Eyes: Of china blue." [6,4,e]="The chimney is clogged. I'll probably be forced to clear it soon. The ${red}smoke${off} fills the room. " [6,4,f]="Bright ${yellow}whitesmoke${off} fills the room." [6,5,A]="As the smoke pours over the room, the witch turns away from the fire, her whithered chest heaving and convulsing. Black spotted spittle dribbles over her chin. She turns away, blotting it with a handkercheif, covering her face, stumbling from the room. In that moment, when her back is turned, I shove my hand into my pocket and produce the piece of folded paper that lies there. I throw it into the fire. My heart stops for a second. It isn't catching alight. I hear a panicked fluttering in the chimney, an agonized squawking, and the rustle of singed wings. The smoke begins to clear as the bird's nest clogging the chimney sets aflame, smoulders, and drops down into the fireplace. I look over my shoulder. The witch is waving the handkerchief at the smoke in front of her face. She's coming back. She'll see. I stand up, blocking her view. Mother, I say, I've worked so hard. Perhaps we could take a little break and play?" [7,1,a]="${red}Red${off}. ${red}Yellow${off}. ${red}Blue${off}." [7,1,b]="${red}Roses${off}, ${red}apples${off}, ${red}Moses${off}, ${red}blood${off}. ${red}Yellow${off}. ${red}Blue${off}." [7,5,a]="Roses: They are wooden, carved, on thornless wooden stems." [7,5,b]="Apples: They can be cut in half and put back together. Magnetic." [7,5,c]="Moses: One of his arms is broken off." [7,5,d]="Blood: I cut my finger." [7,1,c]="${red}Red${off}. ${red}Banana${off}, ${red}hat${off}, ${red}goldenrod${off}, ${red}It${off}. ${red}Blue${off}." [7,5,e]="Banana: It's from the same set as the apple." [7,5,f]="Hat: It belongs to a man with a monkey." [7,5,g]="Goldenrod: A wilting bouquet I picked myself." [7,5,h]="It: I don't like it. It watches me." [7,1,d]="${red}Red${off}. ${red}Yellow${off}. ${red}Ball${off}, ${red}airplane${off}, ${red}bulb${off}, ${red}musicbox${off}." [7,5,i]="Ball: Round. Blue." [7,5,j]="Airplane: If I imagined myself small enough, I could fly away." [7,5,k]="Bulb: A blue tulip waiting for the spring." [7,5,l]="Music Box: It plays the LightBlue Danube Waltz." [7,1,z]="Red. Yellow. Blue. ${red}White${off}." [7,1,e]="${red}Chalk${off}. ${red}Paper${off}. ${red}Milk${off}." [7,1,f]="A ${red}circle${off} on the ${red}ground${off}. " [7,1,h]="I'm sitting alone inside of a ${red}chalk circle${off}. The ${red}shelves${off} along the wall are lined with ${red}toys${off}. On a small ${red}table${off} nearby, there is a ${red}paper${off} and a box of ${red}milk${off}." [7,1,i]="This is ground ${red}zero${off}. A chalk circle on ${red}black stone${off}." [7,5,n]="Zero: An egg from which anything could hatch." [7,1,j]="The ground is black, polished slate. ${red}Shelves${off} along the walls are lined with ${red}toys${off}. A ${red}paper${off} and a box of ${red}milk${off} are on the ${red}table${off}." [7,2,z]="I am not allowed to play now." [7,1,k]="The walls are covered in utility shelving on which there are colourful ${red}toys${off}. A small ${red}table${off} nearby holds a ${red}paper${off} and a box of ${red}milk${off}." [7,1,l]="Just outside of the ${red}chalk circle${off}, there is a small folding table with a ${red}paper${off} and a box of ${red}milk${off}. I could probably ${red}reach it${off} if I tried." [7,2,y]="I'm not supposed to touch anything. " [7,2,a]="The ${red}Chicago Tribune${off}" [7,2,b]="The Windy ${red}City${off}" [7,2,c]="Urbs in ${red}Horto${off}" [7,2,d]="${red}City${off} in a ${red}Garden${off}" [7,5,m]="City: A place where people exist together." [7,5,o]="Garden: A place where plants grow together." [7,2,e]="His ${red}power${off} is only in effect while within ${red}Rome${off}." [7,2,f]="The ${red}Eternal City${off}" [7,2,h]="${red}World${off} without ${red}end${off}." [7,2,j]="A personal ${red}apocalypse${off}." [7,2,k]="The ${red}end${off} of the ${red}world${off}." [7,2,g]="The ${red}Kingdom${off}, the power and the ${red}glory${off}." [7,2,l]="The ${red}King${off} rules over the Kingdom like a loving ${red}father${off}." [7,2,p]="His ${red}picture${off} is on the ${red}front${off} page." [7,2,q]="He will come for me." [7,2,m]="${red}Shining${off} like the ${red}sun${off}." [7,2,n]="I close my eyes, bathe in the radiance of the invisible ${red}sunlight${off}." [7,2,o]="The sun has been torn down. Taken out of this ${red}world${off}." [7,1,g]="'Have you seen this ${red}girl${off}?' There is a ${red}picture${off} of her." [7,2,r]="I have ${red}seen${off} the girl on the ${red}milk${off} carton." [7,2,t]="I have not seen the girl on the carton recently." [7,2,s]="I like that girl. She is wearing a ${red}pretty${off} dress." [7,2,u]="Maybe she is going to the ${red}ball${off}." [7,3,a]="I hold the blue ${red}globe${off}." [7,3,h]="The moment ${red}I${off} pick up the globe, ${red}I${off} become a ${red}different person${off}." [7,3,b]="${red}I${off} am no ${red}longer${off} a ${red}child${off}." [7,3,c]="${red}I${off} was never really a ${red}child${off}. Perhaps not ${red}ever${off}." [7,3,d]="${red}I${off} look up. The ${red}woman${off} that ${red}I${off} am forced to call ${red}mother${off} sits there, watching. She is ${red}old${off} and ${red}insignificant${off}." [7,2,x]="She is becoming obsolete." [7,3,n]="A moment ago, ${red}I${off} thought she was a ${red}witch${off}. Isn't that funny?" [7,5,p]="Witch: Like halloween." [7,3,e]="For ${red}ages${off} of ${red}ages${off}." [7,3,g]="${red}World${off} without ${red}end${off}." [7,3,f]="${red}I${off} am mother. ${red}I${off} hold the ${red}world${off} in my ${red}womb${off}." [7,3,i]="${red}Matter. Matrix. Mater.${off}" [7,3,j]="${red}I supercede${off} her." [7,3,k]="Yes ${red}I${off}." [7,3,l]="${red}I${off} can feel the world living, moving, and having its being inside of ${red}me${off}." [7,3,m]="I put down the ${red}globe${off}. I feel startled, alone, but myself again." [7,4,a]="It's folded in half. I can just read part of the ${red}headline${off} from this angle." [7,5,q]="Headline: '${red}WEEPS${off} FOR ${red}MISSING${off}...'" [7,4,b]="He's ${red}weeping${off}. I don't remember him ever looking that way. He used to be ${red}happy${off}." [7,4,c]="'Yes,' I whisper to ${red}his picture${off}, 'I'm missing you too.'" [7,4,d]="I weep too. ${red}Tears${off} are so pretty, falling like snowflakes." [7,4,f]="My tears begin to ${red}dissolve${off} the chalk circle." [7,4,e]="I cry, ${red}remembering${off} what it was like, being happy. Fat, ${red}bright tears${off}." [7,5,r]="Remembering: Bittersweet and ${red}bright${off}." [7,5,s]="Bright: ${red}Shining${off} like the ${red}sun${off}." [7,4,g]="Fade, fast away, dissolve and quite ${red}forget${off}. I stand up. I am wearing a ${red}ballgown${off} the colour of ${yellow}mintcream${off}." [7,5,t]="Forget: I won't. Not forever." [7,5,u]="Ballgown: With puffed sleeves. A gift." [7,2,X]="" [7,5,A]="I finish putting all of my childhood toys into boxes. I won't be needing them anymore. I pick up the gown that lies on the table. It's made of lovely pale green silk, with golden threads that seem to hold the sunlight as I twirl it around in the mirror. I look at myself, recognizing my own beauty for the first time. I am no longer a child. I am a young woman, and it's time to get ready for the ball." [8,1,a]="A full length ${red}mirror${off} looks over a room with warm wooden ${red}floors${off}. A curving, baroque ${red}armoire${off} with a ${red}marble top${off} is home to pots of ${red}unguents${off}, ${red}perfumes${off}, and ${red}cosmetics${off}. In the corner, a plush ${red}velvet settee${off} sits underneath the ${red}window${off}. A small ${red}bird${off} perches atop a ${red}dress-form${off}." [8,5,a]="Mirror: Polished, with a delicate floral frame." [8,5,b]="Floors: Parquet." [8,5,c]="Armoire: It's very old. The wood has a deep, dark-slate-gray patina." [8,5,d]="Marble: Palegoldenrod, shot through with veins of darkgreen." [8,5,e]="Unguents: To beautify the skin." [8,5,f]="Perfumes: Musk impregnated with all the spices of Arabia." [8,5,g]="Cosmetics: Snow white. Rose red." [8,5,h]="Velvet: Rich dark-orange." [8,5,i]="Settee: Louis XV, I think." [8,5,j]="Window: The window looks out over the ${red}courtyard${off}." [8,5,J]="Courtyard: A yard for courting?" [8,5,k]="Bird: A mechanical nightingale." [8,5,l]="Dress-form: But where is the dress?" [8,5,M]="Form: A headless, slender-waisted mannequin." [8,2,a]="This is where I stood, looking out, waiting for the ${red}carriage${off} to pull up the ${red}drive${off}." [8,2,b]="This is where I stood, looking out, waiting for the ${red}carriage${off} to pull up the drive. It's such a long way. Would he really come?" [8,2,c]="This is where I stood, looking out, waiting for the carriage to pull up the ${red}drive${off}. A genuine, Rolls Royce carriage." [8,1,z]="A full length ${red}mirror${off} looks over a room with warm wooden ${red}floors${off}. A curving, baroque ${red}armoire${off} with a ${red}marble${off} top is home to pots of ${red}unguents${off}, ${red}perfumes${off}, and ${red}cosmetics${off}. In the corner, a plush ${red}velvet settee${off} sits by the ${red}casement${off}. A small ${red}bird${off} perches on my shoulder as I lift the ${red}dress${off} from the ${red}form${off}. Ready?" [8,2,d]="I hold the ${red}dress${off} up to my ${red}breast${off} as I cross the room, looking down at the softly glowing ${red}lights${off} illuminating the ${red}driveway${off}." [8,5,n]="Lights: Soft, creamy light. Very art-deco." [8,5,m]=" Breast: Tabernacle of a conflicted heart." [8,2,e]="I hold the ${red}dress${off} up to my ${red}breast${off} as I cross the room, looking down at the softly glowing ${red}lights${off} illuminating the driveway. If he comes at all, this is the way that he'll ${red}come${off}. I lower the ${red}dress${off} a little. ${red}Hoping${off}." [8,5,N]="Hoping: That he won't come at all." [8,2,f]="I hold the ${red}dress${off} up to my ${red}breast${off} as I cross the room, looking down at the softly glowing ${red}lights${off} illuminating the ${red}driveway${off}. If he comes at all, this is the way that he'll come. I lower the dress a little. ${red}Hoping${off}. I don't even know him. Probably it will all come to ${red}nothing${off}." [8,2,g]="I hold the ${red}dress${off} up to my ${red}breast${off} as I cross the room, looking down at the softly glowing ${red}lights${off} illuminating the driveway. If he comes at all, this is the way that he'll come. I lower the ${red}dress${off} a little. ${red}Hoping${off}. I don't even know him. Probably it will all come to nothing. A childish fear. A ${red}bogeyman${off}." [8,2,h]="I hold the ${red}dress${off} up to my ${red}breast${off} as I cross the room, looking down at the softly glowing ${red}lights${off} illuminating the driveway. If he comes at all, this is the way that he'll come. I lower the ${red}dress${off} a little. ${red}Hoping${off}. I don't even know him. Probably it will all come to nothing. A childish fear. A bogeyman. Something best kept hidden in the ${red}closet${off}." [8,5,o]="Closet: The closet is at the end of the hall. I need something from it. I can't think what." [8,2,i]="I had best be getting ${red}ready${off}. I lower the silken ${red}fabric${off} over my shift. It settles like seafoam on my ${red}breast${off}. I study myself in the ${red}mirror${off}. Beautiful." [8,2,j]="The ${red}dress${off} is so delicately delicious against my skin. I imagine an arm ${red}cradling${off} my waist. Shake my head. I must ${red}forget${off} him." [8,2,k]="Yes, that's right. Forget. I'm not a ${red}child anymore. I must put aside childish things. I had better get ${red}ready." [8,5,p]="Child: Innocent. Happy. Beloved." [8,2,l]="I ${red}wonder${off}, does ${red}he${off} still remember? The ${red}night${off} that we ${red}danced${off} amongst the ${red}flowers${off}. I look dismally towards the casement, dreading the arrival of my ${red}Prince${off}." [8,5,s]="Prince: So-called. Foul usurper of hearts." [8,2,m]="He, himself. My most ${red}secret secret${off}." [8,2,n]="'Shhh. Don't tell.' I whisper to the ${red}bird${off}. It was his ${red}gift${off} to me." [8,2,o]="Bestowed on that very ${red}night${off}, amongst the ${red}flowers${off}, as we ${red}danced${off}." [8,2,p]=" Wildflowers, white, nodding, ${red}flash-frozen${off} in a sudden frost. We ${red}danced${off} amongst them until ${red}midnight${off}." [8,5,r]="Flash-frozen: Preserved by death." [8,2,q]="Our feet were so light they barely crushed the ${red}flowers${off}. The ${red}stars${off} twinkled in the ${red}night${off} sky. We whispered of ${red}love${off}." [8,5,q]="Stars: Bespattering the sky with light." [8,5,t]="Love: Will I ever know it again?" [8,2,r]="I pull myself back to the present. It's getting late. I must get ${red}ready${off}." [8,2,s]="It's time to ${red}go${off}. I should leave these ${red}memories${off} behind." [8,2,t]="${red}His${off} memory." [8,3,a]="I quickly finish getting dressed. I pull open the ${red}drawer${off}." [8,3,b]="Inside the drawer, there is a ${red}box${off}." [8,3,c]="I open the box. It contains a delicate ${red}choker${off} of ${yellow}oldlace${off}." [8,4,a]="The ${yellow}oldlace${off} choker used to belong to my ${red}grandmother${off}. I remember it circling her old ${red}neck${off}, with the ${red}silhouette portrait${off} disappearing into the wrinkled folds." [8,5,u]="Grandmother: She's waiting for me." [8,5,y]="Portrait: A miniature of my mother." [8,5,w]="I remember pulling at her neck skin, when I was just little." [8,5,A]="I am dressed, and I am beautiful. My grandmother's choker is around my neck, protecting me. Tonight is the end of my childhood. The end of happiness. The end of love. I pick up the little mechanical bird and look into its jeweled eyes. I want you to fly away, I tell it, I want you to tell him that I will not forget. I will find my way back to my childhood. I will hold him here, in my memories. Tell him, no matter how far time bears me away, I will come back. The little bird cocks its head to one side. I carry it over to the window. As it spreads its metal wings for the first time one of their sharp edges slices across my fingertip. I watch as the bird flies out into the darkness for a long time before turning inside to tend my wound." [9,1,a]="There are no ${red}azaleas${off}, ${red}begonias${off}, ${red}chrysanthamums${off} or ${red}daffodils${off} here. There is no ${red}echinacea${off} or ${red}foxglove${off}. There are no ${red}gazanias${off} and there is no ${red}hibiscus${off} or ${red}inula${off}. There is no sign of ${red}juniper${off}, ${red}knapweed${off}, ${red}lavender${off}, ${red}moonflower${off} or ${red}nightshade${off}. No ${red}Orchidaceae${off}, obviously. ${red}Poppy${off}? No. QueenAnne's ${red}lace${off}? ${red}Rhododendron${off}? ${red}Snapdragon${off}? Again, no. ${red}Tobacco${off} – forget it. Ditto ${red}verbascum${off}, ${red}wormwood${off}, ${red}xylosma${off}, ${red}yarrow${off}. Impossibly, a ${red}single${off} pink zinnia blossoms in the snow and ${red}ice${off}." [9,5,U]="Azaleas: None" [9,5,B]="Begonias: None" [9,5,C]="Chrysanthamums: None" [9,5,D]="Daffodils: None" [9,5,E]="Echinacea: None" [9,5,F]="Foxglove: None" [9,5,G]="Gazanias: None" [9,5,H]="Hibiscus: None" [9,5,I]="Inula: None" [9,5,J]="Juniper: None" [9,5,K]="Knapweed: None" [9,5,L]="Lavender: None" [9,5,M]="Moonflower: None" [9,5,N]="Nightshade: None" [9,5,O]="Orchidaceae: None" [9,5,P]="Poppy: None" [9,5,Q]="QueenAnne's Lace: None" [9,5,R]="Rhododendron: None" [9,5,S]="Snapdragon: None" [9,5,T]="Tobacco: None" [9,5,V]="Verbascum: None" [9,5,W]="Wormwood: None" [9,5,X]="Xylosma: None" [9,5,Y]="Yarrow: None" [9,5,Z]="You: Missing, yes." [9,2,a]="Zinnia elegans, a lone specimen. It might attract ${red}butterflies${off}." [9,2,b]="The last breath of winter." [9,2,c]="They'll come from ${red}Mexico${off} in the ${red}spring${off}." [9,2,e]="Wasn't it spring already?" [9,2,f]="Mexico is to the ${red}South${off}." [9,2,y]="You can't go that way." [9,5,e]="Forest: The pine forest. From before." [9,1,d]="The ${red}snowflake${off} has melted from my hand. The spring ${red}flowers${off} are all gone, and so is the ${red}forest${off}. All is covered in a thick dusting of powdery ${red}white${off}. Impossibly, a single pink ${red}zinnia${off} blossoms in the ${red}snow${off} and ${red}ice${off}." [9,5,j]=" Snowflake: I am pleased that my ${red}memory${off} has not melted with it." [9,5,k]="Memory: The good with the bad." [9,1,z]="Somehow, while I wasn't looking, the ${red}snow${off} spread out across the clearing and now the entire ${red}forest${off} is gone. I'm standing in an icy meadow. There are no azaleas, begonias, chrysanthamums or daffodils here. There is no echinacea or foxglove. There are no gazanias and there is no hibiscus or inula. There is no sign of juniper, knapweed, lavender, moonflower or nightshade. No Orchidaceae, obviously. Poppy? No. Queen Anne's lace? Rhododendron? Snapdragon? Again, no. Tobacco – forget it. Ditto verbascum, wormwood, xylosma, yarrow. Impossibly, a single LightPink ${red}zinnia${off} blossoms in spite of the ${red}snow${off}, heedless of the ${red}ice${off}." [9,1,e]="There are no azaleas, begonias, chrysanthamums or daffodils here. There is no echinacea or foxglove. There are no gazanias and there is no hibiscus or inula. There is no sign of juniper, knapweed, lavender, moonflower or nightshade. No Orchidaceae, obviously. Poppy? No. Queen Anne's lace? Rhododendron? Snapdragon? Again, no. Tobacco – forget it. Ditto verbascum, wormwood, xylosma, yarrow. a single pink ${red}zinnia${off} blossoms in spite of the ${red}snow${off}, heedless of the ${red}ice${off}." [9,1,f]="The stalks of frozen ${red}wildflowers${off} rise in ${red}tufts${off} from beneath the snow. Impossibly, a pink ${red}zinnia${off} still blossoms, unfrozen, in the ${red}snow${off}." [9,2,g]="Pushing aside one of the tufts reveals a pair of ${red}ruby-red${off} dancing ${red}slippers${off}." [9,5,f]="Dark-red: The colour of pomegranate seeds." [9,5,l]="Pomegranate: The fruit of the underworld." [9,2,h]="The slippers are coated in a thin sheen of ${red}ice${off}. It makes them look like ${red}glass${off}." [9,2,i]="I slip my foot inside. The ice cracks, releasing ${red}needles${off} of ${red}painful cold${off}." [9,5,g]="Needles: They terrify me." [9,2,j]="I could ${red}dance forever${off}, even with this pain shooting through my ${red}legs${off}." [9,2,k]="My feet are freezing. I take off the ${red}slippers${off}." [9,2,l]="I ${red}whirl${off} around, my feet slowly thawing out the red ${red}shoes${off}." [9,5,h]="Red Shoes: Ill omened. I know." [9,2,m]="A slippery patch of ${red}ice${off} brings me to my ${red}senses${off}. I ${red}fall${off}." [9,5,i]="Senses: Strangely heightened." [9,2,n]="I fall into the ${red}snow${off}." [9,3,l]="A ${red}hand${off} reaches down and ${red}picks${off} the sole ${red}living${off} flower." [9,5,n]="Living: Organized according to the rule of ${red}beauty${off}." [9,5,o]="Beauty: ${red}Truth${off}." [9,5,p]="Truth: ${red}Beauty${off}." [9,3,m]="A ${red}man${off}'s hand. I hardly dare ${red}look${off} up to the see the ${red}face${off}." [9,2,o]="I dart a look upward. ${red}Masked${off}." [9,2,p]="A plain, ${red}featureless white${off} mask." [9,2,q]="Incapable of ${red}expression${off}." [9,2,r]="A ${red}smile${off}. A ${red}tear${off}." [9,2,s]="I smile ${red}obsequiously${off}." [9,2,t]="I blink back tears. ${red}smile${off}." [9,2,u]="For fear of being ${red}displeasing${off}." [9,2,v]="I am programmed to ${red}please${off}." [9,2,w]="To ${red}beg${off}." [9,2,x]="Not today." [9,3,n]="My ${red}Prince${off} has come." [9,3,o]="The one I was ${red}afraid${off} of." [9,3,p]="I will not ${red}fear${off}. He holds the ${red}plucked${off} blossom." [9,5,q]="Fear: The little death that brings total obliteration." [9,3,q]="In his hand, the ${red}colour${off} drains from the ${red}zinnia${off}. It becomes blank, ${yellow}floralwhite${off}." [9,5,r]="Colour: Pink." # Grandma's Ghost section [9,5,q]="" [9,3,z]="" [9,4,z]="" [9,3,a]="Grandma's ${red}ghost${off} is here." [9,3,d]="'It's too cold for them.'" [9,3,f]="'Oh no. They've hidden their life underground.'" [9,3,h]="'When the soil gets warm again.'" [9,3,j]="'It always gets warm in the spring.'" [9,3,X]="'Wherever do you come up with such ideas?'" [9,3,C]="'Oh sometimes, but time goes rolling on.'" [9,3,E]="'Time must know something, but don't say nothing...'" [9,3,b]="'${red}Yes${off}, pumpkin?'" [9,3,e]="'${red}Yes${off}, sugarpuff?'" [9,3,g]="'${red}Yes${off}, lumpy-lump?'" [9,3,i]="'${red}Yes${off}, my loverly bunch of coconuts?'" [9,3,k]="'${red}Yes${off}, sweetie-pie?'" [9,3,B]="'${red}Yes${off}, my bumpty-boo?'" [9,3,D]="'${red}Yes${off}, my fluffy-mumpkin?'" [9,3,F]="'${red}Yes${off}, my my silly badook?'" [9,3,c]="It is against ${red}God${off}'s ${red}rules${off} to ${red}talk${off} to ${red}dead${off} people." [9,5,a]="God: Maker of Heaven and Earth." [9,5,b]="Rules: The dead letter of the law." [9,5,c]="Dead people: People who have hidden their life underground." [9,4,a]="'Where have all the flowers gone${red}?${off}'" [9,4,b]="'Does that mean they froze to death${red}?${off}'" [9,4,c]="'When will they return${red}?${off}'" [9,4,d]="'What if the soil never got warm again${red}?${off}'" [9,4,e]="'What if time got stuck, and there was no spring${red}?${off}'" [9,4,f]="'Well, ${red}sometimes${off} people get ${red}stuck${off} in the ${red}past${off}.'" [9,4,g]="'Like old man river${red}?${off}'" [9,4,h]="'Is there a way of getting time to speak${red}?${off}'" [9,5,s]="${off10}${red}Grandma${off}..." [9,5,t]="${off10}${red}Grandma${off}..." [9,5,u]="${off10}${red}Grandma${off}..." [9,5,v]="${off10}${red}Grandma${off}..." [9,5,w]="${off10}${red}Grandma${off}..." [9,5,x]="${off10}${red}Grandma${off}..." [9,5,y]="${off10}${red}Grandma${off}..." [9,3,G]="${off10}'${red}Remember${off}.'" [9,4,i]="${off10}${red}Remember${off}" [9,5,z]="Remember..." [9,5,A]="The Prince stands in the snowy meadow, holding the last flower of lost summer. He idly twirls it through his fingers, then plucks a petal. He loves me. The voice is muffled by his plain white mask. He loves me not. Fear, like a hot needle, pricks my heart. He loves me. Another petal falls to the ground. He loves me not. I can feel my blood freezing slowly in my veins. Fear and sorrow sinking their teeth into my gut. He loves me. He reaches down and touches my cheek. His hands are so cold. He loves me not. I try to count the remaining petals, to know the verdict in advance. It's impossible. He loves me. Yes. I tell my heart. He loves me. Impossibly. Certainly. Regardless of what the flowers say." [10,1,a]="${red}Everything${off} is ${red}neatly${off} put ${red}away${off}." [10,1,b]="It is as it ${red}should${off} be." [10,1,c]="${red}Folded${off}, ${red}sorted${off}, ${red}stacked${off}." [10,1,d]="In ${red}half${off}, sometimes ${red}more${off}." [10,1,e]="${red}Everything${off} is sorted into ${red}neat${off} piles." [10,1,f]="${red}One${off} on top of ${red}another${off}." [10,1,g]="${red}Neatly stacked${off}." [10,5,a]="In half: divided into two equal parts." [10,5,b]="One: 1" [10,5,c]="Another: 2" [10,1,z]="${red}Everything${off} is neatly ${red}hidden${off} away." [10,1,t]="${red}It is as it should be${off}." [10,1,u]="${red}Folded${off}, ${red}sorted${off}, ${red}stacked${off}." [10,1,v]="${red}In half${off}, ${red}sometimes more${off}." [10,1,w]="${red}Everything is sorted into ${red}neat piles${off}." [10,1,x]="${red}One${off} on ${red}top${off} of another${off}." [10,1,h]="All of the ${red}shelves${off} are ${red}exactly${off} the same. Except the ${red}uppermost${off} one." [10,1,G]="${red}Closet${off} shelves." [10,1,H]="${red}Everything${off} in the closet is ${red}neatly hidden${off} away." [10,1,i]="${red}Neat${off}. ${red}Sorted${off}. ${red}Stacked${off}. " [10,1,l]="${red}Real neat${off}." [10,1,m]="${red}Everything${off} is ${red}as it should be${off}." [10,1,n]="${red}Neatly hidden${off} away." [10,2,a]="On the top shelf, there are ${red}sheets${off}." [10,2,b]="Sheets. ${red}Cotton${off}, ${red}Flannel${off}, ${red}Polyester${off}." [10,2,c]="White cotten ${red}sheets${off}." [10,2,d]="Warm flannel ${red}sheets${off}." [10,2,e]="I ${red}hate${off} polyester. " [10,2,f]="So does the ${red}witch${off}. That's why they're ${red}never${off} used." [10,2,g]="The old ${red}hag${off}. This is her ${red}closet${off}." [10,2,h]="The ${red}witch${off} is ${red}not looking${off}." [10,2,i]="I dart a glance over my shoulder. Take down the polyester sheets, ${red}open${off} them." [10,2,j]="So no one will ever ${red}see${off}." [10,2,k]="Inside, there are ${red}three${off} sheets." [10,2,l]="Sheets of ${red}paper${off}." [10,3,a]="${red}Red${off}. ${red}Blue${off}. ${red}Viole${off}${black}n${off}${red}t${off}." [10,4,a]="My dearest angel, Press this letter to your breast. Do you feel my heart burning? I must see you again. I know the danger. I will be brief. I love you. A Fool" [10,4,b]="My midnight dancer, I can still smell the blossoms breaking beneath your feet. You said we must never see each other again. I don't believe you. Heaven would not ordain it thus. Foolishly yours" [10,4,c]="My damsel in distress, The sky is sighing heavily. The rains do not fall. All portends danger. It is because we are separated. Remember what I told you before. This is the letter, as I promised. Fool in Waiting" [10,5,x]="I press the paper to my breast. It ${red}burns${off}." [10,5,y]="The ${red}scent${off} of the flowers lingers." [10,5,z]="This sheet is ${red}different${off}. The paper is made of ${yellow}linen${off}." [10,5,f]="Different: Special." [10,5,d]="Burns: My heart is beating hard." [10,5,e]="Scent: Heaven-sent." [10,5,A]="I carefully refold and replace the polyester sheets, hiding the red and blue loveletters inside. The violet one, I fold it very carefully and run it back and forth across my lips, feeling the textured paper. I cross my fingers. Is it really as he promised? A secret charm? He was so full of wild promises that it's difficult to tell. Burn my letter and it will rise like a smoke signal, painting the heavens like the milky way, he said. I will see it even if I am worlds appart, he said. Whenever you're ready to stop being what they expect you to be. Am I ready? My hands are trembling. I hide the letter in my pocket." [11,1,a]="${red}Row on row${off}." [11,1,b]="${red}Still${off} and ${red}quiet${off}." [11,1,c]="This ${red}place${off} is ${red}still quiet${off}." [11,1,d]="${red}Quiet${off} and ${red}still${off}." [11,1,e]="" [11,1,z]="The cemetary is ${red}silent${off}. White ${red}snowflakes${off} skitter across the backs of the ${red}tombstones${off}. An ${red}angel${off} peers out from between ${red}folded wings${off}." [11,1,f]="I walk forward, my ${red}feet${off} whispering across the ${red}frozen grass${off}. The ${red}snowflakes${off} settle. The ${red}angel${off} looks askance as I walk by." [11,1,g]="The ${red}snowflakes${off} settle. The ${red}angel${off} looks askance as I walk by. ${red}Sharp shards${off} of grass, crystalized by the ${red}freezing rain${off} that fell ${red}last night${off}, ${red}shatter${off} beneath my ${red}feet${off} under the shadows of ${red}tombstones${off}." [11,1,h]="The ${red}snowflakes${off} settle amidst the ${red}tombstones${off}. The ${red}angel${off} looks askance as I walk by. ${red}Sharp shards${off} of grass, crystalized by the ${red}freezing rain${off} that fell ${red}last night${off}, ${red}shatter${off} beneath my ${red}feet${off}. A field of broken ${red}glass${off} that must be crossed to get to the ${red}truth${off}." [11,2,a]="I recall the sound of a ${red}window${off} smashing, or was it a ${red}mirror${off}?" [11,2,b]="The ${red}sky${off} did not hold back her ${red}tears${off} after all." [11,2,c]="Tears ought to be ${red}soft and liquid${off}." [11,2,d]="Tears ought to ${red}melt hearts${off} and thaw the ${red}frozen earth${off}." [11,2,e]="Perhaps its better this way. To have a ${red}heart of stone${off}." [11,2,f]="Only I fear it is a heart of ${red}glass${off}." [11,2,g]="${red}Nothing${off} can grow until the ${red}ground thaws${off}." [11,2,h]="The nothing has grown up ${red}dense and thick${off}." [11,2,i]="It ${red}darkens${off} the ${red}sky${off}." [11,2,j]="In the ${red}spring${off}." [11,2,k]="I manage to ${red}catch${off} a couple of the flakes, but they are ${red}broken${off} and ${red}evaporate${off} the ${red}moment${off} they are ${red}seized${off}." [11,2,l]="Snowflakes, like ${red}moments${off}: so hard to ${red}hold${off}." [11,2,m]="I manage to ${red}catch${off} a couple of the flakes, but they are broken like shattered ${red}glass${off}." [11,2,n]="The angel covers her ${red}face${off}. Is it from ${red}shame${off}? From ${red}grief${off}? Or from a ${red}fear${off} of being ${red}recognized${off}?" [11,2,o]="I know that face from ${red}somewhere${off}." [11,2,p]="I have not seen that ${red}face${off} for a long time." [11,2,q]="Rows of stone sentinels silently guard the ${red}names${off} of those who have ${red}passed${off} this way before." [11,2,r]="What is ${red}truth${off}?" [11,2,s]="'What is truth?' Pontius Pilate. 33 AD." [11,3,a]="The names on all of the tombstones have been ${red}effaced${off}." [11,3,b]="Worn away. By ${red}time${off} or ${red}tears${off}." [11,3,c]="Before the ${red}dawn${off}." [11,4,a]="A little ${red}light${off} is beginning to ${red}creep${off} up on the ${red}horizon${off}." [11,4,b]="Dawn is breaking, ${red}cold${off} and ${red}grey${off}." [11,4,c]="${red}Cold grey fingers${off} of ${red}light${off} reach up into the ${red}sky${off}." [11,4,d]="I shiver as I shuffle ${red}forward${off}." [11,4,e]="${red}Cold light${off} bathes the grey landscape. Grey ${red}sky${off}. Grey ${red}tombs${off}. Grey ${red}angel${off}." [11,4,f]="I creep ${red}forward${off}." [11,4,g]="Towards an open ${red}tomb${off}." [11,4,h]="${red}She${off} is ${red}standing${off} here." [11,4,i]="The one I called a ${red}witch${off}." [11,4,j]="${red}Standing${off} here." [11,4,k]="She says, '${red}Climb${off} into the tomb, my dear. I need you to ${red}check${off} and make sure that it's cold.'" [11,4,l]="I should ${red}push${off} her in instead." [11,4,m]="She laughs, rolling round ${red}seashells${off} in her ${red}pocket${off}." [11,4,n]="She reaches in, takes out a ${red}shell${off}. So beautiful. So fragile. She clamps it between her ${red}fingers${off}. I can hear it ${red}cracking${off}." [11,4,o]="'I'm ${red}sorry${off},' I protest. 'I'll do as you say.'" [11,4,p]="She puts the shell away ${red}intact${off}. I climb ${red}inside${off}." [11,4,q]="A ${red}stone${off} is rolled across the door. I am ${red}alone${off}." [11,4,r]="Such large stone. And the angel had her face covered. She won't see to ${red}roll${off} it away." [11,4,s]="I push against the stone. I can't move it ${red}alone${off}." [11,4,t]="I look up. I see a ${yellow}ghostwhite${off} face." [11,5,a]="Window: ${red}Mirror${off} of the world." [11,5,b]="Mirror: ${red}Window${off} of the self." [11,5,c]="Darkens: Prepares for ${red}dawn${off}." [11,5,d]="Spring: Like hope, ${red}eternal${off}." [11,5,t]="Eternal: That is not dead" [11,5,e]="Sky: A star-spangled ${red}womb${off}." [11,5,f]="This way: Through the ${red}valley${off} of the shadow of death." [11,5,g]="Valley of the shadow of death: Psalm 23" [11,5,h]="Feet: Frozen." [11,5,k]="Grief: What is there to grieve?" [11,5,l]="Fear: I am not afraid." [11,5,i]="Recognized: Named." [11,5,j]="Shame: There is nothing to be ashamed of." [11,5,u]="Womb: Throne of hysteria." [11,5,m]="Last night: Yesterday. All my yesterdays." [11,5,n]="Moment: Import." [11,5,q]="Fingers: They never should have been so ${red}cold${off}." [11,5,x]="Seashells: She has my memories." [11,5,r]="Seashells: She has my memories." [11,5,s]="Intact: Lost, but at least not broken." [11,5,A]="Inside the tomb, it is cold and dark. I can't see anything except for a pale face, hovering in the air before me. It is so tenuous, indistinct, at first I don't know who it is. Then it speaks. 'I told you I would come,' he says, 'even if I were worlds away.'" [12,1,a]="" [12,1,b]="w" [12,1,c]="wt" [12,1,d]="wte" [12,1,e]="wteo" [12,1,f]="wteoh" [12,1,g]="wteohl" [12,1,h]="wteohll" [12,1,i]="wteohlll" [12,1,j]="wteohllli" [12,1,k]="wteohllliy" [12,1,z]="${yellow}wteohllliyg${off}") ############################################## # FUNCTION AND ARRAY # # INITIALIZATION IS COMPLETE # # MAIN PROGRAM STARTS HERE # ############################################## # get start time (seconds since Unix epoch) startTime=$SECONDS # start the timer in the background and get its PID startTimer & timerPID=$! # catch CTRL-C trap abortAlice SIGINT # global variable controlling speed of printing # initially set to 30ms for a nice effect # set to zero if you don't want any delay PRINTDELAY=0.025 # get original terminal specs getTerminalInfo # set new font size setFontSize $1 # expand current gnome terminal to full screen wmctrl -r :ACTIVE: -b toggle,fullscreen # seems you need a delay in order to get the # new terminal width set sleep 0.5 # get new terminal width new_columns=$(tput cols) # get new terminal height new_rows=$(tput lines) # set fmt width FMTWIDTH=$new_columns # set the initial colours (black background, green foreground) setColours "#000000" "#00FF00" sleep 0.4 tput cup 0 0 tput clear # set the number of rooms to 12 nodes=12 # Initialize score to 0 score=0 # table holds the 12 rooms with their n,s,e,w links declare -A table # set the table (rooms map) to all zeros initialize # create the table (rooms map) with n,s,e,w links fillup1 #start in a random room from 1 to 12 currentRoom=$(($RANDOM%12 + 1)) previousRoom=$currentRoom #if you want to force the start in a certain room #uncomment the next line with the room you want #currentRoom=3 # introduction to the game prologue #export functions to use inside a separate gnome terminal export -f paplay export -f setUnixColours export -f setUnixColours2 export -f doHelp export -f doAbout export -f doHint export -f doInvent export -f doExits export -f doSmell export -f doListen export -f doTaste export -f doFeel export -f doThatway export -f doTopics export -f doWait export -f doLook export -f saveGame export -f restoreGame export -f doCry export -f doSing export -f doSuperC export -f doXyzzy export -f doCragne export -f doWhoami export -f doPwd export -f doScream export -f doIvory export -f doHoneydew export -f doPapayawhip export -f doGhostWhite export -f doForalWhite export -f doMintCream export -f doSnow export -f doWhiteSmoke export -f doOldLace export -f doLinen export -f doLightYellow export -f doSeashell export -f doWteohllliyg export -f doAntiqueWhite export -f doAliceBlue export -f doBrown export -f doBlueViolet export -f doBurlywood export -f doChartreuse export -f doCornsilk export -f doCrimson export -f doDarkBlue export -f doDarkRed export -f doDimGray export -f doGainsboro export -f doGold export -f doGoldenrod export -f doHotPink export -f doLawnGreen export -f doLightBlue export -f doLightGoldenrodYellow export -f doLightGreen export -f doLightPink export -f doLimeGreen export -f doMediumAquamarine export -f doMediumBlue export -f doMediumSpringGreen export -f doMediumTurquoise export -f doMediumVioletRed export -f doNavajoWhite export -f doOrangeRed export -f doOrchid export -f doPeru export -f doPink export -f doPlum export -f doRosyBrown export -f doSaddleBrown export -f doSandyBrown export -f doSeaGreen export -f doSlateGray export -f doSpringGreen export -f doSteelBlue export -f doWheat export -f doAquamarine export -f doAzure export -f doBeige export -f doBisque export -f doBlanchedAlmond export -f doCadetBlue export -f doChocolate export -f doCoral export -f doCornflowerBlue export -f doCyan export -f doDarkCyan export -f doDarkGoldenrod export -f doDarkGray export -f doDarkGreen export -f doDarkKhaki export -f doDarkMagenta export -f doDarkOliveGreen export -f doDarkOrange export -f doDarkOrchid export -f doDarkSalmon export -f doDarkSeaGreen export -f doDarkSlateBlue export -f doDarkSlateGray export -f doDarkTurquoise export -f doDarkViolet export -f doDeepPink export -f doDeepSkyBlue export -f doDodgerBlue export -f doFirebrick export -f doForestGreen export -f doGreenYellow export -f doIndianRed export -f doIndigo export -f doKhaki export -f doLavender export -f doLavenderBlush export -f doLemonChiffon export -f doLightCoral export -f doLightCyan export -f doLightGray export -f doLightSalmon export -f doLightSeaGreen export -f doLightSkyBlue export -f doLightSlateGray export -f doLightSteelBlue export -f doMagenta export -f doMediumOrchid export -f doMediumPurple export -f doMediumSeaGreen export -f doMediumSlateBlue export -f doMediumVioletRed export -f doMidnightBlue export -f doMistyRose export -f doMoccasin export -f doOliveDrab export -f doOrange export -f doPaleGoldenrod export -f doPaleGreen export -f doPaleTurquoise export -f doPaleVioletRed export -f doPeachPuff export -f doPowderBlue export -f doPurplishBrown export -f doRoyalBlue export -f doSalmon export -f doSienna export -f doSkyBlue export -f doSlateBlue export -f doTan export -f doThistle export -f doTomato export -f doTurquoise export -f doViolent export -f doYellowGreen export -f doRebeccaPurple export -f doFortune export -f doUndo export -f doFootnote1 export -f doPhobia export -f doCredits # export -f doTop export -f doExample # set up an alarm function setAlarm() { while true do alarmTime=$(/dev/null ;; esac sleep 1 done } setAlarm & alarmPID=$! pp1="";pp2="";pp3="";pp4="";pp5="" #initialize verbose display to on verboseDisplay=1 # the initial display of the screen display $currentRoom # loop forever asking the user for a direction or a word and # display the updated screen while true do echo -ne "${green}[alice@blue]${off} " read direction if [[ "$direction" == "" ]]; then rows=$(tput lines) tput cup $((rows-2)) 0 continue fi case $direction in es) endingsequence ;; brief) verboseDisplay=0 ;; verbose) verboseDisplay=1 ;; nowhere|n) previousRoom=$currentRoom; currentRoom=${table[$currentRoom,1]} ;; somewhere|s) previousRoom=$currentRoom; currentRoom=${table[$currentRoom,2]} ;; elsewhere|e) previousRoom=$currentRoom; currentRoom=${table[$currentRoom,3]} ;; wherever|w) previousRoom=$currentRoom; currentRoom=${table[$currentRoom,4]} ;; about) bash -c 'doAbout' ;; hint) bash -c 'doHint' ;; help) bash -c 'doHelp' ;; credits) bash -c 'doCredits' ;; save) saveGame ;; restore) restoreGame ;; restart) restartGame ;; quit) quitGame ;; # exit) quitGame ;; # not a good idea to use exit as # it's a BASH command and may cause problems inventory|i) bash -c 'doInvent' ;; east|west|north|south|northwest|northeast|southwest|southeast|ne|nw|se|sw|up|down) bash -c 'doThatway' ;; exits) bash -c 'doExits' ;; #old wait|z) bash -c 'doWait' ;; wait|z) bash -c 'doPhobia' ;; look|l) bash -c 'doLook' ;; undo) bash -c 'doUndo' ;; smell) bash -c 'doSmell' ;; feel) bash -c 'doFeel' ;; taste) bash -c 'doTaste' ;; listen) bash -c 'doListen' ;; topics) bash -c 'doTopics' ;; weep|cry|wail) bash -c 'doCry' ;; sing|hope|pray) bash -c 'doSing' ;; run) bash -c 'doCragne' ;; xyzzy|XYZZY) bash -c 'doXyzzy' ;; fortune) bash -c 'doFortune' ;; # conflicts, leave out top) bash -c 'doTop' ;; whoami) bash -c 'doWhoami' ;; pwd) bash -c 'doPwd' ;; footnote|Footnote|footnote-1|Footnote-1|FOOTNOTE1|FOOTNOTE|FOOTNOTE-1|footnote1|Footnote1) bash -c 'doFootnote1' ;; scream|panic|despair) bash -c 'doScream' ;; Supercalifragilisticexpialidocious|supercalifragilisticexpialidocious) bash -c 'doSuperC' ;; # example) bash -c 'doExample' ;; # Other common parser commands to consider implementing: again about map jump pray sleep curse undo aliceblue|AliceBlue|Aliceblue|alice-blue|Alice-Blue|f0f8ff|F0F8FF) bash -c 'doAliceBlue' ;; Brown|brown|A52A2A|a52a2a) bash -c 'doBrown' ;; burlywood|Burlywood|BurlyWood|burly-wood|Burly-wood|DEB887|deb887) bash -c 'doBurlywood' ;; cornsilk|corn-silk|Cornsilk|FFF8DC|fff8dc) bash -c 'doCornsilk' ;; darkred|dark-red|Dark-red|8B0000|8b0000) bash -c 'doDarkRed' ;; gold|Gold|FFD700|ffd700) bash -c 'doGold' ;; hotpink|hot-pink|Hotpink|FF69B4|ff69b4) bash -c 'doHotPink' ;; lawngreen|lawn-green|Lawngreen|7CFC00|7cfc00) bash -c 'doLawnGreen' ;; limegreen|lime-green|Limegreen|32CD32|32cd32) bash -c 'doLimeGreen' ;; mediumaquamarine|medium-aquamarine|Mediumaquamarine|66CDAA|66cdaa) bash -c 'doMediumAquamarine' ;; peru|Peru|CD853F|cd853f) bash -c 'doPeru' ;; pink|Pink|FFC0CE|ffc0ce) bash -c 'doPink' ;; rosybrown|rosy-brown|Rosybrown|BC8F8F|bc8f8f) bash -c 'doRosyBrown' ;; saddle-brown|saddlebrown|Saddlebrown|8B4513|8b4513) bash -c 'doSaddleBrown' ;; seagreen|sea-green|Seagreen|2E8B57|2e8b57) bash -c 'doSeaGreen' ;; slategray|slate-gray|Slategray|708090) bash -c 'doSlateGray' ;; darkblue|dark-blue|Darkblue|00008B|00008b) bash -c 'doDarkBlue' ;; goldenrod|Goldenrod|DAA520|daa520) bash -c 'doGoldenrod' ;; orchid|Orchid|orchids|Orchids|DA70D6|da7od6) bash -c 'doOrchid' ;; light-goldenrod-yellow|Light-Goldenrod-Yellow|lightgoldenrodyellow|LightGoldenrodYellow|FAFAD2|fafad2) bash -c 'doLightGoldenrodYellow' ;; gainsboro|Gainsboro|DCDCDC|dcdcdc) bash -c 'doGainsboro' ;; wheat|Wheat|F5DEB3|f5deb3) bash -c 'doWheat' ;; lightblue|Lightblue|LightBlue|light-blue|Light-Blue|blue-danube|Blue-Danube|Danube-Blue|danube-blue|Blue-danube|ADD8E6|add8e6) bash -c 'doLightBlue' ;; blueviolet|Blueviolet|BlueViolet|blue-violet|Blue-Violet|8A2BE2|8a2be2) bash -c 'doBlueViolet' ;; steelblue|Steelblue|SteelBlue|Steel-Blue|4682B4|4682b4) bash -c 'doSteelBlue' ;; mediumspringgreen|Mediumspringgreen|MediumSpringGreen|medium-spring-green|Medium-Spring-Green|00FA9A|00fa9a) bash -c 'doMediumSpringGreen' ;; antiquewhite|Antiquewhite|AntiqueWhite|Antique-White|antique-white|FAEBD7|faebd7) bash -c 'doAntiqueWhite' ;; mediumturquoise|Mediumturquoise|MediumTurquoise|Medium-Turquoise|48D1CC|48d1cc) bash -c 'doMediumTurquoise' ;; chartreuse|Chartreuse|7FFF00|7fff00) bash -c 'doChartreuse' ;; navajowhite|Navajowhite|NavajoWhite|Navajo-White|Navajo-White|FFDEAD|ffdead) bash -c 'doNavajoWhite' ;; lightgreen|Lightgreen|LightGreen|Light-Green|Light-green|90EE90|90ee90) bash -c 'doLightGreen' ;; dimgray|Dimgray|DimGray|Dim-Gray|Dim-gray|696969) bash -c 'doDimGray' ;; MediumBlue|mediumblue|Medium-Blue|Medium-blue|medium-blue|0000CD|0000cd) bash -c 'doMediumBlue' ;; Crimson|crimson|DC143C|dc143c) bash -c 'doCrimson' ;; OrangeRed|Orange-Red|orangered|orange-red|Orange-red|Orangered|FF4500|ff4500) bash -c 'doOrangeRed' ;; LightPink|Light-Pink|lightpink|light-pink|Light-pink|Lightpink|FFB6C1|ffb6c1) bash -c 'doLightPink' ;; Sandybrown|sandybrown|Sandy-Brown|sandy-brown|Sandy-brown|F4A460|f4a460) bash -c 'doSandyBrown' ;; SpringGreen|Springgreen|springgreen|Spring-Green|spring-green|Spring-green|00FF7F|00ff7f) bash -c 'doSpringGreen' ;; Plum|plum|DDA0DD|dda0dd) bash -c 'doPlum' ;; Mediumvioletred|mediumvioletred|MediumVioletRed|medium-violet-red|Medium-violet-red|Medium-Violet-Red|C71585|c71585) bash -c 'doMediumVioletRed' ;; Turquoise|turquoise|40E0D0|40e0d0) bash -c 'doTurquoise' ;; Aquamarine|aquamarine|7FFFD4|7fffd4) bash -c 'doAquamarine' ;; Azure|azure|F0FFFF|f0ffff) bash -c 'doAzure' ;; Beige|beige|5F5FDC|5f5fdc) bash -c 'doBeige' ;; Bisque|bisque|FFE4C4|ffe4c4) bash -c 'doBisque' ;; Chocolate|chocolate|D2691E|d2691e) bash -c 'doChocolate' ;; Coral|coral|FF7F50|ff7f50) bash -c 'doCoral' ;; Cyan|cyan|00FFFF|00ffff) bash -c 'doCyan' ;; Firebrick|firebrick|B22222|b22222) bash -c 'doFirebrick' ;; Indigo|indigo|4B0082|4b0082) bash -c 'doIndigo' ;; Khaki|khaki|F0E68C|f0e68c) bash -c 'doKhaki' ;; Lavender|lavender|E6E6FA|e6e6fa) bash -c 'doLavender' ;; Magenta|magenta|FF00FF|ff00ff) bash -c 'doMagenta' ;; Moccasin|moccasin|FFE4B5|ffe4b5) bash -c 'doMoccasin' ;; Orange|orange|FFA500|ffa500) bash -c 'doOrange' ;; Salmon|salmon|FA8072|fa8072) bash -c 'doSalmon' ;; Sienna|sienna|A0522D|a0522d) bash -c 'doSienna' ;; Tan|tan|D2B28C|d2b28c) bash -c 'doTan' ;; Thistle|thistle|D8BFD8|d8bfd8) bash -c 'doThistle' ;; Tomato|tomato|FF6347|ff6347) bash -c 'doTomato' ;; Violent|violent|EE82EE|ee82ee) bash -c 'doViolent' ;; Blanchedalmond|blanchedalmond|BlanchedAlmond|blanched-almond|Blanched-almond|Blanched-Almond|FFEBCD|ffebcd) bash -c 'doBlanchedAlmond' ;; Cadetblue|cadetblue|CadetBlue|cadet-blue|Cadet-blue|Cadet-Blue|5F9EA0|5f9ea0) bash -c 'doCadetBlue' ;; Cornflowerblue|cornflowerblue|CornflowerBlue|cornflower-blue|Cornflower-blue|Cornflower-Blue|6495ED|6495ed) bash -c 'doCornflowerBlue' ;; Darkcyan|darkcyan|DarkCyan|dark-cyan|Dark-cyan|Dark-Cyan|008B8B|008b8b) bash -c 'doDarkCyan' ;; Forestgreen|forestgreen|ForestGreen|forest-green|Forest-green|Forest-Green|228B22|228b22) bash -c 'doForestGreen' ;; Darkgoldenrod|darkgoldenrod|DarkGoldenrod|dark-goldenrod|Dark-Goldenrod|Dark-goldenrod|B8860B|b8860b) bash -c 'doDarkGoldenrod' ;; Darkgray|darkgray|DarkGray|dark-gray|Dark-Gray|Dark-gray|A9A9A9|a9a9a9) bash -c 'doDarkGray' ;; Darkgreen|darkgreen|DarkGreen|dark-green|Dark-Green|Dark-green|006400) bash -c 'doDarkGreen' ;; Darkkhaki|darkkhaki|DarkKhaki|dark-khaki|Dark-Khaki|Dark-khaki|BDB76B|bdb76b) bash -c 'doDarkKhaki' ;; Darkmagenta|darkmagenta|DarkMagenta|dark-magenta|Dark-Magenta|Dark-magenta|8B008B|8b008b) bash -c 'doDarkMagenta' ;; Darkorange|darkorange|DarkOrange|dark-orange|Dark-Orange|Dark-orange|FF8C00|ff8c00) bash -c 'doDarkOrange' ;; Darkorchid|darkorchid|DarkOrchid|dark-orchid|Dark-Orchid|Dark-orchid|9932CC|9932cc) bash -c 'doDarkOrchid' ;; Darksalmon|darksalmon|DarkSalmon|dark-salmon|Dark-Salmon|Dark-salmon|E9967A|e9967a) bash -c 'doDarkSalmon' ;; Darkviolet|darkviolet|DarkViolet|dark-violet|Dark-Violet|Dark-violet|9400D3|9400d3) bash -c 'doDarkViolet' ;; Deeppink|deeppink|DeepPink|deep-pink|Deep-Pink|Deep-pink|FF1493|ff1493) bash -c 'doDeepPink' ;; Indianred|indianred|IndianRed|indian-red|Indian-Red|Indian-red|CD5C5C|cd5c5c) bash -c 'doIndianRed' ;; Greenyellow|greenyellow|GreenYellow|green-yellow|Green-Yellow|Green-yellow|ADFF2F|adff2f) bash -c 'doGreenYellow' ;; Dodgerblue|dodgerblue|DodgerBlue|dodger-blue|Dodger-Blue|Dodger-blue|1E90FF|1e90ff) bash -c 'doDodgerBlue' ;; Lavenderblush|lavenderblush|LavenderBlush|lavender-blush|Lavender-Blush|Lavender-blush|FFF0F5|fff0f5) bash -c 'doLavenderBlush' ;; Lemonchiffon|LemonChiffon|lemonchiffon|Lemon-chiffon|Lemon-Chiffon|lemon-chiffon|FFFACD|fffacd) bash -c 'doLemonChiffon' ;; Lightcoral|lightcoral|LightCoral|Light-coral|Light-Coral|light-coral|F08080|f08080) bash -c 'doLightCoral' ;; Lightcyan|lightcyan|LightCyan|Light-cyan|Light-Cyan|light-cyan|E0FFFF|e0ffff) bash -c 'doLightCyan' ;; Lightgray|lightgray|LightGray|Light-gray|Light-Gray|light-gray|D3D3D3|d3d3d3) bash -c 'doLightGray' ;; Lightsalmon|lightsalmon|LightSalmon|Light-salmon|Light-Salmon|light-salmon|FFA07A|ffa07a) bash -c 'doLightSalmon' ;; LightSeaGreen|lightseagreen|Lightseagreen|Light-sea-green|Light-Sea-Green|light-sea-green|20B2AA|20b2aa) bash -c 'doLightSeaGreen' ;; LightSkyBlue|lightskyblue|Lightskyblue|Light-sky-blue|Light-Sky-Blue|light-sky-blue|87CEFA|87cefa) bash -c 'doLightSkyBlue' ;; LightSlateGray|lightslategray|Lightslategray|Light-slate-gray|Light-Slate-Gray|light-slate-gray|778899) bash -c 'doLightSlateGray' ;; LightSteelBlue|lightsteelblue|Lightsteelblue|Light-steel-blue|Light-Steel-Blue|light-steel-blue|B0C4DE|b0c4de) bash -c 'doLightSteelBlue' ;; MediumSlateBlue|mediumslateblue|Mediumslateblue|Medium-Slate-Blue|Medium-slate-blue|medium-slate-blue|7B68EE|7b68ee) bash -c 'doMediumSlateBlue' ;; MediumSeaGreen|mediumseagreen|Mediumseagreen|Medium-Sea-Green|Medium-sea-green|medium-sea-green|3CB371|3cb371) bash -c 'doMediumSeaGreen' ;; MediumOrchid|mediumorchid|Mediumorchid|Medium-Orchid|Medium-orchid|medium-orchid|BA55D3|ba55d3) bash -c 'doMediumOrchid' ;; MediumPurple|mediumpurple|Mediumpurple|Medium-Purple|Medium-purple|medium-purple|9370DB|9370db) bash -c 'doMediumPurple' ;; MidnightBlue|midnightblue|Midnightblue|Midnight-Blue|Midnight-blue|midnight-blue|191970) bash -c 'doMidnightBlue' ;; MistyRose|mistyrose|Mistyrose|Misty-Rose|Misty-rose|misty-rose|FFE4E1|ffe4e1) bash -c 'doMistyRose' ;; YellowGreen|yellowgreen|Yellowgreen|Yellow-Green|Yellow-green|yellow-green|9ACD32|9acd32) bash -c 'doYellowGreen' ;; SkyBlue|skyblue|Skyblue|Sky-Blue|Sky-blue|sky-blue|87CEEB|87ceeb) bash -c 'doSkyBlue' ;; SlateBlue|slateblue|Slateblue|Slate-Blue|Slate-blue|slate-blue|6A5ACD|6a5acd) bash -c 'doSlateBlue' ;; SpringGreen|springgreen|Springgreen|Spring-Green|Spring-green|spring-green|00FF7F|00ff7f) bash -c 'doSpringGreen' ;; RoyalBlue|royalblue|Royalblue|Royal-Blue|Royal-blue|royal-blue|4169E1|4169e1) bash -c 'doRoyalBlue' ;; PowderBlue|powderblue|Powderblue|Powder-Blue|Powder-blue|powder-blue|B0E0E6|b0e0e6) bash -c 'doPowderBlue' ;; OliveDrab|olivedrab|Olivedrab|Olive-Drab|Olive-drab|olive-drab|6B8E23|6b8e23) bash -c 'doOliveDrab' ;; PaleGoldenrod|palegoldenrod|Palegoldenrod|Pale-Goldenrod|Pale-goldenrod|pale-goldenrod|EEE8AA|eee8aa) bash -c 'doPaleGoldenrod' ;; PaleGreen|palegreen|Palegreen|Pale-Green|Pale-green|pale-green|98FB98|98fb98) bash -c 'doPaleGreen' ;; PaleTurquoise|paleturquoise|Paleturquoise|Pale-Turquoise|Pale-turquoise|pale-turquoise|AFEEEE|afeeee) bash -c 'doPaleTurquoise' ;; PaleVioletRed|palevioletred|Palevioletred|Pale-Violet-Red|Pale-violet-red|pale-violet-red|DB7093|db7093) bash -c 'doPaleVioletRed' ;; PeachPuff|peachpuff|Peachpuff|Peach-Puff|Peach-puff|peach-puff|FFDAB9|ffdab9) bash -c 'doPeachPuff' ;; DeepSkyBlue|deepskyblue|Deepskyblue|Deep-Sky-Blue|Deep-sky-blue|deep-sky-blue|00BFFF|00bfff) bash -c 'doDeepSkyBlue' ;; DarkOliveGreen|darkolivegreen|Darkolivegreen|Dark-Olive-Green|Dark-olive-green|dark-olive-green|556B2F|556b2f) bash -c 'doDarkOliveGreen' ;; DarkSeaGreen|darkseagreen|Darkseagreen|Dark-Sea-Green|Dark-sea-green|dark-sea-green|8FBC8F|8fbc8f) bash -c 'doDarkSeaGreen' ;; DarkSlateBlue|darkslateblue|Darkslateblue|Dark-Slate-Blue|Dark-slate-blue|dark-slate-blue|483D8B|483d8b) bash -c 'doDarkSlateBlue' ;; DarkSlateGray|darkslategray|Darkslategray|Dark-Slate-Gray|Dark-slate-gray|dark-slate-gray|2F4F4F|2f4f4f) bash -c 'doDarkSlateGray' ;; DarkTurquoise|darkturquoise|Darkturquoise|Dark-Turquoise|Dark-turquoise|dark-turquoise|00CED1|00ced1) bash -c 'doDarkTurquoise' ;; Rebeccapurple|rebeccapurple|RebeccaPurple|Rebecca-purple|Rebecca-Purple|rebecca-purple|663399) bash -c 'doRebeccaPurple' ;; Puce|puce|PurplishBrown|purplishbrown|Purplishbrown|Purplish-Brown|Purplish-brown|purplish-brown) bash -c 'doPurplishBrown' ;; FFFFF0|fffff0) bash -c 'doIvory' ;; F0FFF0|f0fff0) bash -c 'doHoneydew bash' ;; FFEFD5|ffefd5) bash -c 'doPapayawhip' ;; F8F8FF|f8f8ff) bash -c 'doGhostWhite' ;; FFFAF0|fffaf0) bash -c 'doForalWhite' ;; F5FFFA|f5fffa) bash -c 'doMintCream' ;; FFFAFA|fffafa) bash -c 'doSnow' ;; F5F5F5|f5f5f5) bash -c 'doWhiteSmoke' ;; FDF5E6|fdf5e6) bash -c 'doOldLace' ;; FAF0E6|faf0e6) bash -c 'doLinen' ;; FFFFE0|ffffe0) bash -c 'doLightYellow' ;; wteohllliyg) bash -c 'doWteohllliyg' ;; FFF5EE|fff5ee) bash -c 'doSeashell' ;; *) checkword $currentRoom $direction ;; esac if [ $verboseDisplay == 1 ] then display $currentRoom $preciousRoom else displayBrief $currentRoom $previousRoom fi done