OSDN Git Service

[Feature] #38790 チャージマンによるジュラル星人への誤認処理を調整. / Adjust Chargeman's process timing condit...
authordeskull <deskull@users.sourceforge.jp>
Sun, 15 Mar 2020 02:47:34 +0000 (11:47 +0900)
committerdeskull <deskull@users.sourceforge.jp>
Sun, 15 Mar 2020 02:47:34 +0000 (11:47 +0900)
src/monster.h
src/monster2.c

index 770da2a..1711c3e 100644 (file)
@@ -282,6 +282,7 @@ typedef struct
 #define PM_HASTE          0x00000100    /*!< モンスター生成フラグ: 加速状態で生成する */
 #define PM_KAGE           0x00000200    /*!< モンスター生成フラグ: 必ずあやしい影として生成する */
 #define PM_MULTIPLY       0x00000400    /*!< モンスター生成フラグ: 増殖処理時として生成する */
+#define PM_JURAL          0x00000800    /*!< モンスター生成フラグ: ジュラル星人として誤認生成する */
 
 extern bool place_monster_aux(player_type *player_ptr, MONSTER_IDX who, POSITION y, POSITION x, MONRACE_IDX r_idx, BIT_FLAGS mode);
 extern bool place_monster(player_type *player_ptr, POSITION y, POSITION x, BIT_FLAGS mode);
index 36595d7..54072c7 100644 (file)
@@ -2102,10 +2102,9 @@ static bool monster_hook_tanuki(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 == SEIKAKU_CHARGEMAN && !(generate_mode & (PM_MULTIPLY | PM_KAGE)))
+       if ((generate_mode | PM_JURAL) && !(generate_mode & (PM_MULTIPLY | PM_KAGE)))
        {
-               if ((one_in_(5) || (floor_ptr->base_level == 0)) &&
-                               !(r_info[r_idx].flags1 & RF1_UNIQUE) && my_strchr("hkoptuyAHLOPTUVY", r_info[r_idx].d_char)) return MON_ALIEN_JURAL;
+               return MON_ALIEN_JURAL;
        }
 
        if (!(r_info[r_idx].flags7 & RF7_TANUKI))
@@ -2742,6 +2741,12 @@ bool place_monster(player_type *player_ptr, POSITION y, POSITION x, BIT_FLAGS mo
        r_idx = get_mon_num(player_ptr, player_ptr->current_floor_ptr->monster_level);
        if (!r_idx) return FALSE;
 
+       if ((one_in_(5) || (player_ptr->current_floor_ptr->base_level == 0)) &&
+               !(r_info[r_idx].flags1 & RF1_UNIQUE) && my_strchr("hkoptuyAHLOPTUVY", r_info[r_idx].d_char))
+       {
+               mode |= PM_JURAL;
+       }
+
        if (place_monster_aux(player_ptr, 0, y, x, r_idx, mode)) return TRUE;
 
        return FALSE;