steed, stethoscope, and a vortex

<email deleted> wrote in rgrn:
> Using a stethoscope while inside a monster (air elemental, vortex)
> and while riding a steed will not let you use the stethoscope
> on your steed. You'll only get the engulfer-monster's stats
> instead of your steeds.

Fix the reported but that prevented stethoscope application to your
steed while engulfed. While the inability to apply your stethoscope
to your steed while engulfed was a code oversight, I think it's a
feature that your ability to use the stethoscope is impacted in the
midst of a swirling, noisy vortex. Make it deliberate with a
two-in-3 chance of avoiding the interference (nine-in-10 chance if
you're a healer who is much more skilled at using a stethoscope).
This commit is contained in:
nethack.allison
2003-07-19 16:39:46 +00:00
parent db4b55a6de
commit 2213732f1c
2 changed files with 17 additions and 4 deletions

View File

@@ -109,6 +109,8 @@ only charge for eating one stacked tin, not all at once
add flag to makemon() to allow monster to be created adjacent to the supplied
coordinates if there is already a monster at the target location
stone-to-flesh of spot with multiple statues can animate more than one
use of stethoscope now deliberately impacted when hero is engulfed by whirly
monster but fixed so it can sometimes work on your steed there too
Platform- and/or Interface-Specific Fixes

View File

@@ -209,6 +209,8 @@ use_stethoscope(obj)
struct monst *mtmp;
struct rm *lev;
int rx, ry, res;
boolean interference = (u.uswallow && is_whirly(u.ustuck->data) &&
!rn2(Role_if(PM_HEALER) ? 10 : 3));
if (nohands(youmonst.data)) { /* should also check for no ears and/or deaf */
You("have no hands!"); /* not `body_part(HAND)' */
@@ -224,14 +226,23 @@ use_stethoscope(obj)
last_used_move = moves;
last_used_movement = youmonst.movement;
#ifdef STEED
if (u.usteed && u.dz > 0) {
if (interference) {
pline("%s interferes.", Monnam(u.ustuck));
mstatusline(u.ustuck);
} else
mstatusline(u.usteed);
return res;
} else
#endif
if (u.uswallow && (u.dx || u.dy || u.dz)) {
mstatusline(u.ustuck);
return res;
#ifdef STEED
} else if (u.usteed && u.dz > 0) {
mstatusline(u.usteed);
} else if (u.uswallow && interference) {
pline("%s interferes.", Monnam(u.ustuck));
mstatusline(u.ustuck);
return res;
#endif
} else if (u.dz) {
if (Underwater)
You_hear("faint splashing.");