From 2213732f1c5b9b3d474b7c4b0fcaaf457d168944 Mon Sep 17 00:00:00 2001 From: "nethack.allison" Date: Sat, 19 Jul 2003 16:39:46 +0000 Subject: [PATCH] steed, stethoscope, and a vortex 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). --- doc/fixes34.2 | 2 ++ src/apply.c | 19 +++++++++++++++---- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/doc/fixes34.2 b/doc/fixes34.2 index 36e200d2e..0efff61be 100644 --- a/doc/fixes34.2 +++ b/doc/fixes34.2 @@ -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 diff --git a/src/apply.c b/src/apply.c index 56559316a..eda64e283 100644 --- a/src/apply.c +++ b/src/apply.c @@ -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.");