• R/O
  • HTTP
  • SSH
  • HTTPS

hengband: コミット

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


コミットメタ情報

リビジョン621a5e9f40127e72e5779fe6bfcd0a1afcd63ae7 (tree)
日時2014-02-19 16:53:07
作者dis- <dis.rogue@gmai...>
コミッターdis-

ログメッセージ

refactor: integrate monst_beam_monst, monst_bolt_monst

変更サマリ

差分

--- a/src/externs.h
+++ b/src/externs.h
@@ -1569,8 +1569,8 @@ 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 typ, int dam_hp, int monspell);
1573-extern void bolt(int m_idx, int typ, int dam_hp, int monspell);
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);
15741574 extern void breath(int y, int x, int m_idx, int typ, int dam_hp, int rad, bool breath, int monspell, int spell_type);
15751575
15761576 /* mspells2.c */
@@ -1589,7 +1589,7 @@ 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 m_idx);
1592+extern int spell_RF4_SHOOT(int y, int x, int m_idx);
15931593 extern int 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);
@@ -1636,7 +1636,7 @@ extern int spell_RF6_SPECIAL(int y, int x, int m_idx);
16361636 extern void spell_RF6_TELE_TO(int m_idx);
16371637 extern void spell_RF6_TELE_AWAY(int m_idx);
16381638 extern void spell_RF6_TELE_LEVEL(int m_idx);
1639-extern int spell_RF6_PSY_SPEAR(int m_idx);
1639+extern int spell_RF6_PSY_SPEAR(int y, int x, int m_idx);
16401640 extern void spell_RF6_DARKNESS(int m_idx);
16411641 extern void spell_RF6_TRAPS(int y, int x, int m_idx);
16421642 extern void spell_RF6_FORGET(int m_idx);
--- a/src/mspells1.c
+++ b/src/mspells1.c
@@ -502,37 +502,62 @@ bool clean_shot(int y1, int x1, int y2, int x2, bool is_friend)
502502 * @brief モンスターのボルト型魔法処理 /
503503 * Cast a bolt at the player Stop if we hit a monster Affect monsters and the player
504504 * @param m_idx モンスターのID
505+ * @param y 目標のY座標
506+ * @param x 目標のX座標
505507 * @param typ 効果属性ID
506508 * @param dam_hp 威力
507509 * @param monspell モンスター魔法のID
508- * @param learnable ラーニング可能か否か
510+ * @param spell_type モンスターからモンスターへ撃つならSPELL_MON_TO_MON、モンスターからプレイヤーならSPELL_MON_TO_PLAYER
509511 * @return なし
510512 */
511-void bolt(int m_idx, int typ, int dam_hp, int monspell)
512-{
513- int flg = PROJECT_STOP | PROJECT_KILL | PROJECT_PLAYER;
513+void bolt(int m_idx, int y, int x, int typ, int dam_hp, int monspell, int spell_type)
514+ {
515+ int flg;
514516 bool learnable = spell_learnable(m_idx);
517+
518+ switch (spell_type)
519+ {
520+ case SPELL_MON_TO_MON:
521+ flg = PROJECT_STOP | PROJECT_KILL;
522+ break;
523+ case SPELL_MON_TO_PLAYER:
524+ flg = PROJECT_STOP | PROJECT_KILL | PROJECT_PLAYER;
525+ break;
526+ }
515527 if (typ != GF_ARROW) flg |= PROJECT_REFLECTABLE;
516528
517529 /* Target the player with a bolt attack */
518- (void)project(m_idx, 0, py, px, dam_hp, typ, flg, (learnable ? monspell : -1));
530+ (void)project(m_idx, 0, y, x, dam_hp, typ, flg, (learnable ? monspell : -1));
519531 }
520532
521533 /*!
522534 * @brief モンスターのビーム型魔法処理 /
523535 * @param m_idx モンスターのID
536+ * @param y 目標のY座標
537+ * @param x 目標のX座標
524538 * @param typ 効果属性ID
525539 * @param dam_hp 威力
526540 * @param monspell モンスター魔法のID
541+ * @param spell_type モンスターからモンスターへ撃つならSPELL_MON_TO_MON、モンスターからプレイヤーならSPELL_MON_TO_PLAYER
527542 * @return なし
528543 */
529-void beam(int m_idx, int typ, int dam_hp, int monspell)
544+void beam(int m_idx, int y, int x, int typ, int dam_hp, int monspell, int spell_type)
530545 {
531- int flg = PROJECT_BEAM | PROJECT_KILL | PROJECT_THRU | PROJECT_PLAYER;
546+ int flg;
532547 bool learnable = spell_learnable(m_idx);
533548
549+ switch (spell_type)
550+ {
551+ case SPELL_MON_TO_MON:
552+ flg = PROJECT_BEAM | PROJECT_KILL | PROJECT_THRU;
553+ break;
554+ case SPELL_MON_TO_PLAYER:
555+ flg = PROJECT_BEAM | PROJECT_KILL | PROJECT_THRU | PROJECT_PLAYER;
556+ break;
557+ }
558+
534559 /* Target the player with a bolt attack */
535- (void)project(m_idx, 0, py, px, dam_hp, typ, flg, (learnable ? monspell : -1));
560+ (void)project(m_idx, 0, y, x, dam_hp, typ, flg, (learnable ? monspell : -1));
536561 }
537562
538563
@@ -1853,7 +1878,7 @@ bool make_attack_spell(int m_idx)
18531878 case 96 + 1: break; /* RF4_XXX1 */
18541879 case 96 + 2: MP_spell_RF4_DISPEL(m_idx); break; /* RF4_DISPEL */
18551880 case 96 + 3: dam = MP_spell_RF4_ROCKET(y, x, m_idx); break; /* RF4_ROCKET */
1856- case 96 + 4: dam = spell_RF4_SHOOT(m_idx); break; /* RF4_SHOOT */
1881+ case 96 + 4: dam = spell_RF4_SHOOT(y, x, m_idx); break; /* RF4_SHOOT */
18571882 case 96 + 5: break; /* RF4_XXX2 */
18581883 case 96 + 6: break; /* RF4_XXX3 */
18591884 case 96 + 7: break; /* RF4_XXX4 */
@@ -1930,7 +1955,7 @@ bool make_attack_spell(int m_idx)
19301955 case 160 + 8: spell_RF6_TELE_TO(m_idx); break; /* RF6_TELE_TO */
19311956 case 160 + 9: spell_RF6_TELE_AWAY(m_idx); break; /* RF6_TELE_AWAY */
19321957 case 160 + 10: spell_RF6_TELE_LEVEL(m_idx); break; /* RF6_TELE_LEVEL */
1933- case 160 + 11: spell_RF6_PSY_SPEAR(m_idx); break; /* RF6_PSY_SPEAR */
1958+ case 160 + 11: spell_RF6_PSY_SPEAR(y, x, m_idx); break; /* RF6_PSY_SPEAR */
19341959 case 160 + 12: spell_RF6_DARKNESS(m_idx); break; /* RF6_DARKNESS */
19351960 case 160 + 13: spell_RF6_TRAPS(y, x, m_idx); break; /* RF6_TRAPS */
19361961 case 160 + 14: spell_RF6_FORGET(m_idx); break; /* RF6_FORGET */
--- a/src/mspells2.c
+++ b/src/mspells2.c
@@ -14,51 +14,6 @@
1414 #include "angband.h"
1515
1616 /*!
17- * @brief モンスターが敵対モンスターにボルト型特殊技能を放つ処理 /
18- * Monster casts a bolt at another monster
19- * @param m_idx 特殊技能を使うモンスターの参照ID
20- * @param y 目標のY座標
21- * @param x 目標のX座標
22- * @param typ 効果属性のID
23- * @param dam_hp 威力
24- * @param monspell 特殊攻撃のID
25- * @param learnable ラーニング可能な前提が揃っているならばTRUE
26- * @return なし
27- * @details
28- * Stop if we hit a monster
29- * Affect monsters and the player
30- */
31-static void monst_bolt_monst(int m_idx, int y, int x, int typ, int dam_hp, int monspell)
32-{
33- int flg = PROJECT_STOP | PROJECT_KILL;
34- bool learnable = spell_learnable(m_idx);
35-
36- if (typ != GF_ARROW) flg |= PROJECT_REFLECTABLE;
37- (void)project(m_idx, 0, y, x, dam_hp, typ, flg, (learnable ? monspell : -1));
38-}
39-
40-
41-/*!
42- * @brief モンスターが敵対モンスターにビーム型特殊技能を放つ処理 /
43- * Monster casts a bolt at another monster
44- * @param m_idx 特殊技能を使うモンスターの参照ID
45- * @param y 目標のY座標
46- * @param x 目標のX座標
47- * @param typ 効果属性のID
48- * @param dam_hp 威力
49- * @param monspell 特殊攻撃のID
50- * @param learnable ラーニング可能な前提が揃っているならばTRUE
51- * @return なし
52- */
53-static void monst_beam_monst(int m_idx, int y, int x, int typ, int dam_hp, int monspell)
54-{
55- int flg = PROJECT_BEAM | PROJECT_KILL | PROJECT_THRU;
56- bool learnable = spell_learnable(m_idx);
57-
58- (void)project(m_idx, 0, y, x, dam_hp, typ, flg, (learnable ? monspell : -1));
59-}
60-
61-/*!
6217 * @brief モンスターが敵対モンスターにビームを当てること可能かを判定する /
6318 * Determine if a beam spell will hit the target.
6419 * @param y1 始点のY座標
@@ -809,7 +764,7 @@ bool monst_spell_monst(int m_idx)
809764 }
810765
811766 dam = damroll(r_ptr->blow[0].d_dice, r_ptr->blow[0].d_side);
812- monst_bolt_monst(m_idx, y, x, GF_ARROW, dam, MS_SHOOT);
767+ bolt(m_idx, y, x, GF_ARROW, dam, MS_SHOOT, SPELL_MON_TO_MON);
813768
814769 break;
815770
@@ -1979,7 +1934,7 @@ bool monst_spell_monst(int m_idx)
19791934 }
19801935
19811936 dam = (damroll(7, 8) + (rlev / 3)) * ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 1);
1982- monst_bolt_monst(m_idx, y, x, GF_ACID, dam, MS_BOLT_ACID);
1937+ bolt(m_idx, y, x, GF_ACID, dam, MS_BOLT_ACID, SPELL_MON_TO_MON);
19831938
19841939 break;
19851940
@@ -1998,7 +1953,7 @@ bool monst_spell_monst(int m_idx)
19981953 }
19991954
20001955 dam = (damroll(4, 8) + (rlev / 3)) * ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 1);
2001- monst_bolt_monst(m_idx, y, x, GF_ELEC, dam, MS_BOLT_ELEC);
1956+ bolt(m_idx, y, x, GF_ELEC, dam, MS_BOLT_ELEC, SPELL_MON_TO_MON);
20021957
20031958 break;
20041959
@@ -2017,7 +1972,7 @@ bool monst_spell_monst(int m_idx)
20171972 }
20181973
20191974 dam = (damroll(9, 8) + (rlev / 3)) * ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 1);
2020- monst_bolt_monst(m_idx, y, x, GF_FIRE, dam, MS_BOLT_FIRE);
1975+ bolt(m_idx, y, x, GF_FIRE, dam, MS_BOLT_FIRE, SPELL_MON_TO_MON);
20211976
20221977 break;
20231978
@@ -2036,7 +1991,7 @@ bool monst_spell_monst(int m_idx)
20361991 }
20371992
20381993 dam = (damroll(6, 8) + (rlev / 3)) * ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 1);
2039- monst_bolt_monst(m_idx, y, x, GF_COLD, dam, MS_BOLT_COLD);
1994+ bolt(m_idx, y, x, GF_COLD, dam, MS_BOLT_COLD, SPELL_MON_TO_MON);
20401995
20411996 break;
20421997
@@ -2085,7 +2040,7 @@ bool monst_spell_monst(int m_idx)
20852040 }
20862041
20872042 dam = 30 + damroll(5, 5) + (rlev * 4) / ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 3);
2088- monst_bolt_monst(m_idx, y, x, GF_NETHER, dam, MS_BOLT_NETHER);
2043+ bolt(m_idx, y, x, GF_NETHER, dam, MS_BOLT_NETHER, SPELL_MON_TO_MON);
20892044
20902045 break;
20912046
@@ -2105,7 +2060,7 @@ bool monst_spell_monst(int m_idx)
21052060 }
21062061
21072062 dam = damroll(10, 10) + (rlev * 3 / ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 3));
2108- monst_bolt_monst(m_idx, y, x, GF_WATER, dam, MS_BOLT_WATER);
2063+ bolt(m_idx, y, x, GF_WATER, dam, MS_BOLT_WATER, SPELL_MON_TO_MON);
21092064
21102065 break;
21112066
@@ -2125,7 +2080,7 @@ bool monst_spell_monst(int m_idx)
21252080 }
21262081
21272082 dam = randint1(rlev * 7 / 2) + 50;
2128- monst_bolt_monst(m_idx, y, x, GF_MANA, dam, MS_BOLT_MANA);
2083+ bolt(m_idx, y, x, GF_MANA, dam, MS_BOLT_MANA, SPELL_MON_TO_MON);
21292084
21302085 break;
21312086
@@ -2145,7 +2100,7 @@ bool monst_spell_monst(int m_idx)
21452100 }
21462101
21472102 dam = 10 + damroll(8, 7) + (rlev * 3 / ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 3));
2148- monst_bolt_monst(m_idx, y, x, GF_PLASMA, dam, MS_BOLT_PLASMA);
2103+ bolt(m_idx, y, x, GF_PLASMA, dam, MS_BOLT_PLASMA, SPELL_MON_TO_MON);
21492104
21502105 break;
21512106
@@ -2165,7 +2120,7 @@ bool monst_spell_monst(int m_idx)
21652120 }
21662121
21672122 dam = damroll(6, 6) + (rlev * 3 / ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 3));
2168- monst_bolt_monst(m_idx, y, x, GF_ICE, dam, MS_BOLT_ICE);
2123+ bolt(m_idx, y, x, GF_ICE, dam, MS_BOLT_ICE, SPELL_MON_TO_MON);
21692124
21702125 break;
21712126
@@ -2185,7 +2140,7 @@ bool monst_spell_monst(int m_idx)
21852140 }
21862141
21872142 dam = damroll(2, 6) + (rlev / 3);
2188- monst_bolt_monst(m_idx, y, x, GF_MISSILE, dam, MS_MAGIC_MISSILE);
2143+ bolt(m_idx, y, x, GF_MISSILE, dam, MS_MAGIC_MISSILE, SPELL_MON_TO_MON);
21892144
21902145 break;
21912146
@@ -2797,7 +2752,7 @@ bool monst_spell_monst(int m_idx)
27972752 }
27982753
27992754 dam = (r_ptr->flags2 & RF2_POWERFUL) ? (randint1(rlev * 2) + 180) : (randint1(rlev * 3 / 2) + 120);
2800- monst_beam_monst(m_idx, y, x, GF_PSY_SPEAR, dam, MS_PSY_SPEAR);
2755+ beam(m_idx, y, x, GF_PSY_SPEAR, dam, MS_PSY_SPEAR, SPELL_MON_TO_MON);
28012756 break;
28022757
28032758 /* RF6_DARKNESS */
--- a/src/mspells4.c
+++ b/src/mspells4.c
@@ -178,7 +178,7 @@ int MM_spell_RF4_ROCKET(int y, int x, int m_idx, int t_idx)
178178 return spell_core(RF4_ROCKET, m_ptr->hp, y, x, m_idx, SPELL_MON_TO_MON);
179179 }
180180
181-int spell_RF4_SHOOT(int m_idx)
181+int spell_RF4_SHOOT(int y, int x, int m_idx)
182182 {
183183 bool learnable = spell_learnable(m_idx);
184184 cptr m_name = monster_name(m_idx);
@@ -193,7 +193,7 @@ int spell_RF4_SHOOT(int m_idx)
193193 msg_format(_("%^sが矢を放った。", "%^s fires an arrow."), m_name);
194194
195195 dam = damroll(r_ptr->blow[0].d_dice, r_ptr->blow[0].d_side);
196- bolt(m_idx, GF_ARROW, dam, MS_SHOOT);
196+ bolt(m_idx, y, x, GF_ARROW, dam, MS_SHOOT, SPELL_MON_TO_PLAYER);
197197 update_smart_learn(m_idx, DRS_REFLECT);
198198 return dam;
199199 }
@@ -778,7 +778,7 @@ int spell_RF5_BO_ACID(int y, int x, int m_idx)
778778 msg_format(_("%^sがアシッド・ボルトの呪文を唱えた。", "%^s casts a acid bolt."), m_name);
779779
780780 dam = (damroll(7, 8) + (rlev / 3)) * ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 1);
781- bolt(m_idx, GF_ACID, dam, MS_BOLT_ACID);
781+ bolt(m_idx, y, x, GF_ACID, dam, MS_BOLT_ACID, SPELL_MON_TO_PLAYER);
782782 update_smart_learn(m_idx, DRS_ACID);
783783 update_smart_learn(m_idx, DRS_REFLECT);
784784 return dam;
@@ -800,7 +800,7 @@ int spell_RF5_BO_ELEC(int y, int x, int m_idx)
800800 msg_format(_("%^sがサンダー・ボルトの呪文を唱えた。", "%^s casts a lightning bolt."), m_name);
801801
802802 dam = (damroll(4, 8) + (rlev / 3)) * ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 1);
803- bolt(m_idx, GF_ELEC, dam, MS_BOLT_ELEC);
803+ bolt(m_idx, y, x, GF_ELEC, dam, MS_BOLT_ELEC, SPELL_MON_TO_PLAYER);
804804 update_smart_learn(m_idx, DRS_ELEC);
805805 update_smart_learn(m_idx, DRS_REFLECT);
806806 return dam;
@@ -822,7 +822,7 @@ int spell_RF5_BO_FIRE(int y, int x, int m_idx)
822822 msg_format(_("%^sがファイア・ボルトの呪文を唱えた。", "%^s casts a fire bolt."), m_name);
823823
824824 dam = (damroll(9, 8) + (rlev / 3)) * ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 1);
825- bolt(m_idx, GF_FIRE, dam, MS_BOLT_FIRE);
825+ bolt(m_idx, y, x, GF_FIRE, dam, MS_BOLT_FIRE, SPELL_MON_TO_PLAYER);
826826 update_smart_learn(m_idx, DRS_FIRE);
827827 update_smart_learn(m_idx, DRS_REFLECT);
828828 return dam;
@@ -844,7 +844,7 @@ int spell_RF5_BO_COLD(int y, int x, int m_idx)
844844 msg_format(_("%^sがアイス・ボルトの呪文を唱えた。", "%^s casts a frost bolt."), m_name);
845845
846846 dam = (damroll(6, 8) + (rlev / 3)) * ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 1);
847- bolt(m_idx, GF_COLD, dam, MS_BOLT_COLD);
847+ bolt(m_idx, y, x, GF_COLD, dam, MS_BOLT_COLD, SPELL_MON_TO_PLAYER);
848848 update_smart_learn(m_idx, DRS_COLD);
849849 update_smart_learn(m_idx, DRS_REFLECT);
850850 return dam;
@@ -886,7 +886,7 @@ int spell_RF5_BO_NETH(int y, int x, int m_idx)
886886 msg_format(_("%^sが地獄の矢の呪文を唱えた。", "%^s casts a nether bolt."), m_name);
887887
888888 dam = 30 + damroll(5, 5) + (rlev * 4) / ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 3);
889- bolt(m_idx, GF_NETHER, dam, MS_BOLT_NETHER);
889+ bolt(m_idx, y, x, GF_NETHER, dam, MS_BOLT_NETHER, SPELL_MON_TO_PLAYER);
890890 update_smart_learn(m_idx, DRS_NETH);
891891 update_smart_learn(m_idx, DRS_REFLECT);
892892 return dam;
@@ -908,7 +908,7 @@ int spell_RF5_BO_WATE(int y, int x, int m_idx)
908908 msg_format(_("%^sがウォーター・ボルトの呪文を唱えた。", "%^s casts a water bolt."), m_name);
909909
910910 dam = damroll(10, 10) + (rlev * 3 / ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 3));
911- bolt(m_idx, GF_WATER, dam, MS_BOLT_WATER);
911+ bolt(m_idx, y, x, GF_WATER, dam, MS_BOLT_WATER, SPELL_MON_TO_PLAYER);
912912 update_smart_learn(m_idx, DRS_REFLECT);
913913 return dam;
914914 }
@@ -928,7 +928,7 @@ int spell_RF5_BO_MANA(int y, int x, int m_idx)
928928 msg_format(_("%^sが魔力の矢の呪文を唱えた。", "%^s casts a mana bolt."), m_name);
929929
930930 dam = randint1(rlev * 7 / 2) + 50;
931- bolt(m_idx, GF_MANA, dam, MS_BOLT_MANA);
931+ bolt(m_idx, y, x, GF_MANA, dam, MS_BOLT_MANA, SPELL_MON_TO_PLAYER);
932932 update_smart_learn(m_idx, DRS_REFLECT);
933933 return dam;
934934 }
@@ -949,7 +949,7 @@ int spell_RF5_BO_PLAS(int y, int x, int m_idx)
949949 msg_format(_("%^sがプラズマ・ボルトの呪文を唱えた。", "%^s casts a plasma bolt."), m_name);
950950
951951 dam = 10 + damroll(8, 7) + (rlev * 3 / ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 3));
952- bolt(m_idx, GF_PLASMA, dam, MS_BOLT_PLASMA);
952+ bolt(m_idx, y, x, GF_PLASMA, dam, MS_BOLT_PLASMA, SPELL_MON_TO_PLAYER);
953953 update_smart_learn(m_idx, DRS_REFLECT);
954954 return dam;
955955 }
@@ -969,7 +969,7 @@ int spell_RF5_BO_ICEE(int y, int x, int m_idx)
969969 msg_format(_("%^sが極寒の矢の呪文を唱えた。", "%^s casts an ice bolt."), m_name);
970970
971971 dam = damroll(6, 6) + (rlev * 3 / ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 3));
972- bolt(m_idx, GF_ICE, dam, MS_BOLT_ICE);
972+ bolt(m_idx, y, x, GF_ICE, dam, MS_BOLT_ICE, SPELL_MON_TO_PLAYER);
973973 update_smart_learn(m_idx, DRS_COLD);
974974 update_smart_learn(m_idx, DRS_REFLECT);
975975 return dam;
@@ -989,7 +989,7 @@ int spell_RF5_MISSILE(int y, int x, int m_idx)
989989 msg_format(_("%^sがマジック・ミサイルの呪文を唱えた。", "%^s casts a magic missile."), m_name);
990990
991991 dam = damroll(2, 6) + (rlev / 3);
992- bolt(m_idx, GF_MISSILE, dam, MS_MAGIC_MISSILE);
992+ bolt(m_idx, y, x, GF_MISSILE, dam, MS_MAGIC_MISSILE, SPELL_MON_TO_PLAYER);
993993 update_smart_learn(m_idx, DRS_REFLECT);
994994 return dam;
995995 }
@@ -1479,7 +1479,7 @@ void spell_RF6_TELE_LEVEL(int m_idx)
14791479 update_smart_learn(m_idx, DRS_NEXUS);
14801480 }
14811481
1482-int spell_RF6_PSY_SPEAR(int m_idx)
1482+int spell_RF6_PSY_SPEAR(int y, int x, int m_idx)
14831483 {
14841484 bool learnable = spell_learnable(m_idx);
14851485 cptr m_name = monster_name(m_idx);
@@ -1494,7 +1494,7 @@ int spell_RF6_PSY_SPEAR(int m_idx)
14941494 msg_format(_("%^sが光の剣を放った。", "%^s throw a Psycho-Spear."), m_name);
14951495
14961496 dam = (r_ptr->flags2 & RF2_POWERFUL) ? (randint1(rlev * 2) + 150) : (randint1(rlev * 3 / 2) + 100);
1497- beam(m_idx, GF_PSY_SPEAR, dam, MS_PSY_SPEAR);
1497+ beam(m_idx, y, x, GF_PSY_SPEAR, dam, MS_PSY_SPEAR, SPELL_MON_TO_PLAYER);
14981498 return dam;
14991499 }
15001500
旧リポジトリブラウザで表示