OSDN Git Service

Merge remote-tracking branch 'remotes/hengbandosx/english-mind-edits' into feature...
[hengband/hengband.git] / src / effect / effect-monster-resist-hurt.c
1 #include "effect/effect-monster-resist-hurt.h"
2 #include "effect/effect-monster-util.h"
3 #include "monster-race/monster-race.h"
4 #include "monster-race/race-flags-resistance.h"
5 #include "monster-race/race-flags1.h"
6 #include "monster-race/race-flags3.h"
7 #include "monster-race/race-indice-types.h"
8 #include "monster/monster-info.h"
9 #include "monster/monster-status-setter.h"
10 #include "monster/monster-status.h"
11
12 process_result effect_monster_void(effect_monster_type *em_ptr)
13 {
14     if (em_ptr->seen)
15         em_ptr->obvious = TRUE;
16
17     return PROCESS_CONTINUE;
18 }
19
20 process_result effect_monster_acid(player_type *caster_ptr, effect_monster_type *em_ptr)
21 {
22     if (em_ptr->seen)
23         em_ptr->obvious = TRUE;
24
25     if ((em_ptr->r_ptr->flagsr & RFR_IM_ACID) == 0)
26         return PROCESS_CONTINUE;
27
28     em_ptr->note = _("にはかなり耐性がある!", " resists a lot.");
29     em_ptr->dam /= 9;
30     if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
31         em_ptr->r_ptr->r_flagsr |= (RFR_IM_ACID);
32
33     return PROCESS_CONTINUE;
34 }
35
36 process_result effect_monster_elec(player_type *caster_ptr, effect_monster_type *em_ptr)
37 {
38     if (em_ptr->seen)
39         em_ptr->obvious = TRUE;
40
41     if ((em_ptr->r_ptr->flagsr & RFR_IM_ELEC) == 0)
42         return PROCESS_CONTINUE;
43
44     em_ptr->note = _("にはかなり耐性がある!", " resists a lot.");
45     em_ptr->dam /= 9;
46     if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
47         em_ptr->r_ptr->r_flagsr |= (RFR_IM_ELEC);
48
49     return PROCESS_CONTINUE;
50 }
51
52 process_result effect_monster_fire(player_type *caster_ptr, effect_monster_type *em_ptr)
53 {
54     if (em_ptr->seen)
55         em_ptr->obvious = TRUE;
56
57     if (em_ptr->r_ptr->flagsr & RFR_IM_FIRE) {
58         em_ptr->note = _("にはかなり耐性がある!", " resists a lot.");
59         em_ptr->dam /= 9;
60         if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
61             em_ptr->r_ptr->r_flagsr |= (RFR_IM_FIRE);
62
63         return PROCESS_CONTINUE;
64     }
65
66     if ((em_ptr->r_ptr->flags3 & (RF3_HURT_FIRE)) == 0)
67         return PROCESS_CONTINUE;
68
69     em_ptr->note = _("はひどい痛手をうけた。", " is hit hard.");
70     em_ptr->dam *= 2;
71     if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
72         em_ptr->r_ptr->r_flags3 |= (RF3_HURT_FIRE);
73
74     return PROCESS_CONTINUE;
75 }
76
77 process_result effect_monster_cold(player_type *caster_ptr, effect_monster_type *em_ptr)
78 {
79     if (em_ptr->seen)
80         em_ptr->obvious = TRUE;
81
82     if (em_ptr->r_ptr->flagsr & RFR_IM_COLD) {
83         em_ptr->note = _("にはかなり耐性がある!", " resists a lot.");
84         em_ptr->dam /= 9;
85         if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
86             em_ptr->r_ptr->r_flagsr |= (RFR_IM_COLD);
87
88         return PROCESS_CONTINUE;
89     }
90
91     if ((em_ptr->r_ptr->flags3 & (RF3_HURT_COLD)) == 0)
92         return PROCESS_CONTINUE;
93
94     em_ptr->note = _("はひどい痛手をうけた。", " is hit hard.");
95     em_ptr->dam *= 2;
96     if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
97         em_ptr->r_ptr->r_flags3 |= (RF3_HURT_COLD);
98
99     return PROCESS_CONTINUE;
100 }
101
102 process_result effect_monster_pois(player_type *caster_ptr, effect_monster_type *em_ptr)
103 {
104     if (em_ptr->seen)
105         em_ptr->obvious = TRUE;
106
107     if ((em_ptr->r_ptr->flagsr & RFR_IM_POIS) == 0)
108         return PROCESS_CONTINUE;
109
110     em_ptr->note = _("にはかなり耐性がある!", " resists a lot.");
111     em_ptr->dam /= 9;
112     if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
113         em_ptr->r_ptr->r_flagsr |= (RFR_IM_POIS);
114
115     return PROCESS_CONTINUE;
116 }
117
118 process_result effect_monster_nuke(player_type *caster_ptr, effect_monster_type *em_ptr)
119 {
120     if (em_ptr->seen)
121         em_ptr->obvious = TRUE;
122
123     if (em_ptr->r_ptr->flagsr & RFR_IM_POIS) {
124         em_ptr->note = _("には耐性がある。", " resists.");
125         em_ptr->dam *= 3;
126         em_ptr->dam /= randint1(6) + 6;
127         if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
128             em_ptr->r_ptr->r_flagsr |= (RFR_IM_POIS);
129
130         return PROCESS_CONTINUE;
131     }
132
133     if (one_in_(3))
134         em_ptr->do_polymorph = TRUE;
135
136     return PROCESS_CONTINUE;
137 }
138
139 process_result effect_monster_hell_fire(player_type *caster_ptr, effect_monster_type *em_ptr)
140 {
141     if (em_ptr->seen)
142         em_ptr->obvious = TRUE;
143
144     if ((em_ptr->r_ptr->flags3 & RF3_GOOD) == 0)
145         return PROCESS_CONTINUE;
146
147     em_ptr->note = _("はひどい痛手をうけた。", " is hit hard.");
148     em_ptr->dam *= 2;
149     if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
150         em_ptr->r_ptr->r_flags3 |= RF3_GOOD;
151
152     return PROCESS_CONTINUE;
153 }
154
155 process_result effect_monster_holy_fire(player_type *caster_ptr, effect_monster_type *em_ptr)
156 {
157     if (em_ptr->seen)
158         em_ptr->obvious = TRUE;
159
160     if ((em_ptr->r_ptr->flags3 & RF3_EVIL) == 0) {
161         em_ptr->note = _("には耐性がある。", " resists.");
162         em_ptr->dam *= 3;
163         em_ptr->dam /= randint1(6) + 6;
164         return PROCESS_CONTINUE;
165     }
166
167     em_ptr->dam *= 2;
168     em_ptr->note = _("はひどい痛手をうけた。", " is hit hard.");
169     if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
170         em_ptr->r_ptr->r_flags3 |= RF3_EVIL;
171
172     return PROCESS_CONTINUE;
173 }
174
175 process_result effect_monster_plasma(player_type *caster_ptr, effect_monster_type *em_ptr)
176 {
177     if (em_ptr->seen)
178         em_ptr->obvious = TRUE;
179
180     if ((em_ptr->r_ptr->flagsr & RFR_RES_PLAS) == 0)
181         return PROCESS_CONTINUE;
182
183     em_ptr->note = _("には耐性がある。", " resists.");
184     em_ptr->dam *= 3;
185     em_ptr->dam /= randint1(6) + 6;
186     if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
187         em_ptr->r_ptr->r_flagsr |= (RFR_RES_PLAS);
188
189     return PROCESS_CONTINUE;
190 }
191
192 static bool effect_monster_nether_resist(player_type *caster_ptr, effect_monster_type *em_ptr)
193 {
194     if ((em_ptr->r_ptr->flagsr & RFR_RES_NETH) == 0)
195         return FALSE;
196
197     if (em_ptr->r_ptr->flags3 & RF3_UNDEAD) {
198         em_ptr->note = _("には完全な耐性がある!", " is immune.");
199         em_ptr->dam = 0;
200         if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
201             em_ptr->r_ptr->r_flags3 |= (RF3_UNDEAD);
202     } else {
203         em_ptr->note = _("には耐性がある。", " resists.");
204         em_ptr->dam *= 3;
205         em_ptr->dam /= randint1(6) + 6;
206     }
207
208     if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
209         em_ptr->r_ptr->r_flagsr |= (RFR_RES_NETH);
210
211     return TRUE;
212 }
213
214 process_result effect_monster_nether(player_type *caster_ptr, effect_monster_type *em_ptr)
215 {
216     if (em_ptr->seen)
217         em_ptr->obvious = TRUE;
218
219     if (effect_monster_nether_resist(caster_ptr, em_ptr) || ((em_ptr->r_ptr->flags3 & RF3_EVIL) == 0))
220         return PROCESS_CONTINUE;
221
222     em_ptr->note = _("はいくらか耐性を示した。", " resists somewhat.");
223     em_ptr->dam /= 2;
224     if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
225         em_ptr->r_ptr->r_flags3 |= (RF3_EVIL);
226
227     return PROCESS_CONTINUE;
228 }
229
230 process_result effect_monster_water(player_type *caster_ptr, effect_monster_type *em_ptr)
231 {
232     if (em_ptr->seen)
233         em_ptr->obvious = TRUE;
234
235     if ((em_ptr->r_ptr->flagsr & RFR_RES_WATE) == 0)
236         return PROCESS_CONTINUE;
237
238     if ((em_ptr->m_ptr->r_idx == MON_WATER_ELEM) || (em_ptr->m_ptr->r_idx == MON_UNMAKER)) {
239         em_ptr->note = _("には完全な耐性がある!", " is immune.");
240         em_ptr->dam = 0;
241     } else {
242         em_ptr->note = _("には耐性がある。", " resists.");
243         em_ptr->dam *= 3;
244         em_ptr->dam /= randint1(6) + 6;
245     }
246
247     if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
248         em_ptr->r_ptr->r_flagsr |= (RFR_RES_WATE);
249
250     return PROCESS_CONTINUE;
251 }
252
253 process_result effect_monster_chaos(player_type *caster_ptr, effect_monster_type *em_ptr)
254 {
255     if (em_ptr->seen)
256         em_ptr->obvious = TRUE;
257
258     if (em_ptr->r_ptr->flagsr & RFR_RES_CHAO) {
259         em_ptr->note = _("には耐性がある。", " resists.");
260         em_ptr->dam *= 3;
261         em_ptr->dam /= randint1(6) + 6;
262         if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
263             em_ptr->r_ptr->r_flagsr |= (RFR_RES_CHAO);
264     } else if ((em_ptr->r_ptr->flags3 & RF3_DEMON) && one_in_(3)) {
265         em_ptr->note = _("はいくらか耐性を示した。", " resists somewhat.");
266         em_ptr->dam *= 3;
267         em_ptr->dam /= randint1(6) + 6;
268         if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
269             em_ptr->r_ptr->r_flags3 |= (RF3_DEMON);
270     } else {
271         em_ptr->do_polymorph = TRUE;
272         em_ptr->do_conf = (5 + randint1(11) + em_ptr->r) / (em_ptr->r + 1);
273     }
274
275     return PROCESS_CONTINUE;
276 }
277
278 process_result effect_monster_shards(player_type *caster_ptr, effect_monster_type *em_ptr)
279 {
280     if (em_ptr->seen)
281         em_ptr->obvious = TRUE;
282
283     if ((em_ptr->r_ptr->flagsr & RFR_RES_SHAR) == 0)
284         return PROCESS_CONTINUE;
285
286     em_ptr->note = _("には耐性がある。", " resists.");
287     em_ptr->dam *= 3;
288     em_ptr->dam /= randint1(6) + 6;
289     if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
290         em_ptr->r_ptr->r_flagsr |= (RFR_RES_SHAR);
291
292     return PROCESS_CONTINUE;
293 }
294
295 process_result effect_monster_rocket(player_type *caster_ptr, effect_monster_type *em_ptr)
296 {
297     if (em_ptr->seen)
298         em_ptr->obvious = TRUE;
299
300     if ((em_ptr->r_ptr->flagsr & RFR_RES_SHAR) == 0)
301         return PROCESS_CONTINUE;
302
303     em_ptr->note = _("はいくらか耐性を示した。", " resists somewhat.");
304     em_ptr->dam /= 2;
305     if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
306         em_ptr->r_ptr->r_flagsr |= (RFR_RES_SHAR);
307
308     return PROCESS_CONTINUE;
309 }
310
311 process_result effect_monster_sound(player_type *caster_ptr, effect_monster_type *em_ptr)
312 {
313     if (em_ptr->seen)
314         em_ptr->obvious = TRUE;
315
316     if ((em_ptr->r_ptr->flagsr & RFR_RES_SOUN) == 0) {
317         em_ptr->do_stun = (10 + randint1(15) + em_ptr->r) / (em_ptr->r + 1);
318         return PROCESS_CONTINUE;
319     }
320
321     em_ptr->note = _("には耐性がある。", " resists.");
322     em_ptr->dam *= 2;
323     em_ptr->dam /= randint1(6) + 6;
324     if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
325         em_ptr->r_ptr->r_flagsr |= (RFR_RES_SOUN);
326
327     return PROCESS_CONTINUE;
328 }
329
330 process_result effect_monster_confusion(player_type *caster_ptr, effect_monster_type *em_ptr)
331 {
332     if (em_ptr->seen)
333         em_ptr->obvious = TRUE;
334
335     if ((em_ptr->r_ptr->flags3 & RF3_NO_CONF) == 0) {
336         em_ptr->do_conf = (10 + randint1(15) + em_ptr->r) / (em_ptr->r + 1);
337         return PROCESS_CONTINUE;
338     }
339
340     em_ptr->note = _("には耐性がある。", " resists.");
341     em_ptr->dam *= 3;
342     em_ptr->dam /= randint1(6) + 6;
343     if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
344         em_ptr->r_ptr->r_flags3 |= (RF3_NO_CONF);
345
346     return PROCESS_CONTINUE;
347 }
348
349 process_result effect_monster_disenchant(player_type *caster_ptr, effect_monster_type *em_ptr)
350 {
351     if (em_ptr->seen)
352         em_ptr->obvious = TRUE;
353
354     if ((em_ptr->r_ptr->flagsr & RFR_RES_DISE) == 0)
355         return PROCESS_CONTINUE;
356
357     em_ptr->note = _("には耐性がある。", " resists.");
358     em_ptr->dam *= 3;
359     em_ptr->dam /= randint1(6) + 6;
360     if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
361         em_ptr->r_ptr->r_flagsr |= (RFR_RES_DISE);
362
363     return PROCESS_CONTINUE;
364 }
365
366 process_result effect_monster_nexus(player_type *caster_ptr, effect_monster_type *em_ptr)
367 {
368     if (em_ptr->seen)
369         em_ptr->obvious = TRUE;
370
371     if ((em_ptr->r_ptr->flagsr & RFR_RES_NEXU) == 0)
372         return PROCESS_CONTINUE;
373
374     em_ptr->note = _("には耐性がある。", " resists.");
375     em_ptr->dam *= 3;
376     em_ptr->dam /= randint1(6) + 6;
377     if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
378         em_ptr->r_ptr->r_flagsr |= (RFR_RES_NEXU);
379
380     return PROCESS_CONTINUE;
381 }
382
383 process_result effect_monster_force(player_type *caster_ptr, effect_monster_type *em_ptr)
384 {
385     if (em_ptr->seen)
386         em_ptr->obvious = TRUE;
387
388     if ((em_ptr->r_ptr->flagsr & RFR_RES_WALL) == 0) {
389         em_ptr->do_stun = (randint1(15) + em_ptr->r) / (em_ptr->r + 1);
390         return PROCESS_CONTINUE;
391     }
392
393     em_ptr->note = _("には耐性がある。", " resists.");
394     em_ptr->dam *= 3;
395     em_ptr->dam /= randint1(6) + 6;
396     if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
397         em_ptr->r_ptr->r_flagsr |= (RFR_RES_WALL);
398
399     return PROCESS_CONTINUE;
400 }
401
402 // Powerful monsters can resists and normal monsters slow down.
403 process_result effect_monster_inertial(player_type *caster_ptr, effect_monster_type *em_ptr)
404 {
405     if (em_ptr->seen)
406         em_ptr->obvious = TRUE;
407
408     if (em_ptr->r_ptr->flagsr & RFR_RES_INER) {
409         em_ptr->note = _("には耐性がある。", " resists.");
410         em_ptr->dam *= 3;
411         em_ptr->dam /= randint1(6) + 6;
412         if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
413             em_ptr->r_ptr->r_flagsr |= (RFR_RES_INER);
414
415         return PROCESS_CONTINUE;
416     }
417
418     if ((em_ptr->r_ptr->flags1 & (RF1_UNIQUE)) || (em_ptr->r_ptr->level > randint1((em_ptr->dam - 10) < 1 ? 1 : (em_ptr->dam - 10)) + 10)) {
419         em_ptr->obvious = FALSE;
420         return PROCESS_CONTINUE;
421     }
422
423     if (set_monster_slow(caster_ptr, em_ptr->g_ptr->m_idx, monster_slow_remaining(em_ptr->m_ptr) + 50))
424         em_ptr->note = _("の動きが遅くなった。", " starts moving slower.");
425
426     return PROCESS_CONTINUE;
427 }
428
429 process_result effect_monster_time(player_type *caster_ptr, effect_monster_type *em_ptr)
430 {
431     if (em_ptr->seen)
432         em_ptr->obvious = TRUE;
433
434     if ((em_ptr->r_ptr->flagsr & RFR_RES_TIME) == 0) {
435         em_ptr->do_time = (em_ptr->dam + 1) / 2;
436         return PROCESS_CONTINUE;
437     }
438
439     em_ptr->note = _("には耐性がある。", " resists.");
440     em_ptr->dam *= 3;
441     em_ptr->dam /= randint1(6) + 6;
442     if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
443         em_ptr->r_ptr->r_flagsr |= (RFR_RES_TIME);
444
445     return PROCESS_CONTINUE;
446 }
447
448 static bool effect_monster_gravity_resist_teleport(player_type *caster_ptr, effect_monster_type *em_ptr)
449 {
450     if (em_ptr->seen)
451         em_ptr->obvious = TRUE;
452
453     if ((em_ptr->r_ptr->flagsr & RFR_RES_TELE) == 0)
454         return FALSE;
455
456     if (em_ptr->r_ptr->flags1 & (RF1_UNIQUE)) {
457         if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
458             em_ptr->r_ptr->r_flagsr |= RFR_RES_TELE;
459
460         em_ptr->note = _("には効果がなかった。", " is unaffected!");
461         return TRUE;
462     }
463
464     if (em_ptr->r_ptr->level <= randint1(100))
465         return FALSE;
466
467     if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
468         em_ptr->r_ptr->r_flagsr |= RFR_RES_TELE;
469
470     em_ptr->note = _("には耐性がある!", " resists!");
471     return TRUE;
472 }
473
474 static void effect_monster_gravity_slow(player_type *caster_ptr, effect_monster_type *em_ptr)
475 {
476     if ((em_ptr->r_ptr->flags1 & (RF1_UNIQUE)) || (em_ptr->r_ptr->level > randint1((em_ptr->dam - 10) < 1 ? 1 : (em_ptr->dam - 10)) + 10))
477         em_ptr->obvious = FALSE;
478
479     if (set_monster_slow(caster_ptr, em_ptr->g_ptr->m_idx, monster_slow_remaining(em_ptr->m_ptr) + 50))
480         em_ptr->note = _("の動きが遅くなった。", " starts moving slower.");
481 }
482
483 static void effect_monster_gravity_stun(effect_monster_type *em_ptr)
484 {
485     em_ptr->do_stun = damroll((em_ptr->caster_lev / 20) + 3, (em_ptr->dam)) + 1;
486     if ((em_ptr->r_ptr->flags1 & (RF1_UNIQUE)) || (em_ptr->r_ptr->level > randint1((em_ptr->dam - 10) < 1 ? 1 : (em_ptr->dam - 10)) + 10)) {
487         em_ptr->do_stun = 0;
488         em_ptr->note = _("には効果がなかった。", " is unaffected!");
489         em_ptr->obvious = FALSE;
490     }
491 }
492
493 /*
494  * Powerful monsters can resist and normal monsters slow down
495  * Furthermore, this magic can make non-unique monsters slow/stun.
496  */
497 process_result effect_monster_gravity(player_type *caster_ptr, effect_monster_type *em_ptr)
498 {
499     em_ptr->do_dist = effect_monster_gravity_resist_teleport(caster_ptr, em_ptr) ? 0 : 10;
500     if (caster_ptr->riding && (em_ptr->g_ptr->m_idx == caster_ptr->riding))
501         em_ptr->do_dist = 0;
502
503     if (em_ptr->r_ptr->flagsr & RFR_RES_GRAV) {
504         em_ptr->note = _("には耐性がある!", " resists!");
505         em_ptr->dam *= 3;
506         em_ptr->dam /= randint1(6) + 6;
507         em_ptr->do_dist = 0;
508         if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
509             em_ptr->r_ptr->r_flagsr |= (RFR_RES_GRAV);
510
511         return PROCESS_CONTINUE;
512     }
513
514     effect_monster_gravity_slow(caster_ptr, em_ptr);
515     effect_monster_gravity_stun(em_ptr);
516     return PROCESS_CONTINUE;
517 }
518
519 process_result effect_monster_disintegration(player_type *caster_ptr, effect_monster_type *em_ptr)
520 {
521     if (em_ptr->seen)
522         em_ptr->obvious = TRUE;
523
524     if ((em_ptr->r_ptr->flags3 & RF3_HURT_ROCK) == 0)
525         return PROCESS_CONTINUE;
526
527     if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
528         em_ptr->r_ptr->r_flags3 |= (RF3_HURT_ROCK);
529
530     em_ptr->note = _("の皮膚がただれた!", " loses some skin!");
531     em_ptr->note_dies = _("は蒸発した!", " evaporates!");
532     em_ptr->dam *= 2;
533     return PROCESS_CONTINUE;
534 }
535
536 process_result effect_monster_icee_bolt(player_type *caster_ptr, effect_monster_type *em_ptr)
537 {
538     if (em_ptr->seen)
539         em_ptr->obvious = TRUE;
540
541     em_ptr->do_stun = (randint1(15) + 1) / (em_ptr->r + 1);
542     if (em_ptr->r_ptr->flagsr & RFR_IM_COLD) {
543         em_ptr->note = _("にはかなり耐性がある!", " resists a lot.");
544         em_ptr->dam /= 9;
545         if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
546             em_ptr->r_ptr->r_flagsr |= (RFR_IM_COLD);
547     } else if (em_ptr->r_ptr->flags3 & (RF3_HURT_COLD)) {
548         em_ptr->note = _("はひどい痛手をうけた。", " is hit hard.");
549         em_ptr->dam *= 2;
550         if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
551             em_ptr->r_ptr->r_flags3 |= (RF3_HURT_COLD);
552     }
553
554     return PROCESS_CONTINUE;
555 }