From e89222886abd9b8f52ad04621b96fb785b4323b2 Mon Sep 17 00:00:00 2001 From: dis- Date: Wed, 19 Feb 2014 16:29:45 +0900 Subject: [PATCH] refactor: integrate monst_breath_monst() into breath --- src/externs.h | 27 +++++----- src/mspells1.c | 20 ++++++-- src/mspells2.c | 160 +++++++++++++++------------------------------------------ src/mspells4.c | 48 ++++++++--------- 4 files changed, 91 insertions(+), 164 deletions(-) diff --git a/src/externs.h b/src/externs.h index 91be5dbf0..ea131d1a6 100644 --- a/src/externs.h +++ b/src/externs.h @@ -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); diff --git a/src/mspells1.c b/src/mspells1.c index 2dac06d4d..64391bd8d 100644 --- a/src/mspells1.c +++ b/src/mspells1.c @@ -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; diff --git a/src/mspells2.c b/src/mspells2.c index aba7e390c..c93145e21 100644 --- a/src/mspells2.c +++ b/src/mspells2.c @@ -13,58 +13,6 @@ #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; diff --git a/src/mspells4.c b/src/mspells4.c index b13fa96f3..e0af99a46 100644 --- a/src/mspells4.c +++ b/src/mspells4.c @@ -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; } -- 2.11.0