1 #include "blue-magic/blue-magic-caster.h"
2 #include "blue-magic/blue-magic-ball-bolt.h"
3 #include "blue-magic/blue-magic-breath.h"
4 #include "blue-magic/blue-magic-util.h"
5 #include "blue-magic/learnt-info.h"
6 #include "core/hp-mp-processor.h"
7 #include "floor/cave.h"
8 #include "floor/floor.h"
10 #include "io/targeting.h"
11 #include "monster-floor/monster-summon.h"
12 #include "monster-floor/place-monster-types.h"
13 #include "monster-race/monster-race.h"
14 #include "monster-race/race-flags-resistance.h"
15 #include "monster-race/race-flags1.h"
16 #include "monster/monster-describer.h"
17 #include "monster/monster-info.h"
18 #include "monster/monster-status.h"
19 #include "mspell/mspell-damage-calculator.h"
20 #include "mspell/mspell-type.h"
21 #include "spell-kind/spells-launcher.h"
22 #include "spell-kind/spells-lite.h"
23 #include "spell-kind/spells-neighbor.h"
24 #include "spell-kind/spells-sight.h"
25 #include "spell-kind/spells-teleport.h"
26 #include "spell-kind/spells-world.h"
27 #include "spell/spell-types.h"
28 #include "spell/spells-status.h"
29 #include "spell/spells-summon.h"
30 #include "status/bad-status-setter.h"
31 #include "status/body-improvement.h"
32 #include "status/buff-setter.h"
33 #include "system/floor-type-definition.h"
34 #include "view/display-messages.h"
36 static bool cast_blue_dispel(player_type *caster_ptr)
38 if (!target_set(caster_ptr, TARGET_KILL))
41 MONSTER_IDX m_idx = caster_ptr->current_floor_ptr->grid_array[target_row][target_col].m_idx;
42 if ((m_idx == 0) || !player_has_los_bold(caster_ptr, target_row, target_col)
43 || !projectable(caster_ptr, caster_ptr->y, caster_ptr->x, target_row, target_col))
46 dispel_monster_status(caster_ptr, m_idx);
50 static bool cast_blue_rocket(player_type *caster_ptr, bmc_type *bmc_ptr)
52 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
55 msg_print(_("ロケットを発射した。", "You fire a rocket."));
56 bmc_ptr->damage = monspell_bluemage_damage(caster_ptr, (MS_ROCKET), bmc_ptr->plev, DAM_ROLL);
57 fire_rocket(caster_ptr, GF_ROCKET, bmc_ptr->dir, bmc_ptr->damage, 2);
61 static bool cast_blue_shoot(player_type *caster_ptr, bmc_type *bmc_ptr)
63 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
66 msg_print(_("矢を放った。", "You fire an arrow."));
67 bmc_ptr->damage = monspell_bluemage_damage(caster_ptr, (MS_SHOOT), bmc_ptr->plev, DAM_ROLL);
68 fire_bolt(caster_ptr, GF_ARROW, bmc_ptr->dir, bmc_ptr->damage);
72 bool cast_blue_drain_mana(player_type *caster_ptr, bmc_type *bmc_ptr)
74 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
77 bmc_ptr->damage = monspell_bluemage_damage(caster_ptr, (MS_DRAIN_MANA), bmc_ptr->plev, DAM_ROLL);
78 fire_ball_hide(caster_ptr, GF_DRAIN_MANA, bmc_ptr->dir, bmc_ptr->damage, 0);
82 bool cast_blue_mind_blast(player_type *caster_ptr, bmc_type *bmc_ptr)
84 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
87 bmc_ptr->damage = monspell_bluemage_damage(caster_ptr, (MS_MIND_BLAST), bmc_ptr->plev, DAM_ROLL);
88 fire_ball_hide(caster_ptr, GF_MIND_BLAST, bmc_ptr->dir, bmc_ptr->damage, 0);
92 bool cast_blue_brain_smash(player_type *caster_ptr, bmc_type *bmc_ptr)
94 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
97 bmc_ptr->damage = monspell_bluemage_damage(caster_ptr, (MS_BRAIN_SMASH), bmc_ptr->plev, DAM_ROLL);
98 fire_ball_hide(caster_ptr, GF_BRAIN_SMASH, bmc_ptr->dir, bmc_ptr->damage, 0);
102 bool cast_blue_curse_1(player_type *caster_ptr, bmc_type *bmc_ptr)
104 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
107 bmc_ptr->damage = monspell_bluemage_damage(caster_ptr, (MS_CAUSE_1), bmc_ptr->plev, DAM_ROLL);
108 fire_ball_hide(caster_ptr, GF_CAUSE_1, bmc_ptr->dir, bmc_ptr->damage, 0);
112 bool cast_blue_curse_2(player_type *caster_ptr, bmc_type *bmc_ptr)
114 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
117 bmc_ptr->damage = monspell_bluemage_damage(caster_ptr, (MS_CAUSE_2), bmc_ptr->plev, DAM_ROLL);
118 fire_ball_hide(caster_ptr, GF_CAUSE_2, bmc_ptr->dir, bmc_ptr->damage, 0);
122 bool cast_blue_curse_3(player_type *caster_ptr, bmc_type *bmc_ptr)
124 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
127 bmc_ptr->damage = monspell_bluemage_damage(caster_ptr, (MS_CAUSE_3), bmc_ptr->plev, DAM_ROLL);
128 fire_ball_hide(caster_ptr, GF_CAUSE_3, bmc_ptr->dir, bmc_ptr->damage, 0);
132 bool cast_blue_curse_4(player_type *caster_ptr, bmc_type *bmc_ptr)
134 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
137 bmc_ptr->damage = monspell_bluemage_damage(caster_ptr, (MS_CAUSE_4), bmc_ptr->plev, DAM_ROLL);
138 fire_ball_hide(caster_ptr, GF_CAUSE_4, bmc_ptr->dir, bmc_ptr->damage, 0);
144 * do_cmd_cast calls this function if the player's class is 'blue-mage'.
145 * @param spell 発動するモンスター攻撃のID
146 * @param success TRUEは成功時、FALSEは失敗時の処理を行う
147 * @return 処理を実行したらTRUE、キャンセルした場合FALSEを返す。
149 bool cast_learned_spell(player_type *caster_ptr, int spell, const bool success)
152 bmc_type *bmc_ptr = initialize_blue_magic_type(caster_ptr, &tmp_bm, success, get_pseudo_monstetr_level);
153 floor_type *floor_ptr = caster_ptr->current_floor_ptr;
156 msg_print(_("かん高い金切り声をあげた。", "You make a high pitched shriek."));
157 aggravate_monsters(caster_ptr, 0);
158 break; // 関数分割後に'return TRUE;' に差し替え
165 if (!cast_blue_dispel(caster_ptr))
170 if (!cast_blue_rocket(caster_ptr, bmc_ptr))
175 if (!cast_blue_shoot(caster_ptr, bmc_ptr))
180 if (!cast_blue_breath_acid(caster_ptr, bmc_ptr))
185 if (!cast_blue_breath_elec(caster_ptr, bmc_ptr))
190 if (!cast_blue_breath_fire(caster_ptr, bmc_ptr))
195 if (!cast_blue_breath_cold(caster_ptr, bmc_ptr))
200 if (!cast_blue_breath_pois(caster_ptr, bmc_ptr))
205 if (!cast_blue_breath_nether(caster_ptr, bmc_ptr))
210 if (!cast_blue_breath_lite(caster_ptr, bmc_ptr))
215 if (!cast_blue_breath_dark(caster_ptr, bmc_ptr))
220 if (!cast_blue_breath_conf(caster_ptr, bmc_ptr))
225 if (!cast_blue_breath_sound(caster_ptr, bmc_ptr))
230 if (!cast_blue_breath_chaos(caster_ptr, bmc_ptr))
235 if (!cast_blue_breath_disenchant(caster_ptr, bmc_ptr))
240 if (!cast_blue_breath_nexus(caster_ptr, bmc_ptr))
245 if (!cast_blue_breath_time(caster_ptr, bmc_ptr))
250 if (!cast_blue_breath_inertia(caster_ptr, bmc_ptr))
255 if (!cast_blue_breath_gravity(caster_ptr, bmc_ptr))
260 if (!cast_blue_breath_shards(caster_ptr, bmc_ptr))
265 if (!cast_blue_breath_plasma(caster_ptr, bmc_ptr))
270 if (!cast_blue_breath_force(caster_ptr, bmc_ptr))
275 if (!cast_blue_breath_mana(caster_ptr, bmc_ptr))
280 if (!cast_blue_breath_nuke(caster_ptr, bmc_ptr))
285 if (!cast_blue_breath_disintegration(caster_ptr, bmc_ptr))
290 if (!cast_blue_ball_acid(caster_ptr, bmc_ptr))
295 if (!cast_blue_ball_elec(caster_ptr, bmc_ptr))
300 if (!cast_blue_ball_fire(caster_ptr, bmc_ptr))
305 if (!cast_blue_ball_cold(caster_ptr, bmc_ptr))
310 if (!cast_blue_ball_pois(caster_ptr, bmc_ptr))
315 if (!cast_blue_ball_nuke(caster_ptr, bmc_ptr))
320 if (!cast_blue_ball_nether(caster_ptr, bmc_ptr))
325 if (!cast_blue_ball_chaos(caster_ptr, bmc_ptr))
330 if (!cast_blue_ball_water(caster_ptr, bmc_ptr))
335 if (!cast_blue_ball_star_burst(caster_ptr, bmc_ptr))
340 if (!cast_blue_ball_dark_storm(caster_ptr, bmc_ptr))
345 if (!cast_blue_ball_mana_storm(caster_ptr, bmc_ptr))
350 if (!cast_blue_drain_mana(caster_ptr, bmc_ptr))
355 if (!cast_blue_mind_blast(caster_ptr, bmc_ptr))
360 if (!cast_blue_brain_smash(caster_ptr, bmc_ptr))
365 if (!cast_blue_curse_1(caster_ptr, bmc_ptr))
370 if (!cast_blue_curse_2(caster_ptr, bmc_ptr))
375 if (!cast_blue_curse_3(caster_ptr, bmc_ptr))
380 if (!cast_blue_curse_4(caster_ptr, bmc_ptr))
385 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
388 msg_print(_("アシッド・ボルトの呪文を唱えた。", "You cast an acid bolt."));
389 bmc_ptr->damage = monspell_bluemage_damage(caster_ptr, (MS_BOLT_ACID), bmc_ptr->plev, DAM_ROLL);
390 fire_bolt(caster_ptr, GF_ACID, bmc_ptr->dir, bmc_ptr->damage);
393 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
396 msg_print(_("サンダー・ボルトの呪文を唱えた。", "You cast a lightning bolt."));
397 bmc_ptr->damage = monspell_bluemage_damage(caster_ptr, (MS_BOLT_ELEC), bmc_ptr->plev, DAM_ROLL);
398 fire_bolt(caster_ptr, GF_ELEC, bmc_ptr->dir, bmc_ptr->damage);
401 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
404 msg_print(_("ファイア・ボルトの呪文を唱えた。", "You cast a fire bolt."));
405 bmc_ptr->damage = monspell_bluemage_damage(caster_ptr, (MS_BOLT_FIRE), bmc_ptr->plev, DAM_ROLL);
406 fire_bolt(caster_ptr, GF_FIRE, bmc_ptr->dir, bmc_ptr->damage);
409 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
412 msg_print(_("アイス・ボルトの呪文を唱えた。", "You cast a frost bolt."));
413 bmc_ptr->damage = monspell_bluemage_damage(caster_ptr, (MS_BOLT_COLD), bmc_ptr->plev, DAM_ROLL);
414 fire_bolt(caster_ptr, GF_COLD, bmc_ptr->dir, bmc_ptr->damage);
417 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
420 msg_print(_("地獄の矢の呪文を唱えた。", "You cast a nether bolt."));
421 bmc_ptr->damage = monspell_bluemage_damage(caster_ptr, (MS_BOLT_NETHER), bmc_ptr->plev, DAM_ROLL);
422 fire_bolt(caster_ptr, GF_NETHER, bmc_ptr->dir, bmc_ptr->damage);
425 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
428 msg_print(_("ウォーター・ボルトの呪文を唱えた。", "You cast a water bolt."));
429 bmc_ptr->damage = monspell_bluemage_damage(caster_ptr, (MS_BOLT_WATER), bmc_ptr->plev, DAM_ROLL);
430 fire_bolt(caster_ptr, GF_WATER, bmc_ptr->dir, bmc_ptr->damage);
433 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
436 msg_print(_("魔力の矢の呪文を唱えた。", "You cast a mana bolt."));
437 bmc_ptr->damage = monspell_bluemage_damage(caster_ptr, (MS_BOLT_MANA), bmc_ptr->plev, DAM_ROLL);
438 fire_bolt(caster_ptr, GF_MANA, bmc_ptr->dir, bmc_ptr->damage);
441 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
444 msg_print(_("プラズマ・ボルトの呪文を唱えた。", "You cast a plasma bolt."));
445 bmc_ptr->damage = monspell_bluemage_damage(caster_ptr, (MS_BOLT_PLASMA), bmc_ptr->plev, DAM_ROLL);
446 fire_bolt(caster_ptr, GF_PLASMA, bmc_ptr->dir, bmc_ptr->damage);
449 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
452 msg_print(_("極寒の矢の呪文を唱えた。", "You cast a ice bolt."));
453 bmc_ptr->damage = monspell_bluemage_damage(caster_ptr, (MS_BOLT_ICE), bmc_ptr->plev, DAM_ROLL);
454 fire_bolt(caster_ptr, GF_ICE, bmc_ptr->dir, bmc_ptr->damage);
456 case MS_MAGIC_MISSILE:
457 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
460 msg_print(_("マジック・ミサイルの呪文を唱えた。", "You cast a magic missile."));
461 bmc_ptr->damage = monspell_bluemage_damage(caster_ptr, (MS_MAGIC_MISSILE), bmc_ptr->plev, DAM_ROLL);
462 fire_bolt(caster_ptr, GF_MISSILE, bmc_ptr->dir, bmc_ptr->damage);
465 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
468 msg_print(_("恐ろしげな幻覚を作り出した。", "You cast a fearful illusion."));
469 fear_monster(caster_ptr, bmc_ptr->dir, bmc_ptr->plev + 10);
472 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
475 confuse_monster(caster_ptr, bmc_ptr->dir, bmc_ptr->plev * 2);
478 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
481 msg_print(_("誘惑的な幻覚をつくり出した。", "You cast a mesmerizing illusion."));
482 confuse_monster(caster_ptr, bmc_ptr->dir, bmc_ptr->plev * 2);
485 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
488 slow_monster(caster_ptr, bmc_ptr->dir, bmc_ptr->plev);
491 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
494 sleep_monster(caster_ptr, bmc_ptr->dir, bmc_ptr->plev);
497 (void)set_fast(caster_ptr, randint1(20 + bmc_ptr->plev) + bmc_ptr->plev, FALSE);
500 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
503 msg_print(_("<破滅の手>を放った!", "You invoke the Hand of Doom!"));
504 fire_ball_hide(caster_ptr, GF_HAND_DOOM, bmc_ptr->dir, bmc_ptr->plev * 3, 0);
508 msg_print(_("自分の傷に念を集中した。", "You concentrate on your wounds!"));
509 (void)hp_player(caster_ptr, bmc_ptr->plev * 4);
510 (void)set_stun(caster_ptr, 0);
511 (void)set_cut(caster_ptr, 0);
514 msg_print(_("無傷の球の呪文を唱えた。", "You cast a Globe of Invulnerability."));
515 (void)set_invuln(caster_ptr, randint1(4) + 4, FALSE);
518 teleport_player(caster_ptr, 10, TELEPORT_SPONTANEOUS);
521 teleport_player(caster_ptr, bmc_ptr->plev * 5, TELEPORT_SPONTANEOUS);
524 (void)time_walk(caster_ptr);
531 GAME_TEXT m_name[MAX_NLEN];
533 if (!target_set(caster_ptr, TARGET_KILL))
536 if (!floor_ptr->grid_array[target_row][target_col].m_idx)
539 if (!player_has_los_bold(caster_ptr, target_row, target_col))
542 if (!projectable(caster_ptr, caster_ptr->y, caster_ptr->x, target_row, target_col))
545 m_ptr = &floor_ptr->m_list[floor_ptr->grid_array[target_row][target_col].m_idx];
546 r_ptr = &r_info[m_ptr->r_idx];
547 monster_desc(caster_ptr, m_name, m_ptr, 0);
548 if (r_ptr->flagsr & RFR_RES_TELE) {
549 if ((r_ptr->flags1 & RF1_UNIQUE) || (r_ptr->flagsr & RFR_RES_ALL)) {
550 if (is_original_ap_and_seen(caster_ptr, m_ptr))
551 r_ptr->r_flagsr |= RFR_RES_TELE;
552 msg_format(_("%sには効果がなかった!", "%s is unaffected!"), m_name);
554 } else if (r_ptr->level > randint1(100)) {
555 if (is_original_ap_and_seen(caster_ptr, m_ptr))
556 r_ptr->r_flagsr |= RFR_RES_TELE;
557 msg_format(_("%sには耐性がある!", "%s resists!"), m_name);
562 msg_format(_("%sを引き戻した。", "You command %s to return."), m_name);
563 teleport_monster_to(caster_ptr, floor_ptr->grid_array[target_row][target_col].m_idx, caster_ptr->y, caster_ptr->x, 100, TELEPORT_PASSIVE);
567 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
570 (void)fire_beam(caster_ptr, GF_AWAY_ALL, bmc_ptr->dir, 100);
573 return teleport_level_other(caster_ptr);
576 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
579 msg_print(_("光の剣を放った。", "You throw a psycho-spear."));
580 bmc_ptr->damage = monspell_bluemage_damage(caster_ptr, (MS_PSY_SPEAR), bmc_ptr->plev, DAM_ROLL);
581 (void)fire_beam(caster_ptr, GF_PSY_SPEAR, bmc_ptr->dir, bmc_ptr->damage);
585 msg_print(_("暗闇の中で手を振った。", "You gesture in shadow."));
586 (void)unlite_area(caster_ptr, 10, 3);
589 if (!target_set(caster_ptr, TARGET_KILL))
592 msg_print(_("呪文を唱えて邪悪に微笑んだ。", "You cast a spell and cackle evilly."));
593 trap_creation(caster_ptr, target_row, target_col);
596 msg_print(_("しかし何も起きなかった。", "Nothing happen."));
599 msg_print(_("死者復活の呪文を唱えた。", "You animate the dead."));
600 (void)animate_dead(caster_ptr, 0, caster_ptr->y, caster_ptr->x);
603 msg_print(_("援軍を召喚した。", "You summon one of your kin."));
604 for (int k = 0; k < 1; k++) {
605 if (summon_kin_player(caster_ptr, bmc_ptr->summon_lev, caster_ptr->y, caster_ptr->x, (bmc_ptr->pet ? PM_FORCE_PET : 0L))) {
607 msg_print(_("召喚された仲間は怒っている!", "The summoned companion is angry!"));
609 bmc_ptr->no_trump = TRUE;
616 msg_print(_("サイバーデーモンを召喚した!", "You summon a Cyberdemon!"));
617 for (int k = 0; k < 1; k++) {
618 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)) {
620 msg_print(_("召喚されたサイバーデーモンは怒っている!", "The summoned Cyberdemon are angry!"));
622 bmc_ptr->no_trump = TRUE;
629 msg_print(_("仲間を召喚した。", "You summon help."));
630 for (int k = 0; k < 1; k++) {
631 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)) {
633 msg_print(_("召喚されたモンスターは怒っている!", "The summoned monster is angry!"));
635 bmc_ptr->no_trump = TRUE;
641 case MS_S_MONSTERS: {
642 msg_print(_("モンスターを召喚した!", "You summon monsters!"));
643 for (int k = 0; k < bmc_ptr->plev / 15 + 2; k++) {
644 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))) {
646 msg_print(_("召喚されたモンスターは怒っている!", "The summoned monsters are angry!"));
648 bmc_ptr->no_trump = TRUE;
655 msg_print(_("アリを召喚した。", "You summon ants."));
657 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))) {
659 msg_print(_("召喚されたアリは怒っている!", "The summoned ants are angry!"));
661 bmc_ptr->no_trump = TRUE;
667 msg_print(_("蜘蛛を召喚した。", "You summon spiders."));
669 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))) {
671 msg_print(_("召喚された蜘蛛は怒っている!", "Summoned spiders are angry!"));
673 bmc_ptr->no_trump = TRUE;
679 msg_print(_("ハウンドを召喚した。", "You summon hounds."));
681 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))) {
683 msg_print(_("召喚されたハウンドは怒っている!", "Summoned hounds are angry!"));
685 bmc_ptr->no_trump = TRUE;
691 msg_print(_("ヒドラを召喚した。", "You summon a hydras."));
693 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))) {
695 msg_print(_("召喚されたヒドラは怒っている!", "Summoned hydras are angry!"));
697 bmc_ptr->no_trump = TRUE;
703 msg_print(_("天使を召喚した!", "You summon an angel!"));
705 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))) {
707 msg_print(_("召喚された天使は怒っている!", "The summoned angel is angry!"));
709 bmc_ptr->no_trump = TRUE;
715 msg_print(_("混沌の宮廷から悪魔を召喚した!", "You summon a demon from the Courts of Chaos!"));
717 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))) {
719 msg_print(_("召喚されたデーモンは怒っている!", "The summoned demon is angry!"));
721 bmc_ptr->no_trump = TRUE;
727 msg_print(_("アンデッドの強敵を召喚した!", "You summon an undead adversary!"));
729 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))) {
731 msg_print(_("召喚されたアンデッドは怒っている!", "The summoned undead is angry!"));
733 bmc_ptr->no_trump = TRUE;
739 msg_print(_("ドラゴンを召喚した!", "You summon a dragon!"));
741 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))) {
743 msg_print(_("召喚されたドラゴンは怒っている!", "The summoned dragon is angry!"));
745 bmc_ptr->no_trump = TRUE;
750 case MS_S_HI_UNDEAD: {
751 msg_print(_("強力なアンデッドを召喚した!", "You summon a greater undead!"));
752 if (summon_specific(caster_ptr, (bmc_ptr->pet ? -1 : 0), caster_ptr->y, caster_ptr->x, bmc_ptr->summon_lev, SUMMON_HI_UNDEAD,
753 (bmc_ptr->g_mode | bmc_ptr->p_mode | bmc_ptr->u_mode))) {
755 msg_print(_("召喚された上級アンデッドは怒っている!", "The summoned greater undead is angry!"));
757 bmc_ptr->no_trump = TRUE;
762 case MS_S_HI_DRAGON: {
763 msg_print(_("古代ドラゴンを召喚した!", "You summon an ancient dragon!"));
764 if (summon_specific(caster_ptr, (bmc_ptr->pet ? -1 : 0), caster_ptr->y, caster_ptr->x, bmc_ptr->summon_lev, SUMMON_HI_DRAGON,
765 (bmc_ptr->g_mode | bmc_ptr->p_mode | bmc_ptr->u_mode))) {
767 msg_print(_("召喚された古代ドラゴンは怒っている!", "The summoned ancient dragon is angry!"));
769 bmc_ptr->no_trump = TRUE;
774 case MS_S_AMBERITE: {
775 msg_print(_("アンバーの王族を召喚した!", "You summon a Lord of Amber!"));
776 if (summon_specific(caster_ptr, (bmc_ptr->pet ? -1 : 0), caster_ptr->y, caster_ptr->x, bmc_ptr->summon_lev, SUMMON_AMBERITES,
777 (bmc_ptr->g_mode | bmc_ptr->p_mode | bmc_ptr->u_mode))) {
779 msg_print(_("召喚されたアンバーの王族は怒っている!", "The summoned Lord of Amber is angry!"));
781 bmc_ptr->no_trump = TRUE;
788 msg_print(_("特別な強敵を召喚した!", "You summon a special opponent!"));
789 for (int k = 0; k < 1; k++) {
790 if (summon_specific(caster_ptr, (bmc_ptr->pet ? -1 : 0), caster_ptr->y, caster_ptr->x, bmc_ptr->summon_lev, SUMMON_UNIQUE,
791 (bmc_ptr->g_mode | bmc_ptr->p_mode | PM_ALLOW_UNIQUE))) {
794 msg_print(_("召喚されたユニーク・モンスターは怒っている!", "The summoned special opponent is angry!"));
798 for (int k = count; k < 1; k++) {
799 if (summon_specific(caster_ptr, (bmc_ptr->pet ? -1 : 0), caster_ptr->y, caster_ptr->x, bmc_ptr->summon_lev, SUMMON_HI_UNDEAD,
800 (bmc_ptr->g_mode | bmc_ptr->p_mode | PM_ALLOW_UNIQUE))) {
803 msg_print(_("召喚された上級アンデッドは怒っている!", "The summoned greater undead is angry!"));
808 bmc_ptr->no_trump = TRUE;
816 if (bmc_ptr->no_trump)
817 msg_print(_("何も現れなかった。", "No one appeared."));