OSDN Git Service

モンスターの状態変化処理を標準ターンで行う際に, 処理の必要のある状態
[hengbandforosx/hengbandosx.git] / src / xtra2.c
index fd19f3c..2dcce4f 100644 (file)
@@ -1714,10 +1714,13 @@ bool mon_take_hit(int m_idx, int dam, bool *fear, cptr note)
        if (p_ptr->health_who == m_idx) p_ptr->redraw |= (PR_HEALTH);
        if (p_ptr->riding == m_idx) p_ptr->redraw |= (PR_UHEALTH);
 
-       /* Wake it up */
-       m_ptr->csleep = 0;
-
-       if (r_ptr->flags7 & RF7_HAS_LD_MASK) p_ptr->update |= (PU_MON_LITE);
+       if (m_ptr->csleep)
+       {
+               /* Wake it up */
+               m_ptr->csleep = 0;
+               if (!need_mproc(m_ptr)) mproc_remove(m_ptr->mproc_idx);
+               if (r_ptr->flags7 & RF7_HAS_LD_MASK) p_ptr->update |= (PU_MON_LITE);
+       }
 
        /* Hack - Cancel any special player stealth magics. -LM- */
        if (p_ptr->special_defense & NINJA_S_STEALTH)
@@ -2106,6 +2109,7 @@ msg_format("%s
                {
                        /* Cure fear */
                        m_ptr->monfear = 0;
+                       if (!need_mproc(m_ptr)) mproc_remove(m_ptr->mproc_idx);
 
                        /* No more fear */
                        (*fear) = FALSE;
@@ -2130,6 +2134,8 @@ msg_format("%s
                        /* Hack -- note fear */
                        (*fear) = TRUE;
 
+                       if (!m_ptr->mproc_idx) mproc_add(m_idx);
+
                        /* XXX XXX XXX Hack -- Add some timed fear */
                        m_ptr->monfear = (randint1(10) +
                                          (((dam >= m_ptr->hp) && (percentage > 7)) ?