OSDN Git Service

アンバーの王族を倒したときに血の呪いの地震で消去前の倒したアンバーが潰
authormogami <mogami@0568b783-4c39-0410-ac80-bf13821ea2a2>
Tue, 26 Nov 2002 07:42:55 +0000 (07:42 +0000)
committermogami <mogami@0568b783-4c39-0410-ac80-bf13821ea2a2>
Tue, 26 Nov 2002 07:42:55 +0000 (07:42 +0000)
れて消えて、直後に新たに倒したのと同じアンバーの王族が召喚される事があっ
たので修正。先にmax_num = 0の処理をするようにした。

src/xtra2.c

index ead18cd..ac3f8eb 100644 (file)
@@ -1463,7 +1463,7 @@ msg_print("
 #ifdef JP
                do_cmd_write_nikki(NIKKI_BUNSHOU, 0, "¸«»ö¤ËÊѶòÈÚÅܤξ¡Íø¼Ô¤È¤Ê¤Ã¤¿¡ª");
 #else
-               do_cmd_write_nikki(NIKKI_BUNSHOU, 0, "become *WINNER* of Hengband finly!");
+               do_cmd_write_nikki(NIKKI_BUNSHOU, 0, "become *WINNER* of Hengband finely!");
 #endif
 
                if (p_ptr->pclass == CLASS_CHAOS_WARRIOR)
@@ -1723,11 +1723,44 @@ bool mon_take_hit(int m_idx, int dam, bool *fear, cptr note)
 
                if (r_info[m_ptr->r_idx].flags7 & RF7_TANUKI)
                {
+                       /* You might have unmasked Tanuki first time */
                        r_ptr = &r_info[m_ptr->r_idx];
                        m_ptr->ap_r_idx = m_ptr->r_idx;
                        if (r_ptr->r_sights < MAX_SHORT) r_ptr->r_sights++;
                }
 
+               if (m_ptr->mflag2 & MFLAG_CHAMELEON)
+               {
+                       /* You might have unmasked Chameleon first time */
+                       if (r_ptr->flags1 & RF1_UNIQUE)
+                               r_ptr = &r_info[MON_CHAMELEON_K];
+                       else
+                               r_ptr = &r_info[MON_CHAMELEON];
+                       if (r_ptr->r_sights < MAX_SHORT) r_ptr->r_sights++;
+               }
+
+               /* When the player kills a Unique, it stays dead */
+               if (r_ptr->flags1 & RF1_UNIQUE && !(m_ptr->smart & SM_CLONED))
+                       r_ptr->max_num = 0;
+
+               /* When the player kills a Nazgul, it stays dead */
+               if (r_ptr->flags7 & RF7_UNIQUE_7) r_ptr->max_num--;
+
+               /* Recall even invisible uniques or winners */
+               if (m_ptr->ml || (r_ptr->flags1 & RF1_UNIQUE))
+               {
+                       /* Count kills this life */
+                       if ((m_ptr->mflag2 & MFLAG_KAGE) && (r_info[MON_KAGE].r_pkills < MAX_SHORT)) r_info[MON_KAGE].r_pkills++;
+                       else if (r_ptr->r_pkills < MAX_SHORT) r_ptr->r_pkills++;
+
+                       /* Count kills in all lives */
+                       if ((m_ptr->mflag2 & MFLAG_KAGE) && (r_info[MON_KAGE].r_tkills < MAX_SHORT)) r_info[MON_KAGE].r_tkills++;
+                       else if (r_ptr->r_tkills < MAX_SHORT) r_ptr->r_tkills++;
+
+                       /* Hack -- Auto-recall */
+                       monster_race_track(m_ptr->ap_r_idx);
+               }
+
                /* Extract monster name */
                monster_desc(m_name, m_ptr, 0x100);
 
@@ -1980,37 +2013,6 @@ msg_format("%s
 
                /* Generate treasure */
                monster_death(m_idx, TRUE);
-               if (m_ptr->mflag2 & MFLAG_CHAMELEON)
-               {
-                       if (r_ptr->flags1 & RF1_UNIQUE)
-                               r_ptr = &r_info[MON_CHAMELEON_K];
-                       else
-                               r_ptr = &r_info[MON_CHAMELEON];
-                       if (r_ptr->r_sights < MAX_SHORT) r_ptr->r_sights++;
-               }
-
-               /* When the player kills a Unique, it stays dead */
-               if (r_ptr->flags1 & RF1_UNIQUE && !(m_ptr->smart & SM_CLONED))
-                       r_ptr->max_num = 0;
-
-               /* When the player kills a Nazgul, it stays dead */
-               if (r_ptr->flags7 & RF7_UNIQUE_7) r_ptr->max_num--;
-
-               /* Recall even invisible uniques or winners */
-               if (m_ptr->ml || (r_ptr->flags1 & RF1_UNIQUE))
-               {
-                       /* Count kills this life */
-                       if ((m_ptr->mflag2 & MFLAG_KAGE) && (r_info[MON_KAGE].r_pkills < MAX_SHORT)) r_info[MON_KAGE].r_pkills++;
-                       else if (r_ptr->r_pkills < MAX_SHORT) r_ptr->r_pkills++;
-
-                       /* Count kills in all lives */
-                       if ((m_ptr->mflag2 & MFLAG_KAGE) && (r_info[MON_KAGE].r_tkills < MAX_SHORT)) r_info[MON_KAGE].r_tkills++;
-                       else if (r_ptr->r_tkills < MAX_SHORT) r_ptr->r_tkills++;
-
-                       /* Hack -- Auto-recall */
-                       monster_race_track(m_ptr->ap_r_idx);
-               }
-
                if ((m_ptr->r_idx == MON_BANOR) || (m_ptr->r_idx == MON_LUPART))
                {
                        r_info[MON_BANORLUPART].max_num = 0;