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.
This commit is contained in:
@@ -48,6 +48,10 @@
|
|||||||
#define has_horns(ptr) (num_horns(ptr) > 0)
|
#define has_horns(ptr) (num_horns(ptr) > 0)
|
||||||
#define is_whirly(ptr) ((ptr)->mlet == S_VORTEX || \
|
#define is_whirly(ptr) ((ptr)->mlet == S_VORTEX || \
|
||||||
(ptr) == &mons[PM_AIR_ELEMENTAL])
|
(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 is_silent(ptr) ((ptr)->msound == MS_SILENT)
|
||||||
#define unsolid(ptr) (((ptr)->mflags1 & M1_UNSOLID) != 0L)
|
#define unsolid(ptr) (((ptr)->mflags1 & M1_UNSOLID) != 0L)
|
||||||
#define mindless(ptr) (((ptr)->mflags1 & M1_MINDLESS) != 0L)
|
#define mindless(ptr) (((ptr)->mflags1 & M1_MINDLESS) != 0L)
|
||||||
|
|||||||
10
src/eat.c
10
src/eat.c
@@ -471,10 +471,7 @@ register int pm;
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
case PM_GREEN_SLIME:
|
case PM_GREEN_SLIME:
|
||||||
if (!Slimed && !Unchanging &&
|
if (!Slimed && !Unchanging && !flaming(youmonst.data) &&
|
||||||
youmonst.data != &mons[PM_FIRE_VORTEX] &&
|
|
||||||
youmonst.data != &mons[PM_FIRE_ELEMENTAL] &&
|
|
||||||
youmonst.data != &mons[PM_SALAMANDER] &&
|
|
||||||
youmonst.data != &mons[PM_GREEN_SLIME]) {
|
youmonst.data != &mons[PM_GREEN_SLIME]) {
|
||||||
You("don't feel very well.");
|
You("don't feel very well.");
|
||||||
Slimed = 10L;
|
Slimed = 10L;
|
||||||
@@ -1728,10 +1725,7 @@ struct obj *otmp;
|
|||||||
!poly_when_stoned(youmonst.data));
|
!poly_when_stoned(youmonst.data));
|
||||||
|
|
||||||
if (mnum == PM_GREEN_SLIME)
|
if (mnum == PM_GREEN_SLIME)
|
||||||
stoneorslime = (!Unchanging &&
|
stoneorslime = (!Unchanging && !flaming(youmonst.data) &&
|
||||||
youmonst.data != &mons[PM_FIRE_VORTEX] &&
|
|
||||||
youmonst.data != &mons[PM_FIRE_ELEMENTAL] &&
|
|
||||||
youmonst.data != &mons[PM_SALAMANDER] &&
|
|
||||||
youmonst.data != &mons[PM_GREEN_SLIME]);
|
youmonst.data != &mons[PM_GREEN_SLIME]);
|
||||||
|
|
||||||
if (cadaver && mnum != PM_LIZARD && mnum != PM_LICHEN) {
|
if (cadaver && mnum != PM_LIZARD && mnum != PM_LICHEN) {
|
||||||
|
|||||||
@@ -1093,9 +1093,7 @@ mdamagem(magr, mdef, mattk)
|
|||||||
break;
|
break;
|
||||||
case AD_SLIM:
|
case AD_SLIM:
|
||||||
if (cancelled) break; /* physical damage only */
|
if (cancelled) break; /* physical damage only */
|
||||||
if (!rn2(4) && mdef->data != &mons[PM_FIRE_VORTEX] &&
|
if (!rn2(4) && !flaming(mdef->data) &&
|
||||||
mdef->data != &mons[PM_FIRE_ELEMENTAL] &&
|
|
||||||
mdef->data != &mons[PM_SALAMANDER] &&
|
|
||||||
mdef->data != &mons[PM_GREEN_SLIME]) {
|
mdef->data != &mons[PM_GREEN_SLIME]) {
|
||||||
(void) newcham(mdef, &mons[PM_GREEN_SLIME], FALSE, vis);
|
(void) newcham(mdef, &mons[PM_GREEN_SLIME], FALSE, vis);
|
||||||
mdef->mstrategy &= ~STRAT_WAITFORU;
|
mdef->mstrategy &= ~STRAT_WAITFORU;
|
||||||
|
|||||||
@@ -1482,9 +1482,7 @@ dopois:
|
|||||||
case AD_SLIM:
|
case AD_SLIM:
|
||||||
hitmsg(mtmp, mattk);
|
hitmsg(mtmp, mattk);
|
||||||
if (!uncancelled) break;
|
if (!uncancelled) break;
|
||||||
if (youmonst.data == &mons[PM_FIRE_VORTEX] ||
|
if (flaming(youmonst.data)) {
|
||||||
youmonst.data == &mons[PM_SALAMANDER] ||
|
|
||||||
youmonst.data == &mons[PM_FIRE_ELEMENTAL]) {
|
|
||||||
pline_The("slime burns away!");
|
pline_The("slime burns away!");
|
||||||
dmg = 0;
|
dmg = 0;
|
||||||
} else if (Unchanging ||
|
} else if (Unchanging ||
|
||||||
|
|||||||
@@ -692,6 +692,7 @@ struct attack *mattk;
|
|||||||
case PM_FLAMING_SPHERE:
|
case PM_FLAMING_SPHERE:
|
||||||
case PM_FIRE_VORTEX:
|
case PM_FIRE_VORTEX:
|
||||||
case PM_FIRE_ELEMENTAL:
|
case PM_FIRE_ELEMENTAL:
|
||||||
|
case PM_SALAMANDER:
|
||||||
what = "already on fire";
|
what = "already on fire";
|
||||||
break;
|
break;
|
||||||
case PM_WATER_ELEMENTAL:
|
case PM_WATER_ELEMENTAL:
|
||||||
|
|||||||
@@ -407,8 +407,7 @@ int mntmp;
|
|||||||
You("no longer feel sick.");
|
You("no longer feel sick.");
|
||||||
}
|
}
|
||||||
if (Slimed) {
|
if (Slimed) {
|
||||||
if (mntmp == PM_FIRE_VORTEX || mntmp == PM_FIRE_ELEMENTAL ||
|
if (flaming(youmonst.data)) {
|
||||||
mntmp == PM_SALAMANDER || mntmp == PM_FLAMING_SPHERE) {
|
|
||||||
pline_The("slime burns away!");
|
pline_The("slime burns away!");
|
||||||
Slimed = 0L;
|
Slimed = 0L;
|
||||||
context.botl = 1;
|
context.botl = 1;
|
||||||
|
|||||||
@@ -1605,9 +1605,7 @@ register struct attack *mattk;
|
|||||||
break;
|
break;
|
||||||
case AD_SLIM:
|
case AD_SLIM:
|
||||||
if (negated) break; /* physical damage only */
|
if (negated) break; /* physical damage only */
|
||||||
if (!rn2(4) && mdef->data != &mons[PM_FIRE_VORTEX] &&
|
if (!rn2(4) && !flaming(mdef->data) &&
|
||||||
mdef->data != &mons[PM_FIRE_ELEMENTAL] &&
|
|
||||||
mdef->data != &mons[PM_SALAMANDER] &&
|
|
||||||
mdef->data != &mons[PM_GREEN_SLIME]) {
|
mdef->data != &mons[PM_GREEN_SLIME]) {
|
||||||
You("turn %s into slime.", mon_nam(mdef));
|
You("turn %s into slime.", mon_nam(mdef));
|
||||||
(void) newcham(mdef, &mons[PM_GREEN_SLIME], FALSE, FALSE);
|
(void) newcham(mdef, &mons[PM_GREEN_SLIME], FALSE, FALSE);
|
||||||
|
|||||||
Reference in New Issue
Block a user