mon->mhp manipulation
I've hunted for other instances where monster hit points were set to zero or less without calling the routine that kills off the monster (see recent mon_unslime() vs zhitm()) and didn't find any for mhp subtraction. I haven't checked for direct assignment yet. For a while I thought I'd found several cases where a monster was intended to be killed but got left with positive hit points, but it turned out that lifesaved_monster(), of all places, was setting them to zero. I've moved that to its callers so that it isn't so well hidden. And changed several ''if ((mon->mhp -= dmg) <= 0)'' into separate subtraction and 'if' just so the mhp manipulation is a bit more visible. I think the only actual change here is the message for monster being killed by lava, where glass golems now melt instead of burn.
This commit is contained in:
11
src/music.c
11
src/music.c
@@ -352,12 +352,12 @@ int force;
|
||||
/* Falling is okay for falling down
|
||||
within a pit from jostling too */
|
||||
mselftouch(mtmp, "Falling, ", TRUE);
|
||||
if (mtmp->mhp > 0)
|
||||
if ((mtmp->mhp -=
|
||||
rnd(m_already_trapped ? 4 : 6)) <= 0) {
|
||||
if (!cansee(x, y))
|
||||
if (mtmp->mhp > 0) {
|
||||
mtmp->mhp -= rnd(m_already_trapped ? 4 : 6);
|
||||
if (mtmp->mhp <= 0) {
|
||||
if (!cansee(x, y)) {
|
||||
pline("It is destroyed!");
|
||||
else {
|
||||
} else {
|
||||
You("destroy %s!",
|
||||
mtmp->mtame
|
||||
? x_monnam(mtmp, ARTICLE_THE,
|
||||
@@ -370,6 +370,7 @@ int force;
|
||||
}
|
||||
xkilled(mtmp, XKILL_NOMSG);
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (x == u.ux && y == u.uy) {
|
||||
if (Levitation || Flying
|
||||
|
||||
Reference in New Issue
Block a user