if (m_ptr->ml)
{
/* Auto-Recall if possible and visible */
- monster_race_track(m_ptr->ap_r_idx);
+ if (!p_ptr->image) monster_race_track(m_ptr->ap_r_idx);
/* Track a new monster */
health_track(c_ptr->m_idx);
if (m_ptr->ml)
{
/* Auto-Recall if possible and visible */
- monster_race_track(m_ptr->ap_r_idx);
+ if (!p_ptr->image) monster_race_track(m_ptr->ap_r_idx);
/* Track a new monster */
health_track(c_ptr->m_idx);
msg_format("The %s hits %s.", o_name, m_name);
#endif
+ if (m_ptr->ml)
+ {
+ /* Hack -- Track this monster race */
+ if (!p_ptr->image) monster_race_track(m_ptr->ap_r_idx);
- /* Hack -- Track this monster race */
- if (m_ptr->ml) monster_race_track(m_ptr->ap_r_idx);
-
- /* Hack -- Track this monster */
- if (m_ptr->ml) health_track(c_ptr->m_idx);
+ /* Hack -- Track this monster */
+ health_track(c_ptr->m_idx);
+ }
}
/* Apply special damage XXX XXX XXX */
msg_format("The %s hits %s.", o_name, m_name);
#endif
+ if (m_ptr->ml)
+ {
+ /* Hack -- Track this monster race */
+ if (!p_ptr->image) monster_race_track(m_ptr->ap_r_idx);
- /* Hack -- Track this monster race */
- if (m_ptr->ml) monster_race_track(m_ptr->ap_r_idx);
-
- /* Hack -- Track this monster */
- if (m_ptr->ml) health_track(c_ptr->m_idx);
+ /* Hack -- Track this monster */
+ health_track(c_ptr->m_idx);
+ }
}
/* Hack -- Base damage from thrown object */
(bool)(((A)->ap_r_idx == (A)->r_idx) ? TRUE : FALSE)
#define is_original_ap_and_seen(A) \
- (bool)((A)->ml && ((A)->ap_r_idx == (A)->r_idx))
+ (bool)((A)->ml && !p_ptr->image && ((A)->ap_r_idx == (A)->r_idx))
/*
* Is the monster seen by the player?
/* Redraw map */
p_ptr->redraw |= (PR_MAP);
+ /* Update the health bar */
+ p_ptr->redraw |= (PR_HEALTH | PR_UHEALTH);
+
/* Update monsters */
p_ptr->update |= (PU_MONSTERS);
#endif
}
- if (m_ptr->ml)
+ /* Hack -- Count the wakings */
+ if (is_original_ap_and_seen(m_ptr) && (r_ptr->r_wake < MAX_UCHAR))
{
- /* Hack -- Count the wakings */
- if ((r_ptr->r_wake < MAX_UCHAR) && is_original_ap(m_ptr))
- {
- r_ptr->r_wake++;
- }
+ r_ptr->r_wake++;
}
}
if (m_ptr->ml)
{
/* Auto-Recall if possible and visible */
- monster_race_track(m_ptr->ap_r_idx);
+ if (!p_ptr->image) monster_race_track(m_ptr->ap_r_idx);
/* Track a new monster */
health_track(m_idx);
/* Detectable */
flag = TRUE;
- if (is_original_ap(m_ptr))
+ if (is_original_ap(m_ptr) && !p_ptr->image)
{
/* Hack -- Memorize mental flags */
if (r_ptr->flags2 & (RF2_SMART)) r_ptr->r_flags2 |= (RF2_SMART);
if (r_ptr->flags2 & (RF2_EMPTY_MIND))
{
/* Memorize flags */
- if (is_original_ap(m_ptr)) r_ptr->r_flags2 |= (RF2_EMPTY_MIND);
+ if (is_original_ap(m_ptr) && !p_ptr->image) r_ptr->r_flags2 |= (RF2_EMPTY_MIND);
}
/* Weird mind, occasional telepathy */
/* Detectable */
flag = TRUE;
- if (is_original_ap(m_ptr))
+ if (is_original_ap(m_ptr) && !p_ptr->image)
{
/* Memorize flags */
r_ptr->r_flags2 |= (RF2_WEIRD_MIND);
/* Detectable */
flag = TRUE;
- if (is_original_ap(m_ptr))
+ if (is_original_ap(m_ptr) && !p_ptr->image)
{
/* Hack -- Memorize mental flags */
if (r_ptr->flags2 & (RF2_SMART)) r_ptr->r_flags2 |= (RF2_SMART);
if ((p_ptr->esp_animal) && (r_ptr->flags3 & (RF3_ANIMAL)))
{
flag = TRUE;
- if (is_original_ap(m_ptr)) r_ptr->r_flags3 |= (RF3_ANIMAL);
+ if (is_original_ap(m_ptr) && !p_ptr->image) r_ptr->r_flags3 |= (RF3_ANIMAL);
}
/* Magical sensing */
if ((p_ptr->esp_undead) && (r_ptr->flags3 & (RF3_UNDEAD)))
{
flag = TRUE;
- if (is_original_ap(m_ptr)) r_ptr->r_flags3 |= (RF3_UNDEAD);
+ if (is_original_ap(m_ptr) && !p_ptr->image) r_ptr->r_flags3 |= (RF3_UNDEAD);
}
/* Magical sensing */
if ((p_ptr->esp_demon) && (r_ptr->flags3 & (RF3_DEMON)))
{
flag = TRUE;
- if (is_original_ap(m_ptr)) r_ptr->r_flags3 |= (RF3_DEMON);
+ if (is_original_ap(m_ptr) && !p_ptr->image) r_ptr->r_flags3 |= (RF3_DEMON);
}
/* Magical sensing */
if ((p_ptr->esp_orc) && (r_ptr->flags3 & (RF3_ORC)))
{
flag = TRUE;
- if (is_original_ap(m_ptr)) r_ptr->r_flags3 |= (RF3_ORC);
+ if (is_original_ap(m_ptr) && !p_ptr->image) r_ptr->r_flags3 |= (RF3_ORC);
}
/* Magical sensing */
if ((p_ptr->esp_troll) && (r_ptr->flags3 & (RF3_TROLL)))
{
flag = TRUE;
- if (is_original_ap(m_ptr)) r_ptr->r_flags3 |= (RF3_TROLL);
+ if (is_original_ap(m_ptr) && !p_ptr->image) r_ptr->r_flags3 |= (RF3_TROLL);
}
/* Magical sensing */
if ((p_ptr->esp_giant) && (r_ptr->flags3 & (RF3_GIANT)))
{
flag = TRUE;
- if (is_original_ap(m_ptr)) r_ptr->r_flags3 |= (RF3_GIANT);
+ if (is_original_ap(m_ptr) && !p_ptr->image) r_ptr->r_flags3 |= (RF3_GIANT);
}
/* Magical sensing */
if ((p_ptr->esp_dragon) && (r_ptr->flags3 & (RF3_DRAGON)))
{
flag = TRUE;
- if (is_original_ap(m_ptr)) r_ptr->r_flags3 |= (RF3_DRAGON);
+ if (is_original_ap(m_ptr) && !p_ptr->image) r_ptr->r_flags3 |= (RF3_DRAGON);
}
/* Magical sensing */
if ((p_ptr->esp_human) && (r_ptr->flags2 & (RF2_HUMAN)))
{
flag = TRUE;
- if (is_original_ap(m_ptr)) r_ptr->r_flags2 |= (RF2_HUMAN);
+ if (is_original_ap(m_ptr) && !p_ptr->image) r_ptr->r_flags2 |= (RF2_HUMAN);
}
/* Magical sensing */
if ((p_ptr->esp_evil) && (r_ptr->flags3 & (RF3_EVIL)))
{
flag = TRUE;
- if (is_original_ap(m_ptr)) r_ptr->r_flags3 |= (RF3_EVIL);
+ if (is_original_ap(m_ptr) && !p_ptr->image) r_ptr->r_flags3 |= (RF3_EVIL);
}
/* Magical sensing */
if ((p_ptr->esp_good) && (r_ptr->flags3 & (RF3_GOOD)))
{
flag = TRUE;
- if (is_original_ap(m_ptr)) r_ptr->r_flags3 |= (RF3_GOOD);
+ if (is_original_ap(m_ptr) && !p_ptr->image) r_ptr->r_flags3 |= (RF3_GOOD);
}
/* Magical sensing */
((r_ptr->flags3 & (RF3_DEMON | RF3_UNDEAD | RF3_NONLIVING)) == RF3_NONLIVING))
{
flag = TRUE;
- if (is_original_ap(m_ptr)) r_ptr->r_flags3 |= (RF3_NONLIVING);
+ if (is_original_ap(m_ptr) && !p_ptr->image) r_ptr->r_flags3 |= (RF3_NONLIVING);
}
/* Magical sensing */
if ((p_ptr->esp_unique) && (r_ptr->flags1 & (RF1_UNIQUE)))
{
flag = TRUE;
- if (is_original_ap(m_ptr)) r_ptr->r_flags1 |= (RF1_UNIQUE);
+ if (is_original_ap(m_ptr) && !p_ptr->image) r_ptr->r_flags1 |= (RF1_UNIQUE);
}
}
/* Visible */
if (flag)
{
- if (is_original_ap(m_ptr))
+ if (is_original_ap(m_ptr) && !p_ptr->image)
{
/* Memorize flags */
if (do_invisible) r_ptr->r_flags2 |= (RF2_INVISIBLE);
if (p_ptr->riding == m_idx) p_ptr->redraw |= (PR_UHEALTH);
/* Hack -- Count "fresh" sightings */
- if ((m_ptr->ap_r_idx == MON_KAGE) && (r_info[MON_KAGE].r_sights < MAX_SHORT))
- r_info[MON_KAGE].r_sights++;
- else if (is_original_ap(m_ptr) && (r_ptr->r_sights < MAX_SHORT))
- r_ptr->r_sights++;
+ if (!p_ptr->image)
+ {
+ if ((m_ptr->ap_r_idx == MON_KAGE) && (r_info[MON_KAGE].r_sights < MAX_SHORT))
+ r_info[MON_KAGE].r_sights++;
+ else if (is_original_ap(m_ptr) && (r_ptr->r_sights < MAX_SHORT))
+ r_ptr->r_sights++;
+ }
/* Eldritch Horror */
if (r_info[m_ptr->ap_r_idx].flags2 & RF2_ELDRITCH_HORROR)
if(cave[project_m_y][project_m_x].m_idx >0 ){
monster_type *m_ptr = &m_list[cave[project_m_y][project_m_x].m_idx];
- /* Hack -- auto-recall */
- if (m_ptr->ml) monster_race_track(m_ptr->ap_r_idx);
-
- /* Hack - auto-track */
- if (m_ptr->ml) health_track(cave[project_m_y][project_m_x].m_idx);
+ if (m_ptr->ml)
+ {
+ /* Hack -- auto-recall */
+ if (!p_ptr->image) monster_race_track(m_ptr->ap_r_idx);
+
+ /* Hack - auto-track */
+ health_track(cave[project_m_y][project_m_x].m_idx);
+ }
}
}
(void)project_f(0,0,y,x,dam,GF_SEEKER);
if(!who && (project_m_n==1) && !jump ){
if(cave[project_m_y][project_m_x].m_idx >0 ){
monster_type *m_ptr = &m_list[cave[project_m_y][project_m_x].m_idx];
-
- /* Hack -- auto-recall */
- if (m_ptr->ml) monster_race_track(m_ptr->ap_r_idx);
-
- /* Hack - auto-track */
- if (m_ptr->ml) health_track(cave[project_m_y][project_m_x].m_idx);
+
+ if (m_ptr->ml)
+ {
+ /* Hack -- auto-recall */
+ if (!p_ptr->image) monster_race_track(m_ptr->ap_r_idx);
+
+ /* Hack - auto-track */
+ health_track(cave[project_m_y][project_m_x].m_idx);
+ }
}
}
(void)project_f(0,0,y,x,dam,GF_SEEKER);
if(!who && (project_m_n==1) && !jump ){
if(cave[project_m_y][project_m_x].m_idx >0 ){
monster_type *m_ptr = &m_list[cave[project_m_y][project_m_x].m_idx];
-
- /* Hack -- auto-recall */
- if (m_ptr->ml) monster_race_track(m_ptr->ap_r_idx);
-
- /* Hack - auto-track */
- if (m_ptr->ml) health_track(cave[project_m_y][project_m_x].m_idx);
+
+ if (m_ptr->ml)
+ {
+ /* Hack -- auto-recall */
+ if (!p_ptr->image) monster_race_track(m_ptr->ap_r_idx);
+
+ /* Hack - auto-track */
+ health_track(cave[project_m_y][project_m_x].m_idx);
+ }
}
}
(void)project_f(0,0,y,x,dam,GF_SUPER_RAY);
{
monster_type *m_ptr = &m_list[cave[y][x].m_idx];
- /* Hack -- auto-recall */
- if (m_ptr->ml) monster_race_track(m_ptr->ap_r_idx);
+ if (m_ptr->ml)
+ {
+ /* Hack -- auto-recall */
+ if (!p_ptr->image) monster_race_track(m_ptr->ap_r_idx);
- /* Hack - auto-track */
- if (m_ptr->ml) health_track(cave[y][x].m_idx);
+ /* Hack - auto-track */
+ if (m_ptr->ml) health_track(cave[y][x].m_idx);
+ }
}
}
}
monster_race *r_ptr = &r_info[m_ptr->r_idx];
- bool visible = (m_ptr->ml || (r_ptr->flags1 & RF1_UNIQUE));
+ bool visible = ((m_ptr->ml && !p_ptr->image) || (r_ptr->flags1 & RF1_UNIQUE));
u32b mo_mode = 0L;
if (r_ptr->r_akills < MAX_SHORT) r_ptr->r_akills++;
/* Recall even invisible uniques or winners */
- if (m_ptr->ml || (r_ptr->flags1 & RF1_UNIQUE))
+ if ((m_ptr->ml && !p_ptr->image) || (r_ptr->flags1 & RF1_UNIQUE))
{
/* Count kills this life */
if ((m_ptr->mflag2 & MFLAG2_KAGE) && (r_info[MON_KAGE].r_pkills < MAX_SHORT)) r_info[MON_KAGE].r_pkills++;