OSDN Git Service

refactor: extract damage spells in monst_spell_monst
authordis- <dis.rogue@gmail.com>
Thu, 20 Feb 2014 08:35:53 +0000 (17:35 +0900)
committerdis- <dis.rogue@gmail.com>
Thu, 20 Feb 2014 13:16:35 +0000 (22:16 +0900)
src/externs.h
src/mspells1.c
src/mspells2.c
src/mspells4.c

index 5b9c2b3..b78a66e 100644 (file)
@@ -1584,42 +1584,40 @@ extern void set_rf_masks(s32b *f4, s32b *f5, s32b *f6, int mode);
 
 /* mspells4.c */
 extern bool spell_learnable(int m_idx);
-
-/* spells monster to player */
-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 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);
-extern int spell_RF5_BA_ELEC(int y, int x, int m_idx);
-extern int spell_RF5_BA_FIRE(int y, int x, int m_idx);
-extern int spell_RF5_BA_COLD(int y, int x, int m_idx);
-extern int spell_RF5_BA_POIS(int y, int x, int m_idx);
-extern int spell_RF5_BA_NETH(int y, int x, int m_idx);
-extern int spell_RF5_BA_WATE(int y, int x, int m_idx);
-extern int spell_RF5_BA_MANA(int y, int x, int m_idx);
-extern int spell_RF5_BA_DARK(int y, int x, int m_idx);
-extern int spell_RF5_DRAIN_MANA(int y, int x, int m_idx);
-extern int spell_RF5_MIND_BLAST(int y, int x, int m_idx);
-extern int spell_RF5_BRAIN_SMASH(int y, int x, int m_idx);
-extern int spell_RF5_CAUSE_1(int y, int x, int m_idx);
-extern int spell_RF5_CAUSE_2(int y, int x, int m_idx);
-extern int spell_RF5_CAUSE_3(int y, int x, int m_idx);
-extern int spell_RF5_CAUSE_4(int y, int x, int m_idx);
-extern int spell_RF5_BO_ACID(int y, int x, int m_idx);
-extern int spell_RF5_BO_ELEC(int y, int x, int m_idx);
-extern int spell_RF5_BO_FIRE(int y, int x, int m_idx);
-extern int spell_RF5_BO_COLD(int y, int x, int m_idx);
-extern int spell_RF5_BA_LITE(int y, int x, int m_idx);
-extern int spell_RF5_BO_NETH(int y, int x, int m_idx);
-extern int spell_RF5_BO_WATE(int y, int x, int m_idx);
-extern int spell_RF5_BO_MANA(int y, int x, int m_idx);
-extern int spell_RF5_BO_PLAS(int y, int x, int m_idx);
-extern int spell_RF5_BO_ICEE(int y, int x, int m_idx);
-extern int spell_RF5_MISSILE(int y, int x, int m_idx);
+extern void spell_RF4_SHRIEK(int m_idx, int t_idx, int TARGET_TYPE);;
+extern void spell_RF4_DISPEL(int m_idx, int t_idx, int TARGET_TYPE);
+extern int spell_RF4_ROCKET(int y, int x, int m_idx, int t_idx, int TARGET_TYPE);
+extern int spell_RF4_SHOOT(int y, int x, int m_idx, int t_idx, int TARGET_TYPE);
+extern int spell_RF4_BREATH(int GF_TYPE, int y, int x, int m_idx, int t_idx, int TARGET_TYPE);
+extern int spell_RF4_BA_NUKE(int y, int x, int m_idx, int t_idx, int TARGET_TYPE);
+extern int spell_RF4_BA_CHAO(int y, int x, int m_idx, int t_idx, int TARGET_TYPE);
+extern int spell_RF5_BA_ACID(int y, int x, int m_idx, int t_idx, int TARGET_TYPE);
+extern int spell_RF5_BA_ELEC(int y, int x, int m_idx, int t_idx, int TARGET_TYPE);
+extern int spell_RF5_BA_FIRE(int y, int x, int m_idx, int t_idx, int TARGET_TYPE);
+extern int spell_RF5_BA_COLD(int y, int x, int m_idx, int t_idx, int TARGET_TYPE);
+extern int spell_RF5_BA_POIS(int y, int x, int m_idx, int t_idx, int TARGET_TYPE);
+extern int spell_RF5_BA_NETH(int y, int x, int m_idx, int t_idx, int TARGET_TYPE);
+extern int spell_RF5_BA_WATE(int y, int x, int m_idx, int t_idx, int TARGET_TYPE);
+extern int spell_RF5_BA_MANA(int y, int x, int m_idx, int t_idx, int TARGET_TYPE);
+extern int spell_RF5_BA_DARK(int y, int x, int m_idx, int t_idx, int TARGET_TYPE);
+extern int spell_RF5_DRAIN_MANA(int y, int x, int m_idx, int t_idx, int TARGET_TYPE);
+extern int spell_RF5_MIND_BLAST(int y, int x, int m_idx, int t_idx, int TARGET_TYPE);
+extern int spell_RF5_BRAIN_SMASH(int y, int x, int m_idx, int t_idx, int TARGET_TYPE);
+extern int spell_RF5_CAUSE_1(int y, int x, int m_idx, int t_idx, int TARGET_TYPE);
+extern int spell_RF5_CAUSE_2(int y, int x, int m_idx, int t_idx, int TARGET_TYPE);
+extern int spell_RF5_CAUSE_3(int y, int x, int m_idx, int t_idx, int TARGET_TYPE);
+extern int spell_RF5_CAUSE_4(int y, int x, int m_idx, int t_idx, int TARGET_TYPE);
+extern int spell_RF5_BO_ACID(int y, int x, int m_idx, int t_idx, int TARGET_TYPE);
+extern int spell_RF5_BO_ELEC(int y, int x, int m_idx, int t_idx, int TARGET_TYPE);
+extern int spell_RF5_BO_FIRE(int y, int x, int m_idx, int t_idx, int TARGET_TYPE);
+extern int spell_RF5_BO_COLD(int y, int x, int m_idx, int t_idx, int TARGET_TYPE);
+extern int spell_RF5_BA_LITE(int y, int x, int m_idx, int t_idx, int TARGET_TYPE);
+extern int spell_RF5_BO_NETH(int y, int x, int m_idx, int t_idx, int TARGET_TYPE);
+extern int spell_RF5_BO_WATE(int y, int x, int m_idx, int t_idx, int TARGET_TYPE);
+extern int spell_RF5_BO_MANA(int y, int x, int m_idx, int t_idx, int TARGET_TYPE);
+extern int spell_RF5_BO_PLAS(int y, int x, int m_idx, int t_idx, int TARGET_TYPE);
+extern int spell_RF5_BO_ICEE(int y, int x, int m_idx, int t_idx, int TARGET_TYPE);
+extern int spell_RF5_MISSILE(int y, int x, int m_idx, int t_idx, int TARGET_TYPE);
 extern void spell_RF5_SCARE(int y, int x, int m_idx);
 extern void spell_RF5_BLIND(int y, int x, int m_idx);
 extern void spell_RF5_CONF(int y, int x, int m_idx);
@@ -1658,13 +1656,6 @@ extern void spell_RF6_S_HI_DRAGON(int y, int x, int m_idx);
 extern void spell_RF6_S_AMBERITES(int y, int x, int m_idx);
 extern void spell_RF6_S_UNIQUE(int y, int x, int m_idx);
 
-/* spells monster to monster */
-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);
 extern void do_cmd_hissatsu(void);
