From 3190d71cf215dd0e33e41392434b55ab447f9a5e Mon Sep 17 00:00:00 2001 From: nothere Date: Mon, 19 Jul 2004 03:09:54 +0000 Subject: [PATCH] =?utf8?q?=E5=B9=BB=E8=A6=9A=E3=81=AB=E9=96=A2=E3=81=99?= =?utf8?q?=E3=82=8B=E3=83=90=E3=82=B0=E4=BF=AE=E6=AD=A3.=20*=20=E5=B9=BB?= =?utf8?q?=E8=A6=9A=E6=99=82=E3=81=AB=E3=83=A2=E3=83=B3=E3=82=B9=E3=82=BF?= =?utf8?q?=E3=83=BC=E3=82=92=E6=94=BB=E6=92=83=E3=81=99=E3=82=8B=E3=81=A8,?= =?utf8?q?=20=E6=94=BB=E6=92=83=E3=81=97=E3=81=9F=E3=83=A2=E3=83=B3?= =?utf8?q?=E3=82=B9=E3=82=BF=E3=83=BC=E3=81=8C=E6=80=9D=E3=81=84=E5=87=BA?= =?utf8?q?=E3=82=A6=E3=82=A3=E3=83=B3=E3=83=89=20=20=20=E3=82=A6=E3=81=AB?= =?utf8?q?=E8=A1=A8=E7=A4=BA=E3=81=95=E3=82=8C=E3=82=8B=E3=83=90=E3=82=B0?= =?utf8?q?=E3=82=92=E4=BF=AE=E6=AD=A3.=20*=20=E5=B9=BB=E8=A6=9A=E3=81=AB?= =?utf8?q?=E3=81=AA=E3=81=A3=E3=81=9F/=E5=B9=BB=E8=A6=9A=E3=81=8C=E5=88=87?= =?utf8?q?=E3=82=8C=E3=81=9F=E6=99=82=E3=81=AB=E3=83=A2=E3=83=B3=E3=82=B9?= =?utf8?q?=E3=82=BF=E3=83=BC=E3=81=AE=E3=83=98=E3=83=AB=E3=82=B9=E3=83=90?= =?utf8?q?=E3=83=BC=E3=81=8C=E6=9B=B4=E6=96=B0=E3=81=95=E3=82=8C=E3=81=AA?= =?utf8?q?=E3=81=84=E3=83=90=20=20=20=E3=82=B0=E3=82=92=E4=BF=AE=E6=AD=A3.?= =?utf8?q?=20*=20=E5=B9=BB=E8=A6=9A=E6=99=82=E3=81=AB=E3=81=AF=E9=9D=9E?= =?utf8?q?=E3=83=A6=E3=83=8B=E3=83=BC=E3=82=AF=E3=83=A2=E3=83=B3=E3=82=B9?= =?utf8?q?=E3=82=BF=E3=83=BC=E3=81=AE=E8=A6=8B=E3=81=9F=E7=9B=AE=E3=81=AE?= =?utf8?q?=E6=AE=BA=E5=AE=B3=E6=95=B0=E3=82=92=E5=A2=97=E3=82=84=E3=81=95?= =?utf8?q?=E3=81=9A,=20=E5=AE=9F=E9=9A=9B=E3=81=AE=E6=AE=BA=20=20=20?= =?utf8?q?=E5=AE=B3=E6=95=B0=E3=81=AE=E3=81=BF=E5=A2=97=E3=82=84=E3=81=99?= =?utf8?q?=E3=82=88=E3=81=86=E3=81=AB=E4=BF=AE=E6=AD=A3.=20*=20=E5=B9=BB?= =?utf8?q?=E8=A6=9A=E6=99=82=E3=81=A7=E3=82=82=E3=83=A2=E3=83=B3=E3=82=B9?= =?utf8?q?=E3=82=BF=E3=83=BC=E3=83=95=E3=83=A9=E3=82=B0=E3=81=AA=E3=81=A9?= =?utf8?q?=E3=81=8C=E8=A8=98=E6=86=B6=E3=81=95=E3=82=8C=E3=81=A6=E3=81=84?= =?utf8?q?=E3=81=9F=E3=83=90=E3=82=B0=E3=82=92=E4=BF=AE=E6=AD=A3.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- src/cmd1.c | 4 ++-- src/cmd2.c | 24 ++++++++++++++---------- src/defines.h | 2 +- src/effects.c | 3 +++ src/melee2.c | 9 +++------ src/mind.c | 2 +- src/monster2.c | 45 ++++++++++++++++++++++++--------------------- src/spells1.c | 54 +++++++++++++++++++++++++++++++++--------------------- src/xtra2.c | 4 ++-- 9 files changed, 83 insertions(+), 64 deletions(-) diff --git a/src/cmd1.c b/src/cmd1.c index f16b037a0..6e4e287d4 100644 --- a/src/cmd1.c +++ b/src/cmd1.c @@ -3079,7 +3079,7 @@ bool py_attack(int y, int x, int mode) 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); @@ -3893,7 +3893,7 @@ void move_player(int dir, bool do_pickup, bool break_trap) 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); diff --git a/src/cmd2.c b/src/cmd2.c index 22b027c9e..c04707d62 100644 --- a/src/cmd2.c +++ b/src/cmd2.c @@ -3625,12 +3625,14 @@ void do_cmd_fire_aux(int item, object_type *j_ptr) 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 */ @@ -4180,12 +4182,14 @@ bool do_cmd_throw_aux(int mult, bool boomerang, int shuriken) 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 */ diff --git a/src/defines.h b/src/defines.h index f6f2b8821..53bb2ffe4 100644 --- a/src/defines.h +++ b/src/defines.h @@ -4021,7 +4021,7 @@ (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? diff --git a/src/effects.c b/src/effects.c index 599091aa5..42800f43f 100644 --- a/src/effects.c +++ b/src/effects.c @@ -858,6 +858,9 @@ msg_print(" /* 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); diff --git a/src/melee2.c b/src/melee2.c index 222f416a9..79e6ba589 100644 --- a/src/melee2.c +++ b/src/melee2.c @@ -2460,13 +2460,10 @@ static void process_monster(int m_idx) #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++; } } diff --git a/src/mind.c b/src/mind.c index 9783e009c..062fb58a1 100644 --- a/src/mind.c +++ b/src/mind.c @@ -1719,7 +1719,7 @@ msg_print(" 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); diff --git a/src/monster2.c b/src/monster2.c index f33e84d4b..25f8543eb 100644 --- a/src/monster2.c +++ b/src/monster2.c @@ -2371,7 +2371,7 @@ void update_mon(int m_idx, bool full) /* 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); @@ -2386,7 +2386,7 @@ void update_mon(int m_idx, bool full) 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 */ @@ -2398,7 +2398,7 @@ void update_mon(int m_idx, bool full) /* 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); @@ -2416,7 +2416,7 @@ void update_mon(int m_idx, bool full) /* 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); @@ -2429,70 +2429,70 @@ void update_mon(int m_idx, bool full) 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 */ @@ -2500,14 +2500,14 @@ void update_mon(int m_idx, bool full) ((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); } } @@ -2563,7 +2563,7 @@ void update_mon(int m_idx, bool full) /* 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); @@ -2591,10 +2591,13 @@ void update_mon(int m_idx, bool full) 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) diff --git a/src/spells1.c b/src/spells1.c index be167d0c1..4c716a9e3 100644 --- a/src/spells1.c +++ b/src/spells1.c @@ -8461,11 +8461,14 @@ bool project(int who, int rad, int y, int x, int dam, int typ, int flg, int mons 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); @@ -8483,12 +8486,15 @@ bool project(int who, int rad, int y, int x, int dam, int typ, int flg, int mons 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); @@ -8612,12 +8618,15 @@ bool project(int who, int rad, int y, int x, int dam, int typ, int flg, int mons 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); @@ -9143,11 +9152,14 @@ bool project(int who, int rad, int y, int x, int dam, int typ, int flg, int mons { 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); + } } } } diff --git a/src/xtra2.c b/src/xtra2.c index b94386edf..c6130196f 100644 --- a/src/xtra2.c +++ b/src/xtra2.c @@ -698,7 +698,7 @@ void monster_death(int m_idx, bool drop_item) 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; @@ -1803,7 +1803,7 @@ bool mon_take_hit(int m_idx, int dam, bool *fear, cptr note) 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++; -- 2.11.0