OSDN Git Service

refactor: extract breath spells in monst_spell_monst
authordis- <dis.rogue@gmail.com>
Wed, 19 Feb 2014 09:12:12 +0000 (18:12 +0900)
committerdis- <dis.rogue@gmail.com>
Wed, 19 Feb 2014 09:12:12 +0000 (18:12 +0900)
src/defines.h
src/externs.h
src/mspells1.c
src/mspells2.c
src/mspells4.c

index 058b5b5..7b494f8 100644 (file)
@@ -5696,8 +5696,8 @@ extern int PlayerUID;
        (have_flag(ARRAY, TR_LITE_M1) || have_flag(ARRAY, TR_LITE_M2) || have_flag(ARRAY, TR_LITE_M3))
 
 /* Spell Type flag */
-#define SPELL_MON_TO_PLAYER     0x01
-#define SPELL_MON_TO_MON        0x02
+#define MONSTER_TO_PLAYER     0x01
+#define MONSTER_TO_MONSTER    0x02
 
 /* summoning number */
 #define S_NUM_6     (easy_band ? 2 : 6)
index 3869cf9..80e9141 100644 (file)
@@ -1569,9 +1569,9 @@ extern bool raise_possible(monster_type *m_ptr);
 extern bool dispel_check(int m_idx);
 extern bool spell_is_inate(u16b spell);
 extern bool make_attack_spell(int m_idx);
-extern void beam(int m_idx, int y, int x, int typ, int dam_hp, int monspell, int spell_type);
-extern void bolt(int m_idx, int y, int x, int typ, int dam_hp, int monspell, int spell_type);
-extern void breath(int y, int x, int m_idx, int typ, int dam_hp, int rad, bool breath, int monspell, int spell_type);
+extern void beam(int m_idx, int y, int x, int typ, int dam_hp, int monspell, int target_type);
+extern void bolt(int m_idx, int y, int x, int typ, int dam_hp, int monspell, int target_type);
+extern void breath(int y, int x, int m_idx, int typ, int dam_hp, int rad, bool breath, int monspell, int target_type);
 
 /* mspells2.c */
 extern void get_project_point(int sy, int sx, int *ty, int *tx, int flg);
@@ -1589,8 +1589,8 @@ extern bool spell_learnable(int m_idx);
 extern void MP_spell_RF4_SHRIEK(int m_idx);
 extern void MP_spell_RF4_DISPEL(int m_idx);
 extern int MP_spell_RF4_ROCKET(int y, int x, int m_idx);
-extern int spell_RF4_SHOOT(int y, int x, int m_idx);
-extern int spell_RF4_BREATH(int GF_TYPE, int y, int x, int m_idx);
+extern int MP_spell_RF4_SHOOT(int y, int x, int m_idx);
+extern int MP_spell_RF4_BREATH(int GF_TYPE, int y, int x, int m_idx);
 extern int spell_RF4_BA_CHAO(int y, int x, int m_idx);
 extern int spell_RF4_BA_NUKE(int y, int x, int m_idx);
 extern int spell_RF5_BA_ACID(int y, int x, int m_idx);
@@ -1662,6 +1662,8 @@ extern void spell_RF6_S_UNIQUE(int y, int x, int m_idx);
 extern void MM_spell_RF4_SHRIEK(int m_idx, int t_idx);
 extern void MM_spell_RF4_DISPEL(int m_idx, int t_idx);
 extern int MM_spell_RF4_ROCKET(int y, int x, int m_idx, int t_idx);
+extern int MM_spell_RF4_SHOOT(int y, int x, int m_idx, int t_idx);
+extern int MM_spell_RF4_BREATH(int GF_TYPE, int y, int x, int m_idx, int t_idx);
 
 /* hissatsu.c */
 extern void hissatsu_info(char *p, int power);
index 517d605..e8b26c9 100644 (file)
@@ -507,20 +507,20 @@ bool clean_shot(int y1, int x1, int y2, int x2, bool is_friend)
  * @param typ ¸ú²Ì°À­ID
  * @param dam_hp °ÒÎÏ
  * @param monspell ¥â¥ó¥¹¥¿¡¼ËâË¡¤ÎID
- * @param spell_type ¥â¥ó¥¹¥¿¡¼¤«¤é¥â¥ó¥¹¥¿¡¼¤Ø·â¤Ä¤Ê¤éSPELL_MON_TO_MON¡¢¥â¥ó¥¹¥¿¡¼¤«¤é¥×¥ì¥¤¥ä¡¼¤Ê¤éSPELL_MON_TO_PLAYER
+ * @param target_type ¥â¥ó¥¹¥¿¡¼¤«¤é¥â¥ó¥¹¥¿¡¼¤Ø·â¤Ä¤Ê¤éMONSTER_TO_MONSTER¡¢¥â¥ó¥¹¥¿¡¼¤«¤é¥×¥ì¥¤¥ä¡¼¤Ê¤éMONSTER_TO_PLAYER
  * @return ¤Ê¤·
  */
