Falling through a hole or trap door will cause damage

This commit is contained in:
Pasi Kallinen
2022-01-25 14:17:43 +02:00
parent 61f78318a5
commit 95acaf2989
2 changed files with 13 additions and 0 deletions
+1
View File
@@ -761,6 +761,7 @@ when already at level 30 and gaining another level--which doesn't increase
level further but does add more HP and Pw--throttle the increases level further but does add more HP and Pw--throttle the increases
don't stop running when next to a peaceful, unless it blocks the way don't stop running when next to a peaceful, unless it blocks the way
mindless monsters shouldn't cringe stepping on squeaky boards mindless monsters shouldn't cringe stepping on squeaky boards
falling down a hole or trapdoor will cause damage proportional to fall height
Fixes to 3.7.0-x Problems that Were Exposed Via git Repository Fixes to 3.7.0-x Problems that Were Exposed Via git Repository
+12
View File
@@ -1302,6 +1302,8 @@ goto_level(
struct monst *mtmp; struct monst *mtmp;
char whynot[BUFSZ]; char whynot[BUFSZ];
char *annotation; char *annotation;
int dist = newlevel->dlevel - dunlev(&u.uz);
boolean do_fall_dmg = FALSE;
if (dunlev(newlevel) > dunlevs_in_dungeon(newlevel)) if (dunlev(newlevel) > dunlevs_in_dungeon(newlevel))
newlevel->dlevel = dunlevs_in_dungeon(newlevel); newlevel->dlevel = dunlevs_in_dungeon(newlevel);
@@ -1617,6 +1619,7 @@ goto_level(
if (Punished) if (Punished)
ballfall(); ballfall();
selftouch("Falling, you"); selftouch("Falling, you");
do_fall_dmg = TRUE;
} }
} }
@@ -1782,6 +1785,15 @@ goto_level(
/* assume this will always return TRUE when changing level */ /* assume this will always return TRUE when changing level */
(void) in_out_region(u.ux, u.uy); (void) in_out_region(u.ux, u.uy);
/* fall damage? */
if (do_fall_dmg) {
int dmg = d(dist, 6);
dmg = Maybe_Half_Phys(dmg);
losehp(dmg, "falling down a mine shaft", KILLED_BY);
}
(void) pickup(1); (void) pickup(1);
} }