(display: "var-init")
You look out the window from your desk. It's 4.00pm, and it's dark already! Why did you move to Berlin again? In the summer, it's a lovely whirl of beer gardens and outdoor concerts, but in the winter, it's damp, chilly, and most of all, dark.
At least December isn't so bad, because of the Christmas markets. They're one of your favorite things about winter in Germany. The lights, the Glühwein, and the carols always cheer you up.
It's a Tuesday afternoon in mid-December, your last day of work before winter vacation. You're all packed, but you remembered – just in time! – that (link-reveal: "you still need to find a Christmas present for your mother-in-law.")[
Weihnachtsmärkte to the rescue! You're sure to find something nice for her. And, bonus, you can probably grab a glass or three of Glühwein, and you might run into a few friends.
You pack up your computer, wish your colleagues happy holidays, and head out the door to the train.
A colleague is leaving at the same time. "Hey, let's grab a Feierabendbier for the U-Bahn," he suggests as you pass the beer fridge.
|q>[Do you grab a beer for the train?
[Sure, why not]<beer|
[No, I'll drink enough at the Weihnachtsmarkt]<noBeer|]
(click: ?beer)[(replace: ?q)[(set: $spirit to it + 3)You grab a Beck's and pop off the top with the opener attached to the fridge by a string. Your coworker uses his lighter. "Cheers," you say and clink your beers. $ubahn]]
(click: ?noBeer)[(replace: ?q)[Why drink on the way to drinks? Anyway, the only beer here is Beck's. $ubahn]]
(set: $ubahn to "You walk through the gloomy evening towards the nearest [[U-Bahn]].")]
(live: .5s)[Gift: $gift ⋮ Holiday spirit: (if: $spirit < -1)[dangerously low](else-if: $spirit < 1)[low](else-if: $spirit > 6)[dangerously high](else-if: $spirit > 3)[high](else:)[normal]]As the U-Bahn rumbles through the city, your thoughts turn to your mother-in-law. You want to get her something she'll treasure.
... Jeez. This is embarrassing. You suddenly realize that you don’t remember much about her. Buying a present for her might be a challenge. Hopefully you’ll remember more as you wander through the Weihnachtsmarkt.
The train pulls up to the station. The voices around you grow more enthusiastic, and you start to feel a rush of holiday spirit. Time to head into the [[Weihnachtsmarkt->Market entrance]].
(set: $showFooter to 1)You're at the entrance to the Weihnachtsmarkt.
You’re surrounded by happy people. There are groups of colleagues celebrating the day's end, friends meeting up before a night out, and tourists taking selfies. You can already smell the hot spiced wine.
Everywhere you look, stalls offer up their wares, from carved wood nutcrackers to softly lit paper stars, blown glass ornaments to silver candelabras. Unfortunately, you’ve already given your mother-in-law most of the Weihnachtsmarkt basics. This year you’ll have to find something that's a bit more tailored to her preferences.
You look around. There's a store selling (if: $seenA)[ [[chocolate->Chocolate]] ](else:)[ [[chocolate->Alessandro]] ] to your left, and some (if: $seenJ)[ [[wool->Wool]]](else:)[[[wool->Jürgen and Ulrike]]] goods to your right. When you're done shopping, head for the [exit.]<a|{
(click: ?a)[(set: $showFooter to 0)(goto: "Newark Airport")]
}You try to remember what your mother-in-law is like. {
(if: $MILnonreligious is true)[She's not really religious; best stay away from holiday things that are too Jesus-centered.]
(if: $MILshort is true)[She's pretty short.]
(if: $MILjewelry is true)[She likes jewelry.]
(if: $MILhealthy is true)[She only eats healthy food, even at Christmas.]
(if: $MILgerman is true)[She doesn't know how to read German.]
(else:)[Uhhh... jeez, this is embarrassing. You really can't remember very much about her at all. Buying a present for her might be difficult.]}(set: $showFooter to 2)
(set: $seenA to true)
Hey, it's your friend Alessandro!
He’s a talented programmer, a fabulous DJ, and nice to boot; obviously, his date thinks so too. They’re leaning towards each other, hands clasped around mugs of Glühwein.
You probably shouldn’t interrupt, but you really do want to say hi. “Hey, Alessandro! How was your set last week at Krankenmaul?”
“Oh, hey there!” he says. “It was a good time. We did start a couple of hours late, because the guy before me had to repatch his entire modular rack. Oh, by the way, this is David.” Alessandro’s date is skinny and blonde, with neon orange plastic glasses frames. “He’s a musician, too.”
“What kind of music do you do?” you ask David.
“It’s pretty conceptual,” says David, not really looking at you.
(link-reveal:"There’s an awkward pause. ") [“Uh, so. Do you have any sets coming up?” you ask Alessandro.
“Yeah, I’m spinning at Limettenfabrik the day after tomorrow. I’m going on about 6am.”
“Aw man, I can’t,” you say, secretly relieved. Alessandro doesn’t need to know that your sleep habits are disappointingly normal. “I’m flying out tomorrow morning. I’m going to spend the holidays with my family. Mostly, I’ll be visiting my mother-in-law.”
(if: $pRelig is false)[Alessandro laughs. “Ah, family! The difference is that you don’t have to spend hours and hours in church when you'd rather just be hanging out. You're lucky your mother-in-law isn't as religious as mine."]
(if: $pRelig is true)[Alessandro laughs. “Ah, family! So that means for both of us lots of sitting in the church.”
“You know, I like going to church,” you say. “It reminds me of my childhood. The music is nice. And they serve Christmas cookies afterwards.”
“Oh, it’s not the church that bothers me, it’s the constant questions about when I’m going to settle down with a nice girl. You’d think my mother would eventually stop asking.” He sighs.]
At this point, David interrupts. “You must be in a hurry. Have a nice trip,” he says pointedly.
You take the hint. “You too, and happy holidays!” It's time to [[keep shopping.->Chocolate]]](set: $showFooter to 2)
You decide to visit one of the many Glühwein vendors.
|q>[The menu:
[Glühwein]<a|
A spiced, fruity red wine, kind of like hot sangria. The classic winter drink.
[Weißer Glühwein]<b|
Did you know you can make Glühwein with white wine, too? It's equally delicious.
[Feuerzangenbowle]<c|
Spiced dry red wine, sweetened by a flaming, rum-soaked sugar loaf. Boom!
[Kinderpunsch]<d|
Hot, spiced juice. No alcohol, but still provides holiday spirit.]
(click: ?a)[(replace: ?q)[(set: $wallet to it - 3)(set: $spirit to it + 4)You get a hot glass mug of Glühwein. You are feeling the holiday spirit.]]
(click: ?b)[(replace: ?q)[(set: $wallet to it - 3)(set: $spirit to it + 4)You get a hot glass mug of white Glühwein. You are feeling the holiday spirit.]]
(click: ?c)[(replace: ?q)[(set: $wallet to it - 5)(set: $spirit to it + 6)You get a hot glass mug of sweet rum-soaked wine. You are really feeling the holiday spirit.]]
(click: ?d)[(replace: ?q)[(set: $wallet to it - 2)(set: $spirit to it + 2)You get a hot glass of Kinderpunsch. You feel a small amount of holiday spirit.]]
Go (link: "back to the market.")[(goto: (history: )'s last)](set: $showFooter to 2)
(set: $seenF to true)
On the way, you see your friend Freddy leaning against a wall, hands in the pockets of her black duffle coat. Her enormous dog, Vanzetti, lies on her feet. He seems to be sleeping despite the commotion.
Frankly, you're surprised to see Freddy at the Weihnachtsmarkt. Usually you run into her at demonstrations and soli-parties. She’s not drinking anything. She’s not buying anything. Is she waiting for someone? Is a protest about to happen? You’re not going to ask. If she feels like telling you what she’s doing here, she will.
“Hey,” you say.
“Hey,” she replies. You can never tell if she’s glad to see you or not.
“Did you make it to Acki 22 last weekend?” you ask.
“Nah. I couldn’t hitch back from Sofia in time. Bulgarian cops are nasty.”
Vanzetti sighs deeply and rearranges himself on Freddy’s boots. Freddy pulls a plastic bag of tobacco from her jacket pocket and starts to roll a cigarette without even looking at her hands.
"What are you doing for the holidays?" you ask, and immediately regret the question.
"Nothing, why?" she says with a blank look. "Might crash with some folks in Leipzig.”
Vanzetti lifts his head, then puts it back down with a groan.
"I'm looking for something for my mother-in-law," you say. “I have no idea what to get her.”
“Oh, right, you’re married,” says Freddy expressionlessly.
And then, after a brief pause, “Remember that time that Aphid stayed up for 4 days and painted the whole basement $pColor? You said your mother-in-law would love it.” She lights her cigarette, fishes an old flip-phone out of one of her pockets, and starts furiously typing.
“Well. See you around," you say.
You reach down and scratch Vanzetti between the ears – you can’t resist. He thumps his tail feebly, and you [[make your way back into the bustle of the market.->Ali Express]]
(set: $showFooter to 2)
(set: $seenJ to true)
Just in front of the store, you spot Jürgen and Ulrike: a huge man with tiny glasses and a tiny woman with huge glasses. They are well-prepared for the cold, wearing hiking boots, wool socks pulled up over their jeans, and matching red Jack Wolfskin jackets.
Jürgen got to know your dad back in high school: Jürgen did an exchange year in the USA, and he and your dad became friends while working on the student newspaper. They kept in touch over the years, and when you moved to Berlin, Jürgen and his wife Ulrike welcomed you warmly. They've had you over for dinner several times in their lovely house near the Grunewald. Jürgen keeps saying he'd be happy to help you find a job at the family business, a mid-sized company that manufactures heat-proof glass, resistors, and herbal schnapps. "Your German would get better very fast!" he always jokes.
"Are you enjoying the Christmas market?" asks Ulrike.
"It's so lovely," you say. "The lights, the smells, the Glühwein..."
"This Christmas market is fine," says Jürgen. "But actually I like the Christmas market in Babelsberg better. It's less commercial."
"And Berlin does not even have very good Christmas markets," says Ulrike. "You really must travel to Nürnberg, or even to Vienna."
"I wish I could, but I don't have time," you say. "I'm actually leaving tomorrow to go visit my family."
(if: $pTemp is "cold")["Too bad your family lives in such a cold place," says Jürgen. "We're going to Mallorca for New Years. One of these years, you should join us! Anyway, do give our best wishes to your father, when you see him."]
(else-if: $pTemp is "warm")["At least your family lives somewhere nice and warm," says Ulrike. "We can't wait to get away from this cold weather! That's why we're going to Mallorca over New Years. Anyway, do give our best wishes to your father, when you see him."]
"Of course I'll say hi to him for you, and you two have a lovely trip," you say. The three of you exchange another hug and [[part ways->Wool]].
(set: $showFooter to 0)(set: $spirit to 2)
Next day. You successfully got on a plane at Tegel, America-bound. You landed, seven hours later, at Newark Airport, where you only have a 45-minute layover. You knew this was kind of stupid, but it was the cheapest flight.
(if: $gift is "none")[As soon as you walk off the jetway, you break into a jog. You really do have to get something for your mother-in-law, even if it's not perfect. As you're running through the terminal, you decide to duck into a newsstand to grab something, anything.
|q>[[T-shirt that says "Up Yours, I'm from Newark"]<a|
They only have XXL shirts left. Oh well, she can wear it as a nightshirt. That's cool, right?
[Mets bobblehead ]<b|
Your mother-in-law likes sports. Actually no, she hates sports. Agh, whatever. This is a collectors' item, right?
[[Slice of pizza]<c|
Overpriced pizza from Famous Famiglia's. Pepperoni.]<d|]
(click: ?a)[(replace: ?q)[(if: $gift is not "Newark t-shirt")[(set: $gift to "Newark t-shirt")(set: $wallet to it - 20)You fling a 20 € bill at the cashier. "This is European money," he says, blinking at it. "I can give you an exchange rate of –" You cut him off by grabbing the bill out of his hands and extending a US credit card. He blinks again, runs the card, and – thank god – it works. You seize the shirt, stuff it into your bag, and keep running toward customs.
You stand anxiously in line at customs, shifting your weight, nervously fingering your purchase. Everyone else from your flight got here ahead of you, but there's nothing you can do now. Hopefully, your procrastination isn't too obvious. You can make up a story about how the Berlin Christmas markets are suddenly selling New Jersey swag, right? Your mother-in-law won't know the difference, right? Anyway, [[your travels are almost over->end]].]]]
(click: ?b)[(replace: ?q)[(if: $gift is not "Mets bobblehead")[(set: $gift to "Mets bobblehead")(set: $wallet to it - 15)"Good choice," says the cashier. "Though last season was a rough one, eh? Wonder if they'll re-sign – "
He stops as you thrust your US credit card wordlessly into his face. He blinks, runs the card, and - thank god - it seems to work. "Want me to wrap that up for you?" asks the cashier. But you've already grabbed the bobblehead and sprinted out of the store.
You stand anxiously in line at customs, shifting your weight, nervously fingering your purchase. Everyone else from your flight got here ahead of you, but there's nothing you can do but wait. Your family gift exchange is tonight. Hopefully, your procrastination isn't too obvious. You can make up a story about how the Berlin Christmas markets are suddenly selling New Jersey swag, right? Your mother-in-law won't know the difference, right? Anyway, [[your travels are almost over->end]].]]]
(click: ?c)[(replace: ?d)[What are you thinking?! No, you cannot give your mother-in-law a slice of pizza. Be cool, you got this. There's gotta be something here you can buy her.]]
]
(else:) [As soon as you walk off the jetway, you sprint towards customs. As you wait in line at customs, you touch the gift in your carry-on. Thank goodness you found a suitable gift at the Christmas market and don't have to buy your mother-in-law something last-minute at the Newark airport!
Once you clear customs, you jog to your gate. Sweet, you still have five minutes to spare! You refill your water bottle in the bathroom, board the plane, buckle your seatbelt, and settle in for the [[last leg of your flight->end]].](set: $showFooter to 2)(set: $seenG to true)“Hiiiiiiiiiiiiiiiiiiiii!” You’ve walked straight into an ambush. Line, Lena, Anna, and Laura, four colleagues from your office, enfold you in a group hug, all fuzzy scarves and braids. Their cheeks are already extremely rosy.
“I bought an extra by mistake! Here, take it!” Line presses a mug of Glühwein into your hands. You gratefully accept it and reach for your wallet. “No no, I’m inviting you. You pay for the next round,” says Line.
The five of you clink mugs, carefully meeting each other’s eyes as the mugs touch, and you take a careful sip. Hoo boy, it seems Line ordered her Glühwein “mit Schuss,” or with an extra shot.
(link: "Bottoms up!") [(set: $spirit to it + 4)
As you drink your hopped-up Glühwein, you explain your situation to the girls. “I have to somehow find a present for my mother-in-law. I really want to buy her something that doesn’t suck.”
“Tja,” says Laura. “Last year, I bought my mother-in-law a yoga mat, but it turned out she was allergic to the chemicals in it.”
“Oje,” says Anna. “One time, I bought my mother-in-law a bathrobe, but then I learned that she likes to walk around the house naked.”
“Yeah, see,” you say, “I really don’t want to make that kind of mistake.”
{(if: $pFood is "sweet")[Lena thinks a moment. “You said that delicious chocolate fudge you brought to work was from your mother-in-law’s recipe. So she must have a sweet tooth. You'll find plenty of sweet things here.”](else:)[Lena thinks a moment. “Well, she’s vegan, right? You said that quinoa, tofu, and avocado salad you brought to our potluck was from your mother-in-law’s recipe, and that she was really good at healthy cooking. Just avoid all the candy and chocolate, and you’ll be fine.”]}
“My Glühwein is empty. Let’s have another round!” says Line, or maybe Anna?
|q>[
[Keep it coming!]<yes|
[Not for me]<no|]
(click: ?yes)[(replace: ?q)[(set: $spirit to it + 4)“Heck yeah,” you say, “and this time, Line, I’m buying yours.” As you clink glasses, exchange glances, and take your first sip, you realize that you forget to tell her that you actually wanted your Glühwein without an extra shot. Tomorrow is going to be interesting.
The conversation turns to work, or rather, to the other people in the office. Line thinks she's underpaid. Laura hates her boss and wants a transfer. Anna is trying to figure out whether or not the new accountant is single. You decide to leave before you learn any gossip you’re going to regret knowing.
(link: "Go back to the market")[(goto: (history: )'s last)].]]
(click: ?no)[(replace: ?q)[“I really can’t,” you say. “Battling a Kater on a 7-hour flight is not my idea of a good way to start the holidays.” You hug everyone goodbye, wish them a “Guten Rutsch” into the new year, and (link: "go back to the market")[(goto: (history: )'s last)].]]]Mmmm. Chocolate.
Not content at merely dominating the export market with quality industrial products, it seems that the Germans also excel at making chocolate versions of the things they already make. (Maybe they repurpose the injection molds?) Chocolate immersion blenders, chocolate wrenches and cordless drills, chocolate disk brake calipers, and chocolate insurance contracts lay before you, just to name a few things.
Nestled in the richly decorated tent, the proprietor is sipping her own glass of Glühwein and rummaging through the hundreds of differently-shaped treats. The customers ahead of you seem to be asking for a very specific item. She ducks around the back and returns triumphantly with a chocolate hex nut. Meanwhile, your gaze falls upon a few of the less industrial items:
[Drinking chocolate mix]<a|
Move over, Swiss Miss. This drinking chocolate looks delicious. Drop a shot of Kahlua in, and you’ve got yourself some après-ski bliss.
(click: ?a)[(if: $gift is not "none")[(set: $gift to "drinking chocolate mix")(display:"Replacement Confirmation")](if: $gift is not "drinking chocolate mix")[(set: $gift to "drinking chocolate mix")(set: $wallet to it - 10)(display: "Bought Confirmation")]]
[Chocolate nativity scene]<b|
This very thorough nativity scene includes Mary, Joseph, Jesus, magi, shepherds, angels, and assorted barnyard animals, made of milk, dark, and white chocolate.
(click: ?b)[(if: $gift is not "none")[(set: $gift to "chocolate nativity scene")(display:"Replacement Confirmation")](if: $gift is not "chocolate nativity scene")[(set: $gift to "chocolate nativity scene")(set: $wallet to it - 15)(display: "Bought Confirmation")]]
To the left you see some kind of [[roasted nuts->Chestnuts]], and to the right there's the [[entrance->Market entrance]].A warm, yeasty smell wafts out of a wood-fired oven as an apron-clad baker sets down a tray of Rahmbrot.
This flat bread topped with cream, ham, and green onions is supposedly a medieval peasant's snack. The pants of these medieval peasants must have been roomy.
[|q>[Rahmbrot]
One slice of creamy, hamtastic flatbread.]<b|
(click: ?q)[(replace: ?b)[(set: $wallet to $it - 3)(set: $hunger to 0)
The baker starts to cut off a piece on the end. You politely ask for a middle piece. The baker sighs and slides a middle piece onto a square of white cardboard.
You tuck in, already wishing you’d worn roomier pants. This Rahmbrot will keep your holiday spirit from sinking too quickly as you walk around the market.]]
To your left is an oddly (if: $seenF)[[[empty tent->Ali Express]] ](else:)[[[empty tent->Freddy]]], and to your right is the [[faint scent of patchouli->Hippie Stuff]].This stall, which boasts all manner of alpaca-related goods, is nothing if not cozy. The counter is piled with hats and mittens, while scarves and blankets cascade from the ceiling. The proprietor, ironically, seems to be immune to the cold, and is counting money in a t-shirt and jeans.
[Blue alpaca-wool hat]<a|
This fluffy hat with earflaps and a jaunty pompom will keep your ears toasty. It’s a flattering shade of royal blue.
(click: ?a)[(if: $gift is not "none")[(set: $gift to "blue alpaca hat")(display:"Replacement Confirmation")](if: $gift is not "blue alpaca hat")[(set: $gift to "blue alpaca hat")(set: $wallet to it - 25)(display: "Bought Confirmation")]]
[Green alpaca-wool house shoes]<b|
Rule number one of German homes: always swap your street shoes at the door for a pair of fuzzy slippers, or Hausschuhe. These green felted slippers look both cheerful and comfortable.
(click: ?b)[(if: $gift is not "none")[(set: $gift to "green alpaca house shoes")(display:"Replacement Confirmation")](if: $gift is not "green alpaca house shoes")[(set: $gift to "green alpaca house shoes")(set: $wallet to it - 20)(display: "Bought Confirmation")]]
[Purple alpaca-wool kidney warmer]<c|
This knitted tube is the opposite of a crop top: it covers you from mid-back to mid-butt in order to keep your kidneys from getting chilly. Your German friends tell you that cold kidneys are very bad for you. As a gift, this will take some explanation, but maybe your mother-in-law would appreciate your concern for her kidneys.
(click: ?c)[(if: $gift is not "none")[(set: $gift to "purple alpaca kidney warmer")(display:"Replacement Confirmation")](if: $gift is not "purple alpaca kidney warmer")[(set: $gift to "purple alpaca kidney warmer")(set: $wallet to it - 30)(display: "Bought Confirmation") ]]
To your left is [[the entrance->Market entrance]], and to your right are some [[fried potatoes->Pommes]].The Weihnachtsmarkt mostly smells of cinnamon and warm wine. But as you approach this stall, you get a massive whiff of patchouli.
[“Verdauungshilfe” herb tea infusion]<a|
This mixture of flower petals and leaves comes in an attractive tin tied with a raffia bow. It’s supposed to aid digestion. Tea is always nice on a chilly winter day in a cold climate, and good digestion never goes out of style. You ask the proprietor how it tastes. “It’s very healthy,” she replies.
(click: ?a)[(if: $gift is not "none")[(set: $gift to "herbal digestion tea")(display:"Replacement Confirmation")](if: $gift is not "herbal digestion tea")[(set: $gift to "herbal digestion tea")(set: $wallet to it - 10)(display: "Bought Confirmation")]]
[Paisley hammer pants]<b|
These one-size pants, made from cheerful paisley-print thin cotton, have a crotch that hangs somewhere around the knees. You’ve seen lots of women (and a few men) wearing pants like this around Kreuzberg and Friedrichshain – they’re fine, as long as you aren’t in a hurry to get anywhere. These pants would not be a good gift for a short person on the go, as the crotch would hang closer to ankle-level, seriously impeding their movement. Also, they're not very warm.
(click: ?b)[(if: $gift is not "none")[(set: $gift to "paisley hammer pants")(display:"Replacement Confirmation")](else-if: $gift is not "paisley hammer pants")[(set: $gift to "paisley hammer pants")(set: $wallet to it - 20)(display: "Bought Confirmation")]]
[Tie-dye maxi skirt]<c|
This thin, filmy cotton skirt looks extremely comfortable, appropriate for anything from a trip to the farmer's market to... well, next week's trip to the farmer's market. You hold it up to your waist in front of the mirror, and realize that it’s not terribly long for a so-called maxi skirt; it would be ankle-length on a short person, but awkwardly calf-length on a tall person. It's also not exactly warm.
(click: ?c)[(if: $gift is not "none")[(set: $gift to "tie-dye maxi skirt")(display:"Replacement Confirmation")](else-if: $gift is not "tie-dye maxi skirt")[(set: $gift to "tie-dye maxi skirt")(set: $wallet to it - 20)(display: "Bought Confirmation")]]
To the left there's the scent of [[chestnuts->Chestnuts]], and to the right you see some kind of (if: $seenR)[[[cheesy bread->Ron]]](else:)[[[cheesy bread->Rahmbrot]]].Ah, roasted chestnuts: simple, delicious, truly the Ur-Snack of the Weihnachtsmarkt.
The chestnut man slowly rakes raw chestnuts around a metal grate, the hot coals underneath roasting their outer skins to crispy perfection. He sings some vaguely Italian-sounding song, but it becomes quickly clear that he doesn’t know a word of Italian. He greets you warmly as you walk up to the stand.
[[100g roasted chestnuts]<a|
Small paper cone containing approximately 10 chestnuts.]<b|
(click: ?a)[(replace: ?b)[(set: $wallet to it - 2)(set: $hunger to 0)The vendor scrapes a spatula full of chestnuts into a paper cone. As he hands it to you, you can feel the warm chestnuts through the paper.
You squeeze open a charred, piping-hot husk and bite into the nut’s tender inside. Classic! Though you have to admit, roasted chestnuts always smell better than they taste.
These chestnuts will temporarily keep your holiday spirit from sinking too quickly as you walk around the market.]]
To the left you see a store selling [[hippie stuff->Hippie Stuff]], and to the right there's a (if: $seenA)[[[chocolate stand->Chocolate]]](else:)[[[chocolate stand->Alessandro]]].(set: $showFooter to 2)
(set: $seenR to true)
“Maaaaaaaaaaate!” comes a voice from behind you.
(Why are there sunglasses on Ron’s head? Not only is it night, you haven’t seen more than 5 minutes of sun for at least a week.)
“Ron, buddy! Good to see you!” You exchange back slaps. “How’s the consultancy been?” You have known Ron for two years, follow him on every social media platform, and still have no idea what his consultancy does.
“Business? Booming. Tons of clients, tons of meetings, phone’s just always blowing up. Clients, they all want something before the end of the year, you know? Got me working like a dog. Glad to finally catch a break.”
“What are you doing for the holidays?” you ask.
“Oh just heading to Corsica. Bunch of friends have a place there. Then we thought we’d head to Goa, hang out, see the beach, just chill. After that we’re gonna go to Phuket. You know, get a little sun, just relax, take it easy. I’ll be back in April. Good times. Yourself?”
“Spending the holidays with my in-laws,” you say. “Doesn’t sound quite as instagrammable as your trip. But hey, I’m excited to see them. Or rather, I will be once I figure out what to get for my mother-in-law.”
(if: $pSize is "tall")[“Now, that’s the really tall lady, right?”]
(if: $pSize is "short")[“Now, that’s the really short lady, right?”]
“Um, yeah.” You blink. “How do you know?”
“You instagrammed that whole trip to Provence, mate.”
“Oh. True.” That’s right – Ron faves everything you post. You didn’t think he actually looked at the pictures, though. You thought he’d programmed a bot that took care of that.
“Anyway! So good to see you.” Ron claps you on the back.
“Have a great trip, dude! Tell me all about it when you get back,” you say, knowing that Ron’s #adventures will be dominating your feed for the next few months, and that you’ll fave every one of them.
You [[continue onwards towards the smell of baking bread.->Rahmbrot]]Some enterprising immigrant to this land of potato-related innovation devised a contraption that bolts onto an electric drill and, using lathe parts, quickly turns a potato into a single huge spiral ready for the fryer.
Passersby gather around as the cook attaches another potato to the device and the fries spin into the dish. The drill seems to be a very effective marketing technique. You suspect that far more potatoes are processed than ever make it to the fryer.
|q>[
[Spiral fries]<a|
The perfect potato chip: hot, salty, and greasy.
[Spiral sweet-potato fries]<b|
They might be deep-fried, but at least they’re packed with beta carotene. That’s healthy, right?]
(click: ?a)[(replace: ?q)[(set: $hunger to 0)(set: $wallet to it - 2)The fry vendor hands you a greasy paper cone full of fries. You squirt some mayo on top, and - perhaps a bit too greedily - use the tiny fork to eat them.
These chips will keep your holiday spirit from sinking too quickly as you walk around the market.]]
(click: ?b)[(replace: ?q)[(set: $hunger to 0)(set: $wallet to it - 4)The fry vendor hands you a greasy paper cone full of fries. You squirt some mayo on top, and - perhaps a bit too greedily - use the tiny fork to eat them.
These chips will keep your holiday spirit from sinking too quickly as you walk around the market.]]
To your left, there's a (if: $seenJ)[[[stand selling wool goods->Wool]]](else:)[[[stand selling wool goods->Jürgen and Ulrike]]], and to your right, there seems to be an (if: $seenF)[[[almost-empty tent->Ali Express]]](else:)[[[almost-empty tent->Freddy]]].This bare-bones tent isn't even trying. It's probably just as well, given that you’ve seen the exact same one at every street fair and festival, be it Easter, May Day, Oktoberfest, German Reunification, or various Heritage Days.
Spread out on the bare table are a number of cheap electronics and accessories. The proprietor hunches over his phone, engrossed in a Whatsapp conversation while listening to music from his phone speakers. A hundred blue LEDs of bluetooth speakers and phone chargers light up the table. Piled in the back are large boxes, clearly from AliExpress.
[Phone case with a sparkly skull]<a|
It doesn’t really seem like her style, and you can’t remember what model of phone she has, but it definitely is sparkly.
(click: ?a)[(if: $gift is not "none")[(set: $gift to "sparkly skull phone case")(display:"Replacement Confirmation")](if: $gift is not "sparkly skull phone case")[(set: $gift to "sparkly skull phone case")(set: $wallet to it - 10)(display: "Bought Confirmation")]]
[Phone case with sparkly Hello Kitty]<b|
Actually, it says Halo Katty, but close enough. The sticker says that it is for a model of phone that you know was recalled years ago.
(click: ?b)[(if: $gift is not "none")[(set: $gift to "Hello Kitty phone case")(display:"Replacement Confirmation")](if: $gift is not "Hello Kitty phone case")[(set: $gift to "Hello Kitty phone case")(set: $wallet to it - 10)(display: "Bought Confirmation")]]
[FC Bayern München phone case]<c|
Since your mother-in-law does not follow German soccer, the classic Bavarian blue-and-white checkered pattern is not going to mean much to her. (click: ?c)[(if: $gift is not "none")[(set: $gift to "Bayern München phone case")(display:"Replacement Confirmation")](if: $gift is not "Bayern München phone case")[(set: $gift to "Bayern München phone case")(set: $wallet to it - 10)(display: "Bought Confirmation")]]
[Fidget spinner]<d|
You don't understand these. But you gotta admit, this is a genius use for extra industrial-grade ball bearings that failed inspection.
(click: ?d)[(if: $gift is not "fidget spinner")[(set: $gift to "fidget spinner")(set: $wallet to it - 3)(display: "Bought Confirmation")]]
To your left, you smell the [[unmistakable scent of fry oil->Pommes]], and to your right, you see the glow of a (if: $seenR)[[[ wood-fired oven->Rahmbrot]]](else:)[[[wood-fired oven->Ron]]]. {
(if: $showFooter is 1)[
(set: $spirit to it - 1)
(set: $hunger to it + 1)
(if: $hunger > 10)[ (set: $spirit to it - 1) ]
You can always visit the nearest
(if: $seenG)[[[Glühwein stall.->Glühwein Vendor]] ]
(else:)[ [[Glühwein stall.->The Office Girls]]]
](else-if: $showFooter is 2)[
(set: $showFooter to 1)
](else:)[
]
}(if: $showFooter is 1)[
(live: .5s)[
(if: $spirit < -3)[
(set: $showFooter to 0)(go-to: "Spirit-too-low")
](else-if: $spirit < -1)[
<div class="alert spirit-alert">Your holiday spirit is dangerously low. Unless you increase it, you’re going to have to go home very soon.</div>
](else-if: $spirit < 1)[
<div class="alert spirit-alert">Your holiday spirit is getting low. Your fingers are cold, your legs are tired, and you’re feeling ready to go home. If you’re not done shopping, you should find a way to increase your holiday spirit.</div>
](else-if: $spirit > 8)[
(set: $showFooter to 0)(go-to: "Spirit-too-high")
](else-if: $spirit > 6)[
<div class="alert spirit-alert">Your holiday spirit is dangerously high. You’re feeling warm, happy, and completely useless. You realize you’ve started humming “Jingle Bells” and passersby are staring at you. Any more holiday spirit, and you’ll have no choice but to go home.</div>
](else-if: $spirit > 3)[
<div class="alert spirit-alert">Your holiday spirit is high. The lights and sounds are beginning to blur. You feel fabulous, but you’re losing your focus. Better not drink much more, or you’re going to have to go home.</div>]]]
(if: $hunger > 10)[<div class="alert hunger-alert">
You're really hungry now, and your holiday spirit is fading fast.</div>
](else-if: $hunger > 6)[<div class="alert hunger-alert">
You are starting to get a bit hungry. It's hard to keep up your holiday spirit when your stomach is rumbling.</div>
]{
(set: $showFooter to 0)
(set: $showStatus to true)
(set: $wallet to 50)
(set: $spirit to 2)
(set: $seenA to false)
(set: $seenJ to false)
(set: $seenR to false)
(set: $seenF to false)
(set: $seenG to false)
(set: $drinkSpirit to 4)
(set: $gift to "none")
<!--
We need to randomize the set of properties so that at least one
of these is satisfiable. So, randomly assign all the vars, then pick an ideal gift and assign those:
1 [blue wool hat: cold, blue]
2 [green wool: cold, green]
3 [purple wool: cold purple]
4 [herb tea: cold healthy]
5 [drinking chocolate: cold sweet]
6 [hammer pants: warm tall]
7 [maxi skirt: warm short]
8 [chocolate nativity: religious sweet]
-->
(set: $pColor to (either: "purple", "green", "blue"))
(set: $pTemp to (either: "warm", "cold"))
(set: $pFood to (either: "healthy", "sweet"))
(set: $pSize to (either: "tall", "short"))
(set: $pRelig to (either: true, false))
(set: $bGift to (random: 1, 8))
(if: $bGift is 1)[
(set: $pColor to "blue")
(set: $pTemp to "cold")
](else-if: $bGift is 2)[
(set: $pColor to "green")
(set: $pTemp to "cold")
](else-if: $bGift is 3)[
(set: $pColor to "purple")
(set: $pTemp to "cold")
](else-if: $bGift is 4)[
(set: $pFood to "healthy")
(set: $pTemp to "cold")
](else-if: $bGift is 5)[
(set: $pFood to "sweet")
(set: $pTemp to "cold")
](else-if: $bGift is 6)[
(set: $pSize to "tall")
(set: $pTemp to "warm")
](else-if: $bGift is 7)[
(set: $pSize to "short")
(set: $pTemp to "warm")
](else-if: $bGift is 8)[
(set: $pRelig to true)
(set: $pFood to "sweet")
]
}(set: $showFooter to 0)Your holiday spirit is too low to shop any more. You’re freezing, it’s starting to drizzle, and it’s time for [[you to go home->Newark Airport]].(set: $showFooter to 0)Your holiday spirit is too high to shop any more. You stumble out of the Weihnachtsmarkt and towards the U-Bahn station, singing “Rudolph the Red-Nosed Reindeer.” It is DEFINITELY bedtime for you. [[Tomorrow’s transatlantic flight is not going to be fun->Newark Airport]].Dear family and friends:
As you know, we're two Americans living in Berlin. There's a lot to love about life in Germany, but we particularly love the Christmas markets. So this year, we're bringing the Weihnachtsmarkt experience to you with the world's first (as far as we know) [[Weihnachtsmarkt Simulator->At the Office]].
This game is dedicated to our mothers-in-law, Regina and Anne. You're about to find out why.
– Casey & Molly, December 2017Two days later. You’ve recovered from your jet lag. Your family sits in the living room, ready to exchange gifts.
(set: $partialSuccess to "")You hand your mother-in-law a wrapped gift. “You brought me something all the way from Germany!” she says, gently peeling the wrapping paper off.
(set: $joy to 0){(if: $gift contains $pColor)[(set: $partialSuccess to it + "Her favorite color is $pColor and so is her gift.")(set: $joy to it + 1)]}
{(if: $pRelig is true and $gift contains "nativity")[(set: $partialSuccess to it + "The nativity set will fit right in with her other religious decorations.")(set: $joy to it + 1)]}
{(if: $pFood is "healthy")[(if: "herbal" is in $gift)[(set: $partialSuccess to it + "The herbal tea is way healthier than the usual Christmas fare – perfect for somebody health-conscious.")(set: $joy to it + 1)]](else:)[(if: "drinking" is in $gift)[(set: $partialSuccess to it + "The chocolate will be perfect for her sweet tooth.")(set: $joy to it + 1)](else-if: "nativity" is in $gift)[(set: $partialSuccess to it + "The chocolate will be perfect for her sweet tooth.")(set: $joy to it + 1)]]}
{(if: $pTemp is "warm")[(if: "hammer" is in $gift)[(set: $partialSuccess to it + "The cool and breezy hammer pants are perfect for this warm climate.")(set: $joy to it + 1)](else-if: "skirt" is in $gift)[(set: $partialSuccess to it + "The cool and breezy skirt is perfect for this warm climate.")(set: $joy to it + 1)]](else:)[(if: "alpaca" is in $gift)[(set: $partialSuccess to it + "The fuzzy alpaca wool is perfect for this cold climate.")(set: $joy to it + 1)](else-if: "herbal" is in $gift)[(set: $partialSuccess to it + "A warm mug of herbal tea will be lovely in this cold, snowy climate.")(set: $joy to it + 1)](else-if: "drinking" is in $gift)[(set: $partialSuccess to it + "A warm mug of hot chocolate will be lovely in this cold, snowy climate.")(set: $joy to it + 1)]]}
{(if: $pSize is "tall" and $gift contains "hammer")[(set: $partialSuccess to it + "The pants fit her tall frame perfectly.")(set: $joy to it + 1)]}
{(if: $pSize is "short" and $gift contains "skirt")[(set: $partialSuccess to it + "The skirt is exactly the right length for your petite mother-in-law.") (set: $joy to it + 1)]}
(if: $joy is 0)[She raises an eyebrow as she unwraps the (print: $gift).
(if: "bobblehead" is in $gift)[“Well, that’s something,” she says. “Why don’t I make another pot of tea?” She sets the bobblehead on the coffee table and goes into the other room. The bobblehead’s head bobbles gently. You resolve – as usual – not to procrastinate with your Christmas shopping next year. ](else-if: "t-shirt" is in $gift)[Your mother-in-law holds the shirt up, not quite sure what to say. You excuse yourself to go drop another shot of whiskey into your eggnog, and resolve yet again not to procrastinate with your Christmas shopping.](else-if: "fidget" is in $gift)[Your mother-in-law has never seen one of these before. One of your cousins demonstrates it for her. “That’s all it does?” she says. “Spins around? Interesting.” ](else-if: "phone" is in $gift)[“This is for my phone?” says your mother-in-law. “I’m not sure it’ll fit. I think I have a Samsung something. Why don’t you give this to someone else?”
“Ooh, I’ll take it,” says your 12-year-old cousin. Good, everyone’s happy. Sort of.]
(else-if: "pants" is in $gift)[Not only are these pants way too long for your petite mother-in-law, they're made of very thin fabric that's not appropriate for this cold climate. ](else-if: "drinking" is in $gift)[Not only is your mother-in-law a health nut who doesn't consume sweets, a hot beverage is out of place in this warm climate.](else-if: "alpaca" is in $gift)[Not only is fuzzy alpaca wool out of place in this warm climate, your mother-in-law's favorite color is actually $pColor.](else-if: "tea" is in $gift)[
Not only is your mother-in-law completely uninterested in health-related gifts, a hot beverage is out of place in this warm climate.
](else-if: "skirt" is in $gift)[
Not only is this skirt too short for your tall mother-in-law, it's made of very thin fabric that's not appropriate for this cold climate.
](else-if: "nativity" is in $gift)[
Not only is your mother-in-law a health nut who doesn't consume sweets, she's not at all religious, and nativity scenes are not her thing.
]
<div class="alert end-score">Dude, not cool. You've done a lousy job choosing a gift for your mother-in-law. [Try again?]<restart|(click: ?restart)[(reload:)](Your mother-in-law will be slightly different every time.)</div>
](else-if: $joy is 1)[
She smiles as she unwraps the (print: $gift). She really seems to appreciate the thought. $partialSuccess
(if: "alpaca" is in $gift)[
However, you belatedly remember that her favorite color is actually $pColor.
](else-if: $pSize is "tall" and $gift contains "skirt")[
However, she's very tall, and the skirt is clearly way too short for her.
](else-if: $pSize is "short" and $gift contains "pants")[
However, she's very short, and the hammer pants are way too long for her.
](else-if: $pRelig is false and $gift contains "nativity")[
However, she's not religious, and nativity scenes aren't her thing.
](else-if: $pTemp is "warm" and $gift contains "drinking")[
However, hot chocolate isn't appropriate for a warm climate, unless she decides to really crank up the air conditioner.
](else-if: $pTemp is "warm" and $gift contains "tea")[
However, hot tea isn't appropriate for a warm climate, unless she decides to really crank up the air conditioner.
](else-if: $pTemp is "warm" and $gift contains "alpaca")[
However, fuzzy alpaca warmth is pointless in this warm climate.
](else-if: $pTemp is "cold" and $gift contains "skirt")[
However, the fabric is far too thin for this cold climate.
](else-if: $pTemp is "cold" and $gift contains "pants")[
However, the fabric is far too thin for this cold climate.
]
(else-if: $pFood is "healthy" and $gift contains "chocolate")[
However, she really only eats healthy food. Maybe your father-in-law will take it? Just keep it away from the dog.
](else-if: $pFood is "sweet" and $gift contains "tea")[
However, she has a notorious sweet tooth and isn't interested in anything health-related, not even herbal tea.
]
<div class="alert end-score">Could have been worse. Given that you were under time pressure, you did an okay job choosing a gift for your mother-in-law. [Try again?]<restart|(click: ?restart)[(reload:)] (Your mother-in-law will be slightly different every time.)</div>]
(else-if: $joy is 2)[
She beams with delight as she unwraps the (print: $gift). "It's just perfect!" she says. "Thank you for being so thoughtful. (if: $gift contains "alpaca")[It's my favorite color, and it will keep me cozy and warm.](if: $gift contains "nativity")[I do love chocolate, and it'll fit right in with my collection of nativity scenes.](if: $gift contains "drinking")[I do love chocolate, and this will be so tasty on cold winter nights.](if: $gift contains "tea")[This looks so healthy, and I love a cup of hot herb tea on cold winter nights.](if: $gift contains "pants")[These are so cool and breezy, and they fit me perfectly.](if: $gift contains "skirt")[It's so cool and breezy, and it's just the right length.]
She sets the (print: $gift) on the coffee table and gives you a big hug.
<div class="alert end-score">Congratulations! You've done a wonderful job choosing a gift for your mother-in-law. [Try again?]<restart|(click: ?restart)[(reload:)](Your mother-in-law will be slightly different every time.) </div>]
<div class="alert buying-confirmation">Bought $gift.</div><div class="alert buying-confirmation">You discard your previous gift and buy $gift.</div>