gamelog: hit with wielded weapon for first time

Reordering "killed for the first time" and "hit with a wielded weapon
for the first time" was done by moving the latter to hmon().  Hitting
with an applied polearm also gave the first-hit message since it
bypassed the routine that had been doing so.  But the throwing code
that handles applied polearms calls hmon() for damage, so after that
reordering, the first-hit log message became duplicated if triggered
by polearm usage.

Also, fix a quibble with the wizard mode conduct message given after
never-hit-with-wielded-weapon conduct has been broken.  The message
said "used a wielded weapon N times" when it meant "hit with a wielded
weapon N times".  "Used" is misleading if that wielded weapon happens
to be a pick-axe, so change the message to say "hit with".
This commit is contained in:
PatR
2022-02-19 11:24:28 -08:00
parent 70dafd658d
commit e972d0b965
3 changed files with 14 additions and 8 deletions

View File

@@ -1,4 +1,4 @@
/* NetHack 3.7 dothrow.c $NHDT-Date: 1621037618 2021/05/15 00:13:38 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.199 $ */
/* NetHack 3.7 dothrow.c $NHDT-Date: 1645298658 2022/02/19 19:24:18 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.217 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/*-Copyright (c) Robert Patrick Rankin, 2013. */
/* NetHack may be freely redistributed. See license for details. */
@@ -1885,9 +1885,12 @@ thitmonst(
chopper = is_axe(obj);
/* attack hits mon */
if (hmode == HMON_APPLIED)
if (!u.uconduct.weaphit++)
livelog_printf(LL_CONDUCT, "hit with a wielded weapon for the first time");
if (hmode == HMON_APPLIED) { /* ranged hit with wielded polearm */
/* hmon()'s caller is expected to do this; however, hmon()
delivers the "hit with wielded weapon for first time"
gamelog message when applicable */
u.uconduct.weaphit++;
}
if (hmon(mon, obj, hmode, dieroll)) { /* mon still alive */
if (mon->wormno)
cutworm(mon, g.bhitpos.x, g.bhitpos.y, chopper);