From: David Griffith Date: Fri, 2 Nov 2012 03:55:59 +0000 (-0700) Subject: Import of Release 1 X-Git-Tag: r1 X-Git-Url: https://jxself.org/git/?a=commitdiff_plain;h=f9b0e53c970ef469d96bd731222ed0d6b70687f6;p=rfk-inform.git Import of Release 1 --- f9b0e53c970ef469d96bd731222ed0d6b70687f6 diff --git a/kitten.inf b/kitten.inf new file mode 100644 index 0000000..e10eece --- /dev/null +++ b/kitten.inf @@ -0,0 +1,989 @@ +! Robot Finds Kitten +! A Zen Simulation +! Release 1 / Serial number 021123 / Inform v6.21 +! +! [-] |\_/| http://www.robotfindskitten.org +! (+)={ |o o|__ Leonard Richardson (C) 1997, 2000 +! | | --*--__\ David Griffith (C) 2002 (Inform Edition) +! OOO C_C(___) +! +! +! This Zen simulation is based on the C version v1600003.248b +! by Leonard Richardson (C) 1997, 2000. +! Written originally for the Nerth Pork robotfindskitten contest. +! Reimplemented in Inform by David Griffith (C) 2002. +! +! Lots more information on Robot Finds Kitten is available at +! http://www.robotfindskitten.org. +! +! +! In this game, you are Robot (#). Your job is to find Kitten. This +! task is complicated by the existance of various things which are not +! kitten. Robot must touch items to determine if they are Kitten or +! not. Move Robot with the cursor keys, the numeric keypad, or +! using the vi/rogue movement keys. The game ends when Robot finds +! Kitten. Alternatively, you may end the game by hitting the Esc or Q +! keys. +! +! Developed with Inform 6.21 as installed from NetBSD's pkgsrc tree. +! +! Compile it with: +! inform "-~S" kitten.inf <-- Assuming Unix +! +! Notes: +! 1) More than half of the code is taken up by non-kitten +! messages. When I compiled the code with just five messages and +! no debugging code, the resulting binary was only 9728 bytes. +! With all 280+ messages, it's 20992 bytes. +! +! 2) If it wasn't already abundantly obvious, this program won't +! compile to Glulx because of copious use of Z-machine assembly +! instructions. +! +! +! Still to do: +! +! Implement colors (is it really necessary?) +! +! Is there some way I can hide the cursor completely? +! I want to do this and manually set Robot to be in reverse type rather +! than relying on the cursor to look like that. Ahah! "@set_cursor -1 +! turns the cursor off, "@set_cursor -2" turns it back on. Hmm. This +! doesn't seem to work. +! +! It seems every now and then the kitten doesn't gets placed somewhere +! where the robot can't get to it. Under a non-kitten? +! +! already_seen_msg in get_random_msg() still doesn't work correctly! +! Probably the already_seen_xy() thing doesn't work either. + + +!Switches xv5s; + +Switches v5; + +! Maxmimum possible number of non-kitten items on the playfield at once. +! +Constant Nonkitten_Max 256; + +Constant Nonkitten_Default 20; + +! Number of messages +! +Constant MESSAGE_NUM 283; + + +Release 1; +!Serial "021129"; + + +! Not currently implemented +! Global palm_mode = false; + + +!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +Constant Story "Robot Finds Kitten"; +Constant Headline "^A Zen Simulation^"; + +Constant Anim_Meet 10; + +Global Height = 0; +Global Width = 0; + +Global Color = false; + +Global TopBar = 5; + +Global player_x = 0; +Global player_y = 0; + +Global kitten_x = 0; +Global kitten_y = 0; +Global kitten_char = 0; +!Global kitten_color = 0; + +Global last_message = ""; + +Global nonkitten_count = Nonkitten_Default; + +Array nonkitten_x --> Nonkitten_Max; +Array nonkitten_y --> Nonkitten_Max; +Array nonkitten_char --> Nonkitten_Max; +Array nonkitten_msg --> Nonkitten_Max; +!Array nonkitten_color --> Nonkitten_Max; + +Global already_msg_count = 0; +Global already_count = 0; +Array already_x --> Nonkitten_Max + 2; +Array already_y --> Nonkitten_Max + 2; +Array already_msg --> Nonkitten_Max; + + +[ Main key; + if ((1->0)&1 == 0) + Color = true; + else + Color = false; + + main_menu(); + while (true) { + key = getkey(); + switch (key) { + 'F': already_count = 0; + init_kitten(); + init_robot(); + init_nonkittens(); + while (findkitten()) + ; + 'D': nonkitten_count = set_nonkitten_count(); + 'I': print_instructions(); + 'A': print_about(); + 'T': print_thoughts(); + } + if (key == 'Q' || key == $1b) + break; + main_menu(); + } + quit; +]; + + +[ main_menu; + Width = $22-->0; + Height = $24-->0; + + @erase_window $ffff; + @split_window 11; + @set_window 1; + + Banner(); + draw_horiz(TopBar); + + draw_big_robot(3, 7); + draw_big_kitten(15, 7); + + + @set_cursor 7 30; + print "robotfindskitten"; + @set_cursor 8 30; + print "http://www.robotfindskitten.org"; + @set_cursor 9 30; + print "Leonard Richardson (C) 1997, 2000"; + @set_cursor 10 30; + print "David Griffith (C) 2002 (Inform Edition)"; + + @set_window 0; + + print " F) Find Kitten^"; + print " D) Difficulty (", nonkitten_count, ")^"; + print " I) Instructions^"; + print " T) Thoughts^"; + print " A) About^"; + print " Q) Quit^"; + print "^> "; +]; + + +[ Banner i; + if (Story ~= 0) { +#IFV5; + style bold; +#ENDIF; + print (string) Story; +#IFV5; + style roman; +#ENDIF; + } + if (Headline ~= 0) { + print (string) Headline; + } + print "Release ", (0-->1) & $03ff, " / Serial number "; + for (i=18:i<24:i++) print (char) 0->i; + print " / Inform v"; inversion; print " "; +#ifdef STRICT_MODE; + print "S"; +#endif; +#ifdef INFIX; + print "X"; +#ifnot; +#ifdef DEBUG; + print "D"; +#endif; +#endif; + new_line; +]; + +Constant INBUFSIZE 80; +Array inbuf -> INBUFSIZE; +[ set_nonkitten_count inbufvar ix cx len val; + + while (true) { + @erase_window $ffff; + @split_window 5; + @set_window 1; + Banner(); + draw_horiz(TopBar); + @set_window 0; + + print "^Please enter the number of nonkittens you + wish to search through.^(1 to 255 only)^^> "; + + inbuf->0 = (INBUFSIZE-3); + inbuf->1 = 0; + inbufvar = inbuf; + ix = 0; + @aread inbufvar ix; + new_line; + len = inbuf->1; + cx = 0; + while (cx < len && inbuf->(2+cx) == ' ') + cx++; + if (cx < len && inbuf->(2+cx) == '.') + break; + + if (cx == len || inbuf->(2+cx) < '0' || inbuf->(2+cx) > '9') { + continue; + } + + val = 0; + while (cx < len && inbuf->(2+cx) >= '0' && inbuf->(2+cx) <= '9') { + val = val * 10 + (inbuf->(2+cx) - '0'); + cx++; + } + + if (val < 1 || val > Nonkitten_Max) { + print "Please enter a value from 1 to ", + Nonkitten_Max, ", or Enter by itself to exit.^"; + continue; + } else break; + } + return val; +]; + +[ print_about; + @erase_window $ffff; + @split_window TopBar; + @set_window 1; + Banner(); + draw_horiz(TopBar); + @set_window 0; + +print "^ +This Zen simulation is based on the C version v1600003.248b^ +by Leonard Richardson (C) 1997, 2000.^ +Written originally for the Nerth Pork robotfindskitten contest.^ +Reimplemented in Inform by David Griffith (C) 2002.^ +^ +Lots more information on Robot Finds Kitten is available at +http://www.robotfindskitten.org.^ +^ +Known bugs:^ +^ +1) In get_random_msg(), already_seen_msg isn't being checked correctly +leading to occasional duplicate messages. It looks like it should work. +Not sure why not.^ +^ +2) already_seen_xy() probably has problems similar to item 1 above which +might explain why the kitten occasionally gets placed somewhere where +the robot can't get to it. +^ +3) Under Windows Frotz, the Robot appears as a solid block. This is a +bug in Windows Frotz which incorrectly makes the cursor opaque.^ +^ +4) Under Windows Frotz, an annoying [MORE] prompt appears when the game +is started. This is another bug in Windows Frotz which believes +Windows' suggestion to use 20 lines rather than 24 or 25.^ +^ +^ +[Press any key to continue.] "; + + getkey(); +]; + + +[ print_instructions; + @erase_window $ffff; + @split_window TopBar; + @set_window 1; + Banner(); + draw_horiz(TopBar); + @set_window 0; + +print "^ +In this game, you are Robot (#). Your job is to find Kitten. This task +is complicated by the existance of various things which are not +kitten. Robot must touch items to determine if they are Kitten or +not. Move Robot with the cursor keys, the numeric keypad, or using the +vi/rogue movement keys. The game ends when Robot finds +Kitten. Alternatively, you may end the game by hitting the Esc or Q +keys.^^ +[Press any key to continue.] "; + + getkey(); +]; + + +[ print_thoughts; + @erase_window $ffff; + @split_window TopBar; + @set_window 1; + Banner(); + draw_horiz(TopBar); + @set_window 0; + +print "^ +A Final Thought.^ +^ +Day and night I feverishly worked upon the machine, creating both a soul +which could desire its goal, and a body with which it could realize it. +Many who saw my creation called it an abomination, and denied me grant +money. But they could not dissuade me from my impossible task. It was a +spectre that tormented me always, a ghost I had to give a form and a +life, lest it consume me from the inside. And when at last my task was +done, when the grey box on wheels was complete and when it, as well as +I, knew what had to be done, I felt deep sympathy for the machine. For I +had not destroyed the phantom, but merely exorcized it into another +body. The robot knew not why this task had to be performed, for I could +not imbue it with knowledge I did not myself posess. And at the same +time, I felt a sweeping sense of relief sweep over me, that somehow, the +dream that had driven me for my entire life had come one step closer to +fruition.^ +^ +~Gort, Klaatu Verada Nikto~^ +^ +As I vocally activated the robot, I realized that it was following my +instructions, but not out of any desire to obey me. Had I remained +silent, it would have performed exactly the same operations. We were two +beings controlled by the same force now. And yet, seeking vainly to hold +some illusion of control over the machine I thought I had created, I +gave my final command.^ +^ +~GO!~ I told the box as it began to roll out of my workshop into the +frozen desert beyond. ~FIND KITTEN!~^ +^ +-- The Book of Found Kittens, pages 43-4, author unknown.^^ + + +[Press any key to continue.] "; + + getkey(); +]; + +[ draw_big_robot x y; + if (x == 0) + x = 1; + if (y == 0) + y = 1; + @set_cursor y x; + print "[-]"; + y = y+1; + @set_cursor y x; + print "(+)=C"; + + y = y+1; + @set_cursor y x; + print "| |"; + + y = y+1; + @set_cursor y x; + print "OOO"; +]; + +[ draw_big_kitten x y; + if (x == 0) + x = 1; + if (y == 0) + y = 1; + @set_cursor y x; + print "|", (char) 92, "_/|"; + y++; + @set_cursor y x; + print "|o o|__"; + y++; + @set_cursor y x; + print "--*--__", (char) 92; + y++; + @set_cursor y x; + print "C_C(___)"; +]; + + +[ findkitten key i kitten_found; + @erase_window $ffff; + @split_window TopBar; + @set_window 1; + @set_cursor 1 1; + + kitten_found = false; + + Banner(); + print (string) last_message; + draw_horiz(TopBar); + + draw_object(kitten_x, kitten_y, kitten_char); + draw_nonkittens(); + draw_object(player_x, player_y, '#'); + + @set_cursor player_y player_x; + + + key = getkey(); + switch (key) { + 'Q', $1b: rfalse; ! exit game ($1b == Esc) + '8', 'J', 129: player_y--; ! up + '2', 'K', 130: player_y++; ! down + '4', 'H', 131: player_x--; ! left + '6', 'L', 132: player_x++; ! right + '7', 'Y': player_y--; player_x--; ! up-left + '9', 'U': player_y--; player_x++; ! up-right + '1', 'B': player_y++; player_x--; ! down-left + '3', 'N': player_y++; player_x++; ! down-right + } + if (player_y <= TopBar+1) + player_y = TopBar + 1; + if (player_y > Height) + player_y = Height; + if (player_x < 1) + player_x = 1; + if (player_x > Width) + player_x = Width; + + ! detect and handle collisions + ! + if (player_x == kitten_x && player_y == kitten_y) { + found_kitten(key); + getkey(); + rfalse; + } + for (i = 0: i < nonkitten_count: i++) { + if (player_x == nonkitten_x --> i + && player_y == nonkitten_y --> i) { + @set_cursor 1 1; + last_message = lookup_msg(nonkitten_msg --> i); + + ! prevent Robot from walking through the object. + switch (key) { + '8', 'J', 129: player_y++; + '2', 'K', 130: player_y--; + '4', 'H', 131: player_x++; + '6', 'L', 132: player_x--; + '7', 'Y': player_y++; player_x++; + '9', 'U': player_y++; player_x--; + '1', 'B': player_y--; player_x++; + '3', 'N': player_y--; player_x--; + } + } + } + rtrue; +]; + + +[ found_kitten key i j junk go_right robot_x anim_finished; + + go_right = false; + anim_finished = false; + + switch (key) { + '8', 'J', 129: player_y++; + '2', 'K', 130: player_y--; go_right = true; + '4', 'H', 131: player_x++; + '6', 'L', 132: player_x--; go_right = true; + '7', 'Y': player_y++; player_x++; + '9', 'U': player_y++; player_x--; go_right = true; + '1', 'B': player_y--; player_x++; + '3', 'N': player_y--; player_x--; go_right = true; + default: go_right = true; + } + + for (i = 4: i >= 0: i--) { + @erase_window $ffff; + @split_window TopBar; + @set_window 1; + @set_cursor 1 1; + + Banner(); + draw_horiz(TopBar); + + if (i > 0) { + if (go_right) { + robot_x = Anim_Meet - i; + draw_object(robot_x, TopBar - 1, '#'); + draw_object(Anim_Meet - 1 + i, TopBar - 1, kitten_char); + } else { + robot_x = Anim_Meet - 1 + i; + draw_object(robot_x, TopBar - 1, '#'); + draw_object(Anim_Meet - i, TopBar - 1, kitten_char); + } + } else { + j = TopBar - 1; + @set_cursor j 1; + print "You found Kitten! Way to go, Robot!"; + anim_finished = true; + } + + draw_object(kitten_x, kitten_y, kitten_char); + + draw_object(player_x, player_y, '#'); + + draw_nonkittens(); + + if (anim_finished == false) { + j = TopBar - 1; + @set_cursor j robot_x; + @aread junk 0 10 pause junk; + } else { + draw_object(player_x, player_y, '#'); + @set_cursor player_y player_x; + } + } + +]; + + +[ already_seen_xy x y i; + + for (i = 0: i < already_count: i++) { + if (already_x --> i == x && already_y --> i == y) { + return false; + } + } + already_x --> already_count = x; + already_y --> already_count = y; + already_count++; + + if (already_count > nonkitten_count + 2) { + print "Overflow in already_seen_xy()^"; + quit; + } + + return true; +]; + + +[ pause; + rtrue; +]; + + +[ init_kitten; + kitten_x = get_random_x(); + kitten_y = get_random_y(); + + while (already_seen_xy(kitten_x, kitten_y) == false) { + kitten_x = get_random_x(); + kitten_y = get_random_y(); + } + kitten_char = get_random_char(); +]; + + +[ init_robot; + player_x = get_random_x(); + player_y = get_random_y(); + + while (already_seen_xy(player_x, player_y) == false) { + player_x = get_random_x(); + player_y = get_random_y(); + } +]; + + +[ init_nonkittens i; + already_msg_count = 0; + last_message = ""; + + for (i = 0: i < nonkitten_count: i++) { + nonkitten_x --> i = get_random_x(); + nonkitten_y --> i = get_random_y(); + + while (already_seen_xy(nonkitten_x --> i, nonkitten_y --> i) == false) { + nonkitten_x --> i = get_random_x(); + nonkitten_y --> i = get_random_y(); + } + nonkitten_char --> i = get_random_char(); + nonkitten_msg --> i = get_random_msg(); + } +]; + + +[ draw_nonkittens i; + for (i = 0: i < nonkitten_count: i++) { + draw_object(nonkitten_x --> i, + nonkitten_y --> i, + nonkitten_char --> i); + } +]; + + +[ draw_object x y c; + @set_cursor y x; + if (c) + print (char) c; +]; + + +[ draw_horiz row i; + @set_cursor row 1; + + for (i = 0 : i < Width : i++) + print (char) '-'; +]; + + +[ getkey x; + @read_char 1 -> x; + if (x >= 'a' && x <= 'z') + x = x - ('a' - 'A'); + return x; +]; + + +![ get_random_color num; +! num = random(7); +! num = num + 2; +! return num; +!]; + + +[ get_random_char num; + num = random(93); + num = num + 33; + + ! avoid choosing '#' for a random character. + while (num == 35) { + num = random(93); + num = num + 33; + } + return num; +]; + + +[ get_random_msg num i found_dup; + found_dup = false; + num = random(MESSAGE_NUM); + for (i = 0: i < already_msg_count: i++) { + while (already_msg --> i == num) { + num = random(MESSAGE_NUM); + found_dup = true; + } + } + + if (found_dup) already_msg_count++; + + if (already_msg_count > nonkitten_count) { + print "Overflow in get_random_msg()^"; + quit; + } + return num; +]; + + +[ get_random_x; + return random(Width); +]; + + +[ get_random_y num ok; + ok = false; + while (ok == false) { + num = random(Height); + if (num > TopBar) + ok = true; + } + return num; +]; + + +[ lookup_msg num; + switch(num) { +1: return "~I pity the fool who mistakes me for kitten!~, sez Mr. T."; +2: return "That's just an old tin can."; +3: return "It's an altar to the horse god."; +4: return "A box of dancing mechanical pencils. They dance! They sing!"; +5: return "It's an old Duke Ellington record."; +6: return "A box of fumigation pellets."; +7: return "A digital clock. It's stuck at 2:17 PM."; +8: return "That's just a charred human corpse."; +9: return "I don't know what that is, but it's not kitten."; +10: return "An empty shopping bag. Paper or plastic?"; +11: return "Could it be... a big ugly bowling trophy?"; +12: return "A coat hanger hovers in thin air. Odd."; +13: return "Not kitten, just a packet of Kool-Aid(tm)."; +14: return "A freshly-baked pumpkin pie."; +15: return "A lone, forgotten comma, sits here, sobbing."; +16: return "ONE HUNDRED THOUSAND CARPET FIBERS!!!!!"; +17: return "It's Richard Nixon's nose!"; +18: return "It's Lucy Ricardo. ~Aaaah, Ricky!~, she says."; +19: return "You stumble upon Bill Gates' stand-up act."; +20: return "Just an autographed copy of the Kama Sutra."; +21: return "It's the Will Rogers Highway. Who was Will Rogers, anyway?"; +22: return "It's another robot, more advanced in design than you but strangely immobile."; +23: return "Leonard Richardson is here, asking people to lick him."; +24: return "It's a stupid mask, fashioned after a beagle."; +25: return "Your State Farm Insurance(tm) representative!"; +26: return "It's the local draft board."; +27: return "Seven 1/4~ screws and a piece of plastic."; +28: return "An 80286 machine."; +29: return "One of those stupid ~Homes of the Stars~ maps."; +30: return "A signpost saying ~TO KITTEN~. It points in no particular direction."; +31: return "A hammock stretched between a tree and a volleyball pole."; +32: return "A Texas Instruments of Destruction calculator."; +33: return "It's a dark, amphorous blob of matter."; +34: return "Just a pincushion."; +35: return "It's a mighty zombie talking about some love and prosperity."; +36: return "~Dear robot, you may have already won our 10 MILLION DOLLAR prize...~"; +37: return "It's just an object."; +38: return "A mere collection of pixels."; +39: return "A badly dented high-hat cymbal lies on its side here."; +40: return "A marijuana brownie."; +41: return "A plush Chewbacca."; +42: return "Daily hunger conditioner from Australasia"; +43: return "Just some stuff."; +44: return "Why are you touching this when you should be finding kitten?"; +45: return "A glorious fan of peacock feathers."; +46: return "It's some compromising photos of Babar the Elephant."; +47: return "A copy of the Weekly World News. Watch out for the chambered nautilus!"; +48: return "It's the proverbial wet blanket."; +49: return "A ~Get Out of Jail Free~ card."; +50: return "An incredibly expensive ~Mad About You~ collector plate."; +51: return "Paul Moyer's necktie."; +52: return "A haircut and a real job. Now you know where to get one!"; +53: return "An automated robot-hater. It frowns disapprovingly at you."; +54: return "An automated robot-liker. It smiles at you."; +55: return "It's a black hole. Don't fall in!"; +56: return "Just a big brick wall."; +57: return "You found kitten! No, just kidding."; +58: return "Heart of Darkness brand pistachio nuts."; +59: return "A smoking branding iron shaped like a 24-pin connector."; +60: return "It's a Java applet."; +61: return "An abandoned used-car lot."; +62: return "A shameless plug for Crummy: http://www.crummy.com/"; +63: return "A shameless plug for the UCLA Linux Users Group: http://linux.ucla.edu/"; +64: return "A can of Spam Lite."; +65: return "This is another fine mess you've gotten us into, Stanley."; +66: return "It's scenery for ~Waiting for Godot~."; +67: return "This grain elevator towers high above you."; +68: return "A Mentos wrapper."; +69: return "It's the constellation Pisces."; +70: return "It's a fly on the wall. Hi, fly!"; +71: return "This kind of looks like kitten, but it's not."; +72: return "It's a banana! Oh, joy!"; +73: return "A helicopter has crashed here."; +74: return "Carlos Tarango stands here, doing his best impression of Pat Smear."; +75: return "A patch of mushrooms grows here."; +76: return "A patch of grape jelly grows here."; +77: return "A spindle, and a grindle, and a bucka-wacka-woom!"; +78: return "A geyser sprays water high into the air."; +79: return "A toenail? What good is a toenail?"; +80: return "You've found the fish! Not that it does you much good in this game."; +81: return "A Buttertonsils bar."; +82: return "One of the few remaining discoes."; +83: return "Ah, the uniform of a Revolutionary-era minuteman."; +84: return "A punch bowl, filled with punch and lemon slices."; +85: return "It's nothing but a G-thang, baby."; +86: return "IT'S ALIVE! AH HA HA HA HA!"; +87: return "This was no boating accident!"; +88: return "Wait! This isn't the poker chip! You've been tricked! DAMN YOU, MENDEZ!"; +89: return "A livery stable! Get your livery!"; +90: return "It's a perpetual immobility machine."; +91: return "~On this spot in 1962, Henry Winkler was sick.~"; +92: return "There's nothing here; it's just an optical illusion."; +93: return "The World's Biggest Motzah Ball!"; +94: return "A tribe of cannibals lives here. They eat Malt-O-Meal for breakfast, you know."; +95: return "This appears to be a rather large stack of trashy romance novels."; +96: return "Look out! Exclamation points!"; +97: return "A herd of wild coffee mugs slumbers here."; +98: return "It's a limbo bar! How low can you go?"; +99: return "It's the horizon. Now THAT'S weird."; +100: return "A vase full of artificial flowers is stuck to the floor here."; +101: return "A large snake bars your way."; +102: return "A pair of saloon-style doors swing slowly back and forth here."; +103: return "It's an ordinary bust of Beethoven... but why is it painted green?"; +104: return "It's TV's lovable wisecracking Crow! ~Bite me!~, he says."; +105: return "Hey, look, it's war. What is it good for? Absolutely nothing. Say it again."; +106: return "It's the amazing self-referential thing that's not kitten."; +107: return "A flamboyant feather boa. Now you can dress up like Carol Channing!"; +108: return "~Sure hope we get some rain soon,~ says Farmer Joe."; +109: return "~How in heck can I wash my neck if it ain't gonna rain no more?~ asks Farmer Al."; +110: return "~Topsoil's all gone, ma,~ weeps Lil' Greg."; +111: return "This is a large brown bear. Oddly enough, it's currently peeing in the woods."; +112: return "A team of arctic explorers is camped here."; +113: return "This object here appears to be Louis Farrakhan's bow tie."; +114: return "This is the world-famous Chain of Jockstraps."; +115: return "A trash compactor, compacting away."; +116: return "This toaster strudel is riddled with bullet holes!"; +117: return "It's a hologram of a crashed helicopter."; +118: return "This is a television. On screen you see a robot strangely similar to yourself."; +119: return "This balogna has a first name, it's R-A-N-C-I-D."; +120: return "A salmon hatchery? Look again. It's merely a single salmon."; +121: return "It's a rim shot. Ba-da-boom!"; +122: return "It's creepy and it's kooky, mysterious and spooky. It's also somewhat ooky."; +123: return "This is an anagram."; +124: return "This object is like an analogy."; +125: return "It's a symbol. You see in it a model for all symbols everywhere."; +126: return "The object pushes back at you."; +127: return "A traffic signal. It appears to have been recently vandalized."; +128: return "~There is no kitten!~ cackles the old crone. You are shocked by her blasphemy."; +129: return "This is a Lagrange point. Don't come too close now."; +130: return "The dirty old tramp bemoans the loss of his harmonica."; +131: return "Look, it's Fanny the Irishman!"; +132: return "What in blazes is this?"; +133: return "It's the instruction manual for a previous version of this game."; +134: return "A brain cell. Oddly enough, it seems to be functioning."; +135: return "Tea and/or crumpets."; +136: return "This jukebox has nothing but Cliff Richards albums in it."; +137: return "It's a Quaker Oatmeal tube, converted into a drum."; +138: return "This is a remote control. Being a robot, you keep a wide berth."; +139: return "It's a roll of industrial-strength copper wire."; +140: return "Oh boy! Grub! Er, grubs."; +141: return "A puddle of mud, where the mudskippers play."; +142: return "Plenty of nothing."; +143: return "Look at that, it's the Crudmobile."; +144: return "Just Walter Mattheau and Jack Lemmon."; +145: return "Two crepes, two crepes in a box."; +146: return "An autographed copy of ~Primary Colors~, by Anonymous."; +147: return "Another rabbit? That's three today!"; +148: return "It's a segmentation fault. Core dumped, by the way."; +149: return "A historical marker showing the actual location of /dev/null."; +150: return "Thar's Mobius Dick, the convoluted whale. Arrr!"; +151: return "It's a charcoal briquette, smoking away."; +151: return "A pizza, melting in the sun."; +152: return "It's a ~HOME ALONE 2: Lost in New York~ novelty cup."; +153: return "A stack of 7 inch floppies wobbles precariously."; +153: return "It's nothing but a corrupted floppy. Coaster anyone?"; +154: return "A section of glowing phosphor cells sings a song of radiation to you."; +155: return "This TRS-80 III is eerily silent."; +156: return "A toilet bowl occupies this space."; +157: return "This peg-leg is stuck in a knothole!"; +158: return "It's a solitary vaccuum tube."; +159: return "This corroded robot is clutching a mitten."; +160: return "~Hi, I'm Anson Williams, TV's 'Potsy'.~"; +161: return "This subwoofer was blown out in 1974."; +162: return "Three half-pennies and a wooden nickel."; +163: return "It's the missing chapter to ~A Clockwork Orange~."; +164: return "It's a burrito stand flyer. ~Taqueria El Ranchito~."; +165: return "This smiling family is happy because they eat LARD."; +166: return "Roger Avery, persona un famoso de los Estados Unidos."; +167: return "Ne'er but a potted plant."; +168: return "A parrot, kipping on its back."; +169: return "A forgotten telephone switchboard."; +170: return "A forgotten telephone switchboard operator."; +171: return "It's an automated robot-disdainer. It pretends you're not there."; +172: return "It's a portable hole. A sign reads: ~Closed for the winter~."; +173: return "Just a moldy loaf of bread."; +174: return "A little glass tub of Carmex. ($.89) Too bad you have no lips."; +175: return "A Swiss-Army knife. All of its appendages are out. (toothpick lost)"; +176: return "It's a zen simulation, trapped within an ASCII character."; +177: return "It's a copy of ~The Rubaiyat of Spike Schudy~."; +178: return "It's ~War and Peace~ (unabridged, very small print)."; +179: return "A willing, ripe tomato bemoans your inability to digest fruit."; +180: return "A robot comedian. You feel amused."; +181: return "It's KITT, the talking car."; +182: return "Here's Pete Peterson. His batteries seem to have long gone dead."; +183: return "~Blup, blup, blup~, says the mud pot."; +184: return "More grist for the mill."; +185: return "Grind 'em up, spit 'em out, they're twigs."; +186: return "The boom box cranks out an old Ethel Merman tune."; +187: return "It's ~Finding kitten~, published by O'Reilly and Associates."; +188: return "Pumpkin pie spice."; +189: return "It's the Bass-Matic '76! Mmm, that's good bass!"; +190: return "~Lend us a fiver 'til Thursday~, pleas Andy Capp."; +191: return "It's a tape of '70s rock. All original hits! All original artists!"; +192: return "You've found the fabled America Online disk graveyard!"; +193: return "Empty jewelboxes litter the landscape."; +194: return "It's the astounding meta-object."; +195: return "Ed McMahon stands here, lost in thought. Seeing you, he bellows, ~YES SIR!~"; +196: return "...thingy???"; +197: return "It's 1000 secrets the government doesn't want you to know!"; +198: return "The letters O and R."; +199: return "A magical... magic thing."; +200: return "It's a moment of silence."; +201: return "It's Sirhan-Sirhan, looking guilty."; +202: return "It's ~Chicken Soup for the Kitten-seeking Soulless Robot.~"; +203: return "It is a set of wind-up chatter teeth."; +204: return "It is a cloud shaped like an ox."; +205: return "You see a snowflake here, melting slowly."; +206: return "It's a big block of ice. Something seems to be frozen inside it."; +207: return "Vladimir Lenin's casket rests here."; +208: return "It's a copy of ~Zen and The Art of Robot Maintenance~."; +209: return "This invisible box contains a pantomime horse."; +210: return "A mason jar lies here open. It's label reads: ~do not open!~."; +211: return "A train of thought chugs through here."; +212: return "This jar of pickles expired in 1957."; +213: return "Someone's identity disk lies here."; +214: return "~Yes!~ says the bit."; +215: return "~No!~ says the bit."; +216: return "A dodecahedron bars your way."; +217: return "Mr. Hooper is here, surfing."; +218: return "It's a big smoking fish."; +219: return "You have new mail in /var/spool/robot"; +220: return "Just a monitor with the blue element burnt out."; +221: return "A pile of coaxial plumbing lies here."; +222: return "It's a rotten old shoe."; +223: return "It's a hundred-dollar bill."; +224: return "It's a Dvorak keyboard."; +225: return "It's a cardboard box full of 8-tracks."; +226: return "Just a broken hard drive containg the archives of Nerth Pork."; +227: return "A broken metronome sits here, it's needle off to one side."; +228: return "A sign reads: ~Go home!~"; +229: return "A sign reads: ~No robots allowed!~"; +230: return "It's the handheld robotfindskitten game, by Tiger."; +231: return "This particular monstrosity appears to be ENIAC."; +232: return "This is a tasty-looking banana creme pie."; +233: return "A wireframe model of a hot dog rotates in space here."; +234: return "Just the empty husk of a locust."; +235: return "You disturb a murder of crows."; +236: return "It's a copy of the RobotFindsKitten EULA."; +237: return "It's Death."; +238: return "It's an autographed copy of ~Secondary Colors~, by Bob Ross."; +239: return "It is a marzipan dreadnought that appears to have melted and stuck."; +240: return "It's a DVD of ~Crouching Monkey, Hidden Kitten~, region encoded for the moon."; +241: return "It's Kieran Hervold. Damn dyslexia!"; +242: return "A non-descript box of crackers."; +243: return "Carbonated Water, High Fructose Corn Syrup, Color, Phosphoric Acid, Flavors, Caffeine."; +244: return "~Move along! Nothing to see here!~"; +245: return "It's the embalmed corpse of Vladimir Lenin."; +246: return "A coupon for one free steak-fish at your local family diner."; +247: return "A set of keys to a 2001 Rolls Royce. Worthless."; + +! The following messages were added by David Griffith +! +248: return "It's the Golden Banana of Discord!"; +249: return "The Inform Designer's Manual (4th edition)"; +250: return "A packet of pipe cleaners."; +251: return "It's Andrew Plotkin plotting something."; +252: return "A half-eaten cheese sandwich."; +253: return "Clang, clang, clang goes the tranny!"; +254: return "A family of integrals are here integrating."; +255: return "A tuft of kitten fur, but no kitten."; +256: return "A bottle of oil! Refreshing!"; +257: return "A shameless plug for Frotz: http://www.cs.csubak.edu/~dgriffi/proj/frotz/"; +258: return "Clifford Stoll is here selling Klein bottles."; +259: return "You found the marble in the oatmeal!"; +260: return "An empty Altoids tin."; +261: return "An empty Penguin Mints tin."; +262: return "So, THAT's what an invisible barrier looks like!"; +263: return "A cluster of cattails are growing here."; +264: return "A discarded bagpipe chanter reed."; +265: return "Big Bird is here looking for Mr. Looper."; +266: return "It's a Linux install CD."; +267: return "You found Puppy! Too bad this isn't ~Robot Finds Puppy~."; +268: return "Several meters of cat5 cable."; +269: return "A scrap of parchment bears the single word, ~meow~."; +270: return "A puddle of chocolate sauce."; +271: return "Your robot pal Floyd is here and wants to play Hucka-Bucka-Beanstalk."; +272: return "Someone is talking to Ralph on the big white phone here."; +273: return "'Twas brillig in the slivey-toves..."; +274: return "Darth Vader is here looking for his Teddywookie."; +275: return "A bassoon is hooting angrily at you."; +276: return "Catsup and Mustard all over the place! It's the Human Hamburger!"; +277: return "Gibble, Gobble, we ACCEPT YOU ..."; +278: return "A rancid corn dog."; +279: return "It's a tribute to fishnet stockings."; +280: return "A jar of Vegemite is running down the hill here."; +281: return "Nipples, dimples, knuckles, NICKLES, wrinkles, pimples!!"; +282: return "A bottle of hair tonic."; +283: return "A packet of catnip."; + } +];