diff options
author | 2000-09-23 19:23:57 +0000 | |
---|---|---|
committer | 2000-09-23 19:23:57 +0000 | |
commit | ed51e2ee8c47dbb4c8041637e215fab3dac5bc06 (patch) | |
tree | f0754b91491885c992dfec97463662771c64eb3e /battlestar/com4.c | |
parent | d89b56558a1f45934500212b523bd084ad39752c (diff) | |
download | bsdgames-darwin-ed51e2ee8c47dbb4c8041637e215fab3dac5bc06.tar.gz bsdgames-darwin-ed51e2ee8c47dbb4c8041637e215fab3dac5bc06.tar.zst bsdgames-darwin-ed51e2ee8c47dbb4c8041637e215fab3dac5bc06.zip |
Use a lookup table to identify whether objects are plural or singular,
instead of testing the final character against 's' in each place.
Avoids oddities about "pot of jewels" and "compass".
Diffstat (limited to 'battlestar/com4.c')
-rw-r--r-- | battlestar/com4.c | 26 |
1 files changed, 14 insertions, 12 deletions
diff --git a/battlestar/com4.c b/battlestar/com4.c index a29cb4df..72442cb4 100644 --- a/battlestar/com4.c +++ b/battlestar/com4.c @@ -1,4 +1,4 @@ -/* $NetBSD: com4.c,v 1.13 2000/09/22 12:38:10 jsm Exp $ */ +/* $NetBSD: com4.c,v 1.14 2000/09/23 19:23:58 jsm Exp $ */ /* * Copyright (c) 1983, 1993 @@ -38,7 +38,7 @@ #if 0 static char sccsid[] = "@(#)com4.c 8.2 (Berkeley) 4/28/95"; #else -__RCSID("$NetBSD: com4.c,v 1.13 2000/09/22 12:38:10 jsm Exp $"); +__RCSID("$NetBSD: com4.c,v 1.14 2000/09/23 19:23:58 jsm Exp $"); #endif #endif /* not lint */ @@ -49,7 +49,6 @@ take(from) unsigned int from[]; { int firstnumber, heavy, bulky, value; - int n; firstnumber = wordnumber; if (wordnumber < wordcount && wordvalue[wordnumber + 1] == OFF) { @@ -61,7 +60,6 @@ take(from) while (wordnumber <= wordcount && wordtype[wordnumber] == OBJECT) { value = wordvalue[wordnumber]; printf("%s:\n", objsht[value]); - for (n = 0; objsht[value][n]; n++); heavy = (carrying + objwt[value]) <= WEIGHT; bulky = (encumber + objcumber[value]) <= CUMBER; if ((testbit(from, value) || wiz || tempwiz) && heavy && bulky && !testbit(inven, value)) { @@ -77,13 +75,18 @@ take(from) if (value == MEDALION) win--; } else if (testbit(inven, value)) - printf("You're already holding%s%s.\n", (objsht[value][n - 1] == 's' ? " " : " a "), objsht[value]); + printf("You're already holding%s%s.\n", + (is_plural_object(value) ? " " : " a "), + objsht[value]); else if (!testbit(from, value)) printf("I dont see any %s around here.\n", objsht[value]); else if (!heavy) - printf("The %s %s too heavy.\n", objsht[value], (objsht[value][n - 1] == 's' ? "are" : "is")); + printf("The %s %s too heavy.\n", objsht[value], + (is_plural_object(value) ? "are" : "is")); else - printf("The %s %s too cumbersome to hold.\n", objsht[value], (objsht[value][n - 1] == 's' ? "are" : "is")); + printf("The %s %s too cumbersome to hold.\n", + objsht[value], + (is_plural_object(value) ? "are" : "is")); if (wordnumber < wordcount - 1 && wordvalue[++wordnumber] == AND) wordnumber++; else @@ -343,6 +346,8 @@ eat() wordnumber++; while (wordnumber <= wordcount) { value = wordvalue[wordnumber]; + if (wordtype[wordnumber] != OBJECT) + value = -1; switch (value) { case -1: @@ -351,11 +356,8 @@ eat() default: printf("You can't eat%s%s!\n", - wordtype[wordnumber] == OBJECT && - objsht[value] - [strlen(objsht[value]) - 1] == 's' ? - " " : " a ", - words[wordnumber]); + is_plural_object(value) ? " " : " a ", + objsht[value]); return (firstnumber); case PAPAYAS: |