Skip to content

Commit

Permalink
gas spores attempting to attack
Browse files Browse the repository at this point in the history
     From a bug report, but pulls back" while successfully
praying.  Gas spores' only "attack" is to explode when dying, so the code
that checks whether the monster has any attack needs to handle AT_BOOM as
a special case.  Unfortunately this change means that you won't interrupt
an occupation when a gas spore approaches, and a subsequent kill by your
pet might end up causing you harm while still occupied.  The callers of
`noattacks()' are messy enough that I didn't want to try to address that.

     This also moves noattacks() from mhitm.c to somewhere more sensible.
  • Loading branch information
nethack.rankin committed Oct 22, 2004
1 parent b2af345 commit 98ab86c
Show file tree
Hide file tree
Showing 4 changed files with 23 additions and 15 deletions.
1 change: 1 addition & 0 deletions doc/fixes34.4
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ destroying a worn item via dipping in burning oil would not unwear/unwield
the item properly, possibly leading to various strange behaviors
avoid a panic splitbill when shopkeeper is trapped by the door
grammar tidbit for message given when eating tainted meat is also cannibalism
gas spores shouldn't be described as "unable to attack" while hero is praying


Platform- and/or Interface-Specific Fixes
Expand Down
2 changes: 1 addition & 1 deletion include/extern.h
Original file line number Diff line number Diff line change
Expand Up @@ -996,7 +996,6 @@ E int FDECL(mattackm, (struct monst *,struct monst *));
#ifdef BARGETHROUGH
E int FDECL(mdisplacem, (struct monst *,struct monst *,BOOLEAN_P));
#endif
E int FDECL(noattacks, (struct permonst *));
E int FDECL(sleep_monst, (struct monst *,int,int));
E void FDECL(slept_monst, (struct monst *));
E long FDECL(attk_protection, (int));
Expand Down Expand Up @@ -1203,6 +1202,7 @@ E void FDECL(decide_to_shapeshift, (struct monst *,int));
E void FDECL(set_mon_data, (struct monst *,struct permonst *,int));
E struct attack *FDECL(attacktype_fordmg, (struct permonst *,int,int));
E boolean FDECL(attacktype, (struct permonst *,int));
E boolean FDECL(noattacks, (struct permonst *));
E boolean FDECL(poly_when_stoned, (struct permonst *));
E boolean FDECL(resists_drli, (struct monst *));
E boolean FDECL(resists_magm, (struct monst *));
Expand Down
14 changes: 1 addition & 13 deletions src/mhitm.c
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/* SCCS Id: @(#)mhitm.c 3.4 2003/01/02 */
/* SCCS Id: @(#)mhitm.c 3.4 2004/10/20 */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/* NetHack may be freely redistributed. See license for details. */

Expand Down Expand Up @@ -1265,18 +1265,6 @@ mdamagem(magr, mdef, mattk)
return(MM_HIT);
}

int
noattacks(ptr) /* returns 1 if monster doesn't attack */
struct permonst *ptr;
{
int i;

for(i = 0; i < NATTK; i++)
if(ptr->mattk[i].aatyp) return(0);

return(1);
}

/* `mon' is hit by a sleep attack; return 1 if it's affected, 0 otherwise */
int
sleep_monst(mon, amt, how)
Expand Down
21 changes: 20 additions & 1 deletion src/mondata.c
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/* SCCS Id: @(#)mondata.c 3.4 2004/06/12 */
/* SCCS Id: @(#)mondata.c 3.4 2004/10/20 */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/* NetHack may be freely redistributed. See license for details. */

Expand Down Expand Up @@ -46,6 +46,25 @@ int atyp;
return attacktype_fordmg(ptr, atyp, AD_ANY) ? TRUE : FALSE;
}

/* returns TRUE if monster doesn't attack, FALSE if it does */
boolean
noattacks(ptr)
struct permonst *ptr;
{
int i;
struct attack *mattk = ptr->mattk;

for (i = 0; i < NATTK; i++) {
/* AT_BOOM "passive attack" (gas spore's explosion upon death)
isn't an attack as far as our callers are concerned */
if (mattk[i].aatyp == AT_BOOM) continue;

if (mattk[i].aatyp) return FALSE;
}

return TRUE;
}

boolean
poly_when_stoned(ptr)
struct permonst *ptr;
Expand Down

0 comments on commit 98ab86c

Please sign in to comment.