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" // 暫定、後で消すかも.
22 #include "spell/spells-type.h"
25 * @brief 魔法の効果によって様々なメッセーを出力したり与えるダメージの増減を行ったりする
26 * @param em_ptr モンスター効果構造体への参照ポインタ
27 * @return ここのスイッチングで終るならTRUEかFALSE、後続処理を実行するならCONTINUE
29 gf_switch_result switch_effects_monster(player_type *caster_ptr, effect_monster_type *em_ptr)
31 floor_type *floor_ptr = caster_ptr->current_floor_ptr;
32 switch (em_ptr->effect_type)
36 if (em_ptr->seen) em_ptr->obvious = TRUE;
41 if (em_ptr->seen) em_ptr->obvious = TRUE;
42 if (em_ptr->r_ptr->flagsr & RFR_IM_ACID)
44 em_ptr->note = _("にはかなり耐性がある!", " resists a lot.");
46 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flagsr |= (RFR_IM_ACID);
52 if (em_ptr->seen) em_ptr->obvious = TRUE;
53 if (em_ptr->r_ptr->flagsr & RFR_IM_ELEC)
55 em_ptr->note = _("にはかなり耐性がある!", " resists a lot.");
57 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flagsr |= (RFR_IM_ELEC);
63 if (em_ptr->seen) em_ptr->obvious = TRUE;
64 if (em_ptr->r_ptr->flagsr & RFR_IM_FIRE)
66 em_ptr->note = _("にはかなり耐性がある!", " resists a lot.");
68 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flagsr |= (RFR_IM_FIRE);
70 else if (em_ptr->r_ptr->flags3 & (RF3_HURT_FIRE))
72 em_ptr->note = _("はひどい痛手をうけた。", " is hit hard.");
74 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flags3 |= (RF3_HURT_FIRE);
80 if (em_ptr->seen) em_ptr->obvious = TRUE;
81 if (em_ptr->r_ptr->flagsr & RFR_IM_COLD)
83 em_ptr->note = _("にはかなり耐性がある!", " resists a lot.");
85 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flagsr |= (RFR_IM_COLD);
87 else if (em_ptr->r_ptr->flags3 & (RF3_HURT_COLD))
89 em_ptr->note = _("はひどい痛手をうけた。", " is hit hard.");
91 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flags3 |= (RF3_HURT_COLD);
97 if (em_ptr->seen) em_ptr->obvious = TRUE;
98 if (em_ptr->r_ptr->flagsr & RFR_IM_POIS)
100 em_ptr->note = _("にはかなり耐性がある!", " resists a lot.");
102 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flagsr |= (RFR_IM_POIS);
108 if (em_ptr->seen) em_ptr->obvious = TRUE;
109 if (em_ptr->r_ptr->flagsr & RFR_IM_POIS)
111 em_ptr->note = _("には耐性がある。", " resists.");
112 em_ptr->dam *= 3; em_ptr->dam /= randint1(6) + 6;
113 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flagsr |= (RFR_IM_POIS);
115 else if (one_in_(3)) em_ptr->do_polymorph = TRUE;
120 if (em_ptr->seen) em_ptr->obvious = TRUE;
121 if (em_ptr->r_ptr->flags3 & RF3_GOOD)
123 em_ptr->note = _("はひどい痛手をうけた。", " is hit hard.");
125 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flags3 |= (RF3_GOOD);
131 if (em_ptr->seen) em_ptr->obvious = TRUE;
132 if (em_ptr->r_ptr->flags3 & RF3_EVIL)
135 em_ptr->note = _("はひどい痛手をうけた。", " is hit hard.");
136 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flags3 |= RF3_EVIL;
140 em_ptr->note = _("には耐性がある。", " resists.");
141 em_ptr->dam *= 3; em_ptr->dam /= randint1(6) + 6;
147 if (em_ptr->seen) em_ptr->obvious = TRUE;
152 if (em_ptr->seen) em_ptr->obvious = TRUE;
153 if (em_ptr->r_ptr->flagsr & RFR_RES_PLAS)
155 em_ptr->note = _("には耐性がある。", " resists.");
156 em_ptr->dam *= 3; em_ptr->dam /= randint1(6) + 6;
157 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flagsr |= (RFR_RES_PLAS);
164 if (em_ptr->seen) em_ptr->obvious = TRUE;
165 if (em_ptr->r_ptr->flagsr & RFR_RES_NETH)
167 if (em_ptr->r_ptr->flags3 & RF3_UNDEAD)
169 em_ptr->note = _("には完全な耐性がある!", " is immune.");
171 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flags3 |= (RF3_UNDEAD);
175 em_ptr->note = _("には耐性がある。", " resists.");
176 em_ptr->dam *= 3; em_ptr->dam /= randint1(6) + 6;
178 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flagsr |= (RFR_RES_NETH);
180 else if (em_ptr->r_ptr->flags3 & RF3_EVIL)
182 em_ptr->note = _("はいくらか耐性を示した。", " resists somewhat.");
184 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flags3 |= (RF3_EVIL);
191 if (em_ptr->seen) em_ptr->obvious = TRUE;
192 if (em_ptr->r_ptr->flagsr & RFR_RES_WATE)
194 if ((em_ptr->m_ptr->r_idx == MON_WATER_ELEM) || (em_ptr->m_ptr->r_idx == MON_UNMAKER))
196 em_ptr->note = _("には完全な耐性がある!", " is immune.");
201 em_ptr->note = _("には耐性がある。", " resists.");
202 em_ptr->dam *= 3; em_ptr->dam /= randint1(6) + 6;
204 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flagsr |= (RFR_RES_WATE);
211 if (em_ptr->seen) em_ptr->obvious = TRUE;
212 if (em_ptr->r_ptr->flagsr & RFR_RES_CHAO)
214 em_ptr->note = _("には耐性がある。", " resists.");
215 em_ptr->dam *= 3; em_ptr->dam /= randint1(6) + 6;
216 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flagsr |= (RFR_RES_CHAO);
218 else if ((em_ptr->r_ptr->flags3 & RF3_DEMON) && one_in_(3))
220 em_ptr->note = _("はいくらか耐性を示した。", " resists somewhat.");
221 em_ptr->dam *= 3; em_ptr->dam /= randint1(6) + 6;
222 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flags3 |= (RF3_DEMON);
226 em_ptr->do_polymorph = TRUE;
227 em_ptr->do_conf = (5 + randint1(11) + em_ptr->r) / (em_ptr->r + 1);
234 if (em_ptr->seen) em_ptr->obvious = TRUE;
235 if (em_ptr->r_ptr->flagsr & RFR_RES_SHAR)
237 em_ptr->note = _("には耐性がある。", " resists.");
238 em_ptr->dam *= 3; em_ptr->dam /= randint1(6) + 6;
239 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flagsr |= (RFR_RES_SHAR);
246 if (em_ptr->seen) em_ptr->obvious = TRUE;
247 if (em_ptr->r_ptr->flagsr & RFR_RES_SHAR)
249 em_ptr->note = _("はいくらか耐性を示した。", " resists somewhat.");
251 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flagsr |= (RFR_RES_SHAR);
258 if (em_ptr->seen) em_ptr->obvious = TRUE;
259 if (em_ptr->r_ptr->flagsr & RFR_RES_SOUN)
261 em_ptr->note = _("には耐性がある。", " resists.");
262 em_ptr->dam *= 2; em_ptr->dam /= randint1(6) + 6;
263 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flagsr |= (RFR_RES_SOUN);
266 em_ptr->do_stun = (10 + randint1(15) + em_ptr->r) / (em_ptr->r + 1);
272 if (em_ptr->seen) em_ptr->obvious = TRUE;
273 if (em_ptr->r_ptr->flags3 & RF3_NO_CONF)
275 em_ptr->note = _("には耐性がある。", " resists.");
276 em_ptr->dam *= 3; em_ptr->dam /= randint1(6) + 6;
277 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flags3 |= (RF3_NO_CONF);
280 em_ptr->do_conf = (10 + randint1(15) + em_ptr->r) / (em_ptr->r + 1);
286 if (em_ptr->seen) em_ptr->obvious = TRUE;
287 if (em_ptr->r_ptr->flagsr & RFR_RES_DISE)
289 em_ptr->note = _("には耐性がある。", " resists.");
290 em_ptr->dam *= 3; em_ptr->dam /= randint1(6) + 6;
291 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flagsr |= (RFR_RES_DISE);
298 if (em_ptr->seen) em_ptr->obvious = TRUE;
299 if (em_ptr->r_ptr->flagsr & RFR_RES_NEXU)
301 em_ptr->note = _("には耐性がある。", " resists.");
302 em_ptr->dam *= 3; em_ptr->dam /= randint1(6) + 6;
303 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flagsr |= (RFR_RES_NEXU);
310 if (em_ptr->seen) em_ptr->obvious = TRUE;
311 if (em_ptr->r_ptr->flagsr & RFR_RES_WALL)
313 em_ptr->note = _("には耐性がある。", " resists.");
314 em_ptr->dam *= 3; em_ptr->dam /= randint1(6) + 6;
315 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flagsr |= (RFR_RES_WALL);
318 em_ptr->do_stun = (randint1(15) + em_ptr->r) / (em_ptr->r + 1);
324 if (em_ptr->seen) em_ptr->obvious = TRUE;
325 if (em_ptr->r_ptr->flagsr & RFR_RES_INER)
327 em_ptr->note = _("には耐性がある。", " resists.");
328 em_ptr->dam *= 3; em_ptr->dam /= randint1(6) + 6;
329 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flagsr |= (RFR_RES_INER);
333 /* Powerful monsters can resist */
334 if ((em_ptr->r_ptr->flags1 & (RF1_UNIQUE)) ||
335 (em_ptr->r_ptr->level > randint1((em_ptr->dam - 10) < 1 ? 1 : (em_ptr->dam - 10)) + 10))
337 em_ptr->obvious = FALSE;
339 /* Normal monsters slow down */
342 if (set_monster_slow(caster_ptr, em_ptr->g_ptr->m_idx, MON_SLOW(em_ptr->m_ptr) + 50))
344 em_ptr->note = _("の動きが遅くなった。", " starts moving slower.");
353 if (em_ptr->seen) em_ptr->obvious = TRUE;
354 if (em_ptr->r_ptr->flagsr & RFR_RES_TIME)
356 em_ptr->note = _("には耐性がある。", " resists.");
357 em_ptr->dam *= 3; em_ptr->dam /= randint1(6) + 6;
358 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flagsr |= (RFR_RES_TIME);
361 em_ptr->do_time = (em_ptr->dam + 1) / 2;
367 bool resist_tele = FALSE;
369 if (em_ptr->seen) em_ptr->obvious = TRUE;
370 if (em_ptr->r_ptr->flagsr & RFR_RES_TELE)
372 if (em_ptr->r_ptr->flags1 & (RF1_UNIQUE))
374 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flagsr |= RFR_RES_TELE;
375 em_ptr->note = _("には効果がなかった。", " is unaffected!");
378 else if (em_ptr->r_ptr->level > randint1(100))
380 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flagsr |= RFR_RES_TELE;
381 em_ptr->note = _("には耐性がある!", " resists!");
386 if (!resist_tele) em_ptr->do_dist = 10;
387 else em_ptr->do_dist = 0;
389 if (caster_ptr->riding && (em_ptr->g_ptr->m_idx == caster_ptr->riding)) em_ptr->do_dist = 0;
391 if (em_ptr->r_ptr->flagsr & RFR_RES_GRAV)
393 em_ptr->note = _("には耐性がある!", " resists!");
394 em_ptr->dam *= 3; em_ptr->dam /= randint1(6) + 6;
396 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flagsr |= (RFR_RES_GRAV);
401 /* Powerful monsters can resist */
402 if ((em_ptr->r_ptr->flags1 & (RF1_UNIQUE)) ||
403 (em_ptr->r_ptr->level > randint1((em_ptr->dam - 10) < 1 ? 1 : (em_ptr->dam - 10)) + 10))
405 em_ptr->obvious = FALSE;
407 /* Normal monsters slow down */
410 if (set_monster_slow(caster_ptr, em_ptr->g_ptr->m_idx, MON_SLOW(em_ptr->m_ptr) + 50))
412 em_ptr->note = _("の動きが遅くなった。", " starts moving slower.");
417 em_ptr->do_stun = damroll((em_ptr->caster_lev / 20) + 3, (em_ptr->dam)) + 1;
419 /* Attempt a saving throw */
420 if ((em_ptr->r_ptr->flags1 & (RF1_UNIQUE)) ||
421 (em_ptr->r_ptr->level > randint1((em_ptr->dam - 10) < 1 ? 1 : (em_ptr->dam - 10)) + 10))
425 /* No em_ptr->obvious effect */
426 em_ptr->note = _("には効果がなかった。", " is unaffected!");
427 em_ptr->obvious = FALSE;
437 if (em_ptr->seen) em_ptr->obvious = TRUE;
440 case GF_DISINTEGRATE:
442 if (em_ptr->seen) em_ptr->obvious = TRUE;
443 if (em_ptr->r_ptr->flags3 & RF3_HURT_ROCK)
445 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flags3 |= (RF3_HURT_ROCK);
446 em_ptr->note = _("の皮膚がただれた!", " loses some skin!");
447 em_ptr->note_dies = _("は蒸発した!", " evaporates!");
455 if (em_ptr->seen) em_ptr->obvious = TRUE;
456 if (!(los(caster_ptr, em_ptr->m_ptr->fy, em_ptr->m_ptr->fx, caster_ptr->y, caster_ptr->x)))
458 if (em_ptr->seen_msg)
459 msg_format(_("%sはあなたが見えないので影響されない!", "%^s can't see you, and isn't affected!"), em_ptr->m_name);
460 em_ptr->skipped = TRUE;
464 if (em_ptr->r_ptr->flags2 & RF2_EMPTY_MIND)
467 em_ptr->note = _("には完全な耐性がある!", " is immune.");
468 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flags2 |= (RF2_EMPTY_MIND);
471 else if ((em_ptr->r_ptr->flags2 & (RF2_STUPID | RF2_WEIRD_MIND)) ||
472 (em_ptr->r_ptr->flags3 & RF3_ANIMAL) ||
473 (em_ptr->r_ptr->level > randint1(3 * em_ptr->dam)))
475 em_ptr->note = _("には耐性がある!", " resists!");
479 * Powerful demons & undead can turn a mindcrafter's
480 * attacks back on them
482 if ((em_ptr->r_ptr->flags3 & (RF3_UNDEAD | RF3_DEMON)) &&
483 (em_ptr->r_ptr->level > caster_ptr->lev / 2) &&
487 msg_format(_("%^sの堕落した精神は攻撃を跳ね返した!",
488 (em_ptr->seen ? "%^s's corrupted mind backlashes your attack!" :
489 "%^ss corrupted mind backlashes your attack!")), em_ptr->m_name);
491 if ((randint0(100 + em_ptr->r_ptr->level / 2) < caster_ptr->skill_sav) && !CHECK_MULTISHADOW(caster_ptr))
493 msg_print(_("しかし効力を跳ね返した!", "You resist the effects!"));
497 /* Injure +/- confusion */
498 monster_desc(caster_ptr, em_ptr->killer, em_ptr->m_ptr, MD_WRONGDOER_NAME);
499 take_hit(caster_ptr, DAMAGE_ATTACK, em_ptr->dam, em_ptr->killer, -1); /* has already been /3 */
500 if (one_in_(4) && !CHECK_MULTISHADOW(caster_ptr))
505 set_confused(caster_ptr, caster_ptr->confused + 3 + randint1(em_ptr->dam));
508 set_stun(caster_ptr, caster_ptr->stun + randint1(em_ptr->dam));
512 if (em_ptr->r_ptr->flags3 & RF3_NO_FEAR)
513 em_ptr->note = _("には効果がなかった。", " is unaffected.");
515 set_afraid(caster_ptr, caster_ptr->afraid + 3 + randint1(em_ptr->dam));
519 if (!caster_ptr->free_act)
520 (void)set_paralyzed(caster_ptr, caster_ptr->paralyzed + randint1(em_ptr->dam));
530 if ((em_ptr->dam > 0) && one_in_(4))
535 em_ptr->do_conf = 3 + randint1(em_ptr->dam);
538 em_ptr->do_stun = 3 + randint1(em_ptr->dam);
541 em_ptr->do_fear = 3 + randint1(em_ptr->dam);
544 em_ptr->note = _("は眠り込んでしまった!", " falls asleep!");
545 em_ptr->do_sleep = 3 + randint1(em_ptr->dam);
550 em_ptr->note_dies = _("の精神は崩壊し、肉体は抜け殻となった。", " collapses, a mindless husk.");
555 if (em_ptr->seen) em_ptr->obvious = TRUE;
556 if (em_ptr->r_ptr->flags2 & RF2_EMPTY_MIND)
559 em_ptr->note = _("には完全な耐性がある!", " is immune.");
561 else if ((em_ptr->r_ptr->flags2 & (RF2_STUPID | RF2_WEIRD_MIND)) ||
562 (em_ptr->r_ptr->flags3 & RF3_ANIMAL) ||
563 (em_ptr->r_ptr->level > randint1(3 * em_ptr->dam)))
565 em_ptr->note = _("には耐性がある!", " resists!");
569 * Powerful demons & undead can turn a mindcrafter's
570 * attacks back on them
572 if ((em_ptr->r_ptr->flags3 & (RF3_UNDEAD | RF3_DEMON)) &&
573 (em_ptr->r_ptr->level > caster_ptr->lev / 2) &&
577 msg_format(_("%^sの堕落した精神は攻撃を跳ね返した!",
578 (em_ptr->seen ? "%^s's corrupted mind backlashes your attack!" :
579 "%^ss corrupted mind backlashes your attack!")), em_ptr->m_name);
580 if ((randint0(100 + em_ptr->r_ptr->level / 2) < caster_ptr->skill_sav) && !CHECK_MULTISHADOW(caster_ptr))
582 msg_print(_("あなたは効力を跳ね返した!", "You resist the effects!"));
586 monster_desc(caster_ptr, em_ptr->killer, em_ptr->m_ptr, MD_WRONGDOER_NAME);
587 if (!CHECK_MULTISHADOW(caster_ptr))
589 msg_print(_("超能力パワーを吸いとられた!", "Your psychic energy is drained!"));
590 caster_ptr->csp -= damroll(5, em_ptr->dam) / 2;
591 if (caster_ptr->csp < 0) caster_ptr->csp = 0;
592 caster_ptr->redraw |= PR_MANA;
593 caster_ptr->window |= (PW_SPELL);
595 take_hit(caster_ptr, DAMAGE_ATTACK, em_ptr->dam, em_ptr->killer, -1); /* has already been /3 */
601 else if (em_ptr->dam > 0)
603 int b = damroll(5, em_ptr->dam) / 4;
604 concptr str = (caster_ptr->pclass == CLASS_MINDCRAFTER) ? _("超能力パワー", "psychic energy") : _("魔力", "mana");
605 concptr msg = _("あなたは%sの苦痛を%sに変換した!",
606 (em_ptr->seen ? "You convert %s's pain into %s!" :
607 "You convert %ss pain into %s!"));
608 msg_format(msg, em_ptr->m_name, str);
610 b = MIN(caster_ptr->msp, caster_ptr->csp + b);
612 caster_ptr->redraw |= PR_MANA;
613 caster_ptr->window |= (PW_SPELL);
616 em_ptr->note_dies = _("の精神は崩壊し、肉体は抜け殻となった。", " collapses, a mindless husk.");
621 if (em_ptr->seen) em_ptr->obvious = TRUE;
624 if (caster_ptr->riding && (em_ptr->g_ptr->m_idx == caster_ptr->riding)) em_ptr->do_dist = 0;
625 else em_ptr->do_dist = 7;
628 em_ptr->do_stun = damroll((em_ptr->caster_lev / 20) + 3, em_ptr->dam) + 1;
629 if ((em_ptr->r_ptr->flags1 & RF1_UNIQUE) ||
630 (em_ptr->r_ptr->level > 5 + randint1(em_ptr->dam)))
633 em_ptr->obvious = FALSE;
640 if (em_ptr->seen) em_ptr->obvious = TRUE;
645 if (em_ptr->seen) em_ptr->obvious = TRUE;
650 if (!is_hostile(em_ptr->m_ptr)) break;
651 if (em_ptr->seen) em_ptr->obvious = TRUE;
652 if ((em_ptr->r_ptr->flags1 & (RF1_UNIQUE | RF1_QUESTOR)) ||
653 (em_ptr->r_ptr->flags3 & RF3_NO_CONF) ||
654 (em_ptr->r_ptr->level > randint1((em_ptr->dam - 10) < 1 ? 1 : (em_ptr->dam - 10)) + 10))
656 if (em_ptr->r_ptr->flags3 & RF3_NO_CONF)
658 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flags3 |= (RF3_NO_CONF);
664 * Powerful demons & undead can turn a mindcrafter's
665 * attacks back on them
667 if ((em_ptr->r_ptr->flags3 & (RF3_UNDEAD | RF3_DEMON)) &&
668 (em_ptr->r_ptr->level > caster_ptr->lev / 2) &&
672 msg_format(_("%^sの堕落した精神は攻撃を跳ね返した!",
673 (em_ptr->seen ? "%^s's corrupted mind backlashes your attack!" :
674 "%^ss corrupted mind backlashes your attack!")), em_ptr->m_name);
677 if (randint0(100 + em_ptr->r_ptr->level / 2) < caster_ptr->skill_sav)
679 msg_print(_("しかし効力を跳ね返した!", "You resist the effects!"));
683 /* Confuse, stun, terrify */
687 set_stun(caster_ptr, caster_ptr->stun + em_ptr->dam / 2);
690 set_confused(caster_ptr, caster_ptr->confused + em_ptr->dam / 2);
694 if (em_ptr->r_ptr->flags3 & RF3_NO_FEAR)
695 em_ptr->note = _("には効果がなかった。", " is unaffected.");
697 set_afraid(caster_ptr, caster_ptr->afraid + em_ptr->dam);
704 em_ptr->note = _("には効果がなかった。", " is unaffected.");
705 em_ptr->obvious = FALSE;
710 if (!common_saving_throw_charm(caster_ptr, em_ptr->dam, em_ptr->m_ptr))
712 em_ptr->note = _("があなたに隷属した。", " is in your thrall!");
713 set_pet(caster_ptr, em_ptr->m_ptr);
720 em_ptr->do_stun = em_ptr->dam / 2;
723 em_ptr->do_conf = em_ptr->dam / 2;
726 em_ptr->do_fear = em_ptr->dam;
736 if (em_ptr->seen) em_ptr->obvious = TRUE;
737 em_ptr->do_stun = (randint1(15) + 1) / (em_ptr->r + 1);
738 if (em_ptr->r_ptr->flagsr & RFR_IM_COLD)
740 em_ptr->note = _("にはかなり耐性がある!", " resists a lot.");
742 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flagsr |= (RFR_IM_COLD);
744 else if (em_ptr->r_ptr->flags3 & (RF3_HURT_COLD))
746 em_ptr->note = _("はひどい痛手をうけた。", " is hit hard.");
748 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flags3 |= (RF3_HURT_COLD);
755 if (em_ptr->seen) em_ptr->obvious = TRUE;
756 if (!monster_living(em_ptr->m_ptr->r_idx))
758 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
760 if (em_ptr->r_ptr->flags3 & RF3_DEMON) em_ptr->r_ptr->r_flags3 |= (RF3_DEMON);
761 if (em_ptr->r_ptr->flags3 & RF3_UNDEAD) em_ptr->r_ptr->r_flags3 |= (RF3_UNDEAD);
762 if (em_ptr->r_ptr->flags3 & RF3_NONLIVING) em_ptr->r_ptr->r_flags3 |= (RF3_NONLIVING);
764 em_ptr->note = _("には効果がなかった。", " is unaffected.");
765 em_ptr->obvious = FALSE;
769 em_ptr->do_time = (em_ptr->dam + 7) / 8;
775 if (em_ptr->seen) em_ptr->obvious = TRUE;
776 if (!monster_living(em_ptr->m_ptr->r_idx))
778 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
780 if (em_ptr->r_ptr->flags3 & RF3_DEMON) em_ptr->r_ptr->r_flags3 |= (RF3_DEMON);
781 if (em_ptr->r_ptr->flags3 & RF3_UNDEAD) em_ptr->r_ptr->r_flags3 |= (RF3_UNDEAD);
782 if (em_ptr->r_ptr->flags3 & RF3_NONLIVING) em_ptr->r_ptr->r_flags3 |= (RF3_NONLIVING);
784 em_ptr->note = _("には完全な耐性がある!", " is immune.");
785 em_ptr->obvious = FALSE;
788 else if (((em_ptr->r_ptr->flags1 & RF1_UNIQUE) &&
789 (randint1(888) != 666)) ||
790 (((em_ptr->r_ptr->level + randint1(20)) > randint1((em_ptr->caster_lev / 2) + randint1(10))) &&
791 randint1(100) != 66))
793 em_ptr->note = _("には耐性がある!", " resists!");
794 em_ptr->obvious = FALSE;
802 if (em_ptr->seen) em_ptr->obvious = TRUE;
803 em_ptr->do_polymorph = TRUE;
805 /* Powerful monsters can resist */
806 if ((em_ptr->r_ptr->flags1 & RF1_UNIQUE) ||
807 (em_ptr->r_ptr->flags1 & RF1_QUESTOR) ||
808 (em_ptr->r_ptr->level > randint1((em_ptr->dam - 10) < 1 ? 1 : (em_ptr->dam - 10)) + 10))
810 em_ptr->note = _("には効果がなかった。", " is unaffected.");
811 em_ptr->do_polymorph = FALSE;
812 em_ptr->obvious = FALSE;
820 if (em_ptr->seen) em_ptr->obvious = TRUE;
822 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)))
824 em_ptr->note = _("には効果がなかった。", " is unaffected.");
828 em_ptr->m_ptr->hp = em_ptr->m_ptr->maxhp;
829 if (multiply_monster(caster_ptr, em_ptr->g_ptr->m_idx, TRUE, 0L))
831 em_ptr->note = _("が分裂した!", " spawns!");
840 if (em_ptr->seen) em_ptr->obvious = TRUE;
842 (void)set_monster_csleep(caster_ptr, em_ptr->g_ptr->m_idx, 0);
844 if (em_ptr->m_ptr->maxhp < em_ptr->m_ptr->max_maxhp)
846 if (em_ptr->seen_msg) msg_format(_("%^sの強さが戻った。", "%^s recovers %s vitality."), em_ptr->m_name, em_ptr->m_poss);
847 em_ptr->m_ptr->maxhp = em_ptr->m_ptr->max_maxhp;
852 if (caster_ptr->health_who == em_ptr->g_ptr->m_idx) caster_ptr->redraw |= (PR_HEALTH);
853 if (caster_ptr->riding == em_ptr->g_ptr->m_idx) caster_ptr->redraw |= (PR_UHEALTH);
860 if (em_ptr->seen) em_ptr->obvious = TRUE;
863 (void)set_monster_csleep(caster_ptr, em_ptr->g_ptr->m_idx, 0);
864 if (MON_STUNNED(em_ptr->m_ptr))
866 if (em_ptr->seen_msg) msg_format(_("%^sは朦朧状態から立ち直った。", "%^s is no longer stunned."), em_ptr->m_name);
867 (void)set_monster_stunned(caster_ptr, em_ptr->g_ptr->m_idx, 0);
869 if (MON_CONFUSED(em_ptr->m_ptr))
871 if (em_ptr->seen_msg) msg_format(_("%^sは混乱から立ち直った。", "%^s is no longer confused."), em_ptr->m_name);
872 (void)set_monster_confused(caster_ptr, em_ptr->g_ptr->m_idx, 0);
874 if (MON_MONFEAR(em_ptr->m_ptr))
876 if (em_ptr->seen_msg) msg_format(_("%^sは勇気を取り戻した。", "%^s recovers %s courage."), em_ptr->m_name, em_ptr->m_poss);
877 (void)set_monster_monfear(caster_ptr, em_ptr->g_ptr->m_idx, 0);
880 if (em_ptr->m_ptr->hp < 30000) em_ptr->m_ptr->hp += em_ptr->dam;
881 if (em_ptr->m_ptr->hp > em_ptr->m_ptr->maxhp) em_ptr->m_ptr->hp = em_ptr->m_ptr->maxhp;
885 chg_virtue(caster_ptr, V_VITALITY, 1);
887 if (em_ptr->r_ptr->flags1 & RF1_UNIQUE)
888 chg_virtue(caster_ptr, V_INDIVIDUALISM, 1);
890 if (is_friendly(em_ptr->m_ptr))
891 chg_virtue(caster_ptr, V_HONOUR, 1);
892 else if (!(em_ptr->r_ptr->flags3 & RF3_EVIL))
894 if (em_ptr->r_ptr->flags3 & RF3_GOOD)
895 chg_virtue(caster_ptr, V_COMPASSION, 2);
897 chg_virtue(caster_ptr, V_COMPASSION, 1);
900 if (em_ptr->r_ptr->flags3 & RF3_ANIMAL)
901 chg_virtue(caster_ptr, V_NATURE, 1);
904 if (em_ptr->m_ptr->r_idx == MON_LEPER)
906 em_ptr->heal_leper = TRUE;
907 if (!em_ptr->who) chg_virtue(caster_ptr, V_COMPASSION, 5);
910 if (caster_ptr->health_who == em_ptr->g_ptr->m_idx) caster_ptr->redraw |= (PR_HEALTH);
911 if (caster_ptr->riding == em_ptr->g_ptr->m_idx) caster_ptr->redraw |= (PR_UHEALTH);
913 em_ptr->note = _("は体力を回復したようだ。", " looks healthier.");
920 if (em_ptr->seen) em_ptr->obvious = TRUE;
922 if (set_monster_fast(caster_ptr, em_ptr->g_ptr->m_idx, MON_FAST(em_ptr->m_ptr) + 100))
924 em_ptr->note = _("の動きが速くなった。", " starts moving faster.");
929 if (em_ptr->r_ptr->flags1 & RF1_UNIQUE)
930 chg_virtue(caster_ptr, V_INDIVIDUALISM, 1);
931 if (is_friendly(em_ptr->m_ptr))
932 chg_virtue(caster_ptr, V_HONOUR, 1);
940 if (em_ptr->seen) em_ptr->obvious = TRUE;
942 /* Powerful monsters can resist */
943 if ((em_ptr->r_ptr->flags1 & RF1_UNIQUE) ||
944 (em_ptr->r_ptr->level > randint1((em_ptr->dam - 10) < 1 ? 1 : (em_ptr->dam - 10)) + 10))
946 em_ptr->note = _("には効果がなかった。", " is unaffected.");
947 em_ptr->obvious = FALSE;
951 if (set_monster_slow(caster_ptr, em_ptr->g_ptr->m_idx, MON_SLOW(em_ptr->m_ptr) + 50))
953 em_ptr->note = _("の動きが遅くなった。", " starts moving slower.");
962 if (em_ptr->seen) em_ptr->obvious = TRUE;
964 if ((em_ptr->r_ptr->flags1 & RF1_UNIQUE) ||
965 (em_ptr->r_ptr->flags3 & RF3_NO_SLEEP) ||
966 (em_ptr->r_ptr->level > randint1((em_ptr->dam - 10) < 1 ? 1 : (em_ptr->dam - 10)) + 10))
968 if (em_ptr->r_ptr->flags3 & RF3_NO_SLEEP)
970 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flags3 |= (RF3_NO_SLEEP);
973 em_ptr->note = _("には効果がなかった。", " is unaffected.");
974 em_ptr->obvious = FALSE;
978 em_ptr->note = _("は眠り込んでしまった!", " falls asleep!");
979 em_ptr->do_sleep = 500;
987 if (em_ptr->seen) em_ptr->obvious = TRUE;
989 if ((em_ptr->r_ptr->flags1 & RF1_UNIQUE) ||
990 !(em_ptr->r_ptr->flags3 & RF3_EVIL) ||
991 (em_ptr->r_ptr->level > randint1((em_ptr->dam - 10) < 1 ? 1 : (em_ptr->dam - 10)) + 10))
993 em_ptr->note = _("には効果がなかった。", " is unaffected.");
994 em_ptr->obvious = FALSE;
998 em_ptr->note = _("は動けなくなった!", " is suspended!");
999 em_ptr->do_sleep = 500;
1007 if (em_ptr->seen) em_ptr->obvious = TRUE;
1009 if ((em_ptr->r_ptr->flags1 & RF1_UNIQUE) ||
1010 (em_ptr->r_ptr->level > randint1((em_ptr->dam - 10) < 1 ? 1 : (em_ptr->dam - 10)) + 10))
1012 em_ptr->note = _("には効果がなかった。", " is unaffected.");
1013 em_ptr->obvious = FALSE;
1017 em_ptr->note = _("は動けなくなった!", " is suspended!");
1018 em_ptr->do_sleep = 500;
1027 vir = virtue_number(caster_ptr, V_HARMONY);
1030 em_ptr->dam += caster_ptr->virtues[vir - 1] / 10;
1033 vir = virtue_number(caster_ptr, V_INDIVIDUALISM);
1036 em_ptr->dam -= caster_ptr->virtues[vir - 1] / 20;
1039 if (em_ptr->seen) em_ptr->obvious = TRUE;
1041 if (common_saving_throw_charm(caster_ptr, em_ptr->dam, em_ptr->m_ptr))
1043 em_ptr->note = _("には効果がなかった。", " is unaffected.");
1044 em_ptr->obvious = FALSE;
1046 if (one_in_(4)) em_ptr->m_ptr->mflag2 |= MFLAG2_NOPET;
1048 else if (caster_ptr->cursed & TRC_AGGRAVATE)
1050 em_ptr->note = _("はあなたに敵意を抱いている!", " hates you too much!");
1051 if (one_in_(4)) em_ptr->m_ptr->mflag2 |= MFLAG2_NOPET;
1055 em_ptr->note = _("は突然友好的になったようだ!", " suddenly seems friendly!");
1056 set_pet(caster_ptr, em_ptr->m_ptr);
1058 chg_virtue(caster_ptr, V_INDIVIDUALISM, -1);
1059 if (em_ptr->r_ptr->flags3 & RF3_ANIMAL)
1060 chg_virtue(caster_ptr, V_NATURE, 1);
1066 case GF_CONTROL_UNDEAD:
1069 if (em_ptr->seen) em_ptr->obvious = TRUE;
1071 vir = virtue_number(caster_ptr, V_UNLIFE);
1074 em_ptr->dam += caster_ptr->virtues[vir - 1] / 10;
1077 vir = virtue_number(caster_ptr, V_INDIVIDUALISM);
1080 em_ptr->dam -= caster_ptr->virtues[vir - 1] / 20;
1083 if (common_saving_throw_control(caster_ptr, em_ptr->dam, em_ptr->m_ptr) ||
1084 !(em_ptr->r_ptr->flags3 & RF3_UNDEAD))
1086 em_ptr->note = _("には効果がなかった。", " is unaffected.");
1087 em_ptr->obvious = FALSE;
1088 if (one_in_(4)) em_ptr->m_ptr->mflag2 |= MFLAG2_NOPET;
1090 else if (caster_ptr->cursed & TRC_AGGRAVATE)
1092 em_ptr->note = _("はあなたに敵意を抱いている!", " hates you too much!");
1093 if (one_in_(4)) em_ptr->m_ptr->mflag2 |= MFLAG2_NOPET;
1097 em_ptr->note = _("は既にあなたの奴隷だ!", " is in your thrall!");
1098 set_pet(caster_ptr, em_ptr->m_ptr);
1104 case GF_CONTROL_DEMON:
1107 if (em_ptr->seen) em_ptr->obvious = TRUE;
1109 vir = virtue_number(caster_ptr, V_UNLIFE);
1112 em_ptr->dam += caster_ptr->virtues[vir - 1] / 10;
1115 vir = virtue_number(caster_ptr, V_INDIVIDUALISM);
1118 em_ptr->dam -= caster_ptr->virtues[vir - 1] / 20;
1121 if (common_saving_throw_control(caster_ptr, em_ptr->dam, em_ptr->m_ptr) ||
1122 !(em_ptr->r_ptr->flags3 & RF3_DEMON))
1124 em_ptr->note = _("には効果がなかった。", " is unaffected.");
1125 em_ptr->obvious = FALSE;
1126 if (one_in_(4)) em_ptr->m_ptr->mflag2 |= MFLAG2_NOPET;
1128 else if (caster_ptr->cursed & TRC_AGGRAVATE)
1130 em_ptr->note = _("はあなたに敵意を抱いている!", " hates you too much!");
1131 if (one_in_(4)) em_ptr->m_ptr->mflag2 |= MFLAG2_NOPET;
1135 em_ptr->note = _("は既にあなたの奴隷だ!", " is in your thrall!");
1136 set_pet(caster_ptr, em_ptr->m_ptr);
1142 case GF_CONTROL_ANIMAL:
1145 if (em_ptr->seen) em_ptr->obvious = TRUE;
1147 vir = virtue_number(caster_ptr, V_NATURE);
1150 em_ptr->dam += caster_ptr->virtues[vir - 1] / 10;
1153 vir = virtue_number(caster_ptr, V_INDIVIDUALISM);
1156 em_ptr->dam -= caster_ptr->virtues[vir - 1] / 20;
1159 if (common_saving_throw_control(caster_ptr, em_ptr->dam, em_ptr->m_ptr) ||
1160 !(em_ptr->r_ptr->flags3 & RF3_ANIMAL))
1162 em_ptr->note = _("には効果がなかった。", " is unaffected.");
1163 em_ptr->obvious = FALSE;
1164 if (one_in_(4)) em_ptr->m_ptr->mflag2 |= MFLAG2_NOPET;
1166 else if (caster_ptr->cursed & TRC_AGGRAVATE)
1168 em_ptr->note = _("はあなたに敵意を抱いている!", " hates you too much!");
1169 if (one_in_(4)) em_ptr->m_ptr->mflag2 |= MFLAG2_NOPET;
1173 em_ptr->note = _("はなついた。", " is tamed!");
1174 set_pet(caster_ptr, em_ptr->m_ptr);
1175 if (em_ptr->r_ptr->flags3 & RF3_ANIMAL)
1176 chg_virtue(caster_ptr, V_NATURE, 1);
1182 case GF_CHARM_LIVING:
1186 vir = virtue_number(caster_ptr, V_UNLIFE);
1187 if (em_ptr->seen) em_ptr->obvious = TRUE;
1189 vir = virtue_number(caster_ptr, V_UNLIFE);
1192 em_ptr->dam -= caster_ptr->virtues[vir - 1] / 10;
1195 vir = virtue_number(caster_ptr, V_INDIVIDUALISM);
1198 em_ptr->dam -= caster_ptr->virtues[vir - 1] / 20;
1201 msg_format(_("%sを見つめた。", "You stare into %s."), em_ptr->m_name);
1203 if (common_saving_throw_charm(caster_ptr, em_ptr->dam, em_ptr->m_ptr) ||
1204 !monster_living(em_ptr->m_ptr->r_idx))
1206 em_ptr->note = _("には効果がなかった。", " is unaffected.");
1207 em_ptr->obvious = FALSE;
1208 if (one_in_(4)) em_ptr->m_ptr->mflag2 |= MFLAG2_NOPET;
1210 else if (caster_ptr->cursed & TRC_AGGRAVATE)
1212 em_ptr->note = _("はあなたに敵意を抱いている!", " hates you too much!");
1213 if (one_in_(4)) em_ptr->m_ptr->mflag2 |= MFLAG2_NOPET;
1217 em_ptr->note = _("を支配した。", " is tamed!");
1218 set_pet(caster_ptr, em_ptr->m_ptr);
1219 if (em_ptr->r_ptr->flags3 & RF3_ANIMAL)
1220 chg_virtue(caster_ptr, V_NATURE, 1);
1228 if (em_ptr->seen) em_ptr->obvious = TRUE;
1230 em_ptr->do_conf = damroll(3, (em_ptr->dam / 2)) + 1;
1231 if ((em_ptr->r_ptr->flags1 & (RF1_UNIQUE)) ||
1232 (em_ptr->r_ptr->flags3 & (RF3_NO_CONF)) ||
1233 (em_ptr->r_ptr->level > randint1((em_ptr->dam - 10) < 1 ? 1 : (em_ptr->dam - 10)) + 10))
1235 if (em_ptr->r_ptr->flags3 & (RF3_NO_CONF))
1237 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flags3 |= (RF3_NO_CONF);
1240 em_ptr->do_conf = 0;
1241 em_ptr->note = _("には効果がなかった。", " is unaffected.");
1242 em_ptr->obvious = FALSE;
1250 if (em_ptr->seen) em_ptr->obvious = TRUE;
1252 em_ptr->do_stun = damroll((em_ptr->caster_lev / 20) + 3, (em_ptr->dam)) + 1;
1253 if ((em_ptr->r_ptr->flags1 & (RF1_UNIQUE)) ||
1254 (em_ptr->r_ptr->level > randint1((em_ptr->dam - 10) < 1 ? 1 : (em_ptr->dam - 10)) + 10))
1256 em_ptr->do_stun = 0;
1257 em_ptr->note = _("には効果がなかった。", " is unaffected.");
1258 em_ptr->obvious = FALSE;
1268 em_ptr->skipped = TRUE;
1272 if (em_ptr->r_ptr->flags3 & (RF3_HURT_LITE))
1274 if (em_ptr->seen) em_ptr->obvious = TRUE;
1276 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flags3 |= (RF3_HURT_LITE);
1278 em_ptr->note = _("は光に身をすくめた!", " cringes from the light!");
1279 em_ptr->note_dies = _("は光を受けてしぼんでしまった!", " shrivels away in the light!");
1290 if (em_ptr->seen) em_ptr->obvious = TRUE;
1292 if (em_ptr->r_ptr->flagsr & RFR_RES_LITE)
1294 em_ptr->note = _("には耐性がある!", " resists!");
1295 em_ptr->dam *= 2; em_ptr->dam /= (randint1(6) + 6);
1296 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flagsr |= (RFR_RES_LITE);
1298 else if (em_ptr->r_ptr->flags3 & (RF3_HURT_LITE))
1300 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flags3 |= (RF3_HURT_LITE);
1301 em_ptr->note = _("は光に身をすくめた!", " cringes from the light!");
1302 em_ptr->note_dies = _("は光を受けてしぼんでしまった!", " shrivels away in the light!");
1309 if (em_ptr->seen) em_ptr->obvious = TRUE;
1311 if (em_ptr->r_ptr->flagsr & RFR_RES_DARK)
1313 em_ptr->note = _("には耐性がある!", " resists!");
1314 em_ptr->dam *= 2; em_ptr->dam /= (randint1(6) + 6);
1315 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flagsr |= (RFR_RES_DARK);
1322 if (em_ptr->r_ptr->flags3 & (RF3_HURT_ROCK))
1324 if (em_ptr->seen) em_ptr->obvious = TRUE;
1326 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flags3 |= (RF3_HURT_ROCK);
1328 em_ptr->note = _("の皮膚がただれた!", " loses some skin!");
1329 em_ptr->note_dies = _("はドロドロに溶けた!", " dissolves!");
1338 case GF_AWAY_UNDEAD:
1340 if (em_ptr->r_ptr->flags3 & (RF3_UNDEAD))
1342 bool resists_tele = FALSE;
1344 if (em_ptr->r_ptr->flagsr & RFR_RES_TELE)
1346 if ((em_ptr->r_ptr->flags1 & (RF1_UNIQUE)) || (em_ptr->r_ptr->flagsr & RFR_RES_ALL))
1348 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flagsr |= RFR_RES_TELE;
1349 em_ptr->note = _("には効果がなかった。", " is unaffected.");
1350 resists_tele = TRUE;
1352 else if (em_ptr->r_ptr->level > randint1(100))
1354 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flagsr |= RFR_RES_TELE;
1355 em_ptr->note = _("には耐性がある!", " resists!");
1356 resists_tele = TRUE;
1362 if (em_ptr->seen) em_ptr->obvious = TRUE;
1363 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flags3 |= (RF3_UNDEAD);
1364 em_ptr->do_dist = em_ptr->dam;
1369 em_ptr->skipped = TRUE;
1377 if (em_ptr->r_ptr->flags3 & (RF3_EVIL))
1379 bool resists_tele = FALSE;
1381 if (em_ptr->r_ptr->flagsr & RFR_RES_TELE)
1383 if ((em_ptr->r_ptr->flags1 & (RF1_UNIQUE)) || (em_ptr->r_ptr->flagsr & RFR_RES_ALL))
1385 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flagsr |= RFR_RES_TELE;
1386 em_ptr->note = _("には効果がなかった。", " is unaffected.");
1387 resists_tele = TRUE;
1389 else if (em_ptr->r_ptr->level > randint1(100))
1391 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flagsr |= RFR_RES_TELE;
1392 em_ptr->note = _("には耐性がある!", " resists!");
1393 resists_tele = TRUE;
1399 if (em_ptr->seen) em_ptr->obvious = TRUE;
1400 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flags3 |= (RF3_EVIL);
1401 em_ptr->do_dist = em_ptr->dam;
1406 em_ptr->skipped = TRUE;
1414 bool resists_tele = FALSE;
1415 if (em_ptr->r_ptr->flagsr & RFR_RES_TELE)
1417 if ((em_ptr->r_ptr->flags1 & (RF1_UNIQUE)) || (em_ptr->r_ptr->flagsr & RFR_RES_ALL))
1419 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flagsr |= RFR_RES_TELE;
1420 em_ptr->note = _("には効果がなかった。", " is unaffected.");
1421 resists_tele = TRUE;
1423 else if (em_ptr->r_ptr->level > randint1(100))
1425 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flagsr |= RFR_RES_TELE;
1426 em_ptr->note = _("には耐性がある!", " resists!");
1427 resists_tele = TRUE;
1433 if (em_ptr->seen) em_ptr->obvious = TRUE;
1435 em_ptr->do_dist = em_ptr->dam;
1441 case GF_TURN_UNDEAD:
1443 if (em_ptr->r_ptr->flags3 & (RF3_UNDEAD))
1445 if (em_ptr->seen) em_ptr->obvious = TRUE;
1447 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flags3 |= (RF3_UNDEAD);
1449 em_ptr->do_fear = damroll(3, (em_ptr->dam / 2)) + 1;
1450 if (em_ptr->r_ptr->level > randint1((em_ptr->dam - 10) < 1 ? 1 : (em_ptr->dam - 10)) + 10)
1452 em_ptr->note = _("には効果がなかった。", " is unaffected.");
1453 em_ptr->obvious = FALSE;
1454 em_ptr->do_fear = 0;
1459 em_ptr->skipped = TRUE;
1467 if (em_ptr->r_ptr->flags3 & (RF3_EVIL))
1469 if (em_ptr->seen) em_ptr->obvious = TRUE;
1471 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flags3 |= (RF3_EVIL);
1473 em_ptr->do_fear = damroll(3, (em_ptr->dam / 2)) + 1;
1474 if (em_ptr->r_ptr->level > randint1((em_ptr->dam - 10) < 1 ? 1 : (em_ptr->dam - 10)) + 10)
1476 em_ptr->note = _("には効果がなかった。", " is unaffected.");
1477 em_ptr->obvious = FALSE;
1478 em_ptr->do_fear = 0;
1483 em_ptr->skipped = TRUE;
1491 if (em_ptr->seen) em_ptr->obvious = TRUE;
1493 em_ptr->do_fear = damroll(3, (em_ptr->dam / 2)) + 1;
1494 if ((em_ptr->r_ptr->flags1 & (RF1_UNIQUE)) ||
1495 (em_ptr->r_ptr->flags3 & (RF3_NO_FEAR)) ||
1496 (em_ptr->r_ptr->level > randint1((em_ptr->dam - 10) < 1 ? 1 : (em_ptr->dam - 10)) + 10))
1498 em_ptr->note = _("には効果がなかった。", " is unaffected.");
1499 em_ptr->obvious = FALSE;
1500 em_ptr->do_fear = 0;
1506 case GF_DISP_UNDEAD:
1508 if (em_ptr->r_ptr->flags3 & (RF3_UNDEAD))
1510 if (em_ptr->seen) em_ptr->obvious = TRUE;
1512 /* Learn about em_ptr->effect_type */
1513 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flags3 |= (RF3_UNDEAD);
1515 em_ptr->note = _("は身震いした。", " shudders.");
1516 em_ptr->note_dies = _("はドロドロに溶けた!", " dissolves!");
1520 em_ptr->skipped = TRUE;
1528 if (em_ptr->r_ptr->flags3 & (RF3_EVIL))
1530 if (em_ptr->seen) em_ptr->obvious = TRUE;
1532 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flags3 |= (RF3_EVIL);
1534 em_ptr->note = _("は身震いした。", " shudders.");
1535 em_ptr->note_dies = _("はドロドロに溶けた!", " dissolves!");
1539 em_ptr->skipped = TRUE;
1547 if (em_ptr->r_ptr->flags3 & (RF3_GOOD))
1549 if (em_ptr->seen) em_ptr->obvious = TRUE;
1551 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flags3 |= (RF3_GOOD);
1553 em_ptr->note = _("は身震いした。", " shudders.");
1554 em_ptr->note_dies = _("はドロドロに溶けた!", " dissolves!");
1558 em_ptr->skipped = TRUE;
1564 case GF_DISP_LIVING:
1566 if (monster_living(em_ptr->m_ptr->r_idx))
1568 if (em_ptr->seen) em_ptr->obvious = TRUE;
1570 em_ptr->note = _("は身震いした。", " shudders.");
1571 em_ptr->note_dies = _("はドロドロに溶けた!", " dissolves!");
1575 em_ptr->skipped = TRUE;
1583 if (em_ptr->r_ptr->flags3 & (RF3_DEMON))
1585 if (em_ptr->seen) em_ptr->obvious = TRUE;
1587 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flags3 |= (RF3_DEMON);
1589 em_ptr->note = _("は身震いした。", " shudders.");
1590 em_ptr->note_dies = _("はドロドロに溶けた!", " dissolves!");
1594 em_ptr->skipped = TRUE;
1602 if (em_ptr->seen) em_ptr->obvious = TRUE;
1603 em_ptr->note = _("は身震いした。", " shudders.");
1604 em_ptr->note_dies = _("はドロドロに溶けた!", " dissolves!");
1609 if (em_ptr->seen) em_ptr->obvious = TRUE;
1610 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)))
1612 if (em_ptr->who > 0)
1614 if (em_ptr->m_caster_ptr->hp < em_ptr->m_caster_ptr->maxhp)
1616 em_ptr->m_caster_ptr->hp += em_ptr->dam;
1617 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;
1618 if (caster_ptr->health_who == em_ptr->who) caster_ptr->redraw |= (PR_HEALTH);
1619 if (caster_ptr->riding == em_ptr->who) caster_ptr->redraw |= (PR_UHEALTH);
1621 if (em_ptr->see_s_msg)
1623 monster_desc(caster_ptr, em_ptr->killer, em_ptr->m_caster_ptr, 0);
1624 msg_format(_("%^sは気分が良さそうだ。", "%^s appears healthier."), em_ptr->killer);
1630 msg_format(_("%sから精神エネルギーを吸いとった。", "You draw psychic energy from %s."), em_ptr->m_name);
1631 (void)hp_player(caster_ptr, em_ptr->dam);
1636 if (em_ptr->see_s_msg) msg_format(_("%sには効果がなかった。", "%s is unaffected."), em_ptr->m_name);
1644 if (em_ptr->seen) em_ptr->obvious = TRUE;
1645 if (!em_ptr->who) msg_format(_("%sをじっと睨んだ。", "You gaze intently at %s."), em_ptr->m_name);
1647 if ((em_ptr->r_ptr->flags1 & RF1_UNIQUE) ||
1648 (em_ptr->r_ptr->flags3 & RF3_NO_CONF) ||
1649 (em_ptr->r_ptr->level > randint1((em_ptr->caster_lev - 10) < 1 ? 1 : (em_ptr->caster_lev - 10)) + 10))
1651 if (em_ptr->r_ptr->flags3 & (RF3_NO_CONF))
1653 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flags3 |= (RF3_NO_CONF);
1656 em_ptr->note = _("には効果がなかった。", " is unaffected.");
1659 else if (em_ptr->r_ptr->flags2 & RF2_EMPTY_MIND)
1661 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flags2 |= (RF2_EMPTY_MIND);
1662 em_ptr->note = _("には完全な耐性がある!", " is immune.");
1665 else if (em_ptr->r_ptr->flags2 & RF2_WEIRD_MIND)
1667 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flags2 |= (RF2_WEIRD_MIND);
1668 em_ptr->note = _("には耐性がある。", " resists.");
1673 em_ptr->note = _("は精神攻撃を食らった。", " is blasted by psionic energy.");
1674 em_ptr->note_dies = _("の精神は崩壊し、肉体は抜け殻となった。", " collapses, a mindless husk.");
1676 if (em_ptr->who > 0) em_ptr->do_conf = randint0(4) + 4;
1677 else em_ptr->do_conf = randint0(8) + 8;
1682 case GF_BRAIN_SMASH:
1684 if (em_ptr->seen) em_ptr->obvious = TRUE;
1685 if (!em_ptr->who) msg_format(_("%sをじっと睨んだ。", "You gaze intently at %s."), em_ptr->m_name);
1687 if ((em_ptr->r_ptr->flags1 & RF1_UNIQUE) ||
1688 (em_ptr->r_ptr->flags3 & RF3_NO_CONF) ||
1689 (em_ptr->r_ptr->level > randint1((em_ptr->caster_lev - 10) < 1 ? 1 : (em_ptr->caster_lev - 10)) + 10))
1691 if (em_ptr->r_ptr->flags3 & (RF3_NO_CONF))
1693 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flags3 |= (RF3_NO_CONF);
1696 em_ptr->note = _("には効果がなかった。", " is unaffected.");
1699 else if (em_ptr->r_ptr->flags2 & RF2_EMPTY_MIND)
1701 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flags2 |= (RF2_EMPTY_MIND);
1702 em_ptr->note = _("には完全な耐性がある!", " is immune.");
1705 else if (em_ptr->r_ptr->flags2 & RF2_WEIRD_MIND)
1707 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flags2 |= (RF2_WEIRD_MIND);
1708 em_ptr->note = _("には耐性がある!", " resists!");
1713 em_ptr->note = _("は精神攻撃を食らった。", " is blasted by psionic energy.");
1714 em_ptr->note_dies = _("の精神は崩壊し、肉体は抜け殻となった。", " collapses, a mindless husk.");
1715 if (em_ptr->who > 0)
1717 em_ptr->do_conf = randint0(4) + 4;
1718 em_ptr->do_stun = randint0(4) + 4;
1722 em_ptr->do_conf = randint0(8) + 8;
1723 em_ptr->do_stun = randint0(8) + 8;
1725 (void)set_monster_slow(caster_ptr, em_ptr->g_ptr->m_idx, MON_SLOW(em_ptr->m_ptr) + 10);
1732 if (em_ptr->seen) em_ptr->obvious = TRUE;
1733 if (!em_ptr->who) msg_format(_("%sを指差して呪いをかけた。", "You point at %s and curse."), em_ptr->m_name);
1734 if (randint0(100 + (em_ptr->caster_lev / 2)) < (em_ptr->r_ptr->level + 35))
1736 em_ptr->note = _("には効果がなかった。", " is unaffected.");
1744 if (em_ptr->seen) em_ptr->obvious = TRUE;
1745 if (!em_ptr->who) msg_format(_("%sを指差して恐ろしげに呪いをかけた。", "You point at %s and curse horribly."), em_ptr->m_name);
1747 if (randint0(100 + (em_ptr->caster_lev / 2)) < (em_ptr->r_ptr->level + 35))
1749 em_ptr->note = _("には効果がなかった。", " is unaffected.");
1757 if (em_ptr->seen) em_ptr->obvious = TRUE;
1758 if (!em_ptr->who) msg_format(_("%sを指差し、恐ろしげに呪文を唱えた!", "You point at %s, incanting terribly!"), em_ptr->m_name);
1760 if (randint0(100 + (em_ptr->caster_lev / 2)) < (em_ptr->r_ptr->level + 35))
1762 em_ptr->note = _("には効果がなかった。", " is unaffected.");
1770 if (em_ptr->seen) em_ptr->obvious = TRUE;
1772 msg_format(_("%sの秘孔を突いて、「お前は既に死んでいる」と叫んだ。",
1773 "You point at %s, screaming the word, 'DIE!'."), em_ptr->m_name);
1775 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)))
1777 em_ptr->note = _("には効果がなかった。", " is unaffected.");
1784 if (em_ptr->seen) em_ptr->obvious = TRUE;
1785 if (em_ptr->r_ptr->flags1 & RF1_UNIQUE)
1787 em_ptr->note = _("には効果がなかった。", " is unaffected.");
1792 if ((em_ptr->who > 0) ? ((em_ptr->caster_lev + randint1(em_ptr->dam)) > (em_ptr->r_ptr->level + 10 + randint1(20))) :
1793 (((em_ptr->caster_lev / 2) + randint1(em_ptr->dam)) > (em_ptr->r_ptr->level + randint1(200))))
1795 em_ptr->dam = ((40 + randint1(20)) * em_ptr->m_ptr->hp) / 100;
1797 if (em_ptr->m_ptr->hp < em_ptr->dam) em_ptr->dam = em_ptr->m_ptr->hp - 1;
1801 /* todo 乱数で破滅のを弾いた結果が「耐性を持っている」ことになるのはおかしい */
1802 em_ptr->note = _("は耐性を持っている!", "resists!");
1812 if ((floor_ptr->inside_quest && (quest[floor_ptr->inside_quest].type == QUEST_TYPE_KILL_ALL) && !is_pet(em_ptr->m_ptr)) ||
1813 (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)
1815 msg_format(_("%sには効果がなかった。", "%s is unaffected."), em_ptr->m_name);
1816 em_ptr->skipped = TRUE;
1820 if (is_pet(em_ptr->m_ptr)) nokori_hp = em_ptr->m_ptr->maxhp * 4L;
1821 else if ((caster_ptr->pclass == CLASS_BEASTMASTER) && monster_living(em_ptr->m_ptr->r_idx))
1822 nokori_hp = em_ptr->m_ptr->maxhp * 3 / 10;
1824 nokori_hp = em_ptr->m_ptr->maxhp * 3 / 20;
1826 if (em_ptr->m_ptr->hp >= nokori_hp)
1828 msg_format(_("もっと弱らせないと。", "You need to weaken %s more."), em_ptr->m_name);
1829 em_ptr->skipped = TRUE;
1831 else if (em_ptr->m_ptr->hp < randint0(nokori_hp))
1833 if (em_ptr->m_ptr->mflag2 & MFLAG2_CHAMELEON) choose_new_monster(caster_ptr, em_ptr->g_ptr->m_idx, FALSE, MON_CHAMELEON);
1834 msg_format(_("%sを捕えた!", "You capture %^s!"), em_ptr->m_name);
1835 cap_mon = em_ptr->m_ptr->r_idx;
1836 cap_mspeed = em_ptr->m_ptr->mspeed;
1837 cap_hp = em_ptr->m_ptr->hp;
1838 cap_maxhp = em_ptr->m_ptr->max_maxhp;
1839 cap_nickname = em_ptr->m_ptr->nickname;
1840 if (em_ptr->g_ptr->m_idx == caster_ptr->riding)
1842 if (rakuba(caster_ptr, -1, FALSE))
1844 msg_format(_("地面に落とされた。", "You have fallen from %s."), em_ptr->m_name);
1848 delete_monster_idx(caster_ptr, em_ptr->g_ptr->m_idx);
1850 return GF_SWITCH_TRUE;
1854 msg_format(_("うまく捕まえられなかった。", "You failed to capture %s."), em_ptr->m_name);
1855 em_ptr->skipped = TRUE;
1862 return (gf_switch_result)py_attack(caster_ptr, em_ptr->y, em_ptr->x, em_ptr->dam);
1869 if (em_ptr->seen) em_ptr->obvious = TRUE;
1870 if (em_ptr->r_ptr->flags2 & RF2_EMPTY_MIND)
1872 em_ptr->note = _("には効果がなかった。", " is unaffected.");
1874 em_ptr->skipped = TRUE;
1875 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flags2 |= (RF2_EMPTY_MIND);
1878 if (MON_CSLEEP(em_ptr->m_ptr))
1880 em_ptr->note = _("には効果がなかった。", " is unaffected.");
1882 em_ptr->skipped = TRUE;
1886 if (one_in_(5)) effect = 1;
1887 else if (one_in_(4)) effect = 2;
1888 else if (one_in_(3)) effect = 3;
1893 if ((em_ptr->r_ptr->flags1 & RF1_UNIQUE) ||
1894 (em_ptr->r_ptr->level > randint1((em_ptr->dam - 10) < 1 ? 1 : (em_ptr->dam - 10)) + 10))
1896 em_ptr->note = _("には効果がなかった。", " is unaffected.");
1897 em_ptr->obvious = FALSE;
1901 if (set_monster_slow(caster_ptr, em_ptr->g_ptr->m_idx, MON_SLOW(em_ptr->m_ptr) + 50))
1903 em_ptr->note = _("の動きが遅くなった。", " starts moving slower.");
1907 else if (effect == 2)
1909 em_ptr->do_stun = damroll((caster_ptr->lev / 10) + 3, (em_ptr->dam)) + 1;
1910 if ((em_ptr->r_ptr->flags1 & (RF1_UNIQUE)) ||
1911 (em_ptr->r_ptr->level > randint1((em_ptr->dam - 10) < 1 ? 1 : (em_ptr->dam - 10)) + 10))
1913 em_ptr->do_stun = 0;
1914 em_ptr->note = _("には効果がなかった。", " is unaffected.");
1915 em_ptr->obvious = FALSE;
1918 else if (effect == 3)
1920 if ((em_ptr->r_ptr->flags1 & RF1_UNIQUE) ||
1921 (em_ptr->r_ptr->flags3 & RF3_NO_SLEEP) ||
1922 (em_ptr->r_ptr->level > randint1((em_ptr->dam - 10) < 1 ? 1 : (em_ptr->dam - 10)) + 10))
1924 if (em_ptr->r_ptr->flags3 & RF3_NO_SLEEP)
1926 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flags3 |= (RF3_NO_SLEEP);
1929 em_ptr->note = _("には効果がなかった。", " is unaffected.");
1930 em_ptr->obvious = FALSE;
1934 /* Go to sleep (much) later */
1935 em_ptr->note = _("は眠り込んでしまった!", " falls asleep!");
1936 em_ptr->do_sleep = 500;
1942 em_ptr->note = _("には効果がなかった。", " is unaffected.");
1950 if (em_ptr->seen) em_ptr->obvious = TRUE;
1951 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")))
1953 if (em_ptr->seen_msg) msg_format(_("%sは消滅した!", "%^s disappeared!"), em_ptr->m_name);
1954 chg_virtue(caster_ptr, V_VITALITY, -1);
1955 return GF_SWITCH_TRUE;
1958 em_ptr->skipped = TRUE;
1964 msg_format(_("%sを写真に撮った。", "You take a photograph of %s."), em_ptr->m_name);
1966 if (em_ptr->r_ptr->flags3 & (RF3_HURT_LITE))
1968 if (em_ptr->seen) em_ptr->obvious = TRUE;
1970 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flags3 |= (RF3_HURT_LITE);
1972 em_ptr->note = _("は光に身をすくめた!", " cringes from the light!");
1973 em_ptr->note_dies = _("は光を受けてしぼんでしまった!", " shrivels away in the light!");
1980 em_ptr->photo = em_ptr->m_ptr->r_idx;
1983 case GF_BLOOD_CURSE:
1985 if (em_ptr->seen) em_ptr->obvious = TRUE;
1990 bool success = FALSE;
1991 if (em_ptr->seen) em_ptr->obvious = TRUE;
1993 if ((em_ptr->r_ptr->flags3 & (RF3_GOOD)) && !floor_ptr->inside_arena)
1995 if (em_ptr->r_ptr->flags3 & (RF3_NO_CONF)) em_ptr->dam -= 50;
1996 if (em_ptr->dam < 1) em_ptr->dam = 1;
1998 if (is_pet(em_ptr->m_ptr))
2000 em_ptr->note = _("の動きが速くなった。", " starts moving faster.");
2001 (void)set_monster_fast(caster_ptr, em_ptr->g_ptr->m_idx, MON_FAST(em_ptr->m_ptr) + 100);
2004 else if ((em_ptr->r_ptr->flags1 & (RF1_QUESTOR)) ||
2005 (em_ptr->r_ptr->flags1 & (RF1_UNIQUE)) ||
2006 (em_ptr->m_ptr->mflag2 & MFLAG2_NOPET) ||
2007 (caster_ptr->cursed & TRC_AGGRAVATE) ||
2008 ((em_ptr->r_ptr->level + 10) > randint1(em_ptr->dam)))
2010 if (one_in_(4)) em_ptr->m_ptr->mflag2 |= MFLAG2_NOPET;
2014 em_ptr->note = _("を支配した。", " is tamed!");
2015 set_pet(caster_ptr, em_ptr->m_ptr);
2016 (void)set_monster_fast(caster_ptr, em_ptr->g_ptr->m_idx, MON_FAST(em_ptr->m_ptr) + 100);
2018 if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flags3 |= (RF3_GOOD);
2025 if (!(em_ptr->r_ptr->flags3 & RF3_NO_FEAR))
2027 em_ptr->do_fear = randint1(90) + 10;
2029 else if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
2030 em_ptr->r_ptr->r_flags3 |= (RF3_NO_FEAR);
2038 if (em_ptr->seen) em_ptr->obvious = TRUE;
2040 if (randint0(100 + em_ptr->dam) < (em_ptr->r_ptr->level + 50))
2042 em_ptr->note = _("には効果がなかった。", " is unaffected.");
2049 em_ptr->skipped = TRUE;
2055 return GF_SWITCH_CONTINUE;