OSDN Git Service

#37287 #37353 (2.2.0.89) 型の置換を継続中。 / Ongoing type replacement.
[hengband/hengband.git] / src / spells2.c
index 2a019b2..e0559f5 100644 (file)
@@ -1,21 +1,25 @@
-/* File: spells2.c */
-
-/*
+/*!
+ * @file spells2.c
+ * @brief 魔法効果の実装/ Spell code (part 2)
+ * @date 2014/07/15
+ * @author
+ * <pre>
  * Copyright (c) 1997 Ben Harrison, James E. Wilson, Robert A. Koeneke
- *
  * This software may be copied and distributed for educational, research,
  * and not for profit purposes provided that this copyright and statement
  * are included in all such copies.  Other copyrights may also apply.
+ * </pre>
  */
 
-/* Purpose: Spell code (part 2) */
-
 #include "angband.h"
 #include "grid.h"
 
-
-/*
- * self-knowledge... idea from nethack.  Useful for determining powers and
+/*!
+ * @brief 自己分析処理(Nethackからのアイデア) / self-knowledge... idea from nethack.
+ * @return なし
+ * @details
+ * <pre>
+ * Useful for determining powers and
  * resistences of items.  It saves the screen, clears it, then starts listing
  * attributes, a screenful at a time.  (There are a LOT of attributes to
  * list.  It will probably take 2 or 3 screens for a powerful character whose
@@ -26,6 +30,7 @@
  * See also "identify_fully()".
  *
  * XXX XXX XXX Use the "show_file()" method, perhaps.
+ * </pre>
  */
 void self_knowledge(void)
 {
@@ -59,12 +64,7 @@ void self_knowledge(void)
                (2 * p_ptr->hitdie +
                ((PY_MAX_LEVEL - 1+3) * (p_ptr->hitdie + 1))));
 
-#ifdef JP
-sprintf(Dummy, "¸½ºß¤ÎÂÎÎÏ¥é¥ó¥¯ : %d/100", percent);
-#else
-       sprintf(Dummy, "Your current Life Rating is %d/100.", percent);
-#endif
-
+       sprintf(Dummy, _("現在の体力ランク : %d/100", "Your current Life Rating is %d/100."), percent);
        strcpy(buf[0], Dummy);
        info[i++] = buf[0];
        info[i++] = "";
@@ -90,11 +90,7 @@ sprintf(Dummy, "
                        flgs[j] |= tflgs[j];
        }
 
-#ifdef JP
-       info[i++] = "ǽÎϤκÇÂçÃÍ";
-#else
-       info[i++] = "Limits of maximum stats";
-#endif
+       info[i++] = _("能力の最大値", "Limits of maximum stats");
 
        for (v_nr = 0; v_nr < 6; v_nr++)
        {
@@ -108,117 +104,57 @@ sprintf(Dummy, "
        }
        info[i++] = "";
 
-#ifdef JP
-       sprintf(Dummy, "¸½ºß¤Î°À­ : %s(%ld)", your_alignment(), p_ptr->align);
-#else
-       sprintf(Dummy, "Your alighnment : %s(%ld)", your_alignment(), p_ptr->align);
-#endif
+       sprintf(Dummy, _("現在の属性 : %s(%ld)", "Your alighnment : %s(%ld)"), your_alignment(), (long int)p_ptr->align);
        strcpy(buf[1], Dummy);
        info[i++] = buf[1];
        for (v_nr = 0; v_nr < 8; v_nr++)
        {
-               char v_name [20];
+               char vir_name [20];
                char vir_desc[80];
                int tester = p_ptr->virtues[v_nr];
        
-               strcpy(v_name, virtue[(p_ptr->vir_types[v_nr])-1]);
+               strcpy(vir_name, virtue[(p_ptr->vir_types[v_nr])-1]);
  
-#ifdef JP
-               sprintf(vir_desc, "¤ª¤Ã¤È¡£%s¤Î¾ðÊó¤Ê¤·¡£", v_name);
-#else
-               sprintf(vir_desc, "Oops. No info about %s.", v_name);
-#endif
+               sprintf(vir_desc, _("おっと。%sの情報なし。", "Oops. No info about %s."), vir_name);
                if (tester < -100)
-#ifdef JP
-                       sprintf(vir_desc, "[%s]¤ÎÂжˠ(%d)",
-#else
-                       sprintf(vir_desc, "You are the polar opposite of %s (%d).",
-#endif
-                               v_name, tester);
+                       sprintf(vir_desc, _("[%s]の対極 (%d)", "You are the polar opposite of %s (%d)."),
+                               vir_name, tester);
                else if (tester < -80)
-#ifdef JP
-                       sprintf(vir_desc, "[%s]¤ÎÂçŨ (%d)",
-#else
-                       sprintf(vir_desc, "You are an arch-enemy of %s (%d).",
-#endif
-                               v_name, tester);
+                       sprintf(vir_desc, _("[%s]の大敵 (%d)", "You are an arch-enemy of %s (%d)."),
+                               vir_name, tester);
                else if (tester < -60)
-#ifdef JP
-                       sprintf(vir_desc, "[%s]¤Î¶¯Å¨ (%d)",
-#else
-                       sprintf(vir_desc, "You are a bitter enemy of %s (%d).",
-#endif
-                               v_name, tester);
+                       sprintf(vir_desc, _("[%s]の強敵 (%d)", "You are a bitter enemy of %s (%d)."),
+                               vir_name, tester);
                else if (tester < -40)
-#ifdef JP
-                       sprintf(vir_desc, "[%s]¤ÎŨ (%d)",
-#else
-                       sprintf(vir_desc, "You are an enemy of %s (%d).",
-#endif
-                               v_name, tester);
+                       sprintf(vir_desc, _("[%s]の敵 (%d)", "You are an enemy of %s (%d)."),
+                               vir_name, tester);
                else if (tester < -20)
-#ifdef JP
-                       sprintf(vir_desc, "[%s]¤Îºá¼Ô (%d)",
-#else
-                       sprintf(vir_desc, "You have sinned against %s (%d).",
-#endif
-                               v_name, tester);
+                       sprintf(vir_desc, _("[%s]の罪者 (%d)", "You have sinned against %s (%d)."),
+                               vir_name, tester);
                else if (tester < 0)
-#ifdef JP
-                       sprintf(vir_desc, "[%s]¤ÎÌÂÆ»¼Ô (%d)",
-#else
-                       sprintf(vir_desc, "You have strayed from the path of %s (%d).",
-#endif
-                               v_name, tester);
-               else if (tester == 0)                   
-#ifdef JP
-                       sprintf(vir_desc, "[%s]¤ÎÃæΩ¼Ô (%d)",
-#else
-                       sprintf(vir_desc,"You are neutral to %s (%d).",
-#endif
-                               v_name, tester);
+                       sprintf(vir_desc, _("[%s]の迷道者 (%d)", "You have strayed from the path of %s (%d)."),
+                               vir_name, tester);
+               else if (tester == 0)
+                       sprintf(vir_desc, _("[%s]の中立者 (%d)", "You are neutral to %s (%d)."),
+                               vir_name, tester);
                else if (tester < 20)
-#ifdef JP
-                       sprintf(vir_desc, "[%s]¤Î¾®ÆÁ¼Ô (%d)",
-#else
-                       sprintf(vir_desc,"You are somewhat virtuous in %s (%d).",
-#endif
-                               v_name, tester);
+                       sprintf(vir_desc, _("[%s]の小徳者 (%d)", "You are somewhat virtuous in %s (%d)."),
+                               vir_name, tester);
                else if (tester < 40)
-#ifdef JP
-                       sprintf(vir_desc, "[%s]¤ÎÃæÆÁ¼Ô (%d)",
-#else
-                       sprintf(vir_desc,"You are virtuous in %s (%d).",
-#endif
-                               v_name, tester);
+                       sprintf(vir_desc, _("[%s]の中徳者 (%d)", "You are virtuous in %s (%d)."),
+                               vir_name, tester);
                else if (tester < 60)
-#ifdef JP
-                       sprintf(vir_desc, "[%s]¤Î¹âÆÁ¼Ô (%d)",
-#else
-                       sprintf(vir_desc,"You are very virtuous in %s (%d).",
-#endif
-                               v_name, tester);
+                       sprintf(vir_desc, _("[%s]の高徳者 (%d)", "You are very virtuous in %s (%d)."),
+                               vir_name, tester);
                else if (tester < 80)
-#ifdef JP
-                       sprintf(vir_desc, "[%s]¤ÎÇƼԠ(%d)",
-#else
-                       sprintf(vir_desc,"You are a champion of %s (%d).",
-#endif
-                               v_name, tester);
+                       sprintf(vir_desc, _("[%s]の覇者 (%d)", "You are a champion of %s (%d)."),
+                               vir_name, tester);
                else if (tester < 100)
-#ifdef JP
-                       sprintf(vir_desc, "[%s]¤Î°ÎÂç¤ÊÇƼԠ(%d)",
-#else
-                       sprintf(vir_desc,"You are a great champion of %s (%d).",
-#endif
-                               v_name, tester);
+                       sprintf(vir_desc, _("[%s]の偉大な覇者 (%d)", "You are a great champion of %s (%d)."),
+                               vir_name, tester);
                else
-#ifdef JP
-                       sprintf(vir_desc, "[%s]¤Î¶ñ¸½¼Ô (%d)",
-#else
-                       sprintf(vir_desc,"You are the living embodiment of %s (%d).",
-#endif
-               v_name, tester);
+                       sprintf(vir_desc, _("[%s]の具現者 (%d)", "You are the living embodiment of %s (%d)."),
+                               vir_name, tester);
        
                strcpy(v_string[v_nr], vir_desc);
        
@@ -233,23 +169,16 @@ sprintf(Dummy, "
                {
                        case MIMIC_DEMON:
                        case MIMIC_DEMON_LORD:
-#ifdef JP
-sprintf(Dummy, "¤¢¤Ê¤¿¤Ï %d ¥À¥á¡¼¥¸¤ÎÃϹö¤«²Ð±ê¤Î¥Ö¥ì¥¹¤òÅǤ¯¤³¤È¤¬¤Ç¤­¤ë¡£(%d MP)", 3 * plev, 10+plev/3);
-#else
-                               sprintf(Dummy, "You can nether breathe, dam. %d (cost %d).", 3 * plev, 10+plev/3);
-#endif
+                       sprintf(Dummy, _("あなたは %d ダメージの地獄か火炎のブレスを吐くことができる。(%d MP)", 
+                                                       "You can nether breathe, dam. %d (cost %d)."), 3 * plev, 10+plev/3);
 
                                info[i++] = Dummy;
                        break;
                case MIMIC_VAMPIRE:
                        if (plev > 1)
                        {
-#ifdef JP
-sprintf(Dummy, "¤¢¤Ê¤¿¤ÏŨ¤«¤é %d-%d HP ¤ÎÀ¸Ì¿ÎϤòµÛ¼ý¤Ç¤­¤ë¡£(%d MP)",
-#else
-                               sprintf(Dummy, "You can steal life from a foe, dam. %d-%d (cost %d).",
-#endif
-
+                               sprintf(Dummy, _("あなたは敵から %d-%d HP の生命力を吸収できる。(%d MP)", 
+                                                               "You can steal life from a foe, dam. %d-%d (cost %d)."),
                                    plev + MAX(1, plev / 10), plev + plev * MAX(1, plev / 10), 1 + (plev / 3));
                                info[i++] = Dummy;
                        }
@@ -263,138 +192,72 @@ sprintf(Dummy, "
                case RACE_NIBELUNG:
                case RACE_DWARF:
                        if (plev > 4)
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï櫤ȥɥ¢¤È³¬Ãʤò´¶ÃΤǤ­¤ë¡£(5 MP)";
-#else
-                               info[i++] = "You can find traps, doors and stairs (cost 5).";
-#endif
-
+                       info[i++] = _("あなたは罠とドアと階段を感知できる。(5 MP)", "You can find traps, doors and stairs (cost 5).");
                        break;
                case RACE_HOBBIT:
                        if (plev > 14)
                        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¿©ÎÁ¤òÀ¸À®¤Ç¤­¤ë¡£(10 MP)";
-#else
-                               info[i++] = "You can produce food (cost 10).";
-#endif
-
+                               info[i++] = _("あなたは食料を生成できる。(10 MP)", "You can produce food (cost 10).");
                        }
                        break;
                case RACE_GNOME:
                        if (plev > 4)
                        {
-#ifdef JP
-sprintf(Dummy, "¤¢¤Ê¤¿¤ÏÈÏ°Ï %d °ÊÆâ¤Ë¥Æ¥ì¥Ý¡¼¥È¤Ç¤­¤ë¡£(%d MP)",
-#else
-                               sprintf(Dummy, "You can teleport, range %d (cost %d).",
-#endif
-
+                               sprintf(Dummy, _("あなたは範囲 %d 以内にテレポートできる。(%d MP)", "You can teleport, range %d (cost %d)."),
                                    (1 + plev), (5 + (plev / 5)));
                                info[i++] = Dummy;
                        }
                        break;
                case RACE_HALF_ORC:
                        if (plev > 2)
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¶²Éݤò½üµî¤Ç¤­¤ë¡£(5 MP)";
-#else
-                               info[i++] = "You can remove fear (cost 5).";
-#endif
-
+                               info[i++] = _("あなたは恐怖を除去できる。(5 MP)", "You can remove fear (cost 5).");
                        break;
                case RACE_HALF_TROLL:
                        if (plev > 9)
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¶¸Ë½²½¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¡£(12 MP) ";
-#else
-                               info[i++] = "You enter berserk fury (cost 12).";
-#endif
-
+                               info[i++] = _("あなたは狂暴化することができる。(12 MP) ", "You enter berserk fury (cost 12).");
                        break;
                case RACE_AMBERITE:
                        if (plev > 29)
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¥·¥ã¥É¥¦¥·¥Õ¥È¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¡£(50 MP)";
-#else
-                               info[i++] = "You can Shift Shadows (cost 50).";
-#endif
+                               info[i++] = _("あなたはシャドウシフトすることができる。(50 MP)", "You can Shift Shadows (cost 50).");
 
                        if (plev > 39)
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¡Ö¥Ñ¥¿¡¼¥ó¡×¤ò¿´¤ËÉÁ¤¤¤ÆÊ⤯¤³¤È¤¬¤Ç¤­¤ë¡£(75 MP)";
-#else
-                               info[i++] = "You can mentally Walk the Pattern (cost 75).";
-#endif
+                               info[i++] = _("あなたは「パターン」を心に描いて歩くことができる。(75 MP)", "You can mentally Walk the Pattern (cost 75).");
 
                        break;
                case RACE_BARBARIAN:
                        if (plev > 7)
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¶¸Ë½²½¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¡£(10 MP) ";
-#else
-                               info[i++] = "You can enter berserk fury (cost 10).";
-#endif
+                               info[i++] = _("あなたは狂暴化することができる。(10 MP) ", "You can enter berserk fury (cost 10).");
 
                        break;
                case RACE_HALF_OGRE:
                        if (plev > 24)
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÏÇúȯ¤Î¥ë¡¼¥ó¤ò»Å³Ý¤±¤ë¤³¤È¤¬¤Ç¤­¤ë¡£(35 MP)";
-#else
-                               info[i++] = "You can set an Explosive Rune (cost 35).";
-#endif
+                               info[i++] = _("あなたは爆発のルーンを仕掛けることができる。(35 MP)", "You can set an Explosive Rune (cost 35).");
 
                        break;
                case RACE_HALF_GIANT:
                        if (plev > 19)
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÏÀФÎÊɤò²õ¤¹¤³¤È¤¬¤Ç¤­¤ë¡£(10 MP)";
-#else
-                               info[i++] = "You can break stone walls (cost 10).";
-#endif
-
+                               info[i++] = _("あなたは石の壁を壊すことができる。(10 MP)", "You can break stone walls (cost 10).");
                        break;
                case RACE_HALF_TITAN:
                        if (plev > 34)
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¥â¥ó¥¹¥¿¡¼¤ò¥¹¥­¥ã¥ó¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¡£(20 MP)";
-#else
-                               info[i++] = "You can probe monsters (cost 20).";
-#endif
-
+                               info[i++] = _("あなたはモンスターをスキャンすることができる。(20 MP)", "You can probe monsters (cost 20).");
                        break;
                case RACE_CYCLOPS:
                        if (plev > 19)
                        {
-#ifdef JP
-sprintf(Dummy, "¤¢¤Ê¤¿¤Ï %d ¥À¥á¡¼¥¸¤Î´äÀФòÅꤲ¤ë¤³¤È¤¬¤Ç¤­¤ë¡£(15 MP)",
-#else
-                               sprintf(Dummy, "You can throw a boulder, dam. %d (cost 15).",
-#endif
-
-                                   3 * plev);
+                               sprintf(Dummy, _("あなたは %d ダメージの岩石を投げることができる。(15 MP)", 
+                                                        "You can throw a boulder, dam. %d (cost 15)."), 3 * plev);
                                info[i++] = Dummy;
                        }
                        break;
                case RACE_YEEK:
                        if (plev > 14)
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¶²Éݤò¸Æ¤Óµ¯¤³¤¹¶«¤ÓÀ¼¤òȯ¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¡£(15 MP)";
-#else
-                               info[i++] = "You can make a terrifying scream (cost 15).";
-#endif
-
+                               info[i++] = _("あなたは恐怖を呼び起こす叫び声を発することができる。(15 MP)", "You can make a terrifying scream (cost 15).");
                        break;
                case RACE_KLACKON:
                        if (plev > 8)
                        {
-#ifdef JP
-sprintf(Dummy, "¤¢¤Ê¤¿¤Ï %d ¥À¥á¡¼¥¸¤Î»À¤ò¿á¤­¤«¤±¤ë¤³¤È¤¬¤Ç¤­¤ë¡£(9 MP)", plev);
-#else
-                               sprintf(Dummy, "You can spit acid, dam. %d (cost 9).", plev);
-#endif
-
+                               sprintf(Dummy, _("あなたは %d ダメージの酸を吹きかけることができる。(9 MP)", "You can spit acid, dam. %d (cost 9)."), plev);
                                info[i++] = Dummy;
                        }
                        break;
@@ -402,97 +265,52 @@ sprintf(Dummy, "
                        if (plev > 11)
                        {
                                sprintf(Dummy,
-#ifdef JP
-    "¤¢¤Ê¤¿¤Ï %d ¥À¥á¡¼¥¸¤ÎÆÇÌð¤òÅꤲ¤ë¤³¤È¤¬¤Ç¤­¤ë¡£(8 MP)", plev);
-#else
-                                   "You can throw a dart of poison, dam. %d (cost 8).", plev);
-#endif
-
+                                               _("あなたは %d ダメージの毒矢を投げることができる。(8 MP)", "You can throw a dart of poison, dam. %d (cost 8)."), plev);
                                info[i++] = Dummy;
                        }
                        break;
                case RACE_DARK_ELF:
                        if (plev > 1)
                        {
-#ifdef JP
-sprintf(Dummy, "¤¢¤Ê¤¿¤Ï %d ¥À¥á¡¼¥¸¤Î¥Þ¥¸¥Ã¥¯¡¦¥ß¥µ¥¤¥ë¤Î¼öʸ¤ò»È¤¨¤ë¡£(2 MP)",
-#else
-                               sprintf(Dummy, "You can cast a Magic Missile, dam %d (cost 2).",
-#endif
-
+                               sprintf(Dummy, _("あなたは %d ダメージのマジック・ミサイルの呪文を使える。(2 MP)", "You can cast a Magic Missile, dam %d (cost 2)."),
                                    (3 + ((plev-1) / 5)));
                                info[i++] = Dummy;
                        }
                        break;
                case RACE_DRACONIAN:
-#ifdef JP
-sprintf(Dummy, "¤¢¤Ê¤¿¤Ï %d ¥À¥á¡¼¥¸¤Î¥Ö¥ì¥¹¤òÅǤ¯¤³¤È¤¬¤Ç¤­¤ë¡£(%d MP)", 2 * plev, plev);
-#else
-                       sprintf(Dummy, "You can breathe, dam. %d (cost %d).", 2 * plev, plev);
-#endif
-
+                       sprintf(Dummy, _("あなたは %d ダメージのブレスを吐くことができる。(%d MP)", "You can breathe, dam. %d (cost %d)."), 2 * plev, plev);
                        info[i++] = Dummy;
                        break;
                case RACE_MIND_FLAYER:
                        if (plev > 14)
-#ifdef JP
-sprintf(Dummy, "¤¢¤Ê¤¿¤Ï %d ¥À¥á¡¼¥¸¤ÎÀº¿À¹¶·â¤ò¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¡£(12 MP)", plev);
-#else
-                               sprintf(Dummy, "You can mind blast your enemies, dam %d (cost 12).", plev);
-#endif
-
+                               sprintf(Dummy, _("あなたは %d ダメージの精神攻撃をすることができる。(12 MP)", "You can mind blast your enemies, dam %d (cost 12)."), plev);
                        info[i++] = Dummy;
                        break;
                case RACE_IMP:
                        if (plev > 29)
                        {
-#ifdef JP
-sprintf(Dummy, "¤¢¤Ê¤¿¤Ï %d ¥À¥á¡¼¥¸¤Î¥Õ¥¡¥¤¥¢¡¦¥Ü¡¼¥ë¤Î¼öʸ¤ò»È¤¨¤ë¡£(15 MP)", plev);
-#else
-                               sprintf(Dummy, "You can cast a Fire Ball, dam. %d (cost 15).", plev);
-#endif
-
+                               sprintf(Dummy, _("あなたは %d ダメージのファイア・ボールの呪文を使える。(15 MP)", "You can cast a Fire Ball, dam. %d (cost 15)."), plev);
                                info[i++] = Dummy;
                        }
                        else if (plev > 8)
                        {
-#ifdef JP
-sprintf(Dummy, "¤¢¤Ê¤¿¤Ï %d ¥À¥á¡¼¥¸¤Î¥Õ¥¡¥¤¥¢¡¦¥Ü¥ë¥È¤Î¼öʸ¤ò»È¤¨¤ë¡£(15 MP)", plev);
-#else
-                               sprintf(Dummy, "You can cast a Fire Bolt, dam. %d (cost 15).", plev);
-#endif
-
+                               sprintf(Dummy, _("あなたは %d ダメージのファイア・ボルトの呪文を使える。(15 MP)", "You can cast a Fire Bolt, dam. %d (cost 15)."), plev);
                                info[i++] = Dummy;
                        }
                        break;
                case RACE_GOLEM:
                        if (plev > 19)
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï d20+30 ¥¿¡¼¥ó¤Î´ÖÈ©¤òÀФËÊѲ½¤µ¤»¤é¤ì¤ë¡£(15 MP)";
-#else
-                               info[i++] = "You can turn your skin to stone, dur d20+30 (cost 15).";
-#endif
-
+                               info[i++] = _("あなたは d20+30 ターンの間肌を石に変化させられる。(15 MP)", "You can turn your skin to stone, dur d20+30 (cost 15).");
                        break;
                case RACE_ZOMBIE:
                case RACE_SKELETON:
                        if (plev > 29)
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¼º¤Ã¤¿À¸Ì¿ÎϤò²óÉü¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¡£(30 MP)";
-#else
-                               info[i++] = "You can restore lost life forces (cost 30).";
-#endif
-
+                               info[i++] = _("あなたは失った経験値を回復することができる。(30 MP)", "You can restore lost experience (cost 30).");
                        break;
                case RACE_VAMPIRE:
                        if (plev > 1)
                        {
-#ifdef JP
-sprintf(Dummy, "¤¢¤Ê¤¿¤ÏŨ¤«¤é %d-%d HP ¤ÎÀ¸Ì¿ÎϤòµÛ¼ý¤Ç¤­¤ë¡£(%d MP)",
-#else
-                               sprintf(Dummy, "You can steal life from a foe, dam. %d-%d (cost %d).",
-#endif
-
+                               sprintf(Dummy, _("あなたは敵から %d-%d HP の生命力を吸収できる。(%d MP)", "You can steal life from a foe, dam. %d-%d (cost %d)."),
                                    plev + MAX(1, plev / 10), plev + plev * MAX(1, plev / 10), 1 + (plev / 3));
                                info[i++] = Dummy;
                        }
@@ -500,74 +318,39 @@ sprintf(Dummy, "
                case RACE_SPECTRE:
                        if (plev > 3)
                        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ïµã¤­¶«¤ó¤ÇŨ¤ò¶²Éݤµ¤»¤ë¤³¤È¤¬¤Ç¤­¤ë¡£(3 MP)";
-#else
-                               info[i++] = "You can wail to terrify your enemies (cost 3).";
-#endif
-
+                               info[i++] = _("あなたは泣き叫んで敵を恐怖させることができる。(3 MP)", "You can wail to terrify your enemies (cost 3).");
                        }
                        break;
                case RACE_SPRITE:
                        if (plev > 11)
                        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÏŨ¤ò̲¤é¤»¤ëËâË¡¤ÎÊ´¤òÅꤲ¤ë¤³¤È¤¬¤Ç¤­¤ë¡£(12 MP)";
-#else
-                               info[i++] = "You can throw magical dust which induces sleep (cost 12).";
-#endif
-
+                               info[i++] = _("あなたは敵を眠らせる魔法の粉を投げることができる。(12 MP)", "You can throw magical dust which induces sleep (cost 12).");
                        }
                        break;
                case RACE_DEMON:
-#ifdef JP
-sprintf(Dummy, "¤¢¤Ê¤¿¤Ï %d ¥À¥á¡¼¥¸¤ÎÃϹö¤«²Ð±ê¤Î¥Ö¥ì¥¹¤òÅǤ¯¤³¤È¤¬¤Ç¤­¤ë¡£(%d MP)", 3 * plev, 10+plev/3);
-#else
-                       sprintf(Dummy, "You can breathe nether, dam. %d (cost %d).", 3 * plev, 10+plev/3);
-#endif
+                       sprintf(Dummy, _("あなたは %d ダメージの地獄か火炎のブレスを吐くことができる。(%d MP)", 
+                                               "You can breathe nether, dam. %d (cost %d)."), 3 * plev, 10+plev/3);
 
                        info[i++] = Dummy;
                        break;
-               case RACE_KUTA:
+               case RACE_KUTAR:
                        if (plev > 19)
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï d20+30 ¥¿¡¼¥ó¤Î´Ö²£¤Ë¿­¤Ó¤ë¤³¤È¤¬¤Ç¤­¤ë¡£(15 MP)";
-#else
-                               info[i++] = "You can expand horizontally, dur d20+30 (cost 15).";
-#endif
-
+                               info[i++] = _("あなたは d20+30 ターンの間横に伸びることができる。(15 MP)", "You can expand horizontally, dur d20+30 (cost 15).");
                        break;
                case RACE_ANDROID:
                        if (plev < 10)
-#ifdef JP
-sprintf(Dummy, "¤¢¤Ê¤¿¤Ï %d ¥À¥á¡¼¥¸¤Î¥ì¥¤¥¬¥ó¤ò·â¤Ä¤³¤È¤¬¤Ç¤­¤ë¡£(7 MP)", (plev + 1) / 2);
-#else
-                               sprintf(Dummy, "You can fire a ray gun with damage %d (cost 7).", (plev+1)/2);
-#endif
+                               sprintf(Dummy, _("あなたは %d ダメージのレイガンを撃つことができる。(7 MP)", "You can fire a ray gun with damage %d (cost 7)."), 
+                                       (plev + 1) / 2);
                        else if (plev < 25)
-#ifdef JP
-sprintf(Dummy, "¤¢¤Ê¤¿¤Ï %d ¥À¥á¡¼¥¸¤Î¥Ö¥é¥¹¥¿¡¼¤ò·â¤Ä¤³¤È¤¬¤Ç¤­¤ë¡£(13 MP)", plev);
-#else
-                               sprintf(Dummy, "You can fire a blaster with damage %d (cost 13).", plev);
-#endif
+                               sprintf(Dummy, _("あなたは %d ダメージのブラスターを撃つことができる。(13 MP)", "You can fire a blaster with damage %d (cost 13)."), plev);
                        else if (plev < 35)
-#ifdef JP
-sprintf(Dummy, "¤¢¤Ê¤¿¤Ï %d ¥À¥á¡¼¥¸¤Î¥Ð¥º¡¼¥«¤ò·â¤Ä¤³¤È¤¬¤Ç¤­¤ë¡£(26 MP)", plev * 2);
-#else
-                               sprintf(Dummy, "You can fire a bazooka with damage %d (cost 26).", plev * 2);
-#endif
+                               sprintf(Dummy, _("あなたは %d ダメージのバズーカを撃つことができる。(26 MP)", "You can fire a bazooka with damage %d (cost 26)."), plev * 2);
                        else if (plev < 45)
-#ifdef JP
-sprintf(Dummy, "¤¢¤Ê¤¿¤Ï %d ¥À¥á¡¼¥¸¤Î¥Ó¡¼¥à¥­¥ã¥Î¥ó¤ò·â¤Ä¤³¤È¤¬¤Ç¤­¤ë¡£(40 MP)", plev * 2);
-#else
-                               sprintf(Dummy, "You can fire a beam cannon with damage %d (cost 40).", plev * 2);
-#endif
+                               sprintf(Dummy, _("あなたは %d ダメージのビームキャノンを撃つことができる。(40 MP)", 
+                                               "You can fire a beam cannon with damage %d (cost 40)."), plev * 2);
                        else
-#ifdef JP
-sprintf(Dummy, "¤¢¤Ê¤¿¤Ï %d ¥À¥á¡¼¥¸¤Î¥í¥±¥Ã¥È¤ò·â¤Ä¤³¤È¤¬¤Ç¤­¤ë¡£(60 MP)", plev * 5);
-#else
-                               sprintf(Dummy, "You can fire a rocket with damage %d (cost 60).", plev * 5);
-#endif
+                               sprintf(Dummy, _("あなたは %d ダメージのロケットを撃つことができる。(60 MP)", 
+                                               "You can fire a rocket with damage %d (cost 60)."), plev * 5);
 
                        info[i++] = Dummy;
                        break;
@@ -581,23 +364,18 @@ sprintf(Dummy, "
                case CLASS_WARRIOR:
                        if (plev > 39)
                        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¥é¥ó¥À¥à¤ÊÊý¸þ¤ËÂФ·¤Æ¿ô²ó¹¶·â¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¡£(75 MP)";
-#else
-                               info[i++] = "You can attack some random directions at a time (cost 75).";
-#endif
+                               info[i++] = _("あなたはランダムな方向に対して数回攻撃することができる。(75 MP)", 
+                                                       "You can attack some random directions at a time (cost 75).");
                        }
                        break;
-               case CLASS_MAGE:
                case CLASS_HIGH_MAGE:
+                       if (p_ptr->realm1 == REALM_HEX) break;
+               case CLASS_MAGE:
                case CLASS_SORCERER:
                        if (plev > 24)
                        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¥¢¥¤¥Æ¥à¤ÎËâÎϤòµÛ¼ý¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¡£(1 MP)";
-#else
-                               info[i++] = "You can absorb charges from an item (cost 1).";
-#endif
+                               info[i++] = _("あなたはアイテムの魔力を吸収することができる。(1 MP)", 
+                                               "You can absorb charges from an item (cost 1).");
                        }
                        break;
                case CLASS_PRIEST:
@@ -605,43 +383,27 @@ info[i++] = "
                        {
                                if (plev > 34)
                                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÏÉð´ï¤ò½ËÊ¡¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¡£(70 MP)";
-#else
-                                       info[i++] = "You can bless a weapon (cost 70).";
-#endif
+                                       info[i++] = _("あなたは武器を祝福することができる。(70 MP)", "You can bless a weapon (cost 70).");
                                }
                        }
                        else
                        {
                                if (plev > 41)
                                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¼þ¤ê¤Î¤¹¤Ù¤Æ¤Î¥â¥ó¥¹¥¿¡¼¤ò¹¶·â¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¡£(40 MP)";
-#else
-                                       info[i++] = "You can damages all monsters in sight (cost 40).";
-#endif
+                                       info[i++] = _("あなたは周りのすべてのモンスターを攻撃することができる。(40 MP)", "You can damages all monsters in sight (cost 40).");
                                }
                        }
                        break;
                case CLASS_ROGUE:
                        if (plev > 7)
                        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¹¶·â¤·¤Æ¨ºÂ¤Ëƨ¤²¤ë¤³¤È¤¬¤Ç¤­¤ë¡£(12 MP)";
-#else
-                               info[i++] = "You can hit a monster and teleport at a time (cost 12).";
-#endif
+                               info[i++] = _("あなたは攻撃して即座に逃げることができる。(12 MP)", "You can hit a monster and teleport at a time (cost 12).");
                        }
                        break;
                case CLASS_RANGER:
                        if (plev > 14)
                        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï²øʪ¤òÄ´ºº¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¡£(20 MP)";
-#else
-                               info[i++] = "You can prove monsters (cost 20).";
-#endif
+                               info[i++] = _("あなたは怪物を調査することができる。(20 MP)", "You can prove monsters (cost 20).");
                        }
                        break;
                case CLASS_PALADIN:
@@ -649,200 +411,111 @@ info[i++] = "
                        {
                                if (plev > 29)
                                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÏÀ»¤Ê¤ëÁä¤òÊü¤Ä¤³¤È¤¬¤Ç¤­¤ë¡£(30 MP)";
-#else
-                                       info[i++] = "You can fires a holy spear (cost 30).";
-#endif
+                                       info[i++] = _("あなたは聖なる槍を放つことができる。(30 MP)", "You can fires a holy spear (cost 30).");
                                }
                        }
                        else
                        {
                                if (plev > 29)
                                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÏÀ¸Ì¿ÎϤò¸º¾¯¤µ¤»¤ëÁä¤òÊü¤Ä¤³¤È¤¬¤Ç¤­¤ë¡£(30 MP)";
-#else
-                                       info[i++] = "You can fires a spear which drains vitality (cost 30).";
-#endif
+                                       info[i++] = _("あなたは生命力を減少させる槍を放つことができる。(30 MP)", "You can fires a spear which drains vitality (cost 30).");
                                }
                        }
                        break;
                case CLASS_WARRIOR_MAGE:
                        if (plev > 24)
                        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï£È£Ð¤ò£Í£Ð¤ËÊÑ´¹¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¡£(0 MP)";
-#else
-                               info[i++] = "You can convert HP to SP (cost 0).";
-#endif
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï£Í£Ð¤ò£È£Ð¤ËÊÑ´¹¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¡£(0 MP)";
-#else
-                               info[i++] = "You can convert SP to HP (cost 0).";
-#endif
+                               info[i++] = _("あなたはHPをMPに変換することができる。(0 MP)", "You can convert HP to SP (cost 0).");
+                               info[i++] = _("あなたはMPをHPに変換することができる。(0 MP)", "You can convert SP to HP (cost 0).");
                        }
                        break;
                case CLASS_CHAOS_WARRIOR:
                        if (plev > 39)
                        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¼þ°Ï¤Ë²øʪ¤òÏǤ魯¸÷¤òȯÀ¸¤µ¤»¤ë¤³¤È¤¬¤Ç¤­¤ë¡£(50 MP)";
-#else
-                               info[i++] = "You can radiate light which confuses nearby monsters (cost 50).";
-#endif
+                               info[i++] = _("あなたは周囲に怪物を惑わす光を発生させることができる。(50 MP)",
+                                               "You can radiate light which confuses nearby monsters (cost 50).");
                        }
                        break;
                case CLASS_MONK:
                        if (plev > 24)
                        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¹½¤¨¤ë¤³¤È¤¬¤Ç¤­¤ë¡£(0 MP)";
-#else
-                               info[i++] = "You can assume a posture of special form (cost 0).";
-#endif
+                               info[i++] = _("あなたは構えることができる。(0 MP)", "You can assume a posture of special form (cost 0).");
                        }
                        if (plev > 29)
                        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÏÄ̾ï¤Î2Çܤι¶·â¤ò¹Ô¤¦¤³¤È¤¬¤Ç¤­¤ë¡£(30 MP)";
-#else
-                               info[i++] = "You can perform double attacks in a time (cost 30).";
-#endif
+                               info[i++] = _("あなたは通常の2倍の攻撃を行うことができる。(30 MP)", "You can perform double attacks in a time (cost 30).");
                        }
                        break;
                case CLASS_MINDCRAFTER:
                case CLASS_FORCETRAINER:
                        if (plev > 14)
                        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÏÀº¿À¤ò½¸Ã椷¤Æ£Í£Ð¤ò²óÉü¤µ¤»¤ë¤³¤È¤¬¤Ç¤­¤ë¡£(0 MP)";
-#else
-                               info[i++] = "You can concentrate to regenerate your mana (cost 0).";
-#endif
+                               info[i++] = _("あなたは精神を集中してMPを回復させることができる。(0 MP)", "You can concentrate to regenerate your mana (cost 0).");
                        }
                        break;
                case CLASS_TOURIST:
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¼Ì¿¿¤ò»£±Æ¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¡£(0 MP)";
-#else
-                               info[i++] = "You can take a photograph (cost 0).";
-#endif
+                       info[i++] = _("あなたは写真を撮影することができる。(0 MP)", "You can take a photograph (cost 0).");
                        if (plev > 24)
                        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¥¢¥¤¥Æ¥à¤ò´°Á´¤Ë´ÕÄꤹ¤ë¤³¤È¤¬¤Ç¤­¤ë¡£(20 MP)";
-#else
-                               info[i++] = "You can *identify* items (cost 20).";
-#endif
+                               info[i++] = _("あなたはアイテムを完全に鑑定することができる。(20 MP)", "You can *identify* items (cost 20).");
                        }
                        break;
                case CLASS_IMITATOR:
                        if (plev > 29)
                        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï²øʪ¤ÎÆü칶·â¤ò¥À¥á¡¼¥¸2ÇܤǤޤͤ뤳¤È¤¬¤Ç¤­¤ë¡£(100 MP)";
-#else
-                               info[i++] = "You can imitate monster's special attacks with double damage (cost 100).";
-#endif
+                               info[i++] = _("あなたは怪物の特殊攻撃をダメージ2倍でまねることができる。(100 MP)", 
+                                               "You can imitate monster's special attacks with double damage (cost 100).");
                        }
                        break;
                case CLASS_BEASTMASTER:
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï1ɤ¤ÎÀ¸Ì¿¤Î¤¢¤ë¥â¥ó¥¹¥¿¡¼¤ò»ÙÇÛ¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¡£(¥ì¥Ù¥ë/4 MP)";
-#else
-                       info[i++] = "You can dominate a monster (cost level/4).";
-#endif
+                       info[i++] = _("あなたは1体の生命のあるモンスターを支配することができる。(レベル/4 MP)", "You can dominate a monster (cost level/4).");
                        if (plev > 29)
                        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï»ë³¦Æâ¤ÎÀ¸Ì¿¤Î¤¢¤ë¥â¥ó¥¹¥¿¡¼¤ò»ÙÇÛ¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¡£((¥ì¥Ù¥ë+20)/2 MP)";
-#else
-                               info[i++] = "You can dominate living monsters in sight (cost (level+20)/4).";
-#endif
+                               info[i++] = _("あなたは視界内の生命のあるモンスターを支配することができる。((レベル+20)/2 MP)", 
+                                               "You can dominate living monsters in sight (cost (level+20)/4).");
                        }
                        break;
                case CLASS_MAGIC_EATER:
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¾ó/ËâË¡ËÀ/¥í¥Ã¥É¤ÎËâÎϤò¼«Ê¬¤Î¤â¤Î¤Ë¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¡£";
-#else
-                       info[i++] = "You can absorb a staff, wand or rod itself.";
-#endif
+                       info[i++] = _("あなたは杖/魔法棒/ロッドの魔力を自分のものにすることができる。", "You can absorb a staff, wand or rod itself.");
                        break;
                case CLASS_RED_MAGE:
                        if (plev > 47)
                        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï1¥¿¡¼¥ó¤Ë2²óËâË¡¤ò¾§¤¨¤ë¤³¤È¤¬¤Ç¤­¤ë¡£(77 MP)";
-#else
-                               info[i++] = "You can cast two spells in one time (cost 77).";
-#endif
+                               info[i++] = _("あなたは1ターンに2回魔法を唱えることができる。(20 MP)", "You can cast two spells in one time (cost 20).");
                        }
                        break;
                case CLASS_SAMURAI:
                        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÏÀº¿À¤ò½¸Ã椷¤Æµ¤¹ç¤¤¤òί¤á¤ë¤³¤È¤¬¤Ç¤­¤ë¡£";
-#else
-                               info[i++] = "You can concentrate to regenerate your mana.";
-#endif
+                               info[i++] = _("あなたは精神を集中して気合いを溜めることができる。", "You can concentrate to regenerate your mana.");
                        }
                        if (plev > 24)
                        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÏÆüì¤Ê·¿¤Ç¹½¤¨¤ë¤³¤È¤¬¤Ç¤­¤ë¡£";
-#else
-                               info[i++] = "You can assume a posture of special form.";
-#endif
+                               info[i++] = _("あなたは特殊な型で構えることができる。", "You can assume a posture of special form.");
                        }
                        break;
                case CLASS_BLUE_MAGE:
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÏÁê¼ê¤Ë»È¤ï¤ì¤¿ËâË¡¤ò³Ø¤Ö¤³¤È¤¬¤Ç¤­¤ë¡£";
-#else
-                       info[i++] = "You can study spells which your enemy casts on you.";
-#endif
+                       info[i++] = _("あなたは相手に使われた魔法を学ぶことができる。", "You can study spells which your enemy casts on you.");
                        break;
                case CLASS_CAVALRY:
                        if (plev > 9)
                        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¥â¥ó¥¹¥¿¡¼¤Ë¾è¤Ã¤Æ̵ÍýÌðÍý¥Ú¥Ã¥È¤Ë¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¡£";
-#else
-                               info[i++] = "You can ride on a hostile monster forcibly to turn it into pet.";
-#endif
+                               info[i++] = _("あなたはモンスターに乗って無理矢理ペットにすることができる。", "You can ride on a hostile monster forcibly to turn it into pet.");
                        }
                        break;
                case CLASS_BERSERKER:
                        if (plev > 9)
                        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï³¹¤È¥À¥ó¥¸¥ç¥ó¤Î´Ö¤ò¹Ô¤­Í褹¤ë¤³¤È¤¬¤Ç¤­¤ë¡£";
-#else
-                       info[i++] = "You can travel between town and the depths.";
-#endif
+                               info[i++] = _("あなたは街とダンジョンの間を行き来することができる。", "You can travel between town and the depths.");
                        }
                        break;
                case CLASS_MIRROR_MASTER:
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¶À¤òºî¤ê½Ð¤¹¤³¤È¤¬¤Ç¤­¤ë¡£(2 MP)";
-#else
-                               info[i++] = "You can create a Mirror (cost 2).";
-#endif
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¶À¤ò³ä¤ë¤³¤È¤¬¤Ç¤­¤ë¡£(0 MP)";
-#else
-                               info[i++] = "You can break distant Mirrors (cost 0).";
-#endif
+                       info[i++] = _("あなたは鏡を作り出すことができる。(2 MP)", "You can create a Mirror (cost 2).");
+                       info[i++] = _("あなたは鏡を割ることができる。(0 MP)", "You can break distant Mirrors (cost 0).");
                        break;
                case CLASS_NINJA:
                        if (plev > 19)
                        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÏÁÇÁ᤯°ÜÆ°¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¡£";
-#else
-                               info[i++] = "You can walk extremery fast.";
-#endif
+                               info[i++] = _("あなたは素早く移動することができる。", "You can walk extremery fast.");
                        }
                        break;
        }
@@ -851,291 +524,132 @@ info[i++] = "
        {
                if (p_ptr->muta1 & MUT1_SPIT_ACID)
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï»À¤ò¿á¤­¤«¤±¤ë¤³¤È¤¬¤Ç¤­¤ë¡£(¥À¥á¡¼¥¸ ¥ì¥Ù¥ëX1)";
-#else
-                       info[i++] = "You can spit acid (dam lvl).";
-#endif
-
+                       info[i++] = _("あなたは酸を吹きかけることができる。(ダメージ レベルX1)", "You can spit acid (dam lvl).");
                }
                if (p_ptr->muta1 & MUT1_BR_FIRE)
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï±ê¤Î¥Ö¥ì¥¹¤òÅǤ¯¤³¤È¤¬¤Ç¤­¤ë¡£(¥À¥á¡¼¥¸ ¥ì¥Ù¥ëX2)";
-#else
-                       info[i++] = "You can breathe fire (dam lvl * 2).";
-#endif
-
+                       info[i++] = _("あなたは炎のブレスを吐くことができる。(ダメージ レベルX2)", "You can breathe fire (dam lvl * 2).");
                }
                if (p_ptr->muta1 & MUT1_HYPN_GAZE)
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÎâˤߤϺÅ̲¸ú²Ì¤ò¤â¤Ä¡£";
-#else
-                       info[i++] = "Your gaze is hypnotic.";
-#endif
-
+                       info[i++] = _("あなたの睨みは催眠効果をもつ。", "Your gaze is hypnotic.");
                }
                if (p_ptr->muta1 & MUT1_TELEKINES)
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÏÇ°Æ°ÎϤò¤â¤Ã¤Æ¤¤¤ë¡£";
-#else
-                       info[i++] = "You are telekinetic.";
-#endif
-
+                       info[i++] = _("あなたは念動力をもっている。", "You are telekinetic.");
                }
                if (p_ptr->muta1 & MUT1_VTELEPORT)
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¼«Ê¬¤Î°Õ»×¤Ç¥Æ¥ì¥Ý¡¼¥È¤Ç¤­¤ë¡£";
-#else
-                       info[i++] = "You can teleport at will.";
-#endif
-
+                       info[i++] = _("あなたは自分の意思でテレポートできる。", "You can teleport at will.");
                }
                if (p_ptr->muta1 & MUT1_MIND_BLST)
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÏÀº¿À¹¶·â¤ò¹Ô¤¨¤ë¡£(¥À¥á¡¼¥¸ 3¡Á12d3)";
-#else
-                       info[i++] = "You can Mind Blast your enemies (3 to 12d3 dam).";
-#endif
-
+                       info[i++] = _("あなたは精神攻撃を行える。(ダメージ 3~12d3)", "You can Mind Blast your enemies (3 to 12d3 dam).");
                }
                if (p_ptr->muta1 & MUT1_RADIATION)
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¼«Ê¬¤Î°Õ»×¤Ç¶¯¤¤Êü¼ÍÀþ¤òȯÀ¸¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¡£(¥À¥á¡¼¥¸ ¥ì¥Ù¥ëX2)";
-#else
-                       info[i++] = "You can emit hard radiation at will (dam lvl * 2).";
-#endif
-
+                       info[i++] = _("あなたは自分の意思で強い放射線を発生することができる。(ダメージ レベルX2)", "You can emit hard radiation at will (dam lvl * 2).");
                }
                if (p_ptr->muta1 & MUT1_VAMPIRISM)
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÏµÛ·ìµ´¤Î¤è¤¦¤ËŨ¤«¤éÀ¸Ì¿ÎϤòµÛ¼ý¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¡£(¥À¥á¡¼¥¸ ¥ì¥Ù¥ëX2)";
-#else
-                       info[i++] = "You can drain life from a foe like a vampire (dam lvl * 2).";
-#endif
-
+                       info[i++] = _("あなたは吸血鬼のように敵から生命力を吸収することができる。(ダメージ レベルX2)", 
+                                               "You can drain life from a foe like a vampire (dam lvl * 2).");
                }
                if (p_ptr->muta1 & MUT1_SMELL_MET)
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¶á¤¯¤Ë¤¢¤ëµ®¶â°¤ò¤«¤®Ê¬¤±¤ë¤³¤È¤¬¤Ç¤­¤ë¡£";
-#else
-                       info[i++] = "You can smell nearby precious metal.";
-#endif
-
+                       info[i++] = _("あなたは近くにある貴金属をかぎ分けることができる。", "You can smell nearby precious metal.");
                }
                if (p_ptr->muta1 & MUT1_SMELL_MON)
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¶á¤¯¤Î¥â¥ó¥¹¥¿¡¼¤Î¸ºß¤ò¤«¤®Ê¬¤±¤ë¤³¤È¤¬¤Ç¤­¤ë¡£";
-#else
-                       info[i++] = "You can smell nearby monsters.";
-#endif
-
+                       info[i++] = _("あなたは近くのモンスターの存在をかぎ分けることができる。", "You can smell nearby monsters.");
                }
                if (p_ptr->muta1 & MUT1_BLINK)
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ïû¤¤µ÷Î¥¤ò¥Æ¥ì¥Ý¡¼¥È¤Ç¤­¤ë¡£";
-#else
-                       info[i++] = "You can teleport yourself short distances.";
-#endif
-
+                       info[i++] = _("あなたは短い距離をテレポートできる。", "You can teleport yourself short distances.");
                }
                if (p_ptr->muta1 & MUT1_EAT_ROCK)
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¹Å¤¤´ä¤ò¿©¤Ù¤ë¤³¤È¤¬¤Ç¤­¤ë¡£";
-#else
-                       info[i++] = "You can consume solid rock.";
-#endif
-
+                       info[i++] = _("あなたは硬い岩を食べることができる。", "You can consume solid rock.");
                }
                if (p_ptr->muta1 & MUT1_SWAP_POS)
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¾¤Î¼Ô¤È¾ì½ê¤òÆþ¤ìÂؤï¤ë¤³¤È¤¬¤Ç¤­¤ë¡£";
-#else
-                       info[i++] = "You can switch locations with another being.";
-#endif
-
+                       info[i++] = _("あなたは他の者と場所を入れ替わることができる。", "You can switch locations with another being.");
                }
                if (p_ptr->muta1 & MUT1_SHRIEK)
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¿È¤ÎÌÓ¤â¤è¤À¤Ä¶«¤ÓÀ¼¤òȯ¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¡£(¥À¥á¡¼¥¸ ¥ì¥Ù¥ëX2)";
-#else
-                       info[i++] = "You can emit a horrible shriek (dam 2 * lvl).";
-#endif
-
+                       info[i++] = _("あなたは身の毛もよだつ叫び声を発することができる。(ダメージ レベルX2)", "You can emit a horrible shriek (dam 2 * lvl).");
                }
                if (p_ptr->muta1 & MUT1_ILLUMINE)
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÏÌÀ¤ë¤¤¸÷¤òÊü¤Ä¤³¤È¤¬¤Ç¤­¤ë¡£";
-#else
-                       info[i++] = "You can emit bright light.";
-#endif
-
+                       info[i++] = _("あなたは明るい光を放つことができる。", "You can emit bright light.");
                }
                if (p_ptr->muta1 & MUT1_DET_CURSE)
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¼Ù°­¤ÊËâË¡¤Î´í¸±¤ò´¶¤¸¤È¤ë¤³¤È¤¬¤Ç¤­¤ë¡£";
-#else
-                       info[i++] = "You can feel the danger of evil magic.";
-#endif
-
+                       info[i++] = _("あなたは邪悪な魔法の危険を感じとることができる。", "You can feel the danger of evil magic.");
                }
                if (p_ptr->muta1 & MUT1_BERSERK)
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¼«Ê¬¤Î°Õ»×¤Ç¶¸ÍðÀïÆ®¾õÂ֤ˤʤ뤳¤È¤¬¤Ç¤­¤ë¡£";
-#else
-                       info[i++] = "You can drive yourself into a berserk frenzy.";
-#endif
-
+                       info[i++] = _("あなたは自分の意思で狂乱戦闘状態になることができる。", "You can drive yourself into a berserk frenzy.");
                }
                if (p_ptr->muta1 & MUT1_POLYMORPH)
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¼«Ê¬¤Î°Õ»Ö¤ÇÊѲ½¤Ç¤­¤ë¡£";
-#else
-                       info[i++] = "You can polymorph yourself at will.";
-#endif
-
+                       info[i++] = _("あなたは自分の意志で変化できる。", "You can polymorph yourself at will.");
                }
                if (p_ptr->muta1 & MUT1_MIDAS_TCH)
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÏÄ̾異¥¤¥Æ¥à¤ò¶â¤ËÊѤ¨¤ë¤³¤È¤¬¤Ç¤­¤ë¡£";
-#else
-                       info[i++] = "You can turn ordinary items to gold.";
-#endif
-
+                       info[i++] = _("あなたは通常アイテムを金に変えることができる。", "You can turn ordinary items to gold.");
                }
                if (p_ptr->muta1 & MUT1_GROW_MOLD)
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¼þ°Ï¤Ë¥­¥Î¥³¤òÀ¸¤ä¤¹¤³¤È¤¬¤Ç¤­¤ë¡£";
-#else
-                       info[i++] = "You can cause mold to grow near you.";
-#endif
-
+                       info[i++] = _("あなたは周囲にキノコを生やすことができる。", "You can cause mold to grow near you.");
                }
                if (p_ptr->muta1 & MUT1_RESIST)
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¸µÁǤι¶·â¤ËÂФ·¤Æ¿È¤ò¹Å¤¯¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¡£";
-#else
-                       info[i++] = "You can harden yourself to the ravages of the elements.";
-#endif
-
+                       info[i++] = _("あなたは元素の攻撃に対して身を硬くすることができる。", "You can harden yourself to the ravages of the elements.");
                }
                if (p_ptr->muta1 & MUT1_EARTHQUAKE)
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¼þ°Ï¤Î¥À¥ó¥¸¥ç¥ó¤òÊø²õ¤µ¤»¤ë¤³¤È¤¬¤Ç¤­¤ë¡£";
-#else
-                       info[i++] = "You can bring down the dungeon around your ears.";
-#endif
-
+                       info[i++] = _("あなたは周囲のダンジョンを崩壊させることができる。", "You can bring down the dungeon around your ears.");
                }
                if (p_ptr->muta1 & MUT1_EAT_MAGIC)
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÏËâË¡¤Î¥¨¥Í¥ë¥®¡¼¤ò¼«Ê¬¤Îʪ¤È¤·¤Æ»ÈÍѤǤ­¤ë¡£";
-#else
-                       info[i++] = "You can consume magic energy for your own use.";
-#endif
-
+                       info[i++] = _("あなたは魔法のエネルギーを自分の物として使用できる。", "You can consume magic energy for your own use.");
                }
                if (p_ptr->muta1 & MUT1_WEIGH_MAG)
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¼«Ê¬¤Ë±Æ¶Á¤òÍ¿¤¨¤ëËâË¡¤ÎÎϤò´¶¤¸¤ë¤³¤È¤¬¤Ç¤­¤ë¡£";
-#else
-                       info[i++] = "You can feel the strength of the magics affecting you.";
-#endif
-
+                       info[i++] = _("あなたは自分に影響を与える魔法の力を感じることができる。", "You can feel the strength of the magics affecting you.");
                }
                if (p_ptr->muta1 & MUT1_STERILITY)
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï½¸ÃÄŪÀ¸¿£ÉÔǽ¤òµ¯¤³¤¹¤³¤È¤¬¤Ç¤­¤ë¡£";
-#else
-                       info[i++] = "You can cause mass impotence.";
-#endif
-
+                       info[i++] = _("あなたは集団的生殖不能を起こすことができる。", "You can cause mass impotence.");
                }
                if (p_ptr->muta1 & MUT1_PANIC_HIT)
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¹¶·â¤·¤¿¸å¿È¤ò¼é¤ë¤¿¤áƨ¤²¤ë¤³¤È¤¬¤Ç¤­¤ë¡£";
-#else
-                       info[i++] = "You can run for your life after hitting something.";
-#endif
-
+                       info[i++] = _("あなたは攻撃した後身を守るため逃げることができる。", "You can run for your life after hitting something.");
                }
                if (p_ptr->muta1 & MUT1_DAZZLE)
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ïº®Íð¤ÈÌÕÌܤò°ú¤­µ¯¤³¤¹Êü¼Íǽ¤òȯÀ¸¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¡£ ";
-#else
-                       info[i++] = "You can emit confusing, blinding radiation.";
-#endif
-
+                       info[i++] = _("あなたは混乱と盲目を引き起こす放射能を発生することができる。 ", "You can emit confusing, blinding radiation.");
                }
                if (p_ptr->muta1 & MUT1_LASER_EYE)
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÏÌܤ«¤é¥ì¡¼¥¶¡¼¸÷Àþ¤òȯ¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¡£(¥À¥á¡¼¥¸ ¥ì¥Ù¥ëX2)";
-#else
-                       info[i++] = "Your eyes can fire laser beams (dam 2 * lvl).";
-#endif
-
+                       info[i++] = _("あなたは目からレーザー光線を発することができる。(ダメージ レベルX2)", "Your eyes can fire laser beams (dam 2 * lvl).");
                }
                if (p_ptr->muta1 & MUT1_RECALL)
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï³¹¤È¥À¥ó¥¸¥ç¥ó¤Î´Ö¤ò¹Ô¤­Í褹¤ë¤³¤È¤¬¤Ç¤­¤ë¡£";
-#else
-                       info[i++] = "You can travel between town and the depths.";
-#endif
-
+                       info[i++] = _("あなたは街とダンジョンの間を行き来することができる。", "You can travel between town and the depths.");
                }
                if (p_ptr->muta1 & MUT1_BANISH)
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¼Ù°­¤Ê¥â¥ó¥¹¥¿¡¼¤òÃϹö¤ËÍî¤È¤¹¤³¤È¤¬¤Ç¤­¤ë¡£";
-#else
-                       info[i++] = "You can send evil creatures directly to Hell.";
-#endif
-
+                       info[i++] = _("あなたは邪悪なモンスターを地獄に落とすことができる。", "You can send evil creatures directly to Hell.");
                }
                if (p_ptr->muta1 & MUT1_COLD_TOUCH)
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÏŨ¤ò¿¨¤Ã¤ÆÅà¤é¤»¤ë¤³¤È¤¬¤Ç¤­¤ë¡£(¥À¥á¡¼¥¸ ¥ì¥Ù¥ëX3)";
-#else
-                       info[i++] = "You can freeze things with a touch (dam 3 * lvl).";
-#endif
-
+                       info[i++] = _("あなたは敵を触って凍らせることができる。(ダメージ レベルX3)", "You can freeze things with a touch (dam 3 * lvl).");
                }
                if (p_ptr->muta1 & MUT1_LAUNCHER)
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¥¢¥¤¥Æ¥à¤òÎ϶¯¤¯Åꤲ¤ë¤³¤È¤¬¤Ç¤­¤ë¡£";
-#else
-                       info[i++] = "You can hurl objects with great force.";
-#endif
-
+                       info[i++] = _("あなたはアイテムを力強く投げることができる。", "You can hurl objects with great force.");
                }
        }
 
