OSDN Git Service

refactor: extract breath functions in make_attack_spell
authordis- <dis.rogue@gmail.com>
Mon, 17 Feb 2014 07:29:07 +0000 (16:29 +0900)
committerdis- <dis.rogue@gmail.com>
Tue, 18 Feb 2014 09:27:11 +0000 (18:27 +0900)
src/defines.h
src/externs.h
src/mspells1.c
src/mspells4.c [new file with mode: 0644]

index ee80bad..d44e3ae 100644 (file)
 #define RF5_CAUSE_3         0x00004000  /* Cause Critical Wound */
 #define RF5_CAUSE_4         0x00008000  /* Cause Mortal Wound */
 #define RF5_BO_ACID         0x00010000  /* Acid Bolt */
-#define RF5_BO_ELEC         0x00020000  /* Elec Bolt (unused) */
+#define RF5_BO_ELEC         0x00020000  /* Elec Bolt */
 #define RF5_BO_FIRE         0x00040000  /* Fire Bolt */
 #define RF5_BO_COLD         0x00080000  /* Cold Bolt */
 #define RF5_BA_LITE         0x00100000  /* StarBurst */
 #define RF9_EAT_LOSE_STR        0x02000000
 #define RF9_EAT_LOSE_INT        0x04000000
 #define RF9_EAT_LOSE_WIS        0x08000000
-#define RF9_EAT_LOSE_DEX        0x01000000
+#define RF9_EAT_LOSE_DEX        0x10000000
 #define RF9_EAT_LOSE_CON        0x20000000
 #define RF9_EAT_LOSE_CHR        0x40000000
 #define RF9_EAT_DRAIN_MANA      0x80000000
index f460c33..5d1672c 100644 (file)
@@ -1573,12 +1573,21 @@ extern void do_cmd_mind_browse(void);
 
 /* mane.c */
 extern bool do_cmd_mane(bool baigaesi);
+extern void bolt(int m_idx, int typ, int dam_hp, int monspell, bool learnable);
+extern void breath(int y, int x, int m_idx, int typ, int dam_hp, int rad, bool breath, int monspell, bool learnable);
 
 /* mspells3.c */
 extern bool do_cmd_cast_learned(void);
 extern void learn_spell(int monspell);
 extern void set_rf_masks(s32b *f4, s32b *f5, s32b *f6, int mode);
 
+/* mspells4.c */
+extern void spell_RF4_SHRIEK(int m_idx, cptr m_name);
+extern void spell_RF4_DISPEL(bool blind, cptr m_name);
+extern void spell_RF4_ROCKET(bool blind, cptr m_name, monster_type* m_ptr, int y, int x, int m_idx, bool learnable);
+extern void spell_RF4_SHOOT(bool blind, cptr m_name, monster_race* r_ptr, int m_idx, bool learnable);
+extern void spell_RF4_BREATH(int GF_TYPE, bool blind, cptr m_name, monster_type* m_ptr, int y, int x, int m_idx, bool learnable);
+
 /* hissatsu.c */
 extern void hissatsu_info(char *p, int power);
 extern void do_cmd_hissatsu(void);
index 4c7419e..2d46c9c 100644 (file)
@@ -508,7 +508,7 @@ bool clean_shot(int y1, int x1, int y2, int x2, bool is_friend)
  * @param learnable ¥é¡¼¥Ë¥ó¥°²Äǽ¤«Èݤ«
  * @return ¤Ê¤·
  */
