OSDN Git Service

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