welcome, traveller. what's your name?
(input: bind $name)
(button:"=X=")[continue
(click-rerun: "continue")[
(if: $name is not "")[(goto:'about')](else: )[<i>please enter your name</i>]
]]$name! (either: "that's my favorite name!", "that's such a beautiful name!", "what a perfect name!", "i wish that was my name!")
have you been here before?
<span class="link1"><span id="arrow1">▶</span> (link: "i think so, in a dream")[[[`i think so, in a dream (skip instructions)`->level 1]]]</span>
<span class="link2"><span id="arrow2">▶</span> [[no, i'm new here->howtoplay]]</span><center>`* how to play *`</center>
navigate the game by clicking on links (they might be images or they might be text). (click: "text")[
whisperland takes you into a world between worlds: (link-reveal: "a pinterest board. ") [but not just any pinterest board: this one is enchanted ...
each image (or "pin") represents a level of the game.
(link: "ok!")[sometimes the game will lead you away to pinterest. beware: you can get lost here. you can always return to whisperland.games and start over -- <i>but sometimes it's fun to get lost -</i>
<span class="link1"><span id="arrow1">▶</span> [[onwards!->level 1]]</span>]
]
](unless: (passage:)'s tags contains "no-header")[
<span class="restart">restart</span> (click:"restart")[(restart:)]
]<span class="loading">loading . . .</span>
(after: 3s)[(goto: "title screen")]<div class="title">
<h1>whisperland</h1><br>© 2023 heartshaped games
</div>
(after: 4.5s)[(goto: "welcome")]<div class="pincontainer" height="520" width="236">
<iframe src="https://assets.pinterest.com/ext/embed.html?id=129689664262103807" height="520" width="236" frameborder="0" scrolling="no" ></iframe>
<div class="coverpin">
(link-goto: '<img src="transparent-square.png" height="520" width="236">', "top")
</div>
</div>
<div class="level">(link-goto: "level 1:
let's get dressed", "top")</div>(set: $personality to 0)you can't go out dressed like that.
choose a top.
(link-reveal-goto: '<img src="https://www.marykellyreed.com/whisperland/outfits/gnometop.jpg" class="snug">', "bottom")[(set:$personality to it + 2)] (link-reveal-goto: '<img src="https://www.marykellyreed.com/whisperland/outfits/witchtop.jpeg" class="snug">', "bottom")[(set:$personality to it + 1)] (link-reveal-goto: '<img src="https://www.marykellyreed.com/whisperland/outfits/mermaidtop.jpg" class="snug">', "bottom")[(set:$personality to it + 3)] (link-reveal-goto: '<img src="https://www.marykellyreed.com/whisperland/outfits/fairytop.jpeg" class="snug">', "bottom")[(set:$personality to it + 5)]choose a bottom
(link-reveal-goto: '<img src="https://www.marykellyreed.com/whisperland/outfits/gnomeshorts.jpg" class="snug">', "shoes")[(set:$personality to it + 1)] (link-reveal-goto: '<img src="https://www.marykellyreed.com/whisperland/outfits/fairyskirt.jpg" class="snug">', "shoes")[(set:$personality to it + 6)] (link-reveal-goto: '<img src="https://www.marykellyreed.com/whisperland/outfits/witchskirt.jpg" class="snug">', "shoes")[(set:$personality to it + 2)] (link-reveal-goto: '<img src="https://www.marykellyreed.com/whisperland/outfits/mermaidsarong.jpg" class="snug">', "shoes")[(set:$personality to it + 3)]choose shoes
(link-reveal-goto: '<img src="https://www.marykellyreed.com/whisperland/outfits/mermaidshoes.jpg" class="snug">', "results")[(set:$personality to it + 5)] (link-reveal-goto: '<img src="https://www.marykellyreed.com/whisperland/outfits/gnomeshoes.jpg" class="snug">', "results")[(set:$personality to it + 2)] (link-reveal-goto: '<img src="https://www.marykellyreed.com/whisperland/outfits/witchshoes.jpg" class="snug">', "results")[(set:$personality to it + 4)] (link-reveal-goto: '<img src="https://www.marykellyreed.com/whisperland/outfits/fairyshoes.jpg" class="snug">', "results")[(set:$personality to it + 6)](if: $personality is <=6)[(set: $creaturetype to "gnome")you're a woodland gnome](if: $personality is >6 and <9)[(set: $creaturetype to "witch")you're a kitchen witch](if: $personality is >=9 and <14)[(set: $creaturetype to "mermaid")you're a mermaid](if: $personality is >=14)[(set: $creaturetype to "fairy princess")you're a fairy princess] (if: $personality is <8 and is an even)[(set: $habitat to "woods")deep in an ancient wood](if: $personality is <8 and is an odd)[(set: $habitat to "sea")hidden away in a lagoon by the sea](if: $personality is >=8 and is an even)[(set: $habitat to "field")frolicking in a field of queen anne's lace and black-eyed susans](if: $personality is >=8 and <14 and is an odd)[(set: $habitat to "sea")hidden away in a lagoon by the sea](if: $personality is >=14 and is an odd)[(set: $habitat to "realm")shrouded by the mists of the fairy realm] (either:"conducting a dark ritual","dancing to taylor swift","enjoying a truly epic picnic")
<span class="link1"><span id="arrow1">▶</span> [[onwards!->interlude 1]]</span>
<span class="link2"><span id="arrow2">▶</span> (link-rerun: "see the full magical closet `[external link to pinterest]`")[(open-url: "https://www.pinterest.com/marykellyreed/w-h-i-s-p-e-r-l-a-n-d/magical-closet/")]</span>
<span class="link3"><span id="arrow3">▶</span> [[replay level 1->top]]</span>[you're doing great so far, $name!]<body|
[
<span class="link1"><span id="arrow1">▶</span> [[thanks! i love this game->level 2]]</span>
<span class="link2"><span id="arrow2">▶</span> [really? i didn't even know i was a $creaturetype]<creature|</span>
(click: ?creature)[(display:"creature")]
]<options|(append:?body)[](replace:?options)[
[[onwards to level 2->level 2]]
](append:?body)[
really? i didn't even know i was a $creaturetype.]
(replace:?options)[
oh, you're definitely a $creaturetype. i can tell from your outfit.
(click-append: "your outfit.")[ wait, do you want to [[change your outfit->top]]?
or maybe you're actually (link-reveal-goto: "a unicorn", "unicorn")[(set:$creaturetype to "unicorn")]?
if you feel good about being a $creaturetype after all, we can [[continue->level 2]].]
]<div class="pincontainer" height="456" width="236">
<iframe src="https://assets.pinterest.com/ext/embed.html?id=129689664262104323" height="456" width="236" frameborder="0" scrolling="no" ></iframe>
<div class="coverpin">
(link-goto: '<img src="transparent-square.png" height="520" width="236">', "secret door")
</div>
</div>
<div class="level">(link-goto: "level 2:
do you know you're dreaming?", "secret door")</div>(set: $haskey to false)i always dreamed of finding a secret door. (click: "a secret door")[the old stories are full of secret doors - leading to secret lands, leading to secret gardens.
do you remember following secret paths? once upon a time?]
<span class="link1"><span id="arrow1">▶</span> (click: "secret paths")[(if: $habitat is "woods")[[head deeper into the woods in search of a secret path->secret paths]](if: $habitat is "sea")[[i remember!->lagoon]](if: $habitat is "field")[[i remember!->field]](if: $habitat is "realm")[[yes, i followed a secret path to the fairy realm->fairy realm]]]</span>these woods must be a hundred years old. the trunks of the ancient trees are so thick, your arms can only reach halfway around them.
which path would you like to take?
<span class="link1"><span id="arrow1">▶</span> [[follow the dirt path lined with bloodroot blooms, forking to the left->bloodroot path]]</span>
<span class="link2"><span id="arrow2">▶</span> [[follow the purple moss-covered path, forking to the right->moss path]]</span>(link-reveal: "we're surrounded by queen anne's lace and black-eyed susans, in full bloom ...")[
but there are definitely no secret doors as far as the eye can see. (unless there's a door set in the ground?)
do you remember following secret paths? do you remember where to find them?
(click-append: "a door set in the ground?")[(set: $haskey to true) no, there's definitely no door set in the ground. however, you do find a key.]
<span class="link1"><span id="arrow1">▶</span> [[to the woods->secret paths]]</span>
<span class="link2"><span id="arrow2">▶</span> [[to the sea->lagoon]]</span>
]this lagoon is protected from the harsh winds of the sea by natural rock walls. the waves lap gently at the shore.
<span class="link1"><span id="arrow1">▶</span> [[follow path along the shore->sea]]</span>
<span class="link2"><span id="arrow2">▶</span> [[follow path away from the sea->inland]]</span>oh, no. did you eat anything?
<span class="link1"><span id="arrow1">▶</span> [[of course not]]</span>
<span class="link2"><span id="arrow2">▶</span> [[i had a piece of cake...->stuck]]</span>phew. you know if you eat anything in the fairy realm, you'll be stuck there forever.
[[yikes, let's get out of here->field]]<h2>game over</h2>
you're stuck in the fairy realm forever.
<span class="link1"><span id="arrow1">▶</span> (link-rerun: "enjoy the fairy banquet `[external link to pinterest]`")[(open-url: "https://www.pinterest.com/marykellyreed/w-h-i-s-p-e-r-l-a-n-d/the-fairy-banquet/")]</span>
<span class="link2"><span id="arrow2">▶</span> start a new game (click:"start a new game")[(restart:)]</span><div class="pincontainer" height="454" width="236">
<iframe src="https://assets.pinterest.com/ext/embed.html?id=129689664262104811" height="454" width="236" frameborder="0" scrolling="no" ></iframe>
<div class="coverpin">
(link-goto: '<img src="transparent-square.png" height="454" width="236">', "sofa")
</div>
</div>
<div class="level">(link-goto: "level 3:
nice place you got there", "sofa")</div>let's make this the cottage of your dreams!
choose a sofa
(link-reveal-goto: '<img src="https://www.marykellyreed.com/whisperland/cottage/ginghamsofa.jpg" class="snug">', "candle")[(set:$sofa to 1)] (link-reveal-goto: '<img src="https://www.marykellyreed.com/whisperland/cottage/redsofa.jpg" class="snug">', "candle")[(set:$sofa to 2)] (link-reveal-goto: '<img src="https://www.marykellyreed.com/whisperland/cottage/pinksofa.jpg" class="snug">', "candle")[(set:$sofa to 3)] (link-reveal-goto: '<img src="https://www.marykellyreed.com/whisperland/cottage/whitesofa.jpg" class="snug">', "candle")[(set:$sofa to 4)]wow, $name, (either: "your cottage is looking sooo cute!", "i love everything you picked out!", "this cottage is starting to feel so homey!") (if: $candle is 4)[will you buy me that candle for my birthday? ;)]
thanks!!
(click-replace: "thanks!!")[here's a playlist i made for you to listen to while you cook... it's inspired by your cottage decor :)
<ul><li> (if: $sofa is 1)[highway don't care - tim mcgraw, taylor swift, keith urban](if: $sofa is 2)[red (taylor's version) - taylor swift](if: $sofa is 3)[cruel summer - taylor swift](if: $sofa is 4)[video games - lana del rey]</li><li> (if: $candle is 1)[seven - taylor swift](if: $candle is 2)[this is what makes us girls - lana del rey](if: $candle is 3)[all too well (10 minute version) (taylor's version) (from the vault) - taylor swift](if: $candle is 4)[la vie en rose - aoi teshima]</li><li> (if: $plates is 1)[nothing new (feat. phoebe bridgers) (taylor's version) (from the vault) - taylor swift, phoebe bridgers](if: $plates is 2)[young and beautiful - lana del rey](if: $plates is 3)[diet mountain dew - lana del rey](if: $plates is 4)[wish on an eyelash - mallrat]</li><li> (if: $bedding is 1)[the 1 - taylor swift](if: $bedding is 2)[champagne problems - taylor swift](if: $bedding is 3)[say yes to heaven - lana del rey](if: $bedding is 4)[august - the long pond studio sessions - taylor swift]</li></ul>
<span class="link1"><span id="arrow1">▶</span> (link-rerun: "view all cottage decor `[external link to pinterest]`")[(open-url: "https://www.pinterest.com/marykellyreed/w-h-i-s-p-e-r-l-a-n-d/cottage-decor/")]</span>
<span class="link2"><span id="arrow2">▶</span> (link-rerun: "official whisperland playlist `[external link to spotify]`")[(open-url: "https://open.spotify.com/playlist/5GkNCr48yAGGuMWcLHW2r3?si=819c7cea321c4e64")]</span>
ooh, did you notice the door on the ceiling?
(click-append: "the door on the ceiling?")[
that's right - this cottage has an [[attic->level 4]]. let's check it out.]
]<div class="pincontainer" height="396" width="236">
<iframe src="https://assets.pinterest.com/ext/embed.html?id=129689664262105497" height="396" width="236" frameborder="0" scrolling="no" ></iframe>
<div class="coverpin">
(link-goto: '<img src="transparent-square.png" height="396" width="236">', "attic")
</div>
</div>
<div class="level">(link-goto: "level 4:
the attic game", "attic")</div>wow, whoever lived here before left a lot of stuff behind in this attic.
(click: "stuff")[want to poke around?
<span class="link1"><span id="arrow1">▶</span> [[let's look in that old trunk->trunk]]</span>
<span class="link2"><span id="arrow2">▶</span> [[nah, let's just give it all away->interlude 2]]</span>]the trunk is very old. it's made of brown leather that's cracked and crumbling away in places.
there's a keyhole on the front. (click: "keyhole")[(if: $haskey is true)[i wonder if that key you found will work?
(link: "try the key")[(set: $purse to it + 100)the key turns. the trunk groans open!
you find an antique [[doll]] and $100 in pennies.]] (if: $haskey is false)[hmmm, it looks like the trunk is locked. [[too bad.->interlude 2]]]]can i tell you a story?
(click: "story")[when i was in second grade, i dreamed of owning an american girl doll.
(click: "american girl doll")[the catalogs would come to our house, and my sister and i had to wait for each other; we couldn't look at the new pictures without each other. we'd build our dream wish lists by circling the images and putting our initials, M, E, next to doll-sized dresses and doll-sized beds and doll-sized petit fours.
(click: "catalogs")[we had show and tell at school. i didn't have a doll - yet - but i brought one of my precious catalogs.
(click: "show and tell")[i was so excited to show the class this precious object; this sacred space that held my dreams.
(click: "the class")[you have to be careful [[who->boy]] you let into those spaces, though, don't you?]]]]]ready to [[whip something up in the kitchen->level 5]]?surprise! you're a unicorn!
(click: "you're a unicorn")[since you're a unicorn now, maybe you'd like to change your name, too?
[[no thanks, you can keep calling me $name->no thanks]]
[[ooh, ok, i'd love to pick a unicorn name!->new name]]
]sounds good, $name! [[onwards!->level 2]]great. pick your new unicorn name below!
(dropdown: bind $name, "lavender", "rainbow", "sparkle", "penelope", "sunbeam", "jewel", "sheila")
(link: "continue")[your name is now $name. love that for you.
[[thanks!->level 2]]]the path meanders deeper into the forest. the birds call to one another somewhere far above your head. you wonder where this path is leading.
(click: "where this path is leading")[eventually, the woods around you become brighter. there's a clearing up ahead.
(click: "clearing")[in the center of the clearing, there's a ring of spotted toadstools. a group of fairies inside the ring is having an enchanted tea party.
<span class="link1"><span id="arrow1">▶</span> [[join the fairies' tea party->stuck]]</span>
<span class="link2"><span id="arrow2">▶</span> [[continue through the clearing to the path on the other side->path to woodland cottage]]</span>
]
]the temperature drops slightly. a butterfly floats lazily along the breeze.
(click: "floats lazily along the breeze")[(display: "path to woodland cottage")](set: $cottage to "woodland")we continue along the path. it slopes gently downhill.
(click: "downhill")[look! it's your new home!
(click: "new home")[there's a tiny, lovely cottage in the clearing up ahead. it's made of rounded stones and weathered wood, like something out of a fairy tale. and it's [[all yours...->level 3]]
]
]there's a cave in the rock wall ahead.
<span class="link1"><span id="arrow1">▶</span> [[let's check out the cave->cave]]</span>
<span class="link2"><span id="arrow2">▶</span> [[continue down along the shore->path to sea cottage]]</span>we hike up a rocky path, lined with seagrass. seagulls cry overhead.
when we reach the top, an ancient, old-growth forest is visible in the distance.
(link: "continue to the forest")[(display: "secret paths")]the entrance to the cave is narrow, but we squeeze through.
(click: "squeeze")[it's very dark in this cave.
|options>[
<span class="link1"><span id="arrow1">▶</span> [light a match]<match|</span>
<span class="link2"><span id="arrow2">▶</span> (unless: $haskey is true)[[try venturing deeper into the cave by touch]<venture|]</span>
]
(click: ?match)[(replace: ?options)(display:"match")]
(click: ?venture)[(replace: ?options)(display:"venture")]
]
(set: $cottage to "beach")we continue along the edge of the lagoon. there's an opening in the rock wall.
(click: "opening")[beyond the lagoon, a pristine beach stretches off into the distance.
look! it's your new home!
(click: "new home")[there's a tiny cottage up ahead. the walls are made of weathered wood and the roof is covered in tiny pebbles. it's [[all yours...->level 3]]
]
]
you strike a match. the interior of the cave is briefly illuminated - the walls sparkle in the light.
(click: "sparkle")[it's just fool's gold, though.
[[head back to the shore.->path to sea cottage]]]
the cave walls are cool and damp. they become colder as we continue deeper.
(click: "continue deeper")[are you sure you want to keep going? it could be dangerous.
|options2>[
[let's keep going!]<chamber|
[[let's get out of here!->path to sea cottage]]
]
]
(click: ?chamber)[(replace: ?options2)(display:"cave chamber")]ok, we'll go a little deeper.
(click: "a little deeper")[the cave gets colder as we travel further in, and it seems like the walls are getting cozier.
can you see that light ahead, though?
(click: "light")[the narrow cave passageway gets brighter with each step, until it opens up onto a chamber.
(click: "chamber")[there's a key in the center of the chamber.
|options3>[
[take the key]<key|
[leave the key behind]<nokey|
]
]
]
]
(click: ?key)[(set: $haskey to true)(replace: ?options3)(display:"get key")]
(click: ?nokey)[(set: $haskey to false)(replace: ?options3)(display:"no key")]
now you have a key! nice.
[[let's get out of this cave->path to sea cottage]]
[[let's get out of this cave->path to sea cottage]]choose some plates for all those delicious meals you'll be cooking
(link-reveal-goto: '<img src="https://www.marykellyreed.com/whisperland/cottage/blueplates.jpg" class="snug">', "bedding")[(set:$plates to 1)] (link-reveal-goto: '<img src="https://www.marykellyreed.com/whisperland/cottage/glassplates.jpg" class="snug">', "bedding")[(set:$plates to 2)] (link-reveal-goto: '<img src="https://www.marykellyreed.com/whisperland/cottage/lemonplates.jpg" class="snug">', "bedding")[(set:$plates to 3)] (link-reveal-goto: '<img src="https://www.marykellyreed.com/whisperland/cottage/botanicalplates.jpg" class="snug">', "bedding")[(set:$plates to 4)]choose a fancy candle
(link-reveal-goto: '<img src="https://www.marykellyreed.com/whisperland/cottage/byredocandle.jpg" class="snug">', "dishes")[(set:$candle to 1)] (link-reveal-goto: '<img src="https://www.marykellyreed.com/whisperland/cottage/diorcandle.jpg" class="snug">', "dishes")[(set:$candle to 2)] (link-reveal-goto: '<img src="https://www.marykellyreed.com/whisperland/cottage/diptyquecandle.jpeg" class="snug">', "dishes")[(set:$candle to 3)] (link-reveal-goto: '<img src="https://www.marykellyreed.com/whisperland/cottage/ruecandle.jpg" class="snug">', "dishes")[(set:$candle to 4)]choose a place to keep dreaming ...
(link-reveal-goto: '<img src="https://www.marykellyreed.com/whisperland/cottage/greybed.jpg" class="snug">', "playlist")[(set:$bedding to 1)] (link-reveal-goto: '<img src="https://www.marykellyreed.com/whisperland/cottage/royalbed.jpg" class="snug">', "playlist")[(set:$bedding to 2)] (link-reveal-goto: '<img src="https://www.marykellyreed.com/whisperland/cottage/whitebed.jpg" class="snug">', "playlist")[(set:$bedding to 3)] (link-reveal-goto: '<img src="https://www.marykellyreed.com/whisperland/cottage/yellowbed.jpg" class="snug">', "playlist")[(set:$bedding to 4)]<div class="pincontainer" height="401" width="236">
<iframe src="https://assets.pinterest.com/ext/embed.html?id=129689664262108996" height="401" width="236" frameborder="0" scrolling="no" ></iframe>
<div class="coverpin">
(link-goto: '<img src="transparent-square.png" height="401" width="236">', "kitchen")
</div>
</div>
<div class="level">(link-goto: "level 5:
is it chill that you're in my head?", "kitchen")</div>ok, $name, i've got a challenge for you!
(click: "challenge")[today, you're going to try to make a love potion!
(click: "try")[let's see if there's anything in the [[kitchen cupboards]] that might be useful.
]
]
inside the cupboard, you find:
(set: $ingredients to (ds: "cinnamon", "salt", "a bulb of garlic"))cinnamon, salt, a bulb of garlic, (if: $personality is an even)[(set: $ingredients to it + (ds: "lavender", "almond butter", "cloves"))lavender, almond butter, cloves,] (if: $personality is an odd)[(set: $ingredients to it + (ds: "lemon balm", "nutmeg", "honey"))lemon balm, nutmeg, honey,] (if: $cottage is "beach")[(set: $ingredients to it + (ds: "bloodroot blossoms", "basil", "chicken foot"))bloodroot blossoms, basil, and a chicken foot.] (if: $cottage is "woodland")[and (set: $ingredients to it + (ds: "chili pepper"))chili pepper.]
(either: "some of these might be useful!", "that's a well-stocked cupboard!")
we can also go search for other ingredients.
(click-append: "search for other ingredients")[ (if: $cottage is "beach")[outside the cottage](if: $cottage is "woodland")[in the cottage garden](if: (visited: "field") is true)[ or in the fields](if: (visited: "secret paths") is true)[ or in the woods](if: (visited: "lagoon") is true)[ or in the hidden lagoon](if: (visited: "cave") is true)[ or in the cave by the sea]]
(click-goto: "outside the cottage", "beach cottage yard")
(click-goto: "in the cottage garden", "woodland cottage garden")
(click-goto: "in the fields", "search fields")
(click-goto: "in the woods", "search woods")
(click-goto: "in the hidden lagoon", "search lagoon")
(click-goto: "in the cave by the sea", "search cave")(set: $ingredients to it + (ds: "seagrass"))there's some seagrass out here that we can gather.
(click: "gather")[(set: $ingredients to it + (ds: "wishbone"))you also find a wishbone in the sand.
(display: "places to search")
](set: $ingredients to it + (ds: "rose petals"))there are roses growing out here.
(click: "roses")[(set: $ingredients to it + (ds: "basil", "pokeberries"))there's also basil and a wild pokeweed plant.
(display: "places to search")
](set: $ingredients to it + (ds: "black-eyed susans", "queen anne's lace"))the fields are abundant with black-eyed susans and queen anne's lace.
(click: "fields")[(set: $ingredients to it + (ds: "snakeskin"))(set: $purse to it + 5)you also find a bit of snakeskin and a $5 bill.
(display: "places to search")
](set: $ingredients to it + (ds: "purple moss", "dandelions"))the forest floor is lined with purple moss and dandelions.
(click: "forest floor")[(set: $ingredients to it + (ds: "bloodroot blossoms", "willow bark"))there's also a patch of bloodroot over here, and a willow tree with peeling bark.
(display: "places to search")
](set: $ingredients to it + (ds: "red seaweed"))there's some red seaweed washed up along the shore.
(click: "washed up")[(set: $ingredients to it + (ds: "pearl"))you also find a clamshell with a pearl in it.
(display: "places to search")
]the cave entrance is as narrow as ever. (link-reveal: "once inside, you'll need to strike a match to see anything.")[ there's a moonstone in the center of the cave.
(set: $purse to it + 1000)you also find $1000.
(link: "let's get out of here!")
[(display: "places to search")
]
]{
(if: (visited: "cave") is true)[(unless: (visited: "search cave") is true)[<br><span class="link1"><span id="arrow1">▶</span> [[try searching in the cave->search cave]]</span>]]
(if: (visited: "lagoon") is true)[(unless: (visited: "search lagoon") is true)[<br><span class="link2"><span id="arrow2">▶</span> [[try searching in the lagoon->search lagoon]]</span>]]
(if: (visited: "field") is true)[(unless: (visited: "search fields") is true)[<br><span class="link3"><span id="arrow3">▶</span> [[try searching the field->search fields]]</span>]]
(if: (visited: "secret paths") is true)[(unless: (visited: "search woods") is true)[<br><span class="link4"><span id="arrow4">▶</span> [[try searching in the woods->search woods]]</span>]]
(if: $cottage is "beach")[(unless: (visited: "beach cottage yard") is true)[<br><span class="link5"><span id="arrow5">▶</span> [[try searching on the beach outside the cottage->beach cottage yard]]</span>]]
(if: $cottage is "woodland")[(unless: (visited: "woodland cottage garden") is true)[<br><span class="link6"><span id="arrow6">▶</span> [[try searching in the garden behind the cottage->woodland cottage garden]]</span>]]
<br><span class="link7"><span id="arrow7">▶</span> [[head back to the cottage kitchen to make the potion->make potion]]</span>
}(set: $almondbutter to false)(set: $basil to false)(set: $bloodroot to false)(set: $chickenfoot to false)(set: $chilipepper to false)(set: $chocolate to false)(set: $cinnamon to false)(set: $cloves to false)(set: $dandelion to false)(set: $garlic to false)(set: $ginger to false)(set: $honey to false)(set: $lavender to false)(set: $lemonbalm to false)(set: $moonstone to false)(set: $nutmeg to false)(set: $pearl to false)(set: $pokeberries to false)(set: $purplemoss to false)(set: $redseaweed to false)(set: $rosepetals to false)(set: $salt to false)(set: $seagrass to false)(set: $snakeskin to false)(set: $unicorntailhair to false)(set: $willow to false)(set: $wishbone to false)
this is the fun part! choose all the ingredients you'd like to add to the potion. you can use as many as you'd like, but i recommend at least 4.
{
(if: $creaturetype is "unicorn")[(set: $ingredients to it + (ds: "unicorn tail hair"))<br>oh! and since you're a unicorn, you have one extra magical ingredient you can use: your tail hair.]}
<i>remember, you're trying to make a love potion!</i>
{(if:$ingredients contains "almond butter")[(checkbox: bind $almondbutter, "almond butter")]
(if:$ingredients contains "basil")[(checkbox: bind $basil, "basil")]
(if:$ingredients contains "bloodroot blossoms")[(checkbox: bind $bloodroot, "bloodroot blossoms")]
(if:$ingredients contains "chicken foot")[(checkbox: bind $chickenfoot, "chicken foot")]
(if:$ingredients contains "chili pepper")[(checkbox: bind $chilipepper, "chili pepper")]
(if:$ingredients contains "chocolate")[(checkbox: bind $chocolate, "chocolate")]
(if:$ingredients contains "cinnamon")[(checkbox: bind $cinnamon, "cinnamon")]
(if:$ingredients contains "cloves")[(checkbox: bind $cloves, "cloves")]
(if:$ingredients contains "dandelion")[(checkbox: bind $dandelion, "dandelion")]
(if:$ingredients contains "garlic")[(checkbox: bind $garlic, "garlic")]
(if:$ingredients contains "ginger")[(checkbox: bind $ginger, "ginger")]
(if:$ingredients contains "honey")[(checkbox: bind $honey, "honey")]
(if:$ingredients contains "lavender")[(checkbox: bind $lavender, "lavender")]
(if:$ingredients contains "lemon balm")[(checkbox: bind $lemonbalm, "lemon balm")]
(if:$ingredients contains "moonstone")[(checkbox: bind $moonstone, "moonstone")]
(if:$ingredients contains "nutmeg")[(checkbox: bind $nutmeg, "nutmeg")]
(if:$ingredients contains "pearl")[(checkbox: bind $pearl, "pearl")]
(if:$ingredients contains "pokeberries")[(checkbox: bind $pokeberries, "pokeberries")]
(if:$ingredients contains "purple moss")[(checkbox: bind $purplemoss, "purple moss")]
(if:$ingredients contains "red seaweed")[(checkbox: bind $redseaweed, "red seaweed")]
(if:$ingredients contains "rose petals")[(checkbox: bind $rosepetals, "rose petals")]
(if:$ingredients contains "salt")[(checkbox: bind $salt, "salt")]
(if:$ingredients contains "seagrass")[(checkbox: bind $seagrass, "seagrass")]
(if:$ingredients contains "snakeskin")[(checkbox: bind $snakeskin, "snakeskin")]
(if:$ingredients contains "unicorn tail hair")[(checkbox: bind $unicorntailhair, "unicorn tail hair")]
(if:$ingredients contains "willow bark")[(checkbox: bind $willow, "willow bark")]
(if:$ingredients contains "wishbone")[(checkbox: bind $wishbone, "wishbone")]}
(button:"=X=")[[continue->potion mixing]]{(set: $love to 0)(set: $dream to 0)
(if: $basil is true)[(set: $love to it + 2)]
(if: $chilipepper is true)[(set: $love to it + 1)]
(if: $cinnamon is true)[(set: $love to it + 1)]
(if: $honey is true)[(set: $love to it + 2)]
(if: $redseaweed is true)[(set: $love to it + 1)]
(if: $rosepetals is true)[(set: $love to it + 1)]
(if: $unicorntailhair is true)[(set: $love to it + 1)]
(if: $creaturetype is "witch")[(set: $love to it + 1)]
(if: $lavender is true)[(set: $dream to it + 1)]
(if: $moonstone is true)[(set: $dream to it + 1)]
(if: $willow is true)[(set: $dream to it + 1)]}
you might want to try one of these methods - although i'm not sure if any of them will help...
|options>[
<span class="link1"><span id="arrow1">▶</span> [stir three times counter-clockwise]<potion|</span>
<span class="link2"><span id="arrow2">▶</span> [heat to boiling over an open fire]<potion|</span>
<span class="link3"><span id="arrow3">▶</span> [chill for 1-2 hours]<potion|</span>
<span class="link4"><span id="arrow4">▶</span> [none of these]<potion|</span>
]
(click: ?potion)[(replace: ?options)(display:"potion result")]
steam billows out of the cauldron. when it clears, you peer inside cautiously...
(click: "peer inside")[{(if: $pokeberries is true)[(set: $potion to "poison")it's a dark, muddy color.]
(else-if: $love is >= 4)[(set: $potion to "love")it's a pale pink color with a pearl-like sheen.]
(else-if: $dream is >= 2)[(set: $potion to "dream")it's a pale blue color. it seems quite thick.]
(else: )[(set: $potion to "nothing")it's sort of an iridescent light green color.]}
taste the potion to see if it worked?
okay
no thanks
(click: "okay")[(if: $potion is "poison")[(go-to: "poison")]
(if: $potion is "love")[(go-to: "irresistible")]
(if: $potion is "dream")[(go-to: "wake up")]
(if: $potion is "nothing")[(go-to: "nothing")]
]
(click: "no thanks")[(go-to: "level 6")]
]<h2>game over</h2>
that was poison! luckily, there's an antidote, but you're probably going to be in bed for a week... at least you can get caught up on some tv.
<span class="link1"><span id="arrow1">▶</span> start a new game (click:"start a new game")[(restart:)]</span>(set: $lovespell to true)
you immediately feel `* ~ * ~ irresistible * ~ * ~`! the potion worked!
<span class="link1"><span id="arrow1">▶</span> [[continue->level 6]]</span><div class="pincontainer" height="408" width="236">
<iframe src="https://assets.pinterest.com/ext/embed.html?id=129689664262111205" height="408" width="236" frameborder="0" scrolling="no" ></iframe>
<div class="coverpin">
(link-goto: '<img src="transparent-square.png" height="408" width="236">', "shopping rules")
</div>
</div>
<div class="level">(link-goto: "level 6:
beautiful girls love beautiful stuff", "shopping rules")</div><h2>game over</h2>
you open your eyes. it was all a dream...
{(if: (history:)'s last is "outfit")[<span class="link1"><span id="arrow1">▶</span> (link-rerun: "la vie en rose `[external link to pinterest]`")[(open-url: "https://www.pinterest.com/marykellyreed/w-h-i-s-p-e-r-l-a-n-d/la-vie-en-rose/")]</span>]
}
<span class="link2"><span id="arrow2">▶</span> start a new game (click:"start a new game")[(restart:)]</span>nothing happens.
<span class="link1"><span id="arrow1">▶</span> [[continue->level 6]]</span>(set:$purse to it + 0)<span style="float:left">get money.</span><span style="float:right">(click-rerun:"get money.")[(set:$purse to it + 100) [(replace: ?total)[you currently have $(print:$purse).]]][you currently have $(print:$purse).]<total|</span>
<div class="treasure">
(link: '<img src="https://www.marykellyreed.com/whisperland/shopping/1-89.jpg" class="snug">')
[(set:$purse to it - 89)<img src="https://www.marykellyreed.com/whisperland/shopping/1-89.jpg" class="purchased">(replace: ?total)[you currently have $(print:$purse).](replace: ?price1)[purchased]]
<div class="price">[$89]<price1|</div>
</div><div class="treasure">
(link: '<img src="https://www.marykellyreed.com/whisperland/shopping/2-280.jpg" class="snug">')
[(set:$purse to it - 280)<img src="https://www.marykellyreed.com/whisperland/shopping/2-280.jpg" class="purchased">(replace: ?total)[you currently have $(print:$purse).](replace: ?price2)[purchased]]
<div class="price">[$280]<price2|</div>
</div><div class="treasure">
(link: '<img src="https://www.marykellyreed.com/whisperland/shopping/3-28.jpg" class="snug">')
[(set:$purse to it - 28)<img src="https://www.marykellyreed.com/whisperland/shopping/3-28.jpg" class="purchased">(replace: ?total)[you currently have $(print:$purse).](replace: ?price3)[purchased]]
<div class="price">[$28]<price3|</div>
</div><div class="treasure">
(link: '<img src="https://www.marykellyreed.com/whisperland/shopping/4-2450.jpg" class="snug">')
[(set:$purse to it - 2450)<img src="https://www.marykellyreed.com/whisperland/shopping/4-2450.jpg" class="purchased">(replace: ?total)[you currently have $(print:$purse).](replace: ?price4)[purchased]]
<div class="price">[$2450]<price4|</div>
</div><div class="treasure">
(link: '<img src="https://www.marykellyreed.com/whisperland/shopping/5-74.jpg" class="snug">')
[(set:$purse to it - 74)<img src="https://www.marykellyreed.com/whisperland/shopping/5-74.jpg" class="purchased">(replace: ?total)[you currently have $(print:$purse).](replace: ?price5)[purchased]]
<div class="price">[$74]<price5|</div>
</div><div class="treasure">
(link: '<img src="https://www.marykellyreed.com/whisperland/shopping/6-176.jpg" class="snug">')
[(set:$purse to it - 176)<img src="https://www.marykellyreed.com/whisperland/shopping/6-176.jpg" class="purchased">(replace: ?total)[you currently have $(print:$purse).](replace: ?price6)[purchased]]
<div class="price">[$176]<price6|</div>
</div><div class="treasure">
(link: '<img src="https://www.marykellyreed.com/whisperland/shopping/7-1430.jpg" class="snug">')
[(set:$purse to it - 1430)<img src="https://www.marykellyreed.com/whisperland/shopping/7-1430.jpg" class="purchased">(replace: ?total)[you currently have $(print:$purse).](replace: ?price7)[purchased]]
<div class="price">[$1430]<price7|</div>
</div><div class="treasure">
(link: '<img src="https://www.marykellyreed.com/whisperland/shopping/8-155.jpg" class="snug">')
[(set:$purse to it - 155)<img src="https://www.marykellyreed.com/whisperland/shopping/8-155.jpg" class="purchased">(replace: ?total)[you currently have $(print:$purse).](replace: ?price8)[purchased]]
<div class="price">[$155]<price8|</div>
</div><div class="treasure">
(link: '<img src="https://www.marykellyreed.com/whisperland/shopping/9-168.jpg" class="snug">')
[(set:$purse to it - 168)<img src="https://www.marykellyreed.com/whisperland/shopping/9-168.jpg" class="purchased">(replace: ?total)[you currently have $(print:$purse).](replace: ?price9)[purchased]]
<div class="price">[$168]<price9|</div>
</div><div class="treasure">
(link: '<img src="https://www.marykellyreed.com/whisperland/shopping/10-98.jpg" class="snug">')
[(set:$purse to it - 98)<img src="https://www.marykellyreed.com/whisperland/shopping/10-98.jpg" class="purchased">(replace: ?total)[you currently have $(print:$purse).](replace: ?price10)[purchased]]
<div class="price">[$98]<price10|</div>
</div><div class="treasure">
(link: '<img src="https://www.marykellyreed.com/whisperland/shopping/11-160.jpg" class="snug">')
[(set:$purse to it - 160)<img src="https://www.marykellyreed.com/whisperland/shopping/11-160.jpg" class="purchased">(replace: ?total)[you currently have $(print:$purse).](replace: ?price11)[purchased]]
<div class="price">[$160]<price11|</div>
</div><div class="treasure">
(link: '<img src="https://www.marykellyreed.com/whisperland/shopping/12-69.jpg" class="snug">')
[(set:$purse to it - 69)<img src="https://www.marykellyreed.com/whisperland/shopping/12-69.jpg" class="purchased">(replace: ?total)[you currently have $(print:$purse).](replace: ?price12)[purchased]]
<div class="price">[$69]<price12|</div>
</div><div class="treasure">
(link: '<img src="https://www.marykellyreed.com/whisperland/shopping/13-21.jpg" class="snug">')
[(set:$purse to it - 21)<img src="https://www.marykellyreed.com/whisperland/shopping/13-21.jpg" class="purchased">(replace: ?total)[you currently have $(print:$purse).](replace: ?price13)[purchased]]
<div class="price">[$21]<price13|</div>
</div><div class="treasure">
(link: '<img src="https://www.marykellyreed.com/whisperland/shopping/14-1300.jpg" class="snug">')
[(set:$purse to it - 1300)<img src="https://www.marykellyreed.com/whisperland/shopping/14-1300.jpg" class="purchased">(replace: ?total)[you currently have $(print:$purse).](replace: ?price14)[purchased]]
<div class="price">[$1300]<price14|</div>
</div>
<div style="clear: left;">
<br>(button:"=X=")[[continue->level 7]]
<span class="link1"><span id="arrow1">▶</span> (link-rerun: "go shopping irl `[external link to pinterest]`")[(open-url: "https://www.pinterest.com/marykellyreed/w-h-i-s-p-e-r-l-a-n-d/shopping-spree/")]</span>
</div>you deserve a treat after narrowly escaping death-by-unknown-potion!
(link: "...")[he, he. just kidding...
let's go shopping!
(click: "let's go shopping!")[on the next page, you'll be able to get some money! you can buy whatever you want by clicking on the items.
once you're done shopping, click the "continue" button at the bottom of the page.
[[ok!->shopping]]]
]<div class="pincontainer" height="410" width="236">
<iframe src="https://assets.pinterest.com/ext/embed.html?id=129689664262111283" height="410" width="236" frameborder="0" scrolling="no" ></iframe>
<div class="coverpin">
(link-goto: '<img src="transparent-square.png" height="410" width="236">', "surprise!")
</div>
</div>
<div class="level">(link-goto: "level 7:
la vie en rose", "surprise!")</div>i have a surprise for you!! you might have already figured it out, but i'm going to make you guess anyway.
fill in the blanks, and away we go!
(input: bind $vehicle, "=XX=", "type of vehicle")
(input: bind $number, "=XX=", "number")
(input: bind $adjective1, "=XX=", "adjective")
(input: bind $pastry, "=XX=", "type of pastry")
(input: bind $verbing, "=XX=", "verb ending in -ing")
(input: bind $name2, "=XX=", "person's name")
(input: bind $pluralnoun1, "=XX=", "plural noun")
(input: bind $adjective2, "=XX=", "adjective")
(input: bind $pluralnoun2, "=XX=", "plural noun")
(input: bind $exclamation, "=XX=", "exclamation")
(button:"=X=")[[tell me, tell me!->we're going to paris]]you have $(print: $purse).
{
(if: $purse / 4 < 159)[oh, no! you don't have enough for a hotel. i guess we'll have to [[sleep on the floor->my paris story]] of the gare du nord.]
(else-if: $purse is < 203)[you have enough for four nights at this hotel!
[[<br><img src="https://www.marykellyreed.com/whisperland/lavie/hotel-rochechouart-159.jpg" class="hotel">->my paris story]]]
(else-if: $purse / 4 is < 392)[you have enough for four nights at one of these hotels!
[[<br><img src="https://www.marykellyreed.com/whisperland/lavie/hotel-rochechouart-159.jpg" class="hotel"> <img src="https://www.marykellyreed.com/whisperland/lavie/hotel-les-dames-du-pantheon-203.jpg" class="hotel">->my paris story]]]
(else-if: $purse / 4 is < 427)[you have enough for four nights at one of these hotels!
[[<br><img src="https://www.marykellyreed.com/whisperland/lavie/hotel-rochechouart-159.jpg" class="hotel"> <img src="https://www.marykellyreed.com/whisperland/lavie/hotel-les-dames-du-pantheon-203.jpg" class="hotel"> <img src="https://www.marykellyreed.com/whisperland/lavie/hotel-bowmann-392.jpg" class="hotel">->my paris story]]]
(else: )[you have enough for four nights at one of these hotels!
[[<br><img src="https://www.marykellyreed.com/whisperland/lavie/hotel-rochechouart-159.jpg" class="hotel"> <img src="https://www.marykellyreed.com/whisperland/lavie/hotel-les-dames-du-pantheon-203.jpg" class="hotel"> <img src="https://www.marykellyreed.com/whisperland/lavie/hotel-bowmann-392.jpg" class="hotel"> <img src="https://www.marykellyreed.com/whisperland/lavie/lhotel-427.jpeg" class="hotel">->my paris story]]]
}first, we're going to board a (print: $vehicle) and take a (print: $number)-hour journey across the ocean. when we arrive, we must get a (print: $adjective1) (print: $pastry) immediately! then we'll go to the famous (print: $verbing) street, and make sure to take pictures of st. (print: $name2)'s cathedral. you have to buy lots of (print: $pluralnoun1) and (print: $adjective2) (print: $pluralnoun2)!
(print: $exclamation)! we're going to paris, (print: $name)!
(click: "paris")[i'll get the plane tickets, but you'll have to cover the hotel. how much money do you have left?
(click-goto: "money", "hotel")
]i'm so excited for our trip!
the last time i was in paris...
(click: "the last time")[there were five of us. we took a boat ride on the seine and howled at the moon.
(click: "howled at the moon")[afterwards, we took a walk over one of the bridges that crisscross the river...
the bridge was covered with rose petals. the moon was full.
(click: "rose petals")[oh! [[that reminds me!->outfit]]
]
]
]i got you a new outfit for our trip!
{(if: $creaturetype is "witch")[<img src="https://www.marykellyreed.com/whisperland/lavie/witch.jpg" class="snug">]
(if: $creaturetype is "fairy princess")[<img src="https://www.marykellyreed.com/whisperland/lavie/fairy.jpg" class="snug">]
(if: $creaturetype is "unicorn")[<img src="https://www.marykellyreed.com/whisperland/lavie/unicorn.jpg" class="snug">]
(if: $creaturetype is "gnome")[<img src="https://www.marykellyreed.com/whisperland/lavie/gnome.jpg" class="snug">]
(if: $creaturetype is "mermaid")[<img src="https://www.marykellyreed.com/whisperland/lavie/mermaid.jpg" class="snug">]}
(if: $potion is "love")[oh, and you have the love potion! you are absolutely going to meet the $creaturetype of your dreams in paris.]
<span class="link1"><span id="arrow1">▶</span> [[let's go->wake up]]</span>there was a boy in my class who made fun of my catalog. specifically, he laughed at the pages where you could buy dresses to match your doll.
(click: "laughed")[don't ever let anyone tell you clothes aren't important.
<span class="link1"><span id="arrow1">▶</span> [[continue->level 5]]</span>
]{
<!-- Create a variable to track the position within the $typewriterText string -->
(set: $typewriterPos to 1)
<!-- Create a hook to hold the typed text -->
|typewriterOutput>[]
<!-- Set a delay of 30ms seconds per loop -->
(live: 30ms)[
<!-- Add the next character to the hook -->
(append: ?typewriterOutput)[(print: $typewriterText's $typewriterPos)]
<!-- Update the position -->
(set: $typewriterPos to it + 1)
<!-- If it's gone past the end, stop -->
(if: $typewriterPos is $typewriterText's length + 1)[
(stop:)
]
]
}