summaryrefslogtreecommitdiffstats
path: root/wump
diff options
context:
space:
mode:
authorgarbled <garbled@NetBSD.org>2006-01-19 20:15:31 +0000
committergarbled <garbled@NetBSD.org>2006-01-19 20:15:31 +0000
commit3ea04edd077e8bb119ecace2bc5302312f05722b (patch)
treeaf4549f7194a7ff01c8e9750f28d511b97062be0 /wump
parentcdc5e8a2c8284a569369443cacee7e1ebb887832 (diff)
downloadbsdgames-darwin-3ea04edd077e8bb119ecace2bc5302312f05722b.tar.gz
bsdgames-darwin-3ea04edd077e8bb119ecace2bc5302312f05722b.tar.zst
bsdgames-darwin-3ea04edd077e8bb119ecace2bc5302312f05722b.zip
Apply patch from PR bin/26501 to fix hang in wump if you play too many
games in a row. Also modify change made in rev 1.18 to work correctly. take_action() returns 1 if the player dies, causing the game to allways exit after any death, now the game correctly asks if the player would like to play again.
Diffstat (limited to 'wump')
-rw-r--r--wump/wump.c15
1 files changed, 7 insertions, 8 deletions
diff --git a/wump/wump.c b/wump/wump.c
index 904b682c..4754146c 100644
--- a/wump/wump.c
+++ b/wump/wump.c
@@ -1,4 +1,4 @@
-/* $NetBSD: wump.c,v 1.18 2005/03/21 18:45:18 jwise Exp $ */
+/* $NetBSD: wump.c,v 1.19 2006/01/19 20:15:31 garbled Exp $ */
/*
* Copyright (c) 1989, 1993
@@ -43,7 +43,7 @@ __COPYRIGHT("@(#) Copyright (c) 1989, 1993\n\
#if 0
static char sccsid[] = "@(#)wump.c 8.1 (Berkeley) 5/31/93";
#else
-__RCSID("$NetBSD: wump.c,v 1.18 2005/03/21 18:45:18 jwise Exp $");
+__RCSID("$NetBSD: wump.c,v 1.19 2006/01/19 20:15:31 garbled Exp $");
#endif
#endif /* not lint */
@@ -232,6 +232,7 @@ quiver holds %d custom super anti-evil Wumpus arrows. Good luck.\n",
plural(pit_num), arrow_num);
for (;;) {
+ clear_things_in_cave();
initialize_things_in_cave();
arrows_left = arrow_num;
do {
@@ -239,16 +240,14 @@ quiver holds %d custom super anti-evil Wumpus arrows. Good luck.\n",
(void)printf("Move or shoot? (m-s) ");
(void)fflush(stdout);
if (!fgets(answer, sizeof(answer), stdin)) {
- e=1;
+ e=2;
break;
}
} while (!(e = take_action()));
- if (e || !getans("\nCare to play another game? (y-n) "))
+ if (e == 2 || !getans("\nCare to play another game? (y-n) "))
exit(0);
- if (getans("In the same cave? (y-n) "))
- clear_things_in_cave();
- else
+ if (getans("In the same cave? (y-n) ") == 0)
cave_init();
}
/* NOTREACHED */
@@ -508,7 +507,7 @@ The arrow is weakly shot and can go no further!\n");
/* each time you shoot, it's more likely the wumpus moves */
static int lastchance = 2;
- if (random() % level == EASY ? 12 : 9 < (lastchance += 2)) {
+ if (random() % (level == EASY ? 12 : 9) < (lastchance += 2)) {
move_wump();
if (wumpus_loc == player_loc)
wump_kill();