2 * @brief 魔法種別による各種処理切り替え
8 #include "effect-monster-util.h"
9 #include "effect/effect-monster-switcher.h"
10 #include "player-damage.h"
13 #include "monster-spell.h"
15 #include "monster-status.h"
16 #include "effect/spells-effect-util.h"
17 #include "player-effects.h"
18 #include "spells-diceroll.h"
19 #include "monsterrace-hook.h"
20 #include "combat/melee.h"
21 #include "cmd/cmd-pet.h" // 暫定、後で消すかも.
24 * @brief 魔法の効果によって様々なメッセーを出力したり与えるダメージの増減を行ったりする
25 * @param em_ptr モンスター効果構造体への参照ポインタ
26 * @return ここのスイッチングで終るならTRUEかFALSE、後続処理を実行するならCONTINUE
28 gf_switch_result switch_effects_monster(player_type *caster_ptr, effect_monster_type *em_ptr)
30 floor_type *floor_ptr = caster_ptr->current_floor_ptr;
31 switch (em_ptr->effect_type)
35 if (em_ptr->seen) em_ptr->obvious = TRUE;
40 if (em_ptr->seen) em_ptr->obvious = TRUE;
41 if (em_ptr->r_ptr->flagsr & RFR_IM_ACID)
43 em_ptr->note = _("にはかなり耐性がある!", " resists a lot.");
45 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flagsr |= (RFR_IM_ACID);
51 if (em_ptr->seen) em_ptr->obvious = TRUE;
52 if (em_ptr->r_ptr->flagsr & RFR_IM_ELEC)
54 em_ptr->note = _("にはかなり耐性がある!", " resists a lot.");
56 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flagsr |= (RFR_IM_ELEC);
62 if (em_ptr->seen) em_ptr->obvious = TRUE;
63 if (em_ptr->r_ptr->flagsr & RFR_IM_FIRE)
65 em_ptr->note = _("にはかなり耐性がある!", " resists a lot.");
67 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flagsr |= (RFR_IM_FIRE);
69 else if (em_ptr->r_ptr->flags3 & (RF3_HURT_FIRE))
71 em_ptr->note = _("はひどい痛手をうけた。", " is hit hard.");
73 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flags3 |= (RF3_HURT_FIRE);
79 if (em_ptr->seen) em_ptr->obvious = TRUE;
80 if (em_ptr->r_ptr->flagsr & RFR_IM_COLD)
82 em_ptr->note = _("にはかなり耐性がある!", " resists a lot.");
84 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flagsr |= (RFR_IM_COLD);
86 else if (em_ptr->r_ptr->flags3 & (RF3_HURT_COLD))
88 em_ptr->note = _("はひどい痛手をうけた。", " is hit hard.");
90 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flags3 |= (RF3_HURT_COLD);
96 if (em_ptr->seen) em_ptr->obvious = TRUE;
97 if (em_ptr->r_ptr->flagsr & RFR_IM_POIS)
99 em_ptr->note = _("にはかなり耐性がある!", " resists a lot.");
101 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flagsr |= (RFR_IM_POIS);
107 if (em_ptr->seen) em_ptr->obvious = TRUE;
108 if (em_ptr->r_ptr->flagsr & RFR_IM_POIS)
110 em_ptr->note = _("には耐性がある。", " resists.");
111 em_ptr->dam *= 3; em_ptr->dam /= randint1(6) + 6;
112 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flagsr |= (RFR_IM_POIS);
114 else if (one_in_(3)) em_ptr->do_polymorph = TRUE;
119 if (em_ptr->seen) em_ptr->obvious = TRUE;
120 if (em_ptr->r_ptr->flags3 & RF3_GOOD)
122 em_ptr->note = _("はひどい痛手をうけた。", " is hit hard.");
124 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flags3 |= (RF3_GOOD);
130 if (em_ptr->seen) em_ptr->obvious = TRUE;
131 if (em_ptr->r_ptr->flags3 & RF3_EVIL)
134 em_ptr->note = _("はひどい痛手をうけた。", " is hit hard.");
135 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flags3 |= RF3_EVIL;
139 em_ptr->note = _("には耐性がある。", " resists.");
140 em_ptr->dam *= 3; em_ptr->dam /= randint1(6) + 6;
146 if (em_ptr->seen) em_ptr->obvious = TRUE;
151 if (em_ptr->seen) em_ptr->obvious = TRUE;
152 if (em_ptr->r_ptr->flagsr & RFR_RES_PLAS)
154 em_ptr->note = _("には耐性がある。", " resists.");
155 em_ptr->dam *= 3; em_ptr->dam /= randint1(6) + 6;
156 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flagsr |= (RFR_RES_PLAS);
163 if (em_ptr->seen) em_ptr->obvious = TRUE;
164 if (em_ptr->r_ptr->flagsr & RFR_RES_NETH)
166 if (em_ptr->r_ptr->flags3 & RF3_UNDEAD)
168 em_ptr->note = _("には完全な耐性がある!", " is immune.");
170 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flags3 |= (RF3_UNDEAD);
174 em_ptr->note = _("には耐性がある。", " resists.");
175 em_ptr->dam *= 3; em_ptr->dam /= randint1(6) + 6;
177 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flagsr |= (RFR_RES_NETH);
179 else if (em_ptr->r_ptr->flags3 & RF3_EVIL)
181 em_ptr->note = _("はいくらか耐性を示した。", " resists somewhat.");
183 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flags3 |= (RF3_EVIL);
190 if (em_ptr->seen) em_ptr->obvious = TRUE;
191 if (em_ptr->r_ptr->flagsr & RFR_RES_WATE)
193 if ((em_ptr->m_ptr->r_idx == MON_WATER_ELEM) || (em_ptr->m_ptr->r_idx == MON_UNMAKER))
195 em_ptr->note = _("には完全な耐性がある!", " is immune.");
200 em_ptr->note = _("には耐性がある。", " resists.");
201 em_ptr->dam *= 3; em_ptr->dam /= randint1(6) + 6;
203 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flagsr |= (RFR_RES_WATE);
210 if (em_ptr->seen) em_ptr->obvious = TRUE;
211 if (em_ptr->r_ptr->flagsr & RFR_RES_CHAO)
213 em_ptr->note = _("には耐性がある。", " resists.");
214 em_ptr->dam *= 3; em_ptr->dam /= randint1(6) + 6;
215 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flagsr |= (RFR_RES_CHAO);
217 else if ((em_ptr->r_ptr->flags3 & RF3_DEMON) && one_in_(3))
219 em_ptr->note = _("はいくらか耐性を示した。", " resists somewhat.");
220 em_ptr->dam *= 3; em_ptr->dam /= randint1(6) + 6;
221 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flags3 |= (RF3_DEMON);
225 em_ptr->do_polymorph = TRUE;
226 em_ptr->do_conf = (5 + randint1(11) + em_ptr->r) / (em_ptr->r + 1);
233 if (em_ptr->seen) em_ptr->obvious = TRUE;
234 if (em_ptr->r_ptr->flagsr & RFR_RES_SHAR)
236 em_ptr->note = _("には耐性がある。", " resists.");
237 em_ptr->dam *= 3; em_ptr->dam /= randint1(6) + 6;
238 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flagsr |= (RFR_RES_SHAR);
245 if (em_ptr->seen) em_ptr->obvious = TRUE;
246 if (em_ptr->r_ptr->flagsr & RFR_RES_SHAR)
248 em_ptr->note = _("はいくらか耐性を示した。", " resists somewhat.");
250 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flagsr |= (RFR_RES_SHAR);
257 if (em_ptr->seen) em_ptr->obvious = TRUE;
258 if (em_ptr->r_ptr->flagsr & RFR_RES_SOUN)
260 em_ptr->note = _("には耐性がある。", " resists.");
261 em_ptr->dam *= 2; em_ptr->dam /= randint1(6) + 6;
262 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flagsr |= (RFR_RES_SOUN);
265 em_ptr->do_stun = (10 + randint1(15) + em_ptr->r) / (em_ptr->r + 1);
271 if (em_ptr->seen) em_ptr->obvious = TRUE;
272 if (em_ptr->r_ptr->flags3 & RF3_NO_CONF)
274 em_ptr->note = _("には耐性がある。", " resists.");
275 em_ptr->dam *= 3; em_ptr->dam /= randint1(6) + 6;
276 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flags3 |= (RF3_NO_CONF);
279 em_ptr->do_conf = (10 + randint1(15) + em_ptr->r) / (em_ptr->r + 1);
285 if (em_ptr->seen) em_ptr->obvious = TRUE;
286 if (em_ptr->r_ptr->flagsr & RFR_RES_DISE)
288 em_ptr->note = _("には耐性がある。", " resists.");
289 em_ptr->dam *= 3; em_ptr->dam /= randint1(6) + 6;
290 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flagsr |= (RFR_RES_DISE);
297 if (em_ptr->seen) em_ptr->obvious = TRUE;
298 if (em_ptr->r_ptr->flagsr & RFR_RES_NEXU)
300 em_ptr->note = _("には耐性がある。", " resists.");
301 em_ptr->dam *= 3; em_ptr->dam /= randint1(6) + 6;
302 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flagsr |= (RFR_RES_NEXU);
309 if (em_ptr->seen) em_ptr->obvious = TRUE;
310 if (em_ptr->r_ptr->flagsr & RFR_RES_WALL)
312 em_ptr->note = _("には耐性がある。", " resists.");
313 em_ptr->dam *= 3; em_ptr->dam /= randint1(6) + 6;
314 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flagsr |= (RFR_RES_WALL);
317 em_ptr->do_stun = (randint1(15) + em_ptr->r) / (em_ptr->r + 1);
323 if (em_ptr->seen) em_ptr->obvious = TRUE;
324 if (em_ptr->r_ptr->flagsr & RFR_RES_INER)
326 em_ptr->note = _("には耐性がある。", " resists.");
327 em_ptr->dam *= 3; em_ptr->dam /= randint1(6) + 6;
328 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flagsr |= (RFR_RES_INER);
332 /* Powerful monsters can resist */
333 if ((em_ptr->r_ptr->flags1 & (RF1_UNIQUE)) ||
334 (em_ptr->r_ptr->level > randint1((em_ptr->dam - 10) < 1 ? 1 : (em_ptr->dam - 10)) + 10))
336 em_ptr->obvious = FALSE;
338 /* Normal monsters slow down */
341 if (set_monster_slow(caster_ptr, em_ptr->g_ptr->m_idx, MON_SLOW(em_ptr->m_ptr) + 50))
343 em_ptr->note = _("の動きが遅くなった。", " starts moving slower.");
352 if (em_ptr->seen) em_ptr->obvious = TRUE;
353 if (em_ptr->r_ptr->flagsr & RFR_RES_TIME)
355 em_ptr->note = _("には耐性がある。", " resists.");
356 em_ptr->dam *= 3; em_ptr->dam /= randint1(6) + 6;
357 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flagsr |= (RFR_RES_TIME);
360 em_ptr->do_time = (em_ptr->dam + 1) / 2;
366 bool resist_tele = FALSE;
368 if (em_ptr->seen) em_ptr->obvious = TRUE;
369 if (em_ptr->r_ptr->flagsr & RFR_RES_TELE)
371 if (em_ptr->r_ptr->flags1 & (RF1_UNIQUE))
373 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flagsr |= RFR_RES_TELE;
374 em_ptr->note = _("には効果がなかった。", " is unaffected!");
377 else if (em_ptr->r_ptr->level > randint1(100))
379 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flagsr |= RFR_RES_TELE;
380 em_ptr->note = _("には耐性がある!", " resists!");
385 if (!resist_tele) em_ptr->do_dist = 10;
386 else em_ptr->do_dist = 0;
388 if (caster_ptr->riding && (em_ptr->g_ptr->m_idx == caster_ptr->riding)) em_ptr->do_dist = 0;
390 if (em_ptr->r_ptr->flagsr & RFR_RES_GRAV)
392 em_ptr->note = _("には耐性がある!", " resists!");
393 em_ptr->dam *= 3; em_ptr->dam /= randint1(6) + 6;
395 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flagsr |= (RFR_RES_GRAV);
400 /* Powerful monsters can resist */
401 if ((em_ptr->r_ptr->flags1 & (RF1_UNIQUE)) ||
402 (em_ptr->r_ptr->level > randint1((em_ptr->dam - 10) < 1 ? 1 : (em_ptr->dam - 10)) + 10))
404 em_ptr->obvious = FALSE;
406 /* Normal monsters slow down */
409 if (set_monster_slow(caster_ptr, em_ptr->g_ptr->m_idx, MON_SLOW(em_ptr->m_ptr) + 50))
411 em_ptr->note = _("の動きが遅くなった。", " starts moving slower.");
416 em_ptr->do_stun = damroll((em_ptr->caster_lev / 20) + 3, (em_ptr->dam)) + 1;
418 /* Attempt a saving throw */
419 if ((em_ptr->r_ptr->flags1 & (RF1_UNIQUE)) ||
420 (em_ptr->r_ptr->level > randint1((em_ptr->dam - 10) < 1 ? 1 : (em_ptr->dam - 10)) + 10))
424 /* No em_ptr->obvious effect */
425 em_ptr->note = _("には効果がなかった。", " is unaffected!");
426 em_ptr->obvious = FALSE;
436 if (em_ptr->seen) em_ptr->obvious = TRUE;
439 case GF_DISINTEGRATE:
441 if (em_ptr->seen) em_ptr->obvious = TRUE;
442 if (em_ptr->r_ptr->flags3 & RF3_HURT_ROCK)
444 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flags3 |= (RF3_HURT_ROCK);
445 em_ptr->note = _("の皮膚がただれた!", " loses some skin!");
446 em_ptr->note_dies = _("は蒸発した!", " evaporates!");
454 if (em_ptr->seen) em_ptr->obvious = TRUE;
455 if (!(los(caster_ptr, em_ptr->m_ptr->fy, em_ptr->m_ptr->fx, caster_ptr->y, caster_ptr->x)))
457 if (em_ptr->seen_msg)
458 msg_format(_("%sはあなたが見えないので影響されない!", "%^s can't see you, and isn't affected!"), em_ptr->m_name);
459 em_ptr->skipped = TRUE;
463 if (em_ptr->r_ptr->flags2 & RF2_EMPTY_MIND)
466 em_ptr->note = _("には完全な耐性がある!", " is immune.");
467 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flags2 |= (RF2_EMPTY_MIND);
470 else if ((em_ptr->r_ptr->flags2 & (RF2_STUPID | RF2_WEIRD_MIND)) ||
471 (em_ptr->r_ptr->flags3 & RF3_ANIMAL) ||
472 (em_ptr->r_ptr->level > randint1(3 * em_ptr->dam)))
474 em_ptr->note = _("には耐性がある!", " resists!");
478 * Powerful demons & undead can turn a mindcrafter's
479 * attacks back on them
481 if ((em_ptr->r_ptr->flags3 & (RF3_UNDEAD | RF3_DEMON)) &&
482 (em_ptr->r_ptr->level > caster_ptr->lev / 2) &&
486 msg_format(_("%^sの堕落した精神は攻撃を跳ね返した!",
487 (em_ptr->seen ? "%^s's corrupted mind backlashes your attack!" :
488 "%^ss corrupted mind backlashes your attack!")), em_ptr->m_name);
490 if ((randint0(100 + em_ptr->r_ptr->level / 2) < caster_ptr->skill_sav) && !CHECK_MULTISHADOW(caster_ptr))
492 msg_print(_("しかし効力を跳ね返した!", "You resist the effects!"));
496 /* Injure +/- confusion */
497 monster_desc(caster_ptr, em_ptr->killer, em_ptr->m_ptr, MD_WRONGDOER_NAME);
498 take_hit(caster_ptr, DAMAGE_ATTACK, em_ptr->dam, em_ptr->killer, -1); /* has already been /3 */
499 if (one_in_(4) && !CHECK_MULTISHADOW(caster_ptr))
504 set_confused(caster_ptr, caster_ptr->confused + 3 + randint1(em_ptr->dam));
507 set_stun(caster_ptr, caster_ptr->stun + randint1(em_ptr->dam));
511 if (em_ptr->r_ptr->flags3 & RF3_NO_FEAR)
512 em_ptr->note = _("には効果がなかった。", " is unaffected.");
514 set_afraid(caster_ptr, caster_ptr->afraid + 3 + randint1(em_ptr->dam));
518 if (!caster_ptr->free_act)
519 (void)set_paralyzed(caster_ptr, caster_ptr->paralyzed + randint1(em_ptr->dam));
529 if ((em_ptr->dam > 0) && one_in_(4))
534 em_ptr->do_conf = 3 + randint1(em_ptr->dam);
537 em_ptr->do_stun = 3 + randint1(em_ptr->dam);
540 em_ptr->do_fear = 3 + randint1(em_ptr->dam);
543 em_ptr->note = _("は眠り込んでしまった!", " falls asleep!");
544 em_ptr->do_sleep = 3 + randint1(em_ptr->dam);
549 em_ptr->note_dies = _("の精神は崩壊し、肉体は抜け殻となった。", " collapses, a mindless husk.");
554 if (em_ptr->seen) em_ptr->obvious = TRUE;
555 if (em_ptr->r_ptr->flags2 & RF2_EMPTY_MIND)
558 em_ptr->note = _("には完全な耐性がある!", " is immune.");
560 else if ((em_ptr->r_ptr->flags2 & (RF2_STUPID | RF2_WEIRD_MIND)) ||
561 (em_ptr->r_ptr->flags3 & RF3_ANIMAL) ||
562 (em_ptr->r_ptr->level > randint1(3 * em_ptr->dam)))
564 em_ptr->note = _("には耐性がある!", " resists!");
568 * Powerful demons & undead can turn a mindcrafter's
569 * attacks back on them
571 if ((em_ptr->r_ptr->flags3 & (RF3_UNDEAD | RF3_DEMON)) &&
572 (em_ptr->r_ptr->level > caster_ptr->lev / 2) &&
576 msg_format(_("%^sの堕落した精神は攻撃を跳ね返した!",
577 (em_ptr->seen ? "%^s's corrupted mind backlashes your attack!" :
578 "%^ss corrupted mind backlashes your attack!")), em_ptr->m_name);
579 if ((randint0(100 + em_ptr->r_ptr->level / 2) < caster_ptr->skill_sav) && !CHECK_MULTISHADOW(caster_ptr))
581 msg_print(_("あなたは効力を跳ね返した!", "You resist the effects!"));
585 monster_desc(caster_ptr, em_ptr->killer, em_ptr->m_ptr, MD_WRONGDOER_NAME);
586 if (!CHECK_MULTISHADOW(caster_ptr))
588 msg_print(_("超能力パワーを吸いとられた!", "Your psychic energy is drained!"));
589 caster_ptr->csp -= damroll(5, em_ptr->dam) / 2;
590 if (caster_ptr->csp < 0) caster_ptr->csp = 0;
591 caster_ptr->redraw |= PR_MANA;
592 caster_ptr->window |= (PW_SPELL);
594 take_hit(caster_ptr, DAMAGE_ATTACK, em_ptr->dam, em_ptr->killer, -1); /* has already been /3 */
600 else if (em_ptr->dam > 0)
602 int b = damroll(5, em_ptr->dam) / 4;
603 concptr str = (caster_ptr->pclass == CLASS_MINDCRAFTER) ? _("超能力パワー", "psychic energy") : _("魔力", "mana");
604 concptr msg = _("あなたは%sの苦痛を%sに変換した!",
605 (em_ptr->seen ? "You convert %s's pain into %s!" :
606 "You convert %ss pain into %s!"));
607 msg_format(msg, em_ptr->m_name, str);
609 b = MIN(caster_ptr->msp, caster_ptr->csp + b);
611 caster_ptr->redraw |= PR_MANA;
612 caster_ptr->window |= (PW_SPELL);
615 em_ptr->note_dies = _("の精神は崩壊し、肉体は抜け殻となった。", " collapses, a mindless husk.");
620 if (em_ptr->seen) em_ptr->obvious = TRUE;
623 if (caster_ptr->riding && (em_ptr->g_ptr->m_idx == caster_ptr->riding)) em_ptr->do_dist = 0;
624 else em_ptr->do_dist = 7;
627 em_ptr->do_stun = damroll((em_ptr->caster_lev / 20) + 3, em_ptr->dam) + 1;
628 if ((em_ptr->r_ptr->flags1 & RF1_UNIQUE) ||
629 (em_ptr->r_ptr->level > 5 + randint1(em_ptr->dam)))
632 em_ptr->obvious = FALSE;
639 if (em_ptr->seen) em_ptr->obvious = TRUE;
644 if (em_ptr->seen) em_ptr->obvious = TRUE;
649 if (!is_hostile(em_ptr->m_ptr)) break;
650 if (em_ptr->seen) em_ptr->obvious = TRUE;
651 if ((em_ptr->r_ptr->flags1 & (RF1_UNIQUE | RF1_QUESTOR)) ||
652 (em_ptr->r_ptr->flags3 & RF3_NO_CONF) ||
653 (em_ptr->r_ptr->level > randint1((em_ptr->dam - 10) < 1 ? 1 : (em_ptr->dam - 10)) + 10))
655 if (em_ptr->r_ptr->flags3 & RF3_NO_CONF)
657 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flags3 |= (RF3_NO_CONF);
663 * Powerful demons & undead can turn a mindcrafter's
664 * attacks back on them
666 if ((em_ptr->r_ptr->flags3 & (RF3_UNDEAD | RF3_DEMON)) &&
667 (em_ptr->r_ptr->level > caster_ptr->lev / 2) &&
671 msg_format(_("%^sの堕落した精神は攻撃を跳ね返した!",
672 (em_ptr->seen ? "%^s's corrupted mind backlashes your attack!" :
673 "%^ss corrupted mind backlashes your attack!")), em_ptr->m_name);
676 if (randint0(100 + em_ptr->r_ptr->level / 2) < caster_ptr->skill_sav)
678 msg_print(_("しかし効力を跳ね返した!", "You resist the effects!"));
682 /* Confuse, stun, terrify */
686 set_stun(caster_ptr, caster_ptr->stun + em_ptr->dam / 2);
689 set_confused(caster_ptr, caster_ptr->confused + em_ptr->dam / 2);
693 if (em_ptr->r_ptr->flags3 & RF3_NO_FEAR)
694 em_ptr->note = _("には効果がなかった。", " is unaffected.");
696 set_afraid(caster_ptr, caster_ptr->afraid + em_ptr->dam);
703 em_ptr->note = _("には効果がなかった。", " is unaffected.");
704 em_ptr->obvious = FALSE;
709 if (!common_saving_throw_charm(caster_ptr, em_ptr->dam, em_ptr->m_ptr))
711 em_ptr->note = _("があなたに隷属した。", " is in your thrall!");
712 set_pet(caster_ptr, em_ptr->m_ptr);
719 em_ptr->do_stun = em_ptr->dam / 2;
722 em_ptr->do_conf = em_ptr->dam / 2;
725 em_ptr->do_fear = em_ptr->dam;
735 if (em_ptr->seen) em_ptr->obvious = TRUE;
736 em_ptr->do_stun = (randint1(15) + 1) / (em_ptr->r + 1);
737 if (em_ptr->r_ptr->flagsr & RFR_IM_COLD)
739 em_ptr->note = _("にはかなり耐性がある!", " resists a lot.");
741 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flagsr |= (RFR_IM_COLD);
743 else if (em_ptr->r_ptr->flags3 & (RF3_HURT_COLD))
745 em_ptr->note = _("はひどい痛手をうけた。", " is hit hard.");
747 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flags3 |= (RF3_HURT_COLD);
754 if (em_ptr->seen) em_ptr->obvious = TRUE;
755 if (!monster_living(em_ptr->m_ptr->r_idx))
757 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
759 if (em_ptr->r_ptr->flags3 & RF3_DEMON) em_ptr->r_ptr->r_flags3 |= (RF3_DEMON);
760 if (em_ptr->r_ptr->flags3 & RF3_UNDEAD) em_ptr->r_ptr->r_flags3 |= (RF3_UNDEAD);
761 if (em_ptr->r_ptr->flags3 & RF3_NONLIVING) em_ptr->r_ptr->r_flags3 |= (RF3_NONLIVING);
763 em_ptr->note = _("には効果がなかった。", " is unaffected.");
764 em_ptr->obvious = FALSE;
768 em_ptr->do_time = (em_ptr->dam + 7) / 8;
774 if (em_ptr->seen) em_ptr->obvious = TRUE;
775 if (!monster_living(em_ptr->m_ptr->r_idx))
777 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
779 if (em_ptr->r_ptr->flags3 & RF3_DEMON) em_ptr->r_ptr->r_flags3 |= (RF3_DEMON);
780 if (em_ptr->r_ptr->flags3 & RF3_UNDEAD) em_ptr->r_ptr->r_flags3 |= (RF3_UNDEAD);
781 if (em_ptr->r_ptr->flags3 & RF3_NONLIVING) em_ptr->r_ptr->r_flags3 |= (RF3_NONLIVING);
783 em_ptr->note = _("には完全な耐性がある!", " is immune.");
784 em_ptr->obvious = FALSE;
787 else if (((em_ptr->r_ptr->flags1 & RF1_UNIQUE) &&
788 (randint1(888) != 666)) ||
789 (((em_ptr->r_ptr->level + randint1(20)) > randint1((em_ptr->caster_lev / 2) + randint1(10))) &&
790 randint1(100) != 66))
792 em_ptr->note = _("には耐性がある!", " resists!");
793 em_ptr->obvious = FALSE;
801 if (em_ptr->seen) em_ptr->obvious = TRUE;
802 em_ptr->do_polymorph = TRUE;
804 /* Powerful monsters can resist */
805 if ((em_ptr->r_ptr->flags1 & RF1_UNIQUE) ||
806 (em_ptr->r_ptr->flags1 & RF1_QUESTOR) ||
807 (em_ptr->r_ptr->level > randint1((em_ptr->dam - 10) < 1 ? 1 : (em_ptr->dam - 10)) + 10))
809 em_ptr->note = _("には効果がなかった。", " is unaffected.");
810 em_ptr->do_polymorph = FALSE;
811 em_ptr->obvious = FALSE;
819 if (em_ptr->seen) em_ptr->obvious = TRUE;
821 if ((floor_ptr->inside_arena) || is_pet(em_ptr->m_ptr) || (em_ptr->r_ptr->flags1 & (RF1_UNIQUE | RF1_QUESTOR)) || (em_ptr->r_ptr->flags7 & (RF7_NAZGUL | RF7_UNIQUE2)))
823 em_ptr->note = _("には効果がなかった。", " is unaffected.");
827 em_ptr->m_ptr->hp = em_ptr->m_ptr->maxhp;
828 if (multiply_monster(caster_ptr, em_ptr->g_ptr->m_idx, TRUE, 0L))
830 em_ptr->note = _("が分裂した!", " spawns!");
839 if (em_ptr->seen) em_ptr->obvious = TRUE;
841 (void)set_monster_csleep(caster_ptr, em_ptr->g_ptr->m_idx, 0);
843 if (em_ptr->m_ptr->maxhp < em_ptr->m_ptr->max_maxhp)
845 if (em_ptr->seen_msg) msg_format(_("%^sの強さが戻った。", "%^s recovers %s vitality."), em_ptr->m_name, em_ptr->m_poss);
846 em_ptr->m_ptr->maxhp = em_ptr->m_ptr->max_maxhp;
851 if (caster_ptr->health_who == em_ptr->g_ptr->m_idx) caster_ptr->redraw |= (PR_HEALTH);
852 if (caster_ptr->riding == em_ptr->g_ptr->m_idx) caster_ptr->redraw |= (PR_UHEALTH);
859 if (em_ptr->seen) em_ptr->obvious = TRUE;
862 (void)set_monster_csleep(caster_ptr, em_ptr->g_ptr->m_idx, 0);
863 if (MON_STUNNED(em_ptr->m_ptr))
865 if (em_ptr->seen_msg) msg_format(_("%^sは朦朧状態から立ち直った。", "%^s is no longer stunned."), em_ptr->m_name);
866 (void)set_monster_stunned(caster_ptr, em_ptr->g_ptr->m_idx, 0);
868 if (MON_CONFUSED(em_ptr->m_ptr))
870 if (em_ptr->seen_msg) msg_format(_("%^sは混乱から立ち直った。", "%^s is no longer confused."), em_ptr->m_name);
871 (void)set_monster_confused(caster_ptr, em_ptr->g_ptr->m_idx, 0);
873 if (MON_MONFEAR(em_ptr->m_ptr))
875 if (em_ptr->seen_msg) msg_format(_("%^sは勇気を取り戻した。", "%^s recovers %s courage."), em_ptr->m_name, em_ptr->m_poss);
876 (void)set_monster_monfear(caster_ptr, em_ptr->g_ptr->m_idx, 0);
879 if (em_ptr->m_ptr->hp < 30000) em_ptr->m_ptr->hp += em_ptr->dam;
880 if (em_ptr->m_ptr->hp > em_ptr->m_ptr->maxhp) em_ptr->m_ptr->hp = em_ptr->m_ptr->maxhp;
884 chg_virtue(caster_ptr, V_VITALITY, 1);
886 if (em_ptr->r_ptr->flags1 & RF1_UNIQUE)
887 chg_virtue(caster_ptr, V_INDIVIDUALISM, 1);
889 if (is_friendly(em_ptr->m_ptr))
890 chg_virtue(caster_ptr, V_HONOUR, 1);
891 else if (!(em_ptr->r_ptr->flags3 & RF3_EVIL))
893 if (em_ptr->r_ptr->flags3 & RF3_GOOD)
894 chg_virtue(caster_ptr, V_COMPASSION, 2);
896 chg_virtue(caster_ptr, V_COMPASSION, 1);
899 if (em_ptr->r_ptr->flags3 & RF3_ANIMAL)
900 chg_virtue(caster_ptr, V_NATURE, 1);
903 if (em_ptr->m_ptr->r_idx == MON_LEPER)
905 em_ptr->heal_leper = TRUE;
906 if (!em_ptr->who) chg_virtue(caster_ptr, V_COMPASSION, 5);
909 if (caster_ptr->health_who == em_ptr->g_ptr->m_idx) caster_ptr->redraw |= (PR_HEALTH);
910 if (caster_ptr->riding == em_ptr->g_ptr->m_idx) caster_ptr->redraw |= (PR_UHEALTH);
912 em_ptr->note = _("は体力を回復したようだ。", " looks healthier.");
919 if (em_ptr->seen) em_ptr->obvious = TRUE;
921 if (set_monster_fast(caster_ptr, em_ptr->g_ptr->m_idx, MON_FAST(em_ptr->m_ptr) + 100))
923 em_ptr->note = _("の動きが速くなった。", " starts moving faster.");
928 if (em_ptr->r_ptr->flags1 & RF1_UNIQUE)
929 chg_virtue(caster_ptr, V_INDIVIDUALISM, 1);
930 if (is_friendly(em_ptr->m_ptr))
931 chg_virtue(caster_ptr, V_HONOUR, 1);
939 if (em_ptr->seen) em_ptr->obvious = TRUE;
941 /* Powerful monsters can resist */
942 if ((em_ptr->r_ptr->flags1 & RF1_UNIQUE) ||
943 (em_ptr->r_ptr->level > randint1((em_ptr->dam - 10) < 1 ? 1 : (em_ptr->dam - 10)) + 10))
945 em_ptr->note = _("には効果がなかった。", " is unaffected.");
946 em_ptr->obvious = FALSE;
950 if (set_monster_slow(caster_ptr, em_ptr->g_ptr->m_idx, MON_SLOW(em_ptr->m_ptr) + 50))
952 em_ptr->note = _("の動きが遅くなった。", " starts moving slower.");
961 if (em_ptr->seen) em_ptr->obvious = TRUE;
963 if ((em_ptr->r_ptr->flags1 & RF1_UNIQUE) ||
964 (em_ptr->r_ptr->flags3 & RF3_NO_SLEEP) ||
965 (em_ptr->r_ptr->level > randint1((em_ptr->dam - 10) < 1 ? 1 : (em_ptr->dam - 10)) + 10))
967 if (em_ptr->r_ptr->flags3 & RF3_NO_SLEEP)
969 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flags3 |= (RF3_NO_SLEEP);
972 em_ptr->note = _("には効果がなかった。", " is unaffected.");
973 em_ptr->obvious = FALSE;
977 em_ptr->note = _("は眠り込んでしまった!", " falls asleep!");
978 em_ptr->do_sleep = 500;
986 if (em_ptr->seen) em_ptr->obvious = TRUE;
988 if ((em_ptr->r_ptr->flags1 & RF1_UNIQUE) ||
989 !(em_ptr->r_ptr->flags3 & RF3_EVIL) ||
990 (em_ptr->r_ptr->level > randint1((em_ptr->dam - 10) < 1 ? 1 : (em_ptr->dam - 10)) + 10))
992 em_ptr->note = _("には効果がなかった。", " is unaffected.");
993 em_ptr->obvious = FALSE;
997 em_ptr->note = _("は動けなくなった!", " is suspended!");
998 em_ptr->do_sleep = 500;
1006 if (em_ptr->seen) em_ptr->obvious = TRUE;
1008 if ((em_ptr->r_ptr->flags1 & RF1_UNIQUE) ||
1009 (em_ptr->r_ptr->level > randint1((em_ptr->dam - 10) < 1 ? 1 : (em_ptr->dam - 10)) + 10))
1011 em_ptr->note = _("には効果がなかった。", " is unaffected.");
1012 em_ptr->obvious = FALSE;
1016 em_ptr->note = _("は動けなくなった!", " is suspended!");
1017 em_ptr->do_sleep = 500;
1026 vir = virtue_number(caster_ptr, V_HARMONY);
1029 em_ptr->dam += caster_ptr->virtues[vir - 1] / 10;
1032 vir = virtue_number(caster_ptr, V_INDIVIDUALISM);
1035 em_ptr->dam -= caster_ptr->virtues[vir - 1] / 20;
1038 if (em_ptr->seen) em_ptr->obvious = TRUE;
1040 if (common_saving_throw_charm(caster_ptr, em_ptr->dam, em_ptr->m_ptr))
1042 em_ptr->note = _("には効果がなかった。", " is unaffected.");
1043 em_ptr->obvious = FALSE;
1045 if (one_in_(4)) em_ptr->m_ptr->mflag2 |= MFLAG2_NOPET;
1047 else if (caster_ptr->cursed & TRC_AGGRAVATE)
1049 em_ptr->note = _("はあなたに敵意を抱いている!", " hates you too much!");
1050 if (one_in_(4)) em_ptr->m_ptr->mflag2 |= MFLAG2_NOPET;
1054 em_ptr->note = _("は突然友好的になったようだ!", " suddenly seems friendly!");
1055 set_pet(caster_ptr, em_ptr->m_ptr);
1057 chg_virtue(caster_ptr, V_INDIVIDUALISM, -1);
1058 if (em_ptr->r_ptr->flags3 & RF3_ANIMAL)
1059 chg_virtue(caster_ptr, V_NATURE, 1);
1065 case GF_CONTROL_UNDEAD:
1068 if (em_ptr->seen) em_ptr->obvious = TRUE;
1070 vir = virtue_number(caster_ptr, V_UNLIFE);
1073 em_ptr->dam += caster_ptr->virtues[vir - 1] / 10;
1076 vir = virtue_number(caster_ptr, V_INDIVIDUALISM);
1079 em_ptr->dam -= caster_ptr->virtues[vir - 1] / 20;
1082 if (common_saving_throw_control(caster_ptr, em_ptr->dam, em_ptr->m_ptr) ||
1083 !(em_ptr->r_ptr->flags3 & RF3_UNDEAD))
1085 em_ptr->note = _("には効果がなかった。", " is unaffected.");
1086 em_ptr->obvious = FALSE;
1087 if (one_in_(4)) em_ptr->m_ptr->mflag2 |= MFLAG2_NOPET;
1089 else if (caster_ptr->cursed & TRC_AGGRAVATE)
1091 em_ptr->note = _("はあなたに敵意を抱いている!", " hates you too much!");
1092 if (one_in_(4)) em_ptr->m_ptr->mflag2 |= MFLAG2_NOPET;
1096 em_ptr->note = _("は既にあなたの奴隷だ!", " is in your thrall!");
1097 set_pet(caster_ptr, em_ptr->m_ptr);
1103 case GF_CONTROL_DEMON:
1106 if (em_ptr->seen) em_ptr->obvious = TRUE;
1108 vir = virtue_number(caster_ptr, V_UNLIFE);
1111 em_ptr->dam += caster_ptr->virtues[vir - 1] / 10;
1114 vir = virtue_number(caster_ptr, V_INDIVIDUALISM);
1117 em_ptr->dam -= caster_ptr->virtues[vir - 1] / 20;
1120 if (common_saving_throw_control(caster_ptr, em_ptr->dam, em_ptr->m_ptr) ||
1121 !(em_ptr->r_ptr->flags3 & RF3_DEMON))
1123 em_ptr->note = _("には効果がなかった。", " is unaffected.");
1124 em_ptr->obvious = FALSE;
1125 if (one_in_(4)) em_ptr->m_ptr->mflag2 |= MFLAG2_NOPET;
1127 else if (caster_ptr->cursed & TRC_AGGRAVATE)
1129 em_ptr->note = _("はあなたに敵意を抱いている!", " hates you too much!");
1130 if (one_in_(4)) em_ptr->m_ptr->mflag2 |= MFLAG2_NOPET;
1134 em_ptr->note = _("は既にあなたの奴隷だ!", " is in your thrall!");
1135 set_pet(caster_ptr, em_ptr->m_ptr);
1141 case GF_CONTROL_ANIMAL:
1144 if (em_ptr->seen) em_ptr->obvious = TRUE;
1146 vir = virtue_number(caster_ptr, V_NATURE);
1149 em_ptr->dam += caster_ptr->virtues[vir - 1] / 10;
1152 vir = virtue_number(caster_ptr, V_INDIVIDUALISM);
1155 em_ptr->dam -= caster_ptr->virtues[vir - 1] / 20;
1158 if (common_saving_throw_control(caster_ptr, em_ptr->dam, em_ptr->m_ptr) ||
1159 !(em_ptr->r_ptr->flags3 & RF3_ANIMAL))
1161 em_ptr->note = _("には効果がなかった。", " is unaffected.");
1162 em_ptr->obvious = FALSE;
1163 if (one_in_(4)) em_ptr->m_ptr->mflag2 |= MFLAG2_NOPET;
1165 else if (caster_ptr->cursed & TRC_AGGRAVATE)
1167 em_ptr->note = _("はあなたに敵意を抱いている!", " hates you too much!");
1168 if (one_in_(4)) em_ptr->m_ptr->mflag2 |= MFLAG2_NOPET;
1172 em_ptr->note = _("はなついた。", " is tamed!");
1173 set_pet(caster_ptr, em_ptr->m_ptr);
1174 if (em_ptr->r_ptr->flags3 & RF3_ANIMAL)
1175 chg_virtue(caster_ptr, V_NATURE, 1);
1181 case GF_CHARM_LIVING:
1185 vir = virtue_number(caster_ptr, V_UNLIFE);
1186 if (em_ptr->seen) em_ptr->obvious = TRUE;
1188 vir = virtue_number(caster_ptr, V_UNLIFE);
1191 em_ptr->dam -= caster_ptr->virtues[vir - 1] / 10;
1194 vir = virtue_number(caster_ptr, V_INDIVIDUALISM);
1197 em_ptr->dam -= caster_ptr->virtues[vir - 1] / 20;
1200 msg_format(_("%sを見つめた。", "You stare into %s."), em_ptr->m_name);
1202 if (common_saving_throw_charm(caster_ptr, em_ptr->dam, em_ptr->m_ptr) ||
1203 !monster_living(em_ptr->m_ptr->r_idx))
1205 em_ptr->note = _("には効果がなかった。", " is unaffected.");
1206 em_ptr->obvious = FALSE;
1207 if (one_in_(4)) em_ptr->m_ptr->mflag2 |= MFLAG2_NOPET;
1209 else if (caster_ptr->cursed & TRC_AGGRAVATE)
1211 em_ptr->note = _("はあなたに敵意を抱いている!", " hates you too much!");
1212 if (one_in_(4)) em_ptr->m_ptr->mflag2 |= MFLAG2_NOPET;
1216 em_ptr->note = _("を支配した。", " is tamed!");
1217 set_pet(caster_ptr, em_ptr->m_ptr);
1218 if (em_ptr->r_ptr->flags3 & RF3_ANIMAL)
1219 chg_virtue(caster_ptr, V_NATURE, 1);
1227 if (em_ptr->seen) em_ptr->obvious = TRUE;
1229 em_ptr->do_conf = damroll(3, (em_ptr->dam / 2)) + 1;
1230 if ((em_ptr->r_ptr->flags1 & (RF1_UNIQUE)) ||
1231 (em_ptr->r_ptr->flags3 & (RF3_NO_CONF)) ||
1232 (em_ptr->r_ptr->level > randint1((em_ptr->dam - 10) < 1 ? 1 : (em_ptr->dam - 10)) + 10))
1234 if (em_ptr->r_ptr->flags3 & (RF3_NO_CONF))
1236 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flags3 |= (RF3_NO_CONF);
1239 em_ptr->do_conf = 0;
1240 em_ptr->note = _("には効果がなかった。", " is unaffected.");
1241 em_ptr->obvious = FALSE;
1249 if (em_ptr->seen) em_ptr->obvious = TRUE;
1251 em_ptr->do_stun = damroll((em_ptr->caster_lev / 20) + 3, (em_ptr->dam)) + 1;
1252 if ((em_ptr->r_ptr->flags1 & (RF1_UNIQUE)) ||
1253 (em_ptr->r_ptr->level > randint1((em_ptr->dam - 10) < 1 ? 1 : (em_ptr->dam - 10)) + 10))
1255 em_ptr->do_stun = 0;
1256 em_ptr->note = _("には効果がなかった。", " is unaffected.");
1257 em_ptr->obvious = FALSE;
1267 em_ptr->skipped = TRUE;
1271 if (em_ptr->r_ptr->flags3 & (RF3_HURT_LITE))
1273 if (em_ptr->seen) em_ptr->obvious = TRUE;
1275 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flags3 |= (RF3_HURT_LITE);
1277 em_ptr->note = _("は光に身をすくめた!", " cringes from the light!");
1278 em_ptr->note_dies = _("は光を受けてしぼんでしまった!", " shrivels away in the light!");
1289 if (em_ptr->seen) em_ptr->obvious = TRUE;
1291 if (em_ptr->r_ptr->flagsr & RFR_RES_LITE)
1293 em_ptr->note = _("には耐性がある!", " resists!");
1294 em_ptr->dam *= 2; em_ptr->dam /= (randint1(6) + 6);
1295 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flagsr |= (RFR_RES_LITE);
1297 else if (em_ptr->r_ptr->flags3 & (RF3_HURT_LITE))
1299 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flags3 |= (RF3_HURT_LITE);
1300 em_ptr->note = _("は光に身をすくめた!", " cringes from the light!");
1301 em_ptr->note_dies = _("は光を受けてしぼんでしまった!", " shrivels away in the light!");
1308 if (em_ptr->seen) em_ptr->obvious = TRUE;
1310 if (em_ptr->r_ptr->flagsr & RFR_RES_DARK)
1312 em_ptr->note = _("には耐性がある!", " resists!");
1313 em_ptr->dam *= 2; em_ptr->dam /= (randint1(6) + 6);
1314 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flagsr |= (RFR_RES_DARK);
1321 if (em_ptr->r_ptr->flags3 & (RF3_HURT_ROCK))
1323 if (em_ptr->seen) em_ptr->obvious = TRUE;
1325 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flags3 |= (RF3_HURT_ROCK);
1327 em_ptr->note = _("の皮膚がただれた!", " loses some skin!");
1328 em_ptr->note_dies = _("はドロドロに溶けた!", " dissolves!");
1337 case GF_AWAY_UNDEAD:
1339 if (em_ptr->r_ptr->flags3 & (RF3_UNDEAD))
1341 bool resists_tele = FALSE;
1343 if (em_ptr->r_ptr->flagsr & RFR_RES_TELE)
1345 if ((em_ptr->r_ptr->flags1 & (RF1_UNIQUE)) || (em_ptr->r_ptr->flagsr & RFR_RES_ALL))
1347 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flagsr |= RFR_RES_TELE;
1348 em_ptr->note = _("には効果がなかった。", " is unaffected.");
1349 resists_tele = TRUE;
1351 else if (em_ptr->r_ptr->level > randint1(100))
1353 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flagsr |= RFR_RES_TELE;
1354 em_ptr->note = _("には耐性がある!", " resists!");
1355 resists_tele = TRUE;
1361 if (em_ptr->seen) em_ptr->obvious = TRUE;
1362 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flags3 |= (RF3_UNDEAD);
1363 em_ptr->do_dist = em_ptr->dam;
1368 em_ptr->skipped = TRUE;
1376 if (em_ptr->r_ptr->flags3 & (RF3_EVIL))
1378 bool resists_tele = FALSE;
1380 if (em_ptr->r_ptr->flagsr & RFR_RES_TELE)
1382 if ((em_ptr->r_ptr->flags1 & (RF1_UNIQUE)) || (em_ptr->r_ptr->flagsr & RFR_RES_ALL))
1384 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flagsr |= RFR_RES_TELE;
1385 em_ptr->note = _("には効果がなかった。", " is unaffected.");
1386 resists_tele = TRUE;
1388 else if (em_ptr->r_ptr->level > randint1(100))
1390 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flagsr |= RFR_RES_TELE;
1391 em_ptr->note = _("には耐性がある!", " resists!");
1392 resists_tele = TRUE;
1398 if (em_ptr->seen) em_ptr->obvious = TRUE;
1399 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flags3 |= (RF3_EVIL);
1400 em_ptr->do_dist = em_ptr->dam;
1405 em_ptr->skipped = TRUE;
1413 bool resists_tele = FALSE;
1414 if (em_ptr->r_ptr->flagsr & RFR_RES_TELE)
1416 if ((em_ptr->r_ptr->flags1 & (RF1_UNIQUE)) || (em_ptr->r_ptr->flagsr & RFR_RES_ALL))
1418 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flagsr |= RFR_RES_TELE;
1419 em_ptr->note = _("には効果がなかった。", " is unaffected.");
1420 resists_tele = TRUE;
1422 else if (em_ptr->r_ptr->level > randint1(100))
1424 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flagsr |= RFR_RES_TELE;
1425 em_ptr->note = _("には耐性がある!", " resists!");
1426 resists_tele = TRUE;
1432 if (em_ptr->seen) em_ptr->obvious = TRUE;
1434 em_ptr->do_dist = em_ptr->dam;
1440 case GF_TURN_UNDEAD:
1442 if (em_ptr->r_ptr->flags3 & (RF3_UNDEAD))
1444 if (em_ptr->seen) em_ptr->obvious = TRUE;
1446 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flags3 |= (RF3_UNDEAD);
1448 em_ptr->do_fear = damroll(3, (em_ptr->dam / 2)) + 1;
1449 if (em_ptr->r_ptr->level > randint1((em_ptr->dam - 10) < 1 ? 1 : (em_ptr->dam - 10)) + 10)
1451 em_ptr->note = _("には効果がなかった。", " is unaffected.");
1452 em_ptr->obvious = FALSE;
1453 em_ptr->do_fear = 0;
1458 em_ptr->skipped = TRUE;
1466 if (em_ptr->r_ptr->flags3 & (RF3_EVIL))
1468 if (em_ptr->seen) em_ptr->obvious = TRUE;
1470 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flags3 |= (RF3_EVIL);
1472 em_ptr->do_fear = damroll(3, (em_ptr->dam / 2)) + 1;
1473 if (em_ptr->r_ptr->level > randint1((em_ptr->dam - 10) < 1 ? 1 : (em_ptr->dam - 10)) + 10)
1475 em_ptr->note = _("には効果がなかった。", " is unaffected.");
1476 em_ptr->obvious = FALSE;
1477 em_ptr->do_fear = 0;
1482 em_ptr->skipped = TRUE;
1490 if (em_ptr->seen) em_ptr->obvious = TRUE;
1492 em_ptr->do_fear = damroll(3, (em_ptr->dam / 2)) + 1;
1493 if ((em_ptr->r_ptr->flags1 & (RF1_UNIQUE)) ||
1494 (em_ptr->r_ptr->flags3 & (RF3_NO_FEAR)) ||
1495 (em_ptr->r_ptr->level > randint1((em_ptr->dam - 10) < 1 ? 1 : (em_ptr->dam - 10)) + 10))
1497 em_ptr->note = _("には効果がなかった。", " is unaffected.");
1498 em_ptr->obvious = FALSE;
1499 em_ptr->do_fear = 0;
1505 case GF_DISP_UNDEAD:
1507 if (em_ptr->r_ptr->flags3 & (RF3_UNDEAD))
1509 if (em_ptr->seen) em_ptr->obvious = TRUE;
1511 /* Learn about em_ptr->effect_type */
1512 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flags3 |= (RF3_UNDEAD);
1514 em_ptr->note = _("は身震いした。", " shudders.");
1515 em_ptr->note_dies = _("はドロドロに溶けた!", " dissolves!");
1519 em_ptr->skipped = TRUE;
1527 if (em_ptr->r_ptr->flags3 & (RF3_EVIL))
1529 if (em_ptr->seen) em_ptr->obvious = TRUE;
1531 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flags3 |= (RF3_EVIL);
1533 em_ptr->note = _("は身震いした。", " shudders.");
1534 em_ptr->note_dies = _("はドロドロに溶けた!", " dissolves!");
1538 em_ptr->skipped = TRUE;
1546 if (em_ptr->r_ptr->flags3 & (RF3_GOOD))
1548 if (em_ptr->seen) em_ptr->obvious = TRUE;
1550 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flags3 |= (RF3_GOOD);
1552 em_ptr->note = _("は身震いした。", " shudders.");
1553 em_ptr->note_dies = _("はドロドロに溶けた!", " dissolves!");
1557 em_ptr->skipped = TRUE;
1563 case GF_DISP_LIVING:
1565 if (monster_living(em_ptr->m_ptr->r_idx))
1567 if (em_ptr->seen) em_ptr->obvious = TRUE;
1569 em_ptr->note = _("は身震いした。", " shudders.");
1570 em_ptr->note_dies = _("はドロドロに溶けた!", " dissolves!");
1574 em_ptr->skipped = TRUE;
1582 if (em_ptr->r_ptr->flags3 & (RF3_DEMON))
1584 if (em_ptr->seen) em_ptr->obvious = TRUE;
1586 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flags3 |= (RF3_DEMON);
1588 em_ptr->note = _("は身震いした。", " shudders.");
1589 em_ptr->note_dies = _("はドロドロに溶けた!", " dissolves!");
1593 em_ptr->skipped = TRUE;
1601 if (em_ptr->seen) em_ptr->obvious = TRUE;
1602 em_ptr->note = _("は身震いした。", " shudders.");
1603 em_ptr->note_dies = _("はドロドロに溶けた!", " dissolves!");
1608 if (em_ptr->seen) em_ptr->obvious = TRUE;
1609 if ((em_ptr->r_ptr->flags4 & ~(RF4_NOMAGIC_MASK)) || (em_ptr->r_ptr->a_ability_flags1 & ~(RF5_NOMAGIC_MASK)) || (em_ptr->r_ptr->a_ability_flags2 & ~(RF6_NOMAGIC_MASK)))
1611 if (em_ptr->who > 0)
1613 if (em_ptr->m_caster_ptr->hp < em_ptr->m_caster_ptr->maxhp)
1615 em_ptr->m_caster_ptr->hp += em_ptr->dam;
1616 if (em_ptr->m_caster_ptr->hp > em_ptr->m_caster_ptr->maxhp) em_ptr->m_caster_ptr->hp = em_ptr->m_caster_ptr->maxhp;
1617 if (caster_ptr->health_who == em_ptr->who) caster_ptr->redraw |= (PR_HEALTH);
1618 if (caster_ptr->riding == em_ptr->who) caster_ptr->redraw |= (PR_UHEALTH);
1620 if (em_ptr->see_s_msg)
1622 monster_desc(caster_ptr, em_ptr->killer, em_ptr->m_caster_ptr, 0);
1623 msg_format(_("%^sは気分が良さそうだ。", "%^s appears healthier."), em_ptr->killer);
1629 msg_format(_("%sから精神エネルギーを吸いとった。", "You draw psychic energy from %s."), em_ptr->m_name);
1630 (void)hp_player(caster_ptr, em_ptr->dam);
1635 if (em_ptr->see_s_msg) msg_format(_("%sには効果がなかった。", "%s is unaffected."), em_ptr->m_name);
1643 if (em_ptr->seen) em_ptr->obvious = TRUE;
1644 if (!em_ptr->who) msg_format(_("%sをじっと睨んだ。", "You gaze intently at %s."), em_ptr->m_name);
1646 if ((em_ptr->r_ptr->flags1 & RF1_UNIQUE) ||
1647 (em_ptr->r_ptr->flags3 & RF3_NO_CONF) ||
1648 (em_ptr->r_ptr->level > randint1((em_ptr->caster_lev - 10) < 1 ? 1 : (em_ptr->caster_lev - 10)) + 10))
1650 if (em_ptr->r_ptr->flags3 & (RF3_NO_CONF))
1652 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flags3 |= (RF3_NO_CONF);
1655 em_ptr->note = _("には効果がなかった。", " is unaffected.");
1658 else if (em_ptr->r_ptr->flags2 & RF2_EMPTY_MIND)
1660 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flags2 |= (RF2_EMPTY_MIND);
1661 em_ptr->note = _("には完全な耐性がある!", " is immune.");
1664 else if (em_ptr->r_ptr->flags2 & RF2_WEIRD_MIND)
1666 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flags2 |= (RF2_WEIRD_MIND);
1667 em_ptr->note = _("には耐性がある。", " resists.");
1672 em_ptr->note = _("は精神攻撃を食らった。", " is blasted by psionic energy.");
1673 em_ptr->note_dies = _("の精神は崩壊し、肉体は抜け殻となった。", " collapses, a mindless husk.");
1675 if (em_ptr->who > 0) em_ptr->do_conf = randint0(4) + 4;
1676 else em_ptr->do_conf = randint0(8) + 8;
1681 case GF_BRAIN_SMASH:
1683 if (em_ptr->seen) em_ptr->obvious = TRUE;
1684 if (!em_ptr->who) msg_format(_("%sをじっと睨んだ。", "You gaze intently at %s."), em_ptr->m_name);
1686 if ((em_ptr->r_ptr->flags1 & RF1_UNIQUE) ||
1687 (em_ptr->r_ptr->flags3 & RF3_NO_CONF) ||
1688 (em_ptr->r_ptr->level > randint1((em_ptr->caster_lev - 10) < 1 ? 1 : (em_ptr->caster_lev - 10)) + 10))
1690 if (em_ptr->r_ptr->flags3 & (RF3_NO_CONF))
1692 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flags3 |= (RF3_NO_CONF);
1695 em_ptr->note = _("には効果がなかった。", " is unaffected.");
1698 else if (em_ptr->r_ptr->flags2 & RF2_EMPTY_MIND)
1700 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flags2 |= (RF2_EMPTY_MIND);
1701 em_ptr->note = _("には完全な耐性がある!", " is immune.");
1704 else if (em_ptr->r_ptr->flags2 & RF2_WEIRD_MIND)
1706 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flags2 |= (RF2_WEIRD_MIND);
1707 em_ptr->note = _("には耐性がある!", " resists!");
1712 em_ptr->note = _("は精神攻撃を食らった。", " is blasted by psionic energy.");
1713 em_ptr->note_dies = _("の精神は崩壊し、肉体は抜け殻となった。", " collapses, a mindless husk.");
1714 if (em_ptr->who > 0)
1716 em_ptr->do_conf = randint0(4) + 4;
1717 em_ptr->do_stun = randint0(4) + 4;
1721 em_ptr->do_conf = randint0(8) + 8;
1722 em_ptr->do_stun = randint0(8) + 8;
1724 (void)set_monster_slow(caster_ptr, em_ptr->g_ptr->m_idx, MON_SLOW(em_ptr->m_ptr) + 10);
1731 if (em_ptr->seen) em_ptr->obvious = TRUE;
1732 if (!em_ptr->who) msg_format(_("%sを指差して呪いをかけた。", "You point at %s and curse."), em_ptr->m_name);
1733 if (randint0(100 + (em_ptr->caster_lev / 2)) < (em_ptr->r_ptr->level + 35))
1735 em_ptr->note = _("には効果がなかった。", " is unaffected.");
1743 if (em_ptr->seen) em_ptr->obvious = TRUE;
1744 if (!em_ptr->who) msg_format(_("%sを指差して恐ろしげに呪いをかけた。", "You point at %s and curse horribly."), em_ptr->m_name);
1746 if (randint0(100 + (em_ptr->caster_lev / 2)) < (em_ptr->r_ptr->level + 35))
1748 em_ptr->note = _("には効果がなかった。", " is unaffected.");
1756 if (em_ptr->seen) em_ptr->obvious = TRUE;
1757 if (!em_ptr->who) msg_format(_("%sを指差し、恐ろしげに呪文を唱えた!", "You point at %s, incanting terribly!"), em_ptr->m_name);
1759 if (randint0(100 + (em_ptr->caster_lev / 2)) < (em_ptr->r_ptr->level + 35))
1761 em_ptr->note = _("には効果がなかった。", " is unaffected.");
1769 if (em_ptr->seen) em_ptr->obvious = TRUE;
1771 msg_format(_("%sの秘孔を突いて、「お前は既に死んでいる」と叫んだ。",
1772 "You point at %s, screaming the word, 'DIE!'."), em_ptr->m_name);
1774 if ((randint0(100 + (em_ptr->caster_lev / 2)) < (em_ptr->r_ptr->level + 35)) && ((em_ptr->who <= 0) || (em_ptr->m_caster_ptr->r_idx != MON_KENSHIROU)))
1776 em_ptr->note = _("には効果がなかった。", " is unaffected.");
1783 if (em_ptr->seen) em_ptr->obvious = TRUE;
1784 if (em_ptr->r_ptr->flags1 & RF1_UNIQUE)
1786 em_ptr->note = _("には効果がなかった。", " is unaffected.");
1791 if ((em_ptr->who > 0) ? ((em_ptr->caster_lev + randint1(em_ptr->dam)) > (em_ptr->r_ptr->level + 10 + randint1(20))) :
1792 (((em_ptr->caster_lev / 2) + randint1(em_ptr->dam)) > (em_ptr->r_ptr->level + randint1(200))))
1794 em_ptr->dam = ((40 + randint1(20)) * em_ptr->m_ptr->hp) / 100;
1796 if (em_ptr->m_ptr->hp < em_ptr->dam) em_ptr->dam = em_ptr->m_ptr->hp - 1;
1800 /* todo 乱数で破滅のを弾いた結果が「耐性を持っている」ことになるのはおかしい */
1801 em_ptr->note = _("は耐性を持っている!", "resists!");
1811 if ((floor_ptr->inside_quest && (quest[floor_ptr->inside_quest].type == QUEST_TYPE_KILL_ALL) && !is_pet(em_ptr->m_ptr)) ||
1812 (em_ptr->r_ptr->flags1 & (RF1_UNIQUE)) || (em_ptr->r_ptr->flags7 & (RF7_NAZGUL)) || (em_ptr->r_ptr->flags7 & (RF7_UNIQUE2)) || (em_ptr->r_ptr->flags1 & RF1_QUESTOR) || em_ptr->m_ptr->parent_m_idx)
1814 msg_format(_("%sには効果がなかった。", "%s is unaffected."), em_ptr->m_name);
1815 em_ptr->skipped = TRUE;
1819 if (is_pet(em_ptr->m_ptr)) nokori_hp = em_ptr->m_ptr->maxhp * 4L;
1820 else if ((caster_ptr->pclass == CLASS_BEASTMASTER) && monster_living(em_ptr->m_ptr->r_idx))
1821 nokori_hp = em_ptr->m_ptr->maxhp * 3 / 10;
1823 nokori_hp = em_ptr->m_ptr->maxhp * 3 / 20;
1825 if (em_ptr->m_ptr->hp >= nokori_hp)
1827 msg_format(_("もっと弱らせないと。", "You need to weaken %s more."), em_ptr->m_name);
1828 em_ptr->skipped = TRUE;
1830 else if (em_ptr->m_ptr->hp < randint0(nokori_hp))
1832 if (em_ptr->m_ptr->mflag2 & MFLAG2_CHAMELEON) choose_new_monster(caster_ptr, em_ptr->g_ptr->m_idx, FALSE, MON_CHAMELEON);
1833 msg_format(_("%sを捕えた!", "You capture %^s!"), em_ptr->m_name);
1834 cap_mon = em_ptr->m_ptr->r_idx;
1835 cap_mspeed = em_ptr->m_ptr->mspeed;
1836 cap_hp = em_ptr->m_ptr->hp;
1837 cap_maxhp = em_ptr->m_ptr->max_maxhp;
1838 cap_nickname = em_ptr->m_ptr->nickname;
1839 if (em_ptr->g_ptr->m_idx == caster_ptr->riding)
1841 if (rakuba(caster_ptr, -1, FALSE))
1843 msg_format(_("地面に落とされた。", "You have fallen from %s."), em_ptr->m_name);
1847 delete_monster_idx(caster_ptr, em_ptr->g_ptr->m_idx);
1849 return GF_SWITCH_TRUE;
1853 msg_format(_("うまく捕まえられなかった。", "You failed to capture %s."), em_ptr->m_name);
1854 em_ptr->skipped = TRUE;
1861 return (gf_switch_result)py_attack(caster_ptr, em_ptr->y, em_ptr->x, em_ptr->dam);
1868 if (em_ptr->seen) em_ptr->obvious = TRUE;
1869 if (em_ptr->r_ptr->flags2 & RF2_EMPTY_MIND)
1871 em_ptr->note = _("には効果がなかった。", " is unaffected.");
1873 em_ptr->skipped = TRUE;
1874 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flags2 |= (RF2_EMPTY_MIND);
1877 if (MON_CSLEEP(em_ptr->m_ptr))
1879 em_ptr->note = _("には効果がなかった。", " is unaffected.");
1881 em_ptr->skipped = TRUE;
1885 if (one_in_(5)) effect = 1;
1886 else if (one_in_(4)) effect = 2;
1887 else if (one_in_(3)) effect = 3;
1892 if ((em_ptr->r_ptr->flags1 & RF1_UNIQUE) ||
1893 (em_ptr->r_ptr->level > randint1((em_ptr->dam - 10) < 1 ? 1 : (em_ptr->dam - 10)) + 10))
1895 em_ptr->note = _("には効果がなかった。", " is unaffected.");
1896 em_ptr->obvious = FALSE;
1900 if (set_monster_slow(caster_ptr, em_ptr->g_ptr->m_idx, MON_SLOW(em_ptr->m_ptr) + 50))
1902 em_ptr->note = _("の動きが遅くなった。", " starts moving slower.");
1906 else if (effect == 2)
1908 em_ptr->do_stun = damroll((caster_ptr->lev / 10) + 3, (em_ptr->dam)) + 1;
1909 if ((em_ptr->r_ptr->flags1 & (RF1_UNIQUE)) ||
1910 (em_ptr->r_ptr->level > randint1((em_ptr->dam - 10) < 1 ? 1 : (em_ptr->dam - 10)) + 10))
1912 em_ptr->do_stun = 0;
1913 em_ptr->note = _("には効果がなかった。", " is unaffected.");
1914 em_ptr->obvious = FALSE;
1917 else if (effect == 3)
1919 if ((em_ptr->r_ptr->flags1 & RF1_UNIQUE) ||
1920 (em_ptr->r_ptr->flags3 & RF3_NO_SLEEP) ||
1921 (em_ptr->r_ptr->level > randint1((em_ptr->dam - 10) < 1 ? 1 : (em_ptr->dam - 10)) + 10))
1923 if (em_ptr->r_ptr->flags3 & RF3_NO_SLEEP)
1925 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flags3 |= (RF3_NO_SLEEP);
1928 em_ptr->note = _("には効果がなかった。", " is unaffected.");
1929 em_ptr->obvious = FALSE;
1933 /* Go to sleep (much) later */
1934 em_ptr->note = _("は眠り込んでしまった!", " falls asleep!");
1935 em_ptr->do_sleep = 500;
1941 em_ptr->note = _("には効果がなかった。", " is unaffected.");
1949 if (em_ptr->seen) em_ptr->obvious = TRUE;
1950 if (genocide_aux(caster_ptr, em_ptr->g_ptr->m_idx, em_ptr->dam, !em_ptr->who, (em_ptr->r_ptr->level + 1) / 2, _("モンスター消滅", "Genocide One")))
1952 if (em_ptr->seen_msg) msg_format(_("%sは消滅した!", "%^s disappeared!"), em_ptr->m_name);
1953 chg_virtue(caster_ptr, V_VITALITY, -1);
1954 return GF_SWITCH_TRUE;
1957 em_ptr->skipped = TRUE;
1963 msg_format(_("%sを写真に撮った。", "You take a photograph of %s."), em_ptr->m_name);
1965 if (em_ptr->r_ptr->flags3 & (RF3_HURT_LITE))
1967 if (em_ptr->seen) em_ptr->obvious = TRUE;
1969 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flags3 |= (RF3_HURT_LITE);
1971 em_ptr->note = _("は光に身をすくめた!", " cringes from the light!");
1972 em_ptr->note_dies = _("は光を受けてしぼんでしまった!", " shrivels away in the light!");
1979 em_ptr->photo = em_ptr->m_ptr->r_idx;
1982 case GF_BLOOD_CURSE:
1984 if (em_ptr->seen) em_ptr->obvious = TRUE;
1989 bool success = FALSE;
1990 if (em_ptr->seen) em_ptr->obvious = TRUE;
1992 if ((em_ptr->r_ptr->flags3 & (RF3_GOOD)) && !floor_ptr->inside_arena)
1994 if (em_ptr->r_ptr->flags3 & (RF3_NO_CONF)) em_ptr->dam -= 50;
1995 if (em_ptr->dam < 1) em_ptr->dam = 1;
1997 if (is_pet(em_ptr->m_ptr))
1999 em_ptr->note = _("の動きが速くなった。", " starts moving faster.");
2000 (void)set_monster_fast(caster_ptr, em_ptr->g_ptr->m_idx, MON_FAST(em_ptr->m_ptr) + 100);
2003 else if ((em_ptr->r_ptr->flags1 & (RF1_QUESTOR)) ||
2004 (em_ptr->r_ptr->flags1 & (RF1_UNIQUE)) ||
2005 (em_ptr->m_ptr->mflag2 & MFLAG2_NOPET) ||
2006 (caster_ptr->cursed & TRC_AGGRAVATE) ||
2007 ((em_ptr->r_ptr->level + 10) > randint1(em_ptr->dam)))
2009 if (one_in_(4)) em_ptr->m_ptr->mflag2 |= MFLAG2_NOPET;
2013 em_ptr->note = _("を支配した。", " is tamed!");
2014 set_pet(caster_ptr, em_ptr->m_ptr);
2015 (void)set_monster_fast(caster_ptr, em_ptr->g_ptr->m_idx, MON_FAST(em_ptr->m_ptr) + 100);
2017 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flags3 |= (RF3_GOOD);
2024 if (!(em_ptr->r_ptr->flags3 & RF3_NO_FEAR))
2026 em_ptr->do_fear = randint1(90) + 10;
2028 else if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
2029 em_ptr->r_ptr->r_flags3 |= (RF3_NO_FEAR);
2037 if (em_ptr->seen) em_ptr->obvious = TRUE;
2039 if (randint0(100 + em_ptr->dam) < (em_ptr->r_ptr->level + 50))
2041 em_ptr->note = _("には効果がなかった。", " is unaffected.");
2048 em_ptr->skipped = TRUE;
2054 return GF_SWITCH_CONTINUE;