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.
This commit is contained in:
@@ -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
|
||||
|
||||
21
src/steed.c
21
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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user