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);
104 * do_cmd_cast calls this function if the player's class is 'blue-mage'.
105 * @param spell 発動するモンスター攻撃のID
106 * @param success TRUEは成功時、FALSEは失敗時の処理を行う
107 * @return 処理を実行したらTRUE、キャンセルした場合FALSEを返す。
109 bool cast_learned_spell(player_type *caster_ptr, int spell, const bool success)
112 bmc_type *bmc_ptr = initialize_blue_magic_type(caster_ptr, &tmp_bm, success, get_pseudo_monstetr_level);
113 floor_type *floor_ptr = caster_ptr->current_floor_ptr;
116 msg_print(_("かん高い金切り声をあげた。", "You make a high pitched shriek."));
117 aggravate_monsters(caster_ptr, 0);
118 break; // 関数分割後に'return TRUE;' に差し替え
125 if (!cast_blue_dispel(caster_ptr))
130 if (!cast_blue_rocket(caster_ptr, bmc_ptr))
135 if (!cast_blue_shoot(caster_ptr, bmc_ptr))
140 if (!cast_blue_breath_acid(caster_ptr, bmc_ptr))
145 if (!cast_blue_breath_elec(caster_ptr, bmc_ptr))
150 if (!cast_blue_breath_fire(caster_ptr, bmc_ptr))
155 if (!cast_blue_breath_cold(caster_ptr, bmc_ptr))
160 if (!cast_blue_breath_pois(caster_ptr, bmc_ptr))
165 if (!cast_blue_breath_nether(caster_ptr, bmc_ptr))
170 if (!cast_blue_breath_lite(caster_ptr, bmc_ptr))
175 if (!cast_blue_breath_dark(caster_ptr, bmc_ptr))
180 if (!cast_blue_breath_conf(caster_ptr, bmc_ptr))
185 if (!cast_blue_breath_sound(caster_ptr, bmc_ptr))
190 if (!cast_blue_breath_chaos(caster_ptr, bmc_ptr))
195 if (!cast_blue_breath_disenchant(caster_ptr, bmc_ptr))
200 if (!cast_blue_breath_nexus(caster_ptr, bmc_ptr))
205 if (!cast_blue_breath_time(caster_ptr, bmc_ptr))
210 if (!cast_blue_breath_inertia(caster_ptr, bmc_ptr))
215 if (!cast_blue_breath_gravity(caster_ptr, bmc_ptr))
220 if (!cast_blue_breath_shards(caster_ptr, bmc_ptr))
225 if (!cast_blue_breath_plasma(caster_ptr, bmc_ptr))
230 if (!cast_blue_breath_force(caster_ptr, bmc_ptr))
235 if (!cast_blue_breath_mana(caster_ptr, bmc_ptr))
240 if (!cast_blue_breath_nuke(caster_ptr, bmc_ptr))
245 if (!cast_blue_breath_disintegration(caster_ptr, bmc_ptr))
250 if (!cast_blue_ball_acid(caster_ptr, bmc_ptr))
255 if (!cast_blue_ball_elec(caster_ptr, bmc_ptr))
260 if (!cast_blue_ball_fire(caster_ptr, bmc_ptr))
265 if (!cast_blue_ball_cold(caster_ptr, bmc_ptr))
270 if (!cast_blue_ball_pois(caster_ptr, bmc_ptr))
275 if (!cast_blue_ball_nuke(caster_ptr, bmc_ptr))
280 if (!cast_blue_ball_nether(caster_ptr, bmc_ptr))
285 if (!cast_blue_ball_chaos(caster_ptr, bmc_ptr))
290 if (!cast_blue_ball_water(caster_ptr, bmc_ptr))
295 if (!cast_blue_ball_star_burst(caster_ptr, bmc_ptr))
300 if (!cast_blue_ball_dark_storm(caster_ptr, bmc_ptr))
305 if (!cast_blue_ball_mana_storm(caster_ptr, bmc_ptr))
310 if (!cast_blue_drain_mana(caster_ptr, bmc_ptr))
315 if (!cast_blue_mind_blast(caster_ptr, bmc_ptr))
320 if (!cast_blue_brain_smash(caster_ptr, bmc_ptr))
325 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
328 bmc_ptr->damage = monspell_bluemage_damage(caster_ptr, (MS_CAUSE_1), bmc_ptr->plev, DAM_ROLL);
329 fire_ball_hide(caster_ptr, GF_CAUSE_1, bmc_ptr->dir, bmc_ptr->damage, 0);
332 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
335 bmc_ptr->damage = monspell_bluemage_damage(caster_ptr, (MS_CAUSE_2), bmc_ptr->plev, DAM_ROLL);
336 fire_ball_hide(caster_ptr, GF_CAUSE_2, bmc_ptr->dir, bmc_ptr->damage, 0);
339 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
342 bmc_ptr->damage = monspell_bluemage_damage(caster_ptr, (MS_CAUSE_3), bmc_ptr->plev, DAM_ROLL);
343 fire_ball_hide(caster_ptr, GF_CAUSE_3, bmc_ptr->dir, bmc_ptr->damage, 0);
346 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
349 bmc_ptr->damage = monspell_bluemage_damage(caster_ptr, (MS_CAUSE_4), bmc_ptr->plev, DAM_ROLL);
350 fire_ball_hide(caster_ptr, GF_CAUSE_4, bmc_ptr->dir, bmc_ptr->damage, 0);
353 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
356 msg_print(_("アシッド・ボルトの呪文を唱えた。", "You cast an acid bolt."));
357 bmc_ptr->damage = monspell_bluemage_damage(caster_ptr, (MS_BOLT_ACID), bmc_ptr->plev, DAM_ROLL);
358 fire_bolt(caster_ptr, GF_ACID, bmc_ptr->dir, bmc_ptr->damage);
361 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
364 msg_print(_("サンダー・ボルトの呪文を唱えた。", "You cast a lightning bolt."));
365 bmc_ptr->damage = monspell_bluemage_damage(caster_ptr, (MS_BOLT_ELEC), bmc_ptr->plev, DAM_ROLL);
366 fire_bolt(caster_ptr, GF_ELEC, bmc_ptr->dir, bmc_ptr->damage);
369 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
372 msg_print(_("ファイア・ボルトの呪文を唱えた。", "You cast a fire bolt."));
373 bmc_ptr->damage = monspell_bluemage_damage(caster_ptr, (MS_BOLT_FIRE), bmc_ptr->plev, DAM_ROLL);
374 fire_bolt(caster_ptr, GF_FIRE, bmc_ptr->dir, bmc_ptr->damage);
377 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
380 msg_print(_("アイス・ボルトの呪文を唱えた。", "You cast a frost bolt."));
381 bmc_ptr->damage = monspell_bluemage_damage(caster_ptr, (MS_BOLT_COLD), bmc_ptr->plev, DAM_ROLL);
382 fire_bolt(caster_ptr, GF_COLD, bmc_ptr->dir, bmc_ptr->damage);
385 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
388 msg_print(_("地獄の矢の呪文を唱えた。", "You cast a nether bolt."));
389 bmc_ptr->damage = monspell_bluemage_damage(caster_ptr, (MS_BOLT_NETHER), bmc_ptr->plev, DAM_ROLL);
390 fire_bolt(caster_ptr, GF_NETHER, bmc_ptr->dir, bmc_ptr->damage);
393 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
396 msg_print(_("ウォーター・ボルトの呪文を唱えた。", "You cast a water bolt."));
397 bmc_ptr->damage = monspell_bluemage_damage(caster_ptr, (MS_BOLT_WATER), bmc_ptr->plev, DAM_ROLL);
398 fire_bolt(caster_ptr, GF_WATER, bmc_ptr->dir, bmc_ptr->damage);
401 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
404 msg_print(_("魔力の矢の呪文を唱えた。", "You cast a mana bolt."));
405 bmc_ptr->damage = monspell_bluemage_damage(caster_ptr, (MS_BOLT_MANA), bmc_ptr->plev, DAM_ROLL);
406 fire_bolt(caster_ptr, GF_MANA, bmc_ptr->dir, bmc_ptr->damage);
409 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
412 msg_print(_("プラズマ・ボルトの呪文を唱えた。", "You cast a plasma bolt."));
413 bmc_ptr->damage = monspell_bluemage_damage(caster_ptr, (MS_BOLT_PLASMA), bmc_ptr->plev, DAM_ROLL);
414 fire_bolt(caster_ptr, GF_PLASMA, bmc_ptr->dir, bmc_ptr->damage);
417 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
420 msg_print(_("極寒の矢の呪文を唱えた。", "You cast a ice bolt."));
421 bmc_ptr->damage = monspell_bluemage_damage(caster_ptr, (MS_BOLT_ICE), bmc_ptr->plev, DAM_ROLL);
422 fire_bolt(caster_ptr, GF_ICE, bmc_ptr->dir, bmc_ptr->damage);
424 case MS_MAGIC_MISSILE:
425 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
428 msg_print(_("マジック・ミサイルの呪文を唱えた。", "You cast a magic missile."));
429 bmc_ptr->damage = monspell_bluemage_damage(caster_ptr, (MS_MAGIC_MISSILE), bmc_ptr->plev, DAM_ROLL);
430 fire_bolt(caster_ptr, GF_MISSILE, bmc_ptr->dir, bmc_ptr->damage);
433 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
436 msg_print(_("恐ろしげな幻覚を作り出した。", "You cast a fearful illusion."));
437 fear_monster(caster_ptr, bmc_ptr->dir, bmc_ptr->plev + 10);
440 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
443 confuse_monster(caster_ptr, bmc_ptr->dir, bmc_ptr->plev * 2);
446 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
449 msg_print(_("誘惑的な幻覚をつくり出した。", "You cast a mesmerizing illusion."));
450 confuse_monster(caster_ptr, bmc_ptr->dir, bmc_ptr->plev * 2);
453 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
456 slow_monster(caster_ptr, bmc_ptr->dir, bmc_ptr->plev);
459 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
462 sleep_monster(caster_ptr, bmc_ptr->dir, bmc_ptr->plev);
465 (void)set_fast(caster_ptr, randint1(20 + bmc_ptr->plev) + bmc_ptr->plev, FALSE);
468 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
471 msg_print(_("<破滅の手>を放った!", "You invoke the Hand of Doom!"));
472 fire_ball_hide(caster_ptr, GF_HAND_DOOM, bmc_ptr->dir, bmc_ptr->plev * 3, 0);
476 msg_print(_("自分の傷に念を集中した。", "You concentrate on your wounds!"));
477 (void)hp_player(caster_ptr, bmc_ptr->plev * 4);
478 (void)set_stun(caster_ptr, 0);
479 (void)set_cut(caster_ptr, 0);
482 msg_print(_("無傷の球の呪文を唱えた。", "You cast a Globe of Invulnerability."));
483 (void)set_invuln(caster_ptr, randint1(4) + 4, FALSE);
486 teleport_player(caster_ptr, 10, TELEPORT_SPONTANEOUS);
489 teleport_player(caster_ptr, bmc_ptr->plev * 5, TELEPORT_SPONTANEOUS);
492 (void)time_walk(caster_ptr);
499 GAME_TEXT m_name[MAX_NLEN];
501 if (!target_set(caster_ptr, TARGET_KILL))
504 if (!floor_ptr->grid_array[target_row][target_col].m_idx)
507 if (!player_has_los_bold(caster_ptr, target_row, target_col))
510 if (!projectable(caster_ptr, caster_ptr->y, caster_ptr->x, target_row, target_col))
513 m_ptr = &floor_ptr->m_list[floor_ptr->grid_array[target_row][target_col].m_idx];
514 r_ptr = &r_info[m_ptr->r_idx];
515 monster_desc(caster_ptr, m_name, m_ptr, 0);
516 if (r_ptr->flagsr & RFR_RES_TELE) {
517 if ((r_ptr->flags1 & RF1_UNIQUE) || (r_ptr->flagsr & RFR_RES_ALL)) {
518 if (is_original_ap_and_seen(caster_ptr, m_ptr))
519 r_ptr->r_flagsr |= RFR_RES_TELE;
520 msg_format(_("%sには効果がなかった!", "%s is unaffected!"), m_name);
522 } else if (r_ptr->level > randint1(100)) {
523 if (is_original_ap_and_seen(caster_ptr, m_ptr))
524 r_ptr->r_flagsr |= RFR_RES_TELE;
525 msg_format(_("%sには耐性がある!", "%s resists!"), m_name);
530 msg_format(_("%sを引き戻した。", "You command %s to return."), m_name);
531 teleport_monster_to(caster_ptr, floor_ptr->grid_array[target_row][target_col].m_idx, caster_ptr->y, caster_ptr->x, 100, TELEPORT_PASSIVE);
535 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
538 (void)fire_beam(caster_ptr, GF_AWAY_ALL, bmc_ptr->dir, 100);
541 return teleport_level_other(caster_ptr);
544 if (!get_aim_dir(caster_ptr, &bmc_ptr->dir))
547 msg_print(_("光の剣を放った。", "You throw a psycho-spear."));
548 bmc_ptr->damage = monspell_bluemage_damage(caster_ptr, (MS_PSY_SPEAR), bmc_ptr->plev, DAM_ROLL);
549 (void)fire_beam(caster_ptr, GF_PSY_SPEAR, bmc_ptr->dir, bmc_ptr->damage);
553 msg_print(_("暗闇の中で手を振った。", "You gesture in shadow."));
554 (void)unlite_area(caster_ptr, 10, 3);
557 if (!target_set(caster_ptr, TARGET_KILL))
560 msg_print(_("呪文を唱えて邪悪に微笑んだ。", "You cast a spell and cackle evilly."));
561 trap_creation(caster_ptr, target_row, target_col);
564 msg_print(_("しかし何も起きなかった。", "Nothing happen."));
567 msg_print(_("死者復活の呪文を唱えた。", "You animate the dead."));
568 (void)animate_dead(caster_ptr, 0, caster_ptr->y, caster_ptr->x);
571 msg_print(_("援軍を召喚した。", "You summon one of your kin."));
572 for (int k = 0; k < 1; k++) {
573 if (summon_kin_player(caster_ptr, bmc_ptr->summon_lev, caster_ptr->y, caster_ptr->x, (bmc_ptr->pet ? PM_FORCE_PET : 0L))) {
575 msg_print(_("召喚された仲間は怒っている!", "The summoned companion is angry!"));
577 bmc_ptr->no_trump = TRUE;
584 msg_print(_("サイバーデーモンを召喚した!", "You summon a Cyberdemon!"));
585 for (int k = 0; k < 1; k++) {
586 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)) {
588 msg_print(_("召喚されたサイバーデーモンは怒っている!", "The summoned Cyberdemon are angry!"));
590 bmc_ptr->no_trump = TRUE;
597 msg_print(_("仲間を召喚した。", "You summon help."));
598 for (int k = 0; k < 1; k++) {
599 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)) {
601 msg_print(_("召喚されたモンスターは怒っている!", "The summoned monster is angry!"));
603 bmc_ptr->no_trump = TRUE;
609 case MS_S_MONSTERS: {
610 msg_print(_("モンスターを召喚した!", "You summon monsters!"));
611 for (int k = 0; k < bmc_ptr->plev / 15 + 2; k++) {
612 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))) {
614 msg_print(_("召喚されたモンスターは怒っている!", "The summoned monsters are angry!"));
616 bmc_ptr->no_trump = TRUE;
623 msg_print(_("アリを召喚した。", "You summon ants."));
625 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))) {
627 msg_print(_("召喚されたアリは怒っている!", "The summoned ants are angry!"));
629 bmc_ptr->no_trump = TRUE;
635 msg_print(_("蜘蛛を召喚した。", "You summon spiders."));
637 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))) {
639 msg_print(_("召喚された蜘蛛は怒っている!", "Summoned spiders are angry!"));
641 bmc_ptr->no_trump = TRUE;
647 msg_print(_("ハウンドを召喚した。", "You summon hounds."));
649 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))) {
651 msg_print(_("召喚されたハウンドは怒っている!", "Summoned hounds are angry!"));
653 bmc_ptr->no_trump = TRUE;
659 msg_print(_("ヒドラを召喚した。", "You summon a hydras."));
661 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))) {
663 msg_print(_("召喚されたヒドラは怒っている!", "Summoned hydras are angry!"));
665 bmc_ptr->no_trump = TRUE;
671 msg_print(_("天使を召喚した!", "You summon an angel!"));
673 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))) {
675 msg_print(_("召喚された天使は怒っている!", "The summoned angel is angry!"));
677 bmc_ptr->no_trump = TRUE;
683 msg_print(_("混沌の宮廷から悪魔を召喚した!", "You summon a demon from the Courts of Chaos!"));
685 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))) {
687 msg_print(_("召喚されたデーモンは怒っている!", "The summoned demon is angry!"));
689 bmc_ptr->no_trump = TRUE;
695 msg_print(_("アンデッドの強敵を召喚した!", "You summon an undead adversary!"));
697 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))) {
699 msg_print(_("召喚されたアンデッドは怒っている!", "The summoned undead is angry!"));
701 bmc_ptr->no_trump = TRUE;
707 msg_print(_("ドラゴンを召喚した!", "You summon a dragon!"));
709 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))) {
711 msg_print(_("召喚されたドラゴンは怒っている!", "The summoned dragon is angry!"));
713 bmc_ptr->no_trump = TRUE;
718 case MS_S_HI_UNDEAD: {
719 msg_print(_("強力なアンデッドを召喚した!", "You summon a greater undead!"));
720 if (summon_specific(caster_ptr, (bmc_ptr->pet ? -1 : 0), caster_ptr->y, caster_ptr->x, bmc_ptr->summon_lev, SUMMON_HI_UNDEAD,
721 (bmc_ptr->g_mode | bmc_ptr->p_mode | bmc_ptr->u_mode))) {
723 msg_print(_("召喚された上級アンデッドは怒っている!", "The summoned greater undead is angry!"));
725 bmc_ptr->no_trump = TRUE;
730 case MS_S_HI_DRAGON: {
731 msg_print(_("古代ドラゴンを召喚した!", "You summon an ancient dragon!"));
732 if (summon_specific(caster_ptr, (bmc_ptr->pet ? -1 : 0), caster_ptr->y, caster_ptr->x, bmc_ptr->summon_lev, SUMMON_HI_DRAGON,
733 (bmc_ptr->g_mode | bmc_ptr->p_mode | bmc_ptr->u_mode))) {
735 msg_print(_("召喚された古代ドラゴンは怒っている!", "The summoned ancient dragon is angry!"));
737 bmc_ptr->no_trump = TRUE;
742 case MS_S_AMBERITE: {
743 msg_print(_("アンバーの王族を召喚した!", "You summon a Lord of Amber!"));
744 if (summon_specific(caster_ptr, (bmc_ptr->pet ? -1 : 0), caster_ptr->y, caster_ptr->x, bmc_ptr->summon_lev, SUMMON_AMBERITES,
745 (bmc_ptr->g_mode | bmc_ptr->p_mode | bmc_ptr->u_mode))) {
747 msg_print(_("召喚されたアンバーの王族は怒っている!", "The summoned Lord of Amber is angry!"));
749 bmc_ptr->no_trump = TRUE;
756 msg_print(_("特別な強敵を召喚した!", "You summon a special opponent!"));
757 for (int k = 0; k < 1; k++) {
758 if (summon_specific(caster_ptr, (bmc_ptr->pet ? -1 : 0), caster_ptr->y, caster_ptr->x, bmc_ptr->summon_lev, SUMMON_UNIQUE,
759 (bmc_ptr->g_mode | bmc_ptr->p_mode | PM_ALLOW_UNIQUE))) {
762 msg_print(_("召喚されたユニーク・モンスターは怒っている!", "The summoned special opponent is angry!"));
766 for (int k = count; k < 1; k++) {
767 if (summon_specific(caster_ptr, (bmc_ptr->pet ? -1 : 0), caster_ptr->y, caster_ptr->x, bmc_ptr->summon_lev, SUMMON_HI_UNDEAD,
768 (bmc_ptr->g_mode | bmc_ptr->p_mode | PM_ALLOW_UNIQUE))) {
771 msg_print(_("召喚された上級アンデッドは怒っている!", "The summoned greater undead is angry!"));
776 bmc_ptr->no_trump = TRUE;
784 if (bmc_ptr->no_trump)
785 msg_print(_("何も現れなかった。", "No one appeared."));