diff --git a/doc/fixes36.2 b/doc/fixes36.2 index fbf1544ba..66171870b 100644 --- a/doc/fixes36.2 +++ b/doc/fixes36.2 @@ -104,6 +104,9 @@ 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 d7b770f4d..c40d1ac62 100644 --- a/src/apply.c +++ b/src/apply.c @@ -1,4 +1,4 @@ -/* NetHack 3.6 apply.c $NHDT-Date: 1526769961 2018/05/19 22:46:01 $ $NHDT-Branch: NetHack-3.6.2 $:$NHDT-Revision: 1.246 $ */ +/* NetHack 3.6 apply.c $NHDT-Date: 1519598527 2018/02/25 22:42:07 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.243 $ */ /* 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 (!DEADMONSTER(mtmp)) + if (mtmp->mhp > 0) u.uconduct.killer = save_pacifism; } else { pline("%s is choked by the leash!", Monnam(mtmp)); @@ -2865,41 +2865,21 @@ coord *pos; int min_range, max_range; { struct monst *mtmp; - coord mpos; - boolean impaired; - int x, y, lo_x, hi_x, lo_y, hi_y, rt, glyph; + struct monst *selmon = (struct monst *) 0; - 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; - } + 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 (!mpos.x) - return FALSE; /* no candidate location */ - *pos = mpos; + if (!selmon) + return FALSE; + pos->x = selmon->mx; + pos->y = selmon->my; return TRUE; } @@ -2907,8 +2887,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 @@ -3018,7 +2998,7 @@ struct obj *obj; return res; } - context.polearm.hitmon = (struct monst *) 0; + context.polearm.hitmon = NULL; /* Attack the monster there */ bhitpos = cc; if ((mtmp = m_at(bhitpos.x, bhitpos.y)) != (struct monst *) 0) {