extern MONSTER_IDX hack_m_idx;
extern MONSTER_IDX hack_m_idx_ii;
+/* Maximum "Nazguls" number */
+#define MAX_NAZGUL_NUM 5
+
#define MTIMED_CSLEEP 0 /* Monster is sleeping */
#define MTIMED_FAST 1 /* Monster is temporarily fast */
#define MTIMED_SLOW 2 /* Monster is temporarily slow */
typedef struct monster_type monster_type;
+
struct monster_type
{
MONRACE_IDX r_idx; /* Monster race index 0 = dead. */
MONRACE_IDX ap_r_idx; /* Monster race appearance index */
+ struct floor_type *current_floor_ptr;
/* Sub-alignment flags for neutral monsters */
#define SUB_ALIGN_NEUTRAL 0x0000
BIT_FLAGS8 mflag; /* Extra monster flags */
#define MFLAG_VIEW 0x01 /* Monster is in line of sight */
-#define MFLAG_LOS 0x02 /* Monster is marked for project_all_los() */
+#define MFLAG_LOS 0x02 /* Monster is marked for project_all_los(caster_ptr, ) */
#define MFLAG_XXX2 0x04 /* (unused) */
#define MFLAG_ETF 0x08 /* Monster is entering the field. */
#define MFLAG_BORN 0x10 /* Monster is still being born */
extern void monster_name(MONSTER_IDX m_idx, char* m_name);
extern void roff_top(MONRACE_IDX r_idx);
-extern void screen_roff(MONRACE_IDX r_idx, BIT_FLAGS mode);
-extern void display_roff(MONRACE_IDX r_idx);
-extern void output_monster_spoiler(MONRACE_IDX r_idx, void(*roff_func)(TERM_COLOR attr, concptr str));
+extern void screen_roff(player_type *player_ptr, MONRACE_IDX r_idx, BIT_FLAGS mode);
+extern void display_roff(player_type *player_ptr);
+extern void output_monster_spoiler(player_type *player_ptr, MONRACE_IDX r_idx, void(*roff_func)(TERM_COLOR attr, concptr str));
extern concptr extract_note_dies(MONRACE_IDX r_idx);
-extern void monster_death(MONSTER_IDX m_idx, bool drop_item);
-extern monsterrace_hook_type get_monster_hook(void);
+extern void monster_death(player_type *player_ptr, MONSTER_IDX m_idx, bool drop_item);
+extern monsterrace_hook_type get_monster_hook(player_type *player_ptr);
extern monsterrace_hook_type get_monster_hook2(POSITION y, POSITION x);
extern void set_friendly(monster_type *m_ptr);
extern void set_pet(monster_type *m_ptr);
extern monster_race *real_r_ptr(monster_type *m_ptr);
extern MONRACE_IDX real_r_idx(monster_type *m_ptr);
extern void delete_monster_idx(MONSTER_IDX i);
-extern void delete_monster(POSITION y, POSITION x);
extern void compact_monsters(int size);
extern void wipe_m_list(void);
extern MONSTER_IDX m_pop(void);
extern MONRACE_IDX get_mon_num(DEPTH level);
extern int lore_do_probe(MONRACE_IDX r_idx);
extern void lore_treasure(MONSTER_IDX m_idx, ITEM_NUMBER num_item, ITEM_NUMBER num_gold);
-extern void update_monster(MONSTER_IDX m_idx, bool full);
+extern void update_monster(player_type *subject_ptr, MONSTER_IDX m_idx, bool full);
extern void update_monsters(bool full);
extern bool multiply_monster(MONSTER_IDX m_idx, bool clone, BIT_FLAGS mode);
#define is_friendly(A) \
(bool)(((A)->smart & SM_FRIENDLY) ? TRUE : FALSE)
-#define is_friendly_idx(IDX) \
- (bool)((IDX) > 0 && is_friendly(¤t_floor_ptr->m_list[(IDX)]))
+#define is_friendly_idx(MONSTER_IDX) \
+ (bool)((MONSTER_IDX) > 0 && is_friendly(&p_ptr->current_floor_ptr->m_list[(MONSTER_IDX)]))
#define is_pet(A) \
(bool)(((A)->smart & SM_PET) ? TRUE : FALSE)
(bool)(((A)->ap_r_idx == (A)->r_idx) ? TRUE : FALSE)
#define is_original_ap_and_seen(A) \
- (bool)((A)->ml && !p_ptr->image && ((A)->ap_r_idx == (A)->r_idx))
\ No newline at end of file
+ (bool)((A)->ml && !p_ptr->image && ((A)->ap_r_idx == (A)->r_idx))