index e8b26c9..a83758f 100644 (file)
@@ -1874,65 +1874,65 @@ bool make_attack_spell(int m_idx)
        /* Cast the spell. */
        switch (thrown_spell)
        {
-        case 96 + 0:   MP_spell_RF4_SHRIEK(m_idx); break;  /* RF4_SHRIEK */
+        case 96 + 0:   spell_RF4_SHRIEK(m_idx, 0, MONSTER_TO_PLAYER); break;  /* RF4_SHRIEK */
         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 = MP_spell_RF4_SHOOT(y, x, m_idx); break;    /* RF4_SHOOT */
+        case 96 + 2:   spell_RF4_DISPEL(m_idx, 0, MONSTER_TO_PLAYER); break;  /* RF4_DISPEL */
+        case 96 + 3:   dam = spell_RF4_ROCKET(y, x, m_idx, 0, MONSTER_TO_PLAYER); break;   /* RF4_ROCKET */
+        case 96 + 4:   dam = spell_RF4_SHOOT(y, x, m_idx, 0, MONSTER_TO_PLAYER); 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 = 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 = 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 = 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 */
-        case 128 + 3:  dam = spell_RF5_BA_COLD(y, x, m_idx); break;    /* RF5_BA_COLD */
-        case 128 + 4:  dam = spell_RF5_BA_POIS(y, x, m_idx); break;    /* RF5_BA_POIS */
-        case 128 + 5:  dam = spell_RF5_BA_NETH(y, x, m_idx); break;    /* RF5_BA_NETH */
-        case 128 + 6:  dam = spell_RF5_BA_WATE(y, x, m_idx); break;    /* RF5_BA_WATE */
-        case 128 + 7:  dam = spell_RF5_BA_MANA(y, x, m_idx); break;    /* RF5_BA_MANA */
-        case 128 + 8:  dam = spell_RF5_BA_DARK(y, x, m_idx); break;    /* RF5_BA_DARK */
-        case 128 + 9:  dam = spell_RF5_DRAIN_MANA(y, x, m_idx); break;    /* RF5_DRAIN_MANA */
-        case 128 + 10: dam = spell_RF5_MIND_BLAST(y, x, m_idx); break;    /* RF5_MIND_BLAST */
-        case 128 + 11: dam = spell_RF5_BRAIN_SMASH(y, x, m_idx); break;    /* RF5_MIND_BLAST */
-        case 128 + 12: dam = spell_RF5_CAUSE_1(y, x, m_idx); break;    /* RF5_CAUSE_1 */
-        case 128 + 13: dam = spell_RF5_CAUSE_2(y, x, m_idx); break;    /* RF5_CAUSE_2 */
-        case 128 + 14: dam = spell_RF5_CAUSE_3(y, x, m_idx); break;    /* RF5_CAUSE_3 */
-        case 128 + 15: dam = spell_RF5_CAUSE_4(y, x, m_idx); break;    /* RF5_CAUSE_4 */
-        case 128 + 16: dam = spell_RF5_BO_ACID(y, x, m_idx); break;    /* RF5_BO_ACID */
-        case 128 + 17: dam = spell_RF5_BO_ELEC(y, x, m_idx); break;    /* RF5_BO_ELEC */
-        case 128 + 18: dam = spell_RF5_BO_FIRE(y, x, m_idx); break;    /* RF5_BO_FIRE */
-        case 128 + 19: dam = spell_RF5_BO_COLD(y, x, m_idx); break;    /* RF5_BO_COLD */
-        case 128 + 20: dam = spell_RF5_BA_LITE(y, x, m_idx); break;    /* RF5_BA_LITE */
-        case 128 + 21: dam = spell_RF5_BO_NETH(y, x, m_idx); break;    /* RF5_BO_NETH */
-        case 128 + 22: dam = spell_RF5_BO_WATE(y, x, m_idx); break;    /* RF5_BO_WATE */
-        case 128 + 23: dam = spell_RF5_BO_MANA(y, x, m_idx); break;    /* RF5_BO_MANA */
-        case 128 + 24: dam = spell_RF5_BO_PLAS(y, x, m_idx); break;    /* RF5_BO_PLAS */
-        case 128 + 25: dam = spell_RF5_BO_ICEE(y, x, m_idx); break;    /* RF5_BO_ICEE */
-        case 128 + 26: dam = spell_RF5_MISSILE(y, x, m_idx); break;    /* RF5_MISSILE */
+        case 96 + 8:   dam = spell_RF4_BREATH(GF_ACID, y, x, m_idx, 0, MONSTER_TO_PLAYER); break;    /* RF4_BR_ACID */
+        case 96 + 9:   dam = spell_RF4_BREATH(GF_ELEC, y, x, m_idx, 0, MONSTER_TO_PLAYER); break;    /* RF4_BR_ELEC */
+        case 96 + 10:  dam = spell_RF4_BREATH(GF_FIRE, y, x, m_idx, 0, MONSTER_TO_PLAYER); break;    /* RF4_BR_FIRE */
+        case 96 + 11:  dam = spell_RF4_BREATH(GF_COLD, y, x, m_idx, 0, MONSTER_TO_PLAYER); break;    /* RF4_BR_COLD */
+        case 96 + 12:  dam = spell_RF4_BREATH(GF_POIS, y, x, m_idx, 0, MONSTER_TO_PLAYER); break;    /* RF4_BR_POIS */
+        case 96 + 13:  dam = spell_RF4_BREATH(GF_NETHER, y, x, m_idx, 0, MONSTER_TO_PLAYER); break;    /* RF4_BR_NETH */
+        case 96 + 14:  dam = spell_RF4_BREATH(GF_LITE, y_br_lite, x_br_lite, m_idx, 0, MONSTER_TO_PLAYER); break;    /* RF4_BR_LITE */
+        case 96 + 15:  dam = spell_RF4_BREATH(GF_DARK, y, x, m_idx, 0, MONSTER_TO_PLAYER); break;    /* RF4_BR_DARK */
+        case 96 + 16:  dam = spell_RF4_BREATH(GF_CONFUSION, y, x, m_idx, 0, MONSTER_TO_PLAYER); break;    /* RF4_BR_CONF */
+        case 96 + 17:  dam = spell_RF4_BREATH(GF_SOUND, y, x, m_idx, 0, MONSTER_TO_PLAYER); break;    /* RF4_BR_SOUN */
+        case 96 + 18:  dam = spell_RF4_BREATH(GF_CHAOS, y, x, m_idx, 0, MONSTER_TO_PLAYER); break;    /* RF4_BR_CHAO */
+        case 96 + 19:  dam = spell_RF4_BREATH(GF_DISENCHANT, y, x, m_idx, 0, MONSTER_TO_PLAYER); break;    /* RF4_BR_DISE */
+        case 96 + 20:  dam = spell_RF4_BREATH(GF_NEXUS, y, x, m_idx, 0, MONSTER_TO_PLAYER); break;    /* RF4_BR_NEXU */
+        case 96 + 21:  dam = spell_RF4_BREATH(GF_TIME, y, x, m_idx, 0, MONSTER_TO_PLAYER); break;    /* RF4_BR_TIME */
+        case 96 + 22:  dam = spell_RF4_BREATH(GF_INERTIA, y, x, m_idx, 0, MONSTER_TO_PLAYER); break;    /* RF4_BR_INER */
+        case 96 + 23:  dam = spell_RF4_BREATH(GF_GRAVITY, y, x, m_idx, 0, MONSTER_TO_PLAYER); break;    /* RF4_BR_GRAV */
+        case 96 + 24:  dam = spell_RF4_BREATH(GF_SHARDS, y, x, m_idx, 0, MONSTER_TO_PLAYER); break;    /* RF4_BR_SHAR */
+        case 96 + 25:  dam = spell_RF4_BREATH(GF_PLASMA, y, x, m_idx, 0, MONSTER_TO_PLAYER); break;    /* RF4_BR_PLAS */
+        case 96 + 26:  dam = spell_RF4_BREATH(GF_FORCE, y, x, m_idx, 0, MONSTER_TO_PLAYER); break;    /* RF4_BR_WALL */
+        case 96 + 27:  dam = spell_RF4_BREATH(GF_MANA, y, x, m_idx, 0, MONSTER_TO_PLAYER); break;    /* RF4_BR_MANA */
+        case 96 + 28:  dam = spell_RF4_BA_NUKE(y, x, m_idx, 0, MONSTER_TO_PLAYER); break;   /* RF4_BA_NUKE */
+        case 96 + 29:  dam = spell_RF4_BREATH(GF_NUKE, y, x, m_idx, 0, MONSTER_TO_PLAYER); break;    /* RF4_BR_NUKE */
+        case 96 + 30:  dam = spell_RF4_BA_CHAO(y, x, m_idx, 0, MONSTER_TO_PLAYER); break;  /* RF4_BA_CHAO */
+        case 96 + 31:  dam = spell_RF4_BREATH(GF_DISINTEGRATE, y, x, m_idx, 0, MONSTER_TO_PLAYER); break;    /* RF4_BR_DISI */
+        case 128 + 0:  dam = spell_RF5_BA_ACID(y, x, m_idx, 0, MONSTER_TO_PLAYER); break;    /* RF5_BA_ACID */
+        case 128 + 1:  dam = spell_RF5_BA_ELEC(y, x, m_idx, 0, MONSTER_TO_PLAYER); break;    /* RF5_BA_ELEC */
+        case 128 + 2:  dam = spell_RF5_BA_FIRE(y, x, m_idx, 0, MONSTER_TO_PLAYER); break;    /* RF5_BA_FIRE */
+        case 128 + 3:  dam = spell_RF5_BA_COLD(y, x, m_idx, 0, MONSTER_TO_PLAYER); break;    /* RF5_BA_COLD */
+        case 128 + 4:  dam = spell_RF5_BA_POIS(y, x, m_idx, 0, MONSTER_TO_PLAYER); break;    /* RF5_BA_POIS */
+        case 128 + 5:  dam = spell_RF5_BA_NETH(y, x, m_idx, 0, MONSTER_TO_PLAYER); break;    /* RF5_BA_NETH */
+        case 128 + 6:  dam = spell_RF5_BA_WATE(y, x, m_idx, 0, MONSTER_TO_PLAYER); break;    /* RF5_BA_WATE */
+        case 128 + 7:  dam = spell_RF5_BA_MANA(y, x, m_idx, 0, MONSTER_TO_PLAYER); break;    /* RF5_BA_MANA */
+        case 128 + 8:  dam = spell_RF5_BA_DARK(y, x, m_idx, 0, MONSTER_TO_PLAYER); break;    /* RF5_BA_DARK */
+        case 128 + 9:  dam = spell_RF5_DRAIN_MANA(y, x, m_idx, 0, MONSTER_TO_PLAYER); break;    /* RF5_DRAIN_MANA */
+        case 128 + 10: dam = spell_RF5_MIND_BLAST(y, x, m_idx, 0, MONSTER_TO_PLAYER); break;    /* RF5_MIND_BLAST */
+        case 128 + 11: dam = spell_RF5_BRAIN_SMASH(y, x, m_idx, 0, MONSTER_TO_PLAYER); break;    /* RF5_MIND_BLAST */
+        case 128 + 12: dam = spell_RF5_CAUSE_1(y, x, m_idx, 0, MONSTER_TO_PLAYER); break;    /* RF5_CAUSE_1 */
+        case 128 + 13: dam = spell_RF5_CAUSE_2(y, x, m_idx, 0, MONSTER_TO_PLAYER); break;    /* RF5_CAUSE_2 */
+        case 128 + 14: dam = spell_RF5_CAUSE_3(y, x, m_idx, 0, MONSTER_TO_PLAYER); break;    /* RF5_CAUSE_3 */
+        case 128 + 15: dam = spell_RF5_CAUSE_4(y, x, m_idx, 0, MONSTER_TO_PLAYER); break;    /* RF5_CAUSE_4 */
+        case 128 + 16: dam = spell_RF5_BO_ACID(y, x, m_idx, 0, MONSTER_TO_PLAYER); break;    /* RF5_BO_ACID */
+        case 128 + 17: dam = spell_RF5_BO_ELEC(y, x, m_idx, 0, MONSTER_TO_PLAYER); break;    /* RF5_BO_ELEC */
+        case 128 + 18: dam = spell_RF5_BO_FIRE(y, x, m_idx, 0, MONSTER_TO_PLAYER); break;    /* RF5_BO_FIRE */
+        case 128 + 19: dam = spell_RF5_BO_COLD(y, x, m_idx, 0, MONSTER_TO_PLAYER); break;    /* RF5_BO_COLD */
+        case 128 + 20: dam = spell_RF5_BA_LITE(y, x, m_idx, 0, MONSTER_TO_PLAYER); break;    /* RF5_BA_LITE */
+        case 128 + 21: dam = spell_RF5_BO_NETH(y, x, m_idx, 0, MONSTER_TO_PLAYER); break;    /* RF5_BO_NETH */
+        case 128 + 22: dam = spell_RF5_BO_WATE(y, x, m_idx, 0, MONSTER_TO_PLAYER); break;    /* RF5_BO_WATE */
+        case 128 + 23: dam = spell_RF5_BO_MANA(y, x, m_idx, 0, MONSTER_TO_PLAYER); break;    /* RF5_BO_MANA */
+        case 128 + 24: dam = spell_RF5_BO_PLAS(y, x, m_idx, 0, MONSTER_TO_PLAYER); break;    /* RF5_BO_PLAS */
+        case 128 + 25: dam = spell_RF5_BO_ICEE(y, x, m_idx, 0, MONSTER_TO_PLAYER); break;    /* RF5_BO_ICEE */
+        case 128 + 26: dam = spell_RF5_MISSILE(y, x, m_idx, 0, MONSTER_TO_PLAYER); break;    /* RF5_MISSILE */
         case 128 + 27: spell_RF5_SCARE(y, x, m_idx); break;    /* RF5_SCARE */
         case 128 + 28: spell_RF5_BLIND(y, x, m_idx); break;    /* RF5_BLIND */
         case 128 + 29: spell_RF5_CONF(y, x, m_idx); break;    /* RF5_CONF */
index 8181a77..0779e9e 100644 (file)
@@ -735,734 +735,65 @@ 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 */
-    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:
-               if (known)
-               {
-                       if (see_either)
-                       {
-                               disturb(1, 1);
-
-                               if (blind)
-                               {
-                                       msg_format(_("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."), m_name);
-                               }
-                               else
-                               {
-                                       msg_format(_("%^s¤¬%s¤Ë¸þ¤«¤Ã¤Æ¥¢¥·¥Ã¥É¡¦¥Ü¡¼¥ë¤Î¼öʸ¤ò¾§¤¨¤¿¡£", 
-                                                        "%^s casts an acid ball at %s."), m_name, t_name);
-                               }
-                       }
-                       else
-                       {
-                               mon_fight = TRUE;
-                       }
-               }
-
-               if (r_ptr->flags2 & RF2_POWERFUL)
-               {
-                       rad = 4;
-                       dam = (rlev * 4) + 50 + damroll(10, 10);
-               }
-               else
-               {
-                       rad = 2;
-                       dam = (randint1(rlev * 3) + 15);
-               }
-        breath(y, x, m_idx,GF_ACID, dam, rad, FALSE, MS_BALL_ACID, MONSTER_TO_MONSTER);
-               break;
-
-       /* RF5_BA_ELEC */
-       case 128+1:
-               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 lightning ball at %s."), m_name, t_name);
-                               }
-                       }
-                       else
-                       {
-                               mon_fight = TRUE;
-                       }
-               }
-
-               if (r_ptr->flags2 & RF2_POWERFUL)
-               {
-                       rad = 4;
-                       dam = (rlev * 4) + 50 + damroll(10, 10);
-               }
-               else
-               {
-                       rad = 2;
-                       dam = (randint1(rlev * 3 / 2) + 8);
-               }
-        breath(y, x, m_idx,GF_ELEC, dam, rad, FALSE, MS_BALL_ELEC, MONSTER_TO_MONSTER);
-               break;
-
-       /* RF5_BA_FIRE */
-       case 128+2:
-               if (known)
-               {
-                       if (see_either)
-                       {
-                               disturb(1, 1);
-
-                               if (m_ptr->r_idx == MON_ROLENTO)
-                               {
-                                       if (blind)
-                                               msg_format(_("%^s¤¬²¿¤«¤òÅꤲ¤¿¡£", "%^s throws something."), m_name);
-                                       else
-                                               msg_format(_("%^s¤¬%^s¤Ë¸þ¤«¤Ã¤Æ¼êÜØÃƤòÅꤲ¤¿¡£", "%^s throws a hand grenade."), m_name, t_name);
-                               }
-                               else
-                               {
-                                       if (blind)
-                                       {
-                                               msg_format(_("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."), m_name);
-                                       }
-                                       else
-                                       {
-                                               msg_format(_("%^s¤¬%s¤Ë¸þ¤«¤Ã¤Æ¥Õ¥¡¥¤¥¢¡¦¥Ü¡¼¥ë¤Î¼öʸ¤ò¾§¤¨¤¿¡£",
-                                                                "%^s casts a fire ball at %s."), m_name, t_name);
-                                       }
-                               }
-                       }
-                       else
-                       {
-                               mon_fight = TRUE;
-                       }
-               }
-
-               if (r_ptr->flags2 & RF2_POWERFUL)
-               {
-                       rad = 4;
-                       dam = (rlev * 4) + 50 + damroll(10, 10);
-               }
-               else
-               {
-                       rad = 2;
-                       dam = (randint1(rlev * 7 / 2) + 10);
-               }
-        breath(y, x, m_idx,GF_FIRE, dam, rad, FALSE, MS_BALL_FIRE, MONSTER_TO_MONSTER);
-               break;
-
-       /* RF5_BA_COLD */
-       case 128+3:
-               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 frost ball at %s."), m_name, t_name);
-                               }
-                       }
-                       else
-                       {
-                               mon_fight = TRUE;
-                       }
-               }
-
-               if (r_ptr->flags2 & RF2_POWERFUL)
-               {
-                       rad = 4;
-                       dam = (rlev * 4) + 50 + damroll(10, 10);
-               }
-               else
-               {
-                       rad = 2;
-                       dam = (randint1(rlev * 3 / 2) + 10);
-               }
-        breath(y, x, m_idx,GF_COLD, dam, rad, FALSE, MS_BALL_COLD, MONSTER_TO_MONSTER);
-               break;
-
-       /* RF5_BA_POIS */
-       case 128+4:
-               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 stinking cloud at %s."), m_name, t_name);
-                               }
-                       }
-                       else
-                       {
-                               mon_fight = TRUE;
-                       }
-               }
-
-               dam = damroll(12, 2) * ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 1);
-        breath(y, x, m_idx,GF_POIS, dam, 2, FALSE, MS_BALL_POIS, MONSTER_TO_MONSTER);
-
-               break;
-
-       /* RF5_BA_NETH */
-       case 128+5:
-               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 nether ball at %s."), m_name, t_name);
-                               }
-                       }
-                       else
-                       {
-                               mon_fight = TRUE;
-                       }
-               }
-
-               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, MONSTER_TO_MONSTER);
-
-               break;
-
-       /* RF5_BA_WATE */
-       case 128+6:
-               if (known)
-               {
-                       if (see_either)
-                       {
-                               disturb(1, 1);
-
-                               if (blind)
-                               {
-                                       msg_format(_("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."), m_name);
-                               }
-                               else
-                               {
-                                       msg_format(_("%^s¤¬%s¤ËÂФ·¤Æή¤ì¤ë¤è¤¦¤Ê¿È¿¶¤ê¤ò¤·¤¿¡£", "%^s gestures fluidly at %s."), m_name, t_name);
-
-                                       msg_format(_("%^s¤Ï±²´¬¤Ë°û¤ß¹þ¤Þ¤ì¤¿¡£", "%^s is engulfed in a whirlpool."), t_name);
-                               }
-                       }
-                       else
-                       {
-                               mon_fight = TRUE;
-                       }
-               }
-
-               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, MONSTER_TO_MONSTER);
-
-               break;
-
-       /* RF5_BA_MANA */
-       case 128+7:
-               if (known)
-               {
-                       if (see_either)
-                       {
-                               disturb(1, 1);
-
-                               if (blind)
-                               {
-                                       msg_format(_("%^s¤¬²¿¤«¤òÎ϶¯¤¯¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles powerfully."), m_name);
-                               }
-                               else
-                               {
-                                       msg_format(_("%^s¤¬%s¤ËÂФ·¤ÆËâÎϤÎÍò¤Î¼öʸ¤òÇ°¤¸¤¿¡£", "%^s invokes a mana storm upon %s."), m_name, t_name);
-                               }
-                       }
-                       else
-                       {
-                               mon_fight = TRUE;
-                       }
-               }
-
-               dam = (rlev * 4) + 50 + damroll(10, 10);
-        breath(y, x, m_idx,GF_MANA, dam, 4, FALSE, MS_BALL_MANA, MONSTER_TO_MONSTER);
-
-               break;
-
-       /* RF5_BA_DARK */
-       case 128+8:
-               if (known)
-               {
-                       if (see_either)
-                       {
-                               disturb(1, 1);
-
-                               if (blind)
-                               {
-                                       msg_format(_("%^s¤¬²¿¤«¤òÎ϶¯¤¯¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles powerfully."), m_name);
-                               }
-                               else
-                               {
-                                       msg_format(_("%^s¤¬%s¤ËÂФ·¤Æ°Å¹õ¤ÎÍò¤Î¼öʸ¤òÇ°¤¸¤¿¡£", "%^s invokes a darkness storm upon %s."), m_name, t_name);
-                               }
-                       }
-                       else
-                       {
-                               mon_fight = TRUE;
-                       }
-               }
-
-               dam = (rlev * 4) + 50 + damroll(10, 10);
-        breath(y, x, m_idx,GF_DARK, dam, 4, FALSE, MS_BALL_DARK, MONSTER_TO_MONSTER);
-
-               break;
-
-       /* RF5_DRAIN_MANA */
-       case 128+9:
-               if (see_m)
-               {
-                       /* Basic message */
-                       msg_format(_("%^s¤ÏÀº¿À¥¨¥Í¥ë¥®¡¼¤ò%s¤«¤éµÛ¤¤¤È¤Ã¤¿¡£", "%^s draws psychic energy from %s."), m_name, t_name);
-               }
-
-               dam = ((randint1(rlev) / 2) + 1);
-        breath(y, x, m_idx,GF_DRAIN_MANA, dam, 0, FALSE, MS_DRAIN_MANA, MONSTER_TO_MONSTER);
-
-               break;
-
-       /* RF5_MIND_BLAST */
-       case 128+10:
-               if (see_m)
-               {
-                       msg_format(_("%^s¤Ï%s¤ò¤¸¤Ã¤Èâˤó¤À¡£", "%^s gazes intently at %s."), m_name, t_name);
-               }
-
-               dam = damroll(7, 7);
-        breath(y, x, m_idx,GF_MIND_BLAST, dam, 0, FALSE, MS_MIND_BLAST, MONSTER_TO_MONSTER);
-
-               break;
-
-       /* RF5_BRAIN_SMASH */
-       case 128+11:
-               if (see_m)
-               {
-                       msg_format(_("%^s¤Ï%s¤ò¤¸¤Ã¤Èâˤó¤À¡£", "%^s gazes intently at %s."), m_name, t_name);
-               }
-
-               dam = damroll(12, 12);
-        breath(y, x, m_idx,GF_BRAIN_SMASH, dam, 0, FALSE, MS_BRAIN_SMASH, MONSTER_TO_MONSTER);
-
-               break;
-
-       /* RF5_CAUSE_1 */
-       case 128+12:
-               if (known)
-               {
-                       if (see_m)
-                       {
-                               msg_format(_("%^s¤Ï%s¤ò»Ø¤µ¤·¤Æ¼ö¤¤¤ò¤«¤±¤¿¡£", "%^s points at %s and curses."), m_name, t_name);
-                       }
-                       else
-                       {
-                               mon_fight = TRUE;
-                       }
-               }
-
-               dam = damroll(3, 8);
-        breath(y, x, m_idx,GF_CAUSE_1, dam, 0, FALSE, MS_CAUSE_1, MONSTER_TO_MONSTER);
-
-               break;
-
-       /* RF5_CAUSE_2 */
-       case 128+13:
-               if (known)
-               {
-                       if (see_m)
-                       {
-                               msg_format(_("%^s¤Ï%s¤ò»Ø¤µ¤·¤Æ¶²¤í¤·¤²¤Ë¼ö¤¤¤ò¤«¤±¤¿¡£", 
-                                                "%^s points at %s and curses horribly."), m_name, t_name);
-                       }
-                       else
-                       {
-                               mon_fight = TRUE;
-                       }
-               }
-
-               dam = damroll(8, 8);
-        breath(y, x, m_idx,GF_CAUSE_2, dam, 0, FALSE, MS_CAUSE_2, MONSTER_TO_MONSTER);
-
-               break;
-
-       /* RF5_CAUSE_3 */
-       case 128+14:
-               if (known)
-               {
-                       if (see_m)
-                       {
-                               msg_format(_("%^s¤Ï%s¤ò»Ø¤µ¤·¡¢¶²¤í¤·¤²¤Ë¼öʸ¤ò¾§¤¨¤¿¡ª", 
-                                                "%^s points at %s, incanting terribly!"), m_name, t_name);
-                       }
-                       else
-                       {
-                               mon_fight = TRUE;
-                       }
-               }
-
-               dam = damroll(10, 15);
-        breath(y, x, m_idx,GF_CAUSE_3, dam, 0, FALSE, MS_CAUSE_3, MONSTER_TO_MONSTER);
-
-               break;
-
-       /* RF5_CAUSE_4 */
-       case 128+15:
-               if (known)
-               {
-                       if (see_m)
-                       {
-                               msg_format(_("%^s¤¬%s¤ÎÈ빦¤òÆͤ¤¤Æ¡¢¡Ö¤ªÁ°¤Ï´û¤Ë»à¤ó¤Ç¤¤¤ë¡×¤È¶«¤ó¤À¡£", 
-                                                "%^s points at %s, screaming the word, 'DIE!'"), m_name, t_name);
-                       }
-                       else
-                       {
-                               mon_fight = TRUE;
-                       }
-               }
-
-               dam = damroll(15, 15);
-        breath(y, x, m_idx,GF_CAUSE_4, dam, 0, FALSE, MS_CAUSE_4, MONSTER_TO_MONSTER);
-
-               break;
-
-       /* RF5_BO_ACID */
-       case 128+16:
-               if (known)
-               {
-                       if (see_either)
-                       {
-                               msg_format(_("%s¤¬%s¤Ë¸þ¤«¤Ã¤Æ¥¢¥·¥Ã¥É¡¦¥Ü¥ë¥È¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts an acid bolt at %s."), m_name, t_name);
-                       }
-                       else
-                       {
-                               mon_fight = TRUE;
-                       }
-               }
-
-               dam = (damroll(7, 8) + (rlev / 3)) * ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 1);
-        bolt(m_idx, y, x, GF_ACID, dam, MS_BOLT_ACID, MONSTER_TO_MONSTER);
-
-               break;
-
-       /* RF5_BO_ELEC */
-       case 128+17:
-               if (known)
-               {
-                       if (see_either)
-                       {
-                               msg_format(_("%^s¤¬%s¤Ë¸þ¤«¤Ã¤Æ¥µ¥ó¥À¡¼¡¦¥Ü¥ë¥È¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a lightning bolt at %s."), m_name, t_name);
-                       }
-                       else
-                       {
-                               mon_fight = TRUE;
-                       }
-               }
-
-               dam = (damroll(4, 8) + (rlev / 3)) * ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 1);
-        bolt(m_idx, y, x, GF_ELEC, dam, MS_BOLT_ELEC, MONSTER_TO_MONSTER);
-
-               break;
-
-       /* RF5_BO_FIRE */
-       case 128+18:
-               if (known)
-               {
-                       if (see_either)
-                       {
-                               msg_format(_("%^s¤¬%s¤Ë¸þ¤«¤Ã¤Æ¥Õ¥¡¥¤¥¢¡¦¥Ü¥ë¥È¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a fire bolt at %s."), m_name, t_name);
-                       }
-                       else
-                       {
-                               mon_fight = TRUE;
-                       }
-               }
-
-               dam = (damroll(9, 8) + (rlev / 3)) * ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 1);
-        bolt(m_idx, y, x, GF_FIRE, dam, MS_BOLT_FIRE, MONSTER_TO_MONSTER);
-
-               break;
-
-       /* RF5_BO_COLD */
-       case 128+19:
-               if (known)
-               {
-                       if (see_either)
-                       {
-                               msg_format(_("%^s¤¬%s¤Ë¸þ¤«¤Ã¤Æ¥¢¥¤¥¹¡¦¥Ü¥ë¥È¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a frost bolt at %s."), m_name, t_name);
-                       }
-                       else
-                       {
-                               mon_fight = TRUE;
-                       }
-               }
-
-               dam = (damroll(6, 8) + (rlev / 3)) * ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 1);
-        bolt(m_idx, y, x, GF_COLD, dam, MS_BOLT_COLD, MONSTER_TO_MONSTER);
-
-               break;
-
-       /* RF5_BA_LITE */
-       case 128+20:
-               if (known)
-               {
-                       if (see_either)
-                       {
-                               disturb(1, 1);
-
-                               if (blind)
-                               {
-                                       msg_format(_("%^s¤¬²¿¤«¤òÎ϶¯¤¯¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles powerfully."), m_name);
-                               }
-                               else
-                               {
-                                       msg_format(_("%^s¤¬%s¤ËÂФ·¤Æ¥¹¥¿¡¼¥Ð¡¼¥¹¥È¤Î¼öʸ¤òÇ°¤¸¤¿¡£", 
-                                                        "%^s invokes a starburst upon %s."), m_name, t_name);
-                               }
-                       }
-                       else
-                       {
-                               mon_fight = TRUE;
-                       }
-               }
-
-               dam = (rlev * 4) + 50 + damroll(10, 10);
-        breath(y, x, m_idx,GF_LITE, dam, 4, FALSE, MS_STARBURST, MONSTER_TO_MONSTER);
-
-               break;
-
-       /* RF5_BO_NETH */
-       case 128+21:
-               if (known)
-               {
-                       if (see_either)
-                       {
-                               msg_format(_("%^s¤¬%s¤Ë¸þ¤«¤Ã¤ÆÃϹö¤ÎÌð¤Î¼öʸ¤ò¾§¤¨¤¿¡£",
-                                                "%^s casts a nether bolt at %s."), m_name, t_name);
-                       }
-                       else
-                       {
-                               mon_fight = TRUE;
-                       }
-               }
-
-               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, MONSTER_TO_MONSTER);
-
-               break;
-
-       /* RF5_BO_WATE */
-       case 128+22:
-               if (known)
-               {
-                       if (see_either)
-                       {
-                               msg_format(_("%^s¤¬%s¤Ë¸þ¤«¤Ã¤Æ¥¦¥©¡¼¥¿¡¼¡¦¥Ü¥ë¥È¤Î¼öʸ¤ò¾§¤¨¤¿¡£", 
-                                                "%^s casts a water bolt at %s."), m_name, t_name);
-                       }
-                       else
-                       {
-                               mon_fight = TRUE;
-                       }
-               }
-
-               dam = damroll(10, 10) + (rlev * 3 / ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 3));
-        bolt(m_idx, y, x, GF_WATER, dam, MS_BOLT_WATER, MONSTER_TO_MONSTER);
-
-               break;
-
-       /* RF5_BO_MANA */
-       case 128+23:
-               if (known)
-               {
-                       if (see_either)
-                       {
-                               msg_format(_("%^s¤¬%s¤Ë¸þ¤«¤Ã¤ÆËâÎϤÎÌð¤Î¼öʸ¤ò¾§¤¨¤¿¡£", 
-                                                "%^s casts a mana bolt at %s."), m_name, t_name);
-                       }
-                       else
-                       {
-                               mon_fight = TRUE;
-                       }
-               }
-
-               dam = randint1(rlev * 7 / 2) + 50;
-        bolt(m_idx, y, x, GF_MANA, dam, MS_BOLT_MANA, MONSTER_TO_MONSTER);
-
-               break;
-
-       /* RF5_BO_PLAS */
-       case 128+24:
-               if (known)
-               {
-                       if (see_either)
-                       {
-                               msg_format(_("%^s¤¬%s¤Ë¸þ¤«¤Ã¤Æ¥×¥é¥º¥Þ¡¦¥Ü¥ë¥È¤Î¼öʸ¤ò¾§¤¨¤¿¡£", 
-                                                "%^s casts a plasma bolt at %s."), m_name, t_name);
-                       }
-                       else
-                       {
-                               mon_fight = TRUE;
-                       }
-               }
-
-               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, MONSTER_TO_MONSTER);
-
-               break;
-
-       /* RF5_BO_ICEE */
-       case 128+25:
-               if (known)
-               {
-                       if (see_either)
-                       {
-                               msg_format(_("%^s¤¬%s¤Ë¸þ¤«¤Ã¤Æ¶Ë´¨¤ÎÌð¤Î¼öʸ¤ò¾§¤¨¤¿¡£",
-                                                "%^s casts an ice bolt at %s."), m_name, t_name);
-                       }
-                       else
-                       {
-                               mon_fight = TRUE;
-                       }
-               }
-
-               dam = damroll(6, 6) + (rlev * 3 / ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 3));
-        bolt(m_idx, y, x, GF_ICE, dam, MS_BOLT_ICE, MONSTER_TO_MONSTER);
-
-               break;
-
-       /* RF5_MISSILE */
-       case 128+26:
-               if (known)
-               {
-                       if (see_either)
-                       {
-                               msg_format(_("%^s¤¬%s¤Ë¸þ¤«¤Ã¤Æ¥Þ¥¸¥Ã¥¯¡¦¥ß¥µ¥¤¥ë¤Î¼öʸ¤ò¾§¤¨¤¿¡£", 
-                                                "%^s casts a magic missile at %s."), m_name, t_name);
-                       }
-                       else
-                       {
-                               mon_fight = TRUE;
-                       }
-               }
-
-               dam = damroll(2, 6) + (rlev / 3);
-        bolt(m_idx, y, x, GF_MISSILE, dam, MS_MAGIC_MISSILE, MONSTER_TO_MONSTER);
-
-               break;
+    case 96 + 0:   spell_RF4_SHRIEK(m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF4_SHRIEK */
+    case 96 + 1:   return FALSE;  /* RF4_XXX1 */
+    case 96 + 2:   spell_RF4_DISPEL(m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF4_DISPEL */
+    case 96 + 3:   dam = spell_RF4_ROCKET(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF4_ROCKET */
+    case 96 + 4:   dam = spell_RF4_SHOOT(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); 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 = spell_RF4_BREATH(GF_ACID, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF4_BR_ACID */
+    case 96 + 9:   dam = spell_RF4_BREATH(GF_ELEC, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF4_BR_ELEC */
+    case 96 + 10:  dam = spell_RF4_BREATH(GF_FIRE, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF4_BR_FIRE */
+    case 96 + 11:  dam = spell_RF4_BREATH(GF_COLD, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF4_BR_COLD */
+    case 96 + 12:  dam = spell_RF4_BREATH(GF_POIS, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF4_BR_POIS */
+    case 96 + 13:  dam = spell_RF4_BREATH(GF_NETHER, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF4_BR_NETH */
+    case 96 + 14:  dam = spell_RF4_BREATH(GF_LITE, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF4_BR_LITE */
+    case 96 + 15:  dam = spell_RF4_BREATH(GF_DARK, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF4_BR_DARK */
+    case 96 + 16:  dam = spell_RF4_BREATH(GF_CONFUSION, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF4_BR_CONF */
+    case 96 + 17:  dam = spell_RF4_BREATH(GF_SOUND, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF4_BR_SOUN */
+    case 96 + 18:  dam = spell_RF4_BREATH(GF_CHAOS, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF4_BR_CHAO */
+    case 96 + 19:  dam = spell_RF4_BREATH(GF_DISENCHANT, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF4_BR_DISE */
+    case 96 + 20:  dam = spell_RF4_BREATH(GF_NEXUS, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF4_BR_NEXU */
+    case 96 + 21:  dam = spell_RF4_BREATH(GF_TIME, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF4_BR_TIME */
+    case 96 + 22:  dam = spell_RF4_BREATH(GF_INERTIA, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF4_BR_INER */
+    case 96 + 23:  dam = spell_RF4_BREATH(GF_GRAVITY, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF4_BR_GRAV */
+    case 96 + 24:  dam = spell_RF4_BREATH(GF_SHARDS, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF4_BR_SHAR */
+    case 96 + 25:  dam = spell_RF4_BREATH(GF_PLASMA, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF4_BR_PLAS */
+    case 96 + 26:  dam = spell_RF4_BREATH(GF_FORCE, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF4_BR_WALL */
+    case 96 + 27:  dam = spell_RF4_BREATH(GF_MANA, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF4_BR_MANA */
+    case 96 + 28:  dam = spell_RF4_BA_NUKE(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF4_BA_NUKE */
+    case 96 + 29:  dam = spell_RF4_BREATH(GF_NUKE, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF4_BR_NUKE */
+    case 96 + 30:  dam = spell_RF4_BA_CHAO(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF4_BA_CHAO */
+    case 96 + 31:  dam = spell_RF4_BREATH(GF_DISINTEGRATE, y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF4_BR_DISI */
+    case 128 + 0:  dam = spell_RF5_BA_ACID(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF5_BA_ACID */
+    case 128 + 1:  dam = spell_RF5_BA_ELEC(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF5_BA_ELEC */
+    case 128 + 2:  dam = spell_RF5_BA_FIRE(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF5_BA_FIRE */
+    case 128 + 3:  dam = spell_RF5_BA_COLD(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF5_BA_COLD */
+    case 128 + 4:  dam = spell_RF5_BA_POIS(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF5_BA_POIS */
+    case 128 + 5:  dam = spell_RF5_BA_NETH(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF5_BA_NETH */
+    case 128 + 6:  dam = spell_RF5_BA_WATE(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF5_BA_WATE */
+    case 128 + 7:  dam = spell_RF5_BA_MANA(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF5_BA_MANA */
+    case 128 + 8:  dam = spell_RF5_BA_DARK(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF5_BA_DARK */
+    case 128 + 9:  dam = spell_RF5_DRAIN_MANA(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF5_DRAIN_MANA */
+    case 128 + 10: dam = spell_RF5_MIND_BLAST(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF5_MIND_BLAST */
+    case 128 + 11: dam = spell_RF5_BRAIN_SMASH(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF5_BRAIN_SMASH */
+    case 128 + 12: dam = spell_RF5_CAUSE_1(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF5_CAUSE_1 */
+    case 128 + 13: dam = spell_RF5_CAUSE_2(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF5_CAUSE_2 */
+    case 128 + 14: dam = spell_RF5_CAUSE_3(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF5_CAUSE_3 */
+    case 128 + 15: dam = spell_RF5_CAUSE_4(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF5_CAUSE_4 */
+    case 128 + 16: dam = spell_RF5_BO_ACID(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF5_BO_ACID */
+    case 128 + 17: dam = spell_RF5_BO_ELEC(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF5_BO_ELEC */
+    case 128 + 18: dam = spell_RF5_BO_FIRE(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF5_BO_FIRE */
+    case 128 + 19: dam = spell_RF5_BO_COLD(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF5_BO_COLD */
+    case 128 + 20: dam = spell_RF5_BA_LITE(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF5_BA_LITE */
+    case 128 + 21: dam = spell_RF5_BO_NETH(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF5_BO_NETH */
+    case 128 + 22: dam = spell_RF5_BO_WATE(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF5_BO_WATE */
+    case 128 + 23: dam = spell_RF5_BO_MANA(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF5_BO_MANA */
+    case 128 + 24: dam = spell_RF5_BO_PLAS(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF5_BO_PLAS */
+    case 128 + 25: dam = spell_RF5_BO_ICEE(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF5_BO_ICEE */
+    case 128 + 26: dam = spell_RF5_MISSILE(y, x, m_idx, t_idx, MONSTER_TO_MONSTER); break; /* RF5_MISSILE */
 
        /* RF5_SCARE */
        case 128+27:
index 978683b..91e64d6 100644 (file)
@@ -1,8 +1,7 @@
 #include "angband.h"
 
-cptr monster_name(int m_idx)
+char* monster_name(int m_idx, char* m_name)
 {
-    static char            m_name[80];
     monster_type    *m_ptr = &m_list[m_idx];
     monster_desc(m_name, m_ptr, 0x00);
     return m_name;
@@ -41,197 +40,175 @@ int monster_level_idx(int m_idx)
     return rlev;
 }
 
-void MP_spell_RF4_SHRIEK(int m_idx)
+bool monster_is_powerful(int m_idx)
 {
-    cptr m_name = monster_name(m_idx);
-    disturb(1, 1);
-    msg_format(_("%^s¤¬¤«¤ó¹â¤¤¶âÀÚ¤êÀ¼¤ò¤¢¤²¤¿¡£", "%^s makes a high pitched shriek."), m_name);
-    aggravate_monsters(m_idx);
+    monster_type    *m_ptr = &m_list[m_idx];
+    monster_race    *r_ptr = &r_info[m_ptr->r_idx];
+    return (r_ptr->flags2 & RF2_POWERFUL);
 }
 
-void MM_spell_RF4_SHRIEK(int m_idx, int t_idx)
+void monspell_message(int m_idx, int t_idx, cptr msg1, cptr msg2, cptr msg3, int TARGET_TYPE)
 {
-    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_m = see_monster(m_idx);
-    if (known)
-    {
-        if (see_m)
-        {
-            msg_format(_("%^s¤¬%s¤Ë¸þ¤«¤Ã¤Æ¶«¤ó¤À¡£", "%^s shrieks at %s."), m_name, t_name);
-        }
-        else
-        {
-            mon_fight = TRUE;
-        }
-    }
-    (void)set_monster_csleep(t_idx, 0);
-}
+    bool see_either = see_monster(m_idx) || see_monster(t_idx);
+    bool mon_to_mon = (TARGET_TYPE == MONSTER_TO_MONSTER);
+    bool mon_to_player = (TARGET_TYPE == MONSTER_TO_PLAYER);
+       char m_name[80], t_name[80];
+    monster_name(m_idx, m_name);
+       monster_name(t_idx, t_name);
 
-void MP_spell_RF4_DISPEL(int m_idx)
-{
-    cptr m_name = monster_name(m_idx);
-    disturb(1, 1);
+
+    if (mon_to_player || (mon_to_mon && known && see_either))
+        disturb(1, 1);
 
     if (p_ptr->blind)
-        msg_format(_("%^s¤¬²¿¤«¤òÎ϶¯¤¯¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles powerfully."), m_name);
+    {
+        if (mon_to_player || (mon_to_mon && known && see_either))
+            msg_format(msg1, m_name);
+    }
     else
-        msg_format(_("%^s¤¬ËâÎϾõî¤Î¼öʸ¤òÇ°¤¸¤¿¡£", "%^s invokes a dispel magic."), m_name);
-
-    dispel_player();
-    if (p_ptr->riding) dispel_monster_status(p_ptr->riding);
-
-    if ((p_ptr->pseikaku == SEIKAKU_COMBAT) || (inventory[INVEN_BOW].name1 == ART_CRIMSON))
-        msg_print(_("¤ä¤ê¤ä¤¬¤Ã¤¿¤Ê¡ª", ""));
-
-    learn_spell(MS_DISPEL);
-}
-
-void MM_spell_RF4_DISPEL(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_m = see_monster(m_idx);
-    if (known)
     {
-        if (see_m)
+        if (mon_to_player)
         {
-            msg_format(_("%^s¤¬%s¤ËÂФ·¤ÆËâÎϾõî¤Î¼öʸ¤òÇ°¤¸¤¿¡£",
-                         "%^s invokes a dispel magic at %s."), m_name, t_name);
+            msg_format(msg2, m_name);
         }
-        else
+        else if (mon_to_mon && known && see_either)
         {
-            mon_fight = TRUE;
+            msg_format(msg3, m_name, t_name);
         }
     }
 
-    if (t_idx == p_ptr->riding) dispel_player();
-    dispel_monster_status(t_idx);
+    if (mon_to_mon && known && !see_either)
+        mon_fight = TRUE;
 }
 
-int spell_RF4_ROCKET(int y, int x, int m_idx, int TARGET_TYPE)
+void spell_RF4_SHRIEK(int m_idx, int t_idx, int TARGET_TYPE)
 {
-    int dam;
-    monster_type    *m_ptr = &m_list[m_idx];
+       bool known = monster_near_player(m_idx, t_idx);
+    bool see_m = see_monster(m_idx);
+       char m_name[80], t_name[80];
+    monster_name(m_idx, m_name);
+       monster_name(t_idx, t_name);
 
-    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)
+    if (TARGET_TYPE == MONSTER_TO_MONSTER)
     {
-        update_smart_learn(m_idx, DRS_SHARD);
+        if (known)
+        {
+            if (see_m)
+            {
+                msg_format(_("%^s¤¬%s¤Ë¸þ¤«¤Ã¤Æ¶«¤ó¤À¡£", "%^s shrieks at %s."), m_name, t_name);
+            }
+            else
+            {
+                mon_fight = TRUE;
+            }
+        }
+        (void)set_monster_csleep(t_idx, 0);
+    }
+    else if (TARGET_TYPE == MONSTER_TO_PLAYER)
+    {
+        disturb(1, 1);
+        msg_format(_("%^s¤¬¤«¤ó¹â¤¤¶âÀÚ¤êÀ¼¤ò¤¢¤²¤¿¡£", "%^s makes a high pitched shriek."), m_name);
+        aggravate_monsters(m_idx);
     }
-    return dam;
 }
 
-int MP_spell_RF4_ROCKET(int y, int x, int m_idx)
+void spell_RF4_DISPEL(int m_idx, int t_idx, int TARGET_TYPE)
 {
-    cptr m_name = monster_name(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_RF4_ROCKET(y, x, m_idx, MONSTER_TO_PLAYER);
-}
+    bool known = monster_near_player(m_idx, t_idx);
+    bool see_m = see_monster(m_idx);
+       char m_name[80], t_name[80];
+    monster_name(m_idx, m_name);
+       monster_name(t_idx, t_name);
 
-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);
 
-    bool known = monster_near_player(m_idx, t_idx);
-    bool see_either = see_monster(m_idx) || see_monster(t_idx);
-    if (known)
+    if (TARGET_TYPE == MONSTER_TO_MONSTER)
     {
-        if (see_either)
+        if (known)
         {
-            disturb(1, 1);
-
-            if (p_ptr->blind)
+            if (see_m)
             {
-                msg_format(_("%^s¤¬²¿¤«¤ò¼Í¤Ã¤¿¡£", "%^s shoots something."), m_name);
+                msg_format(_("%^s¤¬%s¤ËÂФ·¤ÆËâÎϾõî¤Î¼öʸ¤òÇ°¤¸¤¿¡£",
+                    "%^s invokes a dispel magic at %s."), m_name, t_name);
             }
             else
             {
-                msg_format(_("%^s¤¬%s¤Ë¥í¥±¥Ã¥È¤òȯ¼Í¤·¤¿¡£", "%^s fires a rocket at %s."), m_name, t_name);
+                mon_fight = TRUE;
             }
         }
+
+        if (t_idx == p_ptr->riding) dispel_player();
+        dispel_monster_status(t_idx);
+    }
+    else if (TARGET_TYPE == MONSTER_TO_PLAYER)
+    {
+        disturb(1, 1);
+
+        if (p_ptr->blind)
+            msg_format(_("%^s¤¬²¿¤«¤òÎ϶¯¤¯¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles powerfully."), m_name);
         else
-        {
-            mon_fight = TRUE;
-        }
+            msg_format(_("%^s¤¬ËâÎϾõî¤Î¼öʸ¤òÇ°¤¸¤¿¡£", "%^s invokes a dispel magic."), m_name);
+
+        dispel_player();
+        if (p_ptr->riding) dispel_monster_status(p_ptr->riding);
+
+        if ((p_ptr->pseikaku == SEIKAKU_COMBAT) || (inventory[INVEN_BOW].name1 == ART_CRIMSON))
+            msg_print(_("¤ä¤ê¤ä¤¬¤Ã¤¿¤Ê¡ª", ""));
+
+        learn_spell(MS_DISPEL);
     }
-    return spell_RF4_ROCKET(y, x, m_idx, MONSTER_TO_MONSTER);
 }
 
-int spell_RF4_SHOOT(int y, int x, int m_idx, int TARGET_TYPE)
+int spell_RF4_ROCKET(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
 {
     int dam;
     monster_type    *m_ptr = &m_list[m_idx];
-    monster_race    *r_ptr = &r_info[m_ptr->r_idx];
 
-    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);
+    monspell_message(m_idx, t_idx,
+        _("%^s¤¬²¿¤«¤ò¼Í¤Ã¤¿¡£", "%^s shoots something."),
+        _("%^s¤¬¥í¥±¥Ã¥È¤òȯ¼Í¤·¤¿¡£", "%^s fires a rocket."),
+        _("%^s¤¬%s¤Ë¥í¥±¥Ã¥È¤òȯ¼Í¤·¤¿¡£", "%^s fires a rocket at %s."),
+        TARGET_TYPE);
 
+    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_SHOOT(int y, int x, int m_idx)
+int spell_RF4_SHOOT(int y, int x, int m_idx, int t_idx,int TARGET_TYPE)
 {
-    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);
+    int dam;
+    monster_type    *m_ptr = &m_list[m_idx];
+    monster_race    *r_ptr = &r_info[m_ptr->r_idx];
+    
+    monspell_message(m_idx, t_idx,
+        _("%^s¤¬´ñ̯¤Ê²»¤òȯ¤·¤¿¡£", "%^s makes a strange noise."),
+        _("%^s¤¬Ìð¤òÊü¤Ã¤¿¡£", "%^s fires an arrow."),
+        _("%^s¤¬%s¤ËÌð¤òÊü¤Ã¤¿¡£", "%^s fires an arrow at %s."),
+        TARGET_TYPE);
 
-    return spell_RF4_SHOOT(y, x, m_idx, MONSTER_TO_PLAYER);
-}
+    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);
 
-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);
+    return dam;
 }
 
 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);
+    bool mon_to_mon = (TARGET_TYPE == MONSTER_TO_MONSTER);
+    bool mon_to_player = (TARGET_TYPE == MONSTER_TO_PLAYER);
+       char m_name[80], t_name[80];
+    monster_name(m_idx, m_name);
+       monster_name(t_idx, t_name);
 
     switch (GF_TYPE)
     {
@@ -371,7 +348,9 @@ int spell_RF4_BREATH(int GF_TYPE, int y, int x, int m_idx, int t_idx, int TARGET
         break;
     }
 
-    disturb(1, 1);
+    if (mon_to_player || (mon_to_mon && known && see_either))
+        disturb(1, 1);
+
     if (m_ptr->r_idx == MON_JAIAN && GF_TYPE == GF_SOUND)
     {
         msg_format(_("¡Ö¥Ü¥©¥¨¡Á¡Á¡Á¡Á¡Á¡Á¡×", "'Booooeeeeee'"));
@@ -382,104 +361,85 @@ int spell_RF4_BREATH(int GF_TYPE, int y, int x, int m_idx, int t_idx, int TARGET
     }
     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);
+        if (mon_to_player || (mon_to_mon && known && see_either))
+            msg_format(_("%^s¤¬²¿¤«¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "%^s breathes."), m_name);
     }
     else
     {
-        if (TARGET_TYPE == MONSTER_TO_PLAYER)
+        if (mon_to_player)
         {
             msg_format(_("%^s¤¬%^s¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "%^s breathes %^s."), m_name, type_s);
         }
-        else if ((TARGET_TYPE == MONSTER_TO_MONSTER) && known && see_either)
+        else if (mon_to_mon && 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));
         }
     }
 
-    if (known && !see_either)
+    if (mon_to_mon && 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)
+    if (smart_learn && mon_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);
+    return dam;
 }
 
-int spell_RF4_BA_CHAO(int y, int x, int m_idx)
+int spell_RF4_BA_NUKE(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
 {
-    bool learnable = spell_learnable(m_idx);
-    cptr m_name = monster_name(m_idx);
-    monster_type    *m_ptr = &m_list[m_idx];
-    monster_race    *r_ptr = &r_info[m_ptr->r_idx];
+    int dam;
     int rlev = monster_level_idx(m_idx);
 
-    int dam;
-    disturb(1, 1);
+    monspell_message(m_idx, t_idx,
+        _("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."),
+        _("%^s¤¬Êü¼Íǽµå¤òÊü¤Ã¤¿¡£", "%^s casts a ball of radiation."),
+        _("%^s¤¬%s¤ËÊü¼Íǽµå¤òÊü¤Ã¤¿¡£", "%^s casts a ball of radiation at %s."),
+        TARGET_TYPE);
 
-    if (p_ptr->blind)
-        msg_format(_("%^s¤¬¶²¤í¤·¤²¤Ë¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles frighteningly."), m_name);
-    else
-        msg_format(_("%^s¤¬½ã¥í¥°¥ë¥¹¤òÊü¤Ã¤¿¡£", "%^s invokes a raw Logrus."), m_name);
-    
-    dam = ((r_ptr->flags2 & RF2_POWERFUL) ? (rlev * 3) : (rlev * 2)) + damroll(10, 10);
+    dam = (rlev + damroll(10, 6)) * (monster_is_powerful(m_idx) ? 2 : 1);
+    breath(y, x, m_idx, GF_NUKE, dam, 2, FALSE, MS_BALL_NUKE, TARGET_TYPE);
+    if (TARGET_TYPE == MONSTER_TO_PLAYER)
+        update_smart_learn(m_idx, DRS_POIS);
 
-    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;
 }
 
-int spell_RF4_BA_NUKE(int y, int x, int m_idx)
+int spell_RF4_BA_CHAO(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
 {
-    bool learnable = spell_learnable(m_idx);
-    cptr m_name = monster_name(m_idx);
-    monster_type    *m_ptr = &m_list[m_idx];
-    monster_race    *r_ptr = &r_info[m_ptr->r_idx];
-    int rlev = monster_level_idx(m_idx);
     int dam;
-    disturb(1, 1);
+    int rlev = monster_level_idx(m_idx);
 
-    if (p_ptr->blind)
-        msg_format(_("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."), m_name);
-    else
-        msg_format(_("%^s¤¬Êü¼Íǽµå¤òÊü¤Ã¤¿¡£", "%^s casts a ball of radiation."), m_name);
-    
-    dam = (rlev + damroll(10, 6)) * ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 1);
+    monspell_message(m_idx, t_idx,
+        _("%^s¤¬¶²¤í¤·¤²¤Ë¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles frighteningly."),
+        _("%^s¤¬½ã¥í¥°¥ë¥¹¤òÊü¤Ã¤¿¡£", "%^s invokes a raw Logrus."),
+        _("%^s¤¬%s¤Ë½ã¥í¥°¥ë¥¹¤òÊü¤Ã¤¿¡£", "%^s invokes raw Logrus upon %s."),
+        TARGET_TYPE);
+
+    dam = (monster_is_powerful(m_idx) ? (rlev * 3) : (rlev * 2)) + damroll(10, 10);
+
+    breath(y, x, m_idx, GF_CHAOS, dam, 4, FALSE, MS_BALL_CHAOS, TARGET_TYPE);
+    if (TARGET_TYPE == MONSTER_TO_PLAYER)
+        update_smart_learn(m_idx, DRS_CHAOS);
 
-    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;
 }
 
-int spell_RF5_BA_ACID(int y, int x, int m_idx)
+int spell_RF5_BA_ACID(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
 {
-    bool learnable = spell_learnable(m_idx);
-    cptr m_name = monster_name(m_idx);
-    monster_type    *m_ptr = &m_list[m_idx];
-    monster_race    *r_ptr = &r_info[m_ptr->r_idx];
-    int rlev = monster_level_idx(m_idx);
     int dam, rad;
-    disturb(1, 1);
+    int rlev = monster_level_idx(m_idx);
 
-    if (p_ptr->blind)
-        msg_format(_("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."), m_name);
-    else
-        msg_format(_("%^s¤¬¥¢¥·¥Ã¥É¡¦¥Ü¡¼¥ë¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts an acid ball."), m_name);
-    
-    if (r_ptr->flags2 & RF2_POWERFUL)
+    monspell_message(m_idx, t_idx,
+        _("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."),
+        _("%^s¤¬¥¢¥·¥Ã¥É¡¦¥Ü¡¼¥ë¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts an acid ball."),
+        _("%^s¤¬%s¤Ë¸þ¤«¤Ã¤Æ¥¢¥·¥Ã¥É¡¦¥Ü¡¼¥ë¤Î¼öʸ¤ò¾§¤¨¤¿¡£",
+          "%^s casts an acid ball at %s."),
+        TARGET_TYPE);
+
+    if (monster_is_powerful(m_idx))
     {
         rad = 4;
         dam = (rlev * 4) + 50 + damroll(10, 10);
@@ -489,27 +449,27 @@ 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, MONSTER_TO_PLAYER);
-    update_smart_learn(m_idx, DRS_ACID);
+
+    breath(y, x, m_idx, GF_ACID, dam, rad, FALSE, MS_BALL_ACID, TARGET_TYPE);
+    if (TARGET_TYPE == MONSTER_TO_PLAYER)
+        update_smart_learn(m_idx, DRS_ACID);
+
     return dam;
 }
 
-int spell_RF5_BA_ELEC(int y, int x, int m_idx)
+int spell_RF5_BA_ELEC(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
 {
-    bool learnable = spell_learnable(m_idx);
-    cptr m_name = monster_name(m_idx);
-    monster_type    *m_ptr = &m_list[m_idx];
-    monster_race    *r_ptr = &r_info[m_ptr->r_idx];
-    int rlev = monster_level_idx(m_idx);
     int dam, rad;
-    disturb(1, 1);
+    int rlev = monster_level_idx(m_idx);
 
-    if (p_ptr->blind)
-        msg_format(_("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."), m_name);
-    else
-        msg_format(_("%^s¤¬¥µ¥ó¥À¡¼¡¦¡¦¥Ü¡¼¥ë¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a lightning ball."), m_name);
+    monspell_message(m_idx, t_idx,
+        _("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."),
+        _("%^s¤¬¥µ¥ó¥À¡¼¡¦¡¦¥Ü¡¼¥ë¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a lightning ball."),
+        _("%^s¤¬%s¤Ë¸þ¤«¤Ã¤Æ¥µ¥ó¥À¡¼¡¦¥Ü¡¼¥ë¤Î¼öʸ¤ò¾§¤¨¤¿¡£", 
+          "%^s casts a lightning ball at %s."),
+        TARGET_TYPE);
 
-    if (r_ptr->flags2 & RF2_POWERFUL)
+    if (monster_is_powerful(m_idx))
     {
         rad = 4;
         dam = (rlev * 4) + 50 + damroll(10, 10);
@@ -519,37 +479,39 @@ 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, MONSTER_TO_PLAYER);
-    update_smart_learn(m_idx, DRS_ELEC);
+    
+    breath(y, x, m_idx, GF_ELEC, dam, rad, FALSE, MS_BALL_ELEC, TARGET_TYPE);
+    if (TARGET_TYPE == MONSTER_TO_PLAYER)
+        update_smart_learn(m_idx, DRS_ELEC);
+
     return dam;
 }
 
-int spell_RF5_BA_FIRE(int y, int x, int m_idx)
+int spell_RF5_BA_FIRE(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
 {
-    bool learnable = spell_learnable(m_idx);
-    cptr m_name = monster_name(m_idx);
+    int dam, rad;
     monster_type    *m_ptr = &m_list[m_idx];
-    monster_race    *r_ptr = &r_info[m_ptr->r_idx];
     int rlev = monster_level_idx(m_idx);
-    int dam, rad;
-    disturb(1, 1);
 
     if (m_ptr->r_idx == MON_ROLENTO)
     {
-        if (p_ptr->blind)
-            msg_format(_("%s¤¬²¿¤«¤òÅꤲ¤¿¡£", "%^s throws something."), m_name);
-        else
-            msg_format(_("%s¤Ï¼êÜØÃƤòÅꤲ¤¿¡£", "%^s throws a hand grenade."), m_name);
+        monspell_message(m_idx, t_idx,
+            _("%s¤¬²¿¤«¤òÅꤲ¤¿¡£", "%^s throws something."),
+            _("%s¤Ï¼êÜØÃƤòÅꤲ¤¿¡£", "%^s throws a hand grenade."),
+            _("%^s¤¬%^s¤Ë¸þ¤«¤Ã¤Æ¼êÜØÃƤòÅꤲ¤¿¡£", "%^s throws a hand grenade."),
+            TARGET_TYPE);
     }
     else
     {
-        if (p_ptr->blind)
-            msg_format(_("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."), m_name);
-        else
-            msg_format(_("%^s¤¬¥Õ¥¡¥¤¥¢¡¦¥Ü¡¼¥ë¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a fire ball."), m_name);
+        monspell_message(m_idx, t_idx,
+            _("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."),
+            _("%^s¤¬¥Õ¥¡¥¤¥¢¡¦¥Ü¡¼¥ë¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a fire ball."),
+            _("%^s¤¬%s¤Ë¸þ¤«¤Ã¤Æ¥Õ¥¡¥¤¥¢¡¦¥Ü¡¼¥ë¤Î¼öʸ¤ò¾§¤¨¤¿¡£",
+            "%^s casts a fire ball at %s."),
+            TARGET_TYPE);
     }
 
-    if (r_ptr->flags2 & RF2_POWERFUL)
+    if (monster_is_powerful(m_idx))
     {
         rad = 4;
         dam = (rlev * 4) + 50 + damroll(10, 10);
@@ -559,27 +521,27 @@ 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, MONSTER_TO_PLAYER);
-    update_smart_learn(m_idx, DRS_FIRE);
+
+    breath(y, x, m_idx, GF_FIRE, dam, rad, FALSE, MS_BALL_FIRE, TARGET_TYPE);
+    if (TARGET_TYPE == MONSTER_TO_PLAYER)
+        update_smart_learn(m_idx, DRS_FIRE);
+
     return dam;
 }
 
-int spell_RF5_BA_COLD(int y, int x, int m_idx)
+int spell_RF5_BA_COLD(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
 {
-    bool learnable = spell_learnable(m_idx);
-    cptr m_name = monster_name(m_idx);
-    monster_type    *m_ptr = &m_list[m_idx];
-    monster_race    *r_ptr = &r_info[m_ptr->r_idx];
-    int rlev = monster_level_idx(m_idx);
     int dam, rad;
-    disturb(1, 1);
+    int rlev = monster_level_idx(m_idx);
 
-    if (p_ptr->blind)
-        msg_format(_("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."), m_name);
-    else
-        msg_format(_("%^s¤¬¥¢¥¤¥¹¡¦¥Ü¡¼¥ë¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a frost ball."), m_name);
+    monspell_message(m_idx, t_idx,
+        _("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."),
+        _("%^s¤¬¥¢¥¤¥¹¡¦¥Ü¡¼¥ë¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a frost ball."),
+        _("%^s¤¬%s¤Ë¸þ¤«¤Ã¤Æ¥¢¥¤¥¹¡¦¥Ü¡¼¥ë¤Î¼öʸ¤ò¾§¤¨¤¿¡£",
+        "%^s casts a frost ball at %s."),
+        TARGET_TYPE);
 
-    if (r_ptr->flags2 & RF2_POWERFUL)
+    if (monster_is_powerful(m_idx))
     {
         rad = 4;
         dam = (rlev * 4) + 50 + damroll(10, 10);
@@ -589,468 +551,521 @@ 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, MONSTER_TO_PLAYER);
-    update_smart_learn(m_idx, DRS_COLD);
+
+    breath(y, x, m_idx, GF_COLD, dam, rad, FALSE, MS_BALL_COLD, TARGET_TYPE);
+    if (TARGET_TYPE == MONSTER_TO_PLAYER)
+        update_smart_learn(m_idx, DRS_COLD);
+
     return dam;
 }
 
-int spell_RF5_BA_POIS(int y, int x, int m_idx)
+
+int spell_RF5_BA_POIS(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
 {
-    bool learnable = spell_learnable(m_idx);
-    cptr m_name = monster_name(m_idx);
-    monster_type    *m_ptr = &m_list[m_idx];
-    monster_race    *r_ptr = &r_info[m_ptr->r_idx];
-    int rlev = monster_level_idx(m_idx);
     int dam;
-    disturb(1, 1);
 
-    if (p_ptr->blind)
-        msg_format(_("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."), m_name);
-    else
-        msg_format(_("%^s¤¬°­½­±À¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a stinking cloud."), m_name);
+    monspell_message(m_idx, t_idx,
+        _("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."),
+        _("%^s¤¬°­½­±À¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a stinking cloud."),
+        _("%^s¤¬%s¤Ë¸þ¤«¤Ã¤Æ°­½­±À¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a stinking cloud at %s."),
+        TARGET_TYPE);
+
+    dam = damroll(12, 2) * (monster_is_powerful(m_idx) ? 2 : 1);
+    breath(y, x, m_idx, GF_POIS, dam, 2, FALSE, MS_BALL_POIS, TARGET_TYPE);
+    if (TARGET_TYPE == MONSTER_TO_PLAYER)
+        update_smart_learn(m_idx, DRS_POIS);
 
-    dam = damroll(12, 2) * ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 1);
-    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;
 }
 
-int spell_RF5_BA_NETH(int y, int x, int m_idx)
+int spell_RF5_BA_NETH(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
 {
-    bool learnable = spell_learnable(m_idx);
-    cptr m_name = monster_name(m_idx);
-    monster_type    *m_ptr = &m_list[m_idx];
-    monster_race    *r_ptr = &r_info[m_ptr->r_idx];
-    int rlev = monster_level_idx(m_idx);
     int dam;
-    disturb(1, 1);
-    if (p_ptr->blind)
-        msg_format(_("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."), m_name);
-    else
-        msg_format(_("%^s¤¬ÃϹöµå¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a nether ball."), m_name);
+    int rlev = monster_level_idx(m_idx);
+
+    monspell_message(m_idx, t_idx,
+        _("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."),
+        _("%^s¤¬ÃϹöµå¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a nether ball."),
+        _("%^s¤¬%s¤Ë¸þ¤«¤Ã¤ÆÃϹöµå¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a nether ball at %s."),
+        TARGET_TYPE);
+
+    dam = 50 + damroll(10, 10) + (rlev * (monster_is_powerful(m_idx) ? 2 : 1));
+    breath(y, x, m_idx, GF_NETHER, dam, 2, FALSE, MS_BALL_NETHER, TARGET_TYPE);
+    if (TARGET_TYPE == MONSTER_TO_PLAYER)
+        update_smart_learn(m_idx, DRS_NETH);
 
-    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, MONSTER_TO_PLAYER);
-    update_smart_learn(m_idx, DRS_NETH);
     return dam;
 }
 
-int spell_RF5_BA_WATE(int y, int x, int m_idx)
+int spell_RF5_BA_WATE(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
 {
-    bool learnable = spell_learnable(m_idx);
-    cptr m_name = monster_name(m_idx);
-    monster_type    *m_ptr = &m_list[m_idx];
-    monster_race    *r_ptr = &r_info[m_ptr->r_idx];
-    int rlev = monster_level_idx(m_idx);
     int dam;
-    disturb(1, 1);
+    int rlev = monster_level_idx(m_idx);
+    bool known = monster_near_player(m_idx, t_idx);
+    bool see_either = see_monster(m_idx) || see_monster(t_idx);
+    bool mon_to_mon = (TARGET_TYPE == MONSTER_TO_MONSTER);
+    bool mon_to_player = (TARGET_TYPE == MONSTER_TO_PLAYER);
+       char t_name[80];
+    monster_name(t_idx, t_name);
 
-    if (p_ptr->blind)
-        msg_format(_("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."), m_name);
-    else
-        msg_format(_("%^s¤¬Î®¤ì¤ë¤è¤¦¤Ê¿È¿¶¤ê¤ò¤·¤¿¡£", "%^s gestures fluidly."), m_name);
 
-    msg_print(_("¤¢¤Ê¤¿¤Ï±²´¬¤­¤Ë°û¤ß¹þ¤Þ¤ì¤¿¡£", "You are engulfed in a whirlpool."));
+    monspell_message(m_idx, t_idx,
+        _("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."),
+        _("%^s¤¬Î®¤ì¤ë¤è¤¦¤Ê¿È¿¶¤ê¤ò¤·¤¿¡£", "%^s gestures fluidly."),
+        _("%^s¤¬%s¤ËÂФ·¤Æή¤ì¤ë¤è¤¦¤Ê¿È¿¶¤ê¤ò¤·¤¿¡£", "%^s gestures fluidly at %s."),
+        TARGET_TYPE);
+
+    if (mon_to_player)
+    {
+        msg_format(_("¤¢¤Ê¤¿¤Ï±²´¬¤­¤Ë°û¤ß¹þ¤Þ¤ì¤¿¡£", "You are engulfed in a whirlpool."));
+    }
+    else if (mon_to_mon && known && see_either && !p_ptr->blind)
+    {
+        msg_format(_("%^s¤Ï±²´¬¤Ë°û¤ß¹þ¤Þ¤ì¤¿¡£", "%^s is engulfed in a whirlpool."), t_name);
+    }
 
-    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, MONSTER_TO_PLAYER);
+    dam = (monster_is_powerful(m_idx) ? randint1(rlev * 3) : randint1(rlev * 2)) + 50;
+    breath(y, x, m_idx, GF_WATER, dam, 4, FALSE, MS_BALL_WATER, TARGET_TYPE);
     return dam;
 }
 
-int spell_RF5_BA_MANA(int y, int x, int m_idx)
+
+int spell_RF5_BA_MANA(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
 {
-    cptr m_name = monster_name(m_idx);
-    monster_type    *m_ptr = &m_list[m_idx];
-    monster_race    *r_ptr = &r_info[m_ptr->r_idx];
-    int rlev = monster_level_idx(m_idx);
     int dam;
-    disturb(1, 1);
-    if (p_ptr->blind)
-        msg_format(_("%^s¤¬²¿¤«¤òÎ϶¯¤¯¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles powerfully."), m_name);
-    else
-        msg_format(_("%^s¤¬ËâÎϤÎÍò¤Î¼öʸ¤òÇ°¤¸¤¿¡£", "%^s invokes a mana storm."), m_name);
+    int rlev = monster_level_idx(m_idx);
+
+    monspell_message(m_idx, t_idx,
+        _("%^s¤¬²¿¤«¤òÎ϶¯¤¯¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles powerfully."),
+        _("%^s¤¬ËâÎϤÎÍò¤Î¼öʸ¤òÇ°¤¸¤¿¡£", "%^s invokes a mana storm."),
+        _("%^s¤¬%s¤ËÂФ·¤ÆËâÎϤÎÍò¤Î¼öʸ¤òÇ°¤¸¤¿¡£", "%^s invokes a mana storm upon %s."),
+        TARGET_TYPE);
 
     dam = (rlev * 4) + 50 + damroll(10, 10);
-    breath(y, x, m_idx, GF_MANA, dam, 4, FALSE, MS_BALL_MANA, MONSTER_TO_PLAYER);
+    breath(y, x, m_idx, GF_MANA, dam, 4, FALSE, MS_BALL_MANA, TARGET_TYPE);
     return dam;
 }
 
-int spell_RF5_BA_DARK(int y, int x, int m_idx)
+int spell_RF5_BA_DARK(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
 {
-    cptr m_name = monster_name(m_idx);
-    monster_type    *m_ptr = &m_list[m_idx];
-    monster_race    *r_ptr = &r_info[m_ptr->r_idx];
-    int rlev = monster_level_idx(m_idx);
     int dam;
-    disturb(1, 1);
+    int rlev = monster_level_idx(m_idx);
 
-    if (p_ptr->blind)
-        msg_format(_("%^s¤¬²¿¤«¤òÎ϶¯¤¯¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles powerfully."), m_name);
-    else
-        msg_format(_("%^s¤¬°Å¹õ¤ÎÍò¤Î¼öʸ¤òÇ°¤¸¤¿¡£", "%^s invokes a darkness storm."), m_name);
+    monspell_message(m_idx, t_idx,
+        _("%^s¤¬²¿¤«¤òÎ϶¯¤¯¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles powerfully."),
+        _("%^s¤¬°Å¹õ¤ÎÍò¤Î¼öʸ¤òÇ°¤¸¤¿¡£", "%^s invokes a darkness storm."),
+        _("%^s¤¬%s¤ËÂФ·¤Æ°Å¹õ¤ÎÍò¤Î¼öʸ¤òÇ°¤¸¤¿¡£", "%^s invokes a darkness storm upon %s."),
+        TARGET_TYPE);
 
     dam = (rlev * 4) + 50 + damroll(10, 10);
-    breath(y, x, m_idx, GF_DARK, dam, 4, FALSE, MS_BALL_DARK, MONSTER_TO_PLAYER);
-    update_smart_learn(m_idx, DRS_DARK);
+    breath(y, x, m_idx, GF_DARK, dam, 4, FALSE, MS_BALL_DARK, TARGET_TYPE);
+    if (TARGET_TYPE == MONSTER_TO_PLAYER)
+        update_smart_learn(m_idx, DRS_DARK);
+
     return dam;
 }
 
-int spell_RF5_DRAIN_MANA(int y, int x, int m_idx)
+int spell_RF5_DRAIN_MANA(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
 {
-    cptr m_name = monster_name(m_idx);
     int rlev = monster_level_idx(m_idx);
     int dam;
-    disturb(1, 1);
+       char m_name[80], t_name[80];
+    monster_name(m_idx, m_name);
+       monster_name(t_idx, t_name);
+
 
-    dam = (randint1(rlev) / 2) + 1;
-    breath(y, x, m_idx, GF_DRAIN_MANA, dam, 0, FALSE, MS_DRAIN_MANA, MONSTER_TO_PLAYER);
-    update_smart_learn(m_idx, DRS_MANA);
+    if (TARGET_TYPE == MONSTER_TO_PLAYER)
+    {
+        disturb(1, 1);
+    }
+    else if (TARGET_TYPE == MONSTER_TO_MONSTER && see_monster(m_idx))
+    { 
+        /* Basic message */
+        msg_format(_("%^s¤ÏÀº¿À¥¨¥Í¥ë¥®¡¼¤ò%s¤«¤éµÛ¤¤¤È¤Ã¤¿¡£", "%^s draws psychic energy from %s."), m_name, t_name);
+    }
+
+    dam = ((randint1(rlev) / 2) + 1);
+    breath(y, x, m_idx, GF_DRAIN_MANA, dam, 0, FALSE, MS_DRAIN_MANA, TARGET_TYPE);
+    if (TARGET_TYPE == MONSTER_TO_PLAYER)
+        update_smart_learn(m_idx, DRS_MANA);
+    
     return dam;
 }
 
-int spell_RF5_MIND_BLAST(int y, int x, int m_idx)
+int spell_RF5_MIND_BLAST(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
 {
-    cptr m_name = monster_name(m_idx);
     monster_type    *m_ptr = &m_list[m_idx];
     bool seen = (!p_ptr->blind && m_ptr->ml);
     int rlev = monster_level_idx(m_idx);
     int dam;
-    disturb(1, 1);
-    if (!seen)
-        msg_print(_("²¿¤«¤¬¤¢¤Ê¤¿¤ÎÀº¿À¤ËÇ°¤òÊü¤Ã¤Æ¤¤¤ë¤è¤¦¤À¡£", "You feel something focusing on your mind."));
-    else
-        msg_format(_("%^s¤¬¤¢¤Ê¤¿¤ÎÆ·¤ò¤¸¤Ã¤È¤Ë¤é¤ó¤Ç¤¤¤ë¡£", "%^s gazes deep into your eyes."), m_name);
+       char m_name[80], t_name[80];
+    monster_name(m_idx, m_name);
+       monster_name(t_idx, t_name);
+
+
+    if (TARGET_TYPE == MONSTER_TO_PLAYER)
+    {
+        disturb(1, 1);
+        if (!seen)
+            msg_print(_("²¿¤«¤¬¤¢¤Ê¤¿¤ÎÀº¿À¤ËÇ°¤òÊü¤Ã¤Æ¤¤¤ë¤è¤¦¤À¡£", "You feel something focusing on your mind."));
+        else
+            msg_format(_("%^s¤¬¤¢¤Ê¤¿¤ÎÆ·¤ò¤¸¤Ã¤È¤Ë¤é¤ó¤Ç¤¤¤ë¡£", "%^s gazes deep into your eyes."), m_name);
+    }
+    else if (TARGET_TYPE == MONSTER_TO_MONSTER && see_monster(m_idx))
+    {
+        msg_format(_("%^s¤Ï%s¤ò¤¸¤Ã¤Èâˤó¤À¡£", "%^s gazes intently at %s."), m_name, t_name);
+    }
 
     dam = damroll(7, 7);
-    breath(y, x, m_idx, GF_MIND_BLAST, dam, 0, FALSE, MS_MIND_BLAST, MONSTER_TO_PLAYER);
+    breath(y, x, m_idx, GF_MIND_BLAST, dam, 0, FALSE, MS_MIND_BLAST, TARGET_TYPE);
     return dam;
 }
 
-int spell_RF5_BRAIN_SMASH(int y, int x, int m_idx)
+int spell_RF5_BRAIN_SMASH(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
 {
-    cptr m_name = monster_name(m_idx);
     monster_type    *m_ptr = &m_list[m_idx];
     bool seen = (!p_ptr->blind && m_ptr->ml);
     int rlev = monster_level_idx(m_idx);
     int dam;
-    disturb(1, 1);
-    if (!seen)
-        msg_print(_("²¿¤«¤¬¤¢¤Ê¤¿¤ÎÀº¿À¤ËÇ°¤òÊü¤Ã¤Æ¤¤¤ë¤è¤¦¤À¡£", "You feel something focusing on your mind."));
-    else
-        msg_format(_("%^s¤¬¤¢¤Ê¤¿¤ÎÆ·¤ò¤¸¤Ã¤È¸«¤Æ¤¤¤ë¡£", "%^s looks deep into your eyes."), m_name);
+       char m_name[80], t_name[80];
+    monster_name(m_idx, m_name);
+       monster_name(t_idx, t_name);
+
+
+    if (TARGET_TYPE == MONSTER_TO_PLAYER)
+    {
+        disturb(1, 1);
+        if (!seen)
+            msg_print(_("²¿¤«¤¬¤¢¤Ê¤¿¤ÎÀº¿À¤ËÇ°¤òÊü¤Ã¤Æ¤¤¤ë¤è¤¦¤À¡£", "You feel something focusing on your mind."));
+        else
+            msg_format(_("%^s¤¬¤¢¤Ê¤¿¤ÎÆ·¤ò¤¸¤Ã¤È¤Ë¤é¤ó¤Ç¤¤¤ë¡£", "%^s gazes deep into your eyes."), m_name);
+    }
+    else if (TARGET_TYPE == MONSTER_TO_MONSTER && see_monster(m_idx))
+    {
+        msg_format(_("%^s¤Ï%s¤ò¤¸¤Ã¤Èâˤó¤À¡£", "%^s gazes intently at %s."), m_name, t_name);
+    }
 
     dam = damroll(12, 12);
-    breath(y, x, m_idx, GF_BRAIN_SMASH, dam, 0, FALSE, MS_BRAIN_SMASH, MONSTER_TO_PLAYER);
+    breath(y, x, m_idx, GF_BRAIN_SMASH, dam, 0, FALSE, MS_BRAIN_SMASH, TARGET_TYPE);
     return dam;
 }
 
-int spell_RF5_CAUSE_1(int y, int x, int m_idx)
+void spell_RF5_CAUSE(int GF_TYPE, int dam, int y, int x, int m_idx, int t_idx, cptr msg1, cptr msg2, cptr msg3, int MS_TYPE, int TARGET_TYPE)
 {
-    cptr m_name = monster_name(m_idx);
     int rlev = monster_level_idx(m_idx);
-    int dam;
-    disturb(1, 1);
+       char m_name[80], t_name[80];
+    monster_name(m_idx, m_name);
+       monster_name(t_idx, t_name);
 
-    if (p_ptr->blind)
-        msg_format(_("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."), m_name);
-    else
-        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, MONSTER_TO_PLAYER);
+    if (TARGET_TYPE == MONSTER_TO_PLAYER)
+    {
+        disturb(1, 1);
+        if (p_ptr->blind)
+            msg_format(msg1, m_name);
+        else
+            msg_format(msg2, m_name);
+    }
+    else if (TARGET_TYPE == MONSTER_TO_MONSTER)
+    {
+        if (see_monster(m_idx))
+        {
+            msg_format(msg3, m_name, t_name);
+        }
+        else
+        {
+            mon_fight = TRUE;
+        }
+    }
+    breath(y, x, m_idx, GF_TYPE, dam, 0, FALSE, MS_TYPE, TARGET_TYPE);
+}
+
+int spell_RF5_CAUSE_1(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
+{
+    cptr msg1, msg2, msg3;
+    int dam = damroll(3, 8);
+
+    msg1 = _("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles.");
+    msg2 = _("%^s¤¬¤¢¤Ê¤¿¤ò»Ø¤µ¤·¤Æ¼ö¤Ã¤¿¡£", "%^s points at you and curses.");
+    msg3 = _("%^s¤Ï%s¤ò»Ø¤µ¤·¤Æ¼ö¤¤¤ò¤«¤±¤¿¡£", "%^s points at %s and curses.");
+    
+    spell_RF5_CAUSE(GF_CAUSE_1, dam, y, x, m_idx, t_idx, msg1, msg2, msg3, MS_CAUSE_1, TARGET_TYPE);
     return dam;
 }
 
-int spell_RF5_CAUSE_2(int y, int x, int m_idx)
+int spell_RF5_CAUSE_2(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
 {
-    cptr m_name = monster_name(m_idx);
-    int rlev = monster_level_idx(m_idx);
-    int dam;
-    disturb(1, 1);
+    cptr msg1, msg2, msg3;
+    int dam = damroll(8, 8);
 
-    if (p_ptr->blind)
-        msg_format(_("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."), m_name);
-    else
-        msg_format(_("%^s¤¬¤¢¤Ê¤¿¤ò»Ø¤µ¤·¤Æ¶²¤í¤·¤²¤Ë¼ö¤Ã¤¿¡£", "%^s points at you and curses horribly."), m_name);
+    msg1 = _("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles.");
+    msg2 = _("%^s¤¬¤¢¤Ê¤¿¤ò»Ø¤µ¤·¤Æ¶²¤í¤·¤²¤Ë¼ö¤Ã¤¿¡£", "%^s points at you and curses horribly.");
+    msg3 = _("%^s¤Ï%s¤ò»Ø¤µ¤·¤Æ¶²¤í¤·¤²¤Ë¼ö¤¤¤ò¤«¤±¤¿¡£", "%^s points at %s and curses horribly.");
 
-    dam = damroll(8, 8);
-    breath(y, x, m_idx, GF_CAUSE_2, dam, 0, FALSE, MS_CAUSE_2, MONSTER_TO_PLAYER);
+    spell_RF5_CAUSE(GF_CAUSE_2, dam, y, x, m_idx, t_idx, msg1, msg2, msg3, MS_CAUSE_2, TARGET_TYPE);
     return dam;
 }
 
-int spell_RF5_CAUSE_3(int y, int x, int m_idx)
+int spell_RF5_CAUSE_3(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
 {
-    cptr m_name = monster_name(m_idx);
-    int rlev = monster_level_idx(m_idx);
-    int dam;
-    disturb(1, 1);
+    cptr msg1, msg2, msg3;
+    int dam = damroll(10, 15);
 
-    if (p_ptr->blind)
-        msg_format(_("%^s¤¬²¿¤«¤òÂçÀ¼¤Ç¶«¤ó¤À¡£", "%^s mumbles loudly."), m_name);
-    else
-        msg_format(_("%^s¤¬¤¢¤Ê¤¿¤ò»Ø¤µ¤·¤Æ¶²¤í¤·¤²¤Ë¼öʸ¤ò¾§¤¨¤¿¡ª", "%^s points at you, incanting terribly!"), m_name);
+    msg1 = _("%^s¤¬²¿¤«¤òÂçÀ¼¤Ç¶«¤ó¤À¡£", "%^s mumbles loudly.");
+    msg2 = _("%^s¤¬¤¢¤Ê¤¿¤ò»Ø¤µ¤·¤Æ¶²¤í¤·¤²¤Ë¼öʸ¤ò¾§¤¨¤¿¡ª", "%^s points at you, incanting terribly!");
+    msg3 = _("%^s¤Ï%s¤ò»Ø¤µ¤·¡¢¶²¤í¤·¤²¤Ë¼öʸ¤ò¾§¤¨¤¿¡ª", "%^s points at %s, incanting terribly!");
 
-    dam = damroll(10, 15);
-    breath(y, x, m_idx, GF_CAUSE_3, dam, 0, FALSE, MS_CAUSE_3, MONSTER_TO_PLAYER);
+    spell_RF5_CAUSE(GF_CAUSE_3, dam, y, x, m_idx, t_idx, msg1, msg2, msg3, MS_CAUSE_3, TARGET_TYPE);
     return dam;
 }
 
-int spell_RF5_CAUSE_4(int y, int x, int m_idx)
+int spell_RF5_CAUSE_4(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
 {
-    cptr m_name = monster_name(m_idx);
-    int rlev = monster_level_idx(m_idx);
-    int dam;
-    disturb(1, 1);
+    cptr msg1, msg2, msg3;
+    int dam = damroll(15, 15);
 
-    if (p_ptr->blind)
-        msg_format(_("%^s¤¬¡Ö¤ªÁ°¤Ï´û¤Ë»à¤ó¤Ç¤¤¤ë¡×¤È¶«¤ó¤À¡£", "%^s screams the word 'DIE!'"), m_name);
-    else
-        msg_format(_("%^s¤¬¤¢¤Ê¤¿¤ÎÈ빦¤òÆͤ¤¤Æ¡Ö¤ªÁ°¤Ï´û¤Ë»à¤ó¤Ç¤¤¤ë¡×¤È¶«¤ó¤À¡£",
-        "%^s points at you, screaming the word DIE!"), m_name);
+    msg1 = _("%^s¤¬¡Ö¤ªÁ°¤Ï´û¤Ë»à¤ó¤Ç¤¤¤ë¡×¤È¶«¤ó¤À¡£", "%^s screams the word 'DIE!'");
+    msg2 = _("%^s¤¬¤¢¤Ê¤¿¤ÎÈ빦¤òÆͤ¤¤Æ¡Ö¤ªÁ°¤Ï´û¤Ë»à¤ó¤Ç¤¤¤ë¡×¤È¶«¤ó¤À¡£", "%^s points at you, screaming the word DIE!");
+    msg3 = _("%^s¤¬%s¤ÎÈ빦¤òÆͤ¤¤Æ¡¢¡Ö¤ªÁ°¤Ï´û¤Ë»à¤ó¤Ç¤¤¤ë¡×¤È¶«¤ó¤À¡£", "%^s points at %s, screaming the word, 'DIE!'");
 
-    dam = damroll(15, 15);
-    breath(y, x, m_idx, GF_CAUSE_4, dam, 0, FALSE, MS_CAUSE_4, MONSTER_TO_PLAYER);
+    spell_RF5_CAUSE(GF_CAUSE_4, dam, y, x, m_idx, t_idx, msg1, msg2, msg3, MS_CAUSE_4, TARGET_TYPE);
     return dam;
 }
 
-int spell_RF5_BO_ACID(int y, int x, int m_idx)
+int spell_RF5_BO_ACID(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
 {
-    bool learnable = spell_learnable(m_idx);
-    cptr m_name = monster_name(m_idx);
-    monster_type    *m_ptr = &m_list[m_idx];
-    monster_race    *r_ptr = &r_info[m_ptr->r_idx];
-    int rlev = monster_level_idx(m_idx);
     int dam;
-    disturb(1, 1);
+    int rlev = monster_level_idx(m_idx);
 
-    if (p_ptr->blind)
-        msg_format(_("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."), m_name);
-    else
-        msg_format(_("%^s¤¬¥¢¥·¥Ã¥É¡¦¥Ü¥ë¥È¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a acid bolt."), m_name);
+    monspell_message(m_idx, t_idx,
+        _("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."),
+        _("%^s¤¬¥¢¥·¥Ã¥É¡¦¥Ü¥ë¥È¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a acid bolt."),
+        _("%s¤¬%s¤Ë¸þ¤«¤Ã¤Æ¥¢¥·¥Ã¥É¡¦¥Ü¥ë¥È¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts an acid bolt at %s."),
+        TARGET_TYPE);
 
-    dam = (damroll(7, 8) + (rlev / 3)) * ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 1);
-    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);
+    dam = (damroll(7, 8) + (rlev / 3)) * (monster_is_powerful(m_idx) ? 2 : 1);
+    bolt(m_idx, y, x, GF_ACID, dam, MS_BOLT_ACID, TARGET_TYPE);
+    if (TARGET_TYPE == MONSTER_TO_PLAYER)
+    {
+        update_smart_learn(m_idx, DRS_ACID);
+        update_smart_learn(m_idx, DRS_REFLECT);
+    }
     return dam;
 }
 
-int spell_RF5_BO_ELEC(int y, int x, int m_idx)
+int spell_RF5_BO_ELEC(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
 {
-    bool learnable = spell_learnable(m_idx);
-    cptr m_name = monster_name(m_idx);
-    monster_type    *m_ptr = &m_list[m_idx];
-    monster_race    *r_ptr = &r_info[m_ptr->r_idx];
-    int rlev = monster_level_idx(m_idx);
     int dam;
-    disturb(1, 1);
+    int rlev = monster_level_idx(m_idx);
 
-    if (p_ptr->blind)
-        msg_format(_("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."), m_name);
-    else
-        msg_format(_("%^s¤¬¥µ¥ó¥À¡¼¡¦¥Ü¥ë¥È¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a lightning bolt."), m_name);
+    monspell_message(m_idx, t_idx,
+        _("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."),
+        _("%^s¤¬¥µ¥ó¥À¡¼¡¦¥Ü¥ë¥È¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a lightning bolt."),
+        _("%^s¤¬%s¤Ë¸þ¤«¤Ã¤Æ¥µ¥ó¥À¡¼¡¦¥Ü¥ë¥È¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a lightning bolt at %s."),
+        TARGET_TYPE);
 
-    dam = (damroll(4, 8) + (rlev / 3)) * ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 1);
-    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);
+    dam = (damroll(4, 8) + (rlev / 3)) * (monster_is_powerful(m_idx) ? 2 : 1);
+    bolt(m_idx, y, x, GF_ELEC, dam, MS_BOLT_ELEC, TARGET_TYPE);
+    if (TARGET_TYPE == MONSTER_TO_PLAYER)
+    {
+        update_smart_learn(m_idx, DRS_ELEC);
+        update_smart_learn(m_idx, DRS_REFLECT);
+    }
     return dam;
 }
 
-int spell_RF5_BO_FIRE(int y, int x, int m_idx)
+int spell_RF5_BO_FIRE(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
 {
-    bool learnable = spell_learnable(m_idx);
-    cptr m_name = monster_name(m_idx);
-    monster_type    *m_ptr = &m_list[m_idx];
-    monster_race    *r_ptr = &r_info[m_ptr->r_idx];
-    int rlev = monster_level_idx(m_idx);
     int dam;
-    disturb(1, 1);
+    int rlev = monster_level_idx(m_idx);
 
-    if (p_ptr->blind)
-        msg_format(_("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."), m_name);
-    else
-        msg_format(_("%^s¤¬¥Õ¥¡¥¤¥¢¡¦¥Ü¥ë¥È¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a fire bolt."), m_name);
+    monspell_message(m_idx, t_idx,
+        _("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."),
+        _("%^s¤¬¥Õ¥¡¥¤¥¢¡¦¥Ü¥ë¥È¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a fire bolt."),
+        _("%^s¤¬%s¤Ë¸þ¤«¤Ã¤Æ¥Õ¥¡¥¤¥¢¡¦¥Ü¥ë¥È¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a fire bolt at %s."),
+        TARGET_TYPE);
 
-    dam = (damroll(9, 8) + (rlev / 3)) * ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 1);
-    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);
+    dam = (damroll(9, 8) + (rlev / 3)) * (monster_is_powerful(m_idx) ? 2 : 1);
+    bolt(m_idx, y, x, GF_FIRE, dam, MS_BOLT_FIRE, TARGET_TYPE);
+    if (TARGET_TYPE == MONSTER_TO_PLAYER)
+    {
+        update_smart_learn(m_idx, DRS_FIRE);
+        update_smart_learn(m_idx, DRS_REFLECT);
+    }
     return dam;
 }
 
-int spell_RF5_BO_COLD(int y, int x, int m_idx)
+int spell_RF5_BO_COLD(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
 {
-    bool learnable = spell_learnable(m_idx);
-    cptr m_name = monster_name(m_idx);
-    monster_type    *m_ptr = &m_list[m_idx];
-    monster_race    *r_ptr = &r_info[m_ptr->r_idx];
-    int rlev = monster_level_idx(m_idx);
     int dam;
-    disturb(1, 1);
+    int rlev = monster_level_idx(m_idx);
 
-    if (p_ptr->blind)
-        msg_format(_("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."), m_name);
-    else
-        msg_format(_("%^s¤¬¥¢¥¤¥¹¡¦¥Ü¥ë¥È¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a frost bolt."), m_name);
+    monspell_message(m_idx, t_idx,
+        _("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."),
+        _("%^s¤¬¥¢¥¤¥¹¡¦¥Ü¥ë¥È¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a frost bolt."),
+        _("%^s¤¬%s¤Ë¸þ¤«¤Ã¤Æ¥¢¥¤¥¹¡¦¥Ü¥ë¥È¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a frost bolt at %s."),
+        TARGET_TYPE);
 
-    dam = (damroll(6, 8) + (rlev / 3)) * ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 1);
-    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);
+    dam = (damroll(6, 8) + (rlev / 3)) * (monster_is_powerful(m_idx) ? 2 : 1);
+    bolt(m_idx, y, x, GF_COLD, dam, MS_BOLT_COLD, TARGET_TYPE);
+    if (TARGET_TYPE == MONSTER_TO_PLAYER)
+    {
+        update_smart_learn(m_idx, DRS_COLD);
+        update_smart_learn(m_idx, DRS_REFLECT);
+    }
     return dam;
 }
 
-
-int spell_RF5_BA_LITE(int y, int x, int m_idx)
+int spell_RF5_BA_LITE(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
 {
-    cptr m_name = monster_name(m_idx);
-    int rlev = monster_level_idx(m_idx);
     int dam;
-    disturb(1, 1);
+    int rlev = monster_level_idx(m_idx);
 
-    if (p_ptr->blind)
-        msg_format(_("%^s¤¬²¿¤«¤òÎ϶¯¤¯¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles powerfully."), m_name);
-    else
-        msg_format(_("%^s¤¬¥¹¥¿¡¼¥Ð¡¼¥¹¥È¤Î¼öʸ¤òÇ°¤¸¤¿¡£", "%^s invokes a starburst."), m_name);
+    monspell_message(m_idx, t_idx,
+        _("%^s¤¬²¿¤«¤òÎ϶¯¤¯¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles powerfully."),
+        _("%^s¤¬¥¹¥¿¡¼¥Ð¡¼¥¹¥È¤Î¼öʸ¤òÇ°¤¸¤¿¡£", "%^s invokes a starburst."),
+        _("%^s¤¬%s¤ËÂФ·¤Æ¥¹¥¿¡¼¥Ð¡¼¥¹¥È¤Î¼öʸ¤òÇ°¤¸¤¿¡£", "%^s invokes a starburst upon %s."),
+        TARGET_TYPE);
 
     dam = (rlev * 4) + 50 + damroll(10, 10);
-    breath(y, x, m_idx, GF_LITE, dam, 4, FALSE, MS_STARBURST, MONSTER_TO_PLAYER);
-    update_smart_learn(m_idx, DRS_LITE);
+    breath(y, x, m_idx, GF_LITE, dam, 4, FALSE, MS_STARBURST, TARGET_TYPE);
+    if (TARGET_TYPE == MONSTER_TO_PLAYER)
+        update_smart_learn(m_idx, DRS_LITE);
+
     return dam;
 }
 
 
-int spell_RF5_BO_NETH(int y, int x, int m_idx)
+int spell_RF5_BO_NETH(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
 {
-    bool learnable = spell_learnable(m_idx);
-    cptr m_name = monster_name(m_idx);
-    monster_type    *m_ptr = &m_list[m_idx];
-    monster_race    *r_ptr = &r_info[m_ptr->r_idx];
-    int rlev = monster_level_idx(m_idx);
     int dam;
-    disturb(1, 1);
+    int rlev = monster_level_idx(m_idx);
 
-    if (p_ptr->blind)
-        msg_format(_("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."), m_name);
-    else
-        msg_format(_("%^s¤¬ÃϹö¤ÎÌð¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a nether bolt."), m_name);
+    monspell_message(m_idx, t_idx,
+        _("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."),
+        _("%^s¤¬ÃϹö¤ÎÌð¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a nether bolt."),
+        _("%^s¤¬%s¤Ë¸þ¤«¤Ã¤ÆÃϹö¤ÎÌð¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a nether bolt at %s."),
+        TARGET_TYPE);
 
-    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, MONSTER_TO_PLAYER);
-    update_smart_learn(m_idx, DRS_NETH);
-    update_smart_learn(m_idx, DRS_REFLECT);
+    dam = 30 + damroll(5, 5) + (rlev * 4) / (monster_is_powerful(m_idx) ? 2 : 3);
+    bolt(m_idx, y, x, GF_NETHER, dam, MS_BOLT_NETHER, TARGET_TYPE);
+    if (TARGET_TYPE == MONSTER_TO_PLAYER)
+    {
+        update_smart_learn(m_idx, DRS_NETH);
+        update_smart_learn(m_idx, DRS_REFLECT);
+    }
     return dam;
 }
 
-int spell_RF5_BO_WATE(int y, int x, int m_idx)
+int spell_RF5_BO_WATE(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
 {
-    bool learnable = spell_learnable(m_idx);
-    cptr m_name = monster_name(m_idx);
-    monster_type    *m_ptr = &m_list[m_idx];
-    monster_race    *r_ptr = &r_info[m_ptr->r_idx];
-    int rlev = monster_level_idx(m_idx);
     int dam;
-    disturb(1, 1);
+    int rlev = monster_level_idx(m_idx);
 
-    if (p_ptr->blind)
-        msg_format(_("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."), m_name);
-    else
-        msg_format(_("%^s¤¬¥¦¥©¡¼¥¿¡¼¡¦¥Ü¥ë¥È¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a water bolt."), m_name);
+    monspell_message(m_idx, t_idx,
+        _("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."),
+        _("%^s¤¬¥¦¥©¡¼¥¿¡¼¡¦¥Ü¥ë¥È¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a water bolt."),
+        _("%^s¤¬%s¤Ë¸þ¤«¤Ã¤Æ¥¦¥©¡¼¥¿¡¼¡¦¥Ü¥ë¥È¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a water bolt at %s."),
+        TARGET_TYPE);
 
-    dam = damroll(10, 10) + (rlev * 3 / ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 3));
-    bolt(m_idx, y, x, GF_WATER, dam, MS_BOLT_WATER, MONSTER_TO_PLAYER);
-    update_smart_learn(m_idx, DRS_REFLECT);
+    dam = damroll(10, 10) + (rlev * 3 / (monster_is_powerful(m_idx) ? 2 : 3));
+    bolt(m_idx, y, x, GF_WATER, dam, MS_BOLT_WATER, TARGET_TYPE);
+    if (TARGET_TYPE == MONSTER_TO_PLAYER)
+    {
+        update_smart_learn(m_idx, DRS_REFLECT);
+    }
     return dam;
 }
 
-int spell_RF5_BO_MANA(int y, int x, int m_idx)
+int spell_RF5_BO_MANA(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
 {
-    bool learnable = spell_learnable(m_idx);
-    cptr m_name = monster_name(m_idx);
-    monster_type    *m_ptr = &m_list[m_idx];
-    monster_race    *r_ptr = &r_info[m_ptr->r_idx];
-    int rlev = monster_level_idx(m_idx);
     int dam;
-    disturb(1, 1);
-    if (p_ptr->blind)
-        msg_format(_("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."), m_name);
-    else
-        msg_format(_("%^s¤¬ËâÎϤÎÌð¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a mana bolt."), m_name);
+    int rlev = monster_level_idx(m_idx);
+
+    monspell_message(m_idx, t_idx,
+        _("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."),
+        _("%^s¤¬ËâÎϤÎÌð¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a mana bolt."),
+        _("%^s¤¬%s¤Ë¸þ¤«¤Ã¤ÆËâÎϤÎÌð¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a mana bolt at %s."),
+        TARGET_TYPE);
 
     dam = randint1(rlev * 7 / 2) + 50;
-    bolt(m_idx, y, x, GF_MANA, dam, MS_BOLT_MANA, MONSTER_TO_PLAYER);
-    update_smart_learn(m_idx, DRS_REFLECT);
+    bolt(m_idx, y, x, GF_MANA, dam, MS_BOLT_MANA, TARGET_TYPE);
+    if (TARGET_TYPE == MONSTER_TO_PLAYER)
+    {
+        update_smart_learn(m_idx, DRS_REFLECT);
+    }
     return dam;
 }
 
-int spell_RF5_BO_PLAS(int y, int x, int m_idx)
+int spell_RF5_BO_PLAS(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
 {
-    bool learnable = spell_learnable(m_idx);
-    cptr m_name = monster_name(m_idx);
-    monster_type    *m_ptr = &m_list[m_idx];
-    monster_race    *r_ptr = &r_info[m_ptr->r_idx];
-    int rlev = monster_level_idx(m_idx);
     int dam;
-    disturb(1, 1);
-    if (p_ptr->blind)
-        msg_format(_("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."), m_name);
+    int rlev = monster_level_idx(m_idx);
 
-    else
-        msg_format(_("%^s¤¬¥×¥é¥º¥Þ¡¦¥Ü¥ë¥È¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a plasma bolt."), m_name);
+    monspell_message(m_idx, t_idx,
+        _("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."),
+        _("%^s¤¬¥×¥é¥º¥Þ¡¦¥Ü¥ë¥È¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a plasma bolt."),
+        _("%^s¤¬%s¤Ë¸þ¤«¤Ã¤Æ¥×¥é¥º¥Þ¡¦¥Ü¥ë¥È¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a plasma bolt at %s."),
+        TARGET_TYPE);
 
-    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, MONSTER_TO_PLAYER);
-    update_smart_learn(m_idx, DRS_REFLECT);
+    dam = 10 + damroll(8, 7) + (rlev * 3 / (monster_is_powerful(m_idx) ? 2 : 3));
+    bolt(m_idx, y, x, GF_PLASMA, dam, MS_BOLT_PLASMA, TARGET_TYPE);
+    if (TARGET_TYPE == MONSTER_TO_PLAYER)
+    {
+        update_smart_learn(m_idx, DRS_REFLECT);
+    }
     return dam;
 }
 
-int spell_RF5_BO_ICEE(int y, int x, int m_idx)
+int spell_RF5_BO_ICEE(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
 {
-    bool learnable = spell_learnable(m_idx);
-    cptr m_name = monster_name(m_idx);
-    monster_type    *m_ptr = &m_list[m_idx];
-    monster_race    *r_ptr = &r_info[m_ptr->r_idx];
-    int rlev = monster_level_idx(m_idx);
     int dam;
-    disturb(1, 1);
-    if (p_ptr->blind)
-        msg_format(_("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."), m_name);
-    else
-        msg_format(_("%^s¤¬¶Ë´¨¤ÎÌð¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts an ice bolt."), m_name);
+    int rlev = monster_level_idx(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, MONSTER_TO_PLAYER);
-    update_smart_learn(m_idx, DRS_COLD);
-    update_smart_learn(m_idx, DRS_REFLECT);
+    monspell_message(m_idx, t_idx,
+        _("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."),
+        _("%^s¤¬¶Ë´¨¤ÎÌð¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts an ice bolt."),
+        _("%^s¤¬%s¤Ë¸þ¤«¤Ã¤Æ¶Ë´¨¤ÎÌð¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts an ice bolt at %s."),
+        TARGET_TYPE);
+
+    dam = damroll(6, 6) + (rlev * 3 / (monster_is_powerful(m_idx) ? 2 : 3));
+    bolt(m_idx, y, x, GF_ICE, dam, MS_BOLT_ICE, TARGET_TYPE);
+    if (TARGET_TYPE == MONSTER_TO_PLAYER)
+    {
+        update_smart_learn(m_idx, DRS_COLD);
+        update_smart_learn(m_idx, DRS_REFLECT);
+    }
     return dam;
 }
 
-
-int spell_RF5_MISSILE(int y, int x, int m_idx)
+int spell_RF5_MISSILE(int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
 {
-    bool learnable = spell_learnable(m_idx);
-    cptr m_name = monster_name(m_idx);
-    int rlev = monster_level_idx(m_idx);
     int dam;
-    disturb(1, 1);
-    if (p_ptr->blind)
-        msg_format(_("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."), m_name);
-    else
-        msg_format(_("%^s¤¬¥Þ¥¸¥Ã¥¯¡¦¥ß¥µ¥¤¥ë¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a magic missile."), m_name);
+    int rlev = monster_level_idx(m_idx);
+
+    monspell_message(m_idx, t_idx,
+        _("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."),
+        _("%^s¤¬¥Þ¥¸¥Ã¥¯¡¦¥ß¥µ¥¤¥ë¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a magic missile."),
+        _("%^s¤¬%s¤Ë¸þ¤«¤Ã¤Æ¥Þ¥¸¥Ã¥¯¡¦¥ß¥µ¥¤¥ë¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a magic missile at %s."),
+        TARGET_TYPE);
 
     dam = damroll(2, 6) + (rlev / 3);
-    bolt(m_idx, y, x, GF_MISSILE, dam, MS_MAGIC_MISSILE, MONSTER_TO_PLAYER);
-    update_smart_learn(m_idx, DRS_REFLECT);
+    bolt(m_idx, y, x, GF_MISSILE, dam, MS_MAGIC_MISSILE, TARGET_TYPE);
+    if (TARGET_TYPE == MONSTER_TO_PLAYER)
+    {
+        update_smart_learn(m_idx, DRS_REFLECT);
+    }
     return dam;
 }
 
 void spell_RF5_SCARE(int y, int x, int m_idx)
 {
-    cptr m_name = monster_name(m_idx);
     int rlev = monster_level_idx(m_idx);
+       char m_name[80];
+    monster_name(m_idx, m_name);
     disturb(1, 1);
 
+
     if (p_ptr->blind)
         msg_format(_("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¯¤È¡¢¶²¤í¤·¤²¤Ê²»¤¬Ê¹¤³¤¨¤¿¡£", "%^s mumbles, and you hear scary noises."), m_name);
     else
@@ -1074,8 +1089,10 @@ void spell_RF5_SCARE(int y, int x, int m_idx)
 
 void spell_RF5_BLIND(int y, int x, int m_idx)
 {
-    cptr m_name = monster_name(m_idx);
     int rlev = monster_level_idx(m_idx);
+       char m_name[80];
+    monster_name(m_idx, m_name);
+
     disturb(1, 1);
 
     if (p_ptr->blind)
@@ -1102,8 +1119,10 @@ void spell_RF5_BLIND(int y, int x, int m_idx)
 
 void spell_RF5_CONF(int y, int x, int m_idx)
 {
-    cptr m_name = monster_name(m_idx);
     int rlev = monster_level_idx(m_idx);
+       char m_name[80];
+    monster_name(m_idx, m_name);
+
     disturb(1, 1);
 
     if (p_ptr->blind)
@@ -1131,8 +1150,10 @@ void spell_RF5_CONF(int y, int x, int m_idx)
 
 void spell_RF5_SLOW(int y, int x, int m_idx)
 {
-    cptr m_name = monster_name(m_idx);
     int rlev = monster_level_idx(m_idx);
+       char m_name[80];
+    monster_name(m_idx, m_name);
+
     disturb(1, 1);
 
     msg_format(_("%^s¤¬¤¢¤Ê¤¿¤Î¶ÚÎϤòµÛ¤¤¼è¤í¤¦¤È¤·¤¿¡ª",
@@ -1156,8 +1177,9 @@ void spell_RF5_SLOW(int y, int x, int m_idx)
 
 void spell_RF5_HOLD(int y, int x, int m_idx)
 {
-    cptr m_name = monster_name(m_idx);
     int rlev = monster_level_idx(m_idx);
+       char m_name[80];
+    monster_name(m_idx, m_name);
     disturb(1, 1);
 
     if (p_ptr->blind)
@@ -1183,8 +1205,9 @@ void spell_RF5_HOLD(int y, int x, int m_idx)
 
 void spell_RF6_HASTE(int m_idx)
 {
-    cptr m_name = monster_name(m_idx);
     monster_type    *m_ptr = &m_list[m_idx];
+       char m_name[80];
+    monster_name(m_idx, m_name);
     disturb(1, 1);
     if (p_ptr->blind)
     {
@@ -1204,9 +1227,10 @@ void spell_RF6_HASTE(int m_idx)
 
 int spell_RF6_HAND_DOOM(int y, int x, int m_idx)
 {
-    cptr m_name = monster_name(m_idx);
     monster_type    *m_ptr = &m_list[m_idx];
     int dam;
+       char m_name[80];
+    monster_name(m_idx, m_name);
     disturb(1, 1);
     msg_format(_("%^s¤¬<ÇËÌǤμê>¤òÊü¤Ã¤¿¡ª", "%^s invokes the Hand of Doom!"), m_name);
     dam = (((s32b)((40 + randint1(20)) * (p_ptr->chp))) / 100);
@@ -1216,10 +1240,12 @@ int spell_RF6_HAND_DOOM(int y, int x, int m_idx)
 
 void spell_RF6_HEAL(int m_idx)
 {
-    cptr m_name = monster_name(m_idx);
     monster_type    *m_ptr = &m_list[m_idx];
     int rlev = monster_level_idx(m_idx);
     bool seen = (!p_ptr->blind && m_ptr->ml);
+       char m_name[80];
+    monster_name(m_idx, m_name);
+
     disturb(1, 1);
 
     /* Message */
@@ -1270,9 +1296,10 @@ void spell_RF6_HEAL(int m_idx)
 }
 void spell_RF6_INVULNER(int m_idx)
 {
-    cptr m_name = monster_name(m_idx);
     monster_type    *m_ptr = &m_list[m_idx];
     bool seen = (!p_ptr->blind && m_ptr->ml);
+       char m_name[80];
+    monster_name(m_idx, m_name);
     disturb(1, 1);
 
     /* Message */
@@ -1286,7 +1313,9 @@ void spell_RF6_INVULNER(int m_idx)
 
 void spell_RF6_BLINK(int m_idx)
 {
-    cptr m_name = monster_name(m_idx);
+       char m_name[80];
+    monster_name(m_idx, m_name);
+
     disturb(1, 1);
     if (teleport_barrier(m_idx))
     {
@@ -1302,9 +1331,11 @@ void spell_RF6_BLINK(int m_idx)
 }
 
 void spell_RF6_TPORT(int m_idx)
-{
-    cptr m_name = monster_name(m_idx);
-    disturb(1, 1);
+{      
+       char m_name[80];
+    monster_name(m_idx, m_name);
+
+       disturb(1, 1);
     if (teleport_barrier(m_idx))
     {
         msg_format(_("ËâË¡¤Î¥Ð¥ê¥¢¤¬%^s¤Î¥Æ¥ì¥Ý¡¼¥È¤ò¼ÙË⤷¤¿¡£",
@@ -1319,9 +1350,11 @@ void spell_RF6_TPORT(int m_idx)
 
 int spell_RF6_WORLD(int m_idx)
 {
-    cptr m_name = monster_name(m_idx);
     monster_type    *m_ptr = &m_list[m_idx];
     int who = 0;
+       char m_name[80];
+    monster_name(m_idx, m_name);
+
     disturb(1, 1);
     if (m_ptr->r_idx == MON_DIO) who = 1;
     else if (m_ptr->r_idx == MON_WONG) who = 3;
@@ -1331,12 +1364,13 @@ int spell_RF6_WORLD(int m_idx)
 
 int spell_RF6_SPECIAL(int y, int x, int m_idx)
 {
-    cptr m_name = monster_name(m_idx);
     monster_type    *m_ptr = &m_list[m_idx];
     monster_race    *r_ptr = &r_info[m_ptr->r_idx];
     u32b mode = 0L;
     bool direct = player_bold(y, x);
     int k, dam, count=0;
+       char m_name[80];
+    monster_name(m_idx, m_name);
 
     disturb(1, 1);
     switch (m_ptr->r_idx)
@@ -1481,8 +1515,10 @@ int spell_RF6_SPECIAL(int y, int x, int m_idx)
 
 void spell_RF6_TELE_TO(int m_idx)
 {
-    cptr m_name = monster_name(m_idx);
     monster_type    *m_ptr = &m_list[m_idx];
+       char m_name[80];
+    monster_name(m_idx, m_name);
+
     disturb(1, 1);
     msg_format(_("%^s¤¬¤¢¤Ê¤¿¤ò°ú¤­Ìᤷ¤¿¡£", "%^s commands you to return."), m_name);
 
@@ -1492,7 +1528,8 @@ void spell_RF6_TELE_TO(int m_idx)
 
 void spell_RF6_TELE_AWAY(int m_idx)
 {
-    cptr m_name = monster_name(m_idx);
+       char m_name[80];
+    monster_name(m_idx, m_name);
     disturb(1, 1);
 
     msg_format(_("%^s¤Ë¥Æ¥ì¥Ý¡¼¥È¤µ¤»¤é¤ì¤¿¡£", "%^s teleports you away."), m_name);
@@ -1505,8 +1542,10 @@ void spell_RF6_TELE_AWAY(int m_idx)
 
 void spell_RF6_TELE_LEVEL(int m_idx)
 {
-    cptr m_name = monster_name(m_idx);
     int rlev = monster_level_idx(m_idx);
+       char m_name[80];
+    monster_name(m_idx, m_name);
+
     disturb(1, 1);
 
     if (p_ptr->blind)
@@ -1532,12 +1571,13 @@ void spell_RF6_TELE_LEVEL(int m_idx)
 
 int spell_RF6_PSY_SPEAR(int y, int x, int m_idx)
 {
-    bool learnable = spell_learnable(m_idx);
-    cptr m_name = monster_name(m_idx);
     monster_type    *m_ptr = &m_list[m_idx];
     monster_race    *r_ptr = &r_info[m_ptr->r_idx];
-    int rlev = monster_level_idx(m_idx);
+       int rlev = monster_level_idx(m_idx);
     int dam;
+       char m_name[80];
+    monster_name(m_idx, m_name);
+
     disturb(1, 1);
     if (p_ptr->blind)
         msg_format(_("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."), m_name);
@@ -1551,10 +1591,11 @@ int spell_RF6_PSY_SPEAR(int y, int x, int m_idx)
 
 void spell_RF6_DARKNESS(int m_idx)
 {
-    cptr m_name = monster_name(m_idx);
     monster_type    *m_ptr = &m_list[m_idx];
     monster_race    *r_ptr = &r_info[m_ptr->r_idx];
     bool can_use_lite_area = FALSE;
+       char m_name[80];
+    monster_name(m_idx, m_name);
 
     if ((p_ptr->pclass == CLASS_NINJA) &&
         !(r_ptr->flags3 & (RF3_UNDEAD | RF3_HURT_LITE)) &&
@@ -1582,7 +1623,8 @@ void spell_RF6_DARKNESS(int m_idx)
 
 void spell_RF6_TRAPS(int y, int x, int m_idx)
 {
-    cptr m_name = monster_name(m_idx);
+       char m_name[80];
+    monster_name(m_idx, m_name);
     disturb(1, 1);
 
     if (p_ptr->blind)
@@ -1598,8 +1640,10 @@ void spell_RF6_TRAPS(int y, int x, int m_idx)
 
 void spell_RF6_FORGET(int m_idx)
 {
-    cptr m_name = monster_name(m_idx);
     int rlev = monster_level_idx(m_idx);
+       char m_name[80];
+    monster_name(m_idx, m_name);
+
     disturb(1, 1);
 
     msg_format(_("%^s¤¬¤¢¤Ê¤¿¤Îµ­²±¤ò¾Ãµî¤·¤è¤¦¤È¤·¤Æ¤¤¤ë¡£",
@@ -1618,8 +1662,10 @@ void spell_RF6_FORGET(int m_idx)
 
 void spell_RF6_RAISE_DEAD(int m_idx)
 {
-    cptr m_name = monster_name(m_idx);
     monster_type    *m_ptr = &m_list[m_idx];
+       char m_name[80];
+    monster_name(m_idx, m_name);
+
     disturb(1, 1);
 
     if (p_ptr->blind)
@@ -1633,12 +1679,14 @@ void spell_RF6_RAISE_DEAD(int m_idx)
 
 void spell_RF6_S_KIN(int y, int x, int m_idx)
 {
-    cptr m_name = monster_name(m_idx);
     monster_type    *m_ptr = &m_list[m_idx];
     monster_race    *r_ptr = &r_info[m_ptr->r_idx];
     int rlev = monster_level_idx(m_idx);
     int count = 0, k;
     u32b mode = 0L;
+       char m_name[80];
+    monster_name(m_idx, m_name);
+
     disturb(1, 1);
     if (m_ptr->r_idx == MON_SERPENT || m_ptr->r_idx == MON_ZOMBI_SERPENT)
     {
@@ -1744,8 +1792,10 @@ void spell_RF6_S_KIN(int y, int x, int m_idx)
 
 void spell_RF6_S_CYBER(int y, int x, int m_idx)
 {
-    cptr m_name = monster_name(m_idx);
     int count = 0;
+       char m_name[80];
+    monster_name(m_idx, m_name);
+
     disturb(1, 1);
 
     if (p_ptr->blind)
@@ -1762,9 +1812,11 @@ void spell_RF6_S_CYBER(int y, int x, int m_idx)
 
 void spell_RF6_S_MONSTER(int y, int x, int m_idx)
 {
-    cptr m_name = monster_name(m_idx);
     int rlev = monster_level_idx(m_idx);
     int k, count = 0;
+       char m_name[80];
+    monster_name(m_idx, m_name);
+
     disturb(1, 1);
 
     if (p_ptr->blind)
@@ -1782,9 +1834,11 @@ void spell_RF6_S_MONSTER(int y, int x, int m_idx)
 
 void spell_RF6_S_MONSTERS(int y, int x, int m_idx)
 {
-    cptr m_name = monster_name(m_idx);
     int rlev = monster_level_idx(m_idx);
     int k, count = 0;
+       char m_name[80];
+    monster_name(m_idx, m_name);
+
     disturb(1, 1);
 
     if (p_ptr->blind)
@@ -1803,9 +1857,11 @@ void spell_RF6_S_MONSTERS(int y, int x, int m_idx)
 
 void spell_RF6_S_ANT(int y, int x, int m_idx)
 {
-    cptr m_name = monster_name(m_idx);
     int rlev = monster_level_idx(m_idx);
     int k, count = 0;
+       char m_name[80];
+    monster_name(m_idx, m_name);
+
     disturb(1, 1);
 
     if (p_ptr->blind)
@@ -1824,9 +1880,11 @@ void spell_RF6_S_ANT(int y, int x, int m_idx)
 
 void spell_RF6_S_SPIDER(int y, int x, int m_idx)
 {
-    cptr m_name = monster_name(m_idx);
     int rlev = monster_level_idx(m_idx);
     int k, count = 0;
+       char m_name[80];
+    monster_name(m_idx, m_name);
+
     disturb(1, 1);
 
     if (p_ptr->blind)
@@ -1845,9 +1903,11 @@ void spell_RF6_S_SPIDER(int y, int x, int m_idx)
 
 void spell_RF6_S_HOUND(int y, int x, int m_idx)
 {
-    cptr m_name = monster_name(m_idx);
     int rlev = monster_level_idx(m_idx);
     int k, count = 0;
+       char m_name[80];
+    monster_name(m_idx, m_name);
+
     disturb(1, 1);
 
     if (p_ptr->blind)
@@ -1866,9 +1926,11 @@ void spell_RF6_S_HOUND(int y, int x, int m_idx)
 
 void spell_RF6_S_HYDRA(int y, int x, int m_idx)
 {
-    cptr m_name = monster_name(m_idx);
     int rlev = monster_level_idx(m_idx);
     int k, count = 0;
+       char m_name[80];
+    monster_name(m_idx, m_name);
+
     disturb(1, 1);
 
     if (p_ptr->blind)
@@ -1886,12 +1948,13 @@ void spell_RF6_S_HYDRA(int y, int x, int m_idx)
 
 void spell_RF6_S_ANGEL(int y, int x, int m_idx)
 {
-    cptr m_name = monster_name(m_idx);
     monster_type    *m_ptr = &m_list[m_idx];
     monster_race    *r_ptr = &r_info[m_ptr->r_idx];
     int rlev = monster_level_idx(m_idx);
     int k, count = 0;
     int num = 1;
+       char m_name[80];
+    monster_name(m_idx, m_name);
 
     disturb(1, 1);
 
@@ -1924,9 +1987,11 @@ void spell_RF6_S_ANGEL(int y, int x, int m_idx)
 
 void spell_RF6_S_DEMON(int y, int x, int m_idx)
 {
-    cptr m_name = monster_name(m_idx);
     int rlev = monster_level_idx(m_idx);
     int k, count = 0;
+       char m_name[80];
+    monster_name(m_idx, m_name);
+
     disturb(1, 1);
 
     if (p_ptr->blind)
@@ -1946,9 +2011,11 @@ void spell_RF6_S_DEMON(int y, int x, int m_idx)
 
 void spell_RF6_S_UNDEAD(int y, int x, int m_idx)
 {
-    cptr m_name = monster_name(m_idx);
     int rlev = monster_level_idx(m_idx);
     int k, count = 0;
+       char m_name[80];
+    monster_name(m_idx, m_name);
+
     disturb(1, 1);
 
     if (p_ptr->blind)
@@ -1968,9 +2035,11 @@ void spell_RF6_S_UNDEAD(int y, int x, int m_idx)
 
 void spell_RF6_S_DRAGON(int y, int x, int m_idx)
 {
-    cptr m_name = monster_name(m_idx);
     int rlev = monster_level_idx(m_idx);
     int k, count = 0;
+       char m_name[80];
+    monster_name(m_idx, m_name);
+
     disturb(1, 1);
 
     if (p_ptr->blind)
@@ -1988,7 +2057,7 @@ void spell_RF6_S_DRAGON(int y, int x, int m_idx)
 
 void spell_RF6_S_HI_UNDEAD(int y, int x, int m_idx)
 {
-    cptr m_name = monster_name(m_idx);
+    char* m_name = monster_name(m_idx, "");
     monster_type    *m_ptr = &m_list[m_idx];
     monster_race    *r_ptr = &r_info[m_ptr->r_idx];
     int rlev = monster_level_idx(m_idx);
@@ -2064,7 +2133,7 @@ void spell_RF6_S_HI_UNDEAD(int y, int x, int m_idx)
 
 void spell_RF6_S_HI_DRAGON(int y, int x, int m_idx)
 {
-    cptr m_name = monster_name(m_idx);
+    char* m_name = monster_name(m_idx, "");
     int rlev = monster_level_idx(m_idx);
     int k, count = 0;
     disturb(1, 1);
@@ -2087,7 +2156,7 @@ void spell_RF6_S_HI_DRAGON(int y, int x, int m_idx)
 
 void spell_RF6_S_AMBERITES(int y, int x, int m_idx)
 {
-    cptr m_name = monster_name(m_idx);
+    char* m_name = monster_name(m_idx, "");
     int rlev = monster_level_idx(m_idx);
     int k, count = 0;
     disturb(1, 1);
@@ -2109,7 +2178,7 @@ void spell_RF6_S_AMBERITES(int y, int x, int m_idx)
 
 void spell_RF6_S_UNIQUE(int y, int x, int m_idx)
 {
-    cptr m_name = monster_name(m_idx);
+    char* m_name = monster_name(m_idx, "");
     monster_type    *m_ptr = &m_list[m_idx];
     int rlev = monster_level_idx(m_idx);
     int k, count = 0;