@@ -1143,291 +657,131 @@ info[i++] = "
        {
                if (p_ptr->muta2 & MUT2_BERS_RAGE)
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¶¸Àï»Î²½¤Îȯºî¤òµ¯¤³¤¹¡£";
-#else
-                       info[i++] = "You are subject to berserker fits.";
-#endif
-
+                       info[i++] = _("あなたは狂戦士化の発作を起こす。", "You are subject to berserker fits.");
                }
                if (p_ptr->muta2 & MUT2_COWARDICE)
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï»þ¡¹²²É¤ˤʤ롣";
-#else
-                       info[i++] = "You are subject to cowardice.";
-#endif
-
+                       info[i++] = _("あなたは時々臆病になる。", "You are subject to cowardice.");
                }
                if (p_ptr->muta2 & MUT2_RTELEPORT)
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¥é¥ó¥À¥à¤Ë¥Æ¥ì¥Ý¡¼¥È¤¹¤ë¡£";
-#else
-                       info[i++] = "You are teleporting randomly.";
-#endif
-
+                       info[i++] = _("あなたはランダムにテレポートする。", "You are teleporting randomly.");
                }
                if (p_ptr->muta2 & MUT2_ALCOHOL)
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÎÂΤϥ¢¥ë¥³¡¼¥ë¤òʬÈ礹¤ë¡£";
-#else
-                       info[i++] = "Your body produces alcohol.";
-#endif
-
+                       info[i++] = _("あなたの体はアルコールを分泌する。", "Your body produces alcohol.");
                }
                if (p_ptr->muta2 & MUT2_HALLU)
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¸¸³Ð¤ò°ú¤­µ¯¤³¤¹Àº¿ÀºøÍð¤Ë¿¯¤µ¤ì¤Æ¤¤¤ë¡£";
-#else
-                       info[i++] = "You have a hallucinatory insanity.";
-#endif
-
+                       info[i++] = _("あなたは幻覚を引き起こす精神錯乱に侵されている。", "You have a hallucinatory insanity.");
                }
                if (p_ptr->muta2 & MUT2_FLATULENT)
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÏÀ©¸æ¤Ç¤­¤Ê¤¤¶¯Îõ¤ÊÕû¤ò¤³¤¯¡£";
-#else
-                       info[i++] = "You are subject to uncontrollable flatulence.";
-#endif
-
+                       info[i++] = _("あなたは制御できない強烈な屁をこく。", "You are subject to uncontrollable flatulence.");
                }
                if (p_ptr->muta2 & MUT2_PROD_MANA)
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÏÀ©¸æÉÔǽ¤ÊËâË¡¤Î¥¨¥Í¥ë¥®¡¼¤òȯ¤·¤Æ¤¤¤ë¡£";
-#else
-                       info[i++] = "You are producing magical energy uncontrollably.";
-#endif
-
+                       info[i++] = _("あなたは制御不能な魔法のエネルギーを発している。", "You are producing magical energy uncontrollably.");
                }
                if (p_ptr->muta2 & MUT2_ATT_DEMON)
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¥Ç¡¼¥â¥ó¤ò°ú¤­¤Ä¤±¤ë¡£";
-#else
-                       info[i++] = "You attract demons.";
-#endif
-
+                       info[i++] = _("あなたはデーモンを引きつける。", "You attract demons.");
                }
                if (p_ptr->muta2 & MUT2_SCOR_TAIL)
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¥µ¥½¥ê¤Î¿¬Èø¤¬À¸¤¨¤Æ¤¤¤ë¡£(ÆÇ¡¢¥À¥á¡¼¥¸ 3d7)";
-#else
-                       info[i++] = "You have a scorpion tail (poison, 3d7).";
-#endif
-
+                       info[i++] = _("あなたはサソリの尻尾が生えている。(毒、ダメージ 3d7)", "You have a scorpion tail (poison, 3d7).");
                }
                if (p_ptr->muta2 & MUT2_HORNS)
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï³Ñ¤¬À¸¤¨¤Æ¤¤¤ë¡£(¥À¥á¡¼¥¸ 2d6)";
-#else
-                       info[i++] = "You have horns (dam. 2d6).";
-#endif
-
+                       info[i++] = _("あなたは角が生えている。(ダメージ 2d6)", "You have horns (dam. 2d6).");
                }
                if (p_ptr->muta2 & MUT2_BEAK)
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¥¯¥Á¥Ð¥·¤¬À¸¤¨¤Æ¤¤¤ë¡£(¥À¥á¡¼¥¸ 2d4)";
-#else
-                       info[i++] = "You have a beak (dam. 2d4).";
-#endif
-
+                       info[i++] = _("あなたはクチバシが生えている。(ダメージ 2d4)", "You have a beak (dam. 2d4).");
                }
                if (p_ptr->muta2 & MUT2_SPEED_FLUX)
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¥é¥ó¥À¥à¤ËÁ᤯ư¤¤¤¿¤êÃÙ¤¯Æ°¤¤¤¿¤ê¤¹¤ë¡£";
-#else
-                       info[i++] = "You move faster or slower randomly.";
-#endif
-
+                       info[i++] = _("あなたはランダムに早く動いたり遅く動いたりする。", "You move faster or slower randomly.");
                }
                if (p_ptr->muta2 & MUT2_BANISH_ALL)
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï»þ¡¹¶á¤¯¤Î¥â¥ó¥¹¥¿¡¼¤ò¾ÃÌǤµ¤»¤ë¡£";
-#else
-                       info[i++] = "You sometimes cause nearby creatures to vanish.";
-#endif
-
+                       info[i++] = _("あなたは時々近くのモンスターを消滅させる。", "You sometimes cause nearby creatures to vanish.");
                }
                if (p_ptr->muta2 & MUT2_EAT_LIGHT)
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï»þ¡¹¼þ°Ï¤Î¸÷¤òµÛ¼ý¤·¤Æ±ÉÍܤˤ¹¤ë¡£";
-#else
-                       info[i++] = "You sometimes feed off of the light around you.";
-#endif
-
+                       info[i++] = _("あなたは時々周囲の光を吸収して栄養にする。", "You sometimes feed off of the light around you.");
                }
                if (p_ptr->muta2 & MUT2_TRUNK)
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¾Ý¤Î¤è¤¦¤ÊÉ¡¤ò»ý¤Ã¤Æ¤¤¤ë¡£(¥À¥á¡¼¥¸ 1d4)";
-#else
-                       info[i++] = "You have an elephantine trunk (dam 1d4).";
-#endif
-
+                       info[i++] = _("あなたは象のような鼻を持っている。(ダメージ 1d4)", "You have an elephantine trunk (dam 1d4).");
                }
                if (p_ptr->muta2 & MUT2_ATT_ANIMAL)
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ïưʪ¤ò°ú¤­¤Ä¤±¤ë¡£";
-#else
-                       info[i++] = "You attract animals.";
-#endif
-
+                       info[i++] = _("あなたは動物を引きつける。", "You attract animals.");
                }
                if (p_ptr->muta2 & MUT2_TENTACLES)
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¼Ù°­¤Ê¿¨¼ê¤ò»ý¤Ã¤Æ¤¤¤ë¡£(¥À¥á¡¼¥¸ 2d5)";
-#else
-                       info[i++] = "You have evil looking tentacles (dam 2d5).";
-#endif
-
+                       info[i++] = _("あなたは邪悪な触手を持っている。(ダメージ 2d5)", "You have evil looking tentacles (dam 2d5).");
                }
                if (p_ptr->muta2 & MUT2_RAW_CHAOS)
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¤·¤Ð¤·¤Ð½ã¥«¥ª¥¹¤ËÊñ¤Þ¤ì¤ë¡£";
-#else
-                       info[i++] = "You occasionally are surrounded with raw chaos.";
-#endif
-
+                       info[i++] = _("あなたはしばしば純カオスに包まれる。", "You occasionally are surrounded with raw chaos.");
                }
                if (p_ptr->muta2 & MUT2_NORMALITY)
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÏÊÑ°Û¤·¤Æ¤¤¤¿¤¬¡¢²óÉü¤·¤Æ¤­¤Æ¤¤¤ë¡£";
-#else
-                       info[i++] = "You may be mutated, but you're recovering.";
-#endif
-
+                       info[i++] = _("あなたは変異していたが、回復してきている。", "You may be mutated, but you're recovering.");
                }
                if (p_ptr->muta2 & MUT2_WRAITH)
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÎÆùÂΤÏÍ©Â⽤·¤¿¤ê¼ÂÂ⽤·¤¿¤ê¤¹¤ë¡£";
-#else
-                       info[i++] = "You fade in and out of physical reality.";
-#endif
-
+                       info[i++] = _("あなたの肉体は幽体化したり実体化したりする。", "You fade in and out of physical reality.");
                }
                if (p_ptr->muta2 & MUT2_POLY_WOUND)
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Î·ò¹¯¤Ï¥«¥ª¥¹¤ÎÎϤ˱ƶÁ¤ò¼õ¤±¤ë¡£";
-#else
-                       info[i++] = "Your health is subject to chaotic forces.";
-#endif
-
+                       info[i++] = _("あなたの健康はカオスの力に影響を受ける。", "Your health is subject to chaotic forces.");
                }
                if (p_ptr->muta2 & MUT2_WASTING)
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¿ê¼å¤¹¤ë¶²¤í¤·¤¤Éµ¤¤Ë¤«¤«¤Ã¤Æ¤¤¤ë¡£";
-#else
-                       info[i++] = "You have a horrible wasting disease.";
-#endif
-
+                       info[i++] = _("あなたは衰弱する恐ろしい病気にかかっている。", "You have a horrible wasting disease.");
                }
                if (p_ptr->muta2 & MUT2_ATT_DRAGON)
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¥É¥é¥´¥ó¤ò°ú¤­¤Ä¤±¤ë¡£";
-#else
-                       info[i++] = "You attract dragons.";
-#endif
-
+                       info[i++] = _("あなたはドラゴンを引きつける。", "You attract dragons.");
                }
                if (p_ptr->muta2 & MUT2_WEIRD_MIND)
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÎÀº¿À¤Ï¥é¥ó¥À¥à¤Ë³ÈÂ礷¤¿¤ê½Ì¾®¤·¤¿¤ê¤·¤Æ¤¤¤ë¡£";
-#else
-                       info[i++] = "Your mind randomly expands and contracts.";
-#endif
-
+                       info[i++] = _("あなたの精神はランダムに拡大したり縮小したりしている。", "Your mind randomly expands and contracts.");
                }
                if (p_ptr->muta2 & MUT2_NAUSEA)
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Î°ß¤ÏÈó¾ï¤ËÍî¤ÁÃ夭¤¬¤Ê¤¤¡£";
-#else
-                       info[i++] = "You have a seriously upset stomach.";
-#endif
-
+                       info[i++] = _("あなたの胃は非常に落ち着きがない。", "You have a seriously upset stomach.");
                }
                if (p_ptr->muta2 & MUT2_CHAOS_GIFT)
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¥«¥ª¥¹¤Î¼é¸î°­Ë⤫¤éË«Èþ¤ò¤¦¤±¤È¤ë¡£";
-#else
-                       info[i++] = "Chaos deities give you gifts.";
-#endif
-
+                       info[i++] = _("あなたはカオスの守護悪魔から褒美をうけとる。", "Chaos deities give you gifts.");
                }
                if (p_ptr->muta2 & MUT2_WALK_SHAD)
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¤·¤Ð¤·¤Ð¾¤Î¡Ö±Æ¡×¤Ë̤¤¹þ¤à¡£";
-#else
-                       info[i++] = "You occasionally stumble into other shadows.";
-#endif
-
+                       info[i++] = _("あなたはしばしば他の「影」に迷い込む。", "You occasionally stumble into other shadows.");
                }
                if (p_ptr->muta2 & MUT2_WARNING)
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÏŨ¤Ë´Ø¤¹¤ë·Ù¹ð¤ò´¶¤¸¤ë¡£";
-#else
-                       info[i++] = "You receive warnings about your foes.";
-#endif
-
+                       info[i++] = _("あなたは敵に関する警告を感じる。", "You receive warnings about your foes.");
                }
                if (p_ptr->muta2 & MUT2_INVULN)
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï»þ¡¹É餱ÃΤ餺¤Êµ¤Ê¬¤Ë¤Ê¤ë¡£";
-#else
-                       info[i++] = "You occasionally feel invincible.";
-#endif
-
+                       info[i++] = _("あなたは時々負け知らずな気分になる。", "You occasionally feel invincible.");
                }
                if (p_ptr->muta2 & MUT2_SP_TO_HP)
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï»þ¡¹·ì¤¬¶ÚÆù¤Ë¤É¤Ã¤Èή¤ì¤ë¡£";
-#else
-                       info[i++] = "Your blood sometimes rushes to your muscles.";
-#endif
-
+                       info[i++] = _("あなたは時々血が筋肉にどっと流れる。", "Your blood sometimes rushes to your muscles.");
                }
                if (p_ptr->muta2 & MUT2_HP_TO_SP)
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï»þ¡¹Æ¬¤Ë·ì¤¬¤É¤Ã¤Èή¤ì¤ë¡£";
-#else
-                       info[i++] = "Your blood sometimes rushes to your head.";
-#endif
-
+                       info[i++] = _("あなたは時々頭に血がどっと流れる。", "Your blood sometimes rushes to your head.");
                }
                if (p_ptr->muta2 & MUT2_DISARM)
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¤è¤¯¤Ä¤Þ¤Å¤¤¤Æʪ¤òÍî¤È¤¹¡£";
-#else
-                       info[i++] = "You occasionally stumble and drop things.";
-#endif
-
+                       info[i++] = _("あなたはよくつまづいて物を落とす。", "You occasionally stumble and drop things.");
                }
        }
 
