]> granicus.if.org Git - nethack/commitdiff
various tests of flaming monsters
authorcohrs <cohrs>
Fri, 26 Sep 2003 00:37:24 +0000 (00:37 +0000)
committercohrs <cohrs>
Fri, 26 Sep 2003 00:37:24 +0000 (00:37 +0000)
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.

include/mondata.h
src/eat.c
src/mhitm.c
src/mhitu.c
src/mondata.c
src/polyself.c
src/uhitm.c

index 0e6a0df67db20b50c4b681ccbf1958a65bc89142..7d86d59388e922190e0058c0a89f55b38258e715 100644 (file)
 #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)
index aeb7939150652807512e7314ce7c771f1f435b30..59f200c6f29745e9a15c78d4bcecc06bbd370996 100644 (file)
--- 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) {
index 9f9b3d99d365c6914780b9098862d941262457c9..60a1025c3e54b48e70f73f4bff3982b2eb94486e 100644 (file)
@@ -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;
index 20ea756f99288fbb387edd5edc821dd6cd9cca14..dce914090bf39f8a80b02298f6ad877c741efa1b 100644 (file)
@@ -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 ||
index 88cfd4c4d9c8ec7d66a5c2513a1f96661eada3e4..13c3a127e3a25eae48fed97b9a35e2ac76dc570c 100644 (file)
@@ -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:
index e3aceea4f9767851e7df7fac4f3b323affac4109..6f70e7aae0fa7830e8c815884294c5a9abcf62d0 100644 (file)
@@ -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;
index f9ca715537ef276f08087ea47ae526fb37cb4239..55231f3ff34b9f80bc5983693ba8aa4debd63480 100644 (file)
@@ -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);