2 * @file blue-magic-summon.cpp
6 #include "blue-magic/blue-magic-summon.h"
7 #include "blue-magic/blue-magic-util.h"
8 #include "monster-floor/monster-summon.h"
9 #include "monster-floor/place-monster-types.h"
10 #include "spell/spells-summon.h"
11 #include "spell/summon-types.h"
12 #include "system/player-type-definition.h"
13 #include "view/display-messages.h"
15 bool cast_blue_summon_kin(PlayerType *player_ptr, bmc_type *bmc_ptr)
17 msg_print(_("援軍を召喚した。", "You summon one of your kin."));
18 for (int k = 0; k < 1; k++) {
19 if (summon_kin_player(player_ptr, bmc_ptr->summon_lev, player_ptr->y, player_ptr->x, (bmc_ptr->pet ? PM_FORCE_PET : PM_NONE))) {
21 msg_print(_("召喚された仲間は怒っている!", "The summoned companion is angry!"));
24 bmc_ptr->no_trump = true;
31 bool cast_blue_summon_cyber(PlayerType *player_ptr, bmc_type *bmc_ptr)
33 msg_print(_("サイバーデーモンを召喚した!", "You summon a Cyberdemon!"));
34 for (int k = 0; k < 1; k++) {
35 if (summon_specific(player_ptr, (bmc_ptr->pet ? -1 : 0), player_ptr->y, player_ptr->x, bmc_ptr->summon_lev, SUMMON_CYBER, bmc_ptr->p_mode)) {
37 msg_print(_("召喚されたサイバーデーモンは怒っている!", "The summoned Cyberdemon is angry!"));
40 bmc_ptr->no_trump = true;
47 bool cast_blue_summon_monster(PlayerType *player_ptr, bmc_type *bmc_ptr)
49 msg_print(_("仲間を召喚した。", "You summon help."));
50 for (int k = 0; k < 1; k++) {
51 if (summon_specific(player_ptr, (bmc_ptr->pet ? -1 : 0), player_ptr->y, player_ptr->x, bmc_ptr->summon_lev, SUMMON_NONE, bmc_ptr->p_mode)) {
53 msg_print(_("召喚されたモンスターは怒っている!", "The summoned monster is angry!"));
56 bmc_ptr->no_trump = true;
63 bool cast_blue_summon_monsters(PlayerType *player_ptr, bmc_type *bmc_ptr)
65 msg_print(_("モンスターを召喚した!", "You summon monsters!"));
66 for (int k = 0; k < bmc_ptr->plev / 15 + 2; k++) {
67 if (summon_specific(player_ptr, (bmc_ptr->pet ? -1 : 0), player_ptr->y, player_ptr->x, bmc_ptr->summon_lev, SUMMON_NONE, (bmc_ptr->p_mode | bmc_ptr->u_mode))) {
69 msg_print(_("召喚されたモンスターは怒っている!", "The summoned monsters are angry!"));
72 bmc_ptr->no_trump = true;
79 bool cast_blue_summon_ant(PlayerType *player_ptr, bmc_type *bmc_ptr)
81 msg_print(_("アリを召喚した。", "You summon ants."));
83 player_ptr, (bmc_ptr->pet ? -1 : 0), player_ptr->y, player_ptr->x, bmc_ptr->summon_lev, SUMMON_ANT, (PM_ALLOW_GROUP | bmc_ptr->p_mode))) {
85 msg_print(_("召喚されたアリは怒っている!", "The summoned ants are angry!"));
88 bmc_ptr->no_trump = true;
94 bool cast_blue_summon_spider(PlayerType *player_ptr, bmc_type *bmc_ptr)
96 msg_print(_("蜘蛛を召喚した。", "You summon spiders."));
98 player_ptr, (bmc_ptr->pet ? -1 : 0), player_ptr->y, player_ptr->x, bmc_ptr->summon_lev, SUMMON_SPIDER, (PM_ALLOW_GROUP | bmc_ptr->p_mode))) {
100 msg_print(_("召喚された蜘蛛は怒っている!", "The summoned spiders are angry!"));
103 bmc_ptr->no_trump = true;
109 bool cast_blue_summon_hound(PlayerType *player_ptr, bmc_type *bmc_ptr)
111 msg_print(_("ハウンドを召喚した。", "You summon hounds."));
113 player_ptr, (bmc_ptr->pet ? -1 : 0), player_ptr->y, player_ptr->x, bmc_ptr->summon_lev, SUMMON_HOUND, (PM_ALLOW_GROUP | bmc_ptr->p_mode))) {
115 msg_print(_("召喚されたハウンドは怒っている!", "The summoned hounds are angry!"));
118 bmc_ptr->no_trump = true;
124 bool cast_blue_summon_hydra(PlayerType *player_ptr, bmc_type *bmc_ptr)
126 msg_print(_("ヒドラを召喚した。", "You summon a hydras."));
128 player_ptr, (bmc_ptr->pet ? -1 : 0), player_ptr->y, player_ptr->x, bmc_ptr->summon_lev, SUMMON_HYDRA, (bmc_ptr->g_mode | bmc_ptr->p_mode))) {
130 msg_print(_("召喚されたヒドラは怒っている!", "The summoned hydras are angry!"));
133 bmc_ptr->no_trump = true;
139 bool cast_blue_summon_angel(PlayerType *player_ptr, bmc_type *bmc_ptr)
141 msg_print(_("天使を召喚した!", "You summon an angel!"));
143 player_ptr, (bmc_ptr->pet ? -1 : 0), player_ptr->y, player_ptr->x, bmc_ptr->summon_lev, SUMMON_ANGEL, (bmc_ptr->g_mode | bmc_ptr->p_mode))) {
145 msg_print(_("召喚された天使は怒っている!", "The summoned angel is angry!"));
148 bmc_ptr->no_trump = true;
154 bool cast_blue_summon_demon(PlayerType *player_ptr, bmc_type *bmc_ptr)
156 msg_print(_("混沌の宮廷から悪魔を召喚した!", "You summon a demon from the Courts of Chaos!"));
158 player_ptr, (bmc_ptr->pet ? -1 : 0), player_ptr->y, player_ptr->x, bmc_ptr->summon_lev, SUMMON_DEMON, (bmc_ptr->g_mode | bmc_ptr->p_mode))) {
160 msg_print(_("召喚されたデーモンは怒っている!", "The summoned demon is angry!"));
163 bmc_ptr->no_trump = true;
169 bool cast_blue_summon_undead(PlayerType *player_ptr, bmc_type *bmc_ptr)
171 msg_print(_("アンデッドの強敵を召喚した!", "You summon an undead adversary!"));
173 player_ptr, (bmc_ptr->pet ? -1 : 0), player_ptr->y, player_ptr->x, bmc_ptr->summon_lev, SUMMON_UNDEAD, (bmc_ptr->g_mode | bmc_ptr->p_mode))) {
175 msg_print(_("召喚されたアンデッドは怒っている!", "The summoned undead is angry!"));
178 bmc_ptr->no_trump = true;
184 bool cast_blue_summon_dragon(PlayerType *player_ptr, bmc_type *bmc_ptr)
186 msg_print(_("ドラゴンを召喚した!", "You summon a dragon!"));
188 player_ptr, (bmc_ptr->pet ? -1 : 0), player_ptr->y, player_ptr->x, bmc_ptr->summon_lev, SUMMON_DRAGON, (bmc_ptr->g_mode | bmc_ptr->p_mode))) {
190 msg_print(_("召喚されたドラゴンは怒っている!", "The summoned dragon is angry!"));
193 bmc_ptr->no_trump = true;
199 bool cast_blue_summon_high_undead(PlayerType *player_ptr, bmc_type *bmc_ptr)
201 msg_print(_("強力なアンデッドを召喚した!", "You summon a greater undead!"));
202 if (summon_specific(player_ptr, (bmc_ptr->pet ? -1 : 0), player_ptr->y, player_ptr->x, bmc_ptr->summon_lev, SUMMON_HI_UNDEAD,
203 (bmc_ptr->g_mode | bmc_ptr->p_mode | bmc_ptr->u_mode))) {
205 msg_print(_("召喚された上級アンデッドは怒っている!", "The summoned greater undead is angry!"));
208 bmc_ptr->no_trump = true;
214 bool cast_blue_summon_high_dragon(PlayerType *player_ptr, bmc_type *bmc_ptr)
216 msg_print(_("古代ドラゴンを召喚した!", "You summon an ancient dragon!"));
217 if (summon_specific(player_ptr, (bmc_ptr->pet ? -1 : 0), player_ptr->y, player_ptr->x, bmc_ptr->summon_lev, SUMMON_HI_DRAGON,
218 (bmc_ptr->g_mode | bmc_ptr->p_mode | bmc_ptr->u_mode))) {
220 msg_print(_("召喚された古代ドラゴンは怒っている!", "The summoned ancient dragon is angry!"));
223 bmc_ptr->no_trump = true;
229 bool cast_blue_summon_amberite(PlayerType *player_ptr, bmc_type *bmc_ptr)
231 msg_print(_("アンバーの王族を召喚した!", "You summon a Lord of Amber!"));
232 if (summon_specific(player_ptr, (bmc_ptr->pet ? -1 : 0), player_ptr->y, player_ptr->x, bmc_ptr->summon_lev, SUMMON_AMBERITES,
233 (bmc_ptr->g_mode | bmc_ptr->p_mode | bmc_ptr->u_mode))) {
235 msg_print(_("召喚されたアンバーの王族は怒っている!", "The summoned Lord of Amber is angry!"));
238 bmc_ptr->no_trump = true;
244 bool cast_blue_summon_unique(PlayerType *player_ptr, bmc_type *bmc_ptr)
247 msg_print(_("特別な強敵を召喚した!", "You summon a special opponent!"));
248 for (int k = 0; k < 1; k++) {
249 if (summon_specific(player_ptr, (bmc_ptr->pet ? -1 : 0), player_ptr->y, player_ptr->x, bmc_ptr->summon_lev, SUMMON_UNIQUE,
250 (bmc_ptr->g_mode | bmc_ptr->p_mode | PM_ALLOW_UNIQUE))) {
253 msg_print(_("召喚されたユニーク・モンスターは怒っている!", "The summoned special opponent is angry!"));
258 for (int k = count; k < 1; k++) {
259 if (summon_specific(player_ptr, (bmc_ptr->pet ? -1 : 0), player_ptr->y, player_ptr->x, bmc_ptr->summon_lev, SUMMON_HI_UNDEAD,
260 (bmc_ptr->g_mode | bmc_ptr->p_mode | PM_ALLOW_UNIQUE))) {
263 msg_print(_("召喚された上級アンデッドは怒っている!", "The summoned greater undead is angry!"));
269 bmc_ptr->no_trump = true;
275 bool cast_blue_summon_dead_unique(PlayerType *player_ptr, bmc_type *bmc_ptr)
277 BIT_FLAGS mode = bmc_ptr->g_mode | bmc_ptr->p_mode | PM_ALLOW_UNIQUE | PM_CLONE;
279 msg_print(_("特別な強敵を蘇らせた!", "You summon a special dead opponent!"));
280 if (summon_specific(player_ptr, (bmc_ptr->pet ? -1 : 0), player_ptr->y, player_ptr->x, bmc_ptr->summon_lev, SUMMON_DEAD_UNIQUE, mode)) {
282 msg_print(_("蘇生されたユニーク・モンスターは怒っている!", "The summoned special dead opponent is angry!"));
285 bmc_ptr->no_trump = true;