From: cohrs Date: Fri, 26 Sep 2003 03:31:09 +0000 (+0000) Subject: dismounting next to a boulder X-Git-Tag: MOVE2GIT~1753 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=c2f12b8d30dcef380b0f5e4ce9e95f35a27f5554;p=nethack dismounting next to a boulder It makes sense that if you cannot normally move to a location containing a boulder, dismounting there should be avoided if possible. It seems that it should be possible to land there if there's no other choice. Perhaps doing so should result in damage, but that's not in this patch. --- diff --git a/doc/fixes34.3 b/doc/fixes34.3 index b68347c80..4a998e193 100644 --- a/doc/fixes34.3 +++ b/doc/fixes34.3 @@ -30,6 +30,7 @@ do not double credit when putting gold into an unpaid container manes are nonliving poles and grappling hook worked thru walls when wearing Eyes of the Overworld more tweaks to fog cloud behavior +when dismounting by choice and unimpaired, try not to land on a boulder Platform- and/or Interface-Specific Fixes diff --git a/src/steed.c b/src/steed.c index 1395767af..25ec9f8a2 100644 --- a/src/steed.c +++ b/src/steed.c @@ -424,7 +424,7 @@ int forceit; boolean found = FALSE; struct trap *t; - /* avoid known traps (i == 0), but allow them as a backup */ + /* avoid known traps (i == 0) and boulders, but allow them as a backup */ if (reason != DISMOUNT_BYCHOICE || Stunned || Confusion || Fumbling) i = 1; for (; !found && i < 2; ++i) { for (x = u.ux-1; x <= u.ux+1; x++) @@ -436,7 +436,9 @@ int forceit; distance = distu(x,y); if (min_distance < 0 || distance < min_distance || (distance == min_distance && rn2(2))) { - if (i > 0 || (t = t_at(x, y)) == 0 || !t->tseen) { + if (i > 0 || (((t = t_at(x, y)) == 0 || !t->tseen) && + (!sobj_at(BOULDER, x, y) || + throws_rocks(youmonst.data)))) { spot->x = x; spot->y = y; min_distance = distance;