From 7b8aeb53d2eb237b83f8f2ea26f36a7cc98d588f Mon Sep 17 00:00:00 2001 From: Hourier Date: Mon, 19 Oct 2020 21:03:08 +0900 Subject: [PATCH] [Refactor] #37285 Reshaped monster-race-hook.c and one-monster-placer.c --- src/monster-floor/one-monster-placer.c | 23 +++++++++-------------- src/monster-race/monster-race-hook.c | 19 ++++++------------- 2 files changed, 15 insertions(+), 27 deletions(-) diff --git a/src/monster-floor/one-monster-placer.c b/src/monster-floor/one-monster-placer.c index 2a819941e..a650e8571 100644 --- a/src/monster-floor/one-monster-placer.c +++ b/src/monster-floor/one-monster-placer.c @@ -52,19 +52,16 @@ static bool is_friendly_idx(player_type *player_ptr, MONSTER_IDX m_idx) { return static bool monster_hook_tanuki(player_type *player_ptr, MONRACE_IDX r_idx) { monster_race *r_ptr = &r_info[r_idx]; - - if (r_ptr->flags1 & (RF1_UNIQUE)) - return FALSE; - if (r_ptr->flags2 & RF2_MULTIPLY) - return FALSE; - if (r_ptr->flags7 & (RF7_FRIENDLY | RF7_CHAMELEON)) - return FALSE; - if (r_ptr->flags7 & RF7_AQUATIC) + bool unselectable = (r_ptr->flags1 & RF1_UNIQUE) != 0; + unselectable |= (r_ptr->flags2 & RF2_MULTIPLY) != 0; + unselectable |= (r_ptr->flags7 & (RF7_FRIENDLY | RF7_CHAMELEON)) != 0; + unselectable |= (r_ptr->flags7 & RF7_AQUATIC) != 0; + if (unselectable) return FALSE; - if ((r_ptr->blow[0].method == RBM_EXPLODE) || (r_ptr->blow[1].method == RBM_EXPLODE) || (r_ptr->blow[2].method == RBM_EXPLODE) - || (r_ptr->blow[3].method == RBM_EXPLODE)) - return FALSE; + for (int i = 0; i < 4; i++) + if (r_ptr->blow[i].method == RBM_EXPLODE) + return FALSE; return (*(get_monster_hook(player_ptr)))(player_ptr, r_idx); } @@ -78,15 +75,13 @@ static bool monster_hook_tanuki(player_type *player_ptr, MONRACE_IDX r_idx) static MONRACE_IDX initial_r_appearance(player_type *player_ptr, MONRACE_IDX r_idx, BIT_FLAGS generate_mode) { floor_type *floor_ptr = player_ptr->current_floor_ptr; - if (player_ptr->pseikaku == PERSONALITY_CHARGEMAN && (generate_mode & PM_JURAL) && !(generate_mode & (PM_MULTIPLY | PM_KAGE))) { + if (player_ptr->pseikaku == PERSONALITY_CHARGEMAN && (generate_mode & PM_JURAL) && !(generate_mode & (PM_MULTIPLY | PM_KAGE))) return MON_ALIEN_JURAL; - } if (!(r_info[r_idx].flags7 & RF7_TANUKI)) return r_idx; get_mon_num_prep(player_ptr, monster_hook_tanuki, NULL); - int attempts = 1000; DEPTH min = MIN(floor_ptr->base_level - 5, 50); while (--attempts) { diff --git a/src/monster-race/monster-race-hook.c b/src/monster-race/monster-race-hook.c index 87dec2495..72f53b077 100644 --- a/src/monster-race/monster-race-hook.c +++ b/src/monster-race/monster-race-hook.c @@ -813,19 +813,12 @@ bool monster_can_entry_arena(player_type *player_ptr, MONRACE_IDX r_idx) HIT_POINT dam = 0; monster_race *r_ptr = &r_info[r_idx]; - if (r_ptr->flags1 & (RF1_NEVER_MOVE)) - return FALSE; - - if (r_ptr->flags2 & (RF2_MULTIPLY)) - return FALSE; - - if (r_ptr->flags2 & (RF2_QUANTUM)) - return FALSE; - - if (r_ptr->flags7 & (RF7_AQUATIC)) - return FALSE; - - if (r_ptr->flags7 & (RF7_CHAMELEON)) + bool unselectable = (r_ptr->flags1 & RF1_NEVER_MOVE) != 0; + unselectable |= (r_ptr->flags2 & RF2_MULTIPLY) != 0; + unselectable |= ((r_ptr->flags2 & RF2_QUANTUM) != 0); + unselectable |= (r_ptr->flags7 & RF7_AQUATIC) != 0; + unselectable |= (r_ptr->flags7 & RF7_CHAMELEON) != 0; + if (unselectable) return FALSE; for (int i = 0; i < 4; i++) { -- 2.11.0