"Sylladex" by Daniel Stelzer Release along with the source text, an interpreter, and a "StatCounter" website. The story headline is "An Interactive Frustration". Include Basic Screen Effects by Emily Short. [The goal of this piece is to implement the Hashmap Sylladex mechanic, from the webcomic Homestuck by Andrew Hussie. Objects are picked up by typing their name alone, and put into one of ten slots based on a hash of that name. Actions are then performed by typing a verb alone (or a verb with one other object). The noun is filled in by hashing the whole command and taking the item at that slot in the sylladex. It's a ridiculous annoyance (a fact which was pointed out repeatedly in the comic), and not feasible for a full game, but it was fun to implement as an exercise. The puzzle here is to pick up the chest, unlock it, then get everything (including the puppet) into your inventory.] Section 1 - Remove Standard Grammar (in place of Section SR4/10 - Grammar in Standard Rules by Graham Nelson) [Thanks ClimbingStars!] Understand "save" as saving the game. Understand "score" as requesting the score. Understand "restore" as restoring the game. Understand "restart" as restarting the game. Understand "quit" or "q" as quitting the game. Understand "verify" as verifying the story file. Understand "version" as requesting the story file version. Understand "notify off" as switching score notification off. Understand "nouns" or "pronouns" as requesting the pronoun meanings. Understand "notify" or "notify on" as switching score notification on. Understand "verbose" or "long" as preferring unabbreviated room descriptions. Understand "superbrief" or "short" as preferring abbreviated room descriptions. Understand "script off" or "transcript off" as switching the story transcript off. Understand "brief" or "normal" as preferring sometimes abbreviated room descriptions. Understand "script" or "script on" or "transcript" or "transcript on" as switching the story transcript on. Section 2 - Add New Grammar [This was generated by taking the grammar from the Standard Rules, then running it through a find-and-replace to remove all [something] (and [things] and variants) from the lines.] Understand "[something]" as taking. Understand "take off" as taking off. Understand "take inventory" as taking inventory. Understand the commands "carry" and "hold" as "take". Understand "get in/on" as entering. Understand "get out/off/down/up" as exiting. Understand "get in/into/on/onto" as entering. Understand "get off/down" as getting off. Understand "stand" or "stand up" as exiting. Understand "stand on" as entering. Understand "remove" as taking off. Understand "shed" as taking off. Understand the commands "doff" and "disrobe" as "shed". Understand "wear" as wearing. Understand the command "don" as "wear". Understand "put on" as wearing. Understand "put on" as wearing. Understand "put down" as dropping. Understand "drop" as dropping. Understand the commands "throw" and "discard" as "drop". Understand the commands "abandon" and "dump" and "release" and "jettison" and "reject" and "ditch" and "chuck" and "junk" and "eject" and "expel" and "banish" as "drop". [NEW] Understand "give up" and "drop away" and "drop out" and "drop off" and "cast aside" as dropping. [NEW] Understand "go [direction]" as going. [This one we aren't going to remove. Going is important.] Understand "go into/in/inside/through" as entering. Understand the commands "walk" and "run" as "go". Understand "inventory" or "sylladex" as taking inventory. Understand the commands "i" and "inv" as "inventory". Understand "look" as looking. Understand "look at" as examining. Understand "look inside/in/into/through" as searching. Understand "look under" as looking under. Understand the command "l" as "look". Understand "open" as opening. Understand the commands "unfurl" and "bare" and "burst" and "fissure" and "gap" and "split" and "unseal" as "open". Understand "open up" as opening. [NEW] The reveal any newly visible interior rule is not listed in any rulebook. [NEW] Understand "open [something] with/--" as unlocking it with. Understand the commands "unwrap", "uncover" as "open". Understand "close" as closing. Understand the commands "seal" and "furl" and "secure" as "close". [NEW] Understand "close up" as closing. Understand "close off" as switching off. Understand the commands "shut" and "cover" as "close". Understand "enter" as entering. Understand the command "cross" as "enter". Understand "sit on top of" as entering. Understand "sit on/in/inside" as entering. Understand "exit" as exiting. Understand the commands "leave" and "out" as "exit". Understand "examine" as examining. Understand the commands "x", "watch", "describe" and "check" as "examine". Understand the commands "peer" and "investigate" as "examine". Understand "examine closely/thoroughly" as examining. Understand "examine in/-- detail" as examining. [NEW] Understand "read" as examining. Understand "yes" as saying yes. Understand the command "y" as "yes". Understand "no" as saying no. Understand "sorry" as saying sorry. Understand "search" as searching. Understand "wave" as waving hands. Understand "wave" as waving. Understand "pull" as pulling. Understand the command "drag" as "pull". Understand "push" as pushing. Understand the commands "move", "shift", "clear" and "press" as "push". Understand "turn" as turning. Understand "turn on" or "turn on" as switching on. Understand "turn off" or "turn off" as switching off. Understand the commands "rotate", "twist", "unscrew" and "screw" as "turn". Understand "switch" or "switch on" or "switch on" as switching on. Understand "switch off" or "switch off" as switching off. Understand the command "toggle" as "switch". Understand "lock [something] with/--" as locking it with. Understand "unlock [something] with/--" as unlocking it with. Understand "attack" as attacking. Understand the commands "break", "smash", "hit", "fight", "torture", "wreck", "crack", "destroy", "murder", "kill", "punch" and "thump" as "attack". Understand "wait" as waiting. Understand the command "z" as "wait". Understand "eat" as eating. Understand "sleep" as sleeping. Understand the command "nap" as "sleep". Understand "climb" or "climb up/over" as climbing. Understand the command "scale" as "climb". Understand "buy" as buying. Understand the command "purchase" as "buy". Understand "squeeze" as squeezing. Understand the command "squash" as "squeeze". Understand "swing" or "swing on" as swinging. Understand "wake" or "wake up" as waking up. Understand the commands "awake" and "awaken" as "wake". Understand "kiss" as kissing. Understand the commands "embrace" and "hug" as "kiss". Understand "think" as thinking. Understand "smell" as smelling. Understand "smell" as smelling. Understand the command "sniff" as "smell". Understand "listen" as listening to. Understand "hear" as listening to. Understand "listen to" as listening to. Understand "taste" as tasting. Understand "touch" as touching. Understand the command "feel" as "touch". Understand "rub" as rubbing. Understand the commands "shine", "polish", "sweep", "clean", "dust", "wipe" and "scrub" as "rub". Understand "tie to" as tying it to. Understand the commands "attach" and "fasten" as "tie". Understand "burn" as burning. Understand the command "light" as "burn". Understand "drink" as drinking. Understand the commands "swallow" and "sip" as "drink". Understand "cut" as cutting. Understand the commands "slice", "prune" and "chop" as "cut". Understand "jump" as jumping. Understand the commands "skip" and "hop" as "jump". Section 3 - Sylladex Table of Sylladex Entries hash item 0 nothing 1 nothing 2 nothing 3 nothing 4 nothing 5 nothing 6 nothing 7 nothing 8 nothing 9 nothing To decide which number is the hash of (T - text): let H be zero; let T be T in lower case; repeat with N running from 1 to the number of characters in T: let C be character number N in T; if C is non-alphabetic: say "[green letters][C]"; next; otherwise if C is a vowel: say "[red letters][C in upper case]"; increase H by 1; otherwise: say "[blue letters][C in upper case]"; increase H by 2; let H be the remainder after dividing H by 10; say "[default letters] ([H])[line break]"; decide on H. To decide whether (C - text) is non-alphabetic: decide on whether or not C matches the regular expression "<\s\p>". To decide whether (C - text) is a vowel: decide on whether or not C matches the regular expression "". Rule for supplying a missing noun: let H be the hash of the player's command; let N be the item corresponding to a hash of H in the Table of Sylladex Entries; if N is nothing: say "Error: nothing in slot [H]!"; stop the action; say "Slot [H] - [the N]"; now the noun is N. Rule for supplying a missing second noun: let H be the hash of the player's command; let N be the item corresponding to a hash of H in the Table of Sylladex Entries; if N is nothing: say "Error: nothing in slot [H]!"; stop the action; now the second noun is N. First carry out taking inventory: repeat through the Table of Sylladex Entries: say "[hash entry]: [the item entry][line break]"; rule succeeds. Before taking something carried: silently try dropping the noun. After taking something: let H be the hash of the player's command; choose the row with hash of H in the Table of Sylladex Entries; let N be the item entry; now the item entry is the noun; if N is not nothing: say "[The N] [are] violently expelled from your sylladex as [the noun] [go] into slot [H]."; silently try dropping N; otherwise: say "[The noun] [go] into slot [H]." Section 3 - Objects and Synonyms Test Chamber is a room. "You are in a wide, mostly-empty room designed for testing the mechanics of your sylladex." Some apple juice is here. The juice is singular-named. The indefinite article of the juice is "some". A katana is here. Understand "ninja" or "sword" or "blade" as the katana. A chest is here. Understand "box" as the chest. The chest is closed and locked. In the chest is a puppet. Understand "plush" or "soft" or "felt" as the puppet. A metal key is here. Understand "shiny" as the key. The key unlocks the chest.