From: cohrs Date: Fri, 26 Sep 2003 00:37:24 +0000 (+0000) Subject: various tests of flaming monsters X-Git-Tag: MOVE2GIT~1755 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=929f9ce2c7ca3924fa256b2bb032d7b4b101de32;p=nethack various tests of flaming monsters This change adds a new flaming() macro and uses it in several places where the list of flaming monsters was tested. on_fire() didn't list salamanders as already being on fire, but should have. A couple other cases were not updated to include flaming sphere. --- diff --git a/include/mondata.h b/include/mondata.h index 0e6a0df67..7d86d5938 100644 --- a/include/mondata.h +++ b/include/mondata.h @@ -48,6 +48,10 @@ #define has_horns(ptr) (num_horns(ptr) > 0) #define is_whirly(ptr) ((ptr)->mlet == S_VORTEX || \ (ptr) == &mons[PM_AIR_ELEMENTAL]) +#define flaming(ptr) ((ptr) == &mons[PM_FIRE_VORTEX] || \ + (ptr) == &mons[PM_FLAMING_SPHERE] || \ + (ptr) == &mons[PM_FIRE_ELEMENTAL] || \ + (ptr) == &mons[PM_SALAMANDER]) #define is_silent(ptr) ((ptr)->msound == MS_SILENT) #define unsolid(ptr) (((ptr)->mflags1 & M1_UNSOLID) != 0L) #define mindless(ptr) (((ptr)->mflags1 & M1_MINDLESS) != 0L) diff --git a/src/eat.c b/src/eat.c index aeb793915..59f200c6f 100644 --- a/src/eat.c +++ b/src/eat.c @@ -471,10 +471,7 @@ register int pm; return; } case PM_GREEN_SLIME: - if (!Slimed && !Unchanging && - youmonst.data != &mons[PM_FIRE_VORTEX] && - youmonst.data != &mons[PM_FIRE_ELEMENTAL] && - youmonst.data != &mons[PM_SALAMANDER] && + if (!Slimed && !Unchanging && !flaming(youmonst.data) && youmonst.data != &mons[PM_GREEN_SLIME]) { You("don't feel very well."); Slimed = 10L; @@ -1728,10 +1725,7 @@ struct obj *otmp; !poly_when_stoned(youmonst.data)); if (mnum == PM_GREEN_SLIME) - stoneorslime = (!Unchanging && - youmonst.data != &mons[PM_FIRE_VORTEX] && - youmonst.data != &mons[PM_FIRE_ELEMENTAL] && - youmonst.data != &mons[PM_SALAMANDER] && + stoneorslime = (!Unchanging && !flaming(youmonst.data) && youmonst.data != &mons[PM_GREEN_SLIME]); if (cadaver && mnum != PM_LIZARD && mnum != PM_LICHEN) { diff --git a/src/mhitm.c b/src/mhitm.c index 9f9b3d99d..60a1025c3 100644 --- a/src/mhitm.c +++ b/src/mhitm.c @@ -1093,9 +1093,7 @@ mdamagem(magr, mdef, mattk) break; case AD_SLIM: if (cancelled) break; /* physical damage only */ - if (!rn2(4) && mdef->data != &mons[PM_FIRE_VORTEX] && - mdef->data != &mons[PM_FIRE_ELEMENTAL] && - mdef->data != &mons[PM_SALAMANDER] && + if (!rn2(4) && !flaming(mdef->data) && mdef->data != &mons[PM_GREEN_SLIME]) { (void) newcham(mdef, &mons[PM_GREEN_SLIME], FALSE, vis); mdef->mstrategy &= ~STRAT_WAITFORU; diff --git a/src/mhitu.c b/src/mhitu.c index 20ea756f9..dce914090 100644 --- a/src/mhitu.c +++ b/src/mhitu.c @@ -1482,9 +1482,7 @@ dopois: case AD_SLIM: hitmsg(mtmp, mattk); if (!uncancelled) break; - if (youmonst.data == &mons[PM_FIRE_VORTEX] || - youmonst.data == &mons[PM_SALAMANDER] || - youmonst.data == &mons[PM_FIRE_ELEMENTAL]) { + if (flaming(youmonst.data)) { pline_The("slime burns away!"); dmg = 0; } else if (Unchanging || diff --git a/src/mondata.c b/src/mondata.c index 88cfd4c4d..13c3a127e 100644 --- a/src/mondata.c +++ b/src/mondata.c @@ -692,6 +692,7 @@ struct attack *mattk; case PM_FLAMING_SPHERE: case PM_FIRE_VORTEX: case PM_FIRE_ELEMENTAL: + case PM_SALAMANDER: what = "already on fire"; break; case PM_WATER_ELEMENTAL: diff --git a/src/polyself.c b/src/polyself.c index e3aceea4f..6f70e7aae 100644 --- a/src/polyself.c +++ b/src/polyself.c @@ -407,8 +407,7 @@ int mntmp; You("no longer feel sick."); } if (Slimed) { - if (mntmp == PM_FIRE_VORTEX || mntmp == PM_FIRE_ELEMENTAL || - mntmp == PM_SALAMANDER || mntmp == PM_FLAMING_SPHERE) { + if (flaming(youmonst.data)) { pline_The("slime burns away!"); Slimed = 0L; context.botl = 1; diff --git a/src/uhitm.c b/src/uhitm.c index f9ca71553..55231f3ff 100644 --- a/src/uhitm.c +++ b/src/uhitm.c @@ -1605,9 +1605,7 @@ register struct attack *mattk; break; case AD_SLIM: if (negated) break; /* physical damage only */ - if (!rn2(4) && mdef->data != &mons[PM_FIRE_VORTEX] && - mdef->data != &mons[PM_FIRE_ELEMENTAL] && - mdef->data != &mons[PM_SALAMANDER] && + if (!rn2(4) && !flaming(mdef->data) && mdef->data != &mons[PM_GREEN_SLIME]) { You("turn %s into slime.", mon_nam(mdef)); (void) newcham(mdef, &mons[PM_GREEN_SLIME], FALSE, FALSE);