! robotfindskitten
! A Zen Simulation
-! Release 5 / Serial number 030524 / Inform v6.21
+! Release 7 / Serial number 040523 / Inform v6.21
!
! [-] |\_/| http://www.robotfindskitten.org
! (+)=C |o o|__ Leonard Richardson (C) 1997, 2000
! using the vi/rogue movement keys. The game ends when robotfindskitten.
! Alternatively, you may end the game by hitting the Esc or Q keys.
!
-! Developed with Inform 6.21.2 as installed from NetBSD's pkgsrc tree
+! Developed with Inform 6.21.4 as installed from NetBSD's pkgsrc tree
! and Frotz 2.42.
!
!
! 2) If it wasn't already abundantly obvious, this program won't
! compile to Glulx because of copious use of Z-machine assembly
! instructions.
+!
+! 3) Compiling for V5 or higher is required due to "style" calls.
+! Is there a reason why someone would want to compile this for V4
+! or previous?
!Switches xv5s;
-Switches v5;
+Switches v5d2;
! Number of messages
! This must be updated when adding new messages.
!
-Constant MESSAGE_NUM 602;
+Constant MESSAGE_NUM 800;
Constant Nonkitten_Default 20;
! Maxmimum possible number of non-kitten items on the playfield at once.
-! I don't know if there's a hard maximum for arrays built into the
-! Z-machine. It's just that Inform won't let me set an array's
-! dimensions at runtime.
+! For whatever reason, this cannot be set dynamically.
!
-Constant Nonkitten_Max 256;
+Constant Nonkitten_Max 589;
-Release 5;
-Serial "030524";
+Release 7;
+Serial "040523"; ! Presumed release date
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Constant Headline "^A Zen Simulation^";
-! Number of spaces from the left where Robot and Kitten meet during the
-! animation.
-!
-Constant Anim_Meet 10;
-! These are set at runtime.
-!
-Global Height = 0;
+Constant Anim_Meet 10; ! Number of spaces from the left where
+ ! Robot and Kitten meet during animation.
+
+Global Height = 0; ! These are set at runtime.
Global Width = 0;
-Global Back_def = 2;
-Global Fore_def = 9;
+Global Back_def = 2; ! Black.
+Global Fore_def = 9; ! White.
-Global TopBar = 5;
+Global TopBar = 5; ! Lines from the top.
-Global player_x = 0;
-Global player_y = 0;
-Global player_x_last = 0;
+Global player_x = 0; ! Keeping track of where the player was
+Global player_y = 0; ! 1 move ago allows us to keep the
+Global player_x_last = 0; ! player from walking through obstacles.
Global player_y_last = 0;
Global kitten_x = 0;
Global kitten_char = 0;
Global kitten_color = 0;
-Global last_message = "";
+Global last_message = ""; ! Always show the last-encountered message.
Global nonkitten_count = Nonkitten_Default;
Array already_y --> Nonkitten_Max + 2;
Array already_msg --> Nonkitten_Max;
-
+! If a key is held down while the found_kitten animation is playing,
+! (0-->1) & $03ff gets corrupted. Seems like it might be a bug
+! somewhere in Unix Frotz.
+!
Global Real_Release = 0;
[ Main key;
nonkitten_count = Nonkitten_Default;
}
- ! If a key is held down while the found_kitten animation is playing,
- ! (0-->1) & $03ff gets corrupted. Seems like it might be a bug
- ! somewhere in Unix Frotz.
- !
Real_Release = (0-->1)&$03ff;
Width = $22-->0;
'I': print_instructions();
'A': print_about();
'T': print_thoughts();
-! 'P': print_all_nki();
+! 'P': print_all_nki(); ! See print_all_nki() below.
}
if (key == 'Q' || key == $1b) ! $1b == ESC
break;
[ main_menu psycho;
+ ! There's a 1:50 chance that the kitten in the title screen
+ ! will have a "psycho" appearance.
+ !
psycho = random(50);
if (psycho == 1)
psycho = true;
print "Leonard Richardson (C) 1997, 2000";
@set_cursor 9 30;
print "David Griffith (C) 2002 (Inform Edition)";
-
@set_cursor 10 30;
print " ", MESSAGE_NUM, " different nonkittens!";
@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 "^> ";
+ print " F) Find Kitten^",
+ " D) Difficulty (", nonkitten_count, ")^",
+ " I) Instructions^",
+ " T) Thoughts^",
+ " A) About^",
+ " Q) Quit^",
+ "^> ";
];
-! Copied from module/verblibm.h
+
+! Copied from module/verblibm.h of the Inform 6.21.3 standard library.
!
[ Banner i;
if (Story ~= 0) {
-#IFV5;
style bold;
-#ENDIF;
print (string) Story;
-#IFV5;
style roman;
-#ENDIF;
}
if (Headline ~= 0) {
print (string) Headline;
if (cx < len && inbuf->(2+cx) == '.')
break;
- ! If user just hit return, use what we have already.
+ ! If user just hits return, use what we have already.
if (len == 0)
return init;
if (cx == len || inbuf->(2+cx) < '0' || inbuf->(2+cx) > '9') {
- Idiotic typos fixed.^
- More NKIs added (602 total).^
^
+Release 6 / Serial Number 031116^
+Challenge release.^
+- More NKIs added (764 total).^
+- Increased maximum difficulty to 589.^
+- Lots more comments in the source code.^
+- Assorted cleanups in the source code.^
+^
+Release 7 / Serial Number 040523^
+Grammatically correct release.^
+- Grammar corrections from the POSIX port added.^
+- More NKIs added (800 total).^
+^
^
Known Bugs:^
^
^
2) Under earlier versions of Windows Frotz, Robot used to appear as a
solid block. This was because of a bug in Windows Frotz which
-incorrectly makes the cursor opaque. The cursor is now moved off to
+incorrectly makes the cursor opaque. The cursor is now moved off to
the upper-right corner so that the game looks okay on terminals that use
-something other than reverse for the cursor. I still can't figure out
-how to make Inform hide the cursor completely. At least on xterm and
+something other than reverse for the cursor. I still can't figure out
+how to make Inform hide the cursor completely. At least on xterm and
NetBSD's console, @@64set_cursor -1 doesn't work.^
^
3) Under Windows Frotz, an annoying [MORE] prompt might appear at the
-main menu. This is another bug in Windows Frotz which causes the
+main menu. This is another bug in Windows Frotz which causes the
interpreter to follow Windows' suggestion that something less than 24 or
25 lines is okay.^
^
-^
-Other Stuff:^
-^
-1) PalmOS mode and screen-resizing was removed because PalmOS mode stunk
-and screen-resizing was a failed attempt to make PalmOS mode work. The
-native PalmOS port of robotfindskitten looks much better than the Inform
-version running on a PalmOS Z-machine interpreter.^
-^
[Press any key to continue.] ";
getkey();
];
[ print_instructions;
-
@erase_window $ffff;
@split_window TopBar;
@set_window 1;
@set_window 0;
print "^
In this game, you are Robot ( ";
-#IFV5; style reverse; #ENDIF;
-print "#";
-#IFV5; style roman; #ENDIF;
-print " ). 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 (make sure
-numlock is on), or using the vi/rogue/nethack movement keys. The game
-ends when robotfindskitten. Alternatively, you may end the game by
-hitting the Esc or Q keys.^
+style reverse; print "#"; style roman;
+print " ). 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 (make sure numlock is on), or using the
+vi/rogue/nethack movement keys. The game ends when robotfindskitten.
+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;
@set_colour Fore_def Back_def;
];
+
! Something gets messed up if I make this local to findkitten()
! When going right or left, then up or down to hit the Kitten, the
! animation gets reversed.
draw_object(kitten_x, kitten_y, kitten_char, kitten_color);
draw_nonkittens();
- #IFV5; style reverse; #ENDIF;
+ style reverse;
draw_object(player_x, player_y, '#');
- #IFV5; style roman; #ENDIF;
+ style roman;
@set_cursor 1 Width;
if (i > 0) {
if (my_last_right) {
robot_x = Anim_Meet - i;
- #IFV5; style reverse; #ENDIF;
+ style reverse;
draw_object(robot_x, TopBar - 1, '#');
- #IFV5; style roman; #ENDIF;
+ style roman;
draw_object(Anim_Meet - 1 + i, TopBar - 1,
kitten_char, kitten_color);
} else {
robot_x = Anim_Meet - 1 + i;
- #IFV5; style reverse; #ENDIF;
+ style reverse;
draw_object(robot_x, TopBar - 1, '#');
- #IFV5; style roman; #ENDIF;
+ style roman;
draw_object(Anim_Meet - i, TopBar - 1,
kitten_char, kitten_color);
}
draw_object(kitten_x, kitten_y, kitten_char, kitten_color);
- #IFV5; style reverse; #ENDIF;
+ style reverse;
draw_object(player_x, player_y, '#');
- #IFV5; style roman; #ENDIF;
+ style roman;
draw_nonkittens();
if (anim_finished == false) {
@set_cursor 1 Width;
@aread junk 0 10 pause -> junk;
} else {
- #IFV5; style reverse; #ENDIF;
+ style reverse;
draw_object(player_x, player_y, '#');
- #IFV5; style roman; #ENDIF;
+ style roman;
@set_cursor 1 Width;
}
}
];
+
[ already_seen_xy x y i;
for (i = 0: i < already_count: i++) {
if (already_x-->already_count == x &&
kitten_x = get_random_x();
kitten_y = get_random_y();
kitten_color = get_random_color();
-
while (already_seen_xy(kitten_x, kitten_y) == true) {
kitten_x = get_random_x();
kitten_y = get_random_y();
[ init_robot;
player_x = get_random_x();
player_y = get_random_y();
-
while (already_seen_xy(player_x, player_y) == true) {
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();
nonkitten_color-->i = get_random_color();
-
while (already_seen_xy(nonkitten_x-->i,
nonkitten_y-->i) == true) {
nonkitten_x-->i = get_random_x();
if (fore == "")
fore = Back_def;
if (back == "")
- back = Back_def;
-
+ back = Back_def;
@set_colour fore Back_def;
if (character)
print (char) character;
@set_colour Fore_def Back_def;
-
];
return num;
];
+
[ get_random_color num;
num = random(7) + 2;
! 0 and 1 are default color and current color
[ get_random_x;
+ ! Maybe this will need to do something more in the future.
return random(Width);
];
-[ get_random_y num ok;
- ok = false;
+[ get_random_y num;
! Make sure we don't draw in the status bar.
- while (ok == false) {
+ while (true) {
num = random(Height);
if (num > TopBar)
- ok = true;
+ return num;
}
- return num;
];
! development team.
!
! When this function is uncommented and enabled in
-! the menu, this will cause a script file to be emitted which contains
+! the menu, this will cause a script file to be written which contains
! all NKIs properly formatted.
![ print_all_nki num mystring;
!];
-! Note:
+! To use '~' or '@' in NKIs, keep the following in mind:
! @@126 == '~'
! @@64 == '@'
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.";
+82: return "One of the few remaining discos.";
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.";
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!";
+93: return "The World's Biggest Matzoh 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!";
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.";
+158: return "It's a solitary vacuum 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.";
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!~.";
+210: return "A mason jar lies here open. Its 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.";
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.";
+227: return "A broken metronome sits here, its 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.";
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.";
+254: return "A family of integrals is 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/@@126dgriffi/proj/frotz/";
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~.";
+267: return "You found Puppy! Too bad this isn't ~robotfindspuppy~.";
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.";
325: return "This nonkitten may contain peanuts.";
326: return "A tree with some jelly nailed to it.";
327: return "Ah, the skirl of the pipes and the rustle of the silicon...";
-328: return "You found Parakeet. Too bad this isn't ~Robot Finds Parakeet~.";
+328: return "You found Parakeet! Too bad this isn't ~robotfindsparakeet~.";
329: return "A ball of yarn.";
330: return "A big chunk of frozen chocolate pudding.";
331: return "There is no tea here.";
353: return "What's that blue thing doing here?";
354: return "A travel-sized cyclotron.";
355: return "A largish bath towel.";
-356: return "You found Chinchilla! Too bad this isn't ~Robot Finds Chinchilla~.";
+356: return "You found Chinchilla! Too bad this isn't ~robotfindschinchilla~.";
357: return "A meerkat... not even close.";
358: return "A green yo-yo.";
359: return "A hairless rat.";
600: return "A slightly-used smellovision set.";
601: return "Doodles Weaver is here looking over a horse race schedule.";
602: return "An overflowing bit bucket.";
-default: return "Unknown NKI";
+
+! The following Non Kitten Items were added by David Griffith for
+! Release 6
+!
+603: return "Blarg!";
+604: return "It's a hairy-armed hitchhiker!";
+605: return "A wolf wearing a nightgown is in bed here.";
+606: return "A gecko zooms about on a skateboard here.";
+607: return "A hovercraft full of eels is parked here.";
+608: return "A waffle iron is here and it's still hot.";
+609: return "A huge pile of pancakes.";
+610: return "A threadbare tweed suit.";
+611: return "A rusted safety pin.";
+612: return "A model of a twin-hulled sailboat.";
+613: return "A jar of lemon curd.";
+614: return "~We interrupt this Zen Simulation...~";
+615: return "A sealed tin bearing only the word ~yummy~.";
+616: return "It's a groat coated with pocket fluff.";
+617: return "You find an Atari 2600 game cartridge with no label.";
+618: return "A child's drawing of a kitten.";
+619: return "It's a small bouncy creature, but obviously not kitten.";
+620: return "It's an unknown area code.";
+621: return "A bottle of ammonia.";
+622: return "Tweeting birds.";
+623: return "It's a rapidly oscillating function.";
+624: return "A dogcow moofs at you.";
+625: return "A puddle of purple semi-gloss latex paint.";
+626: return "It's a merry-go-round (broken down).";
+627: return "The pants that Curly died in.";
+628: return "A vanilla pudding pop.";
+629: return "It's Jesse James' severed hand and it's still moving.";
+630: return "It's more money than you'll ever need.";
+631: return "A tiny robot scuttles across the floor.";
+632: return "Chunk is here doing the truffle-shuffle.";
+633: return "Data is here setting up some booty traps.";
+634: return "A waterlogged grand piano.";
+635: return "One liter of fuming nitric acid.";
+636: return "A gold-dipped rose.";
+637: return "Bronzed baby shoes.";
+638: return "An electric engraving pencil.";
+639: return "A small, featureless, white cube.";
+640: return "It's a battery-powered brass lantern.";
+641: return "It's an elongated brown sack, smelling of hot peppers.";
+642: return "A glass bottle containing a quantity of water.";
+643: return "It's a blob of red goo.";
+644: return "It's a blob of blue goo.";
+645: return "It's a blob of yellow goo.";
+646: return "It's a blob of green goo.";
+647: return "It's a blob of orange goo.";
+648: return "It's a blob of purple goo.";
+649: return "It's a blob of black goo.";
+650: return "It's a blob of brown goo.";
+651: return "A Scooby Snack! Yay!";
+652: return "A squirrel contentedly gnaws on a sprinkler head here.";
+653: return "Snacky things.";
+654: return "A toupee.";
+655: return "Seat cushion fluff.";
+656: return "Jacket fluff.";
+657: return "Haven't you touched this thing before?";
+658: return "It's a copy of the Book of Found Kittens.";
+659: return "It's a nasty knife.";
+660: return "It's a grue. Fortunately, they don't like to eat robots.";
+661: return "It's a phone book for the 661 area code.";
+662: return "A tiny velvet pouch.";
+663: return "Brass tacks.";
+664: return "It's a rotating potato.";
+665: return "Leave that thing alone!";
+666: return "It's the mark of the beast!";
+667: return "A tube of heat sink grease.";
+668: return "A dead battery.";
+669: return "A pile of irrigation valves.";
+670: return "A stony meteorite.";
+671: return "An iron meteorite.";
+672: return "It's a fragment of an old Russian spacecraft.";
+673: return "A large block of dry ice.";
+674: return "It's a Commodore 64 computer (in mint condition).";
+675: return "It's an Apple II+ computer (in mint condition).";
+676: return "It's a Kaypro II portable computer.";
+677: return "It's a Texas Instruments TI-89 graphing calculator.";
+678: return "It's an Atari 800 computer.";
+679: return "It's an Amiga 2000 computer.";
+680: return "An oddly familiar face shouts ~SCREWTEK!~ from this computer monitor.";
+681: return "It's an Osborne portable computer.";
+682: return "It's a nameless MSX computer from Japan.";
+683: return "A vacuum cleaner appears to have exploded here.";
+684: return "It's a model of a catamaran.";
+685: return "A cardboard box of sheet metal screws.";
+686: return "A brown glass vial labeled ~tincture of iodine~.";
+687: return "Just some sort of cat toy.";
+688: return "It's a large pile of crumpled notepaper.";
+689: return "You've found the decoy kitten!";
+690: return "It's a pile of wine corks.";
+691: return "A neat pile of plastic irrigation pipe.";
+692: return "It's one of those carpet-covered things for cats to climb.";
+693: return "This thing appears to be an ancient Roman breastplate.";
+694: return "A claymore.";
+695: return "An unripe orange.";
+696: return "A toy zeppelin.";
+697: return "It's a bucket of mud.";
+698: return "It's a bucket of water.";
+699: return "A clay pot with grass growing it in sits here.";
+700: return "A discarded envelope chewed by Kitten.";
+701: return "A hollow voice says ~Fool!~";
+702: return "Several hackles are here and they appear to be up.";
+703: return "Just some spite.";
+704: return "Vitriol.";
+705: return "There is a small mailbox here.";
+706: return "A large oriental rug.";
+707: return "It's an elvish sword of great antiquity.";
+708: return "A large coil of rope is here.";
+709: return "You've found a speed bump.";
+710: return "It's a whirly thing of some sort.";
+711: return "An empty Slurpee cup.";
+712: return "This is a disaster area.";
+713: return "A small box of fishing weights.";
+714: return "A street map of the city of Anaheim.";
+715: return "Bits of red construction paper are scattered all about.";
+716: return "You won't believe what this is.";
+717: return "A meat-scented air-freshener on a string dances in the breeze.";
+718: return "A intact clay pigeon.";
+719: return "Pieces of broken clay pigeons are scattered all about.";
+720: return "This looks like a skateboarding arcade video game.";
+721: return "It's a steaming bowl of homemade gnocci.";
+722: return "An electric fan lies on its side here.";
+723: return "It's something fizzy.";
+724: return "A hickory stump.";
+725: return "This tiny barbecue is spotlessly clean.";
+726: return "A saucer of milk, untouched by Kitten.";
+727: return "Insane laughter issues from this vibrating shipping crate.";
+728: return "Haven't you checked here already?";
+729: return "Just some rusted lug nuts and an ancient hub cap.";
+730: return "A rusty crowbar.";
+731: return "A post hole digger is stuck in a pile of dirt here.";
+732: return "It's a spade.";
+733: return "It's the Queen of Hearts! ~Off with their heads!~, she shouts.";
+734: return "An assortment of highly-nutritious vegetables.";
+735: return "A dead click beetle.";
+736: return "A roll of scratch-and-sniff stickers.";
+737: return "A roll of duct tape.";
+738: return "Someone dropped a cheap ballpoint pen here.";
+739: return "Someone dropped an expensive fountain pen here.";
+740: return "You've found the Gingerbread Man!";
+741: return "You've found the Stinky Cheese Man!";
+742: return "This looks like an umbrella turned inside out.";
+743: return "3.14159... Pi is all over the place here...";
+744: return "You almost mistook this meatloaf for Kitten.";
+745: return "This drawer is full of dried out rubber stoppers.";
+746: return "A flask of hydrochloric acid is here.";
+747: return "Why are you bothering that old man instead of finding Kitten?";
+748: return "It's a hyperkinetic rabbity thing.";
+749: return "A dog dressed in a cheap suit is here.";
+750: return "~Help me Robot! You're my only hope!~";
+751: return "You found Budgie! Too bad this isn't ~robotfindsbudgie~.";
+752: return "It's a sleeping lion.";
+753: return "It's an example of the infamous space-cadet keyboard.";
+754: return "You find a random assortment of dots and dashes.";
+755: return "Nothing but some scribbles in crayon.";
+756: return "It's a week-old baloney sandwich.";
+757: return "It's a red stapler.";
+758: return "It's a red staple-remover.";
+759: return "It's a ~Wicked Tinkers~ CD.";
+760: return "You see a rhinestone-studded dog collar, but no dog.";
+761: return "It's a box of lox.";
+762: return "It's a box of pinball machine parts.";
+763: return "You've discovered an enormous pile of socks.";
+764: return "It's a photograph of Kitten.";
+
+! The following Non Kitten Items were added by David Griffith for
+! Release 7
+!
+765: return "It's a copy editor, reading aloud from the Associated Press Stylebook.";
+765: return "It's a copy editor, reading aloud from the MLA Stylebook.";
+766: return "Kitty kibble is scattered all about.";
+767: return "A bartender growls, ~No robots allowed!~";
+768: return "It's a Franklin Ebookman.";
+769: return "It's a child's kitten pull-toy.";
+770: return "~I'm Speed Racer and I drive real fast!~";
+771: return "~I drive real fast. I'm gonna last.~";
+772: return "~I'm a big pirate and I like to steal!~";
+773: return "~I like to steal and I like to kill!~";
+774: return "~I'm a Barbie doll but I've got brains!~";
+775: return "~I'm your doctor and here's the bill.~";
+776: return "Go! Go! Go, Speed Racer!";
+777: return "It's a Boeing 777 airliner.";
+778: return "Someone is taking time out for fun here.";
+779: return "You see a street lamp and a lamplighter here.";
+780: return "A broken cricket bat.";
+781: return "It's a mint-condition IMSAI 8080 computer!";
+782: return "A hollow voice says ~xyzzy~.";
+783: return "Wimpy is here asking for a hamburger.";
+784: return "You found Olive Oyl!";
+785: return "It's Popeye!";
+786: return "Bluto is here looking for Olive Oyl.";
+787: return "~Et tu, Brutus?~";
+788: return "The bodily remains of a Roman emperor.";
+789: return "Yay! It's a hoola hoop!";
+790: return "The Smart Patrol is here.";
+791: return "It's an old sandal.";
+792: return "It's a feather duster.";
+793: return "It's a zipper.";
+794: return "It's an old crumhorn with a broken reed.";
+795: return "A sticky old cough drop.";
+796: return "A jar of buttons.";
+797: return "A bearded dragon lizard is sitting here.";
+798: return "A garden toad.";
+799: return "A garden gnome.";
+800: return "A garden weasel.";
+
+default: return "Unknown NKI (this should not happen)";
}
];