}
if (!projectable(m_ptr->fy, m_ptr->fx, py, px))
{
- m_ptr->target_y = py;
- m_ptr->target_x = px;
+ set_target(m_ptr, py, px);
}
}
}
extern cptr horror_desc[MAX_SAN_HORROR];
extern cptr funny_desc[MAX_SAN_FUNNY];
extern cptr funny_comments[MAX_SAN_COMMENT];
+extern void set_target(monster_type *m_ptr, int y, int x);
+extern void reset_target(monster_type *m_ptr);
extern void sanity_blast(monster_type *m_ptr, bool necro);
extern void delete_monster_idx(int i);
extern void delete_monster(int y, int x);
if (z_older_than(10,0,10))
{
- m_ptr->target_y = 0;
- m_ptr->target_x = 0;
+ reset_target(m_ptr);
}
else if (z_older_than(10,0,11))
{
s16b tmp16s;
rd_s16b(&tmp16s);
- m_ptr->target_y = 0;
- m_ptr->target_x = 0;
+ reset_target(m_ptr);
}
else
{
{
if (is_pet(&m_list[who]) && (m_ptr->target_y != py) && (m_ptr->target_x != px))
{
- m_ptr->target_y = m_list[who].fy;
- m_ptr->target_x = m_list[who].fx;
+ set_target(m_ptr, m_list[who].fy, m_list[who].fx);
}
}
/* Process the monster */
process_monster(i);
- m_ptr->target_y = 0;
- m_ptr->target_x = 0;
+ reset_target(m_ptr);
/* Give up flow_by_smell when it might useless */
if (p_ptr->no_flowed && one_in_(3))
while(num--)
{
- if(!m_list[hack_m_idx].r_idx) return (TRUE);
- process_monster(hack_m_idx);
+ if(!m_list[hack_m_idx].r_idx) return (TRUE);
+ process_monster(hack_m_idx);
- m_list[hack_m_idx].target_y = 0;
- m_list[hack_m_idx].target_x = 0;
+ reset_target(&m_list[hack_m_idx]);
- /* Notice stuff */
- if (p_ptr->notice) notice_stuff();
+ /* Notice stuff */
+ if (p_ptr->notice) notice_stuff();
- /* Update stuff */
- if (p_ptr->update) update_stuff();
+ /* Update stuff */
+ if (p_ptr->update) update_stuff();
- /* Redraw stuff */
- if (p_ptr->redraw) redraw_stuff();
+ /* Redraw stuff */
+ if (p_ptr->redraw) redraw_stuff();
- /* Redraw stuff */
- if (p_ptr->window) window_stuff();
+ /* Redraw stuff */
+ if (p_ptr->window) window_stuff();
- /* Delay */
- if (vs_player) Term_xtra(TERM_XTRA_DELAY, 500);
+ /* Delay */
+ if (vs_player) Term_xtra(TERM_XTRA_DELAY, 500);
}
/* Redraw map */
/*
+ * Set the target of counter attack
+ */
+void set_target(monster_type *m_ptr, int y, int x)
+{
+ m_ptr->target_y = y;
+ m_ptr->target_x = x;
+}
+
+/*
+ * Reset the target of counter attack
+ */
+void reset_target(monster_type *m_ptr)
+{
+ set_target(m_ptr, 0, 0);
+}
+
+/*
* Delete a monster by index.
*
* When a monster is deleted, all of its objects are deleted.
/* Unknown distance */
m_ptr->cdis = 0;
- m_ptr->target_y = 0;
- m_ptr->target_x = 0;
+ reset_target(m_ptr);
m_ptr->nickname = 0;
/* Cannot cast spells when confused */
if (m_ptr->confused)
{
- m_ptr->target_y = 0;
- m_ptr->target_x = 0;
+ reset_target(m_ptr);
return (FALSE);
}
}
}
- m_ptr->target_y = 0;
- m_ptr->target_x = 0;
+ reset_target(m_ptr);
/* Extract the monster level */
rlev = ((r_ptr->level >= 1) ? r_ptr->level : 1);
if (!success) continue;
}
- m_ptr->target_y = 0;
- m_ptr->target_x = 0;
+ reset_target(m_ptr);
/* OK -- we've got a target */
y = t_ptr->fy;
{
if (!projectable(m_ptr->fy, m_ptr->fx, py, px) && !(flg & PROJECT_NO_HANGEKI))
{
- m_ptr->target_y = monster_target_y;
- m_ptr->target_x = monster_target_x;
+ set_target(m_ptr, monster_target_y, monster_target_x);
}
}
else if (is_pet(&m_list[who]) && (m_ptr->target_y != py) && (m_ptr->target_x != px))
{
- m_ptr->target_y = m_list[who].fy;
- m_ptr->target_x = m_list[who].fx;
+ set_target(m_ptr, m_list[who].fy, m_list[who].fx);
}
}