OSDN Git Service

refactor: integrate monst_breath_monst() into breath
authordis- <dis.rogue@gmail.com>
Wed, 19 Feb 2014 07:29:45 +0000 (16:29 +0900)
committerdis- <dis.rogue@gmail.com>
Wed, 19 Feb 2014 07:29:45 +0000 (16:29 +0900)
src/externs.h
src/mspells1.c
src/mspells2.c
src/mspells4.c

index 91be5db..ea131d1 100644 (file)
@@ -1524,19 +1524,6 @@ extern int riding_exp_level(int riding_exp);
 extern int spell_exp_level(int spell_exp);
 extern void display_rumor(bool ex);
 
-/* mspells1.c */
-extern bool clean_shot(int y1, int x1, int y2, int x2, bool is_friend);
-extern bool summon_possible(int y1, int x1);
-extern bool raise_possible(monster_type *m_ptr);
-extern bool dispel_check(int m_idx);
-extern bool spell_is_inate(u16b spell);
-extern bool make_attack_spell(int m_idx);
-extern void beam(int m_idx, int typ, int dam_hp, int monspell);
-
-/* mspells2.c */
-extern void get_project_point(int sy, int sx, int *ty, int *tx, int flg);
-extern bool monst_spell_monst(int m_idx);
-
 /* artifact.c */
 extern void one_sustain(object_type *o_ptr);
 extern void one_high_resistance(object_type *o_ptr);
@@ -1574,11 +1561,21 @@ extern void do_cmd_mind_browse(void);
 
 /* mane.c */
 extern bool do_cmd_mane(bool baigaesi);
+
+/* mspells1.c */
+extern bool clean_shot(int y1, int x1, int y2, int x2, bool is_friend);
+extern bool summon_possible(int y1, int x1);
+extern bool raise_possible(monster_type *m_ptr);
+extern bool dispel_check(int m_idx);
+extern bool spell_is_inate(u16b spell);
+extern bool make_attack_spell(int m_idx);
+extern void beam(int m_idx, int typ, int dam_hp, int monspell);
 extern void bolt(int m_idx, int typ, int dam_hp, int monspell);
-extern void breath(int y, int x, int m_idx, int typ, int dam_hp, int rad, bool breath, int monspell);
+extern void breath(int y, int x, int m_idx, int typ, int dam_hp, int rad, bool breath, int monspell, int spell_type);
 
 /* mspells2.c */
-extern void monst_breath_monst(int m_idx, int y, int x, int typ, int dam_hp, int rad, bool breath, int monspell);
+extern void get_project_point(int sy, int sx, int *ty, int *tx, int flg);
+extern bool monst_spell_monst(int m_idx);
 
 /* mspells3.c */
 extern bool do_cmd_cast_learned(void);
index 2dac06d..64391bd 100644 (file)
@@ -547,15 +547,25 @@ void beam(int m_idx, int typ, int dam_hp, int monspell)
  * @param rad È¾·Â
  * @param breath TRUE¤Ê¤é¤Ð¥Ö¥ì¥¹½èÍý¡¢FALSE¤Ê¤é¤Ð¥Ü¡¼¥ë½èÍý
  * @param monspell ¥â¥ó¥¹¥¿¡¼ËâË¡¤ÎID
+ * @param spell_type ¥â¥ó¥¹¥¿¡¼¤«¤é¥â¥ó¥¹¥¿¡¼¤Ø·â¤Ä¤Ê¤éSPELL_MON_TO_MON¡¢¥â¥ó¥¹¥¿¡¼¤«¤é¥×¥ì¥¤¥ä¡¼¤Ê¤éSPELL_MON_TO_PLAYER
  * @return ¤Ê¤·
  */
