JavaScript must be enabled to play.
Browser lacks capabilities required to play.
Upgrade or switch to another browser.
Loading…
<h1>Let's Begin!</h1> You arrive at the grocery store already fumbling in your pockets for the list. Where is the thing? You swear, you’d lose your own head if it wasn’t attached. Staring at your scrawled handwriting forms a pit in your stomach. What you’ve done, what you’re going to do . . . it will all be worth it, right? You hope so. What’s the first thing on your list? <<button "Battery <em>🔋</em>" "Choice2">> <<set $object1 to "A battery">><<set $alien +=1 >> <</button>> <<button "Bandage <em>💊</em>" "Choice2">> <<set $object1 to "A bandage">><<set $monster +=1 >> <</button>> <<button "Book <em>📕</em>" "Choice2">> <<set $object1 to "A book">><<set $ritual +=1 >> <</button>> <<cart>> /*[[Choice2]]*/
Batteries. Of course. Portable units of energy built and designed to fill your electrical needs. Different sizes for different needs, like the coin batteries you swallowed as a child or the fist-sized chunk of 6-volt that your father kept in his bulky, heavy-duty flashlight. That flashlight had been a beast of a thing. Blinding. Bright light cutting through the trees, white and hot the whole time. It had tasted like ozone when it hit you, sticking you in place for far longer than you wanted to stay. Your father had been shouting, hollering even . . . just your name, over and over again. Calling your name as the light drew you up, up, up, above the trees, above the birds, above the clouds, above your father standing in the clearing with his heavy flashlight, face illuminated without any shadows at all, the light burning his eyes to milky blind even as he stretched out to brush your fingers before you were pulled away entirely. Your father died last year. He left the flashlight to your brother. You heft your batteries from the shelf and place them in the basket. They're heavier than the ones that lived in your father's flashlight. They'll power something bigger than just a flashlight. You turn away from the aisle and squint at your list again. What other groceries do you need? [[I need pet food!]] [[I need drawing supplies!]] [[I need a phone!]] <<set $alien to +=1 >>
Bandages. Your hands ache from countless small wounds, accumulated over time, healed and unhealed and reopened. They'll break again. You're sure of it. You're positive of it-- Sss. The paper-thin edge of your list slips between the ridges of your index finger, carving a line through your flesh only a few millimeters thick. Blood wells at the edges, drawn away from heart, out through the veins and capillaries, spilling onto the edge of your list in bright, bitter scarlet. You'll need those bandages sooner, you think, rather than later. You find your way to the medical aisles, scooping a box of plain bandages off of the shelf. You eye a different box, one made for children and pattered in bright stars and flowers, but decide against it. You're an adult, and you've made adult choices to bring you here. You can't reverse them with a flower-themed bandage. You turn away from the aisle and squint at your list again. What other groceries do you need? [[I need pet food!]] [[I need drawing supplies!]] [[I need a phone!]] <<set $monster to "1">>
The smell of fetid meat hits your nose before you can even consider traversing the store to its home. It's simple, after all-- you must keep it fed. You must keep it fed. Don't even think about swanning yourself home with only $object1 in your pockets-- you must keep it fed. You must keep it fed. You must keep it fed. You must keep it fed. You must keep it fed. You must keep it fed. You must keep it fed. You must keep it fed. You must keep it fed. You must-- Your hands are in the meat freezer again. They were't this purple when you put them in. They are frozen-- literally or metaphorically, you can't tell-- around a slab of pork loin. It looks like it has been there for several months. Maggots crawl across its surface, stinking little blind worms that you could crush between your teeth just as easily as you could sniff out their lives with your fingers like extinguishing a candle. Maggots are nothing. Perhaps, then, you are merely a maggot to it. But if maggots are good for one thing, they keep the meat clean. And you . . . you are a good maggot. [[A new outfit!]] [[Cleaning supplies!]] [[A cool rock!]] <<if $monster is "1", set $monster to "2">> <<ifelse set $monster to "1">>
Chalk. You expected it to be in the art supplies aisle. All good shopping marts have them, brimming with cheap paint and brittle faux flowers. The flourescent lights above you buzz at a frequency that you can't quite mimic with the low hum that emanates from your throat. You stare at the rows and rows of colors in the art aisle for a minute, watching them swirl as your eyes criss and cross out of focus. The chalk isn't there. You know it as soon as you lay eyes upon the cold, unforgiving shelves-- they will not divulge what you seek, and they care nought for your plight. Instead, they offer the bitter embrace of the void. That's okay. It's all you deserve. It's all you think you can stomach. You drift, slowly but surely, through the store. You can't leave without your chalk. You must have it. Everything will go right, and to go right, you must have your chalk. Damn the consequences. You find it, at last, in the children's aisle. You should have thought to look there first but your mind was distracted, filled with thoughts of $object1 instead. Stupid, stupid child. You know better than this. You were taught better than this. There are too many colors in this box. You dispose of them methodically, dust smashing itself into the grooves of your hands as you tighten your grip. You breathe it in, slowly, surely. It coats your throat in powder but you still retain the willpower not to cough. Perhaps if you inhale enough, you may choke. Perhaps if you inhale enough, there will be nothing left in your lungs but a fine layer of green that future anthropologists with excise and marvel at. Perhaps a great avalanche of chalk will bury the store beneath it and you will, in some form, be swiftly returned to the soil. Perhaps then-- and only then-- will you be permitted some final solace. [[A new outfit!]] [[Cleaning supplies!]] [[A cool rock!]] <<if $ritual is "1", set $ritual to "2">> <<ifelse set $ritual to "1">>
Here's what you're looking for. The robe slides on like a second skin, cotton fabric cold against goosebumps that have risen against your flesh. It's rebelling againnst you already. Your stomach turns as you consider what this new outfit means, what it symbolizes. It calls out to a dark basement somewhere and a jagged knife that gleams in the dark. You know what this robe is meant to do, and your traitorous flesh dislikes it. Your mind, though . . . it craves it. [[You've collected everything on your list!]] <<set $ritual to "3">>
<<if $monster is "3">>Wow, a monster! <<elseif $alien is "3">> cool. <<else>>Oh no . . . <</if>>
An acrid smell fills your nose as you come across the aisle, practically glowing with bright colors and advertised effects. You heft a container of mopping solution, reading its claims to cleanliness, but you can't help but think of the mess you've left at home. It's red. It's so, so red. But this solution can fix that! This solution, a new mop, a new bucket . . . laundry detergent and wet wipes, scouring scrub and melamine sponges. You'll get it out. You'll get it out and no one will ever know what happened there. [[You've collected everything on your list!]] <<set $monster to "3">>
Something in aisle five is ringing. It's red and square, positioned firmly behind the column that bisects the aisle. The shelves are full of bread. The phone is ringing. No, the phone isn't ringing . . . a bell above it is. Brassy and large, enough noise to spread across the whole store. It's ringing like mad and suspended beneath a set of metal pipes. Your father used to tell you about the bells, back when you lived beside the funeral parlor. He'd sit you on his great knee and whittle as you watched. You watched the graveyard, where the bells sometimes rang if you listened closely enough. And your father told you stories about who was buried there-- the lords, the ladies, the wives, the husbands. The children skipping rope between the headstones. The people who fell ill and then woke up again scratching at pine boards overhead, their lungs clogging with dirt and dioxide. The way that they would find a single thin string tied around their fingers, wrapped up to ensure that they couldn't lose it even in death. The way the string would jerk and contort just as the body jerked and contorted, scrabbling at the soil. The string ran up, and up, and up, out of the coffin and through the soil in a thin metal pipe, and as the body wrested itself from the embrace of the earth, the bell on the grave would ring and ring and ring and ring. You remember that home. You remember that funeral parlor. The bells never stopped ringing. This bell isn't like the one in the graveyard, though. Its pipe doesn't turn downwards, into the soft comfort of a well-dug grave. No. Instead, it runs up-- up, up, up-- into the sky. You can't see where it ends. You reach out and hold the clapper of the bell. It twists, but can't escape your easy grip. The jerking grows gentler, and you wait until all the fight has gone out of it. When the bell is silent, you remove your hand. You take the phone with you. [[Cleaning supplies!]] [[A new outfit!]] [[A cool rock!]] <<set $alien to += 1>>
It glows in the heart of things. You can hear it calling, but only because it's calling to you. That's why you were sent in here, why you were given this list. You're the only one who can do this dangerous, desperate task. It glows green in the dark, your crystal. It grows green in the dark and it lives in the basement with tendrils that writhe up seeking the light. They've asked for it and you will deliver it. At the end of the day, having $object1 and $object2 is nice, but . . . now, you've found the crystal. And it's the last thing you had to get. [[You've collected everything on your list!]] <<set $alien to += 1>>
<h1>Welcome to Shopping Spree! </h1> This is a quizlike game with multiple endings. Each route has its intended end, but going forward or backward cannot reverse your choices. You can only go forward, and live with the hole you have dug for yourself. To begin again, one must commit to it wholly and fully. You have been warned-- devations outside of these parameters may cause unforseen errors. You have dug a grave. Now you must lie in it. <<button "Begin" "Welcome">> <</button>> /*[[Welcome]]*/
A book. That's the word that's scrawled there, glaring and obvious. Only four letters, and yet they already feel so foreign to you. When did you forget that you needed the book? You're not quite sure, but anxiety churns in your stomach. If you almost forgot the book, what else did you already forget? If everything isn't perfect tonight . . . you're not sure what could happen. What could have already happened. As you find your way to the back-- because the books are always kept in the back of the store, down the narrow paths and tracing steps of carefully-lain aisles, into the depths next to things like electronics and car batteries-- you are able to think more clearly. The store is empty around you, and you can hear it singing in the dark. Your book sits, heavy and golden-edged, bound with uneven leather. You can't read the title, but you know it is stamped and gilded with characters you are too scared to comprehend. The words it sings are as unknown as its title, but perhaps that is just a failure on your part. Perhaps your mind is just not open enough to hear it . . . or at least, not yet. The book rests heavy in your basket as you turn away from its prior roost. Your list calls out again, drawing your eye. What other groceries do you need? [[I need drawing supplies!]] [[I need pet food!]] [[I need a phone!]] <<set $ritual to "1">>
Pages that feature these warnings are denoted in brackets beside the warning. Injury [Bandaids!] [Batteries!] Parental Death [Batteries!] Abduction [Batteries!]
<<set $alien to 0>> <<set $ritual to 0>> <<set $monster to 0>>
<h1>$object1 begins the hunt.</h1> <<if $object1 is "A battery">> You stare at the wall of batteries for a moment. There are lots at this store; little ones the size of coins, cylindrical ones to power moving machines; larger ones that cut through the dark like a tractor beam. You select the largest you can, and it sits heavy in your grasp. That’s good. There’s a reason you were sent out to get it; you have many heavy things to do. <<elseif $object1 is "A book">> You find it amongst others of its kind, but it is not like them. Your book sits, heavy and golden-edged, bound with uneven and imprecise leather. It looks to be very old, and its pages are scrawled with a brown ink in words that you cannot decipher. The edges are seared with soot and smoke, as if it was drawn up from the depths of Hell itself. You flip to the incantation you know hides within, and your eyes drink in the careful lines of the runes and sigils. You will memorize this, and you will reproduce it tonight. All will come in due time, though. For now, you must wait . . . and acquire the rest of your list. <<elseif $object1 is "A bandage">> Your hands ache from countless small wounds, accumulated over time, healed and unhealed and reopened. You finished off the last package of bandages today; you’ll need more before the night is through. Your pet has never handled its teeth well, and you are often the scapegoat when it gets too feisty. It’s alright, though– you don’t blame it. What’s the line? “No pet is perfect. It becomes perfect when you learn to accept it for what it is.” Yes, yes, you have learned to accept your pet, even through its bites and scratches. You love your pet. Your pet is perfect. And you will serve it well. <<else>> There's been an error in the system. Go back and choose another option. <</if>> With $object1 found, you turn again to the maze of the store. What do you seek out next? <<button "Drawing Supplies <em>🖍</em>" "Choice3">> <<set $object2 to "Drawing supplies">> <<set $ritual +=1 >> <</button>> <<button "Pet Food <em>🐶</em>" "Choice3">> <<set $object2 to "Pet food">><<set $monster +=1 >> <</button>> <<button "A Phone <em>📞</em>" "Choice3">> <<set $object2 to "A phone">><<set $alien +=1 >> <</button>> /*[[Choice3]]*/ <<cart>>
<h1>$object2. A key part of your plan.</h1> <<if $object2 is "Drawing supplies">> You can already picture what you want to draw with these supplies, this bundle of chalk that you pick up in an aisle full of children’s playthings. You’ve been practicing in the dark, in secret, at night; colors and patterns the likes of which you’ve only dreamed. Now, they will no longer be dreams. You will use this to your advantage, and summon your ideas into the physical world at last. <<elseif $object2 is "Pet food">> You do not begin in the pet-themed aisles to find what you seek. Your pet has never been one for kibble, and you do not think it would take kindly to you serving it at the table. Instead, you rifle through the freezer section– nothing but the best for it, of course. You unearth a long pork loin, almost the dimensions of a man’s thigh. It has a nice weight and heft to it. Yes, your pet will enjoy this. You’re sure of it. <<elseif $object2 is "A phone">> Communication is key, so you look for a phone. People are so interested in their phones; it’s a little electronic in their pocket. It hums with a power that one could harness, if they found a way. One could get hurt, if the air became electrified. It would be . . . such a shame if that occurred. Such a shame. It’s a good thing that your friends know better than to keep close to these. You wouldn’t want anything adverse to happen to them. <<else>> An error presents itself to you. Go back and make your choice anew. <</if>> With this found, you have but one thing left to acquire. What is it? <<button "A new outfit <em>👚</em>" "Choice4">> <<set $object3 to "A new outfit">> <<set $ritual +=1 >> <</button>> <<button "A cool rock <em>🗿</em>" "Choice4">> <<set $object3 to "A cool rock">> <<set $alien +=1 >> <</button>> <<button "Cleaning supplies <em>🌫</em>" "Choice4">> <<set $object3 to "Cleaning supplies">> <<set $monster +=1 >> <</button>> /*[[Choice4]]*/ <<cart>>
<<if $alien >=2>> <h1>They call you home as you return from the store.</h1> The aliens, the extraterrestrials, the things that came from above and stole you away. You don’t even make it to your car before they are upon you, hovering and glowing with all the beauty of a thunderstorm but none of the ethereal grace. They don’t give you the time to scream before you are drawn into the air by a thick, pulsating tractor beam. Your $object1, $object2, and $object3 are drawn up beside you, floating weightlessly, gently bumping against each other. You are welcomed into the ship, warmed by a glow that you thought would never again come from these broken circuits. The aliens– your peers, more akin to you than any of the hollow-eyed shoppers in the market– welcome you with open arms. They usher you deeper into the ship, cooing and proclaiming in a language that you must alter your ears and mouth to comprehend. They swarm around you to show what this room is for– something built sits in the middle, something of their own construction. You recognize it instinctively as a weapon. Your new peers slot $object1 into a niche at the base. They plug $object2 into the cord. The $object3 rests at its head, cold and powerful. You shift the shape of your ears to hear their praise. You did a good job, your peers inform you. They’re proud of you, and the things you’ve accomplished together. You’ve been a good pet. You watch as they lock the whole thing into place and carefully take aim. One flips a final switch, and the sound of electricity fills the room. A beam of light forms at the tip of the weapon, centered around $object3, the same ominous color as the tractor beam you came in on. The light moves, vicious, fervent, and lands on the roof of the store below like a spotlight. Unlike a spotlight, it burns furiously, a small fire igniting where it lands and burning down to the shelves immediately. The ship pulls away from the store and the beam of light seems to get larger, swallowing the store, turning the parking lot to ash. The road outside descends into chaos as you go. Even the sky above you begins to turn gray with smoke and ash, and all the while, the weapon pulses and hums. Everything is burning. Everything has burned. <<elseif $ritual >=3>> <h1>You bundle your illicit goods back into the car with all the abundance and care they deserve,</h1> sitting shotgun and safely buckled in. You ferry them to the meeting place, where your friends are already waiting. One is by the door; he nods silently and accepts as you pass him $object3. He allows you entry without a fuss. You head down to the basement, reverently placing $object1 upon its stand. The others are here– you must have been the last to arrive. The doorman files in behind you as you pass the $object2 and $object3 out amongst your peers. Then you convene in low tones, drawing your chosen sigil on the floor and humming. You crouch at its head, feeling $object2 heavy in your hand. Goosebumps have risen across your flesh. Someone reads from $object1 and their voice is great and terrible, shaking the walls. Their words split into your very soul. The lights flicker out, plunging all into nought but a great darkness. Your sigils begin to burn with fire and hatred and magic. It’s the only light in the room and only displays you and your compatriots as cowled, cowering creatures, scarcely even human. You are nothing but children, scared of the dark . . . and there is something in the center of the sigil. Its wings are folded. Its horns shine in the dark. Its teeth gleam. Finally, after all this time– it’s all come to this. You break the circle of fellows. You find yourself drawn towards it, one hand aloft to praise its majesty. The devil reaches out its hand in kind and its claws are like knives, dripping a soft golden ichor. It has killed before it came here. It will kill again. It grips you with a strength that alarms you. It pulls you past the edge of the sigil, past the protective charmwork you had written onto the floor. It snatches you by the chin to look closer, its hot breath ghosting into your ear and ruffling your hair. It considers you, stares at you with an unabashed hunger. It lifts you up by the chin . . . And snaps your neck without ceremony. <<elseif $monster >=3>> <h1> You haul the groceries down to the basement and unpack,</h1> laying each out on the table down there. $object1 for yourself. $object2 for it. $object3 to tie it all together. You glance over to the corner where it lurks, an amorphous mass of hair and eyes and spikes, six green dots blinking languidly at you. Its long, thin arms reach out of the corner, going on and on and on, snagging the $object2 off of the table and swiftly delivering it to jaws packed so full of teeth you’re not sure it can close. You suppress a shudder when you catch a whiff of its breath, rotten and stinking. You ask if it liked the $object2. It doesn’t reply, because it doesn’t really talk all that much. Doesn’t really have the voicebox for it. But those green eyes keep staring at you, blinking, as a new set of arms rises up from its torso. It signs above its body, movements quick and fluid. Its claws drip ichor– poison, perhaps, or blood. You laugh. You tell it you don’t have any more for it. You don’t– you don’t have any more. The creature slides across the floor, propelled by some unknown means. It’s not like it has legs, after all, but it leaves that trail of ichor-poison-blood in its wake. Its face is more teeth than anything else, even as it creeps right up to stand in front of you and stare. Its blinking is less lazy, more purposeful now. “I don’t-” But it’s too late. Before the sentence even manages to leave your mouth, its teeth clamp vicelike around your ankle. The tendons sever, the bone splinters underneath the sheer force of its jaw, and you can feel it chewing even as it works its way up your leg. You stumble, clinging to the table, just enough time to scream as it consumes your body and you are swallowed completely. <<else>> <h1>You return home without a fuss.</h1> You put away your groceries quietly. You collapse on your couch with $object1, staring at it quietly. In any other life, $object1 could have led you on a great and terrible path. Perhaps to an alien spaceship, bound for lands unknown. Maybe off to a fantastical realm of elves and devils, a magical place to seize power for yourself. Or, perchance, you’d find yourself still in your apartment, but with something dark and powerful lurking under the plain wooden floors. Unless . . . You RESTARTED. <</if>> <<cart>>
<div><img src="images/logo.png" alt="Shopping Spree logo" width="100px" height="100px"> </div>
<<nobr>>© Emily Matter 2025<</nobr>>
<a href="http://ucmo.edu">Go to UCM's homepage</a>
A game about going to the grocery store :D
This game was made in the<br>ART 4610 class at UCM
<a href="mailto:babcock@ucmo.edu">If you disliked the game, email me at: babcock@ucmo.edu</a>
<h1>$object3 will complete your task.</h1> <<if $object3 is "A new outfit">> You prowl amongst the clothes until you find something that will work. It’s just past Halloween and all the costumes are on clearance, at long last, and you can purchase bulk capes for a cheap price. It feels a little silly, but these things require a dress code. It just doesn’t feel the same if you show up in sweatpants, you know? You gotta do it right, and by God, if you’re going to trade off this much, you’re going to do it RIGHT. <<elseif $object3 is "A cool rock">> You don’t know what this kind of rock is called. Honestly, you’re not even sure it should reside in this grocery store– it’s an odd thing for them to carry, and you find it hidden in the bowels of the basement like a long-buried secret. It glows softly in the dark. You can feel power radiating off of it, and you’re not sure if the electricity in the air is tangible or if you just expect the air to be tense around it. Your fist closes around the rock. You’re going to do great things with this new find, aren’t you? <<elseif $object3 is "Cleaning supplies">> You must ensure no one learns of your secrets, of course, and for that you must ensure that the house is spotless all of the time. So you wander the technicolor aisles as if in a daze, running calculations on how much of what solution you will need as you shovel supplies into a handbasket. Laundry detergent. Wet wipes. Scouring scrub and melamine sponges. Out, out, damned spot. <<else>> An error presents itself to you. You must go back and try again. <</if>> You've done it. You've completed it. The shopping list lies vanquished in your pocket. You toss a handful of coins at the pitiful cashier as you dash out of the store. They occupy less than a thought in your mind, for your mind is somewhere else. Your mind is far away. Your mind is already hours forward, standing in a cold, dark room. <<button "End this." "End">><</button>> <<cart>> /*[[End]]*/
<<widget "cart">> <<nobr>> <div id="cart"> <div id="cart-object">Your Cart:</div> <div id="cart-object"><<if $object1 is "A book">> <i>📕</i> <<elseif $object1 is "A battery">> <i>🔋</i> <<elseif $object1 is "A bandage">> <i>💊</i> <<else>> ? <</if>></div> <div id="cart-object"><<if $object2 is "Pet food">> <i>🐶</i> <<elseif $object2 is "Drawing supplies">> <i>🖍</i> <<elseif $object2 is "A phone">> <i>📞</i> <<else>> ? <</if>></div> <div id="cart-object"><<if $object3 is "A new outfit">> <i>👚</i> <<elseif $object3 is "A cool rock">> <i>🗿</i> <<elseif $object3 is "Cleaning supplies">> <i>🌫</i> <<else>> ? <</if>></div><div id="cart-object"> ? </div> </div> <</nobr>><</widget>>