• R/O
  • HTTP
  • SSH
  • HTTPS

hengband: コミット

変愚蛮怒のメインリポジトリです


コミットメタ情報

リビジョン937817b64787d73d005b539b6e52d2520871e1af (tree)
日時2014-02-18 18:27:11
作者dis- <dis.rogue@gmai...>
コミッターdis-

ログメッセージ

refactor: extract switch in make_attack_spell

変更サマリ

差分

--- a/src/externs.h
+++ b/src/externs.h
@@ -1531,6 +1531,7 @@ extern bool raise_possible(monster_type *m_ptr);
15311531 extern bool dispel_check(int m_idx);
15321532 extern bool spell_is_inate(u16b spell);
15331533 extern bool make_attack_spell(int m_idx);
1534+extern void beam(int m_idx, int typ, int dam_hp, int monspell, bool learnable);
15341535
15351536 /* mspells2.c */
15361537 extern void get_project_point(int sy, int sx, int *ty, int *tx, int flg);
@@ -1584,38 +1585,75 @@ extern void set_rf_masks(s32b *f4, s32b *f5, s32b *f6, int mode);
15841585 /* mspells4.c */
15851586 extern void spell_RF4_SHRIEK(int m_idx, cptr m_name);
15861587 extern void spell_RF4_DISPEL(bool blind, cptr m_name);
1587-extern void spell_RF4_ROCKET(bool blind, cptr m_name, monster_type* m_ptr, int y, int x, int m_idx, bool learnable);
1588-extern void spell_RF4_SHOOT(bool blind, cptr m_name, monster_race* r_ptr, int m_idx, bool learnable);
1589-extern void spell_RF4_BREATH(int GF_TYPE, bool blind, cptr m_name, monster_type* m_ptr, int y, int x, int m_idx, bool learnable);
1590-extern void spell_RF4_BA_CHAO(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable);
1591-extern void spell_RF4_BA_NUKE(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable);
1592-extern void spell_RF5_BA_ACID(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable);
1593-extern void spell_RF5_BA_ELEC(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable);
1594-extern void spell_RF5_BA_FIRE(monster_type* m_ptr, bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable);
1595-extern void spell_RF5_BA_COLD(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable);
1596-extern void spell_RF5_BA_POIS(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable);
1597-extern void spell_RF5_BA_NETH(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable);
1598-extern void spell_RF5_BA_WATE(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable);
1599-extern void spell_RF5_BA_MANA(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable);
1600-extern void spell_RF5_BA_DARK(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable);
1601-extern void spell_RF5_DRAIN_MANA(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable);
1602-extern void spell_RF5_MIND_BLAST(bool seen, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable);
1603-extern void spell_RF5_BRAIN_SMASH(bool seen, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable);
1604-extern void spell_RF5_CAUSE_1(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable);
1605-extern void spell_RF5_CAUSE_2(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable);
1606-extern void spell_RF5_CAUSE_3(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable);
1607-extern void spell_RF5_CAUSE_4(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable);
1608-extern void spell_RF5_BO_ACID(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable);
1609-extern void spell_RF5_BO_ELEC(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable);
1610-extern void spell_RF5_BO_FIRE(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable);
1611-extern void spell_RF5_BO_COLD(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable);
1612-extern void spell_RF5_BA_LITE(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable);
1613-extern void spell_RF5_BO_NETH(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable);
1614-extern void spell_RF5_BO_WATE(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable);
1615-extern void spell_RF5_BO_MANA(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable);
1616-extern void spell_RF5_BO_PLAS(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable);
1617-extern void spell_RF5_BO_ICEE(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable);
1618-extern void spell_RF5_MISSILE(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable);
1588+extern int spell_RF4_ROCKET(bool blind, cptr m_name, monster_type* m_ptr, int y, int x, int m_idx, bool learnable);
1589+extern int spell_RF4_SHOOT(bool blind, cptr m_name, monster_race* r_ptr, int m_idx, bool learnable);
1590+extern int spell_RF4_BREATH(int GF_TYPE, bool blind, cptr m_name, monster_type* m_ptr, int y, int x, int m_idx, bool learnable);
1591+extern int spell_RF4_BA_CHAO(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable);
1592+extern int spell_RF4_BA_NUKE(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable);
1593+extern int spell_RF5_BA_ACID(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable);
1594+extern int spell_RF5_BA_ELEC(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable);
1595+extern int spell_RF5_BA_FIRE(monster_type* m_ptr, bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable);
1596+extern int spell_RF5_BA_COLD(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable);
1597+extern int spell_RF5_BA_POIS(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable);
1598+extern int spell_RF5_BA_NETH(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable);
1599+extern int spell_RF5_BA_WATE(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable);
1600+extern int spell_RF5_BA_MANA(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable);
1601+extern int spell_RF5_BA_DARK(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable);
1602+extern int spell_RF5_DRAIN_MANA(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable);
1603+extern int spell_RF5_MIND_BLAST(bool seen, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable);
1604+extern int spell_RF5_BRAIN_SMASH(bool seen, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable);
1605+extern int spell_RF5_CAUSE_1(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable);
1606+extern int spell_RF5_CAUSE_2(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable);
1607+extern int spell_RF5_CAUSE_3(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable);
1608+extern int spell_RF5_CAUSE_4(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable);
1609+extern int spell_RF5_BO_ACID(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable);
1610+extern int spell_RF5_BO_ELEC(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable);
1611+extern int spell_RF5_BO_FIRE(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable);
1612+extern int spell_RF5_BO_COLD(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable);
1613+extern int spell_RF5_BA_LITE(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable);
1614+extern int spell_RF5_BO_NETH(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable);
1615+extern int spell_RF5_BO_WATE(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable);
1616+extern int spell_RF5_BO_MANA(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable);
1617+extern int spell_RF5_BO_PLAS(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable);
1618+extern int spell_RF5_BO_ICEE(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable);
1619+extern int spell_RF5_MISSILE(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable);
1620+extern void spell_RF5_SCARE(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx);
1621+extern void spell_RF5_BLIND(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx);
1622+extern void spell_RF5_CONF(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx);
1623+extern void spell_RF5_SLOW(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx);
1624+extern void spell_RF5_HOLD(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx);
1625+extern void spell_RF6_HASTE(bool blind, cptr m_name, monster_type* m_ptr, int y, int x, int m_idx);
1626+extern int spell_RF6_HAND_DOOM(bool blind, cptr m_name, monster_type* m_ptr, int y, int x, int m_idx, bool learnable);
1627+extern void spell_RF6_HEAL(bool blind, bool seen, cptr m_name, monster_type* m_ptr, int rlev, int m_idx);
1628+extern void spell_RF6_INVULNER(bool seen, cptr m_name, monster_type* m_ptr, int m_idx);
1629+extern void spell_RF6_BLINK(cptr m_name, int m_idx);
1630+extern void spell_RF6_TPORT(cptr m_name, int m_idx);
1631+extern int spell_RF6_WORLD(cptr m_name, monster_type* m_ptr, int m_idx);
1632+extern int spell_RF6_SPECIAL(cptr m_name, monster_type* m_ptr, monster_race* r_ptr, u32b mode, bool blind, bool direct, int y, int x, int m_idx);
1633+extern void spell_RF6_TELE_TO(cptr m_name, monster_type* m_ptr);
1634+extern void spell_RF6_TELE_AWAY(cptr m_name, monster_type* m_ptr);
1635+extern void spell_RF6_TELE_LEVEL(bool blind, cptr m_name, monster_type* m_ptr, int rlev);
1636+extern int spell_RF6_PSY_SPEAR(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int m_idx, bool learnable);
1637+extern void spell_RF6_DARKNESS(bool blind, cptr m_name, bool can_use_lite_area);
1638+extern void spell_RF6_TRAPS(bool blind, cptr m_name, int y, int x);
1639+extern void spell_RF6_FORGET(cptr m_name, int rlev);
1640+extern void spell_RF6_RAISE_DEAD(bool blind, cptr m_name, int m_idx, monster_type* m_ptr);
1641+extern void spell_RF6_S_KIN(bool blind, cptr m_name, monster_type* m_ptr, monster_race* r_ptr, int m_idx, int y, int x, int rlev, u32b mode);
1642+extern void spell_RF6_S_CYBER(bool blind, cptr m_name, int m_idx, int y, int x);
1643+extern void spell_RF6_S_MONSTER(bool blind, cptr m_name, int m_idx, int y, int x, int rlev);
1644+extern void spell_RF6_S_MONSTERS(bool blind, cptr m_name, int m_idx, int y, int x, int rlev, int s_num_6);
1645+extern void spell_RF6_S_ANT(bool blind, cptr m_name, int m_idx, int y, int x, int rlev, int s_num_6);
1646+extern void spell_RF6_S_SPIDER(bool blind, cptr m_name, int m_idx, int y, int x, int rlev, int s_num_6);
1647+extern void spell_RF6_S_HOUND(bool blind, cptr m_name, int m_idx, int y, int x, int rlev, int s_num_4);
1648+extern void spell_RF6_S_HYDRA(bool blind, cptr m_name, int m_idx, int y, int x, int rlev, int s_num_4);
1649+extern void spell_RF6_S_ANGEL(bool blind, cptr m_name, monster_race* r_ptr, int m_idx, int y, int x, int rlev);
1650+extern void spell_RF6_S_DEMON(bool blind, cptr m_name, int m_idx, int y, int x, int rlev);
1651+extern void spell_RF6_S_UNDEAD(bool blind, cptr m_name, int m_idx, int y, int x, int rlev);
1652+extern void spell_RF6_S_DRAGON(bool blind, cptr m_name, int m_idx, int y, int x, int rlev);
1653+extern void spell_RF6_S_HI_UNDEAD(monster_type* m_ptr, bool blind, cptr m_name, int m_idx, int y, int x, int rlev, int s_num_6, u32b mode);
1654+extern void spell_RF6_S_HI_DRAGON(bool blind, cptr m_name, int m_idx, int y, int x, int rlev, int s_num_4);
1655+extern void spell_RF6_S_AMBERITES(bool blind, cptr m_name, int m_idx, int y, int x, int rlev, int s_num_4);
1656+extern void spell_RF6_S_UNIQUE(bool blind, cptr m_name, int m_idx, monster_type* m_ptr, int y, int x, int rlev, int s_num_4);
16191657
16201658 /* hissatsu.c */
16211659 extern void hissatsu_info(char *p, int power);
--- a/src/mspells1.c
+++ b/src/mspells1.c
@@ -1,6 +1,6 @@
11 /*!
22 * @file mspells1.c
3- * @brief モンスター魔法の実装 / Monster spells (attack player)
3+ * @brief ?????X?^?[???@???? / Monster spells (attack player)
44 * @date 2014/01/17
55 * @author
66 * Copyright (c) 1997 Ben Harrison, James E. Wilson, Robert A. Koeneke\n
@@ -42,11 +42,11 @@
4242
4343
4444 /*!
45- * @brief モンスターがプレイヤーの弱点をついた選択を取るかどうかの判定 /
45+ * @brief ?????X?^?[??v???C???[???_?????I??????????? /
4646 * Internal probability routine
47- * @param r_ptr モンスター種族の構造体参照ポインタ
48- * @param prob 基本確率(%)
49- * @return 適した選択を取るならばTRUEを返す。
47+ * @param r_ptr ?????X?^?[????\???Q?|?C???^
48+ * @param prob ??{?m??%)
49+ * @return ?K???I????????RUE????B
5050 */
5151 static bool int_outof(monster_race *r_ptr, int prob)
5252 {
@@ -59,13 +59,13 @@ static bool int_outof(monster_race *r_ptr, int prob)
5959
6060
6161 /*!
62- * @brief モンスターの魔法一覧から戦術的に適さない魔法を除外する /
62+ * @brief ?????X?^?[????@???????p?I??K??????@????O?? /
6363 * Remove the "bad" spells from a spell list
64- * @param m_idx モンスターの構造体参照ポインタ
65- * @param f4p モンスター魔法のフラグリスト1
66- * @param f5p モンスター魔法のフラグリスト2
67- * @param f6p モンスター魔法のフラグリスト3
68- * @return なし
64+ * @param m_idx ?????X?^?[??\???Q?|?C???^
65+ * @param f4p ?????X?^?[???@??t???O???X?g1
66+ * @param f5p ?????X?^?[???@??t???O???X?g2
67+ * @param f6p ?????X?^?[???@??t???O???X?g3
68+ * @return ??
6969 */
7070 static void remove_bad_spells(int m_idx, u32b *f4p, u32b *f5p, u32b *f6p)
7171 {
@@ -356,11 +356,11 @@ static void remove_bad_spells(int m_idx, u32b *f4p, u32b *f5p, u32b *f6p)
356356
357357
358358 /*!
359- * @brief モンスターにとって所定の地点が召還に相応しい地点かどうかを返す。 /
359+ * @brief ?????X?^?[?????????n?_???????????n?_????????B /
360360 * Determine if there is a space near the player in which a summoned creature can appear
361- * @param y1 判定を行いたいマスのY座標
362- * @param x1 判定を行いたいマスのX座標
363- * @return 召還に相応しいならばTRUEを返す
361+ * @param y1 ????s????}?X????W
362+ * @param x1 ????s????}?X????W
363+ * @return ????????????RUE???
364364 */
365365 bool summon_possible(int y1, int x1)
366366 {
@@ -390,10 +390,10 @@ bool summon_possible(int y1, int x1)
390390
391391
392392 /*!
393- * @brief モンスターにとって死者復活を行うべき状態かどうかを返す /
393+ * @brief ?????X?^?[??????メ??????s???????????? /
394394 * Determine if there is a space near the player in which a summoned creature can appear
395- * @param m_ptr 判定を行いたいモンスターの構造体参照ポインタ
396- * @return 死者復活が有効な状態ならばTRUEを返す。
395+ * @param m_ptr ????s????????X?^?[??\???Q?|?C???^
396+ * @return ?メ??????L????????RUE????B
397397 */
398398 bool raise_possible(monster_type *m_ptr)
399399 {
@@ -435,14 +435,14 @@ bool raise_possible(monster_type *m_ptr)
435435
436436
437437 /*!
438- * @brief モンスターにとってボルト型魔法が有効な状態かを返す /
438+ * @brief ?????X?^?[?????{???g?^???@??L???????? /
439439 * Determine if a bolt spell will hit the player.
440- * @param y1 ボルト魔法発射地点のY座標
441- * @param x1 ボルト魔法発射地点のX座標
442- * @param y2 ボルト魔法目標地点のY座標
443- * @param x2 ボルト魔法目標地点のX座標
444- * @param is_friend モンスターがプレイヤーに害意を持たない(ペットか友好的)ならばTRUEをつける
445- * @return ボルト型魔法が有効ならばTRUEを返す。
440+ * @param y1 ?{???g???@???n?_????W
441+ * @param x1 ?{???g???@???n?_????W
442+ * @param y2 ?{???g???@??W?n?_????W
443+ * @param x2 ?{???g???@??W?n?_????W
444+ * @param is_friend ?????X?^?[??v???C???[??Q?????????y?b?g??F?D?I)????RUE????
445+ * @return ?{???g?^???@??L?????RUE????B
446446 * @details
447447 * Originally, it was possible for a friendly to shoot another friendly.\n
448448 * Change it so a "clean shot" means no equally friendly monster is\n
@@ -499,14 +499,14 @@ bool clean_shot(int y1, int x1, int y2, int x2, bool is_friend)
499499 }
500500
501501 /*!
502- * @brief モンスターのボルト型魔法処理 /
502+ * @brief ?????X?^?[??{???g?^???@?? /
503503 * Cast a bolt at the player Stop if we hit a monster Affect monsters and the player
504- * @param m_idx モンスターのID
505- * @param typ 効果属性ID
506- * @param dam_hp 威力
507- * @param monspell モンスター魔法のID
508- * @param learnable ラーニング可能か否か
509- * @return なし
504+ * @param m_idx ?????X?^?[??D
505+ * @param typ ?????D
506+ * @param dam_hp ??
507+ * @param monspell ?????X?^?[???@??D
508+ * @param learnable ???[?j???O??\???
509+ * @return ??
510510 */
511511 void bolt(int m_idx, int typ, int dam_hp, int monspell, bool learnable)
512512 {
@@ -518,15 +518,15 @@ void bolt(int m_idx, int typ, int dam_hp, int monspell, bool learnable)
518518 }
519519
520520 /*!
521- * @brief モンスターのビーム型魔法処理 /
522- * @param m_idx モンスターのID
523- * @param typ 効果属性ID
524- * @param dam_hp 威力
525- * @param monspell モンスター魔法のID
526- * @param learnable ラーニング可能か否か
527- * @return なし
521+ * @brief ?????X?^?[??r?[???^???@?? /
522+ * @param m_idx ?????X?^?[??D
523+ * @param typ ?????D
524+ * @param dam_hp ??
525+ * @param monspell ?????X?^?[???@??D
526+ * @param learnable ???[?j???O??\???
527+ * @return ??
528528 */
529-static void beam(int m_idx, int typ, int dam_hp, int monspell, bool learnable)
529+void beam(int m_idx, int typ, int dam_hp, int monspell, bool learnable)
530530 {
531531 int flg = PROJECT_BEAM | PROJECT_KILL | PROJECT_THRU | PROJECT_PLAYER;
532532
@@ -536,18 +536,18 @@ static void beam(int m_idx, int typ, int dam_hp, int monspell, bool learnable)
536536
537537
538538 /*!
539- * @brief モンスターのボール型&ブレス型魔法処理 /
539+ * @brief ?????X?^?[??{?[???^???u???X?^???@?? /
540540 * Cast a breath (or ball) attack at the player Pass over any monsters that may be in the way Affect grids, objects, monsters, and the player
541- * @param y 目標地点のY座標
542- * @param x 目標地点のX座標
543- * @param m_idx モンスターのID
544- * @param typ 効果属性ID
545- * @param dam_hp 威力
546- * @param rad 半径
547- * @param breath TRUEならばブレス処理、FALSEならばボール処理
548- * @param monspell モンスター魔法のID
549- * @param learnable ラーニング可能か否か
550- * @return なし
541+ * @param y ??W?n?_????W
542+ * @param x ??W?n?_????W
543+ * @param m_idx ?????X?^?[??D
544+ * @param typ ?????D
545+ * @param dam_hp ??
546+ * @param rad ??a
547+ * @param breath TRUE????u???X???AFALSE????{?[????
548+ * @param monspell ?????X?^?[???@??D
549+ * @param learnable ???[?j???O??\???
550+ * @return ??
551551 */
552552 void breath(int y, int x, int m_idx, int typ, int dam_hp, int rad, bool breath, int monspell, bool learnable)
553553 {
@@ -584,10 +584,10 @@ void breath(int y, int x, int m_idx, int typ, int dam_hp, int rad, bool breath,
584584 }
585585
586586 /*!
587- * @brief モンスターのボール型&ブレス型魔法処理 /
588- * @param power 呪いの段階
589- * @param o_ptr 呪いをかけられる装備オブジェクトの構造体参照ポインタ
590- * @return 与える呪いのID
587+ * @brief ?????X?^?[??{?[???^???u???X?^???@?? /
588+ * @param power ????i?K
589+ * @param o_ptr ????????????I?u?W?F?N?g??\???Q?|?C???^
590+ * @return ?^??????D
591591 */
592592 u32b get_curse(int power, object_type *o_ptr)
593593 {
@@ -616,10 +616,10 @@ u32b get_curse(int power, object_type *o_ptr)
616616 }
617617
618618 /*!
619- * @brief 装備への呪い付加判定と付加処理 /
620- * @param chance 呪いの基本確率
621- * @param heavy_chance 重い呪いを選択肢に入れるか否か。
622- * @return なし
619+ * @brief ????????t?????t????? /
620+ * @param chance ?????{?m?
621+ * @param heavy_chance ?????I???????????B
622+ * @return ??
623623 */
624624 void curse_equipment(int chance, int heavy_chance)
625625 {
@@ -642,7 +642,7 @@ void curse_equipment(int chance, int heavy_chance)
642642 if (have_flag(oflgs, TR_BLESSED) && (randint1(888) > chance))
643643 {
644644 #ifdef JP
645-msg_format("%sは呪いを跳ね返した!", o_name,
645+msg_format("%s??????????I", o_name,
646646 #else
647647 msg_format("Your %s resist%s cursing!", o_name,
648648 #endif
@@ -679,7 +679,7 @@ msg_format("%s
679679 if (changed)
680680 {
681681 #ifdef JP
682-msg_format("悪意に満ちた黒いオーラが%sをとりまいた...", o_name);
682+msg_format("???????????I?[????s???????..", o_name);
683683 #else
684684 msg_format("There is a malignant black aura surrounding %s...", o_name);
685685 #endif
@@ -691,10 +691,10 @@ msg_format("
691691
692692
693693 /*!
694- * @brief ID値が正しいモンスター魔法IDかどうかを返す /
694+ * @brief ID?l?????????X?^?[???@ID??????? /
695695 * Return TRUE if a spell is good for hurting the player (directly).
696- * @param spell 判定対象のID
697- * @return 正しいIDならばTRUEを返す。
696+ * @param spell ??????D
697+ * @return ????D????RUE????B
698698 */
699699 static bool spell_attack(byte spell)
700700 {
@@ -719,10 +719,10 @@ static bool spell_attack(byte spell)
719719
720720
721721 /*!
722- * @brief ID値が退避目的に適したモンスター魔法IDかどうかを返す /
722+ * @brief ID?l?????I??K???????X?^?[???@ID??????? /
723723 * Return TRUE if a spell is good for escaping.
724- * @param spell 判定対象のID
725- * @return 適した魔法のIDならばTRUEを返す。
724+ * @param spell ??????D
725+ * @return ?K?????@??D????RUE????B
726726 */
727727 static bool spell_escape(byte spell)
728728 {
@@ -737,10 +737,10 @@ static bool spell_escape(byte spell)
737737 }
738738
739739 /*!
740- * @brief ID値が妨害目的に適したモンスター魔法IDかどうかを返す /
740+ * @brief ID?l??W?Q??I??K???????X?^?[???@ID??????? /
741741 * Return TRUE if a spell is good for annoying the player.
742- * @param spell 判定対象のID
743- * @return 適した魔法のIDならばTRUEを返す。
742+ * @param spell ??????D
743+ * @return ?K?????@??D????RUE????B
744744 */
745745 static bool spell_annoy(byte spell)
746746 {
@@ -767,10 +767,10 @@ static bool spell_annoy(byte spell)
767767 }
768768
769769 /*!
770- * @brief ID値が召喚型のモンスター魔法IDかどうかを返す /
770+ * @brief ID?l????^??????X?^?[???@ID??????? /
771771 * Return TRUE if a spell is good for annoying the player.
772- * @param spell 判定対象のID
773- * @return 召喚型魔法のIDならばTRUEを返す。
772+ * @param spell ??????D
773+ * @return ??^???@??D????RUE????B
774774 */
775775 static bool spell_summon(byte spell)
776776 {
@@ -783,10 +783,10 @@ static bool spell_summon(byte spell)
783783
784784
785785 /*!
786- * @brief ID値が死者復活処理かどうかを返す /
786+ * @brief ID?l???メ????????????? /
787787 * Return TRUE if a spell is good for annoying the player.
788- * @param spell 判定対象のID
789- * @return 死者復活の処理ならばTRUEを返す。
788+ * @param spell ??????D
789+ * @return ?メ?????????????RUE????B
790790 */
791791 static bool spell_raise(byte spell)
792792 {
@@ -798,10 +798,10 @@ static bool spell_raise(byte spell)
798798 }
799799
800800 /*!
801- * @brief ID値が戦術的なモンスター魔法IDかどうかを返す /
801+ * @brief ID?l???p?I??????X?^?[???@ID??????? /
802802 * Return TRUE if a spell is good in a tactical situation.
803- * @param spell 判定対象のID
804- * @return 戦術的な魔法のIDならばTRUEを返す。
803+ * @param spell ??????D
804+ * @return ??p?I????@??D????RUE????B
805805 */
806806 static bool spell_tactic(byte spell)
807807 {
@@ -813,10 +813,10 @@ static bool spell_tactic(byte spell)
813813 }
814814
815815 /*!
816- * @brief ID値が無敵化するモンスター魔法IDかどうかを返す /
816+ * @brief ID?l???G????????X?^?[???@ID??????? /
817817 * Return TRUE if a spell makes invulnerable.
818- * @param spell 判定対象のID
819- * @return 召喚型魔法のIDならばTRUEを返す。
818+ * @param spell ??????D
819+ * @return ??^???@??D????RUE????B
820820 */
821821 static bool spell_invulner(byte spell)
822822 {
@@ -828,10 +828,10 @@ static bool spell_invulner(byte spell)
828828 }
829829
830830 /*!
831- * @brief ID値が加速するモンスター魔法IDかどうかを返す /
831+ * @brief ID?l??????????X?^?[???@ID??????? /
832832 * Return TRUE if a spell hastes.
833- * @param spell 判定対象のID
834- * @return 召喚型魔法のIDならばTRUEを返す。
833+ * @param spell ??????D
834+ * @return ??^???@??D????RUE????B
835835 */
836836 static bool spell_haste(byte spell)
837837 {
@@ -844,10 +844,10 @@ static bool spell_haste(byte spell)
844844
845845
846846 /*!
847- * @brief ID値が時間停止を行うモンスター魔法IDかどうかを返す /
847+ * @brief ID?l??????~??s??????X?^?[???@ID??????? /
848848 * Return TRUE if a spell world.
849- * @param spell 判定対象のID
850- * @return 時間停止魔法のIDならばTRUEを返す。
849+ * @param spell ??????D
850+ * @return ????~???@??D????RUE????B
851851 */
852852 static bool spell_world(byte spell)
853853 {
@@ -857,10 +857,10 @@ static bool spell_world(byte spell)
857857
858858
859859 /*!
860- * @brief ID値が特別効果のモンスター魔法IDかどうかを返す /
860+ * @brief ID?l???????????X?^?[???@ID??????? /
861861 * Return TRUE if a spell special.
862- * @param spell 判定対象のID
863- * @return 特別効果魔法のIDならばTRUEを返す。
862+ * @param spell ??????D
863+ * @return ???????@??D????RUE????B
864864 */
865865 static bool spell_special(byte spell)
866866 {
@@ -871,10 +871,10 @@ static bool spell_special(byte spell)
871871
872872
873873 /*!
874- * @brief ID値が光の剣のモンスター魔法IDかどうかを返す /
874+ * @brief ID?l???????????X?^?[???@ID??????? /
875875 * Return TRUE if a spell psycho-spear.
876- * @param spell 判定対象のID
877- * @return 光の剣のIDならばTRUEを返す。
876+ * @param spell ??????D
877+ * @return ??????D????RUE????B
878878 */
879879 static bool spell_psy_spe(byte spell)
880880 {
@@ -887,10 +887,10 @@ static bool spell_psy_spe(byte spell)
887887
888888
889889 /*!
890- * @brief ID値が治癒魔法かどうかを返す /
890+ * @brief ID?l??????@??????? /
891891 * Return TRUE if a spell is good for healing.
892- * @param spell 判定対象のID
893- * @return 治癒魔法のIDならばTRUEを返す。
892+ * @param spell ??????D
893+ * @return 。????@??D????RUE????B
894894 */
895895 static bool spell_heal(byte spell)
896896 {
@@ -903,10 +903,10 @@ static bool spell_heal(byte spell)
903903
904904
905905 /*!
906- * @brief ID値が魔力消去かどうかを返す /
906+ * @brief ID?l????????????? /
907907 * Return TRUE if a spell is good for dispel.
908- * @param spell 判定対象のID
909- * @return 魔力消去のIDならばTRUEを返す。
908+ * @param spell ??????D
909+ * @return ???????D????RUE????B
910910 */
911911 static bool spell_dispel(byte spell)
912912 {
@@ -919,10 +919,10 @@ static bool spell_dispel(byte spell)
919919
920920
921921 /*!
922- * @brief モンスターがプレイヤーに魔力消去を与えるべきかを判定するルーチン
922+ * @brief ?????X?^?[??v???C???[????????^?????????????[?`??
923923 * Check should monster cast dispel spell.
924- * @param m_idx モンスターの構造体配列ID
925- * @return 魔力消去をかけるべきならTRUEを返す。
924+ * @param m_idx ?????X?^?[??\???z??D
925+ * @return ??????????????RUE????B
926926 */
927927 bool dispel_check(int m_idx)
928928 {
@@ -1023,12 +1023,12 @@ bool dispel_check(int m_idx)
10231023
10241024
10251025 /*!
1026- * @brief モンスターの魔法選択ルーチン
1026+ * @brief ?????X?^?[????@?I????[?`??
10271027 * Have a monster choose a spell from a list of "useful" spells.
1028- * @param m_idx モンスターの構造体配列ID
1029- * @param spells 候補魔法IDをまとめた配列
1030- * @param num spellsの長さ
1031- * @return 選択したモンスター魔法のID
1028+ * @param m_idx ?????X?^?[??\???z??D
1029+ * @param spells ?????@ID??????z?
1030+ * @param num spells???
1031+ * @return ?I????????X?^?[???@??D
10321032 * @details
10331033 * Note that this list does NOT include spells that will just hit\n
10341034 * other monsters, and the list is restricted when the monster is\n
@@ -1265,10 +1265,10 @@ static int choose_attack_spell(int m_idx, byte spells[], byte num)
12651265
12661266
12671267 /*!
1268- * @brief ID値が非魔術的な特殊技能かどうかを返す /
1268+ * @brief ID?l?????I????Z?\??????? /
12691269 * Return TRUE if a spell is inate spell.
1270- * @param spell 判定対象のID
1271- * @return 非魔術的な特殊技能ならばTRUEを返す。
1270+ * @param spell ??????D
1271+ * @return ????I????Z?\????RUE????B
12721272 */
12731273 bool spell_is_inate(u16b spell)
12741274 {
@@ -1291,13 +1291,13 @@ bool spell_is_inate(u16b spell)
12911291
12921292
12931293 /*!
1294- * @brief モンスターがプレイヤーにダメージを与えるための最適な座標を算出する /
1295- * @param m_ptr 技能を使用するモンスター構造体の参照ポインタ
1296- * @param yp 最適な目標地点のY座標を返す参照ポインタ
1297- * @param xp 最適な目標地点のX座標を返す参照ポインタ
1298- * @param f_flag 射線に入れるのを避ける地形の所持フラグ
1299- * @param path_check 射線を判定するための関数ポインタ
1300- * @return 有効な座標があった場合TRUEを返す
1294+ * @brief ?????X?^?[??v???C???[??_???[?W??^???????K???W??Z?? /
1295+ * @param m_ptr ?Z?\??g?p???????X?^?[?\????Q?|?C???^
1296+ * @param yp ??K???W?n?_????W????Q?|?C???^
1297+ * @param xp ??K???W?n?_????W????Q?|?C???^
1298+ * @param f_flag ヒ???????????n?`?????t???O
1299+ * @param path_check ヒ?????????????|?C???^
1300+ * @return ?L????W????????TRUE???
13011301 */
13021302 static bool adjacent_grid_check(monster_type *m_ptr, int *yp, int *xp,
13031303 int f_flag, bool (*path_check)(int, int, int, int))
@@ -1347,10 +1347,10 @@ static bool adjacent_grid_check(monster_type *m_ptr, int *yp, int *xp,
13471347 #define DO_SPELL_BA_LITE 3
13481348
13491349 /*!
1350- * @brief モンスターの特殊技能メインルーチン /
1350+ * @brief ?????X?^?[????Z?\???C?????[?`?? /
13511351 * Creatures can cast spells, shoot missiles, and breathe.
1352- * @param m_idx モンスター構造体配列のID
1353- * @return 実際に特殊技能を利用したらTRUEを返す
1352+ * @param m_idx ?????X?^?[?\???z???D
1353+ * @return タ?????Z?\????p????RUE???
13541354 * @details
13551355 * Returns "TRUE" if a spell (or whatever) was (successfully) cast.\n
13561356 *\n
@@ -1781,7 +1781,7 @@ bool make_attack_spell(int m_idx)
17811781 {
17821782 disturb(1, 1);
17831783 /* Message */
1784- msg_format(_("%^sは呪文を唱えようとしたが失敗した。", "%^s tries to cast a spell, but fails."), m_name);
1784+ msg_format(_("%^s??????????????s???B", "%^s tries to cast a spell, but fails."), m_name);
17851785
17861786 return (TRUE);
17871787 }
@@ -1789,7 +1789,7 @@ bool make_attack_spell(int m_idx)
17891789 /* Hex: Anti Magic Barrier */
17901790 if (!spell_is_inate(thrown_spell) && magic_barrier(m_idx))
17911791 {
1792- msg_format(_("反魔法バリアが%^sの呪文をかき消した。", "Anti magic barrier cancels the spell which %^s casts."), m_name);
1792+ msg_format(_("????@?o???A??^s??????????B", "Anti magic barrier cancels the spell which %^s casts."), m_name);
17931793 return (TRUE);
17941794 }
17951795
@@ -1821,6 +1821,18 @@ bool make_attack_spell(int m_idx)
18211821 case 128 + 24: /* RF5_BO_PLAS */
18221822 case 128 + 25: /* RF5_BO_ICEE */
18231823 case 128 + 26: /* RF5_MISSILE */
1824+ case 128 + 27: /* RF5_SCARE */
1825+ case 128 + 28: /* RF5_BLIND */
1826+ case 128 + 29: /* RF5_CONF */
1827+ case 128 + 30: /* RF5_SLOW */
1828+ case 128 + 31: /* RF5_HOLD */
1829+ case 160 + 1: /* RF6_HAND_DOOM */
1830+ case 160 + 8: /* RF6_TELE_TO */
1831+ case 160 + 9: /* RF6_TELE_AWAY */
1832+ case 160 + 10: /* RF6_TELE_LEVEL */
1833+ case 160 + 11: /* RF6_PSY_SPEAR */
1834+ case 160 + 12: /* RF6_DARKNESS */
1835+ case 160 + 14: /* RF6_FORGET */
18241836 return (FALSE);
18251837 }
18261838 }
@@ -1831,1147 +1843,105 @@ bool make_attack_spell(int m_idx)
18311843 case 96 + 0: spell_RF4_SHRIEK(m_idx, m_name); break; /* RF4_SHRIEK */
18321844 case 96 + 1: break; /* RF4_XXX1 */
18331845 case 96 + 2: spell_RF4_DISPEL(blind, m_name); break; /* RF4_DISPEL */
1834- case 96 + 3: spell_RF4_ROCKET(blind, m_name, m_ptr, y, x, m_idx, learnable); break; /* RF4_ROCKET */
1835- case 96 + 4: spell_RF4_SHOOT(blind, m_name, r_ptr, m_idx, learnable); break; /* RF4_SHOOT */
1846+ case 96 + 3: dam = spell_RF4_ROCKET(blind, m_name, m_ptr, y, x, m_idx, learnable); break; /* RF4_ROCKET */
1847+ case 96 + 4: dam = spell_RF4_SHOOT(blind, m_name, r_ptr, m_idx, learnable); break; /* RF4_SHOOT */
18361848 case 96 + 5: break; /* RF4_XXX2 */
18371849 case 96 + 6: break; /* RF4_XXX3 */
18381850 case 96 + 7: break; /* RF4_XXX4 */
1839- case 96 + 8: spell_RF4_BREATH(GF_ACID, blind, m_name, m_ptr, y, x, m_idx, learnable); break; /* RF4_BR_ACID */
1840- case 96 + 9: spell_RF4_BREATH(GF_ELEC, blind, m_name, m_ptr, y, x, m_idx, learnable); break; /* RF4_BR_ELEC */
1841- case 96 + 10: spell_RF4_BREATH(GF_FIRE, blind, m_name, m_ptr, y, x, m_idx, learnable); break; /* RF4_BR_FIRE */
1842- case 96 + 11: spell_RF4_BREATH(GF_COLD, blind, m_name, m_ptr, y, x, m_idx, learnable); break; /* RF4_BR_COLD */
1843- case 96 + 12: spell_RF4_BREATH(GF_POIS, blind, m_name, m_ptr, y, x, m_idx, learnable); break; /* RF4_BR_POIS */
1844- case 96 + 13: spell_RF4_BREATH(GF_NETHER, blind, m_name, m_ptr, y, x, m_idx, learnable); break; /* RF4_BR_NETH */
1845- case 96 + 14: spell_RF4_BREATH(GF_LITE, blind, m_name, m_ptr, y_br_lite, x_br_lite, m_idx, learnable); break; /* RF4_BR_LITE */
1846- case 96 + 15: spell_RF4_BREATH(GF_DARK, blind, m_name, m_ptr, y, x, m_idx, learnable); break; /* RF4_BR_DARK */
1847- case 96 + 16: spell_RF4_BREATH(GF_CONFUSION, blind, m_name, m_ptr, y, x, m_idx, learnable); break; /* RF4_BR_CONF */
1848- case 96 + 17: spell_RF4_BREATH(GF_SOUND, blind, m_name, m_ptr, y, x, m_idx, learnable); break; /* RF4_BR_SOUN */
1849- case 96 + 18: spell_RF4_BREATH(GF_CHAOS, blind, m_name, m_ptr, y, x, m_idx, learnable); break; /* RF4_BR_CHAO */
1850- case 96 + 19: spell_RF4_BREATH(GF_DISENCHANT, blind, m_name, m_ptr, y, x, m_idx, learnable); break; /* RF4_BR_DISE */
1851- case 96 + 20: spell_RF4_BREATH(GF_NEXUS, blind, m_name, m_ptr, y, x, m_idx, learnable); break; /* RF4_BR_NEXU */
1852- case 96 + 21: spell_RF4_BREATH(GF_TIME, blind, m_name, m_ptr, y, x, m_idx, learnable); break; /* RF4_BR_TIME */
1853- case 96 + 22: spell_RF4_BREATH(GF_INERTIA, blind, m_name, m_ptr, y, x, m_idx, learnable); break; /* RF4_BR_INER */
1854- case 96 + 23: spell_RF4_BREATH(GF_GRAVITY, blind, m_name, m_ptr, y, x, m_idx, learnable); break; /* RF4_BR_GRAV */
1855- case 96 + 24: spell_RF4_BREATH(GF_SHARDS, blind, m_name, m_ptr, y, x, m_idx, learnable); break; /* RF4_BR_SHAR */
1856- case 96 + 25: spell_RF4_BREATH(GF_PLASMA, blind, m_name, m_ptr, y, x, m_idx, learnable); break; /* RF4_BR_PLAS */
1857- case 96 + 26: spell_RF4_BREATH(GF_FORCE, blind, m_name, m_ptr, y, x, m_idx, learnable); break; /* RF4_BR_WALL */
1858- case 96 + 27: spell_RF4_BREATH(GF_MANA, blind, m_name, m_ptr, y, x, m_idx, learnable); break; /* RF4_BR_MANA */
1859- case 96 + 28: spell_RF4_BA_NUKE(blind, m_name, r_ptr, rlev, y, x, m_idx, learnable); break; /* RF4_BA_NUKE */
1860- case 96 + 29: spell_RF4_BREATH(GF_NUKE, blind, m_name, m_ptr, y, x, m_idx, learnable); break; /* RF4_BR_NUKE */
1861- case 96 + 30: spell_RF4_BA_CHAO(blind, m_name, r_ptr, rlev, y, x, m_idx, learnable); break; /* RF4_BA_CHAO */
1862- case 96 + 31: spell_RF4_BREATH(GF_DISINTEGRATE, blind, m_name, m_ptr, y, x, m_idx, learnable); break; /* RF4_BR_DISI */
1863- case 128 + 0: spell_RF5_BA_ACID(blind, m_name, r_ptr, rlev, y, x, m_idx, learnable); break; /* RF5_BA_ACID */
1864- case 128 + 1: spell_RF5_BA_ELEC(blind, m_name, r_ptr, rlev, y, x, m_idx, learnable); break; /* RF5_BA_ELEC */
1865- case 128 + 2: spell_RF5_BA_FIRE(m_ptr, blind, m_name, r_ptr, rlev, y, x, m_idx, learnable); break; /* RF5_BA_FIRE */
1866- case 128 + 3: spell_RF5_BA_COLD(blind, m_name, r_ptr, rlev, y, x, m_idx, learnable); break; /* RF5_BA_COLD */
1867- case 128 + 4: spell_RF5_BA_POIS(blind, m_name, r_ptr, rlev, y, x, m_idx, learnable); break; /* RF5_BA_POIS */
1868- case 128 + 5: spell_RF5_BA_NETH(blind, m_name, r_ptr, rlev, y, x, m_idx, learnable); break; /* RF5_BA_NETH */
1869- case 128 + 6: spell_RF5_BA_WATE(blind, m_name, r_ptr, rlev, y, x, m_idx, learnable); break; /* RF5_BA_WATE */
1870- case 128 + 7: spell_RF5_BA_MANA(blind, m_name, r_ptr, rlev, y, x, m_idx, learnable); break; /* RF5_BA_MANA */
1871- case 128 + 8: spell_RF5_BA_DARK(blind, m_name, r_ptr, rlev, y, x, m_idx, learnable); break; /* RF5_BA_DARK */
1872- case 128 + 9: spell_RF5_DRAIN_MANA(blind, m_name, r_ptr, rlev, y, x, m_idx, learnable); break; /* RF5_DRAIN_MANA */
1873- case 128 + 10: spell_RF5_MIND_BLAST(seen, m_name, r_ptr, rlev, y, x, m_idx, learnable); break; /* RF5_MIND_BLAST */
1874- case 128 + 11: spell_RF5_BRAIN_SMASH(seen, m_name, r_ptr, rlev, y, x, m_idx, learnable); break; /* RF5_MIND_BLAST */
1875- case 128 + 12: spell_RF5_CAUSE_1(blind, m_name, r_ptr, rlev, y, x, m_idx, learnable); break; /* RF5_CAUSE_1 */
1876- case 128 + 13: spell_RF5_CAUSE_2(blind, m_name, r_ptr, rlev, y, x, m_idx, learnable); break; /* RF5_CAUSE_2 */
1877- case 128 + 14: spell_RF5_CAUSE_3(blind, m_name, r_ptr, rlev, y, x, m_idx, learnable); break; /* RF5_CAUSE_3 */
1878- case 128 + 15: spell_RF5_CAUSE_4(blind, m_name, r_ptr, rlev, y, x, m_idx, learnable); break; /* RF5_CAUSE_4 */
1879- case 128 + 16: spell_RF5_BO_ACID(blind, m_name, r_ptr, rlev, y, x, m_idx, learnable); break; /* RF5_BO_ACID */
1880- case 128 + 17: spell_RF5_BO_ELEC(blind, m_name, r_ptr, rlev, y, x, m_idx, learnable); break; /* RF5_BO_ELEC */
1881- case 128 + 18: spell_RF5_BO_FIRE(blind, m_name, r_ptr, rlev, y, x, m_idx, learnable); break; /* RF5_BO_FIRE */
1882- case 128 + 19: spell_RF5_BO_COLD(blind, m_name, r_ptr, rlev, y, x, m_idx, learnable); break; /* RF5_BO_COLD */
1883- case 128 + 20: spell_RF5_BA_LITE(blind, m_name, r_ptr, rlev, y, x, m_idx, learnable); break; /* RF5_BA_LITE */
1884- case 128 + 21: spell_RF5_BO_NETH(blind, m_name, r_ptr, rlev, y, x, m_idx, learnable); break; /* RF5_BO_NETH */
1885- case 128 + 22: spell_RF5_BO_WATE(blind, m_name, r_ptr, rlev, y, x, m_idx, learnable); break; /* RF5_BO_WATE */
1886- case 128 + 23: spell_RF5_BO_MANA(blind, m_name, r_ptr, rlev, y, x, m_idx, learnable); break; /* RF5_BO_MANA */
1887- case 128 + 24: spell_RF5_BO_PLAS(blind, m_name, r_ptr, rlev, y, x, m_idx, learnable); break; /* RF5_BO_PLAS */
1888- case 128 + 25: spell_RF5_BO_ICEE(blind, m_name, r_ptr, rlev, y, x, m_idx, learnable); break; /* RF5_BO_ICEE */
1889- case 128 + 26: spell_RF5_MISSILE(blind, m_name, r_ptr, rlev, y, x, m_idx, learnable); break; /* RF5_MISSILE */
1890-
1891- /* RF5_SCARE */
1892- case 128+27:
1893- {
1894- if (!direct) return (FALSE);
1895- disturb(1, 1);
1851+ case 96 + 8: dam = spell_RF4_BREATH(GF_ACID, blind, m_name, m_ptr, y, x, m_idx, learnable); break; /* RF4_BR_ACID */
1852+ case 96 + 9: dam = spell_RF4_BREATH(GF_ELEC, blind, m_name, m_ptr, y, x, m_idx, learnable); break; /* RF4_BR_ELEC */
1853+ case 96 + 10: dam = spell_RF4_BREATH(GF_FIRE, blind, m_name, m_ptr, y, x, m_idx, learnable); break; /* RF4_BR_FIRE */
1854+ case 96 + 11: dam = spell_RF4_BREATH(GF_COLD, blind, m_name, m_ptr, y, x, m_idx, learnable); break; /* RF4_BR_COLD */
1855+ case 96 + 12: dam = spell_RF4_BREATH(GF_POIS, blind, m_name, m_ptr, y, x, m_idx, learnable); break; /* RF4_BR_POIS */
1856+ case 96 + 13: dam = spell_RF4_BREATH(GF_NETHER, blind, m_name, m_ptr, y, x, m_idx, learnable); break; /* RF4_BR_NETH */
1857+ case 96 + 14: dam = spell_RF4_BREATH(GF_LITE, blind, m_name, m_ptr, y_br_lite, x_br_lite, m_idx, learnable); break; /* RF4_BR_LITE */
1858+ case 96 + 15: dam = spell_RF4_BREATH(GF_DARK, blind, m_name, m_ptr, y, x, m_idx, learnable); break; /* RF4_BR_DARK */
1859+ case 96 + 16: dam = spell_RF4_BREATH(GF_CONFUSION, blind, m_name, m_ptr, y, x, m_idx, learnable); break; /* RF4_BR_CONF */
1860+ case 96 + 17: dam = spell_RF4_BREATH(GF_SOUND, blind, m_name, m_ptr, y, x, m_idx, learnable); break; /* RF4_BR_SOUN */
1861+ case 96 + 18: dam = spell_RF4_BREATH(GF_CHAOS, blind, m_name, m_ptr, y, x, m_idx, learnable); break; /* RF4_BR_CHAO */
1862+ case 96 + 19: dam = spell_RF4_BREATH(GF_DISENCHANT, blind, m_name, m_ptr, y, x, m_idx, learnable); break; /* RF4_BR_DISE */
1863+ case 96 + 20: dam = spell_RF4_BREATH(GF_NEXUS, blind, m_name, m_ptr, y, x, m_idx, learnable); break; /* RF4_BR_NEXU */
1864+ case 96 + 21: dam = spell_RF4_BREATH(GF_TIME, blind, m_name, m_ptr, y, x, m_idx, learnable); break; /* RF4_BR_TIME */
1865+ case 96 + 22: dam = spell_RF4_BREATH(GF_INERTIA, blind, m_name, m_ptr, y, x, m_idx, learnable); break; /* RF4_BR_INER */
1866+ case 96 + 23: dam = spell_RF4_BREATH(GF_GRAVITY, blind, m_name, m_ptr, y, x, m_idx, learnable); break; /* RF4_BR_GRAV */
1867+ case 96 + 24: dam = spell_RF4_BREATH(GF_SHARDS, blind, m_name, m_ptr, y, x, m_idx, learnable); break; /* RF4_BR_SHAR */
1868+ case 96 + 25: dam = spell_RF4_BREATH(GF_PLASMA, blind, m_name, m_ptr, y, x, m_idx, learnable); break; /* RF4_BR_PLAS */
1869+ case 96 + 26: dam = spell_RF4_BREATH(GF_FORCE, blind, m_name, m_ptr, y, x, m_idx, learnable); break; /* RF4_BR_WALL */
1870+ case 96 + 27: dam = spell_RF4_BREATH(GF_MANA, blind, m_name, m_ptr, y, x, m_idx, learnable); break; /* RF4_BR_MANA */
1871+ case 96 + 28: dam = spell_RF4_BA_NUKE(blind, m_name, r_ptr, rlev, y, x, m_idx, learnable); break; /* RF4_BA_NUKE */
1872+ case 96 + 29: dam = spell_RF4_BREATH(GF_NUKE, blind, m_name, m_ptr, y, x, m_idx, learnable); break; /* RF4_BR_NUKE */
1873+ case 96 + 30: dam = spell_RF4_BA_CHAO(blind, m_name, r_ptr, rlev, y, x, m_idx, learnable); break; /* RF4_BA_CHAO */
1874+ case 96 + 31: dam = spell_RF4_BREATH(GF_DISINTEGRATE, blind, m_name, m_ptr, y, x, m_idx, learnable); break; /* RF4_BR_DISI */
1875+ case 128 + 0: dam = spell_RF5_BA_ACID(blind, m_name, r_ptr, rlev, y, x, m_idx, learnable); break; /* RF5_BA_ACID */
1876+ case 128 + 1: dam = spell_RF5_BA_ELEC(blind, m_name, r_ptr, rlev, y, x, m_idx, learnable); break; /* RF5_BA_ELEC */
1877+ case 128 + 2: dam = spell_RF5_BA_FIRE(m_ptr, blind, m_name, r_ptr, rlev, y, x, m_idx, learnable); break; /* RF5_BA_FIRE */
1878+ case 128 + 3: dam = spell_RF5_BA_COLD(blind, m_name, r_ptr, rlev, y, x, m_idx, learnable); break; /* RF5_BA_COLD */
1879+ case 128 + 4: dam = spell_RF5_BA_POIS(blind, m_name, r_ptr, rlev, y, x, m_idx, learnable); break; /* RF5_BA_POIS */
1880+ case 128 + 5: dam = spell_RF5_BA_NETH(blind, m_name, r_ptr, rlev, y, x, m_idx, learnable); break; /* RF5_BA_NETH */
1881+ case 128 + 6: dam = spell_RF5_BA_WATE(blind, m_name, r_ptr, rlev, y, x, m_idx, learnable); break; /* RF5_BA_WATE */
1882+ case 128 + 7: dam = spell_RF5_BA_MANA(blind, m_name, r_ptr, rlev, y, x, m_idx, learnable); break; /* RF5_BA_MANA */
1883+ case 128 + 8: dam = spell_RF5_BA_DARK(blind, m_name, r_ptr, rlev, y, x, m_idx, learnable); break; /* RF5_BA_DARK */
1884+ case 128 + 9: dam = spell_RF5_DRAIN_MANA(blind, m_name, r_ptr, rlev, y, x, m_idx, learnable); break; /* RF5_DRAIN_MANA */
1885+ case 128 + 10: dam = spell_RF5_MIND_BLAST(seen, m_name, r_ptr, rlev, y, x, m_idx, learnable); break; /* RF5_MIND_BLAST */
1886+ case 128 + 11: dam = spell_RF5_BRAIN_SMASH(seen, m_name, r_ptr, rlev, y, x, m_idx, learnable); break; /* RF5_MIND_BLAST */
1887+ case 128 + 12: dam = spell_RF5_CAUSE_1(blind, m_name, r_ptr, rlev, y, x, m_idx, learnable); break; /* RF5_CAUSE_1 */
1888+ case 128 + 13: dam = spell_RF5_CAUSE_2(blind, m_name, r_ptr, rlev, y, x, m_idx, learnable); break; /* RF5_CAUSE_2 */
1889+ case 128 + 14: dam = spell_RF5_CAUSE_3(blind, m_name, r_ptr, rlev, y, x, m_idx, learnable); break; /* RF5_CAUSE_3 */
1890+ case 128 + 15: dam = spell_RF5_CAUSE_4(blind, m_name, r_ptr, rlev, y, x, m_idx, learnable); break; /* RF5_CAUSE_4 */
1891+ case 128 + 16: dam = spell_RF5_BO_ACID(blind, m_name, r_ptr, rlev, y, x, m_idx, learnable); break; /* RF5_BO_ACID */
1892+ case 128 + 17: dam = spell_RF5_BO_ELEC(blind, m_name, r_ptr, rlev, y, x, m_idx, learnable); break; /* RF5_BO_ELEC */
1893+ case 128 + 18: dam = spell_RF5_BO_FIRE(blind, m_name, r_ptr, rlev, y, x, m_idx, learnable); break; /* RF5_BO_FIRE */
1894+ case 128 + 19: dam = spell_RF5_BO_COLD(blind, m_name, r_ptr, rlev, y, x, m_idx, learnable); break; /* RF5_BO_COLD */
1895+ case 128 + 20: dam = spell_RF5_BA_LITE(blind, m_name, r_ptr, rlev, y, x, m_idx, learnable); break; /* RF5_BA_LITE */
1896+ case 128 + 21: dam = spell_RF5_BO_NETH(blind, m_name, r_ptr, rlev, y, x, m_idx, learnable); break; /* RF5_BO_NETH */
1897+ case 128 + 22: dam = spell_RF5_BO_WATE(blind, m_name, r_ptr, rlev, y, x, m_idx, learnable); break; /* RF5_BO_WATE */
1898+ case 128 + 23: dam = spell_RF5_BO_MANA(blind, m_name, r_ptr, rlev, y, x, m_idx, learnable); break; /* RF5_BO_MANA */
1899+ case 128 + 24: dam = spell_RF5_BO_PLAS(blind, m_name, r_ptr, rlev, y, x, m_idx, learnable); break; /* RF5_BO_PLAS */
1900+ case 128 + 25: dam = spell_RF5_BO_ICEE(blind, m_name, r_ptr, rlev, y, x, m_idx, learnable); break; /* RF5_BO_ICEE */
1901+ case 128 + 26: dam = spell_RF5_MISSILE(blind, m_name, r_ptr, rlev, y, x, m_idx, learnable); break; /* RF5_MISSILE */
1902+ case 128 + 27: spell_RF5_SCARE(blind, m_name, r_ptr, rlev, y, x, m_idx); break; /* RF5_SCARE */
1903+ case 128 + 28: spell_RF5_BLIND(blind, m_name, r_ptr, rlev, y, x, m_idx); break; /* RF5_BLIND */
1904+ case 128 + 29: spell_RF5_CONF(blind, m_name, r_ptr, rlev, y, x, m_idx); break; /* RF5_CONF */
1905+ case 128 + 30: spell_RF5_SLOW(blind, m_name, r_ptr, rlev, y, x, m_idx); break; /* RF5_SLOW */
1906+ case 128 + 31: spell_RF5_HOLD(blind, m_name, r_ptr, rlev, y, x, m_idx); break; /* RF5_HOLD */
1907+ case 160 + 0: spell_RF6_HASTE(blind, m_name, m_ptr, y, x, m_idx); break; /* RF6_HASTE */
1908+ case 160 + 1: dam = spell_RF6_HAND_DOOM(blind, m_name, m_ptr, y, x, m_idx, learnable); break; /* RF6_HAND_DOOM */
1909+ case 160 + 2: spell_RF6_HEAL(blind, seen, m_name, m_ptr, rlev, m_idx); break; /* RF6_HEAL */
1910+ case 160 + 3: spell_RF6_INVULNER(seen, m_name, m_ptr, m_idx); break; /* RF6_INVULNER */
1911+ case 160 + 4: spell_RF6_BLINK(m_name, m_idx); break; /* RF6_BLINK */
1912+ case 160 + 5: spell_RF6_TPORT(m_name, m_idx); break; /* RF6_TPORT */
1913+ case 160 + 6: dam = spell_RF6_WORLD(m_name, m_ptr, m_idx); break; /* RF6_WORLD */
18961914
1897- if (blind)
1898- msg_format(_("%^sが何かをつぶやくと、恐ろしげな音が聞こえた。", "%^s mumbles, and you hear scary noises."), m_name);
1899- else
1900- msg_format(_("%^sが恐ろしげな幻覚を作り出した。", "%^s casts a fearful illusion."), m_name);
1901-
1902- if (p_ptr->resist_fear)
1903- {
1904- msg_print(_("しかし恐怖に侵されなかった。", "You refuse to be frightened."));
1905- }
1906- else if (randint0(100 + rlev/2) < p_ptr->skill_sav)
1907- {
1908- msg_print(_("しかし恐怖に侵されなかった。", "You refuse to be frightened."));
1909- }
1910- else
1911- {
1912- (void)set_afraid(p_ptr->afraid + randint0(4) + 4);
1913- }
1914- learn_spell(MS_SCARE);
1915- update_smart_learn(m_idx, DRS_FEAR);
1916- break;
1917- }
1918-
1919- /* RF5_BLIND */
1920- case 128+28:
1921- {
1922- if (!direct) return (FALSE);
1923- disturb(1, 1);
1924-
1925- if (blind)
1926- msg_format(_("%^sが何かをつぶやいた。", "%^s mumbles."), m_name);
1927- else
1928- msg_format(_("%^sが呪文を唱えてあなたの目をくらました!",
1929- "%^s casts a spell, burning your eyes!"), m_name);
1930-
1931- if (p_ptr->resist_blind)
1932- {
1933- msg_print(_("しかし効果がなかった!", "You are unaffected!"));
1934- }
1935- else if (randint0(100 + rlev/2) < p_ptr->skill_sav)
1936- {
1937- msg_print(_("しかし効力を跳ね返した!", "You resist the effects!"));
1938- }
1939- else
1940- {
1941- (void)set_blind(12 + randint0(4));
1942- }
1943- learn_spell(MS_BLIND);
1944- update_smart_learn(m_idx, DRS_BLIND);
1945- break;
1946- }
1947-
1948- /* RF5_CONF */
1949- case 128+29:
1950- {
1951- if (!direct) return (FALSE);
1952- disturb(1, 1);
1953-
1954- if (blind)
1955- msg_format(_("%^sが何かをつぶやくと、頭を悩ます音がした。",
1956- "%^s mumbles, and you hear puzzling noises."), m_name);
1957- else
1958- msg_format(_("%^sが誘惑的な幻覚を作り出した。",
1959- "%^s creates a mesmerising illusion."), m_name);
1960-
1961- if (p_ptr->resist_conf)
1962- {
1963- msg_print(_("しかし幻覚にはだまされなかった。", "You disbelieve the feeble spell."));
1964- }
1965- else if (randint0(100 + rlev/2) < p_ptr->skill_sav)
1966- {
1967- msg_print(_("しかし幻覚にはだまされなかった。", "You disbelieve the feeble spell."));
1968- }
1969- else
1970- {
1971- (void)set_confused(p_ptr->confused + randint0(4) + 4);
1972- }
1973- learn_spell(MS_CONF);
1974- update_smart_learn(m_idx, DRS_CONF);
1975- break;
1976- }
1977-
1978- /* RF5_SLOW */
1979- case 128+30:
1980- {
1981- if (!direct) return (FALSE);
1982- disturb(1, 1);
1983-
1984- msg_format(_("%^sがあなたの筋力を吸い取ろうとした!",
1985- "%^s drains power from your muscles!"), m_name);
1986-
1987- if (p_ptr->free_act)
1988- {
1989- msg_print(_("しかし効果がなかった!", "You are unaffected!"));
1990- }
1991- else if (randint0(100 + rlev/2) < p_ptr->skill_sav)
1992- {
1993- msg_print(_("しかし効力を跳ね返した!", "You resist the effects!"));
1994- }
1995- else
1996- {
1997- (void)set_slow(p_ptr->slow + randint0(4) + 4, FALSE);
1998- }
1999- learn_spell(MS_SLOW);
2000- update_smart_learn(m_idx, DRS_FREE);
2001- break;
2002- }
2003-
2004- /* RF5_HOLD */
2005- case 128+31:
2006- {
2007- if (!direct) return (FALSE);
2008- disturb(1, 1);
2009-
2010- if (blind)
2011- msg_format(_("%^sが何かをつぶやいた。", "%^s mumbles."), m_name);
2012- else
2013- msg_format(_("%^sがあなたの目をじっと見つめた!", "%^s stares deep into your eyes!"), m_name);
2014-
2015- if (p_ptr->free_act)
2016- {
2017- msg_print(_("しかし効果がなかった!", "You are unaffected!"));
2018- }
2019- else if (randint0(100 + rlev/2) < p_ptr->skill_sav)
2020- {
2021- msg_format(_("しかし効力を跳ね返した!", "You resist the effects!"));
2022- }
2023- else
2024- {
2025- (void)set_paralyzed(p_ptr->paralyzed + randint0(4) + 4);
2026- }
2027- learn_spell(MS_SLEEP);
2028- update_smart_learn(m_idx, DRS_FREE);
2029- break;
2030- }
2031-
2032- /* RF6_HASTE */
2033- case 160+0:
2034- {
2035- disturb(1, 1);
2036- if (blind)
2037- {
2038- msg_format(_("%^sが何かをつぶやいた。", "%^s mumbles."), m_name);
2039- }
2040- else
2041- {
2042- msg_format(_("%^sが自分の体に念を送った。", "%^s concentrates on %s body."), m_name);
2043- }
2044-
2045- /* Allow quick speed increases to base+10 */
2046- if (set_monster_fast(m_idx, MON_FAST(m_ptr) + 100))
2047- {
2048- msg_format(_("%^sの動きが速くなった。", "%^s starts moving faster."), m_name);
2049- }
2050- break;
2051- }
2052-
2053- /* RF6_HAND_DOOM */
2054- case 160+1:
2055- {
2056- if (!direct) return (FALSE);
2057- disturb(1, 1);
2058- msg_format(_("%^sが<破滅の手>を放った!", "%^s invokes the Hand of Doom!"), m_name);
2059- dam = (((s32b) ((40 + randint1(20)) * (p_ptr->chp))) / 100);
2060- breath(y, x, m_idx, GF_HAND_DOOM, dam, 0, FALSE, MS_HAND_DOOM, learnable);
2061- break;
2062- }
2063-
2064- /* RF6_HEAL */
2065- case 160+2:
2066- {
2067- disturb(1, 1);
2068-
2069- /* Message */
2070- if (blind)
2071- msg_format(_("%^sが何かをつぶやいた。", "%^s mumbles."), m_name);
2072- else
2073- msg_format(_("%^sが自分の傷に集中した。", "%^s concentrates on %s wounds."), m_name);
2074-
2075- /* Heal some */
2076- m_ptr->hp += (rlev * 6);
2077-
2078- /* Fully healed */
2079- if (m_ptr->hp >= m_ptr->maxhp)
2080- {
2081- /* Fully healed */
2082- m_ptr->hp = m_ptr->maxhp;
2083-
2084- /* Message */
2085- if (seen)
2086- msg_format(_("%^sは完全に治った!", "%^s looks completely healed!"), m_name);
2087- else
2088- msg_format(_("%^sは完全に治ったようだ!", "%^s sounds completely healed!"), m_name);
2089- }
2090-
2091- /* Partially healed */
2092- else
2093- {
2094- /* Message */
2095- if (seen)
2096- msg_format(_("%^sは体力を回復したようだ。", "%^s looks healthier."), m_name);
2097- else
2098- msg_format(_("%^sは体力を回復したようだ。", "%^s sounds healthier."), m_name);
2099- }
2100-
2101- /* Redraw (later) if needed */
2102- if (p_ptr->health_who == m_idx) p_ptr->redraw |= (PR_HEALTH);
2103- if (p_ptr->riding == m_idx) p_ptr->redraw |= (PR_UHEALTH);
2104-
2105- /* Cancel fear */
2106- if (MON_MONFEAR(m_ptr))
2107- {
2108- /* Cancel fear */
2109- (void)set_monster_monfear(m_idx, 0);
2110-
2111- /* Message */
2112- msg_format(_("%^sは勇気を取り戻した。", "%^s recovers %s courage."), m_name);
2113- }
2114- break;
2115- }
2116-
2117- /* RF6_INVULNER */
2118- case 160+3:
2119- {
2120- disturb(1, 1);
2121-
2122- /* Message */
2123- if (!seen)
2124- msg_format(_("%^sが何かを力強くつぶやいた。", "%^s mumbles powerfully."), m_name);
2125- else
2126- msg_format(_("%sは無傷の球の呪文を唱えた。", "%^s casts a Globe of Invulnerability."), m_name);
2127-
2128- if (!MON_INVULNER(m_ptr)) (void)set_monster_invulner(m_idx, randint1(4) + 4, FALSE);
2129- break;
2130- }
2131-
2132- /* RF6_BLINK */
2133- case 160+4:
2134- {
2135- disturb(1, 1);
2136- if (teleport_barrier(m_idx))
2137- {
2138- msg_format(_("魔法のバリアが%^sのテレポートを邪魔した。",
2139- "Magic barrier obstructs teleporting of %^s."), m_name);
2140- }
2141- else
2142- {
2143- msg_format(_("%^sが瞬時に消えた。", "%^s blinks away."), m_name);
2144- teleport_away(m_idx, 10, 0L);
2145- p_ptr->update |= (PU_MONSTERS);
2146- }
2147- break;
2148- }
2149-
2150- /* RF6_TPORT */
2151- case 160+5:
2152- {
2153- disturb(1, 1);
2154- if (teleport_barrier(m_idx))
2155- {
2156- msg_format(_("魔法のバリアが%^sのテレポートを邪魔した。",
2157- "Magic barrier obstructs teleporting of %^s."), m_name);
2158- }
2159- else
2160- {
2161- msg_format(_("%^sがテレポートした。", "%^s teleports away."), m_name);
2162- teleport_away_followable(m_idx);
2163- }
2164- break;
2165- }
2166-
2167- /* RF6_WORLD */
2168- case 160+6:
2169- {
2170- int who = 0;
2171- disturb(1, 1);
2172- if(m_ptr->r_idx == MON_DIO) who = 1;
2173- else if(m_ptr->r_idx == MON_WONG) who = 3;
2174- dam = who;
2175- if (!process_the_world(randint1(2)+2, who, TRUE)) return (FALSE);
2176- break;
2177- }
2178-
2179- /* RF6_SPECIAL */
2180- case 160+7:
2181- {
2182- int k;
2183-
2184- disturb(1, 1);
2185- switch (m_ptr->r_idx)
2186- {
2187- case MON_OHMU:
2188- /* Moved to process_monster(), like multiplication */
2189- return FALSE;
2190-
2191- case MON_BANORLUPART:
2192- {
2193- int dummy_hp = (m_ptr->hp + 1) / 2;
2194- int dummy_maxhp = m_ptr->maxhp/2;
2195- int dummy_y = m_ptr->fy;
2196- int dummy_x = m_ptr->fx;
2197-
2198- if (p_ptr->inside_arena || p_ptr->inside_battle || !summon_possible(m_ptr->fy, m_ptr->fx)) return FALSE;
2199- delete_monster_idx(cave[m_ptr->fy][m_ptr->fx].m_idx);
2200- summon_named_creature(0, dummy_y, dummy_x, MON_BANOR, mode);
2201- m_list[hack_m_idx_ii].hp = dummy_hp;
2202- m_list[hack_m_idx_ii].maxhp = dummy_maxhp;
2203- summon_named_creature(0, dummy_y, dummy_x, MON_LUPART, mode);
2204- m_list[hack_m_idx_ii].hp = dummy_hp;
2205- m_list[hack_m_idx_ii].maxhp = dummy_maxhp;
2206-
2207- msg_print(_("『バーノール・ルパート』が分裂した!",
2208- "Banor=Rupart splits in two person!"));
2209-
2210- break;
2211- }
2212-
2213- case MON_BANOR:
2214- case MON_LUPART:
2215- {
2216- int dummy_hp = 0;
2217- int dummy_maxhp = 0;
2218- int dummy_y = m_ptr->fy;
2219- int dummy_x = m_ptr->fx;
2220-
2221- if (!r_info[MON_BANOR].cur_num || !r_info[MON_LUPART].cur_num) return (FALSE);
2222- for (k = 1; k < m_max; k++)
2223- {
2224- if (m_list[k].r_idx == MON_BANOR || m_list[k].r_idx == MON_LUPART)
2225- {
2226- dummy_hp += m_list[k].hp;
2227- dummy_maxhp += m_list[k].maxhp;
2228- if (m_list[k].r_idx != m_ptr->r_idx)
2229- {
2230- dummy_y = m_list[k].fy;
2231- dummy_x = m_list[k].fx;
2232- }
2233- delete_monster_idx(k);
2234- }
2235- }
2236- summon_named_creature(0, dummy_y, dummy_x, MON_BANORLUPART, mode);
2237- m_list[hack_m_idx_ii].hp = dummy_hp;
2238- m_list[hack_m_idx_ii].maxhp = dummy_maxhp;
2239-
2240- msg_print(_("『バーノール』と『ルパート』が合体した!",
2241- "Banor and Rupart combine into one!"));
2242- break;
2243- }
2244-
2245- case MON_ROLENTO:
2246- if (blind)
2247- msg_format(_("%^sが何か大量に投げた。", "%^s spreads something."), m_name);
2248- else
2249- msg_format(_("%^sは手榴弾をばらまいた。", "%^s throws some hand grenades."), m_name);
2250-
2251- {
2252- int num = 1 + randint1(3);
2253-
2254- for (k = 0; k < num; k++)
2255- {
2256- count += summon_named_creature(m_idx, y, x, MON_SHURYUUDAN, mode);
2257- }
2258- }
2259-
2260- if (blind && count)
2261- msg_print(_("多くのものが間近にばらまかれる音がする。", "You hear many things are scattered nearby."));
2262-
2263- break;
2264-
2265- default:
2266- if (r_ptr->d_char == 'B')
2267- {
2268- disturb(1, 1);
2269- if (one_in_(3) || !direct)
2270- {
2271- msg_format(_("%^sは突然視界から消えた!", "%^s suddenly go out of your sight!"), m_name);
2272- teleport_away(m_idx, 10, TELEPORT_NONMAGICAL);
2273- p_ptr->update |= (PU_MONSTERS);
2274- }
2275- else
2276- {
2277- int get_damage = 0;
2278- bool fear; /* dummy */
2279-
2280- msg_format(_("%^sがあなたを掴んで空中から投げ落とした。",
2281- "%^s holds you, and drops from the sky."), m_name);
2282- dam = damroll(4, 8);
2283- teleport_player_to(m_ptr->fy, m_ptr->fx, TELEPORT_NONMAGICAL | TELEPORT_PASSIVE);
2284-
2285- sound(SOUND_FALL);
2286-
2287- if (p_ptr->levitation)
2288- {
2289- msg_print(_("あなたは静かに着地した。", "You float gently down to the ground."));
2290- }
2291- else
2292- {
2293- msg_print(_("あなたは地面に叩きつけられた。", "You crashed into the ground."));
2294- dam += damroll(6, 8);
2295- }
2296-
2297- /* Mega hack -- this special action deals damage to the player. Therefore the code of "eyeeye" is necessary.
2298- -- henkma
2299- */
2300- get_damage = take_hit(DAMAGE_NOESCAPE, dam, m_name, -1);
2301- if (p_ptr->tim_eyeeye && get_damage > 0 && !p_ptr->is_dead)
2302- {
2303-#ifdef JP
2304- msg_format("攻撃が%s自身を傷つけた!", m_name);
2305-#else
2306- char m_name_self[80];
2307-
2308- /* hisself */
2309- monster_desc(m_name_self, m_ptr, MD_PRON_VISIBLE | MD_POSSESSIVE | MD_OBJECTIVE);
2310-
2311- msg_format("The attack of %s has wounded %s!", m_name, m_name_self);
2312-#endif
2313- project(0, 0, m_ptr->fy, m_ptr->fx, get_damage, GF_MISSILE, PROJECT_KILL, -1);
2314- set_tim_eyeeye(p_ptr->tim_eyeeye-5, TRUE);
2315- }
2316-
2317- if (p_ptr->riding) mon_take_hit_mon(p_ptr->riding, dam, &fear, extract_note_dies(real_r_ptr(&m_list[p_ptr->riding])), m_idx);
2318- }
2319- break;
2320- }
2321-
2322- /* Something is wrong */
2323- else return FALSE;
2324- }
2325- break;
2326- }
2327-
2328- /* RF6_TELE_TO */
2329- case 160+8:
2330- {
2331- if (!direct) return (FALSE);
2332- disturb(1, 1);
2333- msg_format(_("%^sがあなたを引き戻した。", "%^s commands you to return."), m_name);
2334-
2335- teleport_player_to(m_ptr->fy, m_ptr->fx, TELEPORT_PASSIVE);
2336- learn_spell(MS_TELE_TO);
2337- break;
2338- }
2339-
2340- /* RF6_TELE_AWAY */
2341- case 160+9:
2342- {
2343- if (!direct) return (FALSE);
2344- disturb(1, 1);
2345-
2346- msg_format(_("%^sにテレポートさせられた。", "%^s teleports you away."), m_name);
2347- if ((p_ptr->pseikaku == SEIKAKU_COMBAT) || (inventory[INVEN_BOW].name1 == ART_CRIMSON))
2348- msg_print(_("くっそ〜", ""));
2349-
2350- learn_spell(MS_TELE_AWAY);
2351- teleport_player_away(m_idx, 100);
2352- break;
2353- }
2354-
2355- /* RF6_TELE_LEVEL */
2356- case 160+10:
2357- {
2358- if (!direct) return (FALSE);
2359- disturb(1, 1);
2360-
2361- if (blind)
2362- msg_format(_("%^sが何か奇妙な言葉をつぶやいた。", "%^s mumbles strangely."), m_name);
2363- else
2364- msg_format(_("%^sがあなたの足を指さした。", "%^s gestures at your feet."), m_name);
2365-
2366- if (p_ptr->resist_nexus)
2367- {
2368- msg_print(_("しかし効果がなかった!", "You are unaffected!"));
2369- }
2370- else if (randint0(100 + rlev/2) < p_ptr->skill_sav)
2371- {
2372- msg_print(_("しかし効力を跳ね返した!", "You resist the effects!"));
2373- }
2374- else
2375- {
2376- teleport_level(0);
2377- }
2378- learn_spell(MS_TELE_LEVEL);
2379- update_smart_learn(m_idx, DRS_NEXUS);
2380- break;
2381- }
2382-
2383- /* RF6_PSY_SPEAR */
2384- case 160+11:
2385- {
2386- if (!direct) return (FALSE);
2387- disturb(1, 1);
2388- if (blind)
2389- msg_format(_("%^sが何かをつぶやいた。", "%^s mumbles."), m_name);
2390- else
2391- msg_format(_("%^sが光の剣を放った。", "%^s throw a Psycho-Spear."), m_name);
2392-
2393- dam = (r_ptr->flags2 & RF2_POWERFUL) ? (randint1(rlev * 2) + 150) : (randint1(rlev * 3 / 2) + 100);
2394- beam(m_idx, GF_PSY_SPEAR, dam, MS_PSY_SPEAR, learnable);
2395- break;
2396- }
2397-
2398- /* RF6_DARKNESS */
2399- case 160+12:
2400- {
2401- if (!direct) return (FALSE);
2402- disturb(1, 1);
2403-
2404- if (blind)
2405- msg_format(_("%^sが何かをつぶやいた。", "%^s mumbles."), m_name);
2406- else if (can_use_lite_area)
2407- msg_format(_("%^sが辺りを明るく照らした。", "%^s cast a spell to light up."), m_name);
2408- else
2409- msg_format(_("%^sが暗闇の中で手を振った。", "%^s gestures in shadow."), m_name);
2410-
2411- if (can_use_lite_area) (void)lite_area(0, 3);
2412- else
2413- {
2414- learn_spell(MS_DARKNESS);
2415- (void)unlite_area(0, 3);
2416- }
2417- break;
2418- }
2419-
2420- /* RF6_TRAPS */
2421- case 160+13:
2422- {
2423- disturb(1, 1);
2424-
2425- if (blind)
2426- msg_format(_("%^sが何かをつぶやいて邪悪に微笑んだ。",
2427- "%^s mumbles, and then cackles evilly."), m_name);
2428- else
2429- msg_format(_("%^sが呪文を唱えて邪悪に微笑んだ。",
2430- "%^s casts a spell and cackles evilly."), m_name);
2431-
2432- learn_spell(MS_MAKE_TRAP);
2433- (void)trap_creation(y, x);
2434- break;
2435- }
2436-
2437- /* RF6_FORGET */
2438- case 160+14:
2439- {
2440- if (!direct) return (FALSE);
2441- disturb(1, 1);
2442-
2443- msg_format(_("%^sがあなたの記憶を消去しようとしている。",
2444- "%^s tries to blank your mind."), m_name);
2445-
2446- if (randint0(100 + rlev/2) < p_ptr->skill_sav)
2447- {
2448- msg_print(_("しかし効力を跳ね返した!", "You resist the effects!"));
2449- }
2450- else if (lose_all_info())
2451- {
2452- msg_print(_("記憶が薄れてしまった。", "Your memories fade away."));
2453- }
2454- learn_spell(MS_FORGET);
2455- break;
2456- }
2457-
2458- /* RF6_RAISE_DEAD */
2459- case 160+15:
2460- {
2461- disturb(1, 1);
2462-
2463- if (blind)
2464- msg_format(_("%^sが何かをつぶやいた。", "%^s mumbles."), m_name);
2465- else
2466- msg_format(_("%^sが死者復活の呪文を唱えた。",
2467- "%^s casts a spell to revive corpses."), m_name);
2468-
2469- animate_dead(m_idx, m_ptr->fy, m_ptr->fx);
2470- break;
2471- }
2472-
2473- /* RF6_S_KIN */
2474- case 160+16:
2475- {
2476- disturb(1, 1);
2477- if (m_ptr->r_idx == MON_SERPENT || m_ptr->r_idx == MON_ZOMBI_SERPENT)
2478- {
2479- if (blind)
2480- msg_format(_("%^sが何かをつぶやいた。", "%^s mumbles."), m_name);
2481- else
2482- msg_format(_("%^sがダンジョンの主を召喚した。",
2483- "%^s magically summons guardians of dungeons."), m_name);
2484- }
2485- else
2486- {
2487- if (blind)
2488- msg_format(_("%^sが何かをつぶやいた。", "%^s mumbles."), m_name);
2489- else
2490-#ifdef JP
2491- msg_format("%^sは魔法で%sを召喚した。",
2492- m_name,
2493- ((r_ptr->flags1) & RF1_UNIQUE ?
2494- "手下" : "仲間"));
2495-#else
2496- msg_format("%^s magically summons %s %s.",
2497- m_name, m_poss,
2498- ((r_ptr->flags1) & RF1_UNIQUE ?
2499- "minions" : "kin"));
2500-#endif
2501- }
2502-
2503- switch (m_ptr->r_idx)
2504- {
2505- case MON_MENELDOR:
2506- case MON_GWAIHIR:
2507- case MON_THORONDOR:
2508- {
2509- int num = 4 + randint1(3);
2510- for (k = 0; k < num; k++)
2511- {
2512- count += summon_specific(m_idx, y, x, rlev, SUMMON_EAGLES, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE));
2513- }
2514- }
2515- break;
2516-
2517- case MON_BULLGATES:
2518- {
2519- int num = 2 + randint1(3);
2520- for (k = 0; k < num; k++)
2521- {
2522- count += summon_named_creature(m_idx, y, x, MON_IE, mode);
2523- }
2524- }
2525- break;
2526-
2527- case MON_SERPENT:
2528- case MON_ZOMBI_SERPENT:
2529- {
2530- int num = 2 + randint1(3);
2531-
2532- if (r_info[MON_JORMUNGAND].cur_num < r_info[MON_JORMUNGAND].max_num && one_in_(6))
2533- {
2534- msg_print(_("地面から水が吹き出した!", "Water blew off from the ground!"));
2535- fire_ball_hide(GF_WATER_FLOW, 0, 3, 8);
2536- }
2537-
2538- for (k = 0; k < num; k++)
2539- {
2540- count += summon_specific(m_idx, y, x, rlev, SUMMON_GUARDIANS, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE));
2541- }
2542- }
2543- break;
2544-
2545- case MON_CALDARM:
2546- {
2547- int num = randint1(3);
2548- for (k = 0; k < num; k++)
2549- {
2550- count += summon_named_creature(m_idx, y, x, MON_LOCKE_CLONE, mode);
2551- }
2552- }
2553- break;
2554-
2555- case MON_LOUSY:
2556- {
2557- int num = 2 + randint1(3);
2558- for (k = 0; k < num; k++)
2559- {
2560- count += summon_specific(m_idx, y, x, rlev, SUMMON_LOUSE, PM_ALLOW_GROUP);
2561- }
2562- }
2563- break;
2564-
2565- default:
2566- summon_kin_type = r_ptr->d_char; /* Big hack */
2567-
2568- for (k = 0; k < 4; k++)
2569- {
2570- count += summon_specific(m_idx, y, x, rlev, SUMMON_KIN, PM_ALLOW_GROUP);
2571- }
2572- break;
2573- }
2574- if (blind && count)
2575- msg_print(_("多くのものが間近に現れた音がする。", "You hear many things appear nearby."));
2576-
2577- break;
2578- }
2579-
2580- /* RF6_S_CYBER */
2581- case 160+17:
2582- {
2583- disturb(1, 1);
2584-
2585- if (blind)
2586- msg_format(_("%^sが何かをつぶやいた。", "%^s mumbles."), m_name);
2587- else
2588- msg_format(_("%^sがサイバーデーモンを召喚した!",
2589- "%^s magically summons Cyberdemons!"), m_name);
2590-
2591- if (blind && count)
2592- msg_print(_("重厚な足音が近くで聞こえる。", "You hear heavy steps nearby."));
2593-
2594- summon_cyber(m_idx, y, x);
2595- break;
2596- }
2597-
2598- /* RF6_S_MONSTER */
2599- case 160+18:
2600- {
2601- disturb(1, 1);
2602-
2603- if (blind)
2604- msg_format(_("%^sが何かをつぶやいた。", "%^s mumbles."), m_name);
2605- else
2606- msg_format(_("%^sが魔法で仲間を召喚した!", "%^s magically summons help!"), m_name);
2607-
2608- for (k = 0; k < 1; k++)
2609- {
2610- count += summon_specific(m_idx, y, x, rlev, 0, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE));
2611- }
2612- if (blind && count)
2613- msg_print(_("何かが間近に現れた音がする。", "You hear something appear nearby."));
2614-
2615- break;
2616- }
2617-
2618- /* RF6_S_MONSTERS */
2619- case 160+19:
2620- {
2621- disturb(1, 1);
2622-
2623- if (blind)
2624- msg_format(_("%^sが何かをつぶやいた。", "%^s mumbles."), m_name);
2625- else
2626- msg_format(_("%^sが魔法でモンスターを召喚した!", "%^s magically summons monsters!"), m_name);
2627-
2628- for (k = 0; k < s_num_6; k++)
2629- {
2630- count += summon_specific(m_idx, y, x, rlev, 0, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE));
2631- }
2632-
2633- if (blind && count)
2634- msg_print(_("多くのものが間近に現れた音がする。", "You hear many things appear nearby."));
2635-
2636- break;
2637- }
2638-
2639- /* RF6_S_ANT */
2640- case 160+20:
2641- {
2642- disturb(1, 1);
2643-
2644- if (blind)
2645- msg_format(_("%^sが何かをつぶやいた。", "%^s mumbles."), m_name);
2646- else
2647- msg_format(_("%^sが魔法でアリを召喚した。", "%^s magically summons ants."), m_name);
2648-
2649- for (k = 0; k < s_num_6; k++)
2650- {
2651- count += summon_specific(m_idx, y, x, rlev, SUMMON_ANT, PM_ALLOW_GROUP);
2652- }
2653-
2654- if (blind && count)
2655- msg_print(_("多くのものが間近に現れた音がする。", "You hear many things appear nearby."));
2656-
2657- break;
2658- }
2659-
2660- /* RF6_S_SPIDER */
2661- case 160+21:
2662- {
2663- disturb(1, 1);
2664-
2665- if (blind)
2666- msg_format(_("%^sが何かをつぶやいた。", "%^s mumbles."), m_name);
2667- else
2668- msg_format(_("%^sが魔法でクモを召喚した。", "%^s magically summons spiders."), m_name);
2669-
2670- for (k = 0; k < s_num_6; k++)
2671- {
2672- count += summon_specific(m_idx, y, x, rlev, SUMMON_SPIDER, PM_ALLOW_GROUP);
2673- }
2674-
2675- if (blind && count)
2676- msg_print(_("多くのものが間近に現れた音がする。", "You hear many things appear nearby."));
2677-
2678- break;
2679- }
2680-
2681- /* RF6_S_HOUND */
2682- case 160+22:
2683- {
2684- disturb(1, 1);
2685-
2686- if (blind)
2687- msg_format(_("%^sが何かをつぶやいた。", "%^s mumbles."), m_name);
2688- else
2689- msg_format(_("%^sが魔法でハウンドを召喚した。", "%^s magically summons hounds."), m_name);
2690-
2691- for (k = 0; k < s_num_4; k++)
2692- {
2693- count += summon_specific(m_idx, y, x, rlev, SUMMON_HOUND, PM_ALLOW_GROUP);
2694- }
2695-
2696- if (blind && count)
2697- msg_print(_("多くのものが間近に現れた音がする。", "You hear many things appear nearby."));
2698-
2699- break;
2700- }
2701-
2702- /* RF6_S_HYDRA */
2703- case 160+23:
2704- {
2705- disturb(1, 1);
2706-
2707- if (blind)
2708- msg_format(_("%^sが何かをつぶやいた。", "%^s mumbles."), m_name);
2709- else
2710- msg_format(_("%^sが魔法でヒドラを召喚した。", "%^s magically summons hydras."), m_name);
2711-
2712- for (k = 0; k < s_num_4; k++)
2713- {
2714- count += summon_specific(m_idx, y, x, rlev, SUMMON_HYDRA, PM_ALLOW_GROUP);
2715- }
2716- if (blind && count)
2717- msg_print(_("多くのものが間近に現れた音がする。", "You hear many things appear nearby."));
2718-
2719- break;
2720- }
2721-
2722- /* RF6_S_ANGEL */
2723- case 160+24:
2724- {
2725- int num = 1;
2726-
2727- disturb(1, 1);
2728-
2729- if (blind)
2730- msg_format(_("%^sが何かをつぶやいた。", "%^s mumbles."), m_name);
2731- else
2732- msg_format(_("%^sが魔法で天使を召喚した!", "%^s magically summons an angel!"), m_name);
2733-
2734- if ((r_ptr->flags1 & RF1_UNIQUE) && !easy_band)
2735- {
2736- num += r_ptr->level/40;
2737- }
2738-
2739- for (k = 0; k < num; k++)
2740- {
2741- count += summon_specific(m_idx, y, x, rlev, SUMMON_ANGEL, PM_ALLOW_GROUP);
2742- }
2743-
2744- if (count < 2)
2745- {
2746- if (blind && count)
2747- msg_print(_("何かが間近に現れた音がする。", "You hear something appear nearby."));
2748- }
2749- else
2750- {
2751- if (blind)
2752- msg_print(_("多くのものが間近に現れた音がする。", "You hear many things appear nearby."));
2753- }
2754-
2755- break;
2756- }
2757-
2758- /* RF6_S_DEMON */
2759- case 160+25:
2760- {
2761- disturb(1, 1);
2762-
2763- if (blind)
2764- msg_format(_("%^sが何かをつぶやいた。", "%^s mumbles."), m_name);
2765- else
2766- msg_format(_("%^sは魔法で混沌の宮廷から悪魔を召喚した!",
2767- "%^s magically summons a demon from the Courts of Chaos!"), m_name);
2768-
2769- for (k = 0; k < 1; k++)
2770- {
2771- count += summon_specific(m_idx, y, x, rlev, SUMMON_DEMON, PM_ALLOW_GROUP);
2772- }
2773-
2774- if (blind && count)
2775- msg_print(_("何かが間近に現れた音がする。", "You hear something appear nearby."));
2776-
2777- break;
2778- }
2779-
2780- /* RF6_S_UNDEAD */
2781- case 160+26:
2782- {
2783- disturb(1, 1);
2784-
2785- if (blind)
2786- msg_format(_("%^sが何かをつぶやいた。", "%^s mumbles."), m_name);
2787- else
2788- msg_format(_("%^sが魔法でアンデッドの強敵を召喚した!",
2789- "%^s magically summons an undead adversary!"), m_name);
2790-
2791- for (k = 0; k < 1; k++)
2792- {
2793- count += summon_specific(m_idx, y, x, rlev, SUMMON_UNDEAD, PM_ALLOW_GROUP);
2794- }
2795-
2796- if (blind && count)
2797- msg_print(_("何かが間近に現れた音がする。", "You hear something appear nearby."));
2798-
2799- break;
2800- }
2801-
2802- /* RF6_S_DRAGON */
2803- case 160+27:
2804- {
2805- disturb(1, 1);
2806-
2807- if (blind)
2808- msg_format(_("%^sが何かをつぶやいた。", "%^s mumbles."), m_name);
2809- else
2810- msg_format(_("%^sが魔法でドラゴンを召喚した!", "%^s magically summons a dragon!"), m_name);
2811-
2812- for (k = 0; k < 1; k++)
2813- {
2814- count += summon_specific(m_idx, y, x, rlev, SUMMON_DRAGON, PM_ALLOW_GROUP);
2815- }
2816- if (blind && count)
2817- msg_print(_("何かが間近に現れた音がする。", "You hear something appear nearby."));
2818-
2819- break;
2820- }
2821-
2822- /* RF6_S_HI_UNDEAD */
2823- case 160+28:
2824- {
2825- disturb(1, 1);
2826-
2827- if (((m_ptr->r_idx == MON_MORGOTH) || (m_ptr->r_idx == MON_SAURON) || (m_ptr->r_idx == MON_ANGMAR)) && ((r_info[MON_NAZGUL].cur_num+2) < r_info[MON_NAZGUL].max_num))
2828- {
2829- int cy = y;
2830- int cx = x;
2831-
2832- if (blind)
2833- msg_format(_("%^sが何かをつぶやいた。", "%^s mumbles."), m_name);
2834- else
2835- msg_format(_("%^sが魔法で幽鬼戦隊を召喚した!", "%^s magically summons rangers of Nazgul!"), m_name);
2836-
2837- msg_print(NULL);
2838-
2839- for (k = 0; k < 30; k++)
2840- {
2841- if (!summon_possible(cy, cx) || !cave_empty_bold(cy, cx))
2842- {
2843- int j;
2844- for (j = 100; j > 0; j--)
2845- {
2846- scatter(&cy, &cx, y, x, 2, 0);
2847- if (cave_empty_bold(cy, cx)) break;
2848- }
2849- if (!j) break;
2850- }
2851- if (!cave_empty_bold(cy, cx)) continue;
2852-
2853- if (summon_named_creature(m_idx, cy, cx, MON_NAZGUL, mode))
2854- {
2855- y = cy;
2856- x = cx;
2857- count++;
2858- if (count == 1)
2859- msg_format(_("「幽鬼戦隊%d号、ナズグル・ブラック!」",
2860- "A Nazgul says 'Nazgul-Rangers Number %d, Nazgul-Black!'"), count);
2861- else
2862- msg_format(_("「同じく%d号、ナズグル・ブラック!」",
2863- "Another one says 'Number %d, Nazgul-Black!'"), count);
2864-
2865- msg_print(NULL);
2866- }
2867- }
2868- msg_format(_("「%d人そろって、リングレンジャー!」",
2869- "They say 'The %d meets! We are the Ring-Ranger!'."), count);
2870- msg_print(NULL);
2871- }
2872- else
2873- {
2874- if (blind)
2875- msg_format(_("%^sが何かをつぶやいた。", "%^s mumbles."), m_name);
2876- else
2877- msg_format(_("%^sが魔法で強力なアンデッドを召喚した!",
2878- "%^s magically summons greater undead!"), m_name);
2879-
2880- for (k = 0; k < s_num_6; k++)
2881- {
2882- count += summon_specific(m_idx, y, x, rlev, SUMMON_HI_UNDEAD, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE));
2883- }
2884- }
2885- if (blind && count)
2886- {
2887- msg_print(_("間近で何か多くのものが這い回る音が聞こえる。",
2888- "You hear many creepy things appear nearby."));
2889- }
2890- break;
2891- }
2892-
2893- /* RF6_S_HI_DRAGON */
2894- case 160+29:
2895- {
2896- disturb(1, 1);
2897-
2898- if (blind)
2899- msg_format(_("%^sが何かをつぶやいた。", "%^s mumbles."), m_name);
2900- else
2901- msg_format(_("%^sが魔法で古代ドラゴンを召喚した!", "%^s magically summons ancient dragons!"), m_name);
2902-
2903- for (k = 0; k < s_num_4; k++)
2904- {
2905- count += summon_specific(m_idx, y, x, rlev, SUMMON_HI_DRAGON, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE));
2906- }
2907- if (blind && count)
2908- {
2909- msg_print(_("多くの力強いものが間近に現れた音が聞こえる。",
2910- "You hear many powerful things appear nearby."));
2911- }
2912- break;
2913- }
2914-
2915- /* RF6_S_AMBERITES */
2916- case 160+30:
2917- {
2918- disturb(1, 1);
2919-
2920- if (blind)
2921- msg_format(_("%^sが何かをつぶやいた。", "%^s mumbles."), m_name);
2922- else
2923- msg_format(_("%^sがアンバーの王族を召喚した!", "%^s magically summons Lords of Amber!"), m_name);
2924-
2925-
2926-
2927- for (k = 0; k < s_num_4; k++)
2928- {
2929- count += summon_specific(m_idx, y, x, rlev, SUMMON_AMBERITES, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE));
2930- }
2931- if (blind && count)
2932- {
2933- msg_print(_("不死の者が近くに現れるのが聞こえた。", "You hear immortal beings appear nearby."));
2934- }
2935- break;
2936- }
2937-
2938- /* RF6_S_UNIQUE */
2939- case 160+31:
2940- {
2941- bool uniques_are_summoned = FALSE;
2942- int non_unique_type = SUMMON_HI_UNDEAD;
2943-
2944- disturb(1, 1);
2945-
2946- if (blind)
2947- msg_format(_("%^sが何かをつぶやいた。", "%^s mumbles."), m_name);
2948- else
2949- msg_format(_("%^sが魔法で特別な強敵を召喚した!", "%^s magically summons special opponents!"), m_name);
2950-
2951- for (k = 0; k < s_num_4; k++)
2952- {
2953- count += summon_specific(m_idx, y, x, rlev, SUMMON_UNIQUE, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE));
2954- }
2955-
2956- if (count) uniques_are_summoned = TRUE;
2957-
2958- if ((m_ptr->sub_align & (SUB_ALIGN_GOOD | SUB_ALIGN_EVIL)) == (SUB_ALIGN_GOOD | SUB_ALIGN_EVIL))
2959- non_unique_type = 0;
2960- else if (m_ptr->sub_align & SUB_ALIGN_GOOD)
2961- non_unique_type = SUMMON_ANGEL;
2962-
2963- for (k = count; k < s_num_4; k++)
2964- {
2965- count += summon_specific(m_idx, y, x, rlev, non_unique_type, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE));
2966- }
2967-
2968- if (blind && count)
2969- {
2970- msg_format(_("多くの%sが間近に現れた音が聞こえる。", "You hear many %s appear nearby."),
2971- uniques_are_summoned ? _("力強いもの", "powerful things") : _("もの", "things"));
2972- }
2973- break;
2974- }
1915+ /* RF6_SPECIAL */
1916+ case 160 + 7:
1917+ dam = spell_RF6_SPECIAL(m_name, m_ptr, r_ptr, mode, blind, direct, y, x, m_idx);
1918+ if (dam < 0) return FALSE;
1919+ break;
1920+
1921+ case 160 + 8: spell_RF6_TELE_TO(m_name, m_ptr); break; /* RF6_TELE_TO */
1922+ case 160 + 9: spell_RF6_TELE_AWAY(m_name, m_idx); break; /* RF6_TELE_AWAY */
1923+ case 160 + 10: spell_RF6_TELE_LEVEL(blind, m_name, m_idx, rlev); break; /* RF6_TELE_LEVEL */
1924+ case 160 + 11: spell_RF6_PSY_SPEAR(blind, m_name, r_ptr, rlev, m_idx, learnable); break; /* RF6_PSY_SPEAR */
1925+ case 160 + 12: spell_RF6_DARKNESS(blind, m_name, can_use_lite_area); break; /* RF6_DARKNESS */
1926+ case 160 + 13: spell_RF6_TRAPS(blind, m_name, y, x); break; /* RF6_TRAPS */
1927+ case 160 + 14: spell_RF6_FORGET(m_name, rlev); break; /* RF6_FORGET */
1928+ case 160 + 15: spell_RF6_RAISE_DEAD(blind, m_name, m_idx, m_ptr); break; /* RF6_RAISE_DEAD */
1929+ case 160 + 16: spell_RF6_S_KIN(blind, m_name, m_ptr, r_ptr, m_idx, y, x, rlev, mode); break; /* RF6_S_KIN */
1930+ case 160 + 17: spell_RF6_S_CYBER(blind, m_name, m_idx, y, x); break; /* RF6_S_CYBER */
1931+ case 160 + 18: spell_RF6_S_MONSTER(blind, m_name, m_idx, y, x, rlev); break; /* RF6_S_MONSTER */
1932+ case 160 + 19: spell_RF6_S_MONSTERS(blind, m_name, m_idx, y, x, rlev, s_num_6); break; /* RF6_S_MONSTER */
1933+ case 160 + 20: spell_RF6_S_ANT(blind, m_name, m_idx, y, x, rlev, s_num_6); break; /* RF6_S_ANT */
1934+ case 160 + 21: spell_RF6_S_SPIDER(blind, m_name, m_idx, y, x, rlev, s_num_6); break; /* RF6_S_SPIDER */
1935+ case 160 + 22: spell_RF6_S_HOUND(blind, m_name, m_idx, y, x, rlev, s_num_4); break; /* RF6_S_HOUND */
1936+ case 160 + 23: spell_RF6_S_HYDRA(blind, m_name, m_idx, y, x, rlev, s_num_4); break; /* RF6_S_HYDRA */
1937+ case 160 + 24: spell_RF6_S_ANGEL(blind, m_name, r_ptr, m_idx, y, x, rlev); break; /* RF6_S_ANGEL */
1938+ case 160 + 25: spell_RF6_S_DEMON(blind, m_name, m_idx, y, x, rlev); break; /* RF6_S_DEMON */
1939+ case 160 + 26: spell_RF6_S_UNDEAD(blind, m_name, m_idx, y, x, rlev); break; /* RF6_S_UNDEAD */
1940+ case 160 + 27: spell_RF6_S_DRAGON(blind, m_name, m_idx, y, x, rlev); break; /* RF6_S_DRAGON */
1941+ case 160 + 28: spell_RF6_S_HI_UNDEAD(m_ptr, blind, m_name, m_idx, y, x, rlev, s_num_6, mode); break; /* RF6_S_HI_UNDEAD */
1942+ case 160 + 29: spell_RF6_S_HI_DRAGON(blind, m_name, m_idx, y, x, rlev, s_num_4); break; /* RF6_S_HI_DRAGON */
1943+ case 160 + 30: spell_RF6_S_AMBERITES(blind, m_name, m_idx, y, x, rlev, s_num_4); break; /* RF6_S_AMBERITES */
1944+ case 160 + 31: spell_RF6_S_UNIQUE(blind, m_name, m_idx, m_ptr, y, x, rlev, s_num_4); break; /* RF6_S_UNIQUE */
29751945 }
29761946
29771947 if ((p_ptr->action == ACTION_LEARN) && thrown_spell > 175)
--- a/src/mspells4.c
+++ b/src/mspells4.c
@@ -3,7 +3,7 @@
33 void spell_RF4_SHRIEK(int m_idx, cptr m_name)
44 {
55 disturb(1, 1);
6- msg_format(_("%^sがかん高い金切り声をあげた。", "%^s makes a high pitched shriek."), m_name);
6+ msg_format(_("%^s????????????????B", "%^s makes a high pitched shriek."), m_name);
77 aggravate_monsters(m_idx);
88 }
99
@@ -12,51 +12,53 @@ void spell_RF4_DISPEL(bool blind, cptr m_name)
1212 disturb(1, 1);
1313
1414 if (blind)
15- msg_format(_("%^sが何かを力強くつぶやいた。", "%^s mumbles powerfully."), m_name);
15+ msg_format(_("%^s?????????????B", "%^s mumbles powerfully."), m_name);
1616 else
17- msg_format(_("%^sが魔力消去の呪文を念じた。", "%^s invokes a dispel magic."), m_name);
17+ msg_format(_("%^s???????????O???B", "%^s invokes a dispel magic."), m_name);
1818
1919 dispel_player();
2020 if (p_ptr->riding) dispel_monster_status(p_ptr->riding);
2121
2222 #ifdef JP
2323 if ((p_ptr->pseikaku == SEIKAKU_COMBAT) || (inventory[INVEN_BOW].name1 == ART_CRIMSON))
24- msg_print("やりやがったな!");
24+ msg_print("????????I");
2525 #endif
2626 learn_spell(MS_DISPEL);
2727 }
2828
29-void spell_RF4_ROCKET(bool blind, cptr m_name, monster_type* m_ptr, int y, int x, int m_idx, bool learnable)
29+int spell_RF4_ROCKET(bool blind, cptr m_name, monster_type* m_ptr, int y, int x, int m_idx, bool learnable)
3030 {
3131 int dam;
3232
3333 disturb(1, 1);
3434 if (blind)
35- msg_format(_("%^sが何かを射った。", "%^s shoots something."), m_name);
35+ msg_format(_("%^s????????B", "%^s shoots something."), m_name);
3636 else
37- msg_format(_("%^sがロケットを発射した。", "%^s fires a rocket."), m_name);
37+ msg_format(_("%^s????P?b?g??????B", "%^s fires a rocket."), m_name);
3838
3939 dam = ((m_ptr->hp / 4) > 800 ? 800 : (m_ptr->hp / 4));
4040 breath(y, x, m_idx, GF_ROCKET,
4141 dam, 2, FALSE, MS_ROCKET, learnable);
4242 update_smart_learn(m_idx, DRS_SHARD);
43+ return dam;
4344 }
4445
45-void spell_RF4_SHOOT(bool blind, cptr m_name, monster_race* r_ptr, int m_idx, bool learnable)
46+int spell_RF4_SHOOT(bool blind, cptr m_name, monster_race* r_ptr, int m_idx, bool learnable)
4647 {
4748 int dam;
4849 disturb(1, 1);
4950 if (blind)
50- msg_format(_("%^sが奇妙な音を発した。", "%^s makes a strange noise."), m_name);
51+ msg_format(_("%^s??????????B", "%^s makes a strange noise."), m_name);
5152 else
52- msg_format(_("%^sが矢を放った。", "%^s fires an arrow."), m_name);
53+ msg_format(_("%^s???????B", "%^s fires an arrow."), m_name);
5354
5455 dam = damroll(r_ptr->blow[0].d_dice, r_ptr->blow[0].d_side);
5556 bolt(m_idx, GF_ARROW, dam, MS_SHOOT, learnable);
5657 update_smart_learn(m_idx, DRS_REFLECT);
58+ return dam;
5759 }
5860
59-void spell_RF4_BREATH(int GF_TYPE, bool blind, cptr m_name, monster_type* m_ptr, int y, int x, int m_idx, bool learnable)
61+int spell_RF4_BREATH(int GF_TYPE, bool blind, cptr m_name, monster_type* m_ptr, int y, int x, int m_idx, bool learnable)
6062 {
6163 int dam, ms_type, drs_type;
6264 cptr type_s;
@@ -66,133 +68,133 @@ void spell_RF4_BREATH(int GF_TYPE, bool blind, cptr m_name, monster_type* m_ptr,
6668 {
6769 case GF_ACID:
6870 dam = ((m_ptr->hp / 3) > 1600 ? 1600 : (m_ptr->hp / 3));
69- type_s = _("酸", "acid");
71+ type_s = _("?", "acid");
7072 ms_type = MS_BR_ACID;
7173 drs_type = DRS_ACID;
7274 break;
7375 case GF_ELEC:
7476 dam = ((m_ptr->hp / 3) > 1600 ? 1600 : (m_ptr->hp / 3));
75- type_s = _("稲妻", "lightning");
77+ type_s = _("???, "lightning");
7678 ms_type = MS_BR_ELEC;
7779 drs_type = DRS_ELEC;
7880 break;
7981 case GF_FIRE:
8082 dam = ((m_ptr->hp / 3) > 1600 ? 1600 : (m_ptr->hp / 3));
81- type_s = _("火炎", "fire");
83+ type_s = _("???", "fire");
8284 ms_type = MS_BR_FIRE;
8385 drs_type = DRS_FIRE;
8486 break;
8587 case GF_COLD:
8688 dam = ((m_ptr->hp / 3) > 1600 ? 1600 : (m_ptr->hp / 3));
87- type_s = _("冷気", "frost");
89+ type_s = _("??C", "frost");
8890 ms_type = MS_BR_COLD;
8991 drs_type = DRS_COLD;
9092 break;
9193 case GF_POIS:
9294 dam = ((m_ptr->hp / 3) > 800 ? 800 : (m_ptr->hp / 3));
93- type_s = _("ガス", "gas");
95+ type_s = _("?K?X", "gas");
9496 ms_type = MS_BR_POIS;
9597 drs_type = DRS_POIS;
9698 break;
9799 case GF_NETHER:
98100 dam = ((m_ptr->hp / 6) > 550 ? 550 : (m_ptr->hp / 6));
99- type_s = _("地獄", "nether");
101+ type_s = _("?n??", "nether");
100102 ms_type = MS_BR_NETHER;
101103 drs_type = DRS_NETH;
102104 break;
103105 case GF_LITE:
104106 dam = ((m_ptr->hp / 6) > 400 ? 400 : (m_ptr->hp / 6));
105- type_s = _("閃光", "light");
107+ type_s = _("?M??, "light");
106108 ms_type = MS_BR_LITE;
107109 drs_type = DRS_LITE;
108110 break;
109111 case GF_DARK:
110112 dam = ((m_ptr->hp / 6) > 400 ? 400 : (m_ptr->hp / 6));
111- type_s = _("暗黒", "darkness");
113+ type_s = _("???", "darkness");
112114 ms_type = MS_BR_DARK;
113115 drs_type = DRS_DARK;
114116 break;
115117 case GF_CONFUSION:
116118 dam = ((m_ptr->hp / 6) > 450 ? 450 : (m_ptr->hp / 6));
117- type_s = _("混乱", "confusion");
119+ type_s = _("???", "confusion");
118120 ms_type = MS_BR_CONF;
119121 drs_type = DRS_CONF;
120122 break;
121123 case GF_SOUND:
122124 dam = ((m_ptr->hp / 6) > 450 ? 450 : (m_ptr->hp / 6));
123- type_s = _("轟音", "sound");
125+ type_s = _("????, "sound");
124126 ms_type = MS_BR_SOUND;
125127 drs_type = DRS_SOUND;
126128 break;
127129 case GF_CHAOS:
128130 dam = ((m_ptr->hp / 6) > 600 ? 600 : (m_ptr->hp / 6));
129- type_s = _("カオス", "chaos");
131+ type_s = _("?J?I?X", "chaos");
130132 ms_type = MS_BR_CHAOS;
131133 drs_type = DRS_CHAOS;
132134 break;
133135 case GF_DISENCHANT:
134136 dam = ((m_ptr->hp / 6) > 500 ? 500 : (m_ptr->hp / 6));
135- type_s = _("劣化", "disenchantment");
137+ type_s = _("???, "disenchantment");
136138 ms_type = MS_BR_DISEN;
137139 drs_type = DRS_DISEN;
138140 break;
139141 case GF_NEXUS:
140142 dam = ((m_ptr->hp / 3) > 250 ? 250 : (m_ptr->hp / 3));
141- type_s = _("因果混乱", "nexus");
143+ type_s = _("?????", "nexus");
142144 ms_type = MS_BR_NEXUS;
143145 drs_type = DRS_NEXUS;
144146 break;
145147 case GF_TIME:
146148 dam = ((m_ptr->hp / 3) > 150 ? 150 : (m_ptr->hp / 3));
147- type_s = _("時間逆転", "time");
149+ type_s = _("???t?]", "time");
148150 ms_type = MS_BR_TIME;
149151 smart_learn = FALSE;
150152 break;
151153 case GF_INERTIA:
152154 dam = ((m_ptr->hp / 6) > 200 ? 200 : (m_ptr->hp / 6));
153- type_s = _("遅鈍", "inertia");
155+ type_s = _("?x??, "inertia");
154156 ms_type = MS_BR_INERTIA;
155157 smart_learn = FALSE;
156158 break;
157159 case GF_GRAVITY:
158160 dam = ((m_ptr->hp / 3) > 200 ? 200 : (m_ptr->hp / 3));
159- type_s = _("重力", "gravity");
161+ type_s = _("??, "gravity");
160162 ms_type = MS_BR_GRAVITY;
161163 smart_learn = FALSE;
162164 break;
163165 case GF_SHARDS:
164166 dam = ((m_ptr->hp / 6) > 500 ? 500 : (m_ptr->hp / 6));
165- type_s = _("破片", "shards");
167+ type_s = _("?j??, "shards");
166168 ms_type = MS_BR_SHARDS;
167169 drs_type = DRS_SHARD;
168170 break;
169171 case GF_PLASMA:
170172 dam = ((m_ptr->hp / 6) > 150 ? 150 : (m_ptr->hp / 6));
171- type_s = _("プラズマ", "plasma");
173+ type_s = _("?v???Y?}", "plasma");
172174 ms_type = MS_BR_PLASMA;
173175 smart_learn = FALSE;
174176 break;
175177 case GF_FORCE:
176178 dam = ((m_ptr->hp / 6) > 200 ? 200 : (m_ptr->hp / 6));
177- type_s = _("フォース", "force");
179+ type_s = _("?t?H?[?X", "force");
178180 ms_type = MS_BR_FORCE;
179181 smart_learn = FALSE;
180182 break;
181183 case GF_MANA:
182184 dam = ((m_ptr->hp / 3) > 250 ? 250 : (m_ptr->hp / 3));
183- type_s = _("魔力", "mana");
185+ type_s = _("????, "mana");
184186 ms_type = MS_BR_MANA;
185187 smart_learn = FALSE;
186188 break;
187189 case GF_NUKE:
188190 dam = ((m_ptr->hp / 3) > 800 ? 800 : (m_ptr->hp / 3));
189- type_s = _("放射性廃棄物", "toxic waste");
191+ type_s = _("????p???, "toxic waste");
190192 ms_type = MS_BR_NUKE;
191193 drs_type = DRS_POIS;
192194 break;
193195 case GF_DISINTEGRATE:
194196 dam = ((m_ptr->hp / 6) > 150 ? 150 : (m_ptr->hp / 6));
195- type_s = _("分解", "disintegration");
197+ type_s = _("???, "disintegration");
196198 ms_type = MS_BR_DISI;
197199 smart_learn = FALSE;
198200 break;
@@ -203,66 +205,69 @@ void spell_RF4_BREATH(int GF_TYPE, bool blind, cptr m_name, monster_type* m_ptr,
203205 disturb(1, 1);
204206 if (m_ptr->r_idx == MON_JAIAN && GF_TYPE == GF_SOUND)
205207 {
206- msg_format(_("「ボォエ〜〜〜〜〜〜」", "'Booooeeeeee'"));
208+ msg_format(_("?u?{?H?G?`?`?`?`?`?`?v", "'Booooeeeeee'"));
207209 }
208210 else if (m_ptr->r_idx == MON_BOTEI && GF_TYPE == GF_SHARDS)
209211 {
210- msg_format(_("「ボ帝ビルカッター!!!」", "'Boty-Build cutter!!!'"));
212+ msg_format(_("?u?{??r???J?b?^?[?I?I?I?v", "'Boty-Build cutter!!!'"));
211213 }
212214 else if (blind)
213215 {
214- msg_format(_("%^sが何かのブレスを吐いた。", "%^s breathes."), m_name);
216+ msg_format(_("%^s?????u???X??f???B", "%^s breathes."), m_name);
215217 }
216218 else
217219 {
218- msg_format(_("%^sが%^sのブレスを吐いた。", "%^s breathes %^s."), m_name, type_s);
220+ msg_format(_("%^s??^s??u???X??f???B", "%^s breathes %^s."), m_name, type_s);
219221 }
220222
221223 breath(y, x, m_idx, GF_TYPE, dam, 0, TRUE, ms_type, learnable);
222224 if (smart_learn) update_smart_learn(m_idx, drs_type);
225+ return dam;
223226 }
224227
225-void spell_RF4_BA_CHAO(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable)
228+int spell_RF4_BA_CHAO(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable)
226229 {
227230 int dam;
228231 disturb(1, 1);
229232
230233 if (blind)
231- msg_format(_("%^sが恐ろしげにつぶやいた。", "%^s mumbles frighteningly."), m_name);
234+ msg_format(_("%^s????????????B", "%^s mumbles frighteningly."), m_name);
232235 else
233- msg_format(_("%^sが純ログルスを放った。", "%^s invokes a raw Logrus."), m_name);
236+ msg_format(_("%^s??????O???X?????B", "%^s invokes a raw Logrus."), m_name);
234237
235238 dam = ((r_ptr->flags2 & RF2_POWERFUL) ? (rlev * 3) : (rlev * 2)) + damroll(10, 10);
236239
237240 breath(y, x, m_idx, GF_CHAOS, dam, 4, FALSE, MS_BALL_CHAOS, learnable);
238241 update_smart_learn(m_idx, DRS_CHAOS);
242+ return dam;
239243 }
240244
241-void spell_RF4_BA_NUKE(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable)
245+int spell_RF4_BA_NUKE(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable)
242246 {
243247 int dam;
244248 disturb(1, 1);
245249
246250 if (blind)
247- msg_format(_("%^sが何かをつぶやいた。", "%^s mumbles."), m_name);
251+ msg_format(_("%^s??????????B", "%^s mumbles."), m_name);
248252 else
249- msg_format(_("%^sが放射能球を放った。", "%^s casts a ball of radiation."), m_name);
253+ msg_format(_("%^s????\???????B", "%^s casts a ball of radiation."), m_name);
250254
251255 dam = (rlev + damroll(10, 6)) * ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 1);
252256
253257 breath(y, x, m_idx, GF_NUKE, dam, 2, FALSE, MS_BALL_NUKE, learnable);
254258 update_smart_learn(m_idx, DRS_POIS);
259+ return dam;
255260 }
256261
257-void spell_RF5_BA_ACID(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable)
262+int spell_RF5_BA_ACID(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable)
258263 {
259264 int dam, rad;
260265 disturb(1, 1);
261266
262267 if (blind)
263- msg_format(_("%^sが何かをつぶやいた。", "%^s mumbles."), m_name);
268+ msg_format(_("%^s??????????B", "%^s mumbles."), m_name);
264269 else
265- msg_format(_("%^sがアシッド・ボールの呪文を唱えた。", "%^s casts an acid ball."), m_name);
270+ msg_format(_("%^s??A?V?b?h?E?{?[??????????B", "%^s casts an acid ball."), m_name);
266271
267272 if (r_ptr->flags2 & RF2_POWERFUL)
268273 {
@@ -276,17 +281,18 @@ void spell_RF5_BA_ACID(bool blind, cptr m_name, monster_race* r_ptr, int rlev, i
276281 }
277282 breath(y, x, m_idx, GF_ACID, dam, rad, FALSE, MS_BALL_ACID, learnable);
278283 update_smart_learn(m_idx, DRS_ACID);
284+ return dam;
279285 }
280286
281-void spell_RF5_BA_ELEC(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable)
287+int spell_RF5_BA_ELEC(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable)
282288 {
283289 int dam, rad;
284290 disturb(1, 1);
285291
286292 if (blind)
287- msg_format(_("%^sが何かをつぶやいた。", "%^s mumbles."), m_name);
293+ msg_format(_("%^s??????????B", "%^s mumbles."), m_name);
288294 else
289- msg_format(_("%^sがサンダー・・ボールの呪文を唱えた。", "%^s casts a lightning ball."), m_name);
295+ msg_format(_("%^s??T???_?[?E?E?{?[??????????B", "%^s casts a lightning ball."), m_name);
290296
291297 if (r_ptr->flags2 & RF2_POWERFUL)
292298 {
@@ -300,9 +306,10 @@ void spell_RF5_BA_ELEC(bool blind, cptr m_name, monster_race* r_ptr, int rlev, i
300306 }
301307 breath(y, x, m_idx, GF_ELEC, dam, rad, FALSE, MS_BALL_ELEC, learnable);
302308 update_smart_learn(m_idx, DRS_ELEC);
309+ return dam;
303310 }
304311
305-void spell_RF5_BA_FIRE(monster_type* m_ptr, bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable)
312+int spell_RF5_BA_FIRE(monster_type* m_ptr, bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable)
306313 {
307314 int dam, rad;
308315 disturb(1, 1);
@@ -310,16 +317,16 @@ void spell_RF5_BA_FIRE(monster_type* m_ptr, bool blind, cptr m_name, monster_rac
310317 if (m_ptr->r_idx == MON_ROLENTO)
311318 {
312319 if (blind)
313- msg_format(_("%sが何かを投げた。", "%^s throws something."), m_name);
320+ msg_format(_("%s?????????B", "%^s throws something."), m_name);
314321 else
315- msg_format(_("%sは手榴弾を投げた。", "%^s throws a hand grenade."), m_name);
322+ msg_format(_("%s????e??????B", "%^s throws a hand grenade."), m_name);
316323 }
317324 else
318325 {
319326 if (blind)
320- msg_format(_("%^sが何かをつぶやいた。", "%^s mumbles."), m_name);
327+ msg_format(_("%^s??????????B", "%^s mumbles."), m_name);
321328 else
322- msg_format(_("%^sがファイア・ボールの呪文を唱えた。", "%^s casts a fire ball."), m_name);
329+ msg_format(_("%^s??t?@?C?A?E?{?[??????????B", "%^s casts a fire ball."), m_name);
323330 }
324331
325332 if (r_ptr->flags2 & RF2_POWERFUL)
@@ -334,17 +341,18 @@ void spell_RF5_BA_FIRE(monster_type* m_ptr, bool blind, cptr m_name, monster_rac
334341 }
335342 breath(y, x, m_idx, GF_FIRE, dam, rad, FALSE, MS_BALL_FIRE, learnable);
336343 update_smart_learn(m_idx, DRS_FIRE);
344+ return dam;
337345 }
338346
339-void spell_RF5_BA_COLD(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable)
347+int spell_RF5_BA_COLD(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable)
340348 {
341349 int dam, rad;
342350 disturb(1, 1);
343351
344352 if (blind)
345- msg_format(_("%^sが何かをつぶやいた。", "%^s mumbles."), m_name);
353+ msg_format(_("%^s??????????B", "%^s mumbles."), m_name);
346354 else
347- msg_format(_("%^sがアイス・ボールの呪文を唱えた。", "%^s casts a frost ball."), m_name);
355+ msg_format(_("%^s??A?C?X?E?{?[??????????B", "%^s casts a frost ball."), m_name);
348356
349357 if (r_ptr->flags2 & RF2_POWERFUL)
350358 {
@@ -358,82 +366,88 @@ void spell_RF5_BA_COLD(bool blind, cptr m_name, monster_race* r_ptr, int rlev, i
358366 }
359367 breath(y, x, m_idx, GF_COLD, dam, rad, FALSE, MS_BALL_COLD, learnable);
360368 update_smart_learn(m_idx, DRS_COLD);
369+ return dam;
361370 }
362371
363-void spell_RF5_BA_POIS(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable)
372+int spell_RF5_BA_POIS(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable)
364373 {
365374 int dam;
366375 disturb(1, 1);
367376
368377 if (blind)
369- msg_format(_("%^sが何かをつぶやいた。", "%^s mumbles."), m_name);
378+ msg_format(_("%^s??????????B", "%^s mumbles."), m_name);
370379 else
371- msg_format(_("%^sが悪臭雲の呪文を唱えた。", "%^s casts a stinking cloud."), m_name);
380+ msg_format(_("%^s???L?_????????B", "%^s casts a stinking cloud."), m_name);
372381
373382 dam = damroll(12, 2) * ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 1);
374383 breath(y, x, m_idx, GF_POIS, dam, 2, FALSE, MS_BALL_POIS, learnable);
375384 update_smart_learn(m_idx, DRS_POIS);
385+ return dam;
376386 }
377387
378-void spell_RF5_BA_NETH(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable)
388+int spell_RF5_BA_NETH(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable)
379389 {
380390 int dam;
381391 disturb(1, 1);
382392 if (blind)
383- msg_format(_("%^sが何かをつぶやいた。", "%^s mumbles."), m_name);
393+ msg_format(_("%^s??????????B", "%^s mumbles."), m_name);
384394 else
385- msg_format(_("%^sが地獄球の呪文を唱えた。", "%^s casts a nether ball."), m_name);
395+ msg_format(_("%^s??n????????????B", "%^s casts a nether ball."), m_name);
386396
387397 dam = 50 + damroll(10, 10) + (rlev * ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 1));
388398 breath(y, x, m_idx, GF_NETHER, dam, 2, FALSE, MS_BALL_NETHER, learnable);
389399 update_smart_learn(m_idx, DRS_NETH);
400+ return dam;
390401 }
391402
392-void spell_RF5_BA_WATE(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable)
403+int spell_RF5_BA_WATE(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable)
393404 {
394405 int dam;
395406 disturb(1, 1);
396407
397408 if (blind)
398- msg_format(_("%^sが何かをつぶやいた。", "%^s mumbles."), m_name);
409+ msg_format(_("%^s??????????B", "%^s mumbles."), m_name);
399410 else
400- msg_format(_("%^sが流れるような身振りをした。", "%^s gestures fluidly."), m_name);
411+ msg_format(_("%^s????????g?U?????B", "%^s gestures fluidly."), m_name);
401412
402- msg_print(_("あなたは渦巻きに飲み込まれた。", "You are engulfed in a whirlpool."));
413+ msg_print(_("??????Q???????????B", "You are engulfed in a whirlpool."));
403414
404415 dam = ((r_ptr->flags2 & RF2_POWERFUL) ? randint1(rlev * 3) : randint1(rlev * 2)) + 50;
405416 breath(y, x, m_idx, GF_WATER, dam, 4, FALSE, MS_BALL_WATER, learnable);
417+ return dam;
406418 }
407419
408-void spell_RF5_BA_MANA(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable)
420+int spell_RF5_BA_MANA(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable)
409421 {
410422 int dam;
411423 disturb(1, 1);
412424 if (blind)
413- msg_format(_("%^sが何かを力強くつぶやいた。", "%^s mumbles powerfully."), m_name);
425+ msg_format(_("%^s?????????????B", "%^s mumbles powerfully."), m_name);
414426 else
415- msg_format(_("%^sが魔力の嵐の呪文を念じた。", "%^s invokes a mana storm."), m_name);
427+ msg_format(_("%^s????????????O???B", "%^s invokes a mana storm."), m_name);
416428
417429 dam = (rlev * 4) + 50 + damroll(10, 10);
418430 breath(y, x, m_idx, GF_MANA, dam, 4, FALSE, MS_BALL_MANA, learnable);
431+ return dam;
419432 }
420433
421-void spell_RF5_BA_DARK(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable)
434+int spell_RF5_BA_DARK(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable)
422435 {
423436 int dam;
424437 disturb(1, 1);
425438
426439 if (blind)
427- msg_format(_("%^sが何かを力強くつぶやいた。", "%^s mumbles powerfully."), m_name);
440+ msg_format(_("%^s?????????????B", "%^s mumbles powerfully."), m_name);
428441 else
429- msg_format(_("%^sが暗黒の嵐の呪文を念じた。", "%^s invokes a darkness storm."), m_name);
442+ msg_format(_("%^s????????????O???B", "%^s invokes a darkness storm."), m_name);
430443
431444 dam = (rlev * 4) + 50 + damroll(10, 10);
432445 breath(y, x, m_idx, GF_DARK, dam, 4, FALSE, MS_BALL_DARK, learnable);
433446 update_smart_learn(m_idx, DRS_DARK);
447+ return dam;
434448 }
435449
436-void spell_RF5_DRAIN_MANA(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable)
450+int spell_RF5_DRAIN_MANA(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable)
437451 {
438452 int dam;
439453 disturb(1, 1);
@@ -441,257 +455,1282 @@ void spell_RF5_DRAIN_MANA(bool blind, cptr m_name, monster_race* r_ptr, int rlev
441455 dam = (randint1(rlev) / 2) + 1;
442456 breath(y, x, m_idx, GF_DRAIN_MANA, dam, 0, FALSE, MS_DRAIN_MANA, learnable);
443457 update_smart_learn(m_idx, DRS_MANA);
458+ return dam;
444459 }
445460
446-void spell_RF5_MIND_BLAST(bool seen, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable)
461+int spell_RF5_MIND_BLAST(bool seen, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable)
447462 {
448463 int dam;
449464 disturb(1, 1);
450465 if (!seen)
451- msg_print(_("何かがあなたの精神に念を放っているようだ。", "You feel something focusing on your mind."));
466+ msg_print(_("??????????_??O??????????B", "You feel something focusing on your mind."));
452467 else
453- msg_format(_("%^sがあなたの瞳をじっとにらんでいる。", "%^s gazes deep into your eyes."), m_name);
468+ msg_format(_("%^s??????????????????B", "%^s gazes deep into your eyes."), m_name);
454469
455470 dam = damroll(7, 7);
456471 breath(y, x, m_idx, GF_MIND_BLAST, dam, 0, FALSE, MS_MIND_BLAST, learnable);
472+ return dam;
457473 }
458474
459-void spell_RF5_BRAIN_SMASH(bool seen, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable)
475+int spell_RF5_BRAIN_SMASH(bool seen, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable)
460476 {
461477 int dam;
462478 disturb(1, 1);
463479 if (!seen)
464- msg_print(_("何かがあなたの精神に念を放っているようだ。", "You feel something focusing on your mind."));
480+ msg_print(_("??????????_??O??????????B", "You feel something focusing on your mind."));
465481 else
466- msg_format(_("%^sがあなたの瞳をじっと見ている。", "%^s looks deep into your eyes."), m_name);
482+ msg_format(_("%^s????????????????B", "%^s looks deep into your eyes."), m_name);
467483
468484 dam = damroll(12, 12);
485+ breath(y, x, m_idx, GF_BRAIN_SMASH, dam, 0, FALSE, MS_BRAIN_SMASH, learnable);
486+ return dam;
469487 }
470488
471-void spell_RF5_CAUSE_1(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable)
489+int spell_RF5_CAUSE_1(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable)
472490 {
473491 int dam;
474492 disturb(1, 1);
475493
476494 if (blind)
477- msg_format(_("%^sが何かをつぶやいた。", "%^s mumbles."), m_name);
495+ msg_format(_("%^s??????????B", "%^s mumbles."), m_name);
478496 else
479- msg_format(_("%^sがあなたを指さして呪った。", "%^s points at you and curses."), m_name);
497+ msg_format(_("%^s???????w???????B", "%^s points at you and curses."), m_name);
480498
481499 dam = damroll(3, 8);
482500 breath(y, x, m_idx, GF_CAUSE_1, dam, 0, FALSE, MS_CAUSE_1, learnable);
501+ return dam;
483502 }
484503
485-void spell_RF5_CAUSE_2(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable)
504+int spell_RF5_CAUSE_2(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable)
486505 {
487506 int dam;
488507 disturb(1, 1);
489508
490509 if (blind)
491- msg_format(_("%^sが何かをつぶやいた。", "%^s mumbles."), m_name);
510+ msg_format(_("%^s??????????B", "%^s mumbles."), m_name);
492511 else
493- msg_format(_("%^sがあなたを指さして恐ろしげに呪った。", "%^s points at you and curses horribly."), m_name);
512+ msg_format(_("%^s???????w????????????B", "%^s points at you and curses horribly."), m_name);
494513
495514 dam = damroll(8, 8);
496515 breath(y, x, m_idx, GF_CAUSE_2, dam, 0, FALSE, MS_CAUSE_2, learnable);
516+ return dam;
497517 }
498518
499-void spell_RF5_CAUSE_3(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable)
519+int spell_RF5_CAUSE_3(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable)
500520 {
501521 int dam;
502522 disturb(1, 1);
503523
504524 if (blind)
505- msg_format(_("%^sが何かを大声で叫んだ。", "%^s mumbles loudly."), m_name);
525+ msg_format(_("%^s???????????B", "%^s mumbles loudly."), m_name);
506526 else
507- msg_format(_("%^sがあなたを指さして恐ろしげに呪文を唱えた!", "%^s points at you, incanting terribly!"), m_name);
527+ msg_format(_("%^s???????w???????????????I", "%^s points at you, incanting terribly!"), m_name);
508528
509529 dam = damroll(10, 15);
510530 breath(y, x, m_idx, GF_CAUSE_3, dam, 0, FALSE, MS_CAUSE_3, learnable);
531+ return dam;
511532 }
512533
513-void spell_RF5_CAUSE_4(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable)
534+int spell_RF5_CAUSE_4(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable)
514535 {
515536 int dam;
516537 disturb(1, 1);
517538
518539 if (blind)
519- msg_format(_("%^sが「お前は既に死んでいる」と叫んだ。", "%^s screams the word 'DIE!'"), m_name);
540+ msg_format(_("%^s??u??O??????????v?????B", "%^s screams the word 'DIE!'"), m_name);
520541 else
521- msg_format(_("%^sがあなたの秘孔を突いて「お前は既に死んでいる」と叫んだ。",
542+ msg_format(_("%^s????????E?????u??O??????????v?????B",
522543 "%^s points at you, screaming the word DIE!"), m_name);
523544
524545 dam = damroll(15, 15);
525546 breath(y, x, m_idx, GF_CAUSE_4, dam, 0, FALSE, MS_CAUSE_4, learnable);
547+ return dam;
526548 }
527549
528-void spell_RF5_BO_ACID(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable)
550+int spell_RF5_BO_ACID(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable)
529551 {
530552 int dam;
531553 disturb(1, 1);
532554
533555 if (blind)
534- msg_format(_("%^sが何かをつぶやいた。", "%^s mumbles."), m_name);
556+ msg_format(_("%^s??????????B", "%^s mumbles."), m_name);
535557 else
536- msg_format(_("%^sがアシッド・ボルトの呪文を唱えた。", "%^s casts a acid bolt."), m_name);
558+ msg_format(_("%^s??A?V?b?h?E?{???g????????B", "%^s casts a acid bolt."), m_name);
537559
538560 dam = (damroll(7, 8) + (rlev / 3)) * ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 1);
539561 bolt(m_idx, GF_ACID, dam, MS_BOLT_ACID, learnable);
540562 update_smart_learn(m_idx, DRS_ACID);
541563 update_smart_learn(m_idx, DRS_REFLECT);
564+ return dam;
542565 }
543566
544-void spell_RF5_BO_ELEC(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable)
567+int spell_RF5_BO_ELEC(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable)
545568 {
546569 int dam;
547570 disturb(1, 1);
548571
549572 if (blind)
550- msg_format(_("%^sが何かをつぶやいた。", "%^s mumbles."), m_name);
573+ msg_format(_("%^s??????????B", "%^s mumbles."), m_name);
551574 else
552- msg_format(_("%^sがサンダー・ボルトの呪文を唱えた。", "%^s casts a lightning bolt."), m_name);
575+ msg_format(_("%^s??T???_?[?E?{???g????????B", "%^s casts a lightning bolt."), m_name);
553576
554577 dam = (damroll(4, 8) + (rlev / 3)) * ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 1);
555578 bolt(m_idx, GF_ELEC, dam, MS_BOLT_ELEC, learnable);
556579 update_smart_learn(m_idx, DRS_ELEC);
557580 update_smart_learn(m_idx, DRS_REFLECT);
581+ return dam;
558582 }
559583
560-void spell_RF5_BO_FIRE(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable)
584+int spell_RF5_BO_FIRE(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable)
561585 {
562586 int dam;
563587 disturb(1, 1);
564588
565589 if (blind)
566- msg_format(_("%^sが何かをつぶやいた。", "%^s mumbles."), m_name);
590+ msg_format(_("%^s??????????B", "%^s mumbles."), m_name);
567591 else
568- msg_format(_("%^sがファイア・ボルトの呪文を唱えた。", "%^s casts a fire bolt."), m_name);
592+ msg_format(_("%^s??t?@?C?A?E?{???g????????B", "%^s casts a fire bolt."), m_name);
569593
570594 dam = (damroll(9, 8) + (rlev / 3)) * ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 1);
571595 bolt(m_idx, GF_FIRE, dam, MS_BOLT_FIRE, learnable);
572596 update_smart_learn(m_idx, DRS_FIRE);
573597 update_smart_learn(m_idx, DRS_REFLECT);
598+ return dam;
574599 }
575600
576-void spell_RF5_BO_COLD(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable)
601+int spell_RF5_BO_COLD(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable)
577602 {
578603 int dam;
579604 disturb(1, 1);
580605
581606 if (blind)
582- msg_format(_("%^sが何かをつぶやいた。", "%^s mumbles."), m_name);
607+ msg_format(_("%^s??????????B", "%^s mumbles."), m_name);
583608 else
584- msg_format(_("%^sがアイス・ボルトの呪文を唱えた。", "%^s casts a frost bolt."), m_name);
609+ msg_format(_("%^s??A?C?X?E?{???g????????B", "%^s casts a frost bolt."), m_name);
585610
586611 dam = (damroll(6, 8) + (rlev / 3)) * ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 1);
587612 bolt(m_idx, GF_COLD, dam, MS_BOLT_COLD, learnable);
588613 update_smart_learn(m_idx, DRS_COLD);
589614 update_smart_learn(m_idx, DRS_REFLECT);
615+ return dam;
590616 }
591617
592618
593-void spell_RF5_BA_LITE(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable)
619+int spell_RF5_BA_LITE(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable)
594620 {
595621 int dam;
596622 disturb(1, 1);
597623
598624 if (blind)
599- msg_format(_("%^sが何かを力強くつぶやいた。", "%^s mumbles powerfully."), m_name);
625+ msg_format(_("%^s?????????????B", "%^s mumbles powerfully."), m_name);
600626 else
601- msg_format(_("%^sがスターバーストの呪文を念じた。", "%^s invokes a starburst."), m_name);
627+ msg_format(_("%^s??X?^?[?o?[?X?g?????O???B", "%^s invokes a starburst."), m_name);
602628
603629 dam = (rlev * 4) + 50 + damroll(10, 10);
604630 breath(y, x, m_idx, GF_LITE, dam, 4, FALSE, MS_STARBURST, learnable);
605631 update_smart_learn(m_idx, DRS_LITE);
632+ return dam;
606633 }
607634
608635
609-void spell_RF5_BO_NETH(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable)
636+int spell_RF5_BO_NETH(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable)
610637 {
611638 int dam;
612639 disturb(1, 1);
613640
614641 if (blind)
615- msg_format(_("%^sが何かをつぶやいた。", "%^s mumbles."), m_name);
642+ msg_format(_("%^s??????????B", "%^s mumbles."), m_name);
616643 else
617- msg_format(_("%^sが地獄の矢の呪文を唱えた。", "%^s casts a nether bolt."), m_name);
644+ msg_format(_("%^s??n????????????B", "%^s casts a nether bolt."), m_name);
618645
619646 dam = 30 + damroll(5, 5) + (rlev * 4) / ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 3);
620647 bolt(m_idx, GF_NETHER, dam, MS_BOLT_NETHER, learnable);
621648 update_smart_learn(m_idx, DRS_NETH);
622649 update_smart_learn(m_idx, DRS_REFLECT);
650+ return dam;
623651 }
624652
625-void spell_RF5_BO_WATE(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable)
653+int spell_RF5_BO_WATE(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable)
626654 {
627655 int dam;
628656 disturb(1, 1);
629657
630658 if (blind)
631- msg_format(_("%^sが何かをつぶやいた。", "%^s mumbles."), m_name);
659+ msg_format(_("%^s??????????B", "%^s mumbles."), m_name);
632660 else
633- msg_format(_("%^sがウォーター・ボルトの呪文を唱えた。", "%^s casts a water bolt."), m_name);
661+ msg_format(_("%^s??E?H?[?^?[?E?{???g????????B", "%^s casts a water bolt."), m_name);
634662
635663 dam = damroll(10, 10) + (rlev * 3 / ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 3));
636664 bolt(m_idx, GF_WATER, dam, MS_BOLT_WATER, learnable);
637665 update_smart_learn(m_idx, DRS_REFLECT);
666+ return dam;
638667 }
639668
640-void spell_RF5_BO_MANA(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable)
669+int spell_RF5_BO_MANA(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable)
641670 {
642671 int dam;
643672 disturb(1, 1);
644673 if (blind)
645- msg_format(_("%^sが何かをつぶやいた。", "%^s mumbles."), m_name);
674+ msg_format(_("%^s??????????B", "%^s mumbles."), m_name);
646675 else
647- msg_format(_("%^sが魔力の矢の呪文を唱えた。", "%^s casts a mana bolt."), m_name);
676+ msg_format(_("%^s??????????????B", "%^s casts a mana bolt."), m_name);
648677
649678 dam = randint1(rlev * 7 / 2) + 50;
650679 bolt(m_idx, GF_MANA, dam, MS_BOLT_MANA, learnable);
651680 update_smart_learn(m_idx, DRS_REFLECT);
681+ return dam;
652682 }
653683
654-void spell_RF5_BO_PLAS(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable)
684+int spell_RF5_BO_PLAS(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable)
655685 {
656686 int dam;
657687 disturb(1, 1);
658688 if (blind)
659- msg_format(_("%^sが何かをつぶやいた。", "%^s mumbles."), m_name);
689+ msg_format(_("%^s??????????B", "%^s mumbles."), m_name);
660690
661691 else
662- msg_format(_("%^sがプラズマ・ボルトの呪文を唱えた。", "%^s casts a plasma bolt."), m_name);
692+ msg_format(_("%^s??v???Y?}?E?{???g????????B", "%^s casts a plasma bolt."), m_name);
663693
664694 dam = 10 + damroll(8, 7) + (rlev * 3 / ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 3));
665695 bolt(m_idx, GF_PLASMA, dam, MS_BOLT_PLASMA, learnable);
666696 update_smart_learn(m_idx, DRS_REFLECT);
697+ return dam;
667698 }
668699
669-void spell_RF5_BO_ICEE(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable)
700+int spell_RF5_BO_ICEE(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable)
670701 {
671702 int dam;
672703 disturb(1, 1);
673704 if (blind)
674- msg_format(_("%^sが何かをつぶやいた。", "%^s mumbles."), m_name);
705+ msg_format(_("%^s??????????B", "%^s mumbles."), m_name);
675706 else
676- msg_format(_("%^sが極寒の矢の呪文を唱えた。", "%^s casts an ice bolt."), m_name);
707+ msg_format(_("%^s?????????????B", "%^s casts an ice bolt."), m_name);
677708
678709 dam = damroll(6, 6) + (rlev * 3 / ((r_ptr->flags2 & RF2_POWERFUL) ? 2 : 3));
679710 bolt(m_idx, GF_ICE, dam, MS_BOLT_ICE, learnable);
680711 update_smart_learn(m_idx, DRS_COLD);
681712 update_smart_learn(m_idx, DRS_REFLECT);
713+ return dam;
682714 }
683715
684716
685-void spell_RF5_MISSILE(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable)
717+int spell_RF5_MISSILE(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx, bool learnable)
686718 {
687719 int dam;
688720 disturb(1, 1);
689721 if (blind)
690- msg_format(_("%^sが何かをつぶやいた。", "%^s mumbles."), m_name);
722+ msg_format(_("%^s??????????B", "%^s mumbles."), m_name);
691723 else
692- msg_format(_("%^sがマジック・ミサイルの呪文を唱えた。", "%^s casts a magic missile."), m_name);
724+ msg_format(_("%^s??}?W?b?N?E?~?T?C??????????B", "%^s casts a magic missile."), m_name);
693725
694726 dam = damroll(2, 6) + (rlev / 3);
695727 bolt(m_idx, GF_MISSILE, dam, MS_MAGIC_MISSILE, learnable);
696728 update_smart_learn(m_idx, DRS_REFLECT);
697-}
\ No newline at end of file
729+ return dam;
730+}
731+
732+void spell_RF5_SCARE(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx)
733+{
734+ disturb(1, 1);
735+
736+ if (blind)
737+ msg_format(_("%^s??????????A????????????B", "%^s mumbles, and you hear scary noises."), m_name);
738+ else
739+ msg_format(_("%^s????????o????o???B", "%^s casts a fearful illusion."), m_name);
740+
741+ if (p_ptr->resist_fear)
742+ {
743+ msg_print(_("?????|??N???????B", "You refuse to be frightened."));
744+ }
745+ else if (randint0(100 + rlev / 2) < p_ptr->skill_sav)
746+ {
747+ msg_print(_("?????|??N???????B", "You refuse to be frightened."));
748+ }
749+ else
750+ {
751+ (void)set_afraid(p_ptr->afraid + randint0(4) + 4);
752+ }
753+ learn_spell(MS_SCARE);
754+ update_smart_learn(m_idx, DRS_FEAR);
755+}
756+
757+void spell_RF5_BLIND(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx)
758+{
759+ disturb(1, 1);
760+
761+ if (blind)
762+ msg_format(_("%^s??????????B", "%^s mumbles."), m_name);
763+ else
764+ msg_format(_("%^s????????????????????I",
765+ "%^s casts a spell, burning your eyes!"), m_name);
766+
767+ if (p_ptr->resist_blind)
768+ {
769+ msg_print(_("???????????I", "You are unaffected!"));
770+ }
771+ else if (randint0(100 + rlev / 2) < p_ptr->skill_sav)
772+ {
773+ msg_print(_("????????????I", "You resist the effects!"));
774+ }
775+ else
776+ {
777+ (void)set_blind(12 + randint0(4));
778+ }
779+ learn_spell(MS_BLIND);
780+ update_smart_learn(m_idx, DRS_BLIND);
781+}
782+
783+void spell_RF5_CONF(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx)
784+{
785+ disturb(1, 1);
786+
787+ if (blind)
788+ msg_format(_("%^s??????????A???Y???????B",
789+ "%^s mumbles, and you hear puzzling noises."), m_name);
790+ else
791+ msg_format(_("%^s??U?f?I???o????o???B",
792+ "%^s creates a mesmerising illusion."), m_name);
793+
794+ if (p_ptr->resist_conf)
795+ {
796+ msg_print(_("?????o???????????B", "You disbelieve the feeble spell."));
797+ }
798+ else if (randint0(100 + rlev / 2) < p_ptr->skill_sav)
799+ {
800+ msg_print(_("?????o???????????B", "You disbelieve the feeble spell."));
801+ }
802+ else
803+ {
804+ (void)set_confused(p_ptr->confused + randint0(4) + 4);
805+ }
806+ learn_spell(MS_CONF);
807+ update_smart_learn(m_idx, DRS_CONF);
808+}
809+
810+void spell_RF5_SLOW(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx)
811+{
812+ disturb(1, 1);
813+
814+ msg_format(_("%^s??????????z????????I",
815+ "%^s drains power from your muscles!"), m_name);
816+
817+ if (p_ptr->free_act)
818+ {
819+ msg_print(_("???????????I", "You are unaffected!"));
820+ }
821+ else if (randint0(100 + rlev / 2) < p_ptr->skill_sav)
822+ {
823+ msg_print(_("????????????I", "You resist the effects!"));
824+ }
825+ else
826+ {
827+ (void)set_slow(p_ptr->slow + randint0(4) + 4, FALSE);
828+ }
829+ learn_spell(MS_SLOW);
830+ update_smart_learn(m_idx, DRS_FREE);
831+}
832+
833+void spell_RF5_HOLD(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int y, int x, int m_idx)
834+{
835+ disturb(1, 1);
836+
837+ if (blind)
838+ msg_format(_("%^s??????????B", "%^s mumbles."), m_name);
839+ else
840+ msg_format(_("%^s????????????????I", "%^s stares deep into your eyes!"), m_name);
841+
842+ if (p_ptr->free_act)
843+ {
844+ msg_print(_("???????????I", "You are unaffected!"));
845+ }
846+ else if (randint0(100 + rlev / 2) < p_ptr->skill_sav)
847+ {
848+ msg_format(_("????????????I", "You resist the effects!"));
849+ }
850+ else
851+ {
852+ (void)set_paralyzed(p_ptr->paralyzed + randint0(4) + 4);
853+ }
854+ learn_spell(MS_SLEEP);
855+ update_smart_learn(m_idx, DRS_FREE);
856+}
857+
858+void spell_RF6_HASTE(bool blind, cptr m_name, monster_type* m_ptr, int y, int x, int m_idx)
859+{
860+ disturb(1, 1);
861+ if (blind)
862+ {
863+ msg_format(_("%^s??????????B", "%^s mumbles."), m_name);
864+ }
865+ else
866+ {
867+ msg_format(_("%^s???????O??????B", "%^s concentrates on %s body."), m_name);
868+ }
869+
870+ /* Allow quick speed increases to base+10 */
871+ if (set_monster_fast(m_idx, MON_FAST(m_ptr) + 100))
872+ {
873+ msg_format(_("%^s??????????B", "%^s starts moving faster."), m_name);
874+ }
875+}
876+
877+int spell_RF6_HAND_DOOM(bool blind, cptr m_name, monster_type* m_ptr, int y, int x, int m_idx, bool learnable)
878+{
879+ int dam;
880+ disturb(1, 1);
881+ msg_format(_("%^s???j?????????I", "%^s invokes the Hand of Doom!"), m_name);
882+ dam = (((s32b)((40 + randint1(20)) * (p_ptr->chp))) / 100);
883+ breath(y, x, m_idx, GF_HAND_DOOM, dam, 0, FALSE, MS_HAND_DOOM, learnable);
884+ return dam;
885+}
886+
887+void spell_RF6_HEAL(bool blind, bool seen, cptr m_name, monster_type* m_ptr,int rlev, int m_idx)
888+{
889+ disturb(1, 1);
890+
891+ /* Message */
892+ if (blind)
893+ msg_format(_("%^s??????????B", "%^s mumbles."), m_name);
894+ else
895+ msg_format(_("%^s????????W?????B", "%^s concentrates on %s wounds."), m_name);
896+
897+ /* Heal some */
898+ m_ptr->hp += (rlev * 6);
899+
900+ /* Fully healed */
901+ if (m_ptr->hp >= m_ptr->maxhp)
902+ {
903+ /* Fully healed */
904+ m_ptr->hp = m_ptr->maxhp;
905+
906+ /* Message */
907+ if (seen)
908+ msg_format(_("%^s???S?????I", "%^s looks completely healed!"), m_name);
909+ else
910+ msg_format(_("%^s???S????????I", "%^s sounds completely healed!"), m_name);
911+ }
912+
913+ /* Partially healed */
914+ else
915+ {
916+ /* Message */
917+ if (seen)
918+ msg_format(_("%^s?????????????B", "%^s looks healthier."), m_name);
919+ else
920+ msg_format(_("%^s?????????????B", "%^s sounds healthier."), m_name);
921+ }
922+
923+ /* Redraw (later) if needed */
924+ if (p_ptr->health_who == m_idx) p_ptr->redraw |= (PR_HEALTH);
925+ if (p_ptr->riding == m_idx) p_ptr->redraw |= (PR_UHEALTH);
926+
927+ /* Cancel fear */
928+ if (MON_MONFEAR(m_ptr))
929+ {
930+ /* Cancel fear */
931+ (void)set_monster_monfear(m_idx, 0);
932+
933+ /* Message */
934+ msg_format(_("%^s??E?C???????B", "%^s recovers %s courage."), m_name);
935+ }
936+}
937+void spell_RF6_INVULNER(bool seen, cptr m_name, monster_type* m_ptr, int m_idx)
938+{
939+ disturb(1, 1);
940+
941+ /* Message */
942+ if (!seen)
943+ msg_format(_("%^s?????????????B", "%^s mumbles powerfully."), m_name);
944+ else
945+ msg_format(_("%s???????????????B", "%^s casts a Globe of Invulnerability."), m_name);
946+
947+ if (!MON_INVULNER(m_ptr)) (void)set_monster_invulner(m_idx, randint1(4) + 4, FALSE);
948+}
949+
950+void spell_RF6_BLINK(cptr m_name, int m_idx)
951+{
952+ disturb(1, 1);
953+ if (teleport_barrier(m_idx))
954+ {
955+ msg_format(_("???@??o???A??^s??e???|?[?g???????B",
956+ "Magic barrier obstructs teleporting of %^s."), m_name);
957+ }
958+ else
959+ {
960+ msg_format(_("%^s??u??????B", "%^s blinks away."), m_name);
961+ teleport_away(m_idx, 10, 0L);
962+ p_ptr->update |= (PU_MONSTERS);
963+ }
964+}
965+
966+void spell_RF6_TPORT(cptr m_name, int m_idx)
967+{
968+ disturb(1, 1);
969+ if (teleport_barrier(m_idx))
970+ {
971+ msg_format(_("???@??o???A??^s??e???|?[?g???????B",
972+ "Magic barrier obstructs teleporting of %^s."), m_name);
973+ }
974+ else
975+ {
976+ msg_format(_("%^s??e???|?[?g???B", "%^s teleports away."), m_name);
977+ teleport_away_followable(m_idx);
978+ }
979+}
980+
981+int spell_RF6_WORLD(cptr m_name, monster_type* m_ptr, int m_idx)
982+{
983+ int who = 0;
984+ disturb(1, 1);
985+ if (m_ptr->r_idx == MON_DIO) who = 1;
986+ else if (m_ptr->r_idx == MON_WONG) who = 3;
987+ if (!process_the_world(randint1(2) + 2, who, TRUE)) return (FALSE);
988+ return who;
989+}
990+
991+int spell_RF6_SPECIAL(cptr m_name, monster_type* m_ptr, monster_race* r_ptr, u32b mode, bool blind, bool direct, int y, int x, int m_idx)
992+{
993+ int k, dam, count=0;
994+
995+ disturb(1, 1);
996+ switch (m_ptr->r_idx)
997+ {
998+ case MON_OHMU:
999+ /* Moved to process_monster(), like multiplication */
1000+ return -1;
1001+ case MON_BANORLUPART:
1002+ {
1003+ int dummy_hp = (m_ptr->hp + 1) / 2;
1004+ int dummy_maxhp = m_ptr->maxhp / 2;
1005+ int dummy_y = m_ptr->fy;
1006+ int dummy_x = m_ptr->fx;
1007+
1008+ if (p_ptr->inside_arena || p_ptr->inside_battle || !summon_possible(m_ptr->fy, m_ptr->fx)) return -1;
1009+ delete_monster_idx(cave[m_ptr->fy][m_ptr->fx].m_idx);
1010+ summon_named_creature(0, dummy_y, dummy_x, MON_BANOR, mode);
1011+ m_list[hack_m_idx_ii].hp = dummy_hp;
1012+ m_list[hack_m_idx_ii].maxhp = dummy_maxhp;
1013+ summon_named_creature(0, dummy_y, dummy_x, MON_LUPART, mode);
1014+ m_list[hack_m_idx_ii].hp = dummy_hp;
1015+ m_list[hack_m_idx_ii].maxhp = dummy_maxhp;
1016+
1017+ msg_print(_("?w?o?[?m?[???E???p?[?g?x??????I","Banor=Rupart splits in two person!"));
1018+ break;
1019+ }
1020+
1021+ case MON_BANOR:
1022+ case MON_LUPART:
1023+ {
1024+ int dummy_hp = 0;
1025+ int dummy_maxhp = 0;
1026+ int dummy_y = m_ptr->fy;
1027+ int dummy_x = m_ptr->fx;
1028+
1029+ if (!r_info[MON_BANOR].cur_num || !r_info[MON_LUPART].cur_num) return (FALSE);
1030+ for (k = 1; k < m_max; k++)
1031+ {
1032+ if (m_list[k].r_idx == MON_BANOR || m_list[k].r_idx == MON_LUPART)
1033+ {
1034+ dummy_hp += m_list[k].hp;
1035+ dummy_maxhp += m_list[k].maxhp;
1036+ if (m_list[k].r_idx != m_ptr->r_idx)
1037+ {
1038+ dummy_y = m_list[k].fy;
1039+ dummy_x = m_list[k].fx;
1040+ }
1041+ delete_monster_idx(k);
1042+ }
1043+ }
1044+ summon_named_creature(0, dummy_y, dummy_x, MON_BANORLUPART, mode);
1045+ m_list[hack_m_idx_ii].hp = dummy_hp;
1046+ m_list[hack_m_idx_ii].maxhp = dummy_maxhp;
1047+
1048+ msg_print(_("?w?o?[?m?[???x??w???p?[?g?x???????I", "Banor and Rupart combine into one!"));
1049+ break;
1050+ }
1051+
1052+ case MON_ROLENTO:
1053+ if (blind)
1054+ msg_format(_("%^s???????????B", "%^s spreads something."), m_name);
1055+ else
1056+ msg_format(_("%^s????e???????B", "%^s throws some hand grenades."), m_name);
1057+
1058+ {
1059+ int num = 1 + randint1(3);
1060+
1061+ for (k = 0; k < num; k++)
1062+ {
1063+ count += summon_named_creature(m_idx, y, x, MON_SHURYUUDAN, mode);
1064+ }
1065+ }
1066+
1067+ if (blind && count)
1068+ msg_print(_("????????????????????B", "You hear many things are scattered nearby."));
1069+
1070+ break;
1071+
1072+ default:
1073+ if (r_ptr->d_char == 'B')
1074+ {
1075+ disturb(1, 1);
1076+ if (one_in_(3) || !direct)
1077+ {
1078+ msg_format(_("%^s???R??E??????", "%^s suddenly go out of your sight!"), m_name);
1079+ teleport_away(m_idx, 10, TELEPORT_NONMAGICAL);
1080+ p_ptr->update |= (PU_MONSTERS);
1081+ }
1082+ else
1083+ {
1084+ int get_damage = 0;
1085+ bool fear; /* dummy */
1086+
1087+ msg_format(_("%^s??????????????????????B",
1088+ "%^s holds you, and drops from the sky."), m_name);
1089+ dam = damroll(4, 8);
1090+ teleport_player_to(m_ptr->fy, m_ptr->fx, TELEPORT_NONMAGICAL | TELEPORT_PASSIVE);
1091+
1092+ sound(SOUND_FALL);
1093+
1094+ if (p_ptr->levitation)
1095+ {
1096+ msg_print(_("???????????n???B", "You float gently down to the ground."));
1097+ }
1098+ else
1099+ {
1100+ msg_print(_("??????n???@???????B", "You crashed into the ground."));
1101+ dam += damroll(6, 8);
1102+ }
1103+
1104+ /* Mega hack -- this special action deals damage to the player. Therefore the code of "eyeeye" is necessary.
1105+ -- henkma
1106+ */
1107+ get_damage = take_hit(DAMAGE_NOESCAPE, dam, m_name, -1);
1108+ if (p_ptr->tim_eyeeye && get_damage > 0 && !p_ptr->is_dead)
1109+ {
1110+#ifdef JP
1111+ msg_format("?U????sゥ?g???????I", m_name);
1112+#else
1113+ char m_name_self[80];
1114+
1115+ /* hisself */
1116+ monster_desc(m_name_self, m_ptr, MD_PRON_VISIBLE | MD_POSSESSIVE | MD_OBJECTIVE);
1117+
1118+ msg_format("The attack of %s has wounded %s!", m_name, m_name_self);
1119+#endif
1120+ project(0, 0, m_ptr->fy, m_ptr->fx, get_damage, GF_MISSILE, PROJECT_KILL, -1);
1121+ set_tim_eyeeye(p_ptr->tim_eyeeye - 5, TRUE);
1122+ }
1123+
1124+ if (p_ptr->riding) mon_take_hit_mon(p_ptr->riding, dam, &fear, extract_note_dies(real_r_ptr(&m_list[p_ptr->riding])), m_idx);
1125+ }
1126+ break;
1127+ }
1128+
1129+ /* Something is wrong */
1130+ else return -1;
1131+ }
1132+ return dam;
1133+}
1134+
1135+
1136+void spell_RF6_TELE_TO(cptr m_name, monster_type* m_ptr)
1137+{
1138+ disturb(1, 1);
1139+ msg_format(_("%^s????????????B", "%^s commands you to return."), m_name);
1140+
1141+ teleport_player_to(m_ptr->fy, m_ptr->fx, TELEPORT_PASSIVE);
1142+ learn_spell(MS_TELE_TO);
1143+}
1144+
1145+void spell_RF6_TELE_AWAY(cptr m_name, int m_idx)
1146+{
1147+ disturb(1, 1);
1148+
1149+ msg_format(_("%^s??e???|?[?g??????B", "%^s teleports you away."), m_name);
1150+ if ((p_ptr->pseikaku == SEIKAKU_COMBAT) || (inventory[INVEN_BOW].name1 == ART_CRIMSON))
1151+ msg_print(_("????`", ""));
1152+
1153+ learn_spell(MS_TELE_AWAY);
1154+ teleport_player_away(m_idx, 100);
1155+}
1156+
1157+void spell_RF6_TELE_LEVEL(bool blind, cptr m_name, int m_idx, int rlev)
1158+{
1159+ disturb(1, 1);
1160+
1161+ if (blind)
1162+ msg_format(_("%^s????????t???????B", "%^s mumbles strangely."), m_name);
1163+ else
1164+ msg_format(_("%^s?????????w????B", "%^s gestures at your feet."), m_name);
1165+
1166+ if (p_ptr->resist_nexus)
1167+ {
1168+ msg_print(_("???????????I", "You are unaffected!"));
1169+ }
1170+ else if (randint0(100 + rlev / 2) < p_ptr->skill_sav)
1171+ {
1172+ msg_print(_("????????????I", "You resist the effects!"));
1173+ }
1174+ else
1175+ {
1176+ teleport_level(0);
1177+ }
1178+ learn_spell(MS_TELE_LEVEL);
1179+ update_smart_learn(m_idx, DRS_NEXUS);
1180+}
1181+
1182+int spell_RF6_PSY_SPEAR(bool blind, cptr m_name, monster_race* r_ptr, int rlev, int m_idx, bool learnable)
1183+{
1184+ int dam;
1185+ disturb(1, 1);
1186+ if (blind)
1187+ msg_format(_("%^s??????????B", "%^s mumbles."), m_name);
1188+ else
1189+ msg_format(_("%^s??????????B", "%^s throw a Psycho-Spear."), m_name);
1190+
1191+ dam = (r_ptr->flags2 & RF2_POWERFUL) ? (randint1(rlev * 2) + 150) : (randint1(rlev * 3 / 2) + 100);
1192+ beam(m_idx, GF_PSY_SPEAR, dam, MS_PSY_SPEAR, learnable);
1193+ return dam;
1194+}
1195+
1196+void spell_RF6_DARKNESS(bool blind, cptr m_name, bool can_use_lite_area)
1197+{
1198+ disturb(1, 1);
1199+
1200+ if (blind)
1201+ msg_format(_("%^s??????????B", "%^s mumbles."), m_name);
1202+ else if (can_use_lite_area)
1203+ msg_format(_("%^s????????????B", "%^s cast a spell to light up."), m_name);
1204+ else
1205+ msg_format(_("%^s??????????U???B", "%^s gestures in shadow."), m_name);
1206+
1207+ if (can_use_lite_area) (void)lite_area(0, 3);
1208+ else
1209+ {
1210+ learn_spell(MS_DARKNESS);
1211+ (void)unlite_area(0, 3);
1212+ }
1213+}
1214+
1215+void spell_RF6_TRAPS(bool blind, cptr m_name, int y, int x)
1216+{
1217+ disturb(1, 1);
1218+
1219+ if (blind)
1220+ msg_format(_("%^s?????????????????B",
1221+ "%^s mumbles, and then cackles evilly."), m_name);
1222+ else
1223+ msg_format(_("%^s???????????????B",
1224+ "%^s casts a spell and cackles evilly."), m_name);
1225+
1226+ learn_spell(MS_MAKE_TRAP);
1227+ (void)trap_creation(y, x);
1228+}
1229+
1230+void spell_RF6_FORGET(cptr m_name, int rlev)
1231+{
1232+ disturb(1, 1);
1233+
1234+ msg_format(_("%^s???????L?????????????B",
1235+ "%^s tries to blank your mind."), m_name);
1236+
1237+ if (randint0(100 + rlev / 2) < p_ptr->skill_sav)
1238+ {
1239+ msg_print(_("????????????I", "You resist the effects!"));
1240+ }
1241+ else if (lose_all_info())
1242+ {
1243+ msg_print(_("?L???????????B", "Your memories fade away."));
1244+ }
1245+ learn_spell(MS_FORGET);
1246+}
1247+
1248+void spell_RF6_RAISE_DEAD(bool blind, cptr m_name, int m_idx, monster_type* m_ptr)
1249+{
1250+ disturb(1, 1);
1251+
1252+ if (blind)
1253+ msg_format(_("%^s??????????B", "%^s mumbles."), m_name);
1254+ else
1255+ msg_format(_("%^s???メ????????????B",
1256+ "%^s casts a spell to revive corpses."), m_name);
1257+
1258+ animate_dead(m_idx, m_ptr->fy, m_ptr->fx);
1259+}
1260+
1261+void spell_RF6_S_KIN(bool blind, cptr m_name, monster_type* m_ptr, monster_race* r_ptr, int m_idx, int y, int x, int rlev, u32b mode)
1262+{
1263+ int count = 0, k;
1264+ disturb(1, 1);
1265+ if (m_ptr->r_idx == MON_SERPENT || m_ptr->r_idx == MON_ZOMBI_SERPENT)
1266+ {
1267+ if (blind)
1268+ msg_format(_("%^s??????????B", "%^s mumbles."), m_name);
1269+ else
1270+ msg_format(_("%^s??_???W????????????B",
1271+ "%^s magically summons guardians of dungeons."), m_name);
1272+ }
1273+ else
1274+ {
1275+ if (blind)
1276+ msg_format(_("%^s??????????B", "%^s mumbles."), m_name);
1277+ else
1278+#ifdef JP
1279+ msg_format("%^s????@??s??????B",
1280+ m_name,
1281+ ((r_ptr->flags1) & RF1_UNIQUE ?
1282+ "??? : "????));
1283+#else
1284+ msg_format("%^s magically summons %s %s.",
1285+ m_name, m_poss,
1286+ ((r_ptr->flags1) & RF1_UNIQUE ?
1287+ "minions" : "kin"));
1288+#endif
1289+ }
1290+
1291+ switch (m_ptr->r_idx)
1292+ {
1293+ case MON_MENELDOR:
1294+ case MON_GWAIHIR:
1295+ case MON_THORONDOR:
1296+ {
1297+ int num = 4 + randint1(3);
1298+ for (k = 0; k < num; k++)
1299+ {
1300+ count += summon_specific(m_idx, y, x, rlev, SUMMON_EAGLES, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE));
1301+ }
1302+ }
1303+ break;
1304+
1305+ case MON_BULLGATES:
1306+ {
1307+ int num = 2 + randint1(3);
1308+ for (k = 0; k < num; k++)
1309+ {
1310+ count += summon_named_creature(m_idx, y, x, MON_IE, mode);
1311+ }
1312+ }
1313+ break;
1314+
1315+ case MON_SERPENT:
1316+ case MON_ZOMBI_SERPENT:
1317+ {
1318+ int num = 2 + randint1(3);
1319+
1320+ if (r_info[MON_JORMUNGAND].cur_num < r_info[MON_JORMUNGAND].max_num && one_in_(6))
1321+ {
1322+ msg_print(_("?n??????????o???I", "Water blew off from the ground!"));
1323+ fire_ball_hide(GF_WATER_FLOW, 0, 3, 8);
1324+ }
1325+
1326+ for (k = 0; k < num; k++)
1327+ {
1328+ count += summon_specific(m_idx, y, x, rlev, SUMMON_GUARDIANS, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE));
1329+ }
1330+ }
1331+ break;
1332+
1333+ case MON_CALDARM:
1334+ {
1335+ int num = randint1(3);
1336+ for (k = 0; k < num; k++)
1337+ {
1338+ count += summon_named_creature(m_idx, y, x, MON_LOCKE_CLONE, mode);
1339+ }
1340+ }
1341+ break;
1342+
1343+ case MON_LOUSY:
1344+ {
1345+ int num = 2 + randint1(3);
1346+ for (k = 0; k < num; k++)
1347+ {
1348+ count += summon_specific(m_idx, y, x, rlev, SUMMON_LOUSE, PM_ALLOW_GROUP);
1349+ }
1350+ }
1351+ break;
1352+
1353+ default:
1354+ summon_kin_type = r_ptr->d_char; /* Big hack */
1355+
1356+ for (k = 0; k < 4; k++)
1357+ {
1358+ count += summon_specific(m_idx, y, x, rlev, SUMMON_KIN, PM_ALLOW_GROUP);
1359+ }
1360+ break;
1361+ }
1362+
1363+ if (blind && count)
1364+ msg_print(_("?????????????????B", "You hear many things appear nearby."));
1365+}
1366+
1367+void spell_RF6_S_CYBER(bool blind, cptr m_name, int m_idx, int y, int x)
1368+{
1369+ int count = 0;
1370+ disturb(1, 1);
1371+
1372+ if (blind)
1373+ msg_format(_("%^s??????????B", "%^s mumbles."), m_name);
1374+ else
1375+ msg_format(_("%^s??T?C?o?[?f?[??????????I",
1376+ "%^s magically summons Cyberdemons!"), m_name);
1377+
1378+ count = summon_cyber(m_idx, y, x);
1379+
1380+ if (blind && count)
1381+ msg_print(_("?????????????B", "You hear heavy steps nearby."));
1382+}
1383+
1384+void spell_RF6_S_MONSTER(bool blind, cptr m_name, int m_idx, int y, int x, int rlev)
1385+{
1386+ int k, count = 0;
1387+ disturb(1, 1);
1388+
1389+ if (blind)
1390+ msg_format(_("%^s??????????B", "%^s mumbles."), m_name);
1391+ else
1392+ msg_format(_("%^s????@??????????I", "%^s magically summons help!"), m_name);
1393+
1394+ for (k = 0; k < 1; k++)
1395+ {
1396+ count += summon_specific(m_idx, y, x, rlev, 0, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE));
1397+ }
1398+ if (blind && count)
1399+ msg_print(_("??????????????B", "You hear something appear nearby."));
1400+}
1401+
1402+void spell_RF6_S_MONSTERS(bool blind, cptr m_name, int m_idx, int y, int x, int rlev, int s_num_6)
1403+{
1404+ int k, count = 0;
1405+ disturb(1, 1);
1406+
1407+ if (blind)
1408+ msg_format(_("%^s??????????B", "%^s mumbles."), m_name);
1409+ else
1410+ msg_format(_("%^s????@??????X?^?[??????I", "%^s magically summons monsters!"), m_name);
1411+
1412+ for (k = 0; k < s_num_6; k++)
1413+ {
1414+ count += summon_specific(m_idx, y, x, rlev, 0, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE));
1415+ }
1416+
1417+ if (blind && count)
1418+ msg_print(_("?????????????????B", "You hear many things appear nearby."));
1419+}
1420+
1421+void spell_RF6_S_ANT(bool blind, cptr m_name, int m_idx, int y, int x, int rlev, int s_num_6)
1422+{
1423+ int k, count = 0;
1424+ disturb(1, 1);
1425+
1426+ if (blind)
1427+ msg_format(_("%^s??????????B", "%^s mumbles."), m_name);
1428+ else
1429+ msg_format(_("%^s????@??A????????B", "%^s magically summons ants."), m_name);
1430+
1431+ for (k = 0; k < s_num_6; k++)
1432+ {
1433+ count += summon_specific(m_idx, y, x, rlev, SUMMON_ANT, PM_ALLOW_GROUP);
1434+ }
1435+
1436+ if (blind && count)
1437+ msg_print(_("?????????????????B", "You hear many things appear nearby."));
1438+}
1439+
1440+void spell_RF6_S_SPIDER(bool blind, cptr m_name, int m_idx, int y, int x, int rlev, int s_num_6)
1441+{
1442+ int k, count = 0;
1443+ disturb(1, 1);
1444+
1445+ if (blind)
1446+ msg_format(_("%^s??????????B", "%^s mumbles."), m_name);
1447+ else
1448+ msg_format(_("%^s????@??N????????B", "%^s magically summons spiders."), m_name);
1449+
1450+ for (k = 0; k < s_num_6; k++)
1451+ {
1452+ count += summon_specific(m_idx, y, x, rlev, SUMMON_SPIDER, PM_ALLOW_GROUP);
1453+ }
1454+
1455+ if (blind && count)
1456+ msg_print(_("?????????????????B", "You hear many things appear nearby."));
1457+}
1458+
1459+void spell_RF6_S_HOUND(bool blind, cptr m_name, int m_idx, int y, int x, int rlev, int s_num_4)
1460+{
1461+ int k, count = 0;
1462+ disturb(1, 1);
1463+
1464+ if (blind)
1465+ msg_format(_("%^s??????????B", "%^s mumbles."), m_name);
1466+ else
1467+ msg_format(_("%^s????@??n?E???h??????B", "%^s magically summons hounds."), m_name);
1468+
1469+ for (k = 0; k < s_num_4; k++)
1470+ {
1471+ count += summon_specific(m_idx, y, x, rlev, SUMMON_HOUND, PM_ALLOW_GROUP);
1472+ }
1473+
1474+ if (blind && count)
1475+ msg_print(_("?????????????????B", "You hear many things appear nearby."));
1476+}
1477+
1478+void spell_RF6_S_HYDRA(bool blind, cptr m_name, int m_idx, int y, int x, int rlev, int s_num_4)
1479+{
1480+ int k, count = 0;
1481+ disturb(1, 1);
1482+
1483+ if (blind)
1484+ msg_format(_("%^s??????????B", "%^s mumbles."), m_name);
1485+ else
1486+ msg_format(_("%^s????@??q?h????????B", "%^s magically summons hydras."), m_name);
1487+
1488+ for (k = 0; k < s_num_4; k++)
1489+ {
1490+ count += summon_specific(m_idx, y, x, rlev, SUMMON_HYDRA, PM_ALLOW_GROUP);
1491+ }
1492+ if (blind && count)
1493+ msg_print(_("?????????????????B", "You hear many things appear nearby."));
1494+}
1495+
1496+void spell_RF6_S_ANGEL(bool blind, cptr m_name, monster_race* r_ptr, int m_idx, int y, int x, int rlev)
1497+{
1498+ int k, count = 0;
1499+ int num = 1;
1500+
1501+ disturb(1, 1);
1502+
1503+ if (blind)
1504+ msg_format(_("%^s??????????B", "%^s mumbles."), m_name);
1505+ else
1506+ msg_format(_("%^s????@??V???????I", "%^s magically summons an angel!"), m_name);
1507+
1508+ if ((r_ptr->flags1 & RF1_UNIQUE) && !easy_band)
1509+ {
1510+ num += r_ptr->level / 40;
1511+ }
1512+
1513+ for (k = 0; k < num; k++)
1514+ {
1515+ count += summon_specific(m_idx, y, x, rlev, SUMMON_ANGEL, PM_ALLOW_GROUP);
1516+ }
1517+
1518+ if (count < 2)
1519+ {
1520+ if (blind && count)
1521+ msg_print(_("??????????????B", "You hear something appear nearby."));
1522+ }
1523+ else
1524+ {
1525+ if (blind)
1526+ msg_print(_("?????????????????B", "You hear many things appear nearby."));
1527+ }
1528+}
1529+
1530+void spell_RF6_S_DEMON(bool blind, cptr m_name, int m_idx, int y, int x, int rlev)
1531+{
1532+ int k, count = 0;
1533+ disturb(1, 1);
1534+
1535+ if (blind)
1536+ msg_format(_("%^s??????????B", "%^s mumbles."), m_name);
1537+ else
1538+ msg_format(_("%^s????@?????{????????????I",
1539+ "%^s magically summons a demon from the Courts of Chaos!"), m_name);
1540+
1541+ for (k = 0; k < 1; k++)
1542+ {
1543+ count += summon_specific(m_idx, y, x, rlev, SUMMON_DEMON, PM_ALLOW_GROUP);
1544+ }
1545+
1546+ if (blind && count)
1547+ msg_print(_("??????????????B", "You hear something appear nearby."));
1548+}
1549+
1550+void spell_RF6_S_UNDEAD(bool blind, cptr m_name, int m_idx, int y, int x, int rlev)
1551+{
1552+ int k, count = 0;
1553+ disturb(1, 1);
1554+
1555+ if (blind)
1556+ msg_format(_("%^s??????????B", "%^s mumbles."), m_name);
1557+ else
1558+ msg_format(_("%^s????@??A???f?b?h???G??????I",
1559+ "%^s magically summons an undead adversary!"), m_name);
1560+
1561+ for (k = 0; k < 1; k++)
1562+ {
1563+ count += summon_specific(m_idx, y, x, rlev, SUMMON_UNDEAD, PM_ALLOW_GROUP);
1564+ }
1565+
1566+ if (blind && count)
1567+ msg_print(_("??????????????B", "You hear something appear nearby."));
1568+}
1569+
1570+void spell_RF6_S_DRAGON(bool blind, cptr m_name, int m_idx, int y, int x, int rlev)
1571+{
1572+ int k, count = 0;
1573+ disturb(1, 1);
1574+
1575+ if (blind)
1576+ msg_format(_("%^s??????????B", "%^s mumbles."), m_name);
1577+ else
1578+ msg_format(_("%^s????@??h???S????????I", "%^s magically summons a dragon!"), m_name);
1579+
1580+ for (k = 0; k < 1; k++)
1581+ {
1582+ count += summon_specific(m_idx, y, x, rlev, SUMMON_DRAGON, PM_ALLOW_GROUP);
1583+ }
1584+ if (blind && count)
1585+ msg_print(_("??????????????B", "You hear something appear nearby."));
1586+}
1587+
1588+void spell_RF6_S_HI_UNDEAD(monster_type* m_ptr, bool blind, cptr m_name, int m_idx, int y, int x, int rlev, int s_num_6, u32b mode)
1589+{
1590+ int k, count = 0;
1591+ disturb(1, 1);
1592+
1593+ if (((m_ptr->r_idx == MON_MORGOTH) || (m_ptr->r_idx == MON_SAURON) || (m_ptr->r_idx == MON_ANGMAR)) && ((r_info[MON_NAZGUL].cur_num + 2) < r_info[MON_NAZGUL].max_num))
1594+ {
1595+ int cy = y;
1596+ int cx = x;
1597+
1598+ if (blind)
1599+ msg_format(_("%^s??????????B", "%^s mumbles."), m_name);
1600+ else
1601+ msg_format(_("%^s????@??H?S????????I", "%^s magically summons rangers of Nazgul!"), m_name);
1602+
1603+ msg_print(NULL);
1604+
1605+ for (k = 0; k < 30; k++)
1606+ {
1607+ if (!summon_possible(cy, cx) || !cave_empty_bold(cy, cx))
1608+ {
1609+ int j;
1610+ for (j = 100; j > 0; j--)
1611+ {
1612+ scatter(&cy, &cx, y, x, 2, 0);
1613+ if (cave_empty_bold(cy, cx)) break;
1614+ }
1615+ if (!j) break;
1616+ }
1617+ if (!cave_empty_bold(cy, cx)) continue;
1618+
1619+ if (summon_named_creature(m_idx, cy, cx, MON_NAZGUL, mode))
1620+ {
1621+ y = cy;
1622+ x = cx;
1623+ count++;
1624+ if (count == 1)
1625+ msg_format(_("?u?H?S???d???A?i?Y?O???E?u???b?N?I?v",
1626+ "A Nazgul says 'Nazgul-Rangers Number %d, Nazgul-Black!'"), count);
1627+ else
1628+ msg_format(_("?u????d???A?i?Y?O???E?u???b?N?I?v",
1629+ "Another one says 'Number %d, Nazgul-Black!'"), count);
1630+
1631+ msg_print(NULL);
1632+ }
1633+ }
1634+ msg_format(_("?u%d?l?????A?????O?????W???[?I?v",
1635+ "They say 'The %d meets! We are the Ring-Ranger!'."), count);
1636+ msg_print(NULL);
1637+ }
1638+ else
1639+ {
1640+ if (blind)
1641+ msg_format(_("%^s??????????B", "%^s mumbles."), m_name);
1642+ else
1643+ msg_format(_("%^s????@?????A???f?b?h??????I",
1644+ "%^s magically summons greater undead!"), m_name);
1645+
1646+ for (k = 0; k < s_num_6; k++)
1647+ {
1648+ count += summon_specific(m_idx, y, x, rlev, SUMMON_HI_UNDEAD, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE));
1649+ }
1650+ }
1651+ if (blind && count)
1652+ {
1653+ msg_print(_("???????????????????????B",
1654+ "You hear many creepy things appear nearby."));
1655+ }
1656+}
1657+
1658+
1659+void spell_RF6_S_HI_DRAGON(bool blind, cptr m_name, int m_idx, int y, int x, int rlev, int s_num_4)
1660+{
1661+ int k, count = 0;
1662+ disturb(1, 1);
1663+
1664+ if (blind)
1665+ msg_format(_("%^s??????????B", "%^s mumbles."), m_name);
1666+ else
1667+ msg_format(_("%^s????@????h???S????????I", "%^s magically summons ancient dragons!"), m_name);
1668+
1669+ for (k = 0; k < s_num_4; k++)
1670+ {
1671+ count += summon_specific(m_idx, y, x, rlev, SUMMON_HI_DRAGON, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE));
1672+ }
1673+ if (blind && count)
1674+ {
1675+ msg_print(_("??????????????????????B",
1676+ "You hear many powerful things appear nearby."));
1677+ }
1678+}
1679+
1680+void spell_RF6_S_AMBERITES(bool blind, cptr m_name, int m_idx, int y, int x, int rlev, int s_num_4)
1681+{
1682+ int k, count = 0;
1683+ disturb(1, 1);
1684+
1685+ if (blind)
1686+ msg_format(_("%^s??????????B", "%^s mumbles."), m_name);
1687+ else
1688+ msg_format(_("%^s??A???o?[?????????I", "%^s magically summons Lords of Amber!"), m_name);
1689+
1690+ for (k = 0; k < s_num_4; k++)
1691+ {
1692+ count += summon_specific(m_idx, y, x, rlev, SUMMON_AMBERITES, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE));
1693+ }
1694+ if (blind && count)
1695+ {
1696+ msg_print(_("?s?????????????????B", "You hear immortal beings appear nearby."));
1697+ }
1698+}
1699+
1700+void spell_RF6_S_UNIQUE(bool blind, cptr m_name, int m_idx, monster_type* m_ptr, int y, int x, int rlev, int s_num_4)
1701+{
1702+ int k, count = 0;
1703+ bool uniques_are_summoned = FALSE;
1704+ int non_unique_type = SUMMON_HI_UNDEAD;
1705+
1706+ disturb(1, 1);
1707+
1708+ if (blind)
1709+ msg_format(_("%^s??????????B", "%^s mumbles."), m_name);
1710+ else
1711+ msg_format(_("%^s????@??????G??????I", "%^s magically summons special opponents!"), m_name);
1712+
1713+ for (k = 0; k < s_num_4; k++)
1714+ {
1715+ count += summon_specific(m_idx, y, x, rlev, SUMMON_UNIQUE, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE));
1716+ }
1717+
1718+ if (count) uniques_are_summoned = TRUE;
1719+
1720+ if ((m_ptr->sub_align & (SUB_ALIGN_GOOD | SUB_ALIGN_EVIL)) == (SUB_ALIGN_GOOD | SUB_ALIGN_EVIL))
1721+ non_unique_type = 0;
1722+ else if (m_ptr->sub_align & SUB_ALIGN_GOOD)
1723+ non_unique_type = SUMMON_ANGEL;
1724+
1725+ for (k = count; k < s_num_4; k++)
1726+ {
1727+ count += summon_specific(m_idx, y, x, rlev, non_unique_type, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE));
1728+ }
1729+
1730+ if (blind && count)
1731+ {
1732+ msg_format(_("????s??????????????B", "You hear many %s appear nearby."),
1733+ uniques_are_summoned ? _("??????, "powerful things") : _("???, "things"));
1734+ }
1735+}
1736+
旧リポジトリブラウザで表示