summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Janzen <pjanzen@cvs.openbsd.org>2000-07-03 05:23:47 +0000
committerPaul Janzen <pjanzen@cvs.openbsd.org>2000-07-03 05:23:47 +0000
commit07fa35ce134f0db4619e4f6f624a73f734592b00 (patch)
treea244e6f77987cb2dd58051e6465abe2a52fcac17
parenteb9c0ff585d2e7d471d66b411a6de67434fb6a82 (diff)
Finding bugs in battlestar is like shooting fish in a barrel.
Don't overflow beenthere[]. Add "verbose" option. Fix spelling (including embedded hyphens in descriptions) and grammar. "Kill" will now use the laser if you have no cutting implements. Formatting. You can do more things to the bathing goddess. A little less guess-the-word. Occasionally better error messages, particularly with "all" when nothing applies. "kick door" no longer segfaults. Nor does "kill door". More bugs remain...
-rw-r--r--games/battlestar/battlestar.c7
-rw-r--r--games/battlestar/com1.c8
-rw-r--r--games/battlestar/com2.c53
-rw-r--r--games/battlestar/com3.c7
-rw-r--r--games/battlestar/com4.c74
-rw-r--r--games/battlestar/com5.c46
-rw-r--r--games/battlestar/com6.c38
-rw-r--r--games/battlestar/cypher.c79
-rw-r--r--games/battlestar/dayfile.c22
-rw-r--r--games/battlestar/extern.h18
-rw-r--r--games/battlestar/globals.c11
-rw-r--r--games/battlestar/nightfile.c28
-rw-r--r--games/battlestar/room.c15
-rw-r--r--games/battlestar/words.c340
14 files changed, 468 insertions, 278 deletions
diff --git a/games/battlestar/battlestar.c b/games/battlestar/battlestar.c
index d408710eff7..a2875e3b7ea 100644
--- a/games/battlestar/battlestar.c
+++ b/games/battlestar/battlestar.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: battlestar.c,v 1.7 1999/09/25 20:30:45 pjanzen Exp $ */
+/* $OpenBSD: battlestar.c,v 1.8 2000/07/03 05:23:43 pjanzen Exp $ */
/* $NetBSD: battlestar.c,v 1.3 1995/03/21 15:06:47 cgd Exp $ */
/*
@@ -44,7 +44,7 @@ static char copyright[] =
#if 0
static char sccsid[] = "@(#)battlestar.c 8.2 (Berkeley) 4/28/95";
#else
-static char rcsid[] = "$OpenBSD: battlestar.c,v 1.7 1999/09/25 20:30:45 pjanzen Exp $";
+static char rcsid[] = "$OpenBSD: battlestar.c,v 1.8 2000/07/03 05:23:43 pjanzen Exp $";
#endif
#endif /* not lint */
@@ -82,7 +82,8 @@ main(argc, argv)
initialize(argv[1]);
start:
news();
- beenthere[position]++;
+ if (beenthere[position] <= ROOMDESC)
+ beenthere[position]++;
if (notes[LAUNCHED])
crash(); /* decrements fuel & crash */
if (matchlight) {
diff --git a/games/battlestar/com1.c b/games/battlestar/com1.c
index 9f95e97af6a..99f3a7d300e 100644
--- a/games/battlestar/com1.c
+++ b/games/battlestar/com1.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: com1.c,v 1.7 1999/09/25 20:30:45 pjanzen Exp $ */
+/* $OpenBSD: com1.c,v 1.8 2000/07/03 05:23:44 pjanzen Exp $ */
/* $NetBSD: com1.c,v 1.3 1995/03/21 15:06:51 cgd Exp $ */
/*
@@ -38,7 +38,7 @@
#if 0
static char sccsid[] = "@(#)com1.c 8.2 (Berkeley) 4/28/95";
#else
-static char rcsid[] = "$OpenBSD: com1.c,v 1.7 1999/09/25 20:30:45 pjanzen Exp $";
+static char rcsid[] = "$OpenBSD: com1.c,v 1.8 2000/07/03 05:23:44 pjanzen Exp $";
#endif
#endif /* not lint */
@@ -126,10 +126,10 @@ news()
convert(TONIGHT);
ClearBit(location[POOLS].objects, BATHGOD);
if (OUTSIDE && ourtime - rythmn - CYCLE < 10) {
- puts("The dying sun sinks into the ocean, leaving a blood stained sunset.");
+ puts("The dying sun sinks into the ocean, leaving a blood-stained sunset.");
puts("The sky slowly fades from orange to violet to black. A few stars");
puts("flicker on, and it is night.");
- puts("The world seems completly different at night.");
+ puts("The world seems completely different at night.");
}
}
rythmn = ourtime - ourtime % CYCLE;
diff --git a/games/battlestar/com2.c b/games/battlestar/com2.c
index 19d91083257..792e9efe468 100644
--- a/games/battlestar/com2.c
+++ b/games/battlestar/com2.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: com2.c,v 1.7 1999/09/25 20:30:45 pjanzen Exp $ */
+/* $OpenBSD: com2.c,v 1.8 2000/07/03 05:23:44 pjanzen Exp $ */
/* $NetBSD: com2.c,v 1.3 1995/03/21 15:06:55 cgd Exp $ */
/*
@@ -38,7 +38,7 @@
#if 0
static char sccsid[] = "@(#)com2.c 8.2 (Berkeley) 4/28/95";
#else
-static char rcsid[] = "$OpenBSD: com2.c,v 1.7 1999/09/25 20:30:45 pjanzen Exp $";
+static char rcsid[] = "$OpenBSD: com2.c,v 1.8 2000/07/03 05:23:44 pjanzen Exp $";
#endif
#endif /* not lint */
@@ -178,12 +178,39 @@ murder()
{
int n;
- for (n = 0; !((n == SWORD || n == KNIFE || n == TWO_HANDED || n == MACE || n == CLEAVER || n == BROAD || n == CHAIN || n == SHOVEL || n == HALBERD) && TestBit(inven, n)) && n < NUMOFOBJECTS; n++);
- if (n == NUMOFOBJECTS)
- puts("You don't have suitable weapons to kill.");
- else {
+ for (n = 0; !((n == SWORD || n == KNIFE || n == TWO_HANDED || n == MACE || n == CLEAVER || n == BROAD || n == CHAIN || n == SHOVEL || n == HALBERD) && TestBit(inven, n)) && n < NUMOFOBJECTS; n++)
+ ;
+ if (n == NUMOFOBJECTS) {
+ if (TestBit(inven, LASER)) {
+ printf("Your laser should do the trick.\n");
+ n = wordnumber;
+ while (wordtype[++n] == ADJS)
+ ;
+ switch(wordvalue[n]) {
+ case NORMGOD:
+ case TIMER:
+ case NATIVE:
+ case MAN:
+ wordvalue[wordnumber] = SHOOT;
+ cypher();
+ break;
+ case -1:
+ puts("Kill what?");
+ break;
+ default:
+ if (wordtype[n] != OBJECT)
+ puts("You can't kill that!");
+ else
+ printf("You can't kill the %s!\n",
+ objsht[wordvalue[n]]);
+ break;
+ }
+ } else
+ puts("You don't have suitable weapons to kill.");
+ } else {
printf("Your %s should do the trick.\n", objsht[n]);
- while (wordtype[++wordnumber] == ADJS);
+ while (wordtype[++wordnumber] == ADJS)
+ ;
switch (wordvalue[wordnumber]) {
case NORMGOD:
@@ -236,8 +263,8 @@ murder()
break;
default:
- if (wordtype[wordnumber] != NOUNS)
- puts("Kill what?");
+ if (wordtype[wordnumber] != OBJECT)
+ puts("You can't kill that!");
else
printf("You can't kill the %s!\n",
objsht[wordvalue[wordnumber]]);
@@ -249,12 +276,16 @@ void
ravage()
{
while (wordtype[++wordnumber] != NOUNS && wordnumber <= wordcount);
- if (wordtype[wordnumber] == NOUNS && TestBit(location[position].objects, wordvalue[wordnumber])) {
+ if (wordtype[wordnumber] == NOUNS && (TestBit(location[position].objects, wordvalue[wordnumber])
+ || (wordvalue[wordnumber] == NORMGOD && TestBit(location[position].objects, BATHGOD)))) {
ourtime++;
switch (wordvalue[wordnumber]) {
case NORMGOD:
puts("You attack the goddess, and she screams as you beat her. She falls down");
- puts("crying and tries to hold her torn and bloodied dress around her.");
+ if (TestBit(location[position].objects, BATHGOD))
+ puts("crying and tries to cover her nakedness.");
+ else
+ puts("crying and tries to hold her torn and bloodied dress around her.");
power += 5;
pleasure += 8;
ego -= 10;
diff --git a/games/battlestar/com3.c b/games/battlestar/com3.c
index cc24bf7bcfc..43ef6a5eb19 100644
--- a/games/battlestar/com3.c
+++ b/games/battlestar/com3.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: com3.c,v 1.6 1999/09/25 20:30:45 pjanzen Exp $ */
+/* $OpenBSD: com3.c,v 1.7 2000/07/03 05:23:44 pjanzen Exp $ */
/* $NetBSD: com3.c,v 1.3 1995/03/21 15:07:00 cgd Exp $ */
/*
@@ -38,7 +38,7 @@
#if 0
static char sccsid[] = "@(#)com3.c 8.2 (Berkeley) 4/28/95";
#else
-static char rcsid[] = "$OpenBSD: com3.c,v 1.6 1999/09/25 20:30:45 pjanzen Exp $";
+static char rcsid[] = "$OpenBSD: com3.c,v 1.7 2000/07/03 05:23:44 pjanzen Exp $";
#endif
#endif /* not lint */
@@ -200,7 +200,8 @@ shoot()
if (!TestBit(inven, LASER))
puts("You aren't holding a blaster.");
else {
- while(wordtype[++wordnumber] == ADJS);
+ while(wordtype[++wordnumber] == ADJS)
+ ;
while(wordnumber <= wordcount && wordtype[wordnumber] == OBJECT) {
value = wordvalue[wordnumber];
printf("%s:\n", objsht[value]);
diff --git a/games/battlestar/com4.c b/games/battlestar/com4.c
index a7972db8e25..748f52f7ac9 100644
--- a/games/battlestar/com4.c
+++ b/games/battlestar/com4.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: com4.c,v 1.7 1999/09/25 20:30:45 pjanzen Exp $ */
+/* $OpenBSD: com4.c,v 1.8 2000/07/03 05:23:44 pjanzen Exp $ */
/* $NetBSD: com4.c,v 1.3 1995/03/21 15:07:04 cgd Exp $ */
/*
@@ -38,7 +38,7 @@
#if 0
static char sccsid[] = "@(#)com4.c 8.2 (Berkeley) 4/28/95";
#else
-static char rcsid[] = "$OpenBSD: com4.c,v 1.7 1999/09/25 20:30:45 pjanzen Exp $";
+static char rcsid[] = "$OpenBSD: com4.c,v 1.8 2000/07/03 05:23:44 pjanzen Exp $";
#endif
#endif /* not lint */
@@ -141,9 +141,9 @@ take(from)
if (TestBit(location[position].objects, AMULET)) {
puts("The amulet is warm to the touch, and its beauty catches your breath.");
puts("A mist falls over your eyes, but then it is gone. Sounds seem clearer");
- puts("and sharper but far away as if in a dream. The sound of purling water reaches");
- puts("you from afar. The mist falls again, and your heart leaps in horror. The gold");
- puts("freezes your hands and fathomless darkness engulfs your soul.");
+ puts("and sharper but far away as if in a dream. The sound of purling water");
+ puts("reaches you from afar. The mist falls again, and your heart leaps in horror.");
+ puts("The gold freezes your hands and fathomless darkness engulfs your soul.");
}
wordtype[wordnumber--] = OBJECT;
return (take(from));
@@ -169,7 +169,7 @@ take(from)
puts("Water droplets like liquid silver bedew her golden skin, but when they part");
puts("from her, they fall as teardrops. She wraps a single cloth around her and");
puts("ties it at the waist. Around her neck hangs a golden amulet.");
- puts("She bids you to follow her.");
+ puts("She bids you to follow her, and walks away.");
pleasure++;
followgod = ourtime;
ClearBit(location[position].objects, BATHGOD);
@@ -277,38 +277,46 @@ drop(name)
int firstnumber, value;
firstnumber = wordnumber;
- while (wordtype[++wordnumber] == ADJS);
+ while (wordtype[++wordnumber] == ADJS)
+ ;
while (wordnumber <= wordcount && (wordtype[wordnumber] == OBJECT || wordtype[wordnumber] == NOUNS)) {
value = wordvalue[wordnumber];
- printf("%s:\n", objsht[value]);
- if (TestBit(inven, value)) {
- ClearBit(inven, value);
- carrying -= objwt[value];
- encumber -= objcumber[value];
- if (value == BOMB) {
- puts("The bomb explodes. A blinding white light and immense concussion obliterate us.");
- die(0);
- }
- if (value != AMULET && value != MEDALION && value != TALISMAN)
- SetBit(location[position].objects, value);
+ if (wordtype[wordnumber] == NOUNS) {
+ if (value == DOOR)
+ puts("You hurt your foot.");
else
- tempwiz = 0;
- ourtime++;
- if (*name == 'K')
- puts("Drop kicked.");
- else
- printf("%s.\n", name);
+ puts("That's not for kicking!");
} else {
- if (*name != 'K') {
- printf("You aren't holding the %s.\n", objsht[value]);
- if (TestBit(location[position].objects, value)) {
- if (*name == 'T')
- puts("Kicked instead.");
- else if (*name == 'G')
- puts("Given anyway.");
+ printf("%s:\n", objsht[value]);
+ if (TestBit(inven, value)) {
+ ClearBit(inven, value);
+ carrying -= objwt[value];
+ encumber -= objcumber[value];
+ if (value == BOMB) {
+ puts("The bomb explodes. A blinding white light and immense concussion obliterate us.");
+ die(0);
}
- } else
- puts("Kicked.");
+ if (value != AMULET && value != MEDALION && value != TALISMAN)
+ SetBit(location[position].objects, value);
+ else
+ tempwiz = 0;
+ ourtime++;
+ if (*name == 'K')
+ puts("Drop kicked.");
+ else
+ printf("%s.\n", name);
+ } else {
+ if (*name != 'K') {
+ printf("You aren't holding the %s.\n", objsht[value]);
+ if (TestBit(location[position].objects, value)) {
+ if (*name == 'T')
+ puts("Kicked instead.");
+ else if (*name == 'G')
+ puts("Given anyway.");
+ }
+ } else
+ puts("Kicked.");
+ }
}
if (wordnumber < wordcount - 1 && wordvalue[++wordnumber] == AND)
wordnumber++;
diff --git a/games/battlestar/com5.c b/games/battlestar/com5.c
index 2b77dd3b350..e86982890c2 100644
--- a/games/battlestar/com5.c
+++ b/games/battlestar/com5.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: com5.c,v 1.5 1999/09/25 20:30:45 pjanzen Exp $ */
+/* $OpenBSD: com5.c,v 1.6 2000/07/03 05:23:44 pjanzen Exp $ */
/* $NetBSD: com5.c,v 1.3 1995/03/21 15:07:07 cgd Exp $ */
/*
@@ -38,7 +38,7 @@
#if 0
static char sccsid[] = "@(#)com5.c 8.2 (Berkeley) 4/28/95";
#else
-static char rcsid[] = "$OpenBSD: com5.c,v 1.5 1999/09/25 20:30:45 pjanzen Exp $";
+static char rcsid[] = "$OpenBSD: com5.c,v 1.6 2000/07/03 05:23:44 pjanzen Exp $";
#endif
#endif /* not lint */
@@ -47,14 +47,22 @@ static char rcsid[] = "$OpenBSD: com5.c,v 1.5 1999/09/25 20:30:45 pjanzen Exp $"
void
kiss()
{
- while (wordtype[++wordnumber] != NOUNS && wordnumber <= wordcount);
- if (wordtype[wordnumber] == NOUNS &&
- TestBit(location[position].objects, wordvalue[wordnumber])) {
+ while (wordtype[++wordnumber] != NOUNS && wordnumber <= wordcount)
+ ;
+ /* The goddess must be "taken" first if bathing. */
+ if (wordtype[wordnumber] == NOUNS && wordvalue[wordnumber] == NORMGOD
+ && TestBit(location[position].objects, BATHGOD)) {
+ wordvalue[--wordnumber] = TAKE;
+ cypher();
+ return;
+ }
+ if (wordtype[wordnumber] == NOUNS) {
+ if (TestBit(location[position].objects, wordvalue[wordnumber])) {
pleasure++;
printf("Kissed.\n");
switch (wordvalue[wordnumber]) {
case NORMGOD:
- switch (godready++) {
+ switch (godready++) {
case 0:
puts("She squirms and avoids your advances.");
break;
@@ -62,7 +70,7 @@ kiss()
puts("She is coming around; she didn't fight it as much.");
break;
case 2:
- puts("She's begining to like it.");
+ puts("She's beginning to like it.");
break;
default:
puts("She's gone limp.");
@@ -70,7 +78,7 @@ kiss()
}
break;
case NATIVE:
- puts("The lips are warm and her body robust. She pulls you down to the ground.");
+ puts("Her lips are warm and her body robust. She pulls you down to the ground.");
break;
case TIMER:
puts("The old man blushes.");
@@ -81,6 +89,8 @@ kiss()
default:
pleasure--;
}
+ } else
+ puts("I see nothing like that here.");
} else
puts("I'd prefer not to.");
}
@@ -90,9 +100,12 @@ love()
{
int n;
- while (wordtype[++wordnumber] != NOUNS && wordnumber <= wordcount);
- if (wordtype[wordnumber] == NOUNS && TestBit(location[position].objects, wordvalue[wordnumber])) {
- if (wordvalue[wordnumber] == NORMGOD && !loved) {
+ while (wordtype[++wordnumber] != NOUNS && wordnumber <= wordcount)
+ ;
+ if (wordtype[wordnumber] == NOUNS) {
+ if ((TestBit(location[position].objects, BATHGOD) ||
+ TestBit(location[position].objects, NORMGOD)) &&
+ wordvalue[wordnumber] == NORMGOD && !loved) {
if (godready >= 2) {
puts("She cuddles up to you, and her mouth starts to work:\n'That was my sister's amulet. The lovely goddess, Purl, was she. The Empire\ncaptured her just after the Darkness came. My other sister, Vert, was killed\nby the Dark Lord himself. He took her amulet and warped its power.\nYour quest was foretold by my father before he died, but to get the Dark Lord's\namulet you must use cunning and skill. I will leave you my amulet,");
puts("which you may use as you wish. As for me, I am the last goddess of the\nwaters. My father was the Island King, and the rule is rightfully mine.'\n\nShe pulls the throne out into a large bed.");
@@ -111,21 +124,30 @@ love()
SetBit(location[position].objects, MEDALION);
loved = 1;
ourtime += 10;
+ printf("Loved.\n");
zzz();
} else {
puts("You wish!");
return;
}
}
+ if (TestBit(location[position].objects, wordvalue[wordnumber])) {
if (wordvalue[wordnumber] == NATIVE) {
puts("The girl is easy prey. She peels off her sarong and indulges you.");
power++;
pleasure += 5;
printf("Girl:\n");
ourtime += 10;
+ printf("Loved.\n");
zzz();
}
- printf("Loved.\n");
+ if (wordvalue[wordnumber] == MAN ||
+ wordvalue[wordnumber] == BODY ||
+ wordvalue[wordnumber] == ELF ||
+ wordvalue[wordnumber] == TIMER)
+ puts("Kinky!");
+ } else
+ puts("Where's your lover?");
} else
puts("It doesn't seem to work.");
}
diff --git a/games/battlestar/com6.c b/games/battlestar/com6.c
index 7b9f9eebfc1..6f197443d31 100644
--- a/games/battlestar/com6.c
+++ b/games/battlestar/com6.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: com6.c,v 1.11 1999/09/25 20:30:45 pjanzen Exp $ */
+/* $OpenBSD: com6.c,v 1.12 2000/07/03 05:23:44 pjanzen Exp $ */
/* $NetBSD: com6.c,v 1.5 1995/04/27 21:30:23 mycroft Exp $ */
/*
@@ -38,7 +38,7 @@
#if 0
static char sccsid[] = "@(#)com6.c 8.2 (Berkeley) 4/28/95";
#else
-static char rcsid[] = "$OpenBSD: com6.c,v 1.11 1999/09/25 20:30:45 pjanzen Exp $";
+static char rcsid[] = "$OpenBSD: com6.c,v 1.12 2000/07/03 05:23:44 pjanzen Exp $";
#endif
#endif /* not lint */
@@ -227,3 +227,37 @@ light()
} else
puts("You're out of matches.");
}
+
+void
+dooropen()
+{ /* synonyms = {open, unlock} */
+ while(wordtype[++wordnumber] == ADJS)
+ ;
+ if (wordnumber <= wordcount && wordtype[wordnumber] == NOUNS
+ && wordvalue[wordnumber] == DOOR) {
+ switch(position) {
+ case 189:
+ case 231:
+ if (location[189].north == 231)
+ puts("The door is already open.");
+ else
+ puts("The door does not budge.");
+ break;
+ case 30:
+ if (location[30].west == 25)
+ puts("The door is gone.");
+ else
+ puts("The door is locked tight.");
+ break;
+ case 31:
+ puts("That's one immovable door.");
+ break;
+ case 20:
+ puts("The door is already ajar.");
+ break;
+ default:
+ puts("What door?");
+ }
+ } else
+ puts("That doesn't open.");
+}
diff --git a/games/battlestar/cypher.c b/games/battlestar/cypher.c
index 8c41f0d8611..9f52dab4091 100644
--- a/games/battlestar/cypher.c
+++ b/games/battlestar/cypher.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: cypher.c,v 1.7 1999/09/25 20:30:45 pjanzen Exp $ */
+/* $OpenBSD: cypher.c,v 1.8 2000/07/03 05:23:45 pjanzen Exp $ */
/* $NetBSD: cypher.c,v 1.3 1995/03/21 15:07:15 cgd Exp $ */
/*
@@ -38,7 +38,7 @@
#if 0
static char sccsid[] = "@(#)cypher.c 8.2 (Berkeley) 4/28/95";
#else
-static char rcsid[] = "$OpenBSD: cypher.c,v 1.7 1999/09/25 20:30:45 pjanzen Exp $";
+static char rcsid[] = "$OpenBSD: cypher.c,v 1.8 2000/07/03 05:23:45 pjanzen Exp $";
#endif
#endif /* not lint */
@@ -67,7 +67,7 @@ cypher()
if (!move(location[position].up, AHEAD))
return (-1);
} else {
- puts("There is no way up");
+ puts("There is no way up.");
return (-1);
}
lflag = 0;
@@ -105,11 +105,16 @@ cypher()
case SHOOT:
if (wordnumber < wordcount && wordvalue[wordnumber + 1] == EVERYTHING) {
+ int things;
+ things = 0;
for (n = 0; n < NUMOFOBJECTS; n++)
if (TestBit(location[position].objects, n) && objsht[n]) {
+ things++;
wordvalue[wordnumber + 1] = n;
wordnumber = shoot();
}
+ if (!things)
+ puts("Nothing to shoot at!");
wordnumber++;
wordnumber++;
} else
@@ -118,8 +123,11 @@ cypher()
case TAKE:
if (wordnumber < wordcount && wordvalue[wordnumber + 1] == EVERYTHING) {
+ int things;
+ things = 0;
for (n = 0; n < NUMOFOBJECTS; n++)
if (TestBit(location[position].objects, n) && objsht[n]) {
+ things++;
wordvalue[wordnumber + 1] = n;
/* Some objects (type NOUNS) have special treatment in take(). For these
* we must set the type to NOUNS. However for SWORD and BODY all it does
@@ -148,19 +156,26 @@ cypher()
}
wordnumber++;
wordnumber++;
+ if (!things)
+ puts("Nothing to take!");
} else
take(location[position].objects);
break;
case DROP:
if (wordnumber < wordcount && wordvalue[wordnumber + 1] == EVERYTHING) {
+ int things;
+ things = 0;
for (n = 0; n < NUMOFOBJECTS; n++)
if (TestBit(inven, n)) {
+ things++;
wordvalue[wordnumber + 1] = n;
wordnumber = drop("Dropped");
}
wordnumber++;
wordnumber++;
+ if (!things)
+ puts("Nothing to drop!");
} else
drop("Dropped");
break;
@@ -169,73 +184,104 @@ cypher()
case KICK:
case THROW:
if (wordnumber < wordcount && wordvalue[wordnumber + 1] == EVERYTHING) {
+ int things, wv;
+ things = 0;
+ wv = wordvalue[wordnumber];
for (n = 0; n < NUMOFOBJECTS; n++)
if (TestBit(inven, n) ||
(TestBit(location[position].objects, n) && objsht[n])) {
+ things++;
wordvalue[wordnumber + 1] = n;
wordnumber = throw(wordvalue[wordnumber] == KICK ? "Kicked" : "Thrown");
}
wordnumber += 2;
+ if (!things)
+ printf("Nothing to %s!\n", wv == KICK ? "kick" : "throw");
} else
throw(wordvalue[wordnumber] == KICK ? "Kicked" : "Thrown");
break;
case TAKEOFF:
if (wordnumber < wordcount && wordvalue[wordnumber + 1] == EVERYTHING) {
+ int things;
+ things = 0;
for (n = 0; n < NUMOFOBJECTS; n++)
if (TestBit(wear, n)) {
+ things++;
wordvalue[wordnumber + 1] = n;
wordnumber = takeoff();
}
wordnumber += 2;
+ if (!things)
+ puts("Nothing to take off!");
} else
takeoff();
break;
case DRAW:
if (wordnumber < wordcount && wordvalue[wordnumber + 1] == EVERYTHING) {
+ int things;
+ things = 0;
for (n = 0; n < NUMOFOBJECTS; n++)
if (TestBit(wear, n)) {
+ things++;
wordvalue[wordnumber + 1] = n;
wordnumber = draw();
}
wordnumber += 2;
+ if (!things)
+ puts("Nothing to draw!");
} else
draw();
break;
case PUTON:
if (wordnumber < wordcount && wordvalue[wordnumber + 1] == EVERYTHING) {
+ int things;
+ things = 0;
for (n = 0; n < NUMOFOBJECTS; n++)
if (TestBit(location[position].objects, n) && objsht[n]) {
+ things++;
wordvalue[wordnumber + 1] = n;
wordnumber = puton();
}
wordnumber += 2;
+ if (!things)
+ puts("Nothing to put on!");
} else
puton();
break;
case WEARIT:
if (wordnumber < wordcount && wordvalue[wordnumber + 1] == EVERYTHING) {
+ int things;
+ things = 0;
for (n = 0; n < NUMOFOBJECTS; n++)
if (TestBit(inven, n)) {
+ things++;
wordvalue[wordnumber + 1] = n;
wordnumber = wearit();
}
wordnumber += 2;
+ if (!things)
+ puts("Nothing to wear!");
} else
wearit();
break;
case EAT:
if (wordnumber < wordcount && wordvalue[wordnumber + 1] == EVERYTHING) {
+ int things;
+ things = 0;
for (n = 0; n < NUMOFOBJECTS; n++)
if (TestBit(inven, n)) {
+ things++;
wordvalue[wordnumber + 1] = n;
wordnumber = eat();
}
wordnumber += 2;
+ if (!things)
+ puts("Nothing to eat!");
} else
eat();
break;
@@ -276,6 +322,23 @@ cypher()
lflag = use();
break;
+ case OPEN:
+ if (wordnumber < wordcount && wordvalue[wordnumber + 1] == EVERYTHING) {
+ int things;
+ things = 0;
+ for (n = 0; n < NUMOFOBJECTS; n++)
+ if (TestBit(inven, n)) {
+ things++;
+ wordvalue[wordnumber + 1] = n;
+ dooropen();
+ }
+ wordnumber += 2;
+ if (!things)
+ puts("Nothing to open!");
+ } else
+ dooropen();
+ break;
+
case LOOK:
if (!notes[CANTSEE] || TestBit(inven, LAMPON) ||
TestBit(location[position].objects, LAMPON)
@@ -370,6 +433,16 @@ cypher()
free(rfilename);
break;
+ case VERBOSE:
+ verbose = 1;
+ printf("[Maximum verbosity]\n");
+ break;
+
+ case BRIEF:
+ verbose = 0;
+ printf("[Standard verbosity]\n");
+ break;
+
case FOLLOW:
lflag = follow();
break;
diff --git a/games/battlestar/dayfile.c b/games/battlestar/dayfile.c
index 401cb578e57..51bf042cb37 100644
--- a/games/battlestar/dayfile.c
+++ b/games/battlestar/dayfile.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: dayfile.c,v 1.6 1999/09/25 20:30:45 pjanzen Exp $ */
+/* $OpenBSD: dayfile.c,v 1.7 2000/07/03 05:23:45 pjanzen Exp $ */
/* $NetBSD: dayfile.c,v 1.3 1995/03/21 15:07:18 cgd Exp $ */
/*
@@ -38,7 +38,7 @@
#if 0
static char sccsid[] = "@(#)dayfile.c 8.2 (Berkeley) 4/28/95";
#else
-static char rcsid[] = "$OpenBSD: dayfile.c,v 1.6 1999/09/25 20:30:45 pjanzen Exp $";
+static char rcsid[] = "$OpenBSD: dayfile.c,v 1.7 2000/07/03 05:23:45 pjanzen Exp $";
#endif
#endif /* not lint */
@@ -72,7 +72,7 @@ A staircase leads down. * There is a way -. ** \n" },
"From the launch tubes here fighters blast off into space. Only one is left,\n\
and it is guarded by two fierce men. A staircase leads up from here.\n\
There is a cluttered workbench +. From the main hangar come sounds of great\n\
-explosions. The main hangar is +. The viper launch tubes are to the -.*\n" },
+explosions. The main hangar is +. The viper launch tubes are -.*\n" },
{ "You are at the workbench.",
{ 0, 5, 7, 0, 0, 0, 0, 0 },
"Strange and unwieldy tools are arranged here including a lunch box \n\
@@ -128,8 +128,8 @@ continues -. The armory is +.**\n" },
{ 20, 13, 21, 22, 23, 1, 24, 0 },
"Luxurious staterooms carpeted with crushed velvet and adorned with beaten\n\
gold open onto this parlor. A wide staircase with ivory banisters leads\n\
-up or down. This parlor leads into a hallway +. The bridal suite is +.\n\
-Other rooms lie - and +.\n" },
+up or down. This parlor leads into a hallway +. The bridal suite is\n\
++. Other rooms lie - and +.\n" },
{ "You're in a long dimly lit hallway.",
{ 0, 14, 25, 0, 0, 0, 0, 0 },
"This part of the walkway is deserted. There is a dead end +. The\n\
@@ -165,7 +165,7 @@ room +, and a doorway +.*\n" },
{ "You are at the entrance to the dining hall.",
{ 0, 0, 28, 0, 0, 0, 16, 0 },
"A wide staircase with ebony banisters leads down here.**\n\
-The dining hall is to the -.*\n" },
+The dining hall is -.*\n" },
{ "This was once the first class lounge.",
{ 0, 0, 29, 0, 16, 1, 0, 0 },
"There is much rubble and destruction here that was not apparent elsewhere.\n\
@@ -433,7 +433,7 @@ There is an open bungalow +.* The road continues - and -.\n" },
{ "You are at the sea plane dock.",
{ 121, 122, 123, 124, 82, 0, 0, 0 },
"Native girls with skin of gold, clad only in fragrant leis and lavalavas,\n\
-line the dockside to greet you. A couple of ukulele-plucking islanders and a\n\
+line the dockside to greet you. A couple of ukulele=plucking islanders and a\n\
keyboard player are adding appropriate music. A road crosses the clearing \n\
+*. There are some tables set up +.*\n" },
{ "You are flying over the ocean.",
@@ -748,7 +748,7 @@ The road is +.*\n" },
{ "You are in the living room.",
{ 0, 117, 217, 218, 0, 0, 0, 0 },
"A decorative entry with fresh flowers and wall to wall carpeting leads into\n\
-the living room here where a couch and two chairs converse with an end table.\n\
+the living room here where a couch and two chairs converge with an end table.\n\
*The exit is +.* The bedroom is +.\n" },
{ "You are at the lagoon.",
{ 118, 0, 167, 168, 81, 0, 0, 0 },
@@ -854,7 +854,7 @@ from the ground itself.* The canyon continues - and -.\n" },
{ "You are in the drawing room.",
{ 0, 134, 0, 0, 0, 0, 0, 0 },
"Exquisitely decorated with plants and antique furniture of superb\n\
-craftsmanship, the parlor reflects its owners impeccable taste. The tropical\n\
+craftsmanship, the parlor reflects its owner's impeccable taste. The tropical\n\
sun is streaming in through open shutters *+. There doesn't seem \n\
to be anybody around. A large immaculate oaken desk is visible in the\n\
study and it even has a old fashioned telephone to complete the decor.**\n" },
@@ -996,7 +996,7 @@ when they get this far into the woods.** The trail goes -.*\n" },
{ "You are just inside the cave.",
{ 181, 267, 0, 0, 0, 0, 0, 0 },
"A steamy hot breath is belching from the depths of the earth within.* The\n\
-cave continues -.**\n" },
+cave continues -.**\n" },
{ "You are just inside the cave entrance.",
{ 274, 0, 0, 0, 0, 0, 0, 0 },
"The air is hot and sticky inside. The cave continues -. There is a \n\
@@ -1180,7 +1180,7 @@ The trail winds + and +.**\n" },
{ 267, 0, 0, 269, 0, 0, 269, 0 },
"Beds of ferns and palm leaves make several cozy nests along the walls. In the\n\
center of the room is a throne of gold and silver which pulls out into a bed\n\
-of enormous size.*** A passageway leads down to the -.\n" },
+of enormous size.*** A passageway - leads down.\n" },
{ "You are walking along the edge of a huge abyss.",
{ 0, 0, 268, 0, 268, 1, 270, 0 },
"Steam is rising in great clouds from the immeasurable depths. A very narrow\n\
diff --git a/games/battlestar/extern.h b/games/battlestar/extern.h
index 1508384351d..5188d7a56eb 100644
--- a/games/battlestar/extern.h
+++ b/games/battlestar/extern.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: extern.h,v 1.5 1999/09/25 20:30:45 pjanzen Exp $ */
+/* $OpenBSD: extern.h,v 1.6 2000/07/03 05:23:45 pjanzen Exp $ */
/* $NetBSD: extern.h,v 1.5 1995/04/24 12:22:18 cgd Exp $ */
/*
@@ -137,7 +137,7 @@
#define CAR 60
#define POT 61
#define BAR 62
-#define BLOCK 63
+#define BLOCK 63
#define NUMOFOBJECTS 64
/* non-objects below */
#define UP 1000
@@ -154,7 +154,7 @@
#define SOUTH 1011
#define EAST 1012
#define WEST 1013
-#define SU 1014
+#define SU 1014
#define DROP 1015
#define TAKEOFF 1016
#define DRAW 1017
@@ -178,7 +178,7 @@
#define SMITE 1035
#define SHOOT 1036
#define ON 1037
-#define OFF 1038
+#define OFF 1038
#define TIME 1039
#define SLEEP 1040
#define DIG 1041
@@ -193,6 +193,9 @@
#define BURY 1050
#define JUMP 1051
#define KICK 1052
+#define OPEN 1053
+#define VERBOSE 1054
+#define BRIEF 1055
/* injuries */
#define ARM 6 /* broken arm */
@@ -212,6 +215,9 @@
#define DUG 5
#define NUMOFNOTES 6
+ /* number of times room description shown */
+#define ROOMDESC 3
+
/* fundamental constants */
#define NUMOFROOMS 275
#define NUMOFWORDS ((NUMOFOBJECTS + BITS - 1) / BITS)
@@ -267,7 +273,7 @@ extern int left, right, ahead, back;
extern int ourclock, fuel, torps;
extern int carrying, encumber;
extern int rythmn;
-extern int followfight;
+extern int followfight;
extern int ate;
extern int snooze;
extern int meetgirl;
@@ -288,6 +294,7 @@ extern unsigned int inven[NUMOFWORDS];
extern unsigned int wear[NUMOFWORDS];
extern char beenthere[NUMOFROOMS+1];
extern char injuries[NUMOFINJURIES];
+extern int verbose;
extern char username[LOGIN_NAME_MAX + 1];
@@ -319,6 +326,7 @@ void crash __P((void));
int cypher __P((void));
void die __P((int));
void dig __P((void));
+void dooropen __P((void));
int draw __P((void));
void drink __P((void));
int drive __P((void));
diff --git a/games/battlestar/globals.c b/games/battlestar/globals.c
index 6957c4c5932..3a2e458df90 100644
--- a/games/battlestar/globals.c
+++ b/games/battlestar/globals.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: globals.c,v 1.5 1999/09/25 20:30:45 pjanzen Exp $ */
+/* $OpenBSD: globals.c,v 1.6 2000/07/03 05:23:45 pjanzen Exp $ */
/* $NetBSD: globals.c,v 1.3 1995/03/21 15:07:32 cgd Exp $ */
/*
@@ -38,7 +38,7 @@
#if 0
static char sccsid[] = "@(#)globals.c 8.2 (Berkeley) 4/28/95";
#else
-static char rcsid[] = "$OpenBSD: globals.c,v 1.5 1999/09/25 20:30:45 pjanzen Exp $";
+static char rcsid[] = "$OpenBSD: globals.c,v 1.6 2000/07/03 05:23:45 pjanzen Exp $";
#endif
#endif /* not lint */
@@ -48,7 +48,7 @@ int WEIGHT = MAXWEIGHT;
int CUMBER = MAXCUMBER;
const char *const objdes[NUMOFOBJECTS] = {
- "There is a knife here",
+ "There is a knife here.",
"There are an exquisitely crafted sword and scabbard here.",
0, /* can land from here */
"There is a fierce woodsman here brandishing a heavy mallet.",
@@ -73,14 +73,14 @@ const char *const objdes[NUMOFOBJECTS] = {
"There is a laser pistol here.",
"A flower-like young goddess is bathing in the hot mineral pools. She is \nwatching you, but continues to steep and sing softly.",
"The goddess is reclining on a bed of ferns and studying you intently.",
- "There is a grenade here",
+ "There is a grenade here.",
"There is a length of heavy chain here.",
"There is a stout rope here.",
"There is a pair of Levi's here.",
"A bloody mace is lying on the ground here.",
"There is a shovel here.",
"A long, sharp halberd is propped up here.",
- "There is a compass here",
+ "There is a compass here.",
"Wreckage and smoldering debris from a crash litter the ground here.",
"A woodland Elf armed with a shield and deadly halberd lunges toward you!",
"I think I hear footsteps behind us.",
@@ -256,6 +256,7 @@ unsigned int inven[NUMOFWORDS];
unsigned int wear[NUMOFWORDS];
char beenthere[NUMOFROOMS + 1];
char injuries[NUMOFINJURIES];
+int verbose = 0;
char username[LOGIN_NAME_MAX + 1];
diff --git a/games/battlestar/nightfile.c b/games/battlestar/nightfile.c
index e15af6bbd75..c0ee1b4bd01 100644
--- a/games/battlestar/nightfile.c
+++ b/games/battlestar/nightfile.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: nightfile.c,v 1.6 1999/09/25 20:30:46 pjanzen Exp $ */
+/* $OpenBSD: nightfile.c,v 1.7 2000/07/03 05:23:45 pjanzen Exp $ */
/* $NetBSD: nightfile.c,v 1.3 1995/03/21 15:07:41 cgd Exp $ */
/*
@@ -38,7 +38,7 @@
#if 0
static char sccsid[] = "@(#)nightfile.c 8.2 (Berkeley) 4/28/95";
#else
-static char rcsid[] = "$OpenBSD: nightfile.c,v 1.6 1999/09/25 20:30:46 pjanzen Exp $";
+static char rcsid[] = "$OpenBSD: nightfile.c,v 1.7 2000/07/03 05:23:45 pjanzen Exp $";
#endif
#endif /* not lint */
@@ -72,7 +72,7 @@ A staircase leads down. * There is a way -. ** \n" },
"From the launch tubes here fighters blast off into space. Only one is left,\n\
and it is guarded by two fierce men. A staircase leads up from here.\n\
There is a cluttered workbench +. From the main hangar come sounds of great\n\
-explosions. The main hangar is +. The viper launch tubes are to the -.*\n" },
+explosions. The main hangar is +. The viper launch tubes are -.*\n" },
{ "You are at the workbench.",
{ 0, 5, 7, 0, 0, 0, 0, 0 },
"Strange and unwieldy tools are arranged here including a lunch box \n\
@@ -128,8 +128,8 @@ continues -. The armory is +.**\n" },
{ 20, 13, 21, 22, 23, 1, 24, 0 },
"Luxurious staterooms carpeted with crushed velvet and adorned with beaten\n\
gold open onto this parlor. A wide staircase with ivory banisters leads\n\
-up or down. This parlor leads into a hallway +. The bridal suite is +.\n\
-Other rooms lie - and +.\n" },
+up or down. This parlor leads into a hallway +. The bridal suite is\n\
++. Other rooms lie - and +.\n" },
{ "You're in a long dimly lit hallway.",
{ 0, 14, 25, 0, 0, 0, 0, 0 },
"This part of the walkway is deserted. There is a dead end +. The\n\
@@ -165,7 +165,7 @@ room +, and a doorway +.*\n" },
{ "You are at the entrance to the dining hall.",
{ 0, 0, 28, 0, 0, 0, 16, 0 },
"A wide staircase with ebony banisters leads down here.**\n\
-The dining hall is to the -.*\n" },
+The dining hall is -.*\n" },
{ "This was once the first class lounge.",
{ 0, 0, 29, 0, 16, 1, 0, 0 },
"There is much rubble and destruction here that was not apparent elsewhere.\n\
@@ -331,7 +331,8 @@ like jagged teeth from black gums. The land rises sharply +. The shore\n\
line stretches on *+.*\n" },
{ "You are flying over a mountainous region.",
{ 75, 73, 76, 77, 68, 1, 0, 1 },
-"Below is a shadow-filled canyon with luminous waterfalls plummeting down beyond sight and looming spires and pinnacles. **The ocean is +.*\n" },
+"Below is a shadow=filled canyon with looming spires and pinnacles and\n\
+luminous waterfalls plummeting down beyond sight. **The ocean is +.*\n" },
{ "You are flying over the ocean.",
{ 74, 78, 78, 78, 68, 1, 0, 1 },
"You bank over the water and your wingtips dip low to the green waves. The\n\
@@ -579,8 +580,9 @@ There may be poison oak here. What was that? A lantern just flickered by in\n\
the dark! The sound of rushing water is coming from *+.**\n" },
{ "You are on a dirt trail.",
{ 179, 181, 98, 0, 84, 0, 0, 0 },
-"The trail seems to start here and head towards the forest +.** High, dark\n\
-cliffs border the trail +. Some crickets are chirping noisily.\n" },
+"The trail seems to start here and head towards the forest +.** High,\n\
+dark cliffs border the trail +. Some crickets are chirping\n\
+noisily.\n" },
{ "You are walking along the beach.",
{ 183, 101, 184, 0, 87, 0, 0, 0 },
"The surf is rather tame tonight. The beach continues + and +.**\n" },
@@ -725,12 +727,12 @@ Broad leafed plants at the roadside whisper in the darkness. Something\n\
just darted across the road and into the bushes *+. Let's go *-.\n" },
{ "You have discovered a hidden thicket near the road.",
{ 163, 142, 116, 106, 73, 0, 0, 0 },
-"I would think it best to stay n the road. The forest seems very unfriendly\n\
+"I would think it best to stay on the road. The forest seems very unfriendly\n\
at night. The road is **+.*\n" },
{ "You are in the living room.",
{ 0, 117, 217, 218, 0, 0, 0, 0 },
"A decorative entry with fresh flowers and wall to wall carpeting leads into\n\
-the living room here where a couch and two chairs converse with an end table.\n\
+the living room here where a couch and two chairs converge with an end table.\n\
*The exit is +.* The bedroom is +.\n" },
{ "You are at the lagoon.",
{ 118, 0, 167, 168, 81, 0, 0, 0 },
@@ -839,7 +841,7 @@ from the ground itself.* The canyon continues - and -.\n" },
{ "You are in the drawing room.",
{ 0, 134, 0, 0, 0, 0, 0, 0 },
"Exquisitely decorated with plants and antique furniture of superb\n\
-craftsmanship, the parlor reflects its owners impeccable taste. The tropical\n\
+craftsmanship, the parlor reflects its owner's impeccable taste. The tropical\n\
night air pours in through open shutters *+. There doesn't seem \n\
to be anybody around. A large immaculate oaken desk is visible in the\n\
study and it even has a old fashioned telephone to complete the decor.**\n" },
@@ -980,7 +982,7 @@ Let's go -.*\n" },
{ "You are just inside the cave.",
{ 181, 267, 0, 0, 0, 0, 0, 0 },
"A steamy hot breath is belching from the depths of the earth within.* The\n\
-cave continues -.**\n" },
+cave continues -.**\n" },
{ "You are just inside the cave entrance.",
{ 274, 0, 0, 0, 0, 0, 0, 0 },
"The air is hot and sticky inside. The cave continues -. There is a \n\
diff --git a/games/battlestar/room.c b/games/battlestar/room.c
index 0b11089b60e..547d4757aca 100644
--- a/games/battlestar/room.c
+++ b/games/battlestar/room.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: room.c,v 1.5 1999/09/25 20:30:46 pjanzen Exp $ */
+/* $OpenBSD: room.c,v 1.6 2000/07/03 05:23:46 pjanzen Exp $ */
/* $NetBSD: room.c,v 1.3 1995/03/21 15:07:54 cgd Exp $ */
/*
@@ -38,7 +38,7 @@
#if 0
static char sccsid[] = "@(#)room.c 8.2 (Berkeley) 4/28/95";
#else
-static char rcsid[] = "$OpenBSD: room.c,v 1.5 1999/09/25 20:30:46 pjanzen Exp $";
+static char rcsid[] = "$OpenBSD: room.c,v 1.6 2000/07/03 05:23:46 pjanzen Exp $";
#endif
#endif /* not lint */
@@ -52,12 +52,15 @@ writedes()
int c;
printf("\n\t%s\n", location[position].name);
- if (beenthere[position] < 3) {
+ if (beenthere[position] < ROOMDESC || verbose) {
compass = NORTH;
for (p = location[position].desc; (c = *p++) != 0;)
- if (c != '-' && c != '*' && c != '+')
- putchar(c);
- else {
+ if (c != '-' && c != '*' && c != '+') {
+ if (c == '=')
+ putchar('-');
+ else
+ putchar(c);
+ } else {
if (c != '*')
printf(truedirec(compass, c));
compass++;
diff --git a/games/battlestar/words.c b/games/battlestar/words.c
index d10ce59eba3..02f9fe14ca8 100644
--- a/games/battlestar/words.c
+++ b/games/battlestar/words.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: words.c,v 1.5 1999/09/25 20:30:46 pjanzen Exp $ */
+/* $OpenBSD: words.c,v 1.6 2000/07/03 05:23:46 pjanzen Exp $ */
/* $NetBSD: words.c,v 1.3 1995/03/21 15:08:00 cgd Exp $ */
/*
@@ -38,176 +38,182 @@
#if 0
static char sccsid[] = "@(#)words.c 8.2 (Berkeley) 4/28/95";
#else
-static char rcsid[] = "$OpenBSD: words.c,v 1.5 1999/09/25 20:30:46 pjanzen Exp $";
+static char rcsid[] = "$OpenBSD: words.c,v 1.6 2000/07/03 05:23:46 pjanzen Exp $";
#endif
#endif /* not lint */
#include "extern.h"
struct wlist wlist[] = {
- { "knife", KNIFE, OBJECT },
- { "sword", SWORD, NOUNS },
- { "scabbard", SWORD, OBJECT },
- { "fine", SWORD, OBJECT },
- { "two-handed", TWO_HANDED, OBJECT },
- { "cleaver", CLEAVER, OBJECT },
- { "broadsword", BROAD, OBJECT },
- { "mail", MAIL, OBJECT },
- { "coat", MAIL, OBJECT },
- { "helmet", HELM, OBJECT },
- { "shield", SHIELD, OBJECT },
- { "maid", MAID, OBJECT },
- { "maid's", MAID, OBJECT },
- { "body", BODY, NOUNS },
- { "viper", VIPER, OBJECT },
- { "lamp", LAMPON, OBJECT },
- { "lantern", LAMPON, OBJECT },
- { "shoes", SHOES, OBJECT },
- { "pajamas", PAJAMAS, OBJECT },
- { "robe", ROBE, OBJECT },
- { "amulet", AMULET, NOUNS },
- { "medallion", MEDALION, NOUNS },
- { "talisman", TALISMAN, NOUNS },
- { "woodsman", DEADWOOD, OBJECT },
- { "woodsman's", DEADWOOD, OBJECT },
- { "mallet", MALLET, OBJECT },
- { "laser", LASER, OBJECT },
- { "pistol", LASER, OBJECT },
- { "blaster", LASER, OBJECT },
- { "gun", LASER, OBJECT },
- { "goddess", NORMGOD, NOUNS },
- { "grenade", GRENADE, OBJECT },
- { "chain", CHAIN, OBJECT },
- { "rope", ROPE, OBJECT },
- { "levis", LEVIS, OBJECT },
- { "pants", LEVIS, OBJECT },
- { "mace", MACE, OBJECT },
- { "shovel", SHOVEL, OBJECT },
- { "halberd", HALBERD, OBJECT },
- { "compass", COMPASS, OBJECT },
- { "elf", ELF, OBJECT },
- { "coins", COINS, OBJECT },
- { "matches", MATCHES, OBJECT },
- { "match", MATCHES, OBJECT },
- { "book", MATCHES, OBJECT },
- { "man", MAN, NOUNS },
- { "papayas", PAPAYAS, OBJECT },
- { "pineapple", PINEAPPLE, OBJECT },
- { "kiwi", KIWI, OBJECT },
- { "coconuts", COCONUTS, OBJECT },
- { "mango", MANGO, OBJECT },
- { "ring", RING, OBJECT },
- { "potion", POTION, OBJECT },
- { "bracelet", BRACELET, OBJECT },
- { "timer", TIMER, NOUNS },
- { "bomb", BOMB, OBJECT },
- { "warhead", BOMB, OBJECT },
- { "girl", NATIVE, NOUNS },
- { "native", NATIVE, NOUNS },
- { "horse", HORSE, OBJECT },
- { "stallion", HORSE, OBJECT },
- { "car", CAR, OBJECT },
- { "volare", CAR, OBJECT },
- { "pot", POT, OBJECT },
- { "jewels", POT, OBJECT },
- { "bar", BAR, OBJECT },
- { "diamond", BLOCK, OBJECT },
- { "block", BLOCK, OBJECT },
- { "up", UP, VERB },
- { "u", UP, VERB },
- { "down", DOWN, VERB },
- { "d", DOWN, VERB },
- { "ahead", AHEAD, VERB },
- { "a", AHEAD, VERB },
- { "back", BACK, VERB },
- { "b", BACK, VERB },
- { "right", RIGHT, VERB },
- { "r", RIGHT, VERB },
- { "left", LEFT, VERB },
- { "l", LEFT, VERB },
- { "take", TAKE, VERB },
- { "get", TAKE, VERB },
- { "use", USE, VERB },
- { "look", LOOK, VERB },
- { "lo", LOOK, VERB },
- { "quit", QUIT, VERB },
- { "q", QUIT, VERB },
- { "su", SU, VERB },
- { "drop", DROP, VERB },
- { "draw", DRAW, VERB },
- { "pull", DRAW, VERB },
- { "carry", DRAW, VERB },
- { "wear", WEARIT, VERB },
- { "sheathe", WEARIT, VERB },
- { "put", PUT, VERB },
- { "buckle", PUT, VERB },
- { "strap", PUT, VERB },
- { "tie", PUT, VERB },
- { "inven", INVEN, VERB },
- { "i", INVEN, VERB },
- { "everything", EVERYTHING, OBJECT },
- { "all", EVERYTHING, OBJECT },
- { "and", AND, CONJ },
- { "kill", KILL, VERB },
- { "fight", KILL, VERB },
- { "ravage", RAVAGE, VERB },
- { "rape", RAVAGE, VERB },
- { "undress", UNDRESS, VERB },
- { "throw", THROW, VERB },
- { "launch", LAUNCH, VERB },
- { "land", LANDIT, VERB },
- { "light", LIGHT, VERB },
- { "strike", LIGHT, VERB },
- { "follow", FOLLOW, VERB },
- { "chase", FOLLOW, VERB },
- { "kiss", KISS, VERB },
- { "love", LOVE, VERB },
- { "fuck", LOVE, VERB },
- { "give", GIVE, VERB },
- { "smite", SMITE, VERB },
- { "attack", SMITE, VERB },
- { "swing", SMITE, VERB },
- { "stab", SMITE, VERB },
- { "slice", SMITE, VERB },
- { "cut", SMITE, VERB },
- { "hack", SMITE, VERB },
- { "shoot", SHOOT, VERB },
- { "blast", SHOOT, VERB },
- { "on", ON, PREPS },
- { "off", OFF, PREPS },
- { "time", TIME, VERB },
- { "sleep", SLEEP, VERB },
- { "dig", DIG, VERB },
- { "eat", EAT, VERB },
- { "swim", SWIM, VERB },
- { "drink", DRINK, VERB },
- { "door", DOOR, NOUNS },
- { "save", SAVE, VERB },
- { "ride", RIDE, VERB },
- { "mount", RIDE, VERB },
- { "drive", DRIVE, VERB },
- { "start", DRIVE, VERB },
- { "score", SCORE, VERB },
- { "points", SCORE, VERB },
- { "bury", BURY, VERB },
- { "jump", JUMP, VERB },
- { "kick", KICK, VERB },
- { "kerosene", 0, ADJS },
- { "plumed", 0, ADJS },
- { "ancient", 0, ADJS },
- { "golden", 0, ADJS },
- { "gold", 0, ADJS },
- { "ostrich", 0, ADJS },
- { "rusty", 0, ADJS },
- { "old", 0, ADJS },
- { "dented", 0, ADJS },
- { "blue", 0, ADJS },
- { "purple", 0, ADJS },
- { "kingly", 0, ADJS },
- { "the", 0, ADJS },
- { "climb", 0, ADJS },
- { "move", 0, ADJS },
- { "make", 0, ADJS },
- { "to", 0, ADJS },
- { 0 }
+ { "knife", KNIFE, OBJECT, NULL },
+ { "sword", SWORD, NOUNS, NULL },
+ { "scabbard", SWORD, OBJECT, NULL },
+ { "fine", SWORD, OBJECT, NULL },
+ { "two-handed", TWO_HANDED, OBJECT, NULL },
+ { "cleaver", CLEAVER, OBJECT, NULL },
+ { "broadsword", BROAD, OBJECT, NULL },
+ { "mail", MAIL, OBJECT, NULL },
+ { "coat", MAIL, OBJECT, NULL },
+ { "helmet", HELM, OBJECT, NULL },
+ { "shield", SHIELD, OBJECT, NULL },
+ { "maid", MAID, OBJECT, NULL },
+ { "maid's", MAID, OBJECT, NULL },
+ { "body", BODY, NOUNS, NULL },
+ { "viper", VIPER, OBJECT, NULL },
+ { "lamp", LAMPON, OBJECT, NULL },
+ { "lantern", LAMPON, OBJECT, NULL },
+ { "shoes", SHOES, OBJECT, NULL },
+ { "pajamas", PAJAMAS, OBJECT, NULL },
+ { "robe", ROBE, OBJECT, NULL },
+ { "amulet", AMULET, NOUNS, NULL },
+ { "medallion", MEDALION, NOUNS, NULL },
+ { "talisman", TALISMAN, NOUNS, NULL },
+ { "woodsman", DEADWOOD, OBJECT, NULL },
+ { "woodsman's", DEADWOOD, OBJECT, NULL },
+ { "mallet", MALLET, OBJECT, NULL },
+ { "laser", LASER, OBJECT, NULL },
+ { "pistol", LASER, OBJECT, NULL },
+ { "blaster", LASER, OBJECT, NULL },
+ { "gun", LASER, OBJECT, NULL },
+ { "goddess", NORMGOD, NOUNS, NULL },
+ { "grenade", GRENADE, OBJECT, NULL },
+ { "chain", CHAIN, OBJECT, NULL },
+ { "rope", ROPE, OBJECT, NULL },
+ { "levis", LEVIS, OBJECT, NULL },
+ { "pants", LEVIS, OBJECT, NULL },
+ { "mace", MACE, OBJECT, NULL },
+ { "shovel", SHOVEL, OBJECT, NULL },
+ { "halberd", HALBERD, OBJECT, NULL },
+ { "compass", COMPASS, OBJECT, NULL },
+ { "elf", ELF, OBJECT, NULL },
+ { "coins", COINS, OBJECT, NULL },
+ { "matches", MATCHES, OBJECT, NULL },
+ { "match", MATCHES, OBJECT, NULL },
+ { "book", MATCHES, OBJECT, NULL },
+ { "man", MAN, NOUNS, NULL },
+ { "papaya", PAPAYAS, OBJECT, NULL },
+ { "papayas", PAPAYAS, OBJECT, NULL },
+ { "pineapple", PINEAPPLE, OBJECT, NULL },
+ { "kiwi", KIWI, OBJECT, NULL },
+ { "coconut", COCONUTS, OBJECT, NULL },
+ { "coconuts", COCONUTS, OBJECT, NULL },
+ { "mango", MANGO, OBJECT, NULL },
+ { "ring", RING, OBJECT, NULL },
+ { "potion", POTION, OBJECT, NULL },
+ { "bracelet", BRACELET, OBJECT, NULL },
+ { "timer", TIMER, NOUNS, NULL },
+ { "bomb", BOMB, OBJECT, NULL },
+ { "warhead", BOMB, OBJECT, NULL },
+ { "girl", NATIVE, NOUNS, NULL },
+ { "native", NATIVE, NOUNS, NULL },
+ { "horse", HORSE, OBJECT, NULL },
+ { "stallion", HORSE, OBJECT, NULL },
+ { "car", CAR, OBJECT, NULL },
+ { "volare", CAR, OBJECT, NULL },
+ { "pot", POT, OBJECT, NULL },
+ { "jewels", POT, OBJECT, NULL },
+ { "bar", BAR, OBJECT, NULL },
+ { "diamond", BLOCK, OBJECT, NULL },
+ { "block", BLOCK, OBJECT, NULL },
+ { "up", UP, VERB, NULL },
+ { "u", UP, VERB, NULL },
+ { "down", DOWN, VERB, NULL },
+ { "d", DOWN, VERB, NULL },
+ { "ahead", AHEAD, VERB, NULL },
+ { "a", AHEAD, VERB, NULL },
+ { "back", BACK, VERB, NULL },
+ { "b", BACK, VERB, NULL },
+ { "right", RIGHT, VERB, NULL },
+ { "r", RIGHT, VERB, NULL },
+ { "left", LEFT, VERB, NULL },
+ { "l", LEFT, VERB, NULL },
+ { "take", TAKE, VERB, NULL },
+ { "get", TAKE, VERB, NULL },
+ { "use", USE, VERB, NULL },
+ { "look", LOOK, VERB, NULL },
+ { "lo", LOOK, VERB, NULL },
+ { "quit", QUIT, VERB, NULL },
+ { "q", QUIT, VERB, NULL },
+ { "su", SU, VERB, NULL },
+ { "drop", DROP, VERB, NULL },
+ { "draw", DRAW, VERB, NULL },
+ { "pull", DRAW, VERB, NULL },
+ { "carry", DRAW, VERB, NULL },
+ { "wear", WEARIT, VERB, NULL },
+ { "sheathe", WEARIT, VERB, NULL },
+ { "put", PUT, VERB, NULL },
+ { "buckle", PUT, VERB, NULL },
+ { "strap", PUT, VERB, NULL },
+ { "tie", PUT, VERB, NULL },
+ { "inven", INVEN, VERB, NULL },
+ { "i", INVEN, VERB, NULL },
+ { "everything", EVERYTHING, OBJECT, NULL },
+ { "all", EVERYTHING, OBJECT, NULL },
+ { "and", AND, CONJ, NULL },
+ { "kill", KILL, VERB, NULL },
+ { "fight", KILL, VERB, NULL },
+ { "ravage", RAVAGE, VERB, NULL },
+ { "rape", RAVAGE, VERB, NULL },
+ { "undress", UNDRESS, VERB, NULL },
+ { "throw", THROW, VERB, NULL },
+ { "launch", LAUNCH, VERB, NULL },
+ { "land", LANDIT, VERB, NULL },
+ { "light", LIGHT, VERB, NULL },
+ { "strike", LIGHT, VERB, NULL },
+ { "follow", FOLLOW, VERB, NULL },
+ { "chase", FOLLOW, VERB, NULL },
+ { "kiss", KISS, VERB, NULL },
+ { "love", LOVE, VERB, NULL },
+ { "fuck", LOVE, VERB, NULL },
+ { "give", GIVE, VERB, NULL },
+ { "smite", SMITE, VERB, NULL },
+ { "attack", SMITE, VERB, NULL },
+ { "swing", SMITE, VERB, NULL },
+ { "stab", SMITE, VERB, NULL },
+ { "slice", SMITE, VERB, NULL },
+ { "cut", SMITE, VERB, NULL },
+ { "hack", SMITE, VERB, NULL },
+ { "shoot", SHOOT, VERB, NULL },
+ { "blast", SHOOT, VERB, NULL },
+ { "open", OPEN, VERB, NULL },
+ { "unlock", OPEN, VERB, NULL },
+ { "on", ON, PREPS, NULL },
+ { "off", OFF, PREPS, NULL },
+ { "time", TIME, VERB, NULL },
+ { "sleep", SLEEP, VERB, NULL },
+ { "dig", DIG, VERB, NULL },
+ { "eat", EAT, VERB, NULL },
+ { "swim", SWIM, VERB, NULL },
+ { "drink", DRINK, VERB, NULL },
+ { "door", DOOR, NOUNS, NULL },
+ { "verbose", VERBOSE, VERB, NULL },
+ { "brief", BRIEF, VERB, NULL },
+ { "save", SAVE, VERB, NULL },
+ { "ride", RIDE, VERB, NULL },
+ { "mount", RIDE, VERB, NULL },
+ { "drive", DRIVE, VERB, NULL },
+ { "start", DRIVE, VERB, NULL },
+ { "score", SCORE, VERB, NULL },
+ { "points", SCORE, VERB, NULL },
+ { "bury", BURY, VERB, NULL },
+ { "jump", JUMP, VERB, NULL },
+ { "kick", KICK, VERB, NULL },
+ { "kerosene", 0, ADJS, NULL },
+ { "plumed", 0, ADJS, NULL },
+ { "ancient", 0, ADJS, NULL },
+ { "golden", 0, ADJS, NULL },
+ { "gold", 0, ADJS, NULL },
+ { "ostrich", 0, ADJS, NULL },
+ { "rusty", 0, ADJS, NULL },
+ { "old", 0, ADJS, NULL },
+ { "dented", 0, ADJS, NULL },
+ { "blue", 0, ADJS, NULL },
+ { "purple", 0, ADJS, NULL },
+ { "kingly", 0, ADJS, NULL },
+ { "the", 0, ADJS, NULL },
+ { "climb", 0, ADJS, NULL },
+ { "move", 0, ADJS, NULL },
+ { "make", 0, ADJS, NULL },
+ { "to", 0, ADJS, NULL },
+ { 0, 0, 0, NULL }
};