@@ -1435,209 +789,95 @@ info[i++] = "
        {
                if (p_ptr->muta3 & MUT3_HYPER_STR)
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÏĶ¿ÍŪ¤Ë¶¯¤¤¡£(ÏÓÎÏ+4)";
-#else
-                       info[i++] = "You are superhumanly strong (+4 STR).";
-#endif
-
+                       info[i++] = _("あなたは超人的に強い。(腕力+4)", "You are superhumanly strong (+4 STR).");
                }
                if (p_ptr->muta3 & MUT3_PUNY)
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ïµõ¼å¤À¡£(ÏÓÎÏ-4)";
-#else
-                       info[i++] = "You are puny (-4 STR).";
-#endif
-
+                       info[i++] = _("あなたは虚弱だ。(腕力-4)", "You are puny (-4 STR).");
                }
                if (p_ptr->muta3 & MUT3_HYPER_INT)
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÎǾ¤ÏÀ¸ÂÎ¥³¥ó¥Ô¥å¡¼¥¿¤À¡£(ÃÎǽ¡õ¸­¤µ+4)";
-#else
-                       info[i++] = "Your brain is a living computer (+4 INT/WIS).";
-#endif
-
+                       info[i++] = _("あなたの脳は生体コンピュータだ。(知能&賢さ+4)", "Your brain is a living computer (+4 INT/WIS).");
                }
                if (p_ptr->muta3 & MUT3_MORONIC)
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÏÀº¿ÀÇö¼å¤À¡£(ÃÎǽ¡õ¸­¤µ-4)";
-#else
-                       info[i++] = "You are moronic (-4 INT/WIS).";
-#endif
-
+                       info[i++] = _("あなたは精神薄弱だ。(知能&賢さ-4)", "You are moronic (-4 INT/WIS).");
                }
                if (p_ptr->muta3 & MUT3_RESILIENT)
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÏÈó¾ï¤Ë¥¿¥Õ¤À¡£(Âѵ×+4)";
-#else
-                       info[i++] = "You are very resilient (+4 CON).";
-#endif
-
+                       info[i++] = _("あなたは非常にタフだ。(耐久+4)", "You are very resilient (+4 CON).");
                }
                if (p_ptr->muta3 & MUT3_XTRA_FAT)
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¶Ëü¤ËÂÀ¤Ã¤Æ¤¤¤ë¡£(Âѵ×+2,¥¹¥Ô¡¼¥É-2)";
-#else
-                       info[i++] = "You are extremely fat (+2 CON, -2 speed).";
-#endif
-
+                       info[i++] = _("あなたは極端に太っている。(耐久+2,スピード-2)", "You are extremely fat (+2 CON, -2 speed).");
                }
                if (p_ptr->muta3 & MUT3_ALBINO)
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¥¢¥ë¥Ó¥Î¤À¡£(Âѵ×-4)";
-#else
-                       info[i++] = "You are albino (-4 CON).";
-#endif
-
+                       info[i++] = _("あなたはアルビノだ。(耐久-4)", "You are albino (-4 CON).");
                }
                if (p_ptr->muta3 & MUT3_FLESH_ROT)
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÎÆùÂΤÏÉåÇÔ¤·¤Æ¤¤¤ë¡£(Âѵ×-2,Ì¥ÎÏ-1)";
-#else
-                       info[i++] = "Your flesh is rotting (-2 CON, -1 CHR).";
-#endif
-
+                       info[i++] = _("あなたの肉体は腐敗している。(耐久-2,魅力-1)", "Your flesh is rotting (-2 CON, -1 CHR).");
                }
                if (p_ptr->muta3 & MUT3_SILLY_VOI)
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÎÀ¼¤Ï´ÖÈ´¤±¤Ê¥­¡¼¥­¡¼À¼¤À¡£(Ì¥ÎÏ-4)";
-#else
-                       info[i++] = "Your voice is a silly squeak (-4 CHR).";
-#endif
-
+                       info[i++] = _("あなたの声は間抜けなキーキー声だ。(魅力-4)", "Your voice is a silly squeak (-4 CHR).");
                }
                if (p_ptr->muta3 & MUT3_BLANK_FAC)
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¤Î¤Ã¤Ú¤é¤Ü¤¦¤À¡£(Ì¥ÎÏ-1)";
-#else
-                       info[i++] = "Your face is featureless (-1 CHR).";
-#endif
-
+                       info[i++] = _("あなたはのっぺらぼうだ。(魅力-1)", "Your face is featureless (-1 CHR).");
                }
                if (p_ptr->muta3 & MUT3_ILL_NORM)
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¸¸±Æ¤Ëʤ¤ï¤ì¤Æ¤¤¤ë¡£";
-#else
-                       info[i++] = "Your appearance is masked with illusion.";
-#endif
-
+                       info[i++] = _("あなたは幻影に覆われている。", "Your appearance is masked with illusion.");
                }
                if (p_ptr->muta3 & MUT3_XTRA_EYES)
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï;ʬ¤ËÆó¤Ä¤ÎÌܤò»ý¤Ã¤Æ¤¤¤ë¡£(õº÷+15)";
-#else
-                       info[i++] = "You have an extra pair of eyes (+15 search).";
-#endif
-
+                       info[i++] = _("あなたは余分に二つの目を持っている。(探索+15)", "You have an extra pair of eyes (+15 search).");
                }
                if (p_ptr->muta3 & MUT3_MAGIC_RES)
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÏËâË¡¤Ø¤ÎÂÑÀ­¤ò¤â¤Ã¤Æ¤¤¤ë¡£";
-#else
-                       info[i++] = "You are resistant to magic.";
-#endif
-
+                       info[i++] = _("あなたは魔法への耐性をもっている。", "You are resistant to magic.");
                }
                if (p_ptr->muta3 & MUT3_XTRA_NOIS)
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÏÊѤʲ»¤òȯ¤·¤Æ¤¤¤ë¡£(±£Ì©-3)";
-#else
-                       info[i++] = "You make a lot of strange noise (-3 stealth).";
-#endif
-
+                       info[i++] = _("あなたは変な音を発している。(隠密-3)", "You make a lot of strange noise (-3 stealth).");
                }
                if (p_ptr->muta3 & MUT3_INFRAVIS)
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÏÁÇÀ²¤é¤·¤¤ÀÖ³°Àþ»ëÎϤò»ý¤Ã¤Æ¤¤¤ë¡£(+3)";
-#else
-                       info[i++] = "You have remarkable infravision (+3).";
-#endif
-
+                       info[i++] = _("あなたは素晴らしい赤外線視力を持っている。(+3)", "You have remarkable infravision (+3).");
                }
                if (p_ptr->muta3 & MUT3_XTRA_LEGS)
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï;ʬ¤ËÆóËܤέ¤¬À¸¤¨¤Æ¤¤¤ë¡£(²Ã®+3)";
-#else
-                       info[i++] = "You have an extra pair of legs (+3 speed).";
-#endif
-
+                       info[i++] = _("あなたは余分に二本の足が生えている。(加速+3)", "You have an extra pair of legs (+3 speed).");
                }
                if (p_ptr->muta3 & MUT3_SHORT_LEG)
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Î­¤Ïû¤¤Æ͵¯¤À¡£(²Ã®-3)";
-#else
-                       info[i++] = "Your legs are short stubs (-3 speed).";
-#endif
-
+                       info[i++] = _("あなたの足は短い突起だ。(加速-3)", "Your legs are short stubs (-3 speed).");
                }
                if (p_ptr->muta3 & MUT3_ELEC_TOUC)
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Î·ì´É¤Ë¤ÏÅÅή¤¬Î®¤ì¤Æ¤¤¤ë¡£";
-#else
-                       info[i++] = "Electricity is running through your veins.";
-#endif
-
+                       info[i++] = _("あなたの血管には電流が流れている。", "Electricity is running through your veins.");
                }
                if (p_ptr->muta3 & MUT3_FIRE_BODY)
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÎÂΤϱê¤Ë¤Ä¤Ä¤Þ¤ì¤Æ¤¤¤ë¡£";
-#else
-                       info[i++] = "Your body is enveloped in flames.";
-#endif
+                       info[i++] = _("あなたの体は炎につつまれている。", "Your body is enveloped in flames.");
                }
                if (p_ptr->muta3 & MUT3_WART_SKIN)
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÎÈ©¤Ï¥¤¥Ü¤ËÈï¤ï¤ì¤Æ¤¤¤ë¡£(Ì¥ÎÏ-2, AC+5)";
-#else
-                       info[i++] = "Your skin is covered with warts (-2 CHR, +5 AC).";
-#endif
-
+                       info[i++] = _("あなたの肌はイボに被われている。(魅力-2, AC+5)", "Your skin is covered with warts (-2 CHR, +5 AC).");
                }
                if (p_ptr->muta3 & MUT3_SCALES)
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÎÈ©¤ÏÎڤˤʤäƤ¤¤ë¡£(Ì¥ÎÏ-1, AC+10)";
-#else
-                       info[i++] = "Your skin has turned into scales (-1 CHR, +10 AC).";
-#endif
-
+                       info[i++] = _("あなたの肌は鱗になっている。(魅力-1, AC+10)", "Your skin has turned into scales (-1 CHR, +10 AC).");
                }
                if (p_ptr->muta3 & MUT3_IRON_SKIN)
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÎÈ©¤ÏÅ´¤Ç¤Ç¤­¤Æ¤¤¤ë¡£(´ïÍÑ-1, AC+25)";
-#else
-                       info[i++] = "Your skin is made of steel (-1 DEX, +25 AC).";
-#endif
-
+                       info[i++] = _("あなたの肌は鉄でできている。(器用-1, AC+25)", "Your skin is made of steel (-1 DEX, +25 AC).");
                }
                if (p_ptr->muta3 & MUT3_WINGS)
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï±©¤ò»ý¤Ã¤Æ¤¤¤ë¡£";
-#else
-                       info[i++] = "You have wings.";
-#endif
-
+                       info[i++] = _("あなたは羽を持っている。", "You have wings.");
                }
                if (p_ptr->muta3 & MUT3_FEARLESS)
                {
@@ -1653,1188 +893,542 @@ info[i++] = "
                }
                if (p_ptr->muta3 & MUT3_LIMBER)
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÎÂΤÏÈó¾ï¤Ë¤·¤Ê¤ä¤«¤À¡£(´ïÍÑ+3)";
-#else
-                       info[i++] = "Your body is very limber (+3 DEX).";
-#endif
-
+                       info[i++] = _("あなたの体は非常にしなやかだ。(器用+3)", "Your body is very limber (+3 DEX).");
                }
                if (p_ptr->muta3 & MUT3_ARTHRITIS)
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¤¤¤Ä¤â´ØÀá¤ËÄˤߤò´¶¤¸¤Æ¤¤¤ë¡£(´ïÍÑ-3)";
-#else
-                       info[i++] = "Your joints ache constantly (-3 DEX).";
-#endif
-
+                       info[i++] = _("あなたはいつも関節に痛みを感じている。(器用-3)", "Your joints ache constantly (-3 DEX).");
                }
                if (p_ptr->muta3 & MUT3_VULN_ELEM)
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¸µÁǤι¶·â¤Ë¼å¤¤¡£";
-#else
-                       info[i++] = "You are susceptible to damage from the elements.";
-#endif
-
+                       info[i++] = _("あなたは元素の攻撃に弱い。", "You are susceptible to damage from the elements.");
                }
                if (p_ptr->muta3 & MUT3_MOTION)
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÎÆ°ºî¤ÏÀµ³Î¤ÇÎ϶¯¤¤¡£(±£Ì©+1)";
-#else
-                       info[i++] = "Your movements are precise and forceful (+1 STL).";
-#endif
-
+                       info[i++] = _("あなたの動作は正確で力強い。(隠密+1)", "Your movements are precise and forceful (+1 STL).");
                }
                if (p_ptr->muta3 & MUT3_GOOD_LUCK)
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÏÇò¤¤¥ª¡¼¥é¤Ë¤Ä¤Ä¤Þ¤ì¤Æ¤¤¤ë¡£";
-#else
-                       info[i++] = "There is a white aura surrounding you.";
-#endif
+                       info[i++] = _("あなたは白いオーラにつつまれている。", "There is a white aura surrounding you.");
                }
                if (p_ptr->muta3 & MUT3_BAD_LUCK)
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¹õ¤¤¥ª¡¼¥é¤Ë¤Ä¤Ä¤Þ¤ì¤Æ¤¤¤ë¡£";
-#else
-                       info[i++] = "There is a black aura surrounding you.";
-#endif
+                       info[i++] = _("あなたは黒いオーラにつつまれている。", "There is a black aura surrounding you.");
                }
        }
 
        if (p_ptr->blind)
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÏÌܤ¬¸«¤¨¤Ê¤¤¡£";
-#else
-               info[i++] = "You cannot see.";
-#endif
-
+               info[i++] = _("あなたは目が見えない。", "You cannot see.");
        }
        if (p_ptr->confused)
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ïº®Í𤷤Ƥ¤¤ë¡£";
-#else
-               info[i++] = "You are confused.";
-#endif
-
+               info[i++] = _("あなたは混乱している。", "You are confused.");
        }
        if (p_ptr->afraid)
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¶²Éݤ˿¯¤µ¤ì¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "You are terrified.";
-#endif
-
+               info[i++] = _("あなたは恐怖に侵されている。", "You are terrified.");
        }
        if (p_ptr->cut)
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï½Ð·ì¤·¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "You are bleeding.";
-#endif
-
+               info[i++] = _("あなたは出血している。", "You are bleeding.");
        }
        if (p_ptr->stun)
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¤â¤¦¤í¤¦¤È¤·¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "You are stunned.";
-#endif
-
+               info[i++] = _("あなたはもうろうとしている。", "You are stunned.");
        }
        if (p_ptr->poisoned)
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÏÆǤ˿¯¤µ¤ì¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "You are poisoned.";
-#endif
-
+               info[i++] = _("あなたは毒に侵されている。", "You are poisoned.");
        }
        if (p_ptr->image)
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¸¸³Ð¤ò¸«¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "You are hallucinating.";
-#endif
-
+               info[i++] = _("あなたは幻覚を見ている。", "You are hallucinating.");
        }
        if (p_ptr->cursed & TRC_TY_CURSE)
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¼Ù°­¤Ê±åÇ°¤ËÊñ¤Þ¤ì¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "You carry an ancient foul curse.";
-#endif
-
+               info[i++] = _("あなたは邪悪な怨念に包まれている。", "You carry an ancient foul curse.");
        }
        if (p_ptr->cursed & TRC_AGGRAVATE)
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¥â¥ó¥¹¥¿¡¼¤òÅܤ餻¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "You aggravate monsters.";
-#endif
-
+               info[i++] = _("あなたはモンスターを怒らせている。", "You aggravate monsters.");
        }
        if (p_ptr->cursed & TRC_DRAIN_EXP)
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï·Ð¸³ÃͤòµÛ¤ï¤ì¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "You are drained.";
-#endif
-
+               info[i++] = _("あなたは経験値を吸われている。", "You are drained.");
        }
        if (p_ptr->cursed & TRC_SLOW_REGEN)
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Î²óÉüÎϤÏÈó¾ï¤ËÃÙ¤¤¡£";
-#else
-               info[i++] = "You regenerate slowly.";
-#endif
-
+               info[i++] = _("あなたの回復力は非常に遅い。", "You regenerate slowly.");
        }
        if (p_ptr->cursed & TRC_ADD_L_CURSE)
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Î¼å¤¤¼ö¤¤¤ÏÁý¤¨¤ë¡£"; /* »ÃÄêŪ -- henkma */
-#else
-               info[i++] = "Your weak curses multiply.";
-#endif
-
+               info[i++] = _("あなたの弱い呪いは増える。","Your weak curses multiply."); /* 暫定的 -- henkma */
        }
        if (p_ptr->cursed & TRC_ADD_H_CURSE)
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Î¶¯¤¤¼ö¤¤¤ÏÁý¤¨¤ë¡£"; /* »ÃÄêŪ -- henkma */
-#else
-               info[i++] = "Your heavy curses multiply.";
-#endif
-
+               info[i++] = _("あなたの強い呪いは増える。","Your heavy curses multiply."); /* 暫定的 -- henkma */
        }
        if (p_ptr->cursed & TRC_CALL_ANIMAL)
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ïưʪ¤ËÁÀ¤ï¤ì¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "You attract animals.";
-#endif
-
+               info[i++] = _("あなたは動物に狙われている。", "You attract animals.");
        }
        if (p_ptr->cursed & TRC_CALL_DEMON)
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï°­Ëâ¤ËÁÀ¤ï¤ì¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "You attract demons.";
-#endif
-
+               info[i++] = _("あなたは悪魔に狙われている。", "You attract demons.");
        }
        if (p_ptr->cursed & TRC_CALL_DRAGON)
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¥É¥é¥´¥ó¤ËÁÀ¤ï¤ì¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "You attract dragons.";
-#endif
-
+               info[i++] = _("あなたはドラゴンに狙われている。", "You attract dragons.");
        }
        if (p_ptr->cursed & TRC_COWARDICE)
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï»þ¡¹²²É¤ˤʤ롣";
-#else
-               info[i++] = "You are subject to cowardice.";
-#endif
-
+               info[i++] = _("あなたは時々臆病になる。", "You are subject to cowardice.");
        }
        if (p_ptr->cursed & TRC_TELEPORT)
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Î°ÌÃ֤ϤҤ¸¤ç¤¦¤ËÉÔ°ÂÄê¤À¡£";
-#else
-               info[i++] = "Your position is very uncertain.";
-#endif
-
+               info[i++] = _("あなたの位置はひじょうに不安定だ。", "Your position is very uncertain.");
        }
        if (p_ptr->cursed & TRC_LOW_MELEE)
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÎÉð´ï¤Ï¹¶·â¤ò³°¤·¤ä¤¹¤¤¡£";
-#else
-               info[i++] = "Your weapon causes you to miss blows.";
-#endif
-
+               info[i++] = _("あなたの武器は攻撃を外しやすい。", "Your weapon causes you to miss blows.");
        }
        if (p_ptr->cursed & TRC_LOW_AC)
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¹¶·â¤ò¼õ¤±¤ä¤¹¤¤¡£";
-#else
-               info[i++] = "You are subject to be hit.";
-#endif
-
+               info[i++] = _("あなたは攻撃を受けやすい。", "You are subject to be hit.");
        }
        if (p_ptr->cursed & TRC_LOW_MAGIC)
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÏËâË¡¤ò¼ºÇÔ¤·¤ä¤¹¤¤¡£";
-#else
-               info[i++] = "You are subject to fail spellcasting.";
-#endif
-
+               info[i++] = _("あなたは魔法を失敗しやすい。", "You are subject to fail spellcasting.");
        }
        if (p_ptr->cursed & TRC_FAST_DIGEST)
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¤¹¤°¤ªÊ¢¤¬¤Ø¤ë¡£";
-#else
-               info[i++] = "You have a good appetite.";
-#endif
-
+               info[i++] = _("あなたはすぐお腹がへる。", "You have a good appetite.");
        }
        if (p_ptr->cursed & TRC_DRAIN_HP)
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÏÂÎÎϤòµÛ¤ï¤ì¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "You are drained.";
-#endif
-
+               info[i++] = _("あなたは体力を吸われている。", "You are drained.");
        }
        if (p_ptr->cursed & TRC_DRAIN_MANA)
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÏËâÎϤòµÛ¤ï¤ì¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "You brain is drained.";
-#endif
-
+               info[i++] = _("あなたは魔力を吸われている。", "You brain is drained.");
        }
        if (IS_BLESSED())
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¸øÀµ¤µ¤ò´¶¤¸¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "You feel rightous.";
-#endif
-
+               info[i++] = _("あなたは高潔さを感じている。", "You feel rightous.");
        }
        if (IS_HERO())
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¥Ò¡¼¥í¡¼µ¤Ê¬¤À¡£";
-#else
-               info[i++] = "You feel heroic.";
-#endif
-
+               info[i++] = _("あなたはヒーロー気分だ。", "You feel heroic.");
        }
        if (p_ptr->shero)
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÏÀïÆ®¶¸¤À¡£";
-#else
-               info[i++] = "You are in a battle rage.";
-#endif
-
+               info[i++] = _("あなたは戦闘狂だ。", "You are in a battle rage.");
        }
        if (p_ptr->protevil)
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¼Ù°­¤Ê¤ë¸ºß¤«¤é¼é¤é¤ì¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "You are protected from evil.";
-#endif
-
+               info[i++] = _("あなたは邪悪なる存在から守られている。", "You are protected from evil.");
        }
        if (p_ptr->shield)
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¿ÀÈë¤Î¥·¡¼¥ë¥É¤Ç¼é¤é¤ì¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "You are protected by a mystic shield.";
-#endif
-
+               info[i++] = _("あなたは神秘のシールドで守られている。", "You are protected by a mystic shield.");
        }
        if (IS_INVULN())
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¸½ºß½ý¤Ä¤«¤Ê¤¤¡£";
-#else
-               info[i++] = "You are temporarily invulnerable.";
-#endif
-
+               info[i++] = _("あなたは現在傷つかない。", "You are temporarily invulnerable.");
        }
        if (p_ptr->wraith_form)
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï°ì»þŪ¤ËÍ©Â⽤·¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "You are temporarily incorporeal.";
-#endif
-
+               info[i++] = _("あなたは一時的に幽体化している。", "You are temporarily incorporeal.");
        }
        if (p_ptr->special_attack & ATTACK_CONFUSE)
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Î¼ê¤ÏÀÖ¤¯µ±¤¤¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "Your hands are glowing dull red.";
-#endif
-
+               info[i++] = _("あなたの手は赤く輝いている。", "Your hands are glowing dull red.");
        }
        if (p_ptr->special_attack & ATTACK_FIRE)
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Î¼ê¤Ï²Ð±ê¤Ëʤ¤ï¤ì¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "You can strike the enemy with flame.";
-#endif
-
+               info[i++] = _("あなたの手は火炎に覆われている。", "You can strike the enemy with flame.");
        }
        if (p_ptr->special_attack & ATTACK_COLD)
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Î¼ê¤ÏÎ䵤¤Ëʤ¤ï¤ì¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "You can strike the enemy with cold.";
-#endif
-
+               info[i++] = _("あなたの手は冷気に覆われている。", "You can strike the enemy with cold.");
        }
        if (p_ptr->special_attack & ATTACK_ACID)
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Î¼ê¤Ï»À¤Ëʤ¤ï¤ì¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "You can strike the enemy with acid.";
-#endif
-
+               info[i++] = _("あなたの手は酸に覆われている。", "You can strike the enemy with acid.");
        }
        if (p_ptr->special_attack & ATTACK_ELEC)
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Î¼ê¤ÏÅÅ·â¤Ëʤ¤ï¤ì¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "You can strike the enemy with electoric shock.";
-#endif
-
+               info[i++] = _("あなたの手は電撃に覆われている。", "You can strike the enemy with electoric shock.");
        }
        if (p_ptr->special_attack & ATTACK_POIS)
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Î¼ê¤ÏÆǤËʤ¤ï¤ì¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "You can strike the enemy with poison.";
-#endif
-
+               info[i++] = _("あなたの手は毒に覆われている。", "You can strike the enemy with poison.");
        }
        switch (p_ptr->action)
        {
                case ACTION_SEARCH:
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¤Ò¤¸¤ç¤¦¤ËÃí°Õ¿¼¤¯¼þ°Ï¤ò¸«ÅϤ·¤Æ¤¤¤ë¡£";
-#else
-                       info[i++] = "You are looking around very carefully.";
-#endif
+                       info[i++] = _("あなたはひじょうに注意深く周囲を見渡している。", "You are looking around very carefully.");
                        break;
        }
        if (p_ptr->new_spells)
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¼öʸ¤äµ§¤ê¤ò³Ø¤Ö¤³¤È¤¬¤Ç¤­¤ë¡£";
-#else
-               info[i++] = "You can learn some spells/prayers.";
-#endif
-
+               info[i++] = _("あなたは呪文や祈りを学ぶことができる。", "You can learn some spells/prayers.");
        }
        if (p_ptr->word_recall)
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¤¹¤°¤Ëµ¢´Ô¤¹¤ë¤À¤í¤¦¡£";
-#else
-               info[i++] = "You will soon be recalled.";
-#endif
-
+               info[i++] = _("あなたはすぐに帰還するだろう。", "You will soon be recalled.");
        }
        if (p_ptr->alter_reality)
        {
-#ifdef JP
-               info[i++] = "¤¢¤Ê¤¿¤Ï¤¹¤°¤Ë¤³¤ÎÀ¤³¦¤òÎ¥¤ì¤ë¤À¤í¤¦¡£";
-#else
-               info[i++] = "You will soon be altered.";
-#endif
-
+               info[i++] = _("あなたはすぐにこの世界を離れるだろう。", "You will soon be altered.");
        }
        if (p_ptr->see_infra)
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÎÆ·¤ÏÀÖ³°Àþ¤ËÉÒ´¶¤Ç¤¢¤ë¡£";
-#else
-               info[i++] = "Your eyes are sensitive to infrared light.";
-#endif
-
+               info[i++] = _("あなたの瞳は赤外線に敏感である。", "Your eyes are sensitive to infrared light.");
        }
        if (p_ptr->see_inv)
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÏÆ©ÌÀ¤Ê¥â¥ó¥¹¥¿¡¼¤ò¸«¤ë¤³¤È¤¬¤Ç¤­¤ë¡£";
-#else
-               info[i++] = "You can see invisible creatures.";
-#endif
-
+               info[i++] = _("あなたは透明なモンスターを見ることができる。", "You can see invisible creatures.");
        }
-       if (p_ptr->ffall)
+       if (p_ptr->levitation)
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÏÈô¤Ö¤³¤È¤¬¤Ç¤­¤ë¡£";
-#else
-               info[i++] = "You can fly.";
-#endif
-
+               info[i++] = _("あなたは飛ぶことができる。", "You can fly.");
        }
        if (p_ptr->free_act)
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÏËãáãÃΤ餺¤Î¸ú²Ì¤ò»ý¤Ã¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "You have free action.";
-#endif
-
+               info[i++] = _("あなたは麻痺知らずの効果を持っている。", "You have free action.");
        }
        if (p_ptr->regenerate)
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÏÁÇÁ᤯ÂÎÎϤò²óÉü¤¹¤ë¡£";
-#else
-               info[i++] = "You regenerate quickly.";
-#endif
-
+               info[i++] = _("あなたは素早く体力を回復する。", "You regenerate quickly.");
        }
        if (p_ptr->slow_digest)
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¿©Íߤ¬¾¯¤Ê¤¤¡£";
-#else
-               info[i++] = "Your appetite is small.";
-#endif
-
+               info[i++] = _("あなたは食欲が少ない。", "Your appetite is small.");
        }
        if (p_ptr->telepathy)
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¥Æ¥ì¥Ñ¥·¡¼Ç½ÎϤò»ý¤Ã¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "You have ESP.";
-#endif
-
+               info[i++] = _("あなたはテレパシー能力を持っている。", "You have ESP.");
        }
        if (p_ptr->esp_animal)
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¼«Á³³¦¤ÎÀ¸Êª¤Î¸ºß¤ò´¶¤¸¤ëǽÎϤò»ý¤Ã¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "You sense natural creatures.";
-#endif
-
+               info[i++] = _("あなたは自然界の生物の存在を感じる能力を持っている。", "You sense natural creatures.");
        }
        if (p_ptr->esp_undead)
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¥¢¥ó¥Ç¥Ã¥É¤Î¸ºß¤ò´¶¤¸¤ëǽÎϤò»ý¤Ã¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "You sense undead.";
-#endif
-
+               info[i++] = _("あなたはアンデッドの存在を感じる能力を持っている。", "You sense undead.");
        }
        if (p_ptr->esp_demon)
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï°­Ëâ¤Î¸ºß¤ò´¶¤¸¤ëǽÎϤò»ý¤Ã¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "You sense demons.";
-#endif
-
+               info[i++] = _("あなたは悪魔の存在を感じる能力を持っている。", "You sense demons.");
        }
        if (p_ptr->esp_orc)
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¥ª¡¼¥¯¤Î¸ºß¤ò´¶¤¸¤ëǽÎϤò»ý¤Ã¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "You sense orcs.";
-#endif
-
+               info[i++] = _("あなたはオークの存在を感じる能力を持っている。", "You sense orcs.");
        }
        if (p_ptr->esp_troll)
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¥È¥í¥ë¤Î¸ºß¤ò´¶¤¸¤ëǽÎϤò»ý¤Ã¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "You sense trolls.";
-#endif
-
+               info[i++] = _("あなたはトロルの存在を感じる能力を持っている。", "You sense trolls.");
        }
        if (p_ptr->esp_giant)
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ïµð¿Í¤Î¸ºß¤ò´¶¤¸¤ëǽÎϤò»ý¤Ã¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "You sense giants.";
-#endif
-
+               info[i++] = _("あなたは巨人の存在を感じる能力を持っている。", "You sense giants.");
        }
        if (p_ptr->esp_dragon)
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¥É¥é¥´¥ó¤Î¸ºß¤ò´¶¤¸¤ëǽÎϤò»ý¤Ã¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "You sense dragons.";
-#endif
-
+               info[i++] = _("あなたはドラゴンの存在を感じる能力を持っている。", "You sense dragons.");
        }
        if (p_ptr->esp_human)
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¿Í´Ö¤Î¸ºß¤ò´¶¤¸¤ëǽÎϤò»ý¤Ã¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "You sense humans.";
-#endif
-
+               info[i++] = _("あなたは人間の存在を感じる能力を持っている。", "You sense humans.");
        }
        if (p_ptr->esp_evil)
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¼Ù°­¤ÊÀ¸¤­Êª¤Î¸ºß¤ò´¶¤¸¤ëǽÎϤò»ý¤Ã¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "You sense evil creatures.";
-#endif
-
+               info[i++] = _("あなたは邪悪な生き物の存在を感じる能力を持っている。", "You sense evil creatures.");
        }
        if (p_ptr->esp_good)
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÏÁ±ÎɤÊÀ¸¤­Êª¤Î¸ºß¤ò´¶¤¸¤ëǽÎϤò»ý¤Ã¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "You sense good creatures.";
-#endif
-
+               info[i++] = _("あなたは善良な生き物の存在を感じる能力を持っている。", "You sense good creatures.");
        }
        if (p_ptr->esp_nonliving)
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï³èÆ°¤¹¤ë̵À¸ÊªÂΤθºß¤ò´¶¤¸¤ëǽÎϤò»ý¤Ã¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "You sense non-living creatures.";
-#endif
-
+               info[i++] = _("あなたは活動する無生物体の存在を感じる能力を持っている。", "You sense non-living creatures.");
        }
        if (p_ptr->esp_unique)
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÏÆÃÊ̤ʶ¯Å¨¤Î¸ºß¤ò´¶¤¸¤ëǽÎϤò»ý¤Ã¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "You sense unique monsters.";
-#endif
-
+               info[i++] = _("あなたは特別な強敵の存在を感じる能力を持っている。", "You sense unique monsters.");
        }
-       if (p_ptr->hold_life)
+       if (p_ptr->hold_exp)
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¼«¸Ê¤ÎÀ¸Ì¿ÎϤò¤·¤Ã¤«¤ê¤È°Ý»ý¤¹¤ë¡£";
-#else
-               info[i++] = "You have a firm hold on your life force.";
-#endif
-
+               info[i++] = _("あなたは自己の経験値をしっかりと維持する。", "You have a firm hold on your experience.");
        }
        if (p_ptr->reflect)
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÏÌð¤ä¥Ü¥ë¥È¤òÈ¿¼Í¤¹¤ë¡£";
-#else
-               info[i++] = "You reflect arrows and bolts.";
-#endif
-
+               info[i++] = _("あなたは矢の呪文を反射する。", "You reflect bolt spells.");
        }
        if (p_ptr->sh_fire)
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï±ê¤Î¥ª¡¼¥é¤ËÊñ¤Þ¤ì¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "You are surrounded with a fiery aura.";
-#endif
-
+               info[i++] = _("あなたは炎のオーラに包まれている。", "You are surrounded with a fiery aura.");
        }
        if (p_ptr->sh_elec)
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÏÅŵ¤¤ËÊñ¤Þ¤ì¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "You are surrounded with electricity.";
-#endif
-
+               info[i++] = _("あなたは電気に包まれている。", "You are surrounded with electricity.");
        }
        if (p_ptr->sh_cold)
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÏÎ䵤¤Î¥ª¡¼¥é¤ËÊñ¤Þ¤ì¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "You are surrounded with an aura of coldness.";
-#endif
-
+               info[i++] = _("あなたは冷気のオーラに包まれている。", "You are surrounded with an aura of coldness.");
        }
        if (p_ptr->tim_sh_holy)
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÏÀ»¤Ê¤ë¥ª¡¼¥é¤ËÊñ¤Þ¤ì¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "You are surrounded with a holy aura.";
-#endif
-
+               info[i++] = _("あなたは聖なるオーラに包まれている。", "You are surrounded with a holy aura.");
        }
        if (p_ptr->tim_sh_touki)
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÏÆ®µ¤¤Î¥ª¡¼¥é¤ËÊñ¤Þ¤ì¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "You are surrounded with a energy aura.";
-#endif
-
+               info[i++] = _("あなたは闘気のオーラに包まれている。", "You are surrounded with a energy aura.");
        }
        if (p_ptr->anti_magic)
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÏÈ¿ËâË¡¥·¡¼¥ë¥É¤ËÊñ¤Þ¤ì¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "You are surrounded by an anti-magic shell.";
-#endif
-
+               info[i++] = _("あなたは反魔法シールドに包まれている。", "You are surrounded by an anti-magic shell.");
        }
        if (p_ptr->anti_tele)
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¥Æ¥ì¥Ý¡¼¥È¤Ç¤­¤Ê¤¤¡£";
-#else
-               info[i++] = "You cannot teleport.";
-#endif
-
+               info[i++] = _("あなたはテレポートできない。", "You cannot teleport.");
        }
        if (p_ptr->lite)
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Î¿ÈÂΤϸ÷¤Ã¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "You are carrying a permanent light.";
-#endif
-
+               info[i++] = _("あなたの身体は光っている。", "You are carrying a permanent light.");
        }
        if (p_ptr->warning)
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¹ÔÆ°¤ÎÁ°¤Ë´í¸±¤ò»¡ÃΤ¹¤ë¤³¤È¤¬¤Ç¤­¤ë¡£";
-#else
-               info[i++] = "You will be warned before dangerous actions.";
-#endif
-
+               info[i++] = _("あなたは行動の前に危険を察知することができる。", "You will be warned before dangerous actions.");
        }
        if (p_ptr->dec_mana)
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¾¯¤Ê¤¤¾ÃÈñËâÎϤÇËâË¡¤ò¾§¤¨¤ë¤³¤È¤¬¤Ç¤­¤ë¡£";
-#else
-               info[i++] = "You can cast spells with fewer mana points.";
-#endif
-
+               info[i++] = _("あなたは少ない消費魔力で魔法を唱えることができる。", "You can cast spells with fewer mana points.");
        }
        if (p_ptr->easy_spell)
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÏÄ㤤¼ºÇÔΨ¤ÇËâË¡¤ò¾§¤¨¤ë¤³¤È¤¬¤Ç¤­¤ë¡£";
-#else
-               info[i++] = "Fail rate of your magic is decreased.";
-#endif
-
+               info[i++] = _("あなたは低い失敗率で魔法を唱えることができる。", "Fail rate of your magic is decreased.");
        }
        if (p_ptr->heavy_spell)
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¹â¤¤¼ºÇÔΨ¤ÇËâË¡¤ò¾§¤¨¤Ê¤±¤ì¤Ð¤¤¤±¤Ê¤¤¡£";
-#else
-               info[i++] = "Fail rate of your magic is increased.";
-#endif
-
+               info[i++] = _("あなたは高い失敗率で魔法を唱えなければいけない。", "Fail rate of your magic is increased.");
        }
        if (p_ptr->mighty_throw)
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¶¯¤¯Êª¤òÅꤲ¤ë¡£";
-#else
-               info[i++] = "You can throw objects powerfully.";
-#endif
-
+               info[i++] = _("あなたは強く物を投げる。", "You can throw objects powerfully.");
        }
 
        if (p_ptr->immune_acid)
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï»À¤ËÂФ¹¤ë´°Á´¤Ê¤ëÌȱ֤ò»ý¤Ã¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "You are completely immune to acid.";
-#endif
-
+               info[i++] = _("あなたは酸に対する完全なる免疫を持っている。", "You are completely immune to acid.");
        }
        else if (p_ptr->resist_acid && IS_OPPOSE_ACID())
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï»À¤Ø¤Î¶¯ÎϤÊÂÑÀ­¤ò»ý¤Ã¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "You resist acid exceptionally well.";
-#endif
-
+               info[i++] = _("あなたは酸への強力な耐性を持っている。", "You resist acid exceptionally well.");
        }
        else if (p_ptr->resist_acid || IS_OPPOSE_ACID())
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï»À¤Ø¤ÎÂÑÀ­¤ò»ý¤Ã¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "You are resistant to acid.";
-#endif
-
+               info[i++] = _("あなたは酸への耐性を持っている。", "You are resistant to acid.");
        }
 
        if (p_ptr->immune_elec)
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÏÅÅ·â¤ËÂФ¹¤ë´°Á´¤Ê¤ëÌȱ֤ò»ý¤Ã¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "You are completely immune to lightning.";
-#endif
-
+               info[i++] = _("あなたは電撃に対する完全なる免疫を持っている。", "You are completely immune to lightning.");
        }
        else if (p_ptr->resist_elec && IS_OPPOSE_ELEC())
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÏÅÅ·â¤Ø¤Î¶¯ÎϤÊÂÑÀ­¤ò»ý¤Ã¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "You resist lightning exceptionally well.";
-#endif
-
+               info[i++] = _("あなたは電撃への強力な耐性を持っている。", "You resist lightning exceptionally well.");
        }
        else if (p_ptr->resist_elec || IS_OPPOSE_ELEC())
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÏÅÅ·â¤Ø¤ÎÂÑÀ­¤ò»ý¤Ã¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "You are resistant to lightning.";
-#endif
-
+               info[i++] = _("あなたは電撃への耐性を持っている。", "You are resistant to lightning.");
        }
 
        if (prace_is_(RACE_ANDROID) && !p_ptr->immune_elec)
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÏÅÅ·â¤Ë¼å¤¤¡£";
-#else
-               info[i++] = "You are susceptible to damage from lightning.";
-#endif
-
+               info[i++] = _("あなたは電撃に弱い。", "You are susceptible to damage from lightning.");
        }
 
        if (p_ptr->immune_fire)
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï²Ð¤ËÂФ¹¤ë´°Á´¤Ê¤ëÌȱ֤ò»ý¤Ã¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "You are completely immune to fire.";
-#endif
-
+               info[i++] = _("あなたは火に対する完全なる免疫を持っている。", "You are completely immune to fire.");
        }
        else if (p_ptr->resist_fire && IS_OPPOSE_FIRE())
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï²Ð¤Ø¤Î¶¯ÎϤÊÂÑÀ­¤ò»ý¤Ã¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "You resist fire exceptionally well.";
-#endif
-
+               info[i++] = _("あなたは火への強力な耐性を持っている。", "You resist fire exceptionally well.");
        }
        else if (p_ptr->resist_fire || IS_OPPOSE_FIRE())
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï²Ð¤Ø¤ÎÂÑÀ­¤ò»ý¤Ã¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "You are resistant to fire.";
-#endif
-
+               info[i++] = _("あなたは火への耐性を持っている。", "You are resistant to fire.");
        }
 
        if (prace_is_(RACE_ENT) && !p_ptr->immune_fire)
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï²Ð¤Ë¼å¤¤¡£";
-#else
-               info[i++] = "You are susceptible to damage from fire.";
-#endif
-
+               info[i++] = _("あなたは火に弱い。", "You are susceptible to damage from fire.");
        }
 
        if (p_ptr->immune_cold)
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÏÎ䵤¤ËÂФ¹¤ë´°Á´¤Ê¤ëÌȱ֤ò»ý¤Ã¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "You are completely immune to cold.";
-#endif
-
+               info[i++] = _("あなたは冷気に対する完全なる免疫を持っている。", "You are completely immune to cold.");
        }
        else if (p_ptr->resist_cold && IS_OPPOSE_COLD())
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÏÎ䵤¤Ø¤Î¶¯ÎϤÊÂÑÀ­¤ò»ý¤Ã¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "You resist cold exceptionally well.";
-#endif
-
+               info[i++] = _("あなたは冷気への強力な耐性を持っている。", "You resist cold exceptionally well.");
        }
        else if (p_ptr->resist_cold || IS_OPPOSE_COLD())
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÏÎ䵤¤Ø¤ÎÂÑÀ­¤ò»ý¤Ã¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "You are resistant to cold.";
-#endif
-
+               info[i++] = _("あなたは冷気への耐性を持っている。", "You are resistant to cold.");
        }
 
        if (p_ptr->resist_pois && IS_OPPOSE_POIS())
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÏÆǤؤζ¯ÎϤÊÂÑÀ­¤ò»ý¤Ã¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "You resist poison exceptionally well.";
-#endif
-
+               info[i++] = _("あなたは毒への強力な耐性を持っている。", "You resist poison exceptionally well.");
        }
        else if (p_ptr->resist_pois || IS_OPPOSE_POIS())
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÏÆǤؤÎÂÑÀ­¤ò»ý¤Ã¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "You are resistant to poison.";
-#endif
-
+               info[i++] = _("あなたは毒への耐性を持っている。", "You are resistant to poison.");
        }
 
        if (p_ptr->resist_lite)
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÏÁ®¸÷¤Ø¤ÎÂÑÀ­¤ò»ý¤Ã¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "You are resistant to bright light.";
-#endif
-
+               info[i++] = _("あなたは閃光への耐性を持っている。", "You are resistant to bright light.");
        }
 
        if (prace_is_(RACE_VAMPIRE) || prace_is_(RACE_S_FAIRY) || (p_ptr->mimic_form == MIMIC_VAMPIRE))
