follow-up
This commit is contained in:
@@ -5554,20 +5554,25 @@ maybe_set_terrain_effects(struct monst *mtmp, struct permonst *oldmdat)
|
|||||||
if (is_pool(mtmp->mx, mtmp->my) || Is_waterlevel(&u.uz)
|
if (is_pool(mtmp->mx, mtmp->my) || Is_waterlevel(&u.uz)
|
||||||
|| is_lava(mtmp->mx, mtmp->my)
|
|| is_lava(mtmp->mx, mtmp->my)
|
||||||
|| IS_FOUNTAIN(levl[mtmp->mx][mtmp->my].typ)) {
|
|| IS_FOUNTAIN(levl[mtmp->mx][mtmp->my].typ)) {
|
||||||
|
|
||||||
/* mtmp is a non-flyer/floater/levitator */
|
/* mtmp is a non-flyer/floater/levitator */
|
||||||
if (!is_flyer(mdat)) {
|
boolean above_water =
|
||||||
changed = (!oldmdat ||
|
((is_flyer(mdat) || is_floater(mdat))
|
||||||
(((is_flyer(oldmdat) != is_flyer(mdat))
|
&& !(mtmp == u.usteed && (Flying || Levitation))),
|
||||||
|| (is_floater(oldmdat) != is_floater(mdat)))
|
was_above_water =
|
||||||
|
(oldmdat
|
||||||
|
&& ((is_flyer(oldmdat) || is_floater(oldmdat))
|
||||||
&& !(mtmp == u.usteed && (Flying || Levitation))));
|
&& !(mtmp == u.usteed && (Flying || Levitation))));
|
||||||
|
if (!above_water) {
|
||||||
|
changed = (!oldmdat || (above_water != was_above_water));
|
||||||
gp.pending_terrain_effects |= nonflyer_vs_liquid;
|
gp.pending_terrain_effects |= nonflyer_vs_liquid;
|
||||||
mtmp->mstate |= (long) nonflyer_vs_liquid;
|
mtmp->mstate |= (long) nonflyer_vs_liquid;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* swimmer/amphibious/breathless to something that is not */
|
/* swimmer/amphibious/breathless to something that is not */
|
||||||
if (!cant_drown(mdat)) {
|
if (!cant_drown(mdat)) {
|
||||||
changed = (!oldmdat || ((cant_drown(oldmdat) != cant_drown(mdat))));
|
if (!changed)
|
||||||
|
changed =
|
||||||
|
(!oldmdat || ((cant_drown(oldmdat) != cant_drown(mdat))));
|
||||||
gp.pending_terrain_effects |= candrown_vs_liquid;
|
gp.pending_terrain_effects |= candrown_vs_liquid;
|
||||||
mtmp->mstate |= (long) candrown_vs_liquid;
|
mtmp->mstate |= (long) candrown_vs_liquid;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user