• R/O
  • HTTP
  • SSH
  • HTTPS

hengbandosx: Commit

The master and For2.2.2-Refactoring branches track hengband.

OS X development happens on the version-1-6-2, version-2-2-1, and For2.2.2-Refactoring-Cooca2 branches.


Commit MetaInfo

Revisiona2bc49bc8787bfe4d412482ecb1f200929b252f3 (tree)
Zeit2020-09-22 10:25:40
AutorEric Branlund <ebranlund@fast...>
CommiterEric Branlund

Log Message

Merge branch 'For2.2.2-Refactoring' into For2.2.2-Refactoring-Cocoa2

Ändern Zusammenfassung

Diff

--- a/lib/help/jdefend.txt
+++ b/lib/help/jdefend.txt
@@ -141,65 +141,112 @@
141141 具のタイプは特定の防具に限られます。例えばエルフの盾はありますがエルフ
142142 の靴はありません。
143143
144-
145---- 鎧/盾 ---
144+--- 盾 ---
146145
147146 耐酸
148- この防具を装備した者は酸によるダメージを1/3にすることができます。
149- 加えて、強化された防具は酸によるダメージを受けません。
147+ この盾を装備した者は酸によるダメージを1/3にすることができます。ま
148+ た20+d20ターン毎に発動させて一時的な冷気の耐性を得ることができま
149+ す。加えて、強化された防具は酸によるダメージを受けません。
150150
151151 耐電
152- この防具を装備した者は電撃によるダメージを1/3にすることができま
153- す。
152+ この盾を装備した者は電撃によるダメージを1/3にすることができます。
153+ また20+d20ターン毎に発動させて一時的な冷気の耐性を得ることができ
154+ ます。
154155
155156 耐火
156- この防具を装備した者は火炎によるダメージを1/3にすることができま
157- す。
157+ この盾を装備した者は火炎によるダメージを1/3にすることができます。
158+ また20+d20ターン毎に発動させて一時的な冷気の耐性を得ることができ
159+ ます。
158160
159161 耐冷
160- この防具を装備した者は冷気によるダメージを1/3にすることができま
161- す。
162+ この盾を装備した者は冷気によるダメージを1/3にすることができます。
163+ また20+d20ターン毎に発動させて一時的な冷気の耐性を得ることができ
164+ ます。
162165
163166 全耐性
164- この防具を装備した者は上に述べた酸、冷気、火炎、電撃に対する耐性
165- 全てを持ちます。さらにランダムに毒やその他の耐性を持っている事が
166- あります。
167+ この盾を装備した者は酸、冷気、火炎、電撃に対する耐性全てを持ちま
168+ す。またランダムなその他の耐性を持ち、さらに追加で毒の耐性を持っ
169+ ていることがあります。
167170
168-エルフの鎧
169- これは全耐性の防具とほぼ同等ですが、より上質です。また隠密行動能
170- 力能力を高めます。さらにランダムに毒やその他の耐性を持っている事
171- があります。
171+反射
172+ この盾はボルト呪文を跳ね返し、ダメージを防ぐだけでなく逆にそれを
173+ 仕掛けた敵にダメージを与えることもしばしばです。跳ね返す効果は100%
174+ ではありませんが、それに近いものです。
172175
173-(ドワーフ)鎧
174- これは通常の鎧よりも大きいACを持っています。さらに腕力を上昇さ
175- せます。
176+光と影
177+ この盾は閃光や暗黒の攻撃のダメージを減らし、その種の攻撃によって
178+ 盲目にされるのを防ぎます。
176179
177-永続のローブ
178- このローブは火炎、冷気、酸、電撃への耐性を持ち、酸に侵されること
179- がありません。また生命力吸収への耐性も持ち、主要な6能力値を下げ
180- られないようにします。さらにランダムに毒やその他の耐性を持ってい
181- る事があります。
180+守り
181+ この盾は酸、火炎、冷気、電撃に侵されることはありませんが、それら
182+ に対する耐性を与えるわけではありません。通常より高いACを持って
183+ いる事が多いでしょう。
182184
183-反射の盾
184- この盾は飛び道具やボルト呪文を跳ね返し、ダメージを防ぐだけでなく
185- 逆にそれを仕掛けた敵にダメージを与えることもしばしばです。跳ね返
186- す効果は100%ではありませんが、それに近いものです。
185+ドワーフ
186+ これは通常の盾よりも大きいACを持っています。また耐久を上昇さ
187+ せ、ランダムに火炎、冷気、酸、電撃への耐性を持ちます。さらに通
188+ 常より軽くなります。
187189
188-光と影の盾
189- この盾は閃光や暗黒の攻撃のダメージを減らし、その種の攻撃によって
190- 盲目にされるのを防ぎます。
191190
191+--- 鎧 ---
192192
193---- 帽子/ヘルメット/王冠 ---
193+全耐性
194+ この鎧を装備した者は酸、冷気、火炎、電撃に対する耐性全てを持ちま
195+ す。またランダムなその他の耐性を持ち、さらに追加で毒の耐性を持っ
196+ ていることがあります。
194197
195-知能
196- 知能を増加させ、下げられるのを防ぎます。
198+エルフ
199+ この鎧を装備した者は酸、冷気、火炎、電撃に対する耐性全てを持ちま
200+ す。また隠密行動能力を高めます。さらにランダムなその他の耐性を持
201+ ちます。
197202
198-賢明
199- 賢さを増加させ、下げられるのを防ぎます。
203+ウルク
204+ この鎧は攻撃命中率とダメージ修正にボーナスを与えます。また酸、冷
205+ 気、火炎、電撃に対する耐性全てを持ちます。さらにランダムなその他
206+ の耐性を持ちます。
200207
201-美貌
202- これは魅力を増加させ、下げられるのを防ぎます。
208+ドワーフ
209+ これは通常の鎧よりも大きいACを持っています。また耐久を上昇させ、
210+ ランダムに火炎、冷気、酸、電撃への耐性を持ちます。さらに通常より
211+ 軽くなります。
212+
213+オログ
214+ この鎧は攻撃命中率とダメージ修正にボーナスを与えます。また腕力を
215+ 上昇させ、ランダムに火炎、冷気、酸、電撃への耐性を持ちます。
216+
217+ドルイド
218+ この鎧は賢さを上昇させます。またランダムな火炎、冷気、酸、電撃へ
219+ の耐性と、ランダムなその他の耐性を持ちます。
220+
221+永続のローブ
222+ このローブは火炎、冷気、酸、電撃への耐性を持ちます。また生命力吸
223+ 収への耐性も持ち、主要な6能力値を下げられないようにします。さら
224+ にランダムにその他の耐性を持ちます。
225+
226+宵闇のローブ
227+ このローブは非常に広範な能力を持っています。あらゆるダメージ属性
228+ への耐性を持ち、また生命力吸収への耐性も持ち、主要な6能力値を下
229+ げられないようにし、さらに麻痺を無効にし、見えないものを見る能力
230+ を持ち、ボルト呪文を跳ね返し、浮遊能力を与えます。しかしその代償
231+ として、ACを強制的に0にしてしまいます
232+
233+モルグル
234+ この鎧は冷気、毒、地獄への耐性を持ち、またランダムなその他の耐性
235+ を持ちます。さらに冷気のオーラを発し、周囲のアンデッドの存在を常
236+ に感じとる事ができます。しかし装備品に呪いを蔓延させ、さらに経験
237+ 値を減少させ、またランダムな嫌な効果を持ってしまいます。
238+
239+悪魔
240+ この鎧は腕力、知能、耐久を上昇させます。また火炎、地獄への耐性を
241+ 持ち、さらにランダムなその他の耐性を持ちます。さらに火炎のオーラ
242+ を発し、周囲の悪魔の存在を常に感じとることができます。しかしラン
243+ ダムな嫌な効果を持ってしまいます。
244+
245+
246+--- 帽子/ヘルメット/王冠 ---
247+
248+知性
249+ 知能、賢さ、魅力を増加させ、下げられるのを防ぎます。
203250
204251 賢者
205252 知能を増加させ、下げられるのを防ぎ、さらに火炎、冷気、酸、電撃へ
@@ -224,7 +271,10 @@
224271 この能力を与えます。
225272
226273
227- これは永久的な光源となります。
274+ これは閃光への耐性を与え、永久的な光源となります。
275+
276+闇
277+ これは暗黒への耐性を与えますが、光源を小さくしてしまいます。
228278
229279 テレパシー
230280 装備者にテレパシー能力を与えます。
@@ -233,6 +283,15 @@
233283 これはHPとMPの回復を早め、休憩が必要になる前に長時間戦うことを可
234284 能にします。しかし、これを装備している間、食糧の消費量は増えます。
235285
286+バジリスク
287+ これは赤外線視力を高め、毒と麻痺への耐性を与えます。
288+
289+悪魔
290+ これは知能を上昇させます。また火炎、地獄への耐性を持ち、さらにラ
291+ ンダムなその他の耐性を持ちます。さらに火炎のオーラを発し、周囲の
292+ 悪魔の存在を常に感じとることができます。しかしランダムな嫌な効果
293+ を持ってしまいます。
294+
236295 --- クローク ---
237296
238297 守り
@@ -246,7 +305,7 @@
246305 至福の地アマン
247306 このクロークは酸、火炎、冷気、電撃に侵されることはありませんが、
248307 それらに対する耐性を与えるわけではありません。また、装備者の隠密
249- 行動能力を高めます。
308+ 行動能力を高め、さらにランダムな耐性を持ちます。
250309
251310 灼熱
252311 このクロークは酸や火炎に侵されることはありません。さらに火炎への
@@ -279,8 +338,15 @@
279338
280339 腕力
281340 腕力を増加させ、さらに攻撃命中率とダメージ修正へボーナスを与えま
282- す。されにランダムに何かの耐性を持っています。
341+ す。さらにランダムに何かの耐性を持っています。
342+
343+源氏
344+ 器用さを増加させ、また攻撃命中率へボーナスを与えます。さらに二刀
345+ 流を容易に命中させる能力を与えます。
283346
347+魔力支配
348+ 魔道具使用能力を増加させます。メイジタイプの魔法使いがこれを装備
349+ してもペナルティはありません。
284350
285351 --- 靴 ---
286352
--- a/src/cmd-item/cmd-zapwand.c
+++ b/src/cmd-item/cmd-zapwand.c
@@ -246,7 +246,7 @@ bool wand_effect(player_type *creature_ptr, OBJECT_SUBTYPE_VALUE sval, DIRECTION
246246
247247 case SV_WAND_DRAGON_BREATH: {
248248 HIT_POINT dam;
249- EFFECT_ID typ;
249+ spell_type typ;
250250
251251 switch (randint1(5)) {
252252 case 1:
--- a/src/combat/aura-counterattack.c
+++ b/src/combat/aura-counterattack.c
@@ -196,7 +196,7 @@ static void aura_shadow_by_monster_attack(player_type *target_ptr, monap_type *m
196196 }
197197
198198 BIT_FLAGS flg = PROJECT_STOP | PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL;
199- EFFECT_ID typ[4][2] = { { INVEN_HEAD, GF_OLD_CONF }, { INVEN_LARM, GF_OLD_SLEEP }, { INVEN_HANDS, GF_TURN_ALL }, { INVEN_FEET, GF_OLD_SLOW } };
199+ spell_type typ[4][2] = { { INVEN_HEAD, GF_OLD_CONF }, { INVEN_LARM, GF_OLD_SLEEP }, { INVEN_HANDS, GF_TURN_ALL }, { INVEN_FEET, GF_OLD_SLOW } };
200200
201201 /* Some cursed armours gives an extra effect */
202202 for (int j = 0; j < 4; j++) {
--- a/src/effect/effect-feature.c
+++ b/src/effect/effect-feature.c
@@ -58,7 +58,7 @@ static bool cave_naked_bold(player_type *caster_ptr, POSITION y, POSITION x)
5858 * Perhaps we should affect doors?
5959 * </pre>
6060 */
61-bool affect_feature(player_type *caster_ptr, MONSTER_IDX who, POSITION r, POSITION y, POSITION x, HIT_POINT dam, EFFECT_ID typ)
61+bool affect_feature(player_type *caster_ptr, MONSTER_IDX who, POSITION r, POSITION y, POSITION x, HIT_POINT dam, spell_type typ)
6262 {
6363 floor_type *floor_ptr = caster_ptr->current_floor_ptr;
6464 grid_type *g_ptr = &floor_ptr->grid_array[y][x];
--- a/src/effect/effect-feature.h
+++ b/src/effect/effect-feature.h
@@ -2,4 +2,4 @@
22
33 #include "system/angband.h"
44
5-bool affect_feature(player_type *caster_ptr, MONSTER_IDX who, POSITION r, POSITION y, POSITION x, HIT_POINT dam, EFFECT_ID typ);
5+bool affect_feature(player_type *caster_ptr, MONSTER_IDX who, POSITION r, POSITION y, POSITION x, HIT_POINT dam, spell_type typ);
--- a/src/effect/effect-item.c
+++ b/src/effect/effect-item.c
@@ -34,7 +34,7 @@
3434 * @param typ 効果属性 / Type of damage to apply to monsters (and objects)
3535 * @return 何か一つでも効力があればTRUEを返す / TRUE if any "effects" of the projection were observed, else FALSE
3636 */
37-bool affect_item(player_type *caster_ptr, MONSTER_IDX who, POSITION r, POSITION y, POSITION x, HIT_POINT dam, EFFECT_ID typ)
37+bool affect_item(player_type *caster_ptr, MONSTER_IDX who, POSITION r, POSITION y, POSITION x, HIT_POINT dam, spell_type typ)
3838 {
3939 grid_type *g_ptr = &caster_ptr->current_floor_ptr->grid_array[y][x];
4040
--- a/src/effect/effect-item.h
+++ b/src/effect/effect-item.h
@@ -2,4 +2,4 @@
22
33 #include "system/angband.h"
44
5-bool affect_item(player_type *caster_ptr, MONSTER_IDX who, POSITION r, POSITION y, POSITION x, HIT_POINT dam, EFFECT_ID typ);
5+bool affect_item(player_type *caster_ptr, MONSTER_IDX who, POSITION r, POSITION y, POSITION x, HIT_POINT dam, spell_type typ);
--- a/src/effect/effect-monster-util.c
+++ b/src/effect/effect-monster-util.c
@@ -24,7 +24,7 @@
2424 * @param see_s_msg TRUEならばメッセージを表示する
2525 * @return なし
2626 */
27-static void substitute_effect_monster(effect_monster_type *em_ptr, MONSTER_IDX who, POSITION r, POSITION y, POSITION x, HIT_POINT dam, EFFECT_ID effect_type, BIT_FLAGS flag, bool see_s_msg)
27+static void substitute_effect_monster(effect_monster_type *em_ptr, MONSTER_IDX who, POSITION r, POSITION y, POSITION x, HIT_POINT dam, spell_type effect_type, BIT_FLAGS flag, bool see_s_msg)
2828 {
2929 em_ptr->who = who;
3030 em_ptr->r = r;
@@ -51,7 +51,7 @@ static void substitute_effect_monster(effect_monster_type *em_ptr, MONSTER_IDX w
5151 * @param see_s_msg TRUEならばメッセージを表示する
5252 * @return なし
5353 */
54-effect_monster_type *initialize_effect_monster(player_type *caster_ptr, effect_monster_type *em_ptr, MONSTER_IDX who, POSITION r, POSITION y, POSITION x, HIT_POINT dam, EFFECT_ID effect_type, BIT_FLAGS flag, bool see_s_msg)
54+effect_monster_type *initialize_effect_monster(player_type *caster_ptr, effect_monster_type *em_ptr, MONSTER_IDX who, POSITION r, POSITION y, POSITION x, HIT_POINT dam, spell_type effect_type, BIT_FLAGS flag, bool see_s_msg)
5555 {
5656 substitute_effect_monster(em_ptr, who, r, y, x, dam, effect_type, flag, see_s_msg);
5757
--- a/src/effect/effect-monster-util.h
+++ b/src/effect/effect-monster-util.h
@@ -37,9 +37,9 @@ typedef struct effect_monster_type {
3737 POSITION y;
3838 POSITION x;
3939 HIT_POINT dam;
40- EFFECT_ID effect_type;
40+ spell_type effect_type;
4141 BIT_FLAGS flag;
4242 bool see_s_msg;
4343 } effect_monster_type;
4444
45-effect_monster_type *initialize_effect_monster(player_type *caster_ptr, effect_monster_type *em_ptr, MONSTER_IDX who, POSITION r, POSITION y, POSITION x, HIT_POINT dam, EFFECT_ID effect_type, BIT_FLAGS flag, bool see_s_msg);
45+effect_monster_type *initialize_effect_monster(player_type *caster_ptr, effect_monster_type *em_ptr, MONSTER_IDX who, POSITION r, POSITION y, POSITION x, HIT_POINT dam, spell_type effect_type, BIT_FLAGS flag, bool see_s_msg);
--- a/src/effect/effect-monster.c
+++ b/src/effect/effect-monster.c
@@ -571,7 +571,7 @@ static void postprocess_spell(player_type *caster_ptr, effect_monster_type *em_p
571571 * @return 何か一つでも効力があればTRUEを返す / TRUE if any "effects" of the projection were observed, else FALSE
572572 */
573573 bool affect_monster(
574- player_type *caster_ptr, MONSTER_IDX who, POSITION r, POSITION y, POSITION x, HIT_POINT dam, EFFECT_ID effect_type, BIT_FLAGS flag, bool see_s_msg)
574+ player_type *caster_ptr, MONSTER_IDX who, POSITION r, POSITION y, POSITION x, HIT_POINT dam, spell_type effect_type, BIT_FLAGS flag, bool see_s_msg)
575575 {
576576 effect_monster_type tmp_effect;
577577 effect_monster_type *em_ptr = initialize_effect_monster(caster_ptr, &tmp_effect, who, r, y, x, dam, effect_type, flag, see_s_msg);
--- a/src/effect/effect-monster.h
+++ b/src/effect/effect-monster.h
@@ -3,4 +3,4 @@
33 #include "system/angband.h"
44 #include "effect/effect-monster-util.h"
55
6-bool affect_monster(player_type *caster_ptr, MONSTER_IDX who, POSITION r, POSITION y, POSITION x, HIT_POINT dam, EFFECT_ID typ, BIT_FLAGS flag, bool see_s_msg);
6+bool affect_monster(player_type *caster_ptr, MONSTER_IDX who, POSITION r, POSITION y, POSITION x, HIT_POINT dam, spell_type typ, BIT_FLAGS flag, bool see_s_msg);
--- a/src/effect/effect-player-resist-hurt.c
+++ b/src/effect/effect-player-resist-hurt.c
@@ -11,6 +11,7 @@
1111 #include "monster-race/race-indice-types.h"
1212 #include "mutation/mutation-investor-remover.h"
1313 #include "object/object-broken.h"
14+#include "object-enchant/object-curse.h"
1415 #include "player/player-damage.h"
1516 #include "player/player-race-types.h"
1617 #include "player/player-race.h"
@@ -510,3 +511,82 @@ void effect_player_disintegration(player_type *target_ptr, effect_player_type *e
510511
511512 ep_ptr->get_damage = take_hit(target_ptr, DAMAGE_ATTACK, ep_ptr->dam, ep_ptr->killer, ep_ptr->monspell);
512513 }
514+
515+void effect_player_death_ray(player_type *target_ptr, effect_player_type *ep_ptr)
516+{
517+ if (target_ptr->blind)
518+ msg_print(_("何か非常に冷たいもので攻撃された!", "You are hit by something extremely cold!"));
519+
520+ ep_ptr->dam = ep_ptr->dam * calc_deathray_damage_rate(target_ptr, CALC_RAND) / 100;
521+ ep_ptr->get_damage = take_hit(target_ptr, DAMAGE_ATTACK, ep_ptr->dam, ep_ptr->killer, ep_ptr->monspell);
522+}
523+
524+void effect_player_mana(player_type *target_ptr, effect_player_type *ep_ptr)
525+{
526+ if (target_ptr->blind)
527+ msg_print(_("魔法のオーラで攻撃された!", "You are hit by an aura of magic!"));
528+
529+ ep_ptr->get_damage = take_hit(target_ptr, DAMAGE_ATTACK, ep_ptr->dam, ep_ptr->killer, ep_ptr->monspell);
530+}
531+
532+void effect_player_psy_spear(player_type *target_ptr, effect_player_type *ep_ptr)
533+{
534+ if (target_ptr->blind)
535+ msg_print(_("エネルギーの塊で攻撃された!", "You are hit by an energy!"));
536+
537+ ep_ptr->get_damage = take_hit(target_ptr, DAMAGE_FORCE, ep_ptr->dam, ep_ptr->killer, ep_ptr->monspell);
538+}
539+
540+void effect_player_meteor(player_type *target_ptr, effect_player_type *ep_ptr)
541+{
542+ if (target_ptr->blind)
543+ msg_print(_("何かが空からあなたの頭上に落ちてきた!", "Something falls from the sky on you!"));
544+
545+ ep_ptr->get_damage = take_hit(target_ptr, DAMAGE_ATTACK, ep_ptr->dam, ep_ptr->killer, ep_ptr->monspell);
546+ if (!target_ptr->resist_shard || one_in_(13)) {
547+ if (!is_immune_fire(target_ptr))
548+ inventory_damage(target_ptr, set_fire_destroy, 2);
549+ inventory_damage(target_ptr, set_cold_destroy, 2);
550+ }
551+}
552+
553+void effect_player_icee(player_type *target_ptr, effect_player_type *ep_ptr)
554+{
555+ if (target_ptr->blind)
556+ msg_print(_("何か鋭く冷たいもので攻撃された!", "You are hit by something sharp and cold!"));
557+
558+ ep_ptr->get_damage = cold_dam(target_ptr, ep_ptr->dam, ep_ptr->killer, ep_ptr->monspell, FALSE);
559+ if (check_multishadow(target_ptr))
560+ return;
561+
562+ if (!target_ptr->resist_shard) {
563+ (void)set_cut(target_ptr, target_ptr->cut + damroll(5, 8));
564+ }
565+
566+ if (!target_ptr->resist_sound) {
567+ (void)set_stun(target_ptr, target_ptr->stun + randint1(15));
568+ }
569+
570+ if ((!(target_ptr->resist_cold || is_oppose_cold(target_ptr))) || one_in_(12)) {
571+ if (!is_immune_cold(target_ptr))
572+ inventory_damage(target_ptr, set_cold_destroy, 3);
573+ }
574+}
575+
576+void effect_player_hand_doom(player_type *target_ptr, effect_player_type *ep_ptr)
577+{
578+ if ((randint0(100 + ep_ptr->rlev / 2) < target_ptr->skill_sav) && !check_multishadow(target_ptr)) {
579+ msg_print(_("しかし効力を跳ね返した!", "You resist the effects!"));
580+ learn_spell(target_ptr, ep_ptr->monspell);
581+ } else {
582+ if (!check_multishadow(target_ptr)) {
583+ msg_print(_("あなたは命が薄まっていくように感じた!", "You feel your life fade away!"));
584+ curse_equipment(target_ptr, 40, 20);
585+ }
586+
587+ ep_ptr->get_damage = take_hit(target_ptr, DAMAGE_ATTACK, ep_ptr->dam, ep_ptr->m_name, ep_ptr->monspell);
588+
589+ if (target_ptr->chp < 1)
590+ target_ptr->chp = 1;
591+ }
592+}
--- a/src/effect/effect-player-resist-hurt.h
+++ b/src/effect/effect-player-resist-hurt.h
@@ -27,3 +27,9 @@ void effect_player_dark(player_type *target_ptr, effect_player_type *ep_ptr);
2727 void effect_player_time(player_type *target_ptr, effect_player_type *ep_ptr);
2828 void effect_player_gravity(player_type *target_ptr, effect_player_type *ep_ptr);
2929 void effect_player_disintegration(player_type *target_ptr, effect_player_type *ep_ptr);
30+void effect_player_death_ray(player_type *target_ptr, effect_player_type *ep_ptr);
31+void effect_player_mana(player_type *target_ptr, effect_player_type *ep_ptr);
32+void effect_player_psy_spear(player_type *target_ptr, effect_player_type *ep_ptr);
33+void effect_player_meteor(player_type *target_ptr, effect_player_type *ep_ptr);
34+void effect_player_icee(player_type *target_ptr, effect_player_type *ep_ptr);
35+void effect_player_hand_doom(player_type *target_ptr, effect_player_type *ep_ptr);
--- a/src/effect/effect-player-switcher.c
+++ b/src/effect/effect-player-switcher.c
@@ -1,122 +1,10 @@
11 #include "effect/effect-player-switcher.h"
2-#include "blue-magic/blue-magic-checker.h"
3-#include "cmd-action/cmd-attack.h"
42 #include "effect/effect-player-curse.h"
53 #include "effect/effect-player-oldies.h"
64 #include "effect/effect-player-resist-hurt.h"
75 #include "effect/effect-player-spirit.h"
8-#include "inventory/inventory-damage.h"
9-#include "mind/mind-mirror-master.h"
10-#include "object-enchant/object-curse.h"
11-#include "object/object-broken.h"
12-#include "player/mimic-info-table.h"
136 #include "player/player-damage.h"
14-#include "player/player-race-types.h"
15-#include "player/player-status-flags.h"
167 #include "spell/spell-types.h"
17-#include "status/bad-status-setter.h"
18-#include "status/element-resistance.h"
19-#include "view/display-messages.h"
20-#include "world/world.h"
21-
22-void effect_player_mana(player_type *target_ptr, effect_player_type *ep_ptr)
23-{
24- if (target_ptr->blind)
25- msg_print(_("–‚–@‚̃I[ƒ‰‚ōUŒ‚‚³‚ꂽI", "You are hit by an aura of magic!"));
26-
27- ep_ptr->get_damage = take_hit(target_ptr, DAMAGE_ATTACK, ep_ptr->dam, ep_ptr->killer, ep_ptr->monspell);
28-}
29-
30-void effect_player_psy_spear(player_type *target_ptr, effect_player_type *ep_ptr)
31-{
32- if (target_ptr->blind)
33- msg_print(_("ƒGƒlƒ‹ƒM[‚̉ò‚ōUŒ‚‚³‚ꂽI", "You are hit by an energy!"));
34-
35- ep_ptr->get_damage = take_hit(target_ptr, DAMAGE_FORCE, ep_ptr->dam, ep_ptr->killer, ep_ptr->monspell);
36-}
37-
38-void effect_player_meteor(player_type *target_ptr, effect_player_type *ep_ptr)
39-{
40- if (target_ptr->blind)
41- msg_print(_("‰½‚©‚ª‹ó‚©‚ç‚ ‚È‚½‚Ì“ªã‚É—Ž‚¿‚Ä‚«‚½I", "Something falls from the sky on you!"));
42-
43- ep_ptr->get_damage = take_hit(target_ptr, DAMAGE_ATTACK, ep_ptr->dam, ep_ptr->killer, ep_ptr->monspell);
44- if (!target_ptr->resist_shard || one_in_(13)) {
45- if (!is_immune_fire(target_ptr))
46- inventory_damage(target_ptr, set_fire_destroy, 2);
47- inventory_damage(target_ptr, set_cold_destroy, 2);
48- }
49-}
50-
51-void effect_player_icee(player_type *target_ptr, effect_player_type *ep_ptr)
52-{
53- if (target_ptr->blind)
54- msg_print(_("‰½‚©‰s‚­—₽‚¢‚à‚̂ōUŒ‚‚³‚ꂽI", "You are hit by something sharp and cold!"));
55-
56- ep_ptr->get_damage = cold_dam(target_ptr, ep_ptr->dam, ep_ptr->killer, ep_ptr->monspell, FALSE);
57- if (check_multishadow(target_ptr))
58- return;
59-
60- if (!target_ptr->resist_shard) {
61- (void)set_cut(target_ptr, target_ptr->cut + damroll(5, 8));
62- }
63-
64- if (!target_ptr->resist_sound) {
65- (void)set_stun(target_ptr, target_ptr->stun + randint1(15));
66- }
67-
68- if ((!(target_ptr->resist_cold || is_oppose_cold(target_ptr))) || one_in_(12)) {
69- if (!is_immune_cold(target_ptr))
70- inventory_damage(target_ptr, set_cold_destroy, 3);
71- }
72-}
73-
74-void effect_player_death_ray(player_type *target_ptr, effect_player_type *ep_ptr)
75-{
76- if (target_ptr->blind)
77- msg_print(_("‰½‚©”ñí‚ɗ₽‚¢‚à‚̂ōUŒ‚‚³‚ꂽI", "You are hit by something extremely cold!"));
78-
79- if (target_ptr->mimic_form) {
80- if (!(mimic_info[target_ptr->mimic_form].MIMIC_FLAGS & MIMIC_IS_NONLIVING))
81- ep_ptr->get_damage = take_hit(target_ptr, DAMAGE_ATTACK, ep_ptr->dam, ep_ptr->killer, ep_ptr->monspell);
82-
83- return;
84- }
85-
86- switch (target_ptr->prace) {
87- case RACE_GOLEM:
88- case RACE_SKELETON:
89- case RACE_ZOMBIE:
90- case RACE_VAMPIRE:
91- case RACE_BALROG:
92- case RACE_SPECTRE: {
93- ep_ptr->dam = 0;
94- break;
95- }
96- default: {
97- ep_ptr->get_damage = take_hit(target_ptr, DAMAGE_ATTACK, ep_ptr->dam, ep_ptr->killer, ep_ptr->monspell);
98- break;
99- }
100- }
101-}
102-
103-void effect_player_hand_doom(player_type *target_ptr, effect_player_type *ep_ptr)
104-{
105- if ((randint0(100 + ep_ptr->rlev / 2) < target_ptr->skill_sav) && !check_multishadow(target_ptr)) {
106- msg_print(_("‚µ‚©‚µŒø—͂𒵂˕Ԃµ‚½I", "You resist the effects!"));
107- learn_spell(target_ptr, ep_ptr->monspell);
108- } else {
109- if (!check_multishadow(target_ptr)) {
110- msg_print(_("‚ ‚È‚½‚Í–½‚ª”–‚Ü‚Á‚Ä‚¢‚­‚悤‚ÉŠ´‚¶‚½I", "You feel your life fade away!"));
111- curse_equipment(target_ptr, 40, 20);
112- }
113-
114- ep_ptr->get_damage = take_hit(target_ptr, DAMAGE_ATTACK, ep_ptr->dam, ep_ptr->m_name, ep_ptr->monspell);
115-
116- if (target_ptr->chp < 1)
117- target_ptr->chp = 1;
118- }
119-}
1208
1219 /*!
12210 * @brief
--- a/src/effect/effect-player-util.h
+++ b/src/effect/effect-player-util.h
@@ -13,7 +13,7 @@ typedef struct effect_player_type
1313
1414 MONSTER_IDX who;
1515 HIT_POINT dam;
16- EFFECT_ID effect_type;
16+ spell_type effect_type;
1717 BIT_FLAGS flag;
1818 int monspell;
1919 } effect_player_type;
--- a/src/effect/effect-player.c
+++ b/src/effect/effect-player.c
@@ -26,6 +26,128 @@
2626 #include "target/projection-path-calculator.h"
2727 #include "view/display-messages.h"
2828
29+/*! 盲目時の代替メッセージ // TODO: 各種の盲目時メッセージからまとめ上げて統合 */
30+concptr blind_spell_effect_messages[MAX_GF] =
31+{
32+ "", // GF_NONE = 0,
33+ "", // GF_ELEC = 1, /*!< 魔法効果: 電撃*/
34+ "", // GF_POIS = 2, /*!< 魔法効果: 毒*/
35+ "", // GF_ACID = 3, /*!< 魔法効果: 酸*/
36+ "", // GF_COLD = 4, /*!< 魔法効果: 冷気*/
37+ "", // GF_FIRE = 5, /*!< 魔法効果: 火炎*/
38+ "",
39+ "",
40+ "",
41+ "", // GF_PSY_SPEAR = 9, /*!< 魔法効果: 光の剣*/
42+ "", // GF_MISSILE = 10, /*!< 魔法効果: 弱魔力*/
43+ "", // GF_ARROW = 11, /*!< 魔法効果: 射撃*/
44+ "", // GF_PLASMA = 12, /*!< 魔法効果: プラズマ*/
45+ "",
46+ "", // GF_WATER = 14, /*!< 魔法効果: 水流*/
47+ "", // GF_LITE = 15, /*!< 魔法効果: 閃光*/
48+ "", // GF_DARK = 16, /*!< 魔法効果: 暗黒*/
49+ "", // GF_LITE_WEAK = 17, /*!< 魔法効果: 弱光*/
50+ "", // GF_DARK_WEAK = 18, /*!< 魔法効果: 弱暗*/
51+ "",
52+ "", // GF_SHARDS = 20, /*!< 魔法効果: 破片*/
53+ "", // GF_SOUND = 21, /*!< 魔法効果: 轟音*/
54+ "", // GF_CONFUSION = 22, /*!< 魔法効果: 混乱*/
55+ "", // GF_FORCE = 23, /*!< 魔法効果: フォース*/
56+ "", // GF_INERTIAL = 24, /*!< 魔法効果: 遅鈍*/
57+ "",
58+ "", // GF_MANA = 26, /*!< 魔法効果: 純粋魔力*/
59+ "", // GF_METEOR = 27, /*!< 魔法効果: 隕石*/
60+ "", // GF_ICE = 28, /*!< 魔法効果: 極寒*/
61+ "",
62+ "", // GF_CHAOS = 30, /*!< 魔法効果: カオス*/
63+ "", // GF_NETHER = 31, /*!< 魔法効果: 地獄*/
64+ "", // GF_DISENCHANT = 32, /*!< 魔法効果: 劣化*/
65+ "", // GF_NEXUS = 33, /*!< 魔法効果: 因果混乱*/
66+ "", // GF_TIME = 34, /*!< 魔法効果: 時間逆転*/
67+ "", // GF_GRAVITY = 35, /*!< 魔法効果: 重力*/
68+ "",
69+ "",
70+ "",
71+ "",
72+ "",
73+ "", // GF_KILL_WALL = 40, /*!< 魔法効果: 岩石溶解*/
74+ "", // GF_KILL_DOOR = 41, /*!< 魔法効果: ドア破壊*/
75+ "", // GF_KILL_TRAP = 42, /*!< 魔法効果: トラップ破壊*/
76+ "",
77+ "",
78+ "", // GF_MAKE_WALL = 45, /*!< 魔法効果: 壁生成*/
79+ "", // GF_MAKE_DOOR = 46, /*!< 魔法効果: ドア生成*/
80+ "", // GF_MAKE_TRAP = 47, /*!< 魔法効果: トラップ生成*/
81+ "", // GF_MAKE_TREE = 48, /*!< 魔法効果: 森林生成*/
82+ "",
83+ "", // GF_OLD_CLONE = 51, /*!< 魔法効果: クローン・モンスター*/
84+ "", // GF_OLD_POLY = 52, /*!< 魔法効果: チェンジ・モンスター*/
85+ "", // GF_OLD_HEAL = 53, /*!< 魔法効果: 回復モンスター*/
86+ "", // GF_OLD_SPEED = 54, /*!< 魔法効果: スピード・モンスター*/
87+ "", // GF_OLD_SLOW = 55, /*!< 魔法効果: スロウ・モンスター*/
88+ "", // GF_OLD_CONF = 56, /*!< 魔法効果: パニック・モンスター*/
89+ "", // GF_OLD_SLEEP = 57, /*!< 魔法効果: スリープ・モンスター*/
90+ "", // GF_HYPODYNAMIA = 58, /*!< 魔法効果: 衰弱*/
91+ "",
92+ "",
93+ "", // GF_AWAY_UNDEAD = 61, /*!< 魔法効果: アンデッド・アウェイ*/
94+ "", // GF_AWAY_EVIL = 62, /*!< 魔法効果: 邪悪飛ばし*/
95+ "", // GF_AWAY_ALL = 63, /*!< 魔法効果: テレポート・アウェイ*/
96+ "", // GF_TURN_UNDEAD = 64, /*!< 魔法効果: アンデッド恐慌*/
97+ "", // GF_TURN_EVIL = 65, /*!< 魔法効果: 邪悪恐慌*/
98+ "", // GF_TURN_ALL = 66, /*!< 魔法効果: モンスター恐慌*/
99+ "", // GF_DISP_UNDEAD = 67, /*!< 魔法効果: アンデッド退散*/
100+ "", // GF_DISP_EVIL = 68, /*!< 魔法効果: 邪悪退散*/
101+ "", // GF_DISP_ALL = 69, /*!< 魔法効果: モンスター退散*/
102+ "", // GF_DISP_DEMON = 70, /*!< 魔法効果: 悪魔退散*/
103+ "", // GF_DISP_LIVING = 71, /*!< 魔法効果: 生命退散*/
104+ "", // GF_ROCKET = 72, /*!< 魔法効果: ロケット*/
105+ "", // GF_NUKE = 73, /*!< 魔法効果: 放射性廃棄物*/
106+ "", // GF_MAKE_GLYPH = 74, /*!< 魔法効果: 守りのルーン生成*/
107+ "", // GF_STASIS = 75, /*!< 魔法効果: モンスター拘束*/
108+ "", // GF_STONE_WALL = 76, /*!< 魔法効果: 壁生成*/
109+ "", // GF_DEATH_RAY = 77, /*!< 魔法効果: 死の光線*/
110+ "", // GF_STUN = 78, /*!< 魔法効果: 朦朧*/
111+ "", // GF_HOLY_FIRE = 79, /*!< 魔法効果: 聖光*/
112+ "", // GF_HELL_FIRE = 80, /*!< 魔法効果: 地獄の劫火*/
113+ "", // GF_DISINTEGRATE = 81, /*!< 魔法効果: 分解*/
114+ "", // GF_CHARM = 82, /*!< 魔法効果: モンスター魅了*/
115+ "", // GF_CONTROL_UNDEAD = 83, /*!< 魔法効果: アンデッド支配*/
116+ "", // GF_CONTROL_ANIMAL = 84, /*!< 魔法効果: 動物支配*/
117+ "", // GF_PSI = 85, /*!< 魔法効果: サイキック攻撃*/
118+ "", // GF_PSI_DRAIN = 86, /*!< 魔法効果: 精神吸収*/
119+ "", // GF_TELEKINESIS = 87, /*!< 魔法効果: テレキシネス*/
120+ "", // GF_JAM_DOOR = 88, /*!< 魔法効果: 施錠*/
121+ "", // GF_DOMINATION = 89, /*!< 魔法効果: 精神支配*/
122+ "", // GF_DISP_GOOD = 90, /*!< 魔法効果: 善良退散*/
123+ "", // GF_DRAIN_MANA = 91, /*!< 魔法効果: 魔力吸収*/
124+ "", // GF_MIND_BLAST = 92, /*!< 魔法効果: 精神攻撃*/
125+ "", // GF_BRAIN_SMASH = 93, /*!< 魔法効果: 脳攻撃*/
126+ "", // GF_CAUSE_1 = 94, /*!< 魔法効果: 軽傷の呪い*/
127+ "", // GF_CAUSE_2 = 95, /*!< 魔法効果: 重傷の呪い*/
128+ "", // GF_CAUSE_3 = 96, /*!< 魔法効果: 致命傷の呪い*/
129+ "", // GF_CAUSE_4 = 97, /*!< 魔法効果: 秘孔を突く*/
130+ "", // GF_HAND_DOOM = 98, /*!< 魔法効果: 破滅の手*/
131+ "", // GF_CAPTURE = 99, /*!< 魔法効果: 捕縛*/
132+ "", // GF_ANIM_DEAD = 100, /*!< 魔法効果: 死者復活*/
133+ "", // GF_CHARM_LIVING = 101, /*!< 魔法効果: 生命魅了*/
134+ "", // GF_IDENTIFY = 102, /*!< 魔法効果: 鑑定*/
135+ "", // GF_ATTACK = 103, /*!< 魔法効果: 白兵*/
136+ "", // GF_ENGETSU = 104, /*!< 魔法効果: 円月*/
137+ "", // GF_GENOCIDE = 105, /*!< 魔法効果: 抹殺*/
138+ "", // GF_PHOTO = 106, /*!< 魔法効果: 撮影*/
139+ "", // GF_CONTROL_DEMON = 107, /*!< 魔法効果: 悪魔支配*/
140+ "", // GF_LAVA_FLOW = 108, /*!< 魔法効果: 溶岩噴出*/
141+ "", // GF_BLOOD_CURSE = 109, /*!< 魔法効果: 血の呪い*/
142+ "", // GF_SEEKER = 110, /*!< 魔法効果: シーカーレイ*/
143+ "", // GF_SUPER_RAY = 111, /*!< 魔法効果: スーパーレイ*/
144+ "", // GF_STAR_HEAL = 112, /*!< 魔法効果: 星の癒し*/
145+ "", // GF_WATER_FLOW = 113, /*!< 魔法効果: 流水*/
146+ "", // GF_CRUSADE = 114, /*!< 魔法効果: 聖戦*/
147+ "", // GF_STASIS_EVIL = 115, /*!< 魔法効果: 邪悪拘束*/
148+ "", // GF_WOUNDS = 116, /*!< 魔法効果: 創傷*/
149+};
150+
29151 typedef enum effect_player_check_result {
30152 EP_CHECK_FALSE = 0,
31153 EP_CHECK_TRUE = 1,
@@ -43,7 +165,7 @@ typedef enum effect_player_check_result {
43165 * @return 初期化後の構造体ポインタ
44166 */
45167 static effect_player_type *initialize_effect_player(
46- effect_player_type *ep_ptr, MONSTER_IDX who, HIT_POINT dam, EFFECT_ID effect_type, BIT_FLAGS flag, int monspell)
168+ effect_player_type *ep_ptr, MONSTER_IDX who, HIT_POINT dam, spell_type effect_type, BIT_FLAGS flag, int monspell)
47169 {
48170 ep_ptr->rlev = 0;
49171 ep_ptr->m_ptr = NULL;
@@ -175,7 +297,7 @@ static void describe_effect_source(player_type *target_ptr, effect_player_type *
175297 * @param monspell 効果元のモンスター魔法ID
176298 * @return 何か一つでも効力があればTRUEを返す / TRUE if any "effects" of the projection were observed, else FALSE
177299 */
178-bool affect_player(MONSTER_IDX who, player_type *target_ptr, concptr who_name, int r, POSITION y, POSITION x, HIT_POINT dam, EFFECT_ID effect_type,
300+bool affect_player(MONSTER_IDX who, player_type *target_ptr, concptr who_name, int r, POSITION y, POSITION x, HIT_POINT dam, spell_type effect_type,
179301 BIT_FLAGS flag, int monspell, project_func project)
180302 {
181303 effect_player_type tmp_effect;
--- a/src/effect/effect-player.h
+++ b/src/effect/effect-player.h
@@ -3,7 +3,7 @@
33 #include "system/angband.h"
44
55 typedef bool (*project_func)(
6- player_type *caster_ptr, MONSTER_IDX who, POSITION rad, POSITION y, POSITION x, HIT_POINT dam, EFFECT_ID typ, BIT_FLAGS flag, int monspell);
6+ player_type *caster_ptr, MONSTER_IDX who, POSITION rad, POSITION y, POSITION x, HIT_POINT dam, spell_type typ, BIT_FLAGS flag, int monspell);
77
8-bool affect_player(MONSTER_IDX who, player_type *target_ptr, concptr who_name, int r, POSITION y, POSITION x, HIT_POINT dam, EFFECT_ID typ, BIT_FLAGS flag,
8+bool affect_player(MONSTER_IDX who, player_type *target_ptr, concptr who_name, int r, POSITION y, POSITION x, HIT_POINT dam, spell_type typ, BIT_FLAGS flag,
99 int monspell, project_func project);
--- a/src/effect/effect-processor.c
+++ b/src/effect/effect-processor.c
@@ -81,7 +81,7 @@ static void next_mirror(player_type *creature_ptr, POSITION *next_y, POSITION *n
8181 * @return 何か一つでも効力があればTRUEを返す / TRUE if any "effects" of the
8282 * projection were observed, else FALSE
8383 */
84-bool project(player_type *caster_ptr, const MONSTER_IDX who, POSITION rad, POSITION y, POSITION x, const HIT_POINT dam, const EFFECT_ID typ, BIT_FLAGS flag,
84+bool project(player_type *caster_ptr, const MONSTER_IDX who, POSITION rad, POSITION y, POSITION x, const HIT_POINT dam, const spell_type typ, BIT_FLAGS flag,
8585 const int monspell)
8686 {
8787 int dist;
--- a/src/effect/effect-processor.h
+++ b/src/effect/effect-processor.h
@@ -2,5 +2,5 @@
22
33 #include "system/angband.h"
44
5-bool project(player_type *caster_ptr, const MONSTER_IDX who, POSITION rad, POSITION y, POSITION x, const HIT_POINT dam, const EFFECT_ID typ, BIT_FLAGS flag,
5+bool project(player_type *caster_ptr, const MONSTER_IDX who, POSITION rad, POSITION y, POSITION x, const HIT_POINT dam, const spell_type typ, BIT_FLAGS flag,
66 const int monspell);
--- a/src/floor/object-allocator.c
+++ b/src/floor/object-allocator.c
@@ -148,7 +148,7 @@ bool alloc_stairs(player_type *owner_ptr, FEAT_IDX feat, int num, int walls)
148148 * @param num 配置したい数
149149 * @return 規定数通りに生成に成功したらTRUEを返す。
150150 */
151-void alloc_object(player_type *owner_ptr, dap_type set, EFFECT_ID typ, int num)
151+void alloc_object(player_type *owner_ptr, dap_type set, spell_type typ, int num)
152152 {
153153 POSITION y = 0;
154154 POSITION x = 0;
--- a/src/floor/object-allocator.h
+++ b/src/floor/object-allocator.h
@@ -4,4 +4,4 @@
44
55 typedef enum dap_type dap_type;
66 bool alloc_stairs(player_type *owner_ptr, FEAT_IDX feat, int num, int walls);
7-void alloc_object(player_type *owner_ptr, dap_type set, EFFECT_ID typ, int num);
7+void alloc_object(player_type *owner_ptr, dap_type set, spell_type typ, int num);
--- a/src/info-reader/vault-reader.c
+++ b/src/info-reader/vault-reader.c
@@ -41,7 +41,7 @@ errr parse_v_info(char *buf, angband_header *head)
4141 if (!add_text(&v_ptr->text, head, s, FALSE))
4242 return 7;
4343 } else if (buf[0] == 'X') {
44- EFFECT_ID typ, rat, hgt, wid;
44+ spell_type typ, rat, hgt, wid;
4545 if (4 != sscanf(buf + 2, "%d:%d:%d:%d", &typ, &rat, &hgt, &wid))
4646 return 1;
4747
--- a/src/mind/mind-ninja.c
+++ b/src/mind/mind-ninja.c
@@ -447,7 +447,7 @@ bool cast_ninja_spell(player_type *caster_ptr, mind_ninja_type spell)
447447 case PURGATORY_FLAME: {
448448 int num = damroll(3, 9);
449449 for (int k = 0; k < num; k++) {
450- EFFECT_ID typ = one_in_(2) ? GF_FIRE : one_in_(3) ? GF_NETHER : GF_PLASMA;
450+ spell_type typ = one_in_(2) ? GF_FIRE : one_in_(3) ? GF_NETHER : GF_PLASMA;
451451 int attempts = 1000;
452452 while (attempts--) {
453453 scatter(caster_ptr, &y, &x, caster_ptr->y, caster_ptr->x, 4, PROJECT_NONE);
--- a/src/monster-floor/monster-death.c
+++ b/src/monster-floor/monster-death.c
@@ -63,7 +63,7 @@ static void on_dead_explosion(player_type *player_ptr, monster_death_type *md_pt
6363 continue;
6464
6565 BIT_FLAGS flg = PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL;
66- EFFECT_ID typ = mbe_info[md_ptr->r_ptr->blow[i].effect].explode_type;
66+ spell_type typ = mbe_info[md_ptr->r_ptr->blow[i].effect].explode_type;
6767 DICE_NUMBER d_dice = md_ptr->r_ptr->blow[i].d_dice;
6868 DICE_SID d_side = md_ptr->r_ptr->blow[i].d_side;
6969 HIT_POINT damage = damroll(d_dice, d_side);
--- a/src/mspell/mspell-checker.c
+++ b/src/mspell/mspell-checker.c
@@ -188,7 +188,7 @@ bool clean_shot(player_type *target_ptr, POSITION y1, POSITION x1, POSITION y2,
188188 * @param target_type モンスターからモンスターへ撃つならMONSTER_TO_MONSTER、モンスターからプレイヤーならMONSTER_TO_PLAYER
189189 * @return なし
190190 */
191-void bolt(player_type *target_ptr, MONSTER_IDX m_idx, POSITION y, POSITION x, EFFECT_ID typ, int dam_hp, int monspell, int target_type)
191+void bolt(player_type *target_ptr, MONSTER_IDX m_idx, POSITION y, POSITION x, spell_type typ, int dam_hp, int monspell, int target_type)
192192 {
193193 BIT_FLAGS flg = 0;
194194 switch (target_type) {
@@ -219,7 +219,7 @@ void bolt(player_type *target_ptr, MONSTER_IDX m_idx, POSITION y, POSITION x, EF
219219 * @param target_type モンスターからモンスターへ撃つならMONSTER_TO_MONSTER、モンスターからプレイヤーならMONSTER_TO_PLAYER
220220 * @return なし
221221 */
222-void beam(player_type *target_ptr, MONSTER_IDX m_idx, POSITION y, POSITION x, EFFECT_ID typ, int dam_hp, int monspell, int target_type)
222+void beam(player_type *target_ptr, MONSTER_IDX m_idx, POSITION y, POSITION x, spell_type typ, int dam_hp, int monspell, int target_type)
223223 {
224224 BIT_FLAGS flg = 0;
225225 switch (target_type) {
@@ -251,7 +251,7 @@ void beam(player_type *target_ptr, MONSTER_IDX m_idx, POSITION y, POSITION x, EF
251251 * @return なし
252252 */
253253 void breath(
254- player_type *target_ptr, POSITION y, POSITION x, MONSTER_IDX m_idx, EFFECT_ID typ, int dam_hp, POSITION rad, bool breath, int monspell, int target_type)
254+ player_type *target_ptr, POSITION y, POSITION x, MONSTER_IDX m_idx, spell_type typ, int dam_hp, POSITION rad, bool breath, int monspell, int target_type)
255255 {
256256 monster_type *m_ptr = &target_ptr->current_floor_ptr->m_list[m_idx];
257257 monster_race *r_ptr = &r_info[m_ptr->r_idx];
--- a/src/mspell/mspell-checker.h
+++ b/src/mspell/mspell-checker.h
@@ -7,7 +7,7 @@ bool clean_shot(player_type *target_ptr, POSITION y1, POSITION x1, POSITION y2,
77 bool summon_possible(player_type *target_ptr, POSITION y1, POSITION x1);
88 bool raise_possible(player_type *target_ptr, monster_type *m_ptr);
99 bool spell_is_inate(SPELL_IDX spell);
10-void beam(player_type *target_ptr, MONSTER_IDX m_idx, POSITION y, POSITION x, EFFECT_ID typ, int dam_hp, int monspell, int target_type);
11-void bolt(player_type *target_ptr, MONSTER_IDX m_idx, POSITION y, POSITION x, EFFECT_ID typ, int dam_hp, int monspell, int target_type);
10+void beam(player_type *target_ptr, MONSTER_IDX m_idx, POSITION y, POSITION x, spell_type typ, int dam_hp, int monspell, int target_type);
11+void bolt(player_type *target_ptr, MONSTER_IDX m_idx, POSITION y, POSITION x, spell_type typ, int dam_hp, int monspell, int target_type);
1212 void breath(
13- player_type *target_ptr, POSITION y, POSITION x, MONSTER_IDX m_idx, EFFECT_ID typ, int dam_hp, POSITION rad, bool breath, int monspell, int target_type);
13+ player_type *target_ptr, POSITION y, POSITION x, MONSTER_IDX m_idx, spell_type typ, int dam_hp, POSITION rad, bool breath, int monspell, int target_type);
--- a/src/mspell/mspell-judgement.c
+++ b/src/mspell/mspell-judgement.c
@@ -84,7 +84,7 @@ bool direct_beam(player_type *target_ptr, POSITION y1, POSITION x1, POSITION y2,
8484 * @param is_friend TRUEならば、プレイヤーを巻き込む時にブレスの判定をFALSEにする。
8585 * @return ブレスを直接当てられるならばTRUEを返す
8686 */
87-bool breath_direct(player_type *master_ptr, POSITION y1, POSITION x1, POSITION y2, POSITION x2, POSITION rad, EFFECT_ID typ, bool is_friend)
87+bool breath_direct(player_type *master_ptr, POSITION y1, POSITION x1, POSITION y2, POSITION x2, POSITION rad, spell_type typ, bool is_friend)
8888 {
8989 BIT_FLAGS flg;
9090 switch (typ) {
--- a/src/mspell/mspell-judgement.h
+++ b/src/mspell/mspell-judgement.h
@@ -4,7 +4,7 @@
44
55 typedef struct monster_type monster_type;
66 bool direct_beam(player_type *target_ptr, POSITION y1, POSITION x1, POSITION y2, POSITION x2, monster_type *m_ptr);
7-bool breath_direct(player_type *master_ptr, POSITION y1, POSITION x1, POSITION y2, POSITION x2, POSITION rad, EFFECT_ID typ, bool is_friend);
7+bool breath_direct(player_type *master_ptr, POSITION y1, POSITION x1, POSITION y2, POSITION x2, POSITION rad, spell_type typ, bool is_friend);
88 void get_project_point(player_type *target_ptr, POSITION sy, POSITION sx, POSITION *ty, POSITION *tx, BIT_FLAGS flg);
99 bool dispel_check_monster(player_type *target_ptr, MONSTER_IDX m_idx, MONSTER_IDX t_idx);
1010 bool dispel_check(player_type *creature_ptr, MONSTER_IDX m_idx);
--- a/src/object/warning.c
+++ b/src/object/warning.c
@@ -79,7 +79,7 @@ object_type *choose_warning_item(player_type *creature_ptr)
7979 * @param max 算出した最大ダメージを返すポインタ
8080 * @return なし
8181 */
82-static void spell_damcalc(player_type *target_ptr, monster_type *m_ptr, EFFECT_ID typ, HIT_POINT dam, int *max)
82+static void spell_damcalc(player_type *target_ptr, monster_type *m_ptr, spell_type typ, HIT_POINT dam, int *max)
8383 {
8484 monster_race *r_ptr = &r_info[m_ptr->r_idx];
8585 int rlev = r_ptr->level;
@@ -192,27 +192,8 @@ static void spell_damcalc(player_type *target_ptr, monster_type *m_ptr, EFFECT_I
192192 break;
193193
194194 case GF_DEATH_RAY:
195- if (target_ptr->mimic_form) {
196- if (mimic_info[target_ptr->mimic_form].MIMIC_FLAGS & MIMIC_IS_NONLIVING) {
197- dam = 0;
198- ignore_wraith_form = TRUE;
199- }
200-
201- break;
202- }
203-
204- switch (target_ptr->prace) {
205- case RACE_GOLEM:
206- case RACE_SKELETON:
207- case RACE_ZOMBIE:
208- case RACE_VAMPIRE:
209- case RACE_BALROG:
210- case RACE_SPECTRE:
211- dam = 0;
212- ignore_wraith_form = TRUE;
213- break;
214- }
215-
195+ dam = dam * calc_deathray_damage_rate(target_ptr, CALC_MAX) / 100;
196+ if (dam == 0) ignore_wraith_form = TRUE;
216197 break;
217198
218199 case GF_HOLY_FIRE:
@@ -271,7 +252,7 @@ static void spell_damcalc(player_type *target_ptr, monster_type *m_ptr, EFFECT_I
271252 * @param max 算出した最大ダメージを返すポインタ
272253 * @return なし
273254 */
274-void spell_damcalc_by_spellnum(player_type *creature_ptr, monster_spell_type ms_type, EFFECT_ID typ, MONSTER_IDX m_idx, int *max)
255+void spell_damcalc_by_spellnum(player_type *creature_ptr, monster_spell_type ms_type, spell_type typ, MONSTER_IDX m_idx, int *max)
275256 {
276257 monster_type *m_ptr = &creature_ptr->current_floor_ptr->m_list[m_idx];
277258 HIT_POINT dam = monspell_damage(creature_ptr, ms_type, m_idx, DAM_MAX);
--- a/src/player/player-status-resist.c
+++ b/src/player/player-status-resist.c
@@ -1,4 +1,5 @@
11 #include "player/player-status-resist.h"
2+#include "player/mimic-info-table.h"
23 #include "art-definition/art-sword-types.h"
34 #include "grid/grid.h"
45 #include "inventory/inventory-slot-types.h"
@@ -178,6 +179,29 @@ PERCENTAGE calc_nuke_damage_rate(player_type *creature_ptr)
178179 return per;
179180 }
180181
182+PERCENTAGE calc_deathray_damage_rate(player_type *creature_ptr, rate_calc_type_mode mode)
183+{
184+ (mode); // unused
185+ if (creature_ptr->mimic_form) {
186+ if (mimic_info[creature_ptr->mimic_form].MIMIC_FLAGS & MIMIC_IS_NONLIVING) {
187+ return 0;
188+ }
189+ }
190+
191+ switch (creature_ptr->prace) {
192+ case RACE_GOLEM:
193+ case RACE_SKELETON:
194+ case RACE_ZOMBIE:
195+ case RACE_VAMPIRE:
196+ case RACE_BALROG:
197+ case RACE_SPECTRE:
198+ return 0;
199+ break;
200+ }
201+
202+ return 100;
203+}
204+
181205 PERCENTAGE calc_lite_damage_rate(player_type *creature_ptr, rate_calc_type_mode mode)
182206 {
183207 PERCENTAGE per = 100;
--- a/src/player/player-status-resist.h
+++ b/src/player/player-status-resist.h
@@ -28,6 +28,7 @@ PERCENTAGE calc_disenchant_damage_rate(player_type *creature_ptr, rate_calc_type
2828 PERCENTAGE calc_nexus_damage_rate(player_type *creature_ptr, rate_calc_type_mode mode);
2929 PERCENTAGE calc_time_damage_rate(player_type *creature_ptr, rate_calc_type_mode mode);
3030 PERCENTAGE calc_rocket_damage_rate(player_type *creature_ptr, rate_calc_type_mode mode);
31+PERCENTAGE calc_deathray_damage_rate(player_type *creature_ptr, rate_calc_type_mode mode);
3132 PERCENTAGE calc_holy_fire_damage_rate(player_type *creature_ptr, rate_calc_type_mode mode);
3233 PERCENTAGE calc_hell_fire_damage_rate(player_type *creature_ptr, rate_calc_type_mode mode);
3334 PERCENTAGE calc_gravity_damage_rate(player_type *creature_ptr, rate_calc_type_mode mode);
--- a/src/room/room-generator.c
+++ b/src/room/room-generator.c
@@ -25,7 +25,7 @@
2525 * @note that we restrict the number of "crowded" rooms to reduce the chance of overflowing the monster list during level creation.
2626 * @return 部屋の生成に成功した場合 TRUE を返す。
2727 */
28-static bool room_build(player_type *player_ptr, dun_data_type *dd_ptr, EFFECT_ID typ)
28+static bool room_build(player_type *player_ptr, dun_data_type *dd_ptr, spell_type typ)
2929 {
3030 switch (typ) {
3131 case ROOM_T_NORMAL:
--- a/src/spell-kind/spells-launcher.c
+++ b/src/spell-kind/spells-launcher.c
@@ -20,7 +20,7 @@
2020 * Affect grids, objects, and monsters
2121 * </pre>
2222 */
23-bool fire_ball(player_type *caster_ptr, EFFECT_ID typ, DIRECTION dir, HIT_POINT dam, POSITION rad)
23+bool fire_ball(player_type *caster_ptr, spell_type typ, DIRECTION dir, HIT_POINT dam, POSITION rad)
2424 {
2525 BIT_FLAGS flg = PROJECT_STOP | PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL;
2626 if (typ == GF_CHARM_LIVING)
@@ -53,7 +53,7 @@ bool fire_ball(player_type *caster_ptr, EFFECT_ID typ, DIRECTION dir, HIT_POINT
5353 * Affect grids, objects, and monsters
5454 * </pre>
5555 */
56-bool fire_breath(player_type *caster_ptr, EFFECT_ID typ, DIRECTION dir, HIT_POINT dam, POSITION rad) { return fire_ball(caster_ptr, typ, dir, dam, -rad); }
56+bool fire_breath(player_type *caster_ptr, spell_type typ, DIRECTION dir, HIT_POINT dam, POSITION rad) { return fire_ball(caster_ptr, typ, dir, dam, -rad); }
5757
5858 /*!
5959 * @brief ロケット系スペルの発動(詳細な差は確認中) / Cast a ball spell
@@ -70,7 +70,7 @@ bool fire_breath(player_type *caster_ptr, EFFECT_ID typ, DIRECTION dir, HIT_POIN
7070 * Affect grids, objects, and monsters
7171 * </pre>
7272 */
73-bool fire_rocket(player_type *caster_ptr, EFFECT_ID typ, DIRECTION dir, HIT_POINT dam, POSITION rad)
73+bool fire_rocket(player_type *caster_ptr, spell_type typ, DIRECTION dir, HIT_POINT dam, POSITION rad)
7474 {
7575 POSITION tx = caster_ptr->x + 99 * ddx[dir];
7676 POSITION ty = caster_ptr->y + 99 * ddy[dir];
@@ -98,7 +98,7 @@ bool fire_rocket(player_type *caster_ptr, EFFECT_ID typ, DIRECTION dir, HIT_POIN
9898 * Affect grids, objects, and monsters
9999 * </pre>
100100 */
101-bool fire_ball_hide(player_type *caster_ptr, EFFECT_ID typ, DIRECTION dir, HIT_POINT dam, POSITION rad)
101+bool fire_ball_hide(player_type *caster_ptr, spell_type typ, DIRECTION dir, HIT_POINT dam, POSITION rad)
102102 {
103103 POSITION tx = caster_ptr->x + 99 * ddx[dir];
104104 POSITION ty = caster_ptr->y + 99 * ddy[dir];
@@ -131,7 +131,7 @@ bool fire_ball_hide(player_type *caster_ptr, EFFECT_ID typ, DIRECTION dir, HIT_P
131131 * Option to hurt the player.
132132 * </pre>
133133 */
134-bool fire_meteor(player_type *caster_ptr, MONSTER_IDX who, EFFECT_ID typ, POSITION y, POSITION x, HIT_POINT dam, POSITION rad)
134+bool fire_meteor(player_type *caster_ptr, MONSTER_IDX who, spell_type typ, POSITION y, POSITION x, HIT_POINT dam, POSITION rad)
135135 {
136136 BIT_FLAGS flg = PROJECT_STOP | PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL;
137137 return (project(caster_ptr, who, rad, y, x, dam, typ, flg, -1));
@@ -148,7 +148,7 @@ bool fire_meteor(player_type *caster_ptr, MONSTER_IDX who, EFFECT_ID typ, POSITI
148148 * @param dev 回数分散
149149 * @return 作用が実際にあった場合TRUEを返す
150150 */
151-bool fire_blast(player_type *caster_ptr, EFFECT_ID typ, DIRECTION dir, DICE_NUMBER dd, DICE_SID ds, int num, int dev)
151+bool fire_blast(player_type *caster_ptr, spell_type typ, DIRECTION dir, DICE_NUMBER dd, DICE_SID ds, int num, int dev)
152152 {
153153 POSITION ty, tx, y, x;
154154 POSITION ly, lx;
@@ -198,7 +198,7 @@ bool fire_blast(player_type *caster_ptr, EFFECT_ID typ, DIRECTION dir, DICE_NUMB
198198 * Affect monsters and grids (not objects).
199199 * </pre>
200200 */
201-bool fire_bolt(player_type *caster_ptr, EFFECT_ID typ, DIRECTION dir, HIT_POINT dam)
201+bool fire_bolt(player_type *caster_ptr, spell_type typ, DIRECTION dir, HIT_POINT dam)
202202 {
203203 BIT_FLAGS flg = PROJECT_STOP | PROJECT_KILL | PROJECT_GRID;
204204 if (typ != GF_ARROW)
@@ -219,7 +219,7 @@ bool fire_bolt(player_type *caster_ptr, EFFECT_ID typ, DIRECTION dir, HIT_POINT
219219 * Affect monsters, grids and objects.
220220 * </pre>
221221 */
222-bool fire_beam(player_type *caster_ptr, EFFECT_ID typ, DIRECTION dir, HIT_POINT dam)
222+bool fire_beam(player_type *caster_ptr, spell_type typ, DIRECTION dir, HIT_POINT dam)
223223 {
224224 BIT_FLAGS flg = PROJECT_BEAM | PROJECT_KILL | PROJECT_GRID | PROJECT_ITEM;
225225 return (project_hook(caster_ptr, typ, dir, dam, flg));
@@ -239,7 +239,7 @@ bool fire_beam(player_type *caster_ptr, EFFECT_ID typ, DIRECTION dir, HIT_POINT
239239 * Affect monsters, grids and objects.
240240 * </pre>
241241 */
242-bool fire_bolt_or_beam(player_type *caster_ptr, PERCENTAGE prob, EFFECT_ID typ, DIRECTION dir, HIT_POINT dam)
242+bool fire_bolt_or_beam(player_type *caster_ptr, PERCENTAGE prob, spell_type typ, DIRECTION dir, HIT_POINT dam)
243243 {
244244 if (randint0(100) < prob) {
245245 return (fire_beam(caster_ptr, typ, dir, dam));
@@ -257,7 +257,7 @@ bool fire_bolt_or_beam(player_type *caster_ptr, PERCENTAGE prob, EFFECT_ID typ,
257257 * @param flg フラグ
258258 * @return 作用が実際にあった場合TRUEを返す
259259 */
260-bool project_hook(player_type *caster_ptr, EFFECT_ID typ, DIRECTION dir, HIT_POINT dam, BIT_FLAGS flg)
260+bool project_hook(player_type *caster_ptr, spell_type typ, DIRECTION dir, HIT_POINT dam, BIT_FLAGS flg)
261261 {
262262 flg |= (PROJECT_THRU);
263263 POSITION tx = caster_ptr->x + ddx[dir];
--- a/src/spell-kind/spells-launcher.h
+++ b/src/spell-kind/spells-launcher.h
@@ -2,13 +2,13 @@
22
33 #include "system/angband.h"
44
5-bool fire_ball(player_type *caster_ptr, EFFECT_ID typ, DIRECTION dir, HIT_POINT dam, POSITION rad);
6-bool fire_breath(player_type *caster_ptr, EFFECT_ID typ, DIRECTION dir, HIT_POINT dam, POSITION rad);
7-bool fire_rocket(player_type *caster_ptr, EFFECT_ID typ, DIRECTION dir, HIT_POINT dam, POSITION rad);
8-bool fire_ball_hide(player_type *caster_ptr, EFFECT_ID typ, DIRECTION dir, HIT_POINT dam, POSITION rad);
9-bool fire_meteor(player_type *caster_ptr, MONSTER_IDX who, EFFECT_ID typ, POSITION x, POSITION y, HIT_POINT dam, POSITION rad);
10-bool fire_bolt(player_type *caster_ptr, EFFECT_ID typ, DIRECTION dir, HIT_POINT dam);
11-bool fire_blast(player_type *caster_ptr, EFFECT_ID typ, DIRECTION dir, DICE_NUMBER dd, DICE_SID ds, int num, int dev);
12-bool fire_beam(player_type *caster_ptr, EFFECT_ID typ, DIRECTION dir, HIT_POINT dam);
13-bool fire_bolt_or_beam(player_type *caster_ptr, PERCENTAGE prob, EFFECT_ID typ, DIRECTION dir, HIT_POINT dam);
14-bool project_hook(player_type *caster_ptr, EFFECT_ID typ, DIRECTION dir, HIT_POINT dam, BIT_FLAGS flg);
5+bool fire_ball(player_type *caster_ptr, spell_type typ, DIRECTION dir, HIT_POINT dam, POSITION rad);
6+bool fire_breath(player_type *caster_ptr, spell_type typ, DIRECTION dir, HIT_POINT dam, POSITION rad);
7+bool fire_rocket(player_type *caster_ptr, spell_type typ, DIRECTION dir, HIT_POINT dam, POSITION rad);
8+bool fire_ball_hide(player_type *caster_ptr, spell_type typ, DIRECTION dir, HIT_POINT dam, POSITION rad);
9+bool fire_meteor(player_type *caster_ptr, MONSTER_IDX who, spell_type typ, POSITION x, POSITION y, HIT_POINT dam, POSITION rad);
10+bool fire_bolt(player_type *caster_ptr, spell_type typ, DIRECTION dir, HIT_POINT dam);
11+bool fire_blast(player_type *caster_ptr, spell_type typ, DIRECTION dir, DICE_NUMBER dd, DICE_SID ds, int num, int dev);
12+bool fire_beam(player_type *caster_ptr, spell_type typ, DIRECTION dir, HIT_POINT dam);
13+bool fire_bolt_or_beam(player_type *caster_ptr, PERCENTAGE prob, spell_type typ, DIRECTION dir, HIT_POINT dam);
14+bool project_hook(player_type *caster_ptr, spell_type typ, DIRECTION dir, HIT_POINT dam, BIT_FLAGS flg);
--- a/src/spell-kind/spells-sight.c
+++ b/src/spell-kind/spells-sight.c
@@ -40,7 +40,7 @@
4040 * this is done in two passes. -- JDL
4141 * </pre>
4242 */
43-bool project_all_los(player_type *caster_ptr, EFFECT_ID typ, HIT_POINT dam)
43+bool project_all_los(player_type *caster_ptr, spell_type typ, HIT_POINT dam)
4444 {
4545 for (MONSTER_IDX i = 1; i < caster_ptr->current_floor_ptr->m_max; i++) {
4646 monster_type *m_ptr = &caster_ptr->current_floor_ptr->m_list[i];
--- a/src/spell-kind/spells-sight.h
+++ b/src/spell-kind/spells-sight.h
@@ -2,7 +2,7 @@
22
33 #include "system/angband.h"
44
5-bool project_all_los(player_type *caster_ptr, EFFECT_ID typ, HIT_POINT dam);
5+bool project_all_los(player_type *caster_ptr, spell_type typ, HIT_POINT dam);
66 bool speed_monsters(player_type *caster_ptr);
77 bool slow_monsters(player_type *caster_ptr, int power);
88 bool sleep_monsters(player_type *caster_ptr, int power);
--- a/src/spell/range-calc.c
+++ b/src/spell/range-calc.c
@@ -208,7 +208,7 @@ bool in_disintegration_range(floor_type *floor_ptr, POSITION y1, POSITION x1, PO
208208 /*
209209 * breath shape
210210 */
211-void breath_shape(player_type *caster_ptr, u16b *path_g, int dist, int *pgrids, POSITION *gx, POSITION *gy, POSITION *gm, POSITION *pgm_rad, POSITION rad, POSITION y1, POSITION x1, POSITION y2, POSITION x2, EFFECT_ID typ)
211+void breath_shape(player_type *caster_ptr, u16b *path_g, int dist, int *pgrids, POSITION *gx, POSITION *gy, POSITION *gm, POSITION *pgm_rad, POSITION rad, POSITION y1, POSITION x1, POSITION y2, POSITION x2, spell_type typ)
212212 {
213213 POSITION by = y1;
214214 POSITION bx = x1;
--- a/src/spell/range-calc.h
+++ b/src/spell/range-calc.h
@@ -3,5 +3,5 @@
33 #include "system/angband.h"
44
55 bool in_disintegration_range(floor_type *floor_ptr, POSITION y1, POSITION x1, POSITION y2, POSITION x2);
6-void breath_shape(player_type *caster_ptr, u16b *path_g, int dist, int *pgrids, POSITION *gx, POSITION *gy, POSITION *gm, POSITION *pgm_rad, POSITION rad, POSITION y1, POSITION x1, POSITION y2, POSITION x2, EFFECT_ID typ);
6+void breath_shape(player_type *caster_ptr, u16b *path_g, int dist, int *pgrids, POSITION *gx, POSITION *gy, POSITION *gm, POSITION *pgm_rad, POSITION rad, POSITION y1, POSITION x1, POSITION y2, POSITION x2, spell_type typ);
77 POSITION dist_to_line(POSITION y, POSITION x, POSITION y1, POSITION x1, POSITION y2, POSITION x2);
--- a/src/system/h-type.h
+++ b/src/system/h-type.h
@@ -218,8 +218,6 @@ typedef byte FEAT_POWER; /*!< 地形強度の型定義 */
218218
219219 typedef int QUANTITY; /*!< インターフェース上の指定個数 */
220220
221-typedef int EFFECT_ID; /*!< 効果属性ID */
222-
223221 typedef s16b QUEST_TYPE; /*!< クエストの種別ID */
224222 typedef s16b QUEST_STATUS; /*!< クエストの状態ID */
225223
--- a/src/term/gameterm.c
+++ b/src/term/gameterm.c
@@ -415,7 +415,7 @@ static TERM_COLOR mh_attr(int max)
415415 * @param type 魔法属性
416416 * @return 対応する色ID
417417 */
418-static TERM_COLOR spell_color(EFFECT_ID type)
418+static TERM_COLOR spell_color(spell_type type)
419419 {
420420 /* Check if A.B.'s new graphics should be used (rr9) */
421421 if (streq(ANGBAND_GRAF, "new") || streq(ANGBAND_GRAF, "ne2"))
@@ -525,7 +525,7 @@ static TERM_COLOR spell_color(EFFECT_ID type)
525525 * If the distance is not "one", we (may) return "*".
526526 * </pre>
527527 */
528-u16b bolt_pict(POSITION y, POSITION x, POSITION ny, POSITION nx, EFFECT_ID typ)
528+u16b bolt_pict(POSITION y, POSITION x, POSITION ny, POSITION nx, spell_type typ)
529529 {
530530 int base;
531531
--- a/src/term/gameterm.h
+++ b/src/term/gameterm.h
@@ -31,4 +31,4 @@ extern byte angband_color_table[256][4];
3131 extern TERM_COLOR gf_color[MAX_GF];
3232 extern TERM_COLOR color_char_to_attr(SYMBOL_CODE c);
3333
34-u16b bolt_pict(POSITION y, POSITION x, POSITION ny, POSITION nx, EFFECT_ID typ);
34+u16b bolt_pict(POSITION y, POSITION x, POSITION ny, POSITION nx, spell_type typ);
Show on old repository browser