-       {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÏÁ®¸÷¤Ë¼å¤¤¡£";
-#else
-               info[i++] = "You are susceptible to damage from bright light.";
-#endif
-
+       {
+               info[i++] = _("あなたは閃光に弱い。", "You are susceptible to damage from bright light.");
        }
 
        if (prace_is_(RACE_VAMPIRE) || (p_ptr->mimic_form == MIMIC_VAMPIRE) || p_ptr->wraith_form)
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï°Å¹õ¤ËÂФ¹¤ë´°Á´¤Ê¤ëÌȱ֤ò»ý¤Ã¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "You are completely immune to darkness.";
-#endif
+               info[i++] = _("あなたは暗黒に対する完全なる免疫を持っている。", "You are completely immune to darkness.");
        }
 
        else if (p_ptr->resist_dark)
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï°Å¹õ¤Ø¤ÎÂÑÀ­¤ò»ý¤Ã¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "You are resistant to darkness.";
-#endif
-
+               info[i++] = _("あなたは暗黒への耐性を持っている。", "You are resistant to darkness.");
        }
        if (p_ptr->resist_conf)
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ïº®Íð¤Ø¤ÎÂÑÀ­¤ò»ý¤Ã¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "You are resistant to confusion.";
-#endif
-
+               info[i++] = _("あなたは混乱への耐性を持っている。", "You are resistant to confusion.");
        }
        if (p_ptr->resist_sound)
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï²»ÇȤξ׷â¤Ø¤ÎÂÑÀ­¤ò»ý¤Ã¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "You are resistant to sonic attacks.";
-#endif
-
+               info[i++] = _("あなたは音波の衝撃への耐性を持っている。", "You are resistant to sonic attacks.");
        }
        if (p_ptr->resist_disen)
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÏÎô²½¤Ø¤ÎÂÑÀ­¤ò»ý¤Ã¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "You are resistant to disenchantment.";
-#endif
-
+               info[i++] = _("あなたは劣化への耐性を持っている。", "You are resistant to disenchantment.");
        }
        if (p_ptr->resist_chaos)
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¥«¥ª¥¹¤ÎÎϤؤÎÂÑÀ­¤ò»ý¤Ã¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "You are resistant to chaos.";
-#endif
-
+               info[i++] = _("あなたはカオスの力への耐性を持っている。", "You are resistant to chaos.");
        }
        if (p_ptr->resist_shard)
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÏÇËÊҤι¶·â¤Ø¤ÎÂÑÀ­¤ò»ý¤Ã¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "You are resistant to blasts of shards.";
-#endif
-
+               info[i++] = _("あなたは破片の攻撃への耐性を持っている。", "You are resistant to blasts of shards.");
        }
        if (p_ptr->resist_nexus)
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï°ø²Ìº®Íð¤Î¹¶·â¤Ø¤ÎÂÑÀ­¤ò»ý¤Ã¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "You are resistant to nexus attacks.";
-#endif
-
+               info[i++] = _("あなたは因果混乱の攻撃への耐性を持っている。", "You are resistant to nexus attacks.");
        }
 
        if (prace_is_(RACE_SPECTRE))
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÏÃϹö¤ÎÎϤòµÛ¼ý¤Ç¤­¤ë¡£";
-#else
-               info[i++] = "You can drain nether forces.";
-#endif
-
+               info[i++] = _("あなたは地獄の力を吸収できる。", "You can drain nether forces.");
        }
        else if (p_ptr->resist_neth)
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÏÃϹö¤ÎÎϤؤÎÂÑÀ­¤ò»ý¤Ã¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "You are resistant to nether forces.";
-#endif
-
+               info[i++] = _("あなたは地獄の力への耐性を持っている。", "You are resistant to nether forces.");
        }
        if (p_ptr->resist_fear)
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÏÁ´¤¯¶²Éݤò´¶¤¸¤Ê¤¤¡£";
-#else
-               info[i++] = "You are completely fearless.";
-#endif
-
+               info[i++] = _("あなたは全く恐怖を感じない。", "You are completely fearless.");
        }
        if (p_ptr->resist_blind)
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÎÌܤÏÌÕÌܤؤÎÂÑÀ­¤ò»ý¤Ã¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "Your eyes are resistant to blindness.";
-#endif
-
+               info[i++] = _("あなたの目は盲目への耐性を持っている。", "Your eyes are resistant to blindness.");
        }
        if (p_ptr->resist_time)
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï»þ´ÖµÕž¤Ø¤ÎÂÑÀ­¤ò»ý¤Ã¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "You are resistant to time.";
-#endif
-
+               info[i++] = _("あなたは時間逆転への耐性を持っている。", "You are resistant to time.");
        }
 
        if (p_ptr->sustain_str)
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÎÏÓÎϤϰݻý¤µ¤ì¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "Your strength is sustained.";
-#endif
-
+               info[i++] = _("あなたの腕力は維持されている。", "Your strength is sustained.");
        }
        if (p_ptr->sustain_int)
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÎÃÎǽ¤Ï°Ý»ý¤µ¤ì¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "Your intelligence is sustained.";
-#endif
-
+               info[i++] = _("あなたの知能は維持されている。", "Your intelligence is sustained.");
        }
        if (p_ptr->sustain_wis)
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Î¸­¤µ¤Ï°Ý»ý¤µ¤ì¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "Your wisdom is sustained.";
-#endif
-
+               info[i++] = _("あなたの賢さは維持されている。", "Your wisdom is sustained.");
        }
        if (p_ptr->sustain_con)
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÎÂѵ×ÎϤϰݻý¤µ¤ì¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "Your constitution is sustained.";
-#endif
-
+               info[i++] = _("あなたの耐久力は維持されている。", "Your constitution is sustained.");
        }
        if (p_ptr->sustain_dex)
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Î´ïÍѤµ¤Ï°Ý»ý¤µ¤ì¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "Your dexterity is sustained.";
-#endif
-
+               info[i++] = _("あなたの器用さは維持されている。", "Your dexterity is sustained.");
        }
        if (p_ptr->sustain_chr)
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÎÌ¥ÎϤϰݻý¤µ¤ì¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "Your charisma is sustained.";
-#endif
-
+               info[i++] = _("あなたの魅力は維持されている。", "Your charisma is sustained.");
        }
 
        if (have_flag(flgs, TR_STR))
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÎÏÓÎϤÏÁõÈ÷¤Ë¤è¤Ã¤Æ±Æ¶Á¤ò¼õ¤±¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "Your strength is affected by your equipment.";
-#endif
-
+               info[i++] = _("あなたの腕力は装備によって影響を受けている。", "Your strength is affected by your equipment.");
        }
        if (have_flag(flgs, TR_INT))
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÎÃÎǽ¤ÏÁõÈ÷¤Ë¤è¤Ã¤Æ±Æ¶Á¤ò¼õ¤±¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "Your intelligence is affected by your equipment.";
-#endif
-
+               info[i++] = _("あなたの知能は装備によって影響を受けている。", "Your intelligence is affected by your equipment.");
        }
        if (have_flag(flgs, TR_WIS))
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Î¸­¤µ¤ÏÁõÈ÷¤Ë¤è¤Ã¤Æ±Æ¶Á¤ò¼õ¤±¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "Your wisdom is affected by your equipment.";
-#endif
-
+               info[i++] = _("あなたの賢さは装備によって影響を受けている。", "Your wisdom is affected by your equipment.");
        }
        if (have_flag(flgs, TR_DEX))
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Î´ïÍѤµ¤ÏÁõÈ÷¤Ë¤è¤Ã¤Æ±Æ¶Á¤ò¼õ¤±¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "Your dexterity is affected by your equipment.";
-#endif
-
+               info[i++] = _("あなたの器用さは装備によって影響を受けている。", "Your dexterity is affected by your equipment.");
        }
        if (have_flag(flgs, TR_CON))
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÎÂѵ×ÎϤÏÁõÈ÷¤Ë¤è¤Ã¤Æ±Æ¶Á¤ò¼õ¤±¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "Your constitution is affected by your equipment.";
-#endif
-
+               info[i++] = _("あなたの耐久力は装備によって影響を受けている。", "Your constitution is affected by your equipment.");
        }
        if (have_flag(flgs, TR_CHR))
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÎÌ¥ÎϤÏÁõÈ÷¤Ë¤è¤Ã¤Æ±Æ¶Á¤ò¼õ¤±¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "Your charisma is affected by your equipment.";
-#endif
-
+               info[i++] = _("あなたの魅力は装備によって影響を受けている。", "Your charisma is affected by your equipment.");
        }
 
        if (have_flag(flgs, TR_STEALTH))
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Î±£Ì©¹ÔưǽÎϤÏÁõÈ÷¤Ë¤è¤Ã¤Æ±Æ¶Á¤ò¼õ¤±¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "Your stealth is affected by your equipment.";
-#endif
-
+               info[i++] = _("あなたの隠密行動能力は装備によって影響を受けている。", "Your stealth is affected by your equipment.");
        }
        if (have_flag(flgs, TR_SEARCH))
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Îõº÷ǽÎϤÏÁõÈ÷¤Ë¤è¤Ã¤Æ±Æ¶Á¤ò¼õ¤±¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "Your searching ability is affected by your equipment.";
-#endif
-
+               info[i++] = _("あなたの探索能力は装備によって影響を受けている。", "Your searching ability is affected by your equipment.");
        }
        if (have_flag(flgs, TR_INFRA))
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÎÀÖ³°Àþ»ëÎϤÏÁõÈ÷¤Ë¤è¤Ã¤Æ±Æ¶Á¤ò¼õ¤±¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "Your infravision is affected by your equipment.";
-#endif
-
+               info[i++] = _("あなたの赤外線視力は装備によって影響を受けている。", "Your infravision is affected by your equipment.");
        }
        if (have_flag(flgs, TR_TUNNEL))
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÎºÎ·¡Ç½ÎϤÏÁõÈ÷¤Ë¤è¤Ã¤Æ±Æ¶Á¤ò¼õ¤±¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "Your digging ability is affected by your equipment.";
-#endif
-
+               info[i++] = _("あなたの採掘能力は装備によって影響を受けている。", "Your digging ability is affected by your equipment.");
        }
        if (have_flag(flgs, TR_SPEED))
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Î¥¹¥Ô¡¼¥É¤ÏÁõÈ÷¤Ë¤è¤Ã¤Æ±Æ¶Á¤ò¼õ¤±¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "Your speed is affected by your equipment.";
-#endif
-
+               info[i++] = _("あなたのスピードは装備によって影響を受けている。", "Your speed is affected by your equipment.");
        }
        if (have_flag(flgs, TR_BLOWS))
        {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Î¹¶·â®ÅÙ¤ÏÁõÈ÷¤Ë¤è¤Ã¤Æ±Æ¶Á¤ò¼õ¤±¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "Your attack speed is affected by your equipment.";
-#endif
-
+               info[i++] = _("あなたの攻撃速度は装備によって影響を受けている。", "Your attack speed is affected by your equipment.");
        }
 
 
@@ -2847,283 +1441,134 @@ info[i++] = "
                /* Indicate Blessing */
                if (have_flag(flgs, TR_BLESSED))
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÎÉð´ï¤Ï¿À¤Î½ËÊ¡¤ò¼õ¤±¤Æ¤¤¤ë¡£";
-#else
-                       info[i++] = "Your weapon has been blessed by the gods.";
-#endif
-
+                       info[i++] = _("あなたの武器は神の祝福を受けている。", "Your weapon has been blessed by the gods.");
                }
 
                if (have_flag(flgs, TR_CHAOTIC))
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÎÉð´ï¤Ï¥í¥°¥ë¥¹¤Îħ¤Î°À­¤ò¤â¤Ä¡£";
-#else
-                       info[i++] = "Your weapon is branded with the Sign of Logrus.";
-#endif
-
+                       info[i++] = _("あなたの武器はログルスの徴の属性をもつ。", "Your weapon is branded with the Sign of Logrus.");
                }
 
                /* Hack */
                if (have_flag(flgs, TR_IMPACT))
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÎÉð´ï¤ÏÂÇ·â¤ÇÃϿ̤òȯÀ¸¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¡£";
-#else
-                       info[i++] = "The impact of your weapon can cause earthquakes.";
-#endif
-
+                       info[i++] = _("あなたの武器は打撃で地震を発生することができる。", "The impact of your weapon can cause earthquakes.");
                }
 
                if (have_flag(flgs, TR_VORPAL))
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÎÉð´ï¤ÏÈó¾ï¤Ë±Ô¤¤¡£";
-#else
-                       info[i++] = "Your weapon is very sharp.";
-#endif
-
+                       info[i++] = _("あなたの武器は非常に鋭い。", "Your weapon is very sharp.");
                }
 
                if (have_flag(flgs, TR_VAMPIRIC))
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÎÉð´ï¤ÏŨ¤«¤éÀ¸Ì¿ÎϤòµÛ¼ý¤¹¤ë¡£";
-#else
-                       info[i++] = "Your weapon drains life from your foes.";
-#endif
-
+                       info[i++] = _("あなたの武器は敵から生命力を吸収する。", "Your weapon drains life from your foes.");
                }
 
                /* Special "Attack Bonuses" */
                if (have_flag(flgs, TR_BRAND_ACID))
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÎÉð´ï¤ÏŨ¤òÍϤ«¤¹¡£";
-#else
-                       info[i++] = "Your weapon melts your foes.";
-#endif
-
+                       info[i++] = _("あなたの武器は敵を溶かす。", "Your weapon melts your foes.");
                }
                if (have_flag(flgs, TR_BRAND_ELEC))
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÎÉð´ï¤ÏŨ¤ò´¶ÅŤµ¤»¤ë¡£";
-#else
-                       info[i++] = "Your weapon shocks your foes.";
-#endif
-
+                       info[i++] = _("あなたの武器は敵を感電させる。", "Your weapon shocks your foes.");
                }
                if (have_flag(flgs, TR_BRAND_FIRE))
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÎÉð´ï¤ÏŨ¤òdz¤ä¤¹¡£";
-#else
-                       info[i++] = "Your weapon burns your foes.";
-#endif
-
+                       info[i++] = _("あなたの武器は敵を燃やす。", "Your weapon burns your foes.");
                }
                if (have_flag(flgs, TR_BRAND_COLD))
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÎÉð´ï¤ÏŨ¤òÅà¤é¤»¤ë¡£";
-#else
-                       info[i++] = "Your weapon freezes your foes.";
-#endif
-
+                       info[i++] = _("あなたの武器は敵を凍らせる。", "Your weapon freezes your foes.");
                }
                if (have_flag(flgs, TR_BRAND_POIS))
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÎÉð´ï¤ÏŨ¤òÆǤǿ¯¤¹¡£";
-#else
-                       info[i++] = "Your weapon poisons your foes.";
-#endif
-
+                       info[i++] = _("あなたの武器は敵を毒で侵す。", "Your weapon poisons your foes.");
                }
 
                /* Special "slay" flags */
                if (have_flag(flgs, TR_KILL_ANIMAL))
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÎÉð´ï¤Ïưʪ¤ÎŷŨ¤Ç¤¢¤ë¡£";
-#else
-                       info[i++] = "Your weapon is a great bane of animals.";
-#endif
-
+                       info[i++] = _("あなたの武器は動物の天敵である。", "Your weapon is a great bane of animals.");
                }
                else if (have_flag(flgs, TR_SLAY_ANIMAL))
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÎÉð´ï¤Ïưʪ¤ËÂФ·¤Æ¶¯¤¤ÎϤòȯ´ø¤¹¤ë¡£";
-#else
-                       info[i++] = "Your weapon strikes at animals with extra force.";
-#endif
-
+                       info[i++] = _("あなたの武器は動物に対して強い力を発揮する。", "Your weapon strikes at animals with extra force.");
                }
                if (have_flag(flgs, TR_KILL_EVIL))
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÎÉð´ï¤Ï¼Ù°­¤Ê¤ë¸ºß¤ÎŷŨ¤Ç¤¢¤ë¡£";
-#else
-                       info[i++] = "Your weapon is a great bane of evil.";
-#endif
-
+                       info[i++] = _("あなたの武器は邪悪なる存在の天敵である。", "Your weapon is a great bane of evil.");
                }
                else if (have_flag(flgs, TR_SLAY_EVIL))
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÎÉð´ï¤Ï¼Ù°­¤Ê¤ë¸ºß¤ËÂФ·¤Æ¶¯¤¤ÎϤòȯ´ø¤¹¤ë¡£";
-#else
-                       info[i++] = "Your weapon strikes at evil with extra force.";
-#endif
-
+                       info[i++] = _("あなたの武器は邪悪なる存在に対して強い力を発揮する。", "Your weapon strikes at evil with extra force.");
                }
                if (have_flag(flgs, TR_KILL_HUMAN))
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÎÉð´ï¤Ï¿Í´Ö¤ÎŷŨ¤Ç¤¢¤ë¡£";
-#else
-                       info[i++] = "Your weapon is a great bane of humans.";
-#endif
-
+                       info[i++] = _("あなたの武器は人間の天敵である。", "Your weapon is a great bane of humans.");
                }
                else if (have_flag(flgs, TR_SLAY_HUMAN))
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÎÉð´ï¤Ï¿Í´Ö¤ËÂФ·¤ÆÆä˶¯¤¤ÎϤòȯ´ø¤¹¤ë¡£";
-#else
-                       info[i++] = "Your weapon is especially deadly against humans.";
-#endif
-
+                       info[i++] = _("あなたの武器は人間に対して特に強い力を発揮する。", "Your weapon is especially deadly against humans.");
                }
                if (have_flag(flgs, TR_KILL_UNDEAD))
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÎÉð´ï¤Ï¥¢¥ó¥Ç¥Ã¥É¤ÎŷŨ¤Ç¤¢¤ë¡£";
-#else
-                       info[i++] = "Your weapon is a great bane of undead.";
-#endif
-
+                       info[i++] = _("あなたの武器はアンデッドの天敵である。", "Your weapon is a great bane of undead.");
                }
                else if (have_flag(flgs, TR_SLAY_UNDEAD))
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÎÉð´ï¤Ï¥¢¥ó¥Ç¥Ã¥É¤ËÂФ·¤Æ¿ÀÀ»¤Ê¤ëÎϤòȯ´ø¤¹¤ë¡£";
-#else
-                       info[i++] = "Your weapon strikes at undead with holy wrath.";
-#endif
-
+                       info[i++] = _("あなたの武器はアンデッドに対して神聖なる力を発揮する。", "Your weapon strikes at undead with holy wrath.");
                }
                if (have_flag(flgs, TR_KILL_DEMON))
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÎÉð´ï¤Ï¥Ç¡¼¥â¥ó¤ÎŷŨ¤Ç¤¢¤ë¡£";
-#else
-                       info[i++] = "Your weapon is a great bane of demons.";
-#endif
-
+                       info[i++] = _("あなたの武器はデーモンの天敵である。", "Your weapon is a great bane of demons.");
                }
                else if (have_flag(flgs, TR_SLAY_DEMON))
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÎÉð´ï¤Ï¥Ç¡¼¥â¥ó¤ËÂФ·¤Æ¿ÀÀ»¤Ê¤ëÎϤòȯ´ø¤¹¤ë¡£";
-#else
-                       info[i++] = "Your weapon strikes at demons with holy wrath.";
-#endif
-
+                       info[i++] = _("あなたの武器はデーモンに対して神聖なる力を発揮する。", "Your weapon strikes at demons with holy wrath.");
                }
                if (have_flag(flgs, TR_KILL_ORC))
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÎÉð´ï¤Ï¥ª¡¼¥¯¤ÎŷŨ¤Ç¤¢¤ë¡£";
-#else
-                       info[i++] = "Your weapon is a great bane of orcs.";
-#endif
-
+                       info[i++] = _("あなたの武器はオークの天敵である。", "Your weapon is a great bane of orcs.");
                }
                else if (have_flag(flgs, TR_SLAY_ORC))
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÎÉð´ï¤Ï¥ª¡¼¥¯¤ËÂФ·¤ÆÆä˶¯¤¤ÎϤòȯ´ø¤¹¤ë¡£";
-#else
-                       info[i++] = "Your weapon is especially deadly against orcs.";
-#endif
-
+                       info[i++] = _("あなたの武器はオークに対して特に強い力を発揮する。", "Your weapon is especially deadly against orcs.");
                }
                if (have_flag(flgs, TR_KILL_TROLL))
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÎÉð´ï¤Ï¥È¥í¥ë¤ÎŷŨ¤Ç¤¢¤ë¡£";
-#else
-                       info[i++] = "Your weapon is a great bane of trolls.";
-#endif
-
+                       info[i++] = _("あなたの武器はトロルの天敵である。", "Your weapon is a great bane of trolls.");
                }
                else if (have_flag(flgs, TR_SLAY_TROLL))
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÎÉð´ï¤Ï¥È¥í¥ë¤ËÂФ·¤ÆÆä˶¯¤¤ÎϤòȯ´ø¤¹¤ë¡£";
-#else
-                       info[i++] = "Your weapon is especially deadly against trolls.";
-#endif
-
+                       info[i++] = _("あなたの武器はトロルに対して特に強い力を発揮する。", "Your weapon is especially deadly against trolls.");
                }
                if (have_flag(flgs, TR_KILL_GIANT))
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÎÉð´ï¤Ï¥¸¥ã¥¤¥¢¥ó¥È¤ÎŷŨ¤Ç¤¢¤ë¡£";
-#else
-                       info[i++] = "Your weapon is a great bane of giants.";
-#endif
-
+                       info[i++] = _("あなたの武器はジャイアントの天敵である。", "Your weapon is a great bane of giants.");
                }
                else if (have_flag(flgs, TR_SLAY_GIANT))
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÎÉð´ï¤Ï¥¸¥ã¥¤¥¢¥ó¥È¤ËÂФ·¤ÆÆä˶¯¤¤ÎϤòȯ´ø¤¹¤ë¡£";
-#else
-                       info[i++] = "Your weapon is especially deadly against giants.";
-#endif
-
+                       info[i++] = _("あなたの武器はジャイアントに対して特に強い力を発揮する。", "Your weapon is especially deadly against giants.");
                }
                /* Special "kill" flags */
                if (have_flag(flgs, TR_KILL_DRAGON))
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÎÉð´ï¤Ï¥É¥é¥´¥ó¤ÎŷŨ¤Ç¤¢¤ë¡£";
-#else
-                       info[i++] = "Your weapon is a great bane of dragons.";
-#endif
-
+                       info[i++] = _("あなたの武器はドラゴンの天敵である。", "Your weapon is a great bane of dragons.");
                }
                else if (have_flag(flgs, TR_SLAY_DRAGON))
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÎÉð´ï¤Ï¥É¥é¥´¥ó¤ËÂФ·¤ÆÆä˶¯¤¤ÎϤòȯ´ø¤¹¤ë¡£";
-#else
-                       info[i++] = "Your weapon is especially deadly against dragons.";
-#endif
-
+                       info[i++] = _("あなたの武器はドラゴンに対して特に強い力を発揮する。", "Your weapon is especially deadly against dragons.");
                }
 
                if (have_flag(flgs, TR_FORCE_WEAPON))
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÎÉð´ï¤ÏMP¤ò»È¤Ã¤Æ¹¶·â¤¹¤ë¡£";
-#else
-                       info[i++] = "Your weapon causes greate damages using your MP.";
-#endif
-
+                       info[i++] = _("あなたの武器はMPを使って攻撃する。", "Your weapon causes greate damages using your MP.");
                }
                if (have_flag(flgs, TR_THROW))
                {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÎÉð´ï¤ÏÅꤲ¤ä¤¹¤¤¡£";
-#else
-                       info[i++] = "Your weapon can be thrown well.";
-#endif
+                       info[i++] = _("あなたの武器は投げやすい。", "Your weapon can be thrown well.");
                }
        }
 
@@ -3135,12 +1580,7 @@ info[i++] = "
        for (k = 1; k < 24; k++) prt("", k, 13);
 
        /* Label the information */
-#ifdef JP
-prt("        ¤¢¤Ê¤¿¤Î¾õÂÖ:", 1, 15);
-#else
-       prt("     Your Attributes:", 1, 15);
-#endif
-
+       prt(_("        あなたの状態:", "     Your Attributes:"), 1, 15);
 
        /* We will print on top of the map (column 13) */
        for (k = 2, j = 0; j < i; j++)
@@ -3151,31 +1591,25 @@ prt("        
                /* Every 20 entries (lines 2 to 21), start over */
                if ((k == 22) && (j+1 < i))
                {
-#ifdef JP
-prt("-- Â³¤¯ --", k, 15);
-#else
-                       prt("-- more --", k, 15);
-#endif
-
+                       prt(_("-- 続く --", "-- more --"), k, 15);
                        inkey();
                        for (; k > 2; k--) prt("", k, 15);
                }
        }
 
        /* Pause */
-#ifdef JP
-prt("[²¿¤«¥­¡¼¤ò²¡¤¹¤È¥²¡¼¥à¤ËÌá¤ê¤Þ¤¹]", k, 13);
-#else
-       prt("[Press any key to continue]", k, 13);
-#endif
-
+       prt(_("[何かキーを押すとゲームに戻ります]", "[Press any key to continue]"), k, 13);
        inkey();
 
        /* Restore the screen */
        screen_load();
 }
 
