#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)
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;
!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) {
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;
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 ||
case PM_FLAMING_SPHERE:
case PM_FIRE_VORTEX:
case PM_FIRE_ELEMENTAL:
+ case PM_SALAMANDER:
what = "already on fire";
break;
case PM_WATER_ELEMENTAL:
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;
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);