static bool mon_invis;
static POSITION mon_fy, mon_fx;
+byte get_dungeon_feeling(player_type *subject_ptr);
void day_break(player_type *subject_ptr)
{
* / Examine all monsters and unidentified objects, and get the feeling of current dungeon floor
* @return 算出されたダンジョンの雰囲気ランク
*/
-byte get_dungeon_feeling(floor_type *floor_ptr)
+byte get_dungeon_feeling(player_type *subject_ptr)
{
/* Hack -- no feeling in the town */
+ floor_type *floor_ptr = subject_ptr->current_floor_ptr;
if (!floor_ptr->dun_level) return 0;
/* Examine each monster */
/* Unusually crowded monsters get a little bit of rating boost */
if (r_ptr->flags1 & RF1_FRIENDS)
{
- if (5 <= get_monster_crowd_number(i)) delta += 1;
+ if (5 <= get_monster_crowd_number(subject_ptr, i)) delta += 1;
}
else
{
- if (2 <= get_monster_crowd_number(i)) delta += 1;
+ if (2 <= get_monster_crowd_number(subject_ptr, i)) delta += 1;
}
/* Get new dungeon feeling */
- byte new_feeling = get_dungeon_feeling(floor_ptr);
+ byte new_feeling = get_dungeon_feeling(subject_ptr);
/* Remember last time updated */
subject_ptr->feeling_turn = current_world_ptr->game_turn;
extern void day_break(player_type *subject_ptr);
extern void night_falls(player_type *subject_ptr);
extern MONSTER_NUMBER count_all_hostile_monsters(floor_type *floor_ptr);
-extern byte get_dungeon_feeling(floor_type *floor_ptr);
extern void update_dungeon_feeling(player_type *subject_ptr);
extern void glow_deep_lava_and_bldg(player_type *subject_ptr);
extern void forget_lite(floor_type *floor_ptr);
extern bool monster_has_hostile_align(monster_type *m_ptr, int pa_good, int pa_evil, monster_race *r_ptr);
extern void dice_to_string(int base_damage, int dice_num, int dice_side, int dice_mult, int dice_div, char* msg);
extern concptr look_mon_desc(monster_type *m_ptr, BIT_FLAGS mode);
-extern int get_monster_crowd_number(MONSTER_IDX m_idx);
+extern int get_monster_crowd_number(player_type *player_ptr, MONSTER_IDX m_idx);
extern void message_pain(player_type *player_ptr, MONSTER_IDX m_idx, HIT_POINT dam);
/* monster2.c */
}
/*!
+ * todo ここには本来floor_type*を追加したいが、monster.hにfloor.hの参照を追加するとコンパイルエラーが出るので保留
* @brief 指定したモンスターに隣接しているモンスターの数を返す。
* / Count number of adjacent monsters
+ * @param player_ptr プレーヤーへの参照ポインタ
* @param m_idx 隣接数を調べたいモンスターのID
* @return 隣接しているモンスターの数
*/
-int get_monster_crowd_number(MONSTER_IDX m_idx)
+int get_monster_crowd_number(player_type *player_ptr, MONSTER_IDX m_idx)
{
- floor_type *floor_ptr = p_ptr->current_floor_ptr;
+ floor_type *floor_ptr = player_ptr->current_floor_ptr;
monster_type *m_ptr = &floor_ptr->m_list[m_idx];
POSITION my = m_ptr->fy;
POSITION mx = m_ptr->fx;