-void breath(int y, int x, int m_idx, int typ, int dam_hp, int rad, bool breath, int monspell)
+void breath(int y, int x, int m_idx, int typ, int dam_hp, int rad, bool breath, int monspell, int spell_type)
 {
-       int flg = PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL | PROJECT_PLAYER;
-
-       monster_type *m_ptr = &m_list[m_idx];
-       monster_race *r_ptr = &r_info[m_ptr->r_idx];
+    monster_type *m_ptr = &m_list[m_idx];
+    monster_race *r_ptr = &r_info[m_ptr->r_idx];
     bool learnable = spell_learnable(m_idx);
+       int flg;
+
+    switch (spell_type)
+    {
+        case SPELL_MON_TO_MON:
+            flg = PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL;
+            break;
+        case SPELL_MON_TO_PLAYER:
+            flg = PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL | PROJECT_PLAYER;
+            break;
+    }
 
        /* Determine the radius of the blast */
        if ((rad < 1) && breath) rad = (r_ptr->flags2 & (RF2_POWERFUL)) ? 3 : 2;
index aba7e39..c93145e 100644 (file)
 
 #include "angband.h"
 
-
-/*!
- * @brief ¥â¥ó¥¹¥¿¡¼¤¬Å¨ÂÐ¥â¥ó¥¹¥¿¡¼¤Ë¥Ö¥ì¥¹/¥Ü¡¼¥ë·¿Æü쵻ǽ¤òÊü¤Ä½èÍý /
- * Monster casts a breath (or ball) attack at another monster.
- * @param m_idx Æü쵻ǽ¤ò»È¤¦¥â¥ó¥¹¥¿¡¼¤Î»²¾ÈID
- * @param y ÌÜɸ¤ÎYºÂɸ
- * @param x ÌÜɸ¤ÎXºÂɸ
- * @param typ ¸ú²Ì°À­¤ÎID
- * @param dam_hp °ÒÎÏ
- * @param rad È¾·Â
- * @param breath TRUE¤Ê¤é¤Ð¥Ö¥ì¥¹ / FALSE¤Ê¤é¤Ð¥Ü¡¼¥ë
- * @param monspell Æü칶·â¤ÎID
- * @return ¤Ê¤·
- * @details
- * Pass over any monsters that may be in the way
- * Affect grids, objects, monsters, and the player
- */
-void monst_breath_monst(int m_idx, int y, int x, int typ, int dam_hp, int rad, bool breath, int monspell)
-{
-       int flg = PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL;
-    bool learnable = spell_learnable(m_idx);
-
-       monster_type *m_ptr = &m_list[m_idx];
-       monster_race *r_ptr = &r_info[m_ptr->r_idx];
-
-       /* Determine the radius of the blast */
-       if (rad < 1 && breath) rad = (r_ptr->flags2 & RF2_POWERFUL) ? 3 : 2;
-
-       /* Handle breath attacks */
-       if (breath) rad = 0 - rad;
-
-       switch (typ)
-       {
-       case GF_ROCKET:
-               flg |= PROJECT_STOP;
-               break;
-       case GF_DRAIN_MANA:
-       case GF_MIND_BLAST:
-       case GF_BRAIN_SMASH:
-       case GF_CAUSE_1:
-       case GF_CAUSE_2:
-       case GF_CAUSE_3:
-       case GF_CAUSE_4:
-       case GF_HAND_DOOM:
-               flg |= (PROJECT_HIDE | PROJECT_AIMED);
-               break;
-       }
-
-       (void)project(m_idx, rad, y, x, dam_hp, typ, flg, (learnable ? monspell : -1));
-}
-
-
 /*!
  * @brief ¥â¥ó¥¹¥¿¡¼¤¬Å¨ÂÐ¥â¥ó¥¹¥¿¡¼¤Ë¥Ü¥ë¥È·¿Æü쵻ǽ¤òÊü¤Ä½èÍý /
  * Monster casts a bolt at another monster
@@ -906,8 +854,7 @@ bool monst_spell_monst(int m_idx)
                }
 
                dam = ((m_ptr->hp / 3) > 1600 ? 1600 : (m_ptr->hp / 3));
-               monst_breath_monst(m_idx, y, x, GF_ACID,
-                                  dam,0, TRUE, MS_BR_ACID);
+               breath(y, x, m_idx,GF_ACID,dam, 0, TRUE, MS_BR_ACID, SPELL_MON_TO_MON);
 
                break;
 
@@ -937,8 +884,7 @@ bool monst_spell_monst(int m_idx)
                }
 
                dam = ((m_ptr->hp / 3) > 1600 ? 1600 : (m_ptr->hp / 3));
-               monst_breath_monst(m_idx, y, x, GF_ELEC,
-                                  dam,0, TRUE, MS_BR_ELEC);
+        breath(y, x, m_idx,GF_ELEC, dam, 0, TRUE, MS_BR_ELEC, SPELL_MON_TO_MON);
 
                break;
 
@@ -968,8 +914,7 @@ bool monst_spell_monst(int m_idx)
                }
 
                dam = ((m_ptr->hp / 3) > 1600 ? 1600 : (m_ptr->hp / 3));
-               monst_breath_monst(m_idx, y, x, GF_FIRE,
-                                  dam,0, TRUE, MS_BR_FIRE);
+        breath(y, x, m_idx,GF_FIRE, dam, 0, TRUE, MS_BR_FIRE, SPELL_MON_TO_MON);
 
                break;
 
@@ -999,8 +944,7 @@ bool monst_spell_monst(int m_idx)
                }
 
                dam = ((m_ptr->hp / 3) > 1600 ? 1600 : (m_ptr->hp / 3));
-               monst_breath_monst(m_idx, y, x, GF_COLD,
-                                  dam,0, TRUE, MS_BR_COLD);
+        breath(y, x, m_idx,GF_COLD, dam, 0, TRUE, MS_BR_COLD, SPELL_MON_TO_MON);
                break;
 
        /* RF4_BR_POIS */
@@ -1029,8 +973,7 @@ bool monst_spell_monst(int m_idx)
                }
 
                dam = ((m_ptr->hp / 3) > 800 ? 800 : (m_ptr->hp / 3));
-               monst_breath_monst(m_idx, y, x, GF_POIS,
-                                  dam,0, TRUE, MS_BR_POIS);
+        breath(y, x, m_idx,GF_POIS, dam, 0, TRUE, MS_BR_POIS, SPELL_MON_TO_MON);
 
                break;
 
@@ -1060,8 +1003,7 @@ bool monst_spell_monst(int m_idx)
                }
 
                dam = ((m_ptr->hp / 6) > 550 ? 550 : (m_ptr->hp / 6));
-               monst_breath_monst(m_idx, y, x, GF_NETHER,
-                                  dam,0, TRUE, MS_BR_NETHER);
+        breath(y, x, m_idx,GF_NETHER, dam, 0, TRUE, MS_BR_NETHER, SPELL_MON_TO_MON);
 
                break;
 
@@ -1091,8 +1033,7 @@ bool monst_spell_monst(int m_idx)
                }
 
                dam = ((m_ptr->hp / 6) > 400 ? 400 : (m_ptr->hp / 6));