-static void bolt(int m_idx, int typ, int dam_hp, int monspell, bool learnable)
+void bolt(int m_idx, int typ, int dam_hp, int monspell, bool learnable)
 {
        int flg = PROJECT_STOP | PROJECT_KILL | PROJECT_PLAYER;
        if (typ != GF_ARROW) flg  |= PROJECT_REFLECTABLE;
@@ -549,7 +549,7 @@ static void beam(int m_idx, int typ, int dam_hp, int monspell, bool learnable)
  * @param learnable ¥é¡¼¥Ë¥ó¥°²Äǽ¤«Èݤ«
  * @return ¤Ê¤·
  */
-static void breath(int y, int x, int m_idx, int typ, int dam_hp, int rad, bool breath, int monspell, bool learnable)
+void breath(int y, int x, int m_idx, int typ, int dam_hp, int rad, bool breath, int monspell, bool learnable)
 {
        int flg = PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL | PROJECT_PLAYER;
 
@@ -1798,502 +1798,47 @@ bool make_attack_spell(int m_idx)
 
        can_remember = is_original_ap_and_seen(m_ptr);
 
-       /* Cast the spell. */
-       switch (thrown_spell)
-       {
-               /* RF4_SHRIEK */
-               case 96+0:
-               {
-                       disturb(1, 1);
-                       msg_format(_("%^s¤¬¤«¤ó¹â¤¤¶âÀÚ¤êÀ¼¤ò¤¢¤²¤¿¡£", "%^s makes a high pitched shriek."), m_name);
-                       aggravate_monsters(m_idx);
-                       break;
-               }
-
-               /* RF4_XXX1 */
-               case 96+1:
-               {
-                       /* XXX XXX XXX */
-                       break;
-               }
-
-               /* RF4_DISPEL */
-               case 96+2:
-               {
-                       if (!direct) return (FALSE);
-                       disturb(1, 1);
-
-                       if (blind)
-                       {
-                               msg_format(_("%^s¤¬²¿¤«¤òÎ϶¯¤¯¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles powerfully."), 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);
-
-#ifdef JP
-                       if ((p_ptr->pseikaku == SEIKAKU_COMBAT) || (inventory[INVEN_BOW].name1 == ART_CRIMSON))
-                               msg_print("¤ä¤ê¤ä¤¬¤Ã¤¿¤Ê¡ª");
-#endif
-                       learn_spell(MS_DISPEL);
-                       break;
-               }
-
-               /* RF4_ROCKET */
-               case 96+3:
-               {
-                       disturb(1, 1);
-                       if (blind)
-                       {
-                               msg_format(_("%^s¤¬²¿¤«¤ò¼Í¤Ã¤¿¡£", "%^s shoots something."), m_name);
-                       }
-                       else
-                       {
-                               msg_format(_("%^s¤¬¥í¥±¥Ã¥È¤òȯ¼Í¤·¤¿¡£", "%^s fires a rocket."), m_name);
-                       }
-
-                       dam = ((m_ptr->hp / 4) > 800 ? 800 : (m_ptr->hp / 4));
-                       breath(y, x, m_idx, GF_ROCKET,
-                               dam, 2, FALSE, MS_ROCKET, learnable);
-                       update_smart_learn(m_idx, DRS_SHARD);
-                       break;
-               }
-
-               /* RF4_SHOOT */
-               case 96+4:
-               {
-                       if (!direct) return (FALSE);
-                       disturb(1, 1);
-                       if (blind)
-                       {
-                               msg_format(_("%^s¤¬´ñ̯¤Ê²»¤òȯ¤·¤¿¡£", "%^s makes a strange noise."), m_name);
-                       }
-                       else
-                       {
-                               msg_format(_("%^s¤¬Ìð¤òÊü¤Ã¤¿¡£", "%^s fires an arrow."), m_name);
-                       }
-
-                       dam = damroll(r_ptr->blow[0].d_dice, r_ptr->blow[0].d_side);
-                       bolt(m_idx, GF_ARROW, dam, MS_SHOOT, learnable);
-                       update_smart_learn(m_idx, DRS_REFLECT);
-                       break;
-               }
-
-               /* RF4_XXX2 */
-               case 96+5:
-               {
-                       /* XXX XXX XXX */
-                       break;
-               }
-
-               /* RF4_XXX3 */
-               case 96+6:
-               {
-                       /* XXX XXX XXX */
-                       break;
-               }
-
-               /* RF4_XXX4 */
-               case 96+7:
-               {
-                       /* XXX XXX XXX */
-                       break;
-               }
-
-               /* RF4_BR_ACID */
-               case 96+8:
-               {
-                       disturb(1, 1);
-                       if (blind) 
-                       {       
-                               msg_format(_("%^s¤¬²¿¤«¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "%^s breathes."), m_name);
-                       }
-                       else
-                       {
-                               msg_format(_("%^s¤¬»À¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "%^s breathes acid."), m_name);
-                       }
-
-                       dam = ((m_ptr->hp / 3) > 1600 ? 1600 : (m_ptr->hp / 3));
-                       breath(y, x, m_idx, GF_ACID, dam, 0, TRUE, MS_BR_ACID, learnable);
-                       update_smart_learn(m_idx, DRS_ACID);
-                       break;
-               }
-
-               /* RF4_BR_ELEC */
-               case 96+9:
-               {
-                       disturb(1, 1);
-                       if (blind)
-                       {
-                               msg_format(_("%^s¤¬²¿¤«¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "%^s breathes."), m_name);
-                       }
-                       else
-                       {
-                               msg_format(_("%^s¤¬°ðºÊ¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "%^s breathes lightning."), m_name);
-                       }
-
-                       dam = ((m_ptr->hp / 3) > 1600 ? 1600 : (m_ptr->hp / 3));
-                       breath(y, x, m_idx, GF_ELEC, dam,0, TRUE, MS_BR_ELEC, learnable);
-                       update_smart_learn(m_idx, DRS_ELEC);
-                       break;
-               }
-
-               /* RF4_BR_FIRE */
-               case 96+10:
-               {
-                       disturb(1, 1);
-                       if (blind) 
-                       {
-                               msg_format(_("%^s¤¬²¿¤«¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "%^s breathes."), m_name);
-                       }
-                       else
-                       {
-                               msg_format(_("%^s¤¬²Ð±ê¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "%^s breathes fire."), m_name);
-                       }
-
-                       dam = ((m_ptr->hp / 3) > 1600 ? 1600 : (m_ptr->hp / 3));
-                       breath(y, x, m_idx, GF_FIRE, dam,0, TRUE, MS_BR_FIRE, learnable);
-                       update_smart_learn(m_idx, DRS_FIRE);
-                       break;
-               }
-
-               /* RF4_BR_COLD */
-               case 96+11:
-               {
-                       disturb(1, 1);
-                       if (blind)
-                       {
-                               msg_format(_("%^s¤¬²¿¤«¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "%^s breathes."), m_name);
-                       }
-                       else
-                       {
-                               msg_format(_("%^s¤¬Î䵤¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "%^s breathes frost."), m_name);
-                       }
-
-                       dam = ((m_ptr->hp / 3) > 1600 ? 1600 : (m_ptr->hp / 3));
-                       breath(y, x, m_idx, GF_COLD, dam,0, TRUE, MS_BR_COLD, learnable);
-                       update_smart_learn(m_idx, DRS_COLD);
-                       break;
-               }
-
-               /* RF4_BR_POIS */
-               case 96+12:
-               {
-                       disturb(1, 1);
-                       if (blind)
-                       {
-                               msg_format(_("%^s¤¬²¿¤«¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "%^s breathes."), m_name);
-                       }
-                       else
-                       {
-                               msg_format(_("%^s¤¬¥¬¥¹¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "%^s breathes gas."), m_name);
-                       }
-
-                       dam = ((m_ptr->hp / 3) > 800 ? 800 : (m_ptr->hp / 3));
-                       breath(y, x, m_idx, GF_POIS, dam, 0, TRUE, MS_BR_POIS, learnable);
-                       update_smart_learn(m_idx, DRS_POIS);
-                       break;
-               }
-
-
-               /* RF4_BR_NETH */
-               case 96+13:
-               {
-                       disturb(1, 1);
-                       if (blind)
-                       {
-                               msg_format(_("%^s¤¬²¿¤«¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "%^s breathes."), m_name);
-                       }
-                       else
-                       {
-                               msg_format(_("%^s¤¬ÃϹö¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "%^s breathes nether."), m_name);
-                       }
-
-                       dam = ((m_ptr->hp / 6) > 550 ? 550 : (m_ptr->hp / 6));
-                       breath(y, x, m_idx, GF_NETHER, dam,0, TRUE, MS_BR_NETHER, learnable);
-                       update_smart_learn(m_idx, DRS_NETH);
-                       break;
-               }
-
-               /* RF4_BR_LITE */
-               case 96+14:
-               {
-                       disturb(1, 1);
-                       if (blind)
-                       {
-                               msg_format(_("%^s¤¬²¿¤«¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "%^s breathes."), m_name);
-                       }
-                       else
-                       {
-                               msg_format(_("%^s¤¬Á®¸÷¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "%^s breathes light."), m_name);
-                       }
-
-                       dam = ((m_ptr->hp / 6) > 400 ? 400 : (m_ptr->hp / 6));
-                       breath(y_br_lite, x_br_lite, m_idx, GF_LITE, dam,0, TRUE, MS_BR_LITE, learnable);
-                       update_smart_learn(m_idx, DRS_LITE);
-                       break;
-               }
-
-               /* RF4_BR_DARK */
-               case 96+15:
-               {
-                       disturb(1, 1);
-                       if (blind)
-                       {
-                               msg_format(_("%^s¤¬²¿¤«¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "%^s breathes."), m_name);
-                       }
-                       else
-                       {
-                               msg_format(_("%^s¤¬°Å¹õ¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "%^s breathes darkness."), m_name);
-                       }
-
-                       dam = ((m_ptr->hp / 6) > 400 ? 400 : (m_ptr->hp / 6));
-                       breath(y, x, m_idx, GF_DARK, dam,0, TRUE, MS_BR_DARK, learnable);
-                       update_smart_learn(m_idx, DRS_DARK);
-                       break;
-               }
-
-               /* RF4_BR_CONF */
-               case 96+16:
-               {
-                       disturb(1, 1);
-
-                       if (blind)
-                       {
-                               msg_format(_("%^s¤¬²¿¤«¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "%^s breathes."), m_name);
-                       }
-                       else
-                       {
-                               msg_format(_("%^s¤¬º®Íð¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "%^s breathes confusion."), m_name);
-                       }
-
-                       dam = ((m_ptr->hp / 6) > 450 ? 450 : (m_ptr->hp / 6));
-                       breath(y, x, m_idx, GF_CONFUSION, dam,0, TRUE, MS_BR_CONF, learnable);
-                       update_smart_learn(m_idx, DRS_CONF);
-                       break;
-               }
-
-               /* RF4_BR_SOUN */
-               case 96+17:
-               {
-                       disturb(1, 1);
-                       if (m_ptr->r_idx == MON_JAIAN)
-                       {
-                               msg_format(_("¡Ö¥Ü¥©¥¨¡Á¡Á¡Á¡Á¡Á¡Á¡×", "'Booooeeeeee'"));
-                       }
-                       else if (blind)
-                       {
-                               msg_format(_("%^s¤¬²¿¤«¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "%^s breathes."), m_name);
-                       }
-                       else
-                       {
-                               msg_format(_("%^s¤¬¹ì²»¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "%^s breathes sound."), m_name);
-                       }
-
-                       dam = ((m_ptr->hp / 6) > 450 ? 450 : (m_ptr->hp / 6));
-                       breath(y, x, m_idx, GF_SOUND, dam,0, TRUE, MS_BR_SOUND, learnable);
-                       update_smart_learn(m_idx, DRS_SOUND);
-                       break;
-               }
-
-               /* RF4_BR_CHAO */
-               case 96+18:
-               {
-                       disturb(1, 1);
-                       if (blind)
-                       {
-                               msg_format(_("%^s¤¬²¿¤«¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "%^s breathes."), m_name);
-                       }
-                       else
-                       {
-                               msg_format(_("%^s¤¬¥«¥ª¥¹¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "%^s breathes chaos."), m_name);
-                       }
-
-                       dam = ((m_ptr->hp / 6) > 600 ? 600 : (m_ptr->hp / 6));
-                       breath(y, x, m_idx, GF_CHAOS, dam,0, TRUE, MS_BR_CHAOS, learnable);
-                       update_smart_learn(m_idx, DRS_CHAOS);
-                       break;
-               }
-
-               /* RF4_BR_DISE */
-               case 96+19:
-               {
-                       disturb(1, 1);
-
-                       if (blind)
-                       {
-                               msg_format(_("%^s¤¬²¿¤«¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "%^s breathes."), m_name);
-                       }
-                       else
-                       {
-                               msg_format(_("%^s¤¬Îô²½¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "%^s breathes disenchantment."), m_name);
-                       }
-
-                       dam = ((m_ptr->hp / 6) > 500 ? 500 : (m_ptr->hp / 6));
-                       breath(y, x, m_idx, GF_DISENCHANT, dam,0, TRUE, MS_BR_DISEN, learnable);
-                       update_smart_learn(m_idx, DRS_DISEN);
-                       break;
-               }
-
-               /* RF4_BR_NEXU */
-               case 96+20:
-               {
-                       disturb(1, 1);
-
-                       if (blind)
-                       {
-                               msg_format(_("%^s¤¬²¿¤«¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "%^s breathes."), m_name);
-                       }
-                       else
-                       {
-                               msg_format(_("%^s¤¬°ø²Ìº®Íð¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "%^s breathes nexus."), m_name);
-                       }
-
-                       dam = ((m_ptr->hp / 3) > 250 ? 250 : (m_ptr->hp / 3));
-                       breath(y, x, m_idx, GF_NEXUS, dam,0, TRUE, MS_BR_NEXUS, learnable);
-                       update_smart_learn(m_idx, DRS_NEXUS);
-                       break;
-               }
-
-               /* RF4_BR_TIME */
-               case 96+21:
-               {
-                       disturb(1, 1);
-
-                       if (blind)
-                       {
-                               msg_format(_("%^s¤¬²¿¤«¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "%^s breathes."), m_name);
-                       }
-                       else
-                       {
-                               msg_format(_("%^s¤¬»þ´ÖµÕž¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "%^s breathes time."), m_name);
-                       }
-
-                       dam = ((m_ptr->hp / 3) > 150 ? 150 : (m_ptr->hp / 3));
-                       breath(y, x, m_idx, GF_TIME, dam,0, TRUE, MS_BR_TIME, learnable);
-                       break;
-               }
-
-               /* RF4_BR_INER */
-               case 96+22:
-               {
-                       disturb(1, 1);
-
-                       if (blind)
-                       {
-                               msg_format(_("%^s¤¬²¿¤«¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "%^s breathes."), m_name);
-                       }
-                       else
-                       {
-                               msg_format(_("%^s¤¬ÃÙÆߤΥ֥쥹¤òÅǤ¤¤¿¡£", "%^s breathes inertia."), m_name);
-                       }
-
-                       dam = ((m_ptr->hp / 6) > 200 ? 200 : (m_ptr->hp / 6));
-                       breath(y, x, m_idx, GF_INERTIA, dam,0, TRUE, MS_BR_INERTIA, learnable);
-                       break;
-               }
-
-               /* RF4_BR_GRAV */
-               case 96+23:
-               {
-                       disturb(1, 1);
-
-                       if (blind)
-                       {
-                               msg_format(_("%^s¤¬²¿¤«¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "%^s breathes."), m_name);
-                       }
-                       else
-                       {
-                               msg_format(_("%^s¤¬½ÅÎϤΥ֥쥹¤òÅǤ¤¤¿¡£", "%^s breathes gravity."), m_name);
-                       }
-
-                       dam = ((m_ptr->hp / 3) > 200 ? 200 : (m_ptr->hp / 3));
-                       breath(y, x, m_idx, GF_GRAVITY, dam,0, TRUE, MS_BR_GRAVITY, learnable);
-                       break;
-               }
-
-               /* RF4_BR_SHAR */
-               case 96+24:
-               {
-                       disturb(1, 1);
-                       if (m_ptr->r_idx == MON_BOTEI)
-                       {
-                               msg_format(_("¡Ö¥ÜÄë¥Ó¥ë¥«¥Ã¥¿¡¼¡ª¡ª¡ª¡×", "'Boty-Build cutter!!!'"));
-                       }
-                       else if (blind)
-                       {
-                               msg_format(_("%^s¤¬²¿¤«¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "%^s breathes."), m_name);
-                       }
-                       else
-                       {
-                               msg_format(_("%^s¤¬ÇËÊҤΥ֥쥹¤òÅǤ¤¤¿¡£", "%^s breathes shards."), m_name);
-                       }
-
-                       dam = ((m_ptr->hp / 6) > 500 ? 500 : (m_ptr->hp / 6));
-                       breath(y, x, m_idx, GF_SHARDS, dam,0, TRUE, MS_BR_SHARDS, learnable);
-                       update_smart_learn(m_idx, DRS_SHARD);
-                       break;
-               }
-
-               /* RF4_BR_PLAS */
-               case 96+25:
-               {
-                       disturb(1, 1);
-
-                       if (blind)
-                       {
-                               msg_format(_("%^s¤¬²¿¤«¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "%^s breathes."), m_name);
-                       }
-                       else
-                       {
-                               msg_format(_("%^s¤¬¥×¥é¥º¥Þ¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "%^s breathes plasma."), m_name);
-                       }
-
-                       dam = ((m_ptr->hp / 6) > 150 ? 150 : (m_ptr->hp / 6));
-                       breath(y, x, m_idx, GF_PLASMA, dam,0, TRUE, MS_BR_PLASMA, learnable);
-                       break;
-               }
-
-               /* RF4_BR_WALL */
-               case 96+26:
-               {
-                       disturb(1, 1);
-
-                       if (blind)
-                       {
-                               msg_format(_("%^s¤¬²¿¤«¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "%^s breathes."), m_name);
-                       }
-                       else
-                       {
-                               msg_format(_("%^s¤¬¥Õ¥©¡¼¥¹¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "%^s breathes force."), m_name);
-                       }
-
-                       dam = ((m_ptr->hp / 6) > 200 ? 200 : (m_ptr->hp / 6));
-                       breath(y, x, m_idx, GF_FORCE, dam,0, TRUE, MS_BR_FORCE, learnable);
-                       break;
-               }
-
-               /* RF4_BR_MANA */
-               case 96+27:
-               {
-                       disturb(1, 1);
-
-                       if (blind)
-                       {
-                               msg_format(_("%^s¤¬²¿¤«¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "%^s breathes."), m_name);
-                       }
-                       else
-                       {
-                               msg_format(_("%^s¤¬ËâÎϤΥ֥쥹¤òÅǤ¤¤¿¡£", "%^s breathes mana."), m_name);
-                       }
+    if (!direct)
+    {
+        switch (thrown_spell)
+        {
+            case 96 + 2: /* RF4_DISPEL */
+            case 96 + 4: /* RF4_SHOOT */
+                return (FALSE);
+        }
+    }
 
-                       dam = ((m_ptr->hp / 3) > 250 ? 250 : (m_ptr->hp / 3));
-                       breath(y, x, m_idx, GF_MANA, dam,0, TRUE, MS_BR_MANA, learnable);
-                       break;
-               }
+       /* Cast the spell. */
+       switch (thrown_spell)
+       {
+        case 96 + 0:  spell_RF4_SHRIEK(m_idx, m_name); break;  /* RF4_SHRIEK */
+        case 96 + 1:  break;   /* RF4_XXX1 */
+        case 96 + 2:  spell_RF4_DISPEL(blind, m_name); break;  /* RF4_DISPEL */
+        case 96 + 3:  spell_RF4_ROCKET(blind, m_name, m_ptr, y, x, m_idx, learnable); break;   /* RF4_ROCKET */
+        case 96 + 4:  spell_RF4_SHOOT(blind, m_name, r_ptr, m_idx, learnable); break;    /* RF4_SHOOT */
+        case 96 + 5:  break;   /* RF4_XXX2 */
+        case 96 + 6:  break;   /* RF4_XXX3 */
+        case 96 + 7:  break;   /* RF4_XXX4 */
+        case 96 + 8:  spell_RF4_BREATH(GF_ACID, blind, m_name, m_ptr, y, x, m_idx, learnable); break;    /* RF4_BR_ACID */
+        case 96 + 9:  spell_RF4_BREATH(GF_ELEC, blind, m_name, m_ptr, y, x, m_idx, learnable); break;    /* RF4_BR_ELEC */
+        case 96 + 10: spell_RF4_BREATH(GF_FIRE, blind, m_name, m_ptr, y, x, m_idx, learnable); break;    /* RF4_BR_FIRE */
+        case 96 + 11: spell_RF4_BREATH(GF_COLD, blind, m_name, m_ptr, y, x, m_idx, learnable); break;    /* RF4_BR_COLD */
+        case 96 + 12: spell_RF4_BREATH(GF_POIS, blind, m_name, m_ptr, y, x, m_idx, learnable); break;    /* RF4_BR_POIS */
+        case 96 + 13: spell_RF4_BREATH(GF_NETHER, blind, m_name, m_ptr, y, x, m_idx, learnable); break;    /* RF4_BR_NETH */
+        case 96 + 14: spell_RF4_BREATH(GF_LITE, blind, m_name, m_ptr, y_br_lite, x_br_lite, m_idx, learnable); break;    /* RF4_BR_LITE */
+        case 96 + 15: spell_RF4_BREATH(GF_DARK, blind, m_name, m_ptr, y, x, m_idx, learnable); break;    /* RF4_BR_DARK */
+        case 96 + 16: spell_RF4_BREATH(GF_CONFUSION, blind, m_name, m_ptr, y, x, m_idx, learnable); break;    /* RF4_BR_CONF */
+        case 96 + 17: spell_RF4_BREATH(GF_SOUND, blind, m_name, m_ptr, y, x, m_idx, learnable); break;    /* RF4_BR_SOUN */
+        case 96 + 18: spell_RF4_BREATH(GF_CHAOS, blind, m_name, m_ptr, y, x, m_idx, learnable); break;    /* RF4_BR_CHAO */
+        case 96 + 19: spell_RF4_BREATH(GF_DISENCHANT, blind, m_name, m_ptr, y, x, m_idx, learnable); break;    /* RF4_BR_DISE */
+        case 96 + 20: spell_RF4_BREATH(GF_NEXUS, blind, m_name, m_ptr, y, x, m_idx, learnable); break;    /* RF4_BR_NEXU */
+        case 96 + 21: spell_RF4_BREATH(GF_TIME, blind, m_name, m_ptr, y, x, m_idx, learnable); break;    /* RF4_BR_TIME */
+        case 96 + 22: spell_RF4_BREATH(GF_INERTIA, blind, m_name, m_ptr, y, x, m_idx, learnable); break;    /* RF4_BR_INER */
+        case 96 + 23: spell_RF4_BREATH(GF_GRAVITY, blind, m_name, m_ptr, y, x, m_idx, learnable); break;    /* RF4_BR_GRAV */
+        case 96 + 24: spell_RF4_BREATH(GF_SHARDS, blind, m_name, m_ptr, y, x, m_idx, learnable); break;    /* RF4_BR_SHAR */
+        case 96 + 25: spell_RF4_BREATH(GF_PLASMA, blind, m_name, m_ptr, y, x, m_idx, learnable); break;    /* RF4_BR_PLAS */
+        case 96 + 26: spell_RF4_BREATH(GF_FORCE, blind, m_name, m_ptr, y, x, m_idx, learnable); break;    /* RF4_BR_WALL */
+        case 96 + 27: spell_RF4_BREATH(GF_MANA, blind, m_name, m_ptr, y, x, m_idx, learnable); break;    /* RF4_BR_MANA */
 
                /* RF4_BA_NUKE */
                case 96+28:
@@ -2315,26 +1860,8 @@ bool make_attack_spell(int m_idx)
                        break;
                }
 
-               /* RF4_BR_NUKE */
-               case 96+29:
-               {
-                       disturb(1, 1);
-
-                       if (blind)
-                       {
-                               msg_format(_("%^s¤¬²¿¤«¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "%^s breathes."), m_name);
-                       }
-                       else
-                       {
-                               msg_format(_("%^s¤¬Êü¼ÍÀ­ÇÑ´þʪ¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "%^s breathes toxic waste."), m_name);
-                       }
-
-                       dam = ((m_ptr->hp / 3) > 800 ? 800 : (m_ptr->hp / 3));
-                       breath(y, x, m_idx, GF_NUKE, dam,0, TRUE, MS_BR_NUKE, learnable);
-                       update_smart_learn(m_idx, DRS_POIS);
-                       break;
-               }
-
+        case 96 + 29: spell_RF4_BREATH(GF_NUKE, blind, m_name, m_ptr, y, x, m_idx, learnable); break;    /* RF4_BR_NUKE */
+               
                /* RF4_BA_CHAO */
                case 96+30:
                {
@@ -2355,26 +1882,7 @@ bool make_attack_spell(int m_idx)
                        break;
                }
 
-               /* RF4_BR_DISI */
-               case 96+31:
-               {
-                       disturb(1, 1);
-
-                       if (blind)
-                       {
-                               msg_format(_("%^s¤¬²¿¤«¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "%^s breathes."), m_name);
-                       }
-                       else
-                       {
-                               msg_format(_("%^s¤¬Ê¬²ò¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "%^s breathes disintegration."), m_name);
-                       }
-
-                       dam = ((m_ptr->hp / 6) > 150 ? 150 : (m_ptr->hp / 6));
-                       breath(y, x, m_idx, GF_DISINTEGRATE, dam,0, TRUE, MS_BR_DISI, learnable);
-                       break;
-               }
-
-
+        case 96 + 31: spell_RF4_BREATH(GF_DISINTEGRATE, blind, m_name, m_ptr, y, x, m_idx, learnable); break;    /* RF4_BR_DISI */
 
                /* RF5_BA_ACID */
                case 128+0:
@@ -2518,17 +2026,10 @@ bool make_attack_spell(int m_idx)
                case 128+5:
                {
                        disturb(1, 1);
-#ifdef JP
-if (blind) msg_format("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", m_name);
-#else
-                       if (blind) msg_format("%^s mumbles.", m_name);
-#endif
-
-#ifdef JP
-else msg_format("%^s¤¬ÃϹöµå¤Î¼öʸ¤ò¾§¤¨¤¿¡£", m_name);
-#else
-                       else msg_format("%^s casts a nether ball.", m_name);
-#endif
+                       if (blind)
+                               msg_format(_("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."), m_name);
+                       else
+                               msg_format(_("%^s¤¬ÃϹöµå¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a nether ball."), m_name);
 
                        dam = 50 + damroll(10, 10) + (rlev * ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 1));
                        breath(y, x, m_idx, GF_NETHER, dam, 2, FALSE, MS_BALL_NETHER, learnable);
@@ -2540,23 +2041,13 @@ else msg_format("%^s
                case 128+6:
                {
                        disturb(1, 1);
-#ifdef JP
-if (blind) msg_format("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", m_name);
-#else
-                       if (blind) msg_format("%^s mumbles.", m_name);
-#endif
 
-#ifdef JP
-else msg_format("%^s¤¬Î®¤ì¤ë¤è¤¦¤Ê¿È¿¶¤ê¤ò¤·¤¿¡£", m_name);
-#else
-                       else msg_format("%^s gestures fluidly.", m_name);
-#endif
+                       if (blind)
+                               msg_format(_("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."), m_name);
+                       else
+                               msg_format(_("%^s¤¬Î®¤ì¤ë¤è¤¦¤Ê¿È¿¶¤ê¤ò¤·¤¿¡£", "%^s gestures fluidly."), m_name);
 
-#ifdef JP
-msg_print("¤¢¤Ê¤¿¤Ï±²´¬¤­¤Ë°û¤ß¹þ¤Þ¤ì¤¿¡£");
-#else
-                       msg_print("You are engulfed in a whirlpool.");
-#endif
+                       msg_print(_("¤¢¤Ê¤¿¤Ï±²´¬¤­¤Ë°û¤ß¹þ¤Þ¤ì¤¿¡£", "You are engulfed in a whirlpool."));
 
                        dam = ((r_ptr->flags2 & RF2_POWERFUL) ? randint1(rlev * 3) : randint1(rlev * 2)) + 50;
                        breath(y, x, m_idx, GF_WATER, dam, 4, FALSE, MS_BALL_WATER, learnable);
@@ -2567,17 +2058,10 @@ msg_print("
                case 128+7:
                {
                        disturb(1, 1);
-#ifdef JP
-if (blind) msg_format("%^s¤¬²¿¤«¤òÎ϶¯¤¯¤Ä¤Ö¤ä¤¤¤¿¡£", m_name);
-#else
-                       if (blind) msg_format("%^s mumbles powerfully.", m_name);
-#endif
-
-#ifdef JP
-else msg_format("%^s¤¬ËâÎϤÎÍò¤Î¼öʸ¤òÇ°¤¸¤¿¡£", m_name);
-#else
-                       else msg_format("%^s invokes a mana storm.", m_name);
-#endif
+                       if (blind)
+                               msg_format(_("%^s¤¬²¿¤«¤òÎ϶¯¤¯¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles powerfully."), m_name);
+                       else
+                               msg_format(_("%^s¤¬ËâÎϤÎÍò¤Î¼öʸ¤òÇ°¤¸¤¿¡£", "%^s invokes a mana storm."), m_name);
 
                        dam = (rlev * 4) + 50 + damroll(10, 10);
                        breath(y, x, m_idx, GF_MANA, dam, 4, FALSE, MS_BALL_MANA, learnable);
@@ -2588,17 +2072,11 @@ else msg_format("%^s
                case 128+8:
                {
                        disturb(1, 1);
-#ifdef JP
-if (blind) msg_format("%^s¤¬²¿¤«¤òÎ϶¯¤¯¤Ä¤Ö¤ä¤¤¤¿¡£", m_name);
-#else
-                       if (blind) msg_format("%^s mumbles powerfully.", m_name);
-#endif
 
-#ifdef JP
-else msg_format("%^s¤¬°Å¹õ¤ÎÍò¤Î¼öʸ¤òÇ°¤¸¤¿¡£", m_name);
-#else
-                       else msg_format("%^s invokes a darkness storm.", m_name);
-#endif
+                       if (blind)
+                               msg_format(_("%^s¤¬²¿¤«¤òÎ϶¯¤¯¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles powerfully."), m_name);
+                       else
+                               msg_format(_("%^s¤¬°Å¹õ¤ÎÍò¤Î¼öʸ¤òÇ°¤¸¤¿¡£", "%^s invokes a darkness storm."), m_name);
 
                        dam = (rlev * 4) + 50 + damroll(10, 10);
                        breath(y, x, m_idx, GF_DARK, dam, 4, FALSE, MS_BALL_DARK, learnable);
@@ -2625,21 +2103,11 @@ else msg_format("%^s
                        disturb(1, 1);
                        if (!seen)
                        {
-#ifdef JP
-msg_print("²¿¤«¤¬¤¢¤Ê¤¿¤ÎÀº¿À¤ËÇ°¤òÊü¤Ã¤Æ¤¤¤ë¤è¤¦¤À¡£");
-#else
-                               msg_print("You feel something focusing on your mind.");
-#endif
-
+                               msg_print(_("²¿¤«¤¬¤¢¤Ê¤¿¤ÎÀº¿À¤ËÇ°¤òÊü¤Ã¤Æ¤¤¤ë¤è¤¦¤À¡£", "You feel something focusing on your mind."));
                        }
                        else
                        {
-#ifdef JP
-msg_format("%^s¤¬¤¢¤Ê¤¿¤ÎÆ·¤ò¤¸¤Ã¤È¤Ë¤é¤ó¤Ç¤¤¤ë¡£", m_name);
-#else
-                               msg_format("%^s gazes deep into your eyes.", m_name);
-#endif
-
+                               msg_format(_("%^s¤¬¤¢¤Ê¤¿¤ÎÆ·¤ò¤¸¤Ã¤È¤Ë¤é¤ó¤Ç¤¤¤ë¡£", "%^s gazes deep into your eyes."), m_name);
                        }
 
                        dam = damroll(7, 7);
@@ -2654,21 +2122,11 @@ msg_format("%^s
                        disturb(1, 1);
                        if (!seen)
                        {
-#ifdef JP
-msg_print("²¿¤«¤¬¤¢¤Ê¤¿¤ÎÀº¿À¤ËÇ°¤òÊü¤Ã¤Æ¤¤¤ë¤è¤¦¤À¡£");
-#else
-                               msg_print("You feel something focusing on your mind.");
-#endif
-
+                               msg_print(_("²¿¤«¤¬¤¢¤Ê¤¿¤ÎÀº¿À¤ËÇ°¤òÊü¤Ã¤Æ¤¤¤ë¤è¤¦¤À¡£", "You feel something focusing on your mind."));
                        }
                        else
                        {
-#ifdef JP
-msg_format("%^s¤¬¤¢¤Ê¤¿¤ÎÆ·¤ò¤¸¤Ã¤È¸«¤Æ¤¤¤ë¡£", m_name);
-#else
-                               msg_format("%^s looks deep into your eyes.", m_name);
-#endif
-
+                               msg_format(_("%^s¤¬¤¢¤Ê¤¿¤ÎÆ·¤ò¤¸¤Ã¤È¸«¤Æ¤¤¤ë¡£", "%^s looks deep into your eyes."), m_name);
                        }
 
                        dam = damroll(12, 12);
@@ -2681,17 +2139,11 @@ msg_format("%^s
                {
                        if (!direct) return (FALSE);
                        disturb(1, 1);
-#ifdef JP
-if (blind) msg_format("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", m_name);
-#else
-                       if (blind) msg_format("%^s mumbles.", m_name);
-#endif
 
-#ifdef JP
-else msg_format("%^s¤¬¤¢¤Ê¤¿¤ò»Ø¤µ¤·¤Æ¼ö¤Ã¤¿¡£", m_name);
-#else
-                       else msg_format("%^s points at you and curses.", m_name);
-#endif
+                       if (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, learnable);
@@ -2703,17 +2155,11 @@ else msg_format("%^s
                {
                        if (!direct) return (FALSE);
                        disturb(1, 1);
-#ifdef JP
-if (blind) msg_format("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", m_name);
-#else
-                       if (blind) msg_format("%^s mumbles.", m_name);
-#endif
 
-#ifdef JP
-else msg_format("%^s¤¬¤¢¤Ê¤¿¤ò»Ø¤µ¤·¤Æ¶²¤í¤·¤²¤Ë¼ö¤Ã¤¿¡£", m_name);
-#else
-                       else msg_format("%^s points at you and curses horribly.", m_name);
-#endif
+                       if (blind)
+                               msg_format(_("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."), m_name);
+                       else
+                               msg_format(_("%^s¤¬¤¢¤Ê¤¿¤ò»Ø¤µ¤·¤Æ¶²¤í¤·¤²¤Ë¼ö¤Ã¤¿¡£", "%^s points at you and curses horribly."), m_name);
 
                        dam = damroll(8, 8);
                        breath(y, x, m_idx, GF_CAUSE_2, dam, 0, FALSE, MS_CAUSE_2, learnable);
@@ -2725,17 +2171,11 @@ else msg_format("%^s
                {
                        if (!direct) return (FALSE);
                        disturb(1, 1);
-#ifdef JP
-if (blind) msg_format("%^s¤¬²¿¤«¤òÂçÀ¼¤Ç¶«¤ó¤À¡£", m_name);
-#else
-                       if (blind) msg_format("%^s mumbles loudly.", m_name);
-#endif
 
-#ifdef JP
-else msg_format("%^s¤¬¤¢¤Ê¤¿¤ò»Ø¤µ¤·¤Æ¶²¤í¤·¤²¤Ë¼öʸ¤ò¾§¤¨¤¿¡ª", m_name);
-#else
-                       else msg_format("%^s points at you, incanting terribly!", m_name);
-#endif
+                       if (blind)
+                               msg_format(_("%^s¤¬²¿¤«¤òÂçÀ¼¤Ç¶«¤ó¤À¡£", "%^s mumbles loudly."), m_name);
+                       else
+                               msg_format(_("%^s¤¬¤¢¤Ê¤¿¤ò»Ø¤µ¤·¤Æ¶²¤í¤·¤²¤Ë¼öʸ¤ò¾§¤¨¤¿¡ª", "%^s points at you, incanting terribly!"), m_name);
 
                        dam = damroll(10, 15);
                        breath(y, x, m_idx, GF_CAUSE_3, dam, 0, FALSE, MS_CAUSE_3, learnable);
@@ -2747,17 +2187,12 @@ else msg_format("%^s
                {
                        if (!direct) return (FALSE);
                        disturb(1, 1);
-#ifdef JP
-if (blind) msg_format("%^s¤¬¡Ö¤ªÁ°¤Ï´û¤Ë»à¤ó¤Ç¤¤¤ë¡×¤È¶«¤ó¤À¡£", m_name);
-#else
-                       if (blind) msg_format("%^s screams the word 'DIE!'", m_name);
-#endif
 
-#ifdef JP
-else msg_format("%^s¤¬¤¢¤Ê¤¿¤ÎÈ빦¤òÆͤ¤¤Æ¡Ö¤ªÁ°¤Ï´û¤Ë»à¤ó¤Ç¤¤¤ë¡×¤È¶«¤ó¤À¡£", m_name);
-#else
-                       else msg_format("%^s points at you, screaming the word DIE!", m_name);
-#endif
+                       if (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);
 
                        dam = damroll(15, 15);
                        breath(y, x, m_idx, GF_CAUSE_4, dam, 0, FALSE, MS_CAUSE_4, learnable);
@@ -2769,17 +2204,11 @@ else msg_format("%^s
                {
                        if (!direct) return (FALSE);
                        disturb(1, 1);
-#ifdef JP
-if (blind) msg_format("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", m_name);
-#else
-                       if (blind) msg_format("%^s mumbles.", m_name);
-#endif
 
-#ifdef JP
-else msg_format("%^s¤¬¥¢¥·¥Ã¥É¡¦¥Ü¥ë¥È¤Î¼öʸ¤ò¾§¤¨¤¿¡£", m_name);
-#else
-                       else msg_format("%^s casts a acid bolt.", m_name);
-#endif
+                       if (blind)
+                               msg_format(_("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."), m_name);
+                       else
+                               msg_format(_("%^s¤¬¥¢¥·¥Ã¥É¡¦¥Ü¥ë¥È¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a acid bolt."), m_name);
 
                        dam = (damroll(7, 8) + (rlev / 3)) * ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 1);
                        bolt(m_idx, GF_ACID, dam, MS_BOLT_ACID, learnable);
@@ -2793,17 +2222,11 @@ else msg_format("%^s
                {
                        if (!direct) return (FALSE);
                        disturb(1, 1);
-#ifdef JP
-if (blind) msg_format("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", m_name);
-#else
-                       if (blind) msg_format("%^s mumbles.", m_name);
-#endif
 
-#ifdef JP
-else msg_format("%^s¤¬¥µ¥ó¥À¡¼¡¦¥Ü¥ë¥È¤Î¼öʸ¤ò¾§¤¨¤¿¡£", m_name);
-#else
-                       else msg_format("%^s casts a lightning bolt.", m_name);
-#endif
+                       if (blind)
+                               msg_format(_("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."), m_name);
+                       else
+                               msg_format(_("%^s¤¬¥µ¥ó¥À¡¼¡¦¥Ü¥ë¥È¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a lightning bolt."), m_name);
 
                        dam = (damroll(4, 8) + (rlev / 3)) * ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 1);
                        bolt(m_idx, GF_ELEC, dam, MS_BOLT_ELEC, learnable);
@@ -2817,17 +2240,11 @@ else msg_format("%^s
                {
                        if (!direct) return (FALSE);
                        disturb(1, 1);
-#ifdef JP
-if (blind) msg_format("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", m_name);
-#else
-                       if (blind) msg_format("%^s mumbles.", m_name);
-#endif
 
-#ifdef JP
-else msg_format("%^s¤¬¥Õ¥¡¥¤¥¢¡¦¥Ü¥ë¥È¤Î¼öʸ¤ò¾§¤¨¤¿¡£", m_name);
-#else
-                       else msg_format("%^s casts a fire bolt.", m_name);
-#endif
+                       if (blind)
+                               msg_format(_("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."), m_name);
+                       else
+                               msg_format(_("%^s¤¬¥Õ¥¡¥¤¥¢¡¦¥Ü¥ë¥È¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a fire bolt."), m_name);
 
                        dam = (damroll(9, 8) + (rlev / 3)) * ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 1);
                        bolt(m_idx, GF_FIRE, dam, MS_BOLT_FIRE, learnable);
@@ -2841,17 +2258,11 @@ else msg_format("%^s
                {
                        if (!direct) return (FALSE);
                        disturb(1, 1);
-#ifdef JP
-if (blind) msg_format("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", m_name);
-#else
-                       if (blind) msg_format("%^s mumbles.", m_name);
-#endif
 
-#ifdef JP
-else msg_format("%^s¤¬¥¢¥¤¥¹¡¦¥Ü¥ë¥È¤Î¼öʸ¤ò¾§¤¨¤¿¡£", m_name);
-#else
-                       else msg_format("%^s casts a frost bolt.", m_name);
-#endif
+            if (blind)
+                msg_format(_("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."), m_name);
+            else
+                msg_format(_("%^s¤¬¥¢¥¤¥¹¡¦¥Ü¥ë¥È¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a frost bolt."), m_name);
 
                        dam = (damroll(6, 8) + (rlev / 3)) * ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 1);
                        bolt(m_idx, GF_COLD, dam, MS_BOLT_COLD, learnable);
@@ -2864,17 +2275,11 @@ else msg_format("%^s
                case 128+20:
                {
                        disturb(1, 1);
-#ifdef JP
-if (blind) msg_format("%^s¤¬²¿¤«¤òÎ϶¯¤¯¤Ä¤Ö¤ä¤¤¤¿¡£", m_name);
-#else
-                       if (blind) msg_format("%^s mumbles powerfully.", m_name);
-#endif
 
-#ifdef JP
-else msg_format("%^s¤¬¥¹¥¿¡¼¥Ð¡¼¥¹¥È¤Î¼öʸ¤òÇ°¤¸¤¿¡£", m_name);
-#else
-                       else msg_format("%^s invokes a starburst.", m_name);
-#endif
+            if (blind)
+                msg_format(_("%^s¤¬²¿¤«¤òÎ϶¯¤¯¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles powerfully."), m_name);
+            else 
+                msg_format(_("%^s¤¬¥¹¥¿¡¼¥Ð¡¼¥¹¥È¤Î¼öʸ¤òÇ°¤¸¤¿¡£", "%^s invokes a starburst."), m_name);
 
                        dam = (rlev * 4) + 50 + damroll(10, 10);
                        breath(y, x, m_idx, GF_LITE, dam, 4, FALSE, MS_STARBURST, learnable);
@@ -2887,17 +2292,11 @@ else msg_format("%^s
                {
                        if (!direct) return (FALSE);
                        disturb(1, 1);
-#ifdef JP
-if (blind) msg_format("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", m_name);
-#else
-                       if (blind) msg_format("%^s mumbles.", m_name);
-#endif
 
-#ifdef JP
-else msg_format("%^s¤¬ÃϹö¤ÎÌð¤Î¼öʸ¤ò¾§¤¨¤¿¡£", m_name);
-#else
-                       else msg_format("%^s casts a nether bolt.", m_name);
-#endif
+            if (blind)
+                msg_format(_("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."), m_name);
+            else
+                msg_format(_("%^s¤¬ÃϹö¤ÎÌð¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a nether bolt."), m_name);
 
                        dam = 30 + damroll(5, 5) + (rlev * 4) / ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 3);
                        bolt(m_idx, GF_NETHER, dam, MS_BOLT_NETHER, learnable);
@@ -2911,17 +2310,11 @@ else msg_format("%^s
                {
                        if (!direct) return (FALSE);
                        disturb(1, 1);
-#ifdef JP
-if (blind) msg_format("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", m_name);
-#else
-                       if (blind) msg_format("%^s mumbles.", m_name);
-#endif
 
-#ifdef JP
-else msg_format("%^s¤¬¥¦¥©¡¼¥¿¡¼¡¦¥Ü¥ë¥È¤Î¼öʸ¤ò¾§¤¨¤¿¡£", m_name);
-#else
-                       else msg_format("%^s casts a water bolt.", m_name);
-#endif
+            if (blind)
+                msg_format(_("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."), m_name);
+            else 
+                msg_format(_("%^s¤¬¥¦¥©¡¼¥¿¡¼¡¦¥Ü¥ë¥È¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a water bolt."), m_name);
 
                        dam = damroll(10, 10) + (rlev * 3 / ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 3));
                        bolt(m_idx, GF_WATER, dam, MS_BOLT_WATER, learnable);
@@ -2934,17 +2327,10 @@ else msg_format("%^s
                {
                        if (!direct) return (FALSE);
                        disturb(1, 1);
-#ifdef JP
-if (blind) msg_format("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", m_name);
-#else
-                       if (blind) msg_format("%^s mumbles.", m_name);
-#endif
-
-#ifdef JP
-else msg_format("%^s¤¬ËâÎϤÎÌð¤Î¼öʸ¤ò¾§¤¨¤¿¡£", m_name);
-#else
-                       else msg_format("%^s casts a mana bolt.", m_name);
-#endif
+            if (blind) 
+                msg_format(_("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles."), m_name);
+            else
+                msg_format(_("%^s¤¬ËâÎϤÎÌð¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a mana bolt."), m_name);
 
                        dam = randint1(rlev * 7 / 2) + 50;
                        bolt(m_idx, GF_MANA, dam, MS_BOLT_MANA, learnable);
diff --git a/src/mspells4.c b/src/mspells4.c
new file mode 100644 (file)
index 0000000..0b49330
--- /dev/null
@@ -0,0 +1,234 @@
+#include "angband.h"
+
+void spell_RF4_SHRIEK(int m_idx, cptr m_name)
+{
+    disturb(1, 1);
+    msg_format(_("%^s¤¬¤«¤ó¹â¤¤¶âÀÚ¤êÀ¼¤ò¤¢¤²¤¿¡£", "%^s makes a high pitched shriek."), m_name);
+    aggravate_monsters(m_idx);
+}
+
+void spell_RF4_DISPEL(bool blind, cptr m_name)
+{
+    disturb(1, 1);
+
+    if (blind)
+    {
+        msg_format(_("%^s¤¬²¿¤«¤òÎ϶¯¤¯¤Ä¤Ö¤ä¤¤¤¿¡£", "%^s mumbles powerfully."), 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);
+
+#ifdef JP
+    if ((p_ptr->pseikaku == SEIKAKU_COMBAT) || (inventory[INVEN_BOW].name1 == ART_CRIMSON))
+        msg_print("¤ä¤ê¤ä¤¬¤Ã¤¿¤Ê¡ª");
+#endif
+    learn_spell(MS_DISPEL);
+}
+
+void spell_RF4_ROCKET(bool blind, cptr m_name, monster_type* m_ptr, int y, int x, int m_idx, bool learnable)
+{
+    int dam;
+
+    disturb(1, 1);
+    if (blind)
+    {
+        msg_format(_("%^s¤¬²¿¤«¤ò¼Í¤Ã¤¿¡£", "%^s shoots something."), m_name);
+    }
+    else
+    {
+        msg_format(_("%^s¤¬¥í¥±¥Ã¥È¤òȯ¼Í¤·¤¿¡£", "%^s fires a rocket."), m_name);
+    }
+
+    dam = ((m_ptr->hp / 4) > 800 ? 800 : (m_ptr->hp / 4));
+    breath(y, x, m_idx, GF_ROCKET,
+        dam, 2, FALSE, MS_ROCKET, learnable);
+    update_smart_learn(m_idx, DRS_SHARD);
+}
+
+void spell_RF4_SHOOT(bool blind, cptr m_name, monster_race* r_ptr, int m_idx, bool learnable)
+{
+    int dam;
+    disturb(1, 1);
+    if (blind)
+    {
+        msg_format(_("%^s¤¬´ñ̯¤Ê²»¤òȯ¤·¤¿¡£", "%^s makes a strange noise."), m_name);
+    }
+    else
+    {
+        msg_format(_("%^s¤¬Ìð¤òÊü¤Ã¤¿¡£", "%^s fires an arrow."), m_name);
+    }
+
+    dam = damroll(r_ptr->blow[0].d_dice, r_ptr->blow[0].d_side);
+    bolt(m_idx, GF_ARROW, dam, MS_SHOOT, learnable);
+    update_smart_learn(m_idx, DRS_REFLECT);
+}
+
+void spell_RF4_BREATH(int GF_TYPE, bool blind, cptr m_name, monster_type* m_ptr, int y, int x, int m_idx, bool learnable)
+{
+    int dam, ms_type, drs_type;
+    cptr type_s;
+    bool smart_learn = TRUE;
+
+    switch (GF_TYPE)
+    {
+        case GF_ACID:
+            dam = ((m_ptr->hp / 3) > 1600 ? 1600 : (m_ptr->hp / 3));
+            type_s = _("»À", "acid");
+            ms_type = MS_BR_ACID;
+            drs_type = DRS_ACID;
+            break;
+        case GF_ELEC:
+            dam = ((m_ptr->hp / 3) > 1600 ? 1600 : (m_ptr->hp / 3));
+            type_s = _("°ðºÊ", "lightning");
+            ms_type = MS_BR_ELEC;
+            drs_type = DRS_ELEC;
+            break;
+        case GF_FIRE:
+            dam = ((m_ptr->hp / 3) > 1600 ? 1600 : (m_ptr->hp / 3));
+            type_s = _("²Ð±ê", "fire");
+            ms_type = MS_BR_FIRE;
+            drs_type = DRS_FIRE;
+            break;
+        case GF_COLD:
+            dam = ((m_ptr->hp / 3) > 1600 ? 1600 : (m_ptr->hp / 3));
+            type_s = _("Î䵤", "frost");
+            ms_type = MS_BR_COLD;
+            drs_type = DRS_COLD;
+            break;
+        case GF_POIS:
+            dam = ((m_ptr->hp / 3) > 800 ? 800 : (m_ptr->hp / 3));
+            type_s = _("¥¬¥¹", "gas");
+            ms_type = MS_BR_POIS;
+            drs_type = DRS_POIS;
+            break;
+        case GF_NETHER:
+            dam = ((m_ptr->hp / 6) > 550 ? 550 : (m_ptr->hp / 6));
+            type_s = _("ÃϹö", "nether");
+            ms_type = MS_BR_NETHER;
+            drs_type = DRS_NETH;
+            break;
+        case GF_LITE:
+            dam = ((m_ptr->hp / 6) > 400 ? 400 : (m_ptr->hp / 6));
+            type_s = _("Á®¸÷", "light");
+            ms_type = MS_BR_LITE;
+            drs_type = DRS_LITE;
+            break;
+        case GF_DARK:
+            dam = ((m_ptr->hp / 6) > 400 ? 400 : (m_ptr->hp / 6));
+            type_s = _("°Å¹õ", "darkness");
+            ms_type = MS_BR_DARK;
+            drs_type = DRS_DARK;
+            break;
+        case GF_CONFUSION:
+            dam = ((m_ptr->hp / 6) > 450 ? 450 : (m_ptr->hp / 6));
+            type_s = _("º®Íð", "confusion");
+            ms_type = MS_BR_CONF;
+            drs_type = DRS_CONF;
+            break;
+        case GF_SOUND:
+            dam = ((m_ptr->hp / 6) > 450 ? 450 : (m_ptr->hp / 6));
+            type_s = _("¹ì²»", "sound");
+            ms_type = MS_BR_SOUND;
+            drs_type = DRS_SOUND;
+            break;
+        case GF_CHAOS:
+            dam = ((m_ptr->hp / 6) > 600 ? 600 : (m_ptr->hp / 6));
+            type_s = _("¥«¥ª¥¹", "chaos");
+            ms_type = MS_BR_CHAOS;
+            drs_type = DRS_CHAOS;
+            break;
+        case GF_DISENCHANT:
+            dam = ((m_ptr->hp / 6) > 500 ? 500 : (m_ptr->hp / 6));
+            type_s = _("Îô²½", "disenchantment");
+            ms_type = MS_BR_DISEN;
+            drs_type = DRS_DISEN;
+            break;
+        case GF_NEXUS:
+            dam = ((m_ptr->hp / 3) > 250 ? 250 : (m_ptr->hp / 3));
+            type_s = _("°ø²Ìº®Íð", "nexus");
+            ms_type = MS_BR_NEXUS;
+            drs_type = DRS_NEXUS;
+            break;
+        case GF_TIME:
+            dam = ((m_ptr->hp / 3) > 150 ? 150 : (m_ptr->hp / 3));
+            type_s = _("»þ´ÖµÕž", "time");
+            ms_type = MS_BR_TIME;
+            smart_learn = FALSE;
+            break;
+        case GF_INERTIA:
+            dam = ((m_ptr->hp / 6) > 200 ? 200 : (m_ptr->hp / 6));
+            type_s = _("ÃÙÆß", "inertia");
+            ms_type = MS_BR_INERTIA;
+            smart_learn = FALSE;
+            break;
+        case GF_GRAVITY:
+            dam = ((m_ptr->hp / 3) > 200 ? 200 : (m_ptr->hp / 3));
+            type_s = _("½ÅÎÏ", "gravity");
+            ms_type = MS_BR_GRAVITY;
+            smart_learn = FALSE;
+            break;
+        case GF_SHARDS:
+            dam = ((m_ptr->hp / 6) > 500 ? 500 : (m_ptr->hp / 6));
+            type_s = _("ÇËÊÒ", "shards");
+            ms_type = MS_BR_SHARDS;
+            drs_type = DRS_SHARD;
+            break;
+        case GF_PLASMA:
+            dam = ((m_ptr->hp / 6) > 150 ? 150 : (m_ptr->hp / 6));
+            type_s = _("¥×¥é¥º¥Þ", "plasma");
+            ms_type = MS_BR_PLASMA;
+            smart_learn = FALSE;
+            break;
+        case GF_FORCE:
+            dam = ((m_ptr->hp / 6) > 200 ? 200 : (m_ptr->hp / 6));
+            type_s = _("¥Õ¥©¡¼¥¹", "force");
+            ms_type = MS_BR_FORCE;
+            smart_learn = FALSE;
+            break;
+        case GF_MANA:
+            dam = ((m_ptr->hp / 3) > 250 ? 250 : (m_ptr->hp / 3));
+            type_s = _("ËâÎÏ", "mana");
+            ms_type = MS_BR_MANA;
+            smart_learn = FALSE;
+            break;
+        case GF_NUKE:
+            dam = ((m_ptr->hp / 3) > 800 ? 800 : (m_ptr->hp / 3));
+            type_s = _("Êü¼ÍÀ­ÇÑ´þʪ", "toxic waste");
+            ms_type = MS_BR_NUKE;
+            drs_type = DRS_POIS;
+            break;
+        case GF_DISINTEGRATE:
+            dam = ((m_ptr->hp / 6) > 150 ? 150 : (m_ptr->hp / 6));
+            type_s = _("ʬ²ò", "disintegration");
+            ms_type = MS_BR_DISI;
+            smart_learn = FALSE;
+            break;
+        default:
+            break;
+    }
+
+    disturb(1, 1);
+    if (m_ptr->r_idx == MON_JAIAN && GF_TYPE == GF_SOUND)
+    {
+        msg_format(_("¡Ö¥Ü¥©¥¨¡Á¡Á¡Á¡Á¡Á¡Á¡×", "'Booooeeeeee'"));
+    }
+    else if (m_ptr->r_idx == MON_BOTEI && GF_TYPE == GF_SHARDS)
+    {
+        msg_format(_("¡Ö¥ÜÄë¥Ó¥ë¥«¥Ã¥¿¡¼¡ª¡ª¡ª¡×", "'Boty-Build cutter!!!'"));
+    }
+    else if (blind)
+    {
+        msg_format(_("%^s¤¬²¿¤«¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "%^s breathes."), m_name);
+    }
+    else
+    {
+        msg_format(_("%^s¤¬%^s¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "%^s breathes %^s."), m_name, type_s);
+    }
+
+    breath(y, x, m_idx, GF_TYPE, dam, 0, TRUE, ms_type, learnable);
+    if (smart_learn) update_smart_learn(m_idx, drs_type);
+}
\ No newline at end of file