Constant Story "Buried In Shoes"; Constant Headline "^by Kazuki Mishima ^Enter the word ~about~ for instructions and background information. ^"; Constant NO_SCORE; Constant DIALECT_US; Release 4; Replace LanguageLM; Replace DrawStatusLine; Replace YesOrNo; Replace AfterGameOver; Replace EmblazeMenu; Include "Parser"; Include "VerbLib"; Include "DMenus.h"; !My modified version of "CCPL.h" that works with "DMenus.h" Include "CCPL.h"; [ LanguageLM n x1; Answer,Ask: "There is no reply."; ! Ask: see Answer Attack: "You achieve no reaction."; Blow: "Nothing happens."; Burn: "You can't."; Buy: "Nothing is on sale."; Climb: "I don't think much is to be achieved by that."; Close: switch (n) { 1: print_ret (ctheyreorthats) x1, " not something you can close."; 2: print_ret (ctheyreorthats) x1, " already closed."; 3: "You close ", (the) x1, "."; } CommandsOff: switch (n) { 1: "Command recording off."; #Ifdef TARGET_GLULX; 2: "Command recording already off."; #Endif; ! TARGET_ } CommandsOn: switch (n) { 1: "Command recording on."; #Ifdef TARGET_GLULX; 2: "Commands are currently replaying."; 3: "Command recording already on."; 4: "Command recording failed."; #Endif; ! TARGET_ } CommandsRead: switch (n) { 1: "Replaying commands."; #Ifdef TARGET_GLULX; 2: "Commands are already replaying."; 3: "Command replay failed. Command recording is on."; 4: "Command replay failed."; 5: "Command replay complete."; #Endif; ! TARGET_ } Consult: "You discover nothing of interest in ", (the) x1, "."; Cut: "Cutting ", (thatorthose) x1, " up would achieve little."; Dig: "Digging would achieve nothing here."; Disrobe: switch (n) { 1: "You're not wearing ", (thatorthose) x1, "."; 2: "You take off ", (the) x1, "."; } Drink: "There's nothing suitable to drink here."; Drop: switch (n) { 1: if (x1 has pluralname) print (The) x1, " are "; else print (The) x1, " is "; "already here."; 2: "You haven't got ", (thatorthose) x1, "."; 3: "(first taking ", (the) x1, " off)"; 4: "Dropped."; } Eat: switch (n) { 1: print_ret (ctheyreorthats) x1, " inedible."; 2: "You eat ", (the) x1, ". Not bad."; } EmptyT: switch (n) { 1: print_ret (The) x1, " can't contain things."; 2: print_ret (The) x1, " ", (isorare) x1, " closed."; 3: print_ret (The) x1, " ", (isorare) x1, " empty already."; 4: "That would scarcely empty anything."; } Enter: switch (n) { 1: print "But you're already "; if (x1 has supporter) print "on "; else print "in "; print_ret (the) x1, "."; 2: if (x1 has pluralname) print "They're"; else print "That's"; print " not something you can "; switch (verb_word) { 'stand': print "stand on."; 'sit': print "sit down on."; 'lie': print "lie down on."; default: print "enter."; } ""; 3: "You can't get into the closed ", (name) x1, "."; 4: "You can only get into something free-standing."; 5: print "You get "; if (x1 has supporter) print "onto "; else print "into "; print_ret (the) x1, "."; 6: print "(getting "; if (x1 has supporter) print "off "; else print "out of "; print (the) x1; ")"; 7: if (x1 has supporter) "(getting onto ", (the) x1, ")^"; if (x1 has container) "(getting into ", (the) x1, ")^"; "(entering ", (the) x1, ")^"; } Examine: switch (n) { 1: "Darkness, noun. An absence of light to see by."; 2: "You see nothing special about ", (the) x1, "."; 3: print (The) x1, " ", (isorare) x1, " currently switched "; if (x1 has on) print "on."; else print "off."; "]"; } Exit: switch (n) { 1: "But you aren't in anything at the moment."; 2: "You can't get out of the closed ", (name) x1, "."; 3: print "You get "; if (x1 has supporter) print "off "; else print "out of "; print_ret (the) x1, "."; 4: print "But you aren't "; if (x1 has supporter) print "on "; else print "in "; print_ret (the) x1, "."; } Fill: "But there's no water here to carry."; FullScore: switch (n) { 1: if (deadflag) print "The score was "; else print "The score is "; "made up as follows:^"; 2: "finding sundry items"; 3: "visiting various places"; 4: print "total (out of ", MAX_SCORE; ")"; } GetOff: "But you aren't on ", (the) x1, " at the moment."; Give: switch (n) { 1: "You aren't holding ", (the) x1, "."; 2: "You juggle ", (the) x1, " for a while, but don't achieve much."; 3: print (The) x1; if (x1 has pluralname) print " don't"; else print " doesn't"; " seem interested."; } Go: switch (n) { 1: print "You'll have to get "; if (x1 has supporter) print "off "; else print "out of "; print_ret (the) x1, " first."; 2: print_ret (string) CANTGO__TX; ! "You can't go that way." 3: "You are unable to climb ", (the) x1; 4: "You are unable to descend by ", (the) x1, "."; 5: "You can't, since ", (the) x1, " ", (isorare) x1, " in the way."; 6: print "You can't, since ", (the) x1; if (x1 has pluralname) print " lead nowhere."; else print " leads nowhere."; } Insert: switch (n) { 1: "You need to be holding ", (the) x1, " before you can put ", (itorthem) x1, " into something else."; 2: print_ret (Cthatorthose) x1, " can't contain things."; 3: print_ret (The) x1, " ", (isorare) x1, " closed."; 4: "You'll need to take ", (itorthem) x1, " off first."; 5: "You can't put something inside itself."; 6: "(first taking ", (itorthem) x1, " off)^"; 7: "There is no more room in ", (the) x1, "."; 8: "Done."; 9: "You put ", (the) x1, " into ", (the) second, "."; } Inv: switch (n) { 1: "You are carrying nothing."; 2: print "You are carrying"; 3: print ":^"; 4: print ".^"; } Jump: "You jump high, but fail to touch anything."; JumpOver,Tie: "You would achieve nothing by this."; Kiss: "Keep your mind on the story."; Listen: "You hear nothing unexpected."; ListMiscellany: switch (n) { 1: print " (providing light)"; 2: print " (which ", (isorare) x1, " closed)"; 3: print " (closed and providing light)"; 4: print " (which ", (isorare) x1, " empty)"; 5: print " (empty and providing light)"; 6: print " (which ", (isorare) x1, " closed and empty)"; 7: print " (closed, empty and providing light)"; 8: print " (providing light and being worn"; 9: print " (providing light"; 10: print " (being worn"; 11: print " (which ", (isorare) x1, " "; 12: print "open"; 13: print "open but empty"; 14: print "closed"; 15: print "closed and locked"; 16: print " and empty"; 17: print " (which ", (isorare) x1, " empty)"; 18: print " containing "; 19: print " (on "; 20: print ", on top of "; 21: print " (in "; 22: print ", inside "; } LMode1: " is now in its normal ~brief~ printing mode, which gives long descriptions of places never before visited and short descriptions otherwise."; LMode2: " is now in its ~verbose~ mode, which always gives long descriptions of locations (even if you've been there before)."; LMode3: " is now in its ~superbrief~ mode, which always gives short descriptions of locations (even if you haven't been there before)."; Lock: switch (n) { 1: if (x1 has pluralname) print "They don't "; else print "That doesn't "; "seem to be something you can lock."; 2: print_ret (ctheyreorthats) x1, " locked at the moment."; 3: "First you'll have to close ", (the) x1, "."; 4: if (x1 has pluralname) print "Those don't "; else print "That doesn't "; "seem to fit the lock."; 5: "You lock ", (the) x1, "."; } Look: switch (n) { 1: print " (on ", (the) x1, ")"; 2: print " (in ", (the) x1, ")"; 3: print " (as ", (object) x1, ")"; 4: print "^On ", (the) x1; WriteListFrom(child(x1), ENGLISH_BIT+RECURSE_BIT+PARTINV_BIT+TERSE_BIT+CONCEAL_BIT+ISARE_BIT); "."; 5,6: if (x1 ~= location) { if (x1 has supporter) print "^On "; else print "^In "; print (the) x1, " you"; } else print "^You"; print " can "; if (n == 5) print "also "; print "see "; WriteListFrom(child(x1), ENGLISH_BIT+RECURSE_BIT+PARTINV_BIT+TERSE_BIT+CONCEAL_BIT+WORKFLAG_BIT); if (x1 ~= location) "."; else " here."; 7: "You see nothing unexpected in that direction."; } LookUnder: switch (n) { 1: "But it's dark."; 2: "You find nothing of interest."; } Mild: "Who was it that told you that life is unfair? That's no excuse."; Miscellany: switch (n) { 1: "(considering the first sixteen objects only)^"; 2: "Nothing to do!"; 3: print " You have died. "; 4: print " You have won. "; 5: print "^Would you like to RESTART, RESTORE a saved story"; #Ifdef DEATH_MENTION_UNDO; print ", UNDO your last move"; #Endif; if (TASKS_PROVIDED == 0) print ", give the FULL score for that story"; if (deadflag == 2 && AMUSING_PROVIDED == 0) print ", see some suggestions for AMUSING things to do"; print " or QUIT? "; return true; 6: "Your interpreter does not provide ~undo~. Sorry!"; #Ifdef TARGET_ZCODE; 7: "~Undo~ failed. (Not all interpreters provide it.)"; #Ifnot; ! TARGET_GLULX 7: "You cannot ~undo~ any further."; #Endif; ! TARGET_ 8: "Please give one of the answers above."; 9: print "^The light abandons you.^"; <>; 10: "I beg your pardon?"; 11: "You can't ~undo~ what hasn't been done!"; 12: "Can't ~undo~ twice in succession. Sorry!"; 13: "Previous turn undone."; 14: "Sorry, that can't be corrected."; 15: "Think nothing of it."; 16: "~Oops~ can only correct a single word."; 17: "It is pitch dark, and you can't see a thing."; 18: print "yourself"; 19: "You're a good kid, I guess."; 20: "To repeat a command like ~frog, jump~, just say ~again~, not ~frog, again~."; 21: "You can hardly repeat that."; 22: "You can't begin with a comma."; 23: "You seem to want to talk to someone, but I can't see whom."; 24: "You can't talk to ", (the) x1, "."; 25: "To talk to someone, try ~someone, hello~ or some such."; 26: "(first taking ", (the) not_holding, ")"; 27: "I didn't understand that sentence."; 28: print "I only understood you as far as wanting to "; 29: "I didn't understand that number."; 30: "You can't see any such thing."; 31: "You seem to have said too little!"; 32: "You aren't holding that!"; 33: "You can't use multiple objects with that verb."; 34: "You can only use multiple objects once on a line."; 35: "I'm not sure what ~", (address) pronoun_word, "~ refers to."; 36: "You excepted something not included anyway!"; 37: "You can only do that to something animate."; #Ifdef DIALECT_US; 38: "That's not a verb I recognize."; #Ifnot; 38: "That's not a verb I recognise."; #Endif; 39: "That's not something you need to refer to in the course of this story."; 40: "You can't see ~", (address) pronoun_word, "~ (", (the) pronoun_obj, ") at the moment."; 41: "I didn't understand the way that finished."; 42: if (x1 == 0) print "None"; else print "Only ", (number) x1; print " of those "; if (x1 == 1) print "is"; else print "are"; " available."; 43: "Nothing to do!"; 44: "There are none at all available!"; 45: print "Who do you mean, "; 46: print "Which do you mean, "; 47: "Sorry, you can only have one item here. Which exactly?"; 48: print "Whom do you want"; if (actor ~= player) print " ", (the) actor; print " to "; PrintCommand(); print "?^"; 49: print "What do you want"; if (actor ~= player) print " ", (the) actor; print " to "; PrintCommand(); print "?^"; 50: print "Your score has just gone "; if (x1 > 0) print "up"; else { x1 = -x1; print "down"; } print " by ", (number) x1, " point"; if (x1 > 1) print "s"; "."; 51: "Since something dramatic has happened, your list of commands has been cut short."; 52: "^Type a number from 1 to ", x1, ", 0 to redisplay or press ENTER."; 53: "^Please press SPACE."; 54: "Comment recorded."; 55: "Comment NOT recorded."; 56: print ".^"; 57: print "?^"; } No: "Of course not."; Yes: "Of course."; NotifyOff: "Score notification off."; NotifyOn: "Score notification on."; Objects: switch (n) { 1: "Objects you have handled:^"; 2: "None."; 3: print " (worn)"; 4: print " (held)"; 5: print " (given away)"; 6: print " (in ", (name) x1, ")"; 7: print " (in ", (the) x1, ")"; 8: print " (inside ", (the) x1, ")"; 9: print " (on ", (the) x1, ")"; 10: print " (lost)"; } Open: switch (n) { 1: print_ret "", (ctheyreorthats) x1, " not something you can open."; 2: if (x1 has pluralname) print "They seem "; else print "It seems "; "to be locked."; 3: print_ret "", (ctheyreorthats) x1, " already open."; 4: print "You open ", (the) x1, ", revealing "; if (WriteListFrom(child(x1), ENGLISH_BIT+TERSE_BIT+CONCEAL_BIT) == 0) print "nothing"; "."; 5: "You open ", (the) x1, "."; } Order: print "", (The) x1; if (x1 has pluralname) print " have"; else print " has"; " better things to do."; Places: switch (n) { 1: print "You have visited: "; 2: print ".^"; } Pray: "Internally, you speak to God. You feel as though cradled in a vast, kind hand."; Prompt: print "^What will you do? "; Pronouns: switch (n) { 1: print "At the moment, "; 2: print "means "; 3: print "is unset"; 4: "no pronouns are known to the story."; 5: "."; } Pull,Push,Turn: switch (n) { 1: if (x1 has pluralname) print "Those are "; else print "It is "; "fixed in place."; 2: "You are unable to."; 3: "Nothing obvious happens."; 4: "That would be less than courteous."; } ! Push: see Pull PushDir: switch (n) { 1: "Is that the best you can think of?"; 2: "That's not a direction."; 3: "Not that way you can't."; } PutOn: switch (n) { 1: "You need to be holding ", (the) x1, " before you can put ", (itorthem) x1, " on top of something else."; 2: "You can't put something on top of itself."; 3: "Putting things on ", (the) x1, " would achieve nothing."; 4: "You lack the dexterity."; 5: "(first taking ", (itorthem) x1, " off)^"; 6: "There is no more room on ", (the) x1, "."; 7: "Done."; 8: "You put ", (the) x1, " on ", (the) second, "."; } Quit: switch (n) { 1: print "Yes or no? "; 2: print "Are you sure you want to quit? "; } Remove: switch (n) { 1: if (x1 has pluralname) print "They are"; else print "It is"; " unfortunately closed."; 2: if (x1 has pluralname) print "But they aren't"; else print "But it isn't"; " there now."; 3: "Removed."; } Restart: switch (n) { 1: print "Are you sure you want to restart? "; 2: "Failed."; } Restore: switch (n) { 1: "Restore failed."; 2: "Ok."; } Rub: "You achieve nothing by this."; Save: switch (n) { 1: "Save failed."; 2: "Ok."; } Score: switch (n) { 1: if (deadflag) print "In that story you scored "; else print "You have so far scored "; print score, " out of a possible ", MAX_SCORE, ", in ", turns, " turn"; if (turns ~= 1) print "s"; return; 2: "There is no score in this story."; } ScriptOff: switch (n) { 1: "Transcripting is already off."; 2: "^End of transcript."; 3: "Attempt to end transcript failed."; } ScriptOn: switch (n) { 1: "Transcripting is already on."; 2: "Start of a transcript of"; 3: "Attempt to begin transcript failed."; } Search: switch (n) { 1: "But it's dark."; 2: "There is nothing on ", (the) x1, "."; 3: print "On ", (the) x1; WriteListFrom(child(x1), ENGLISH_BIT+TERSE_BIT+CONCEAL_BIT+ISARE_BIT); "."; 4: "You find nothing of interest."; 5: "You can't see inside, since ", (the) x1, " ", (isorare) x1, " closed."; 6: print_ret (The) x1, " ", (isorare) x1, " empty."; 7: print "In ", (the) x1; WriteListFrom(child(x1), ENGLISH_BIT+TERSE_BIT+CONCEAL_BIT+ISARE_BIT); "."; } Set: "No, you can't set ", (thatorthose) x1, "."; SetTo: "No, you can't set ", (thatorthose) x1, " to anything."; Show: switch (n) { 1: "You aren't holding ", (the) x1, "."; 2: print_ret (The) x1, " ", (isorare) x1, " unimpressed."; } Sing: "You sing to hear the echoes. They dance about you."; Sleep: "You aren't tired at all."; Smell: "You smell nothing unexpected."; Sorry: "There's no need for that."; Squeeze: switch (n) { 1: "Keep your hands to yourself."; 2: "You achieve nothing by this."; } Strong: "Who was it that told you that life is unfair? That's no excuse."; Swim: "There's not enough water to swim in."; Swing: "There's nothing sensible to swing here."; SwitchOff: switch (n) { 1: print_ret "", (ctheyreorthats) x1, " not something you can switch."; 2: print_ret (ctheyreorthats) x1, " already off."; 3: "You switch ", (the) x1, " off."; } SwitchOn: switch (n) { 1: print_ret (ctheyreorthats) x1, " not something you can switch."; 2: print_ret "", (ctheyreorthats) x1, " already on."; 3: "You switch ", (the) x1, " on."; } Take: switch (n) { 1: "Taken."; 2: "You have yourself already."; 3: "I don't suppose ", (the) x1, " would care for that."; 4: print "You'd have to get "; if (x1 has supporter) print "off "; else print "out of "; print_ret (the) x1, " first."; 5: "You already have ", (thatorthose) x1, "."; 6: if (noun has pluralname) print "Those seem "; else print "That seems "; "to belong to ", (the) x1, "."; 7: if (noun has pluralname) print "Those seem "; else print "That seems "; "to be a part of ", (the) x1, "."; 8: print_ret (Cthatorthose) x1, " ", (isorare) x1, "n't available."; 9: print_ret (The) x1, " ", (isorare) x1, "n't open."; 10: if (x1 has pluralname) print "They're "; else print "That's "; "hardly portable."; 11: if (x1 has pluralname) print "They're "; else print "That's "; "fixed in place."; 12: "You're carrying too many things already."; 13: "(putting ", (the) x1, " into ", (the) SACK_OBJECT, " to make room)"; } Taste: "You taste nothing unexpected."; Tell: switch (n) { 1: "You find yourself a very good listener, but you have very few answers."; 2: "The response is silence."; } Think: "What a good idea."; ThrowAt: switch (n) { 1: "You get no reaction."; 2: "You lack the nerve when it comes to the crucial moment."; } ! Tie: see JumpOver. Touch: switch (n) { 1: "You receive no response."; 2: if (noun == u_obj) { <>; } "You feel nothing remarkable."; 3: "You have substance."; } ! Turn: see Pull. Unlock: switch (n) { 1: if (x1 has pluralname) print "They don't "; else print "That doesn't "; "seem to be something you can unlock."; 2: print_ret (ctheyreorthats) x1, " unlocked at the moment."; 3: if (x1 has pluralname) print "Those don't "; else print "That doesn't "; "seem to fit the lock."; 4: "You unlock ", (the) x1, "."; } VagueGo: "You'll have to say which compass direction to go in."; Verify: switch (n) { 1: "The story file has verified as intact."; 2: "The story file did not verify as intact, and may be corrupt."; } Wait: "Time passes."; Wake: "You can't."; WakeOther:"That seems unnecessary."; Wave: switch (n) { 1: "But you aren't holding ", (thatorthose) x1, "."; 2: "You look ridiculous waving ", (the) x1, "."; } WaveHands:"You wave, feeling foolish."; Wear: switch (n) { 1: "You can't wear ", (thatorthose) x1, "!"; 2: "You're not holding ", (thatorthose) x1, "!"; 3: "You're already wearing ", (thatorthose) x1, "!"; 4: "You put on ", (the) x1, "."; } ! Yes: see No. ]; ! Khelwood's DMenus EmblazeMenu function modified for replacement ! of the standard "Q = resume game" status text. [ EmblazeMenu mnu bar_height page pages infull tmp; if (infull) infull=2; EmblazeOption(mnu,bar_height,page,pages); ! Set printing style #IfDef TARGET_GLULX; glk_set_style(style_Subheader); #IfNot; ! TARGET_ZCODE font off; style reverse; tmp=2+infull; @set_cursor tmp 1; spaces screen_width; tmp++; @set_cursor tmp 1; spaces screen_width; #EndIf; ! TARGET_ PrintAtPos(NKEY__TX,1,1+infull); PrintAtPos(PKEY__TX,screen_width-13,1+infull); PrintAtPos(RKEY__TX,1,2+infull); if (top_menu==mnu) tmp=" Q = resume story"; else tmp=QKEY2__TX; PrintAtPos(tmp,screen_width-18,2+infull); ! In ZCode, mark the bottom of the menu. #IfNDef TARGET_GLULX; style roman; font off; @set_cursor bar_height 1; for (tmp=0:tmp>; } return false; ], out_to heavenlyDoor; Object -> heavenlyDoor "heavenly doorway", with name "heavenly" "door" "doorway" "pure" "light", description "You see not a doorway, but merely the suggestion of one etched in pure light.", before [; Open: <>; ], initial "Light spilling in suggests the presence of a heavenly doorway opening outward.", door_dir out_to, door_to Closet, has door open static light; Object Closet "Closet", with description "Your bedroom closet. It's neglected and musty. Strangely, your bedroom seems absent, as does the doorway that led you here.", initial "You sneeze.", before [; VagueGo, Exit: "You sense no exit."; ], has light; Object -> angel "person", with name "person" "angel", description "There is a person here, but beyond that you can determine little. This person seems friendly, you think, and beautiful - but you don't know why this person is beautiful, and apart from that this person is completely unknown to you.", life [; Kiss: "The person merely smiles softly and indicates the shoes."; default: "The person merely indicates the shoes."; ], before [; Smell: "Like Grandmother."; Touch: <>; ], has animate female static; Object -> angelmale "person", with description "There is a person here, but beyond that you can determine little. This person seems friendly, you think, and beautiful - but you don't know why this person is beautiful, and apart from that this person is completely unknown to you.", life [; Kiss: "The person merely smiles softly and indicates the shoes."; default: "The person merely indicates the shoes."; ], before [; Smell: "Like Grandmother."; Touch: <>; ], has animate male scenery; Object -> closetshoes "shoes" with name 'shoe' 'shoes', description "There is a plethora of shoes here, and none of them fit anymore. Those in good condition can be used again, but the other ones... The other ones will slowly deteriorate in some landfill. Why is cleaning clutter always such a depressing activity?", before [; Smell: "The many shoes in the room emit a powerful odor of rubber which is somehow frightening and tragic."; Taste: "They taste of dirty, well-used rubber."; Enter, Take, Search, LookUnder, Pull, Push, PushDir, Touch, Rub: print "That person smiles at you, saying ~We can be as one, you and I.~ "; style underline; print "Is this an angel?"; style roman; print " you wonder.^^This presence of so many shoes is unsettling, and at first you can't remember why. Then you remember, and you find yourself falling back....^"; WaitForKey(); @erase_window 0; print "^^^Washington is a strange city, full of metal detectors and perfectly aligned monuments, but this place is the strangest of all. It's incredibly... "; style underline; print "oppressive"; style roman; print ".^"; playerTo(ShoeRoom); return true; ], has pluralname supporter static; Object ShoeRoom "Shoe Room" with description "Shoes are everywhere, great mountains of shoes, dirty, old, broken shoes. They are stolen shoes. They are the shoes of the dead. The shoes of the murdered. A concrete slab also looms here. The setting sun filters in from the west, where the tour bus awaits.", before [; Sleep: if (museumshoes has general) { move guide to self; print "You fall asleep easily. A sharp cry of ~Hey!~ awakes you. A museum guide has entered the room."; if (parent (player) == slab) { move player to location; print " Infuriated, he yanks you off the slab."; } new_line; return true; } "The alarm makes sleep impossible."; Smell: if (noun == nothing) { <>; } return false; VagueGo, Exit: if (noun == nothing) { if (player in slab) { <>; } <>; } return false; ], w_to [; StopDaemon(alarm); remove alarm; print "You find your way through capacious halls of brick and concrete to the entrance, where you allow yourself to be herded onto the bus.^"; return TourBus; ], has light; Object -> museumshoes "shoes" with name 'shoe' 'shoes' 'exhibit', description "They've taken more wear than they were meant to withstand. They're made of deteriorating leather, and though they're old, they're not old enough.", before [; Examine: return false; Smell: "A fowl, musty, tragic odor assaults your nostrils. It momentarily overpowers you."; Touch: if (self has general) { give self ~general; StartDaemon(alarm); StartTimer(guide,1); print "You lean forward to touch the shoes, hoping that somehow doing this can connect you to the past. As you reach out, a harsh buzzing sound fills the room. "; } "They're soft."; Take: if (self has general) { give self ~general; move self to player; StartDaemon(alarm); StartTimer(guide,1); print "You lean forward to pick up a shoe, hoping that somehow doing this can connect you to the past. As you reach out, a harsh buzzing sound fills the room. "; } "The shoe is soft in your hand. There is something repugnant in the shoe or its history and you drop it as soon as you have picked it up."; Taste: if (self has general) { give ShoeRoom ~general; StartDaemon(alarm); StartTimer(guide,1); print "You lean forward to touch the shoes, hoping that somehow doing this can connect you to the past. As you reach out, a harsh buzzing sound fills the room. "; } "You taste dirt, leather, and fear."; Push, PushDir, Pull: if (self has general) { give ShoeRoom ~general; move alarm to ShoeRoom; StartDaemon(alarm); StartTimer(guide,1); print "You lean forward to touch the shoes, hoping that somehow doing this can connect you to the past. As you reach out, a harsh buzzing sound fills the room. "; } return false; Search, LookUnder: if (self has general) { give self ~general; move alarm to ShoeRoom; StartDaemon(alarm); StartTimer(guide,1); } "You begin moving shoes about, but more seem to spring up in their place. You find only hordes of shoes, springing forth in frightening abundance. A harsh buzzing sound fills the room."; ], has pluralname scenery supporter exhibit general; Object -> sunlight "sunlight" with name 'Sun' 'Sol' 'sunlight' 'light' 'sky', description "The Sun's light is weak, as if wearied by the ages.", before [; Take, Touch, Rub: "You can"; ], has scenery light; Object -> slab "concrete slab" with name 'concrete' 'slab' 'table' 'exhibit', description "The concrete slab is grooved and has a hole near one end. You can almost see the blood which once ran across this table as the corpses of the murdered were desecrated.", before [; Take: "It's certainly too heavy."; Smell: "Does you really smell blood?"; Touch: if (self has general && museumshoes has general) { give self ~general; print "You trigger no alarms. "; } "The slab is rough and cold."; Taste: if (self has general && museumshoes has general) { give self ~general; print "You trigger no alarms. "; } "You taste cold concrete... and blood?"; Push, PushDir, Pull: <>; LookUnder: "There's nothing on the floor beneath the slab."; ], after [; Enter: print "You "; if (self has general && museumshoes has general) { give self ~general; print "trigger no alarms as you "; } "lie upon the concrete slab. You are vulnerable."; ], has scenery supporter enterable exhibit general; Object -> -> slabfeatures "features" with name 'groove' 'grooves' 'hole' 'features', description "The grooves and the hole of the slab look as unforgivingly hard as the rest of it.", before [; Smell: <>; Touch: "The grooves and hole of the slab have well-defined edges."; Taste: <>; Push, PushDir, Pull: "The features of the slab are fixed firmly in place."; ], has scenery pluralname; Object alarm "alarm" with name 'alarm', before [; Listen: "The sound hurts deeply."; default: "You can't locate the alarm, but only hear its piercing accusations."; ], react_before [; Listen: if (noun == nothing) { "The sound of the alarm hurts deeply."; } ], daemon [; "^The alarm continues to sound."; ], has scenery; Object guide "guide" with name 'museum' 'guide' 'guard', description "The guide seems annoyed and brusque.", life [; Attack, Kiss: "The guide pushes you back, easily subduing you. He seems even more annoyed than before."; Kiss: "You can't even imagine what would happen."; WakeOther: "The guide isn't asleep."; ThrowAt: print "The guide dodges and shouts ~Hey!~ again.^"; <>; Give, Show, Ask, Tell, Answer, Order: "The guide shows no interest, but instead glares at you accusingly. You have irritated him beyond conversation."; ], before [; Take: <>; Touch, Taste: <>; Smell: "He's wearing a subtle fragrance that clashes with his present demeanor."; ], react_before [; Sleep: print "The guide grabs you by the arm and returns you to your classmates.^"; PlayerTo(TourBus); return true; Jump: print "The guide eyes you suspiciously.^"; return false; Push, PushDir, Pull, Touch, Taste, Rub, Enter, Search: if (noun has exhibit) { "~Don't touch the exhibits!~ the guide shouts, holding you back."; } return false; ], react_after [; Take: <>; ], time_left 1, time_out [; if (player in ShoeRoom) { move self to location; StopDaemon(alarm); remove alarm; print "^A museum guide enters the room"; if (museumshoes in player) { print " and tears the shoe from you abruptly"; move museumshoes to ShoeRoom; } print ", shouting ~Hey! Don't touch the exhibits!~ He looks intensely mistrustful. After somehow disabling the alarm, he turns back to you. ~The museum's closing now,~ he warns. ~You and your friends will have to leave.~"; if (parent (player) == slab) { move player to location; print " Infuriated, he yanks you off the slab."; } new_line; } return true; ], has animate male; Object TourBus "Tour Bus" with description "The soft seats and air conditioning calm you as potholes rock you to sleep.", initial [; StartTimer(self,1); ], before [; Jump, Lie: "You bump yourself on the seats."; Sleep: print "You "; style underline; print "are"; style roman; " very drowsy."; Exit, VagueGo: "You're trapped."; Smell: if (noun == nothing) { <>; } return false; Listen: if (noun == nothing) { <>; } return false; ], time_left 1, time_out [; print "^As the sun begins to set, you find yourself staring at all the people outside the bus. Something is different about them... They are all dark-skinned. And you are so pale, like you have some sort of disease. You drift into sleep, and your dreams are very troubled.^"; WaitForKey(); @erase_window 0; print "^^^That person is with you again, and says ~We're moving to another perspective.~^"; WaitForKey(); @erase_window 0; print "^^^The noises outside tell you something is coming.^"; PlayerTo(YourBedroom); return true; ], has light; Object -> busseats "seats" with name 'seat' 'seats', description "You feel almost lost in such a multitude of seats.", before [; Smell: if (noun == nothing || noun == self) { "Carpet cleaner permeates the air. There is also a familiar scent that reminds you of afternoons visiting your grandmother - somebody's lotion?"; } return false; Taste: if (noun == nothing || noun == self) { "You draw worried glances. The seats are clean and plastic."; } return false; Touch: if (noun == nothing || noun == self) { "You touch fuzzy, only mildly uncomfortable platic. This bus is adequately heated, but you feel so cold. Some of your vitality seems to have left you in the museum, and you curl up tightly against your seat."; } return false; ], has light pluralname scenery; Object -> buswindows "windows" with name 'tinted' 'window' 'windows', description "The windows are tinted.", before [; Search: "The streets bustle with people. Can they really be so different from you?"; ], has pluralname scenery; Object -> busexamined "bus" with name 'tour' 'bus' 'interior', description "The bus is so large you worry that it will become stuck on a narrow street.", before [; Listen: "The engine and wheels are gently humming."; Smell: "The bus smells of pollen. You sneeze."; ], has scenery; Object YourBedroom "Your Bedroom", with description "You are lucky to have this room to yourself; your siblings and parents say so all the time. This is your sanctuary above the shop, where you dream and scheme on slow evenings in the warmth of your sunlit bed. But the room is so bare now, and something is darkening its usual glow - something outside trying to get in. A hallway lies to the south.", s_to Hallway, before [; Exit, VagueGo: if (noun == nothing) { if (player in wardrobe) { <>; } if (player in bed) { <>; } <>; } return false; Sleep: if (player notin bed){ ; } "You rest for a few moments, but you're not at all tired. You're itching to get out."; ], has light; Object -> bed "bed", with name 'my' 'bed' 'sheets' 'bedsheets' 'bedding', description "It's just firm enough and just soft enough. When you lie on it at the end of a long day, it's bliss.", before [; HideIn: "This bed doesn't really lend itself to hiding."; Smell: "The sheets are clean, but hold some pleasant scent that embraces you."; Taste: "You taste clean fabric."; Touch: <>; LookUnder: print "There was so much stuff down there, until you found out about the other people moving in. Now, it's just dark"; if (singleshoe hasnt moved) { move singleshoe to YourBedroom; print ", save for a single shoe, all alone in its universe"; } "."; ], after [; Enter: print "You climb onto your wonderful bed.^"; DrawStatusLine(); WaitForKey(); @erase_window -1; print "^^^"; PlayerTo(Cots); DrawStatusLine(); WaitForKey(); @erase_window -1; print "^^^"; PlayerTo(self,2); move candy to self; "You feel something you did not notice before: a candy on your bed."; ], has supporter enterable scenery; Object -> wardrobe "wardrobe", with name 'my' 'wardrobe' 'door', description "Your wardrobe is a tall box made of handsome wood, which opens and closes with a friendly creak.", inside_description "Emptied of clothing, your wardrobe no longer holds any secrets.", when_open "Your wardrobe is open and empty of clothing. Mother said they want us to move.", when_closed "Your wardrobe is closed.", before [; Close: if (player in self) { thedark.short_name = "Almost Total Darkness"; thedark.description = "They don't want you to see, so they put you here."; } return false; Open: if (noun == self && player in self) { print "You return to the light, or the light returns to you.^"; } return false; ], after [; Open: if (self hasnt general) { give self general; "When you asked Mother why you had to empty the wardrobe, she said ~They want us to move.~"; } return false; Search: print "When you asked Mother why you had to empty the wardrobe, she said ~They want us to move.~^"; return false; ], has container enterable static openable; Object singleshoe "single shoe" with name 'single' 'lone' 'fancy' 'shoe', description "Grandmother gave you this very fancy shoe and its lost twin. Without the other shoe you can't wear it, and besides that it no longer fits you.", before [; Wear: "It's too small for you now."; ], has clothing; Object candy "candy" with name 'round' 'red' 'cherry' 'candy' 'sweet', description "It is round and has a deep red color that seems to hold a microcosm of mystery.", before [; Taste: "It tastes of cherry. It was your favorite kind of candy, you think, before the war began and you had less of many good things like this."; Eat: remove self; "You let the now rare flavor of the candy reveal sweet, subtle mysteries to you as it dissolves."; ], has edible; Object Cots "Cots", with description "So many rows. The whole room heaves with breathing. The lice feast.", has light; Object Hallway "Hallway" with description [; print "This hallway is small, but the memories here make it more comfortable. Your bedroom lies to the north, the pink bathroom to the east, your parents' bedroom south and the shop down a flight of stairs.^"; if (self hasnt visited) { give self visited; DrawStatusLine(); WaitForKey(); @erase_window -1; print "^^^"; PlayerTo(BetweenCots); DrawStatusLine(); WaitForKey(); @erase_window -1; print "^^^"; PlayerTo(self,2); } return true; ], n_to YourBedroom, e_to Bathroom, s_to ParentsBedroom, d_to shopstairs, before [; Exit: if (noun == nothing) { <>; } return false; ], has light; Object BetweenCots "Between the Cots" with description "The breathing moves your body. Your lungs protest as you inhale disease.", has light; Object Bathroom "Pink Bathroom" with description [; print"The bathroom where you have brushed your teeth in the glow of the rising sun shines spotlessly. Something looks strange about the medicine cabinet. The hallway leads west.^"; if (self hasnt visited) { give self visited; DrawStatusLine(); WaitForKey(); @erase_window -1; print "^^^"; PlayerTo(Showers); DrawStatusLine(); WaitForKey(); @erase_window -1; print "^^^"; PlayerTo(self,2); } return true; ], w_to Hallway, before [; Exit, VagueGo: if (noun == nothing) { <>; } return false; ], has light; Object -> bathroomappliances "bathroom appliances" with name 'bathroom' 'toilet' 'sink' 'shower' 'curtain' 'curtains' 'tile' 'counter' 'light' 'lights', before [; default: "Dad said ~Right now, none of this is ours; we are leaving very soon, and the other people will be here.~"; ], has scenery pluralname toilet; Object -> medicinecabinet "medicine cabinet" with name 'medicine' 'cabinet' 'cupboard', description "It's made of wood. It had a mirror mounted on it until your family started packing everything, and now the mirror's absence unsettles you.", has container scenery openable; Object -> -> pills "Father's bag of pills" with name 'Father^s' 'pill' 'bag' 'of' 'pills' 'tablets' 'capsules', description "Father's pills are in a little bag. He says the pills are a weakness, that they prove that he was born with poor health, but they must be a good thing if they keep him healthy.", before [; Open, Eat, Taste, Empty, Search: "Father says the pills are dangerous."; Touch: "The pills are slippery."; Smell: "They smell like nuts."; ], has proper openable container; Object Showers "~DISINFECTION~" with description "These showers do not release water.", has light; Object ParentsBedroom "Your Parents' Bedroom" with description "Since your parents sold things, all that is in here now is their neatly-made bed.", n_to Hallway, before [; Exit, VagueGo: if (noun == nothing) { if (player in parentsbed) { <>; } <>; } return false; ], has light; Object -> parentsbed "bed" with name 'my' 'parents^' 'parents' 'neatly-made' 'neatly' 'made' 'bed' 'sheets' 'bedsheets' 'bedding', description "The bed is pristine, as your mother keeps everything.", before [; Taste, Smell, Touch: "The bed has been made particularly clean and soft, maybe for the other people moving in."; LookUnder: if (photograph hasnt moved) { move photograph to parentsbedroom; "You discover a photograph."; } "Nothing is left under your parents' bed."; ], after [; Enter: "The bed is huge and cool. You feel it embrace you as you stare in many directions, familiarizing yourself visually with every inch of your surroundings."; ], has supporter enterable scenery; Object photograph "photograph" with name 'photograph' 'photo' 'picture' 'portrait', description "It's a photograph of your parents smiling broadly on a two-person bicycle, maybe before they married.", before [; Taste, Smell, Touch: "You can sense years of joy that have passed since the photograph was taken."; ]; Object upstairswindow "window" with name 'window' 'windows', description [; print "All the windows over the shop are small, but they give you some idea of the condition of the town outside. "; <>; ], before [; Search: "Beyond the window they are moving about - shadowy figures. For a brief moment you can hear them yelling. You think you hear glass shatter far away."; ], found_in YourBedroom Hallway Bathroom ParentsBedroom, has scenery; Object shopstairs "stairs" with name 'stair' 'staircase' 'stairs' 'steps', description [; print "The stairs lead "; if (self in Hallway) print "down"; else print "up"; " from here. How many times have you trodden these steps?"; ], door_to [; if (self in Hallway) return Shop; return Hallway; ], door_dir [; if (self in Hallway) return d_to; return u_to; ], found_in Hallway Shop, has door scenery open; Object Shop "Shop" with description [; if (self hasnt visited) "Few items remain on the shelves, but the remaining goods are organized very carefully and marked at clearance prices. The street lies to the north.^^A chorus of breaking glass announces the arrival of the men as they break in from the street, scattering everything about in an absurd tide of foodstuffs. Then they are gone, seeking more glass to shatter and you move from your hiding place in the stairway to appraise the room."; "Chaos. Ruin. To the north is the night."; ], before [; Exit, VagueGo: if (noun == nothing) { <>; } return false; ], u_to shopstairs, n_to shopdoor, has light; Object -> father "Father" with name 'father' 'dad' 'daddy' 'da' 'pop' 'papa', description "He gazes downward at you with love and worry.", initial "Father is here.", before [; Take, Taste, Touch: <>; Smell: "He smells of scented soap."; ], react_before [; Take: if (noun == debris) { print "Father stops you. "; <>; } return false; Buy: "Father smiles. ~We're closed right now,~ he says. ~Go to bed and come back later.~"; ], life [; Ask, Tell: switch (second) { 'Grandmother', 'Grandma': "Father looks said. ~I know you still miss her,~ he says."; 'lone', 'single', 'fancy', 'shoe': "~I don't have much hope that we will find that lost shoe of yours, Hebel.~"; 'men', 'mob', 'crowd', 'people': "~Don't worry about them. They're just confused.~"; 'Mom', 'Mum', 'Ma', 'Mommy', 'Mummy', 'Mother', 'brother', 'brothers', 'sister', 'sisters', 'siblings', 'Hadar', 'Hed': "~Mother should be at Aunt Bluma's house with Hadar and Hed by now~."; 'Aunt', 'Bluma': "~Aunt Bluma is being very nice to offer us a place in her house. Be sure to thank her when we see her.~"; 'items', 'groceries', 'goods', 'foodstuffs', 'food', 'debris', 'wreckage', 'broken', 'glass', 'shop': "~It doesn't matter. We were going to start over anyway.~"; 'Father^s', 'pill', 'bag', 'of', 'pills': if (pills in player) { <>; } "~Don't mess with those pills. They're dangerous.~"; 'photograph', 'photo', 'picture', 'portrait': if (photograph in player) { <>; } "~A photograph? I don't understand.~"; 'round', 'red', 'cherry', 'candy', 'candies', 'sweet', 'sweets': if (candy has moved) { "~I have not seen candy like that for months!~"; } "~I have not come across any candy lately,~ Father admits."; default: "~Don't worry yourself.~"; } Show, Give: switch (noun) { pills: give pills general; remove pills; "~These are dangerous,~ he says, gently taking the pills from your hand."; photograph: "~Keep that and protect it. That is a very good picture of happier times.~"; singleshoe: remove singleshoe; "~I'll keep this safe for you,~ Father promises. He knows it's important because Grandmother gave it to you."; candy: "~That is a rare thing now!~ exclaims Father. ~Maybe it's a blessing, though. You know what my doctor says about sugar.~"; default: "~Don't worry yourself.~"; } Kiss: "He gives you a close, enveloping hug. ~I love you, too,~ he says."; WakeOther: "He isn't sleeping."; Attack, ThrowAt: "~Try to calm down, son. Everything is alright now.~"; Order, Answer: "~Excuse me, Hebel. I'm just going to mind the shop alone here for a while.~"; ], orders [; NotUnderstood: return false; Kiss: if (noun == player) { "He gives you a close, enveloping hug. ~I love you,~ he says."; } return false; WakeOther: if (noun == player) { "~I'm sorry, son. You aren't dreaming.~"; } return false; Attack: if (noun == player) { "Father looks confused. ~How could I do that, Hebel?~ he asks."; } return false; ], has animate male static proper; Object -> debris "debris" with name 'debris' 'wreckage' 'goods' 'items' 'groceries' 'foodstuffs' 'food', description "The entire inventory is covered in shards of glass that sparkle threateningly.", initial "Debris covers everything.", before [; Examine: return false; default: <>; ], has static pluralname; Object -> shopwindows "windows" with name 'window' 'windows' 'broken' 'sea' 'shards' 'of' 'glass' 'crystal' 'crystals', description "The shop's large windows have been reduced to a sea of crystals.", before [; Examine: return false; default: "~Hebel! Stay away from that glass,~ Father warns you."; ], has scenery pluralname; Object shopdoor "shop door" with name 'door', description "Father always keeps the door open during your waking hours.", door_to [; if (self in Shop) return ShopStreet; return Shop; ], door_dir [; if (self in Shop) return n_to; return s_to; ], found_in Shop ShopStreet, has door scenery openable open; Object mob "men" with name 'mob' 'crowd' 'group' 'men', before [; default: "The men have departed."; ], found_in Shop ShopStreet, has animate pluralname scenery; Object ShopStreet "The Street" with description[; print "The wind seems to blow right through you, trying to tear out your soul. The Moon does not seem to be its normal, friendly self, but instead penetrates you with its glare.^"; if (self hasnt visited) { print "^The men come back to complete their work. They shout ~Judenfreiheit!~ and knock you to the ground"; if (photograph in player) { remove photograph; print ", tearing the photograph in two and scattering its pieces in the wind"; } ". You cry to the moon for solace, but it refuses to soften the edge of its cold light."; } return true; ], s_to shopdoor, initial [; "Father does not seem to notice your exit from the shop. You hardly notice it yourself, pulled forward by smooth, unseen forces."; ], before [; Exit: if (noun == nothing) { <>; } VagueGo, Go: print "You stumble a bit, then collapse.^"; WaitForKey(); @erase_window 0; remove candy; remove pills; remove singleshoe; print "^^^It hurt so badly, but that is a memory now.^"; PlayerTo(Train); return true; ], has light; Object -> shopexterior "shop" with name 'shop' 'store' 'building', description [; "The shop is broken. Its windows are gone."; ], before [; Enter: <>; ], has scenery; Object -> moon "Moon" with name 'Moon' 'sky' 'Luna' 'moonlight' 'light', description "The Moon's light shines through you.", before [; Examine: return false; default: "No matter how far you reach, the Moon remains too distant."; ], has scenery light; Object Train "Train" with description [; print "It is not so crowded now. There is room enough to sit.^"; if (self hasnt visited) { print "^Big, uniformed men usher you out into the harsh light and chilling breezes.^"; PlayerTo(TrainStation); } return true; ], has light; Object TrainStation "Train Station" with description "Cold. It is so cold. Where is Father? You can only go west, into the angry, plummeting sun.", before [; Sit, Lie: "Not here. You can't."; Exit, VagueGo: if (noun == nothing) { <>; } return false; ], w_to ShowersSecond; Object -> trainabsence "train" with name 'train', before [; default: "The train is gone, like everything else. Only you and the sun remain."; ], has scenery; Object -> sun "Sun" with name 'Sun' 'Sol' 'sunlight' 'sky', description "The Sun's light grows steadily brighter and moves steadily farther into every part of your body, and you can only pray that its intensity ceases to increase before your body begins to burn.", before [; Take, Touch, Rub: "Your hands would burst into flames."; ], has scenery light; Object ShowersSecond "~DISINFECTION~", with description "Why does no water flow from these showers? You remember now. They did not want you to be clean; they wanted the world to be ~clean~ of you.", initial [; StartTimer(self,0); ], time_left 0, time_out [; print "The light abandons you.^"; WaitForKey(); @erase_window -1; print "^^^"; PlayerTo(ExistenceSecond); ], has light; Object ExistenceSecond "Existence", with description [; print "Your existence remains largely unchanged. There is someone here. You think it is Father, then you think it is Grandmother, then you think it is one of the uniformed men, then it could be "; style underline; print "anyone"; style roman; print ". This person stares at you, and, with tears of pain in the eyes, asks ~Do you forgive me?~ "; if (YesOrNo()) { deadflag = 3; } else{ deadflag = 4; } "^~Sometimes,~ Father once said, ~we have to think not just about any one person, but about all people, and we have to accept or reject all of them. We have to give them an answer: yes or no. I hope yours will always be yes.~"; ], has light; Menu MainMenu "~Buried In Shoes~ information"; Object -> "Instructions", with description [; InstructionsSub(); ]; Object -> "Walkthrough", with description [; WalkthroughSub(); ]; Object -> "On the significance of the shoes", with description "Upon visiting the United States Holocaust Memorial Museum in Washington, D.C. I discovered a room housing a very large pile of shoes, stolen from the victims of genocide in Nazi-occupied Europe. The smell of deteriorating rubber in this room somehow made a greater impression upon me than any of the photographs I had seen that day. The shoes that appear in my story are the same shoes that I saw piled in the museum where I, a young student, was separated from my classmates and alone amidst collected evidence of the human capacity to do evil."; Object -> "Credits and acknowledgments", with description "~Buried In Shoes~ was written by Kazuki Mishima. The Inform interactive fiction development system, version 6 was created by Graham Nelson. The ~DMenus~ menu system was created by Khelwood, and the Creative Commons License inclusion code by Roger Firth. I must thank my helpful beta-testers, who tried to make me see reason: Tomasz Pudlo, Alexander Deubelbeiss, Carl Muckenhoupt, Wesley Osam, Reiko Yukawa, Tim Partridge, Hakim Cassimally, and Gemma Bristow. I also thank Lucian P. Smith for coordinating the beta-testing effort."; Object -> "Dedication" with description "I dedicate this work to all I have hurt and to all who have hurt me.^ - Kazuki Mishima"; Object -> "Notes for the post-competition release" with description [; print "A little while ago, I set out to write a collection of interactive vignettes based on various historical events connected to a series of items. One item I had not initially intended to include - a pile of shoes - suddenly became the primary focus, and the other elements disappeared. I wrote a story about the Holocaust - ~Buried In Shoes~ - nearly by accident.^^I never assumed I could do the subject matter justice. There are towering literary precedents on the subject. I had read Elie Wiesel's "; style underline; print "Night"; style roman; print ", John Boyne's "; style underline; print "The Boy in the Striped Pyjamas"; style roman; print ", and Art Spiegelman's amazing "; style underline; print "Maus"; style roman; ". I knew I couldn't effectively emulate them. I wasn't even an adult yet; I was seventeen years old. Of course, I wrote the thing anyway, and I even wound up entering it in the 2008 Interactive Fiction, where it received mixed feedback.^^There were people who called ~Buried In Shoes~ it was movingly poetic and ultimately effective, and there were people who called it unbearably pretentious and maudlin. After reading all the comments about my story, I have become sick of it. Since I wrote ~Buried In Shoes~, my life has moved forward. I've become a legal adult and will be leaving my family home in the autumn of 2009. This post-competition release contains as its only changes a Creative Commons license and an updated menu, and I don't intend to make any further revisions. Let this be the end of it."; ]; [ FlushSub; "You follow the fall of the vortex of water with intense interest."; ]; [ MeditateSub; "When you look deeper, you find that there is meaning and value, and that is a source of strength."; ]; [ HumSub; "The tune oscillates you."; ]; [ WhistleSub; "You make a few vague, hollow whistling noises. You've never learnt to whistle a tune."; ]; [ SitSub; "You sit for a while."; ]; [ LieSub; "You lie down for a while. Your mind becomes like an undisturbed pond."; ]; [ YellSub; "Your soul projects itself through your throat."; ]; [ HideInSub; if (noun == nothing) { "To hide, you need something to contain you."; } if (noun hasnt container) { "You can't hide in that."; } ; if (actor in noun && noun has openable) { <>; } return true; ]; [ HideObjectSub; if (second hasnt container) { "You can't hide things in that."; } ; if (noun in second && second has openable) { <>; } return true; ]; [ WaitForKey char i; i = 0; style fixed; new_line; while (i <= 0->$21) { print "_"; i = i+1; } style roman; print "^[Press a key to continue.]^"; @read_char 1 char; return true; ]; [ InstructionsSub; "This story involves text-based interaction. The reader is repeatedly prompted for input, then is expected to enter a short command without punctuation. The story will respond with more text. Here are some examples:^ ^ What will you do? GO SOUTH^ The path is blocked by a large gate.^ ^ What will you do? SLEEP^ You fall asleep easily, but are soon awoken by the affections of your cat.^ ^ What will you do? WAKE UP^ You're not asleep right now.^ ^ Commonly used commands are ~GO~ followed by a compass direction (or simply a compass direction without ~GO~), ~TAKE~ followed by the name of an object, ~DROP~ followed by the name of an object, ~EXAMINE~ followed by the name of an object, ~LOOK~, and the special commands ~SAVE~, ~RESTORE~, ~RESTART~, and ~QUIT~. These are not the only possible commands; the reader may find and use more."; ]; [ WalkthroughSub; "Ideally, the reader should explore ~Buried In Shoes~ at her or his own pace. However, the following list of commands details one way to reach the ending and see some of the story's optional content: ^ ^go out ^search shoes ^ ^x shoes ^x slab ^enter slab ^sleep ^go west ^sleep ^ ^ ^open wardrobe ^go south ^ ^ ^go east ^ ^ ^open cabinet ^take pills ^go west ^go south ^look under bed ^take photograph ^x photograph ^go north ^go down ^ask father about photograph ^ask father about pills ^go north ^go south ^ ^x sun ^go west ^ ^yes"; ]; [ LaunchMenuSub; ShowMenu(MainMenu); ]; [ Initialise; move license_menu to MainMenu; @erase_window -1; if (0->$21 >= 40 && 0->$20 >=15) { @set_window 1 10; box "~...and they shall beat their" " swords into plowshares, and their" " spears into pruninghooks; nation" " shall not lift up sword against" " nation, neither shall they learn" " war anymore.~" " - Isaiah 2:4, JPS"; @set_window 0; } WaitForKey(); @erase_window 0; selfobj.description = "You are still a child."; location = Existence; print "^^^First, there is nothing,...^^then, from nothing...^^there are you.^^"; Banner(); print (string) LICENSE; return 2; ]; [ DeathMessage; if (deadflag == 3) { print "Yes."; return true; } else { print "No."; return true; } ]; [ DrawStatusLine; @split_window 1; @set_window 1; font off; style reverse; @erase_window 1; spaces (0->$21); @set_cursor 1 1 1; print (name) location; style roman; font on; @set_window 0; return true; ]; [ YesOrNo i j; for (::) { #Ifdef TARGET_ZCODE; if (location == nothing || parent(player) == nothing) read buffer parse; else read buffer parse DrawStatusLine; j = parse->1; #Ifnot; ! TARGET_GLULX; KeyboardPrimitive(buffer, parse); j = parse-->0; #Endif; ! TARGET_ if (j) { ! at least one word entered i = parse-->1; if (i == YES1__WD or YES2__WD or YES3__WD) rtrue; if (i == NO1__WD or NO2__WD or NO3__WD) rfalse; } L__M(##Quit, 1); } ]; [ AfterGameOver i; .RRQPL; L__M(##Miscellany,5); .RRQL; #Ifdef TARGET_ZCODE; #IfV3; read buffer parse; #Endif; ! V3 temp_global=0; #IfV5; read buffer parse DrawStatusLine; #Endif; ! V5 #Ifnot; ! TARGET_GLULX KeyboardPrimitive(buffer, parse); #Endif; ! TARGET_ i = parse-->1; if (i == QUIT1__WD or QUIT2__WD) { #Ifdef TARGET_ZCODE; quit; #Ifnot; ! TARGET_GLULX quit; #Endif; ! TARGET_ } if (i == RESTART__WD) { #Ifdef TARGET_ZCODE; @restart; #Ifnot; ! TARGET_GLULX @restart; #Endif; ! TARGET_ } if (i == RESTORE__WD) { RestoreSub(); jump RRQPL; } if (i == FULLSCORE1__WD or FULLSCORE2__WD && TASKS_PROVIDED==0) { new_line; FullScoreSub(); jump RRQPL; } if (deadflag == 2 && i == AMUSING__WD && AMUSING_PROVIDED==0) { new_line; Amusing(); jump RRQPL; } #IfV5; if (i == UNDO1__WD or UNDO2__WD or UNDO3__WD) { if (undo_flag == 0) { L__M(##Miscellany, 6); jump RRQPL; } if (undo_flag == 1) jump UndoFailed2; #Ifdef TARGET_ZCODE; @restore_undo i; #Ifnot; ! TARGET_GLULX @restoreundo i; i = (~~i); #Endif; ! TARGET_ if (i == 0) { .UndoFailed2; L__M(##Miscellany, 7); } jump RRQPL; } #Endif; ! V5 L__M(##Miscellany, 8); jump RRQL; ]; Include "Grammar"; Verb 'flush' * toilet -> Flush; Verb 'meditate' * -> Meditate; Verb 'hum' * -> Hum; Verb 'whistle' * -> Whistle; Verb 'hide' * 'in' noun -> HideIn * noun 'in' noun -> HideObject; Verb 'cry' 'yell' = 'shout'; Verb 'talk' * 'to' noun -> Tell * 'to' noun 'about' noun -> Tell; Verb 'forgive' * noun -> Tell; Verb 'kick' * noun -> Attack; Verb 'waken' * -> Wake * noun -> WakeOther; Verb meta 'help' 'hint' 'hints' 'credits' 'info' 'information' 'about' 'menu' * -> LaunchMenu; Verb meta 'instructions' * -> Instructions; Verb meta 'walkthrough' 'walkthru' * -> Walkthrough; Extend only 'cry' 'yell' 'shout' replace * -> Yell; Extend 'rub' replace * -> Touch * noun -> Touch; Extend only 'sit' first * -> Sit * 'down' -> Sit; Extend only 'lie' first * -> Lie * 'down' -> Lie;