From fc558bfff45b115c2488c75457b6d5ccdbadb26e Mon Sep 17 00:00:00 2001 From: "nethack.rankin" Date: Mon, 21 Oct 2002 10:20:29 +0000 Subject: [PATCH] fix B14003 - "bashing" with mounted polearms Attacking with a polearm while mounted behaves differently than while on foot, so make mounting and dismounting when wielding one adjust weapon status accordingly. Don't give a bashing message on first attack if you mount with a polearm already wielded; do give one on your next hand-to-hand attack if you just dismounted with one wielded. --- doc/fixes34.1 | 2 ++ src/steed.c | 21 +++++++++++++-------- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/doc/fixes34.1 b/doc/fixes34.1 index e6d88963a..1c2d0562b 100644 --- a/doc/fixes34.1 +++ b/doc/fixes34.1 @@ -286,6 +286,8 @@ stinking clouds in bones files do not get their ttl set reasonably stinking clouds in bones files may incorrectly set player_inside breaking wand of digging on a drawbridge shouldn't dig/hole a pit in the bridge avoid mimicking gold when the character has the Unchanging attribute +handle polearm wielded prior to mounting the same as one wielded while mounted, + and one still used after dismounting like one wielded while not mounted Platform- and/or Interface-Specific Fixes diff --git a/src/steed.c b/src/steed.c index 83a46bc07..04a23cca3 100644 --- a/src/steed.c +++ b/src/steed.c @@ -339,6 +339,8 @@ mount_steed(mtmp, force) pline("%s magically floats up!", Monnam(mtmp)); You("mount %s.", mon_nam(mtmp)); } + /* setuwep handles polearms differently when you're mounted */ + if (uwep && is_pole(uwep)) unweapon = FALSE; u.usteed = mtmp; remove_monster(mtmp->mx, mtmp->my); teleds(mtmp->mx, mtmp->my, TRUE); @@ -598,14 +600,17 @@ dismount_steed(reason) } /* Return the player to the floor */ - if (reason != DISMOUNT_ENGULFED) { - in_steed_dismounting = TRUE; - (void) float_down(0L, W_SADDLE); - in_steed_dismounting = FALSE; - flags.botl = 1; - (void)encumber_msg(); - vision_full_recalc = 1; - } else flags.botl = 1; + if (reason != DISMOUNT_ENGULFED) { + in_steed_dismounting = TRUE; + (void) float_down(0L, W_SADDLE); + in_steed_dismounting = FALSE; + flags.botl = 1; + (void)encumber_msg(); + vision_full_recalc = 1; + } else + flags.botl = 1; + /* polearms behave differently when not mounted */ + if (uwep && is_pole(uwep)) unweapon = TRUE; return; } -- 2.40.0