From a576c4effdb7b79d7db9b3a178d6e811a7ae82c2 Mon Sep 17 00:00:00 2001 From: Haru Date: Fri, 26 Dec 2014 18:16:12 +0100 Subject: Allowed flag values of map_count_oncell to stack - Follow-up to ea34b80 - It is now possible to stack 0x1|0x2 as a valid flag value. Signed-off-by: Haru --- src/map/map.c | 64 ++++++++++++++++++++++++++++------------------------------- 1 file changed, 30 insertions(+), 34 deletions(-) (limited to 'src/map') diff --git a/src/map/map.c b/src/map/map.c index 58bd944cb..e5574eaf7 100644 --- a/src/map/map.c +++ b/src/map/map.c @@ -411,45 +411,41 @@ int map_count_oncell(int16 m, int16 x, int16 y, int type, int flag) { bx = x/BLOCK_SIZE; by = y/BLOCK_SIZE; - if (type&~BL_MOB) - for( bl = map->list[m].block[bx+by*map->list[m].bxs] ; bl != NULL ; bl = bl->next ) - if ( bl->x == x && bl->y == y && bl->type&type ) { - if ( flag ) { - if ( flag & 2 ) { // priority over other flags - struct status_change *sc = status->get_sc(bl); - if ( !(sc && sc->option&OPTION_INVISIBLE) ) - count++; - } else { - if ( flag & 1 ) { - struct unit_data *ud = unit->bl2ud(bl); - if ( !ud || ud->walktimer == INVALID_TIMER ) - count++; - } - } - } else { - count++; + if (type&~BL_MOB) { + for (bl = map->list[m].block[bx+by*map->list[m].bxs]; bl != NULL; bl = bl->next) { + if (bl->x == x && bl->y == y && bl->type&type) { + if (flag&0x2) { + struct status_change *sc = status->get_sc(bl); + if (sc && (sc->option&OPTION_INVISIBLE)) + continue; } + if (flag&0x1) { + struct unit_data *ud = unit->bl2ud(bl); + if (ud && ud->walktimer != INVALID_TIMER) + continue; + } + count++; } + } + } - if (type&BL_MOB) - for( bl = map->list[m].block_mob[bx+by*map->list[m].bxs] ; bl != NULL ; bl = bl->next ) - if ( bl->x == x && bl->y == y ) { - if ( flag ) { - if ( flag & 2 ) { // priority over other flags - struct status_change *sc = status->get_sc(bl); - if ( !(sc && sc->option&OPTION_INVISIBLE) ) - count++; - } else { - if ( flag & 1 ) { - struct unit_data *ud = unit->bl2ud(bl); - if ( !ud || ud->walktimer == INVALID_TIMER ) - count++; - } - } - } else { - count++; + if (type&BL_MOB) { + for (bl = map->list[m].block_mob[bx+by*map->list[m].bxs]; bl != NULL; bl = bl->next) { + if (bl->x == x && bl->y == y) { + if (flag&0x2) { + struct status_change *sc = status->get_sc(bl); + if (sc && (sc->option&OPTION_INVISIBLE)) + continue; } + if (flag&0x1) { + struct unit_data *ud = unit->bl2ud(bl); + if (ud && ud->walktimer != INVALID_TIMER) + continue; + } + count++; } + } + } return count; } -- cgit v1.2.3-60-g2f50