Couple more monster iterator uses

This commit is contained in:
Pasi Kallinen
2022-04-25 12:53:04 +03:00
parent 9abec79df8
commit 9b1872ba05
2 changed files with 20 additions and 18 deletions
+12 -9
View File
@@ -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) {
+8 -9
View File
@@ -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