-               monst_breath_monst(m_idx, y, x, GF_LITE,
-                                  dam,0, TRUE, MS_BR_LITE);
+        breath(y, x, m_idx,GF_LITE, dam, 0, TRUE, MS_BR_LITE, SPELL_MON_TO_MON);
 
                break;
 
@@ -1122,8 +1063,7 @@ bool monst_spell_monst(int m_idx)
                }
 
                dam = ((m_ptr->hp / 6) > 400 ? 400 : (m_ptr->hp / 6));
-               monst_breath_monst(m_idx, y, x, GF_DARK,
-                                  dam,0, TRUE, MS_BR_DARK);
+        breath(y, x, m_idx,GF_DARK, dam, 0, TRUE, MS_BR_DARK, SPELL_MON_TO_MON);
 
                break;
 
@@ -1153,8 +1093,7 @@ bool monst_spell_monst(int m_idx)
                }
 
                dam = ((m_ptr->hp / 6) > 450 ? 450 : (m_ptr->hp / 6));
-               monst_breath_monst(m_idx, y, x, GF_CONFUSION,
-                                  dam,0, TRUE, MS_BR_CONF);
+        breath(y, x, m_idx,GF_CONFUSION, dam, 0, TRUE, MS_BR_CONF, SPELL_MON_TO_MON);
 
                break;
 
@@ -1188,8 +1127,7 @@ bool monst_spell_monst(int m_idx)
                }
 
                dam = ((m_ptr->hp / 6) > 450 ? 450 : (m_ptr->hp / 6));
-               monst_breath_monst(m_idx, y, x, GF_SOUND,
-                                  dam,0, TRUE, MS_BR_SOUND);
+        breath(y, x, m_idx,GF_SOUND, dam, 0, TRUE, MS_BR_SOUND, SPELL_MON_TO_MON);
 
                break;
 
@@ -1219,8 +1157,7 @@ bool monst_spell_monst(int m_idx)
                }
 
                dam = ((m_ptr->hp / 6) > 600 ? 600 : (m_ptr->hp / 6));
-               monst_breath_monst(m_idx, y, x, GF_CHAOS,
-                                  dam,0, TRUE, MS_BR_CHAOS);
+        breath(y, x, m_idx, GF_CHAOS, dam, 0, TRUE, MS_BR_CHAOS, SPELL_MON_TO_MON);
 
                break;
 
@@ -1250,8 +1187,7 @@ bool monst_spell_monst(int m_idx)
                }
 
                dam = ((m_ptr->hp / 6) > 500 ? 500 : (m_ptr->hp / 6));
-               monst_breath_monst(m_idx, y, x, GF_DISENCHANT,
-                                  dam,0, TRUE, MS_BR_DISEN);
+        breath(y, x, m_idx, GF_DISENCHANT, dam, 0, TRUE, MS_BR_DISEN, SPELL_MON_TO_MON);
 
                break;
 
@@ -1281,8 +1217,7 @@ bool monst_spell_monst(int m_idx)
                }
 
                dam = ((m_ptr->hp / 3) > 250 ? 250 : (m_ptr->hp / 3));
-               monst_breath_monst(m_idx, y, x, GF_NEXUS,
-                                  dam,0, TRUE, MS_BR_NEXUS);
+        breath(y, x, m_idx, GF_NEXUS, dam, 0, TRUE, MS_BR_NEXUS, SPELL_MON_TO_MON);
 
                break;
 
@@ -1312,8 +1247,7 @@ bool monst_spell_monst(int m_idx)
                }
 
                dam = ((m_ptr->hp / 3) > 150 ? 150 : (m_ptr->hp / 3));
-               monst_breath_monst(m_idx, y, x, GF_TIME,
-                                  dam,0, TRUE, MS_BR_TIME);
+        breath(y, x, m_idx, GF_TIME, dam, 0, TRUE, MS_BR_TIME, SPELL_MON_TO_MON);
 
                break;
 
@@ -1343,8 +1277,7 @@ bool monst_spell_monst(int m_idx)
                }
 
                dam = ((m_ptr->hp / 6) > 200 ? 200 : (m_ptr->hp / 6));
-               monst_breath_monst(m_idx, y, x, GF_INERTIA,
-                                  dam,0, TRUE, MS_BR_INERTIA);
+        breath(y, x, m_idx, GF_INERTIA, dam, 0, TRUE, MS_BR_INERTIA, SPELL_MON_TO_MON);
 
                break;
 
@@ -1374,8 +1307,7 @@ bool monst_spell_monst(int m_idx)
                }
 
                dam = ((m_ptr->hp / 3) > 200 ? 200 : (m_ptr->hp / 3));
-               monst_breath_monst(m_idx, y, x, GF_GRAVITY,
-                                  dam,0, TRUE, MS_BR_GRAVITY);
+        breath(y, x, m_idx, GF_GRAVITY, dam, 0, TRUE, MS_BR_GRAVITY, SPELL_MON_TO_MON);
 
                break;
 
@@ -1409,8 +1341,7 @@ bool monst_spell_monst(int m_idx)
                }
 
                dam = ((m_ptr->hp / 6) > 500 ? 500 : (m_ptr->hp / 6));
