summaryrefslogtreecommitdiffstats
path: root/battlestar/cypher.c
diff options
context:
space:
mode:
authorjsm <jsm@NetBSD.org>2000-09-22 08:19:57 +0000
committerjsm <jsm@NetBSD.org>2000-09-22 08:19:57 +0000
commit71f29bcfafb9f4eb138aae227bc0a7be8b7d888e (patch)
treebccb0daaee2c44a5e7cc4cc2b39f3187cf005e52 /battlestar/cypher.c
parent3131fb8024bb02e60d0b28942d59bb92d515cdae (diff)
downloadbsdgames-darwin-71f29bcfafb9f4eb138aae227bc0a7be8b7d888e.tar.gz
bsdgames-darwin-71f29bcfafb9f4eb138aae227bc0a7be8b7d888e.tar.zst
bsdgames-darwin-71f29bcfafb9f4eb138aae227bc0a7be8b7d888e.zip
Give appropriate messages (rather than saying nothing) if an verb is
used with "all" and nothing relevant is present. From OpenBSD.
Diffstat (limited to 'battlestar/cypher.c')
-rw-r--r--battlestar/cypher.c50
1 files changed, 48 insertions, 2 deletions
diff --git a/battlestar/cypher.c b/battlestar/cypher.c
index 71cb11d7..ef697edc 100644
--- a/battlestar/cypher.c
+++ b/battlestar/cypher.c
@@ -1,4 +1,4 @@
-/* $NetBSD: cypher.c,v 1.16 2000/09/22 08:19:21 jsm Exp $ */
+/* $NetBSD: cypher.c,v 1.17 2000/09/22 08:19:57 jsm Exp $ */
/*
* Copyright (c) 1983, 1993
@@ -38,7 +38,7 @@
#if 0
static char sccsid[] = "@(#)cypher.c 8.2 (Berkeley) 4/28/95";
#else
-__RCSID("$NetBSD: cypher.c,v 1.16 2000/09/22 08:19:21 jsm Exp $");
+__RCSID("$NetBSD: cypher.c,v 1.17 2000/09/22 08:19:57 jsm Exp $");
#endif
#endif /* not lint */
@@ -102,11 +102,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
@@ -115,8 +120,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
@@ -153,6 +161,8 @@ cypher()
}
wordnumber++;
wordnumber++;
+ if (!things)
+ puts("Nothing to take!");
} else
take(location[position].objects);
break;
@@ -160,13 +170,18 @@ cypher()
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;
@@ -175,25 +190,36 @@ 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;
@@ -202,12 +228,17 @@ cypher()
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;
@@ -216,12 +247,17 @@ cypher()
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;
@@ -229,12 +265,17 @@ cypher()
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;
@@ -243,12 +284,17 @@ cypher()
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;