Separate trump realm process from cmd-spell.c to realm-trump.c/h.
<ClCompile Include="..\..\src\realm-chaos.c" />\r
<ClCompile Include="..\..\src\realm-hex.c" />\r
<ClCompile Include="..\..\src\realm-life.c" />\r
+ <ClCompile Include="..\..\src\realm-trump.c" />\r
<ClCompile Include="..\..\src\report.c" />\r
<ClCompile Include="..\..\src\rooms-normal.c" />\r
<ClCompile Include="..\..\src\rooms-pitnest.c" />\r
<ClInclude Include="..\..\src\realm-life.h" />\r
<ClInclude Include="..\..\src\realm-nature.h" />\r
<ClInclude Include="..\..\src\realm-sorcery.h" />\r
+ <ClInclude Include="..\..\src\realm-trump.h" />\r
<ClInclude Include="..\..\src\rooms-normal.h" />\r
<ClInclude Include="..\..\src\rooms-pitnest.h" />\r
<ClInclude Include="..\..\src\rooms-vault.h" />\r
<ClCompile Include="..\..\src\realm-death.c">\r
<Filter>Source</Filter>\r
</ClCompile>\r
+ <ClCompile Include="..\..\src\realm-trump.c">\r
+ <Filter>Source</Filter>\r
+ </ClCompile>\r
</ItemGroup>\r
<ItemGroup>\r
<ClInclude Include="..\..\src\angband.h">\r
<ClInclude Include="..\..\src\realm-death.h">\r
<Filter>Header</Filter>\r
</ClInclude>\r
+ <ClInclude Include="..\..\src\realm-trump.h">\r
+ <Filter>Header</Filter>\r
+ </ClInclude>\r
</ItemGroup>\r
<ItemGroup>\r
<ResourceCompile Include="..\..\src\angband.rc" />\r
#include "realm-life.h"\r
#include "realm-nature.h"\r
#include "realm-sorcery.h"\r
+#include "realm-trump.h"\r
\r
/*!\r
* @brief\r
\r
\r
\r
-/*!\r
- * @brief トランプ領域魔法の各処理を行う\r
- * @param spell 魔法ID\r
- * @param mode 処理内容 (SPELL_NAME / SPELL_DESC / SPELL_INFO / SPELL_CAST)\r
- * @return SPELL_NAME / SPELL_DESC / SPELL_INFO 時には文字列ポインタを返す。SPELL_CAST時はNULL文字列を返す。\r
- */\r
-static cptr do_trump_spell(SPELL_IDX spell, BIT_FLAGS mode)\r
-{\r
- bool name = (mode == SPELL_NAME) ? TRUE : FALSE;\r
- bool desc = (mode == SPELL_DESC) ? TRUE : FALSE;\r
- bool info = (mode == SPELL_INFO) ? TRUE : FALSE;\r
- bool cast = (mode == SPELL_CAST) ? TRUE : FALSE;\r
- bool fail = (mode == SPELL_FAIL) ? TRUE : FALSE;\r
- static const char s_random[] = _("ランダム", "random");\r
-\r
- int dir;\r
- int plev = p_ptr->lev;\r
-\r
- switch (spell)\r
- {\r
- case 0:\r
- if (name) return _("ショート・テレポート", "Phase Door");\r
- if (desc) return _("近距離のテレポートをする。", "Teleport short distance.");\r
- \r
- {\r
- POSITION range = 10;\r
-\r
- if (info) return info_range(range);\r
-\r
- if (cast)\r
- {\r
- teleport_player(range, 0L);\r
- }\r
- }\r
- break;\r
-\r
- case 1:\r
- if (name) return _("蜘蛛のカード", "Trump Spiders");\r
- if (desc) return _("蜘蛛を召喚する。", "Summons spiders.");\r
- \r
- {\r
- if (cast || fail)\r
- {\r
- msg_print(_("あなたは蜘蛛のカードに集中する...", "You concentrate on the trump of an spider..."));\r
- if (trump_summoning(1, !fail, p_ptr->y, p_ptr->x, 0, SUMMON_SPIDER, PM_ALLOW_GROUP))\r
- {\r
- if (fail)\r
- {\r
- msg_print(_("召喚された蜘蛛は怒っている!", "The summoned spiders get angry!"));\r
- }\r
- }\r
- }\r
- }\r
- break;\r
-\r
- case 2:\r
- if (name) return _("シャッフル", "Shuffle");\r
- if (desc) return _("カードの占いをする。", "Causes random effects.");\r
- \r
- {\r
- if (info) return s_random;\r
-\r
- if (cast)\r
- {\r
- cast_shuffle();\r
- }\r
- }\r
- break;\r
-\r
- case 3:\r
- if (name) return _("フロア・リセット", "Reset Recall");\r
- if (desc) return _("最深階を変更する。", "Resets the 'deepest' level for recall spell.");\r
- \r
- {\r
- if (cast)\r
- {\r
- if (!reset_recall()) return NULL;\r
- }\r
- }\r
- break;\r
-\r
- case 4:\r
- if (name) return _("テレポート", "Teleport");\r
- if (desc) return _("遠距離のテレポートをする。", "Teleport long distance.");\r
- \r
- {\r
- POSITION range = plev * 4;\r
-\r
- if (info) return info_range(range);\r
-\r
- if (cast)\r
- {\r
- teleport_player(range, 0L);\r
- }\r
- }\r
- break;\r
-\r
- case 5:\r
- if (name) return _("感知のカード", "Trump Spying");\r
- if (desc) return _("一定時間、テレパシー能力を得る。", "Gives telepathy for a while.");\r
- \r
- {\r
- int base = 25;\r
- int sides = 30;\r
-\r
- if (info) return info_duration(base, sides);\r
-\r
- if (cast)\r
- {\r
- set_tim_esp(randint1(sides) + base, FALSE);\r
- }\r
- }\r
- break;\r
-\r
- case 6:\r
- if (name) return _("テレポート・モンスター", "Teleport Away");\r
- if (desc) return _("モンスターをテレポートさせるビームを放つ。抵抗されると無効。", "Teleports all monsters on the line away unless resisted.");\r
- \r
- {\r
- int power = plev;\r
-\r
- if (info) return info_power(power);\r
-\r
- if (cast)\r
- {\r
- if (!get_aim_dir(&dir)) return NULL;\r
-\r
- fire_beam(GF_AWAY_ALL, dir, power);\r
- }\r
- }\r
- break;\r
-\r
- case 7:\r
- if (name) return _("動物のカード", "Trump Animals");\r
- if (desc) return _("1体の動物を召喚する。", "Summons an animal.");\r
- \r
- {\r
- if (cast || fail)\r
- {\r
- int type = (!fail ? SUMMON_ANIMAL_RANGER : SUMMON_ANIMAL);\r
- msg_print(_("あなたは動物のカードに集中する...", "You concentrate on the trump of an animal..."));\r
- if (trump_summoning(1, !fail, p_ptr->y, p_ptr->x, 0, type, 0L))\r
- {\r
- if (fail)\r
- {\r
- msg_print(_("召喚された動物は怒っている!", "The summoned animal gets angry!"));\r
- }\r
- }\r
- }\r
- }\r
- break;\r
-\r
- case 8:\r
- if (name) return _("移動のカード", "Trump Reach");\r
- if (desc) return _("アイテムを自分の足元へ移動させる。", "Pulls a distant item close to you.");\r
- \r
- {\r
- int weight = plev * 15;\r
-\r
- if (info) return info_weight(weight);\r
-\r
- if (cast)\r
- {\r
- if (!get_aim_dir(&dir)) return NULL;\r
-\r
- fetch(dir, weight, FALSE);\r
- }\r
- }\r
- break;\r
-\r
- case 9:\r
- if (name) return _("カミカゼのカード", "Trump Kamikaze");\r
- if (desc) return _("複数の爆発するモンスターを召喚する。", "Summons monsters which explode by itself.");\r
- \r
- {\r
- if (cast || fail)\r
- {\r
- int x, y;\r
- int type;\r
-\r
- if (cast)\r
- {\r
- if (!target_set(TARGET_KILL)) return NULL;\r
- x = target_col;\r
- y = target_row;\r
- }\r
- else\r
- {\r
- /* Summons near player when failed */\r
- x = p_ptr->x;\r
- y = p_ptr->y;\r
- }\r
-\r
- if (p_ptr->pclass == CLASS_BEASTMASTER)\r
- type = SUMMON_KAMIKAZE_LIVING;\r
- else\r
- type = SUMMON_KAMIKAZE;\r
-\r
- msg_print(_("あなたはカミカゼのカードに集中する...", "You concentrate on several trumps at once..."));\r
- if (trump_summoning(2 + randint0(plev / 7), !fail, y, x, 0, type, 0L))\r
- {\r
- if (fail)\r
- {\r
- msg_print(_("召喚されたモンスターは怒っている!", "The summoned creatures get angry!"));\r
- }\r
- }\r
- }\r
- }\r
- break;\r
-\r
- case 10:\r
- if (name) return _("幻霊召喚", "Phantasmal Servant");\r
- if (desc) return _("1体の幽霊を召喚する。", "Summons a ghost.");\r
- \r
- {\r
- /* Phantasmal Servant is not summoned as enemy when failed */\r
- if (cast)\r
- {\r
- int summon_lev = plev * 2 / 3 + randint1(plev / 2);\r
-\r
- if (trump_summoning(1, !fail, p_ptr->y, p_ptr->x, (summon_lev * 3 / 2), SUMMON_PHANTOM, 0L))\r
- {\r
- msg_print(_("御用でございますか、御主人様?", "'Your wish, master?'"));\r
- }\r
- }\r
- }\r
- break;\r
-\r
- case 11:\r
- if (name) return _("スピード・モンスター", "Haste Monster");\r
- if (desc) return _("モンスター1体を加速させる。", "Hastes a monster.");\r
- \r
- {\r
- if (cast)\r
- {\r
- bool result;\r
-\r
- /* Temporary enable target_pet option */\r
- bool old_target_pet = target_pet;\r
- target_pet = TRUE;\r
-\r
- result = get_aim_dir(&dir);\r
-\r
- /* Restore target_pet option */\r
- target_pet = old_target_pet;\r
-\r
- if (!result) return NULL;\r
-\r
- speed_monster(dir, plev);\r
- }\r
- }\r
- break;\r
-\r
- case 12:\r
- if (name) return _("テレポート・レベル", "Teleport Level");\r
- if (desc) return _("瞬時に上か下の階にテレポートする。", "Teleport to up or down stairs in a moment.");\r
- \r
- {\r
- if (cast)\r
- {\r
- if (!get_check(_("本当に他の階にテレポートしますか?", "Are you sure? (Teleport Level)"))) return NULL;\r
- teleport_level(0);\r
- }\r
- }\r
- break;\r
-\r
- case 13:\r
- if (name) return _("次元の扉", "Dimension Door");\r
- if (desc) return _("短距離内の指定した場所にテレポートする。", "Teleport to given location.");\r
- \r
- {\r
- POSITION range = plev / 2 + 10;\r
-\r
- if (info) return info_range(range);\r
-\r
- if (cast)\r
- {\r
- msg_print(_("次元の扉が開いた。目的地を選んで下さい。", "You open a dimensional gate. Choose a destination."));\r
- if (!dimension_door()) return NULL;\r
- }\r
- }\r
- break;\r
-\r
- case 14:\r
- if (name) return _("帰還の呪文", "Word of Recall");\r
- if (desc) return _("地上にいるときはダンジョンの最深階へ、ダンジョンにいるときは地上へと移動する。",\r
- "Recalls player from dungeon to town, or from town to the deepest level of dungeon.");\r
- \r
- {\r
- int base = 15;\r
- int sides = 20;\r
-\r
- if (info) return info_delay(base, sides);\r
-\r
- if (cast)\r
- {\r
- if (!word_of_recall()) return NULL;\r
- }\r
- }\r
- break;\r
-\r
- case 15:\r
- if (name) return _("怪物追放", "Banish");\r
- if (desc) return _("視界内の全てのモンスターをテレポートさせる。抵抗されると無効。", "Teleports all monsters in sight away unless resisted.");\r
- \r
- {\r
- int power = plev * 4;\r
-\r
- if (info) return info_power(power);\r
-\r
- if (cast)\r
- {\r
- banish_monsters(power);\r
- }\r
- }\r
- break;\r
-\r
- case 16:\r
- if (name) return _("位置交換のカード", "Swap Position");\r
- if (desc) return _("1体のモンスターと位置を交換する。", "Swap positions of you and a monster.");\r
- \r
- {\r
- if (cast)\r
- {\r
- bool result;\r
-\r
- /* HACK -- No range limit */\r
- project_length = -1;\r
-\r
- result = get_aim_dir(&dir);\r
-\r
- /* Restore range to default */\r
- project_length = 0;\r
-\r
- if (!result) return NULL;\r
-\r
- teleport_swap(dir);\r
- }\r
- }\r
- break;\r
-\r
- case 17:\r
- if (name) return _("アンデッドのカード", "Trump Undead");\r
- if (desc) return _("1体のアンデッドを召喚する。", "Summons an undead monster.");\r
- \r
- {\r
- if (cast || fail)\r
- {\r
- msg_print(_("あなたはアンデッドのカードに集中する...", "You concentrate on the trump of an undead creature..."));\r
- if (trump_summoning(1, !fail, p_ptr->y, p_ptr->x, 0, SUMMON_UNDEAD, 0L))\r
- {\r
- if (fail)\r
- {\r
- msg_print(_("召喚されたアンデッドは怒っている!", "The summoned undead creature gets angry!"));\r
- }\r
- }\r
- }\r
- }\r
- break;\r
-\r
- case 18:\r
- if (name) return _("爬虫類のカード", "Trump Reptiles");\r
- if (desc) return _("1体のヒドラを召喚する。", "Summons a hydra.");\r
- \r
- {\r
- if (cast || fail)\r
- {\r
- msg_print(_("あなたは爬虫類のカードに集中する...", "You concentrate on the trump of a reptile..."));\r
- if (trump_summoning(1, !fail, p_ptr->y, p_ptr->x, 0, SUMMON_HYDRA, 0L))\r
- {\r
- if (fail)\r
- {\r
- msg_print(_("召喚された爬虫類は怒っている!", "The summoned reptile gets angry!"));\r
- }\r
- }\r
- }\r
- }\r
- break;\r
-\r
- case 19:\r
- if (name) return _("モンスターのカード", "Trump Monsters");\r
- if (desc) return _("複数のモンスターを召喚する。", "Summons some monsters.");\r
- \r
- {\r
- if (cast || fail)\r
- {\r
- int type;\r
- msg_print(_("あなたはモンスターのカードに集中する...", "You concentrate on several trumps at once..."));\r
- if (p_ptr->pclass == CLASS_BEASTMASTER)\r
- type = SUMMON_LIVING;\r
- else\r
- type = 0;\r
-\r
- if (trump_summoning((1 + (plev - 15)/ 10), !fail, p_ptr->y, p_ptr->x, 0, type, 0L))\r
- {\r
- if (fail)\r
- {\r
- msg_print(_("召喚されたモンスターは怒っている!", "The summoned creatures get angry!"));\r
- }\r
- }\r
-\r
- }\r
- }\r
- break;\r
-\r
- case 20:\r
- if (name) return _("ハウンドのカード", "Trump Hounds");\r
- if (desc) return _("1グループのハウンドを召喚する。", "Summons a group of hounds.");\r
- \r
- {\r
- if (cast || fail)\r
- {\r
- msg_print(_("あなたはハウンドのカードに集中する...", "You concentrate on the trump of a hound..."));\r
- if (trump_summoning(1, !fail, p_ptr->y, p_ptr->x, 0, SUMMON_HOUND, PM_ALLOW_GROUP))\r
- {\r
- if (fail)\r
- {\r
- msg_print(_("召喚されたハウンドは怒っている!", "The summoned hounds get angry!"));\r
- }\r
- }\r
- }\r
- }\r
- break;\r
-\r
- case 21:\r
- if (name) return _("トランプの刃", "Trump Branding");\r
- if (desc) return _("武器にトランプの属性をつける。", "Makes current weapon a Trump weapon.");\r
- \r
- {\r
- if (cast)\r
- {\r
- brand_weapon(5);\r
- }\r
- }\r
- break;\r
-\r
- case 22:\r
- if (name) return _("人間トランプ", "Living Trump");\r
- if (desc) return _("ランダムにテレポートする突然変異か、自分の意思でテレポートする突然変異が身につく。", \r
- "Gives mutation which makes you teleport randomly or makes you able to teleport at will.");\r
- \r
- {\r
- if (cast)\r
- {\r
- int mutation;\r
-\r
- if (one_in_(7))\r
- /* Teleport control */\r
- mutation = 12;\r
- else\r
- /* Random teleportation (uncontrolled) */\r
- mutation = 77;\r
-\r
- /* Gain the mutation */\r
- if (gain_random_mutation(mutation))\r
- {\r
- msg_print(_("あなたは生きているカードに変わった。", "You have turned into a Living Trump."));\r
- }\r
- }\r
- }\r
- break;\r
-\r
- case 23:\r
- if (name) return _("サイバーデーモンのカード", "Trump Cyberdemon");\r
- if (desc) return _("1体のサイバーデーモンを召喚する。", "Summons a cyber demon.");\r
- \r
- {\r
- if (cast || fail)\r
- {\r
- msg_print(_("あなたはサイバーデーモンのカードに集中する...", "You concentrate on the trump of a Cyberdemon..."));\r
- if (trump_summoning(1, !fail, p_ptr->y, p_ptr->x, 0, SUMMON_CYBER, 0L))\r
- {\r
- if (fail)\r
- {\r
- msg_print(_("召喚されたサイバーデーモンは怒っている!", "The summoned Cyberdemon gets angry!"));\r
- }\r
- }\r
- }\r
- }\r
- break;\r
-\r
- case 24:\r
- if (name) return _("予見のカード", "Trump Divination");\r
- if (desc) return _("近くの全てのモンスター、罠、扉、階段、財宝、そしてアイテムを感知する。",\r
- "Detects all monsters, traps, doors, stairs, treasures and items in your vicinity.");\r
- \r
- {\r
- int rad = DETECT_RAD_DEFAULT;\r
-\r
- if (info) return info_radius(rad);\r
-\r
- if (cast)\r
- {\r
- detect_all(rad);\r
- }\r
- }\r
- break;\r
-\r
- case 25:\r
- if (name) return _("知識のカード", "Trump Lore");\r
- if (desc) return _("アイテムの持つ能力を完全に知る。", "*Identifies* an item.");\r
- \r
- {\r
- if (cast)\r
- {\r
- if (!identify_fully(FALSE)) return NULL;\r
- }\r
- }\r
- break;\r
-\r
- case 26:\r
- if (name) return _("回復モンスター", "Heal Monster");\r
- if (desc) return _("モンスター1体の体力を回復させる。", "Heal a monster.");\r
- \r
- {\r
- int heal = plev * 10 + 200;\r
-\r
- if (info) return info_heal(0, 0, heal);\r
-\r
- if (cast)\r
- {\r
- bool result;\r
-\r
- /* Temporary enable target_pet option */\r
- bool old_target_pet = target_pet;\r
- target_pet = TRUE;\r
-\r
- result = get_aim_dir(&dir);\r
-\r
- /* Restore target_pet option */\r
- target_pet = old_target_pet;\r
-\r
- if (!result) return NULL;\r
-\r
- heal_monster(dir, heal);\r
- }\r
- }\r
- break;\r
-\r
- case 27:\r
- if (name) return _("ドラゴンのカード", "Trump Dragon");\r
- if (desc) return _("1体のドラゴンを召喚する。", "Summons a dragon.");\r
- \r
- {\r
- if (cast || fail)\r
- {\r
- msg_print(_("あなたはドラゴンのカードに集中する...", "You concentrate on the trump of a dragon..."));\r
- if (trump_summoning(1, !fail, p_ptr->y, p_ptr->x, 0, SUMMON_DRAGON, 0L))\r
- {\r
- if (fail)\r
- {\r
- msg_print(_("召喚されたドラゴンは怒っている!", "The summoned dragon gets angry!"));\r
- }\r
- }\r
- }\r
- }\r
- break;\r
-\r
- case 28:\r
- if (name) return _("隕石のカード", "Trump Meteor");\r
- if (desc) return _("自分の周辺に隕石を落とす。", "Makes meteor balls fall down to nearby random locations.");\r
- \r
- {\r
- HIT_POINT dam = plev * 2;\r
- int rad = 2;\r
-\r
- if (info) return info_multi_damage(dam);\r
-\r
- if (cast)\r
- {\r
- cast_meteor(dam, rad);\r
- }\r
- }\r
- break;\r
-\r
- case 29:\r
- if (name) return _("デーモンのカード", "Trump Demon");\r
- if (desc) return _("1体の悪魔を召喚する。", "Summons a demon.");\r
- \r
- {\r
- if (cast || fail)\r
- {\r
- msg_print(_("あなたはデーモンのカードに集中する...", "You concentrate on the trump of a demon..."));\r
- if (trump_summoning(1, !fail, p_ptr->y, p_ptr->x, 0, SUMMON_DEMON, 0L))\r
- {\r
- if (fail)\r
- {\r
- msg_print(_("召喚されたデーモンは怒っている!", "The summoned demon gets angry!"));\r
- }\r
- }\r
- }\r
- }\r
- break;\r
-\r
- case 30:\r
- if (name) return _("地獄のカード", "Trump Greater Undead");\r
- if (desc) return _("1体の上級アンデッドを召喚する。", "Summons a greater undead.");\r
- \r
- {\r
- if (cast || fail)\r
- {\r
- msg_print(_("あなたは強力なアンデッドのカードに集中する...", "You concentrate on the trump of a greater undead being..."));\r
- /* May allow unique depend on level and dice roll */\r
- if (trump_summoning(1, !fail, p_ptr->y, p_ptr->x, 0, SUMMON_HI_UNDEAD, PM_ALLOW_UNIQUE))\r
- {\r
- if (fail)\r
- {\r
- msg_print(_("召喚された上級アンデッドは怒っている!", "The summoned greater undead creature gets angry!"));\r
- }\r
- }\r
- }\r
- }\r
- break;\r
-\r
- case 31:\r
- if (name) return _("古代ドラゴンのカード", "Trump Ancient Dragon");\r
- if (desc) return _("1体の古代ドラゴンを召喚する。", "Summons an ancient dragon.");\r
- \r
- {\r
- if (cast)\r
- {\r
- int type;\r
-\r
- if (p_ptr->pclass == CLASS_BEASTMASTER)\r
- type = SUMMON_HI_DRAGON_LIVING;\r
- else\r
- type = SUMMON_HI_DRAGON;\r
-\r
- msg_print(_("あなたは古代ドラゴンのカードに集中する...", "You concentrate on the trump of an ancient dragon..."));\r
- /* May allow unique depend on level and dice roll */\r
- if (trump_summoning(1, !fail, p_ptr->y, p_ptr->x, 0, type, PM_ALLOW_UNIQUE))\r
- {\r
- if (fail)\r
- {\r
- msg_print(_("召喚された古代ドラゴンは怒っている!", "The summoned ancient dragon gets angry!"));\r
- }\r
- }\r
- }\r
- }\r
- break;\r
- }\r
-\r
- return "";\r
-}\r
-\r
\r
/*!\r
* @brief 匠領域魔法の各処理を行う\r
--- /dev/null
+#include "angband.h"\r
+#include "cmd-spell.h"\r
+\r
+\r
+/*!\r
+* @brief \83g\83\89\83\93\83v\97Ì\88æ\96\82\96@\82Ì\8ae\8f\88\97\9d\82ð\8ds\82¤\r
+* @param spell \96\82\96@ID\r
+* @param mode \8f\88\97\9d\93à\97e (SPELL_NAME / SPELL_DESC / SPELL_INFO / SPELL_CAST)\r
+* @return SPELL_NAME / SPELL_DESC / SPELL_INFO \8e\9e\82É\82Í\95¶\8e\9a\97ñ\83|\83C\83\93\83^\82ð\95Ô\82·\81BSPELL_CAST\8e\9e\82ÍNULL\95¶\8e\9a\97ñ\82ð\95Ô\82·\81B\r
+*/\r
+cptr do_trump_spell(SPELL_IDX spell, BIT_FLAGS mode)\r
+{\r
+ bool name = (mode == SPELL_NAME) ? TRUE : FALSE;\r
+ bool desc = (mode == SPELL_DESC) ? TRUE : FALSE;\r
+ bool info = (mode == SPELL_INFO) ? TRUE : FALSE;\r
+ bool cast = (mode == SPELL_CAST) ? TRUE : FALSE;\r
+ bool fail = (mode == SPELL_FAIL) ? TRUE : FALSE;\r
+ static const char s_random[] = _("\83\89\83\93\83_\83\80", "random");\r
+\r
+ int dir;\r
+ int plev = p_ptr->lev;\r
+\r
+ switch (spell)\r
+ {\r
+ case 0:\r
+ if (name) return _("\83V\83\87\81[\83g\81E\83e\83\8c\83|\81[\83g", "Phase Door");\r
+ if (desc) return _("\8bß\8b\97\97£\82Ì\83e\83\8c\83|\81[\83g\82ð\82·\82é\81B", "Teleport short distance.");\r
+\r
+ {\r
+ POSITION range = 10;\r
+\r
+ if (info) return info_range(range);\r
+\r
+ if (cast)\r
+ {\r
+ teleport_player(range, 0L);\r
+ }\r
+ }\r
+ break;\r
+\r
+ case 1:\r
+ if (name) return _("\92wå\81\82Ì\83J\81[\83h", "Trump Spiders");\r
+ if (desc) return _("\92wå\81\82ð\8f¢\8a«\82·\82é\81B", "Summons spiders.");\r
+\r
+ {\r
+ if (cast || fail)\r
+ {\r
+ msg_print(_("\82 \82È\82½\82Í\92wå\81\82Ì\83J\81[\83h\82É\8fW\92\86\82·\82é...", "You concentrate on the trump of an spider..."));\r
+ if (trump_summoning(1, !fail, p_ptr->y, p_ptr->x, 0, SUMMON_SPIDER, PM_ALLOW_GROUP))\r
+ {\r
+ if (fail)\r
+ {\r
+ msg_print(_("\8f¢\8a«\82³\82ê\82½\92wå\81\82Í\93{\82Á\82Ä\82¢\82é\81I", "The summoned spiders get angry!"));\r
+ }\r
+ }\r
+ }\r
+ }\r
+ break;\r
+\r
+ case 2:\r
+ if (name) return _("\83V\83\83\83b\83t\83\8b", "Shuffle");\r
+ if (desc) return _("\83J\81[\83h\82Ì\90è\82¢\82ð\82·\82é\81B", "Causes random effects.");\r
+\r
+ {\r
+ if (info) return s_random;\r
+\r
+ if (cast)\r
+ {\r
+ cast_shuffle();\r
+ }\r
+ }\r
+ break;\r
+\r
+ case 3:\r
+ if (name) return _("\83t\83\8d\83A\81E\83\8a\83Z\83b\83g", "Reset Recall");\r
+ if (desc) return _("\8dÅ\90[\8aK\82ð\95Ï\8dX\82·\82é\81B", "Resets the 'deepest' level for recall spell.");\r
+\r
+ {\r
+ if (cast)\r
+ {\r
+ if (!reset_recall()) return NULL;\r
+ }\r
+ }\r
+ break;\r
+\r
+ case 4:\r
+ if (name) return _("\83e\83\8c\83|\81[\83g", "Teleport");\r
+ if (desc) return _("\89\93\8b\97\97£\82Ì\83e\83\8c\83|\81[\83g\82ð\82·\82é\81B", "Teleport long distance.");\r
+\r
+ {\r
+ POSITION range = plev * 4;\r
+\r
+ if (info) return info_range(range);\r
+\r
+ if (cast)\r
+ {\r
+ teleport_player(range, 0L);\r
+ }\r
+ }\r
+ break;\r
+\r
+ case 5:\r
+ if (name) return _("\8a´\92m\82Ì\83J\81[\83h", "Trump Spying");\r
+ if (desc) return _("\88ê\92è\8e\9e\8aÔ\81A\83e\83\8c\83p\83V\81[\94\\97Í\82ð\93¾\82é\81B", "Gives telepathy for a while.");\r
+\r
+ {\r
+ int base = 25;\r
+ int sides = 30;\r
+\r
+ if (info) return info_duration(base, sides);\r
+\r
+ if (cast)\r
+ {\r
+ set_tim_esp(randint1(sides) + base, FALSE);\r
+ }\r
+ }\r
+ break;\r
+\r
+ case 6:\r
+ if (name) return _("\83e\83\8c\83|\81[\83g\81E\83\82\83\93\83X\83^\81[", "Teleport Away");\r
+ if (desc) return _("\83\82\83\93\83X\83^\81[\82ð\83e\83\8c\83|\81[\83g\82³\82¹\82é\83r\81[\83\80\82ð\95ú\82Â\81B\92ï\8dR\82³\82ê\82é\82Æ\96³\8cø\81B", "Teleports all monsters on the line away unless resisted.");\r
+\r
+ {\r
+ int power = plev;\r
+\r
+ if (info) return info_power(power);\r
+\r
+ if (cast)\r
+ {\r
+ if (!get_aim_dir(&dir)) return NULL;\r
+\r
+ fire_beam(GF_AWAY_ALL, dir, power);\r
+ }\r
+ }\r
+ break;\r
+\r
+ case 7:\r
+ if (name) return _("\93®\95¨\82Ì\83J\81[\83h", "Trump Animals");\r
+ if (desc) return _("1\91Ì\82Ì\93®\95¨\82ð\8f¢\8a«\82·\82é\81B", "Summons an animal.");\r
+\r
+ {\r
+ if (cast || fail)\r
+ {\r
+ int type = (!fail ? SUMMON_ANIMAL_RANGER : SUMMON_ANIMAL);\r
+ msg_print(_("\82 \82È\82½\82Í\93®\95¨\82Ì\83J\81[\83h\82É\8fW\92\86\82·\82é...", "You concentrate on the trump of an animal..."));\r
+ if (trump_summoning(1, !fail, p_ptr->y, p_ptr->x, 0, type, 0L))\r
+ {\r
+ if (fail)\r
+ {\r
+ msg_print(_("\8f¢\8a«\82³\82ê\82½\93®\95¨\82Í\93{\82Á\82Ä\82¢\82é\81I", "The summoned animal gets angry!"));\r
+ }\r
+ }\r
+ }\r
+ }\r
+ break;\r
+\r
+ case 8:\r
+ if (name) return _("\88Ú\93®\82Ì\83J\81[\83h", "Trump Reach");\r
+ if (desc) return _("\83A\83C\83e\83\80\82ð\8e©\95ª\82Ì\91«\8c³\82Ö\88Ú\93®\82³\82¹\82é\81B", "Pulls a distant item close to you.");\r
+\r
+ {\r
+ int weight = plev * 15;\r
+\r
+ if (info) return info_weight(weight);\r
+\r
+ if (cast)\r
+ {\r
+ if (!get_aim_dir(&dir)) return NULL;\r
+\r
+ fetch(dir, weight, FALSE);\r
+ }\r
+ }\r
+ break;\r
+\r
+ case 9:\r
+ if (name) return _("\83J\83~\83J\83[\82Ì\83J\81[\83h", "Trump Kamikaze");\r
+ if (desc) return _("\95¡\90\94\82Ì\94\9a\94\82·\82é\83\82\83\93\83X\83^\81[\82ð\8f¢\8a«\82·\82é\81B", "Summons monsters which explode by itself.");\r
+\r
+ {\r
+ if (cast || fail)\r
+ {\r
+ int x, y;\r
+ int type;\r
+\r
+ if (cast)\r
+ {\r
+ if (!target_set(TARGET_KILL)) return NULL;\r
+ x = target_col;\r
+ y = target_row;\r
+ }\r
+ else\r
+ {\r
+ /* Summons near player when failed */\r
+ x = p_ptr->x;\r
+ y = p_ptr->y;\r
+ }\r
+\r
+ if (p_ptr->pclass == CLASS_BEASTMASTER)\r
+ type = SUMMON_KAMIKAZE_LIVING;\r
+ else\r
+ type = SUMMON_KAMIKAZE;\r
+\r
+ msg_print(_("\82 \82È\82½\82Í\83J\83~\83J\83[\82Ì\83J\81[\83h\82É\8fW\92\86\82·\82é...", "You concentrate on several trumps at once..."));\r
+ if (trump_summoning(2 + randint0(plev / 7), !fail, y, x, 0, type, 0L))\r
+ {\r
+ if (fail)\r
+ {\r
+ msg_print(_("\8f¢\8a«\82³\82ê\82½\83\82\83\93\83X\83^\81[\82Í\93{\82Á\82Ä\82¢\82é\81I", "The summoned creatures get angry!"));\r
+ }\r
+ }\r
+ }\r
+ }\r
+ break;\r
+\r
+ case 10:\r
+ if (name) return _("\8c¶\97ì\8f¢\8a«", "Phantasmal Servant");\r
+ if (desc) return _("1\91Ì\82Ì\97H\97ì\82ð\8f¢\8a«\82·\82é\81B", "Summons a ghost.");\r
+\r
+ {\r
+ /* Phantasmal Servant is not summoned as enemy when failed */\r
+ if (cast)\r
+ {\r
+ int summon_lev = plev * 2 / 3 + randint1(plev / 2);\r
+\r
+ if (trump_summoning(1, !fail, p_ptr->y, p_ptr->x, (summon_lev * 3 / 2), SUMMON_PHANTOM, 0L))\r
+ {\r
+ msg_print(_("\8cä\97p\82Å\82²\82´\82¢\82Ü\82·\82©\81A\8cä\8eå\90l\97l\81H", "'Your wish, master?'"));\r
+ }\r
+ }\r
+ }\r
+ break;\r
+\r
+ case 11:\r
+ if (name) return _("\83X\83s\81[\83h\81E\83\82\83\93\83X\83^\81[", "Haste Monster");\r
+ if (desc) return _("\83\82\83\93\83X\83^\81[1\91Ì\82ð\89Á\91¬\82³\82¹\82é\81B", "Hastes a monster.");\r
+\r
+ {\r
+ if (cast)\r
+ {\r
+ bool result;\r
+\r
+ /* Temporary enable target_pet option */\r
+ bool old_target_pet = target_pet;\r
+ target_pet = TRUE;\r
+\r
+ result = get_aim_dir(&dir);\r
+\r
+ /* Restore target_pet option */\r
+ target_pet = old_target_pet;\r
+\r
+ if (!result) return NULL;\r
+\r
+ speed_monster(dir, plev);\r
+ }\r
+ }\r
+ break;\r
+\r
+ case 12:\r
+ if (name) return _("\83e\83\8c\83|\81[\83g\81E\83\8c\83x\83\8b", "Teleport Level");\r
+ if (desc) return _("\8fu\8e\9e\82É\8fã\82©\89º\82Ì\8aK\82É\83e\83\8c\83|\81[\83g\82·\82é\81B", "Teleport to up or down stairs in a moment.");\r
+\r
+ {\r
+ if (cast)\r
+ {\r
+ if (!get_check(_("\96{\93\96\82É\91¼\82Ì\8aK\82É\83e\83\8c\83|\81[\83g\82µ\82Ü\82·\82©\81H", "Are you sure? (Teleport Level)"))) return NULL;\r
+ teleport_level(0);\r
+ }\r
+ }\r
+ break;\r
+\r
+ case 13:\r
+ if (name) return _("\8e\9f\8c³\82Ì\94à", "Dimension Door");\r
+ if (desc) return _("\92Z\8b\97\97£\93à\82Ì\8ew\92è\82µ\82½\8fê\8f\8a\82É\83e\83\8c\83|\81[\83g\82·\82é\81B", "Teleport to given location.");\r
+\r
+ {\r
+ POSITION range = plev / 2 + 10;\r
+\r
+ if (info) return info_range(range);\r
+\r
+ if (cast)\r
+ {\r
+ msg_print(_("\8e\9f\8c³\82Ì\94à\82ª\8aJ\82¢\82½\81B\96Ú\93I\92n\82ð\91I\82ñ\82Å\89º\82³\82¢\81B", "You open a dimensional gate. Choose a destination."));\r
+ if (!dimension_door()) return NULL;\r
+ }\r
+ }\r
+ break;\r
+\r
+ case 14:\r
+ if (name) return _("\8bA\8aÒ\82Ì\8eô\95¶", "Word of Recall");\r
+ if (desc) return _("\92n\8fã\82É\82¢\82é\82Æ\82«\82Í\83_\83\93\83W\83\87\83\93\82Ì\8dÅ\90[\8aK\82Ö\81A\83_\83\93\83W\83\87\83\93\82É\82¢\82é\82Æ\82«\82Í\92n\8fã\82Ö\82Æ\88Ú\93®\82·\82é\81B",\r
+ "Recalls player from dungeon to town, or from town to the deepest level of dungeon.");\r
+\r
+ {\r
+ int base = 15;\r
+ int sides = 20;\r
+\r
+ if (info) return info_delay(base, sides);\r
+\r
+ if (cast)\r
+ {\r
+ if (!word_of_recall()) return NULL;\r
+ }\r
+ }\r
+ break;\r
+\r
+ case 15:\r
+ if (name) return _("\89ö\95¨\92Ç\95ú", "Banish");\r
+ if (desc) return _("\8e\8b\8aE\93à\82Ì\91S\82Ä\82Ì\83\82\83\93\83X\83^\81[\82ð\83e\83\8c\83|\81[\83g\82³\82¹\82é\81B\92ï\8dR\82³\82ê\82é\82Æ\96³\8cø\81B", "Teleports all monsters in sight away unless resisted.");\r
+\r
+ {\r
+ int power = plev * 4;\r
+\r
+ if (info) return info_power(power);\r
+\r
+ if (cast)\r
+ {\r
+ banish_monsters(power);\r
+ }\r
+ }\r
+ break;\r
+\r
+ case 16:\r
+ if (name) return _("\88Ê\92u\8cð\8a·\82Ì\83J\81[\83h", "Swap Position");\r
+ if (desc) return _("1\91Ì\82Ì\83\82\83\93\83X\83^\81[\82Æ\88Ê\92u\82ð\8cð\8a·\82·\82é\81B", "Swap positions of you and a monster.");\r
+\r
+ {\r
+ if (cast)\r
+ {\r
+ bool result;\r
+\r
+ /* HACK -- No range limit */\r
+ project_length = -1;\r
+\r
+ result = get_aim_dir(&dir);\r
+\r
+ /* Restore range to default */\r
+ project_length = 0;\r
+\r
+ if (!result) return NULL;\r
+\r
+ teleport_swap(dir);\r
+ }\r
+ }\r
+ break;\r
+\r
+ case 17:\r
+ if (name) return _("\83A\83\93\83f\83b\83h\82Ì\83J\81[\83h", "Trump Undead");\r
+ if (desc) return _("1\91Ì\82Ì\83A\83\93\83f\83b\83h\82ð\8f¢\8a«\82·\82é\81B", "Summons an undead monster.");\r
+\r
+ {\r
+ if (cast || fail)\r
+ {\r
+ msg_print(_("\82 \82È\82½\82Í\83A\83\93\83f\83b\83h\82Ì\83J\81[\83h\82É\8fW\92\86\82·\82é...", "You concentrate on the trump of an undead creature..."));\r
+ if (trump_summoning(1, !fail, p_ptr->y, p_ptr->x, 0, SUMMON_UNDEAD, 0L))\r
+ {\r
+ if (fail)\r
+ {\r
+ msg_print(_("\8f¢\8a«\82³\82ê\82½\83A\83\93\83f\83b\83h\82Í\93{\82Á\82Ä\82¢\82é\81I", "The summoned undead creature gets angry!"));\r
+ }\r
+ }\r
+ }\r
+ }\r
+ break;\r
+\r
+ case 18:\r
+ if (name) return _("à¦\92\8e\97Þ\82Ì\83J\81[\83h", "Trump Reptiles");\r
+ if (desc) return _("1\91Ì\82Ì\83q\83h\83\89\82ð\8f¢\8a«\82·\82é\81B", "Summons a hydra.");\r
+\r
+ {\r
+ if (cast || fail)\r
+ {\r
+ msg_print(_("\82 \82È\82½\82Íà¦\92\8e\97Þ\82Ì\83J\81[\83h\82É\8fW\92\86\82·\82é...", "You concentrate on the trump of a reptile..."));\r
+ if (trump_summoning(1, !fail, p_ptr->y, p_ptr->x, 0, SUMMON_HYDRA, 0L))\r
+ {\r
+ if (fail)\r
+ {\r
+ msg_print(_("\8f¢\8a«\82³\82ê\82½à¦\92\8e\97Þ\82Í\93{\82Á\82Ä\82¢\82é\81I", "The summoned reptile gets angry!"));\r
+ }\r
+ }\r
+ }\r
+ }\r
+ break;\r
+\r
+ case 19:\r
+ if (name) return _("\83\82\83\93\83X\83^\81[\82Ì\83J\81[\83h", "Trump Monsters");\r
+ if (desc) return _("\95¡\90\94\82Ì\83\82\83\93\83X\83^\81[\82ð\8f¢\8a«\82·\82é\81B", "Summons some monsters.");\r
+\r
+ {\r
+ if (cast || fail)\r
+ {\r
+ int type;\r
+ msg_print(_("\82 \82È\82½\82Í\83\82\83\93\83X\83^\81[\82Ì\83J\81[\83h\82É\8fW\92\86\82·\82é...", "You concentrate on several trumps at once..."));\r
+ if (p_ptr->pclass == CLASS_BEASTMASTER)\r
+ type = SUMMON_LIVING;\r
+ else\r
+ type = 0;\r
+\r
+ if (trump_summoning((1 + (plev - 15) / 10), !fail, p_ptr->y, p_ptr->x, 0, type, 0L))\r
+ {\r
+ if (fail)\r
+ {\r
+ msg_print(_("\8f¢\8a«\82³\82ê\82½\83\82\83\93\83X\83^\81[\82Í\93{\82Á\82Ä\82¢\82é\81I", "The summoned creatures get angry!"));\r
+ }\r
+ }\r
+\r
+ }\r
+ }\r
+ break;\r
+\r
+ case 20:\r
+ if (name) return _("\83n\83E\83\93\83h\82Ì\83J\81[\83h", "Trump Hounds");\r
+ if (desc) return _("1\83O\83\8b\81[\83v\82Ì\83n\83E\83\93\83h\82ð\8f¢\8a«\82·\82é\81B", "Summons a group of hounds.");\r
+\r
+ {\r
+ if (cast || fail)\r
+ {\r
+ msg_print(_("\82 \82È\82½\82Í\83n\83E\83\93\83h\82Ì\83J\81[\83h\82É\8fW\92\86\82·\82é...", "You concentrate on the trump of a hound..."));\r
+ if (trump_summoning(1, !fail, p_ptr->y, p_ptr->x, 0, SUMMON_HOUND, PM_ALLOW_GROUP))\r
+ {\r
+ if (fail)\r
+ {\r
+ msg_print(_("\8f¢\8a«\82³\82ê\82½\83n\83E\83\93\83h\82Í\93{\82Á\82Ä\82¢\82é\81I", "The summoned hounds get angry!"));\r
+ }\r
+ }\r
+ }\r
+ }\r
+ break;\r
+\r
+ case 21:\r
+ if (name) return _("\83g\83\89\83\93\83v\82Ì\90n", "Trump Branding");\r
+ if (desc) return _("\95\90\8aí\82É\83g\83\89\83\93\83v\82Ì\91®\90«\82ð\82Â\82¯\82é\81B", "Makes current weapon a Trump weapon.");\r
+\r
+ {\r
+ if (cast)\r
+ {\r
+ brand_weapon(5);\r
+ }\r
+ }\r
+ break;\r
+\r
+ case 22:\r
+ if (name) return _("\90l\8aÔ\83g\83\89\83\93\83v", "Living Trump");\r
+ if (desc) return _("\83\89\83\93\83_\83\80\82É\83e\83\8c\83|\81[\83g\82·\82é\93Ë\91R\95Ï\88Ù\82©\81A\8e©\95ª\82Ì\88Ó\8ev\82Å\83e\83\8c\83|\81[\83g\82·\82é\93Ë\91R\95Ï\88Ù\82ª\90g\82É\82Â\82\81B",\r
+ "Gives mutation which makes you teleport randomly or makes you able to teleport at will.");\r
+\r
+ {\r
+ if (cast)\r
+ {\r
+ int mutation;\r
+\r
+ if (one_in_(7))\r
+ /* Teleport control */\r
+ mutation = 12;\r
+ else\r
+ /* Random teleportation (uncontrolled) */\r
+ mutation = 77;\r
+\r
+ /* Gain the mutation */\r
+ if (gain_random_mutation(mutation))\r
+ {\r
+ msg_print(_("\82 \82È\82½\82Í\90¶\82«\82Ä\82¢\82é\83J\81[\83h\82É\95Ï\82í\82Á\82½\81B", "You have turned into a Living Trump."));\r
+ }\r
+ }\r
+ }\r
+ break;\r
+\r
+ case 23:\r
+ if (name) return _("\83T\83C\83o\81[\83f\81[\83\82\83\93\82Ì\83J\81[\83h", "Trump Cyberdemon");\r
+ if (desc) return _("1\91Ì\82Ì\83T\83C\83o\81[\83f\81[\83\82\83\93\82ð\8f¢\8a«\82·\82é\81B", "Summons a cyber demon.");\r
+\r
+ {\r
+ if (cast || fail)\r
+ {\r
+ msg_print(_("\82 \82È\82½\82Í\83T\83C\83o\81[\83f\81[\83\82\83\93\82Ì\83J\81[\83h\82É\8fW\92\86\82·\82é...", "You concentrate on the trump of a Cyberdemon..."));\r
+ if (trump_summoning(1, !fail, p_ptr->y, p_ptr->x, 0, SUMMON_CYBER, 0L))\r
+ {\r
+ if (fail)\r
+ {\r
+ msg_print(_("\8f¢\8a«\82³\82ê\82½\83T\83C\83o\81[\83f\81[\83\82\83\93\82Í\93{\82Á\82Ä\82¢\82é\81I", "The summoned Cyberdemon gets angry!"));\r
+ }\r
+ }\r
+ }\r
+ }\r
+ break;\r
+\r
+ case 24:\r
+ if (name) return _("\97\\8c©\82Ì\83J\81[\83h", "Trump Divination");\r
+ if (desc) return _("\8bß\82\82Ì\91S\82Ä\82Ì\83\82\83\93\83X\83^\81[\81Aã©\81A\94à\81A\8aK\92i\81A\8dà\95ó\81A\82»\82µ\82Ä\83A\83C\83e\83\80\82ð\8a´\92m\82·\82é\81B",\r
+ "Detects all monsters, traps, doors, stairs, treasures and items in your vicinity.");\r
+\r
+ {\r
+ int rad = DETECT_RAD_DEFAULT;\r
+\r
+ if (info) return info_radius(rad);\r
+\r
+ if (cast)\r
+ {\r
+ detect_all(rad);\r
+ }\r
+ }\r
+ break;\r
+\r
+ case 25:\r
+ if (name) return _("\92m\8e¯\82Ì\83J\81[\83h", "Trump Lore");\r
+ if (desc) return _("\83A\83C\83e\83\80\82Ì\8e\9d\82Â\94\\97Í\82ð\8a®\91S\82É\92m\82é\81B", "*Identifies* an item.");\r
+\r
+ {\r
+ if (cast)\r
+ {\r
+ if (!identify_fully(FALSE)) return NULL;\r
+ }\r
+ }\r
+ break;\r
+\r
+ case 26:\r
+ if (name) return _("\89ñ\95\9c\83\82\83\93\83X\83^\81[", "Heal Monster");\r
+ if (desc) return _("\83\82\83\93\83X\83^\81[1\91Ì\82Ì\91Ì\97Í\82ð\89ñ\95\9c\82³\82¹\82é\81B", "Heal a monster.");\r
+\r
+ {\r
+ int heal = plev * 10 + 200;\r
+\r
+ if (info) return info_heal(0, 0, heal);\r
+\r
+ if (cast)\r
+ {\r
+ bool result;\r
+\r
+ /* Temporary enable target_pet option */\r
+ bool old_target_pet = target_pet;\r
+ target_pet = TRUE;\r
+\r
+ result = get_aim_dir(&dir);\r
+\r
+ /* Restore target_pet option */\r
+ target_pet = old_target_pet;\r
+\r
+ if (!result) return NULL;\r
+\r
+ heal_monster(dir, heal);\r
+ }\r
+ }\r
+ break;\r
+\r
+ case 27:\r
+ if (name) return _("\83h\83\89\83S\83\93\82Ì\83J\81[\83h", "Trump Dragon");\r
+ if (desc) return _("1\91Ì\82Ì\83h\83\89\83S\83\93\82ð\8f¢\8a«\82·\82é\81B", "Summons a dragon.");\r
+\r
+ {\r
+ if (cast || fail)\r
+ {\r
+ msg_print(_("\82 \82È\82½\82Í\83h\83\89\83S\83\93\82Ì\83J\81[\83h\82É\8fW\92\86\82·\82é...", "You concentrate on the trump of a dragon..."));\r
+ if (trump_summoning(1, !fail, p_ptr->y, p_ptr->x, 0, SUMMON_DRAGON, 0L))\r
+ {\r
+ if (fail)\r
+ {\r
+ msg_print(_("\8f¢\8a«\82³\82ê\82½\83h\83\89\83S\83\93\82Í\93{\82Á\82Ä\82¢\82é\81I", "The summoned dragon gets angry!"));\r
+ }\r
+ }\r
+ }\r
+ }\r
+ break;\r
+\r
+ case 28:\r
+ if (name) return _("è¦\90Î\82Ì\83J\81[\83h", "Trump Meteor");\r
+ if (desc) return _("\8e©\95ª\82Ì\8eü\95Ó\82Éè¦\90Î\82ð\97\8e\82Æ\82·\81B", "Makes meteor balls fall down to nearby random locations.");\r
+\r
+ {\r
+ HIT_POINT dam = plev * 2;\r
+ int rad = 2;\r
+\r
+ if (info) return info_multi_damage(dam);\r
+\r
+ if (cast)\r
+ {\r
+ cast_meteor(dam, rad);\r
+ }\r
+ }\r
+ break;\r
+\r
+ case 29:\r
+ if (name) return _("\83f\81[\83\82\83\93\82Ì\83J\81[\83h", "Trump Demon");\r
+ if (desc) return _("1\91Ì\82Ì\88«\96\82\82ð\8f¢\8a«\82·\82é\81B", "Summons a demon.");\r
+\r
+ {\r
+ if (cast || fail)\r
+ {\r
+ msg_print(_("\82 \82È\82½\82Í\83f\81[\83\82\83\93\82Ì\83J\81[\83h\82É\8fW\92\86\82·\82é...", "You concentrate on the trump of a demon..."));\r
+ if (trump_summoning(1, !fail, p_ptr->y, p_ptr->x, 0, SUMMON_DEMON, 0L))\r
+ {\r
+ if (fail)\r
+ {\r
+ msg_print(_("\8f¢\8a«\82³\82ê\82½\83f\81[\83\82\83\93\82Í\93{\82Á\82Ä\82¢\82é\81I", "The summoned demon gets angry!"));\r
+ }\r
+ }\r
+ }\r
+ }\r
+ break;\r
+\r
+ case 30:\r
+ if (name) return _("\92n\8d\96\82Ì\83J\81[\83h", "Trump Greater Undead");\r
+ if (desc) return _("1\91Ì\82Ì\8fã\8b\89\83A\83\93\83f\83b\83h\82ð\8f¢\8a«\82·\82é\81B", "Summons a greater undead.");\r
+\r
+ {\r
+ if (cast || fail)\r
+ {\r
+ msg_print(_("\82 \82È\82½\82Í\8b\97Í\82È\83A\83\93\83f\83b\83h\82Ì\83J\81[\83h\82É\8fW\92\86\82·\82é...", "You concentrate on the trump of a greater undead being..."));\r
+ /* May allow unique depend on level and dice roll */\r
+ if (trump_summoning(1, !fail, p_ptr->y, p_ptr->x, 0, SUMMON_HI_UNDEAD, PM_ALLOW_UNIQUE))\r
+ {\r
+ if (fail)\r
+ {\r
+ msg_print(_("\8f¢\8a«\82³\82ê\82½\8fã\8b\89\83A\83\93\83f\83b\83h\82Í\93{\82Á\82Ä\82¢\82é\81I", "The summoned greater undead creature gets angry!"));\r
+ }\r
+ }\r
+ }\r
+ }\r
+ break;\r
+\r
+ case 31:\r
+ if (name) return _("\8cÃ\91ã\83h\83\89\83S\83\93\82Ì\83J\81[\83h", "Trump Ancient Dragon");\r
+ if (desc) return _("1\91Ì\82Ì\8cÃ\91ã\83h\83\89\83S\83\93\82ð\8f¢\8a«\82·\82é\81B", "Summons an ancient dragon.");\r
+\r
+ {\r
+ if (cast)\r
+ {\r
+ int type;\r
+\r
+ if (p_ptr->pclass == CLASS_BEASTMASTER)\r
+ type = SUMMON_HI_DRAGON_LIVING;\r
+ else\r
+ type = SUMMON_HI_DRAGON;\r
+\r
+ msg_print(_("\82 \82È\82½\82Í\8cÃ\91ã\83h\83\89\83S\83\93\82Ì\83J\81[\83h\82É\8fW\92\86\82·\82é...", "You concentrate on the trump of an ancient dragon..."));\r
+ /* May allow unique depend on level and dice roll */\r
+ if (trump_summoning(1, !fail, p_ptr->y, p_ptr->x, 0, type, PM_ALLOW_UNIQUE))\r
+ {\r
+ if (fail)\r
+ {\r
+ msg_print(_("\8f¢\8a«\82³\82ê\82½\8cÃ\91ã\83h\83\89\83S\83\93\82Í\93{\82Á\82Ä\82¢\82é\81I", "The summoned ancient dragon gets angry!"));\r
+ }\r
+ }\r
+ }\r
+ }\r
+ break;\r
+ }\r
+\r
+ return "";\r
+}\r
--- /dev/null
+extern cptr do_trump_spell(SPELL_IDX spell, BIT_FLAGS mode);\r