-               monst_breath_monst(m_idx, y, x, GF_SHARDS,
-                                  dam,0, TRUE, MS_BR_SHARDS);
+        breath(y, x, m_idx, GF_SHARDS, dam, 0, TRUE, MS_BR_SHARDS, SPELL_MON_TO_MON);
 
                break;
 
@@ -1440,8 +1371,7 @@ bool monst_spell_monst(int m_idx)
                }
 
                dam = ((m_ptr->hp / 6) > 150 ? 150 : (m_ptr->hp / 6));
-               monst_breath_monst(m_idx, y, x, GF_PLASMA,
-                                  dam,0, TRUE, MS_BR_PLASMA);
+        breath(y, x, m_idx,GF_PLASMA, dam, 0, TRUE, MS_BR_PLASMA, SPELL_MON_TO_MON);
 
                break;
 
@@ -1471,8 +1401,7 @@ bool monst_spell_monst(int m_idx)
                }
 
                dam = ((m_ptr->hp / 6) > 200 ? 200 : (m_ptr->hp / 6));
-               monst_breath_monst(m_idx, y, x, GF_FORCE,
-                                  dam,0, TRUE, MS_BR_FORCE);
+        breath(y, x, m_idx,GF_FORCE, dam, 0, TRUE, MS_BR_FORCE, SPELL_MON_TO_MON);
                break;
 
        /* RF4_BR_MANA */
@@ -1501,8 +1430,7 @@ bool monst_spell_monst(int m_idx)
                }
 
                dam = ((m_ptr->hp / 3) > 250 ? 250 : (m_ptr->hp / 3));
-               monst_breath_monst(m_idx, y, x, GF_MANA,
-                                  dam,0, TRUE, MS_BR_MANA);
+        breath(y, x, m_idx,GF_MANA, dam, 0, TRUE, MS_BR_MANA, SPELL_MON_TO_MON);
 
                break;
 
@@ -1530,8 +1458,7 @@ bool monst_spell_monst(int m_idx)
                }
 
                dam = (rlev + damroll(10, 6));
-               monst_breath_monst(m_idx, y, x, GF_NUKE,
-                                  dam, 2, FALSE, MS_BALL_NUKE);
+        breath(y, x, m_idx,GF_NUKE, dam, 2, FALSE, MS_BALL_NUKE, SPELL_MON_TO_MON);
 
                break;
 
@@ -1561,8 +1488,7 @@ bool monst_spell_monst(int m_idx)
                }
 
                dam = ((m_ptr->hp / 3) > 800 ? 800 : (m_ptr->hp / 3));
-               monst_breath_monst(m_idx, y, x, GF_NUKE,
-                                  dam,0, TRUE, MS_BR_NUKE);
+        breath(y, x, m_idx,GF_NUKE, dam, 0, TRUE, MS_BR_NUKE, SPELL_MON_TO_MON);
                break;
 
        /* RF4_BA_CHAO */
@@ -1589,8 +1515,7 @@ bool monst_spell_monst(int m_idx)
                }
 
                dam = (rlev * 2) + damroll(10, 10);
-               monst_breath_monst(m_idx, y, x, GF_CHAOS,
-                                  dam, 4, FALSE, MS_BALL_CHAOS);
+        breath(y, x, m_idx,GF_CHAOS, dam, 4, FALSE, MS_BALL_CHAOS, SPELL_MON_TO_MON);
 
                break;
 
@@ -1620,8 +1545,7 @@ bool monst_spell_monst(int m_idx)
                }
 
                dam = ((m_ptr->hp / 6) > 150 ? 150 : (m_ptr->hp / 6));
-               monst_breath_monst(m_idx, y, x, GF_DISINTEGRATE,
-                                  dam,0, TRUE, MS_BR_DISI);
+        breath(y, x, m_idx,GF_DISINTEGRATE, dam, 0, TRUE, MS_BR_DISI, SPELL_MON_TO_MON);
                break;
 
        /* RF5_BA_ACID */
@@ -1658,7 +1582,7 @@ bool monst_spell_monst(int m_idx)
                        rad = 2;
                        dam = (randint1(rlev * 3) + 15);
                }
-               monst_breath_monst(m_idx, y, x, GF_ACID, dam, rad, FALSE, MS_BALL_ACID);
+        breath(y, x, m_idx,GF_ACID, dam, rad, FALSE, MS_BALL_ACID, SPELL_MON_TO_MON);
                break;
 
        /* RF5_BA_ELEC */
@@ -1694,7 +1618,7 @@ bool monst_spell_monst(int m_idx)
                        rad = 2;
                        dam = (randint1(rlev * 3 / 2) + 8);
                }
-               monst_breath_monst(m_idx, y, x, GF_ELEC, dam, rad, FALSE, MS_BALL_ELEC);
+        breath(y, x, m_idx,GF_ELEC, dam, rad, FALSE, MS_BALL_ELEC, SPELL_MON_TO_MON);
                break;
 
        /* RF5_BA_FIRE */
@@ -1741,7 +1665,7 @@ bool monst_spell_monst(int m_idx)
                        rad = 2;
                        dam = (randint1(rlev * 7 / 2) + 10);
                }
-               monst_breath_monst(m_idx, y, x, GF_FIRE, dam, rad, FALSE, MS_BALL_FIRE);
+        breath(y, x, m_idx,GF_FIRE, dam, rad, FALSE, MS_BALL_FIRE, SPELL_MON_TO_MON);
                break;
 
        /* RF5_BA_COLD */
