fix issue #1453 - throwing crackable object upward

Issue reported by NullCGT:  throwing a crackable item against the
ceiling would cause it to vanish if it became [more] cracked but not
yet fully shattered.

Fixes #1453
This commit is contained in:
PatR
2025-10-13 23:02:56 -07:00
parent d75ffe4b34
commit 34d0e956ed
2 changed files with 10 additions and 1 deletions

View File

@@ -2133,6 +2133,8 @@ mounted hero was able to deliver joust hits when trapped
timer sanity check for melting ice gave false complaint about non-ice for
frozen moat under open drawbridge
mhitm_ad_phys() was not applying Half_physical_damage when hero was target
throwing crystal plate mail or helm of brilliance up against the ceiling could
result in the item being cracked and then vanishing
Fixes to 3.7.0-x Platform and/or Interface Problems Exposed Via git Repository

View File

@@ -1268,7 +1268,14 @@ toss_up(struct obj *obj, boolean hitsroof)
if (breaktest(obj)) {
pline("%s hits the %s.", Doname2(obj), ceiling(u.ux, u.uy));
breakmsg(obj, !Blind);
return breakobj(obj, u.ux, u.uy, TRUE, TRUE) ? FALSE : TRUE;
/* crackable armor will return True for breaktest() but will
usually return False for breakobj() */
if (!breakobj(obj, u.ux, u.uy, TRUE, TRUE)) {
hitfloor(obj, FALSE);
gt.thrownobj = 0;
return TRUE;
}
return FALSE;
}
action = "hits";
} else {