OSDN Git Service

refactor: extract ball functions in make_attack_spell
authordis- <dis.rogue@gmail.com>
Mon, 17 Feb 2014 10:07:54 +0000 (19:07 +0900)
committerdis- <dis.rogue@gmail.com>
Tue, 18 Feb 2014 09:27:11 +0000 (18:27 +0900)
src/externs.h
src/mspells1.c
src/mspells4.c

index 5d1672c..70aee3d 100644 (file)
@@ -1587,6 +1587,9 @@ 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);
+extern void spell_RF4_BA_CHAO(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable);
+extern void spell_RF4_BA_NUKE(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable);
+extern void spell_RF5_BA_ACID(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable);
 
 /* hissatsu.c */
 extern void hissatsu_info(char *p, int power);
index 2d46c9c..dcd789c 100644 (file)
@@ -1839,79 +1839,11 @@ bool make_attack_spell(int m_idx)
         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:
-               {
-                       disturb(1, 1);
-
-                       if (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);
-                       breath(y, x, m_idx, GF_NUKE, dam, 2, FALSE, MS_BALL_NUKE, learnable);
-                       update_smart_learn(m_idx, DRS_POIS);
-                       break;
-               }
-
+        case 96 + 28: spell_RF4_BA_NUKE(blind, m_name, r_ptr, rlev, y, x, m_idx, learnable); break;   /* RF4_BA_NUKE */
         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:
-               {
-                       disturb(1, 1);
-
-                       if (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);
-                       breath(y, x, m_idx, GF_CHAOS, dam, 4, FALSE, MS_BALL_CHAOS, learnable);
-                       update_smart_learn(m_idx, DRS_CHAOS);
-                       break;
-               }
-
+        case 96 + 30: spell_RF4_BA_CHAO(blind, m_name, r_ptr, rlev, y, x, m_idx, learnable); break;  /* RF4_BA_CHAO */
         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:
-               {
-                       disturb(1, 1);
-
-                       if (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)
-                       {
-                               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, learnable);
-                       update_smart_learn(m_idx, DRS_ACID);
-                       break;
-               }
+        case 128 + 0: spell_RF5_BA_ACID(GF_DISINTEGRATE, blind, m_name, m_ptr, y, x, m_idx, learnable); break;    /* RF4_BR_DISI */
 
                /* RF5_BA_ELEC */
                case 128+1:
index 0b49330..1d4adb6 100644 (file)
@@ -231,4 +231,72 @@ void spell_RF4_BREATH(int GF_TYPE, bool blind, cptr m_name, monster_type* m_ptr,
 
     breath(y, x, m_idx, GF_TYPE, dam, 0, TRUE, ms_type, learnable);
     if (smart_learn) update_smart_learn(m_idx, drs_type);
+}
+
+void spell_RF4_BA_CHAO(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable)
+{
+    int dam;
+    disturb(1, 1);
+
+    if (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);
+
+    breath(y, x, m_idx, GF_CHAOS, dam, 4, FALSE, MS_BALL_CHAOS, learnable);
+    update_smart_learn(m_idx, DRS_CHAOS);
+}
+
+void spell_RF4_BA_NUKE(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable)
+{
+    int dam;
+    disturb(1, 1);
+
+    if (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);
+
+    breath(y, x, m_idx, GF_NUKE, dam, 2, FALSE, MS_BALL_NUKE, learnable);
+    update_smart_learn(m_idx, DRS_POIS);
+}
+
+void spell_RF5_BA_ACID(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable)
+{
+    int dam, rad;
+    disturb(1, 1);
+
+    if (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)
+    {
+        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, learnable);
+    update_smart_learn(m_idx, DRS_ACID);
 }
\ No newline at end of file