// Created with Squiffy 5.1.0 // https://github.com/textadventures/squiffy (function(){ /* jshint quotmark: single */ /* jshint evil: true */ var squiffy = {}; (function () { 'use strict'; squiffy.story = {}; var initLinkHandler = function () { var handleLink = function (link) { if (link.hasClass('disabled')) return; var passage = link.data('passage'); var section = link.data('section'); var rotateAttr = link.attr('data-rotate'); var sequenceAttr = link.attr('data-sequence'); if (passage) { disableLink(link); squiffy.set('_turncount', squiffy.get('_turncount') + 1); passage = processLink(passage); if (passage) { currentSection.append('
(.*)<\/p>$/; var stripParagsMatch = stripParags.exec(text); if (stripParagsMatch) { text = stripParagsMatch[1]; } var $labels = squiffy.ui.output.find('.squiffy-label-' + label); $labels.fadeOut(1000, function() { $labels.html(squiffy.ui.processText(text)); $labels.fadeIn(1000, function() { squiffy.story.save(); }); }); }; squiffy.story.go = function(section) { squiffy.set('_transition', null); newSection(); squiffy.story.section = squiffy.story.sections[section]; if (!squiffy.story.section) return; squiffy.set('_section', section); setSeen(section); var master = squiffy.story.sections['']; if (master) { squiffy.story.run(master); squiffy.ui.write(master.text); } squiffy.story.run(squiffy.story.section); // The JS might have changed which section we're in if (squiffy.get('_section') == section) { squiffy.set('_turncount', 0); squiffy.ui.write(squiffy.story.section.text); squiffy.story.save(); } }; squiffy.story.run = function(section) { if (section.clear) { squiffy.ui.clearScreen(); } if (section.attributes) { processAttributes(section.attributes); } if (section.js) { section.js(); } }; squiffy.story.passage = function(passageName) { var passage = squiffy.story.section.passages[passageName]; if (!passage) return; setSeen(passageName); var masterSection = squiffy.story.sections['']; if (masterSection) { var masterPassage = masterSection.passages['']; if (masterPassage) { squiffy.story.run(masterPassage); squiffy.ui.write(masterPassage.text); } } var master = squiffy.story.section.passages['']; if (master) { squiffy.story.run(master); squiffy.ui.write(master.text); } squiffy.story.run(passage); squiffy.ui.write(passage.text); squiffy.story.save(); }; var processAttributes = function(attributes) { attributes.forEach(function (attribute) { if (startsWith(attribute, '@replace ')) { replaceLabel(attribute.substring(9)); } else { setAttribute(attribute); } }); }; squiffy.story.restart = function() { if (squiffy.ui.settings.persist && window.localStorage) { var keys = Object.keys(localStorage); jQuery.each(keys, function (idx, key) { if (startsWith(key, squiffy.story.id)) { localStorage.removeItem(key); } }); } else { squiffy.storageFallback = {}; } if (squiffy.ui.settings.scroll === 'element') { squiffy.ui.output.html(''); squiffy.story.begin(); } else { location.reload(); } }; squiffy.story.save = function() { squiffy.set('_output', squiffy.ui.output.html()); }; squiffy.story.load = function() { var output = squiffy.get('_output'); if (!output) return false; squiffy.ui.output.html(output); currentSection = jQuery('#' + squiffy.get('_output-section')); squiffy.story.section = squiffy.story.sections[squiffy.get('_section')]; var transition = squiffy.get('_transition'); if (transition) { eval('(' + transition + ')()'); } return true; }; var setSeen = function(sectionName) { var seenSections = squiffy.get('_seen_sections'); if (!seenSections) seenSections = []; if (seenSections.indexOf(sectionName) == -1) { seenSections.push(sectionName); squiffy.set('_seen_sections', seenSections); } }; squiffy.story.seen = function(sectionName) { var seenSections = squiffy.get('_seen_sections'); if (!seenSections) return false; return (seenSections.indexOf(sectionName) > -1); }; squiffy.ui = {}; var currentSection = null; var screenIsClear = true; var scrollPosition = 0; var newSection = function() { if (currentSection) { disableLink(jQuery('.squiffy-link', currentSection)); } var sectionCount = squiffy.get('_section-count') + 1; squiffy.set('_section-count', sectionCount); var id = 'squiffy-section-' + sectionCount; currentSection = jQuery('
', { id: id, }).appendTo(squiffy.ui.output); squiffy.set('_output-section', id); }; squiffy.ui.write = function(text) { screenIsClear = false; scrollPosition = squiffy.ui.output.height(); currentSection.append(jQuery('').html(squiffy.ui.processText(text))); squiffy.ui.scrollToEnd(); }; squiffy.ui.clearScreen = function() { squiffy.ui.output.html(''); screenIsClear = true; newSection(); }; squiffy.ui.scrollToEnd = function() { var scrollTo, currentScrollTop, distance, duration; if (squiffy.ui.settings.scroll === 'element') { scrollTo = squiffy.ui.output[0].scrollHeight - squiffy.ui.output.height(); currentScrollTop = squiffy.ui.output.scrollTop(); if (scrollTo > currentScrollTop) { distance = scrollTo - currentScrollTop; duration = distance / 0.4; squiffy.ui.output.stop().animate({ scrollTop: scrollTo }, duration); } } else { scrollTo = scrollPosition; currentScrollTop = Math.max(jQuery('body').scrollTop(), jQuery('html').scrollTop()); if (scrollTo > currentScrollTop) { var maxScrollTop = jQuery(document).height() - jQuery(window).height(); if (scrollTo > maxScrollTop) scrollTo = maxScrollTop; distance = scrollTo - currentScrollTop; duration = distance / 0.5; jQuery('body,html').stop().animate({ scrollTop: scrollTo }, duration); } } }; squiffy.ui.processText = function(text) { function process(text, data) { var containsUnprocessedSection = false; var open = text.indexOf('{'); var close; if (open > -1) { var nestCount = 1; var searchStart = open + 1; var finished = false; while (!finished) { var nextOpen = text.indexOf('{', searchStart); var nextClose = text.indexOf('}', searchStart); if (nextClose > -1) { if (nextOpen > -1 && nextOpen < nextClose) { nestCount++; searchStart = nextOpen + 1; } else { nestCount--; searchStart = nextClose + 1; if (nestCount === 0) { close = nextClose; containsUnprocessedSection = true; finished = true; } } } else { finished = true; } } } if (containsUnprocessedSection) { var section = text.substring(open + 1, close); var value = processTextCommand(section, data); text = text.substring(0, open) + value + process(text.substring(close + 1), data); } return (text); } function processTextCommand(text, data) { if (startsWith(text, 'if ')) { return processTextCommand_If(text, data); } else if (startsWith(text, 'else:')) { return processTextCommand_Else(text, data); } else if (startsWith(text, 'label:')) { return processTextCommand_Label(text, data); } else if (/^rotate[: ]/.test(text)) { return processTextCommand_Rotate('rotate', text, data); } else if (/^sequence[: ]/.test(text)) { return processTextCommand_Rotate('sequence', text, data); } else if (text in squiffy.story.section.passages) { return process(squiffy.story.section.passages[text].text, data); } else if (text in squiffy.story.sections) { return process(squiffy.story.sections[text].text, data); } else if (startsWith(text,'@') && !startsWith(text,'@replace')) { processAttributes(text.substring(1).split(",")); return ""; } return squiffy.get(text); } function processTextCommand_If(section, data) { var command = section.substring(3); var colon = command.indexOf(':'); if (colon == -1) { return ('{if ' + command + '}'); } var text = command.substring(colon + 1); var condition = command.substring(0, colon); condition = condition.replace("<", "<"); var operatorRegex = /([\w ]*)(=|<=|>=|<>|<|>)(.*)/; var match = operatorRegex.exec(condition); var result = false; if (match) { var lhs = squiffy.get(match[1]); var op = match[2]; var rhs = match[3]; if(startsWith(rhs,'@')) rhs=squiffy.get(rhs.substring(1)); if (op == '=' && lhs == rhs) result = true; if (op == '<>' && lhs != rhs) result = true; if (op == '>' && lhs > rhs) result = true; if (op == '<' && lhs < rhs) result = true; if (op == '>=' && lhs >= rhs) result = true; if (op == '<=' && lhs <= rhs) result = true; } else { var checkValue = true; if (startsWith(condition, 'not ')) { condition = condition.substring(4); checkValue = false; } if (startsWith(condition, 'seen ')) { result = (squiffy.story.seen(condition.substring(5)) == checkValue); } else { var value = squiffy.get(condition); if (value === null) value = false; result = (value == checkValue); } } var textResult = result ? process(text, data) : ''; data.lastIf = result; return textResult; } function processTextCommand_Else(section, data) { if (!('lastIf' in data) || data.lastIf) return ''; var text = section.substring(5); return process(text, data); } function processTextCommand_Label(section, data) { var command = section.substring(6); var eq = command.indexOf('='); if (eq == -1) { return ('{label:' + command + '}'); } var text = command.substring(eq + 1); var label = command.substring(0, eq); return '' + process(text, data) + ''; } function processTextCommand_Rotate(type, section, data) { var options; var attribute = ''; if (section.substring(type.length, type.length + 1) == ' ') { var colon = section.indexOf(':'); if (colon == -1) { return '{' + section + '}'; } options = section.substring(colon + 1); attribute = section.substring(type.length + 1, colon); } else { options = section.substring(type.length + 1); } var rotation = rotate(options.replace(/"/g, '"').replace(/'/g, ''')); if (attribute) { squiffy.set(attribute, rotation[0]); } return '' + rotation[0] + ''; } var data = { fulltext: text }; return process(text, data); }; squiffy.ui.transition = function(f) { squiffy.set('_transition', f.toString()); f(); }; squiffy.storageFallback = {}; squiffy.set = function(attribute, value) { if (typeof value === 'undefined') value = true; if (squiffy.ui.settings.persist && window.localStorage) { localStorage[squiffy.story.id + '-' + attribute] = JSON.stringify(value); } else { squiffy.storageFallback[attribute] = JSON.stringify(value); } squiffy.ui.settings.onSet(attribute, value); }; squiffy.get = function(attribute) { var result; if (squiffy.ui.settings.persist && window.localStorage) { result = localStorage[squiffy.story.id + '-' + attribute]; } else { result = squiffy.storageFallback[attribute]; } if (!result) return null; return JSON.parse(result); }; var startsWith = function(string, prefix) { return string.substring(0, prefix.length) === prefix; }; var rotate = function(options, current) { var colon = options.indexOf(':'); if (colon == -1) { return [options, current]; } var next = options.substring(0, colon); var remaining = options.substring(colon + 1); if (current) remaining += ':' + current; return [next, remaining]; }; var methods = { init: function (options) { var settings = jQuery.extend({ scroll: 'body', persist: true, restartPrompt: true, onSet: function (attribute, value) {} }, options); squiffy.ui.output = this; squiffy.ui.restart = jQuery(settings.restart); squiffy.ui.settings = settings; if (settings.scroll === 'element') { squiffy.ui.output.css('overflow-y', 'auto'); } initLinkHandler(); squiffy.story.begin(); return this; }, get: function (attribute) { return squiffy.get(attribute); }, set: function (attribute, value) { squiffy.set(attribute, value); }, restart: function () { if (!squiffy.ui.settings.restartPrompt || confirm('Are you sure you want to restart?')) { squiffy.story.restart(); } } }; jQuery.fn.squiffy = function (methodOrOptions) { if (methods[methodOrOptions]) { return methods[methodOrOptions] .apply(this, Array.prototype.slice.call(arguments, 1)); } else if (typeof methodOrOptions === 'object' || ! methodOrOptions) { return methods.init.apply(this, arguments); } else { jQuery.error('Method ' + methodOrOptions + ' does not exist'); } }; })(); var get = squiffy.get; var set = squiffy.set; squiffy.story.start = '_default'; squiffy.story.id = '6d2e819500'; squiffy.story.sections = { '_default': { 'text': "Once there was a very old witch who lived by herself in a little shack at the top of a hill. In her youth she had been quite a sight to see, smiting and blighting and turning peoples children into rodents. But now she was older and there had been four live-action Chipmunk movies and that was a cruel enough thing to inflict on children. The very old witch was very old; she had seen humans do a lot of cruel things to each other and now she didn't know what else she could do to the world anymore. So the very old witch passed her time quietly, rocking in her wicker chair on the front porch, glaring at passersby.
", 'passages': { }, }, 'passersby': { 'text': "The people of the village did not usually bother the very old witch. It had been a very long time since she had cursed any of them. Presently the only folk who still feared her were the tax collectors. This was because the last collector to visit the very old witch had never left. He was now made of a weather resistant plastic and stood in the very old witch's yard, with pretty blue and purple morning glories twining up his legs. He had told the very old witch his name was Donald, but she hated that name. Nowadays she called him Hernando.
\nThe very old witch did not do much these days. She tended her garden... most of the time. She used her magic to steal newspapers and magazines at a healthy distance from town. She made grilled cheese for meals, when she could be bothered to eat.
", 'passageCount': 3, 'passages': { 'tended her garden': { 'text': "The very old witch had once grown belladonna and nightshade and those days were mostly long gone. She did keep a single tomato plant, gnarled and yellowing, for old times' sake. She also grew a number of root vegetables, because they were slightly less work than flimsy cornstalks or patchy melons or berries that had to be picked every week.
", }, 'steal newspapers and magazines': { 'text': "If you were to peek in the very old witch's windows you would see stacks of fishing magazines, science digests, newsletters from the Commission on Aging and the local elementary school and the Catholic church. Bales of the latter, actually--the truck carrying the weekly bulletins had crashed into a fire truck under the town's single stoplight, which had amused the very old witch so much that she magicked away the bales of bulletins as a keepsake of that wild, wild day.
", }, 'grilled cheese': { 'text': "The very old witch made her sandwiches from bread she'd magicked away from the grocery store's truck and cheese from the dollar store. The cheese tasted very much like plastic, or possibly like bricks of pure cancer cells.
", }, '@last': { 'text': "It was... a quiet life.
", }, }, }, 'quiet life': { 'text': "The very old witch awoke one day particularly sand and grumpy. She didn't want grilled cheese. She didn't want to read her newspapers. She went out to the front yard and glared down the hill at the town. Although her eyes weren't as good as they had once been, she could see people going about their business. It irritated her.
\nThe very old witch felt restless, as if something were missing. But what could it be?
\nPerhaps her long life was coming to a close, she thought, leaning up against Hernando to give her corns a rest, and this was her one last hurrah before she went.
\nPerhaps, she thought, she wanted to blight something.
", 'passages': { }, }, 'blight': { 'text': "So the very old witch cast her eyes around and found a field of prize winning dahlias, as big as dinner plates, winking merrily in the wun. With a flick of her wrist she brought down swarms of Japanese beetles to feast on the flowers. The field turned brown and dead beneath them in a matter of moments.
\nBut still the very old witch felt restless.
\nPerhaps smiting will help, she thought.
", 'passages': { }, }, 'smiting': { 'text': "As it happened a land developer was driving past in his shiny red sports car. He was whistling to himself and thinking about the money he would make on his next job, when he tore down low-income housing to build designer cupcake stores.
\nWith a click of her fingers the very old witch opened up a pothole in front of him. The shiny red sports car crashed into it, and the land developer, who was not wearing a seat belt, flew through the windshield and rolled down the hill.
\nBut the very old witch was still restless.
", 'passages': { }, }, 'restless': { 'text': "The very old witch turned her eyes upon the town, seeking some one knew to smite. Down below a tall person and a small person were walking up to the post office. They would have to do.
\nThe very old witch rolled up her sleeves and got ready to cast a lightning spell or tornado spell and just as she was about to shout the magic words the small person turned and she saw that it was a child.
\nShe lowered her arms and watched as the child rushed back and crouched down beside the sidewalk. After a moment's fidgeting, the child held up a leaf. The adult patted them on the head and lead them indoors. The very old witch did not smite them.
\nA child, she thought. Surely that's what is missing.
", 'passages': { }, }, 'A child': { 'text': "The very old witch hobbled quickly to her kitchen and found {sequence:a satchet of lavender:a vial of crushed ogre's bones:a handful of magic dust and a hickory wand}
", 'passages': { }, }, 'a handful of magic dust and a hickory wand': { 'text': "which she carried off to her garden.
\nThere she scuffed some dirt into approximately the shape of a torso. It was lumpy on one side and the legs were sort of crooked, but the very old witch had never claimed to be good at the human form. She said a few magic words over the torso and dug around the garden until she found something resembling a head. It was a turnip, a large-ish turnip that was still a little too small for the torso. But the very old witch had never claimed to be good at proportions, so she sprinkled her lavender and bones over the turnip and stuck it on the torso and then waved the wand and the dust over everything.
\nAnd then... she waited.
", 'passages': { }, }, 'she waited': { 'text': "She waited and waited. She waited as the sun went down and the moon came up and a thin irritating layer of dew formed over everything. She waited until at last the turnip and the torso stirred, and then sat up. The turnip-headed golum looked all around her. She took in the stars in the sky and the chirping of the chicadas and the fiery wreck of the land developer's sports car, which was still flaming in the pothole. Finally she turned and saw the very old witch. A wrinkle that looked very much like a smile formed on her turnip face.
\n"Hello," said the turnip girl.
\nIt was with a sinking feeling that the very old witch realized she didn't feel any less empty inside. This hadn't been what was missing after all.
", 'passages': { }, }, 'what was missing': { 'clear': true, 'text': "The very old witch reluctantly opened her home unto the turnip girl, not because she wanted to, but because she had created this life and it was her responsibility to take care of her.
\nThe turnip girl was always asking questions. "Why does the sun shine?" she wanted to know. "Why is the grass green? Why don't we ever go down to the village?"
\nThe very old witch tried to answer her questions, but sometimes she just didn't feel like it.
", 'passages': { }, }, 'answer her questions': { 'text': ""People are terrible," she told the turnip girl. "They are always hurting one another or themselves. I used to smite and blight them, but they could always do it much more effeciently than I could. Do you understand?"
\n"No," said the turnip girl. "Why can't we go visit them?"
\n"When you're older you can visit all you like," the very old witch said. "Until then you can just stay here with me and Hernando."
\nThe turnip girl pouted for a bit, but Hernando was very fun to climb on, and the village was awfully far to go alone.
", 'passages': { }, }, 'didn\'t feel like it': { 'text': ""We just don't, that's all," the very old witch said, flipping absently through a mail order catalogue. Unfortunately the catalogue seemed to be selling rubber gardening boots and inexpensive toilet plungers and other boring things. She tossed the catalogue back on the stack. "Let them do their thing and we will do ours. That's all I want to hear on the matter."
\nThe turnip girl didn't ask again.
", 'passages': { }, }, 'alone': { 'text': "When the turnip girl was a little older she asked the very old witch for books, and the very old witch obliged by magicking books out of the library's drop box. It amused her to picture the library patrons gnashing their teeth, pleading with the librarians that they had turned in their books, honest, someone must have taken them out of the box and that was why the books were late. It amused her so much that at first she didn't give too much thought to what the turnip girl was reading.
\nBut if she didn't know at first she soon found out. The turnip girl was full of even more questions. This time the questions were more difficult to answer.
\n"Why do people make friends?" she asked. "Why do they fall in love? Why do they get so attached to pets?" she asked, waving around an award-winning book about a boy who shot his dog. Every time the very old witch looked it seemed to be a different book with the same plot.
\nThe truth was, the very old witch didn't know, nor did she care
", 'passages': { }, }, 'dunno': { 'text': ""I don't know," the very old witch said. "It must make them happy."
\n"But then why are they mean to each other?" the turnip girl took out another book, a book about wars and bombs and civilian casualties. "That shouldn't make them happy. That should make them sad."
\nAnd the very old witch could only shrug.
", 'passages': { }, }, 'don\'t care': { 'text': ""What difference does it make?" the very old witch asked. "You aren't people."
\nThe turnip girl looked a little sad at this, at least as much as a turnip girl can, and {if listen=no:again} she stopped asking.
", 'passages': { }, }, 'shrug': { 'text': "One day, several years after the very old witch first got the feeling that something was missing, the turnip girl came to her with a plan.
\n"I'm not a little turnip girl anymore," she said. "I'm a turnip young adult, and I think it's time for me to make my own way. So I'm going to enroll in college."
\nThis was good, the very old witch told herself. It wasn't as if she wanted to hang around, taking care of this vegetable child who didn't quite fill up the empty feeling. But what should she say? Be safe? Or maybe have fun?
", 'passages': { }, }, 'safe': { 'text': ""Be safe," she said at last.
\n"Don't worry," the turnip girl said. "I can take care of myself."
\nThe very old witch wasn't so sure about that, but what could she say? She sat in her rocker and watched the turnip girl head out into the world.
", 'passages': { }, }, 'fun': { 'text': ""Have fun," she said at last.
\n"I will try," the turnip girl said. "I'll see you... when I see you?"
\nThe very old witch nodded, and let the turnip girl head out into the world.
", 'passages': { }, }, 'world': { 'clear': true, 'text': "The house was very empty without the turnip girl in it. It was too quiet and too dull and to her surprise the very old witch found herself more restless than before.
\nMaybe the end of the world is coming, she reasoned, and spent some time drawing signs to post in the yard, signs that read, "The end is nigh!" and "Reality is an illusion!" and "Keep off the grass!"
\nWhen that didn't help she took up knitting. But that only aggravated her carpal tunnel. She tried her hand at casting weather spells, conjuring up a magnificent snow storm in the middle of August, but that killed her garden and made her even more depressed. She spent some time screaming into her pillow and then throwing wads of newspaper at Hernando, which helped a little but not much.
\nFour years passed in this way.
", 'passages': { }, }, 'Four years': { 'text': "When four years had passed a car pulled up into the very old witch's lawn (there was no driveway). When the very old witch saw the car come rolling up onto her field of dandelions and clover she grew very angry. She came down off the porch to yell and shout and curse the very chassis of the car itself. As she did so one of the car's doors opened, and the turnip girl stepped out.
\n"Hello, Mama," she said.
\nThe very old witch lost her train of thought. "Mama?"
\n"I have to call you something. I came back to tell you I graduated."
\nThe very old witch was surprised. "You actually went to college? And you didn't get made into turnip soup? How?"
\n"Loans," the turnip girl said with a grimace. "So many loans. But here, do you want to see my graduation?" She held out a phone with a photo on its screen, but the very old witch could only make out some blurriness in the shape of possibly a turnip girl. Her eyes were not as good as they used to be. "I graduated with a double major in economics and journalism. Do you want to see my clips?"
\nThe very old witch glanced doubtfully at the phone, but the turnip girl brought out a big binder instead. She opened it up and inside were a number of newspaper clippings just big enough to be read.
\n"Neo Nazis March on Campus, by Turnip G. Witch," the very old witch read slowly. "Allegations of Overseas Election Tampering. Police Tear-Gas Protestors. What are these?"
", 'passages': { }, }, 'What are these': { 'text': ""My clips," said the turnip girl. "The world's a lot worse than you thought. There's white supremacists in the government and people are chasing away refugees and there have been seventeen trans women killed just so far this year. We're on our way right now to a counter-protest against the neo nazis."
\n"Sounds about right."
\n"I came back to ask if you want to do something about it."
\nThe very old witch laughed, but the turnip girl did not. "If you are asking me to smite and blight nazis, my girl, you are bound to be disappointed. I gave up meddling in the affairs of humans."
", 'passages': { }, }, 'meddling': { 'text': "{if listen=yes:"You told me once you gave that up because they were being so efficiently cruel to each other. Well, who is more effeciently cruel than a nazi?}{if listen=no:"You wanted to let the humans do their own thing, and this is the thing they came up with. I can't let it get any worse.} {if explain=cant:It isn't right. The nazis don't get to be happy if they can't respect other people's humanity.}{if explain=wont:I may not be people but I know what's right. Just nazis being nazis is cruel to the people they hate. It's in their ideology!} I'm not going to sit back and let those awful people make out like the people they hate are less than human. I can't let them do it."
\nThe very old witch smiled at her, feeling a little sadness in with the emptiness.
\n"I thought I told you to {if be=safe:to stay safe}{if be=fun:have fun}?"
\nThe turnip girl took the very old witch's hand and gave it a squeeze.
", 'passages': { }, }, 'gave it a squeeze': { 'text': "{if be=safe:"I was," she said. "And now I'm going to keep the others safe too."}{if be=fun:"I did," she said. "And now I'm here."}
\nThe very old witch looked down at the turnip girl's hand. "I'm not a strong witch anymore," she said. "I can't see very well and I don't smite and blight like I used to."
\n"That's okay."
\n"I don't really know what I can do."
\n"That's okay too."
\n"And I'm scared," the very old witch said very, very quietly.
\nThe turnip girl smiled at her.
\n"Me too," she said.
", 'passages': { }, }, 'Me too': { 'text': "The very old witch got into the car and was surprised to find it was already crowded with people, people in a wild variety of shades and abilities and hair styles.
\n"It's bad," one of the people in the front seat said as the turnip girl squeezed in beside her. "I've been keeping up with it on Twitter and it's so bad."
\n"That stands to reason, I guess," the turnip girl said. "I mean, they are nazis. Let's get going."
\nThe car gave a lurch and rolled backward out of the lawn. The very old witch sent a mental order to Hernando to hold down the fort while she was gone and settled in for a long and uncomfortable ride.
\nOne thing she could say for it, though. She felt a little less empty inside.
", 'passages': { }, }, 'little less empty inside': { 'text': "Maybe, she thought, watching as her turnip daughter and her friends organized to protect others, this was what had been missing all along.\n\n
\n", 'passages': { }, }, 'about': { 'text': "text by Megan Stevens
\nartwork by Kel Graham
", 'passages': { }, }, } })();