-
+/*!
+ * @brief 魔法効果時間のターン数に基づいて表現IDを返す。
+ * @param dur 効果ターン数
+ * @return 効果時間の表現ID
+ */
 static int report_magics_aux(int dur)
 {
        if (dur <= 5)
@@ -3211,14 +1645,14 @@ static int report_magics_aux(int dur)
 static cptr report_magic_durations[] =
 {
 #ifdef JP
-"¤´¤¯Ã»¤¤´Ö",
-"¾¯¤·¤Î´Ö",
-"¤·¤Ð¤é¤¯¤Î´Ö",
-"¿¾¯Ä¹¤¤´Ö",
-"Ť¤´Ö",
-"Èó¾ï¤ËŤ¤´Ö",
-"¿®¤¸Æñ¤¤¤Û¤ÉŤ¤´Ö",
-"¥â¥ó¥¹¥¿¡¼¤ò¹¶·â¤¹¤ë¤Þ¤Ç"
+"ごく短い間",
+"少しの間",
+"しばらくの間",
+"多少長い間",
+"長い間",
+"非常に長い間",
+"信じ難いほど長い間",
+"モンスターを攻撃するまで"
 #else
        "for a short time",
        "for a little while",
@@ -3232,9 +1666,9 @@ static cptr report_magic_durations[] =
 
 };
 
-
-/*
- * Report all currently active magical effects.
+/*!
+ * @brief 現在の一時的効果一覧を返す / Report all currently active magical effects.
+ * @return なし
  */
 void report_magics(void)
 {
@@ -3247,202 +1681,102 @@ void report_magics(void)
        if (p_ptr->blind)
        {
                info2[i]  = report_magics_aux(p_ptr->blind);
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÏÌܤ¬¸«¤¨¤Ê¤¤¡£";
-#else
-               info[i++] = "You cannot see";
-#endif
-
+               info[i++] = _("あなたは目が見えない", "You cannot see");
        }
        if (p_ptr->confused)
        {
                info2[i]  = report_magics_aux(p_ptr->confused);
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ïº®Í𤷤Ƥ¤¤ë¡£";
-#else
-               info[i++] = "You are confused";
-#endif
-
+               info[i++] = _("あなたは混乱している", "You are confused");
        }
        if (p_ptr->afraid)
        {
                info2[i]  = report_magics_aux(p_ptr->afraid);
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¶²Éݤ˿¯¤µ¤ì¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "You are terrified";
-#endif
-
+               info[i++] = _("あなたは恐怖に侵されている", "You are terrified");
        }
        if (p_ptr->poisoned)
        {
                info2[i]  = report_magics_aux(p_ptr->poisoned);
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÏÆǤ˿¯¤µ¤ì¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "You are poisoned";
-#endif
-
+               info[i++] = _("あなたは毒に侵されている", "You are poisoned");
        }
        if (p_ptr->image)
        {
                info2[i]  = report_magics_aux(p_ptr->image);
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¸¸³Ð¤ò¸«¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "You are hallucinating";
-#endif
-
+               info[i++] = _("あなたは幻覚を見ている", "You are hallucinating");
        }
        if (p_ptr->blessed)
        {
                info2[i]  = report_magics_aux(p_ptr->blessed);
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¸øÀµ¤µ¤ò´¶¤¸¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "You feel rightous";
-#endif
-
+               info[i++] = _("あなたは高潔さを感じている", "You feel rightous");
        }
        if (p_ptr->hero)
        {
                info2[i]  = report_magics_aux(p_ptr->hero);
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¥Ò¡¼¥í¡¼µ¤Ê¬¤À¡£";
-#else
-               info[i++] = "You feel heroic";
-#endif
-
+               info[i++] = _("あなたはヒーロー気分だ", "You feel heroic");
        }
        if (p_ptr->shero)
        {
                info2[i]  = report_magics_aux(p_ptr->shero);
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÏÀïÆ®¶¸¤À¡£";
-#else
-               info[i++] = "You are in a battle rage";
-#endif
-
+               info[i++] = _("あなたは戦闘狂だ", "You are in a battle rage");
        }
        if (p_ptr->protevil)
        {
                info2[i]  = report_magics_aux(p_ptr->protevil);
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¼Ù°­¤Ê¤ë¸ºß¤«¤é¼é¤é¤ì¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "You are protected from evil";
-#endif
-
+               info[i++] = _("あなたは邪悪なる存在から守られている", "You are protected from evil");
        }
        if (p_ptr->shield)
        {
                info2[i]  = report_magics_aux(p_ptr->shield);
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¿ÀÈë¤Î¥·¡¼¥ë¥É¤Ç¼é¤é¤ì¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "You are protected by a mystic shield";
-#endif
-
+               info[i++] = _("あなたは神秘のシールドで守られている", "You are protected by a mystic shield");
        }
        if (p_ptr->invuln)
        {
                info2[i]  = report_magics_aux(p_ptr->invuln);
-#ifdef JP
-info[i++] = "̵Ũ¤Ç¤¤¤é¤ì¤ë¡£";
-#else
-               info[i++] = "You are invulnerable";
-#endif
-
+               info[i++] = _("あなたは無敵だ", "You are invulnerable");
        }
        if (p_ptr->wraith_form)
        {
                info2[i]  = report_magics_aux(p_ptr->wraith_form);
-#ifdef JP
-info[i++] = "Í©Âβ½¤Ç¤­¤ë¡£";
-#else
-               info[i++] = "You are incorporeal";
-#endif
-
+               info[i++] = _("あなたは幽体化している", "You are incorporeal");
        }
        if (p_ptr->special_attack & ATTACK_CONFUSE)
        {
                info2[i]  = 7;
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Î¼ê¤ÏÀÖ¤¯µ±¤¤¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "Your hands are glowing dull red.";
-#endif
-
+               info[i++] = _("あなたの手は赤く輝いている", "Your hands are glowing dull red.");
        }
        if (p_ptr->word_recall)
        {
                info2[i]  = report_magics_aux(p_ptr->word_recall);
-#ifdef JP
-               info[i++] = "¤³¤Î¸åµ¢´Ô¤Î¾Û¤òȯư¤¹¤ë¡£";
-#else
-               info[i++] = "You are waiting to be recalled";
-#endif
-
+               info[i++] = _("この後帰還の詔が発動する", "You are waiting to be recalled");
        }
        if (p_ptr->alter_reality)
        {
                info2[i]  = report_magics_aux(p_ptr->alter_reality);
-#ifdef JP
-               info[i++] = "¤³¤Î¸å¸½¼ÂÊÑÍƤ¬È¯Æ°¤¹¤ë¡£";
-#else
-               info[i++] = "You waiting to be altered";
-#endif
-
+               info[i++] = _("この後現実変容が発動する", "You waiting to be altered");
        }
        if (p_ptr->oppose_acid)
        {
                info2[i]  = report_magics_aux(p_ptr->oppose_acid);
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï»À¤Ø¤ÎÂÑÀ­¤ò»ý¤Ã¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "You are resistant to acid";
-#endif
-
+               info[i++] = _("あなたは酸への耐性を持っている", "You are resistant to acid");
        }
        if (p_ptr->oppose_elec)
        {
                info2[i]  = report_magics_aux(p_ptr->oppose_elec);
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÏÅÅ·â¤Ø¤ÎÂÑÀ­¤ò»ý¤Ã¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "You are resistant to lightning";
-#endif
-
+               info[i++] = _("あなたは電撃への耐性を持っている", "You are resistant to lightning");
        }
        if (p_ptr->oppose_fire)
        {
                info2[i]  = report_magics_aux(p_ptr->oppose_fire);
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï²Ð¤Ø¤ÎÂÑÀ­¤ò»ý¤Ã¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "You are resistant to fire";
-#endif
-
+               info[i++] = _("あなたは火への耐性を持っている", "You are resistant to fire");
        }
        if (p_ptr->oppose_cold)
        {
                info2[i]  = report_magics_aux(p_ptr->oppose_cold);
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÏÎ䵤¤Ø¤ÎÂÑÀ­¤ò»ý¤Ã¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "You are resistant to cold";
-#endif
-
+               info[i++] = _("あなたは冷気への耐性を持っている", "You are resistant to cold");
        }
        if (p_ptr->oppose_pois)
        {
                info2[i]  = report_magics_aux(p_ptr->oppose_pois);
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤ÏÆǤؤÎÂÑÀ­¤ò»ý¤Ã¤Æ¤¤¤ë¡£";
-#else
-               info[i++] = "You are resistant to poison";
-#endif
-
+               info[i++] = _("あなたは毒への耐性を持っている", "You are resistant to poison");
        }
 
        /* Save the screen */
@@ -3452,55 +1786,42 @@ info[i++] = "
        for (k = 1; k < 24; k++) prt("", k, 13);
 
        /* Label the information */
-#ifdef JP
-prt("           ËâË¡        :", 1, 15);
-#else
-       prt("     Your Current Magic:", 1, 15);
-#endif
+       prt(_("    現在かかっている魔法     :", "     Your Current Magic:"), 1, 15);
 
 
        /* We will print on top of the map (column 13) */
        for (k = 2, j = 0; j < i; j++)
        {
                /* Show the info */
-#ifdef JP
-sprintf(Dummy, "¤¢¤Ê¤¿¤Ï%s%s", info[j],
-#else
-               sprintf(Dummy, "%s %s.", info[j],
-#endif
-
+               sprintf(Dummy, _("%-28s : 期間 - %s ", "%s %s."), info[j],
                        report_magic_durations[info2[j]]);
                prt(Dummy, k++, 15);
 
                /* Every 20 entries (lines 2 to 21), start over */
                if ((k == 22) && (j + 1 < i))
                {
-#ifdef JP
-prt("-- Â³¤¯ --", k, 15);
-#else
-                       prt("-- more --", k, 15);
-#endif
-
+                       prt(_("-- 続く --", "-- more --"), k, 15);
                        inkey();
                        for (; k > 2; k--) prt("", k, 15);
                }
        }
 
        /* Pause */
-#ifdef JP
-prt("[²¿¤«¥­¡¼¤ò²¡¤¹¤È¥²¡¼¥à¤ËÌá¤ê¤Þ¤¹]", k, 13);
-#else
-       prt("[Press any key to continue]", k, 13);
-#endif
-
+       prt(_("[何かキーを押すとゲームに戻ります]", "[Press any key to continue]"), k, 13);
        inkey();
 
        /* Restore the screen */
        screen_load();
 }
 
-
-static bool detect_feat_flag(int range, int flag, bool known)
+/*!
+ * @brief プレイヤー周辺の地形を感知する
+ * @param range 効果範囲
+ * @param flag 特定地形ID
+ * @param known 地形から危険フラグを外すならTRUE
+ * @return 効力があった場合TRUEを返す
+ */
+static bool detect_feat_flag(POSITION range, int flag, bool known)
 {
        int       x, y;
        bool      detect = FALSE;
@@ -3513,7 +1834,7 @@ static bool detect_feat_flag(int range, int flag, bool known)
        {
                for (x = 1; x <= cur_wid - 1; x++)
                {
-                       int dist = distance(py, px, y, x);
+                       int dist = distance(p_ptr->y, p_ptr->x, y, x);
                        if (dist > range) continue;
 
                        /* Access the grid */
@@ -3535,7 +1856,7 @@ static bool detect_feat_flag(int range, int flag, bool known)
                        }
 
                        /* Detect flags */
-                       if (have_flag(f_flags_grid(c_ptr), flag))
+                       if (cave_have_flag_grid(c_ptr, flag))
                        {
                                /* Detect secrets */
                                disclose_grid(y, x);
@@ -3557,25 +1878,24 @@ static bool detect_feat_flag(int range, int flag, bool known)
 }
 
 
-/*
- * Detect all traps on current panel
+/*!
+ * @brief プレイヤー周辺のトラップを感知する / Detect all traps on current panel
+ * @param range 効果範囲
+ * @param known 感知外範囲を超える警告フラグを立てる場合TRUEを返す
+ * @return 効力があった場合TRUEを返す
  */
-bool detect_traps(int range, bool known)
+bool detect_traps(POSITION range, bool known)
 {
        bool detect = detect_feat_flag(range, FF_TRAP, known);
 
        if (known) p_ptr->dtrap = TRUE;
 
-       if ((p_ptr->pclass == CLASS_BARD) && (p_ptr->magic_num1[0] > MUSIC_DETECT)) detect = FALSE;
+       if (music_singing(MUSIC_DETECT) && p_ptr->magic_num1[2] > 0) detect = FALSE;
 
        /* Describe */
        if (detect)
        {
-#ifdef JP
-               msg_print("¥È¥é¥Ã¥×¤Î¸ºß¤ò´¶¤¸¤È¤Ã¤¿¡ª");
-#else
-               msg_print("You sense the presence of traps!");
-#endif
+               msg_print(_("トラップの存在を感じとった!", "You sense the presence of traps!"));
        }
 
        /* Result */
@@ -3583,23 +1903,21 @@ bool detect_traps(int range, bool known)
 }
 
 
-/*
- * Detect all doors on current panel
+/*!
+ * @brief プレイヤー周辺のドアを感知する / Detect all doors on current panel
+ * @param range 効果範囲
+ * @return 効力があった場合TRUEを返す
  */
-bool detect_doors(int range)
+bool detect_doors(POSITION range)
 {
        bool detect = detect_feat_flag(range, FF_DOOR, TRUE);
 
-       if ((p_ptr->pclass == CLASS_BARD) && (p_ptr->magic_num1[0] > MUSIC_DETECT)) detect = FALSE;
+       if (music_singing(MUSIC_DETECT) && p_ptr->magic_num1[2] > 0) detect = FALSE;
 
        /* Describe */
        if (detect)
        {
-#ifdef JP
-               msg_print("¥É¥¢¤Î¸ºß¤ò´¶¤¸¤È¤Ã¤¿¡ª");
-#else
-               msg_print("You sense the presence of doors!");
-#endif
+               msg_print(_("ドアの存在を感じとった!", "You sense the presence of doors!"));
        }
 
        /* Result */
@@ -3607,23 +1925,21 @@ bool detect_doors(int range)
 }
 
 
-/*
- * Detect all stairs on current panel
+/*!
+ * @brief プレイヤー周辺の階段を感知する / Detect all stairs on current panel
+ * @param range 効果範囲
+ * @return 効力があった場合TRUEを返す
  */
-bool detect_stairs(int range)
+bool detect_stairs(POSITION range)
 {
        bool detect = detect_feat_flag(range, FF_STAIRS, TRUE);
 
-       if ((p_ptr->pclass == CLASS_BARD) && (p_ptr->magic_num1[0] > MUSIC_DETECT)) detect = FALSE;
+       if (music_singing(MUSIC_DETECT) && p_ptr->magic_num1[2] > 0) detect = FALSE;
 
        /* Describe */
        if (detect)
        {
-#ifdef JP
-               msg_print("³¬Ãʤθºß¤ò´¶¤¸¤È¤Ã¤¿¡ª");
-#else
-               msg_print("You sense the presence of stairs!");
-#endif
+               msg_print(_("階段の存在を感じとった!", "You sense the presence of stairs!"));
        }
 
        /* Result */
@@ -3631,23 +1947,21 @@ bool detect_stairs(int range)
 }
 
 
-/*
- * Detect any treasure on the current panel
+/*!
+ * @brief プレイヤー周辺の地形財宝を感知する / Detect any treasure on the current panel
+ * @param range 効果範囲
+ * @return 効力があった場合TRUEを返す
  */
-bool detect_treasure(int range)
+bool detect_treasure(POSITION range)
 {
        bool detect = detect_feat_flag(range, FF_HAS_GOLD, TRUE);
 
-       if ((p_ptr->pclass == CLASS_BARD) && (p_ptr->magic_num1[0] > MUSIC_DETECT+6)) detect = FALSE;
+       if (music_singing(MUSIC_DETECT) && p_ptr->magic_num1[2] > 6) detect = FALSE;
 
        /* Describe */
        if (detect)
        {
-#ifdef JP
-               msg_print("Ë䢤µ¤ì¤¿ºâÊõ¤Î¸ºß¤ò´¶¤¸¤È¤Ã¤¿¡ª");
-#else
-               msg_print("You sense the presence of buried treasure!");
-#endif
+               msg_print(_("埋蔵された財宝の存在を感じとった!", "You sense the presence of buried treasure!"));
        }
 
        /* Result */
@@ -3655,13 +1969,15 @@ bool detect_treasure(int range)
 }
 
 
-/*
- * Detect all "gold" objects on the current panel
+/*!
+ * @brief プレイヤー周辺のアイテム財宝を感知する / Detect all "gold" objects on the current panel
+ * @param range 効果範囲
+ * @return 効力があった場合TRUEを返す
  */
-bool detect_objects_gold(int range)
+bool detect_objects_gold(POSITION range)
 {
        int i, y, x;
-       int range2 = range;
+       POSITION range2 = range;
 
        bool detect = FALSE;
 
@@ -3683,7 +1999,7 @@ bool detect_objects_gold(int range)
                x = o_ptr->ix;
 
                /* Only detect nearby objects */
-               if (distance(py, px, y, x) > range2) continue;
+               if (distance(p_ptr->y, p_ptr->x, y, x) > range2) continue;
 
                /* Detect "gold" objects */
                if (o_ptr->tval == TV_GOLD)
@@ -3699,17 +2015,12 @@ bool detect_objects_gold(int range)
                }
        }
 
-       if ((p_ptr->pclass == CLASS_BARD) && (p_ptr->magic_num1[0] > MUSIC_DETECT+6)) detect = FALSE;
+       if (music_singing(MUSIC_DETECT) && p_ptr->magic_num1[2] > 6) detect = FALSE;
 
        /* Describe */
        if (detect)
        {
-#ifdef JP
-msg_print("ºâÊõ¤Î¸ºß¤ò´¶¤¸¤È¤Ã¤¿¡ª");
-#else
-               msg_print("You sense the presence of treasure!");
-#endif
-
+               msg_print(_("財宝の存在を感じとった!", "You sense the presence of treasure!"));
        }
 
        if (detect_monsters_string(range, "$"))
@@ -3722,13 +2033,15 @@ msg_print("
 }
 
 
-/*
- * Detect all "normal" objects on the current panel
+/*!
+ * @brief 通常のアイテムオブジェクトを感知する / Detect all "normal" objects on the current panel
+ * @param range 効果範囲
+ * @return 効力があった場合TRUEを返す
  */
-bool detect_objects_normal(int range)
+bool detect_objects_normal(POSITION range)
 {
        int i, y, x;
-       int range2 = range;
+       POSITION range2 = range;
 
        bool detect = FALSE;
 
@@ -3750,7 +2063,7 @@ bool detect_objects_normal(int range)
                x = o_ptr->ix;
 
                /* Only detect nearby objects */
-               if (distance(py, px, y, x) > range2) continue;
+               if (distance(p_ptr->y, p_ptr->x, y, x) > range2) continue;
 
                /* Detect "real" objects */
                if (o_ptr->tval != TV_GOLD)
@@ -3766,17 +2079,12 @@ bool detect_objects_normal(int range)
                }
        }
 
-       if ((p_ptr->pclass == CLASS_BARD) && (p_ptr->magic_num1[0] > MUSIC_DETECT+6)) detect = FALSE;
+       if (music_singing(MUSIC_DETECT) && p_ptr->magic_num1[2] > 6) detect = FALSE;
 
        /* Describe */
        if (detect)
        {
-#ifdef JP
-msg_print("¥¢¥¤¥Æ¥à¤Î¸ºß¤ò´¶¤¸¤È¤Ã¤¿¡ª");
-#else
-               msg_print("You sense the presence of objects!");
-#endif
-
+               msg_print(_("アイテムの存在を感じとった!", "You sense the presence of objects!"));
        }
 
        if (detect_monsters_string(range, "!=?|/`"))
@@ -3789,16 +2097,20 @@ msg_print("
 }
 
 
-/*
- * Detect all "magic" objects on the current panel.
- *
+/*!
+ * @brief 魔法効果のあるのアイテムオブジェクトを感知する / Detect all "magic" objects on the current panel.
+ * @param range 効果範囲
+ * @return 効力があった場合TRUEを返す
+ * @details
+ * <pre>
  * This will light up all spaces with "magic" items, including artifacts,
  * ego-items, potions, scrolls, books, rods, wands, staves, amulets, rings,
  * and "enchanted" items of the "good" variety.
  *
  * It can probably be argued that this function is now too powerful.
+ * </pre>
  */
-bool detect_objects_magic(int range)
+bool detect_objects_magic(POSITION range)
 {
        int i, y, x, tv;
 
@@ -3822,15 +2134,14 @@ bool detect_objects_magic(int range)
                x = o_ptr->ix;
 
                /* Only detect nearby objects */
-               if (distance(py, px, y, x) > range) continue;
+               if (distance(p_ptr->y, p_ptr->x, y, x) > range) continue;
 
                /* Examine the tval */
                tv = o_ptr->tval;
 
                /* Artifacts, misc magic items, or enchanted wearables */
-               if (artifact_p(o_ptr) ||
-                       ego_item_p(o_ptr) ||
-                       o_ptr->art_name ||
+               if (object_is_artifact(o_ptr) ||
+                       object_is_ego(o_ptr) ||
                    (tv == TV_WHISTLE) ||
                    (tv == TV_AMULET) ||
                        (tv == TV_RING) ||
@@ -3846,11 +2157,12 @@ bool detect_objects_magic(int range)
                    (tv == TV_DEATH_BOOK) ||
                    (tv == TV_TRUMP_BOOK) ||
                        (tv == TV_ARCANE_BOOK) ||
-                       (tv == TV_ENCHANT_BOOK) ||
+                       (tv == TV_CRAFT_BOOK) ||
                        (tv == TV_DAEMON_BOOK) ||
                        (tv == TV_CRUSADE_BOOK) ||
                        (tv == TV_MUSIC_BOOK) ||
                        (tv == TV_HISSATSU_BOOK) ||
+                       (tv == TV_HEX_BOOK) ||
                    ((o_ptr->to_a > 0) || (o_ptr->to_h + o_ptr->to_d > 0)))
                {
                        /* Memorize the item */
@@ -3867,12 +2179,7 @@ bool detect_objects_magic(int range)
        /* Describe */
        if (detect)
        {
-#ifdef JP
-msg_print("ËâË¡¤Î¥¢¥¤¥Æ¥à¤Î¸ºß¤ò´¶¤¸¤È¤Ã¤¿¡ª");
-#else
-               msg_print("You sense the presence of magic objects!");
-#endif
-
+               msg_print(_("魔法のアイテムの存在を感じとった!", "You sense the presence of magic objects!"));
        }
 
        /* Return result */
@@ -3880,12 +2187,15 @@ msg_print("
 }
 
 
-/*
- * Detect all "normal" monsters on the current panel
+/*!
+ * @brief 一般のモンスターを感知する / Detect all "normal" monsters on the current panel
+ * @param range 効果範囲
+ * @return 効力があった場合TRUEを返す
  */
-bool detect_monsters_normal(int range)
+bool detect_monsters_normal(POSITION range)
 {
-       int i, y, x;
+       MONSTER_IDX i;
+       POSITION y, x;
 
        bool flag = FALSE;
 
@@ -3905,7 +2215,7 @@ bool detect_monsters_normal(int range)
                x = m_ptr->fx;
 
                /* Only detect nearby monsters */
-               if (distance(py, px, y, x) > range) continue;
+               if (distance(p_ptr->y, p_ptr->x, y, x) > range) continue;
 
                /* Detect all non-invisible monsters */
                if (!(r_ptr->flags2 & RF2_INVISIBLE) || p_ptr->see_inv)
@@ -3924,18 +2234,13 @@ bool detect_monsters_normal(int range)
                }
        }
 
-       if ((p_ptr->pclass == CLASS_BARD) && (p_ptr->magic_num1[0] > MUSIC_DETECT+3)) flag = FALSE;
+       if (music_singing(MUSIC_DETECT) && p_ptr->magic_num1[2] > 3) flag = FALSE;
 
        /* Describe */
        if (flag)
        {
                /* Describe result */
-#ifdef JP
-msg_print("¥â¥ó¥¹¥¿¡¼¤Î¸ºß¤ò´¶¤¸¤È¤Ã¤¿¡ª");
-#else
-               msg_print("You sense the presence of monsters!");
-#endif
-
+               msg_print(_("モンスターの存在を感じとった!", "You sense the presence of monsters!"));
        }
 
        /* Result */
@@ -3943,12 +2248,15 @@ msg_print("
 }
 
 
-/*
- * Detect all "invisible" monsters around the player
+/*!
+ * @brief 不可視のモンスターを感知する / Detect all "invisible" monsters around the player
+ * @param range 効果範囲
+ * @return 効力があった場合TRUEを返す
  */
-bool detect_monsters_invis(int range)
+bool detect_monsters_invis(POSITION range)
 {
-       int i, y, x;
+       MONSTER_IDX i;
+       POSITION y, x;
        bool flag = FALSE;
 
        if (d_info[dungeon_type].flags1 & DF1_DARKNESS) range /= 3;
@@ -3967,7 +2275,7 @@ bool detect_monsters_invis(int range)
                x = m_ptr->fx;
 
                /* Only detect nearby monsters */
-               if (distance(py, px, y, x) > range) continue;
+               if (distance(p_ptr->y, p_ptr->x, y, x) > range) continue;
 
                /* Detect invisible monsters */
                if (r_ptr->flags2 & RF2_INVISIBLE)
@@ -3993,32 +2301,28 @@ bool detect_monsters_invis(int range)
                }
        }
 
-       if ((p_ptr->pclass == CLASS_BARD) && (p_ptr->magic_num1[0] > MUSIC_DETECT+3)) flag = FALSE;
+       if (music_singing(MUSIC_DETECT) && p_ptr->magic_num1[2] > 3) flag = FALSE;
 
        /* Describe */
        if (flag)
        {
                /* Describe result */
-#ifdef JP
-msg_print("Æ©ÌÀ¤ÊÀ¸Êª¤Î¸ºß¤ò´¶¤¸¤È¤Ã¤¿¡ª");
-#else
-               msg_print("You sense the presence of invisible creatures!");
-#endif
-
+               msg_print(_("透明な生物の存在を感じとった!", "You sense the presence of invisible creatures!"));
        }
 
        /* Result */
        return (flag);
 }
 
-
-
-/*
- * Detect all "evil" monsters on current panel
+/*!
+ * @brief 邪悪なモンスターを感知する / Detect all "evil" monsters on current panel
+ * @param range 効果範囲
+ * @return 効力があった場合TRUEを返す
  */
-bool detect_monsters_evil(int range)
+bool detect_monsters_evil(POSITION range)
 {
-       int i, y, x;
+       MONSTER_IDX i;
+       POSITION y, x;
        bool flag = FALSE;
 
        if (d_info[dungeon_type].flags1 & DF1_DARKNESS) range /= 3;
@@ -4037,7 +2341,7 @@ bool detect_monsters_evil(int range)
                x = m_ptr->fx;
 
                /* Only detect nearby monsters */
-               if (distance(py, px, y, x) > range) continue;
+               if (distance(p_ptr->y, p_ptr->x, y, x) > range) continue;
 
                /* Detect evil monsters */
                if (r_ptr->flags3 & RF3_EVIL)
@@ -4073,28 +2377,23 @@ bool detect_monsters_evil(int range)
        if (flag)
        {
                /* Describe result */
-#ifdef JP
-msg_print("¼Ù°­¤Ê¤ëÀ¸Êª¤Î¸ºß¤ò´¶¤¸¤È¤Ã¤¿¡ª");
-#else
-               msg_print("You sense the presence of evil creatures!");
-#endif
-
+               msg_print(_("邪悪なる生物の存在を感じとった!", "You sense the presence of evil creatures!"));
        }
 
        /* Result */
        return (flag);
 }
 
-
-
-
-/*
- * Detect all "nonliving", "undead" or "demonic" monsters on current panel
+/*!
+ * @brief 無生命のモンスターを感知する(アンデッド、悪魔系を含む) / Detect all "nonliving", "undead" or "demonic" monsters on current panel
+ * @param range 効果範囲
+ * @return 効力があった場合TRUEを返す
  */
-bool detect_monsters_nonliving(int range)
+bool detect_monsters_nonliving(POSITION range)
 {
-       int     i, y, x;
-       bool    flag = FALSE;
+       MONSTER_IDX i;
+       POSITION y, x;
+       bool flag = FALSE;
 
        if (d_info[dungeon_type].flags1 & DF1_DARKNESS) range /= 3;
 
@@ -4112,7 +2411,7 @@ bool detect_monsters_nonliving(int range)
                x = m_ptr->fx;
 
                /* Only detect nearby monsters */
-               if (distance(py, px, y, x) > range) continue;
+               if (distance(p_ptr->y, p_ptr->x, y, x) > range) continue;
 
                /* Detect non-living monsters */
                if (!monster_living(r_ptr))
@@ -4142,25 +2441,22 @@ bool detect_monsters_nonliving(int range)
        if (flag)
        {
                /* Describe result */
-#ifdef JP
-msg_print("¼«Á³¤Ç¤Ê¤¤¥â¥ó¥¹¥¿¡¼¤Î¸ºß¤ò´¶¤¸¤¿¡ª");
-#else
-               msg_print("You sense the presence of unnatural beings!");
-#endif
-
+               msg_print(_("自然でないモンスターの存在を感じた!", "You sense the presence of unnatural beings!"));
        }
 
        /* Result */
        return (flag);
 }
 
-
-/*
- * Detect all monsters it has mind on current panel
+/*!
+ * @brief 精神のあるモンスターを感知する / Detect all monsters it has mind on current panel
+ * @param range 効果範囲
+ * @return 効力があった場合TRUEを返す
  */
-bool detect_monsters_mind(int range)
+bool detect_monsters_mind(POSITION range)
 {
-       int     i, y, x;
+       MONSTER_IDX i;
+       POSITION y, x;
        bool    flag = FALSE;
 
        if (d_info[dungeon_type].flags1 & DF1_DARKNESS) range /= 3;
@@ -4179,7 +2475,7 @@ bool detect_monsters_mind(int range)
                x = m_ptr->fx;
 
                /* Only detect nearby monsters */
-               if (distance(py, px, y, x) > range) continue;
+               if (distance(p_ptr->y, p_ptr->x, y, x) > range) continue;
 
                /* Detect non-living monsters */
                if (!(r_ptr->flags2 & RF2_EMPTY_MIND))
@@ -4209,12 +2505,7 @@ bool detect_monsters_mind(int range)
        if (flag)
        {
                /* Describe result */
-#ifdef JP
-msg_print("»¦µ¤¤ò´¶¤¸¤È¤Ã¤¿¡ª");
-#else
-               msg_print("You sense the presence of someone's mind!");
-#endif
-
+               msg_print(_("殺気を感じとった!", "You sense the presence of someone's mind!"));
        }
 
        /* Result */
@@ -4222,12 +2513,16 @@ msg_print("
 }
 
 
-/*
- * Detect all (string) monsters on current panel
+/*!
+ * @brief 該当シンボルのモンスターを感知する / Detect all (string) monsters on current panel
+ * @param range 効果範囲
+ * @param Match 対応シンボルの混じったモンスター文字列(複数指定化)
+ * @return 効力があった場合TRUEを返す
  */
-bool detect_monsters_string(int range, cptr Match)
+bool detect_monsters_string(POSITION range, cptr Match)
 {
-       int i, y, x;
+       MONSTER_IDX i;
+       POSITION y, x;
        bool flag = FALSE;
 
        if (d_info[dungeon_type].flags1 & DF1_DARKNESS) range /= 3;
@@ -4246,7 +2541,7 @@ bool detect_monsters_string(int range, cptr Match)
                x = m_ptr->fx;
 
                /* Only detect nearby monsters */
-               if (distance(py, px, y, x) > range) continue;
+               if (distance(p_ptr->y, p_ptr->x, y, x) > range) continue;
 
                /* Detect monsters with the same symbol */
                if (my_strchr(Match, r_ptr->d_char))
@@ -4272,37 +2567,31 @@ bool detect_monsters_string(int range, cptr Match)
                }
        }
 
-       if ((p_ptr->pclass == CLASS_BARD) && (p_ptr->magic_num1[0] > MUSIC_DETECT+3)) flag = FALSE;
+       if (music_singing(MUSIC_DETECT) && p_ptr->magic_num1[2] > 3) flag = FALSE;
 
        /* Describe */
        if (flag)
        {
                /* Describe result */
-#ifdef JP
-msg_print("¥â¥ó¥¹¥¿¡¼¤Î¸ºß¤ò´¶¤¸¤È¤Ã¤¿¡ª");
-#else
-               msg_print("You sense the presence of monsters!");
-#endif
-
+               msg_print(_("モンスターの存在を感じとった!", "You sense the presence of monsters!"));
        }
 
        /* Result */
        return (flag);
 }
 
-
-/*
- * A "generic" detect monsters routine, tagged to flags3
+/*!
+ * @brief flags3に対応するモンスターを感知する / A "generic" detect monsters routine, tagged to flags3
+ * @param range 効果範囲
+ * @param match_flag 感知フラグ
+ * @return 効力があった場合TRUEを返す
  */
-bool detect_monsters_xxx(int range, u32b match_flag)
+bool detect_monsters_xxx(POSITION range, u32b match_flag)
 {
-       int  i, y, x;
+       MONSTER_IDX i;
+       POSITION y, x;
        bool flag = FALSE;
-#ifdef JP
-cptr desc_monsters = "ÊѤʥâ¥ó¥¹¥¿¡¼";
-#else
-       cptr desc_monsters = "weird monsters";
-#endif
+       cptr desc_monsters = _("変なモンスター", "weird monsters");
 
        if (d_info[dungeon_type].flags1 & DF1_DARKNESS) range /= 3;
 
@@ -4320,7 +2609,7 @@ cptr desc_monsters = "
                x = m_ptr->fx;
 
                /* Only detect nearby monsters */
-               if (distance(py, px, y, x) > range) continue;
+               if (distance(p_ptr->y, p_ptr->x, y, x) > range) continue;
 
                /* Detect evil monsters */
                if (r_ptr->flags3 & (match_flag))
@@ -4358,30 +2647,15 @@ cptr desc_monsters = "
                switch (match_flag)
                {
                        case RF3_DEMON:
-#ifdef JP
-desc_monsters = "¥Ç¡¼¥â¥ó";
-#else
-                               desc_monsters = "demons";
-#endif
-
+                       desc_monsters = _("デーモン", "demons");
                                break;
                        case RF3_UNDEAD:
-#ifdef JP
-desc_monsters = "¥¢¥ó¥Ç¥Ã¥É";
-#else
-                               desc_monsters = "the undead";
-#endif
-
+                       desc_monsters = _("アンデッド", "the undead");
                                break;
                }
 
                /* Describe result */
-#ifdef JP
-msg_format("%s¤Î¸ºß¤ò´¶¤¸¤È¤Ã¤¿¡ª", desc_monsters);
-#else
-               msg_format("You sense the presence of %s!", desc_monsters);
-#endif
-
+               msg_format(_("%sの存在を感じとった!", "You sense the presence of %s!"), desc_monsters);
                msg_print(NULL);
        }
 
@@ -4390,10 +2664,12 @@ msg_format("%s
 }
 
 
-/*
- * Detect everything
+/*!
+ * @brief 全感知処理 / Detect everything
+ * @param range 効果範囲
+ * @return 効力があった場合TRUEを返す
  */
-bool detect_all(int range)
+bool detect_all(POSITION range)
 {
        bool detect = FALSE;
 
@@ -4415,13 +2691,18 @@ bool detect_all(int range)
 }
 
 
-/*
- * Apply a "project()" directly to all viewable monsters
- *
+/*!
+ * @brief 視界内モンスターに魔法効果を与える / Apply a "project()" directly to all viewable monsters
+ * @param typ 属性効果
+ * @param dam 効果量
+ * @return 効力があった場合TRUEを返す
+ * @details
+ * <pre>
  * Note that affected monsters are NOT auto-tracked by this usage.
  *
  * To avoid misbehavior when monster deaths have side-effects,
  * this is done in two passes. -- JDL
+ * </pre>
  */
 bool project_hack(int typ, int dam)
 {
@@ -4443,7 +2724,7 @@ bool project_hack(int typ, int dam)
                x = m_ptr->fx;
 
                /* Require line of sight */
-               if (!player_has_los_bold(y, x) || !projectable(py, px, y, x)) continue;
+               if (!player_has_los_bold(y, x) || !projectable(p_ptr->y, p_ptr->x, y, x)) continue;
 
                /* Mark the monster */
                m_ptr->mflag |= (MFLAG_TEMP);
@@ -4473,42 +2754,45 @@ bool project_hack(int typ, int dam)
 }
 
 
-/*
- * Speed monsters
+/*!
+ * @brief 視界内モンスターを加速する処理 / Speed monsters
+ * @return 効力があった場合TRUEを返す
  */
 bool speed_monsters(void)
 {
        return (project_hack(GF_OLD_SPEED, p_ptr->lev));
 }
 
-/*
- * Slow monsters
+/*!
+ * @brief 視界内モンスターを加速する処理 / Slow monsters
+ * @return 効力があった場合TRUEを返す
  */
-bool slow_monsters(void)
+bool slow_monsters(int power)
 {
-       return (project_hack(GF_OLD_SLOW, p_ptr->lev));
+       return (project_hack(GF_OLD_SLOW, power));
 }
 
-/*
- * Sleep monsters
+/*!
+ * @brief 視界内モンスターを眠らせる処理 / Sleep monsters
+ * @return 効力があった場合TRUEを返す
  */
-bool sleep_monsters(void)
+bool sleep_monsters(int power)
 {
-       return (project_hack(GF_OLD_SLEEP, p_ptr->lev));
+       return (project_hack(GF_OLD_SLEEP, power));
 }
 
-
-/*
- * Banish evil monsters
+/*!
+ * @brief 視界内の邪悪なモンスターをテレポート・アウェイさせる処理 / Banish evil monsters
+ * @return 効力があった場合TRUEを返す
  */
 bool banish_evil(int dist)
 {
        return (project_hack(GF_AWAY_EVIL, dist));
 }
 
-
-/*
- * Turn undead
+/*!
+ * @brief 視界内のアンデッド・モンスターを恐怖させる処理 / Turn undead
+ * @return 効力があった場合TRUEを返す
  */
 bool turn_undead(void)
 {
@@ -4518,9 +2802,9 @@ bool turn_undead(void)
        return tester;
 }
 
-
-/*
- * Dispel undead monsters
+/*!
+ * @brief 視界内のアンデッド・モンスターにダメージを与える処理 / Dispel undead monsters
+ * @return 効力があった場合TRUEを返す
  */
 bool dispel_undead(int dam)
 {
@@ -4530,62 +2814,68 @@ bool dispel_undead(int dam)
        return tester;
 }
 
-/*
- * Dispel evil monsters
+/*!
+ * @brief 視界内の邪悪なモンスターにダメージを与える処理 / Dispel evil monsters
+ * @return 効力があった場合TRUEを返す
  */
 bool dispel_evil(int dam)
 {
        return (project_hack(GF_DISP_EVIL, dam));
 }
 
-/*
- * Dispel good monsters
+/*!
+ * @brief 視界内の善良なモンスターにダメージを与える処理 / Dispel good monsters
+ * @return 効力があった場合TRUEを返す
  */
 bool dispel_good(int dam)
 {
        return (project_hack(GF_DISP_GOOD, dam));
 }
 
-/*
- * Dispel all monsters
+/*!
+ * @brief 視界内のあらゆるモンスターにダメージを与える処理 / Dispel all monsters
+ * @return 効力があった場合TRUEを返す
  */
 bool dispel_monsters(int dam)
 {
        return (project_hack(GF_DISP_ALL, dam));
 }
 
-/*
- * Dispel 'living' monsters
+/*!
+ * @brief 視界内の生命のあるモンスターにダメージを与える処理 / Dispel 'living' monsters
+ * @return 効力があった場合TRUEを返す
  */
 bool dispel_living(int dam)
 {
        return (project_hack(GF_DISP_LIVING, dam));
 }
 
-/*
- * Dispel demons
+/*!
+ * @brief 視界内の悪魔系モンスターにダメージを与える処理 / Dispel 'living' monsters
+ * @return 効力があった場合TRUEを返す
  */
 bool dispel_demons(int dam)
 {
        return (project_hack(GF_DISP_DEMON, dam));
 }
 
-
-/*
- * Crusade
+/*!
+ * @brief 視界内のモンスターに「聖戦」効果を与える処理
+ * @return 効力があった場合TRUEを返す
  */
 bool crusade(void)
 {
        return (project_hack(GF_CRUSADE, p_ptr->lev*4));
 }
 
-
-/*
- * Wake up all monsters, and speed up "los" monsters.
+/*!
+ * @brief 視界内モンスターを怒らせる処理 / Wake up all monsters, and speed up "los" monsters.
+ * @param who 怒らせる原因を起こしたモンスター(0ならばプレイヤー)
+ * @return なし
  */
-void aggravate_monsters(int who)
+void aggravate_monsters(MONSTER_IDX who)
 {
-       int     i;
+       MONSTER_IDX i;
        bool    sleep = FALSE;
        bool    speed = FALSE;
 
@@ -4606,11 +2896,9 @@ void aggravate_monsters(int who)
                if (m_ptr->cdis < MAX_SIGHT * 2)
                {
                        /* Wake up */
-                       if (m_ptr->csleep)
+                       if (MON_CSLEEP(m_ptr))
                        {
-                               /* Wake up */
-                               m_ptr->csleep = 0;
-                               if (r_info[m_ptr->r_idx].flags7 & RF7_HAS_LD_MASK) p_ptr->update |= (PU_MON_LITE);
+                               (void)set_monster_csleep(i, 0);
                                sleep = TRUE;
                        }
                        if (!is_pet(m_ptr)) m_ptr->mflag2 |= MFLAG2_NOPET;
@@ -4621,7 +2909,7 @@ void aggravate_monsters(int who)
                {
                        if (!is_pet(m_ptr))
                        {
-                               m_ptr->fast = MIN(200, m_ptr->fast + 100);
+                               (void)set_monster_fast(i, MON_FAST(m_ptr) + 100);
                                speed = TRUE;
                        }
                }
@@ -4629,8 +2917,8 @@ void aggravate_monsters(int who)
 
        /* Messages */
 #ifdef JP
-if (speed) msg_print("ÉÕ¶á¤Ç²¿¤«¤¬ÆÍÇ¡¶½Ê³¤·¤¿¤è¤¦¤Ê´¶¤¸¤ò¼õ¤±¤¿¡ª");
-else if (sleep) msg_print("²¿¤«¤¬ÆÍÇ¡¶½Ê³¤·¤¿¤è¤¦¤ÊÁû¡¹¤·¤¤²»¤¬±ó¤¯¤Ëʹ¤³¤¨¤¿¡ª");
+       if (speed) msg_print("付近で何かが突如興奮したような感じを受けた!");
+       else if (sleep) msg_print("何かが突如興奮したような騒々しい音が遠くに聞こえた!");
 #else
        if (speed) msg_print("You feel a sudden stirring nearby!");
        else if (sleep) msg_print("You hear a sudden stirring in the distance!");
@@ -4639,157 +2927,168 @@ else if (sleep) msg_print("
 }
 
 
-
-/*
- * Delete all non-unique/non-quest monsters of a given "type" from the level
+/*!
+ * @brief モンスターへの単体抹殺処理サブルーチン / Delete a non-unique/non-quest monster
+ * @param m_idx 抹殺するモンスターID
+ * @param power 抹殺の威力
+ * @param player_cast プレイヤーの魔法によるものならば TRUE
+ * @param dam_side プレイヤーへの負担ダメージ量(1d(dam_side))
+ * @param spell_name 抹殺効果を起こした魔法の名前
+ * @return 効力があった場合TRUEを返す
  */
-bool symbol_genocide(int power, int player_cast)
+bool genocide_aux(MONSTER_IDX m_idx, int power, bool player_cast, int dam_side, cptr spell_name)
 {
-       int     i;
-       char    typ;
-       bool    result = FALSE;
-       int     msec = delay_factor * delay_factor * delay_factor;
-
-       /* Prevent genocide in quest levels */
-       if (p_ptr->inside_quest && !random_quest_number(dun_level))
-       {
-               return (FALSE);
-       }
-
-       /* Mega-Hack -- Get a monster symbol */
-#ifdef JP
-while(!get_com("¤É¤Î¼ïÎà(ʸ»ú)¤Î¥â¥ó¥¹¥¿¡¼¤òËõ»¦¤·¤Þ¤¹¤«: ", &typ, FALSE));
-#else
-       while(!get_com("Choose a monster race (by symbol) to genocide: ", &typ, FALSE));
-#endif
-
+       int          msec = delay_factor * delay_factor * delay_factor;
+       monster_type *m_ptr = &m_list[m_idx];
+       monster_race *r_ptr = &r_info[m_ptr->r_idx];
+       bool         resist = FALSE;
 
-       /* Delete the monsters of that "type" */
-       for (i = 1; i < m_max; i++)
-       {
-               monster_type    *m_ptr = &m_list[i];
-               monster_race    *r_ptr = &r_info[m_ptr->r_idx];
-               bool angry = FALSE;
-               char m_name[80];
+       if (is_pet(m_ptr) && !player_cast) return FALSE;
 
-               /* Paranoia -- Skip dead monsters */
-               if (!m_ptr->r_idx) continue;
+       /* Hack -- Skip Unique Monsters or Quest Monsters */
+       if (r_ptr->flags1 & (RF1_UNIQUE | RF1_QUESTOR)) resist = TRUE;
 
-               /* Skip "wrong" monsters */
-               if (r_ptr->d_char != typ) continue;
+       else if (r_ptr->flags7 & RF7_UNIQUE2) resist = TRUE;
 
-               if (is_pet(m_ptr) && !player_cast) continue;
+       else if (m_idx == p_ptr->riding) resist = TRUE;
 
-               /* Hack -- Skip Unique Monsters */
-               if (r_ptr->flags1 & (RF1_UNIQUE)) angry = TRUE;
+       else if ((p_ptr->inside_quest && !random_quest_number(dun_level)) || p_ptr->inside_arena || p_ptr->inside_battle) resist = TRUE;
 
-               /* Hack -- Skip Quest Monsters */
-               else if (r_ptr->flags1 & RF1_QUESTOR) angry = TRUE;
+       else if (player_cast && (r_ptr->level > randint0(power))) resist = TRUE;
 
-               else if (r_ptr->flags7 & RF7_UNIQUE2) angry = TRUE;
+       else if (player_cast && (m_ptr->mflag2 & MFLAG2_NOGENO)) resist = TRUE;
 
-               else if (i == p_ptr->riding) angry = TRUE;
+       /* Delete the monster */
+       else
+       {
+               if (record_named_pet && is_pet(m_ptr) && m_ptr->nickname)
+               {
+                       char m_name[80];
 
-               else if (player_cast && (r_ptr->level > randint0(power))) angry = TRUE;
+                       monster_desc(m_name, m_ptr, MD_INDEF_VISIBLE);
+                       do_cmd_write_nikki(NIKKI_NAMED_PET, RECORD_NAMED_PET_GENOCIDE, m_name);
+               }
 
-               else if (player_cast && (m_ptr->mflag2 & MFLAG2_NOGENO)) angry = TRUE;
+               delete_monster_idx(m_idx);
+       }
 
-               /* Delete the monster */
-               else delete_monster_idx(i);
+       if (resist && player_cast)
+       {
+               bool see_m = is_seen(m_ptr);
+               char m_name[80];
 
-               if (angry && player_cast)
+               monster_desc(m_name, m_ptr, 0);
+               if (see_m)
                {
-                       monster_desc(m_name, m_ptr, 0);
-                       if (m_ptr->ml && !p_ptr->blind)
-                       {
-#ifdef JP
-msg_format("%^s¤Ë¤Ï¸ú²Ì¤¬¤Ê¤«¤Ã¤¿¡£", m_name);
-#else
-                               msg_format("%^s is unaffected.", m_name);
-#endif
-                       }
-                       if (m_ptr->csleep)
+                       msg_format(_("%^sには効果がなかった。", "%^s is unaffected."), m_name);
+               }
+               if (MON_CSLEEP(m_ptr))
+               {
+                       (void)set_monster_csleep(m_idx, 0);
+                       if (m_ptr->ml)
                        {
-                               m_ptr->csleep = 0;
-                               if (r_ptr->flags7 & RF7_HAS_LD_MASK) p_ptr->update |= (PU_MON_LITE);
-                               if (m_ptr->ml && !p_ptr->blind)
-                               {
-#ifdef JP
-msg_format("%^s¤¬Ìܤò³Ð¤Þ¤·¤¿¡£", m_name);
-#else
-                                       msg_format("%^s wakes up.", m_name);
-#endif
-                               }
+                               msg_format(_("%^sが目を覚ました。", "%^s wakes up."), m_name);
                        }
-                       if (is_friendly(m_ptr) && !is_pet(m_ptr))
+               }
+               if (is_friendly(m_ptr) && !is_pet(m_ptr))
+               {
+                       if (see_m)
                        {
-                               if (m_ptr->ml && !p_ptr->blind)
-                               {
-#ifdef JP
-                                       msg_format("%s¤ÏÅܤä¿¡ª", m_name);
-#else
-                                       msg_format("%^s gets angry!", m_name);
-#endif
-                               }
-                               set_hostile(m_ptr);
+                               msg_format(_("%sは怒った!", "%^s gets angry!"), m_name);
                        }
-                       if (one_in_(13)) m_ptr->mflag2 |= MFLAG2_NOGENO;
+                       set_hostile(m_ptr);
                }
+               if (one_in_(13)) m_ptr->mflag2 |= MFLAG2_NOGENO;
+       }
 
-               if (player_cast)
-               {
-                       /* Take damage */
-#ifdef JP
-take_hit(DAMAGE_GENO, randint1(4), "Ëõ»¦¤Î¼öʸ¤ò¾§¤¨¤¿ÈèÏ«", -1);
-#else
-                       take_hit(DAMAGE_GENO, randint1(4), "the strain of casting Genocide", -1);
-#endif
+       if (player_cast)
+       {
+               /* Take damage */
+               take_hit(DAMAGE_GENO, randint1(dam_side), format(_("%^sの呪文を唱えた疲労", "the strain of casting %^s"), spell_name), -1);
+       }
 
-               }
+       /* Visual feedback */
+       move_cursor_relative(p_ptr->y, p_ptr->x);
 
-               /* Visual feedback */
-               move_cursor_relative(py, px);
+       /* Redraw */
+       p_ptr->redraw |= (PR_HP);
 
-               /* Redraw */
-               p_ptr->redraw |= (PR_HP);
+       /* Window stuff */
+       p_ptr->window |= (PW_PLAYER);
+
+       /* Handle */
+       handle_stuff();
+
+       /* Fresh */
+       Term_fresh();
+
+       /* Delay */
+       Term_xtra(TERM_XTRA_DELAY, msec);
+
+       return !resist;
+}
+
+
+/*!
+ * @brief モンスターへのシンボル抹殺処理ルーチン / Delete all non-unique/non-quest monsters of a given "type" from the level
+ * @param power 抹殺の威力
+ * @param player_cast プレイヤーの魔法によるものならば TRUE
+ * @return 効力があった場合TRUEを返す
+ */
+bool symbol_genocide(int power, bool player_cast)
+{
+       MONSTER_IDX i;
+       char typ;
+       bool result = FALSE;
+
+       /* Prevent genocide in quest levels */
+       if ((p_ptr->inside_quest && !random_quest_number(dun_level)) || p_ptr->inside_arena || p_ptr->inside_battle)
+       {
+               return (FALSE);
+       }
 
-               /* Window stuff */
-               p_ptr->window |= (PW_PLAYER);
+       /* Mega-Hack -- Get a monster symbol */
+       while (!get_com(_("どの種類(文字)のモンスターを抹殺しますか: ", "Choose a monster race (by symbol) to genocide: "), &typ, FALSE)) ;
 
-               /* Handle */
-               handle_stuff();
+       /* Delete the monsters of that "type" */
+       for (i = 1; i < m_max; i++)
+       {
+               monster_type *m_ptr = &m_list[i];
+               monster_race *r_ptr = &r_info[m_ptr->r_idx];
 
-               /* Fresh */
-               Term_fresh();
+               /* Paranoia -- Skip dead monsters */
+               if (!m_ptr->r_idx) continue;
 
-               /* Delay */
-               Term_xtra(TERM_XTRA_DELAY, msec);
+               /* Skip "wrong" monsters */
+               if (r_ptr->d_char != typ) continue;
 
                /* Take note */
-               result = TRUE;
+               result |= genocide_aux(i, power, player_cast, 4, _("抹殺", "Genocide"));
        }
+
        if (result)
        {
                chg_virtue(V_VITALITY, -2);
                chg_virtue(V_CHANCE, -1);
        }
 
-       return (result);
+       return result;
 }
 
 
-/*
- * Delete all nearby (non-unique) monsters
+/*!
+ * @brief モンスターへの周辺抹殺処理ルーチン / Delete all nearby (non-unique) monsters
+ * @param power 抹殺の威力
+ * @param player_cast プレイヤーの魔法によるものならば TRUE
+ * @return 効力があった場合TRUEを返す
  */
-bool mass_genocide(int power, int player_cast)
+bool mass_genocide(int power, bool player_cast)
 {
-       int     i;
-       bool    result = FALSE;
-       int     msec = delay_factor * delay_factor * delay_factor;
-
+       MONSTER_IDX i;
+       bool result = FALSE;
 
        /* Prevent mass genocide in quest levels */
-       if (p_ptr->inside_quest && !random_quest_number(dun_level))
+       if ((p_ptr->inside_quest && !random_quest_number(dun_level)) || p_ptr->inside_arena || p_ptr->inside_battle)
        {
                return (FALSE);
        }
@@ -4797,10 +3096,7 @@ bool mass_genocide(int power, int player_cast)
        /* Delete the (nearby) monsters */
        for (i = 1; i < m_max; i++)
        {
-               monster_type    *m_ptr = &m_list[i];
-               monster_race    *r_ptr = &r_info[m_ptr->r_idx];
-               bool angry = FALSE;
-               char m_name[80];
+               monster_type *m_ptr = &m_list[i];
 
                /* Paranoia -- Skip dead monsters */
                if (!m_ptr->r_idx) continue;
@@ -4808,94 +3104,8 @@ bool mass_genocide(int power, int player_cast)
                /* Skip distant monsters */
                if (m_ptr->cdis > MAX_SIGHT) continue;
 
-               if (is_pet(m_ptr) && !player_cast) continue;
-
-               /* Hack -- Skip unique monsters */
-               if (r_ptr->flags1 & (RF1_UNIQUE)) angry = TRUE;
-
-               /* Hack -- Skip Quest Monsters */
-               else if (r_ptr->flags1 & RF1_QUESTOR) angry = TRUE;
-
-               else if (r_ptr->flags7 & RF7_UNIQUE2) angry = TRUE;
-
-               else if (i == p_ptr->riding) angry = TRUE;
-
-               else if (player_cast && (r_ptr->level > randint0(power))) angry = TRUE;
-
-               else if (player_cast && (m_ptr->mflag2 & MFLAG2_NOGENO)) angry = TRUE;
-
-               /* Delete the monster */
-               else delete_monster_idx(i);
-
-               if (angry && player_cast)
-               {
-                       monster_desc(m_name, m_ptr, 0);
-                       if (m_ptr->ml && !p_ptr->blind)
-                       {
-#ifdef JP
-msg_format("%^s¤Ë¤Ï¸ú²Ì¤¬¤Ê¤«¤Ã¤¿¡£", m_name);
-#else
-                               msg_format("%^s is unaffected.", m_name);
-#endif
-                       }
-                       if (m_ptr->csleep)
-                       {
-                               m_ptr->csleep = 0;
-                               if (r_ptr->flags7 & RF7_HAS_LD_MASK) p_ptr->update |= (PU_MON_LITE);
-                               if (m_ptr->ml && !p_ptr->blind)
-                               {
-#ifdef JP
-msg_format("%^s¤¬Ìܤò³Ð¤Þ¤·¤¿¡£", m_name);
-#else
-                                       msg_format("%^s wakes up.", m_name);
-#endif
-                               }
-                       }
-                       if (is_friendly(m_ptr) && !is_pet(m_ptr))
-                       {
-                               if (m_ptr->ml && !p_ptr->blind)
-                               {
-#ifdef JP
-                                       msg_format("%s¤ÏÅܤä¿¡ª", m_name);
-#else
-                                       msg_format("%^s gets angry!", m_name);
-#endif
-                               }
-                               set_hostile(m_ptr);
-                       }
-                       if (one_in_(13)) m_ptr->mflag2 |= MFLAG2_NOGENO;
-               }
-
-               if (player_cast)
-               {
-                       /* Hack -- visual feedback */
-#ifdef JP
-take_hit(DAMAGE_GENO, randint1(3), "¼þÊÕËõ»¦¤Î¼öʸ¤ò¾§¤¨¤¿ÈèÏ«", -1);
-#else
-                       take_hit(DAMAGE_GENO, randint1(3), "the strain of casting Mass Genocide", -1);
-#endif
-
-               }
-
-               move_cursor_relative(py, px);
-
-               /* Redraw */
-               p_ptr->redraw |= (PR_HP);
-
-               /* Window stuff */
-               p_ptr->window |= (PW_PLAYER);
-
-               /* Handle */
-               handle_stuff();
-
-               /* Fresh */
-               Term_fresh();
-
-               /* Delay */
-               Term_xtra(TERM_XTRA_DELAY, msec);
-
                /* Note effect */
-               result = TRUE;
+               result |= genocide_aux(i, power, player_cast, 3, _("周辺抹殺", "Mass Genocide"));
        }
 
        if (result)
@@ -4904,23 +3114,23 @@ take_hit(DAMAGE_GENO, randint1(3), "
                chg_virtue(V_CHANCE, -1);
        }
 
-       return (result);
+       return result;
 }
 
 
-
-/*
- * Delete all nearby (non-unique) undead
+/*!
+ * @brief アンデッド・モンスターへの周辺抹殺処理ルーチン / Delete all nearby (non-unique) undead
+ * @param power 抹殺の威力
+ * @param player_cast プレイヤーの魔法によるものならば TRUE
+ * @return 効力があった場合TRUEを返す
  */
-bool mass_genocide_undead(int power, int player_cast)
+bool mass_genocide_undead(int power, bool player_cast)
 {
-       int     i;
-       bool    result = FALSE;
-       int     msec = delay_factor * delay_factor * delay_factor;
-
+       POSITION i;
+       bool result = FALSE;
 
        /* Prevent mass genocide in quest levels */
-       if (p_ptr->inside_quest && !random_quest_number(dun_level))
+       if ((p_ptr->inside_quest && !random_quest_number(dun_level)) || p_ptr->inside_arena || p_ptr->inside_battle)
        {
                return (FALSE);
        }
@@ -4928,10 +3138,8 @@ bool mass_genocide_undead(int power, int player_cast)
        /* Delete the (nearby) monsters */
        for (i = 1; i < m_max; i++)
        {
-               monster_type    *m_ptr = &m_list[i];
-               monster_race    *r_ptr = &r_info[m_ptr->r_idx];
-               bool angry = FALSE;
-               char m_name[80];
+               monster_type *m_ptr = &m_list[i];
+               monster_race *r_ptr = &r_info[m_ptr->r_idx];
 
                /* Paranoia -- Skip dead monsters */
                if (!m_ptr->r_idx) continue;
@@ -4941,94 +3149,8 @@ bool mass_genocide_undead(int power, int player_cast)
                /* Skip distant monsters */
                if (m_ptr->cdis > MAX_SIGHT) continue;
 
-               if (is_pet(m_ptr) && !player_cast) continue;
-
-               /* Hack -- Skip unique monsters */
-               if (r_ptr->flags1 & (RF1_UNIQUE)) angry = TRUE;
-
-               /* Hack -- Skip Quest Monsters */
-               else if (r_ptr->flags1 & RF1_QUESTOR) angry = TRUE;
-
-               else if (r_ptr->flags7 & RF7_UNIQUE2) angry = TRUE;
-
-               else if (i == p_ptr->riding) angry = TRUE;
-
-               else if (player_cast && (r_ptr->level > randint0(power))) angry = TRUE;
-
-               else if (player_cast && (m_ptr->mflag2 & MFLAG2_NOGENO)) angry = TRUE;
-
-               /* Delete the monster */
-               else delete_monster_idx(i);
-
-               if (angry && player_cast)
-               {
-                       monster_desc(m_name, m_ptr, 0);
-                       if (m_ptr->ml && !p_ptr->blind)
-                       {
-#ifdef JP
-msg_format("%^s¤Ë¤Ï¸ú²Ì¤¬¤Ê¤«¤Ã¤¿¡£", m_name);
-#else
-                               msg_format("%^s is unaffected.", m_name);
-#endif
-                       }
-                       if (m_ptr->csleep)
-                       {
-                               m_ptr->csleep = 0;
-                               if (r_ptr->flags7 & RF7_HAS_LD_MASK) p_ptr->update |= (PU_MON_LITE);
-                               if (m_ptr->ml && !p_ptr->blind)
-                               {
-#ifdef JP
-msg_format("%^s¤¬Ìܤò³Ð¤Þ¤·¤¿¡£", m_name);
-#else
-                                       msg_format("%^s wakes up.", m_name);
-#endif
-                               }
-                       }
-                       if (is_friendly(m_ptr) && !is_pet(m_ptr))
-                       {
-                               if (m_ptr->ml && !p_ptr->blind)
-                               {
-#ifdef JP
-                                       msg_format("%s¤ÏÅܤä¿¡ª", m_name);
-#else
-                                       msg_format("%^s gets angry!", m_name);
-#endif
-                               }
-                               set_hostile(m_ptr);
-                       }
-                       if (one_in_(13)) m_ptr->mflag2 |= MFLAG2_NOGENO;
-               }
-
-               if (player_cast)
-               {
-                       /* Hack -- visual feedback */
-#ifdef JP
-take_hit(DAMAGE_GENO, randint1(3), "¥¢¥ó¥Ç¥Ã¥É¾ÃÌǤμöʸ¤ò¾§¤¨¤¿ÈèÏ«", -1);
-#else
-                       take_hit(DAMAGE_GENO, randint1(3), "the strain of casting Mass Genocide", -1);
-#endif
-
-               }
-
-               move_cursor_relative(py, px);
-
-               /* Redraw */
-               p_ptr->redraw |= (PR_HP);
-
-               /* Window stuff */
-               p_ptr->window |= (PW_PLAYER);
-
-               /* Handle */
-               handle_stuff();
-
-               /* Fresh */
-               Term_fresh();
-
-               /* Delay */
-               Term_xtra(TERM_XTRA_DELAY, msec);
-
                /* Note effect */
-               result = TRUE;
+               result |= genocide_aux(i, power, player_cast, 3, _("アンデッド消滅", "Annihilate Undead"));
        }
 
        if (result)
@@ -5037,13 +3159,13 @@ take_hit(DAMAGE_GENO, randint1(3), "
                chg_virtue(V_CHANCE, -1);
        }
 
-       return (result);
+       return result;
 }
 
 
-
-/*
- * Probe nearby monsters
+/*!
+ * @brief 周辺モンスターを調査する / Probe nearby monsters
+ * @return 効力があった場合TRUEを返す
  */
 bool probing(void)
 {
@@ -5078,16 +3200,12 @@ bool probing(void)
                        /* Start the message */
                        if (!probe)
                        {
-#ifdef JP
-                               msg_print("Ä´ººÃæ...");
-#else
-                               msg_print("Probing...");
-#endif
+                               msg_print(_("調査中...", "Probing..."));
                        }
 
                        msg_print(NULL);
 
-                       if (m_ptr->ap_r_idx != m_ptr->r_idx)
+                       if (!is_original_ap(m_ptr))
                        {
                                if (m_ptr->mflag2 & MFLAG2_KAGE)
                                        m_ptr->mflag2 &= ~(MFLAG2_KAGE);
@@ -5099,18 +3217,18 @@ bool probing(void)
                        monster_desc(m_name, m_ptr, MD_IGNORE_HALLU | MD_INDEF_HIDDEN);
 
                        speed = m_ptr->mspeed - 110;
-                       if(m_ptr->fast) speed += 10;
-                       if(m_ptr->slow) speed -= 10;
+                       if (MON_FAST(m_ptr)) speed += 10;
+                       if (MON_SLOW(m_ptr)) speed -= 10;
 
                        /* Get the monster's alignment */
 #ifdef JP
-                       if ((r_ptr->flags3 & (RF3_EVIL | RF3_GOOD)) == (RF3_EVIL | RF3_GOOD)) align = "Á±°­";
-                       else if (r_ptr->flags3 & RF3_EVIL) align = "¼Ù°­";
-                       else if (r_ptr->flags3 & RF3_GOOD) align = "Á±ÎÉ";
-                       else if ((m_ptr->sub_align & (SUB_ALIGN_EVIL | SUB_ALIGN_GOOD)) == (SUB_ALIGN_EVIL | SUB_ALIGN_GOOD)) align = "ÃæΩ(Á±°­)";
-                       else if (m_ptr->sub_align & SUB_ALIGN_EVIL) align = "ÃæΩ(¼Ù°­)";
-                       else if (m_ptr->sub_align & SUB_ALIGN_GOOD) align = "ÃæΩ(Á±ÎÉ)";
-                       else align = "ÃæΩ";
+                       if ((r_ptr->flags3 & (RF3_EVIL | RF3_GOOD)) == (RF3_EVIL | RF3_GOOD)) align = "善悪";
+                       else if (r_ptr->flags3 & RF3_EVIL) align = "邪悪";
+                       else if (r_ptr->flags3 & RF3_GOOD) align = "善良";
+                       else if ((m_ptr->sub_align & (SUB_ALIGN_EVIL | SUB_ALIGN_GOOD)) == (SUB_ALIGN_EVIL | SUB_ALIGN_GOOD)) align = "中立(善悪)";
+                       else if (m_ptr->sub_align & SUB_ALIGN_EVIL) align = "中立(邪悪)";
+                       else if (m_ptr->sub_align & SUB_ALIGN_GOOD) align = "中立(善良)";
+                       else align = "中立";
 #else
                        if ((r_ptr->flags3 & (RF3_EVIL | RF3_GOOD)) == (RF3_EVIL | RF3_GOOD)) align = "good&evil";
                        else if (r_ptr->flags3 & RF3_EVIL) align = "evil";
@@ -5122,11 +3240,9 @@ bool probing(void)
 #endif
 
                        /* Describe the monster */
-#ifdef JP
-sprintf(buf,"%s ... Â°À­:%s HP:%d/%d AC:%d Â®ÅÙ:%s%d ·Ð¸³:", m_name, align, m_ptr->hp, m_ptr->maxhp, r_ptr->ac, (speed > 0) ? "+" : "", speed);
-#else
-sprintf(buf, "%s ... align:%s HP:%d/%d AC:%d speed:%s%d exp:", m_name, align, m_ptr->hp, m_ptr->maxhp, r_ptr->ac, (speed > 0) ? "+" : "", speed);
-#endif
+                       sprintf(buf,_("%s ... 属性:%s HP:%d/%d AC:%d 速度:%s%d 経験:", "%s ... align:%s HP:%d/%d AC:%d speed:%s%d exp:"),
+                               m_name, align, (int)m_ptr->hp, (int)m_ptr->maxhp, r_ptr->ac, (speed > 0) ? "+" : "", speed);
+
                        if (r_ptr->next_r_idx)
                        {
                                strcat(buf, format("%d/%d ", m_ptr->exp, r_ptr->next_exp));
@@ -5137,17 +3253,17 @@ sprintf(buf, "%s ... align:%s HP:%d/%d AC:%d speed:%s%d exp:", m_name, align, m_
                        }
 
 #ifdef JP
-                       if (m_ptr->csleep) strcat(buf,"¿ç̲ ");
-                       if (m_ptr->stunned) strcat(buf,"ۯ۰ ");
-                       if (m_ptr->monfear) strcat(buf,"¶²ÉÝ ");
-                       if (m_ptr->confused) strcat(buf,"º®Íð ");
-                       if (m_ptr->invulner) strcat(buf,"̵Ũ ");
+                       if (MON_CSLEEP(m_ptr)) strcat(buf,"睡眠 ");
+                       if (MON_STUNNED(m_ptr)) strcat(buf,"朦朧 ");
+                       if (MON_MONFEAR(m_ptr)) strcat(buf,"恐怖 ");
+                       if (MON_CONFUSED(m_ptr)) strcat(buf,"混乱 ");
+                       if (MON_INVULNER(m_ptr)) strcat(buf,"無敵 ");
 #else
-                       if (m_ptr->csleep) strcat(buf,"sleeping ");
-                       if (m_ptr->stunned) strcat(buf,"stunned ");
-                       if (m_ptr->monfear) strcat(buf,"scared ");
-                       if (m_ptr->confused) strcat(buf,"confused ");
-                       if (m_ptr->invulner) strcat(buf,"invulnerable ");
+                       if (MON_CSLEEP(m_ptr)) strcat(buf,"sleeping ");
+                       if (MON_STUNNED(m_ptr)) strcat(buf,"stunned ");
+                       if (MON_MONFEAR(m_ptr)) strcat(buf,"scared ");
+                       if (MON_CONFUSED(m_ptr)) strcat(buf,"confused ");
+                       if (MON_INVULNER(m_ptr)) strcat(buf,"invulnerable ");
 #endif
                        buf[strlen(buf)-1] = '\0';
                        prt(buf,0,0);
@@ -5165,14 +3281,12 @@ sprintf(buf, "%s ... align:%s HP:%d/%d AC:%d speed:%s%d exp:", m_name, align, m_
                        /* Learn everything about this monster */
                        if (lore_do_probe(m_ptr->r_idx))
                        {
-                               char buf[80];
-
                                /* Get base name of monster */
                                strcpy(buf, (r_name + r_ptr->name));
 
 #ifdef JP
                                /* Note that we learnt some new flags  -Mogami- */
-                               msg_format("%s¤Ë¤Ä¤¤¤Æ¤µ¤é¤Ë¾Ü¤·¤¯¤Ê¤Ã¤¿µ¤¤¬¤¹¤ë¡£", buf);
+                               msg_format("%sについてさらに詳しくなった気がする。", buf);
 #else
                                /* Pluralize it */
                                plural_aux(buf);
@@ -5197,13 +3311,7 @@ sprintf(buf, "%s ... align:%s HP:%d/%d AC:%d speed:%s%d exp:", m_name, align, m_
        if (probe)
        {
                chg_virtue(V_KNOWLEDGE, 1);
-
-#ifdef JP
-msg_print("¤³¤ì¤ÇÁ´Éô¤Ç¤¹¡£");
-#else
-               msg_print("That's all.");
-#endif
-
+               msg_print(_("これで全部です。", "That's all."));
        }
 
        /* Result */
@@ -5212,13 +3320,20 @@ msg_print("
 
 
 
-/*
- * The spell of destruction
- *
+/*!
+ * @brief *破壊*処理を行う / The spell of destruction
+ * @param y1 破壊の中心Y座標
+ * @param x1 破壊の中心X座標 
+ * @param r 破壊の半径
+ * @param in_generate ダンジョンフロア生成中の処理ならばTRUE
+ * @return 効力があった場合TRUEを返す
+ * @details
+ * <pre>
  * This spell "deletes" monsters (instead of "killing" them).
  *
  * Later we may use one function for both "destruction" and
  * "earthquake" by using the "full" to select "destruction".
+ * </pre>
  */
 bool destroy_area(int y1, int x1, int r, bool in_generate)
 {
@@ -5232,6 +3347,9 @@ bool destroy_area(int y1, int x1, int r, bool in_generate)
                return (FALSE);
        }
 
+       /* Lose monster light */
+       if (!in_generate) clear_mon_lite();
+
        /* Big area of affect */
        for (y = (y1 - r); y <= (y1 + r); y++)
        {
@@ -5253,12 +3371,12 @@ bool destroy_area(int y1, int x1, int r, bool in_generate)
                        c_ptr->info &= ~(CAVE_ROOM | CAVE_ICKY);
 
                        /* Lose light and knowledge */
-                       c_ptr->info &= ~(CAVE_MARK | CAVE_GLOW);
+                       c_ptr->info &= ~(CAVE_MARK | CAVE_GLOW | CAVE_KNOWN);
 
                        if (!in_generate) /* Normal */
                        {
-                               /* Lose unsafety and runes/mirrors */
-                               c_ptr->info &= ~(CAVE_UNSAFE | CAVE_OBJECT);
+                               /* Lose unsafety */
+                               c_ptr->info &= ~(CAVE_UNSAFE);
 
                                /* Hack -- Notice player affect */
                                if (player_bold(y, x))
@@ -5290,7 +3408,7 @@ bool destroy_area(int y1, int x1, int r, bool in_generate)
                                        m_ptr->hp = m_ptr->maxhp;
 
                                        /* Try to teleport away quest monsters */
-                                       if (!teleport_away(c_ptr->m_idx, (r * 2) + 1, TRUE)) continue;
+                                       if (!teleport_away(c_ptr->m_idx, (r * 2) + 1, TELEPORT_DEC_VALOUR)) continue;
                                }
                                else
                                {
@@ -5299,7 +3417,7 @@ bool destroy_area(int y1, int x1, int r, bool in_generate)
                                                char m_name[80];
 
                                                monster_desc(m_name, m_ptr, MD_INDEF_VISIBLE);
-                                               do_cmd_write_nikki(NIKKI_NAMED_PET, 6, m_name);
+                                               do_cmd_write_nikki(NIKKI_NAMED_PET, RECORD_NAMED_PET_DESTROY, m_name);
                                        }
 
                                        /* Delete the monster (if any) */
@@ -5324,7 +3442,7 @@ bool destroy_area(int y1, int x1, int r, bool in_generate)
                                        next_o_idx = o_ptr->next_o_idx;
 
                                        /* Hack -- Preserve unknown artifacts */
-                                       if (artifact_p(o_ptr) && (!object_known_p(o_ptr) || in_generate))
+                                       if (object_is_fixed_artifact(o_ptr) && (!object_is_known(o_ptr) || in_generate))
                                        {
                                                /* Mega-Hack -- Preserve the artifact */
                                                a_info[o_ptr->name1].cur_num = 0;
@@ -5333,20 +3451,13 @@ bool destroy_area(int y1, int x1, int r, bool in_generate)
                                                {
                                                        char o_name[MAX_NLEN];
                                                        object_desc(o_name, o_ptr, (OD_NAME_ONLY | OD_STORE));
-#ifdef JP
-                                                       msg_format("ÅÁÀâ¤Î¥¢¥¤¥Æ¥à (%s) ¤ÏÀ¸À®Ãæ¤Ë*Ç˲õ*¤µ¤ì¤¿¡£", o_name);
-#else
-                                                       msg_format("Artifact (%s) was *destroyed* during generation.", o_name);
-#endif
+                                                       msg_format(_("伝説のアイテム (%s) は生成中に*破壊*された。", "Artifact (%s) was *destroyed* during generation."), o_name);
                                                }
                                        }
                                        else if (in_generate && cheat_peek && o_ptr->art_name)
                                        {
-#ifdef JP
-                                               msg_print("¥é¥ó¥À¥à¡¦¥¢¡¼¥Æ¥£¥Õ¥¡¥¯¥È¤Î1¤Ä¤ÏÀ¸À®Ãæ¤Ë*Ç˲õ*¤µ¤ì¤¿¡£");
-#else
-                                               msg_print("One of the random artifacts was *destroyed* during generation.");
-#endif
+                                               msg_print(_("ランダム・アーティファクトの1つは生成中に*破壊*された。", 
+                                                                       "One of the random artifacts was *destroyed* during generation."));
                                        }
                                }
                        }
@@ -5355,7 +3466,7 @@ bool destroy_area(int y1, int x1, int r, bool in_generate)
                        delete_object(y, x);
 
                        /* Destroy "non-permanent" grids */
-                       if (!cave_perma_bold(y, x))
+                       if (!cave_perma_grid(c_ptr))
                        {
                                /* Wall (or floor) type */
                                t = randint0(200);
@@ -5365,17 +3476,17 @@ bool destroy_area(int y1, int x1, int r, bool in_generate)
                                        if (t < 20)
                                        {
                                                /* Create granite wall */
-                                               cave_set_feat(y, x, FEAT_WALL);
+                                               cave_set_feat(y, x, feat_granite);
                                        }
                                        else if (t < 70)
                                        {
                                                /* Create quartz vein */
-                                               cave_set_feat(y, x, FEAT_QUARTZ);
+                                               cave_set_feat(y, x, feat_quartz_vein);
                                        }
                                        else if (t < 100)
                                        {
                                                /* Create magma vein */
-                                               cave_set_feat(y, x, FEAT_MAGMA);
+                                               cave_set_feat(y, x, feat_magma_vein);
                                        }
                                        else
                                        {
@@ -5393,12 +3504,12 @@ bool destroy_area(int y1, int x1, int r, bool in_generate)
                                        else if (t < 70)
                                        {
                                                /* Create quartz vein */
-                                               c_ptr->feat = FEAT_QUARTZ;
+                                               c_ptr->feat = feat_quartz_vein;
                                        }
                                        else if (t < 100)
                                        {
                                                /* Create magma vein */
-                                               c_ptr->feat = FEAT_MAGMA;
+                                               c_ptr->feat = feat_magma_vein;
                                        }
                                        else
                                        {
@@ -5413,18 +3524,52 @@ bool destroy_area(int y1, int x1, int r, bool in_generate)
                }
        }
 
-
        if (!in_generate)
        {
+               /* Process "re-glowing" */
+               for (y = (y1 - r); y <= (y1 + r); y++)
+               {
+                       for (x = (x1 - r); x <= (x1 + r); x++)
+                       {
+                               /* Skip illegal grids */
+                               if (!in_bounds(y, x)) continue;
+
+                               /* Extract the distance */
+                               k = distance(y1, x1, y, x);
+
+                               /* Stay in the circle of death */
+                               if (k > r) continue;
+
+                               /* Access the grid */
+                               c_ptr = &cave[y][x];
+
+                               if (is_mirror_grid(c_ptr)) c_ptr->info |= CAVE_GLOW;
+                               else if (!(d_info[dungeon_type].flags1 & DF1_DARKNESS))
+                               {
+                                       int i, yy, xx;
+                                       cave_type *cc_ptr;
+
+                                       for (i = 0; i < 9; i++)
+                                       {
+                                               yy = y + ddy_ddd[i];
+                                               xx = x + ddx_ddd[i];
+                                               if (!in_bounds2(yy, xx)) continue;
+                                               cc_ptr = &cave[yy][xx];
+                                               if (have_flag(f_info[get_feat_mimic(cc_ptr)].flags, FF_GLOW))
+                                               {
+                                                       c_ptr->info |= CAVE_GLOW;
+                                                       break;
+                                               }
+                                       }
+                               }
+                       }
+               }
+
                /* Hack -- Affect player */
                if (flag)
                {
                        /* Message */
-#ifdef JP
-                       msg_print("dz¤¨¤ë¤è¤¦¤ÊÁ®¸÷¤¬È¯À¸¤·¤¿¡ª");
-#else
-                       msg_print("There is a searing blast of light!");
-#endif
+                       msg_print(_("燃えるような閃光が発生した!", "There is a searing blast of light!"));
 
                        /* Blind the player */
                        if (!p_ptr->resist_blind && !p_ptr->resist_lite)
@@ -5440,16 +3585,18 @@ bool destroy_area(int y1, int x1, int r, bool in_generate)
                p_ptr->update |= (PU_UN_VIEW | PU_UN_LITE);
 
                /* Update stuff */
-               p_ptr->update |= (PU_VIEW | PU_LITE | PU_FLOW | PU_MON_LITE);
-
-               /* Update the monsters */
-               p_ptr->update |= (PU_MONSTERS);
+               p_ptr->update |= (PU_VIEW | PU_LITE | PU_FLOW | PU_MON_LITE | PU_MONSTERS);
 
                /* Redraw map */
                p_ptr->redraw |= (PR_MAP);
 
                /* Window stuff */
                p_ptr->window |= (PW_OVERHEAD | PW_DUNGEON);
+
+               if (p_ptr->special_defense & NINJA_S_STEALTH)
+               {
+                       if (cave[p_ptr->y][p_ptr->x].info & CAVE_GLOW) set_superstealth(FALSE);
+               }
        }
 
        /* Success */
@@ -5457,8 +3604,16 @@ bool destroy_area(int y1, int x1, int r, bool in_generate)
 }
 
 
-/*
+/*!
+ * @brief 地震処理(サブルーチン) /
  * Induce an "earthquake" of the given radius at the given location.
+ * @return 効力があった場合TRUEを返す
+ * @param cy 中心Y座標
+ * @param cx 中心X座標
+ * @param r 効果半径
+ * @param m_idx 地震を起こしたモンスターID(0ならばプレイヤー)
+ * @details
+ * <pre>
  *
  * This will turn some walls into floors and some floors into walls.
  *
@@ -5474,12 +3629,14 @@ bool destroy_area(int y1, int x1, int r, bool in_generate)
  * Note that as of now (2.7.8) no monster may occupy a "wall" grid, even
  * for a single turn, unless that monster can pass_walls or kill_walls.
  * This has allowed massive simplification of the "monster" code.
+ * </pre>
  */
-bool earthquake(int cy, int cx, int r)
+bool earthquake_aux(int cy, int cx, int r, MONSTER_IDX m_idx)
 {
-       int             i, t, y, x, yy, xx, dy, dx, oy, ox;
+       int             i, t, y, x, yy, xx, dy, dx;
        int             damage = 0;
-       int             sn = 0, sy = 0, sx = 0;
+       int             sn = 0;
+       POSITION        sy = 0, sx = 0;
        bool            hurt = FALSE;
        cave_type       *c_ptr;
        bool            map[32][32];
@@ -5525,7 +3682,7 @@ bool earthquake(int cy, int cx, int r)
                        c_ptr->info &= ~(CAVE_ROOM | CAVE_ICKY | CAVE_UNSAFE);
 
                        /* Lose light and knowledge */
-                       c_ptr->info &= ~(CAVE_GLOW | CAVE_MARK);
+                       c_ptr->info &= ~(CAVE_GLOW | CAVE_MARK | CAVE_KNOWN);
 
                        /* Skip the epicenter */
                        if (!dx && !dy) continue;
@@ -5548,8 +3705,8 @@ bool earthquake(int cy, int cx, int r)
                for (i = 0; i < 8; i++)
                {
                        /* Access the location */
-                       y = py + ddy_ddd[i];
-                       x = px + ddx_ddd[i];
+                       y = p_ptr->y + ddy_ddd[i];
+                       x = p_ptr->x + ddx_ddd[i];
 
                        /* Skip non-empty grids */
                        if (!cave_empty_bold(y, x)) continue;
@@ -5574,32 +3731,17 @@ bool earthquake(int cy, int cx, int r)
                {
                        case 1:
                        {
-#ifdef JP
-msg_print("¥À¥ó¥¸¥ç¥ó¤ÎÊɤ¬Êø¤ì¤¿¡ª");
-#else
-                               msg_print("The cave ceiling collapses!");
-#endif
-
+                               msg_print(_("ダンジョンの壁が崩れた!", "The cave ceiling collapses!"));
                                break;
                        }
                        case 2:
                        {
-#ifdef JP
-msg_print("¥À¥ó¥¸¥ç¥ó¤Î¾²¤¬ÉÔ¼«Á³¤Ë¤Í¤¸¶Ê¤¬¤Ã¤¿¡ª");
-#else
-                               msg_print("The cave floor twists in an unnatural way!");
-#endif
-
+                               msg_print(_("ダンジョンの床が不自然にねじ曲がった!", "The cave floor twists in an unnatural way!"));
                                break;
                        }
                        default:
                        {
-#ifdef JP
-msg_print("¥À¥ó¥¸¥ç¥ó¤¬Íɤ줿¡ªÊø¤ì¤¿´ä¤¬Æ¬¤Ë¹ß¤Ã¤Æ¤­¤¿¡ª");
-#else
-                               msg_print("The cave quakes!  You are pummeled with debris!");
-#endif
-
+                               msg_print(_("ダンジョンが揺れた!崩れた岩が頭に降ってきた!", "The cave quakes!  You are pummeled with debris!"));
                                break;
                        }
                }
@@ -5608,12 +3750,7 @@ msg_print("
                if (!sn)
                {
                        /* Message and damage */
-#ifdef JP
-msg_print("¤¢¤Ê¤¿¤Ï¤Ò¤É¤¤²ø²æ¤òÉé¤Ã¤¿¡ª");
-#else
-                       msg_print("You are severely crushed!");
-#endif
-
+                       msg_print(_("あなたはひどい怪我を負った!", "You are severely crushed!"));
                        damage = 200;
                }
 
@@ -5625,80 +3762,56 @@ msg_print("
                        {
                                case 1:
                                {
-#ifdef JP
-msg_print("¹ß¤êÃí¤°´ä¤ò¤¦¤Þ¤¯Èò¤±¤¿¡ª");
-#else
-                                       msg_print("You nimbly dodge the blast!");
-#endif
-
+                                       msg_print(_("降り注ぐ岩をうまく避けた!", "You nimbly dodge the blast!"));
                                        damage = 0;
                                        break;
                                }
                                case 2:
                                {
-#ifdef JP
-msg_print("´äÀФ¬¤¢¤Ê¤¿¤Ëľ·â¤·¤¿!");
-#else
-                                       msg_print("You are bashed by rubble!");
-#endif
-
+                                       msg_print(_("岩石があなたに直撃した!", "You are bashed by rubble!"));
                                        damage = damroll(10, 4);
                                        (void)set_stun(p_ptr->stun + randint1(50));
                                        break;
                                }
                                case 3:
                                {
-#ifdef JP
-msg_print("¤¢¤Ê¤¿¤Ï¾²¤ÈÊɤȤδ֤˶´¤Þ¤ì¤Æ¤·¤Þ¤Ã¤¿¡ª");
-#else
-                                       msg_print("You are crushed between the floor and ceiling!");
-#endif
-
+                                       msg_print(_("あなたは床と壁との間に挟まれてしまった!", "You are crushed between the floor and ceiling!"));
                                        damage = damroll(10, 4);
                                        (void)set_stun(p_ptr->stun + randint1(50));
                                        break;
                                }
                        }
 
-                       /* Save the old location */
-                       oy = py;
-                       ox = px;
-
                        /* Move the player to the safe location */
-                       py = sy;
-                       px = sx;
-
-                       if (p_ptr->riding)
-                       {
-                               cave[oy][ox].m_idx = cave[py][px].m_idx;
-                               cave[py][px].m_idx = p_ptr->riding;
-                               m_list[p_ptr->riding].fy = py;
-                               m_list[p_ptr->riding].fx = px;
-                               update_mon(p_ptr->riding, TRUE);
-                       }
-
-                       /* Redraw the old spot */
-                       lite_spot(oy, ox);
-
-                       /* Redraw the new spot */
-                       lite_spot(py, px);
-
-                       /* Check for new panel */
-                       verify_panel();
+                       (void)move_player_effect(sy, sx, MPE_DONT_PICKUP);
                }
 
                /* Important -- no wall on player */
-               map[16+py-cy][16+px-cx] = FALSE;
+               map[16+p_ptr->y-cy][16+p_ptr->x-cx] = FALSE;
 
                /* Take some damage */
-#ifdef JP
-if (damage) take_hit(DAMAGE_ATTACK, damage, "ÃÏ¿Ì", -1);
-#else
-               if (damage) take_hit(DAMAGE_ATTACK, damage, "an earthquake", -1);
-#endif
+               if (damage)
+               {
+                       cptr killer;
 
-       }
+                       if (m_idx)
+                       {
+                               char m_name[80];
+                               monster_type *m_ptr = &m_list[m_idx];
+
+                               /* Get the monster's real name */
+                               monster_desc(m_name, m_ptr, MD_IGNORE_HALLU | MD_ASSUME_VISIBLE | MD_INDEF_VISIBLE);
+
+                               killer = format(_("%sの起こした地震", "an earthquake caused by %s"), m_name);
+                       }
+                       else
+                       {
+                               killer = _("地震", "an earthquake");
+                       }
 
+                       take_hit(DAMAGE_ATTACK, damage, killer, -1);
+               }
+       }
 
        /* Examine the quaked region */
        for (dy = -r; dy <= r; dy++)
@@ -5782,18 +3895,13 @@ if (damage) take_hit(DAMAGE_ATTACK, damage, "
                                        monster_desc(m_name, m_ptr, 0);
 
                                        /* Scream in pain */
-#ifdef JP
-msg_format("%^s¤Ï¶ìÄˤǵ㤭¤ï¤á¤¤¤¿¡ª", m_name);
-#else
-                                       msg_format("%^s wails out in pain!", m_name);
-#endif
-
+                                       if (!ignore_unview || is_seen(m_ptr)) msg_format(_("%^sは苦痛で泣きわめいた!", "%^s wails out in pain!"), m_name);
 
                                        /* Take damage from the quake */
                                        damage = (sn ? damroll(4, 8) : (m_ptr->hp + 1));
 
                                        /* Monster is certainly awake */
-                                       m_ptr->csleep = 0;
+                                       (void)set_monster_csleep(c_ptr->m_idx, 0);
 
                                        /* Apply damage directly */
                                        m_ptr->hp -= damage;
@@ -5802,11 +3910,8 @@ msg_format("%^s
                                        if (m_ptr->hp < 0)
                                        {
                                                /* Message */
-#ifdef JP
-msg_format("%^s¤Ï´äÀФËËä¤â¤ì¤Æ¤·¤Þ¤Ã¤¿¡ª", m_name);
-#else
-                                               msg_format("%^s is embedded in the rock!", m_name);
-#endif
+                                               if (!ignore_unview || is_seen(m_ptr)) 
+                                                       msg_format(_("%^sは岩石に埋もれてしまった!", "%^s is embedded in the rock!"), m_name);
 
                                                if (c_ptr->m_idx)
                                                {
@@ -5815,7 +3920,7 @@ msg_format("%^s
                                                                char m2_name[80];
 
                                                                monster_desc(m2_name, m_ptr, MD_INDEF_VISIBLE);
-                                                               do_cmd_write_nikki(NIKKI_NAMED_PET, 7, m2_name);
+                                                               do_cmd_write_nikki(NIKKI_NAMED_PET, RECORD_NAMED_PET_EARTHQUAKE, m2_name);
                                                        }
                                                }
 
@@ -5829,14 +3934,14 @@ msg_format("%^s
                                        /* Hack -- Escape from the rock */
                                        if (sn)
                                        {
-                                               int m_idx = cave[yy][xx].m_idx;
-
-                                               /* Update the new location */
-                                               cave[sy][sx].m_idx = m_idx;
+                                               IDX m_idx_aux = cave[yy][xx].m_idx;
 
                                                /* Update the old location */
                                                cave[yy][xx].m_idx = 0;
 
+                                               /* Update the new location */
+                                               cave[sy][sx].m_idx = m_idx_aux;
+
                                                /* Move the monster */
                                                m_ptr->fy = sy;
                                                m_ptr->fx = sx;
@@ -5855,6 +3960,8 @@ msg_format("%^s
                }
        }
 
+       /* Lose monster light */
+       clear_mon_lite();
 
        /* Examine the quaked region */
        for (dy = -r; dy <= r; dy++)
@@ -5877,36 +3984,31 @@ msg_format("%^s
                        /* Destroy location (if valid) */
                        if (cave_valid_bold(yy, xx))
                        {
-                               bool floor = cave_floor_bold(yy, xx);
-
                                /* Delete objects */
                                delete_object(yy, xx);
 
-                               /* Clear mirror, runes flag */
-                               c_ptr->info &= ~CAVE_OBJECT;
-
                                /* Wall (or floor) type */
-                               t = (floor ? randint0(100) : 200);
+                               t = cave_have_flag_bold(yy, xx, FF_PROJECT) ? randint0(100) : 200;
 
                                /* Granite */
                                if (t < 20)
                                {
                                        /* Create granite wall */
-                                       cave_set_feat(yy, xx, FEAT_WALL);
+                                       cave_set_feat(yy, xx, feat_granite);
                                }
 
                                /* Quartz */
                                else if (t < 70)
                                {
                                        /* Create quartz vein */
-                                       cave_set_feat(yy, xx, FEAT_QUARTZ);
+                                       cave_set_feat(yy, xx, feat_quartz_vein);
                                }
 
                                /* Magma */
                                else if (t < 100)
                                {
                                        /* Create magma vein */
-                                       cave_set_feat(yy, xx, FEAT_MAGMA);
+                                       cave_set_feat(yy, xx, feat_magma_vein);
                                }
 
                                /* Floor */
@@ -5920,14 +4022,52 @@ msg_format("%^s
        }
 
 
+       /* Process "re-glowing" */
+       for (dy = -r; dy <= r; dy++)
+       {
+               for (dx = -r; dx <= r; dx++)
+               {
+                       /* Extract the location */
+                       yy = cy + dy;
+                       xx = cx + dx;
+
+                       /* Skip illegal grids */
+                       if (!in_bounds(yy, xx)) continue;
+
+                       /* Skip distant grids */
+                       if (distance(cy, cx, yy, xx) > r) continue;
+
+                       /* Access the grid */
+                       c_ptr = &cave[yy][xx];
+
+                       if (is_mirror_grid(c_ptr)) c_ptr->info |= CAVE_GLOW;
+                       else if (!(d_info[dungeon_type].flags1 & DF1_DARKNESS))
+                       {
+                               int ii, yyy, xxx;
+                               cave_type *cc_ptr;
+
+                               for (ii = 0; ii < 9; ii++)
+                               {
+                                       yyy = yy + ddy_ddd[ii];
+                                       xxx = xx + ddx_ddd[ii];
+                                       if (!in_bounds2(yyy, xxx)) continue;
+                                       cc_ptr = &cave[yyy][xxx];
+                                       if (have_flag(f_info[get_feat_mimic(cc_ptr)].flags, FF_GLOW))
+                                       {
+                                               c_ptr->info |= CAVE_GLOW;
+                                               break;
+                                       }
+                               }
+                       }
+               }
+       }
+
+
        /* Mega-Hack -- Forget the view and lite */
        p_ptr->update |= (PU_UN_VIEW | PU_UN_LITE);
 
        /* Update stuff */
-       p_ptr->update |= (PU_VIEW | PU_LITE | PU_FLOW | PU_MON_LITE);
-
-       /* Update the monsters */
-       p_ptr->update |= (PU_DISTANCE);
+       p_ptr->update |= (PU_VIEW | PU_LITE | PU_FLOW | PU_MON_LITE | PU_MONSTERS);
 
        /* Update the health bar */
        p_ptr->redraw |= (PR_HEALTH | PR_UHEALTH);
@@ -5938,14 +4078,35 @@ msg_format("%^s
        /* Window stuff */
        p_ptr->window |= (PW_OVERHEAD | PW_DUNGEON);
 
+       if (p_ptr->special_defense & NINJA_S_STEALTH)
+       {
+               if (cave[p_ptr->y][p_ptr->x].info & CAVE_GLOW) set_superstealth(FALSE);
+       }
+
        /* Success */
        return (TRUE);
 }
 
+/*!
+ * @brief 地震処理(プレイヤーの中心発動) /
+ * Induce an "earthquake" of the given radius at the given location.
+ * @return 効力があった場合TRUEを返す
+ * @param cy 中心Y座標
+ * @param cx 中心X座標
+ * @param r 効果半径
+ */
+bool earthquake(int cy, int cx, int r)
+{
+       return earthquake_aux(cy, cx, r, 0);
+}
 
+/*!
+ * @brief ペット爆破処理 /
+ * @return なし
+ */
 void discharge_minion(void)
 {
-       int i;
+       MONSTER_IDX i;
        bool okay = TRUE;
 
        for (i = 1; i < m_max; i++)
@@ -5956,11 +4117,7 @@ void discharge_minion(void)
        }
        if (!okay || p_ptr->riding)
        {
-#ifdef JP
-               if (!get_check("ËÜÅö¤ËÁ´¥Ú¥Ã¥È¤òÇúÇˤ·¤Þ¤¹¤«¡©"))
-#else
-               if (!get_check("You will blast all pets. Are you sure? "))
-#endif
+               if (!get_check(_("本当に全ペットを爆破しますか?", "You will blast all pets. Are you sure? ")))
                        return;
        }
        for (i = 1; i < m_max; i++)
@@ -5977,11 +4134,7 @@ void discharge_minion(void)
                {
                        char m_name[80];
                        monster_desc(m_name, m_ptr, 0x00);
-#ifdef JP
-                       msg_format("%s¤ÏÇúÇˤµ¤ì¤ë¤Î¤ò·ù¤¬¤ê¡¢¾¡¼ê¤Ë¼«Ê¬¤ÎÀ¤³¦¤Ø¤Èµ¢¤Ã¤¿¡£", m_name);
-#else
-                       msg_format("%^s resists to be blasted, and run away.", m_name);
-#endif
+                       msg_format(_("%sは爆破されるのを嫌がり、勝手に自分の世界へと帰った。", "%^s resists to be blasted, and run away."), m_name);
                        delete_monster_idx(i);
                        continue;
                }
@@ -5992,25 +4145,35 @@ void discharge_minion(void)
                project(i, 2+(r_ptr->level/20), m_ptr->fy,
                        m_ptr->fx, dam, GF_PLASMA, 
                        PROJECT_STOP | PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL, -1);
+
+               if (record_named_pet && m_ptr->nickname)
+               {
+                       char m_name[80];
+
+                       monster_desc(m_name, m_ptr, MD_INDEF_VISIBLE);
+                       do_cmd_write_nikki(NIKKI_NAMED_PET, RECORD_NAMED_PET_BLAST, m_name);
+               }
+
                delete_monster_idx(i);
        }
 }
 
 
-/*
+/*!
+ * @brief 部屋全体を照らすサブルーチン
+ * @return なし
+ * @details
+ * <pre>
  * This routine clears the entire "temp" set.
- *
  * This routine will Perma-Lite all "temp" grids.
- *
  * This routine is used (only) by "lite_room()"
- *
  * Dark grids are illuminated.
- *
  * Also, process all affected monsters.
  *
  * SMART monsters always wake up when illuminated
  * NORMAL monsters wake up 1/4 the time when illuminated
  * STUPID monsters wake up 1/10 the time when illuminated
+ * </pre>
  */
 static void cave_temp_room_lite(void)
 {
@@ -6052,12 +4215,10 @@ static void cave_temp_room_lite(void)
                        if (r_ptr->flags2 & (RF2_SMART)) chance = 100;
 
                        /* Sometimes monsters wake up */
-                       if (m_ptr->csleep && (randint0(100) < chance))
+                       if (MON_CSLEEP(m_ptr) && (randint0(100) < chance))
                        {
                                /* Wake up! */
-                               m_ptr->csleep = 0;
-
-                               if (r_ptr->flags7 & RF7_HAS_LD_MASK) p_ptr->update |= (PU_MON_LITE);
+                               (void)set_monster_csleep(c_ptr->m_idx, 0);
 
                                /* Notice the "waking up" */
                                if (m_ptr->ml)
@@ -6068,15 +4229,7 @@ static void cave_temp_room_lite(void)
                                        monster_desc(m_name, m_ptr, 0);
 
                                        /* Dump a message */
-#ifdef JP
-msg_format("%^s¤¬Ìܤò³Ð¤Þ¤·¤¿¡£", m_name);
-#else
-                                       msg_format("%^s wakes up.", m_name);
-#endif
-                                       /* Redraw the health bar */
-                                       if (p_ptr->health_who == c_ptr->m_idx)
-                                               p_ptr->redraw |= (PR_HEALTH);
-
+                                       msg_format(_("%^sが目を覚ました。", "%^s wakes up."), m_name);
                                }
                        }
                }
@@ -6086,6 +4239,8 @@ msg_format("%^s
 
                /* Redraw */
                lite_spot(y, x);
+
+               update_local_illumination(y, x);
        }
 
        /* None left */
@@ -6094,16 +4249,17 @@ msg_format("%^s
 
 
 
-/*
+/*!
+ * @brief 部屋全体を暗くするサブルーチン
+ * @return なし
+ * @details
+ * <pre>
  * This routine clears the entire "temp" set.
- *
  * This routine will "darken" all "temp" grids.
- *
  * In addition, some of these grids will be "unmarked".
- *
  * This routine is used (only) by "unlite_room()"
- *
  * Also, process all affected monsters
+ * </pre>
  */
 static void cave_temp_room_unlite(void)
 {
@@ -6114,15 +4270,39 @@ static void cave_temp_room_unlite(void)
        {
                int y = temp_y[i];
                int x = temp_x[i];
+               int j;
 
                cave_type *c_ptr = &cave[y][x];
+               bool do_dark = !is_mirror_grid(c_ptr);
 
                /* No longer in the array */
                c_ptr->info &= ~(CAVE_TEMP);
 
                /* Darken the grid */
-               if (!is_mirror_grid(c_ptr))
+               if (do_dark)
                {
+                       if (dun_level || !is_daytime())
+                       {
+                               for (j = 0; j < 9; j++)
+                               {
+                                       int by = y + ddy_ddd[j];
+                                       int bx = x + ddx_ddd[j];
+
+                                       if (in_bounds2(by, bx))
+                                       {
+                                               cave_type *cc_ptr = &cave[by][bx];
+
+                                               if (have_flag(f_info[get_feat_mimic(cc_ptr)].flags, FF_GLOW))
+                                               {
+                                                       do_dark = FALSE;
+                                                       break;
+                                               }
+                                       }
+                               }
+
+                               if (!do_dark) continue;
+                       }
+
                        c_ptr->info &= ~(CAVE_GLOW);
 
                        /* Hack -- Forget "boring" grids */
@@ -6144,6 +4324,8 @@ static void cave_temp_room_unlite(void)
 
                        /* Redraw */
                        lite_spot(y, x);
+
+                       update_local_illumination(y, x);
                }
        }
 
@@ -6152,15 +4334,14 @@ static void cave_temp_room_unlite(void)
 }
 
 
-#define cave_pass_lite_bold(Y,X) \
-       (cave_los_bold((Y), (X)) && \
-        have_flag(f_flags_bold((Y), (X)), FF_PROJECT))
-
-
-/*
- * Determine how much contiguous open space this grid is next to
+/*!
+ * @brief 周辺に関数ポインタの条件に該当する地形がいくつあるかを計算する / Determine how much contiguous open space this grid is next to
+ * @param cy Y座標
+ * @param cx X座標
+ * @param pass_bold 地形条件を返す関数ポインタ
+ * @return 該当地形の数
  */
-static int next_to_open(int cy, int cx)
+static int next_to_open(int cy, int cx, bool (*pass_bold)(int, int))
 {
        int i;
 
@@ -6175,7 +4356,7 @@ static int next_to_open(int cy, int cx)
                x = cx + ddx_cdd[i % 8];
 
                /* Found a wall, break the length */
-               if (!cave_pass_lite_bold(y, x))
+               if (!pass_bold(y, x))
                {
                        /* Track best length */
                        if (len > blen)
@@ -6194,8 +4375,14 @@ static int next_to_open(int cy, int cx)
        return (MAX(len, blen));
 }
 
-
-static int next_to_walls_adj(int cy, int cx)
+/*!
+ * @brief 周辺に関数ポインタの条件に該当する地形がいくつあるかを計算する / Determine how much contiguous open space this grid is next to
+ * @param cy Y座標
+ * @param cx X座標
+ * @param pass_bold 地形条件を返す関数ポインタ
+ * @return 該当地形の数
+ */
+static int next_to_walls_adj(int cy, int cx, bool (*pass_bold)(int, int))
 {
        int i;
 
@@ -6208,17 +4395,22 @@ static int next_to_walls_adj(int cy, int cx)
                y = cy + ddy_ddd[i];
                x = cx + ddx_ddd[i];
 
-               if (!cave_pass_lite_bold(y, x)) c++;
+               if (!pass_bold(y, x)) c++;
        }
 
        return c;
 }
 
 
-/*
- * Aux function -- see below
+/*!
+ * @brief 部屋内にある一点の周囲に該当する地形数かいくつあるかをグローバル変数temp_nに返す / Aux function -- see below
+ * @param y 部屋内のy座標1点
+ * @param x 部屋内のx座標1点
+ * @param only_room 部屋内地形のみをチェック対象にするならば TRUE
+ * @param pass_bold 地形条件を返す関数ポインタ
+ * @return 該当地形の数
  */
-static void cave_temp_room_aux(int y, int x, bool only_room)
+static void cave_temp_room_aux(int y, int x, bool only_room, bool (*pass_bold)(int, int))
 {
        cave_type *c_ptr;
 
@@ -6237,7 +4429,7 @@ static void cave_temp_room_aux(int y, int x, bool only_room)
                if (!in_bounds2(y, x)) return;
 
                /* Do not exceed the maximum spell range */
-               if (distance(py, px, y, x) > MAX_RANGE) return;
+               if (distance(p_ptr->y, p_ptr->x, y, x) > MAX_RANGE) return;
 
                /* Verify this grid */
                /*
@@ -6248,8 +4440,8 @@ static void cave_temp_room_aux(int y, int x, bool only_room)
                 * properly.
                 * This leaves only a check for 6 bounding walls!
                 */
-               if (in_bounds(y, x) && cave_pass_lite_bold(y, x) &&
-                   (next_to_walls_adj(y, x) == 6) && (next_to_open(y, x) <= 1)) return;
+               if (in_bounds(y, x) && pass_bold(y, x) &&
+                   (next_to_walls_adj(y, x, pass_bold) == 6) && (next_to_open(y, x, pass_bold) <= 1)) return;
        }
 
        /* Paranoia -- verify space */
@@ -6264,27 +4456,57 @@ static void cave_temp_room_aux(int y, int x, bool only_room)
        temp_n++;
 }
 
-/*
- * Aux function -- see below
+/*!
+ * @brief 指定のマスが光を通すか(LOSフラグを持つか)を返す。 / Aux function -- see below
+ * @param y 指定Y座標
+ * @param x 指定X座標
+ * @return 光を通すならばtrueを返す。
+ */
+static bool cave_pass_lite_bold(int y, int x)
+{
+       return cave_los_bold(y, x);
+}
+
+/*!
+ * @brief 部屋内にある一点の周囲がいくつ光を通すかをグローバル変数temp_nに返す / Aux function -- see below
+ * @param y 指定Y座標
+ * @param x 指定X座標
+ * @return なし
  */
 static void cave_temp_lite_room_aux(int y, int x)
 {
-       cave_temp_room_aux(y, x, FALSE);
+       cave_temp_room_aux(y, x, FALSE, cave_pass_lite_bold);
 }
 
-/*
- * Aux function -- see below
+/*!
+ * @brief 指定のマスが光を通さず射線のみを通すかを返す。 / Aux function -- see below
+ * @param y 指定Y座標
+ * @param x 指定X座標
+ * @return 射線を通すならばtrueを返す。
  */
-static void cave_temp_unlite_room_aux(int y, int x)
+static bool cave_pass_dark_bold(int y, int x)
 {
-       cave_temp_room_aux(y, x, TRUE);
+       return cave_have_flag_bold(y, x, FF_PROJECT);
 }
 
 
+/*!
+ * @brief 部屋内にある一点の周囲がいくつ射線を通すかをグローバル変数temp_nに返す / Aux function -- see below
+ * @param y 指定Y座標
+ * @param x 指定X座標
+ * @return なし
+ */
+static void cave_temp_unlite_room_aux(int y, int x)
+{
+       cave_temp_room_aux(y, x, TRUE, cave_pass_dark_bold);
+}
 
 
-/*
- * Illuminate any room containing the given location.
+/*!
+ * @brief 指定された部屋内を照らす / Illuminate any room containing the given location.
+ * @param y1 指定Y座標
+ * @param x1 指定X座標
+ * @return なし
  */
 void lite_room(int y1, int x1)
 {
@@ -6316,11 +4538,19 @@ void lite_room(int y1, int x1)
 
        /* Now, lite them all up at once */
        cave_temp_room_lite();
+
+       if (p_ptr->special_defense & NINJA_S_STEALTH)
+       {
+               if (cave[p_ptr->y][p_ptr->x].info & CAVE_GLOW) set_superstealth(FALSE);
+       }
 }
 
 
-/*
- * Darken all rooms containing the given location
+/*!
+ * @brief 指定された部屋内を暗くする / Darken all rooms containing the given location
+ * @param y1 指定Y座標
+ * @param x1 指定X座標
+ * @return なし
  */
 void unlite_room(int y1, int x1)
 {
@@ -6335,7 +4565,7 @@ void unlite_room(int y1, int x1)
                x = temp_x[i], y = temp_y[i];
 
                /* Walls get dark, but stop darkness */
-               if (!cave_pass_lite_bold(y, x)) continue;
+               if (!cave_pass_dark_bold(y, x)) continue;
 
                /* Spread adjacent */
                cave_temp_unlite_room_aux(y + 1, x);
@@ -6356,9 +4586,11 @@ void unlite_room(int y1, int x1)
 
 
 
-/*
- * Hack -- call light around the player
- * Affect all monsters in the projection radius
+/*!
+ * @brief プレイヤー位置を中心にLITE_WEAK属性を通じた照明処理を行う / Hack -- call light around the player Affect all monsters in the projection radius
+ * @param dam 威力
+ * @param rad 効果半径
+ * @return 作用が実際にあった場合TRUEを返す
  */
 bool lite_area(int dam, int rad)
 {
@@ -6366,44 +4598,32 @@ bool lite_area(int dam, int rad)
 
        if (d_info[dungeon_type].flags1 & DF1_DARKNESS)
        {
-#ifdef JP
-               msg_print("¥À¥ó¥¸¥ç¥ó¤¬¸÷¤òµÛ¼ý¤·¤¿¡£");
-#else
-               msg_print("The darkness of this dungeon absorb your light.");
-#endif
+               msg_print(_("ダンジョンが光を吸収した。", "The darkness of this dungeon absorb your light."));
                return FALSE;
        }
 
        /* Hack -- Message */
        if (!p_ptr->blind)
        {
-#ifdef JP
-msg_print("Çò¤¤¸÷¤¬ÊÕ¤ê¤òʤ¤Ã¤¿¡£");
-#else
-               msg_print("You are surrounded by a white light.");
-#endif
-
+               msg_print(_("白い光が辺りを覆った。", "You are surrounded by a white light."));
        }
 
        /* Hook into the "project()" function */
-       (void)project(0, rad, py, px, dam, GF_LITE_WEAK, flg, -1);
+       (void)project(0, rad, p_ptr->y, p_ptr->x, dam, GF_LITE_WEAK, flg, -1);
 
        /* Lite up the room */
-       lite_room(py, px);
-
-       if (p_ptr->special_defense & NINJA_S_STEALTH)
-       {
-               set_superstealth(FALSE);
-       }
+       lite_room(p_ptr->y, p_ptr->x);
 
        /* Assume seen */
        return (TRUE);
 }
 
 
-/*
- * Hack -- call darkness around the player
- * Affect all monsters in the projection radius
+/*!
+ * @brief プレイヤー位置を中心にLITE_DARK属性を通じた消灯処理を行う / Hack -- call light around the player Affect all monsters in the projection radius
+ * @param dam 威力
+ * @param rad 効果半径
+ * @return 作用が実際にあった場合TRUEを返す
  */
 bool unlite_area(int dam, int rad)
 {
@@ -6412,19 +4632,14 @@ bool unlite_area(int dam, int rad)
        /* Hack -- Message */
        if (!p_ptr->blind)
        {
-#ifdef JP
-msg_print("°Å°Ç¤¬ÊÕ¤ê¤òʤ¤Ã¤¿¡£");
-#else
-               msg_print("Darkness surrounds you.");
-#endif
-
+               msg_print(_("暗闇が辺りを覆った。", "Darkness surrounds you."));
        }
 
        /* Hook into the "project()" function */
-       (void)project(0, rad, py, px, dam, GF_DARK_WEAK, flg, -1);
+       (void)project(0, rad, p_ptr->y, p_ptr->x, dam, GF_DARK_WEAK, flg, -1);
 
        /* Lite up the room */
-       unlite_room(py, px);
+       unlite_room(p_ptr->y, p_ptr->x);
 
        /* Assume seen */
        return (TRUE);
@@ -6432,11 +4647,19 @@ msg_print("
 
 
 
-/*
- * Cast a ball spell
+/*!
+ * @brief ボール系スペルの発動 / Cast a ball spell
+ * @param typ 効果属性
+ * @param dir 方向(5ならばグローバル変数 target_col/target_row の座標を目標にする)
+ * @param dam 威力
+ * @param rad 半径
+ * @return 作用が実際にあった場合TRUEを返す
+ * @details
+ * <pre>
  * Stop if we hit a monster, act as a "ball"
  * Allow "target" mode to pass over monsters
  * Affect grids, objects, and monsters
+ * </pre>
  */
 bool fire_ball(int typ, int dir, int dam, int rad)
 {
@@ -6446,8 +4669,8 @@ bool fire_ball(int typ, int dir, int dam, int rad)
 
        if (typ == GF_CONTROL_LIVING) flg|= PROJECT_HIDE;
        /* Use the given direction */
-       tx = px + 99 * ddx[dir];
-       ty = py + 99 * ddy[dir];
+       tx = p_ptr->x + 99 * ddx[dir];
+       ty = p_ptr->y + 99 * ddy[dir];
 
        /* Hack -- Use an actual "target" */
        if ((dir == 5) && target_okay())
@@ -6462,11 +4685,20 @@ bool fire_ball(int typ, int dir, int dam, int rad)
 }
 
 
-/*
- * Cast a ball spell
+
+/*!
+ * @brief ロケット系スペルの発動(詳細な差は確認中) / Cast a ball spell
+ * @param typ 効果属性
+ * @param dir 方向(5ならばグローバル変数 target_col/target_row の座標を目標にする)
+ * @param dam 威力
+ * @param rad 半径
+ * @return 作用が実際にあった場合TRUEを返す
+ * @details
+ * <pre>
  * Stop if we hit a monster, act as a "ball"
  * Allow "target" mode to pass over monsters
  * Affect grids, objects, and monsters
+ * </pre>
  */
 bool fire_rocket(int typ, int dir, int dam, int rad)
 {
@@ -6475,8 +4707,8 @@ bool fire_rocket(int typ, int dir, int dam, int rad)
        int flg = PROJECT_STOP | PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL;
 
        /* Use the given direction */
-       tx = px + 99 * ddx[dir];
-       ty = py + 99 * ddy[dir];
+       tx = p_ptr->x + 99 * ddx[dir];
+       ty = p_ptr->y + 99 * ddy[dir];
 
        /* Hack -- Use an actual "target" */
        if ((dir == 5) && target_okay())
@@ -6490,11 +4722,19 @@ bool fire_rocket(int typ, int dir, int dam, int rad)
 }
 
 
-/*
- * Cast a ball spell
+/*!
+ * @brief ボール(ハイド)系スペルの発動 / Cast a ball spell
+ * @param typ 効果属性
+ * @param dir 方向(5ならばグローバル変数 target_col/target_row の座標を目標にする)
+ * @param dam 威力
+ * @param rad 半径
+ * @return 作用が実際にあった場合TRUEを返す
+ * @details
+ * <pre>
  * Stop if we hit a monster, act as a "ball"
  * Allow "target" mode to pass over monsters
  * Affect grids, objects, and monsters
+ * </pre>
  */
 bool fire_ball_hide(int typ, int dir, int dam, int rad)
 {
@@ -6503,8 +4743,8 @@ bool fire_ball_hide(int typ, int dir, int dam, int rad)
        int flg = PROJECT_STOP | PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL | PROJECT_HIDE;
 
        /* Use the given direction */
-       tx = px + 99 * ddx[dir];
-       ty = py + 99 * ddy[dir];
+       tx = p_ptr->x + 99 * ddx[dir];
+       ty = p_ptr->y + 99 * ddy[dir];
 
        /* Hack -- Use an actual "target" */
        if ((dir == 5) && target_okay())
@@ -6519,13 +4759,23 @@ bool fire_ball_hide(int typ, int dir, int dam, int rad)
 }
 
 
-/*
+/*!
+ * @brief メテオ系スペルの発動 / Cast a meteor spell
+ * @param who スぺル詠唱者のモンスターID(0=プレイヤー)
+ * @param typ 効果属性
+ * @param dam 威力
+ * @param rad 半径
+ * @param y 中心点Y座標
+ * @param x 中心点X座標
+ * @return 作用が実際にあった場合TRUEを返す
+ * @details
+ * <pre>
  * Cast a meteor spell, defined as a ball spell cast by an arbitary monster, 
  * player, or outside source, that starts out at an arbitrary location, and 
  * leaving no trail from the "caster" to the target.  This function is 
  * especially useful for bombardments and similar. -LM-
- *
  * Option to hurt the player.
+ * </pre>
  */
 bool fire_meteor(int who, int typ, int y, int x, int dam, int rad)
 {
@@ -6536,6 +4786,16 @@ bool fire_meteor(int who, int typ, int y, int x, int dam, int rad)
 }
 
 
+/*!
+ * @brief ブラスト系スペルの発動 / Cast a blast spell
+ * @param typ 効果属性
+ * @param dir 方向(5ならばグローバル変数 target_col/target_row の座標を目標にする)
+ * @param dd 威力ダイス数
+ * @param ds 威力ダイス目
+ * @param num 基本回数
+ * @param dev 回数分散
+ * @return 作用が実際にあった場合TRUEを返す
+ */
 bool fire_blast(int typ, int dir, int dd, int ds, int num, int dev)
 {
        int ly, lx, ld;
@@ -6550,21 +4810,21 @@ bool fire_blast(int typ, int dir, int dd, int ds, int num, int dev)
        /* Use the given direction */
        if (dir != 5)
        {
-               ly = ty = py + 20 * ddy[dir];
-               lx = tx = px + 20 * ddx[dir];
+               ly = ty = p_ptr->y + 20 * ddy[dir];
+               lx = tx = p_ptr->x + 20 * ddx[dir];
        }
 
        /* Use an actual "target" */
-       else if (dir == 5)
+       else /* if (dir == 5) */
        {
                tx = target_col;
                ty = target_row;
 
-               lx = 20 * (tx - px) + px;
-               ly = 20 * (ty - py) + py;
+               lx = 20 * (tx - p_ptr->x) + p_ptr->x;
+               ly = 20 * (ty - p_ptr->y) + p_ptr->y;
        }
 
-       ld = distance(py, px, ly, lx);
+       ld = distance(p_ptr->y, p_ptr->x, ly, lx);
 
        /* Blast */
        for (i = 0; i < num; i++)
@@ -6589,8 +4849,10 @@ bool fire_blast(int typ, int dir, int dd, int ds, int num, int dev)
 }
 
 
-/*
- * Switch position with a monster.
+/*!
+ * @brief モンスターとの位置交換処理 / Switch position with a monster.
+ * @param dir 方向(5ならばグローバル変数 target_col/target_row の座標を目標にする)
+ * @return 作用が実際にあった場合TRUEを返す
  */
 bool teleport_swap(int dir)
 {
@@ -6606,43 +4868,28 @@ bool teleport_swap(int dir)
        }
        else
        {
-               tx = px + ddx[dir];
-               ty = py + ddy[dir];
+               tx = p_ptr->x + ddx[dir];
+               ty = p_ptr->y + ddy[dir];
        }
        c_ptr = &cave[ty][tx];
 
        if (p_ptr->anti_tele)
        {
-#ifdef JP
-msg_print("ÉԻ׵ĤÊÎϤ¬¥Æ¥ì¥Ý¡¼¥È¤òËɤ¤¤À¡ª");
-#else
-               msg_print("A mysterious force prevents you from teleporting!");
-#endif
-
+               msg_print(_("不思議な力がテレポートを防いだ!", "A mysterious force prevents you from teleporting!"));
                return FALSE;
        }
 
        if (!c_ptr->m_idx || (c_ptr->m_idx == p_ptr->riding))
        {
-#ifdef JP
-msg_print("¤½¤ì¤È¤Ï¾ì½ê¤ò¸ò´¹¤Ç¤­¤Þ¤»¤ó¡£");
-#else
-               msg_print("You can't trade places with that!");
-#endif
-
+               msg_print(_("それとは場所を交換できません。", "You can't trade places with that!"));
 
                /* Failure */
                return FALSE;
        }
 
-       if ((c_ptr->info & CAVE_ICKY) || (distance(ty, tx, py, px) > p_ptr->lev * 3 / 2 + 10))
+       if ((c_ptr->info & CAVE_ICKY) || (distance(ty, tx, p_ptr->y, p_ptr->x) > p_ptr->lev * 3 / 2 + 10))
        {
-#ifdef JP
-msg_print("¼ºÇÔ¤·¤¿¡£");
-#else
-               msg_print("Failed to swap.");
-#endif
-
+               msg_print(_("失敗した。", "Failed to swap."));
 
                /* Failure */
                return FALSE;
@@ -6651,18 +4898,13 @@ msg_print("
        m_ptr = &m_list[c_ptr->m_idx];
        r_ptr = &r_info[m_ptr->r_idx];
 
+       (void)set_monster_csleep(c_ptr->m_idx, 0);
+
        if (r_ptr->flagsr & RFR_RES_TELE)
        {
-#ifdef JP
-msg_print("¥Æ¥ì¥Ý¡¼¥È¤ò¼ÙË⤵¤ì¤¿¡ª");
-#else
-               msg_print("Your teleportation is blocked!");
-#endif
+               msg_print(_("テレポートを邪魔された!", "Your teleportation is blocked!"));
 
-               if (m_ptr->ml && is_original_ap(m_ptr)) r_ptr->r_flagsr |= RFR_RES_TELE;
-
-               m_ptr->csleep = 0;
-               if (r_ptr->flags7 & RF7_HAS_LD_MASK) p_ptr->update |= (PU_MON_LITE);
+               if (is_original_ap_and_seen(m_ptr)) r_ptr->r_flagsr |= RFR_RES_TELE;
 
                /* Failure */
                return FALSE;
@@ -6670,68 +4912,21 @@ msg_print("
 
        sound(SOUND_TELEPORT);
 
-       cave[py][px].m_idx = c_ptr->m_idx;
-
-       /* Update the old location */
-       c_ptr->m_idx = p_ptr->riding;
-
-       /* Move the monster */
-       m_ptr->fy = py;
-       m_ptr->fx = px;
-
-       /* Move the player */
-       px = tx;
-       py = ty;
-
-       if (p_ptr->riding)
-       {
-               m_list[p_ptr->riding].fy = ty;
-               m_list[p_ptr->riding].fx = tx;
-
-               /* Update the monster (new location) */
-               update_mon(p_ptr->riding, TRUE);
-       }
-
-       tx = m_ptr->fx;
-       ty = m_ptr->fy;
-
-       m_ptr->csleep = 0;
-
-       /* Update the monster (new location) */
-       update_mon(cave[ty][tx].m_idx, TRUE);
-
-       /* Redraw the old grid */
-       lite_spot(ty, tx);
-
-       /* Redraw the new grid */
-       lite_spot(py, px);
-
-       /* Check for new panel (redraw map) */
-       verify_panel();
-
-       /* Update stuff */
-       p_ptr->update |= (PU_VIEW | PU_LITE | PU_FLOW | PU_MON_LITE);
-
-       /* Update the monsters */
-       p_ptr->update |= (PU_DISTANCE);
-
-       /* Window stuff */
-       p_ptr->window |= (PW_OVERHEAD | PW_DUNGEON);
-
-       /* Redraw the health bar */
-       if (p_ptr->health_who == cave[ty][tx].m_idx)
-               p_ptr->redraw |= (PR_HEALTH);
-
-       /* Handle stuff XXX XXX XXX */
-       handle_stuff();
+       /* Swap the player and monster */
+       (void)move_player_effect(ty, tx, MPE_FORGET_FLOW | MPE_HANDLE_STUFF | MPE_DONT_PICKUP);
 
        /* Success */
        return TRUE;
 }
 
 
-/*
- * Hack -- apply a "projection()" in a direction (or at the target)
+/*!
+ * @brief 指定方向に飛び道具を飛ばす(フラグ任意指定) / Hack -- apply a "projection()" in a direction (or at the target)
+ * @param typ 効果属性
+ * @param dir 方向(5ならばグローバル変数 target_col/target_row の座標を目標にする)
+ * @param dam 威力
+ * @param flg フラグ
+ * @return 作用が実際にあった場合TRUEを返す
  */
 bool project_hook(int typ, int dir, int dam, int flg)
 {
@@ -6741,8 +4936,8 @@ bool project_hook(int typ, int dir, int dam, int flg)
        flg |= (PROJECT_THRU);
 
        /* Use the given direction */
-       tx = px + ddx[dir];
-       ty = py + ddy[dir];
+       tx = p_ptr->x + ddx[dir];
+       ty = p_ptr->y + ddy[dir];
 
        /* Hack -- Use an actual "target" */
        if ((dir == 5) && target_okay())
@@ -6756,22 +4951,37 @@ bool project_hook(int typ, int dir, int dam, int flg)
 }
 
 
-/*
- * Cast a bolt spell.
+/*!
+ * @brief ボルト系スペルの発動 / Cast a bolt spell.
+ * @param typ 効果属性
+ * @param dir 方向(5ならばグローバル変数 target_col/target_row の座標を目標にする)
+ * @param dam 威力
+ * @return 作用が実際にあった場合TRUEを返す
+ * @details
+ * <pre>
  * Stop if we hit a monster, as a "bolt".
  * Affect monsters and grids (not objects).
+ * </pre>
  */
 bool fire_bolt(int typ, int dir, int dam)
 {
-       int flg = PROJECT_STOP | PROJECT_KILL | PROJECT_REFLECTABLE | PROJECT_GRID;
+       int flg = PROJECT_STOP | PROJECT_KILL | PROJECT_GRID;
+       if (typ != GF_ARROW) flg |= PROJECT_REFLECTABLE;
        return (project_hook(typ, dir, dam, flg));
 }
 
 
-/*
- * Cast a beam spell.
+/*!
+ * @brief ビーム系スペルの発動 / Cast a beam spell.
+ * @param typ 効果属性
+ * @param dir 方向(5ならばグローバル変数 target_col/target_row の座標を目標にする)
+ * @param dam 威力
+ * @return 作用が実際にあった場合TRUEを返す
+ * @details
+ * <pre>
  * Pass through monsters, as a "beam".
  * Affect monsters, grids and objects.
+ * </pre>
  */
 bool fire_beam(int typ, int dir, int dam)
 {
@@ -6780,8 +4990,18 @@ bool fire_beam(int typ, int dir, int dam)
 }
 
 
-/*
- * Cast a bolt spell, or rarely, a beam spell
+/*!
+ * @brief 確率に応じたボルト系/ビーム系スペルの発動 / Cast a bolt spell, or rarely, a beam spell.
+ * @param prob ビーム化する確率(%)
+ * @param typ 効果属性
+ * @param dir 方向(5ならばグローバル変数 target_col/target_row の座標を目標にする)
+ * @param dam 威力
+ * @return 作用が実際にあった場合TRUEを返す
+ * @details
+ * <pre>
+ * Pass through monsters, as a "beam".
+ * Affect monsters, grids and objects.
+ * </pre>
  */
 bool fire_bolt_or_beam(int prob, int typ, int dir, int dam)
 {
@@ -6795,217 +5015,340 @@ bool fire_bolt_or_beam(int prob, int typ, int dir, int dam)
        }
 }
 
-
-/*
- * Some of the old functions
+/*!
+ * @brief LITE_WEAK属性による光源ビーム処理
+ * @param dir 方向(5ならばグローバル変数 target_col/target_row の座標を目標にする)
+ * @param dam 威力
+ * @return 作用が実際にあった場合TRUEを返す
  */
-bool lite_line(int dir)
+bool lite_line(int dir, int dam)
 {
        int flg = PROJECT_BEAM | PROJECT_GRID | PROJECT_KILL;
-       return (project_hook(GF_LITE_WEAK, dir, damroll(6, 8), flg));
+       return (project_hook(GF_LITE_WEAK, dir, dam, flg));
 }
 
-
+/*!
+ * @brief 吸血ボルト処理
+ * @param dir 方向(5ならばグローバル変数 target_col/target_row の座標を目標にする)
+ * @param dam 威力
+ * @return 作用が実際にあった場合TRUEを返す
+ */
 bool drain_life(int dir, int dam)
 {
        int flg = PROJECT_STOP | PROJECT_KILL | PROJECT_REFLECTABLE;
        return (project_hook(GF_OLD_DRAIN, dir, dam, flg));
 }
 
-
-bool wall_to_mud(int dir)
+/*!
+ * @brief 岩石溶解処理
+ * @param dir 方向(5ならばグローバル変数 target_col/target_row の座標を目標にする)
+ * @param dam 威力
+ * @return 作用が実際にあった場合TRUEを返す
+ */
+bool wall_to_mud(int dir, int dam)
 {
        int flg = PROJECT_BEAM | PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL;
-       return (project_hook(GF_KILL_WALL, dir, 20 + randint1(30), flg));
+       return (project_hook(GF_KILL_WALL, dir, dam, flg));
 }
 
-
+/*!
+ * @brief 魔法の施錠処理
+ * @param dir 方向(5ならばグローバル変数 target_col/target_row の座標を目標にする)
+ * @return 作用が実際にあった場合TRUEを返す
+ */
 bool wizard_lock(int dir)
 {
        int flg = PROJECT_BEAM | PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL;
        return (project_hook(GF_JAM_DOOR, dir, 20 + randint1(30), flg));
 }
 
-
+/*!
+ * @brief ドア破壊処理
+ * @param dir 方向(5ならばグローバル変数 target_col/target_row の座標を目標にする)
+ * @return 作用が実際にあった場合TRUEを返す
+ */
 bool destroy_door(int dir)
 {
        int flg = PROJECT_BEAM | PROJECT_GRID | PROJECT_ITEM;
        return (project_hook(GF_KILL_DOOR, dir, 0, flg));
 }
 
-
+/*!
+ * @brief トラップ解除処理
+ * @param dir 方向(5ならばグローバル変数 target_col/target_row の座標を目標にする)
+ * @return 作用が実際にあった場合TRUEを返す
+ */
 bool disarm_trap(int dir)
 {
        int flg = PROJECT_BEAM | PROJECT_GRID | PROJECT_ITEM;
        return (project_hook(GF_KILL_TRAP, dir, 0, flg));
 }
 
-
+/*!
+ * @brief モンスター回復処理
+ * @param dir 方向(5ならばグローバル変数 target_col/target_row の座標を目標にする)
+ * @param dam 威力
+ * @return 作用が実際にあった場合TRUEを返す
+ */
 bool heal_monster(int dir, int dam)
 {
        int flg = PROJECT_STOP | PROJECT_KILL | PROJECT_REFLECTABLE;
        return (project_hook(GF_OLD_HEAL, dir, dam, flg));
 }
 
-
-bool speed_monster(int dir)
+/*!
+ * @brief モンスター加速処理
+ * @param dir 方向(5ならばグローバル変数 target_col/target_row の座標を目標にする)
+ * @param power 効力
+ * @return 作用が実際にあった場合TRUEを返す
+ */
+bool speed_monster(int dir, int power)
 {
        int flg = PROJECT_STOP | PROJECT_KILL | PROJECT_REFLECTABLE;
-       return (project_hook(GF_OLD_SPEED, dir, p_ptr->lev, flg));
+       return (project_hook(GF_OLD_SPEED, dir, power, flg));
 }
 
-
-bool slow_monster(int dir)
+/*!
+ * @brief モンスター減速処理
+ * @param dir 方向(5ならばグローバル変数 target_col/target_row の座標を目標にする)
+ * @param power 効力
+ * @return 作用が実際にあった場合TRUEを返す
+ */
+bool slow_monster(int dir, int power)
 {
        int flg = PROJECT_STOP | PROJECT_KILL | PROJECT_REFLECTABLE;
-       return (project_hook(GF_OLD_SLOW, dir, p_ptr->lev, flg));
+       return (project_hook(GF_OLD_SLOW, dir, power, flg));
 }
 
-
-bool sleep_monster(int dir)
+/*!
+ * @brief モンスター催眠処理
+ * @param dir 方向(5ならばグローバル変数 target_col/target_row の座標を目標にする)
+ * @param power 効力
+ * @return 作用が実際にあった場合TRUEを返す
+ */
+bool sleep_monster(int dir, int power)
 {
        int flg = PROJECT_STOP | PROJECT_KILL | PROJECT_REFLECTABLE;
-       return (project_hook(GF_OLD_SLEEP, dir, p_ptr->lev, flg));
+       return (project_hook(GF_OLD_SLEEP, dir, power, flg));
 }
 
-
+/*!
+ * @brief モンスター拘束(STASIS)処理
+ * @param dir 方向(5ならばグローバル変数 target_col/target_row の座標を目標にする)
+ * @return 作用が実際にあった場合TRUEを返す
+ * @details 威力はプレイヤーレベル*2に固定
+ */
 bool stasis_monster(int dir)
 {
        return (fire_ball_hide(GF_STASIS, dir, p_ptr->lev*2, 0));
 }
 
-
+/*!
+ * @brief 邪悪なモンスター拘束(STASIS)処理
+ * @param dir 方向(5ならばグローバル変数 target_col/target_row の座標を目標にする)
+ * @return 作用が実際にあった場合TRUEを返す
+ * @details 威力はプレイヤーレベル*2に固定
+ */
 bool stasis_evil(int dir)
 {
        return (fire_ball_hide(GF_STASIS_EVIL, dir, p_ptr->lev*2, 0));
 }
 
-
+/*!
+ * @brief モンスター混乱処理
+ * @param dir 方向(5ならばグローバル変数 target_col/target_row の座標を目標にする)
+ * @param plev プレイヤーレベル(=効力)
+ * @return 作用が実際にあった場合TRUEを返す
+ */
 bool confuse_monster(int dir, int plev)
 {
        int flg = PROJECT_STOP | PROJECT_KILL | PROJECT_REFLECTABLE;
        return (project_hook(GF_OLD_CONF, dir, plev, flg));
 }
 
-
+/*!
+ * @brief モンスター朦朧処理
+ * @param dir 方向(5ならばグローバル変数 target_col/target_row の座標を目標にする)
+ * @param plev プレイヤーレベル(=効力)
+ * @return 作用が実際にあった場合TRUEを返す
+ */
 bool stun_monster(int dir, int plev)
 {
        int flg = PROJECT_STOP | PROJECT_KILL | PROJECT_REFLECTABLE;
        return (project_hook(GF_STUN, dir, plev, flg));
 }
 
-
-bool poly_monster(int dir)
+/*!
+ * @brief チェンジモンスター処理
+ * @param dir 方向(5ならばグローバル変数 target_col/target_row の座標を目標にする)
+ * @param power 効力
+ * @return 作用が実際にあった場合TRUEを返す
+ */
+bool poly_monster(int dir, int power)
 {
        int flg = PROJECT_STOP | PROJECT_KILL | PROJECT_REFLECTABLE;
-       bool tester = (project_hook(GF_OLD_POLY, dir, p_ptr->lev, flg));
+       bool tester = (project_hook(GF_OLD_POLY, dir, power, flg));
        if (tester)
                chg_virtue(V_CHANCE, 1);
        return(tester);
 }
 
-
+/*!
+ * @brief クローンモンスター処理
+ * @param dir 方向(5ならばグローバル変数 target_col/target_row の座標を目標にする)
+ * @return 作用が実際にあった場合TRUEを返す
+ */
 bool clone_monster(int dir)
 {
        int flg = PROJECT_STOP | PROJECT_KILL | PROJECT_REFLECTABLE;
        return (project_hook(GF_OLD_CLONE, dir, 0, flg));
 }
 
-
+/*!
+ * @brief モンスター恐慌処理
+ * @param dir 方向(5ならばグローバル変数 target_col/target_row の座標を目標にする)
+ * @param plev プレイヤーレベル(=効力)
+ * @return 作用が実際にあった場合TRUEを返す
+ */
 bool fear_monster(int dir, int plev)
 {
        int flg = PROJECT_STOP | PROJECT_KILL | PROJECT_REFLECTABLE;
        return (project_hook(GF_TURN_ALL, dir, plev, flg));
 }
 
-
+/*!
+ * @brief 死の光線処理
+ * @param dir 方向(5ならばグローバル変数 target_col/target_row の座標を目標にする)
+ * @param plev プレイヤーレベル(効力はplev*200)
+ * @return 作用が実際にあった場合TRUEを返す
+ */
 bool death_ray(int dir, int plev)
 {
        int flg = PROJECT_STOP | PROJECT_KILL | PROJECT_REFLECTABLE;
        return (project_hook(GF_DEATH_RAY, dir, plev * 200, flg));
 }
 
-
-bool teleport_monster(int dir)
+/*!
+ * @brief モンスター用テレポート処理
+ * @param dir 方向(5ならばグローバル変数 target_col/target_row の座標を目標にする)
+ * @param distance 移動距離
+ * @return 作用が実際にあった場合TRUEを返す
+ */
+bool teleport_monster(int dir, int distance)
 {
        int flg = PROJECT_BEAM | PROJECT_KILL;
-       return (project_hook(GF_AWAY_ALL, dir, MAX_SIGHT * 5, flg));
+       return (project_hook(GF_AWAY_ALL, dir, distance, flg));
 }
 
-/*
- * Hooks -- affect adjacent grids (radius 1 ball attack)
+/*!
+ * @brief ドア生成処理(プレイヤー中心に周囲1マス) / Hooks -- affect adjacent grids (radius 1 ball attack)
+ * @return 作用が実際にあった場合TRUEを返す
  */
 bool door_creation(void)
 {
        int flg = PROJECT_GRID | PROJECT_ITEM | PROJECT_HIDE;
-       return (project(0, 1, py, px, 0, GF_MAKE_DOOR, flg, -1));
+       return (project(0, 1, p_ptr->y, p_ptr->x, 0, GF_MAKE_DOOR, flg, -1));
 }
 
-
+/*!
+ * @brief トラップ生成処理(起点から周囲1マス)
+ * @param y 起点Y座標
+ * @param x 起点X座標
+ * @return 作用が実際にあった場合TRUEを返す
+ */
 bool trap_creation(int y, int x)
 {
        int flg = PROJECT_GRID | PROJECT_ITEM | PROJECT_HIDE;
        return (project(0, 1, y, x, 0, GF_MAKE_TRAP, flg, -1));
 }
 
-
+/*!
+ * @brief 森林生成処理(プレイヤー中心に周囲1マス)
+ * @return 作用が実際にあった場合TRUEを返す
+ */
 bool tree_creation(void)
 {
        int flg = PROJECT_GRID | PROJECT_ITEM | PROJECT_HIDE;
-       return (project(0, 1, py, px, 0, GF_MAKE_TREE, flg, -1));
+       return (project(0, 1, p_ptr->y, p_ptr->x, 0, GF_MAKE_TREE, flg, -1));
 }
 
-
+/*!
+ * @brief 魔法のルーン生成処理(プレイヤー中心に周囲1マス)
+ * @return 作用が実際にあった場合TRUEを返す
+ */
 bool glyph_creation(void)
 {
        int flg = PROJECT_GRID | PROJECT_ITEM;
-       return (project(0, 1, py, px, 0, GF_MAKE_GLYPH, flg, -1));
+       return (project(0, 1, p_ptr->y, p_ptr->x, 0, GF_MAKE_GLYPH, flg, -1));
 }
 
-
+/*!
+ * @brief 壁生成処理(プレイヤー中心に周囲1マス)
+ * @return 作用が実際にあった場合TRUEを返す
+ */
 bool wall_stone(void)
 {
        int flg = PROJECT_GRID | PROJECT_ITEM | PROJECT_HIDE;
 
-       bool dummy = (project(0, 1, py, px, 0, GF_STONE_WALL, flg, -1));
+       bool dummy = (project(0, 1, p_ptr->y, p_ptr->x, 0, GF_STONE_WALL, flg, -1));
 
        /* Update stuff */
-       p_ptr->update |= (PU_VIEW | PU_LITE | PU_FLOW | PU_MON_LITE);
-
-       /* Update the monsters */
-       p_ptr->update |= (PU_MONSTERS);
+       p_ptr->update |= (PU_FLOW);
 
        /* Redraw map */
        p_ptr->redraw |= (PR_MAP);
 
-       /* Window stuff */
-       p_ptr->window |= (PW_OVERHEAD | PW_DUNGEON);
-
        return dummy;
 }
 
-
+/*!
+ * @brief ドア破壊処理(プレイヤー中心に周囲1マス)
+ * @return 作用が実際にあった場合TRUEを返す
+ */
 bool destroy_doors_touch(void)
 {
        int flg = PROJECT_GRID | PROJECT_ITEM | PROJECT_HIDE;
-       return (project(0, 1, py, px, 0, GF_KILL_DOOR, flg, -1));
+       return (project(0, 1, p_ptr->y, p_ptr->x, 0, GF_KILL_DOOR, flg, -1));
 }
 
+/*!
+ * @brief トラップ解除処理(プレイヤー中心に周囲1マス)
+ * @return 作用が実際にあった場合TRUEを返す
+ */
+bool disarm_traps_touch(void)
+{
+       int flg = PROJECT_GRID | PROJECT_ITEM | PROJECT_HIDE;
+       return (project(0, 1, p_ptr->y, p_ptr->x, 0, GF_KILL_TRAP, flg, -1));
+}
 
+/*!
+ * @brief スリープモンスター処理(プレイヤー中心に周囲1マス)
+ * @return 作用が実際にあった場合TRUEを返す
+ */
 bool sleep_monsters_touch(void)
 {
        int flg = PROJECT_KILL | PROJECT_HIDE;
-       return (project(0, 1, py, px, p_ptr->lev, GF_OLD_SLEEP, flg, -1));
+       return (project(0, 1, p_ptr->y, p_ptr->x, p_ptr->lev, GF_OLD_SLEEP, flg, -1));
 }
 
 
-bool animate_dead(int who, int y, int x)
+/*!
+ * @brief 死者復活処理(起点より周囲5マス)
+ * @param who 術者モンスターID(0ならばプレイやー)
+ * @param y 起点Y座標
+ * @param x 起点X座標
+ * @return 作用が実際にあった場合TRUEを返す
+ */
+bool animate_dead(MONSTER_IDX who, POSITION y, POSITION x)
 {
        int flg = PROJECT_ITEM | PROJECT_HIDE;
        return (project(who, 5, y, x, 0, GF_ANIM_DEAD, flg, -1));
 }
 
-
+/*!
+ * @brief 混沌招来処理
+ * @return 作用が実際にあった場合TRUEを返す
+ */
 void call_chaos(void)
 {
        int Chaos_type, dummy, dir;
@@ -7017,7 +5360,7 @@ void call_chaos(void)
                GF_ELEC,      GF_POIS,    GF_ACID,    GF_COLD,
                GF_FIRE,      GF_MISSILE, GF_ARROW,   GF_PLASMA,
                GF_HOLY_FIRE, GF_WATER,   GF_LITE,    GF_DARK,
-               GF_FORCE,     GF_INERTIA, GF_MANA,    GF_METEOR,
+               GF_FORCE,     GF_INERTIAL, GF_MANA,    GF_METEOR,
                GF_ICE,       GF_CHAOS,   GF_NETHER,  GF_DISENCHANT,
                GF_SHARDS,    GF_SOUND,   GF_NEXUS,   GF_CONFUSION,
                GF_TIME,      GF_GRAVITY, GF_ROCKET,  GF_NUKE,
@@ -7054,11 +5397,16 @@ void call_chaos(void)
        }
 }
 
-
-/*
- * Activate the evil Topi Ylinen curse
+/*!
+ * @brief TY_CURSE処理発動 / Activate the evil Topi Ylinen curse
+ * @param stop_ty 再帰処理停止フラグ
+ * @param count 発動回数
+ * @return 作用が実際にあった場合TRUEを返す
+ * @details
+ * <pre>
  * rr9: Stop the nasty things when a Cyberdemon is summoned
  * or the player gets paralyzed.
+ * </pre>
  */
 bool activate_ty_curse(bool stop_ty, int *count)
 {
@@ -7073,80 +5421,47 @@ bool activate_ty_curse(bool stop_ty, int *count)
                case 28: case 29:
                        if (!(*count))
                        {
-#ifdef JP
-msg_print("ÃÏÌ̤¬Íɤ줿...");
-#else
-                               msg_print("The ground trembles...");
-#endif
-
-                               earthquake(py, px, 5 + randint0(10));
+                               msg_print(_("地面が揺れた...", "The ground trembles..."));
+                               earthquake(p_ptr->y, p_ptr->x, 5 + randint0(10));
                                if (!one_in_(6)) break;
                        }
                case 30: case 31:
                        if (!(*count))
                        {
                                int dam = damroll(10, 10);
-#ifdef JP
-msg_print("½ã¿è¤ÊËâÎϤμ¡¸µ¤Ø¤ÎÈ⤬³«¤¤¤¿¡ª");
-#else
-                               msg_print("A portal opens to a plane of raw mana!");
-#endif
-
-                               project(0, 8, py, px, dam, GF_MANA, flg, -1);
-#ifdef JP
-                               take_hit(DAMAGE_NOESCAPE, dam, "½ã¿è¤ÊËâÎϤβòÊü", -1);
-#else
-                               take_hit(DAMAGE_NOESCAPE, dam, "released pure mana", -1);
-#endif
+                               msg_print(_("純粋な魔力の次元への扉が開いた!", "A portal opens to a plane of raw mana!"));
+                               project(0, 8, p_ptr->y, p_ptr->x, dam, GF_MANA, flg, -1);
+                               take_hit(DAMAGE_NOESCAPE, dam, _("純粋な魔力の解放", "released pure mana"), -1);
                                if (!one_in_(6)) break;
                        }
                case 32: case 33:
                        if (!(*count))
-               {
-#ifdef JP
-msg_print("¼þ°Ï¤Î¶õ´Ö¤¬ÏĤó¤À¡ª");
-#else
-                               msg_print("Space warps about you!");
-#endif
-
-                               teleport_player(damroll(10, 10));
-                               if (randint0(13)) (*count) += activate_hi_summon(py, px, FALSE);
+                       {
+                               msg_print(_("周囲の空間が歪んだ!", "Space warps about you!"));
+                               teleport_player(damroll(10, 10), TELEPORT_PASSIVE);
+                               if (randint0(13)) (*count) += activate_hi_summon(p_ptr->y, p_ptr->x, FALSE);
                                if (!one_in_(6)) break;
                        }
                case 34:
-#ifdef JP
-msg_print("¥¨¥Í¥ë¥®¡¼¤Î¤¦¤Í¤ê¤ò´¶¤¸¤¿¡ª");
-#else
-                       msg_print("You feel a surge of energy!");
-#endif
-
+                       msg_print(_("エネルギーのうねりを感じた!", "You feel a surge of energy!"));
                        wall_breaker();
                        if (!randint0(7))
                        {
-                               project(0, 7, py, px, 50, GF_KILL_WALL, flg, -1);
-#ifdef JP
-                               take_hit(DAMAGE_NOESCAPE, 50, "¥¨¥Í¥ë¥®¡¼¤Î¤¦¤Í¤ê", -1);
-#else
-                               take_hit(DAMAGE_NOESCAPE, 50, "surge of energy", -1);
-#endif
+                               project(0, 7, p_ptr->y, p_ptr->x, 50, GF_KILL_WALL, flg, -1);
+                               take_hit(DAMAGE_NOESCAPE, 50, _("エネルギーのうねり", "surge of energy"), -1);
                        }
                        if (!one_in_(6)) break;
                case 1: case 2: case 3: case 16: case 17:
                        aggravate_monsters(0);
                        if (!one_in_(6)) break;
                case 4: case 5: case 6:
-                       (*count) += activate_hi_summon(py, px, FALSE);
+                       (*count) += activate_hi_summon(p_ptr->y, p_ptr->x, FALSE);
                        if (!one_in_(6)) break;
                case 7: case 8: case 9: case 18:
-                       (*count) += summon_specific(0, py, px, dun_level, 0, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE | PM_NO_PET));
+                       (*count) += summon_specific(0, p_ptr->y, p_ptr->x, dun_level, 0, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE | PM_NO_PET));
                        if (!one_in_(6)) break;
                case 10: case 11: case 12:
-#ifdef JP
-msg_print("À¸Ì¿ÎϤ¬ÂΤ«¤éµÛ¤¤¼è¤é¤ì¤¿µ¤¤¬¤¹¤ë¡ª");
-#else
-                       msg_print("You feel your life draining away...");
-#endif
-
+                       msg_print(_("経験値が体から吸い取られた気がする!", "You feel your experience draining away..."));
                        lose_exp(p_ptr->exp / 16);
                        if (!one_in_(6)) break;
                case 13: case 14: case 15: case 19: case 20:
@@ -7156,12 +5471,7 @@ msg_print("
                        }
                        else
                        {
-#ifdef JP
-msg_print("ĦÁü¤Ë¤Ê¤Ã¤¿µ¤Ê¬¤À¡ª");
-#else
-                               msg_print("You feel like a statue!");
-#endif
-
+                               msg_print(_("彫像になった気分だ!", "You feel like a statue!"));
                                if (p_ptr->free_act)
                                        set_paralyzed(p_ptr->paralyzed + randint1(3));
                                else
@@ -7173,12 +5483,7 @@ msg_print("Ħ
                        (void)do_dec_stat(randint0(6));
                        if (!one_in_(6)) break;
                case 24:
-#ifdef JP
-msg_print("¤Û¤¨¡©»ä¤Ïï¡©¤³¤³¤Ç²¿¤·¤Æ¤ë¡©");
-#else
-                       msg_print("Huh? Who am I? What am I doing here?");
-#endif
-
+                       msg_print(_("ほえ?私は誰?ここで何してる?", "Huh? Who am I? What am I doing here?"));
                        lose_all_info();
                        if (!one_in_(6)) break;
                case 25:
@@ -7187,7 +5492,7 @@ msg_print("
                         */
                        if ((dun_level > 65) && !stop_ty)
                        {
-                               (*count) += summon_cyber(-1, py, px);
+                               (*count) += summon_cyber(-1, p_ptr->y, p_ptr->x);
                                stop_ty = TRUE;
                                break;
                        }
@@ -7210,12 +5515,18 @@ msg_print("
        return stop_ty;
 }
 
-
-int activate_hi_summon(int y, int x, bool can_pet)
+/*!
+ * @brief HI_SUMMON(上級召喚)処理発動
+ * @param y 召喚位置Y座標
+ * @param x 召喚位置X座標
+ * @param can_pet プレイヤーのペットとなる可能性があるならばTRUEにする
+ * @return 作用が実際にあった場合TRUEを返す
+ */
+int activate_hi_summon(POSITION y, POSITION x, bool can_pet)
 {
        int i;
        int count = 0;
-       int summon_lev;
+       DEPTH summon_lev;
        u32b mode = PM_ALLOW_GROUP;
        bool pet = FALSE;
 
@@ -7293,8 +5604,14 @@ int activate_hi_summon(int y, int x, bool can_pet)
 }
 
 
-/* ToDo: check */
-int summon_cyber(int who, int y, int x)
+/*!
+ * @brief サイバーデーモンの召喚
+ * @param who 召喚主のモンスターID(0ならばプレイヤー)
+ * @param y 召喚位置Y座標
+ * @param x 召喚位置X座標
+ * @return 作用が実際にあった場合TRUEを返す
+ */
+int summon_cyber(MONSTER_IDX who, POSITION y, POSITION x)
 {
        int i;
        int max_cyber = (easy_band ? 1 : (dun_level / 50) + randint1(2));
@@ -7318,20 +5635,23 @@ int summon_cyber(int who, int y, int x)
        return count;
 }
 
-
+/*!
+ * @brief 周辺破壊効果(プレイヤー中心)
+ * @return 作用が実際にあった場合TRUEを返す
+ */
 void wall_breaker(void)
 {
        int i;
-       int y, x;
+       POSITION y = 0, x = 0;
        int attempts = 1000;
 
        if (randint1(80 + p_ptr->lev) < 70)
        {
                while (attempts--)
                {
-                       scatter(&y, &x, py, px, 4, 0);
+                       scatter(&y, &x, p_ptr->y, p_ptr->x, 4, 0);
 
-                       if (!have_flag(f_flags_bold(y, x), FF_PROJECT)) continue;
+                       if (!cave_have_flag_bold(y, x, FF_PROJECT)) continue;
 
                        if (!player_bold(y, x)) break;
                }
@@ -7341,7 +5661,7 @@ void wall_breaker(void)
        }
        else if (randint1(100) > 30)
        {
-               earthquake(py, px, 1);
+               earthquake(p_ptr->y, p_ptr->x, 1);
        }
        else
        {
@@ -7351,7 +5671,7 @@ void wall_breaker(void)
                {
                        while (1)
                        {
-                               scatter(&y, &x, py, px, 10, 0);
+                               scatter(&y, &x, p_ptr->y, p_ptr->x, 10, 0);
 
                                if (!player_bold(y, x)) break;
                        }
@@ -7363,8 +5683,10 @@ void wall_breaker(void)
 }
 
 
-/*
- * Confuse monsters
+/*!
+ * @brief パニック・モンスター効果(プレイヤー視界範囲内) / Confuse monsters
+ * @param dam 効力
+ * @return 作用が実際にあった場合TRUEを返す
  */
 bool confuse_monsters(int dam)
 {
@@ -7372,8 +5694,10 @@ bool confuse_monsters(int dam)
 }
 
 
-/*
- * Charm monsters
+/*!
+ * @brief チャーム・モンスター効果(プレイヤー視界範囲内) / Charm monsters
+ * @param dam 効力
+ * @return 作用が実際にあった場合TRUEを返す
  */
 bool charm_monsters(int dam)
 {
@@ -7381,8 +5705,10 @@ bool charm_monsters(int dam)
 }
 
 
-/*
- * Charm animals
+/*!
+ * @brief 動物魅了効果(プレイヤー視界範囲内) / Charm Animals
+ * @param dam 効力
+ * @return 作用が実際にあった場合TRUEを返す
  */
 bool charm_animals(int dam)
 {
@@ -7390,8 +5716,10 @@ bool charm_animals(int dam)
 }
 
 
-/*
- * Stun monsters
+/*!
+ * @brief モンスター朦朧効果(プレイヤー視界範囲内) / Stun monsters
+ * @param dam 効力
+ * @return 作用が実際にあった場合TRUEを返す
  */
 bool stun_monsters(int dam)
 {
@@ -7399,8 +5727,10 @@ bool stun_monsters(int dam)
 }
 
 
-/*
- * Stasis monsters
+/*!
+ * @brief モンスター停止効果(プレイヤー視界範囲内) / Stasis monsters
+ * @param dam 効力
+ * @return 作用が実際にあった場合TRUEを返す
  */
 bool stasis_monsters(int dam)
 {
@@ -7408,8 +5738,10 @@ bool stasis_monsters(int dam)
 }
 
 
-/*
- * Mindblast monsters
+/*!
+ * @brief モンスター精神攻撃効果(プレイヤー視界範囲内) / Mindblast monsters
+ * @param dam 効力
+ * @return 作用が実際にあった場合TRUEを返す
  */
 bool mindblast_monsters(int dam)
 {
@@ -7417,8 +5749,10 @@ bool mindblast_monsters(int dam)
 }
 
 
-/*
- * Banish all monsters
+/*!
+ * @brief モンスター追放効果(プレイヤー視界範囲内) / Banish all monsters
+ * @param dist 効力(距離)
+ * @return 作用が実際にあった場合TRUEを返す
  */
 bool banish_monsters(int dist)
 {
@@ -7426,8 +5760,10 @@ bool banish_monsters(int dist)
 }
 
 
-/*
- * Turn evil
+/*!
+ * @brief 邪悪退散効果(プレイヤー視界範囲内) / Turn evil
+ * @param dam 効力
+ * @return 作用が実際にあった場合TRUEを返す
  */
 bool turn_evil(int dam)
 {
@@ -7435,8 +5771,10 @@ bool turn_evil(int dam)
 }
 
 
-/*
- * Turn everyone
+/*!
+ * @brief 全モンスター退散効果(プレイヤー視界範囲内) / Turn everyone
+ * @param dam 効力
+ * @return 作用が実際にあった場合TRUEを返す
  */
 bool turn_monsters(int dam)
 {
@@ -7444,75 +5782,102 @@ bool turn_monsters(int dam)
 }
 
 
-/*
- * Death-ray all monsters (note: OBSCENELY powerful)
+/*!
+ * @brief 死の光線(プレイヤー視界範囲内) / Death-ray all monsters (note: OBSCENELY powerful)
+ * @return 作用が実際にあった場合TRUEを返す
  */
 bool deathray_monsters(void)
 {
        return (project_hack(GF_DEATH_RAY, p_ptr->lev * 200));
 }
 
-
+/*!
+ * @brief チャーム・モンスター(1体)
+ * @param dir 方向(5ならばグローバル変数 target_col/target_row の座標を目標にする)
+ * @param plev パワー
+ * @return 作用が実際にあった場合TRUEを返す
+ */
 bool charm_monster(int dir, int plev)
 {
        int flg = PROJECT_STOP | PROJECT_KILL;
        return (project_hook(GF_CHARM, dir, plev, flg));
 }
 
-
+/*!
+ * @brief アンデッド支配(1体)
+ * @param dir 方向(5ならばグローバル変数 target_col/target_row の座標を目標にする)
+ * @param plev パワー
+ * @return 作用が実際にあった場合TRUEを返す
+ */
 bool control_one_undead(int dir, int plev)
 {
        int flg = PROJECT_STOP | PROJECT_KILL;
        return (project_hook(GF_CONTROL_UNDEAD, dir, plev, flg));
 }
 
-
+/*!
+ * @brief 悪魔支配(1体)
+ * @param dir 方向(5ならばグローバル変数 target_col/target_row の座標を目標にする)
+ * @param plev パワー
+ * @return 作用が実際にあった場合TRUEを返す
+ */
 bool control_one_demon(int dir, int plev)
 {
        int flg = PROJECT_STOP | PROJECT_KILL;
        return (project_hook(GF_CONTROL_DEMON, dir, plev, flg));
 }
 
-
+/*!
+ * @brief 動物支配(1体)
+ * @param dir 方向(5ならばグローバル変数 target_col/target_row の座標を目標にする)
+ * @param plev パワー
+ * @return 作用が実際にあった場合TRUEを返す
+ */
 bool charm_animal(int dir, int plev)
 {
        int flg = PROJECT_STOP | PROJECT_KILL;
        return (project_hook(GF_CONTROL_ANIMAL, dir, plev, flg));
 }
 
-
+/*!
+ * @brief 生物支配(1体)
+ * @param dir 方向(5ならばグローバル変数 target_col/target_row の座標を目標にする)
+ * @param plev パワー
+ * @return 作用が実際にあった場合TRUEを返す
+ */
 bool charm_living(int dir, int plev)
 {
        int flg = PROJECT_STOP | PROJECT_KILL;
        return (project_hook(GF_CONTROL_LIVING, dir, plev, flg));
 }
 
-
-void kawarimi(bool success)
+/*!
+ * @brief 変わり身処理
+ * @param success 判定成功上の処理ならばTRUE
+ * @return 作用が実際にあった場合TRUEを返す
+ */
+bool kawarimi(bool success)
 {
        object_type forge;
        object_type *q_ptr = &forge;
        int y, x;
 
-       if (p_ptr->confused || p_ptr->blind || p_ptr->paralyzed || p_ptr->image) return;
-       if (randint0(200) < p_ptr->stun) return;
+       if (p_ptr->is_dead) return FALSE;
+       if (p_ptr->confused || p_ptr->blind || p_ptr->paralyzed || p_ptr->image) return FALSE;
+       if (randint0(200) < p_ptr->stun) return FALSE;
 
        if (!success && one_in_(3))
        {
-#ifdef JP
-               msg_print("¼ºÇÔ¡ªÆ¨¤²¤é¤ì¤Ê¤«¤Ã¤¿¡£");
-#else
-               msg_print("Failed! You couldn't run away.");
-#endif
+               msg_print(_("失敗!逃げられなかった。", "Failed! You couldn't run away."));
                p_ptr->special_defense &= ~(NINJA_KAWARIMI);
                p_ptr->redraw |= (PR_STATUS);
-               return;
+               return FALSE;
        }
 
-       y = py;
-       x = px;
+       y = p_ptr->y;
+       x = p_ptr->x;
 
-       teleport_player(10+randint1(90));
+       teleport_player(10 + randint1(90), 0L);
 
        object_wipe(q_ptr);
 
@@ -7524,8 +5889,8 @@ void kawarimi(bool success)
        (void)drop_near(q_ptr, -1, y, x);
 
 #ifdef JP
-       if (success) msg_print("¹¶·â¤ò¼õ¤±¤ëÁ°¤ËÁÇÁ᤯¿È¤ò¤Ò¤ë¤¬¤¨¤·¤¿¡£");
-       else msg_print("¼ºÇÔ¡ª¹¶·â¤ò¼õ¤±¤Æ¤·¤Þ¤Ã¤¿¡£");
+       if (success) msg_print("攻撃を受ける前に素早く身をひるがえした。");
+       else msg_print("失敗!攻撃を受けてしまった。");
 #else
        if (success) msg_print("You have turned around just before the attack hit you.");
        else msg_print("Failed! You are hit by the attack.");
@@ -7533,12 +5898,16 @@ void kawarimi(bool success)
 
        p_ptr->special_defense &= ~(NINJA_KAWARIMI);
        p_ptr->redraw |= (PR_STATUS);
+
+       /* Teleported */
+       return TRUE;
 }
 
 
-/*
- * "Rush Attack" routine for Samurai or Ninja
- * Return value is for checking "done"
+/*!
+ * @brief 入身処理 / "Rush Attack" routine for Samurai or Ninja
+ * @param mdeath 目標モンスターが死亡したかを返す
+ * @return 作用が実際にあった場合TRUEを返す /  Return value is for checking "done"
  */
 bool rush_attack(bool *mdeath)
 {
@@ -7548,6 +5917,7 @@ bool rush_attack(bool *mdeath)
        u16b path_g[32];
        int path_n, i;
        bool tmp_mdeath = FALSE;
+       bool moved = FALSE;
 
        if (mdeath) *mdeath = FALSE;
 
@@ -7555,8 +5925,8 @@ bool rush_attack(bool *mdeath)
        if (!get_aim_dir(&dir)) return FALSE;
 
        /* Use the given direction */
-       tx = px + project_length * ddx[dir];
-       ty = py + project_length * ddy[dir];
+       tx = p_ptr->x + project_length * ddx[dir];
+       ty = p_ptr->y + project_length * ddy[dir];
 
        /* Hack -- Use an actual "target" */
        if ((dir == 5) && target_okay())
@@ -7567,15 +5937,15 @@ bool rush_attack(bool *mdeath)
 
        if (in_bounds(ty, tx)) tm_idx = cave[ty][tx].m_idx;
 
-       path_n = project_path(path_g, project_length, py, px, ty, tx, PROJECT_STOP | PROJECT_KILL);
+       path_n = project_path(path_g, project_length, p_ptr->y, p_ptr->x, ty, tx, PROJECT_STOP | PROJECT_KILL);
        project_length = 0;
 
        /* No need to move */
        if (!path_n) return TRUE;
 
        /* Use ty and tx as to-move point */
-       ty = py;
-       tx = px;
+       ty = p_ptr->y;
+       tx = p_ptr->x;
 
        /* Project along the path */
        for (i = 0; i < path_n; i++)
@@ -7598,19 +5968,11 @@ bool rush_attack(bool *mdeath)
                {
                        if (tm_idx)
                        {
-#ifdef JP
-                               msg_print("¼ºÇÔ¡ª");
-#else
-                               msg_print("Failed!");
-#endif
+                               msg_print(_("失敗!", "Failed!"));
                        }
                        else
                        {
-#ifdef JP
-                               msg_print("¤³¤³¤Ë¤ÏÆþ¿È¤Ç¤ÏÆþ¤ì¤Ê¤¤¡£");
-#else
-                               msg_print("You can't move to that place.");
-#endif
+                               msg_print(_("ここには入身では入れない。", "You can't move to that place."));
                        }
 
                        /* Exit loop */
@@ -7618,7 +5980,7 @@ bool rush_attack(bool *mdeath)
                }
 
                /* Move player before updating the monster */
-               if (!player_bold(ty, tx)) teleport_player_to(ty, tx, FALSE);
+               if (!player_bold(ty, tx)) teleport_player_to(ty, tx, TELEPORT_NONMAGICAL);
 
                /* Update the monster */
                update_mon(cave[ny][nx].m_idx, TRUE);
@@ -7629,8 +5991,8 @@ bool rush_attack(bool *mdeath)
                if (tm_idx != cave[ny][nx].m_idx)
                {
 #ifdef JP
-                       msg_format("%s%s¤¬Î©¤Á¤Õ¤µ¤¬¤Ã¤Æ¤¤¤ë¡ª", tm_idx ? "Ê̤Î" : "",
-                                  m_ptr->ml ? "¥â¥ó¥¹¥¿¡¼" : "²¿¤«");
+                       msg_format("%s%sが立ちふさがっている!", tm_idx ? "別の" : "",
+                                  m_ptr->ml ? "モンスター" : "何か");
 #else
                        msg_format("There is %s in the way!", m_ptr->ml ? (tm_idx ? "another monster" : "a monster") : "someone");
 #endif
@@ -7642,27 +6004,27 @@ bool rush_attack(bool *mdeath)
 
                        /* Get the monster name (BEFORE polymorphing) */
                        monster_desc(m_name, m_ptr, 0);
-#ifdef JP
-                       msg_format("ÁÇÁ᤯%s¤Î²û¤ËÆþ¤ê¹þ¤ó¤À¡ª", m_name);
-#else
-                       msg_format("You quickly jump in and attack %s!", m_name);
-#endif
+                       msg_format(_("素早く%sの懐に入り込んだ!", "You quickly jump in and attack %s!"), m_name);
                }
 
+               if (!player_bold(ty, tx)) teleport_player_to(ty, tx, TELEPORT_NONMAGICAL);
+               moved = TRUE;
                tmp_mdeath = py_attack(ny, nx, HISSATSU_NYUSIN);
 
                break;
        }
 
-       if (!player_bold(ty, tx)) teleport_player_to(ty, tx, FALSE);
+       if (!moved && !player_bold(ty, tx)) teleport_player_to(ty, tx, TELEPORT_NONMAGICAL);
 
        if (mdeath) *mdeath = tmp_mdeath;
        return TRUE;
 }
 
 
-/*
- * Remove all mirrors in this floor
+/*!
+ * @brief 全鏡の消去 / Remove all mirrors in this floor
+ * @param explode 爆発処理を伴うならばTRUE
+ * @return なし
  */
 void remove_all_mirrors(bool explode)
 {