リビジョン | 621a5e9f40127e72e5779fe6bfcd0a1afcd63ae7 (tree) |
---|---|
日時 | 2014-02-19 16:53:07 |
作者 | dis- <dis.rogue@gmai...> |
コミッター | dis- |
refactor: integrate monst_beam_monst, monst_bolt_monst
@@ -1569,8 +1569,8 @@ extern bool raise_possible(monster_type *m_ptr); | ||
1569 | 1569 | extern bool dispel_check(int m_idx); |
1570 | 1570 | extern bool spell_is_inate(u16b spell); |
1571 | 1571 | 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); | |
1574 | 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); |
1575 | 1575 | |
1576 | 1576 | /* mspells2.c */ |
@@ -1589,7 +1589,7 @@ extern bool spell_learnable(int m_idx); | ||
1589 | 1589 | extern void MP_spell_RF4_SHRIEK(int m_idx); |
1590 | 1590 | extern void MP_spell_RF4_DISPEL(int m_idx); |
1591 | 1591 | 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); | |
1593 | 1593 | extern int spell_RF4_BREATH(int GF_TYPE, int y, int x, int m_idx); |
1594 | 1594 | extern int spell_RF4_BA_CHAO(int y, int x, int m_idx); |
1595 | 1595 | 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); | ||
1636 | 1636 | extern void spell_RF6_TELE_TO(int m_idx); |
1637 | 1637 | extern void spell_RF6_TELE_AWAY(int m_idx); |
1638 | 1638 | 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); | |
1640 | 1640 | extern void spell_RF6_DARKNESS(int m_idx); |
1641 | 1641 | extern void spell_RF6_TRAPS(int y, int x, int m_idx); |
1642 | 1642 | extern void spell_RF6_FORGET(int m_idx); |
@@ -502,37 +502,62 @@ bool clean_shot(int y1, int x1, int y2, int x2, bool is_friend) | ||
502 | 502 | * @brief モンスターのボルト型魔法処理 / |
503 | 503 | * Cast a bolt at the player Stop if we hit a monster Affect monsters and the player |
504 | 504 | * @param m_idx モンスターのID |
505 | + * @param y 目標のY座標 | |
506 | + * @param x 目標のX座標 | |
505 | 507 | * @param typ 効果属性ID |
506 | 508 | * @param dam_hp 威力 |
507 | 509 | * @param monspell モンスター魔法のID |
508 | - * @param learnable ラーニング可能か否か | |
510 | + * @param spell_type モンスターからモンスターへ撃つならSPELL_MON_TO_MON、モンスターからプレイヤーならSPELL_MON_TO_PLAYER | |
509 | 511 | * @return なし |
510 | 512 | */ |
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; | |
514 | 516 | 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 | + } | |
515 | 527 | if (typ != GF_ARROW) flg |= PROJECT_REFLECTABLE; |
516 | 528 | |
517 | 529 | /* 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)); | |
519 | 531 | } |
520 | 532 | |
521 | 533 | /*! |
522 | 534 | * @brief モンスターのビーム型魔法処理 / |
523 | 535 | * @param m_idx モンスターのID |
536 | + * @param y 目標のY座標 | |
537 | + * @param x 目標のX座標 | |
524 | 538 | * @param typ 効果属性ID |
525 | 539 | * @param dam_hp 威力 |
526 | 540 | * @param monspell モンスター魔法のID |
541 | + * @param spell_type モンスターからモンスターへ撃つならSPELL_MON_TO_MON、モンスターからプレイヤーならSPELL_MON_TO_PLAYER | |
527 | 542 | * @return なし |
528 | 543 | */ |
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) | |
530 | 545 | { |
531 | - int flg = PROJECT_BEAM | PROJECT_KILL | PROJECT_THRU | PROJECT_PLAYER; | |
546 | + int flg; | |
532 | 547 | bool learnable = spell_learnable(m_idx); |
533 | 548 | |
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 | + | |
534 | 559 | /* 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)); | |
536 | 561 | } |
537 | 562 | |
538 | 563 |
@@ -1853,7 +1878,7 @@ bool make_attack_spell(int m_idx) | ||
1853 | 1878 | case 96 + 1: break; /* RF4_XXX1 */ |
1854 | 1879 | case 96 + 2: MP_spell_RF4_DISPEL(m_idx); break; /* RF4_DISPEL */ |
1855 | 1880 | 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 */ | |
1857 | 1882 | case 96 + 5: break; /* RF4_XXX2 */ |
1858 | 1883 | case 96 + 6: break; /* RF4_XXX3 */ |
1859 | 1884 | case 96 + 7: break; /* RF4_XXX4 */ |
@@ -1930,7 +1955,7 @@ bool make_attack_spell(int m_idx) | ||
1930 | 1955 | case 160 + 8: spell_RF6_TELE_TO(m_idx); break; /* RF6_TELE_TO */ |
1931 | 1956 | case 160 + 9: spell_RF6_TELE_AWAY(m_idx); break; /* RF6_TELE_AWAY */ |
1932 | 1957 | 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 */ | |
1934 | 1959 | case 160 + 12: spell_RF6_DARKNESS(m_idx); break; /* RF6_DARKNESS */ |
1935 | 1960 | case 160 + 13: spell_RF6_TRAPS(y, x, m_idx); break; /* RF6_TRAPS */ |
1936 | 1961 | case 160 + 14: spell_RF6_FORGET(m_idx); break; /* RF6_FORGET */ |
@@ -14,51 +14,6 @@ | ||
14 | 14 | #include "angband.h" |
15 | 15 | |
16 | 16 | /*! |
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 | -/*! | |
62 | 17 | * @brief モンスターが敵対モンスターにビームを当てること可能かを判定する / |
63 | 18 | * Determine if a beam spell will hit the target. |
64 | 19 | * @param y1 始点のY座標 |
@@ -809,7 +764,7 @@ bool monst_spell_monst(int m_idx) | ||
809 | 764 | } |
810 | 765 | |
811 | 766 | 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); | |
813 | 768 | |
814 | 769 | break; |
815 | 770 |
@@ -1979,7 +1934,7 @@ bool monst_spell_monst(int m_idx) | ||
1979 | 1934 | } |
1980 | 1935 | |
1981 | 1936 | 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); | |
1983 | 1938 | |
1984 | 1939 | break; |
1985 | 1940 |
@@ -1998,7 +1953,7 @@ bool monst_spell_monst(int m_idx) | ||
1998 | 1953 | } |
1999 | 1954 | |
2000 | 1955 | 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); | |
2002 | 1957 | |
2003 | 1958 | break; |
2004 | 1959 |
@@ -2017,7 +1972,7 @@ bool monst_spell_monst(int m_idx) | ||
2017 | 1972 | } |
2018 | 1973 | |
2019 | 1974 | 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); | |
2021 | 1976 | |
2022 | 1977 | break; |
2023 | 1978 |
@@ -2036,7 +1991,7 @@ bool monst_spell_monst(int m_idx) | ||
2036 | 1991 | } |
2037 | 1992 | |
2038 | 1993 | 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); | |
2040 | 1995 | |
2041 | 1996 | break; |
2042 | 1997 |
@@ -2085,7 +2040,7 @@ bool monst_spell_monst(int m_idx) | ||
2085 | 2040 | } |
2086 | 2041 | |
2087 | 2042 | 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); | |
2089 | 2044 | |
2090 | 2045 | break; |
2091 | 2046 |
@@ -2105,7 +2060,7 @@ bool monst_spell_monst(int m_idx) | ||
2105 | 2060 | } |
2106 | 2061 | |
2107 | 2062 | 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); | |
2109 | 2064 | |
2110 | 2065 | break; |
2111 | 2066 |
@@ -2125,7 +2080,7 @@ bool monst_spell_monst(int m_idx) | ||
2125 | 2080 | } |
2126 | 2081 | |
2127 | 2082 | 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); | |
2129 | 2084 | |
2130 | 2085 | break; |
2131 | 2086 |
@@ -2145,7 +2100,7 @@ bool monst_spell_monst(int m_idx) | ||
2145 | 2100 | } |
2146 | 2101 | |
2147 | 2102 | 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); | |
2149 | 2104 | |
2150 | 2105 | break; |
2151 | 2106 |
@@ -2165,7 +2120,7 @@ bool monst_spell_monst(int m_idx) | ||
2165 | 2120 | } |
2166 | 2121 | |
2167 | 2122 | 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); | |
2169 | 2124 | |
2170 | 2125 | break; |
2171 | 2126 |
@@ -2185,7 +2140,7 @@ bool monst_spell_monst(int m_idx) | ||
2185 | 2140 | } |
2186 | 2141 | |
2187 | 2142 | 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); | |
2189 | 2144 | |
2190 | 2145 | break; |
2191 | 2146 |
@@ -2797,7 +2752,7 @@ bool monst_spell_monst(int m_idx) | ||
2797 | 2752 | } |
2798 | 2753 | |
2799 | 2754 | 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); | |
2801 | 2756 | break; |
2802 | 2757 | |
2803 | 2758 | /* RF6_DARKNESS */ |
@@ -178,7 +178,7 @@ int MM_spell_RF4_ROCKET(int y, int x, int m_idx, int t_idx) | ||
178 | 178 | return spell_core(RF4_ROCKET, m_ptr->hp, y, x, m_idx, SPELL_MON_TO_MON); |
179 | 179 | } |
180 | 180 | |
181 | -int spell_RF4_SHOOT(int m_idx) | |
181 | +int spell_RF4_SHOOT(int y, int x, int m_idx) | |
182 | 182 | { |
183 | 183 | bool learnable = spell_learnable(m_idx); |
184 | 184 | cptr m_name = monster_name(m_idx); |
@@ -193,7 +193,7 @@ int spell_RF4_SHOOT(int m_idx) | ||
193 | 193 | msg_format(_("%^sが矢を放った。", "%^s fires an arrow."), m_name); |
194 | 194 | |
195 | 195 | 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); | |
197 | 197 | update_smart_learn(m_idx, DRS_REFLECT); |
198 | 198 | return dam; |
199 | 199 | } |
@@ -778,7 +778,7 @@ int spell_RF5_BO_ACID(int y, int x, int m_idx) | ||
778 | 778 | msg_format(_("%^sがアシッド・ボルトの呪文を唱えた。", "%^s casts a acid bolt."), m_name); |
779 | 779 | |
780 | 780 | 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); | |
782 | 782 | update_smart_learn(m_idx, DRS_ACID); |
783 | 783 | update_smart_learn(m_idx, DRS_REFLECT); |
784 | 784 | return dam; |
@@ -800,7 +800,7 @@ int spell_RF5_BO_ELEC(int y, int x, int m_idx) | ||
800 | 800 | msg_format(_("%^sがサンダー・ボルトの呪文を唱えた。", "%^s casts a lightning bolt."), m_name); |
801 | 801 | |
802 | 802 | 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); | |
804 | 804 | update_smart_learn(m_idx, DRS_ELEC); |
805 | 805 | update_smart_learn(m_idx, DRS_REFLECT); |
806 | 806 | return dam; |
@@ -822,7 +822,7 @@ int spell_RF5_BO_FIRE(int y, int x, int m_idx) | ||
822 | 822 | msg_format(_("%^sがファイア・ボルトの呪文を唱えた。", "%^s casts a fire bolt."), m_name); |
823 | 823 | |
824 | 824 | 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); | |
826 | 826 | update_smart_learn(m_idx, DRS_FIRE); |
827 | 827 | update_smart_learn(m_idx, DRS_REFLECT); |
828 | 828 | return dam; |
@@ -844,7 +844,7 @@ int spell_RF5_BO_COLD(int y, int x, int m_idx) | ||
844 | 844 | msg_format(_("%^sがアイス・ボルトの呪文を唱えた。", "%^s casts a frost bolt."), m_name); |
845 | 845 | |
846 | 846 | 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); | |
848 | 848 | update_smart_learn(m_idx, DRS_COLD); |
849 | 849 | update_smart_learn(m_idx, DRS_REFLECT); |
850 | 850 | return dam; |
@@ -886,7 +886,7 @@ int spell_RF5_BO_NETH(int y, int x, int m_idx) | ||
886 | 886 | msg_format(_("%^sが地獄の矢の呪文を唱えた。", "%^s casts a nether bolt."), m_name); |
887 | 887 | |
888 | 888 | 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); | |
890 | 890 | update_smart_learn(m_idx, DRS_NETH); |
891 | 891 | update_smart_learn(m_idx, DRS_REFLECT); |
892 | 892 | return dam; |
@@ -908,7 +908,7 @@ int spell_RF5_BO_WATE(int y, int x, int m_idx) | ||
908 | 908 | msg_format(_("%^sがウォーター・ボルトの呪文を唱えた。", "%^s casts a water bolt."), m_name); |
909 | 909 | |
910 | 910 | 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); | |
912 | 912 | update_smart_learn(m_idx, DRS_REFLECT); |
913 | 913 | return dam; |
914 | 914 | } |
@@ -928,7 +928,7 @@ int spell_RF5_BO_MANA(int y, int x, int m_idx) | ||
928 | 928 | msg_format(_("%^sが魔力の矢の呪文を唱えた。", "%^s casts a mana bolt."), m_name); |
929 | 929 | |
930 | 930 | 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); | |
932 | 932 | update_smart_learn(m_idx, DRS_REFLECT); |
933 | 933 | return dam; |
934 | 934 | } |
@@ -949,7 +949,7 @@ int spell_RF5_BO_PLAS(int y, int x, int m_idx) | ||
949 | 949 | msg_format(_("%^sがプラズマ・ボルトの呪文を唱えた。", "%^s casts a plasma bolt."), m_name); |
950 | 950 | |
951 | 951 | 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); | |
953 | 953 | update_smart_learn(m_idx, DRS_REFLECT); |
954 | 954 | return dam; |
955 | 955 | } |
@@ -969,7 +969,7 @@ int spell_RF5_BO_ICEE(int y, int x, int m_idx) | ||
969 | 969 | msg_format(_("%^sが極寒の矢の呪文を唱えた。", "%^s casts an ice bolt."), m_name); |
970 | 970 | |
971 | 971 | 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); | |
973 | 973 | update_smart_learn(m_idx, DRS_COLD); |
974 | 974 | update_smart_learn(m_idx, DRS_REFLECT); |
975 | 975 | return dam; |
@@ -989,7 +989,7 @@ int spell_RF5_MISSILE(int y, int x, int m_idx) | ||
989 | 989 | msg_format(_("%^sがマジック・ミサイルの呪文を唱えた。", "%^s casts a magic missile."), m_name); |
990 | 990 | |
991 | 991 | 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); | |
993 | 993 | update_smart_learn(m_idx, DRS_REFLECT); |
994 | 994 | return dam; |
995 | 995 | } |
@@ -1479,7 +1479,7 @@ void spell_RF6_TELE_LEVEL(int m_idx) | ||
1479 | 1479 | update_smart_learn(m_idx, DRS_NEXUS); |
1480 | 1480 | } |
1481 | 1481 | |
1482 | -int spell_RF6_PSY_SPEAR(int m_idx) | |
1482 | +int spell_RF6_PSY_SPEAR(int y, int x, int m_idx) | |
1483 | 1483 | { |
1484 | 1484 | bool learnable = spell_learnable(m_idx); |
1485 | 1485 | cptr m_name = monster_name(m_idx); |
@@ -1494,7 +1494,7 @@ int spell_RF6_PSY_SPEAR(int m_idx) | ||
1494 | 1494 | msg_format(_("%^sが光の剣を放った。", "%^s throw a Psycho-Spear."), m_name); |
1495 | 1495 | |
1496 | 1496 | 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); | |
1498 | 1498 | return dam; |
1499 | 1499 | } |
1500 | 1500 |