@@ -1778,7 +1702,7 @@ bool monst_spell_monst(int m_idx)
                        rad = 2;
                        dam = (randint1(rlev * 3 / 2) + 10);
                }
-               monst_breath_monst(m_idx, y, x, GF_COLD, dam, rad, FALSE, MS_BALL_COLD);
+        breath(y, x, m_idx,GF_COLD, dam, rad, FALSE, MS_BALL_COLD, SPELL_MON_TO_MON);
                break;
 
        /* RF5_BA_POIS */
@@ -1806,7 +1730,7 @@ bool monst_spell_monst(int m_idx)
                }
 
                dam = damroll(12, 2) * ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 1);
-               monst_breath_monst(m_idx, y, x, GF_POIS, dam, 2, FALSE, MS_BALL_POIS);
+        breath(y, x, m_idx,GF_POIS, dam, 2, FALSE, MS_BALL_POIS, SPELL_MON_TO_MON);
 
                break;
 
@@ -1834,7 +1758,7 @@ bool monst_spell_monst(int m_idx)
                }
 
                dam = 50 + damroll(10, 10) + (rlev * ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 1));
-               monst_breath_monst(m_idx, y, x, GF_NETHER, dam, 2, FALSE, MS_BALL_NETHER);
+        breath(y, x, m_idx,GF_NETHER, dam, 2, FALSE, MS_BALL_NETHER, SPELL_MON_TO_MON);
 
                break;
 
@@ -1864,7 +1788,7 @@ bool monst_spell_monst(int m_idx)
                }
 
                dam = ((r_ptr->flags2 & RF2_POWERFUL) ? randint1(rlev * 3) : randint1(rlev * 2)) + 50;
-               monst_breath_monst(m_idx, y, x, GF_WATER, dam, 4, FALSE, MS_BALL_WATER);
+        breath(y, x, m_idx,GF_WATER, dam, 4, FALSE, MS_BALL_WATER, SPELL_MON_TO_MON);
 
                break;
 
@@ -1892,7 +1816,7 @@ bool monst_spell_monst(int m_idx)
                }
 
                dam = (rlev * 4) + 50 + damroll(10, 10);
-               monst_breath_monst(m_idx, y, x, GF_MANA, dam, 4, FALSE, MS_BALL_MANA);
+        breath(y, x, m_idx,GF_MANA, dam, 4, FALSE, MS_BALL_MANA, SPELL_MON_TO_MON);
 
                break;
 
@@ -1920,7 +1844,7 @@ bool monst_spell_monst(int m_idx)
                }
 
                dam = (rlev * 4) + 50 + damroll(10, 10);
-               monst_breath_monst(m_idx, y, x, GF_DARK, dam, 4, FALSE, MS_BALL_DARK);
+        breath(y, x, m_idx,GF_DARK, dam, 4, FALSE, MS_BALL_DARK, SPELL_MON_TO_MON);
 
                break;
 
@@ -1933,7 +1857,7 @@ bool monst_spell_monst(int m_idx)
                }
 
                dam = ((randint1(rlev) / 2) + 1);
-               monst_breath_monst(m_idx, y, x, GF_DRAIN_MANA, dam, 0, FALSE, MS_DRAIN_MANA);
+        breath(y, x, m_idx,GF_DRAIN_MANA, dam, 0, FALSE, MS_DRAIN_MANA, SPELL_MON_TO_MON);
 
                break;
 
@@ -1945,7 +1869,7 @@ bool monst_spell_monst(int m_idx)
                }
 
                dam = damroll(7, 7);
-               monst_breath_monst(m_idx, y, x, GF_MIND_BLAST, dam, 0, FALSE, MS_MIND_BLAST);
+        breath(y, x, m_idx,GF_MIND_BLAST, dam, 0, FALSE, MS_MIND_BLAST, SPELL_MON_TO_MON);
 
                break;
 
@@ -1957,7 +1881,7 @@ bool monst_spell_monst(int m_idx)
                }
 
                dam = damroll(12, 12);
-               monst_breath_monst(m_idx, y, x, GF_BRAIN_SMASH, dam, 0, FALSE, MS_BRAIN_SMASH);
+        breath(y, x, m_idx,GF_BRAIN_SMASH, dam, 0, FALSE, MS_BRAIN_SMASH, SPELL_MON_TO_MON);
 
                break;
 
@@ -1976,7 +1900,7 @@ bool monst_spell_monst(int m_idx)
                }
 
                dam = damroll(3, 8);
-               monst_breath_monst(m_idx, y, x, GF_CAUSE_1, dam, 0, FALSE, MS_CAUSE_1);
+        breath(y, x, m_idx,GF_CAUSE_1, dam, 0, FALSE, MS_CAUSE_1, SPELL_MON_TO_MON);
 
                break;
 
@@ -1996,7 +1920,7 @@ bool monst_spell_monst(int m_idx)
                }
 
                dam = damroll(8, 8);
-               monst_breath_monst(m_idx, y, x, GF_CAUSE_2, dam, 0, FALSE, MS_CAUSE_2);
+        breath(y, x, m_idx,GF_CAUSE_2, dam, 0, FALSE, MS_CAUSE_2, SPELL_MON_TO_MON);
 
                break;
 
@@ -2016,7 +1940,7 @@ bool monst_spell_monst(int m_idx)
                }
 
                dam = damroll(10, 15);
