{
<span style="text-align:center;">
<h1>Library Hero</h1>
<p>A game about finding the right book for the job.</p>
<p>[[Play Game]]</p>
<p> [[How Does this Work?]] — [[About this Game]] — [[Credits]] </p>
<p>Created by Stewart C Baker</p>
</span>
}{
<p>“Nothing is more exasperating than having to wait for books.”<br />
— Charles Amni Cutter</p>
<p> “With a library card comes great responsibility.”<br />
— Stan Lee (paraphrased)</p>
[[Begin]]
}{
<h1>Credits</h1>
<p>Text: Stewart C Baker</p>
<p>Playtesters: </p>
<p>[[Back->Title]]</p>
}{
<h1>About this Game</h1>
<p>"Library Hero" is a short text game designed to introduce people to finding books in a library.</p>
<p>This game was supported by a Helmer Professional Development grant from the Orbis Cascade Alliance, and is released here under a CC-BY license (meaning you are allowed to share, modify, and redistribute it so long as you provide proper credit and a link to the original).</p>
<p>[[Back->Title]]</p>
}{
<p><em>Library Hero</em> is written in Twine, a free tool that lets you create text games and publish them as HTML files playable in a web browser.</p>
<p>In Twine games, you click links on a web page to make choices and change the outcome of a story. These links will take you off your current page by committing you to an action or choice.</li>
</ul>
<p>[[Back->Title]]</p>
}{
<!-- System Used: 1 = LC, 2 = Dewey -->
(set: $system_used to 1)
<!-- Hero Name -->
(set: $hero_name to "blank")
<!-- Powers: 1 = speed; 2 = strength ; 3 = telekinesis; 4 = phasing -->
(set: $powers to 1)
<!-- Search Type 1 = kw; 2 su; 3 = au -- search_val varies based on search_type -->
(set: $search_type to 1)
(set: $search_val to 1)
<!-- Stacks visited (adjusts text when walking in the stacks) -->
(set: $stacks_visited to false)
(set: $shelves_visited to false)
<!--Book values -->
(set: $book_found to false)
(set: $book_val to "none")
(set: $book_call to "none")
(set: $book_call_1st to "none")
(set: $book_call_2nd to "none")
<!-- book_type 1 = correct ; 2 = incorrect ; 3 = comedy -->
(set: $book_type to 1)
<!-- Shelf check values -->
(set: $range_start to "a")
(set: $right_shelf to false)
(set: $current_shelves to "SE")
<!-- tracks how close the villain is to finding the player, if it reaches 0, the game ends on a bad ending -->
(set: $villain_counter to 8)
}
{
<p>Ever since you were a kid, you've been obsessed with super heroes. Those brave individuals who stand up to villainy and oppression, with colorful costumes and quirky special moves.</p>
<p>So when you finished high school, the choice was obvious: you were going to apply to Hero University and become a hero yourself!</p>
<p>The application process was gruelling, full of tests, exercises, and interviews. But at last, you made it. You were going to be a hero!</p>
<p>One of your first classes was picking your hero name and power. What did you choose?</p>
<p>(link:"I'm Mightor, with the power of strength.")[(set: $hero_name to "Mightor")(set: $powers to 1)(go-to: "Intro_2")]</p>
<p>(link:"I'm Sunburst, with the power of speed.")[(set: $hero_name to "Sunburst")(set: $powers to 2)(go-to: "Intro_2")]</p>
<p>(link:"I'm Geist, with the power of telekinesis.")[(set: $hero_name to "Geist")(set: $powers to 3)(go-to: "Intro_2")]</p>
<p>(link:"I'm Halfer, with the power of phasing.")[(set: $hero_name to "Halfer")(set: $powers to 4)(go-to: "Intro_2")]</p>
}{
<p>Life as $hero_name is pretty good. Even though you're still learning the basics of your power—like (if: $powers is 1)[dead lifting half a literal ton in the gym](else-if: $powers is 2)[running the 100-yard dash in under 5 seconds](else-if: $powers is 3)[turning the pages of a book with nothing but your mind](else:)[keeping your hand insubstantial for long enough to pass a pencil through it]—you can already start to see where they'll come in handy in the future. How you'll be able to use them to help people.</p>
<p>Of course, becoming a hero isn't free, despite Hero University's reasonable in-state tuition. And then there's rent, and food, and enough coffee to fuel your late-night cram sessions.</p>
<p>Since you're not independently wealthy, that means work. What have you been doing for money?</p>
<p>(link-replace:"Brewing coffee at the campus coffee shop.")[You tried working at the campus coffee shop, but (if: $powers is 1)[after you accidentally broke the handle on their espresso machine with your super strength they said you'd be too expensive](else-if: $powers is 2)[it turns out that if you try to brew a cup of espresso at super speed, more coffee gets on the customers than in the cup. Oops](else-if: $powers is 3)[apparently it's "unsettling" to use the power of your mind to grind coffee beans in midair. Whatever](else:)[after you accidentally phased your hand through a coffee cup and burnt all your fingers you decided it wasn't a good career choice].]</p>
<p>(link-replace:"Painting hallways for campus facilities.")[You tried working for campus facilities as a painting assistant, but (if: $powers is 1)[apparently using super strength to close paint cans means nobody else can open them, so they let you go](else-if: $powers is 2)[apparently even though you can paint ten times as fast as anyone else, you're still terrible at it](else-if: $powers is 3)[the first time you tried to use your powers to open a paint can, you used too much pressure and got paint //everywhere//](else:)[apparently the paint the campus uses has anti-phasing qualities and you got stuck half-in, half-out of a wall. Oof].]</p>
<p>[[Learning how to help people find books at the library.]]</p>
}{
<p>Working in the library isn't exactly what you pictured when you first thought about attending Hero University, but it isn't all bad.</p>
<p>You've learned a lot about where information comes from, how to look for it in print and online, and how to determine the quality of that information—whether that's an anonymous Wikipedia edit, a scholarly book from a respected publisher, or a so-called "news" article in a popular online magazine. In the last week, your supervisor has been training you for a new task: helping other students find books on the shelves, and reshelving books after they're checked back in.</p>
<p>You're in the middle of putting some recently returned books on a book cart when an alarm sounds, and [[an announcement comes over the library's speakers]].</p>
}{
<p>"Attention, all staff, students, and members of the community," the announcement says. "Hero University is under attack by (print: $villain_name), a villain intent on (print: $villain_motive).</p>
<p>"At this time, we are asking all people on campus who do not have registered hero status to seek shelter. Thank you—and stay safe!"</p>
<p>That's alarming, but not too surprising. As a university that trains super-powered heroes to fight crime, Hero University regularly faces down threats from villains.</p>
<p>Normally you would be all too happy to leave the defense effort to registered heros. But one of your hobbies is updating WikiVillain, and you know just how to thwart (print: $villain_name)'s evil plans. Your (if: $powers is 1)[super speed](else-if: $powers is 2)[super strength](else-if: $powers is 3)[telekinesis](else:)[phasing abilities] won't help you here. No, you're going to need to use your library skills to find a book of (print: $villain_weakness) from the stacks!</p>
<p>[[Start Up the Catalog]]</p>
<p>[[Head to the Stacks]]</p>
}{
<p>From what you've read on WikiVillain, (print: $villain_name)'s biggest weakness is (print: $villain_weakness_long).</p>
<p>That means all you need to do is find a book of (print: $villain_weakness), and you can take this villain down.</p>
<p>How are you going to find that perfect book?</p>
<p>[[Search by Subject]]
<p>[[Search by Keyword]]</p>
<p>[[Search by Author]]</p>
}{
<p>The stacks of Hero University's library take up almost all of its floor space.</p>
<p>Each section of shelving is marked at both ends with a range of call numbers that can be found upon it. (if: $book_found is false)[Of course, for that to be useful, you'll need to figure out what book you want.</p><p>You should [[Start Up the Catalog]] first and figure out what you're looking for.<p>](else:)[Since you already know that you're looking for <em>(print: $book_val)</em>, all you have to do is look for the numbers on the shelves that will contain its call number, (print: $book_call).</p><p>[[Head into the Shelves]]</p>]
}{
<p>Call Number in hand, you head into the library stacks.</p>
(if: $stacks_visited is false)[<p>This part of the library building is arrayed in a giant X shape, in honour of the school's first head librarian Xtra Curricular, whose exploits and adventures are the stuff of legend. Each portion of the X holds row after row of shelving, reaching to the ceiling and lined with books and other types of media.</p>
<p>Large signs above each section of the X list out the call numbers located there. The shelves to the north-east of the statue hold books with call numbers (if: $system_used is 2)[000 through 399](else:)[A through F]. To the north-west, (if: $system_used is 2)[400 through 599](else:)[G through L]. Those to the south-east hold (if: $system_used is 2)[600 through 799](else:)[M through P], and finally in the south-west there are call numbers (if: $system_used is 2)[800 through 999](else:)[Q through Z]. (The exit to the library's circulation and info desk is directly north, but you have no need to go back that way.)</p>
<p>A statue of Xtra themself occupies the center of the cross, a pen and notebook clutched in one upraised hand while their other arm holds a bag—full of frisbees, rock-climbing equipment, video game consoles, and just-for-fun books—to their chest. As always, the statue is a welcome reminder that one shouldn't study //too// hard...</p>
<p>You stop at the base of the statue and consult the scrap paper. You're looking for call number (print: $book_call), so you should go to... (set: $stacks_visited to true)]
(else: )[
<p>You return to the statue of Xtra Curricular and take a moment to re-orient yourself, glancing up at the signage once again.</p>
<p>The shelves to the north-east of the statue hold books with call numbers (if: $system_used is 2)[000 through 399](else:)[A through F]. To the north-west, (if: $system_used is 2)[400 through 599](else:)[G through L]. Those to the south-east hold (if: $system_used is 2)[600 through 799](else:)[M through P], and finally in the south-west there are call numbers (if: $system_used is 2)[800 through 999](else:)[Q through Z].</p>
<p>So if you want call number (print: $book_call), you should go to...</p>
]
<p>[[The North-East Stacks]] (call numbers (if: $system_used is 2)[000 through 399](else:)[A through F])</p>
<p>[[The North-West Stacks]] (call numbers (if: $system_used is 2)[400 through 599](else:)[G through L])</p>
<p>[[The South-East Stacks]] (call numbers (if: $system_used is 2)[600 through 799](else:)[M through P])</p>
<p>[[The South-West Stacks]] (call numbers (if: $system_used is 2)[800 through 999](else:)[Q through Z])</p>
}{
<p>Keyword searching lets you look for words that show up in the title, subject, and some descriptive fields like an abstract or description. Keyword searching can be a good place to start, since you don't have to get the subject exactly right. Picking the best keywords is also a great way to get started on identifying your search topic and find the most sources possible.</p>
<p>The downside is that sometimes you'll get irrelevant books in your search results.</p>
<p>Do you want to search by keyword, or use a different method?</p>
<p>(link: "Heck yeah! I'm ready to search.")[(set: $search_type to 1)(go-to:"Search_start")]</p>
<p>No, I'll [[Search by Subject]]</p>
<p>No, I'll [[Search by Author]]</p>
<h2>Learn More</h2>
<p>Learn more about keyword searching using the links below:
<ul>
<li><a href="https://www.usg.edu/galileo/skills/unit04/primer04_07.phtml" target="_blank">Keyword Search - Primer on Databases and Catalogs</a> (University System of Georgia)</li>
<li><a href="https://guides.lib.uh.edu/c.php?g=1249281" target="_blank">What are Keywords and Why are They Important?</a> (University of Houston)</li>
</ul>
}{
<p>Author searching lets you look for books written by a specicic author. This can be a great way to narrow down your search results to one person's works, but library catalogs often require some pretty specific formatting when it comes to author names. Usually, that's the last name, a comma, and then the first name. Also, if you're looking for as many books as you can on a topic, searching by author might stop you from finding useful results.</p>
<p>Do you want to search by author, or use a different method?</p>
<p>(link: "Heck yeah! I'm ready to search.")[(set: $search_type to 3)(go-to:"Search_start")]</p>
<p>No, I'll [[Search by Keyword]]</p>
<p>No, I'll [[Search by Author]]</p>
<h2>Learn More</h2>
<p>Learn more about author searching using the link below:
<ul>
<li><a href="https://library.bath.ac.uk/literaturesearch/author-search" target="_blank">Author Searching</a> (University of Bath)</li>
</ul>
}{
<p>Subject searching lets you narrow down your search results to everything that a cataloger has identified as being about a specific subject. Although this is a great way to avoid irrelevant books, most catalogs will require you to know proper Library of Congress subject headings(if: $system_used is 1)[.](else:)[—even if your library uses the Dewey Decimal System to put books on shelves.] If you aren't sure what those are, or if you phrase subjects incorrectly when you type them, you can quickly end up with 0 results and some frustrated feelings.</p>
<p>Do you want to search by subject, or use a different method?</p>
<p>(link: "Heck yeah! I'm ready to search.")[(set: $search_type to 2)(go-to:"Search_start")]</p>
<p>No, I'll [[Search by Keyword]]</p>
<p>No, I'll [[Search by Author]]</p>
<h2>Learn More</h2>
<p>Learn more about subject headings using the links below:
<ul>
<li><a href="https://library.indianastate.edu/librarybasics/usinglcsh" target="_blank">How to Use Library of Congress Subject Headings</a> (Indiana State University)</li>
<li><a href="https://guides.lib.utexas.edu/metadata-basics/controlled-vocabs" target="_blank">Controlled Vocabularies</a> (University of Texas)</li>
</ul>
}{
<p>You pull up the library catalog on a kiosk next to the checkout desk. You've decided to search by (if: $search_type is 1)[keyword](else-if: $search_type is 2)[subject](else:)[author], and you know you need to find a book of (print: $villain_weakness). All that's left to do now is decide what you're going to type in the search box.</p>
(if: $search_type is 1)[
<p>Search for (link: "(print: $kw_1)")[(set: $search_val to 1)(go-to: "Search_cont")]</p>
<p>Search for (link: "poetry")[(set: $search_val to 2)(go-to: "Search_cont")]</p>
<p>Search for (link: "cat pictures")[(set: $search_val to 3)(go-to: "Search_cont")]</p>
<p>Search for (link: "traditional poetry")[(set: $search_val to 4)(go-to: "Search_cont")]</p>
]
(else-if: $search_type is 2)[
<p>Search for (link: "poetry -- modern")[(set: $search_val to 1)(go-to: "Search_cont")]</p>
<p>Search for (link: "poetry")[(set: $search_val to 2)(go-to: "Search_cont")]</p>
<p>Search for (link: "cats -- pictorial works")[(set: $search_val to 3)(go-to: "Search_cont")]</p>
<p>Search for (link: "poetry -- 19th century")[(set: $search_val to 4)(go-to: "Search_cont")]</p>
]
(else:)[
<p>Search for (link: "(print: $au_1)")[(set: $search_val to 1)(go-to: "Search_cont")]</p>
<p>Search for (link: "Shire, Warsan")[(set: $search_val to 2)(go-to: "Search_cont")]</p>
<p>Search for (link: "Chandoha, Walter")[(set: $search_val to 3)(go-to: "Search_cont")]</p>
<p>Search for (link: "Cowper, William")[(set: $search_val to 4)(go-to: "Search_cont")]</p>
]
}{
<p>Ah, yes.
(if: $search_type < 3)[
(if: $search_val is 1)[(print: $kw_su_hint_1)]
(else-if: $search_val is 2)[(print: $kw_su_hint_2)]
(else-if: $search_val is 3)[(print: $kw_su_hint_3)]
(else:)[(print: $kw_su_hint_4)]
]
(else:)[
(if: $search_val is 1)[(print: $au_hint_1)]
(else-if: $search_val is 2)[(print: $au_hint_2)]
(else-if: $search_val is 3)[(print: $au_hint_3)]
(else:)[(print: $au_hint_4)]
]</p>
<p>Is this what you want to search for?</p>
<p>Yep. [[Let's search]]!</p>
<p>(link:"No, I'll pick a different option.")[(undo:)]</p>
<p>(link:"Actually, I want to start over.")[(go-to: "Start Up the Catalog")]</p>
}{
<p>You watch the catalog website spin its wheels for a moment, and then take a look at the first few results.</p>
<hr />
(if: $search_type is < 3)[
(if: $search_val is 1)[
<p><em>(print: $book_1_ti)</em><br />
(print: $book_1_au)<br />
(print: $book_1_loc)<br /><br />
(if: $system_used is 2)[(print: $book_1_D)](else:)[(print: $book_1_L)]</p>
<p style="text-align:center;font-style:bold;">(link:"Select this book")[(set: $book_found to true) (set: $book_val to $book_1_ti) (if: $system_used is 2)[(set: $book_call to $book_1_D)](else:)[(set: $book_call to $book_1_L)] (set: $book_type to $book_1_type)(go-to: "Pre-stacks")]</p>
<hr />
<p><em>(print: $book_2_ti)</em><br />
(print: $book_2_au)<br />
(print: $book_2_loc)<br /><br />
(if: $system_used is 2)[(print: $book_2_D)](else:)[(print: $book_2_L)]</p>
<p style="text-align:center;font-style:bold;">(link:"Select this book")[(set: $book_found to true) (set: $book_val to $book_2_ti) (if: $system_used is 2)[(set: $book_call to $book_2_D)](else:)[(set: $book_call to $book_2_L)] (set: $book_type to $book_2_type)(go-to: "Pre-stacks")]</p>
<hr />
<p><em>(print: $book_3_ti)</em><br />
(print: $book_3_au)<br />
(print: $book_3_loc)<br /><br />
(if: $system_used is 2)[(print: $book_3_D)](else:)[(print: $book_3_L)]</p>
<p style="text-align:center;font-style:bold;">(link:"Select this book")[(set: $book_found to true) (set: $book_val to $book_3_ti) (if: $system_used is 2)[(set: $book_call to $book_3_D)](else:)[(set: $book_call to $book_3_L)] (set: $book_type to $book_3_type)(go-to: "Pre-stacks")]</p>
<hr />
]
(else-if: $search_val is 2)[
<p><em>(print: $book_4_ti)</em><br />
(print: $book_4_au)<br />
(print: $book_4_loc)<br /><br />
(if: $system_used is 2)[(print: $book_4_D)](else:)[(print: $book_4_L)]</p>
<p style="text-align:center;font-style:bold;">(link:"Select this book")[(set: $book_found to true) (set: $book_val to $book_4_ti) (if: $system_used is 2)[(set: $book_call to $book_4_D)](else:)[(set: $book_call to $book_4_L)] (set: $book_type to $book_4_type)(go-to: "Pre-stacks")]</p>
<hr />
<p><em>(print: $book_5_ti)</em><br />
(print: $book_5_au)<br />
(print: $book_5_loc)<br /><br />
(if: $system_used is 2)[(print: $book_5_D)](else:)[(print: $book_5_L)]</p>
<p style="text-align:center;font-style:bold;">(link:"Select this book")[(set: $book_found to true) (set: $book_val to $book_5_ti) (if: $system_used is 2)[(set: $book_call to $book_5_D)](else:)[(set: $book_call to $book_5_L)] (set: $book_type to $book_5_type)(go-to: "Pre-stacks")]</p>
<hr />
<p><em>(print: $book_6_ti)</em><br />
(print: $book_6_au)<br />
(print: $book_6_loc)<br /><br />
(if: $system_used is 2)[(print: $book_6_D)](else:)[(print: $book_6_L)]</p>
<p style="text-align:center;font-style:bold;">(link:"Select this book")[(set: $book_found to true) (set: $book_val to $book_6_ti) (if: $system_used is 2)[(set: $book_call to $book_6_D)](else:)[(set: $book_call to $book_6_L)] (set: $book_type to $book_6_type)(go-to: "Pre-stacks")]</p>
<hr />
]
(else-if: $search_val is 3)[
<p><em>(print: $book_7_ti)</em><br />
(print: $book_7_au)<br />
(print: $book_7_loc)<br /><br />
(if: $system_used is 2)[(print: $book_7_D)](else:)[(print: $book_7_L)]</p>
<p style="text-align:center;font-style:bold;">(link:"Select this book")[(set: $book_found to true) (set: $book_val to $book_7_ti) (if: $system_used is 2)[(set: $book_call to $book_7_D)](else:)[(set: $book_call to $book_7_L)] (set: $book_type to $book_7_type)(go-to: "Pre-stacks")]</p>
<hr />
<p><em>(print: $book_8_ti)</em><br />
(print: $book_8_au)<br />
(print: $book_8_loc)<br /><br />
(if: $system_used is 2)[(print: $book_8_D)](else:)[(print: $book_8_L)]</p>
<p style="text-align:center;font-style:bold;">(link:"Select this book")[(set: $book_found to true) (set: $book_val to $book_8_ti) (if: $system_used is 2)[(set: $book_call to $book_8_D)](else:)[(set: $book_call to $book_8_L)] (set: $book_type to $book_8_type)(go-to: "Pre-stacks")]</p>
<hr />
<p><em>(print: $book_9_ti)</em><br />
(print: $book_9_au)<br />
(print: $book_9_loc)<br /><br />
(if: $system_used is 2)[(print: $book_9_D)](else:)[(print: $book_9_L)]</p>
<p style="text-align:center;font-style:bold;">(link:"Select this book")[(set: $book_found to true) (set: $book_val to $book_9_ti) (if: $system_used is 2)[(set: $book_call to $book_9_D)](else:)[(set: $book_call to $book_9_L)] (set: $book_type to $book_9_type)(go-to: "Pre-stacks")]</p>
<hr />
]
(else:)[
<p><em>(print: $book_10_ti)</em><br />
(print: $book_10_au)<br />
(print: $book_10_loc)<br /><br />
(if: $system_used is 2)[(print: $book_10_D)](else:)[(print: $book_10_L)]</p>
<p style="text-align:center;font-style:bold;">(link:"Select this book")[(set: $book_found to true) (set: $book_val to $book_10_ti) (if: $system_used is 2)[(set: $book_call to $book_10_D)](else:)[(set: $book_call to $book_10_L)] (set: $book_type to $book_10_type)(go-to: "Pre-stacks")]</p>
<hr />
<p><em>(print: $book_11_ti)</em><br />
(print: $book_11_au)<br />
(print: $book_11_loc)<br /><br />
(if: $system_used is 2)[(print: $book_11_D)](else:)[(print: $book_11_L)]</p>
<p style="text-align:center;font-style:bold;">(link:"Select this book")[(set: $book_found to true) (set: $book_val to $book_11_ti) (if: $system_used is 2)[(set: $book_call to $book_11_D)](else:)[(set: $book_call to $book_11_L)] (set: $book_type to $book_11_type)(go-to: "Pre-stacks")]</p>
<hr />
<p><em>(print: $book_12_ti)</em><br />
(print: $book_12_au)<br />
(print: $book_12_loc)<br /><br />
(if: $system_used is 2)[(print: $book_12_D)](else:)[(print: $book_12_L)]</p>
<p style="text-align:center;font-style:bold;">(link:"Select this book")[(set: $book_found to true) (set: $book_val to $book_12_ti) (if: $system_used is 2)[(set: $book_call to $book_12_D)](else:)[(set: $book_call to $book_12_L)] (set: $book_type to $book_12_type)(go-to: "Pre-stacks")]</p>
<hr />
]
]
(else:)[
(if: $search_val is 1)[
<p><em>(print: $book_13_ti)</em><br />
(print: $book_13_au)<br />
(print: $book_13_loc)<br /><br />
(if: $system_used is 2)[(print: $book_13_D)](else:)[(print: $book_13_L)]</p>
<p style="text-align:center;font-style:bold;">(link:"Select this book")[(set: $book_found to true) (set: $book_val to $book_13_ti) (if: $system_used is 2)[(set: $book_call to $book_13_D)](else:)[(set: $book_call to $book_13_L)] (set: $book_type to $book_13_type)(go-to: "Pre-stacks")]</p>
<hr />
<p><em>(print: $book_14_ti)</em><br />
(print: $book_14_au)<br />
(print: $book_14_loc)<br /><br />
(if: $system_used is 2)[(print: $book_14_D)](else:)[(print: $book_14_L)]</p>
<p style="text-align:center;font-style:bold;">(link:"Select this book")[(set: $book_found to true) (set: $book_val to $book_14_ti) (if: $system_used is 2)[(set: $book_call to $book_14_D)](else:)[(set: $book_call to $book_14_L)] (set: $book_type to $book_14_type)(go-to: "Pre-stacks")]</p>
<hr />
<p><em>(print: $book_15_ti)</em><br />
(print: $book_15_au)<br />
(print: $book_15_loc)<br /><br />
(if: $system_used is 2)[(print: $book_15_D)](else:)[(print: $book_15_L)]</p>
<p style="text-align:center;font-style:bold;">(link:"Select this book")[(set: $book_found to true) (set: $book_val to $book_15_ti) (if: $system_used is 2)[(set: $book_call to $book_15_D)](else:)[(set: $book_call to $book_15_L)] (set: $book_type to $book_15_type)(go-to: "Pre-stacks")]</p>
<hr />
]
(else-if: $search_val is 2)[
<p><em>(print: $book_16_ti)</em><br />
(print: $book_16_au)<br />
(print: $book_16_loc)<br /><br />
(if: $system_used is 2)[(print: $book_16_D)](else:)[(print: $book_16_L)]</p>
<p style="text-align:center;font-style:bold;">(link:"Select this book")[(set: $book_found to true) (set: $book_val to $book_16_ti) (if: $system_used is 2)[(set: $book_call to $book_16_D)](else:)[(set: $book_call to $book_16_L)] (set: $book_type to $book_16_type)(go-to: "Pre-stacks")]</p>
<hr />
<p><em>(print: $book_17_ti)</em><br />
(print: $book_17_au)<br />
(print: $book_17_loc)<br /><br />
(if: $system_used is 2)[(print: $book_17_D)](else:)[(print: $book_17_L)]</p>
<p style="text-align:center;font-style:bold;">(link:"Select this book")[(set: $book_found to true) (set: $book_val to $book_17_ti) (if: $system_used is 2)[(set: $book_call to $book_17_D)](else:)[(set: $book_call to $book_17_L)] (set: $book_type to $book_17_type)(go-to: "Pre-stacks")]</p>
<hr />
<p><em>(print: $book_18_ti)</em><br />
(print: $book_18_au)<br />
(print: $book_18_loc)<br /><br />
(if: $system_used is 2)[(print: $book_18_D)](else:)[(print: $book_18_L)]</p>
<p style="text-align:center;font-style:bold;">(link:"Select this book")[(set: $book_found to true) (set: $book_val to $book_18_ti) (if: $system_used is 2)[(set: $book_call to $book_18_D)](else:)[(set: $book_call to $book_18_L)] (set: $book_type to $book_18_type)(go-to: "Pre-stacks")]</p>
<hr />
]
(else-if: $search_val is 3)[
<p><em>(print: $book_19_ti)</em><br />
(print: $book_19_au)<br />
(print: $book_19_loc)<br /><br />
(if: $system_used is 2)[(print: $book_19_D)](else:)[(print: $book_19_L)]</p>
<p style="text-align:center;font-style:bold;">(link:"Select this book")[(set: $book_found to true) (set: $book_val to $book_19_ti) (if: $system_used is 2)[(set: $book_call to $book_19_D)](else:)[(set: $book_call to $book_19_L)] (set: $book_type to $book_19_type)(go-to: "Pre-stacks")]</p>
<hr />
<p><em>(print: $book_20_ti)</em><br />
(print: $book_20_au)<br />
(print: $book_20_loc)<br /><br />
(if: $system_used is 2)[(print: $book_20_D)](else:)[(print: $book_20_L)]</p>
<p style="text-align:center;font-style:bold;">(link:"Select this book")[(set: $book_found to true) (set: $book_val to $book_20_ti) (if: $system_used is 2)[(set: $book_call to $book_20_D)](else:)[(set: $book_call to $book_20_L)] (set: $book_type to $book_20_type)(go-to: "Pre-stacks")]</p>
<hr />
<p><em>(print: $book_21_ti)</em><br />
(print: $book_21_au)<br />
(print: $book_21_loc)<br /><br />
(if: $system_used is 2)[(print: $book_21_D)](else:)[(print: $book_21_L)]</p>
<p style="text-align:center;font-style:bold;">(link:"Select this book")[(set: $book_found to true) (set: $book_val to $book_21_ti) (if: $system_used is 2)[(set: $book_call to $book_21_D)](else:)[(set: $book_call to $book_21_L)] (set: $book_type to $book_21_type)(go-to: "Pre-stacks")]</p>
<hr />
]
(else:)[
<p><em>(print: $book_22_ti)</em><br />
(print: $book_22_au)<br />
(print: $book_22_loc)<br /><br />
(if: $system_used is 2)[(print: $book_22_D)](else:)[(print: $book_22_L)]</p>
<p style="text-align:center;font-style:bold;">(link:"Select this book")[(set: $book_found to true) (set: $book_val to $book_22_ti) (if: $system_used is 2)[(set: $book_call to $book_22_D)](else:)[(set: $book_call to $book_22_L)] (set: $book_type to $book_22_type)(go-to: "Pre-stacks")]</p>
<hr />
<p><em>(print: $book_23_ti)</em><br />
(print: $book_23_au)<br />
(print: $book_23_loc)<br /><br />
(if: $system_used is 2)[(print: $book_23_D)](else:)[(print: $book_23_L)]</p>
<p style="text-align:center;font-style:bold;">(link:"Select this book")[(set: $book_found to true) (set: $book_val to $book_23_ti) (if: $system_used is 2)[(set: $book_call to $book_23_D)](else:)[(set: $book_call to $book_23_L)] (set: $book_type to $book_23_type)(go-to: "Pre-stacks")]</p>
<hr />
<p><em>(print: $book_24_ti)</em><br />
(print: $book_24_au)<br />
(print: $book_24_loc)<br /><br />
(if: $system_used is 2)[(print: $book_24_D)](else:)[(print: $book_24_L)]</p>
<p style="text-align:center;font-style:bold;">(link:"Select this book")[(set: $book_found to true) (set: $book_val to $book_24_ti) (if: $system_used is 2)[(set: $book_call to $book_24_D)](else:)[(set: $book_call to $book_24_L)] (set: $book_type to $book_24_type)(go-to: "Pre-stacks")]</p>
<hr />
]
]
<hr />
<p>To choose one of these titles, select it in the list above.</p>
<p>Otherwise, select an option below.</p>
<p>(link:"No, I'll pick a different search option.")[(undo:)]</p>
<p>(link:"Actually, I want to start my search over.")[(go-to: "Start Up the Catalog")]</p>
}{
<p>To start your game, select the classification system you'd like to learn about:</p>
<ul>
<li>(link: "Library of Congress")[(go-to:"Intro")] (typically used in universities and libraries with large collections)</li>
<li>(link: "Dewey Decimal")[(set: $system_used to 2)(go-to:"Intro")] (typically used in school and public libraries)</li>
</ul>
<p>If you're not sure, you can (link-reveal:"learn a bit more about each system before you decide.</p>")[
<ul>
<li><a href="https://www.loc.gov/catdir/cpso/lcc.html">Library of Congress Classification</a>, from the Library of Congress</li>
<li><a href="https://mcpl.info/childrens/how-use-dewey-decimal-system">How to Use the Dewey Decimal System</a>, from the Monroe County Public Library</li>
</ul>]
<p>Or you can (link: "let the game pick one for you.")[(go-to:"Intro")]</p>
}{
<!-- Edit this passage to customize the game -->
<!-- Villain Options -->
<!-- Note: you can edit the variables below to change the villain name, motive, trademark characteristics, and weakness (for instance, to make a villain who is weak to a specific type of science in a science-focused adaptation) -->
(set: $villain_name to "the Modernist")
(set: $villain_motive to "destroying all forms of traditional poetry")
(set: $villain_tell to "mocking laughter and free verse declamations")
(set: $villain_weakness to "traditional poetry")
(set: $villain_weakness_long to "traditional poetry. Ballads, cinquains, sonnets. Anything with a rhyme scheme and a meter is 100% her kryptonite")
<!-- Available keywords, subjects, and authors -->
<!-- Note: For simplicity, keywords and subjects return identical results; make sure you make kw_1 correspond to su_1, and so on. -->
(set: $kw_1 to "modern poetry")
(set: $kw_2 to "poetry")
(set: $kw_3 to "cat pictures")
(set: $kw_4 to "traditional poetry")
(set: $su_1 to "poetry -- modern")
(set: $su_2 to "poetry")
(set: $su_3 to "cats -- pictorial works")
(set: $su_4 to "poetry -- 19th century")
(set: $au_1 to "Stein, Gertrude")
(set: $au_2 to "Shire, Warsan")
(set: $au_3 to "Chandoha, Walter")
(set: $au_4 to "Cowper, William")
<!-- Search hints -->
<!-- Note: these hints are shown to the player when they select specific subjects or keywords. You can use them to help the player think about whether they are searching wisely. -->
(set: $kw_su_hint_1 to "Modern poetry—it's the most obvious thing to type in when you want to find... traditional poetry? Hmm.")
(set: $kw_su_hint_2 to "Poetry—that's what you're looking for and that's what you'll find.")
(set: $kw_su_hint_3 to "Cat pictures—everyone loves cat pictures.")
(set: $kw_su_hint_4 to "Traditional poetry—it's the most obvious thing to type in when you want to find traditional poetry.")
(set: $au_hint_1 to "Gertrude Stein. The famous modernist poet! Wait, weren't you supposed to be finding traditional poetry? Hmm.")
(set: $au_hint_2 to "Warsan Shire. A fantastic contemporary poet. But is her work the kind of traditional poetry that will irritate The Modernist? Hmm.")
(set: $au_hint_3 to "Walter Chandoha—famous photographer of cats and dogs. Everybody loves cats and dogs.")
(set: $au_hint_4 to "William Cowper—an 18th century poet known for his hymns, his translations of Homer, and for writing a 5000-line poem about sofas called //The Task// (seriously, look it up).")
<!-- Books in the Catalog -->
<!-- Note: for each book, update its record information with relevant metadata, create a LC call number and Dewey call number, and set book_type to one of the following values: (1 for correct book; 2 for incorrect book; 3 for comic relief book) -->
<!-- Books associated with keyword/subject 1 -->
(set: $book_1_ti to "Teaching my mother how to give birth")
(set: $book_1_au to "Shire, Warsan, 1988- author.")
(set: $book_1_loc to "New York: Random House; 2022")
(set: $book_1_D to "821.92 Shire 2022")
(set: $book_1_L to "PR6119.H518 B55 2022")
(set: $book_1_type to 2)
(set: $book_2_ti to "Bless the daughter raised by a voice in her head : poems")
(set: $book_2_au to "Shire, Warsan, 1988- author.")
(set: $book_2_loc to "New York: Random House; 2022")
(set: $book_2_D to "821.92 Shire 2022")
(set: $book_2_L to "PR6119.H518 B55 2022")
(set: $book_2_type to 2)
(set: $book_3_ti to "Tender Buttons")
(set: $book_3_au to "Stein, Gertrude, 1874-1946, author.")
(set: $book_3_loc to "Peterborough, Ontario, Canada: Broadview Press; 2018")
(set: $book_3_D to "828.5209 STEIN 2018")
(set: $book_3_L to "PS3537 .T323 T4 2018")
(set: $book_3_type to 2)
<!-- Books associated with keyword/subject 2 -->
(set: $book_4_ti to "Teaching my mother how to give birth")
(set: $book_4_au to "Shire, Warsan, 1988- author.")
(set: $book_4_loc to "New York: Random House; 2022")
(set: $book_4_D to "821.92 Shire 2022")
(set: $book_4_L to "PR6119.H518 B55 2022")
(set: $book_4_type to 2)
(set: $book_5_ti to "Tender Buttons")
(set: $book_5_au to "Stein, Gertrude, 1874-1946, author.")
(set: $book_5_loc to "Peterborough, Ontario, Canada: Broadview Press; 2018")
(set: $book_5_D to "828.5209 STEIN 2018")
(set: $book_5_L to "PS3537 .T323 T4 2018")
(set: $book_5_type to 2)
(set: $book_6_ti to "Selected poems")
(set: $book_6_au to "Cowper, William, 1731-1800, author.")
(set: $book_6_loc to "Manchester: Carcanet; 1984")
(set: $book_6_D to "821.6 C876Xr")
(set: $book_6_L to "PR3381 .R49 1984")
(set: $book_6_type to 1)
<!-- Books associated with keyword/subject 3 -->
(set: $book_7_ti to "Walter Chandoha, Cat Photographer")
(set: $book_7_au to "Chandoha, Walter, Author; La Spina, David, author; Hudak, Brittany, author.")
(set: $book_7_loc to "New York: Aperture; 2018")
(set: $book_7_D to "779.3297")
(set: $book_7_L to "TR729.C3 C48 2018")
(set: $book_7_type to 3)
(set: $book_8_ti to "Walter Chandoha's book of kittens and cats.")
(set: $book_8_au to "Chandoha, Walter, Author.")
(set: $book_8_loc to "New York: Bramhall House; 1963")
(set: $book_8_D to "636.8 CHA")
(set: $book_8_L to "SF446 .C48 1963")
(set: $book_8_type to 3)
(set: $book_9_ti to "How to photograph cats, dogs, and other animals.")
(set: $book_9_au to "Chandoha, Walter, Author.")
(set: $book_9_loc to "New York: Crown Publishers; 1973")
(set: $book_9_D to "778.932")
(set: $book_9_L to "TR727 .C47 1973")
(set: $book_9_type to 3)
<!-- Books associated with keyword/subject 4 -->
(set: $book_10_ti to "Selected poems")
(set: $book_10_au to "Cowper, William, 1731-1800, author.")
(set: $book_10_loc to "Manchester: Carcanet; 1984")
(set: $book_10_D to "821.6 C876Xr")
(set: $book_10_L to "PR3381 .R49 1984")
(set: $book_10_type to 1)
(set: $book_11_ti to "The cast-away; the text of the original manuscript and the first printing of Cowper's Latin translation.")
(set: $book_11_au to "Cowper, William, 1731-1800.")
(set: $book_11_loc to "Princeton, N.J.: Princeton University Library; 1963")
(set: $book_11_D to "821 C838ca")
(set: $book_11_L to "PR3382 .C3 1963")
(set: $book_11_type to 1)
(set: $book_12_ti to "The poet's cat; an anthology. With a front. engr. by Stephen Gooden.")
(set: $book_12_au to "Gooden, Mona, compiler.")
(set: $book_12_loc to "Freeport, N.Y.: Books for Libraries Press; 1969")
(set: $book_12_D to "808.8193 G649")
(set: $book_12_L to "PN 6110.C3 G6 1969")
(set: $book_12_type to 1)
<!-- Books associated with author 1 -->
(set: $book_13_ti to "Tender Buttons")
(set: $book_13_au to "Stein, Gertrude, 1874-1946, author.")
(set: $book_13_loc to "Peterborough, Ontario, Canada: Broadview Press; 2018")
(set: $book_13_D to "828.5209 STEIN 2018")
(set: $book_13_L to "PS3537 .T323 T4 2018")
(set: $book_13_type to 2)
(set: $book_14_ti to "Gertrude Stein on Picasso")
(set: $book_14_au to "Stein, Gertrude, 1874-1946, author.")
(set: $book_14_loc to "New York : Liveright; 1970")
(set: $book_14_D to "759.6 P")
(set: $book_14_L to "ND553.P5 S76")
(set: $book_14_type to 2)
(set: $book_15_ti to "The Yale Gertrude Stein : selections")
(set: $book_15_au to "Stein, Gertrude, 1874-1946, author.")
(set: $book_15_loc to "New Haven: Yale University Press; 1980")
(set: $book_15_D to "818 S")
(set: $book_15_L to "PS3537.T323 A6 1980")
(set: $book_15_type to 2)
<!-- Books associated with author 2 -->
(set: $book_16_ti to "Teaching my mother how to give birth")
(set: $book_16_au to "Shire, Warsan, 1988- author.")
(set: $book_16_loc to "New York: Random House; 2022")
(set: $book_16_D to "821.92 Shire 2022")
(set: $book_16_L to "PR6119.H518 B55 2022")
(set: $book_16_type to 2)
(set: $book_17_ti to "Bless the daughter raised by a voice in her head : poems")
(set: $book_17_au to "Shire, Warsan, 1988- author.")
(set: $book_17_loc to "New York: Random House; 2022")
(set: $book_17_D to "821.92 Shire 2022")
(set: $book_17_L to "PR6119.H518 B55 2022")
(set: $book_17_type to 2)
(set: $book_18_ti to "Halal if you hear me")
(set: $book_18_au to "Asghar, Fatimah, editor.; Elhillo, Safia, editor.")
(set: $book_18_loc to "Chicago, Illinois: Haymarket Books; 2019")
(set: $book_18_D to "811.608 HAL")
(set: $book_18_L to "PS591.M8 H35 2019")
(set: $book_18_type to 2)
<!-- Books associated with author 3 -->
(set: $book_19_ti to "Walter Chandoha, Cat Photographer")
(set: $book_19_au to "Chandoha, Walter, Author; La Spina, David, author; Hudak, Brittany, author.")
(set: $book_19_loc to "New York: Aperture; 2018")
(set: $book_19_D to "779.3297")
(set: $book_19_L to "TR729.C3 C48 2018")
(set: $book_19_type to 3)
(set: $book_20_ti to "Walter Chandoha's book of kittens and cats.")
(set: $book_20_au to "Chandoha, Walter, Author.")
(set: $book_20_loc to "New York: Bramhall House; 1963")
(set: $book_20_D to "636.8 CHA")
(set: $book_20_L to "SF446 .C48 1963")
(set: $book_20_type to 3)
(set: $book_21_ti to "How to photograph cats, dogs, and other animals.")
(set: $book_21_au to "Chandoha, Walter, Author.")
(set: $book_21_loc to "New York: Crown Publishers; 1973")
(set: $book_21_D to "778.932")
(set: $book_21_L to "TR727 .C47 1973")
(set: $book_21_type to 3)
<!-- Books associated with author 4 -->
(set: $book_22_ti to "Selected poems")
(set: $book_22_au to "Cowper, William, 1731-1800, author.")
(set: $book_22_loc to "Manchester: Carcanet; 1984")
(set: $book_22_D to "821.6 C876Xr")
(set: $book_22_L to "PR3381 .R49 1984")
(set: $book_22_type to 1)
(set: $book_23_ti to "The cast-away; the text of the original manuscript and the first printing of Cowper's Latin translation.")
(set: $book_23_au to "Cowper, William, 1731-1800.")
(set: $book_23_loc to "Princeton, N.J.: Princeton University Library; 1963")
(set: $book_23_D to "821 C838ca")
(set: $book_23_L to "PR3382 .C3 1963")
(set: $book_23_type to 1)
(set: $book_24_ti to "The poet's cat; an anthology. With a front. engr. by Stephen Gooden.")
(set: $book_24_au to "Gooden, Mona, compiler.")
(set: $book_24_loc to "Freeport, N.Y.: Books for Libraries Press; 1969")
(set: $book_24_D to "808.8193 G649")
(set: $book_24_L to "PN 6110.C3 G6 1969")
(set: $book_24_type to 1)
<!-- Endings -->
<!-- Note: these are the endings the player will receive for running out of time, finding the correct book, incorrect book, and (if included) comic relief book. Since the endings will change depending on the subjects and villain weakness, these need to be updated if you change either. -->
<!--note: The endings can be as long or as short as you like. To include multiple paragraphs, surround each with <p> and </p>. Don't include line breaks between paragraph tags or you will add an extra paragraph on screen. -->
<!--note: To include formatting, use the following HTML: <em>italics</em> and <strong>bold</strong>.-->
<!--note: To include dialogue in your endings, you will need to use a \ to 'escape' quotation marks. That is, write \"Clever dialogue.\" instead of "Clever dialogue." -->
<!--Out of time Ending -->
(set: $out_of_time to "<p>Unfortunately, with no book to defend against The Modernist, you're completely at her mercy. She pummels you into the ground while reciting Ezra Pound.</p><p>Defeated by poetry <em>and</em> fascism. Ouch!</p>")
<!-- Good Ending -->
(set: $good_end to "<p>The Modernist advances on you, screaming out lines from Robert Frost while she comes. Clearing your throat, you open your own book and counter with some of the most traditional poetry you could think of.</p><p>As you read, something curious happens: The Modernist starts to cower, her stride slowing and then stopping until she's on the floor in front of you, begging for mercy.</p><p>Looks like she'll be taking the path less traveled—all the way to campus security.</p>")
<!-- Bad Ending -->
(set: $bad_end to "<p>The Modernist advances on you, screaming out lines from Robert Frost while she comes. Clearing your throat, you open your own book and counter with...</p><p>Oh. Oh dear.</p><p>You realize too late you've picked a book of poetry that is exactly the sort of thing The Modernist likes. With no better option, you read some anyway, but all it does is make her stronger.</p><p>Soon, she's switched to Ezra Pound, and she follows his name by pounding you into the floor.</p><p>Defeated by poetry <em>and</em> fascism. Ouch!</p>")
<!-- Comic Ending -->
(set: $comic_end to "<p>The Modernist advances on you, screaming out lines from Robert Frost while she comes. Clearing your throat, you open your own book and show her some of the most adorable cat photos ever taken.</p><p>She stops with a gasp and snatches the book from your hand, plopping right down there in the aisle to look at fluffy chonker after fluffy chonker. Soon, she's completely absorbed, all her modern poetry fuelled angst replaced with peaceful smiles.</p><p>It's just like Ranganathan says: every book her reader; every reader her book.</p>")
}{
(set: $book_call_1st to $book_call's 1st)(set: $book_call_2nd to $book_call's 2nd)
<p>Satisfied you're on the right track, you grab a piece of scrap paper and a pencil and jot down the title and call number of the book you've selected:</p>
<p>(print: $book_val)...</p>
<p>and...</p>
<p>(print: $book_call)...</p>
<p>No sooner do you finish writing it down than a massive //boom// sounds from the library entrance, followed by the (print: $villain_tell) that WikiVillain says is a trademark of (print: $villain_name).</p>
<p>Oh no! You don't have much time.</p>
<p>You'd better [[head to the stacks->Head to the Stacks]] and find this book as quickly as you can.</p>
}{
(set: $villain_counter to it -1)(set: $current_shelves to "NE")
(if: $shelves_visited is false)[<p>You are in a maze of twisty little passages, all alike.</p>
<p>Actually, scratch that. Although the passages between the shelves are quite narrow, and a little twisty, you know from working in the library that they are //not// all alike. In fact, each set of shelves has its own sign on the end that clearly labels which call numbers can be found on it. You can use these to find the right set of shelves, and then check the call numbers on the spine of each book to find exactly the right book.</p>(set: $shelves_visited to true)]
(else:)[<p>You are in a maze of twisty little passages, //mostly// alike. Fortunately, you have your knowledge of (if: $system_used is 2)[the Dewey Decimal System](else:)[The Library of Congress classification system] to guide you!</p>]
<p>After another quick glance at your call number, <strong>(print: $book_call)</strong>, you turn your attention to the call number range on the end of each set of shelves.</p>
(if: $villain_counter is 0)[
<p>Suddenly, (print: $villain_name) leaps out and grabs your shoulder with a vicious grin.</p>
<p>The worst has come to pass. [[You've run out of time]], and now you're at the mercy of this wicked villain.</p>
]
(else:)[
<p>(if: $villain_counter < 3)[Footsteps stomp down one of the aisles of shelves nearby, accompanied by (print: $villain_tell). Oh no! It seems like (print: $villain_name) is right on your tail.](else-if: $villain_counter < 5)[In another part of the library, you can hear (print:$villain_tell). You'd better hurry, before (print: $villain_name) gets any closer.](else:)[You can't hear or see (print: $villain_name) anywhere yet, but you know it's only a matter of time.]</p>
<p>Which set of shelves do you want to examine more closely?</p>
<p>(link: "The shelves marked (if: $system_used is 2)[004 to 199](else:)[(A to BE)].")[(if: $system_used is 1)[(set: $range_start to "A")](else:)[(set: $range_start to "0")](go-to: "right_book_status")]</p>
<p>(link: "The shelves marked (if: $system_used is 2)[200 to 299](else:)[(BF to DA)].")[(if: $system_used is 1)[(set: $range_start to "B")](else:)[(set: $range_start to "2")](go-to:"right_book_status")]</p>
<p>(link: "The shelves marked (if: $system_used is 2)[300 to 399](else:)[(DA to F)].")[(if: $system_used is 1)[(set: $range_start to "D")](else:)[(set: $range_start to "3")](go-to:"right_book_status")]</p>
<p>Actually, I want to [[check another section of the stacks->Head into the Shelves]].</p>
]
}{
(set: $villain_counter to it -1)(set: $current_shelves to "NW")
(if: $shelves_visited is false)[<p>You are in a maze of twisty little passages, all alike.</p>
<p>Actually, scratch that. Although the passages between the shelves are quite narrow, and a little twisty, you know from working in the library that they are //not// all alike. In fact, each set of shelves has its own sign on the end that clearly labels which call numbers can be found on it. You can use these to find the right set of shelves, and then check the call numbers on the spine of each book to find exactly the right book.</p>(set: $shelves_visited to true)]
(else:)[<p>You are in a maze of twisty little passages, //mostly// alike. Fortunately, you have your knowledge of (if: $system_used is 2)[the Dewey Decimal System](else:)[The Library of Congress classification system] to guide you!</p>]
<p>After another quick glance at your call number, <strong>(print: $book_call)</strong>, you turn your attention to the call number range on the end of each set of shelves.</p>
(if: $villain_counter is 0)[
<p>Suddenly, (print: $villain_name) leaps out and grabs your shoulder with a vicious grin.</p>
<p>The worst has come to pass. [[You've run out of time]], and now you're at the mercy of this wicked villain.</p>
]
(else:)[
<p>(if: $villain_counter < 3)[Footsteps stomp down one of the aisles of shelves nearby, accompanied by (print: $villain_tell). Oh no! It seems like (print: $villain_name) is right on your tail.](else-if: $villain_counter < 5)[In another part of the library, you can hear (print:$villain_tell). You'd better hurry, before (print: $villain_name) gets any closer.](else:)[You can't hear or see (print: $villain_name) anywhere yet, but you know it's only a matter of time.]</p>
<p>Which set of shelves do you want to examine more closely?</p>
<p>[[Go to the shelves->nw1]] marked (if: $system_used is 2)[400 to 450](else:)[(G to H)].</p>
<p>[[Go to the shelves->nw2]] marked (if: $system_used is 2)[450 to 499](else:)[(JA to JQ)].</p>
<p>[[Go to the shelves->nw3]] marked (if: $system_used is 2)[500 to 699](else:)[(JR to L)].</p>
<p>Actually, I want to [[check another section of the stacks->Head into the Shelves]].</p>
]
}{
(set: $villain_counter to it -1)(set: $current_shelves to "SE")
(if: $shelves_visited is false)[<p>You are in a maze of twisty little passages, all alike.</p>
<p>Actually, scratch that. Although the passages between the shelves are quite narrow, and a little twisty, you know from working in the library that they are //not// all alike. In fact, each set of shelves has its own sign on the end that clearly labels which call numbers can be found on it. You can use these to find the right set of shelves, and then check the call numbers on the spine of each book to find exactly the right book.</p>(set: $shelves_visited to true)]
(else:)[<p>You are in a maze of twisty little passages, //mostly// alike. Fortunately, you have your knowledge of (if: $system_used is 2)[the Dewey Decimal System](else:)[The Library of Congress classification system] to guide you!</p>]
<p>After another quick glance at your call number, <strong>(print: $book_call)</strong>, you turn your attention to the call number range on the end of each set of shelves.</p>
(if: $villain_counter is 0)[
<p>Suddenly, (print: $villain_name) leaps out and grabs your shoulder with a vicious grin.</p>
<p>The worst has come to pass. [[You've run out of time]], and now you're at the mercy of this wicked villain.</p>
]
(else:)[
<p>(if: $villain_counter < 3)[Footsteps stomp down one of the aisles of shelves nearby, accompanied by (print: $villain_tell). Oh no! It seems like (print: $villain_name) is right on your tail.](else-if: $villain_counter < 5)[In another part of the library, you can hear (print:$villain_tell). You'd better hurry, before (print: $villain_name) gets any closer.](else:)[You can't hear or see (print: $villain_name) anywhere yet, but you know it's only a matter of time.]</p>
<p>Which set of shelves do you want to examine more closely?</p>
<p>(link: "The shelves marked (if: $system_used is 2)[600 to 659](else:)[(M to MU)].")[(if: $system_used is 1)[(set: $range_start to "M")](else:)[(set: $range_start to "600")](go-to:"right_book_status")]</p>
<p>(link: "The shelves marked (if: $system_used is 2)[660 to 709](else:)[(MV to N)].")[(if: $system_used is 1)[(set: $range_start to "MV")](else:)[(set: $range_start to "0")](go-to:"right_book_status")]</p>
<p>(link: "The shelves marked (if: $system_used is 2)[710 to 799](else:)[(P to PZ)].")[(if: $system_used is 1)[(set: $range_start to "P")](else:)[(set: $range_start to "710")](go-to:"right_book_status")]</p>
<p>Actually, I want to [[check another section of the stacks->Head into the Shelves]].</p>
]
}{
(set: $villain_counter to it -1)(set: $current_shelves to "SW")
(if: $shelves_visited is false)[<p>You are in a maze of twisty little passages, all alike.</p>
<p>Actually, scratch that. Although the passages between the shelves are quite narrow, and a little twisty, you know from working in the library that they are //not// all alike. In fact, each set of shelves has its own sign on the end that clearly labels which call numbers can be found on it. You can use these to find the right set of shelves, and then check the call numbers on the spine of each book to find exactly the right book.</p>(set: $shelves_visited to true)]
(else:)[<p>You are in a maze of twisty little passages, //mostly// alike. Fortunately, you have your knowledge of (if: $system_used is 2)[the Dewey Decimal System](else:)[The Library of Congress classification system] to guide you!</p>]
<p>After another quick glance at your call number, <strong>(print: $book_call)</strong>, you turn your attention to the call number range on the end of each set of shelves.</p>
(if: $villain_counter is 0)[
<p>Suddenly, (print: $villain_name) leaps out and grabs your shoulder with a vicious grin.</p>
<p>The worst has come to pass. [[You've run out of time]], and now you're at the mercy of this wicked villain.</p>
]
(else:)[
<p>(if: $villain_counter < 3)[Footsteps stomp down one of the aisles of shelves nearby, accompanied by (print: $villain_tell). Oh no! It seems like (print: $villain_name) is right on your tail.](else-if: $villain_counter < 5)[In another part of the library, you can hear (print:$villain_tell). You'd better hurry, before (print: $villain_name) gets any closer.](else:)[You can't hear or see (print: $villain_name) anywhere yet, but you know it's only a matter of time.]</p>
<p>Which set of shelves do you want to examine more closely?</p>
<p>(link: "The shelves marked (if: $system_used is 2)[800 to 899](else:)[(Q to S)].")[(if: $system_used is 1)[(set: $range_start to "Q")](else:)[(set: $range_start to "8")](go-to:"right_book_status")]</p>
<p>(link: "The shelves marked (if: $system_used is 2)[900 to 949](else:)[(T to U)].")[(if: $system_used is 1)[(set: $range_start to "T")](else:)[(set: $range_start to "900")](go-to:"right_book_status")]</p>
<p>(link: "The shelves marked (if: $system_used is 2)[950 to 999](else:)[(V to Z)].")[(if: $system_used is 1)[(set: $range_start to "V")](else:)[(set: $range_start to "950")](go-to:"right_book_status")]</p>
<p>Actually, I want to [[check another section of the stacks->Head into the Shelves]].</p>
]
}{
(print: $out_of_time)
<p>[[The End->Bad End]]</p>
}{
(print: $bad_end)
<p>[[The End->Bad End]]</p>
}{
(print: $good_end)
<p>[[The End->Good End]]</p>
}{
(print: $comic_end)
<p>[[The End->Good End]]</p>
}{
<p>You scan along the spines of the book as you walk down the shelves, checking the call numbers on the side of each against the one written on your card.</p>
(if: $right_shelf is true)[<p>You're about ready to give up when at last, you see it! The book right in front of you has the call number you need: (print: $book_call).</p>
<p>You pull it off the shelf and check the title. Yes! It's (print: $book_val). Just the one you wanted!</p>
<p>As you breathe a sigh of relief, though, you realize someone is standing right at the end of the row of shelves, glaring right at you. It's (print: $villain_name). But you're not afraid. Why should you be? You have this villain's weakness right here—(if: $book_type is 1)[you're certain of it](else:)[uh...you hope].</p>
<p>Before (print: $villain_name) can react, you hold the book between you. [[It's time to end this!]]</p>]
(else:)[<p>As you reach the end of the set of shelves, you sigh. (print: $book_call) is not in this row at all. You'll need to try somewhere else(if: $villain_counter < 3)[—and fast].</p>
<p>(link:"Check another row of shelves in this part of the library.")[(if: $current_shelves is "NE")[(go-to:"The North-East Stacks")](else-if: $current_shelves is "NW")[(go-to:"The North-West Stacks")](else-if: $current_shelves is "SE")[(go-to:"The South-East Stacks")](else:)[(go-to:"The South-West Stacks")]]</p>
<p>[[Check a row of shelves in another part of the library.->Head into the Shelves]]</p>
]
}{
<!-- checks the first (and, if needed, second or subsequent) character of the book's call number to see if it's on the range of shelving selected by the player -->
(if: $system_used is 1)[
<!-- LC call numbers -->
(if: $range_start is "A")[
(if: $book_call_1st is "A")[(set: $right_shelf to true)]
(else-if: $book_call_1st is "B")[
(if: $book_call_2nd is "A" or $book_call_2nd is "B" or $book_call_2nd is "C" or $book_call_2nd is "D" or $book_call_2nd is "E")[(set: $right_shelf to true]
]
(else:)[(set: $right_shelf to false)]
]
(else-if: $range_start is "B")[
(if: $book_call_1st is "B")[
(if: $book_call_2nd is not "A" and $book_call_2nd is not "B" and $book_call_2nd is not "C" and $book_call_2nd is not "D" and $book_call_2nd is not "E")[(set: $right_shelf to true)]
]
(else-if: $book_call_1st is "D" and $book_call_2nd is "A")[(set: $right_shelf to true]
(else:)[(set: $right_shelf to false)]
]
(else-if: $range_start is "D")[
(if: $book_call_1st is "D" and $book_call_2nd is not "A")[(set: $right_shelf to true)]
(else-if: $book_call_1st is "E" or $book_call_1st is "F")[(set: $right_shelf to true]
(else:)[(set: $right_shelf to false)]
]
(else-if: $range_start is "G")[
(if: $book_call_1st is "G" or $book_call_1st is "H")[(set: $right_shelf to true)]
(else:)[(set: $right_shelf to false)]
]
(else-if: $range_start is "JA")[
(if: $book_call_1st is "J" and $book_call_2nd is not "R" and $book_call_2nd is not "S" and $book_call_2nd is not "T" and $book_call_2nd is not "U" and $book_call_2nd is not "V" and $book_call_2nd is not "W" and $book_call_2nd is not "X" and $book_call_2nd is not "Z")[(set: $right_shelf to true)]
(else:)[(set: $right_shelf to false)]
]
(else-if: $range_start is "JR")[
(if: $book_call_1st is "J")[
(if: $book_call_2nd is "R" or $book_call_2nd is "S" or $book_call_2nd is "T" or $book_call_2nd is "U" or $book_call_2nd is "V" or $book_call_2nd is "W" or $book_call_2nd is "X" or $book_call_2nd is "Z")[(set: $right_shelf to true)]
]
(else-if: $book_call_1st is "K" or $book_call_1st is "L")[(set: $right_shelf to true]
(else:)[(set: $right_shelf to false)]
]
(else-if: $range_start is "M")[
(if: $book_call_1st is "M" and $book_call_2nd is not "V" and $book_call_2nd is not "W" and $book_call_2nd is not "X" and $book_call_2nd is not "Y" and $book_call_2nd is not "Z")[(set: $right_shelf to true)]
(else:)[(set: $right_shelf to false)]
]
(else-if: $range_start is "MV")[
(if: $book_call_1st is "M")[
(if: $book_call_2nd is "V" or $book_call_2nd is "W" or $book_call_2nd is "X" or $book_call_2nd is "Y" or $book_call_2nd is "Z")[(set: $right_shelf to true)]
]
(else-if: $book_call_1st is "N")[(set: $right_shelf to true)]
(else:)[(set: $right_shelf to false)]
]
(else-if: $range_start is "P")[
(if: $book_call_1st is "P")[(set: $right_shelf to true)]
(else:)[(set: $right_shelf to false)]
]
(else-if: $range_start is "Q")[
(if: $book_call_1st is "Q" or $book_call_1st is "R" or $book_call_1st is "S")[(set: $right_shelf to true)]
(else:)[(set: $right_shelf to false)]
]
(else-if: $range_start is "T")[
(if: $book_call_1st is "T" or $book_call_1st is "U")[(set: $right_shelf to true)]
(else:)[(set: $right_shelf to false)]
]
(else:)[
(if: $book_call_1st is "V" or $book_call_1st is "Z")[(set: $right_shelf to true)]
(else:)[(set: $right_shelf to false)]
]
]
(else:)[
<!-- DD call numbers -->
(if: $range_start is "0")[
(if: $book_call_1st is "0" or $book_call_1st is "1")[(set: $right_shelf to true)]
(else:)[(set: $right_shelf to false)]
]
(else-if: $range_start is "2")[
(if: $book_call_1st is "2")[(set: $right_shelf to true)]
(else:)[(set: $right_shelf to false)]
]
(else-if: $range_start is "3")[
(if: $book_call_1st is "3")[(set: $right_shelf to true)]
(else:)[(set: $right_shelf to false)]
]
(else-if: $range_start is "400")[
(if: $book_call_1st is "4")[
(if: $book_call_2nd is "0" or $book_call_2nd is "1" or $book_call_2nd is "2" or $book_call_2nd is "3" or $book_call_2nd is "4")[(set: $right_shelf to true)]
]
(else:)[(set: $right_shelf to false)]
]
(else-if: $range_start is "450")[
(if: $book_call_1st is "4")[
(if: $book_call_2nd is "5" or $book_call_2nd is "6" or $book_call_2nd is "7" or $book_call_2nd is "8" or $book_call_2nd is "9")[(set: $right_shelf to true)]
]
(else:)[(set: $right_shelf to false)]
]
(else-if: $range_start is "5")[
(if: $book_call_1st is "5" or $book_call_1st is "6")[(set: $right_shelf to true)]
(else:)[(set: $right_shelf to false)]
]
(else-if: $range_start is "600")[
(if: $book_call_1st is "6" and $book_call_2nd is not "6" and $book_call_2nd is not "7" and $book_call_2nd is not "8" and $book_call_2nd is not "9")[(set: $right_shelf to true)]
(else-if: $book_call_1st is "7" and $book_call_2nd is "0")[(set: $right_shelf to true)]
(else:)[(set: $right_shelf to false)]
]
(else-if: $range_start is "710")[
(if: $book_call_1st is "7" and $book_call_2nd is not "0")[(set: $right_shelf to true)]
(else:)[(set: $right_shelf to false)]
]
(else-if: $range_start is "8")[
(if: $book_call_1st is "8")[(set: $right_shelf to true)]
(else:)[(set: $right_shelf to false)]
]
(else-if: $range_start is "900")[
(if: $book_call_1st is "9")[
if(: $book_call_2nd is "0" or $book_call_2nd is "1" or $book_call_2nd is "2" or $book_call_2nd is "3" or $book_call_2nd is "4")[(set: $right_shelf to true)]
]
(else:)[(set: $right_shelf to false)]
]
(else:)[
(if: $book_call_1st is "9" and $book_call_2nd is not "0" and $book_call_2nd is not "1" and $book_call_2nd is not "2" and $book_call_2nd is not "3" and $book_call_2nd is not "4")[(set: $right_shelf to true)]
(else:)[(set: $right_shelf to false)]
]
]
(go-to:"shelf_check")
}{
(if: $book_type is 1)[(go-to:"Right Book")]
(else-if: $book_type is 2)[(go-to:"Wrong Book")]
(else:)[(go-to:"Comedy Book")]
}{
<h2>Good(if: $book_type is 3)[(?)] Ending</h2>
<p>Congratulations, you found the right book (if: $book_type is 3)[...sort of...] and defeated (print: $villain_name)!</p>
<p>Would you like to (link:"play again")[(display:"Startup")(go-to:"Title")]?
}{
<h2>Bad Ending</h2>
<p>Alas! You weren't able to find the right book and were defeated by (print: $villain_name).</p>
<p>Would you like to (link:"play again")[(display:"Startup")(go-to:"Title")]?
}{
(if: $system_used is 1)[(set: $range_start to "G")]
(else:)[(set: $range_start to "400")]
(go-to:"right_book_status")
}
{
(if: $system_used is 1)[(set: $range_start to "JA")]
(else:)[($set: $range_start to "450")]
(go-to:"right_book_status")
}{
(if: $system_used is 1)[(set: $range_start to "JR")]
(else:)[(set: $range_start to "5")]
(go-to:"right_book_status")
}