-void bolt(int m_idx, int y, int x, int typ, int dam_hp, int monspell, int spell_type)
+void bolt(int m_idx, int y, int x, int typ, int dam_hp, int monspell, int target_type)
   {
     int flg;
     bool learnable = spell_learnable(m_idx);
 
-    switch (spell_type)
+    switch (target_type)
     {
-    case SPELL_MON_TO_MON:
+    case MONSTER_TO_MONSTER:
         flg = PROJECT_STOP | PROJECT_KILL;
         break;
-    case SPELL_MON_TO_PLAYER:
+    case MONSTER_TO_PLAYER:
         flg = PROJECT_STOP | PROJECT_KILL | PROJECT_PLAYER;
         break;
     }
@@ -538,20 +538,20 @@ void bolt(int m_idx, int y, int x, int typ, int dam_hp, int monspell, int spell_
  * @param typ ¸ú²Ì°À­ID
  * @param dam_hp °ÒÎÏ
  * @param monspell ¥â¥ó¥¹¥¿¡¼ËâË¡¤ÎID
- * @param spell_type ¥â¥ó¥¹¥¿¡¼¤«¤é¥â¥ó¥¹¥¿¡¼¤Ø·â¤Ä¤Ê¤éSPELL_MON_TO_MON¡¢¥â¥ó¥¹¥¿¡¼¤«¤é¥×¥ì¥¤¥ä¡¼¤Ê¤éSPELL_MON_TO_PLAYER
+ * @param target_type ¥â¥ó¥¹¥¿¡¼¤«¤é¥â¥ó¥¹¥¿¡¼¤Ø·â¤Ä¤Ê¤éMONSTER_TO_MONSTER¡¢¥â¥ó¥¹¥¿¡¼¤«¤é¥×¥ì¥¤¥ä¡¼¤Ê¤éMONSTER_TO_PLAYER
  * @return ¤Ê¤·
  */
-void beam(int m_idx, int y, int x, int typ, int dam_hp, int monspell, int spell_type)
+void beam(int m_idx, int y, int x, int typ, int dam_hp, int monspell, int target_type)
 {
     int flg;
     bool learnable = spell_learnable(m_idx);
 
-    switch (spell_type)
+    switch (target_type)
     {
-    case SPELL_MON_TO_MON:
+    case MONSTER_TO_MONSTER:
         flg = PROJECT_BEAM | PROJECT_KILL | PROJECT_THRU;
         break;
-    case SPELL_MON_TO_PLAYER:
+    case MONSTER_TO_PLAYER:
         flg = PROJECT_BEAM | PROJECT_KILL | PROJECT_THRU | PROJECT_PLAYER;
         break;
     }
@@ -572,22 +572,22 @@ void beam(int m_idx, int y, int x, int typ, int dam_hp, int monspell, int spell_
  * @param rad È¾·Â
  * @param breath TRUE¤Ê¤é¤Ð¥Ö¥ì¥¹½èÍý¡¢FALSE¤Ê¤é¤Ð¥Ü¡¼¥ë½èÍý
  * @param monspell ¥â¥ó¥¹¥¿¡¼ËâË¡¤ÎID
- * @param spell_type ¥â¥ó¥¹¥¿¡¼¤«¤é¥â¥ó¥¹¥¿¡¼¤Ø·â¤Ä¤Ê¤éSPELL_MON_TO_MON¡¢¥â¥ó¥¹¥¿¡¼¤«¤é¥×¥ì¥¤¥ä¡¼¤Ê¤éSPELL_MON_TO_PLAYER
+ * @param target_type ¥â¥ó¥¹¥¿¡¼¤«¤é¥â¥ó¥¹¥¿¡¼¤Ø·â¤Ä¤Ê¤éMONSTER_TO_MONSTER¡¢¥â¥ó¥¹¥¿¡¼¤«¤é¥×¥ì¥¤¥ä¡¼¤Ê¤éMONSTER_TO_PLAYER
  * @return ¤Ê¤·
  */
-void breath(int y, int x, int m_idx, int typ, int dam_hp, int rad, bool breath, int monspell, int spell_type)
+void breath(int y, int x, int m_idx, int typ, int dam_hp, int rad, bool breath, int monspell, int target_type)
 {
     monster_type *m_ptr = &m_list[m_idx];
     monster_race *r_ptr = &r_info[m_ptr->r_idx];
     bool learnable = spell_learnable(m_idx);
        int flg;
 
-    switch (spell_type)
+    switch (target_type)
     {
-        case SPELL_MON_TO_MON:
+        case MONSTER_TO_MONSTER:
             flg = PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL;
             break;
-        case SPELL_MON_TO_PLAYER:
+        case MONSTER_TO_PLAYER:
             flg = PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL | PROJECT_PLAYER;
             break;
     }
@@ -1878,34 +1878,34 @@ bool make_attack_spell(int m_idx)
         case 96 + 1:   break;   /* RF4_XXX1 */
         case 96 + 2:   MP_spell_RF4_DISPEL(m_idx); break;  /* RF4_DISPEL */
         case 96 + 3:   dam = MP_spell_RF4_ROCKET(y, x, m_idx); break;   /* RF4_ROCKET */
-        case 96 + 4:   dam = spell_RF4_SHOOT(y, x, m_idx); break;    /* RF4_SHOOT */
+        case 96 + 4:   dam = MP_spell_RF4_SHOOT(y, x, m_idx); break;    /* RF4_SHOOT */
         case 96 + 5:   break;   /* RF4_XXX2 */
         case 96 + 6:   break;   /* RF4_XXX3 */
         case 96 + 7:   break;   /* RF4_XXX4 */
-        case 96 + 8:   dam = spell_RF4_BREATH(GF_ACID, y, x, m_idx); break;    /* RF4_BR_ACID */
-        case 96 + 9:   dam = spell_RF4_BREATH(GF_ELEC, y, x, m_idx); break;    /* RF4_BR_ELEC */
-        case 96 + 10:  dam = spell_RF4_BREATH(GF_FIRE, y, x, m_idx); break;    /* RF4_BR_FIRE */
-        case 96 + 11:  dam = spell_RF4_BREATH(GF_COLD, y, x, m_idx); break;    /* RF4_BR_COLD */
-        case 96 + 12:  dam = spell_RF4_BREATH(GF_POIS, y, x, m_idx); break;    /* RF4_BR_POIS */
-        case 96 + 13:  dam = spell_RF4_BREATH(GF_NETHER, y, x, m_idx); break;    /* RF4_BR_NETH */
-        case 96 + 14:  dam = spell_RF4_BREATH(GF_LITE, y_br_lite, x_br_lite, m_idx); break;    /* RF4_BR_LITE */
-        case 96 + 15:  dam = spell_RF4_BREATH(GF_DARK, y, x, m_idx); break;    /* RF4_BR_DARK */
-        case 96 + 16:  dam = spell_RF4_BREATH(GF_CONFUSION, y, x, m_idx); break;    /* RF4_BR_CONF */
-        case 96 + 17:  dam = spell_RF4_BREATH(GF_SOUND, y, x, m_idx); break;    /* RF4_BR_SOUN */
-        case 96 + 18:  dam = spell_RF4_BREATH(GF_CHAOS, y, x, m_idx); break;    /* RF4_BR_CHAO */
-        case 96 + 19:  dam = spell_RF4_BREATH(GF_DISENCHANT, y, x, m_idx); break;    /* RF4_BR_DISE */
-        case 96 + 20:  dam = spell_RF4_BREATH(GF_NEXUS, y, x, m_idx); break;    /* RF4_BR_NEXU */
-        case 96 + 21:  dam = spell_RF4_BREATH(GF_TIME, y, x, m_idx); break;    /* RF4_BR_TIME */
-        case 96 + 22:  dam = spell_RF4_BREATH(GF_INERTIA, y, x, m_idx); break;    /* RF4_BR_INER */
-        case 96 + 23:  dam = spell_RF4_BREATH(GF_GRAVITY, y, x, m_idx); break;    /* RF4_BR_GRAV */
-        case 96 + 24:  dam = spell_RF4_BREATH(GF_SHARDS, y, x, m_idx); break;    /* RF4_BR_SHAR */
-        case 96 + 25:  dam = spell_RF4_BREATH(GF_PLASMA, y, x, m_idx); break;    /* RF4_BR_PLAS */
-        case 96 + 26:  dam = spell_RF4_BREATH(GF_FORCE, y, x, m_idx); break;    /* RF4_BR_WALL */
-        case 96 + 27:  dam = spell_RF4_BREATH(GF_MANA, y, x, m_idx); break;    /* RF4_BR_MANA */
+        case 96 + 8:   dam = MP_spell_RF4_BREATH(GF_ACID, y, x, m_idx); break;    /* RF4_BR_ACID */
+        case 96 + 9:   dam = MP_spell_RF4_BREATH(GF_ELEC, y, x, m_idx); break;    /* RF4_BR_ELEC */
+        case 96 + 10:  dam = MP_spell_RF4_BREATH(GF_FIRE, y, x, m_idx); break;    /* RF4_BR_FIRE */
+        case 96 + 11:  dam = MP_spell_RF4_BREATH(GF_COLD, y, x, m_idx); break;    /* RF4_BR_COLD */
+        case 96 + 12:  dam = MP_spell_RF4_BREATH(GF_POIS, y, x, m_idx); break;    /* RF4_BR_POIS */
+        case 96 + 13:  dam = MP_spell_RF4_BREATH(GF_NETHER, y, x, m_idx); break;    /* RF4_BR_NETH */
+        case 96 + 14:  dam = MP_spell_RF4_BREATH(GF_LITE, y_br_lite, x_br_lite, m_idx); break;    /* RF4_BR_LITE */
+        case 96 + 15:  dam = MP_spell_RF4_BREATH(GF_DARK, y, x, m_idx); break;    /* RF4_BR_DARK */
+        case 96 + 16:  dam = MP_spell_RF4_BREATH(GF_CONFUSION, y, x, m_idx); break;    /* RF4_BR_CONF */
+        case 96 + 17:  dam = MP_spell_RF4_BREATH(GF_SOUND, y, x, m_idx); break;    /* RF4_BR_SOUN */
+        case 96 + 18:  dam = MP_spell_RF4_BREATH(GF_CHAOS, y, x, m_idx); break;    /* RF4_BR_CHAO */
+        case 96 + 19:  dam = MP_spell_RF4_BREATH(GF_DISENCHANT, y, x, m_idx); break;    /* RF4_BR_DISE */
+        case 96 + 20:  dam = MP_spell_RF4_BREATH(GF_NEXUS, y, x, m_idx); break;    /* RF4_BR_NEXU */
+        case 96 + 21:  dam = MP_spell_RF4_BREATH(GF_TIME, y, x, m_idx); break;    /* RF4_BR_TIME */
+        case 96 + 22:  dam = MP_spell_RF4_BREATH(GF_INERTIA, y, x, m_idx); break;    /* RF4_BR_INER */
+        case 96 + 23:  dam = MP_spell_RF4_BREATH(GF_GRAVITY, y, x, m_idx); break;    /* RF4_BR_GRAV */
+        case 96 + 24:  dam = MP_spell_RF4_BREATH(GF_SHARDS, y, x, m_idx); break;    /* RF4_BR_SHAR */
+        case 96 + 25:  dam = MP_spell_RF4_BREATH(GF_PLASMA, y, x, m_idx); break;    /* RF4_BR_PLAS */
+        case 96 + 26:  dam = MP_spell_RF4_BREATH(GF_FORCE, y, x, m_idx); break;    /* RF4_BR_WALL */
+        case 96 + 27:  dam = MP_spell_RF4_BREATH(GF_MANA, y, x, m_idx); break;    /* RF4_BR_MANA */
         case 96 + 28:  dam = spell_RF4_BA_NUKE(y, x, m_idx); break;   /* RF4_BA_NUKE */
-        case 96 + 29:  dam = spell_RF4_BREATH(GF_NUKE, y, x, m_idx); break;    /* RF4_BR_NUKE */
+        case 96 + 29:  dam = MP_spell_RF4_BREATH(GF_NUKE, y, x, m_idx); break;    /* RF4_BR_NUKE */
         case 96 + 30:  dam = spell_RF4_BA_CHAO(y, x, m_idx); break;  /* RF4_BA_CHAO */
-        case 96 + 31:  dam = spell_RF4_BREATH(GF_DISINTEGRATE, y, x, m_idx); break;    /* RF4_BR_DISI */
+        case 96 + 31:  dam = MP_spell_RF4_BREATH(GF_DISINTEGRATE, y, x, m_idx); break;    /* RF4_BR_DISI */
         case 128 + 0:  dam = spell_RF5_BA_ACID(y, x, m_idx); break;    /* RF5_BA_ACID */
         case 128 + 1:  dam = spell_RF5_BA_ELEC(y, x, m_idx); break;    /* RF5_BA_ELEC */
         case 128 + 2:  dam = spell_RF5_BA_FIRE(y, x, m_idx); break;    /* RF5_BA_FIRE */
index 3f1fe10..8181a77 100644 (file)
@@ -735,773 +735,93 @@ bool monst_spell_monst(int m_idx)
 
        switch (thrown_spell)
        {
-    case 96 + 0: MM_spell_RF4_SHRIEK(m_idx, t_idx); break; /* RF4_SHRIEK */
-    case 96 + 1: return FALSE;  /* RF4_XXX1 */
-    case 96 + 2: MM_spell_RF4_DISPEL(m_idx, t_idx); break; /* RF4_DISPEL */
-    case 96 + 3: dam = MM_spell_RF4_ROCKET(y, x, m_idx, t_idx); break; /* RF4_ROCKET */
-       
-       /* RF4_SHOOT */
-       case 96+4:
-               if (known)
-               {
-                       if (see_either)
-                       {
-                               if (blind)
-                               {
-                                       msg_format(_("%^s¤¬´ñ̯¤Ê²»¤òȯ¤·¤¿¡£", "%^s makes a strange noise."), m_name);
-                               }
-                               else
-                               {
-                                       msg_format(_("%^s¤¬%s¤ËÌð¤òÊü¤Ã¤¿¡£", "%^s fires an arrow at %s."), m_name, t_name);
-                               }
-                       }
-                       else
-                       {
-                               mon_fight = TRUE;
-                       }
-
-                       sound(SOUND_SHOOT);
-               }
-
-               dam = damroll(r_ptr->blow[0].d_dice, r_ptr->blow[0].d_side);
-               bolt(m_idx, y, x, GF_ARROW, dam, MS_SHOOT, SPELL_MON_TO_MON);
-
-               break;
-
-       /* RF4_XXX2 */
-       case 96+5:
-               /* XXX XXX XXX */
-               return FALSE;
-
-       /* RF4_XXX3 */
-       case 96+6:
-               /* XXX XXX XXX */
-               return FALSE;
-
-       /* RF4_XXX4 */
-       case 96+7:
-               /* XXX XXX XXX */
-               return FALSE;
-
-       /* RF4_BR_ACID */
-       case 96+8:
-               if (known)
-               {
-                       if (see_either)
-                       {
-                               disturb(1, 1);
-
-                               if (blind)
-                               {
-                                       msg_format(_("%^s¤¬²¿¤«¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "%^s breathes."), m_name);
-                               }
-                               else
-                               {
-                                       msg_format(_("%^s¤¬%s¤Ë»À¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "%^s breathes acid at %s."), m_name, t_name);
-                               }
-                       }
-                       else
-                       {
-                               mon_fight = TRUE;
-                       }
-
-                       sound(SOUND_BREATH);
-               }
-
-               dam = ((m_ptr->hp / 3) > 1600 ? 1600 : (m_ptr->hp / 3));
-               breath(y, x, m_idx,GF_ACID,dam, 0, TRUE, MS_BR_ACID, SPELL_MON_TO_MON);
-
-               break;
-
-       /* RF4_BR_ELEC */
-       case 96+9:
-               if (known)
-               {
-                       if (see_either)
-                       {
-                               disturb(1, 1);
-
-                               if (blind)
-                               {
-                                       msg_format(_("%^s¤¬²¿¤«¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "%^s breathes."), m_name);
-                               }
-                               else
-                               {
-                                       msg_format(_("%^s¤¬%s¤Ë°ðºÊ¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "%^s breathes lightning at %s."), m_name, t_name);
-                               }
-                       }
-                       else
-                       {
-                               mon_fight = TRUE;
-                       }
-
-                       sound(SOUND_BREATH);
-               }
-
-               dam = ((m_ptr->hp / 3) > 1600 ? 1600 : (m_ptr->hp / 3));
-        breath(y, x, m_idx,GF_ELEC, dam, 0, TRUE, MS_BR_ELEC, SPELL_MON_TO_MON);
-
-               break;
-
-       /* RF4_BR_FIRE */
-       case 96+10:
-               if (known)
-               {
-                       if (see_either)
-                       {
-                               disturb(1, 1);
-
-                               if (blind)
-                               {
-                                       msg_format(_("%^s¤¬²¿¤«¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "%^s breathes."), m_name);
-                               }
-                               else
-                               {
-                                       msg_format(_("%^s¤¬%s¤Ë²Ð±ê¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "%^s breathes fire at %s."), m_name, t_name);
-                               }
-                       }
-                       else
-                       {
-                               mon_fight = TRUE;
-                       }
-
-                       sound(SOUND_BREATH);
-               }
-
-               dam = ((m_ptr->hp / 3) > 1600 ? 1600 : (m_ptr->hp / 3));
-        breath(y, x, m_idx,GF_FIRE, dam, 0, TRUE, MS_BR_FIRE, SPELL_MON_TO_MON);
-
-               break;
-
-       /* RF4_BR_COLD */
-       case 96+11:
-               if (known)
-               {
-                       if (see_either)
-                       {
-                               disturb(1, 1);
-
-                               if (blind)
-                               {
-                                       msg_format(_("%^s¤¬²¿¤«¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "%^s breathes."), m_name);
-                               }
-                               else
-                               {
-                                       msg_format(_("%^s¤¬%s¤ËÎ䵤¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "%^s breathes frost at %s."), m_name, t_name);
-                               }
-                       }
-                       else
-                       {
-                               mon_fight = TRUE;
-                       }
-
-                       sound(SOUND_BREATH);
-               }
-
-               dam = ((m_ptr->hp / 3) > 1600 ? 1600 : (m_ptr->hp / 3));
-        breath(y, x, m_idx,GF_COLD, dam, 0, TRUE, MS_BR_COLD, SPELL_MON_TO_MON);
-               break;
-
-       /* RF4_BR_POIS */
-       case 96+12:
-               if (known)
-               {
-                       if (see_either)
-                       {
-                               disturb(1, 1);
-
-                               if (blind)
-                               {
-                                       msg_format(_("%^s¤¬²¿¤«¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "%^s breathes."), m_name);
-                               }
-                               else
-                               {
-                                       msg_format(_("%^s¤¬%s¤Ë¥¬¥¹¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "%^s breathes gas at %s."), m_name, t_name);
-                               }
-                       }
-                       else
-                       {
-                               mon_fight = TRUE;
-                       }
-
-                       sound(SOUND_BREATH);
-               }
-
-               dam = ((m_ptr->hp / 3) > 800 ? 800 : (m_ptr->hp / 3));
-        breath(y, x, m_idx,GF_POIS, dam, 0, TRUE, MS_BR_POIS, SPELL_MON_TO_MON);
-
-               break;
-
-       /* RF4_BR_NETH */
-       case 96+13:
-               if (known)
-               {
-                       if (see_either)
-                       {
-                               disturb(1, 1);
-
-                               if (blind)
-                               {
-                                       msg_format(_("%^s¤¬²¿¤«¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "%^s breathes."), m_name);
-                               }
-                               else
-                               {
-                                       msg_format(_("%^s¤¬%s¤ËÃϹö¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "%^s breathes nether at %s."), m_name, t_name);
-                               }
-                       }
-                       else
-                       {
-                               mon_fight = TRUE;
-                       }
-
-                       sound(SOUND_BREATH);
-               }
-
-               dam = ((m_ptr->hp / 6) > 550 ? 550 : (m_ptr->hp / 6));
-        breath(y, x, m_idx,GF_NETHER, dam, 0, TRUE, MS_BR_NETHER, SPELL_MON_TO_MON);
-
-               break;
-
-       /* RF4_BR_LITE */
-       case 96+14:
-               if (known)
-               {
-                       if (see_either)
-                       {
-                               disturb(1, 1);
-
-                               if (blind)
-                               {
-                                       msg_format(_("%^s¤¬²¿¤«¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "%^s breathes."), m_name);
-                               }
-                               else
-                               {
-                                       msg_format(_("%^s¤¬%s¤ËÁ®¸÷¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "%^s breathes light at %s."), m_name, t_name);
-                               }
-                       }
-                       else
-                       {
-                               mon_fight = TRUE;
-                       }
-
-                       sound(SOUND_BREATH);
-               }
-
-               dam = ((m_ptr->hp / 6) > 400 ? 400 : (m_ptr->hp / 6));
-        breath(y, x, m_idx,GF_LITE, dam, 0, TRUE, MS_BR_LITE, SPELL_MON_TO_MON);
-
-               break;
-
-       /* RF4_BR_DARK */
-       case 96+15:
-               if (known)
-               {
-                       if (see_either)
-                       {
-                               disturb(1, 1);
-
-                               if (blind)
-                               {
-                                       msg_format(_("%^s¤¬²¿¤«¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "%^s breathes."), m_name);
-                               }
-                               else
-                               {
-                                       msg_format(_("%^s¤¬%s¤Ë°Å¹õ¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "%^s breathes darkness at %s."), m_name, t_name);
-                               }
-                       }
-                       else
-                       {
-                               mon_fight = TRUE;
-                       }
-
-                       sound(SOUND_BREATH);
-               }
-
-               dam = ((m_ptr->hp / 6) > 400 ? 400 : (m_ptr->hp / 6));
-        breath(y, x, m_idx,GF_DARK, dam, 0, TRUE, MS_BR_DARK, SPELL_MON_TO_MON);
-
-               break;
-
-       /* RF4_BR_CONF */
-       case 96+16:
-               if (known)
-               {
-                       if (see_either)
-                       {
-                               disturb(1, 1);
-
-                               if (blind)
-                               {
-                                       msg_format(_("%^s¤¬²¿¤«¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "%^s breathes."), m_name);
-                               }
-                               else
-                               {
-                                       msg_format(_("%^s¤¬%s¤Ëº®Íð¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "%^s breathes confusion at %s."), m_name, t_name);
-                               }
-                       }
-                       else
-                       {
-                               mon_fight = TRUE;
-                       }
-
-                       sound(SOUND_BREATH);
-               }
-
-               dam = ((m_ptr->hp / 6) > 450 ? 450 : (m_ptr->hp / 6));
-        breath(y, x, m_idx,GF_CONFUSION, dam, 0, TRUE, MS_BR_CONF, SPELL_MON_TO_MON);
-
-               break;
-
-       /* RF4_BR_SOUN */
-       case 96+17:
-               if (known)
-               {
-                       if (see_either)
-                       {
-                               disturb(1, 1);
-
-                               if (m_ptr->r_idx == MON_JAIAN)
-                               {
-                                       msg_format(_("¡Ö¥Ü¥©¥¨¡Á¡Á¡Á¡Á¡Á¡Á¡×", "'Booooeeeeee'"));
-                               }
-                               else if (blind)
-                               {
-                                       msg_format(_("%^s¤¬²¿¤«¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "%^s breathes."), m_name);
-                               }
-                               else
-                               {
-                                       msg_format(_("%^s¤¬%s¤Ë¹ì²»¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "%^s breathes sound at %s."), m_name, t_name);
-                               }
-                       }
-                       else
-                       {
-                               mon_fight = TRUE;
-                       }
-
-                       sound(SOUND_BREATH);
-               }
-
-               dam = ((m_ptr->hp / 6) > 450 ? 450 : (m_ptr->hp / 6));
-        breath(y, x, m_idx,GF_SOUND, dam, 0, TRUE, MS_BR_SOUND, SPELL_MON_TO_MON);
-
-               break;
-
-       /* RF4_BR_CHAO */
-       case 96+18:
-               if (known)
-               {
-                       if (see_either)
-                       {
-                               disturb(1, 1);
-
-                               if (blind)
-                               {
-                                       msg_format(_("%^s¤¬²¿¤«¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "%^s breathes."), m_name);
-                               }
-                               else
-                               {
-                                       msg_format(_("%^s¤¬%s¤Ë¥«¥ª¥¹¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "%^s breathes chaos at %s."), m_name, t_name);
-                               }
-                       }
-                       else
-                       {
-                               mon_fight = TRUE;
-                       }
-
-                       sound(SOUND_BREATH);
-               }
-
-               dam = ((m_ptr->hp / 6) > 600 ? 600 : (m_ptr->hp / 6));
-        breath(y, x, m_idx, GF_CHAOS, dam, 0, TRUE, MS_BR_CHAOS, SPELL_MON_TO_MON);
-
-               break;
-
-       /* RF4_BR_DISE */
-       case 96+19:
-               if (known)
-               {
-                       if (see_either)
-                       {
-                               disturb(1, 1);
-
-                               if (blind)
-                               {
-                                       msg_format(_("%^s¤¬²¿¤«¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "%^s breathes."), m_name);
-                               }
-                               else
-                               {
-                                       msg_format(_("%^s¤¬%s¤ËÎô²½¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "%^s breathes disenchantment at %s."), m_name, t_name);
-                               }
-                       }
-                       else
-                       {
-                               mon_fight = TRUE;
-                       }
-
-                       sound(SOUND_BREATH);
-               }
-
-               dam = ((m_ptr->hp / 6) > 500 ? 500 : (m_ptr->hp / 6));
-        breath(y, x, m_idx, GF_DISENCHANT, dam, 0, TRUE, MS_BR_DISEN, SPELL_MON_TO_MON);
-
-               break;
-
-       /* RF4_BR_NEXU */
-       case 96+20:
-               if (known)
-               {
-                       if (see_either)
-                       {
-                               disturb(1, 1);
-
-                               if (blind)
-                               {
-                                       msg_format(_("%^s¤¬²¿¤«¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "%^s breathes."), m_name);
-                               }
-                               else
-                               {
-                                       msg_format(_("%^s¤¬%s¤Ë°ø²Ìº®Íð¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "%^s breathes nexus at %s."), m_name, t_name);
-                               }
-                       }
-                       else
-                       {
-                               mon_fight = TRUE;
-                       }
-
-                       sound(SOUND_BREATH);
-               }
-
-               dam = ((m_ptr->hp / 3) > 250 ? 250 : (m_ptr->hp / 3));
-        breath(y, x, m_idx, GF_NEXUS, dam, 0, TRUE, MS_BR_NEXUS, SPELL_MON_TO_MON);
-
-               break;
-
-       /* RF4_BR_TIME */
-       case 96+21:
-               if (known)
-               {
-                       if (see_either)
-                       {
-                               disturb(1, 1);
-
-                               if (blind)
-                               {
-                                       msg_format(_("%^s¤¬²¿¤«¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "%^s breathes."), m_name);
-                               }
-                               else
-                               {
-                                       msg_format(_("%^s¤¬%s¤Ë»þ´ÖµÕž¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "%^s breathes time at %s."), m_name, t_name);
-                               }
-                       }
-                       else
-                       {
-                               mon_fight = TRUE;
-                       }
-
-                       sound(SOUND_BREATH);
-               }
-
-               dam = ((m_ptr->hp / 3) > 150 ? 150 : (m_ptr->hp / 3));
-        breath(y, x, m_idx, GF_TIME, dam, 0, TRUE, MS_BR_TIME, SPELL_MON_TO_MON);
-
-               break;
-
-       /* RF4_BR_INER */
-       case 96+22:
-               if (known)
-               {
-                       if (see_either)
-                       {
-                               disturb(1, 1);
-
-                               if (blind)
-                               {
-                                       msg_format(_("%^s¤¬²¿¤«¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "%^s breathes."), m_name);
-                               }
-                               else
-                               {
-                                       msg_format(_("%^s¤¬%s¤ËÃÙÆߤΥ֥쥹¤òÅǤ¤¤¿¡£", "%^s breathes inertia at %s."), m_name, t_name);
-                               }
-                       }
-                       else
-                       {
-                               mon_fight = TRUE;
-                       }
-
-                       sound(SOUND_BREATH);
-               }
-
-               dam = ((m_ptr->hp / 6) > 200 ? 200 : (m_ptr->hp / 6));
-        breath(y, x, m_idx, GF_INERTIA, dam, 0, TRUE, MS_BR_INERTIA, SPELL_MON_TO_MON);
-
-               break;
-
-       /* RF4_BR_GRAV */
-       case 96+23:
-               if (known)
-               {
-                       if (see_either)
-                       {
-                               disturb(1, 1);
-
-                               if (blind)
-                               {
-                                       msg_format(_("%^s¤¬²¿¤«¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "%^s breathes."), m_name);
-                               }
-                               else
-                               {
-                                       msg_format(_("%^s¤¬%s¤Ë½ÅÎϤΥ֥쥹¤òÅǤ¤¤¿¡£", "%^s breathes gravity at %s."), m_name, t_name);
-                               }
-                       }
-                       else
-                       {
-                               mon_fight = TRUE;
-                       }
-
-                       sound(SOUND_BREATH);
-               }
-
-               dam = ((m_ptr->hp / 3) > 200 ? 200 : (m_ptr->hp / 3));
-        breath(y, x, m_idx, GF_GRAVITY, dam, 0, TRUE, MS_BR_GRAVITY, SPELL_MON_TO_MON);
-
-               break;
-
-       /* RF4_BR_SHAR */
-       case 96+24:
-               if (known)
-               {
-                       if (see_either)
-                       {
-                               disturb(1, 1);
-
-                               if (m_ptr->r_idx == MON_BOTEI)
-                               {
-                                       msg_format(_("¡Ö¥ÜÄë¥Ó¥ë¥«¥Ã¥¿¡¼¡ª¡ª¡ª¡×", "'Boty-Build cutter!!!'"));
-                               }
-                               else if (blind)
-                               {
-                                       msg_format(_("%^s¤¬²¿¤«¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "%^s breathes."), m_name);
-                               }
-                               else
-                               {
-                                       msg_format(_("%^s¤¬%s¤ËÇËÊҤΥ֥쥹¤òÅǤ¤¤¿¡£", "%^s breathes shards at %s."), m_name, t_name);
-                               }
-                       }
-                       else
-                       {
-                               mon_fight = TRUE;
-                       }
-
-                       sound(SOUND_BREATH);
-               }
-
-               dam = ((m_ptr->hp / 6) > 500 ? 500 : (m_ptr->hp / 6));
-        breath(y, x, m_idx, GF_SHARDS, dam, 0, TRUE, MS_BR_SHARDS, SPELL_MON_TO_MON);
-
-               break;
-
-       /* RF4_BR_PLAS */
-       case 96+25:
-               if (known)
-               {
-                       if (see_either)
-                       {
-                               disturb(1, 1);
-
-                               if (blind)
-                               {
-                                       msg_format(_("%^s¤¬²¿¤«¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "%^s breathes."), m_name);
-                               }
-                               else
-                               {
-                                       msg_format(_("%^s¤¬%s¤Ë¥×¥é¥º¥Þ¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "%^s breathes plasma at %s."), m_name, t_name);
-                               }
-                       }
-                       else
-                       {
-                               mon_fight = TRUE;
-                       }
-
-                       sound(SOUND_BREATH);
-               }
-
-               dam = ((m_ptr->hp / 6) > 150 ? 150 : (m_ptr->hp / 6));
-        breath(y, x, m_idx,GF_PLASMA, dam, 0, TRUE, MS_BR_PLASMA, SPELL_MON_TO_MON);
-
-               break;
-
-       /* RF4_BR_WALL */
-       case 96+26:
-               if (known)
-               {
-                       if (see_either)
-                       {
-                               disturb(1, 1);
-
-                               if (blind)
-                               {
-                                       msg_format(_("%^s¤¬²¿¤«¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "%^s breathes."), m_name);
-                               }
-                               else
-                               {
-                                       msg_format(_("%^s¤¬%s¤Ë¥Õ¥©¡¼¥¹¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "%^s breathes force at %s."), m_name, t_name);
-                               }
-                       }
-                       else
-                       {
-                               mon_fight = TRUE;
-                       }
-
-                       sound(SOUND_BREATH);
-               }
-
-               dam = ((m_ptr->hp / 6) > 200 ? 200 : (m_ptr->hp / 6));
-        breath(y, x, m_idx,GF_FORCE, dam, 0, TRUE, MS_BR_FORCE, SPELL_MON_TO_MON);
-               break;
-
-       /* RF4_BR_MANA */
-       case 96+27:
-               if (known)
-               {
-                       if (see_either)
-                       {
-                               disturb(1, 1);
-
-                               if (blind)
-                               {
-                                       msg_format(_("%^s¤¬²¿¤«¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "%^s breathes."), m_name);
-                               }
-                               else
-                               {
-                                       msg_format(_("%^s¤¬%s¤ËËâÎϤΥ֥쥹¤òÅǤ¤¤¿¡£", "%^s breathes mana at %s."), m_name, t_name);
-                               }
-                       }
-                       else
-                       {
-                               mon_fight = TRUE;
-                       }
-
-                       sound(SOUND_BREATH);
-               }
-
-               dam = ((m_ptr->hp / 3) > 250 ? 250 : (m_ptr->hp / 3));
-        breath(y, x, m_idx,GF_MANA, dam, 0, TRUE, MS_BR_MANA, SPELL_MON_TO_MON);
-
-               break;
-
-       /* RF4_BA_NUKE */
-       case 96+28:
-               if (known)
-               {
-                       if (see_either)
-                       {
-                               disturb(1, 1);
-
-                               if (blind)
-                               {
-                                       msg_format(_("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."), m_name);
-                               }
-                               else
-                               {
-                                       msg_format(_("%^s¤¬%s¤ËÊü¼Íǽµå¤òÊü¤Ã¤¿¡£", "%^s casts a ball of radiation at %s."), m_name, t_name);
-                               }
-                       }
-                       else
-                       {
-                               mon_fight = TRUE;
-                       }
-               }
-
-               dam = (rlev + damroll(10, 6));
-        breath(y, x, m_idx,GF_NUKE, dam, 2, FALSE, MS_BALL_NUKE, SPELL_MON_TO_MON);
-
-               break;
-
-       /* RF4_BR_NUKE */
-       case 96+29:
-               if (known)
-               {
-                       if (see_either)
-                       {
-                               disturb(1, 1);
-
-                               if (blind)
-                               {
-                                       msg_format(_("%^s¤¬²¿¤«¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "%^s breathes."), m_name);
-                               }
-                               else
-                               {
-                                       msg_format(_("%^s¤¬%s¤ËÊü¼ÍÀ­ÇÑ´þʪ¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "%^s breathes toxic waste at %s."), m_name, t_name);
-                               }
-                       }
-                       else
-                       {
-                               mon_fight = TRUE;
-                       }
-
-                       sound(SOUND_BREATH);
-               }
-
-               dam = ((m_ptr->hp / 3) > 800 ? 800 : (m_ptr->hp / 3));
-        breath(y, x, m_idx,GF_NUKE, dam, 0, TRUE, MS_BR_NUKE, SPELL_MON_TO_MON);
-               break;
-
-       /* RF4_BA_CHAO */
-       case 96+30:
-               if (known)
-               {
-                       if (see_either)
-                       {
-                               disturb(1, 1);
-
-                               if (blind)
-                               {
-                                       msg_format(_("%^s¤¬¶²¤í¤·¤²¤Ë¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles frighteningly."), m_name);
-                               }
-                               else
-                               {
-                                       msg_format(_("%^s¤¬%s¤Ë½ã¥í¥°¥ë¥¹¤òÊü¤Ã¤¿¡£", "%^s invokes raw Logrus upon %s."), m_name, t_name);
-                               }
-                       }
-                       else
-                       {
-                               mon_fight = TRUE;
-                       }
-               }
-
-               dam = (rlev * 2) + damroll(10, 10);
-        breath(y, x, m_idx,GF_CHAOS, dam, 4, FALSE, MS_BALL_CHAOS, SPELL_MON_TO_MON);
-
-               break;
-
-       /* RF4_BR_DISI */
-       case 96+31:
-               if (known)
-               {
-                       if (see_either)
-                       {
-                               disturb(1, 1);
-
-                               if (blind)
-                               {
-                                       msg_format(_("%^s¤¬²¿¤«¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "%^s breathes."), m_name);
-                               }
-                               else
-                               {
-                                       msg_format(_("%^s¤¬%s¤Ëʬ²ò¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "%^s breathes disintegration at %s."), m_name, t_name);
-                               }
-                       }
-                       else
-                       {
-                               mon_fight = TRUE;
-                       }
-
-                       sound(SOUND_BREATH);
-               }
-
-               dam = ((m_ptr->hp / 6) > 150 ? 150 : (m_ptr->hp / 6));
-        breath(y, x, m_idx,GF_DISINTEGRATE, dam, 0, TRUE, MS_BR_DISI, SPELL_MON_TO_MON);
-               break;
+    case 96 + 0:  MM_spell_RF4_SHRIEK(m_idx, t_idx); break; /* RF4_SHRIEK */
+    case 96 + 1:  return FALSE;  /* RF4_XXX1 */
+    case 96 + 2:  MM_spell_RF4_DISPEL(m_idx, t_idx); break; /* RF4_DISPEL */
+    case 96 + 3:  dam = MM_spell_RF4_ROCKET(y, x, m_idx, t_idx); break; /* RF4_ROCKET */
+    case 96 + 4:  dam = MM_spell_RF4_SHOOT(y, x, m_idx, t_idx); break; /* RF4_SHOOT */
+    case 96 + 5:  return FALSE; /* RF4_XXX2 */
+    case 96 + 6:  return FALSE; /* RF4_XXX3 */
+    case 96 + 7:  return FALSE; /* RF4_XXX4 */
+    case 96 + 8:  dam = MM_spell_RF4_BREATH(GF_ACID, y, x, m_idx, t_idx); break; /* RF4_BR_ACID */
+    case 96 + 9:  dam = MM_spell_RF4_BREATH(GF_ELEC, y, x, m_idx, t_idx); break; /* RF4_BR_ELEC */
+    case 96 + 10: dam = MM_spell_RF4_BREATH(GF_FIRE, y, x, m_idx, t_idx); break; /* RF4_BR_FIRE */
+    case 96 + 11: dam = MM_spell_RF4_BREATH(GF_COLD, y, x, m_idx, t_idx); break; /* RF4_BR_COLD */
+    case 96 + 12: dam = MM_spell_RF4_BREATH(GF_POIS, y, x, m_idx, t_idx); break; /* RF4_BR_POIS */
+    case 96 + 13: dam = MM_spell_RF4_BREATH(GF_NETHER, y, x, m_idx, t_idx); break; /* RF4_BR_NETH */
+    case 96 + 14: dam = MM_spell_RF4_BREATH(GF_LITE, y, x, m_idx, t_idx); break; /* RF4_BR_LITE */
+    case 96 + 15: dam = MM_spell_RF4_BREATH(GF_DARK, y, x, m_idx, t_idx); break; /* RF4_BR_DARK */
+    case 96 + 16: dam = MM_spell_RF4_BREATH(GF_CONFUSION, y, x, m_idx, t_idx); break; /* RF4_BR_CONF */
+    case 96 + 17: dam = MM_spell_RF4_BREATH(GF_SOUND, y, x, m_idx, t_idx); break; /* RF4_BR_SOUN */
+    case 96 + 18: dam = MM_spell_RF4_BREATH(GF_CHAOS, y, x, m_idx, t_idx); break; /* RF4_BR_CHAO */
+    case 96 + 19: dam = MM_spell_RF4_BREATH(GF_DISENCHANT, y, x, m_idx, t_idx); break; /* RF4_BR_DISE */
+    case 96 + 20: dam = MM_spell_RF4_BREATH(GF_NEXUS, y, x, m_idx, t_idx); break; /* RF4_BR_NEXU */
+    case 96 + 21: dam = MM_spell_RF4_BREATH(GF_TIME, y, x, m_idx, t_idx); break; /* RF4_BR_TIME */
+    case 96 + 22: dam = MM_spell_RF4_BREATH(GF_INERTIA, y, x, m_idx, t_idx); break; /* RF4_BR_INER */
+    case 96 + 23: dam = MM_spell_RF4_BREATH(GF_GRAVITY, y, x, m_idx, t_idx); break; /* RF4_BR_GRAV */
+    case 96 + 24: dam = MM_spell_RF4_BREATH(GF_SHARDS, y, x, m_idx, t_idx); break; /* RF4_BR_SHAR */
+    case 96 + 25: dam = MM_spell_RF4_BREATH(GF_PLASMA, y, x, m_idx, t_idx); break; /* RF4_BR_PLAS */
+    case 96 + 26: dam = MM_spell_RF4_BREATH(GF_FORCE, y, x, m_idx, t_idx); break; /* RF4_BR_WALL */
+    case 96 + 27: dam = MM_spell_RF4_BREATH(GF_MANA, y, x, m_idx, t_idx); break; /* RF4_BR_MANA */
+
+    /* RF4_BA_NUKE */
+    case 96 + 28:
+        if (known)
+        {
+            if (see_either)
+            {
+                disturb(1, 1);
+
+                if (blind)
+                {
+                    msg_format(_("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."), m_name);
+                }
+                else
+                {
+                    msg_format(_("%^s¤¬%s¤ËÊü¼Íǽµå¤òÊü¤Ã¤¿¡£", "%^s casts a ball of radiation at %s."), m_name, t_name);
+                }
+            }
+            else
+            {
+                mon_fight = TRUE;
+            }
+        }
+
+        dam = (rlev + damroll(10, 6));
+        breath(y, x, m_idx, GF_NUKE, dam, 2, FALSE, MS_BALL_NUKE, MONSTER_TO_MONSTER);
+
+        break;
+
+    case 96 + 29: dam = MM_spell_RF4_BREATH(GF_NUKE, y, x, m_idx, t_idx); break; /* RF4_BR_NUKE */
+    
+    /* RF4_BA_CHAO */
+    case 96 + 30:
+        if (known)
+        {
+            if (see_either)
+            {
+                disturb(1, 1);
+
+                if (blind)
+                {
+                    msg_format(_("%^s¤¬¶²¤í¤·¤²¤Ë¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles frighteningly."), m_name);
+                }
+                else
+                {
+                    msg_format(_("%^s¤¬%s¤Ë½ã¥í¥°¥ë¥¹¤òÊü¤Ã¤¿¡£", "%^s invokes raw Logrus upon %s."), m_name, t_name);
+                }
+            }
+            else
+            {
+                mon_fight = TRUE;
+            }
+        }
+
+        dam = (rlev * 2) + damroll(10, 10);
+        breath(y, x, m_idx, GF_CHAOS, dam, 4, FALSE, MS_BALL_CHAOS, MONSTER_TO_MONSTER);
+        break;
+
+    case 96 + 31: dam = MM_spell_RF4_BREATH(GF_DISINTEGRATE, y, x, m_idx, t_idx); break; /* RF4_BR_DISI */
 
        /* RF5_BA_ACID */
        case 128+0:
@@ -1537,7 +857,7 @@ bool monst_spell_monst(int m_idx)
                        rad = 2;
                        dam = (randint1(rlev * 3) + 15);
                }
-        breath(y, x, m_idx,GF_ACID, dam, rad, FALSE, MS_BALL_ACID, SPELL_MON_TO_MON);
+        breath(y, x, m_idx,GF_ACID, dam, rad, FALSE, MS_BALL_ACID, MONSTER_TO_MONSTER);
                break;
 
        /* RF5_BA_ELEC */
@@ -1573,7 +893,7 @@ bool monst_spell_monst(int m_idx)
                        rad = 2;
                        dam = (randint1(rlev * 3 / 2) + 8);
                }
-        breath(y, x, m_idx,GF_ELEC, dam, rad, FALSE, MS_BALL_ELEC, SPELL_MON_TO_MON);
+        breath(y, x, m_idx,GF_ELEC, dam, rad, FALSE, MS_BALL_ELEC, MONSTER_TO_MONSTER);
                break;
 
        /* RF5_BA_FIRE */
@@ -1620,7 +940,7 @@ bool monst_spell_monst(int m_idx)
                        rad = 2;
                        dam = (randint1(rlev * 7 / 2) + 10);
                }
-        breath(y, x, m_idx,GF_FIRE, dam, rad, FALSE, MS_BALL_FIRE, SPELL_MON_TO_MON);
+        breath(y, x, m_idx,GF_FIRE, dam, rad, FALSE, MS_BALL_FIRE, MONSTER_TO_MONSTER);
                break;
 
        /* RF5_BA_COLD */
@@ -1657,7 +977,7 @@ bool monst_spell_monst(int m_idx)
                        rad = 2;
                        dam = (randint1(rlev * 3 / 2) + 10);
                }
-        breath(y, x, m_idx,GF_COLD, dam, rad, FALSE, MS_BALL_COLD, SPELL_MON_TO_MON);
+        breath(y, x, m_idx,GF_COLD, dam, rad, FALSE, MS_BALL_COLD, MONSTER_TO_MONSTER);
                break;
 
        /* RF5_BA_POIS */
@@ -1685,7 +1005,7 @@ bool monst_spell_monst(int m_idx)
                }
 
                dam = damroll(12, 2) * ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 1);
-        breath(y, x, m_idx,GF_POIS, dam, 2, FALSE, MS_BALL_POIS, SPELL_MON_TO_MON);
+        breath(y, x, m_idx,GF_POIS, dam, 2, FALSE, MS_BALL_POIS, MONSTER_TO_MONSTER);
 
                break;
 
@@ -1713,7 +1033,7 @@ bool monst_spell_monst(int m_idx)
                }
 
                dam = 50 + damroll(10, 10) + (rlev * ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 1));
-        breath(y, x, m_idx,GF_NETHER, dam, 2, FALSE, MS_BALL_NETHER, SPELL_MON_TO_MON);
+        breath(y, x, m_idx,GF_NETHER, dam, 2, FALSE, MS_BALL_NETHER, MONSTER_TO_MONSTER);
 
                break;
 
@@ -1743,7 +1063,7 @@ bool monst_spell_monst(int m_idx)
                }
 
                dam = ((r_ptr->flags2 & RF2_POWERFUL) ? randint1(rlev * 3) : randint1(rlev * 2)) + 50;
-        breath(y, x, m_idx,GF_WATER, dam, 4, FALSE, MS_BALL_WATER, SPELL_MON_TO_MON);
+        breath(y, x, m_idx,GF_WATER, dam, 4, FALSE, MS_BALL_WATER, MONSTER_TO_MONSTER);
 
                break;
 
@@ -1771,7 +1091,7 @@ bool monst_spell_monst(int m_idx)
                }
 
                dam = (rlev * 4) + 50 + damroll(10, 10);
-        breath(y, x, m_idx,GF_MANA, dam, 4, FALSE, MS_BALL_MANA, SPELL_MON_TO_MON);
+        breath(y, x, m_idx,GF_MANA, dam, 4, FALSE, MS_BALL_MANA, MONSTER_TO_MONSTER);
 
                break;
 
@@ -1799,7 +1119,7 @@ bool monst_spell_monst(int m_idx)
                }
 
                dam = (rlev * 4) + 50 + damroll(10, 10);
-        breath(y, x, m_idx,GF_DARK, dam, 4, FALSE, MS_BALL_DARK, SPELL_MON_TO_MON);
+        breath(y, x, m_idx,GF_DARK, dam, 4, FALSE, MS_BALL_DARK, MONSTER_TO_MONSTER);
 
                break;
 
@@ -1812,7 +1132,7 @@ bool monst_spell_monst(int m_idx)
                }
 
                dam = ((randint1(rlev) / 2) + 1);
-        breath(y, x, m_idx,GF_DRAIN_MANA, dam, 0, FALSE, MS_DRAIN_MANA, SPELL_MON_TO_MON);
+        breath(y, x, m_idx,GF_DRAIN_MANA, dam, 0, FALSE, MS_DRAIN_MANA, MONSTER_TO_MONSTER);
 
                break;
 
@@ -1824,7 +1144,7 @@ bool monst_spell_monst(int m_idx)
                }
 
                dam = damroll(7, 7);
-        breath(y, x, m_idx,GF_MIND_BLAST, dam, 0, FALSE, MS_MIND_BLAST, SPELL_MON_TO_MON);
+        breath(y, x, m_idx,GF_MIND_BLAST, dam, 0, FALSE, MS_MIND_BLAST, MONSTER_TO_MONSTER);
 
                break;
 
@@ -1836,7 +1156,7 @@ bool monst_spell_monst(int m_idx)
                }
 
                dam = damroll(12, 12);
-        breath(y, x, m_idx,GF_BRAIN_SMASH, dam, 0, FALSE, MS_BRAIN_SMASH, SPELL_MON_TO_MON);
+        breath(y, x, m_idx,GF_BRAIN_SMASH, dam, 0, FALSE, MS_BRAIN_SMASH, MONSTER_TO_MONSTER);
 
                break;
 
@@ -1855,7 +1175,7 @@ bool monst_spell_monst(int m_idx)
                }
 
                dam = damroll(3, 8);
-        breath(y, x, m_idx,GF_CAUSE_1, dam, 0, FALSE, MS_CAUSE_1, SPELL_MON_TO_MON);
+        breath(y, x, m_idx,GF_CAUSE_1, dam, 0, FALSE, MS_CAUSE_1, MONSTER_TO_MONSTER);
 
                break;
 
@@ -1875,7 +1195,7 @@ bool monst_spell_monst(int m_idx)
                }
 
                dam = damroll(8, 8);
-        breath(y, x, m_idx,GF_CAUSE_2, dam, 0, FALSE, MS_CAUSE_2, SPELL_MON_TO_MON);
+        breath(y, x, m_idx,GF_CAUSE_2, dam, 0, FALSE, MS_CAUSE_2, MONSTER_TO_MONSTER);
 
                break;
 
@@ -1895,7 +1215,7 @@ bool monst_spell_monst(int m_idx)
                }
 
                dam = damroll(10, 15);
-        breath(y, x, m_idx,GF_CAUSE_3, dam, 0, FALSE, MS_CAUSE_3, SPELL_MON_TO_MON);
+        breath(y, x, m_idx,GF_CAUSE_3, dam, 0, FALSE, MS_CAUSE_3, MONSTER_TO_MONSTER);
 
                break;
 
@@ -1915,7 +1235,7 @@ bool monst_spell_monst(int m_idx)
                }
 
                dam = damroll(15, 15);
-        breath(y, x, m_idx,GF_CAUSE_4, dam, 0, FALSE, MS_CAUSE_4, SPELL_MON_TO_MON);
+        breath(y, x, m_idx,GF_CAUSE_4, dam, 0, FALSE, MS_CAUSE_4, MONSTER_TO_MONSTER);
 
                break;
 
@@ -1934,7 +1254,7 @@ bool monst_spell_monst(int m_idx)
                }
 
                dam = (damroll(7, 8) + (rlev / 3)) * ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 1);
-        bolt(m_idx, y, x, GF_ACID, dam, MS_BOLT_ACID, SPELL_MON_TO_MON);
+        bolt(m_idx, y, x, GF_ACID, dam, MS_BOLT_ACID, MONSTER_TO_MONSTER);
 
                break;
 
@@ -1953,7 +1273,7 @@ bool monst_spell_monst(int m_idx)
                }
 
                dam = (damroll(4, 8) + (rlev / 3)) * ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 1);
-        bolt(m_idx, y, x, GF_ELEC, dam, MS_BOLT_ELEC, SPELL_MON_TO_MON);
+        bolt(m_idx, y, x, GF_ELEC, dam, MS_BOLT_ELEC, MONSTER_TO_MONSTER);
 
                break;
 
@@ -1972,7 +1292,7 @@ bool monst_spell_monst(int m_idx)
                }
 
                dam = (damroll(9, 8) + (rlev / 3)) * ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 1);
-        bolt(m_idx, y, x, GF_FIRE, dam, MS_BOLT_FIRE, SPELL_MON_TO_MON);
+        bolt(m_idx, y, x, GF_FIRE, dam, MS_BOLT_FIRE, MONSTER_TO_MONSTER);
 
                break;
 
@@ -1991,7 +1311,7 @@ bool monst_spell_monst(int m_idx)
                }
 
                dam = (damroll(6, 8) + (rlev / 3)) * ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 1);
-        bolt(m_idx, y, x, GF_COLD, dam, MS_BOLT_COLD, SPELL_MON_TO_MON);
+        bolt(m_idx, y, x, GF_COLD, dam, MS_BOLT_COLD, MONSTER_TO_MONSTER);
 
                break;
 
@@ -2020,7 +1340,7 @@ bool monst_spell_monst(int m_idx)
                }
 
                dam = (rlev * 4) + 50 + damroll(10, 10);
-        breath(y, x, m_idx,GF_LITE, dam, 4, FALSE, MS_STARBURST, SPELL_MON_TO_MON);
+        breath(y, x, m_idx,GF_LITE, dam, 4, FALSE, MS_STARBURST, MONSTER_TO_MONSTER);
 
                break;
 
@@ -2040,7 +1360,7 @@ bool monst_spell_monst(int m_idx)
                }
 
                dam = 30 + damroll(5, 5) + (rlev * 4) / ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 3);
-        bolt(m_idx, y, x, GF_NETHER, dam, MS_BOLT_NETHER, SPELL_MON_TO_MON);
+        bolt(m_idx, y, x, GF_NETHER, dam, MS_BOLT_NETHER, MONSTER_TO_MONSTER);
 
                break;
 
@@ -2060,7 +1380,7 @@ bool monst_spell_monst(int m_idx)
                }
 
                dam = damroll(10, 10) + (rlev * 3 / ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 3));
-        bolt(m_idx, y, x, GF_WATER, dam, MS_BOLT_WATER, SPELL_MON_TO_MON);
+        bolt(m_idx, y, x, GF_WATER, dam, MS_BOLT_WATER, MONSTER_TO_MONSTER);
 
                break;
 
@@ -2080,7 +1400,7 @@ bool monst_spell_monst(int m_idx)
                }
 
                dam = randint1(rlev * 7 / 2) + 50;
-        bolt(m_idx, y, x, GF_MANA, dam, MS_BOLT_MANA, SPELL_MON_TO_MON);
+        bolt(m_idx, y, x, GF_MANA, dam, MS_BOLT_MANA, MONSTER_TO_MONSTER);
 
                break;
 
@@ -2100,7 +1420,7 @@ bool monst_spell_monst(int m_idx)
                }
 
                dam = 10 + damroll(8, 7) + (rlev * 3 / ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 3));
-        bolt(m_idx, y, x, GF_PLASMA, dam, MS_BOLT_PLASMA, SPELL_MON_TO_MON);
+        bolt(m_idx, y, x, GF_PLASMA, dam, MS_BOLT_PLASMA, MONSTER_TO_MONSTER);
 
                break;
 
@@ -2120,7 +1440,7 @@ bool monst_spell_monst(int m_idx)
                }
 
                dam = damroll(6, 6) + (rlev * 3 / ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 3));
-        bolt(m_idx, y, x, GF_ICE, dam, MS_BOLT_ICE, SPELL_MON_TO_MON);
+        bolt(m_idx, y, x, GF_ICE, dam, MS_BOLT_ICE, MONSTER_TO_MONSTER);
 
                break;
 
@@ -2140,7 +1460,7 @@ bool monst_spell_monst(int m_idx)
                }
 
                dam = damroll(2, 6) + (rlev / 3);
-        bolt(m_idx, y, x, GF_MISSILE, dam, MS_MAGIC_MISSILE, SPELL_MON_TO_MON);
+        bolt(m_idx, y, x, GF_MISSILE, dam, MS_MAGIC_MISSILE, MONSTER_TO_MONSTER);
 
                break;
 
@@ -2363,7 +1683,7 @@ bool monst_spell_monst(int m_idx)
                }
 
                dam = 20; /* Dummy power */
-        breath(y, x, m_idx,GF_HAND_DOOM, dam, 0, FALSE, MS_HAND_DOOM, SPELL_MON_TO_MON);
+        breath(y, x, m_idx,GF_HAND_DOOM, dam, 0, FALSE, MS_HAND_DOOM, MONSTER_TO_MONSTER);
 
                break;
 
@@ -2752,7 +2072,7 @@ bool monst_spell_monst(int m_idx)
                }
 
                dam = (r_ptr->flags2 & RF2_POWERFUL) ? (randint1(rlev * 2) + 180) : (randint1(rlev * 3 / 2) + 120);
-               beam(m_idx, y, x, GF_PSY_SPEAR, dam, MS_PSY_SPEAR, SPELL_MON_TO_MON);
+               beam(m_idx, y, x, GF_PSY_SPEAR, dam, MS_PSY_SPEAR, MONSTER_TO_MONSTER);
                break;
 
        /* RF6_DARKNESS */
index ec0d74a..978683b 100644 (file)
@@ -41,28 +41,6 @@ int monster_level_idx(int m_idx)
     return rlev;
 }
 
-int spell_core(int SPELL_NUM, int hp, int y, int x, int m_idx, int SPELL_TYPE)
-{
-    int dam;
-
-    monster_type    *m_ptr = &m_list[m_idx];
-    monster_race    *r_ptr = &r_info[m_ptr->r_idx];
-    bool learnable = spell_learnable(m_idx);
-
-    switch (SPELL_NUM)
-    {
-    case RF4_ROCKET:
-        dam = (hp / 4) > 800 ? 800 : (hp / 4);
-        breath(y, x, m_idx, GF_ROCKET, dam, 2, FALSE, MS_ROCKET, SPELL_TYPE);
-        if (SPELL_TYPE == SPELL_MON_TO_PLAYER)
-        {
-            update_smart_learn(m_idx, DRS_SHARD);
-        }
-        break;
-    }
-    return dam;
-}
-
 void MP_spell_RF4_SHRIEK(int m_idx)
 {
     cptr m_name = monster_name(m_idx);
@@ -133,25 +111,36 @@ void MM_spell_RF4_DISPEL(int m_idx, int t_idx)
     dispel_monster_status(t_idx);
 }
 
+int spell_RF4_ROCKET(int y, int x, int m_idx, int TARGET_TYPE)
+{
+    int dam;
+    monster_type    *m_ptr = &m_list[m_idx];
+
+    dam = (m_ptr->hp / 4) > 800 ? 800 : (m_ptr->hp / 4);
+    breath(y, x, m_idx, GF_ROCKET, dam, 2, FALSE, MS_ROCKET, TARGET_TYPE);
+    if (TARGET_TYPE == MONSTER_TO_PLAYER)
+    {
+        update_smart_learn(m_idx, DRS_SHARD);
+    }
+    return dam;
+}
 
 int MP_spell_RF4_ROCKET(int y, int x, int m_idx)
 {
     cptr m_name = monster_name(m_idx);
-    monster_type    *m_ptr = &m_list[m_idx];
     disturb(1, 1);
     if (p_ptr->blind)
         msg_format(_("%^s¤¬²¿¤«¤ò¼Í¤Ã¤¿¡£", "%^s shoots something."), m_name);
     else
         msg_format(_("%^s¤¬¥í¥±¥Ã¥È¤òȯ¼Í¤·¤¿¡£", "%^s fires a rocket."), m_name);
 
-    return spell_core(RF4_ROCKET, m_ptr->hp, y, x, m_idx, SPELL_MON_TO_PLAYER);
+    return spell_RF4_ROCKET(y, x, m_idx, MONSTER_TO_PLAYER);
 }
 
 int MM_spell_RF4_ROCKET(int y, int x, int m_idx, int t_idx)
 {
     cptr m_name = monster_name(m_idx);
     cptr t_name = monster_name(t_idx);
-    monster_type    *m_ptr = &m_list[m_idx];
 
     bool known = monster_near_player(m_idx, t_idx);
     bool see_either = see_monster(m_idx) || see_monster(t_idx);
@@ -175,174 +164,211 @@ int MM_spell_RF4_ROCKET(int y, int x, int m_idx, int t_idx)
             mon_fight = TRUE;
         }
     }
-    return spell_core(RF4_ROCKET, m_ptr->hp, y, x, m_idx, SPELL_MON_TO_MON);
+    return spell_RF4_ROCKET(y, x, m_idx, MONSTER_TO_MONSTER);
 }
 
-int spell_RF4_SHOOT(int y, int x, int m_idx)
+int spell_RF4_SHOOT(int y, int x, int m_idx, int TARGET_TYPE)
 {
-    bool learnable = spell_learnable(m_idx);
-    cptr m_name = monster_name(m_idx);
+    int dam;
     monster_type    *m_ptr = &m_list[m_idx];
     monster_race    *r_ptr = &r_info[m_ptr->r_idx];
 
-    int dam;
+    dam = damroll(r_ptr->blow[0].d_dice, r_ptr->blow[0].d_side);
+    bolt(m_idx, y, x, GF_ARROW, dam, MS_SHOOT, TARGET_TYPE);
+    sound(SOUND_SHOOT);
+
+    return dam;
+}
+
+int MP_spell_RF4_SHOOT(int y, int x, int m_idx)
+{
+    bool learnable = spell_learnable(m_idx);
+    cptr m_name = monster_name(m_idx);
+
     disturb(1, 1);
     if (p_ptr->blind)
         msg_format(_("%^s¤¬´ñ̯¤Ê²»¤òȯ¤·¤¿¡£", "%^s makes a strange noise."), m_name);
     else
         msg_format(_("%^s¤¬Ìð¤òÊü¤Ã¤¿¡£", "%^s fires an arrow."), m_name);
 
-    dam = damroll(r_ptr->blow[0].d_dice, r_ptr->blow[0].d_side);
-    bolt(m_idx, y, x, GF_ARROW, dam, MS_SHOOT, SPELL_MON_TO_PLAYER);
-    update_smart_learn(m_idx, DRS_REFLECT);
-    return dam;
+    return spell_RF4_SHOOT(y, x, m_idx, MONSTER_TO_PLAYER);
 }
 
-int spell_RF4_BREATH(int GF_TYPE, int y, int x, int m_idx)
+int MM_spell_RF4_SHOOT(int y, int x, int m_idx, int t_idx)
+{
+    cptr m_name = monster_name(m_idx);
+    cptr t_name = monster_name(t_idx);
+    bool known = monster_near_player(m_idx, t_idx);
+    bool see_either = see_monster(m_idx) || see_monster(t_idx);
+    if (known)
+    {
+        if (see_either)
+        {
+            if (p_ptr->blind)
+            {
+                msg_format(_("%^s¤¬´ñ̯¤Ê²»¤òȯ¤·¤¿¡£", "%^s makes a strange noise."), m_name);
+            }
+            else
+            {
+                msg_format(_("%^s¤¬%s¤ËÌð¤òÊü¤Ã¤¿¡£", "%^s fires an arrow at %s."), m_name, t_name);
+            }
+        }
+        else
+        {
+            mon_fight = TRUE;
+        }
+    }
+    return spell_RF4_SHOOT(y, x, m_idx, MONSTER_TO_MONSTER);
+}
+
+int spell_RF4_BREATH(int GF_TYPE, int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
 {
     bool learnable = spell_learnable(m_idx);
     int dam, ms_type, drs_type;
     cptr type_s;
     bool smart_learn = TRUE;
     cptr m_name = monster_name(m_idx);
+    cptr t_name = monster_name(t_idx);
     monster_type    *m_ptr = &m_list[m_idx];
+    bool known = monster_near_player(m_idx, t_idx);
+    bool see_either = see_monster(m_idx) || see_monster(t_idx);
 
     switch (GF_TYPE)
     {
-        case GF_ACID:
-            dam = ((m_ptr->hp / 3) > 1600 ? 1600 : (m_ptr->hp / 3));
-            type_s = _("»À", "acid");
-            ms_type = MS_BR_ACID;
-            drs_type = DRS_ACID;
-            break;
-        case GF_ELEC:
-            dam = ((m_ptr->hp / 3) > 1600 ? 1600 : (m_ptr->hp / 3));
-            type_s = _("°ðºÊ", "lightning");
-            ms_type = MS_BR_ELEC;
-            drs_type = DRS_ELEC;
-            break;
-        case GF_FIRE:
-            dam = ((m_ptr->hp / 3) > 1600 ? 1600 : (m_ptr->hp / 3));
-            type_s = _("²Ð±ê", "fire");
-            ms_type = MS_BR_FIRE;
-            drs_type = DRS_FIRE;
-            break;
-        case GF_COLD:
-            dam = ((m_ptr->hp / 3) > 1600 ? 1600 : (m_ptr->hp / 3));
-            type_s = _("Î䵤", "frost");
-            ms_type = MS_BR_COLD;
-            drs_type = DRS_COLD;
-            break;
-        case GF_POIS:
-            dam = ((m_ptr->hp / 3) > 800 ? 800 : (m_ptr->hp / 3));
-            type_s = _("¥¬¥¹", "gas");
-            ms_type = MS_BR_POIS;
-            drs_type = DRS_POIS;
-            break;
-        case GF_NETHER:
-            dam = ((m_ptr->hp / 6) > 550 ? 550 : (m_ptr->hp / 6));
-            type_s = _("ÃϹö", "nether");
-            ms_type = MS_BR_NETHER;
-            drs_type = DRS_NETH;
-            break;
-        case GF_LITE:
-            dam = ((m_ptr->hp / 6) > 400 ? 400 : (m_ptr->hp / 6));
-            type_s = _("Á®¸÷", "light");
-            ms_type = MS_BR_LITE;
-            drs_type = DRS_LITE;
-            break;
-        case GF_DARK:
-            dam = ((m_ptr->hp / 6) > 400 ? 400 : (m_ptr->hp / 6));
-            type_s = _("°Å¹õ", "darkness");
-            ms_type = MS_BR_DARK;
-            drs_type = DRS_DARK;
-            break;
-        case GF_CONFUSION:
-            dam = ((m_ptr->hp / 6) > 450 ? 450 : (m_ptr->hp / 6));
-            type_s = _("º®Íð", "confusion");
-            ms_type = MS_BR_CONF;
-            drs_type = DRS_CONF;
-            break;
-        case GF_SOUND:
-            dam = ((m_ptr->hp / 6) > 450 ? 450 : (m_ptr->hp / 6));
-            type_s = _("¹ì²»", "sound");
-            ms_type = MS_BR_SOUND;
-            drs_type = DRS_SOUND;
-            break;
-        case GF_CHAOS:
-            dam = ((m_ptr->hp / 6) > 600 ? 600 : (m_ptr->hp / 6));
-            type_s = _("¥«¥ª¥¹", "chaos");
-            ms_type = MS_BR_CHAOS;
-            drs_type = DRS_CHAOS;
-            break;
-        case GF_DISENCHANT:
-            dam = ((m_ptr->hp / 6) > 500 ? 500 : (m_ptr->hp / 6));
-            type_s = _("Îô²½", "disenchantment");
-            ms_type = MS_BR_DISEN;
-            drs_type = DRS_DISEN;
-            break;
-        case GF_NEXUS:
-            dam = ((m_ptr->hp / 3) > 250 ? 250 : (m_ptr->hp / 3));
-            type_s = _("°ø²Ìº®Íð", "nexus");
-            ms_type = MS_BR_NEXUS;
-            drs_type = DRS_NEXUS;
-            break;
-        case GF_TIME:
-            dam = ((m_ptr->hp / 3) > 150 ? 150 : (m_ptr->hp / 3));
-            type_s = _("»þ´ÖµÕž", "time");
-            ms_type = MS_BR_TIME;
-            smart_learn = FALSE;
-            break;
-        case GF_INERTIA:
-            dam = ((m_ptr->hp / 6) > 200 ? 200 : (m_ptr->hp / 6));
-            type_s = _("ÃÙÆß", "inertia");
-            ms_type = MS_BR_INERTIA;
-            smart_learn = FALSE;
-            break;
-        case GF_GRAVITY:
-            dam = ((m_ptr->hp / 3) > 200 ? 200 : (m_ptr->hp / 3));
-            type_s = _("½ÅÎÏ", "gravity");
-            ms_type = MS_BR_GRAVITY;
-            smart_learn = FALSE;
-            break;
-        case GF_SHARDS:
-            dam = ((m_ptr->hp / 6) > 500 ? 500 : (m_ptr->hp / 6));
-            type_s = _("ÇËÊÒ", "shards");
-            ms_type = MS_BR_SHARDS;
-            drs_type = DRS_SHARD;
-            break;
-        case GF_PLASMA:
-            dam = ((m_ptr->hp / 6) > 150 ? 150 : (m_ptr->hp / 6));
-            type_s = _("¥×¥é¥º¥Þ", "plasma");
-            ms_type = MS_BR_PLASMA;
-            smart_learn = FALSE;
-            break;
-        case GF_FORCE:
-            dam = ((m_ptr->hp / 6) > 200 ? 200 : (m_ptr->hp / 6));
-            type_s = _("¥Õ¥©¡¼¥¹", "force");
-            ms_type = MS_BR_FORCE;
-            smart_learn = FALSE;
-            break;
-        case GF_MANA:
-            dam = ((m_ptr->hp / 3) > 250 ? 250 : (m_ptr->hp / 3));
-            type_s = _("ËâÎÏ", "mana");
-            ms_type = MS_BR_MANA;
-            smart_learn = FALSE;
-            break;
-        case GF_NUKE:
-            dam = ((m_ptr->hp / 3) > 800 ? 800 : (m_ptr->hp / 3));
-            type_s = _("Êü¼ÍÀ­ÇÑ´þʪ", "toxic waste");
-            ms_type = MS_BR_NUKE;
-            drs_type = DRS_POIS;
-            break;
-        case GF_DISINTEGRATE:
-            dam = ((m_ptr->hp / 6) > 150 ? 150 : (m_ptr->hp / 6));
-            type_s = _("ʬ²ò", "disintegration");
-            ms_type = MS_BR_DISI;
-            smart_learn = FALSE;
-            break;
-        default:
-            break;
+    case GF_ACID:
+        dam = ((m_ptr->hp / 3) > 1600 ? 1600 : (m_ptr->hp / 3));
+        type_s = _("»À", "acid");
+        ms_type = MS_BR_ACID;
+        drs_type = DRS_ACID;
+        break;
+    case GF_ELEC:
+        dam = ((m_ptr->hp / 3) > 1600 ? 1600 : (m_ptr->hp / 3));
+        type_s = _("°ðºÊ", "lightning");
+        ms_type = MS_BR_ELEC;
+        drs_type = DRS_ELEC;
+        break;
+    case GF_FIRE:
+        dam = ((m_ptr->hp / 3) > 1600 ? 1600 : (m_ptr->hp / 3));
+        type_s = _("²Ð±ê", "fire");
+        ms_type = MS_BR_FIRE;
+        drs_type = DRS_FIRE;
+        break;
+    case GF_COLD:
+        dam = ((m_ptr->hp / 3) > 1600 ? 1600 : (m_ptr->hp / 3));
+        type_s = _("Î䵤", "frost");
+        ms_type = MS_BR_COLD;
+        drs_type = DRS_COLD;
+        break;
+    case GF_POIS:
+        dam = ((m_ptr->hp / 3) > 800 ? 800 : (m_ptr->hp / 3));
+        type_s = _("¥¬¥¹", "gas");
+        ms_type = MS_BR_POIS;
+        drs_type = DRS_POIS;
+        break;
+    case GF_NETHER:
+        dam = ((m_ptr->hp / 6) > 550 ? 550 : (m_ptr->hp / 6));
+        type_s = _("ÃϹö", "nether");
+        ms_type = MS_BR_NETHER;
+        drs_type = DRS_NETH;
+        break;
+    case GF_LITE:
+        dam = ((m_ptr->hp / 6) > 400 ? 400 : (m_ptr->hp / 6));
+        type_s = _("Á®¸÷", "light");
+        ms_type = MS_BR_LITE;
+        drs_type = DRS_LITE;
+        break;
+    case GF_DARK:
+        dam = ((m_ptr->hp / 6) > 400 ? 400 : (m_ptr->hp / 6));
+        type_s = _("°Å¹õ", "darkness");
+        ms_type = MS_BR_DARK;
+        drs_type = DRS_DARK;
+        break;
+    case GF_CONFUSION:
+        dam = ((m_ptr->hp / 6) > 450 ? 450 : (m_ptr->hp / 6));
+        type_s = _("º®Íð", "confusion");
+        ms_type = MS_BR_CONF;
+        drs_type = DRS_CONF;
+        break;
+    case GF_SOUND:
+        dam = ((m_ptr->hp / 6) > 450 ? 450 : (m_ptr->hp / 6));
+        type_s = _("¹ì²»", "sound");
+        ms_type = MS_BR_SOUND;
+        drs_type = DRS_SOUND;
+        break;
+    case GF_CHAOS:
+        dam = ((m_ptr->hp / 6) > 600 ? 600 : (m_ptr->hp / 6));
+        type_s = _("¥«¥ª¥¹", "chaos");
+        ms_type = MS_BR_CHAOS;
+        drs_type = DRS_CHAOS;
+        break;
+    case GF_DISENCHANT:
+        dam = ((m_ptr->hp / 6) > 500 ? 500 : (m_ptr->hp / 6));
+        type_s = _("Îô²½", "disenchantment");
+        ms_type = MS_BR_DISEN;
+        drs_type = DRS_DISEN;
+        break;
+    case GF_NEXUS:
+        dam = ((m_ptr->hp / 3) > 250 ? 250 : (m_ptr->hp / 3));
+        type_s = _("°ø²Ìº®Íð", "nexus");
+        ms_type = MS_BR_NEXUS;
+        drs_type = DRS_NEXUS;
+        break;
+    case GF_TIME:
+        dam = ((m_ptr->hp / 3) > 150 ? 150 : (m_ptr->hp / 3));
+        type_s = _("»þ´ÖµÕž", "time");
+        ms_type = MS_BR_TIME;
+        smart_learn = FALSE;
+        break;
+    case GF_INERTIA:
+        dam = ((m_ptr->hp / 6) > 200 ? 200 : (m_ptr->hp / 6));
+        type_s = _("ÃÙÆß", "inertia");
+        ms_type = MS_BR_INERTIA;
+        smart_learn = FALSE;
+        break;
+    case GF_GRAVITY:
+        dam = ((m_ptr->hp / 3) > 200 ? 200 : (m_ptr->hp / 3));
+        type_s = _("½ÅÎÏ", "gravity");
+        ms_type = MS_BR_GRAVITY;
+        smart_learn = FALSE;
+        break;
+    case GF_SHARDS:
+        dam = ((m_ptr->hp / 6) > 500 ? 500 : (m_ptr->hp / 6));
+        type_s = _("ÇËÊÒ", "shards");
+        ms_type = MS_BR_SHARDS;
+        drs_type = DRS_SHARD;
+        break;
+    case GF_PLASMA:
+        dam = ((m_ptr->hp / 6) > 150 ? 150 : (m_ptr->hp / 6));
+        type_s = _("¥×¥é¥º¥Þ", "plasma");
+        ms_type = MS_BR_PLASMA;
+        smart_learn = FALSE;
+        break;
+    case GF_FORCE:
+        dam = ((m_ptr->hp / 6) > 200 ? 200 : (m_ptr->hp / 6));
+        type_s = _("¥Õ¥©¡¼¥¹", "force");
+        ms_type = MS_BR_FORCE;
+        smart_learn = FALSE;
+        break;
+    case GF_MANA:
+        dam = ((m_ptr->hp / 3) > 250 ? 250 : (m_ptr->hp / 3));
+        type_s = _("ËâÎÏ", "mana");
+        ms_type = MS_BR_MANA;
+        smart_learn = FALSE;
+        break;
+    case GF_NUKE:
+        dam = ((m_ptr->hp / 3) > 800 ? 800 : (m_ptr->hp / 3));
+        type_s = _("Êü¼ÍÀ­ÇÑ´þʪ", "toxic waste");
+        ms_type = MS_BR_NUKE;
+        drs_type = DRS_POIS;
+        break;
+    case GF_DISINTEGRATE:
+        dam = ((m_ptr->hp / 6) > 150 ? 150 : (m_ptr->hp / 6));
+        type_s = _("ʬ²ò", "disintegration");
+        ms_type = MS_BR_DISI;
+        smart_learn = FALSE;
+        break;
+    default:
+        break;
     }
 
     disturb(1, 1);
@@ -356,18 +382,43 @@ int spell_RF4_BREATH(int GF_TYPE, int y, int x, int m_idx)
     }
     else if (p_ptr->blind)
     {
+        if (TARGET_TYPE == MONSTER_TO_PLAYER || 
+            ((TARGET_TYPE == MONSTER_TO_MONSTER) && known && see_either))
         msg_format(_("%^s¤¬²¿¤«¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "%^s breathes."), m_name);
     }
     else
     {
-        msg_format(_("%^s¤¬%^s¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "%^s breathes %^s."), m_name, type_s);
+        if (TARGET_TYPE == MONSTER_TO_PLAYER)
+        {
+            msg_format(_("%^s¤¬%^s¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "%^s breathes %^s."), m_name, type_s);
+        }
+        else if ((TARGET_TYPE == MONSTER_TO_MONSTER) && known && see_either)
+        {
+            _(msg_format("%^s¤¬%^s¤Ë%^s¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", m_name, t_name, type_s),
+              msg_format("%^s breathes %^s at %^s.", m_name, type_s, t_name));
+        }
     }
 
-    breath(y, x, m_idx, GF_TYPE, dam, 0, TRUE, ms_type, SPELL_MON_TO_PLAYER);
-    if (smart_learn) update_smart_learn(m_idx, drs_type);
+    if (known && !see_either)
+        mon_fight = TRUE;
+
+    sound(SOUND_BREATH);
+    breath(y, x, m_idx, GF_TYPE, dam, 0, TRUE, ms_type, TARGET_TYPE);
+    if (smart_learn && TARGET_TYPE == MONSTER_TO_PLAYER)
+        update_smart_learn(m_idx, drs_type);
     return dam;
 }
 
+int MP_spell_RF4_BREATH(int GF_TYPE, int y, int x, int m_idx)
+{
+    return spell_RF4_BREATH(GF_TYPE, y, x, m_idx, 0, MONSTER_TO_PLAYER);
+}
+
+int MM_spell_RF4_BREATH(int GF_TYPE, int y, int x, int m_idx, int t_idx)
+{
+    return spell_RF4_BREATH(GF_TYPE, y, x, m_idx, t_idx, MONSTER_TO_MONSTER);
+}
+
 int spell_RF4_BA_CHAO(int y, int x, int m_idx)
 {
     bool learnable = spell_learnable(m_idx);
@@ -386,7 +437,7 @@ int spell_RF4_BA_CHAO(int y, int x, int m_idx)
     
     dam = ((r_ptr->flags2 & RF2_POWERFUL) ? (rlev * 3) : (rlev * 2)) + damroll(10, 10);
 
-    breath(y, x, m_idx, GF_CHAOS, dam, 4, FALSE, MS_BALL_CHAOS, SPELL_MON_TO_PLAYER);
+    breath(y, x, m_idx, GF_CHAOS, dam, 4, FALSE, MS_BALL_CHAOS, MONSTER_TO_PLAYER);
     update_smart_learn(m_idx, DRS_CHAOS);
     return dam;
 }
@@ -408,7 +459,7 @@ int spell_RF4_BA_NUKE(int y, int x, int m_idx)
     
     dam = (rlev + damroll(10, 6)) * ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 1);
 
-    breath(y, x, m_idx, GF_NUKE, dam, 2, FALSE, MS_BALL_NUKE, SPELL_MON_TO_PLAYER);
+    breath(y, x, m_idx, GF_NUKE, dam, 2, FALSE, MS_BALL_NUKE, MONSTER_TO_PLAYER);
     update_smart_learn(m_idx, DRS_POIS);
     return dam;
 }
@@ -438,7 +489,7 @@ int spell_RF5_BA_ACID(int y, int x, int m_idx)
         rad = 2;
         dam = (randint1(rlev * 3) + 15);
     }
-    breath(y, x, m_idx, GF_ACID, dam, rad, FALSE, MS_BALL_ACID, SPELL_MON_TO_PLAYER);
+    breath(y, x, m_idx, GF_ACID, dam, rad, FALSE, MS_BALL_ACID, MONSTER_TO_PLAYER);
     update_smart_learn(m_idx, DRS_ACID);
     return dam;
 }
@@ -468,7 +519,7 @@ int spell_RF5_BA_ELEC(int y, int x, int m_idx)
         rad = 2;
         dam = (randint1(rlev * 3 / 2) + 8);
     }
-    breath(y, x, m_idx, GF_ELEC, dam, rad, FALSE, MS_BALL_ELEC, SPELL_MON_TO_PLAYER);
+    breath(y, x, m_idx, GF_ELEC, dam, rad, FALSE, MS_BALL_ELEC, MONSTER_TO_PLAYER);
     update_smart_learn(m_idx, DRS_ELEC);
     return dam;
 }
@@ -508,7 +559,7 @@ int spell_RF5_BA_FIRE(int y, int x, int m_idx)
         rad = 2;
         dam = (randint1(rlev * 7 / 2) + 10);
     }
-    breath(y, x, m_idx, GF_FIRE, dam, rad, FALSE, MS_BALL_FIRE, SPELL_MON_TO_PLAYER);
+    breath(y, x, m_idx, GF_FIRE, dam, rad, FALSE, MS_BALL_FIRE, MONSTER_TO_PLAYER);
     update_smart_learn(m_idx, DRS_FIRE);
     return dam;
 }
@@ -538,7 +589,7 @@ int spell_RF5_BA_COLD(int y, int x, int m_idx)
         rad = 2;
         dam = (randint1(rlev * 3 / 2) + 10);
     }
-    breath(y, x, m_idx, GF_COLD, dam, rad, FALSE, MS_BALL_COLD, SPELL_MON_TO_PLAYER);
+    breath(y, x, m_idx, GF_COLD, dam, rad, FALSE, MS_BALL_COLD, MONSTER_TO_PLAYER);
     update_smart_learn(m_idx, DRS_COLD);
     return dam;
 }
@@ -559,7 +610,7 @@ int spell_RF5_BA_POIS(int y, int x, int m_idx)
         msg_format(_("%^s¤¬°­½­±À¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a stinking cloud."), m_name);
 
     dam = damroll(12, 2) * ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 1);
-    breath(y, x, m_idx, GF_POIS, dam, 2, FALSE, MS_BALL_POIS, SPELL_MON_TO_PLAYER);
+    breath(y, x, m_idx, GF_POIS, dam, 2, FALSE, MS_BALL_POIS, MONSTER_TO_PLAYER);
     update_smart_learn(m_idx, DRS_POIS);
     return dam;
 }
@@ -579,7 +630,7 @@ int spell_RF5_BA_NETH(int y, int x, int m_idx)
         msg_format(_("%^s¤¬ÃϹöµå¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a nether ball."), m_name);
 
     dam = 50 + damroll(10, 10) + (rlev * ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 1));
-    breath(y, x, m_idx, GF_NETHER, dam, 2, FALSE, MS_BALL_NETHER, SPELL_MON_TO_PLAYER);
+    breath(y, x, m_idx, GF_NETHER, dam, 2, FALSE, MS_BALL_NETHER, MONSTER_TO_PLAYER);
     update_smart_learn(m_idx, DRS_NETH);
     return dam;
 }
@@ -602,7 +653,7 @@ int spell_RF5_BA_WATE(int y, int x, int m_idx)
     msg_print(_("¤¢¤Ê¤¿¤Ï±²´¬¤­¤Ë°û¤ß¹þ¤Þ¤ì¤¿¡£", "You are engulfed in a whirlpool."));
 
     dam = ((r_ptr->flags2 & RF2_POWERFUL) ? randint1(rlev * 3) : randint1(rlev * 2)) + 50;
-    breath(y, x, m_idx, GF_WATER, dam, 4, FALSE, MS_BALL_WATER, SPELL_MON_TO_PLAYER);
+    breath(y, x, m_idx, GF_WATER, dam, 4, FALSE, MS_BALL_WATER, MONSTER_TO_PLAYER);
     return dam;
 }
 
@@ -620,7 +671,7 @@ int spell_RF5_BA_MANA(int y, int x, int m_idx)
         msg_format(_("%^s¤¬ËâÎϤÎÍò¤Î¼öʸ¤òÇ°¤¸¤¿¡£", "%^s invokes a mana storm."), m_name);
 
     dam = (rlev * 4) + 50 + damroll(10, 10);
-    breath(y, x, m_idx, GF_MANA, dam, 4, FALSE, MS_BALL_MANA, SPELL_MON_TO_PLAYER);
+    breath(y, x, m_idx, GF_MANA, dam, 4, FALSE, MS_BALL_MANA, MONSTER_TO_PLAYER);
     return dam;
 }
 
@@ -639,7 +690,7 @@ int spell_RF5_BA_DARK(int y, int x, int m_idx)
         msg_format(_("%^s¤¬°Å¹õ¤ÎÍò¤Î¼öʸ¤òÇ°¤¸¤¿¡£", "%^s invokes a darkness storm."), m_name);
 
     dam = (rlev * 4) + 50 + damroll(10, 10);
-    breath(y, x, m_idx, GF_DARK, dam, 4, FALSE, MS_BALL_DARK, SPELL_MON_TO_PLAYER);
+    breath(y, x, m_idx, GF_DARK, dam, 4, FALSE, MS_BALL_DARK, MONSTER_TO_PLAYER);
     update_smart_learn(m_idx, DRS_DARK);
     return dam;
 }
@@ -652,7 +703,7 @@ int spell_RF5_DRAIN_MANA(int y, int x, int m_idx)
     disturb(1, 1);
 
     dam = (randint1(rlev) / 2) + 1;
-    breath(y, x, m_idx, GF_DRAIN_MANA, dam, 0, FALSE, MS_DRAIN_MANA, SPELL_MON_TO_PLAYER);
+    breath(y, x, m_idx, GF_DRAIN_MANA, dam, 0, FALSE, MS_DRAIN_MANA, MONSTER_TO_PLAYER);
     update_smart_learn(m_idx, DRS_MANA);
     return dam;
 }
@@ -671,7 +722,7 @@ int spell_RF5_MIND_BLAST(int y, int x, int m_idx)
         msg_format(_("%^s¤¬¤¢¤Ê¤¿¤ÎÆ·¤ò¤¸¤Ã¤È¤Ë¤é¤ó¤Ç¤¤¤ë¡£", "%^s gazes deep into your eyes."), m_name);
 
     dam = damroll(7, 7);
-    breath(y, x, m_idx, GF_MIND_BLAST, dam, 0, FALSE, MS_MIND_BLAST, SPELL_MON_TO_PLAYER);
+    breath(y, x, m_idx, GF_MIND_BLAST, dam, 0, FALSE, MS_MIND_BLAST, MONSTER_TO_PLAYER);
     return dam;
 }
 
@@ -689,7 +740,7 @@ int spell_RF5_BRAIN_SMASH(int y, int x, int m_idx)
         msg_format(_("%^s¤¬¤¢¤Ê¤¿¤ÎÆ·¤ò¤¸¤Ã¤È¸«¤Æ¤¤¤ë¡£", "%^s looks deep into your eyes."), m_name);
 
     dam = damroll(12, 12);
-    breath(y, x, m_idx, GF_BRAIN_SMASH, dam, 0, FALSE, MS_BRAIN_SMASH, SPELL_MON_TO_PLAYER);
+    breath(y, x, m_idx, GF_BRAIN_SMASH, dam, 0, FALSE, MS_BRAIN_SMASH, MONSTER_TO_PLAYER);
     return dam;
 }
 
@@ -706,7 +757,7 @@ int spell_RF5_CAUSE_1(int y, int x, int m_idx)
         msg_format(_("%^s¤¬¤¢¤Ê¤¿¤ò»Ø¤µ¤·¤Æ¼ö¤Ã¤¿¡£", "%^s points at you and curses."), m_name);
 
     dam = damroll(3, 8);
-    breath(y, x, m_idx, GF_CAUSE_1, dam, 0, FALSE, MS_CAUSE_1, SPELL_MON_TO_PLAYER);
+    breath(y, x, m_idx, GF_CAUSE_1, dam, 0, FALSE, MS_CAUSE_1, MONSTER_TO_PLAYER);
     return dam;
 }
 
@@ -723,7 +774,7 @@ int spell_RF5_CAUSE_2(int y, int x, int m_idx)
         msg_format(_("%^s¤¬¤¢¤Ê¤¿¤ò»Ø¤µ¤·¤Æ¶²¤í¤·¤²¤Ë¼ö¤Ã¤¿¡£", "%^s points at you and curses horribly."), m_name);
 
     dam = damroll(8, 8);
-    breath(y, x, m_idx, GF_CAUSE_2, dam, 0, FALSE, MS_CAUSE_2, SPELL_MON_TO_PLAYER);
+    breath(y, x, m_idx, GF_CAUSE_2, dam, 0, FALSE, MS_CAUSE_2, MONSTER_TO_PLAYER);
     return dam;
 }
 
@@ -740,7 +791,7 @@ int spell_RF5_CAUSE_3(int y, int x, int m_idx)
         msg_format(_("%^s¤¬¤¢¤Ê¤¿¤ò»Ø¤µ¤·¤Æ¶²¤í¤·¤²¤Ë¼öʸ¤ò¾§¤¨¤¿¡ª", "%^s points at you, incanting terribly!"), m_name);
 
     dam = damroll(10, 15);
-    breath(y, x, m_idx, GF_CAUSE_3, dam, 0, FALSE, MS_CAUSE_3, SPELL_MON_TO_PLAYER);
+    breath(y, x, m_idx, GF_CAUSE_3, dam, 0, FALSE, MS_CAUSE_3, MONSTER_TO_PLAYER);
     return dam;
 }
 
@@ -758,7 +809,7 @@ int spell_RF5_CAUSE_4(int y, int x, int m_idx)
         "%^s points at you, screaming the word DIE!"), m_name);
 
     dam = damroll(15, 15);
-    breath(y, x, m_idx, GF_CAUSE_4, dam, 0, FALSE, MS_CAUSE_4, SPELL_MON_TO_PLAYER);
+    breath(y, x, m_idx, GF_CAUSE_4, dam, 0, FALSE, MS_CAUSE_4, MONSTER_TO_PLAYER);
     return dam;
 }
 
@@ -778,7 +829,7 @@ int spell_RF5_BO_ACID(int y, int x, int m_idx)
         msg_format(_("%^s¤¬¥¢¥·¥Ã¥É¡¦¥Ü¥ë¥È¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a acid bolt."), m_name);
 
     dam = (damroll(7, 8) + (rlev / 3)) * ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 1);
-    bolt(m_idx, y, x, GF_ACID, dam, MS_BOLT_ACID, SPELL_MON_TO_PLAYER);
+    bolt(m_idx, y, x, GF_ACID, dam, MS_BOLT_ACID, MONSTER_TO_PLAYER);
     update_smart_learn(m_idx, DRS_ACID);
     update_smart_learn(m_idx, DRS_REFLECT);
     return dam;
@@ -800,7 +851,7 @@ int spell_RF5_BO_ELEC(int y, int x, int m_idx)
         msg_format(_("%^s¤¬¥µ¥ó¥À¡¼¡¦¥Ü¥ë¥È¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a lightning bolt."), m_name);
 
     dam = (damroll(4, 8) + (rlev / 3)) * ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 1);
-    bolt(m_idx, y, x, GF_ELEC, dam, MS_BOLT_ELEC, SPELL_MON_TO_PLAYER);
+    bolt(m_idx, y, x, GF_ELEC, dam, MS_BOLT_ELEC, MONSTER_TO_PLAYER);
     update_smart_learn(m_idx, DRS_ELEC);
     update_smart_learn(m_idx, DRS_REFLECT);
     return dam;
@@ -822,7 +873,7 @@ int spell_RF5_BO_FIRE(int y, int x, int m_idx)
         msg_format(_("%^s¤¬¥Õ¥¡¥¤¥¢¡¦¥Ü¥ë¥È¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a fire bolt."), m_name);
 
     dam = (damroll(9, 8) + (rlev / 3)) * ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 1);
-    bolt(m_idx, y, x, GF_FIRE, dam, MS_BOLT_FIRE, SPELL_MON_TO_PLAYER);
+    bolt(m_idx, y, x, GF_FIRE, dam, MS_BOLT_FIRE, MONSTER_TO_PLAYER);
     update_smart_learn(m_idx, DRS_FIRE);
     update_smart_learn(m_idx, DRS_REFLECT);
     return dam;
@@ -844,7 +895,7 @@ int spell_RF5_BO_COLD(int y, int x, int m_idx)
         msg_format(_("%^s¤¬¥¢¥¤¥¹¡¦¥Ü¥ë¥È¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a frost bolt."), m_name);
 
     dam = (damroll(6, 8) + (rlev / 3)) * ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 1);
-    bolt(m_idx, y, x, GF_COLD, dam, MS_BOLT_COLD, SPELL_MON_TO_PLAYER);
+    bolt(m_idx, y, x, GF_COLD, dam, MS_BOLT_COLD, MONSTER_TO_PLAYER);
     update_smart_learn(m_idx, DRS_COLD);
     update_smart_learn(m_idx, DRS_REFLECT);
     return dam;
@@ -864,7 +915,7 @@ int spell_RF5_BA_LITE(int y, int x, int m_idx)
         msg_format(_("%^s¤¬¥¹¥¿¡¼¥Ð¡¼¥¹¥È¤Î¼öʸ¤òÇ°¤¸¤¿¡£", "%^s invokes a starburst."), m_name);
 
     dam = (rlev * 4) + 50 + damroll(10, 10);
-    breath(y, x, m_idx, GF_LITE, dam, 4, FALSE, MS_STARBURST, SPELL_MON_TO_PLAYER);
+    breath(y, x, m_idx, GF_LITE, dam, 4, FALSE, MS_STARBURST, MONSTER_TO_PLAYER);
     update_smart_learn(m_idx, DRS_LITE);
     return dam;
 }
@@ -886,7 +937,7 @@ int spell_RF5_BO_NETH(int y, int x, int m_idx)
         msg_format(_("%^s¤¬ÃϹö¤ÎÌð¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a nether bolt."), m_name);
 
     dam = 30 + damroll(5, 5) + (rlev * 4) / ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 3);
-    bolt(m_idx, y, x, GF_NETHER, dam, MS_BOLT_NETHER, SPELL_MON_TO_PLAYER);
+    bolt(m_idx, y, x, GF_NETHER, dam, MS_BOLT_NETHER, MONSTER_TO_PLAYER);
     update_smart_learn(m_idx, DRS_NETH);
     update_smart_learn(m_idx, DRS_REFLECT);
     return dam;
@@ -908,7 +959,7 @@ int spell_RF5_BO_WATE(int y, int x, int m_idx)
         msg_format(_("%^s¤¬¥¦¥©¡¼¥¿¡¼¡¦¥Ü¥ë¥È¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a water bolt."), m_name);
 
     dam = damroll(10, 10) + (rlev * 3 / ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 3));
-    bolt(m_idx, y, x, GF_WATER, dam, MS_BOLT_WATER, SPELL_MON_TO_PLAYER);
+    bolt(m_idx, y, x, GF_WATER, dam, MS_BOLT_WATER, MONSTER_TO_PLAYER);
     update_smart_learn(m_idx, DRS_REFLECT);
     return dam;
 }
@@ -928,7 +979,7 @@ int spell_RF5_BO_MANA(int y, int x, int m_idx)
         msg_format(_("%^s¤¬ËâÎϤÎÌð¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a mana bolt."), m_name);
 
     dam = randint1(rlev * 7 / 2) + 50;
-    bolt(m_idx, y, x, GF_MANA, dam, MS_BOLT_MANA, SPELL_MON_TO_PLAYER);
+    bolt(m_idx, y, x, GF_MANA, dam, MS_BOLT_MANA, MONSTER_TO_PLAYER);
     update_smart_learn(m_idx, DRS_REFLECT);
     return dam;
 }
@@ -949,7 +1000,7 @@ int spell_RF5_BO_PLAS(int y, int x, int m_idx)
         msg_format(_("%^s¤¬¥×¥é¥º¥Þ¡¦¥Ü¥ë¥È¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a plasma bolt."), m_name);
 
     dam = 10 + damroll(8, 7) + (rlev * 3 / ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 3));
-    bolt(m_idx, y, x, GF_PLASMA, dam, MS_BOLT_PLASMA, SPELL_MON_TO_PLAYER);
+    bolt(m_idx, y, x, GF_PLASMA, dam, MS_BOLT_PLASMA, MONSTER_TO_PLAYER);
     update_smart_learn(m_idx, DRS_REFLECT);
     return dam;
 }
@@ -969,7 +1020,7 @@ int spell_RF5_BO_ICEE(int y, int x, int m_idx)
         msg_format(_("%^s¤¬¶Ë´¨¤ÎÌð¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts an ice bolt."), m_name);
 
     dam = damroll(6, 6) + (rlev * 3 / ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 3));
-    bolt(m_idx, y, x, GF_ICE, dam, MS_BOLT_ICE, SPELL_MON_TO_PLAYER);
+    bolt(m_idx, y, x, GF_ICE, dam, MS_BOLT_ICE, MONSTER_TO_PLAYER);
     update_smart_learn(m_idx, DRS_COLD);
     update_smart_learn(m_idx, DRS_REFLECT);
     return dam;
@@ -989,7 +1040,7 @@ int spell_RF5_MISSILE(int y, int x, int m_idx)
         msg_format(_("%^s¤¬¥Þ¥¸¥Ã¥¯¡¦¥ß¥µ¥¤¥ë¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a magic missile."), m_name);
 
     dam = damroll(2, 6) + (rlev / 3);
-    bolt(m_idx, y, x, GF_MISSILE, dam, MS_MAGIC_MISSILE, SPELL_MON_TO_PLAYER);
+    bolt(m_idx, y, x, GF_MISSILE, dam, MS_MAGIC_MISSILE, MONSTER_TO_PLAYER);
     update_smart_learn(m_idx, DRS_REFLECT);
     return dam;
 }
@@ -1159,7 +1210,7 @@ int spell_RF6_HAND_DOOM(int y, int x, int m_idx)
     disturb(1, 1);
     msg_format(_("%^s¤¬<ÇËÌǤμê>¤òÊü¤Ã¤¿¡ª", "%^s invokes the Hand of Doom!"), m_name);
     dam = (((s32b)((40 + randint1(20)) * (p_ptr->chp))) / 100);
-    breath(y, x, m_idx, GF_HAND_DOOM, dam, 0, FALSE, MS_HAND_DOOM, SPELL_MON_TO_PLAYER);
+    breath(y, x, m_idx, GF_HAND_DOOM, dam, 0, FALSE, MS_HAND_DOOM, MONSTER_TO_PLAYER);
     return dam;
 }
 
@@ -1494,7 +1545,7 @@ int spell_RF6_PSY_SPEAR(int y, int x, int m_idx)
         msg_format(_("%^s¤¬¸÷¤Î·õ¤òÊü¤Ã¤¿¡£", "%^s throw a Psycho-Spear."), m_name);
 
     dam = (r_ptr->flags2 & RF2_POWERFUL) ? (randint1(rlev * 2) + 150) : (randint1(rlev * 3 / 2) + 100);
-    beam(m_idx, y, x, GF_PSY_SPEAR, dam, MS_PSY_SPEAR, SPELL_MON_TO_PLAYER);
+    beam(m_idx, y, x, GF_PSY_SPEAR, dam, MS_PSY_SPEAR, MONSTER_TO_PLAYER);
     return dam;
 }