-               monst_breath_monst(m_idx, y, x, GF_CAUSE_3, dam, 0, FALSE, MS_CAUSE_3);
+        breath(y, x, m_idx,GF_CAUSE_3, dam, 0, FALSE, MS_CAUSE_3, SPELL_MON_TO_MON);
 
                break;
 
@@ -2036,7 +1960,7 @@ bool monst_spell_monst(int m_idx)
                }
 
                dam = damroll(15, 15);
-               monst_breath_monst(m_idx, y, x, GF_CAUSE_4, dam, 0, FALSE, MS_CAUSE_4);
+        breath(y, x, m_idx,GF_CAUSE_4, dam, 0, FALSE, MS_CAUSE_4, SPELL_MON_TO_MON);
 
                break;
 
@@ -2141,7 +2065,7 @@ bool monst_spell_monst(int m_idx)
                }
 
                dam = (rlev * 4) + 50 + damroll(10, 10);
-               monst_breath_monst(m_idx, y, x, GF_LITE, dam, 4, FALSE, MS_STARBURST);
+        breath(y, x, m_idx,GF_LITE, dam, 4, FALSE, MS_STARBURST, SPELL_MON_TO_MON);
 
                break;
 
@@ -2484,7 +2408,7 @@ bool monst_spell_monst(int m_idx)
                }
 
                dam = 20; /* Dummy power */
-               monst_breath_monst(m_idx, y, x, GF_HAND_DOOM, dam, 0, FALSE, MS_HAND_DOOM);
+        breath(y, x, m_idx,GF_HAND_DOOM, dam, 0, FALSE, MS_HAND_DOOM, SPELL_MON_TO_MON);
 
                break;
 
index b13fa96..e0af99a 100644 (file)
@@ -53,15 +53,11 @@ int spell_core(int SPELL_NUM, int hp, int y, int x, int m_idx, int SPELL_TYPE)
     {
     case RF4_ROCKET:
         dam = (hp / 4) > 800 ? 800 : (hp / 4);
+        breath(y, x, m_idx, GF_ROCKET, dam, 2, FALSE, MS_ROCKET, SPELL_TYPE);
         if (SPELL_TYPE == SPELL_MON_TO_PLAYER)
         {
-            breath(y, x, m_idx, GF_ROCKET, dam, 2, FALSE, MS_ROCKET);
             update_smart_learn(m_idx, DRS_SHARD);
         }
-        else if (SPELL_TYPE == SPELL_MON_TO_MON)
-        {
-            monst_breath_monst(m_idx, y, x, GF_ROCKET, dam, 2, FALSE, MS_ROCKET);
-        }
         break;
     }
     return dam;
@@ -367,7 +363,7 @@ int spell_RF4_BREATH(int GF_TYPE, int y, int x, int m_idx)
         msg_format(_("%^s¤¬%^s¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", "%^s breathes %^s."), m_name, type_s);
     }
 
-    breath(y, x, m_idx, GF_TYPE, dam, 0, TRUE, ms_type);
+    breath(y, x, m_idx, GF_TYPE, dam, 0, TRUE, ms_type, SPELL_MON_TO_PLAYER);
     if (smart_learn) update_smart_learn(m_idx, drs_type);
     return dam;
 }
@@ -390,7 +386,7 @@ int spell_RF4_BA_CHAO(int y, int x, int m_idx)
     
     dam = ((r_ptr->flags2 & RF2_POWERFUL) ? (rlev * 3) : (rlev * 2)) + damroll(10, 10);
 
-    breath(y, x, m_idx, GF_CHAOS, dam, 4, FALSE, MS_BALL_CHAOS);
+    breath(y, x, m_idx, GF_CHAOS, dam, 4, FALSE, MS_BALL_CHAOS, SPELL_MON_TO_PLAYER);
     update_smart_learn(m_idx, DRS_CHAOS);
     return dam;
 }
@@ -412,7 +408,7 @@ int spell_RF4_BA_NUKE(int y, int x, int m_idx)
     
     dam = (rlev + damroll(10, 6)) * ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 1);
 
-    breath(y, x, m_idx, GF_NUKE, dam, 2, FALSE, MS_BALL_NUKE);
+    breath(y, x, m_idx, GF_NUKE, dam, 2, FALSE, MS_BALL_NUKE, SPELL_MON_TO_PLAYER);
     update_smart_learn(m_idx, DRS_POIS);
     return dam;
 }
@@ -442,7 +438,7 @@ int spell_RF5_BA_ACID(int y, int x, int m_idx)
         rad = 2;
         dam = (randint1(rlev * 3) + 15);
     }
-    breath(y, x, m_idx, GF_ACID, dam, rad, FALSE, MS_BALL_ACID);
+    breath(y, x, m_idx, GF_ACID, dam, rad, FALSE, MS_BALL_ACID, SPELL_MON_TO_PLAYER);
     update_smart_learn(m_idx, DRS_ACID);
     return dam;
 }
@@ -472,7 +468,7 @@ int spell_RF5_BA_ELEC(int y, int x, int m_idx)
         rad = 2;
         dam = (randint1(rlev * 3 / 2) + 8);
     }
-    breath(y, x, m_idx, GF_ELEC, dam, rad, FALSE, MS_BALL_ELEC);
+    breath(y, x, m_idx, GF_ELEC, dam, rad, FALSE, MS_BALL_ELEC, SPELL_MON_TO_PLAYER);
     update_smart_learn(m_idx, DRS_ELEC);
     return dam;
 }
