From 35160eba9380628cdc40ae2cee189e117efc989a Mon Sep 17 00:00:00 2001 From: Hourier Date: Tue, 21 Jul 2020 20:02:12 +0900 Subject: [PATCH] [Refactor] #40481 Separated blue-magic-summon.c/h --- Hengband/Hengband/Hengband.vcxproj | 2 + Hengband/Hengband/Hengband.vcxproj.filters | 6 + src/Makefile.am | 1 + src/blue-magic/blue-magic-caster.c | 255 +---------------------------- src/blue-magic/blue-magic-summon.c | 248 ++++++++++++++++++++++++++++ src/blue-magic/blue-magic-summon.h | 21 +++ 6 files changed, 283 insertions(+), 250 deletions(-) create mode 100644 src/blue-magic/blue-magic-summon.c create mode 100644 src/blue-magic/blue-magic-summon.h diff --git a/Hengband/Hengband/Hengband.vcxproj b/Hengband/Hengband/Hengband.vcxproj index c645c7117..8e454eba8 100644 --- a/Hengband/Hengband/Hengband.vcxproj +++ b/Hengband/Hengband/Hengband.vcxproj @@ -187,6 +187,7 @@ + @@ -712,6 +713,7 @@ + diff --git a/Hengband/Hengband/Hengband.vcxproj.filters b/Hengband/Hengband/Hengband.vcxproj.filters index 0934d697d..04e71d4dd 100644 --- a/Hengband/Hengband/Hengband.vcxproj.filters +++ b/Hengband/Hengband/Hengband.vcxproj.filters @@ -1835,6 +1835,9 @@ blue-magic + + blue-magic + @@ -3997,6 +4000,9 @@ blue-magic + + blue-magic + diff --git a/src/Makefile.am b/src/Makefile.am index 7d528f111..e8c712500 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -81,6 +81,7 @@ hengband_SOURCES = \ blue-magic/blue-magic-checker.c blue-magic/blue-magic-checker.h \ blue-magic/blue-magic-spirit-curse.c blue-magic/blue-magic-spirit-curse.h \ blue-magic/blue-magic-status.c blue-magic/blue-magic-status.h \ + blue-magic/blue-magic-summon.c blue-magic/blue-magic-summon.h \ blue-magic/blue-magic-util.c blue-magic/blue-magic-util.h \ blue-magic/learnt-info.c blue-magic/learnt-info.h \ blue-magic/learnt-power-getter.c blue-magic/learnt-power-getter.h \ diff --git a/src/blue-magic/blue-magic-caster.c b/src/blue-magic/blue-magic-caster.c index 872e29bab..84ec00ee4 100644 --- a/src/blue-magic/blue-magic-caster.c +++ b/src/blue-magic/blue-magic-caster.c @@ -3,6 +3,7 @@ #include "blue-magic/blue-magic-breath.h" #include "blue-magic/blue-magic-spirit-curse.h" #include "blue-magic/blue-magic-status.h" +#include "blue-magic/blue-magic-summon.h" #include "blue-magic/blue-magic-util.h" #include "blue-magic/learnt-info.h" #include "core/hp-mp-processor.h" @@ -10,8 +11,6 @@ #include "floor/floor.h" #include "grid/grid.h" #include "io/targeting.h" -#include "monster-floor/monster-summon.h" -#include "monster-floor/place-monster-types.h" #include "monster-race/monster-race.h" #include "monster-race/race-flags-resistance.h" #include "monster-race/race-flags1.h" @@ -19,7 +18,6 @@ #include "monster/monster-info.h" #include "monster/monster-status.h" #include "mspell/mspell-damage-calculator.h" -#include "mspell/mspell-type.h" #include "spell-kind/spells-launcher.h" #include "spell-kind/spells-lite.h" #include "spell-kind/spells-neighbor.h" @@ -28,7 +26,6 @@ #include "spell-kind/spells-world.h" #include "spell/spell-types.h" #include "spell/spells-status.h" -#include "spell/spells-summon.h" #include "status/bad-status-setter.h" #include "status/body-improvement.h" #include "status/buff-setter.h" @@ -114,7 +111,7 @@ static bool exe_blue_teleport_back(player_type *caster_ptr, GAME_TEXT *m_name) return TRUE; } -bool cast_blue_teleport_back(player_type *caster_ptr) +static bool cast_blue_teleport_back(player_type *caster_ptr) { if (!target_set(caster_ptr, TARGET_KILL)) return FALSE; @@ -129,7 +126,7 @@ bool cast_blue_teleport_back(player_type *caster_ptr) return TRUE; } -bool cast_blue_teleport_away(player_type *caster_ptr, bmc_type *bmc_ptr) +static bool cast_blue_teleport_away(player_type *caster_ptr, bmc_type *bmc_ptr) { if (!get_aim_dir(caster_ptr, &bmc_ptr->dir)) return FALSE; @@ -138,7 +135,7 @@ bool cast_blue_teleport_away(player_type *caster_ptr, bmc_type *bmc_ptr) return TRUE; } -bool cast_blue_psy_spear(player_type *caster_ptr, bmc_type *bmc_ptr) +static bool cast_blue_psy_spear(player_type *caster_ptr, bmc_type *bmc_ptr) { if (!get_aim_dir(caster_ptr, &bmc_ptr->dir)) return FALSE; @@ -149,7 +146,7 @@ bool cast_blue_psy_spear(player_type *caster_ptr, bmc_type *bmc_ptr) return TRUE; } -bool cast_blue_make_trap(player_type *caster_ptr) +static bool cast_blue_make_trap(player_type *caster_ptr) { if (!target_set(caster_ptr, TARGET_KILL)) return FALSE; @@ -159,248 +156,6 @@ bool cast_blue_make_trap(player_type *caster_ptr) return TRUE; } -bool cast_blue_summon_kin(player_type *caster_ptr, bmc_type *bmc_ptr) -{ - msg_print(_("援軍を召喚した。", "You summon one of your kin.")); - for (int k = 0; k < 1; k++) { - if (summon_kin_player(caster_ptr, bmc_ptr->summon_lev, caster_ptr->y, caster_ptr->x, (bmc_ptr->pet ? PM_FORCE_PET : 0L))) { - if (!bmc_ptr->pet) - msg_print(_("召喚された仲間は怒っている!", "The summoned companion is angry!")); - } else { - bmc_ptr->no_trump = TRUE; - } - } - - return TRUE; -} - -bool cast_blue_summon_cyber(player_type *caster_ptr, bmc_type *bmc_ptr) -{ - msg_print(_("サイバーデーモンを召喚した!", "You summon a Cyberdemon!")); - for (int k = 0; k < 1; k++) { - 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)) { - if (!bmc_ptr->pet) - msg_print(_("召喚されたサイバーデーモンは怒っている!", "The summoned Cyberdemon are angry!")); - } else { - bmc_ptr->no_trump = TRUE; - } - } - - return TRUE; -} - -bool cast_blue_summon_monster(player_type *caster_ptr, bmc_type *bmc_ptr) -{ - msg_print(_("仲間を召喚した。", "You summon help.")); - for (int k = 0; k < 1; k++) { - 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)) { - if (!bmc_ptr->pet) - msg_print(_("召喚されたモンスターは怒っている!", "The summoned monster is angry!")); - } else { - bmc_ptr->no_trump = TRUE; - } - } - - return TRUE; -} - -bool cast_blue_summon_monsters(player_type *caster_ptr, bmc_type *bmc_ptr) -{ - msg_print(_("モンスターを召喚した!", "You summon monsters!")); - for (int k = 0; k < bmc_ptr->plev / 15 + 2; k++) { - 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))) { - if (!bmc_ptr->pet) - msg_print(_("召喚されたモンスターは怒っている!", "The summoned monsters are angry!")); - } else { - bmc_ptr->no_trump = TRUE; - } - } - - return TRUE; -} - -bool cast_blue_summon_ant(player_type *caster_ptr, bmc_type *bmc_ptr) -{ - msg_print(_("アリを召喚した。", "You summon ants.")); - if (summon_specific( - 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))) { - if (!bmc_ptr->pet) - msg_print(_("召喚されたアリは怒っている!", "The summoned ants are angry!")); - } else { - bmc_ptr->no_trump = TRUE; - } - - return TRUE; -} - -bool cast_blue_summon_spider(player_type *caster_ptr, bmc_type *bmc_ptr) -{ - msg_print(_("蜘蛛を召喚した。", "You summon spiders.")); - if (summon_specific( - 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))) { - if (!bmc_ptr->pet) - msg_print(_("召喚された蜘蛛は怒っている!", "Summoned spiders are angry!")); - } else { - bmc_ptr->no_trump = TRUE; - } - - return TRUE; -} - -bool cast_blue_summon_hound(player_type *caster_ptr, bmc_type *bmc_ptr) -{ - msg_print(_("ハウンドを召喚した。", "You summon hounds.")); - if (summon_specific( - 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))) { - if (!bmc_ptr->pet) - msg_print(_("召喚されたハウンドは怒っている!", "Summoned hounds are angry!")); - } else { - bmc_ptr->no_trump = TRUE; - } - - return TRUE; -} - -bool cast_blue_summon_hydra(player_type *caster_ptr, bmc_type *bmc_ptr) -{ - msg_print(_("ヒドラを召喚した。", "You summon a hydras.")); - if (summon_specific( - 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))) { - if (!bmc_ptr->pet) - msg_print(_("召喚されたヒドラは怒っている!", "Summoned hydras are angry!")); - } else { - bmc_ptr->no_trump = TRUE; - } - - return TRUE; -} - -bool cast_blue_summon_angel(player_type *caster_ptr, bmc_type *bmc_ptr) -{ - msg_print(_("天使を召喚した!", "You summon an angel!")); - if (summon_specific( - 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))) { - if (!bmc_ptr->pet) - msg_print(_("召喚された天使は怒っている!", "The summoned angel is angry!")); - } else { - bmc_ptr->no_trump = TRUE; - } - - return TRUE; -} - -bool cast_blue_summon_demon(player_type *caster_ptr, bmc_type *bmc_ptr) -{ - msg_print(_("混沌の宮廷から悪魔を召喚した!", "You summon a demon from the Courts of Chaos!")); - if (summon_specific( - 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))) { - if (!bmc_ptr->pet) - msg_print(_("召喚されたデーモンは怒っている!", "The summoned demon is angry!")); - } else { - bmc_ptr->no_trump = TRUE; - } - - return TRUE; -} - -bool cast_blue_summon_undead(player_type *caster_ptr, bmc_type *bmc_ptr) -{ - msg_print(_("アンデッドの強敵を召喚した!", "You summon an undead adversary!")); - if (summon_specific( - 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))) { - if (!bmc_ptr->pet) - msg_print(_("召喚されたアンデッドは怒っている!", "The summoned undead is angry!")); - } else { - bmc_ptr->no_trump = TRUE; - } - - return TRUE; -} - -bool cast_blue_summon_dragon(player_type *caster_ptr, bmc_type *bmc_ptr) -{ - msg_print(_("ドラゴンを召喚した!", "You summon a dragon!")); - if (summon_specific( - 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))) { - if (!bmc_ptr->pet) - msg_print(_("召喚されたドラゴンは怒っている!", "The summoned dragon is angry!")); - } else { - bmc_ptr->no_trump = TRUE; - } - - return TRUE; -} - -bool cast_blue_summon_high_undead(player_type *caster_ptr, bmc_type *bmc_ptr) -{ - msg_print(_("強力なアンデッドを召喚した!", "You summon a greater undead!")); - if (summon_specific(caster_ptr, (bmc_ptr->pet ? -1 : 0), caster_ptr->y, caster_ptr->x, bmc_ptr->summon_lev, SUMMON_HI_UNDEAD, - (bmc_ptr->g_mode | bmc_ptr->p_mode | bmc_ptr->u_mode))) { - if (!bmc_ptr->pet) - msg_print(_("召喚された上級アンデッドは怒っている!", "The summoned greater undead is angry!")); - } else { - bmc_ptr->no_trump = TRUE; - } - - return TRUE; -} - -bool cast_blue_summon_high_dragon(player_type *caster_ptr, bmc_type *bmc_ptr) -{ - msg_print(_("古代ドラゴンを召喚した!", "You summon an ancient dragon!")); - if (summon_specific(caster_ptr, (bmc_ptr->pet ? -1 : 0), caster_ptr->y, caster_ptr->x, bmc_ptr->summon_lev, SUMMON_HI_DRAGON, - (bmc_ptr->g_mode | bmc_ptr->p_mode | bmc_ptr->u_mode))) { - if (!bmc_ptr->pet) - msg_print(_("召喚された古代ドラゴンは怒っている!", "The summoned ancient dragon is angry!")); - } else { - bmc_ptr->no_trump = TRUE; - } - - return TRUE; -} - -bool cast_blue_summon_amberite(player_type *caster_ptr, bmc_type *bmc_ptr) -{ - msg_print(_("アンバーの王族を召喚した!", "You summon a Lord of Amber!")); - if (summon_specific(caster_ptr, (bmc_ptr->pet ? -1 : 0), caster_ptr->y, caster_ptr->x, bmc_ptr->summon_lev, SUMMON_AMBERITES, - (bmc_ptr->g_mode | bmc_ptr->p_mode | bmc_ptr->u_mode))) { - if (!bmc_ptr->pet) - msg_print(_("召喚されたアンバーの王族は怒っている!", "The summoned Lord of Amber is angry!")); - } else { - bmc_ptr->no_trump = TRUE; - } - - return TRUE; -} - -bool cast_blue_summon_unique(player_type *caster_ptr, bmc_type *bmc_ptr) -{ - int count = 0; - msg_print(_("特別な強敵を召喚した!", "You summon a special opponent!")); - for (int k = 0; k < 1; k++) { - if (summon_specific(caster_ptr, (bmc_ptr->pet ? -1 : 0), caster_ptr->y, caster_ptr->x, bmc_ptr->summon_lev, SUMMON_UNIQUE, - (bmc_ptr->g_mode | bmc_ptr->p_mode | PM_ALLOW_UNIQUE))) { - count++; - if (!bmc_ptr->pet) - msg_print(_("召喚されたユニーク・モンスターは怒っている!", "The summoned special opponent is angry!")); - } - } - - for (int k = count; k < 1; k++) { - if (summon_specific(caster_ptr, (bmc_ptr->pet ? -1 : 0), caster_ptr->y, caster_ptr->x, bmc_ptr->summon_lev, SUMMON_HI_UNDEAD, - (bmc_ptr->g_mode | bmc_ptr->p_mode | PM_ALLOW_UNIQUE))) { - count++; - if (!bmc_ptr->pet) - msg_print(_("召喚された上級アンデッドは怒っている!", "The summoned greater undead is angry!")); - } - } - - if (!count) - bmc_ptr->no_trump = TRUE; - - return TRUE; -} - bool switch_cast_blue_magic(player_type *caster_ptr, bmc_type *bmc_ptr, SPELL_IDX spell) { switch (spell) { diff --git a/src/blue-magic/blue-magic-summon.c b/src/blue-magic/blue-magic-summon.c new file mode 100644 index 000000000..3eec0610b --- /dev/null +++ b/src/blue-magic/blue-magic-summon.c @@ -0,0 +1,248 @@ +#include "blue-magic/blue-magic-summon.h" +#include "blue-magic/blue-magic-util.h" +#include "monster-floor/monster-summon.h" +#include "monster-floor/place-monster-types.h" +#include "spell/spells-summon.h" +#include "view/display-messages.h" + +bool cast_blue_summon_kin(player_type *caster_ptr, bmc_type *bmc_ptr) +{ + msg_print(_("援軍を召喚した。", "You summon one of your kin.")); + for (int k = 0; k < 1; k++) { + if (summon_kin_player(caster_ptr, bmc_ptr->summon_lev, caster_ptr->y, caster_ptr->x, (bmc_ptr->pet ? PM_FORCE_PET : 0L))) { + if (!bmc_ptr->pet) + msg_print(_("召喚された仲間は怒っている!", "The summoned companion is angry!")); + } else { + bmc_ptr->no_trump = TRUE; + } + } + + return TRUE; +} + +bool cast_blue_summon_cyber(player_type *caster_ptr, bmc_type *bmc_ptr) +{ + msg_print(_("サイバーデーモンを召喚した!", "You summon a Cyberdemon!")); + for (int k = 0; k < 1; k++) { + 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)) { + if (!bmc_ptr->pet) + msg_print(_("召喚されたサイバーデーモンは怒っている!", "The summoned Cyberdemon are angry!")); + } else { + bmc_ptr->no_trump = TRUE; + } + } + + return TRUE; +} + +bool cast_blue_summon_monster(player_type *caster_ptr, bmc_type *bmc_ptr) +{ + msg_print(_("仲間を召喚した。", "You summon help.")); + for (int k = 0; k < 1; k++) { + 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)) { + if (!bmc_ptr->pet) + msg_print(_("召喚されたモンスターは怒っている!", "The summoned monster is angry!")); + } else { + bmc_ptr->no_trump = TRUE; + } + } + + return TRUE; +} + +bool cast_blue_summon_monsters(player_type *caster_ptr, bmc_type *bmc_ptr) +{ + msg_print(_("モンスターを召喚した!", "You summon monsters!")); + for (int k = 0; k < bmc_ptr->plev / 15 + 2; k++) { + 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))) { + if (!bmc_ptr->pet) + msg_print(_("召喚されたモンスターは怒っている!", "The summoned monsters are angry!")); + } else { + bmc_ptr->no_trump = TRUE; + } + } + + return TRUE; +} + +bool cast_blue_summon_ant(player_type *caster_ptr, bmc_type *bmc_ptr) +{ + msg_print(_("アリを召喚した。", "You summon ants.")); + if (summon_specific( + 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))) { + if (!bmc_ptr->pet) + msg_print(_("召喚されたアリは怒っている!", "The summoned ants are angry!")); + } else { + bmc_ptr->no_trump = TRUE; + } + + return TRUE; +} + +bool cast_blue_summon_spider(player_type *caster_ptr, bmc_type *bmc_ptr) +{ + msg_print(_("蜘蛛を召喚した。", "You summon spiders.")); + if (summon_specific( + 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))) { + if (!bmc_ptr->pet) + msg_print(_("召喚された蜘蛛は怒っている!", "Summoned spiders are angry!")); + } else { + bmc_ptr->no_trump = TRUE; + } + + return TRUE; +} + +bool cast_blue_summon_hound(player_type *caster_ptr, bmc_type *bmc_ptr) +{ + msg_print(_("ハウンドを召喚した。", "You summon hounds.")); + if (summon_specific( + 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))) { + if (!bmc_ptr->pet) + msg_print(_("召喚されたハウンドは怒っている!", "Summoned hounds are angry!")); + } else { + bmc_ptr->no_trump = TRUE; + } + + return TRUE; +} + +bool cast_blue_summon_hydra(player_type *caster_ptr, bmc_type *bmc_ptr) +{ + msg_print(_("ヒドラを召喚した。", "You summon a hydras.")); + if (summon_specific( + 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))) { + if (!bmc_ptr->pet) + msg_print(_("召喚されたヒドラは怒っている!", "Summoned hydras are angry!")); + } else { + bmc_ptr->no_trump = TRUE; + } + + return TRUE; +} + +bool cast_blue_summon_angel(player_type *caster_ptr, bmc_type *bmc_ptr) +{ + msg_print(_("天使を召喚した!", "You summon an angel!")); + if (summon_specific( + 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))) { + if (!bmc_ptr->pet) + msg_print(_("召喚された天使は怒っている!", "The summoned angel is angry!")); + } else { + bmc_ptr->no_trump = TRUE; + } + + return TRUE; +} + +bool cast_blue_summon_demon(player_type *caster_ptr, bmc_type *bmc_ptr) +{ + msg_print(_("混沌の宮廷から悪魔を召喚した!", "You summon a demon from the Courts of Chaos!")); + if (summon_specific( + 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))) { + if (!bmc_ptr->pet) + msg_print(_("召喚されたデーモンは怒っている!", "The summoned demon is angry!")); + } else { + bmc_ptr->no_trump = TRUE; + } + + return TRUE; +} + +bool cast_blue_summon_undead(player_type *caster_ptr, bmc_type *bmc_ptr) +{ + msg_print(_("アンデッドの強敵を召喚した!", "You summon an undead adversary!")); + if (summon_specific( + 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))) { + if (!bmc_ptr->pet) + msg_print(_("召喚されたアンデッドは怒っている!", "The summoned undead is angry!")); + } else { + bmc_ptr->no_trump = TRUE; + } + + return TRUE; +} + +bool cast_blue_summon_dragon(player_type *caster_ptr, bmc_type *bmc_ptr) +{ + msg_print(_("ドラゴンを召喚した!", "You summon a dragon!")); + if (summon_specific( + 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))) { + if (!bmc_ptr->pet) + msg_print(_("召喚されたドラゴンは怒っている!", "The summoned dragon is angry!")); + } else { + bmc_ptr->no_trump = TRUE; + } + + return TRUE; +} + +bool cast_blue_summon_high_undead(player_type *caster_ptr, bmc_type *bmc_ptr) +{ + msg_print(_("強力なアンデッドを召喚した!", "You summon a greater undead!")); + if (summon_specific(caster_ptr, (bmc_ptr->pet ? -1 : 0), caster_ptr->y, caster_ptr->x, bmc_ptr->summon_lev, SUMMON_HI_UNDEAD, + (bmc_ptr->g_mode | bmc_ptr->p_mode | bmc_ptr->u_mode))) { + if (!bmc_ptr->pet) + msg_print(_("召喚された上級アンデッドは怒っている!", "The summoned greater undead is angry!")); + } else { + bmc_ptr->no_trump = TRUE; + } + + return TRUE; +} + +bool cast_blue_summon_high_dragon(player_type *caster_ptr, bmc_type *bmc_ptr) +{ + msg_print(_("古代ドラゴンを召喚した!", "You summon an ancient dragon!")); + if (summon_specific(caster_ptr, (bmc_ptr->pet ? -1 : 0), caster_ptr->y, caster_ptr->x, bmc_ptr->summon_lev, SUMMON_HI_DRAGON, + (bmc_ptr->g_mode | bmc_ptr->p_mode | bmc_ptr->u_mode))) { + if (!bmc_ptr->pet) + msg_print(_("召喚された古代ドラゴンは怒っている!", "The summoned ancient dragon is angry!")); + } else { + bmc_ptr->no_trump = TRUE; + } + + return TRUE; +} + +bool cast_blue_summon_amberite(player_type *caster_ptr, bmc_type *bmc_ptr) +{ + msg_print(_("アンバーの王族を召喚した!", "You summon a Lord of Amber!")); + if (summon_specific(caster_ptr, (bmc_ptr->pet ? -1 : 0), caster_ptr->y, caster_ptr->x, bmc_ptr->summon_lev, SUMMON_AMBERITES, + (bmc_ptr->g_mode | bmc_ptr->p_mode | bmc_ptr->u_mode))) { + if (!bmc_ptr->pet) + msg_print(_("召喚されたアンバーの王族は怒っている!", "The summoned Lord of Amber is angry!")); + } else { + bmc_ptr->no_trump = TRUE; + } + + return TRUE; +} + +bool cast_blue_summon_unique(player_type *caster_ptr, bmc_type *bmc_ptr) +{ + int count = 0; + msg_print(_("特別な強敵を召喚した!", "You summon a special opponent!")); + for (int k = 0; k < 1; k++) { + if (summon_specific(caster_ptr, (bmc_ptr->pet ? -1 : 0), caster_ptr->y, caster_ptr->x, bmc_ptr->summon_lev, SUMMON_UNIQUE, + (bmc_ptr->g_mode | bmc_ptr->p_mode | PM_ALLOW_UNIQUE))) { + count++; + if (!bmc_ptr->pet) + msg_print(_("召喚されたユニーク・モンスターは怒っている!", "The summoned special opponent is angry!")); + } + } + + for (int k = count; k < 1; k++) { + if (summon_specific(caster_ptr, (bmc_ptr->pet ? -1 : 0), caster_ptr->y, caster_ptr->x, bmc_ptr->summon_lev, SUMMON_HI_UNDEAD, + (bmc_ptr->g_mode | bmc_ptr->p_mode | PM_ALLOW_UNIQUE))) { + count++; + if (!bmc_ptr->pet) + msg_print(_("召喚された上級アンデッドは怒っている!", "The summoned greater undead is angry!")); + } + } + + if (!count) + bmc_ptr->no_trump = TRUE; + + return TRUE; +} diff --git a/src/blue-magic/blue-magic-summon.h b/src/blue-magic/blue-magic-summon.h new file mode 100644 index 000000000..51223769a --- /dev/null +++ b/src/blue-magic/blue-magic-summon.h @@ -0,0 +1,21 @@ +#pragma once + +#include "system/angband.h" + +typedef struct bmc_type bmc_type; +bool cast_blue_summon_kin(player_type *caster_ptr, bmc_type *bmc_ptr); +bool cast_blue_summon_cyber(player_type *caster_ptr, bmc_type *bmc_ptr); +bool cast_blue_summon_monster(player_type *caster_ptr, bmc_type *bmc_ptr); +bool cast_blue_summon_monsters(player_type *caster_ptr, bmc_type *bmc_ptr); +bool cast_blue_summon_ant(player_type *caster_ptr, bmc_type *bmc_ptr); +bool cast_blue_summon_spider(player_type *caster_ptr, bmc_type *bmc_ptr); +bool cast_blue_summon_hound(player_type *caster_ptr, bmc_type *bmc_ptr); +bool cast_blue_summon_hydra(player_type *caster_ptr, bmc_type *bmc_ptr); +bool cast_blue_summon_angel(player_type *caster_ptr, bmc_type *bmc_ptr); +bool cast_blue_summon_demon(player_type *caster_ptr, bmc_type *bmc_ptr); +bool cast_blue_summon_undead(player_type *caster_ptr, bmc_type *bmc_ptr); +bool cast_blue_summon_dragon(player_type *caster_ptr, bmc_type *bmc_ptr); +bool cast_blue_summon_high_undead(player_type *caster_ptr, bmc_type *bmc_ptr); +bool cast_blue_summon_high_dragon(player_type *caster_ptr, bmc_type *bmc_ptr); +bool cast_blue_summon_amberite(player_type *caster_ptr, bmc_type *bmc_ptr); +bool cast_blue_summon_unique(player_type *caster_ptr, bmc_type *bmc_ptr); -- 2.11.0