From 7bc0ce66e68f4e6f39e39a7422a29d95222f38ad Mon Sep 17 00:00:00 2001 From: nhmall Date: Sun, 2 Sep 2018 18:11:03 -0400 Subject: [PATCH] Revert "transformation message when you apply a figurine" This reverts commit e2b187f2f1e38987ece327f43ae6500ce5cd5567. --- doc/fixes36.2 | 3 --- src/apply.c | 56 ++++++++++++++++++++++++++++++++++----------------- 2 files changed, 38 insertions(+), 21 deletions(-) diff --git a/doc/fixes36.2 b/doc/fixes36.2 index 66171870b..fbf1544ba 100644 --- a/doc/fixes36.2 +++ b/doc/fixes36.2 @@ -104,9 +104,6 @@ wizard mode ^I^I didn't make temporary identifications become persistent if the build configuration makes plain 'char' unsigned wizard mode #wizidentify didn't disclose extra information for unID'd items if key bindings took away ^I and didn't bind #wizidentify to another key -make transformation message of a deliberate apply of a figurine seem a bit - less definite when blind and place unseen monster marker at the spot - you think it should be Fixes to Post-3.6.1 Problems that Were Exposed Via git Repository diff --git a/src/apply.c b/src/apply.c index c40d1ac62..d7b770f4d 100644 --- a/src/apply.c +++ b/src/apply.c @@ -1,4 +1,4 @@ -/* NetHack 3.6 apply.c $NHDT-Date: 1519598527 2018/02/25 22:42:07 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.243 $ */ +/* NetHack 3.6 apply.c $NHDT-Date: 1526769961 2018/05/19 22:46:01 $ $NHDT-Branch: NetHack-3.6.2 $:$NHDT-Revision: 1.246 $ */ /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /*-Copyright (c) Robert Patrick Rankin, 2012. */ /* NetHack may be freely redistributed. See license for details. */ @@ -767,7 +767,7 @@ register xchar x, y; corpse less likely to remain tame after revival */ xkilled(mtmp, XKILL_NOMSG); /* life-saving doesn't ordinarily reset this */ - if (mtmp->mhp > 0) + if (!DEADMONSTER(mtmp)) u.uconduct.killer = save_pacifism; } else { pline("%s is choked by the leash!", Monnam(mtmp)); @@ -2865,21 +2865,41 @@ coord *pos; int min_range, max_range; { struct monst *mtmp; - struct monst *selmon = (struct monst *) 0; + coord mpos; + boolean impaired; + int x, y, lo_x, hi_x, lo_y, hi_y, rt, glyph; - for (mtmp = fmon; mtmp; mtmp = mtmp->nmon) - if (mtmp && !DEADMONSTER(mtmp) && !mtmp->mtame - && cansee(mtmp->mx, mtmp->my) - && distu(mtmp->mx, mtmp->my) <= max_range - && distu(mtmp->mx, mtmp->my) >= min_range) { - if (selmon) - return FALSE; - selmon = mtmp; + if (Blind) + return FALSE; /* must be able to see target location */ + impaired = (Confusion || Stunned || Hallucination); + mpos.x = mpos.y = 0; /* no candidate location yet */ + rt = isqrt(max_range); + lo_x = max(u.ux - rt, 1), hi_x = min(u.ux + rt, COLNO - 1); + lo_y = max(u.uy - rt, 0), hi_y = min(u.uy + rt, ROWNO - 1); + for (x = lo_x; x <= hi_x; ++x) { + for (y = lo_y; y <= hi_y; ++y) { + if (distu(x, y) < min_range || distu(x, y) > max_range + || !isok(x, y) || !cansee(x, y)) + continue; + glyph = glyph_at(x, y); + if (!impaired + && glyph_is_monster(glyph) + && (mtmp = m_at(x, y)) != 0 + && (mtmp->mtame || (mtmp->mpeaceful && flags.confirm))) + continue; + if (glyph_is_monster(glyph) + || glyph_is_warning(glyph) + || glyph_is_invisible(glyph) + || (glyph_is_statue(glyph) && impaired)) { + if (mpos.x) + return FALSE; /* more than one candidate location */ + mpos.x = x, mpos.y = y; + } } - if (!selmon) - return FALSE; - pos->x = selmon->mx; - pos->y = selmon->my; + } + if (!mpos.x) + return FALSE; /* no candidate location */ + *pos = mpos; return TRUE; } @@ -2887,8 +2907,8 @@ static int polearm_range_min = -1; static int polearm_range_max = -1; STATIC_OVL boolean -get_valid_polearm_position(x,y) -int x,y; +get_valid_polearm_position(x, y) +int x, y; { return (isok(x, y) && ACCESSIBLE(levl[x][y].typ) && distu(x, y) >= polearm_range_min @@ -2998,7 +3018,7 @@ struct obj *obj; return res; } - context.polearm.hitmon = NULL; + context.polearm.hitmon = (struct monst *) 0; /* Attack the monster there */ bhitpos = cc; if ((mtmp = m_at(bhitpos.x, bhitpos.y)) != (struct monst *) 0) { -- 2.40.0