@@ -512,7 +508,7 @@ int spell_RF5_BA_FIRE(int y, int x, int m_idx)
         rad = 2;
         dam = (randint1(rlev * 7 / 2) + 10);
     }
-    breath(y, x, m_idx, GF_FIRE, dam, rad, FALSE, MS_BALL_FIRE);
+    breath(y, x, m_idx, GF_FIRE, dam, rad, FALSE, MS_BALL_FIRE, SPELL_MON_TO_PLAYER);
     update_smart_learn(m_idx, DRS_FIRE);
     return dam;
 }
@@ -542,7 +538,7 @@ int spell_RF5_BA_COLD(int y, int x, int m_idx)
         rad = 2;
         dam = (randint1(rlev * 3 / 2) + 10);
     }
-    breath(y, x, m_idx, GF_COLD, dam, rad, FALSE, MS_BALL_COLD);
+    breath(y, x, m_idx, GF_COLD, dam, rad, FALSE, MS_BALL_COLD, SPELL_MON_TO_PLAYER);
     update_smart_learn(m_idx, DRS_COLD);
     return dam;
 }
@@ -563,7 +559,7 @@ int spell_RF5_BA_POIS(int y, int x, int m_idx)
         msg_format(_("%^s¤¬°­½­±À¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a stinking cloud."), m_name);
 
     dam = damroll(12, 2) * ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 1);
-    breath(y, x, m_idx, GF_POIS, dam, 2, FALSE, MS_BALL_POIS);
+    breath(y, x, m_idx, GF_POIS, dam, 2, FALSE, MS_BALL_POIS, SPELL_MON_TO_PLAYER);
     update_smart_learn(m_idx, DRS_POIS);
     return dam;
 }
@@ -583,7 +579,7 @@ int spell_RF5_BA_NETH(int y, int x, int m_idx)
         msg_format(_("%^s¤¬ÃϹöµå¤Î¼öʸ¤ò¾§¤¨¤¿¡£", "%^s casts a nether ball."), m_name);
 
     dam = 50 + damroll(10, 10) + (rlev * ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 1));
-    breath(y, x, m_idx, GF_NETHER, dam, 2, FALSE, MS_BALL_NETHER);
+    breath(y, x, m_idx, GF_NETHER, dam, 2, FALSE, MS_BALL_NETHER, SPELL_MON_TO_PLAYER);
     update_smart_learn(m_idx, DRS_NETH);
     return dam;
 }
@@ -606,7 +602,7 @@ int spell_RF5_BA_WATE(int y, int x, int m_idx)
     msg_print(_("¤¢¤Ê¤¿¤Ï±²´¬¤­¤Ë°û¤ß¹þ¤Þ¤ì¤¿¡£", "You are engulfed in a whirlpool."));
 
     dam = ((r_ptr->flags2 & RF2_POWERFUL) ? randint1(rlev * 3) : randint1(rlev * 2)) + 50;
-    breath(y, x, m_idx, GF_WATER, dam, 4, FALSE, MS_BALL_WATER);
+    breath(y, x, m_idx, GF_WATER, dam, 4, FALSE, MS_BALL_WATER, SPELL_MON_TO_PLAYER);
     return dam;
 }
 
@@ -624,7 +620,7 @@ int spell_RF5_BA_MANA(int y, int x, int m_idx)
         msg_format(_("%^s¤¬ËâÎϤÎÍò¤Î¼öʸ¤òÇ°¤¸¤¿¡£", "%^s invokes a mana storm."), m_name);
 
     dam = (rlev * 4) + 50 + damroll(10, 10);
-    breath(y, x, m_idx, GF_MANA, dam, 4, FALSE, MS_BALL_MANA);
+    breath(y, x, m_idx, GF_MANA, dam, 4, FALSE, MS_BALL_MANA, SPELL_MON_TO_PLAYER);
     return dam;
 }
 
@@ -643,7 +639,7 @@ int spell_RF5_BA_DARK(int y, int x, int m_idx)
         msg_format(_("%^s¤¬°Å¹õ¤ÎÍò¤Î¼öʸ¤òÇ°¤¸¤¿¡£", "%^s invokes a darkness storm."), m_name);
 
     dam = (rlev * 4) + 50 + damroll(10, 10);
-    breath(y, x, m_idx, GF_DARK, dam, 4, FALSE, MS_BALL_DARK);
+    breath(y, x, m_idx, GF_DARK, dam, 4, FALSE, MS_BALL_DARK, SPELL_MON_TO_PLAYER);
     update_smart_learn(m_idx, DRS_DARK);
     return dam;
 }
@@ -656,7 +652,7 @@ int spell_RF5_DRAIN_MANA(int y, int x, int m_idx)
     disturb(1, 1);
 
     dam = (randint1(rlev) / 2) + 1;
-    breath(y, x, m_idx, GF_DRAIN_MANA, dam, 0, FALSE, MS_DRAIN_MANA);
+    breath(y, x, m_idx, GF_DRAIN_MANA, dam, 0, FALSE, MS_DRAIN_MANA, SPELL_MON_TO_PLAYER);
     update_smart_learn(m_idx, DRS_MANA);
     return dam;
 }
@@ -675,7 +671,7 @@ int spell_RF5_MIND_BLAST(int y, int x, int m_idx)
         msg_format(_("%^s¤¬¤¢¤Ê¤¿¤ÎÆ·¤ò¤¸¤Ã¤È¤Ë¤é¤ó¤Ç¤¤¤ë¡£", "%^s gazes deep into your eyes."), m_name);
 
     dam = damroll(7, 7);
