Couple more monster iterator uses
This commit is contained in:
@@ -10,6 +10,7 @@ static void mkcavepos(xchar, xchar, int, boolean, boolean);
|
|||||||
static void mkcavearea(boolean);
|
static void mkcavearea(boolean);
|
||||||
static int dig(void);
|
static int dig(void);
|
||||||
static void dig_up_grave(coord *);
|
static void dig_up_grave(coord *);
|
||||||
|
static boolean watchman_canseeu(struct monst *);
|
||||||
static int adj_pit_checks(coord *, char *);
|
static int adj_pit_checks(coord *, char *);
|
||||||
static void pit_flow(struct trap *, schar);
|
static void pit_flow(struct trap *, schar);
|
||||||
static boolean furniture_handled(int, int, boolean);
|
static boolean furniture_handled(int, int, boolean);
|
||||||
@@ -1203,6 +1204,15 @@ use_pick_axe2(struct obj *obj)
|
|||||||
return ECMD_TIME;
|
return ECMD_TIME;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static boolean
|
||||||
|
watchman_canseeu(struct monst *mtmp)
|
||||||
|
{
|
||||||
|
if (is_watch(mtmp->data) && mtmp->mcansee && m_canseeu(mtmp)
|
||||||
|
&& couldsee(mtmp->mx, mtmp->my) && mtmp->mpeaceful)
|
||||||
|
return TRUE;
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Town Watchmen frown on damage to the town walls, trees or fountains.
|
* Town Watchmen frown on damage to the town walls, trees or fountains.
|
||||||
* It's OK to dig holes in the ground, however.
|
* It's OK to dig holes in the ground, however.
|
||||||
@@ -1217,15 +1227,8 @@ watch_dig(struct monst *mtmp, xchar x, xchar y, boolean zap)
|
|||||||
if (in_town(x, y)
|
if (in_town(x, y)
|
||||||
&& (closed_door(x, y) || lev->typ == SDOOR || IS_WALL(lev->typ)
|
&& (closed_door(x, y) || lev->typ == SDOOR || IS_WALL(lev->typ)
|
||||||
|| IS_FOUNTAIN(lev->typ) || IS_TREE(lev->typ))) {
|
|| IS_FOUNTAIN(lev->typ) || IS_TREE(lev->typ))) {
|
||||||
if (!mtmp) {
|
if (!mtmp)
|
||||||
for (mtmp = fmon; mtmp; mtmp = mtmp->nmon) {
|
mtmp = get_iter_mons(watchman_canseeu);
|
||||||
if (DEADMONSTER(mtmp))
|
|
||||||
continue;
|
|
||||||
if (is_watch(mtmp->data) && mtmp->mcansee && m_canseeu(mtmp)
|
|
||||||
&& couldsee(mtmp->mx, mtmp->my) && mtmp->mpeaceful)
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (mtmp) {
|
if (mtmp) {
|
||||||
if (zap || g.context.digging.warned) {
|
if (zap || g.context.digging.warned) {
|
||||||
|
|||||||
@@ -6,6 +6,7 @@
|
|||||||
#include "hack.h"
|
#include "hack.h"
|
||||||
|
|
||||||
static int pet_type(void);
|
static int pet_type(void);
|
||||||
|
static void set_mon_lastmove(struct monst *);
|
||||||
|
|
||||||
void
|
void
|
||||||
newedog(struct monst *mtmp)
|
newedog(struct monst *mtmp)
|
||||||
@@ -200,20 +201,18 @@ makedog(void)
|
|||||||
return mtmp;
|
return mtmp;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
set_mon_lastmove(struct monst *mtmp)
|
||||||
|
{
|
||||||
|
mtmp->mlstmv = g.moves;
|
||||||
|
}
|
||||||
|
|
||||||
/* record `last move time' for all monsters prior to level save so that
|
/* record `last move time' for all monsters prior to level save so that
|
||||||
mon_arrive() can catch up for lost time when they're restored later */
|
mon_arrive() can catch up for lost time when they're restored later */
|
||||||
void
|
void
|
||||||
update_mlstmv(void)
|
update_mlstmv(void)
|
||||||
{
|
{
|
||||||
struct monst *mon;
|
iter_mons(set_mon_lastmove);
|
||||||
|
|
||||||
/* monst->mlstmv used to be updated every time `monst' actually moved,
|
|
||||||
but that is no longer the case so we just do a blanket assignment */
|
|
||||||
for (mon = fmon; mon; mon = mon->nmon) {
|
|
||||||
if (DEADMONSTER(mon))
|
|
||||||
continue;
|
|
||||||
mon->mlstmv = g.moves;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|||||||
Reference in New Issue
Block a user