summaryrefslogtreecommitdiffstats
path: root/hack/hack.worm.c
diff options
context:
space:
mode:
authorchristos <christos@NetBSD.org>1997-10-19 16:56:41 +0000
committerchristos <christos@NetBSD.org>1997-10-19 16:56:41 +0000
commit84e7d0704483ce39bbdeacd5e676168db6fa664f (patch)
treef9ffeffa1a4342e749494bc3f5618552435839af /hack/hack.worm.c
parentf73f1009084e75624e3bc00fef9cf4749de80dcc (diff)
downloadbsdgames-darwin-84e7d0704483ce39bbdeacd5e676168db6fa664f.tar.gz
bsdgames-darwin-84e7d0704483ce39bbdeacd5e676168db6fa664f.tar.zst
bsdgames-darwin-84e7d0704483ce39bbdeacd5e676168db6fa664f.zip
WARNsify...
Diffstat (limited to 'hack/hack.worm.c')
-rw-r--r--hack/hack.worm.c191
1 files changed, 119 insertions, 72 deletions
diff --git a/hack/hack.worm.c b/hack/hack.worm.c
index 1849e387..f48dbdc8 100644
--- a/hack/hack.worm.c
+++ b/hack/hack.worm.c
@@ -1,59 +1,78 @@
+/* $NetBSD: hack.worm.c,v 1.4 1997/10/19 16:59:30 christos Exp $ */
+
/*
* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985.
*/
+#include <sys/cdefs.h>
#ifndef lint
-static char rcsid[] = "$NetBSD: hack.worm.c,v 1.3 1995/03/23 08:32:12 cgd Exp $";
-#endif /* not lint */
+__RCSID("$NetBSD: hack.worm.c,v 1.4 1997/10/19 16:59:30 christos Exp $");
+#endif /* not lint */
+#include <stdlib.h>
#include "hack.h"
+#include "extern.h"
#ifndef NOWORM
#include "def.wseg.h"
-struct wseg *wsegs[32]; /* linked list, tail first */
-struct wseg *wheads[32];
-long wgrowtime[32];
+struct wseg *wsegs[32]; /* linked list, tail first */
+struct wseg *wheads[32];
+long wgrowtime[32];
-getwn(mtmp) struct monst *mtmp; {
-register tmp;
- for(tmp=1; tmp<32; tmp++) if(!wsegs[tmp]) {
- mtmp->wormno = tmp;
- return(1);
- }
- return(0); /* level infested with worms */
+int
+getwn(mtmp)
+ struct monst *mtmp;
+{
+ int tmp;
+ for (tmp = 1; tmp < 32; tmp++)
+ if (!wsegs[tmp]) {
+ mtmp->wormno = tmp;
+ return (1);
+ }
+ return (0); /* level infested with worms */
}
/* called to initialize a worm unless cut in half */
-initworm(mtmp) struct monst *mtmp; {
-register struct wseg *wtmp;
-register tmp = mtmp->wormno;
- if(!tmp) return;
+void
+initworm(mtmp)
+ struct monst *mtmp;
+{
+ struct wseg *wtmp;
+ int tmp = mtmp->wormno;
+ if (!tmp)
+ return;
wheads[tmp] = wsegs[tmp] = wtmp = newseg();
wgrowtime[tmp] = 0;
wtmp->wx = mtmp->mx;
wtmp->wy = mtmp->my;
-/* wtmp->wdispl = 0; */
+ /* wtmp->wdispl = 0; */
wtmp->nseg = 0;
}
-worm_move(mtmp) struct monst *mtmp; {
-register struct wseg *wtmp, *whd;
-register tmp = mtmp->wormno;
+void
+worm_move(mtmp)
+ struct monst *mtmp;
+{
+ struct wseg *wtmp, *whd = NULL;
+ int tmp = mtmp->wormno;
wtmp = newseg();
wtmp->wx = mtmp->mx;
wtmp->wy = mtmp->my;
wtmp->nseg = 0;
-/* wtmp->wdispl = 0; */
+ /* wtmp->wdispl = 0; */
(whd = wheads[tmp])->nseg = wtmp;
wheads[tmp] = wtmp;
- if(cansee(whd->wx,whd->wy)){
+ if (cansee(whd->wx, whd->wy)) {
unpmon(mtmp);
atl(whd->wx, whd->wy, '~');
whd->wdispl = 1;
- } else whd->wdispl = 0;
- if(wgrowtime[tmp] <= moves) {
- if(!wgrowtime[tmp]) wgrowtime[tmp] = moves + rnd(5);
- else wgrowtime[tmp] += 2+rnd(15);
+ } else
+ whd->wdispl = 0;
+ if (wgrowtime[tmp] <= moves) {
+ if (!wgrowtime[tmp])
+ wgrowtime[tmp] = moves + rnd(5);
+ else
+ wgrowtime[tmp] += 2 + rnd(15);
mtmp->mhpmax += 3;
mtmp->mhp += 3;
return;
@@ -63,87 +82,110 @@ register tmp = mtmp->wormno;
remseg(whd);
}
-worm_nomove(mtmp) register struct monst *mtmp; {
-register tmp;
-register struct wseg *wtmp;
+void
+worm_nomove(mtmp)
+ struct monst *mtmp;
+{
+ int tmp;
+ struct wseg *wtmp;
tmp = mtmp->wormno;
wtmp = wsegs[tmp];
- if(wtmp == wheads[tmp]) return;
- if(wtmp == 0 || wtmp->nseg == 0) panic("worm_nomove?");
+ if (wtmp == wheads[tmp])
+ return;
+ if (wtmp == 0 || wtmp->nseg == 0)
+ panic("worm_nomove?");
wsegs[tmp] = wtmp->nseg;
remseg(wtmp);
- mtmp->mhp -= 3; /* mhpmax not changed ! */
+ mtmp->mhp -= 3; /* mhpmax not changed ! */
}
-wormdead(mtmp) register struct monst *mtmp; {
-register tmp = mtmp->wormno;
-register struct wseg *wtmp, *wtmp2;
- if(!tmp) return;
+void
+wormdead(mtmp)
+ struct monst *mtmp;
+{
+ int tmp = mtmp->wormno;
+ struct wseg *wtmp, *wtmp2;
+ if (!tmp)
+ return;
mtmp->wormno = 0;
- for(wtmp = wsegs[tmp]; wtmp; wtmp = wtmp2){
+ for (wtmp = wsegs[tmp]; wtmp; wtmp = wtmp2) {
wtmp2 = wtmp->nseg;
remseg(wtmp);
}
wsegs[tmp] = 0;
}
-wormhit(mtmp) register struct monst *mtmp; {
-register tmp = mtmp->wormno;
-register struct wseg *wtmp;
- if(!tmp) return; /* worm without tail */
- for(wtmp = wsegs[tmp]; wtmp; wtmp = wtmp->nseg)
- (void) hitu(mtmp,1);
+void
+wormhit(mtmp)
+ struct monst *mtmp;
+{
+ int tmp = mtmp->wormno;
+ struct wseg *wtmp;
+ if (!tmp)
+ return; /* worm without tail */
+ for (wtmp = wsegs[tmp]; wtmp; wtmp = wtmp->nseg)
+ (void) hitu(mtmp, 1);
}
-wormsee(tmp) register unsigned tmp; {
-register struct wseg *wtmp = wsegs[tmp];
- if(!wtmp) panic("wormsee: wtmp==0");
- for(; wtmp->nseg; wtmp = wtmp->nseg)
- if(!cansee(wtmp->wx,wtmp->wy) && wtmp->wdispl){
+void
+wormsee(tmp)
+ unsigned tmp;
+{
+ struct wseg *wtmp = wsegs[tmp];
+ if (!wtmp)
+ panic("wormsee: wtmp==0");
+ for (; wtmp->nseg; wtmp = wtmp->nseg)
+ if (!cansee(wtmp->wx, wtmp->wy) && wtmp->wdispl) {
newsym(wtmp->wx, wtmp->wy);
wtmp->wdispl = 0;
}
}
-pwseg(wtmp) register struct wseg *wtmp; {
- if(!wtmp->wdispl){
+void
+pwseg(wtmp)
+ struct wseg *wtmp;
+{
+ if (!wtmp->wdispl) {
atl(wtmp->wx, wtmp->wy, '~');
wtmp->wdispl = 1;
}
}
-cutworm(mtmp,x,y,weptyp)
-register struct monst *mtmp;
-register xchar x,y;
-register uchar weptyp; /* uwep->otyp or 0 */
+void
+cutworm(mtmp, x, y, weptyp)
+ struct monst *mtmp;
+ xchar x, y;
+ uchar weptyp; /* uwep->otyp or 0 */
{
- register struct wseg *wtmp, *wtmp2;
- register struct monst *mtmp2;
- register tmp,tmp2;
- if(mtmp->mx == x && mtmp->my == y) return; /* hit headon */
+ struct wseg *wtmp, *wtmp2;
+ struct monst *mtmp2;
+ int tmp, tmp2;
+ if (mtmp->mx == x && mtmp->my == y)
+ return; /* hit headon */
/* cutting goes best with axe or sword */
tmp = rnd(20);
- if(weptyp == LONG_SWORD || weptyp == TWO_HANDED_SWORD ||
- weptyp == AXE) tmp += 5;
- if(tmp < 12) return;
+ if (weptyp == LONG_SWORD || weptyp == TWO_HANDED_SWORD ||
+ weptyp == AXE)
+ tmp += 5;
+ if (tmp < 12)
+ return;
/* if tail then worm just loses a tail segment */
tmp = mtmp->wormno;
wtmp = wsegs[tmp];
- if(wtmp->wx == x && wtmp->wy == y){
+ if (wtmp->wx == x && wtmp->wy == y) {
wsegs[tmp] = wtmp->nseg;
remseg(wtmp);
return;
}
-
/* cut the worm in two halves */
mtmp2 = newmonst(0);
*mtmp2 = *mtmp;
mtmp2->mxlth = mtmp2->mnamelth = 0;
/* sometimes the tail end dies */
- if(rn2(3) || !getwn(mtmp2)){
+ if (rn2(3) || !getwn(mtmp2)) {
monfree(mtmp2);
tmp2 = 0;
} else {
@@ -152,12 +194,13 @@ register uchar weptyp; /* uwep->otyp or 0 */
wgrowtime[tmp2] = 0;
}
do {
- if(wtmp->nseg->wx == x && wtmp->nseg->wy == y){
- if(tmp2) wheads[tmp2] = wtmp;
+ if (wtmp->nseg->wx == x && wtmp->nseg->wy == y) {
+ if (tmp2)
+ wheads[tmp2] = wtmp;
wsegs[tmp] = wtmp->nseg->nseg;
remseg(wtmp->nseg);
wtmp->nseg = 0;
- if(tmp2){
+ if (tmp2) {
pline("You cut the worm in half.");
mtmp2->mhpmax = mtmp2->mhp =
d(mtmp2->data->mlevel, 8);
@@ -174,15 +217,19 @@ register uchar weptyp; /* uwep->otyp or 0 */
return;
}
wtmp2 = wtmp->nseg;
- if(!tmp2) remseg(wtmp);
+ if (!tmp2)
+ remseg(wtmp);
wtmp = wtmp2;
- } while(wtmp->nseg);
+ } while (wtmp->nseg);
panic("Cannot find worm segment");
}
-remseg(wtmp) register struct wseg *wtmp; {
- if(wtmp->wdispl)
+void
+remseg(wtmp)
+ struct wseg *wtmp;
+{
+ if (wtmp->wdispl)
newsym(wtmp->wx, wtmp->wy);
free((char *) wtmp);
}
-#endif NOWORM
+#endif /* NOWORM */