• R/O
  • HTTP
  • SSH
  • HTTPS

hengband: コミット

変愚蛮怒のメインリポジトリです


コミットメタ情報

リビジョンb6432097d17afc51de4af3be2df2b2712034c77d (tree)
日時2014-02-19 18:12:12
作者dis- <dis.rogue@gmai...>
コミッターdis-

ログメッセージ

refactor: extract breath spells in monst_spell_monst

変更サマリ

差分

--- a/src/defines.h
+++ b/src/defines.h
@@ -5696,8 +5696,8 @@ extern int PlayerUID;
56965696 (have_flag(ARRAY, TR_LITE_M1) || have_flag(ARRAY, TR_LITE_M2) || have_flag(ARRAY, TR_LITE_M3))
56975697
56985698 /* Spell Type flag */
5699-#define SPELL_MON_TO_PLAYER 0x01
5700-#define SPELL_MON_TO_MON 0x02
5699+#define MONSTER_TO_PLAYER 0x01
5700+#define MONSTER_TO_MONSTER 0x02
57015701
57025702 /* summoning number */
57035703 #define S_NUM_6 (easy_band ? 2 : 6)
--- a/src/externs.h
+++ b/src/externs.h
@@ -1569,9 +1569,9 @@ extern bool raise_possible(monster_type *m_ptr);
15691569 extern bool dispel_check(int m_idx);
15701570 extern bool spell_is_inate(u16b spell);
15711571 extern bool make_attack_spell(int m_idx);
1572-extern void beam(int m_idx, int y, int x, int typ, int dam_hp, int monspell, int spell_type);
1573-extern void bolt(int m_idx, int y, int x, int typ, int dam_hp, int monspell, int spell_type);
1574-extern void breath(int y, int x, int m_idx, int typ, int dam_hp, int rad, bool breath, int monspell, int spell_type);
1572+extern void beam(int m_idx, int y, int x, int typ, int dam_hp, int monspell, int target_type);
1573+extern void bolt(int m_idx, int y, int x, int typ, int dam_hp, int monspell, int target_type);
1574+extern void breath(int y, int x, int m_idx, int typ, int dam_hp, int rad, bool breath, int monspell, int target_type);
15751575
15761576 /* mspells2.c */
15771577 extern void get_project_point(int sy, int sx, int *ty, int *tx, int flg);
@@ -1589,8 +1589,8 @@ extern bool spell_learnable(int m_idx);
15891589 extern void MP_spell_RF4_SHRIEK(int m_idx);
15901590 extern void MP_spell_RF4_DISPEL(int m_idx);
15911591 extern int MP_spell_RF4_ROCKET(int y, int x, int m_idx);
1592-extern int spell_RF4_SHOOT(int y, int x, int m_idx);
1593-extern int spell_RF4_BREATH(int GF_TYPE, int y, int x, int m_idx);
1592+extern int MP_spell_RF4_SHOOT(int y, int x, int m_idx);
1593+extern int MP_spell_RF4_BREATH(int GF_TYPE, int y, int x, int m_idx);
15941594 extern int spell_RF4_BA_CHAO(int y, int x, int m_idx);
15951595 extern int spell_RF4_BA_NUKE(int y, int x, int m_idx);
15961596 extern int spell_RF5_BA_ACID(int y, int x, int m_idx);
@@ -1662,6 +1662,8 @@ extern void spell_RF6_S_UNIQUE(int y, int x, int m_idx);
16621662 extern void MM_spell_RF4_SHRIEK(int m_idx, int t_idx);
16631663 extern void MM_spell_RF4_DISPEL(int m_idx, int t_idx);
16641664 extern int MM_spell_RF4_ROCKET(int y, int x, int m_idx, int t_idx);
1665+extern int MM_spell_RF4_SHOOT(int y, int x, int m_idx, int t_idx);
1666+extern int MM_spell_RF4_BREATH(int GF_TYPE, int y, int x, int m_idx, int t_idx);
16651667
16661668 /* hissatsu.c */
16671669 extern void hissatsu_info(char *p, int power);
--- a/src/mspells1.c
+++ b/src/mspells1.c
@@ -507,20 +507,20 @@ bool clean_shot(int y1, int x1, int y2, int x2, bool is_friend)
507507 * @param typ 効果属性ID
508508 * @param dam_hp 威力
509509 * @param monspell モンスター魔法のID
510- * @param spell_type モンスターからモンスターへ撃つならSPELL_MON_TO_MON、モンスターからプレイヤーならSPELL_MON_TO_PLAYER
510+ * @param target_type モンスターからモンスターへ撃つならMONSTER_TO_MONSTER、モンスターからプレイヤーならMONSTER_TO_PLAYER
511511 * @return なし
512512 */
513-void bolt(int m_idx, int y, int x, int typ, int dam_hp, int monspell, int spell_type)
513+void bolt(int m_idx, int y, int x, int typ, int dam_hp, int monspell, int target_type)
514514 {
515515 int flg;
516516 bool learnable = spell_learnable(m_idx);
517517
518- switch (spell_type)
518+ switch (target_type)
519519 {
520- case SPELL_MON_TO_MON:
520+ case MONSTER_TO_MONSTER:
521521 flg = PROJECT_STOP | PROJECT_KILL;
522522 break;
523- case SPELL_MON_TO_PLAYER:
523+ case MONSTER_TO_PLAYER:
524524 flg = PROJECT_STOP | PROJECT_KILL | PROJECT_PLAYER;
525525 break;
526526 }
@@ -538,20 +538,20 @@ void bolt(int m_idx, int y, int x, int typ, int dam_hp, int monspell, int spell_
538538 * @param typ 効果属性ID
539539 * @param dam_hp 威力
540540 * @param monspell モンスター魔法のID
541- * @param spell_type モンスターからモンスターへ撃つならSPELL_MON_TO_MON、モンスターからプレイヤーならSPELL_MON_TO_PLAYER
541+ * @param target_type モンスターからモンスターへ撃つならMONSTER_TO_MONSTER、モンスターからプレイヤーならMONSTER_TO_PLAYER
542542 * @return なし
543543 */
544-void beam(int m_idx, int y, int x, int typ, int dam_hp, int monspell, int spell_type)
544+void beam(int m_idx, int y, int x, int typ, int dam_hp, int monspell, int target_type)
545545 {
546546 int flg;
547547 bool learnable = spell_learnable(m_idx);
548548
549- switch (spell_type)
549+ switch (target_type)
550550 {
551- case SPELL_MON_TO_MON:
551+ case MONSTER_TO_MONSTER:
552552 flg = PROJECT_BEAM | PROJECT_KILL | PROJECT_THRU;
553553 break;
554- case SPELL_MON_TO_PLAYER:
554+ case MONSTER_TO_PLAYER:
555555 flg = PROJECT_BEAM | PROJECT_KILL | PROJECT_THRU | PROJECT_PLAYER;
556556 break;
557557 }
@@ -572,22 +572,22 @@ void beam(int m_idx, int y, int x, int typ, int dam_hp, int monspell, int spell_
572572 * @param rad 半径
573573 * @param breath TRUEならばブレス処理、FALSEならばボール処理
574574 * @param monspell モンスター魔法のID
575- * @param spell_type モンスターからモンスターへ撃つならSPELL_MON_TO_MON、モンスターからプレイヤーならSPELL_MON_TO_PLAYER
575+ * @param target_type モンスターからモンスターへ撃つならMONSTER_TO_MONSTER、モンスターからプレイヤーならMONSTER_TO_PLAYER
576576 * @return なし
577577 */
578-void breath(int y, int x, int m_idx, int typ, int dam_hp, int rad, bool breath, int monspell, int spell_type)
578+void breath(int y, int x, int m_idx, int typ, int dam_hp, int rad, bool breath, int monspell, int target_type)
579579 {
580580 monster_type *m_ptr = &m_list[m_idx];
581581 monster_race *r_ptr = &r_info[m_ptr->r_idx];
582582 bool learnable = spell_learnable(m_idx);
583583 int flg;
584584
585- switch (spell_type)
585+ switch (target_type)
586586 {
587- case SPELL_MON_TO_MON:
587+ case MONSTER_TO_MONSTER:
588588 flg = PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL;
589589 break;
590- case SPELL_MON_TO_PLAYER:
590+ case MONSTER_TO_PLAYER:
591591 flg = PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL | PROJECT_PLAYER;
592592 break;
593593 }
@@ -1878,34 +1878,34 @@ bool make_attack_spell(int m_idx)
18781878 case 96 + 1: break; /* RF4_XXX1 */
18791879 case 96 + 2: MP_spell_RF4_DISPEL(m_idx); break; /* RF4_DISPEL */
18801880 case 96 + 3: dam = MP_spell_RF4_ROCKET(y, x, m_idx); break; /* RF4_ROCKET */
1881- case 96 + 4: dam = spell_RF4_SHOOT(y, x, m_idx); break; /* RF4_SHOOT */
1881+ case 96 + 4: dam = MP_spell_RF4_SHOOT(y, x, m_idx); break; /* RF4_SHOOT */
18821882 case 96 + 5: break; /* RF4_XXX2 */
18831883 case 96 + 6: break; /* RF4_XXX3 */
18841884 case 96 + 7: break; /* RF4_XXX4 */
1885- case 96 + 8: dam = spell_RF4_BREATH(GF_ACID, y, x, m_idx); break; /* RF4_BR_ACID */
1886- case 96 + 9: dam = spell_RF4_BREATH(GF_ELEC, y, x, m_idx); break; /* RF4_BR_ELEC */
1887- case 96 + 10: dam = spell_RF4_BREATH(GF_FIRE, y, x, m_idx); break; /* RF4_BR_FIRE */
1888- case 96 + 11: dam = spell_RF4_BREATH(GF_COLD, y, x, m_idx); break; /* RF4_BR_COLD */
1889- case 96 + 12: dam = spell_RF4_BREATH(GF_POIS, y, x, m_idx); break; /* RF4_BR_POIS */
1890- case 96 + 13: dam = spell_RF4_BREATH(GF_NETHER, y, x, m_idx); break; /* RF4_BR_NETH */
1891- case 96 + 14: dam = spell_RF4_BREATH(GF_LITE, y_br_lite, x_br_lite, m_idx); break; /* RF4_BR_LITE */
1892- case 96 + 15: dam = spell_RF4_BREATH(GF_DARK, y, x, m_idx); break; /* RF4_BR_DARK */
1893- case 96 + 16: dam = spell_RF4_BREATH(GF_CONFUSION, y, x, m_idx); break; /* RF4_BR_CONF */
1894- case 96 + 17: dam = spell_RF4_BREATH(GF_SOUND, y, x, m_idx); break; /* RF4_BR_SOUN */
1895- case 96 + 18: dam = spell_RF4_BREATH(GF_CHAOS, y, x, m_idx); break; /* RF4_BR_CHAO */
1896- case 96 + 19: dam = spell_RF4_BREATH(GF_DISENCHANT, y, x, m_idx); break; /* RF4_BR_DISE */
1897- case 96 + 20: dam = spell_RF4_BREATH(GF_NEXUS, y, x, m_idx); break; /* RF4_BR_NEXU */
1898- case 96 + 21: dam = spell_RF4_BREATH(GF_TIME, y, x, m_idx); break; /* RF4_BR_TIME */
1899- case 96 + 22: dam = spell_RF4_BREATH(GF_INERTIA, y, x, m_idx); break; /* RF4_BR_INER */
1900- case 96 + 23: dam = spell_RF4_BREATH(GF_GRAVITY, y, x, m_idx); break; /* RF4_BR_GRAV */
1901- case 96 + 24: dam = spell_RF4_BREATH(GF_SHARDS, y, x, m_idx); break; /* RF4_BR_SHAR */
1902- case 96 + 25: dam = spell_RF4_BREATH(GF_PLASMA, y, x, m_idx); break; /* RF4_BR_PLAS */
1903- case 96 + 26: dam = spell_RF4_BREATH(GF_FORCE, y, x, m_idx); break; /* RF4_BR_WALL */
1904- case 96 + 27: dam = spell_RF4_BREATH(GF_MANA, y, x, m_idx); break; /* RF4_BR_MANA */
1885+ case 96 + 8: dam = MP_spell_RF4_BREATH(GF_ACID, y, x, m_idx); break; /* RF4_BR_ACID */
1886+ case 96 + 9: dam = MP_spell_RF4_BREATH(GF_ELEC, y, x, m_idx); break; /* RF4_BR_ELEC */
1887+ case 96 + 10: dam = MP_spell_RF4_BREATH(GF_FIRE, y, x, m_idx); break; /* RF4_BR_FIRE */
1888+ case 96 + 11: dam = MP_spell_RF4_BREATH(GF_COLD, y, x, m_idx); break; /* RF4_BR_COLD */
1889+ case 96 + 12: dam = MP_spell_RF4_BREATH(GF_POIS, y, x, m_idx); break; /* RF4_BR_POIS */
1890+ case 96 + 13: dam = MP_spell_RF4_BREATH(GF_NETHER, y, x, m_idx); break; /* RF4_BR_NETH */
1891+ case 96 + 14: dam = MP_spell_RF4_BREATH(GF_LITE, y_br_lite, x_br_lite, m_idx); break; /* RF4_BR_LITE */
1892+ case 96 + 15: dam = MP_spell_RF4_BREATH(GF_DARK, y, x, m_idx); break; /* RF4_BR_DARK */
1893+ case 96 + 16: dam = MP_spell_RF4_BREATH(GF_CONFUSION, y, x, m_idx); break; /* RF4_BR_CONF */
1894+ case 96 + 17: dam = MP_spell_RF4_BREATH(GF_SOUND, y, x, m_idx); break; /* RF4_BR_SOUN */
1895+ case 96 + 18: dam = MP_spell_RF4_BREATH(GF_CHAOS, y, x, m_idx); break; /* RF4_BR_CHAO */
1896+ case 96 + 19: dam = MP_spell_RF4_BREATH(GF_DISENCHANT, y, x, m_idx); break; /* RF4_BR_DISE */
1897+ case 96 + 20: dam = MP_spell_RF4_BREATH(GF_NEXUS, y, x, m_idx); break; /* RF4_BR_NEXU */
1898+ case 96 + 21: dam = MP_spell_RF4_BREATH(GF_TIME, y, x, m_idx); break; /* RF4_BR_TIME */
1899+ case 96 + 22: dam = MP_spell_RF4_BREATH(GF_INERTIA, y, x, m_idx); break; /* RF4_BR_INER */
1900+ case 96 + 23: dam = MP_spell_RF4_BREATH(GF_GRAVITY, y, x, m_idx); break; /* RF4_BR_GRAV */
1901+ case 96 + 24: dam = MP_spell_RF4_BREATH(GF_SHARDS, y, x, m_idx); break; /* RF4_BR_SHAR */
1902+ case 96 + 25: dam = MP_spell_RF4_BREATH(GF_PLASMA, y, x, m_idx); break; /* RF4_BR_PLAS */
1903+ case 96 + 26: dam = MP_spell_RF4_BREATH(GF_FORCE, y, x, m_idx); break; /* RF4_BR_WALL */
1904+ case 96 + 27: dam = MP_spell_RF4_BREATH(GF_MANA, y, x, m_idx); break; /* RF4_BR_MANA */
19051905 case 96 + 28: dam = spell_RF4_BA_NUKE(y, x, m_idx); break; /* RF4_BA_NUKE */
1906- case 96 + 29: dam = spell_RF4_BREATH(GF_NUKE, y, x, m_idx); break; /* RF4_BR_NUKE */
1906+ case 96 + 29: dam = MP_spell_RF4_BREATH(GF_NUKE, y, x, m_idx); break; /* RF4_BR_NUKE */
19071907 case 96 + 30: dam = spell_RF4_BA_CHAO(y, x, m_idx); break; /* RF4_BA_CHAO */
1908- case 96 + 31: dam = spell_RF4_BREATH(GF_DISINTEGRATE, y, x, m_idx); break; /* RF4_BR_DISI */
1908+ case 96 + 31: dam = MP_spell_RF4_BREATH(GF_DISINTEGRATE, y, x, m_idx); break; /* RF4_BR_DISI */
19091909 case 128 + 0: dam = spell_RF5_BA_ACID(y, x, m_idx); break; /* RF5_BA_ACID */
19101910 case 128 + 1: dam = spell_RF5_BA_ELEC(y, x, m_idx); break; /* RF5_BA_ELEC */
19111911 case 128 + 2: dam = spell_RF5_BA_FIRE(y, x, m_idx); break; /* RF5_BA_FIRE */
--- a/src/mspells2.c
+++ b/src/mspells2.c
@@ -735,773 +735,93 @@ bool monst_spell_monst(int m_idx)
735735
736736 switch (thrown_spell)
737737 {
738- case 96 + 0: MM_spell_RF4_SHRIEK(m_idx, t_idx); break; /* RF4_SHRIEK */
739- case 96 + 1: return FALSE; /* RF4_XXX1 */
740- case 96 + 2: MM_spell_RF4_DISPEL(m_idx, t_idx); break; /* RF4_DISPEL */
741- case 96 + 3: dam = MM_spell_RF4_ROCKET(y, x, m_idx, t_idx); break; /* RF4_ROCKET */
742-
743- /* RF4_SHOOT */
744- case 96+4:
745- if (known)
746- {
747- if (see_either)
748- {
749- if (blind)
750- {
751- msg_format(_("%^sが奇妙な音を発した。", "%^s makes a strange noise."), m_name);
752- }
753- else
754- {
755- msg_format(_("%^sが%sに矢を放った。", "%^s fires an arrow at %s."), m_name, t_name);
756- }
757- }
758- else
759- {
760- mon_fight = TRUE;
761- }
762-
763- sound(SOUND_SHOOT);
764- }
765-
766- dam = damroll(r_ptr->blow[0].d_dice, r_ptr->blow[0].d_side);
767- bolt(m_idx, y, x, GF_ARROW, dam, MS_SHOOT, SPELL_MON_TO_MON);
768-
769- break;
770-
771- /* RF4_XXX2 */
772- case 96+5:
773- /* XXX XXX XXX */
774- return FALSE;
775-
776- /* RF4_XXX3 */
777- case 96+6:
778- /* XXX XXX XXX */
779- return FALSE;
780-
781- /* RF4_XXX4 */
782- case 96+7:
783- /* XXX XXX XXX */
784- return FALSE;
785-
786- /* RF4_BR_ACID */
787- case 96+8:
788- if (known)
789- {
790- if (see_either)
791- {
792- disturb(1, 1);
793-
794- if (blind)
795- {
796- msg_format(_("%^sが何かのブレスを吐いた。", "%^s breathes."), m_name);
797- }
798- else
799- {
800- msg_format(_("%^sが%sに酸のブレスを吐いた。", "%^s breathes acid at %s."), m_name, t_name);
801- }
802- }
803- else
804- {
805- mon_fight = TRUE;
806- }
807-
808- sound(SOUND_BREATH);
809- }
810-
811- dam = ((m_ptr->hp / 3) > 1600 ? 1600 : (m_ptr->hp / 3));
812- breath(y, x, m_idx,GF_ACID,dam, 0, TRUE, MS_BR_ACID, SPELL_MON_TO_MON);
813-
814- break;
815-
816- /* RF4_BR_ELEC */
817- case 96+9:
818- if (known)
819- {
820- if (see_either)
821- {
822- disturb(1, 1);
823-
824- if (blind)
825- {
826- msg_format(_("%^sが何かのブレスを吐いた。", "%^s breathes."), m_name);
827- }
828- else
829- {
830- msg_format(_("%^sが%sに稲妻のブレスを吐いた。", "%^s breathes lightning at %s."), m_name, t_name);
831- }
832- }
833- else
834- {
835- mon_fight = TRUE;
836- }
837-
838- sound(SOUND_BREATH);
839- }
840-
841- dam = ((m_ptr->hp / 3) > 1600 ? 1600 : (m_ptr->hp / 3));
842- breath(y, x, m_idx,GF_ELEC, dam, 0, TRUE, MS_BR_ELEC, SPELL_MON_TO_MON);
843-
844- break;
845-
846- /* RF4_BR_FIRE */
847- case 96+10:
848- if (known)
849- {
850- if (see_either)
851- {
852- disturb(1, 1);
853-
854- if (blind)
855- {
856- msg_format(_("%^sが何かのブレスを吐いた。", "%^s breathes."), m_name);
857- }
858- else
859- {
860- msg_format(_("%^sが%sに火炎のブレスを吐いた。", "%^s breathes fire at %s."), m_name, t_name);
861- }
862- }
863- else
864- {
865- mon_fight = TRUE;
866- }
867-
868- sound(SOUND_BREATH);
869- }
870-
871- dam = ((m_ptr->hp / 3) > 1600 ? 1600 : (m_ptr->hp / 3));
872- breath(y, x, m_idx,GF_FIRE, dam, 0, TRUE, MS_BR_FIRE, SPELL_MON_TO_MON);
873-
874- break;
875-
876- /* RF4_BR_COLD */
877- case 96+11:
878- if (known)
879- {
880- if (see_either)
881- {
882- disturb(1, 1);
883-
884- if (blind)
885- {
886- msg_format(_("%^sが何かのブレスを吐いた。", "%^s breathes."), m_name);
887- }
888- else
889- {
890- msg_format(_("%^sが%sに冷気のブレスを吐いた。", "%^s breathes frost at %s."), m_name, t_name);
891- }
892- }
893- else
894- {
895- mon_fight = TRUE;
896- }
897-
898- sound(SOUND_BREATH);
899- }
900-
901- dam = ((m_ptr->hp / 3) > 1600 ? 1600 : (m_ptr->hp / 3));
902- breath(y, x, m_idx,GF_COLD, dam, 0, TRUE, MS_BR_COLD, SPELL_MON_TO_MON);
903- break;
904-
905- /* RF4_BR_POIS */
906- case 96+12:
907- if (known)
908- {
909- if (see_either)
910- {
911- disturb(1, 1);
912-
913- if (blind)
914- {
915- msg_format(_("%^sが何かのブレスを吐いた。", "%^s breathes."), m_name);
916- }
917- else
918- {
919- msg_format(_("%^sが%sにガスのブレスを吐いた。", "%^s breathes gas at %s."), m_name, t_name);
920- }
921- }
922- else
923- {
924- mon_fight = TRUE;
925- }
926-
927- sound(SOUND_BREATH);
928- }
929-
930- dam = ((m_ptr->hp / 3) > 800 ? 800 : (m_ptr->hp / 3));
931- breath(y, x, m_idx,GF_POIS, dam, 0, TRUE, MS_BR_POIS, SPELL_MON_TO_MON);
932-
933- break;
934-
935- /* RF4_BR_NETH */
936- case 96+13:
937- if (known)
938- {
939- if (see_either)
940- {
941- disturb(1, 1);
942-
943- if (blind)
944- {
945- msg_format(_("%^sが何かのブレスを吐いた。", "%^s breathes."), m_name);
946- }
947- else
948- {
949- msg_format(_("%^sが%sに地獄のブレスを吐いた。", "%^s breathes nether at %s."), m_name, t_name);
950- }
951- }
952- else
953- {
954- mon_fight = TRUE;
955- }
956-
957- sound(SOUND_BREATH);
958- }
959-
960- dam = ((m_ptr->hp / 6) > 550 ? 550 : (m_ptr->hp / 6));
961- breath(y, x, m_idx,GF_NETHER, dam, 0, TRUE, MS_BR_NETHER, SPELL_MON_TO_MON);
962-
963- break;
964-
965- /* RF4_BR_LITE */
966- case 96+14:
967- if (known)
968- {
969- if (see_either)
970- {
971- disturb(1, 1);
972-
973- if (blind)
974- {
975- msg_format(_("%^sが何かのブレスを吐いた。", "%^s breathes."), m_name);
976- }
977- else
978- {
979- msg_format(_("%^sが%sに閃光のブレスを吐いた。", "%^s breathes light at %s."), m_name, t_name);
980- }
981- }
982- else
983- {
984- mon_fight = TRUE;
985- }
986-
987- sound(SOUND_BREATH);
988- }
989-
990- dam = ((m_ptr->hp / 6) > 400 ? 400 : (m_ptr->hp / 6));
991- breath(y, x, m_idx,GF_LITE, dam, 0, TRUE, MS_BR_LITE, SPELL_MON_TO_MON);
992-
993- break;
994-
995- /* RF4_BR_DARK */
996- case 96+15:
997- if (known)
998- {
999- if (see_either)
1000- {
1001- disturb(1, 1);
1002-
1003- if (blind)
1004- {
1005- msg_format(_("%^sが何かのブレスを吐いた。", "%^s breathes."), m_name);
1006- }
1007- else
1008- {
1009- msg_format(_("%^sが%sに暗黒のブレスを吐いた。", "%^s breathes darkness at %s."), m_name, t_name);
1010- }
1011- }
1012- else
1013- {
1014- mon_fight = TRUE;
1015- }
1016-
1017- sound(SOUND_BREATH);
1018- }
1019-
1020- dam = ((m_ptr->hp / 6) > 400 ? 400 : (m_ptr->hp / 6));
1021- breath(y, x, m_idx,GF_DARK, dam, 0, TRUE, MS_BR_DARK, SPELL_MON_TO_MON);
1022-
1023- break;
1024-
1025- /* RF4_BR_CONF */
1026- case 96+16:
1027- if (known)
1028- {
1029- if (see_either)
1030- {
1031- disturb(1, 1);
1032-
1033- if (blind)
1034- {
1035- msg_format(_("%^sが何かのブレスを吐いた。", "%^s breathes."), m_name);
1036- }
1037- else
1038- {
1039- msg_format(_("%^sが%sに混乱のブレスを吐いた。", "%^s breathes confusion at %s."), m_name, t_name);
1040- }
1041- }
1042- else
1043- {
1044- mon_fight = TRUE;
1045- }
1046-
1047- sound(SOUND_BREATH);
1048- }
1049-
1050- dam = ((m_ptr->hp / 6) > 450 ? 450 : (m_ptr->hp / 6));
1051- breath(y, x, m_idx,GF_CONFUSION, dam, 0, TRUE, MS_BR_CONF, SPELL_MON_TO_MON);
1052-
1053- break;
1054-
1055- /* RF4_BR_SOUN */
1056- case 96+17:
1057- if (known)
1058- {
1059- if (see_either)
1060- {
1061- disturb(1, 1);
1062-
1063- if (m_ptr->r_idx == MON_JAIAN)
1064- {
1065- msg_format(_("「ボォエ〜〜〜〜〜〜」", "'Booooeeeeee'"));
1066- }
1067- else if (blind)
1068- {
1069- msg_format(_("%^sが何かのブレスを吐いた。", "%^s breathes."), m_name);
1070- }
1071- else
1072- {
1073- msg_format(_("%^sが%sに轟音のブレスを吐いた。", "%^s breathes sound at %s."), m_name, t_name);
1074- }
1075- }
1076- else
1077- {
1078- mon_fight = TRUE;
1079- }
1080-
1081- sound(SOUND_BREATH);
1082- }
1083-
1084- dam = ((m_ptr->hp / 6) > 450 ? 450 : (m_ptr->hp / 6));
1085- breath(y, x, m_idx,GF_SOUND, dam, 0, TRUE, MS_BR_SOUND, SPELL_MON_TO_MON);
1086-
1087- break;
1088-
1089- /* RF4_BR_CHAO */
1090- case 96+18:
1091- if (known)
1092- {
1093- if (see_either)
1094- {
1095- disturb(1, 1);
1096-
1097- if (blind)
1098- {
1099- msg_format(_("%^sが何かのブレスを吐いた。", "%^s breathes."), m_name);
1100- }
1101- else
1102- {
1103- msg_format(_("%^sが%sにカオスのブレスを吐いた。", "%^s breathes chaos at %s."), m_name, t_name);
1104- }
1105- }
1106- else
1107- {
1108- mon_fight = TRUE;
1109- }
1110-
1111- sound(SOUND_BREATH);
1112- }
1113-
1114- dam = ((m_ptr->hp / 6) > 600 ? 600 : (m_ptr->hp / 6));
1115- breath(y, x, m_idx, GF_CHAOS, dam, 0, TRUE, MS_BR_CHAOS, SPELL_MON_TO_MON);
1116-
1117- break;
1118-
1119- /* RF4_BR_DISE */
1120- case 96+19:
1121- if (known)
1122- {
1123- if (see_either)
1124- {
1125- disturb(1, 1);
1126-
1127- if (blind)
1128- {
1129- msg_format(_("%^sが何かのブレスを吐いた。", "%^s breathes."), m_name);
1130- }
1131- else
1132- {
1133- msg_format(_("%^sが%sに劣化のブレスを吐いた。", "%^s breathes disenchantment at %s."), m_name, t_name);
1134- }
1135- }
1136- else
1137- {
1138- mon_fight = TRUE;
1139- }
1140-
1141- sound(SOUND_BREATH);
1142- }
1143-
1144- dam = ((m_ptr->hp / 6) > 500 ? 500 : (m_ptr->hp / 6));
1145- breath(y, x, m_idx, GF_DISENCHANT, dam, 0, TRUE, MS_BR_DISEN, SPELL_MON_TO_MON);
1146-
1147- break;
1148-
1149- /* RF4_BR_NEXU */
1150- case 96+20:
1151- if (known)
1152- {
1153- if (see_either)
1154- {
1155- disturb(1, 1);
1156-
1157- if (blind)
1158- {
1159- msg_format(_("%^sが何かのブレスを吐いた。", "%^s breathes."), m_name);
1160- }
1161- else
1162- {
1163- msg_format(_("%^sが%sに因果混乱のブレスを吐いた。", "%^s breathes nexus at %s."), m_name, t_name);
1164- }
1165- }
1166- else
1167- {
1168- mon_fight = TRUE;
1169- }
1170-
1171- sound(SOUND_BREATH);
1172- }
1173-
1174- dam = ((m_ptr->hp / 3) > 250 ? 250 : (m_ptr->hp / 3));
1175- breath(y, x, m_idx, GF_NEXUS, dam, 0, TRUE, MS_BR_NEXUS, SPELL_MON_TO_MON);
1176-
1177- break;
1178-
1179- /* RF4_BR_TIME */
1180- case 96+21:
1181- if (known)
1182- {
1183- if (see_either)
1184- {
1185- disturb(1, 1);
1186-
1187- if (blind)
1188- {
1189- msg_format(_("%^sが何かのブレスを吐いた。", "%^s breathes."), m_name);
1190- }
1191- else
1192- {
1193- msg_format(_("%^sが%sに時間逆転のブレスを吐いた。", "%^s breathes time at %s."), m_name, t_name);
1194- }
1195- }
1196- else
1197- {
1198- mon_fight = TRUE;
1199- }
1200-
1201- sound(SOUND_BREATH);
1202- }
1203-
1204- dam = ((m_ptr->hp / 3) > 150 ? 150 : (m_ptr->hp / 3));
1205- breath(y, x, m_idx, GF_TIME, dam, 0, TRUE, MS_BR_TIME, SPELL_MON_TO_MON);
1206-
1207- break;
1208-
1209- /* RF4_BR_INER */
1210- case 96+22:
1211- if (known)
1212- {
1213- if (see_either)
1214- {
1215- disturb(1, 1);
1216-
1217- if (blind)
1218- {
1219- msg_format(_("%^sが何かのブレスを吐いた。", "%^s breathes."), m_name);
1220- }
1221- else
1222- {
1223- msg_format(_("%^sが%sに遅鈍のブレスを吐いた。", "%^s breathes inertia at %s."), m_name, t_name);
1224- }
1225- }
1226- else
1227- {
1228- mon_fight = TRUE;
1229- }
1230-
1231- sound(SOUND_BREATH);
1232- }
1233-
1234- dam = ((m_ptr->hp / 6) > 200 ? 200 : (m_ptr->hp / 6));
1235- breath(y, x, m_idx, GF_INERTIA, dam, 0, TRUE, MS_BR_INERTIA, SPELL_MON_TO_MON);
1236-
1237- break;
1238-
1239- /* RF4_BR_GRAV */
1240- case 96+23:
1241- if (known)
1242- {
1243- if (see_either)
1244- {
1245- disturb(1, 1);
1246-
1247- if (blind)
1248- {
1249- msg_format(_("%^sが何かのブレスを吐いた。", "%^s breathes."), m_name);
1250- }
1251- else
1252- {
1253- msg_format(_("%^sが%sに重力のブレスを吐いた。", "%^s breathes gravity at %s."), m_name, t_name);
1254- }
1255- }
1256- else
1257- {
1258- mon_fight = TRUE;
1259- }
1260-
1261- sound(SOUND_BREATH);
1262- }
1263-
1264- dam = ((m_ptr->hp / 3) > 200 ? 200 : (m_ptr->hp / 3));
1265- breath(y, x, m_idx, GF_GRAVITY, dam, 0, TRUE, MS_BR_GRAVITY, SPELL_MON_TO_MON);
1266-
1267- break;
1268-
1269- /* RF4_BR_SHAR */
1270- case 96+24:
1271- if (known)
1272- {
1273- if (see_either)
1274- {
1275- disturb(1, 1);
1276-
1277- if (m_ptr->r_idx == MON_BOTEI)
1278- {
1279- msg_format(_("「ボ帝ビルカッター!!!」", "'Boty-Build cutter!!!'"));
1280- }
1281- else if (blind)
1282- {
1283- msg_format(_("%^sが何かのブレスを吐いた。", "%^s breathes."), m_name);
1284- }
1285- else
1286- {
1287- msg_format(_("%^sが%sに破片のブレスを吐いた。", "%^s breathes shards at %s."), m_name, t_name);
1288- }
1289- }
1290- else
1291- {
1292- mon_fight = TRUE;
1293- }
1294-
1295- sound(SOUND_BREATH);
1296- }
1297-
1298- dam = ((m_ptr->hp / 6) > 500 ? 500 : (m_ptr->hp / 6));
1299- breath(y, x, m_idx, GF_SHARDS, dam, 0, TRUE, MS_BR_SHARDS, SPELL_MON_TO_MON);
1300-
1301- break;
1302-
1303- /* RF4_BR_PLAS */
1304- case 96+25:
1305- if (known)
1306- {
1307- if (see_either)
1308- {
1309- disturb(1, 1);
1310-
1311- if (blind)
1312- {
1313- msg_format(_("%^sが何かのブレスを吐いた。", "%^s breathes."), m_name);
1314- }
1315- else
1316- {
1317- msg_format(_("%^sが%sにプラズマのブレスを吐いた。", "%^s breathes plasma at %s."), m_name, t_name);
1318- }
1319- }
1320- else
1321- {
1322- mon_fight = TRUE;
1323- }
1324-
1325- sound(SOUND_BREATH);
1326- }
1327-
1328- dam = ((m_ptr->hp / 6) > 150 ? 150 : (m_ptr->hp / 6));
1329- breath(y, x, m_idx,GF_PLASMA, dam, 0, TRUE, MS_BR_PLASMA, SPELL_MON_TO_MON);
1330-
1331- break;
1332-
1333- /* RF4_BR_WALL */
1334- case 96+26:
1335- if (known)
1336- {
1337- if (see_either)
1338- {
1339- disturb(1, 1);
1340-
1341- if (blind)
1342- {
1343- msg_format(_("%^sが何かのブレスを吐いた。", "%^s breathes."), m_name);
1344- }
1345- else
1346- {
1347- msg_format(_("%^sが%sにフォースのブレスを吐いた。", "%^s breathes force at %s."), m_name, t_name);
1348- }
1349- }
1350- else
1351- {
1352- mon_fight = TRUE;
1353- }
1354-
1355- sound(SOUND_BREATH);
1356- }
1357-
1358- dam = ((m_ptr->hp / 6) > 200 ? 200 : (m_ptr->hp / 6));
1359- breath(y, x, m_idx,GF_FORCE, dam, 0, TRUE, MS_BR_FORCE, SPELL_MON_TO_MON);
1360- break;
1361-
1362- /* RF4_BR_MANA */
1363- case 96+27:
1364- if (known)
1365- {
1366- if (see_either)
1367- {
1368- disturb(1, 1);
1369-
1370- if (blind)
1371- {
1372- msg_format(_("%^sが何かのブレスを吐いた。", "%^s breathes."), m_name);
1373- }
1374- else
1375- {
1376- msg_format(_("%^sが%sに魔力のブレスを吐いた。", "%^s breathes mana at %s."), m_name, t_name);
1377- }
1378- }
1379- else
1380- {
1381- mon_fight = TRUE;
1382- }
1383-
1384- sound(SOUND_BREATH);
1385- }
1386-
1387- dam = ((m_ptr->hp / 3) > 250 ? 250 : (m_ptr->hp / 3));
1388- breath(y, x, m_idx,GF_MANA, dam, 0, TRUE, MS_BR_MANA, SPELL_MON_TO_MON);
1389-
1390- break;
1391-
1392- /* RF4_BA_NUKE */
1393- case 96+28:
1394- if (known)
1395- {
1396- if (see_either)
1397- {
1398- disturb(1, 1);
1399-
1400- if (blind)
1401- {
1402- msg_format(_("%^sが何かをつぶやいた。", "%^s mumbles."), m_name);
1403- }
1404- else
1405- {
1406- msg_format(_("%^sが%sに放射能球を放った。", "%^s casts a ball of radiation at %s."), m_name, t_name);
1407- }
1408- }
1409- else
1410- {
1411- mon_fight = TRUE;
1412- }
1413- }
1414-
1415- dam = (rlev + damroll(10, 6));
1416- breath(y, x, m_idx,GF_NUKE, dam, 2, FALSE, MS_BALL_NUKE, SPELL_MON_TO_MON);
1417-
1418- break;
1419-
1420- /* RF4_BR_NUKE */
1421- case 96+29:
1422- if (known)
1423- {
1424- if (see_either)
1425- {
1426- disturb(1, 1);
1427-
1428- if (blind)
1429- {
1430- msg_format(_("%^sが何かのブレスを吐いた。", "%^s breathes."), m_name);
1431- }
1432- else
1433- {
1434- msg_format(_("%^sが%sに放射性廃棄物のブレスを吐いた。", "%^s breathes toxic waste at %s."), m_name, t_name);
1435- }
1436- }
1437- else
1438- {
1439- mon_fight = TRUE;
1440- }
1441-
1442- sound(SOUND_BREATH);
1443- }
1444-
1445- dam = ((m_ptr->hp / 3) > 800 ? 800 : (m_ptr->hp / 3));
1446- breath(y, x, m_idx,GF_NUKE, dam, 0, TRUE, MS_BR_NUKE, SPELL_MON_TO_MON);
1447- break;
1448-
1449- /* RF4_BA_CHAO */
1450- case 96+30:
1451- if (known)
1452- {
1453- if (see_either)
1454- {
1455- disturb(1, 1);
1456-
1457- if (blind)
1458- {
1459- msg_format(_("%^sが恐ろしげにつぶやいた。", "%^s mumbles frighteningly."), m_name);
1460- }
1461- else
1462- {
1463- msg_format(_("%^sが%sに純ログルスを放った。", "%^s invokes raw Logrus upon %s."), m_name, t_name);
1464- }
1465- }
1466- else
1467- {
1468- mon_fight = TRUE;
1469- }
1470- }
1471-
1472- dam = (rlev * 2) + damroll(10, 10);
1473- breath(y, x, m_idx,GF_CHAOS, dam, 4, FALSE, MS_BALL_CHAOS, SPELL_MON_TO_MON);
1474-
1475- break;
1476-
1477- /* RF4_BR_DISI */
1478- case 96+31:
1479- if (known)
1480- {
1481- if (see_either)
1482- {
1483- disturb(1, 1);
1484-
1485- if (blind)
1486- {
1487- msg_format(_("%^sが何かのブレスを吐いた。", "%^s breathes."), m_name);
1488- }
1489- else
1490- {
1491- msg_format(_("%^sが%sに分解のブレスを吐いた。", "%^s breathes disintegration at %s."), m_name, t_name);
1492- }
1493- }
1494- else
1495- {
1496- mon_fight = TRUE;
1497- }
1498-
1499- sound(SOUND_BREATH);
1500- }
1501-
1502- dam = ((m_ptr->hp / 6) > 150 ? 150 : (m_ptr->hp / 6));
1503- breath(y, x, m_idx,GF_DISINTEGRATE, dam, 0, TRUE, MS_BR_DISI, SPELL_MON_TO_MON);
1504- break;
738+ case 96 + 0: MM_spell_RF4_SHRIEK(m_idx, t_idx); break; /* RF4_SHRIEK */
739+ case 96 + 1: return FALSE; /* RF4_XXX1 */
740+ case 96 + 2: MM_spell_RF4_DISPEL(m_idx, t_idx); break; /* RF4_DISPEL */
741+ case 96 + 3: dam = MM_spell_RF4_ROCKET(y, x, m_idx, t_idx); break; /* RF4_ROCKET */
742+ case 96 + 4: dam = MM_spell_RF4_SHOOT(y, x, m_idx, t_idx); break; /* RF4_SHOOT */
743+ case 96 + 5: return FALSE; /* RF4_XXX2 */
744+ case 96 + 6: return FALSE; /* RF4_XXX3 */
745+ case 96 + 7: return FALSE; /* RF4_XXX4 */
746+ case 96 + 8: dam = MM_spell_RF4_BREATH(GF_ACID, y, x, m_idx, t_idx); break; /* RF4_BR_ACID */
747+ case 96 + 9: dam = MM_spell_RF4_BREATH(GF_ELEC, y, x, m_idx, t_idx); break; /* RF4_BR_ELEC */
748+ case 96 + 10: dam = MM_spell_RF4_BREATH(GF_FIRE, y, x, m_idx, t_idx); break; /* RF4_BR_FIRE */
749+ case 96 + 11: dam = MM_spell_RF4_BREATH(GF_COLD, y, x, m_idx, t_idx); break; /* RF4_BR_COLD */
750+ case 96 + 12: dam = MM_spell_RF4_BREATH(GF_POIS, y, x, m_idx, t_idx); break; /* RF4_BR_POIS */
751+ case 96 + 13: dam = MM_spell_RF4_BREATH(GF_NETHER, y, x, m_idx, t_idx); break; /* RF4_BR_NETH */
752+ case 96 + 14: dam = MM_spell_RF4_BREATH(GF_LITE, y, x, m_idx, t_idx); break; /* RF4_BR_LITE */
753+ case 96 + 15: dam = MM_spell_RF4_BREATH(GF_DARK, y, x, m_idx, t_idx); break; /* RF4_BR_DARK */
754+ case 96 + 16: dam = MM_spell_RF4_BREATH(GF_CONFUSION, y, x, m_idx, t_idx); break; /* RF4_BR_CONF */
755+ case 96 + 17: dam = MM_spell_RF4_BREATH(GF_SOUND, y, x, m_idx, t_idx); break; /* RF4_BR_SOUN */
756+ case 96 + 18: dam = MM_spell_RF4_BREATH(GF_CHAOS, y, x, m_idx, t_idx); break; /* RF4_BR_CHAO */
757+ case 96 + 19: dam = MM_spell_RF4_BREATH(GF_DISENCHANT, y, x, m_idx, t_idx); break; /* RF4_BR_DISE */
758+ case 96 + 20: dam = MM_spell_RF4_BREATH(GF_NEXUS, y, x, m_idx, t_idx); break; /* RF4_BR_NEXU */
759+ case 96 + 21: dam = MM_spell_RF4_BREATH(GF_TIME, y, x, m_idx, t_idx); break; /* RF4_BR_TIME */
760+ case 96 + 22: dam = MM_spell_RF4_BREATH(GF_INERTIA, y, x, m_idx, t_idx); break; /* RF4_BR_INER */
761+ case 96 + 23: dam = MM_spell_RF4_BREATH(GF_GRAVITY, y, x, m_idx, t_idx); break; /* RF4_BR_GRAV */
762+ case 96 + 24: dam = MM_spell_RF4_BREATH(GF_SHARDS, y, x, m_idx, t_idx); break; /* RF4_BR_SHAR */
763+ case 96 + 25: dam = MM_spell_RF4_BREATH(GF_PLASMA, y, x, m_idx, t_idx); break; /* RF4_BR_PLAS */
764+ case 96 + 26: dam = MM_spell_RF4_BREATH(GF_FORCE, y, x, m_idx, t_idx); break; /* RF4_BR_WALL */
765+ case 96 + 27: dam = MM_spell_RF4_BREATH(GF_MANA, y, x, m_idx, t_idx); break; /* RF4_BR_MANA */
766+
767+ /* RF4_BA_NUKE */
768+ case 96 + 28:
769+ if (known)
770+ {
771+ if (see_either)
772+ {
773+ disturb(1, 1);
774+
775+ if (blind)
776+ {
777+ msg_format(_("%^sが何かをつぶやいた。", "%^s mumbles."), m_name);
778+ }
779+ else
780+ {
781+ msg_format(_("%^sが%sに放射能球を放った。", "%^s casts a ball of radiation at %s."), m_name, t_name);
782+ }
783+ }
784+ else
785+ {
786+ mon_fight = TRUE;
787+ }
788+ }
789+
790+ dam = (rlev + damroll(10, 6));
791+ breath(y, x, m_idx, GF_NUKE, dam, 2, FALSE, MS_BALL_NUKE, MONSTER_TO_MONSTER);
792+
793+ break;
794+
795+ case 96 + 29: dam = MM_spell_RF4_BREATH(GF_NUKE, y, x, m_idx, t_idx); break; /* RF4_BR_NUKE */
796+
797+ /* RF4_BA_CHAO */
798+ case 96 + 30:
799+ if (known)
800+ {
801+ if (see_either)
802+ {
803+ disturb(1, 1);
804+
805+ if (blind)
806+ {
807+ msg_format(_("%^sが恐ろしげにつぶやいた。", "%^s mumbles frighteningly."), m_name);
808+ }
809+ else
810+ {
811+ msg_format(_("%^sが%sに純ログルスを放った。", "%^s invokes raw Logrus upon %s."), m_name, t_name);
812+ }
813+ }
814+ else
815+ {
816+ mon_fight = TRUE;
817+ }
818+ }
819+
820+ dam = (rlev * 2) + damroll(10, 10);
821+ breath(y, x, m_idx, GF_CHAOS, dam, 4, FALSE, MS_BALL_CHAOS, MONSTER_TO_MONSTER);
822+ break;
823+
824+ case 96 + 31: dam = MM_spell_RF4_BREATH(GF_DISINTEGRATE, y, x, m_idx, t_idx); break; /* RF4_BR_DISI */
1505825
1506826 /* RF5_BA_ACID */
1507827 case 128+0:
@@ -1537,7 +857,7 @@ bool monst_spell_monst(int m_idx)
1537857 rad = 2;
1538858 dam = (randint1(rlev * 3) + 15);
1539859 }
1540- breath(y, x, m_idx,GF_ACID, dam, rad, FALSE, MS_BALL_ACID, SPELL_MON_TO_MON);
860+ breath(y, x, m_idx,GF_ACID, dam, rad, FALSE, MS_BALL_ACID, MONSTER_TO_MONSTER);
1541861 break;
1542862
1543863 /* RF5_BA_ELEC */
@@ -1573,7 +893,7 @@ bool monst_spell_monst(int m_idx)
1573893 rad = 2;
1574894 dam = (randint1(rlev * 3 / 2) + 8);
1575895 }
1576- breath(y, x, m_idx,GF_ELEC, dam, rad, FALSE, MS_BALL_ELEC, SPELL_MON_TO_MON);
896+ breath(y, x, m_idx,GF_ELEC, dam, rad, FALSE, MS_BALL_ELEC, MONSTER_TO_MONSTER);
1577897 break;
1578898
1579899 /* RF5_BA_FIRE */
@@ -1620,7 +940,7 @@ bool monst_spell_monst(int m_idx)
1620940 rad = 2;
1621941 dam = (randint1(rlev * 7 / 2) + 10);
1622942 }
1623- breath(y, x, m_idx,GF_FIRE, dam, rad, FALSE, MS_BALL_FIRE, SPELL_MON_TO_MON);
943+ breath(y, x, m_idx,GF_FIRE, dam, rad, FALSE, MS_BALL_FIRE, MONSTER_TO_MONSTER);
1624944 break;
1625945
1626946 /* RF5_BA_COLD */
@@ -1657,7 +977,7 @@ bool monst_spell_monst(int m_idx)
1657977 rad = 2;
1658978 dam = (randint1(rlev * 3 / 2) + 10);
1659979 }
1660- breath(y, x, m_idx,GF_COLD, dam, rad, FALSE, MS_BALL_COLD, SPELL_MON_TO_MON);
980+ breath(y, x, m_idx,GF_COLD, dam, rad, FALSE, MS_BALL_COLD, MONSTER_TO_MONSTER);
1661981 break;
1662982
1663983 /* RF5_BA_POIS */
@@ -1685,7 +1005,7 @@ bool monst_spell_monst(int m_idx)
16851005 }
16861006
16871007 dam = damroll(12, 2) * ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 1);
1688- breath(y, x, m_idx,GF_POIS, dam, 2, FALSE, MS_BALL_POIS, SPELL_MON_TO_MON);
1008+ breath(y, x, m_idx,GF_POIS, dam, 2, FALSE, MS_BALL_POIS, MONSTER_TO_MONSTER);
16891009
16901010 break;
16911011
@@ -1713,7 +1033,7 @@ bool monst_spell_monst(int m_idx)
17131033 }
17141034
17151035 dam = 50 + damroll(10, 10) + (rlev * ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 1));
1716- breath(y, x, m_idx,GF_NETHER, dam, 2, FALSE, MS_BALL_NETHER, SPELL_MON_TO_MON);
1036+ breath(y, x, m_idx,GF_NETHER, dam, 2, FALSE, MS_BALL_NETHER, MONSTER_TO_MONSTER);
17171037
17181038 break;
17191039
@@ -1743,7 +1063,7 @@ bool monst_spell_monst(int m_idx)
17431063 }
17441064
17451065 dam = ((r_ptr->flags2 & RF2_POWERFUL) ? randint1(rlev * 3) : randint1(rlev * 2)) + 50;
1746- breath(y, x, m_idx,GF_WATER, dam, 4, FALSE, MS_BALL_WATER, SPELL_MON_TO_MON);
1066+ breath(y, x, m_idx,GF_WATER, dam, 4, FALSE, MS_BALL_WATER, MONSTER_TO_MONSTER);
17471067
17481068 break;
17491069
@@ -1771,7 +1091,7 @@ bool monst_spell_monst(int m_idx)
17711091 }
17721092
17731093 dam = (rlev * 4) + 50 + damroll(10, 10);
1774- breath(y, x, m_idx,GF_MANA, dam, 4, FALSE, MS_BALL_MANA, SPELL_MON_TO_MON);
1094+ breath(y, x, m_idx,GF_MANA, dam, 4, FALSE, MS_BALL_MANA, MONSTER_TO_MONSTER);
17751095
17761096 break;
17771097
@@ -1799,7 +1119,7 @@ bool monst_spell_monst(int m_idx)
17991119 }
18001120
18011121 dam = (rlev * 4) + 50 + damroll(10, 10);
1802- breath(y, x, m_idx,GF_DARK, dam, 4, FALSE, MS_BALL_DARK, SPELL_MON_TO_MON);
1122+ breath(y, x, m_idx,GF_DARK, dam, 4, FALSE, MS_BALL_DARK, MONSTER_TO_MONSTER);
18031123
18041124 break;
18051125
@@ -1812,7 +1132,7 @@ bool monst_spell_monst(int m_idx)
18121132 }
18131133
18141134 dam = ((randint1(rlev) / 2) + 1);
1815- breath(y, x, m_idx,GF_DRAIN_MANA, dam, 0, FALSE, MS_DRAIN_MANA, SPELL_MON_TO_MON);
1135+ breath(y, x, m_idx,GF_DRAIN_MANA, dam, 0, FALSE, MS_DRAIN_MANA, MONSTER_TO_MONSTER);
18161136
18171137 break;
18181138
@@ -1824,7 +1144,7 @@ bool monst_spell_monst(int m_idx)
18241144 }
18251145
18261146 dam = damroll(7, 7);
1827- breath(y, x, m_idx,GF_MIND_BLAST, dam, 0, FALSE, MS_MIND_BLAST, SPELL_MON_TO_MON);
1147+ breath(y, x, m_idx,GF_MIND_BLAST, dam, 0, FALSE, MS_MIND_BLAST, MONSTER_TO_MONSTER);
18281148
18291149 break;
18301150
@@ -1836,7 +1156,7 @@ bool monst_spell_monst(int m_idx)
18361156 }
18371157
18381158 dam = damroll(12, 12);
1839- breath(y, x, m_idx,GF_BRAIN_SMASH, dam, 0, FALSE, MS_BRAIN_SMASH, SPELL_MON_TO_MON);
1159+ breath(y, x, m_idx,GF_BRAIN_SMASH, dam, 0, FALSE, MS_BRAIN_SMASH, MONSTER_TO_MONSTER);
18401160
18411161 break;
18421162
@@ -1855,7 +1175,7 @@ bool monst_spell_monst(int m_idx)
18551175 }
18561176
18571177 dam = damroll(3, 8);
1858- breath(y, x, m_idx,GF_CAUSE_1, dam, 0, FALSE, MS_CAUSE_1, SPELL_MON_TO_MON);
1178+ breath(y, x, m_idx,GF_CAUSE_1, dam, 0, FALSE, MS_CAUSE_1, MONSTER_TO_MONSTER);
18591179
18601180 break;
18611181
@@ -1875,7 +1195,7 @@ bool monst_spell_monst(int m_idx)
18751195 }
18761196
18771197 dam = damroll(8, 8);
1878- breath(y, x, m_idx,GF_CAUSE_2, dam, 0, FALSE, MS_CAUSE_2, SPELL_MON_TO_MON);
1198+ breath(y, x, m_idx,GF_CAUSE_2, dam, 0, FALSE, MS_CAUSE_2, MONSTER_TO_MONSTER);
18791199
18801200 break;
18811201
@@ -1895,7 +1215,7 @@ bool monst_spell_monst(int m_idx)
18951215 }
18961216
18971217 dam = damroll(10, 15);
1898- breath(y, x, m_idx,GF_CAUSE_3, dam, 0, FALSE, MS_CAUSE_3, SPELL_MON_TO_MON);
1218+ breath(y, x, m_idx,GF_CAUSE_3, dam, 0, FALSE, MS_CAUSE_3, MONSTER_TO_MONSTER);
18991219
19001220 break;
19011221
@@ -1915,7 +1235,7 @@ bool monst_spell_monst(int m_idx)
19151235 }
19161236
19171237 dam = damroll(15, 15);
1918- breath(y, x, m_idx,GF_CAUSE_4, dam, 0, FALSE, MS_CAUSE_4, SPELL_MON_TO_MON);
1238+ breath(y, x, m_idx,GF_CAUSE_4, dam, 0, FALSE, MS_CAUSE_4, MONSTER_TO_MONSTER);
19191239
19201240 break;
19211241
@@ -1934,7 +1254,7 @@ bool monst_spell_monst(int m_idx)
19341254 }
19351255
19361256 dam = (damroll(7, 8) + (rlev / 3)) * ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 1);
1937- bolt(m_idx, y, x, GF_ACID, dam, MS_BOLT_ACID, SPELL_MON_TO_MON);
1257+ bolt(m_idx, y, x, GF_ACID, dam, MS_BOLT_ACID, MONSTER_TO_MONSTER);
19381258
19391259 break;
19401260
@@ -1953,7 +1273,7 @@ bool monst_spell_monst(int m_idx)
19531273 }
19541274
19551275 dam = (damroll(4, 8) + (rlev / 3)) * ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 1);
1956- bolt(m_idx, y, x, GF_ELEC, dam, MS_BOLT_ELEC, SPELL_MON_TO_MON);
1276+ bolt(m_idx, y, x, GF_ELEC, dam, MS_BOLT_ELEC, MONSTER_TO_MONSTER);
19571277
19581278 break;
19591279
@@ -1972,7 +1292,7 @@ bool monst_spell_monst(int m_idx)
19721292 }
19731293
19741294 dam = (damroll(9, 8) + (rlev / 3)) * ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 1);
1975- bolt(m_idx, y, x, GF_FIRE, dam, MS_BOLT_FIRE, SPELL_MON_TO_MON);
1295+ bolt(m_idx, y, x, GF_FIRE, dam, MS_BOLT_FIRE, MONSTER_TO_MONSTER);
19761296
19771297 break;
19781298
@@ -1991,7 +1311,7 @@ bool monst_spell_monst(int m_idx)
19911311 }
19921312
19931313 dam = (damroll(6, 8) + (rlev / 3)) * ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 1);
1994- bolt(m_idx, y, x, GF_COLD, dam, MS_BOLT_COLD, SPELL_MON_TO_MON);
1314+ bolt(m_idx, y, x, GF_COLD, dam, MS_BOLT_COLD, MONSTER_TO_MONSTER);
19951315
19961316 break;
19971317
@@ -2020,7 +1340,7 @@ bool monst_spell_monst(int m_idx)
20201340 }
20211341
20221342 dam = (rlev * 4) + 50 + damroll(10, 10);
2023- breath(y, x, m_idx,GF_LITE, dam, 4, FALSE, MS_STARBURST, SPELL_MON_TO_MON);
1343+ breath(y, x, m_idx,GF_LITE, dam, 4, FALSE, MS_STARBURST, MONSTER_TO_MONSTER);
20241344
20251345 break;
20261346
@@ -2040,7 +1360,7 @@ bool monst_spell_monst(int m_idx)
20401360 }
20411361
20421362 dam = 30 + damroll(5, 5) + (rlev * 4) / ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 3);
2043- bolt(m_idx, y, x, GF_NETHER, dam, MS_BOLT_NETHER, SPELL_MON_TO_MON);
1363+ bolt(m_idx, y, x, GF_NETHER, dam, MS_BOLT_NETHER, MONSTER_TO_MONSTER);
20441364
20451365 break;
20461366
@@ -2060,7 +1380,7 @@ bool monst_spell_monst(int m_idx)
20601380 }
20611381
20621382 dam = damroll(10, 10) + (rlev * 3 / ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 3));
2063- bolt(m_idx, y, x, GF_WATER, dam, MS_BOLT_WATER, SPELL_MON_TO_MON);
1383+ bolt(m_idx, y, x, GF_WATER, dam, MS_BOLT_WATER, MONSTER_TO_MONSTER);
20641384
20651385 break;
20661386
@@ -2080,7 +1400,7 @@ bool monst_spell_monst(int m_idx)
20801400 }
20811401
20821402 dam = randint1(rlev * 7 / 2) + 50;
2083- bolt(m_idx, y, x, GF_MANA, dam, MS_BOLT_MANA, SPELL_MON_TO_MON);
1403+ bolt(m_idx, y, x, GF_MANA, dam, MS_BOLT_MANA, MONSTER_TO_MONSTER);
20841404
20851405 break;
20861406
@@ -2100,7 +1420,7 @@ bool monst_spell_monst(int m_idx)
21001420 }
21011421
21021422 dam = 10 + damroll(8, 7) + (rlev * 3 / ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 3));
2103- bolt(m_idx, y, x, GF_PLASMA, dam, MS_BOLT_PLASMA, SPELL_MON_TO_MON);
1423+ bolt(m_idx, y, x, GF_PLASMA, dam, MS_BOLT_PLASMA, MONSTER_TO_MONSTER);
21041424
21051425 break;
21061426
@@ -2120,7 +1440,7 @@ bool monst_spell_monst(int m_idx)
21201440 }
21211441
21221442 dam = damroll(6, 6) + (rlev * 3 / ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 3));
2123- bolt(m_idx, y, x, GF_ICE, dam, MS_BOLT_ICE, SPELL_MON_TO_MON);
1443+ bolt(m_idx, y, x, GF_ICE, dam, MS_BOLT_ICE, MONSTER_TO_MONSTER);
21241444
21251445 break;
21261446
@@ -2140,7 +1460,7 @@ bool monst_spell_monst(int m_idx)
21401460 }
21411461
21421462 dam = damroll(2, 6) + (rlev / 3);
2143- bolt(m_idx, y, x, GF_MISSILE, dam, MS_MAGIC_MISSILE, SPELL_MON_TO_MON);
1463+ bolt(m_idx, y, x, GF_MISSILE, dam, MS_MAGIC_MISSILE, MONSTER_TO_MONSTER);
21441464
21451465 break;
21461466
@@ -2363,7 +1683,7 @@ bool monst_spell_monst(int m_idx)
23631683 }
23641684
23651685 dam = 20; /* Dummy power */
2366- breath(y, x, m_idx,GF_HAND_DOOM, dam, 0, FALSE, MS_HAND_DOOM, SPELL_MON_TO_MON);
1686+ breath(y, x, m_idx,GF_HAND_DOOM, dam, 0, FALSE, MS_HAND_DOOM, MONSTER_TO_MONSTER);
23671687
23681688 break;
23691689
@@ -2752,7 +2072,7 @@ bool monst_spell_monst(int m_idx)
27522072 }
27532073
27542074 dam = (r_ptr->flags2 & RF2_POWERFUL) ? (randint1(rlev * 2) + 180) : (randint1(rlev * 3 / 2) + 120);
2755- beam(m_idx, y, x, GF_PSY_SPEAR, dam, MS_PSY_SPEAR, SPELL_MON_TO_MON);
2075+ beam(m_idx, y, x, GF_PSY_SPEAR, dam, MS_PSY_SPEAR, MONSTER_TO_MONSTER);
27562076 break;
27572077
27582078 /* RF6_DARKNESS */
--- a/src/mspells4.c
+++ b/src/mspells4.c
@@ -41,28 +41,6 @@ int monster_level_idx(int m_idx)
4141 return rlev;
4242 }
4343
44-int spell_core(int SPELL_NUM, int hp, int y, int x, int m_idx, int SPELL_TYPE)
45-{
46- int dam;
47-
48- monster_type *m_ptr = &m_list[m_idx];
49- monster_race *r_ptr = &r_info[m_ptr->r_idx];
50- bool learnable = spell_learnable(m_idx);
51-
52- switch (SPELL_NUM)
53- {
54- case RF4_ROCKET:
55- dam = (hp / 4) > 800 ? 800 : (hp / 4);
56- breath(y, x, m_idx, GF_ROCKET, dam, 2, FALSE, MS_ROCKET, SPELL_TYPE);
57- if (SPELL_TYPE == SPELL_MON_TO_PLAYER)
58- {
59- update_smart_learn(m_idx, DRS_SHARD);
60- }
61- break;
62- }
63- return dam;
64-}
65-
6644 void MP_spell_RF4_SHRIEK(int m_idx)
6745 {
6846 cptr m_name = monster_name(m_idx);
@@ -133,25 +111,36 @@ void MM_spell_RF4_DISPEL(int m_idx, int t_idx)
133111 dispel_monster_status(t_idx);
134112 }
135113
114+int spell_RF4_ROCKET(int y, int x, int m_idx, int TARGET_TYPE)
115+{
116+ int dam;
117+ monster_type *m_ptr = &m_list[m_idx];
118+
119+ dam = (m_ptr->hp / 4) > 800 ? 800 : (m_ptr->hp / 4);
120+ breath(y, x, m_idx, GF_ROCKET, dam, 2, FALSE, MS_ROCKET, TARGET_TYPE);
121+ if (TARGET_TYPE == MONSTER_TO_PLAYER)
122+ {
123+ update_smart_learn(m_idx, DRS_SHARD);
124+ }
125+ return dam;
126+}
136127
137128 int MP_spell_RF4_ROCKET(int y, int x, int m_idx)
138129 {
139130 cptr m_name = monster_name(m_idx);
140- monster_type *m_ptr = &m_list[m_idx];
141131 disturb(1, 1);
142132 if (p_ptr->blind)
143133 msg_format(_("%^sが何かを射った。", "%^s shoots something."), m_name);
144134 else
145135 msg_format(_("%^sがロケットを発射した。", "%^s fires a rocket."), m_name);
146136
147- return spell_core(RF4_ROCKET, m_ptr->hp, y, x, m_idx, SPELL_MON_TO_PLAYER);
137+ return spell_RF4_ROCKET(y, x, m_idx, MONSTER_TO_PLAYER);
148138 }
149139
150140 int MM_spell_RF4_ROCKET(int y, int x, int m_idx, int t_idx)
151141 {
152142 cptr m_name = monster_name(m_idx);
153143 cptr t_name = monster_name(t_idx);
154- monster_type *m_ptr = &m_list[m_idx];
155144
156145 bool known = monster_near_player(m_idx, t_idx);
157146 bool see_either = see_monster(m_idx) || see_monster(t_idx);
@@ -175,174 +164,211 @@ int MM_spell_RF4_ROCKET(int y, int x, int m_idx, int t_idx)
175164 mon_fight = TRUE;
176165 }
177166 }
178- return spell_core(RF4_ROCKET, m_ptr->hp, y, x, m_idx, SPELL_MON_TO_MON);
167+ return spell_RF4_ROCKET(y, x, m_idx, MONSTER_TO_MONSTER);
179168 }
180169
181-int spell_RF4_SHOOT(int y, int x, int m_idx)
170+int spell_RF4_SHOOT(int y, int x, int m_idx, int TARGET_TYPE)
182171 {
183- bool learnable = spell_learnable(m_idx);
184- cptr m_name = monster_name(m_idx);
172+ int dam;
185173 monster_type *m_ptr = &m_list[m_idx];
186174 monster_race *r_ptr = &r_info[m_ptr->r_idx];
187175
188- int dam;
176+ dam = damroll(r_ptr->blow[0].d_dice, r_ptr->blow[0].d_side);
177+ bolt(m_idx, y, x, GF_ARROW, dam, MS_SHOOT, TARGET_TYPE);
178+ sound(SOUND_SHOOT);
179+
180+ return dam;
181+}
182+
183+int MP_spell_RF4_SHOOT(int y, int x, int m_idx)
184+{
185+ bool learnable = spell_learnable(m_idx);
186+ cptr m_name = monster_name(m_idx);
187+
189188 disturb(1, 1);
190189 if (p_ptr->blind)
191190 msg_format(_("%^sが奇妙な音を発した。", "%^s makes a strange noise."), m_name);
192191 else
193192 msg_format(_("%^sが矢を放った。", "%^s fires an arrow."), m_name);
194193
195- dam = damroll(r_ptr->blow[0].d_dice, r_ptr->blow[0].d_side);
196- bolt(m_idx, y, x, GF_ARROW, dam, MS_SHOOT, SPELL_MON_TO_PLAYER);
197- update_smart_learn(m_idx, DRS_REFLECT);
198- return dam;
194+ return spell_RF4_SHOOT(y, x, m_idx, MONSTER_TO_PLAYER);
199195 }
200196
201-int spell_RF4_BREATH(int GF_TYPE, int y, int x, int m_idx)
197+int MM_spell_RF4_SHOOT(int y, int x, int m_idx, int t_idx)
198+{
199+ cptr m_name = monster_name(m_idx);
200+ cptr t_name = monster_name(t_idx);
201+ bool known = monster_near_player(m_idx, t_idx);
202+ bool see_either = see_monster(m_idx) || see_monster(t_idx);
203+ if (known)
204+ {
205+ if (see_either)
206+ {
207+ if (p_ptr->blind)
208+ {
209+ msg_format(_("%^sが奇妙な音を発した。", "%^s makes a strange noise."), m_name);
210+ }
211+ else
212+ {
213+ msg_format(_("%^sが%sに矢を放った。", "%^s fires an arrow at %s."), m_name, t_name);
214+ }
215+ }
216+ else
217+ {
218+ mon_fight = TRUE;
219+ }
220+ }
221+ return spell_RF4_SHOOT(y, x, m_idx, MONSTER_TO_MONSTER);
222+}
223+
224+int spell_RF4_BREATH(int GF_TYPE, int y, int x, int m_idx, int t_idx, int TARGET_TYPE)
202225 {
203226 bool learnable = spell_learnable(m_idx);
204227 int dam, ms_type, drs_type;
205228 cptr type_s;
206229 bool smart_learn = TRUE;
207230 cptr m_name = monster_name(m_idx);
231+ cptr t_name = monster_name(t_idx);
208232 monster_type *m_ptr = &m_list[m_idx];
233+ bool known = monster_near_player(m_idx, t_idx);
234+ bool see_either = see_monster(m_idx) || see_monster(t_idx);
209235
210236 switch (GF_TYPE)
211237 {
212- case GF_ACID:
213- dam = ((m_ptr->hp / 3) > 1600 ? 1600 : (m_ptr->hp / 3));
214- type_s = _("酸", "acid");
215- ms_type = MS_BR_ACID;
216- drs_type = DRS_ACID;
217- break;
218- case GF_ELEC:
219- dam = ((m_ptr->hp / 3) > 1600 ? 1600 : (m_ptr->hp / 3));
220- type_s = _("稲妻", "lightning");
221- ms_type = MS_BR_ELEC;
222- drs_type = DRS_ELEC;
223- break;
224- case GF_FIRE:
225- dam = ((m_ptr->hp / 3) > 1600 ? 1600 : (m_ptr->hp / 3));
226- type_s = _("火炎", "fire");
227- ms_type = MS_BR_FIRE;
228- drs_type = DRS_FIRE;
229- break;
230- case GF_COLD:
231- dam = ((m_ptr->hp / 3) > 1600 ? 1600 : (m_ptr->hp / 3));
232- type_s = _("冷気", "frost");
233- ms_type = MS_BR_COLD;
234- drs_type = DRS_COLD;
235- break;
236- case GF_POIS:
237- dam = ((m_ptr->hp / 3) > 800 ? 800 : (m_ptr->hp / 3));
238- type_s = _("ガス", "gas");
239- ms_type = MS_BR_POIS;
240- drs_type = DRS_POIS;
241- break;
242- case GF_NETHER:
243- dam = ((m_ptr->hp / 6) > 550 ? 550 : (m_ptr->hp / 6));
244- type_s = _("地獄", "nether");
245- ms_type = MS_BR_NETHER;
246- drs_type = DRS_NETH;
247- break;
248- case GF_LITE:
249- dam = ((m_ptr->hp / 6) > 400 ? 400 : (m_ptr->hp / 6));
250- type_s = _("閃光", "light");
251- ms_type = MS_BR_LITE;
252- drs_type = DRS_LITE;
253- break;
254- case GF_DARK:
255- dam = ((m_ptr->hp / 6) > 400 ? 400 : (m_ptr->hp / 6));
256- type_s = _("暗黒", "darkness");
257- ms_type = MS_BR_DARK;
258- drs_type = DRS_DARK;
259- break;
260- case GF_CONFUSION:
261- dam = ((m_ptr->hp / 6) > 450 ? 450 : (m_ptr->hp / 6));
262- type_s = _("混乱", "confusion");
263- ms_type = MS_BR_CONF;
264- drs_type = DRS_CONF;
265- break;
266- case GF_SOUND:
267- dam = ((m_ptr->hp / 6) > 450 ? 450 : (m_ptr->hp / 6));
268- type_s = _("轟音", "sound");
269- ms_type = MS_BR_SOUND;
270- drs_type = DRS_SOUND;
271- break;
272- case GF_CHAOS:
273- dam = ((m_ptr->hp / 6) > 600 ? 600 : (m_ptr->hp / 6));
274- type_s = _("カオス", "chaos");
275- ms_type = MS_BR_CHAOS;
276- drs_type = DRS_CHAOS;
277- break;
278- case GF_DISENCHANT:
279- dam = ((m_ptr->hp / 6) > 500 ? 500 : (m_ptr->hp / 6));
280- type_s = _("劣化", "disenchantment");
281- ms_type = MS_BR_DISEN;
282- drs_type = DRS_DISEN;
283- break;
284- case GF_NEXUS:
285- dam = ((m_ptr->hp / 3) > 250 ? 250 : (m_ptr->hp / 3));
286- type_s = _("因果混乱", "nexus");
287- ms_type = MS_BR_NEXUS;
288- drs_type = DRS_NEXUS;
289- break;
290- case GF_TIME:
291- dam = ((m_ptr->hp / 3) > 150 ? 150 : (m_ptr->hp / 3));
292- type_s = _("時間逆転", "time");
293- ms_type = MS_BR_TIME;
294- smart_learn = FALSE;
295- break;
296- case GF_INERTIA:
297- dam = ((m_ptr->hp / 6) > 200 ? 200 : (m_ptr->hp / 6));
298- type_s = _("遅鈍", "inertia");
299- ms_type = MS_BR_INERTIA;
300- smart_learn = FALSE;
301- break;
302- case GF_GRAVITY:
303- dam = ((m_ptr->hp / 3) > 200 ? 200 : (m_ptr->hp / 3));
304- type_s = _("重力", "gravity");
305- ms_type = MS_BR_GRAVITY;
306- smart_learn = FALSE;
307- break;
308- case GF_SHARDS:
309- dam = ((m_ptr->hp / 6) > 500 ? 500 : (m_ptr->hp / 6));
310- type_s = _("破片", "shards");
311- ms_type = MS_BR_SHARDS;
312- drs_type = DRS_SHARD;
313- break;
314- case GF_PLASMA:
315- dam = ((m_ptr->hp / 6) > 150 ? 150 : (m_ptr->hp / 6));
316- type_s = _("プラズマ", "plasma");
317- ms_type = MS_BR_PLASMA;
318- smart_learn = FALSE;
319- break;
320- case GF_FORCE:
321- dam = ((m_ptr->hp / 6) > 200 ? 200 : (m_ptr->hp / 6));
322- type_s = _("フォース", "force");
323- ms_type = MS_BR_FORCE;
324- smart_learn = FALSE;
325- break;
326- case GF_MANA:
327- dam = ((m_ptr->hp / 3) > 250 ? 250 : (m_ptr->hp / 3));
328- type_s = _("魔力", "mana");
329- ms_type = MS_BR_MANA;
330- smart_learn = FALSE;
331- break;
332- case GF_NUKE:
333- dam = ((m_ptr->hp / 3) > 800 ? 800 : (m_ptr->hp / 3));
334- type_s = _("放射性廃棄物", "toxic waste");
335- ms_type = MS_BR_NUKE;
336- drs_type = DRS_POIS;
337- break;
338- case GF_DISINTEGRATE:
339- dam = ((m_ptr->hp / 6) > 150 ? 150 : (m_ptr->hp / 6));
340- type_s = _("分解", "disintegration");
341- ms_type = MS_BR_DISI;
342- smart_learn = FALSE;
343- break;
344- default:
345- break;
238+ case GF_ACID:
239+ dam = ((m_ptr->hp / 3) > 1600 ? 1600 : (m_ptr->hp / 3));
240+ type_s = _("酸", "acid");
241+ ms_type = MS_BR_ACID;
242+ drs_type = DRS_ACID;
243+ break;
244+ case GF_ELEC:
245+ dam = ((m_ptr->hp / 3) > 1600 ? 1600 : (m_ptr->hp / 3));
246+ type_s = _("稲妻", "lightning");
247+ ms_type = MS_BR_ELEC;
248+ drs_type = DRS_ELEC;
249+ break;
250+ case GF_FIRE:
251+ dam = ((m_ptr->hp / 3) > 1600 ? 1600 : (m_ptr->hp / 3));
252+ type_s = _("火炎", "fire");
253+ ms_type = MS_BR_FIRE;
254+ drs_type = DRS_FIRE;
255+ break;
256+ case GF_COLD:
257+ dam = ((m_ptr->hp / 3) > 1600 ? 1600 : (m_ptr->hp / 3));
258+ type_s = _("冷気", "frost");
259+ ms_type = MS_BR_COLD;
260+ drs_type = DRS_COLD;
261+ break;
262+ case GF_POIS:
263+ dam = ((m_ptr->hp / 3) > 800 ? 800 : (m_ptr->hp / 3));
264+ type_s = _("ガス", "gas");
265+ ms_type = MS_BR_POIS;
266+ drs_type = DRS_POIS;
267+ break;
268+ case GF_NETHER:
269+ dam = ((m_ptr->hp / 6) > 550 ? 550 : (m_ptr->hp / 6));
270+ type_s = _("地獄", "nether");
271+ ms_type = MS_BR_NETHER;
272+ drs_type = DRS_NETH;
273+ break;
274+ case GF_LITE:
275+ dam = ((m_ptr->hp / 6) > 400 ? 400 : (m_ptr->hp / 6));
276+ type_s = _("閃光", "light");
277+ ms_type = MS_BR_LITE;
278+ drs_type = DRS_LITE;
279+ break;
280+ case GF_DARK:
281+ dam = ((m_ptr->hp / 6) > 400 ? 400 : (m_ptr->hp / 6));
282+ type_s = _("暗黒", "darkness");
283+ ms_type = MS_BR_DARK;
284+ drs_type = DRS_DARK;
285+ break;
286+ case GF_CONFUSION:
287+ dam = ((m_ptr->hp / 6) > 450 ? 450 : (m_ptr->hp / 6));
288+ type_s = _("混乱", "confusion");
289+ ms_type = MS_BR_CONF;
290+ drs_type = DRS_CONF;
291+ break;
292+ case GF_SOUND:
293+ dam = ((m_ptr->hp / 6) > 450 ? 450 : (m_ptr->hp / 6));
294+ type_s = _("轟音", "sound");
295+ ms_type = MS_BR_SOUND;
296+ drs_type = DRS_SOUND;
297+ break;
298+ case GF_CHAOS:
299+ dam = ((m_ptr->hp / 6) > 600 ? 600 : (m_ptr->hp / 6));
300+ type_s = _("カオス", "chaos");
301+ ms_type = MS_BR_CHAOS;
302+ drs_type = DRS_CHAOS;
303+ break;
304+ case GF_DISENCHANT:
305+ dam = ((m_ptr->hp / 6) > 500 ? 500 : (m_ptr->hp / 6));
306+ type_s = _("劣化", "disenchantment");
307+ ms_type = MS_BR_DISEN;
308+ drs_type = DRS_DISEN;
309+ break;
310+ case GF_NEXUS:
311+ dam = ((m_ptr->hp / 3) > 250 ? 250 : (m_ptr->hp / 3));
312+ type_s = _("因果混乱", "nexus");
313+ ms_type = MS_BR_NEXUS;
314+ drs_type = DRS_NEXUS;
315+ break;
316+ case GF_TIME:
317+ dam = ((m_ptr->hp / 3) > 150 ? 150 : (m_ptr->hp / 3));
318+ type_s = _("時間逆転", "time");
319+ ms_type = MS_BR_TIME;
320+ smart_learn = FALSE;
321+ break;
322+ case GF_INERTIA:
323+ dam = ((m_ptr->hp / 6) > 200 ? 200 : (m_ptr->hp / 6));
324+ type_s = _("遅鈍", "inertia");
325+ ms_type = MS_BR_INERTIA;
326+ smart_learn = FALSE;
327+ break;
328+ case GF_GRAVITY:
329+ dam = ((m_ptr->hp / 3) > 200 ? 200 : (m_ptr->hp / 3));
330+ type_s = _("重力", "gravity");
331+ ms_type = MS_BR_GRAVITY;
332+ smart_learn = FALSE;
333+ break;
334+ case GF_SHARDS:
335+ dam = ((m_ptr->hp / 6) > 500 ? 500 : (m_ptr->hp / 6));
336+ type_s = _("破片", "shards");
337+ ms_type = MS_BR_SHARDS;
338+ drs_type = DRS_SHARD;
339+ break;
340+ case GF_PLASMA:
341+ dam = ((m_ptr->hp / 6) > 150 ? 150 : (m_ptr->hp / 6));
342+ type_s = _("プラズマ", "plasma");
343+ ms_type = MS_BR_PLASMA;
344+ smart_learn = FALSE;
345+ break;
346+ case GF_FORCE:
347+ dam = ((m_ptr->hp / 6) > 200 ? 200 : (m_ptr->hp / 6));
348+ type_s = _("フォース", "force");
349+ ms_type = MS_BR_FORCE;
350+ smart_learn = FALSE;
351+ break;
352+ case GF_MANA:
353+ dam = ((m_ptr->hp / 3) > 250 ? 250 : (m_ptr->hp / 3));
354+ type_s = _("魔力", "mana");
355+ ms_type = MS_BR_MANA;
356+ smart_learn = FALSE;
357+ break;
358+ case GF_NUKE:
359+ dam = ((m_ptr->hp / 3) > 800 ? 800 : (m_ptr->hp / 3));
360+ type_s = _("放射性廃棄物", "toxic waste");
361+ ms_type = MS_BR_NUKE;
362+ drs_type = DRS_POIS;
363+ break;
364+ case GF_DISINTEGRATE:
365+ dam = ((m_ptr->hp / 6) > 150 ? 150 : (m_ptr->hp / 6));
366+ type_s = _("分解", "disintegration");
367+ ms_type = MS_BR_DISI;
368+ smart_learn = FALSE;
369+ break;
370+ default:
371+ break;
346372 }
347373
348374 disturb(1, 1);
@@ -356,18 +382,43 @@ int spell_RF4_BREATH(int GF_TYPE, int y, int x, int m_idx)
356382 }
357383 else if (p_ptr->blind)
358384 {
385+ if (TARGET_TYPE == MONSTER_TO_PLAYER ||
386+ ((TARGET_TYPE == MONSTER_TO_MONSTER) && known && see_either))
359387 msg_format(_("%^sが何かのブレスを吐いた。", "%^s breathes."), m_name);
360388 }
361389 else
362390 {
363- msg_format(_("%^sが%^sのブレスを吐いた。", "%^s breathes %^s."), m_name, type_s);
391+ if (TARGET_TYPE == MONSTER_TO_PLAYER)
392+ {
393+ msg_format(_("%^sが%^sのブレスを吐いた。", "%^s breathes %^s."), m_name, type_s);
394+ }
395+ else if ((TARGET_TYPE == MONSTER_TO_MONSTER) && known && see_either)
396+ {
397+ _(msg_format("%^sが%^sに%^sのブレスを吐いた。", m_name, t_name, type_s),
398+ msg_format("%^s breathes %^s at %^s.", m_name, type_s, t_name));
399+ }
364400 }
365401
366- breath(y, x, m_idx, GF_TYPE, dam, 0, TRUE, ms_type, SPELL_MON_TO_PLAYER);
367- if (smart_learn) update_smart_learn(m_idx, drs_type);
402+ if (known && !see_either)
403+ mon_fight = TRUE;
404+
405+ sound(SOUND_BREATH);
406+ breath(y, x, m_idx, GF_TYPE, dam, 0, TRUE, ms_type, TARGET_TYPE);
407+ if (smart_learn && TARGET_TYPE == MONSTER_TO_PLAYER)
408+ update_smart_learn(m_idx, drs_type);
368409 return dam;
369410 }
370411
412+int MP_spell_RF4_BREATH(int GF_TYPE, int y, int x, int m_idx)
413+{
414+ return spell_RF4_BREATH(GF_TYPE, y, x, m_idx, 0, MONSTER_TO_PLAYER);
415+}
416+
417+int MM_spell_RF4_BREATH(int GF_TYPE, int y, int x, int m_idx, int t_idx)
418+{
419+ return spell_RF4_BREATH(GF_TYPE, y, x, m_idx, t_idx, MONSTER_TO_MONSTER);
420+}
421+
371422 int spell_RF4_BA_CHAO(int y, int x, int m_idx)
372423 {
373424 bool learnable = spell_learnable(m_idx);
@@ -386,7 +437,7 @@ int spell_RF4_BA_CHAO(int y, int x, int m_idx)
386437
387438 dam = ((r_ptr->flags2 & RF2_POWERFUL) ? (rlev * 3) : (rlev * 2)) + damroll(10, 10);
388439
389- breath(y, x, m_idx, GF_CHAOS, dam, 4, FALSE, MS_BALL_CHAOS, SPELL_MON_TO_PLAYER);
440+ breath(y, x, m_idx, GF_CHAOS, dam, 4, FALSE, MS_BALL_CHAOS, MONSTER_TO_PLAYER);
390441 update_smart_learn(m_idx, DRS_CHAOS);
391442 return dam;
392443 }
@@ -408,7 +459,7 @@ int spell_RF4_BA_NUKE(int y, int x, int m_idx)
408459
409460 dam = (rlev + damroll(10, 6)) * ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 1);
410461
411- breath(y, x, m_idx, GF_NUKE, dam, 2, FALSE, MS_BALL_NUKE, SPELL_MON_TO_PLAYER);
462+ breath(y, x, m_idx, GF_NUKE, dam, 2, FALSE, MS_BALL_NUKE, MONSTER_TO_PLAYER);
412463 update_smart_learn(m_idx, DRS_POIS);
413464 return dam;
414465 }
@@ -438,7 +489,7 @@ int spell_RF5_BA_ACID(int y, int x, int m_idx)
438489 rad = 2;
439490 dam = (randint1(rlev * 3) + 15);
440491 }
441- breath(y, x, m_idx, GF_ACID, dam, rad, FALSE, MS_BALL_ACID, SPELL_MON_TO_PLAYER);
492+ breath(y, x, m_idx, GF_ACID, dam, rad, FALSE, MS_BALL_ACID, MONSTER_TO_PLAYER);
442493 update_smart_learn(m_idx, DRS_ACID);
443494 return dam;
444495 }
@@ -468,7 +519,7 @@ int spell_RF5_BA_ELEC(int y, int x, int m_idx)
468519 rad = 2;
469520 dam = (randint1(rlev * 3 / 2) + 8);
470521 }
471- breath(y, x, m_idx, GF_ELEC, dam, rad, FALSE, MS_BALL_ELEC, SPELL_MON_TO_PLAYER);
522+ breath(y, x, m_idx, GF_ELEC, dam, rad, FALSE, MS_BALL_ELEC, MONSTER_TO_PLAYER);
472523 update_smart_learn(m_idx, DRS_ELEC);
473524 return dam;
474525 }
@@ -508,7 +559,7 @@ int spell_RF5_BA_FIRE(int y, int x, int m_idx)
508559 rad = 2;
509560 dam = (randint1(rlev * 7 / 2) + 10);
510561 }
511- breath(y, x, m_idx, GF_FIRE, dam, rad, FALSE, MS_BALL_FIRE, SPELL_MON_TO_PLAYER);
562+ breath(y, x, m_idx, GF_FIRE, dam, rad, FALSE, MS_BALL_FIRE, MONSTER_TO_PLAYER);
512563 update_smart_learn(m_idx, DRS_FIRE);
513564 return dam;
514565 }
@@ -538,7 +589,7 @@ int spell_RF5_BA_COLD(int y, int x, int m_idx)
538589 rad = 2;
539590 dam = (randint1(rlev * 3 / 2) + 10);
540591 }
541- breath(y, x, m_idx, GF_COLD, dam, rad, FALSE, MS_BALL_COLD, SPELL_MON_TO_PLAYER);
592+ breath(y, x, m_idx, GF_COLD, dam, rad, FALSE, MS_BALL_COLD, MONSTER_TO_PLAYER);
542593 update_smart_learn(m_idx, DRS_COLD);
543594 return dam;
544595 }
@@ -559,7 +610,7 @@ int spell_RF5_BA_POIS(int y, int x, int m_idx)
559610 msg_format(_("%^sが悪臭雲の呪文を唱えた。", "%^s casts a stinking cloud."), m_name);
560611
561612 dam = damroll(12, 2) * ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 1);
562- breath(y, x, m_idx, GF_POIS, dam, 2, FALSE, MS_BALL_POIS, SPELL_MON_TO_PLAYER);
613+ breath(y, x, m_idx, GF_POIS, dam, 2, FALSE, MS_BALL_POIS, MONSTER_TO_PLAYER);
563614 update_smart_learn(m_idx, DRS_POIS);
564615 return dam;
565616 }
@@ -579,7 +630,7 @@ int spell_RF5_BA_NETH(int y, int x, int m_idx)
579630 msg_format(_("%^sが地獄球の呪文を唱えた。", "%^s casts a nether ball."), m_name);
580631
581632 dam = 50 + damroll(10, 10) + (rlev * ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 1));
582- breath(y, x, m_idx, GF_NETHER, dam, 2, FALSE, MS_BALL_NETHER, SPELL_MON_TO_PLAYER);
633+ breath(y, x, m_idx, GF_NETHER, dam, 2, FALSE, MS_BALL_NETHER, MONSTER_TO_PLAYER);
583634 update_smart_learn(m_idx, DRS_NETH);
584635 return dam;
585636 }
@@ -602,7 +653,7 @@ int spell_RF5_BA_WATE(int y, int x, int m_idx)
602653 msg_print(_("あなたは渦巻きに飲み込まれた。", "You are engulfed in a whirlpool."));
603654
604655 dam = ((r_ptr->flags2 & RF2_POWERFUL) ? randint1(rlev * 3) : randint1(rlev * 2)) + 50;
605- breath(y, x, m_idx, GF_WATER, dam, 4, FALSE, MS_BALL_WATER, SPELL_MON_TO_PLAYER);
656+ breath(y, x, m_idx, GF_WATER, dam, 4, FALSE, MS_BALL_WATER, MONSTER_TO_PLAYER);
606657 return dam;
607658 }
608659
@@ -620,7 +671,7 @@ int spell_RF5_BA_MANA(int y, int x, int m_idx)
620671 msg_format(_("%^sが魔力の嵐の呪文を念じた。", "%^s invokes a mana storm."), m_name);
621672
622673 dam = (rlev * 4) + 50 + damroll(10, 10);
623- breath(y, x, m_idx, GF_MANA, dam, 4, FALSE, MS_BALL_MANA, SPELL_MON_TO_PLAYER);
674+ breath(y, x, m_idx, GF_MANA, dam, 4, FALSE, MS_BALL_MANA, MONSTER_TO_PLAYER);
624675 return dam;
625676 }
626677
@@ -639,7 +690,7 @@ int spell_RF5_BA_DARK(int y, int x, int m_idx)
639690 msg_format(_("%^sが暗黒の嵐の呪文を念じた。", "%^s invokes a darkness storm."), m_name);
640691
641692 dam = (rlev * 4) + 50 + damroll(10, 10);
642- breath(y, x, m_idx, GF_DARK, dam, 4, FALSE, MS_BALL_DARK, SPELL_MON_TO_PLAYER);
693+ breath(y, x, m_idx, GF_DARK, dam, 4, FALSE, MS_BALL_DARK, MONSTER_TO_PLAYER);
643694 update_smart_learn(m_idx, DRS_DARK);
644695 return dam;
645696 }
@@ -652,7 +703,7 @@ int spell_RF5_DRAIN_MANA(int y, int x, int m_idx)
652703 disturb(1, 1);
653704
654705 dam = (randint1(rlev) / 2) + 1;
655- breath(y, x, m_idx, GF_DRAIN_MANA, dam, 0, FALSE, MS_DRAIN_MANA, SPELL_MON_TO_PLAYER);
706+ breath(y, x, m_idx, GF_DRAIN_MANA, dam, 0, FALSE, MS_DRAIN_MANA, MONSTER_TO_PLAYER);
656707 update_smart_learn(m_idx, DRS_MANA);
657708 return dam;
658709 }
@@ -671,7 +722,7 @@ int spell_RF5_MIND_BLAST(int y, int x, int m_idx)
671722 msg_format(_("%^sがあなたの瞳をじっとにらんでいる。", "%^s gazes deep into your eyes."), m_name);
672723
673724 dam = damroll(7, 7);
674- breath(y, x, m_idx, GF_MIND_BLAST, dam, 0, FALSE, MS_MIND_BLAST, SPELL_MON_TO_PLAYER);
725+ breath(y, x, m_idx, GF_MIND_BLAST, dam, 0, FALSE, MS_MIND_BLAST, MONSTER_TO_PLAYER);
675726 return dam;
676727 }
677728
@@ -689,7 +740,7 @@ int spell_RF5_BRAIN_SMASH(int y, int x, int m_idx)
689740 msg_format(_("%^sがあなたの瞳をじっと見ている。", "%^s looks deep into your eyes."), m_name);
690741
691742 dam = damroll(12, 12);
692- breath(y, x, m_idx, GF_BRAIN_SMASH, dam, 0, FALSE, MS_BRAIN_SMASH, SPELL_MON_TO_PLAYER);
743+ breath(y, x, m_idx, GF_BRAIN_SMASH, dam, 0, FALSE, MS_BRAIN_SMASH, MONSTER_TO_PLAYER);
693744 return dam;
694745 }
695746
@@ -706,7 +757,7 @@ int spell_RF5_CAUSE_1(int y, int x, int m_idx)
706757 msg_format(_("%^sがあなたを指さして呪った。", "%^s points at you and curses."), m_name);
707758
708759 dam = damroll(3, 8);
709- breath(y, x, m_idx, GF_CAUSE_1, dam, 0, FALSE, MS_CAUSE_1, SPELL_MON_TO_PLAYER);
760+ breath(y, x, m_idx, GF_CAUSE_1, dam, 0, FALSE, MS_CAUSE_1, MONSTER_TO_PLAYER);
710761 return dam;
711762 }
712763
@@ -723,7 +774,7 @@ int spell_RF5_CAUSE_2(int y, int x, int m_idx)
723774 msg_format(_("%^sがあなたを指さして恐ろしげに呪った。", "%^s points at you and curses horribly."), m_name);
724775
725776 dam = damroll(8, 8);
726- breath(y, x, m_idx, GF_CAUSE_2, dam, 0, FALSE, MS_CAUSE_2, SPELL_MON_TO_PLAYER);
777+ breath(y, x, m_idx, GF_CAUSE_2, dam, 0, FALSE, MS_CAUSE_2, MONSTER_TO_PLAYER);
727778 return dam;
728779 }
729780
@@ -740,7 +791,7 @@ int spell_RF5_CAUSE_3(int y, int x, int m_idx)
740791 msg_format(_("%^sがあなたを指さして恐ろしげに呪文を唱えた!", "%^s points at you, incanting terribly!"), m_name);
741792
742793 dam = damroll(10, 15);
743- breath(y, x, m_idx, GF_CAUSE_3, dam, 0, FALSE, MS_CAUSE_3, SPELL_MON_TO_PLAYER);
794+ breath(y, x, m_idx, GF_CAUSE_3, dam, 0, FALSE, MS_CAUSE_3, MONSTER_TO_PLAYER);
744795 return dam;
745796 }
746797
@@ -758,7 +809,7 @@ int spell_RF5_CAUSE_4(int y, int x, int m_idx)
758809 "%^s points at you, screaming the word DIE!"), m_name);
759810
760811 dam = damroll(15, 15);
761- breath(y, x, m_idx, GF_CAUSE_4, dam, 0, FALSE, MS_CAUSE_4, SPELL_MON_TO_PLAYER);
812+ breath(y, x, m_idx, GF_CAUSE_4, dam, 0, FALSE, MS_CAUSE_4, MONSTER_TO_PLAYER);
762813 return dam;
763814 }
764815
@@ -778,7 +829,7 @@ int spell_RF5_BO_ACID(int y, int x, int m_idx)
778829 msg_format(_("%^sがアシッド・ボルトの呪文を唱えた。", "%^s casts a acid bolt."), m_name);
779830
780831 dam = (damroll(7, 8) + (rlev / 3)) * ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 1);
781- bolt(m_idx, y, x, GF_ACID, dam, MS_BOLT_ACID, SPELL_MON_TO_PLAYER);
832+ bolt(m_idx, y, x, GF_ACID, dam, MS_BOLT_ACID, MONSTER_TO_PLAYER);
782833 update_smart_learn(m_idx, DRS_ACID);
783834 update_smart_learn(m_idx, DRS_REFLECT);
784835 return dam;
@@ -800,7 +851,7 @@ int spell_RF5_BO_ELEC(int y, int x, int m_idx)
800851 msg_format(_("%^sがサンダー・ボルトの呪文を唱えた。", "%^s casts a lightning bolt."), m_name);
801852
802853 dam = (damroll(4, 8) + (rlev / 3)) * ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 1);
803- bolt(m_idx, y, x, GF_ELEC, dam, MS_BOLT_ELEC, SPELL_MON_TO_PLAYER);
854+ bolt(m_idx, y, x, GF_ELEC, dam, MS_BOLT_ELEC, MONSTER_TO_PLAYER);
804855 update_smart_learn(m_idx, DRS_ELEC);
805856 update_smart_learn(m_idx, DRS_REFLECT);
806857 return dam;
@@ -822,7 +873,7 @@ int spell_RF5_BO_FIRE(int y, int x, int m_idx)
822873 msg_format(_("%^sがファイア・ボルトの呪文を唱えた。", "%^s casts a fire bolt."), m_name);
823874
824875 dam = (damroll(9, 8) + (rlev / 3)) * ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 1);
825- bolt(m_idx, y, x, GF_FIRE, dam, MS_BOLT_FIRE, SPELL_MON_TO_PLAYER);
876+ bolt(m_idx, y, x, GF_FIRE, dam, MS_BOLT_FIRE, MONSTER_TO_PLAYER);
826877 update_smart_learn(m_idx, DRS_FIRE);
827878 update_smart_learn(m_idx, DRS_REFLECT);
828879 return dam;
@@ -844,7 +895,7 @@ int spell_RF5_BO_COLD(int y, int x, int m_idx)
844895 msg_format(_("%^sがアイス・ボルトの呪文を唱えた。", "%^s casts a frost bolt."), m_name);
845896
846897 dam = (damroll(6, 8) + (rlev / 3)) * ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 1);
847- bolt(m_idx, y, x, GF_COLD, dam, MS_BOLT_COLD, SPELL_MON_TO_PLAYER);
898+ bolt(m_idx, y, x, GF_COLD, dam, MS_BOLT_COLD, MONSTER_TO_PLAYER);
848899 update_smart_learn(m_idx, DRS_COLD);
849900 update_smart_learn(m_idx, DRS_REFLECT);
850901 return dam;
@@ -864,7 +915,7 @@ int spell_RF5_BA_LITE(int y, int x, int m_idx)
864915 msg_format(_("%^sがスターバーストの呪文を念じた。", "%^s invokes a starburst."), m_name);
865916
866917 dam = (rlev * 4) + 50 + damroll(10, 10);
867- breath(y, x, m_idx, GF_LITE, dam, 4, FALSE, MS_STARBURST, SPELL_MON_TO_PLAYER);
918+ breath(y, x, m_idx, GF_LITE, dam, 4, FALSE, MS_STARBURST, MONSTER_TO_PLAYER);
868919 update_smart_learn(m_idx, DRS_LITE);
869920 return dam;
870921 }
@@ -886,7 +937,7 @@ int spell_RF5_BO_NETH(int y, int x, int m_idx)
886937 msg_format(_("%^sが地獄の矢の呪文を唱えた。", "%^s casts a nether bolt."), m_name);
887938
888939 dam = 30 + damroll(5, 5) + (rlev * 4) / ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 3);
889- bolt(m_idx, y, x, GF_NETHER, dam, MS_BOLT_NETHER, SPELL_MON_TO_PLAYER);
940+ bolt(m_idx, y, x, GF_NETHER, dam, MS_BOLT_NETHER, MONSTER_TO_PLAYER);
890941 update_smart_learn(m_idx, DRS_NETH);
891942 update_smart_learn(m_idx, DRS_REFLECT);
892943 return dam;
@@ -908,7 +959,7 @@ int spell_RF5_BO_WATE(int y, int x, int m_idx)
908959 msg_format(_("%^sがウォーター・ボルトの呪文を唱えた。", "%^s casts a water bolt."), m_name);
909960
910961 dam = damroll(10, 10) + (rlev * 3 / ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 3));
911- bolt(m_idx, y, x, GF_WATER, dam, MS_BOLT_WATER, SPELL_MON_TO_PLAYER);
962+ bolt(m_idx, y, x, GF_WATER, dam, MS_BOLT_WATER, MONSTER_TO_PLAYER);
912963 update_smart_learn(m_idx, DRS_REFLECT);
913964 return dam;
914965 }
@@ -928,7 +979,7 @@ int spell_RF5_BO_MANA(int y, int x, int m_idx)
928979 msg_format(_("%^sが魔力の矢の呪文を唱えた。", "%^s casts a mana bolt."), m_name);
929980
930981 dam = randint1(rlev * 7 / 2) + 50;
931- bolt(m_idx, y, x, GF_MANA, dam, MS_BOLT_MANA, SPELL_MON_TO_PLAYER);
982+ bolt(m_idx, y, x, GF_MANA, dam, MS_BOLT_MANA, MONSTER_TO_PLAYER);
932983 update_smart_learn(m_idx, DRS_REFLECT);
933984 return dam;
934985 }
@@ -949,7 +1000,7 @@ int spell_RF5_BO_PLAS(int y, int x, int m_idx)
9491000 msg_format(_("%^sがプラズマ・ボルトの呪文を唱えた。", "%^s casts a plasma bolt."), m_name);
9501001
9511002 dam = 10 + damroll(8, 7) + (rlev * 3 / ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 3));
952- bolt(m_idx, y, x, GF_PLASMA, dam, MS_BOLT_PLASMA, SPELL_MON_TO_PLAYER);
1003+ bolt(m_idx, y, x, GF_PLASMA, dam, MS_BOLT_PLASMA, MONSTER_TO_PLAYER);
9531004 update_smart_learn(m_idx, DRS_REFLECT);
9541005 return dam;
9551006 }
@@ -969,7 +1020,7 @@ int spell_RF5_BO_ICEE(int y, int x, int m_idx)
9691020 msg_format(_("%^sが極寒の矢の呪文を唱えた。", "%^s casts an ice bolt."), m_name);
9701021
9711022 dam = damroll(6, 6) + (rlev * 3 / ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 3));
972- bolt(m_idx, y, x, GF_ICE, dam, MS_BOLT_ICE, SPELL_MON_TO_PLAYER);
1023+ bolt(m_idx, y, x, GF_ICE, dam, MS_BOLT_ICE, MONSTER_TO_PLAYER);
9731024 update_smart_learn(m_idx, DRS_COLD);
9741025 update_smart_learn(m_idx, DRS_REFLECT);
9751026 return dam;
@@ -989,7 +1040,7 @@ int spell_RF5_MISSILE(int y, int x, int m_idx)
9891040 msg_format(_("%^sがマジック・ミサイルの呪文を唱えた。", "%^s casts a magic missile."), m_name);
9901041
9911042 dam = damroll(2, 6) + (rlev / 3);
992- bolt(m_idx, y, x, GF_MISSILE, dam, MS_MAGIC_MISSILE, SPELL_MON_TO_PLAYER);
1043+ bolt(m_idx, y, x, GF_MISSILE, dam, MS_MAGIC_MISSILE, MONSTER_TO_PLAYER);
9931044 update_smart_learn(m_idx, DRS_REFLECT);
9941045 return dam;
9951046 }
@@ -1159,7 +1210,7 @@ int spell_RF6_HAND_DOOM(int y, int x, int m_idx)
11591210 disturb(1, 1);
11601211 msg_format(_("%^sが<破滅の手>を放った!", "%^s invokes the Hand of Doom!"), m_name);
11611212 dam = (((s32b)((40 + randint1(20)) * (p_ptr->chp))) / 100);
1162- breath(y, x, m_idx, GF_HAND_DOOM, dam, 0, FALSE, MS_HAND_DOOM, SPELL_MON_TO_PLAYER);
1213+ breath(y, x, m_idx, GF_HAND_DOOM, dam, 0, FALSE, MS_HAND_DOOM, MONSTER_TO_PLAYER);
11631214 return dam;
11641215 }
11651216
@@ -1494,7 +1545,7 @@ int spell_RF6_PSY_SPEAR(int y, int x, int m_idx)
14941545 msg_format(_("%^sが光の剣を放った。", "%^s throw a Psycho-Spear."), m_name);
14951546
14961547 dam = (r_ptr->flags2 & RF2_POWERFUL) ? (randint1(rlev * 2) + 150) : (randint1(rlev * 3 / 2) + 100);
1497- beam(m_idx, y, x, GF_PSY_SPEAR, dam, MS_PSY_SPEAR, SPELL_MON_TO_PLAYER);
1548+ beam(m_idx, y, x, GF_PSY_SPEAR, dam, MS_PSY_SPEAR, MONSTER_TO_PLAYER);
14981549 return dam;
14991550 }
15001551
旧リポジトリブラウザで表示