1 #include "blue-magic/blue-magic-caster.h"
2 #include "blue-magic/blue-magic-breath.h"
3 #include "blue-magic/blue-magic-util.h"
4 #include "blue-magic/learnt-info.h"
5 #include "core/hp-mp-processor.h"
6 #include "floor/cave.h"
7 #include "floor/floor.h"
9 #include "io/targeting.h"
10 #include "monster-floor/monster-summon.h"
11 #include "monster-floor/place-monster-types.h"
12 #include "monster-race/monster-race.h"
13 #include "monster-race/race-flags-resistance.h"
14 #include "monster-race/race-flags1.h"
15 #include "monster/monster-describer.h"
16 #include "monster/monster-info.h"
17 #include "monster/monster-status.h"
18 #include "mspell/mspell-damage-calculator.h"
19 #include "mspell/mspell-type.h"
20 #include "spell-kind/spells-launcher.h"
21 #include "spell-kind/spells-lite.h"
22 #include "spell-kind/spells-neighbor.h"
23 #include "spell-kind/spells-sight.h"
24 #include "spell-kind/spells-teleport.h"
25 #include "spell-kind/spells-world.h"
26 #include "spell/spell-types.h"
27 #include "spell/spells-status.h"
28 #include "spell/spells-summon.h"
29 #include "status/bad-status-setter.h"
30 #include "status/body-improvement.h"
31 #include "status/buff-setter.h"
32 #include "system/floor-type-definition.h"
33 #include "view/display-messages.h"
35 static bool cast_blue_dispel(player_type *caster_ptr)
37 if (!target_set(caster_ptr, TARGET_KILL))
40 MONSTER_IDX m_idx = caster_ptr->current_floor_ptr->grid_array[target_row][target_col].m_idx;
41 if ((m_idx == 0) || !player_has_los_bold(caster_ptr, target_row, target_col)
42 || !projectable(caster_ptr, caster_ptr->y, caster_ptr->x, target_row, target_col))
45 dispel_monster_status(caster_ptr, m_idx);
49 static bool cast_blue_rocket(player_type *caster_ptr, bmc_type *bmc_ptr)
51 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
54 msg_print(_("ロケットを発射した。", "You fire a rocket."));
55 bmc_ptr->damage = monspell_bluemage_damage(caster_ptr, (MS_ROCKET), bmc_ptr->plev, DAM_ROLL);
56 fire_rocket(caster_ptr, GF_ROCKET, bmc_ptr->dir, bmc_ptr->damage, 2);
60 static bool cast_blue_shoot(player_type *caster_ptr, bmc_type *bmc_ptr)
62 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
65 msg_print(_("矢を放った。", "You fire an arrow."));
66 bmc_ptr->damage = monspell_bluemage_damage(caster_ptr, (MS_SHOOT), bmc_ptr->plev, DAM_ROLL);
67 fire_bolt(caster_ptr, GF_ARROW, bmc_ptr->dir, bmc_ptr->damage);
71 bool cast_blue_ball_acid(player_type *caster_ptr, bmc_type *bmc_ptr)
73 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
76 msg_print(_("アシッド・ボールの呪文を唱えた。", "You cast an acid ball."));
77 bmc_ptr->damage = monspell_bluemage_damage(caster_ptr, (MS_BALL_ACID), bmc_ptr->plev, DAM_ROLL);
78 fire_ball(caster_ptr, GF_ACID, bmc_ptr->dir, bmc_ptr->damage, 2);
82 bool cast_blue_ball_elec(player_type *caster_ptr, bmc_type *bmc_ptr)
84 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
87 msg_print(_("サンダー・ボールの呪文を唱えた。", "You cast a lightning ball."));
88 bmc_ptr->damage = monspell_bluemage_damage(caster_ptr, (MS_BALL_ELEC), bmc_ptr->plev, DAM_ROLL);
89 fire_ball(caster_ptr, GF_ELEC, bmc_ptr->dir, bmc_ptr->damage, 2);
93 bool cast_blue_ball_fire(player_type *caster_ptr, bmc_type *bmc_ptr)
95 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
98 msg_print(_("ファイア・ボールの呪文を唱えた。", "You cast a fire ball."));
99 bmc_ptr->damage = monspell_bluemage_damage(caster_ptr, (MS_BALL_FIRE), bmc_ptr->plev, DAM_ROLL);
100 fire_ball(caster_ptr, GF_FIRE, bmc_ptr->dir, bmc_ptr->damage, 2);
104 bool cast_blue_ball_cold(player_type *caster_ptr, bmc_type *bmc_ptr)
106 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
109 msg_print(_("アイス・ボールの呪文を唱えた。", "You cast a frost ball."));
110 bmc_ptr->damage = monspell_bluemage_damage(caster_ptr, (MS_BALL_COLD), bmc_ptr->plev, DAM_ROLL);
111 fire_ball(caster_ptr, GF_COLD, bmc_ptr->dir, bmc_ptr->damage, 2);
115 bool cast_blue_ball_pois(player_type *caster_ptr, bmc_type *bmc_ptr)
117 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
120 msg_print(_("悪臭雲の呪文を唱えた。", "You cast a stinking cloud."));
121 bmc_ptr->damage = monspell_bluemage_damage(caster_ptr, (MS_BALL_POIS), bmc_ptr->plev, DAM_ROLL);
122 fire_ball(caster_ptr, GF_POIS, bmc_ptr->dir, bmc_ptr->damage, 2);
126 bool cast_blue_ball_nuke(player_type *caster_ptr, bmc_type *bmc_ptr)
128 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
131 msg_print(_("放射能球を放った。", "You cast a ball of radiation."));
132 bmc_ptr->damage = monspell_bluemage_damage(caster_ptr, (MS_BALL_NUKE), bmc_ptr->plev, DAM_ROLL);
133 fire_ball(caster_ptr, GF_NUKE, bmc_ptr->dir, bmc_ptr->damage, 2);
137 bool cast_blue_ball_nether(player_type *caster_ptr, bmc_type *bmc_ptr)
139 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
142 msg_print(_("地獄球の呪文を唱えた。", "You cast a nether ball."));
143 bmc_ptr->damage = monspell_bluemage_damage(caster_ptr, (MS_BALL_NETHER), bmc_ptr->plev, DAM_ROLL);
144 fire_ball(caster_ptr, GF_NETHER, bmc_ptr->dir, bmc_ptr->damage, 2);
148 bool cast_blue_ball_chaos(player_type *caster_ptr, bmc_type *bmc_ptr)
150 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
153 msg_print(_("純ログルスを放った。", "You invoke a raw Logrus."));
154 bmc_ptr->damage = monspell_bluemage_damage(caster_ptr, (MS_BALL_CHAOS), bmc_ptr->plev, DAM_ROLL);
155 fire_ball(caster_ptr, GF_CHAOS, bmc_ptr->dir, bmc_ptr->damage, 4);
161 * do_cmd_cast calls this function if the player's class is 'blue-mage'.
162 * @param spell 発動するモンスター攻撃のID
163 * @param success TRUEは成功時、FALSEは失敗時の処理を行う
164 * @return 処理を実行したらTRUE、キャンセルした場合FALSEを返す。
166 bool cast_learned_spell(player_type *caster_ptr, int spell, const bool success)
169 bmc_type *bmc_ptr = initialize_blue_magic_type(caster_ptr, &tmp_bm, success, get_pseudo_monstetr_level);
170 floor_type *floor_ptr = caster_ptr->current_floor_ptr;
173 msg_print(_("かん高い金切り声をあげた。", "You make a high pitched shriek."));
174 aggravate_monsters(caster_ptr, 0);
175 break; // 関数分割後に'return TRUE;' に差し替え
182 if (!cast_blue_dispel(caster_ptr))
187 if (!cast_blue_rocket(caster_ptr, bmc_ptr))
192 if (!cast_blue_shoot(caster_ptr, bmc_ptr))
197 if (!cast_blue_breath_acid(caster_ptr, bmc_ptr))
202 if (!cast_blue_breath_elec(caster_ptr, bmc_ptr))
207 if (!cast_blue_breath_fire(caster_ptr, bmc_ptr))
212 if (!cast_blue_breath_cold(caster_ptr, bmc_ptr))
217 if (!cast_blue_breath_pois(caster_ptr, bmc_ptr))
222 if (!cast_blue_breath_nether(caster_ptr, bmc_ptr))
227 if (!cast_blue_breath_lite(caster_ptr, bmc_ptr))
232 if (!cast_blue_breath_dark(caster_ptr, bmc_ptr))
237 if (!cast_blue_breath_conf(caster_ptr, bmc_ptr))
242 if (!cast_blue_breath_sound(caster_ptr, bmc_ptr))
247 if (!cast_blue_breath_chaos(caster_ptr, bmc_ptr))
252 if (!cast_blue_breath_disenchant(caster_ptr, bmc_ptr))
257 if (!cast_blue_breath_nexus(caster_ptr, bmc_ptr))
262 if (!cast_blue_breath_time(caster_ptr, bmc_ptr))
267 if (!cast_blue_breath_inertia(caster_ptr, bmc_ptr))
272 if (!cast_blue_breath_gravity(caster_ptr, bmc_ptr))
277 if (!cast_blue_breath_shards(caster_ptr, bmc_ptr))
282 if (!cast_blue_breath_plasma(caster_ptr, bmc_ptr))
287 if (!cast_blue_breath_force(caster_ptr, bmc_ptr))
292 if (!cast_blue_breath_mana(caster_ptr, bmc_ptr))
297 if (!cast_blue_breath_nuke(caster_ptr, bmc_ptr))
302 if (!cast_blue_breath_disintegration(caster_ptr, bmc_ptr))
307 if (!cast_blue_ball_acid(caster_ptr, bmc_ptr))
312 if (!cast_blue_ball_elec(caster_ptr, bmc_ptr))
317 if (!cast_blue_ball_fire(caster_ptr, bmc_ptr))
322 if (!cast_blue_ball_cold(caster_ptr, bmc_ptr))
327 if (!cast_blue_ball_pois(caster_ptr, bmc_ptr))
332 if (!cast_blue_ball_nuke(caster_ptr, bmc_ptr))
337 if (!cast_blue_ball_nether(caster_ptr, bmc_ptr))
342 if (!cast_blue_ball_chaos(caster_ptr, bmc_ptr))
347 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
350 msg_print(_("流れるような身振りをした。", "You gesture fluidly."));
351 bmc_ptr->damage = monspell_bluemage_damage(caster_ptr, (MS_BALL_WATER), bmc_ptr->plev, DAM_ROLL);
352 fire_ball(caster_ptr, GF_WATER, bmc_ptr->dir, bmc_ptr->damage, 4);
355 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
358 msg_print(_("スターバーストの呪文を念じた。", "You invoke a starburst."));
359 bmc_ptr->damage = monspell_bluemage_damage(caster_ptr, (MS_STARBURST), bmc_ptr->plev, DAM_ROLL);
360 fire_ball(caster_ptr, GF_LITE, bmc_ptr->dir, bmc_ptr->damage, 4);
363 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
366 msg_print(_("暗黒の嵐の呪文を念じた。", "You invoke a darkness storm."));
367 bmc_ptr->damage = monspell_bluemage_damage(caster_ptr, (MS_BALL_DARK), bmc_ptr->plev, DAM_ROLL);
368 fire_ball(caster_ptr, GF_DARK, bmc_ptr->dir, bmc_ptr->damage, 4);
371 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
374 msg_print(_("魔力の嵐の呪文を念じた。", "You invoke a mana storm."));
375 bmc_ptr->damage = monspell_bluemage_damage(caster_ptr, (MS_BALL_MANA), bmc_ptr->plev, DAM_ROLL);
376 fire_ball(caster_ptr, GF_MANA, bmc_ptr->dir, bmc_ptr->damage, 4);
379 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
382 bmc_ptr->damage = monspell_bluemage_damage(caster_ptr, (MS_DRAIN_MANA), bmc_ptr->plev, DAM_ROLL);
383 fire_ball_hide(caster_ptr, GF_DRAIN_MANA, bmc_ptr->dir, bmc_ptr->damage, 0);
386 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
389 bmc_ptr->damage = monspell_bluemage_damage(caster_ptr, (MS_MIND_BLAST), bmc_ptr->plev, DAM_ROLL);
390 fire_ball_hide(caster_ptr, GF_MIND_BLAST, bmc_ptr->dir, bmc_ptr->damage, 0);
393 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
396 bmc_ptr->damage = monspell_bluemage_damage(caster_ptr, (MS_BRAIN_SMASH), bmc_ptr->plev, DAM_ROLL);
397 fire_ball_hide(caster_ptr, GF_BRAIN_SMASH, bmc_ptr->dir, bmc_ptr->damage, 0);
400 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
403 bmc_ptr->damage = monspell_bluemage_damage(caster_ptr, (MS_CAUSE_1), bmc_ptr->plev, DAM_ROLL);
404 fire_ball_hide(caster_ptr, GF_CAUSE_1, bmc_ptr->dir, bmc_ptr->damage, 0);
407 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
410 bmc_ptr->damage = monspell_bluemage_damage(caster_ptr, (MS_CAUSE_2), bmc_ptr->plev, DAM_ROLL);
411 fire_ball_hide(caster_ptr, GF_CAUSE_2, bmc_ptr->dir, bmc_ptr->damage, 0);
414 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
417 bmc_ptr->damage = monspell_bluemage_damage(caster_ptr, (MS_CAUSE_3), bmc_ptr->plev, DAM_ROLL);
418 fire_ball_hide(caster_ptr, GF_CAUSE_3, bmc_ptr->dir, bmc_ptr->damage, 0);
421 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
424 bmc_ptr->damage = monspell_bluemage_damage(caster_ptr, (MS_CAUSE_4), bmc_ptr->plev, DAM_ROLL);
425 fire_ball_hide(caster_ptr, GF_CAUSE_4, bmc_ptr->dir, bmc_ptr->damage, 0);
428 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
431 msg_print(_("アシッド・ボルトの呪文を唱えた。", "You cast an acid bolt."));
432 bmc_ptr->damage = monspell_bluemage_damage(caster_ptr, (MS_BOLT_ACID), bmc_ptr->plev, DAM_ROLL);
433 fire_bolt(caster_ptr, GF_ACID, bmc_ptr->dir, bmc_ptr->damage);
436 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
439 msg_print(_("サンダー・ボルトの呪文を唱えた。", "You cast a lightning bolt."));
440 bmc_ptr->damage = monspell_bluemage_damage(caster_ptr, (MS_BOLT_ELEC), bmc_ptr->plev, DAM_ROLL);
441 fire_bolt(caster_ptr, GF_ELEC, bmc_ptr->dir, bmc_ptr->damage);
444 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
447 msg_print(_("ファイア・ボルトの呪文を唱えた。", "You cast a fire bolt."));
448 bmc_ptr->damage = monspell_bluemage_damage(caster_ptr, (MS_BOLT_FIRE), bmc_ptr->plev, DAM_ROLL);
449 fire_bolt(caster_ptr, GF_FIRE, bmc_ptr->dir, bmc_ptr->damage);
452 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
455 msg_print(_("アイス・ボルトの呪文を唱えた。", "You cast a frost bolt."));
456 bmc_ptr->damage = monspell_bluemage_damage(caster_ptr, (MS_BOLT_COLD), bmc_ptr->plev, DAM_ROLL);
457 fire_bolt(caster_ptr, GF_COLD, bmc_ptr->dir, bmc_ptr->damage);
460 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
463 msg_print(_("地獄の矢の呪文を唱えた。", "You cast a nether bolt."));
464 bmc_ptr->damage = monspell_bluemage_damage(caster_ptr, (MS_BOLT_NETHER), bmc_ptr->plev, DAM_ROLL);
465 fire_bolt(caster_ptr, GF_NETHER, bmc_ptr->dir, bmc_ptr->damage);
468 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
471 msg_print(_("ウォーター・ボルトの呪文を唱えた。", "You cast a water bolt."));
472 bmc_ptr->damage = monspell_bluemage_damage(caster_ptr, (MS_BOLT_WATER), bmc_ptr->plev, DAM_ROLL);
473 fire_bolt(caster_ptr, GF_WATER, bmc_ptr->dir, bmc_ptr->damage);
476 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
479 msg_print(_("魔力の矢の呪文を唱えた。", "You cast a mana bolt."));
480 bmc_ptr->damage = monspell_bluemage_damage(caster_ptr, (MS_BOLT_MANA), bmc_ptr->plev, DAM_ROLL);
481 fire_bolt(caster_ptr, GF_MANA, bmc_ptr->dir, bmc_ptr->damage);
484 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
487 msg_print(_("プラズマ・ボルトの呪文を唱えた。", "You cast a plasma bolt."));
488 bmc_ptr->damage = monspell_bluemage_damage(caster_ptr, (MS_BOLT_PLASMA), bmc_ptr->plev, DAM_ROLL);
489 fire_bolt(caster_ptr, GF_PLASMA, bmc_ptr->dir, bmc_ptr->damage);
492 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
495 msg_print(_("極寒の矢の呪文を唱えた。", "You cast a ice bolt."));
496 bmc_ptr->damage = monspell_bluemage_damage(caster_ptr, (MS_BOLT_ICE), bmc_ptr->plev, DAM_ROLL);
497 fire_bolt(caster_ptr, GF_ICE, bmc_ptr->dir, bmc_ptr->damage);
499 case MS_MAGIC_MISSILE:
500 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
503 msg_print(_("マジック・ミサイルの呪文を唱えた。", "You cast a magic missile."));
504 bmc_ptr->damage = monspell_bluemage_damage(caster_ptr, (MS_MAGIC_MISSILE), bmc_ptr->plev, DAM_ROLL);
505 fire_bolt(caster_ptr, GF_MISSILE, bmc_ptr->dir, bmc_ptr->damage);
508 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
511 msg_print(_("恐ろしげな幻覚を作り出した。", "You cast a fearful illusion."));
512 fear_monster(caster_ptr, bmc_ptr->dir, bmc_ptr->plev + 10);
515 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
518 confuse_monster(caster_ptr, bmc_ptr->dir, bmc_ptr->plev * 2);
521 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
524 msg_print(_("誘惑的な幻覚をつくり出した。", "You cast a mesmerizing illusion."));
525 confuse_monster(caster_ptr, bmc_ptr->dir, bmc_ptr->plev * 2);
528 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
531 slow_monster(caster_ptr, bmc_ptr->dir, bmc_ptr->plev);
534 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
537 sleep_monster(caster_ptr, bmc_ptr->dir, bmc_ptr->plev);
540 (void)set_fast(caster_ptr, randint1(20 + bmc_ptr->plev) + bmc_ptr->plev, FALSE);
543 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
546 msg_print(_("<破滅の手>を放った!", "You invoke the Hand of Doom!"));
547 fire_ball_hide(caster_ptr, GF_HAND_DOOM, bmc_ptr->dir, bmc_ptr->plev * 3, 0);
551 msg_print(_("自分の傷に念を集中した。", "You concentrate on your wounds!"));
552 (void)hp_player(caster_ptr, bmc_ptr->plev * 4);
553 (void)set_stun(caster_ptr, 0);
554 (void)set_cut(caster_ptr, 0);
557 msg_print(_("無傷の球の呪文を唱えた。", "You cast a Globe of Invulnerability."));
558 (void)set_invuln(caster_ptr, randint1(4) + 4, FALSE);
561 teleport_player(caster_ptr, 10, TELEPORT_SPONTANEOUS);
564 teleport_player(caster_ptr, bmc_ptr->plev * 5, TELEPORT_SPONTANEOUS);
567 (void)time_walk(caster_ptr);
574 GAME_TEXT m_name[MAX_NLEN];
576 if (!target_set(caster_ptr, TARGET_KILL))
579 if (!floor_ptr->grid_array[target_row][target_col].m_idx)
582 if (!player_has_los_bold(caster_ptr, target_row, target_col))
585 if (!projectable(caster_ptr, caster_ptr->y, caster_ptr->x, target_row, target_col))
588 m_ptr = &floor_ptr->m_list[floor_ptr->grid_array[target_row][target_col].m_idx];
589 r_ptr = &r_info[m_ptr->r_idx];
590 monster_desc(caster_ptr, m_name, m_ptr, 0);
591 if (r_ptr->flagsr & RFR_RES_TELE) {
592 if ((r_ptr->flags1 & RF1_UNIQUE) || (r_ptr->flagsr & RFR_RES_ALL)) {
593 if (is_original_ap_and_seen(caster_ptr, m_ptr))
594 r_ptr->r_flagsr |= RFR_RES_TELE;
595 msg_format(_("%sには効果がなかった!", "%s is unaffected!"), m_name);
597 } else if (r_ptr->level > randint1(100)) {
598 if (is_original_ap_and_seen(caster_ptr, m_ptr))
599 r_ptr->r_flagsr |= RFR_RES_TELE;
600 msg_format(_("%sには耐性がある!", "%s resists!"), m_name);
605 msg_format(_("%sを引き戻した。", "You command %s to return."), m_name);
606 teleport_monster_to(caster_ptr, floor_ptr->grid_array[target_row][target_col].m_idx, caster_ptr->y, caster_ptr->x, 100, TELEPORT_PASSIVE);
610 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
613 (void)fire_beam(caster_ptr, GF_AWAY_ALL, bmc_ptr->dir, 100);
616 return teleport_level_other(caster_ptr);
619 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
622 msg_print(_("光の剣を放った。", "You throw a psycho-spear."));
623 bmc_ptr->damage = monspell_bluemage_damage(caster_ptr, (MS_PSY_SPEAR), bmc_ptr->plev, DAM_ROLL);
624 (void)fire_beam(caster_ptr, GF_PSY_SPEAR, bmc_ptr->dir, bmc_ptr->damage);
628 msg_print(_("暗闇の中で手を振った。", "You gesture in shadow."));
629 (void)unlite_area(caster_ptr, 10, 3);
632 if (!target_set(caster_ptr, TARGET_KILL))
635 msg_print(_("呪文を唱えて邪悪に微笑んだ。", "You cast a spell and cackle evilly."));
636 trap_creation(caster_ptr, target_row, target_col);
639 msg_print(_("しかし何も起きなかった。", "Nothing happen."));
642 msg_print(_("死者復活の呪文を唱えた。", "You animate the dead."));
643 (void)animate_dead(caster_ptr, 0, caster_ptr->y, caster_ptr->x);
646 msg_print(_("援軍を召喚した。", "You summon one of your kin."));
647 for (int k = 0; k < 1; k++) {
648 if (summon_kin_player(caster_ptr, bmc_ptr->summon_lev, caster_ptr->y, caster_ptr->x, (bmc_ptr->pet ? PM_FORCE_PET : 0L))) {
650 msg_print(_("召喚された仲間は怒っている!", "The summoned companion is angry!"));
652 bmc_ptr->no_trump = TRUE;
659 msg_print(_("サイバーデーモンを召喚した!", "You summon a Cyberdemon!"));
660 for (int k = 0; k < 1; k++) {
661 if (summon_specific(caster_ptr, (bmc_ptr->pet ? -1 : 0), caster_ptr->y, caster_ptr->x, bmc_ptr->summon_lev, SUMMON_CYBER, bmc_ptr->p_mode)) {
663 msg_print(_("召喚されたサイバーデーモンは怒っている!", "The summoned Cyberdemon are angry!"));
665 bmc_ptr->no_trump = TRUE;
672 msg_print(_("仲間を召喚した。", "You summon help."));
673 for (int k = 0; k < 1; k++) {
674 if (summon_specific(caster_ptr, (bmc_ptr->pet ? -1 : 0), caster_ptr->y, caster_ptr->x, bmc_ptr->summon_lev, 0, bmc_ptr->p_mode)) {
676 msg_print(_("召喚されたモンスターは怒っている!", "The summoned monster is angry!"));
678 bmc_ptr->no_trump = TRUE;
684 case MS_S_MONSTERS: {
685 msg_print(_("モンスターを召喚した!", "You summon monsters!"));
686 for (int k = 0; k < bmc_ptr->plev / 15 + 2; k++) {
687 if (summon_specific(caster_ptr, (bmc_ptr->pet ? -1 : 0), caster_ptr->y, caster_ptr->x, bmc_ptr->summon_lev, 0, (bmc_ptr->p_mode | bmc_ptr->u_mode))) {
689 msg_print(_("召喚されたモンスターは怒っている!", "The summoned monsters are angry!"));
691 bmc_ptr->no_trump = TRUE;
698 msg_print(_("アリを召喚した。", "You summon ants."));
700 caster_ptr, (bmc_ptr->pet ? -1 : 0), caster_ptr->y, caster_ptr->x, bmc_ptr->summon_lev, SUMMON_ANT, (PM_ALLOW_GROUP | bmc_ptr->p_mode))) {
702 msg_print(_("召喚されたアリは怒っている!", "The summoned ants are angry!"));
704 bmc_ptr->no_trump = TRUE;
710 msg_print(_("蜘蛛を召喚した。", "You summon spiders."));
712 caster_ptr, (bmc_ptr->pet ? -1 : 0), caster_ptr->y, caster_ptr->x, bmc_ptr->summon_lev, SUMMON_SPIDER, (PM_ALLOW_GROUP | bmc_ptr->p_mode))) {
714 msg_print(_("召喚された蜘蛛は怒っている!", "Summoned spiders are angry!"));
716 bmc_ptr->no_trump = TRUE;
722 msg_print(_("ハウンドを召喚した。", "You summon hounds."));
724 caster_ptr, (bmc_ptr->pet ? -1 : 0), caster_ptr->y, caster_ptr->x, bmc_ptr->summon_lev, SUMMON_HOUND, (PM_ALLOW_GROUP | bmc_ptr->p_mode))) {
726 msg_print(_("召喚されたハウンドは怒っている!", "Summoned hounds are angry!"));
728 bmc_ptr->no_trump = TRUE;
734 msg_print(_("ヒドラを召喚した。", "You summon a hydras."));
736 caster_ptr, (bmc_ptr->pet ? -1 : 0), caster_ptr->y, caster_ptr->x, bmc_ptr->summon_lev, SUMMON_HYDRA, (bmc_ptr->g_mode | bmc_ptr->p_mode))) {
738 msg_print(_("召喚されたヒドラは怒っている!", "Summoned hydras are angry!"));
740 bmc_ptr->no_trump = TRUE;
746 msg_print(_("天使を召喚した!", "You summon an angel!"));
748 caster_ptr, (bmc_ptr->pet ? -1 : 0), caster_ptr->y, caster_ptr->x, bmc_ptr->summon_lev, SUMMON_ANGEL, (bmc_ptr->g_mode | bmc_ptr->p_mode))) {
750 msg_print(_("召喚された天使は怒っている!", "The summoned angel is angry!"));
752 bmc_ptr->no_trump = TRUE;
758 msg_print(_("混沌の宮廷から悪魔を召喚した!", "You summon a demon from the Courts of Chaos!"));
760 caster_ptr, (bmc_ptr->pet ? -1 : 0), caster_ptr->y, caster_ptr->x, bmc_ptr->summon_lev, SUMMON_DEMON, (bmc_ptr->g_mode | bmc_ptr->p_mode))) {
762 msg_print(_("召喚されたデーモンは怒っている!", "The summoned demon is angry!"));
764 bmc_ptr->no_trump = TRUE;
770 msg_print(_("アンデッドの強敵を召喚した!", "You summon an undead adversary!"));
772 caster_ptr, (bmc_ptr->pet ? -1 : 0), caster_ptr->y, caster_ptr->x, bmc_ptr->summon_lev, SUMMON_UNDEAD, (bmc_ptr->g_mode | bmc_ptr->p_mode))) {
774 msg_print(_("召喚されたアンデッドは怒っている!", "The summoned undead is angry!"));
776 bmc_ptr->no_trump = TRUE;
782 msg_print(_("ドラゴンを召喚した!", "You summon a dragon!"));
784 caster_ptr, (bmc_ptr->pet ? -1 : 0), caster_ptr->y, caster_ptr->x, bmc_ptr->summon_lev, SUMMON_DRAGON, (bmc_ptr->g_mode | bmc_ptr->p_mode))) {
786 msg_print(_("召喚されたドラゴンは怒っている!", "The summoned dragon is angry!"));
788 bmc_ptr->no_trump = TRUE;
793 case MS_S_HI_UNDEAD: {
794 msg_print(_("強力なアンデッドを召喚した!", "You summon a greater undead!"));
795 if (summon_specific(caster_ptr, (bmc_ptr->pet ? -1 : 0), caster_ptr->y, caster_ptr->x, bmc_ptr->summon_lev, SUMMON_HI_UNDEAD,
796 (bmc_ptr->g_mode | bmc_ptr->p_mode | bmc_ptr->u_mode))) {
798 msg_print(_("召喚された上級アンデッドは怒っている!", "The summoned greater undead is angry!"));
800 bmc_ptr->no_trump = TRUE;
805 case MS_S_HI_DRAGON: {
806 msg_print(_("古代ドラゴンを召喚した!", "You summon an ancient dragon!"));
807 if (summon_specific(caster_ptr, (bmc_ptr->pet ? -1 : 0), caster_ptr->y, caster_ptr->x, bmc_ptr->summon_lev, SUMMON_HI_DRAGON,
808 (bmc_ptr->g_mode | bmc_ptr->p_mode | bmc_ptr->u_mode))) {
810 msg_print(_("召喚された古代ドラゴンは怒っている!", "The summoned ancient dragon is angry!"));
812 bmc_ptr->no_trump = TRUE;
817 case MS_S_AMBERITE: {
818 msg_print(_("アンバーの王族を召喚した!", "You summon a Lord of Amber!"));
819 if (summon_specific(caster_ptr, (bmc_ptr->pet ? -1 : 0), caster_ptr->y, caster_ptr->x, bmc_ptr->summon_lev, SUMMON_AMBERITES,
820 (bmc_ptr->g_mode | bmc_ptr->p_mode | bmc_ptr->u_mode))) {
822 msg_print(_("召喚されたアンバーの王族は怒っている!", "The summoned Lord of Amber is angry!"));
824 bmc_ptr->no_trump = TRUE;
831 msg_print(_("特別な強敵を召喚した!", "You summon a special opponent!"));
832 for (int k = 0; k < 1; k++) {
833 if (summon_specific(caster_ptr, (bmc_ptr->pet ? -1 : 0), caster_ptr->y, caster_ptr->x, bmc_ptr->summon_lev, SUMMON_UNIQUE,
834 (bmc_ptr->g_mode | bmc_ptr->p_mode | PM_ALLOW_UNIQUE))) {
837 msg_print(_("召喚されたユニーク・モンスターは怒っている!", "The summoned special opponent is angry!"));
841 for (int k = count; k < 1; k++) {
842 if (summon_specific(caster_ptr, (bmc_ptr->pet ? -1 : 0), caster_ptr->y, caster_ptr->x, bmc_ptr->summon_lev, SUMMON_HI_UNDEAD,
843 (bmc_ptr->g_mode | bmc_ptr->p_mode | PM_ALLOW_UNIQUE))) {
846 msg_print(_("召喚された上級アンデッドは怒っている!", "The summoned greater undead is angry!"));
851 bmc_ptr->no_trump = TRUE;
859 if (bmc_ptr->no_trump)
860 msg_print(_("何も現れなかった。", "No one appeared."));