-    breath(y, x, m_idx, GF_MIND_BLAST, dam, 0, FALSE, MS_MIND_BLAST);
+    breath(y, x, m_idx, GF_MIND_BLAST, dam, 0, FALSE, MS_MIND_BLAST, SPELL_MON_TO_PLAYER);
     return dam;
 }
 
@@ -693,7 +689,7 @@ int spell_RF5_BRAIN_SMASH(int y, int x, int m_idx)
         msg_format(_("%^s¤¬¤¢¤Ê¤¿¤ÎÆ·¤ò¤¸¤Ã¤È¸«¤Æ¤¤¤ë¡£", "%^s looks deep into your eyes."), m_name);
 
     dam = damroll(12, 12);
-    breath(y, x, m_idx, GF_BRAIN_SMASH, dam, 0, FALSE, MS_BRAIN_SMASH);
+    breath(y, x, m_idx, GF_BRAIN_SMASH, dam, 0, FALSE, MS_BRAIN_SMASH, SPELL_MON_TO_PLAYER);
     return dam;
 }
 
@@ -710,7 +706,7 @@ int spell_RF5_CAUSE_1(int y, int x, int m_idx)
         msg_format(_("%^s¤¬¤¢¤Ê¤¿¤ò»Ø¤µ¤·¤Æ¼ö¤Ã¤¿¡£", "%^s points at you and curses."), m_name);
 
     dam = damroll(3, 8);
-    breath(y, x, m_idx, GF_CAUSE_1, dam, 0, FALSE, MS_CAUSE_1);
+    breath(y, x, m_idx, GF_CAUSE_1, dam, 0, FALSE, MS_CAUSE_1, SPELL_MON_TO_PLAYER);
     return dam;
 }
 
@@ -727,7 +723,7 @@ int spell_RF5_CAUSE_2(int y, int x, int m_idx)
         msg_format(_("%^s¤¬¤¢¤Ê¤¿¤ò»Ø¤µ¤·¤Æ¶²¤í¤·¤²¤Ë¼ö¤Ã¤¿¡£", "%^s points at you and curses horribly."), m_name);
 
     dam = damroll(8, 8);
-    breath(y, x, m_idx, GF_CAUSE_2, dam, 0, FALSE, MS_CAUSE_2);
+    breath(y, x, m_idx, GF_CAUSE_2, dam, 0, FALSE, MS_CAUSE_2, SPELL_MON_TO_PLAYER);
     return dam;
 }
 
@@ -744,7 +740,7 @@ int spell_RF5_CAUSE_3(int y, int x, int m_idx)
         msg_format(_("%^s¤¬¤¢¤Ê¤¿¤ò»Ø¤µ¤·¤Æ¶²¤í¤·¤²¤Ë¼öʸ¤ò¾§¤¨¤¿¡ª", "%^s points at you, incanting terribly!"), m_name);
 
     dam = damroll(10, 15);
-    breath(y, x, m_idx, GF_CAUSE_3, dam, 0, FALSE, MS_CAUSE_3);
+    breath(y, x, m_idx, GF_CAUSE_3, dam, 0, FALSE, MS_CAUSE_3, SPELL_MON_TO_PLAYER);
     return dam;
 }
 
@@ -762,7 +758,7 @@ int spell_RF5_CAUSE_4(int y, int x, int m_idx)
         "%^s points at you, screaming the word DIE!"), m_name);
 
     dam = damroll(15, 15);
-    breath(y, x, m_idx, GF_CAUSE_4, dam, 0, FALSE, MS_CAUSE_4);
+    breath(y, x, m_idx, GF_CAUSE_4, dam, 0, FALSE, MS_CAUSE_4, SPELL_MON_TO_PLAYER);
     return dam;
 }
 
@@ -868,7 +864,7 @@ int spell_RF5_BA_LITE(int y, int x, int m_idx)
         msg_format(_("%^s¤¬¥¹¥¿¡¼¥Ð¡¼¥¹¥È¤Î¼öʸ¤òÇ°¤¸¤¿¡£", "%^s invokes a starburst."), m_name);
 
     dam = (rlev * 4) + 50 + damroll(10, 10);
-    breath(y, x, m_idx, GF_LITE, dam, 4, FALSE, MS_STARBURST);
+    breath(y, x, m_idx, GF_LITE, dam, 4, FALSE, MS_STARBURST, SPELL_MON_TO_PLAYER);
     update_smart_learn(m_idx, DRS_LITE);
     return dam;
 }
@@ -1163,7 +1159,7 @@ int spell_RF6_HAND_DOOM(int y, int x, int m_idx)
     disturb(1, 1);
     msg_format(_("%^s¤¬<ÇËÌǤμê>¤òÊü¤Ã¤¿¡ª", "%^s invokes the Hand of Doom!"), m_name);
     dam = (((s32b)((40 + randint1(20)) * (p_ptr->chp))) / 100);
-    breath(y, x, m_idx, GF_HAND_DOOM, dam, 0, FALSE, MS_HAND_DOOM);
+    breath(y, x, m_idx, GF_HAND_DOOM, dam, 0, FALSE, MS_HAND_DOOM, SPELL_MON_TO_PLAYER);
     return dam;
 }