OSDN Git Service

アイテム生成に関わる関数群の変更.
[hengband/hengband.git] / src / birth.c
index bcaa772..1f61609 100644 (file)
@@ -1,11 +1,11 @@
 /* Purpose: create a player character */
 
 /*
- * Copyright (c) 1989 James E. Wilson, Robert A. Koeneke
+ * 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.
+ * 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.
  */
 
 #include "angband.h"
@@ -1246,15 +1246,15 @@ static hist_type bg[] =
 
 
 #ifdef JP
-        {"»³ÍÓ¤ÎÄý¤¬¤¢¤ê¤Þ¤¹¡£",      50, 133, 0, 50 },
-        {"¿Í´Ö¤Î­¤¬À¸¤¨¤Æ¤¤¤Þ¤¹¡£",  75, 133, 0, 50 },
-        {"Ä»¤Î­¤¬À¸¤¨¤Æ¤¤¤Þ¤¹¡£",    85, 133, 0, 50 },
-        {"à¨ÃîÎà¤Î­¤¬À¸¤¨¤Æ¤¤¤Þ¤¹¡£",90, 133, 0, 50 },
-        {"µí¤Î­¤¬À¸¤¨¤Æ¤¤¤Þ¤¹¡£",    95, 133, 0, 50 },
-        {"Ç­¤Î­¤¬À¸¤¨¤Æ¤¤¤Þ¤¹¡£",    97, 133, 0, 50 },
-        {"¸¤¤Î­¤¬À¸¤¨¤Æ¤¤¤Þ¤¹¡£",   100, 133, 0, 50 },
+       {"»³ÍÓ¤ÎÄý¤¬¤¢¤ê¤Þ¤¹¡£",      50, 133, 0, 50 },
+       {"¿Í´Ö¤Î­¤¬À¸¤¨¤Æ¤¤¤Þ¤¹¡£",  75, 133, 0, 50 },
+       {"Ä»¤Î­¤¬À¸¤¨¤Æ¤¤¤Þ¤¹¡£",    85, 133, 0, 50 },
+       {"à¨ÃîÎà¤Î­¤¬À¸¤¨¤Æ¤¤¤Þ¤¹¡£",90, 133, 0, 50 },
+       {"µí¤Î­¤¬À¸¤¨¤Æ¤¤¤Þ¤¹¡£",    95, 133, 0, 50 },
+       {"Ç­¤Î­¤¬À¸¤¨¤Æ¤¤¤Þ¤¹¡£",    97, 133, 0, 50 },
+       {"¸¤¤Î­¤¬À¸¤¨¤Æ¤¤¤Þ¤¹¡£",   100, 133, 0, 50 },
 
-        {"¤¢¤Ê¤¿¤Ï", 100, 134, 120, 50 },
+       {"¤¢¤Ê¤¿¤Ï", 100, 134, 120, 50 },
 #else
        {"and the hooves of a goat.",      50, 133, 0, 50 },
        {"and human feet.",        75, 133, 0, 50 },
@@ -1659,25 +1659,25 @@ static cptr race_jouhou[MAX_RACES] =
   
 "ÃϹö¤«¤é¤ä¤Ã¤Æ¤­¤¿°­ËâŪ¤ÊÀ¸Êª¤Ç¤¹¡£Èà¤é¤Ï¾¤Î¼ï²¤«¤éÌÓ·ù¤¤¤µ¤ì¤Æ¤¤¤Þ¤¹¤¬¡¢ÂçÄñ¤Î¿¦¶È¤ò¤«¤Ê¤ê¤¦¤Þ¤¯¤³¤Ê¤¹¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¥¤¥ó¥×¤ÏÀ¸¤Þ¤ì¤Ä¤­²Ð¤ËÂÑÀ­¤ò»ý¤Ã¤Æ¤ª¤ê¡¢¥ì¥Ù¥ë¤¬¾å¤¬¤ì¤Ð¸«¤¨¤Ê¤¤¤â¤Î¤ò¸«¤ëǽÎϤò³ÍÆÀ¤·¤Þ¤¹¡£",
   
-"¥´¡¼¥ì¥à¤ÏÅ¥¤Î¤è¤¦¤ÊÀ¸Ì¿¤Î¤Ê¤¤ºàÎÁ¤«¤é¤Ä¤¯¤é¤ì¡¢À¸Ì¿¤ò¿á¤­¹þ¤Þ¤ì¤¿¿Í¹©Åª¤ÊÀ¸Êª¤Ç¤¹¡£Èà¤é¤Ë¤Ï»×¹Í¤È¤¤¤¦¤â¤Î¤¬¤Û¤È¤ó¤É¤Ê¤¯¡¢¤½¤Î¤¿¤áËâË¡¤Ë°Í¸¤¹¤ë¿¦¶È¤Ç¤ÏÌòΩ¤¿¤º¤Ç¤¹¡£¤·¤«¤·Àï»Î¤È¤·¤Æ¤ÏÂçÊѤ˥¿¥Õ¤Ç¤¹¡£Èà¤é¤ÏÆǤËÂÑÀ­¤ò»ý¤Á¡¢¸«¤¨¤Ê¤¤¤â¤Î¤ò¸«¤ë¤³¤È¤¬¤Ç¤­¡¢¤µ¤é¤ËËãáãÃΤ餺¤Ç¤¹¡£¥ì¥Ù¥ë¤¬¾å¤¬¤ì¤Ð¡¢Èà¤é¤ÏÀ¸Ì¿Îϵۼý¹¶·â¤ËÂÑÀ­¤ò»ý¤Ä¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£¥´¡¼¥ì¥à¤ÏÄ̾ï¤Î¿©Êª¤«¤é¤Ï¤Û¤È¤ó¤É±ÉÍܤòÀݼè¤Ç¤­¤Þ¤»¤ó¤¬¡¢¾Ã²½¤Ë¤Ï»þ´Ö¤¬¤«¤«¤ê¤Þ¤¹¡£¤Þ¤¿¡¢¤½¤Î´è¾æ¤Ê¿ÈÂΤΤ¿¤á¡¢AC¤Ë¥Ü¡¼¥Ê¥¹¤òÆÀ¤ë¤³¤È¤¬¤Ç¤­¡¢¤µ¤é¤Ë·è¤·¤Æµ¤À䤵¤»¤é¤ì¤ë¤³¤È¤¬¤¢¤ê¤Þ¤»¤ó¡£",
+"¥´¡¼¥ì¥à¤ÏÅ¥¤Î¤è¤¦¤ÊÀ¸Ì¿¤Î¤Ê¤¤ºàÎÁ¤«¤é¤Ä¤¯¤é¤ì¡¢À¸Ì¿¤ò¿á¤­¹þ¤Þ¤ì¤¿¿Í¹©Åª¤ÊÀ¸Êª¤Ç¤¹¡£Èà¤é¤Ë¤Ï»×¹Í¤È¤¤¤¦¤â¤Î¤¬¤Û¤È¤ó¤É¤Ê¤¯¡¢¤½¤Î¤¿¤áËâË¡¤Ë°Í¸¤¹¤ë¿¦¶È¤Ç¤ÏÌòΩ¤¿¤º¤Ç¤¹¡£¤·¤«¤·Àï»Î¤È¤·¤Æ¤ÏÂçÊѤ˥¿¥Õ¤Ç¤¹¡£Èà¤é¤ÏÆǤËÂÑÀ­¤ò»ý¤Á¡¢¸«¤¨¤Ê¤¤¤â¤Î¤ò¸«¤ë¤³¤È¤¬¤Ç¤­¡¢¤µ¤é¤ËËãáãÃΤ餺¤Ç¤¹¡£¥ì¥Ù¥ë¤¬¾å¤¬¤ì¤Ð¡¢Èà¤é¤ÏÀ¸Ì¿Îϵۼý¹¶·â¤ËÂÑÀ­¤ò»ý¤Ä¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£¥´¡¼¥ì¥à¤ÏÄ̾ï¤Î¿©Êª¤«¤é¤Ï¤Û¤È¤ó¤É±ÉÍܤòÀݼè¤Ç¤­¤Þ¤»¤ó¤¬¡¢Âå¤ï¤ê¤ËËâË¡ËÀ¤ä¾ó¤«¤éËâÎϤòµÛ¼ý¤·¤ÆÆ°Îϸ»¤Ë¤¹¤ë»ö¤¬¤Ç¤­¤Þ¤¹¡£¤Þ¤¿¡¢¤½¤Î´è¾æ¤Ê¿ÈÂΤΤ¿¤á¡¢AC¤Ë¥Ü¡¼¥Ê¥¹¤òÆÀ¤ë¤³¤È¤¬¤Ç¤­¡¢¤µ¤é¤Ë·è¤·¤Æµ¤À䤵¤»¤é¤ì¤ë¤³¤È¤¬¤¢¤ê¤Þ¤»¤ó¡£",
   
-"¥¹¥±¥ë¥È¥ó¤Ë¤Ï2¤Ä¤Î¥¿¥¤¥×¤¬Â¸ºß¤·¤Þ¤¹¡£ÉáÄ̤ÎÀï»Î¥¿¥¤¥×¤È¡¢¥ê¥Ã¥Á¤È¸Æ¤Ð¤ì¤ë¼öʸ¤ò»È¤¦¥¹¥±¥ë¥È¥ó¤Ç¤¹¡£¥¢¥ó¥Ç¥Ã¥É¤Ç¤¢¤ëÈà¤é¤Ï¡¢ÆǤäÀ¸Ì¿Îϵۼý¹¶·â¤ò¿´ÇÛ¤¹¤ëɬÍפϤ¢¤ê¤Þ¤»¤ó¡£Èà¤é¤ÏʪÂΤòÃγФ¹¤ë¤Î¤Ë´ã¤òÍøÍѤ·¤Æ¤¤¤Ê¤¤¤¿¤á¡¢¸«¤¨¤Ê¤¤Êª¤ËñÙ¤µ¤ì¤Þ¤»¤ó¡£Èà¤é¤Î¹ü¤Ï¤È¤¬¤Ã¤¿ÇËÊҤΤ褦¤Ê¤â¤Î¤ËÂÑÀ­¤ò»ý¤Á¡¢¥ì¥Ù¥ë¤¬¾å¤¬¤ì¤ÐÎ䵤¤ËÂФ¹¤ëÂÑÀ­¤ò³ÍÆÀ¤·¤Þ¤¹¡£Ìô¤ä¿©Êª¤Î»ý¤Ä¸ú²Ì¤Ï¥¹¥±¥ë¥È¥ó¤Î°ß¡Ê¸ºß¤·¤Þ¤»¤ó¤¬¡Ë¤òÄ̲᤹¤ë¤³¤È¤Ê¤¯¤½¤ÎÎϤòȯ´ø¤·¤Þ¤¹¤¬¡¢Ìô¤ä¿©Êª¼«ÂΤÏÈà¤Î³Ü¤òÄ̤êÈ´¤±¤ÆÍî¤Á¤Æ¤·¤Þ¤¤¡¢±ÉÍܤòµÛ¼ý¤¹¤ë¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¡£",
+"¥¹¥±¥ë¥È¥ó¤Ë¤Ï2¤Ä¤Î¥¿¥¤¥×¤¬Â¸ºß¤·¤Þ¤¹¡£ÉáÄ̤ÎÀï»Î¥¿¥¤¥×¤È¡¢¥ê¥Ã¥Á¤È¸Æ¤Ð¤ì¤ë¼öʸ¤ò»È¤¦¥¹¥±¥ë¥È¥ó¤Ç¤¹¡£¥¢¥ó¥Ç¥Ã¥É¤Ç¤¢¤ëÈà¤é¤Ï¡¢ÆǤäÀ¸Ì¿Îϵۼý¹¶·â¤ò¿´ÇÛ¤¹¤ëɬÍפϤ¢¤ê¤Þ¤»¤ó¡£Èà¤é¤ÏʪÂΤòÃγФ¹¤ë¤Î¤Ë´ã¤òÍøÍѤ·¤Æ¤¤¤Ê¤¤¤¿¤á¡¢¸«¤¨¤Ê¤¤Êª¤ËñÙ¤µ¤ì¤Þ¤»¤ó¡£Èà¤é¤Î¹ü¤Ï¤È¤¬¤Ã¤¿ÇËÊҤΤ褦¤Ê¤â¤Î¤ËÂÑÀ­¤ò»ý¤Á¡¢¥ì¥Ù¥ë¤¬¾å¤¬¤ì¤ÐÎ䵤¤ËÂФ¹¤ëÂÑÀ­¤ò³ÍÆÀ¤·¤Þ¤¹¡£Ìô¤ä¿©Êª¤Î»ý¤Ä¸ú²Ì¤Ï¥¹¥±¥ë¥È¥ó¤Î°ß¡Ê¸ºß¤·¤Þ¤»¤ó¤¬¡Ë¤òÄ̲᤹¤ë¤³¤È¤Ê¤¯¤½¤ÎÎϤòȯ´ø¤·¤Þ¤¹¤¬¡¢Ìô¤ä¿©Êª¼«ÂΤÏÈà¤Î³Ü¤òÄ̤êÈ´¤±¤ÆÍî¤Á¤Æ¤·¤Þ¤¤¡¢±ÉÍܤòµÛ¼ý¤¹¤ë¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¡£¤½¤ÎÂå¤ï¤ê¤ËËâË¡ËÀ¤ä¾ó¤«¤éËâÎϤòµÛ¼ý¤·¤Æ¥¨¥Í¥ë¥®¡¼¸»¤Ë¤¹¤ë»ö¤¬¤Ç¤­¤Þ¤¹¡£",
   
-"¥¾¥ó¥Ó¤Ï¥¢¥ó¥Ç¥Ã¥É¤Ç¤¢¤ê¡¢À¸Ì¿Îϵۼý¹¶·â¤ËÂÑÀ­¤ò»ý¤Á¡¢¥¹¥±¥ë¥È¥ó¤Î¤è¤¦¤Ë¥ì¥Ù¥ë¤¬¾å¤¬¤ì¤ÐÎ䵤¤ÎÂÑÀ­¤ò³ÍÆÀ¤·¤Þ¤¹¡£¤Þ¤¿¡¢ÆǤËÂÑÀ­¤ò»ý¤Á¸«¤¨¤Ê¤¤¤â¤Î¤ò¸«¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¡Ê¥¹¥±¥ë¥È¥ó¤È¤Ï°ã¤¤¡ËÀڤ빶·â¤Ë¤Ï¼å¤¤¤Ç¤¹¤¬¡¢ÃϹö¤ËÂФ¹¤ëÂÑÀ­¤ò»ý¤Ã¤Æ¤¤¤Þ¤¹¡£¥´¡¼¥ì¥à¤Î¤è¤¦¤Ë¡¢Èà¤é¤Ï¿©Êª¤«¤é¤Û¤È¤ó¤É±ÉÍܤòÀݼè¤Ç¤­¤Þ¤»¤ó¤¬¡¢¾Ã²½µÛ¼ý¤ÏÃÙ¤¤¤Ç¤¹¡£",
+"¥¾¥ó¥Ó¤Ï¥¢¥ó¥Ç¥Ã¥É¤Ç¤¢¤ê¡¢À¸Ì¿Îϵۼý¹¶·â¤ËÂÑÀ­¤ò»ý¤Á¡¢¥¹¥±¥ë¥È¥ó¤Î¤è¤¦¤Ë¥ì¥Ù¥ë¤¬¾å¤¬¤ì¤ÐÎ䵤¤ÎÂÑÀ­¤ò³ÍÆÀ¤·¤Þ¤¹¡£¤Þ¤¿¡¢ÆǤËÂÑÀ­¤ò»ý¤Á¸«¤¨¤Ê¤¤¤â¤Î¤ò¸«¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¡Ê¥¹¥±¥ë¥È¥ó¤È¤Ï°ã¤¤¡ËÀڤ빶·â¤Ë¤Ï¼å¤¤¤Ç¤¹¤¬¡¢ÃϹö¤ËÂФ¹¤ëÂÑÀ­¤ò»ý¤Ã¤Æ¤¤¤Þ¤¹¡£¥´¡¼¥ì¥à¤Î¤è¤¦¤Ë¡¢Èà¤é¤Ï¿©Êª¤«¤é¤Û¤È¤ó¤É±ÉÍܤòÀݼè¤Ç¤­¤Þ¤»¤ó¤¬¡¢Âå¤ï¤ê¤ËËâË¡ËÀ¤ä¾ó¤«¤éËâÎϤòµÛ¼ý¤·¤Æ¥¨¥Í¥ë¥®¡¼¸»¤Ë¤¹¤ë»ö¤¬¤Ç¤­¤Þ¤¹¡£",
   
 "¶¯ÎϤʥ¢¥ó¥Ç¥Ã¥É¤Î°ì¼ï¤Ç¤¢¤ëµÛ·ìµ´¤Ï¡¢°Ú·É¤ÎÇ°¤ò¸Æ¤Óµ¯¤³¤¹³°¸«¤ò¤·¤Æ¤¤¤Þ¤¹¡£¥¢¥ó¥Ç¥Ã¥É¤ÎÎã¤Ë¤â¤ì¤º¡¢Èà¤é¤âÀ¸Ì¿ÎϤòµÛ¼ý¤µ¤ì¤ë¤³¤È¤¬¤Ê¤¯¡¢ÃϹö¤ËÂФ¹¤ëÂÑÀ­¤ò»ý¤Ã¤Æ¤¤¤Þ¤¹¡£¤Þ¤¿¡¢Î䵤¤ÈÆǤËÂФ¹¤ëÂÑÀ­¤âÈ÷¤¨¤Æ¤¤¤Þ¤¹¡£¤·¤«¤·¡¢¿·Á¯¤Ê·ì±Õ¤Ë¾ï¤Ëµ²¤¨¤Æ¤ª¤ê¡¢¤½¤ì¤Ï¶á¤¯¤Ë¤¤¤ëÀ¸Êª¤«¤é·ì±Õ¤òµÛ¤¦¤³¤È¤Ë¤è¤Ã¤Æ¤Î¤ßËþ¤¿¤µ¤ì¤Þ¤¹¡£¤³¤Î¶¯ÎϤÊÀ¸Êª¤Ï¿¼¹ï¤Ê¼åÅÀ¤ò»ý¤Ã¤Æ¤¤¤Þ¤¹¡£ÂÀÍÛ¸÷Àþ¡Ê¤ä¸÷¸»¡Ë¤ÏÈà¤é¤ÎÇËÌǤò°ÕÌ£¤·¤Þ¤¹¡£¹¬±¿¤Ë¤â¡¢µÛ·ìµ´¤Ï¤½¤Î¿ÈÂΤ«¤é¡Ö°Å¹õ¤Î¸÷¡×¤Î¥ª¡¼¥é¤òÊü½Ð¤·¤Æ¤¤¤Þ¤¹¡£°ìÊý¡¢°Å°Ç¤ÏÈà¤é¤ò¤è¤ê¶¯ÎϤˤ¹¤ë¤â¤Î¤Ç¤¹¡£",
   
-"Í©Îî¤Ï¶¯ÎϤʥ¢¥ó¥Ç¥Ã¥É¤Î°ì¼ï¤Ç¤¹¡£Èà¤é¤ÏÉÔµ¤Ì£¤ÊÎп§¤Î¸÷¤ËÊñ¤Þ¤ì¤Æ¤¤¤Þ¤¹¡£È¾Êª¼ÁŪ¤Ê¸ºß¤Ç¤¢¤ëÈà¤é¤Ï¡¢ÊɤòÄ̤êÈ´¤±¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¤¬¡¢¤½¤Î¤È¤­¤Ë¤ÏÊɤÎÌ©Å٤ˤè¤Ã¤Æ½ý¤Ä¤±¤é¤ì¤Æ¤·¤Þ¤¤¤Þ¤¹¡£Â¾¤Î¥¢¥ó¥Ç¥Ã¥ÉƱÍÍ¡¢Èà¤é¤âÀ¸Ì¿ÎϤòµÛ¼ý¤µ¤ì¤ë¤³¤È¤¬¤Ê¤¯¡¢¸«¤¨¤Ê¤¤¤â¤Î¤ò¸«¤ë¤³¤È¤¬¤Ç¤­¡¢ÆǤÈÎ䵤¤ËÂФ·¤ÆÂÑÀ­¤òÈ÷¤¨¡¢¤µ¤é¤ËÃϹö¤ËÂФ¹¤ëÂÑÀ­¤â»ý¤Ã¤Æ¤¤¤Þ¤¹¡£¥ì¥Ù¥ë¤¬½½Ê¬¤Ë¾å¤¬¤ë¤ÈÈà¤é¤Ï¥Æ¥ì¥Ñ¥·¡¼¤ò³ÍÆÀ¤·¤Þ¤¹¡£Í©Îî¤ÏÂî±Û¤·¤¿ËâË¡»È¤¤¤Ë¤Ê¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¤¬¡¢¤½¤Î¿ÈÂÎŪÆÃÀ­¤ÏÈó¾ï¤ËÉϼå¤Ç¤¹¡£",
+"Í©Îî¤Ï¶¯ÎϤʥ¢¥ó¥Ç¥Ã¥É¤Î°ì¼ï¤Ç¤¹¡£Èà¤é¤ÏÉÔµ¤Ì£¤ÊÎп§¤Î¸÷¤ËÊñ¤Þ¤ì¤Æ¤¤¤Þ¤¹¡£È¾Êª¼ÁŪ¤Ê¸ºß¤Ç¤¢¤ëÈà¤é¤Ï¡¢ÊɤòÄ̤êÈ´¤±¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¤¬¡¢¤½¤Î¤È¤­¤Ë¤ÏÊɤÎÌ©Å٤ˤè¤Ã¤Æ½ý¤Ä¤±¤é¤ì¤Æ¤·¤Þ¤¤¤Þ¤¹¡£Â¾¤Î¥¢¥ó¥Ç¥Ã¥ÉƱÍÍ¡¢Èà¤é¤âÀ¸Ì¿ÎϤòµÛ¼ý¤µ¤ì¤ë¤³¤È¤¬¤Ê¤¯¡¢¸«¤¨¤Ê¤¤¤â¤Î¤ò¸«¤ë¤³¤È¤¬¤Ç¤­¡¢ÆǤÈÎ䵤¤ËÂФ·¤ÆÂÑÀ­¤òÈ÷¤¨¡¢¤µ¤é¤ËÃϹö¤ËÂФ¹¤ëÂÑÀ­¤â»ý¤Ã¤Æ¤¤¤Þ¤¹¡£¥ì¥Ù¥ë¤¬½½Ê¬¤Ë¾å¤¬¤ë¤ÈÈà¤é¤Ï¥Æ¥ì¥Ñ¥·¡¼¤ò³ÍÆÀ¤·¤Þ¤¹¡£Í©Îî¤ÏÂî±Û¤·¤¿ËâË¡»È¤¤¤Ë¤Ê¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¤¬¡¢¤½¤Î¿ÈÂÎŪÆÃÀ­¤ÏÈó¾ï¤ËÉϼå¤Ç¤¹¡£Èà¤é¤Ï¿©Êª¤«¤é¤Û¤È¤ó¤É±ÉÍܤòÀݼè¤Ç¤­¤Þ¤»¤ó¤¬¡¢Âå¤ï¤ê¤ËËâË¡ËÀ¤ä¾ó¤«¤éËâÎϤòµÛ¼ý¤·¤Æ¥¨¥Í¥ë¥®¡¼¸»¤Ë¤¹¤ë»ö¤¬¤Ç¤­¤Þ¤¹¡£",
   
 "ÍÅÀº¤ÏÈó¾ï¤Ë¾®¤µ¤¤¤Ç¤¹¡£Èà¤é¤Ï¾®¤µ¤ÊÍã¤ò»ý¤Á¡¢æ«¤ä´í¸±¤ÊÃÏ·Á¤òÈô¤Ó±Û¤¨¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£Èà¤é¤ÏÆü¸÷¤òÂçÊѹ¥¤ß¡¢¸÷¤ËÂФ¹¤ëÂÑÀ­¤ò»ý¤Ã¤Æ¤¤¤Þ¤¹¡£¿ÈÂÎŪ¤Ë¤Ï¤â¤Ã¤È¤âÉϼå¤Ê¼ï²¤Î°ì¤Ä¤Ç¤¹¤¬¡¢ÍÅÀº¤ÏËâË¡¤ÎÌ̤ÇÂçÊѤʺÍǽ¤ò»ý¤Ã¤Æ¤ª¤ê¡¢Èó¾ï¤Ë½ÏÎý¤·¤¿ËâË¡»È¤¤¤Ë¤Ê¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¹â¥ì¥Ù¥ë¤Ç¤Ï¤è¤ê®¤¯Èô¤Ö¤³¤È¤¬¤Ç¤­¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£",
   
 "¤³¤Î¼ï²¤Ï¥«¥ª¥¹¤Ë¤è¤Ã¤Æ¤Ä¤¯¤é¤ì¤¿ËÁÆÂŪ¤Ç·ù°­¤µ¤ì¤ë¸ºß¤Ç¤¹¡£Èà¤é¤ÏÆÈΩ¤·¤¿¼ï²¤Ç¤Ï¤Ê¤¯¡¢¿Í´Ö·¿¼ï²¡¢ÂçÄñ¤Ï¿Í´Ö¤¬¥«¥ª¥¹¤Ë¤è¤Ã¤ÆÏĤá¤é¤ì¤¿Â¸ºß¡¢¤â¤·¤¯¤Ï¿Í´Ö¤È½Ã¤Î°­Ì´¤Î¤è¤¦¤Ê¸òÇÛ¼ï¤Ç¤¹¡£Á´¤Æ¤Î½Ã¿Í¤Ï¥«¥ª¥¹¤ËÌÕ½¾¤·¤Æ¤ª¤ê¡¢¤½¤Î¤¿¤áº®Íð¤È²»¤ËÂФ·¤ÆÂÑÀ­¤òÈ÷¤¨¤Æ¤¤¤Þ¤¹¤¬¡¢½ã¿è¤Ê¥í¥°¥ë¥¹¤Ï¤Þ¤ÀÈà¤é¤ËÂФ·¸ú²Ì¤ò»ý¤Ã¤Æ¤¤¤Þ¤¹¡£½Ã¿Í¤Ïº®ÆÙ¤ò¹¥¤ß¡¢¤½¤ì¤ÏÈà¤é¤ò¤µ¤é¤ËÏĤá¤Þ¤¹¡£½Ã¿Í¤ÏÆÍÁ³ÊÑ°Û¤òµ¯¤³¤·¤ä¤¹¤¤À­¼Á¤ò»ý¤Ã¤Æ¤¤¤Þ¤¹¡£Èà¤é¤¬¤Ä¤¯¤é¤ì¤¿¤È¤­¡¢¥é¥ó¥À¥à¤ÊÊÑ°Û¤ò¼õ¤±¤Þ¤¹¡£¤½¤Î¸å¡¢¥ì¥Ù¥ë¤¬¾å¤¬¤ë¤´¤È¤Ë°ã¤¦ÊÑ°Û¤ò¼õ¤±¤ë²ÄǽÀ­¤¬¤¢¤ê¤Þ¤¹¡£",
   
-"¥¨¥ó¥È¤ÏÈó¾ï¤Ë¶¯¤¯¡¢¸­¤¤¤Ç¤¹¤¬¡¢¤½¤ÎµðÂ礵¤æ¤¨¤Ë櫤βò½ü¤ä¤³¤Ã¤½¤ê¤ÈÊ⤯¤³¤È¤Ï¶ì¼ê¤Ç¤¹¡£À®Ä¹¤¹¤ë¤Ë¤Ä¤ì¤ÆÏÓÎϤäÂѵ×ÎϤ¬¾å¤¬¤ê¤Þ¤¹¤¬¡¢´ïÍѤµ¤Ï²¼¤¬¤Ã¤Æ¤¤¤­¤Þ¤¹¡£Èà¤é¤Ë¤ÏÂ礭¤Ê·çÅÀ¤¬¤¢¤ê¡¢±ê¤Ë¤è¤Ã¤ÆÄ̾ï¤è¤ê¤âÂ礭¤Ê¥À¥á¡¼¥¸¤ò¼õ¤±¤Æ¤·¤Þ¤¤¤Þ¤¹¡£",
+"¥¨¥ó¥È¤ÏÈó¾ï¤Ë¶¯¤¯¡¢¸­¤¤¤Ç¤¹¤¬¡¢¤½¤ÎµðÂ礵¤æ¤¨¤Ë櫤βò½ü¤ä¤³¤Ã¤½¤ê¤ÈÊ⤯¤³¤È¤Ï¶ì¼ê¤Ç¤¹¡£À®Ä¹¤¹¤ë¤Ë¤Ä¤ì¤ÆÏÓÎϤäÂѵ×ÎϤ¬¾å¤¬¤ê¤Þ¤¹¤¬¡¢´ïÍѤµ¤Ï²¼¤¬¤Ã¤Æ¤¤¤­¤Þ¤¹¡£Èà¤é¤Ë¤ÏÂ礭¤Ê·çÅÀ¤¬¤¢¤ê¡¢±ê¤Ë¤è¤Ã¤ÆÄ̾ï¤è¤ê¤âÂ礭¤Ê¥À¥á¡¼¥¸¤ò¼õ¤±¤Æ¤·¤Þ¤¤¤Þ¤¹¡£Èà¤é¤Ï¿©Êª¤«¤é¤Û¤È¤ó¤É±ÉÍܤòÀݼè¤Ç¤­¤Þ¤»¤ó¤¬¡¢Âå¤ï¤ê¤ËÌôÅù¤«¤é¿åʬ¤òÀݼ褹¤ë»ö¤Ç³èÆ°¤Ç¤­¤Þ¤¹¡£",
   
 "Å·»È¤Î¾å°Ì¼ï¤Ç¤¢¤ë¥¢¥ë¥³¥ó¤Ï¡¢Á´¤Æ¤Î¥¹¥­¥ë¤Ë½Ï㤷¤Æ¤ª¤ê¡¢¶¯¤¯¤Æ¸­¤¯¡¢Èó¾ï¤Ë¿Íµ¤¤¬¤¢¤ê¤Þ¤¹¡£Èà¤é¤ÏÌܤ˸«¤¨¤Ê¤¤¤â¤Î¤ò¸«¤ë¤³¤È¤¬¤Ç¤­¡¢¤½¤ÎÍã¤Ç櫤ä´í¸±¤ÊÃÏ·Á¤òÈô¤Ó±Û¤¨¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤·¤«¤·¡¢Èó¾ï¤ËÀ®Ä¹¤¬ÃÙ¤¤¤È¤¤¤¦·çÅÀ¤â¤¢¤ê¤Þ¤¹¡£",
   
-"°­Ëâ¤Î¾å°Ì¼ï¤Ç¤¢¤ë¥Ð¥ë¥í¥°¤Ï¡¢¶¯¤¯¡¢ÃÎŪ¤Ç¡¢¤Þ¤¿¥¿¥Õ¤Ç¤â¤¢¤ê¤Þ¤¹¡£¤·¤«¤·¡¢Èà¤é¤Ï¿À¤ò¿®¤¸¤è¤¦¤È¤Ï¤»¤º¡¢¥×¥ê¡¼¥¹¥È¤Ë¤ÏÁ´¤¯¸þ¤¤¤Æ¤¤¤Þ¤»¤ó¡£±ê¤ÈÃϹö¡¢À¸Ì¿Îϵۼý¤Ø¤ÎÂÑÀ­¤ò»ý¤Ã¤Æ¤ª¤ê¡¢¥ì¥Ù¥ë¤¬¾å¤¬¤ì¤Ð¸«¤¨¤Ê¤¤¤â¤Î¤ò¸«¤ëǽÎϤò³ÍÆÀ¤·¤Þ¤¹¡£¤Þ¤¿¡¢ÃϹö¤ä²Ð±ê¤Î¥Ö¥ì¥¹¤òÅǤ¯¤³¤È¤â¤Ç¤­¤Þ¤¹¡£ÈàÅù¤Ï¤Û¤È¤ó¤É¤Îµ»Ç½¤ÇÍ¥¤ì¤Æ¤¤¤Þ¤¹¤¬¡¢ÀŤ«¤ËÊ⤯¤³¤È¤Ï¶ì¼ê¤Ç¤¹¡£",
+"°­Ëâ¤Î¾å°Ì¼ï¤Ç¤¢¤ë¥Ð¥ë¥í¥°¤Ï¡¢¶¯¤¯¡¢ÃÎŪ¤Ç¡¢¤Þ¤¿¥¿¥Õ¤Ç¤â¤¢¤ê¤Þ¤¹¡£¤·¤«¤·¡¢Èà¤é¤Ï¿À¤ò¿®¤¸¤è¤¦¤È¤Ï¤»¤º¡¢¥×¥ê¡¼¥¹¥È¤Ë¤ÏÁ´¤¯¸þ¤¤¤Æ¤¤¤Þ¤»¤ó¡£±ê¤ÈÃϹö¡¢À¸Ì¿Îϵۼý¤Ø¤ÎÂÑÀ­¤ò»ý¤Ã¤Æ¤ª¤ê¡¢¥ì¥Ù¥ë¤¬¾å¤¬¤ì¤Ð¸«¤¨¤Ê¤¤¤â¤Î¤ò¸«¤ëǽÎϤò³ÍÆÀ¤·¤Þ¤¹¡£¤Þ¤¿¡¢ÃϹö¤ä²Ð±ê¤Î¥Ö¥ì¥¹¤òÅǤ¯¤³¤È¤â¤Ç¤­¤Þ¤¹¡£ÈàÅù¤Ï¤Û¤È¤ó¤É¤Îµ»Ç½¤ÇÍ¥¤ì¤Æ¤¤¤Þ¤¹¤¬¡¢ÀŤ«¤ËÊ⤯¤³¤È¤Ï¶ì¼ê¤Ç¤¹¡£Èà¤é¤Ï¿©Êª¤«¤é¤Û¤È¤ó¤É±ÉÍܤòÀݼè¤Ç¤­¤Þ¤»¤ó¤¬¡¢¿Í´Ö¥¿¥¤¥×¤òÀ¸ìӤˤ¹¤ë»ö¤ÇÀºÎϤò²óÉü¤¹¤ë»ö¤¬¤Ç¤­¤Þ¤¹¡£",
   
 "¥É¥¥¥Ê¥À¥ó¤ÏÀ¾Êý¤«¤éÍ褿¶þ¶¯¤Ê¼ï²¤Ç¤¹¡£¤³¤Î¤¤¤Ë¤·¤¨¤Î¼ï²¤ÏÁ´¤Æ¤ÎÎΰè¤Ë¤ª¤¤¤Æ¿Í´Ö¤ÎǽÎϤòο²ï¤·¡¢ÆäËÂѵ×ÎϤ˴ؤ·¤Æ¤Ï¤½¤ì¤¬¸²Ãø¤Ç¤¹¡£¤·¤«¤·¤Ê¤¬¤é¤³¤Î¼ï²¤ÏÁ´¤Æ¤ËÂî±Û¤·¤Æ¤¤¤ë¤³¤È¤¬ºÒ¤¤¤·¤Æ¡¢¤³¤ÎÀ¤³¦¤Ë¤Ï¿·¤·¤¤·Ð¸³¤È¤¤¤Ã¤¿¤â¤Î¤¬¤Û¤È¤ó¤É¤Ê¤¯¡¢¥ì¥Ù¥ë¤ò¾å¤²¤ë¤³¤È¤¬Èó¾ï¤Ëº¤Æñ¤Ç¤¹¡£Èà¤é¤Ï¤È¤Æ¤â¥¿¥Õ¤Ç´è¶¯¤Ç¤¢¤ê¡¢Èà¤é¤ÎÂѵ×ÎϤ¬²¼¤¬¤ë¤³¤È¤Ï¤¢¤ê¤Þ¤»¤ó¡£",
   
@@ -1685,7 +1685,7 @@ static cptr race_jouhou[MAX_RACES] =
   
 "¥¯¥¿¡¼¤È¤·¤Æ¤¤¤ë̵ɽ¾ð¤ÎÆæ¤ÎÀ¸Êª¤Ç¤¹¡£Èà¤é¤Ï³°¸«¤¬¤«¤ï¤¤¤é¤·¤¤¤¿¤á¡¢Ì¥ÎϤ¬¹â¤¤¤Ç¤¹¡£Èà¤é¤Ïº®Í𤷤ޤ»¤ó¡£¤Ê¤¼¤Ê¤é¡¢º®Í𤷤Ƥ⥯¥¿¡¼¤È¤·¤Æ¤¤¤ë¤¿¤áÊѤï¤ê¤Ê¤¤¤«¤é¤Ç¤¹¡£¤·¤«¤â¡¢¤½¤Î¥¯¥¿¡¼¤È¤·¤Æ¤¤¤ë³°¸«¤«¤éŨ¤Ë¸«¤Ä¤«¤ê¤Ë¤¯¤¤¤Ç¤¹¡£¤·¤«¤·¡¢Èà¤é¤ÏÃí°ÕÎϤ¬¾¯¤Ê¤¤¤¿¤áõº÷¤äÃγÐǽÎϤϰ­¤¤¤Ç¤¹¡£Èà¤é¤Ï¥ì¥Ù¥ë¤¬¾å¤¬¤ë¤È²£¤Ë¿­¤Ó¤ÆAC¤ò¾å¤²¤ëµ»¤ò³Ð¤¨¤Þ¤¹¤¬¡¢¿­¤Ó¤Æ¤¤¤ë´Ö¤ÏËâË¡ËɸæǽÎϤÏÄ㤯¤Ê¤Ã¤Æ¤·¤Þ¤¤¤Þ¤¹¡£",
   
-"¥¢¥ó¥É¥í¥¤¥É¤Ïµ¡³£¤Î¿ÈÂΤò»ý¤Ä¿Í¹©Åª¤Ê¸ºß¤Ç¤¹¡£ËâË¡¤ò¤¦¤Þ¤¯»È¤¦¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¤¬¡¢Àï»Î¤È¤·¤Æ¤ÏÈó¾ï¤ËÍ¥¤ì¤Æ¤¤¤Þ¤¹¡£Èà¤é¤Ï¾¤Î¼ï²¤Î¤è¤¦¤Ë·Ð¸³ÃͤòÆÀ¤ÆÀ®Ä¹¤¹¤ë¤È¤¤¤¦¤³¤È¤Ï¤¢¤ê¤Þ¤»¤ó¡£¿ÈÂΤ˿ȤˤĤ±¤ëÁõÈ÷¤Ë¤è¤Ã¤ÆÀ®Ä¹¤·¤Þ¤¹¡£¤¿¤À¤·¡¢»ØÎØ¡¢¥¢¥ß¥å¥ì¥Ã¥È¡¢¸÷¸»¤ÏÀ®Ä¹¤Ë±Æ¶Á¤·¤Þ¤»¤ó¡£Èà¤é¤ÏÆǤÎÂÑÀ­¤ò»ý¤Á¡¢ËãáãÃΤ餺¤Ç¡¢À¸Ì¿ÎϤòµÛ¤ï¤ì¤ë¤³¤È¤¬¤¢¤ê¤Þ¤»¤ó¡£¤Þ¤¿¡¢¿ÈÂΤ¬´è¾æ¤Ê¤Î¤ÇAC¤Ë¥Ü¡¼¥Ê¥¹¤òÆÀ¤Þ¤¹¡£¤·¤«¤·¿ÈÂΤΤ¤¤¿¤ë¤È¤³¤í¤ËÅŻҲóÏ©¤¬ÁȤ߹þ¤Þ¤ì¤Æ¤¤¤ë¤¿¤á¡¢ÅÅ·â¤Ë¤è¤Ã¤ÆÄ̾ï¤è¤ê¤âÂ礭¤Ê¥À¥á¡¼¥¸¤ò¼õ¤±¤Æ¤·¤Þ¤¤¤Þ¤¹¡£"
+"¥¢¥ó¥É¥í¥¤¥É¤Ïµ¡³£¤Î¿ÈÂΤò»ý¤Ä¿Í¹©Åª¤Ê¸ºß¤Ç¤¹¡£ËâË¡¤ò¤¦¤Þ¤¯»È¤¦¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¤¬¡¢Àï»Î¤È¤·¤Æ¤ÏÈó¾ï¤ËÍ¥¤ì¤Æ¤¤¤Þ¤¹¡£Èà¤é¤Ï¾¤Î¼ï²¤Î¤è¤¦¤Ë·Ð¸³ÃͤòÆÀ¤ÆÀ®Ä¹¤¹¤ë¤È¤¤¤¦¤³¤È¤Ï¤¢¤ê¤Þ¤»¤ó¡£¿ÈÂΤ˿ȤˤĤ±¤ëÁõÈ÷¤Ë¤è¤Ã¤ÆÀ®Ä¹¤·¤Þ¤¹¡£¤¿¤À¤·¡¢»ØÎØ¡¢¥¢¥ß¥å¥ì¥Ã¥È¡¢¸÷¸»¤ÏÀ®Ä¹¤Ë±Æ¶Á¤·¤Þ¤»¤ó¡£Èà¤é¤ÏÆǤÎÂÑÀ­¤ò»ý¤Á¡¢ËãáãÃΤ餺¤Ç¡¢À¸Ì¿ÎϤòµÛ¤ï¤ì¤ë¤³¤È¤¬¤¢¤ê¤Þ¤»¤ó¡£¤Þ¤¿¡¢¿ÈÂΤ¬´è¾æ¤Ê¤Î¤ÇAC¤Ë¥Ü¡¼¥Ê¥¹¤òÆÀ¤Þ¤¹¡£¤·¤«¤·¿ÈÂΤΤ¤¤¿¤ë¤È¤³¤í¤ËÅŻҲóÏ©¤¬ÁȤ߹þ¤Þ¤ì¤Æ¤¤¤ë¤¿¤á¡¢ÅÅ·â¤Ë¤è¤Ã¤ÆÄ̾ï¤è¤ê¤âÂ礭¤Ê¥À¥á¡¼¥¸¤ò¼õ¤±¤Æ¤·¤Þ¤¤¤Þ¤¹¡£Èà¤é¤Ï¿©Êª¤«¤é¤Û¤È¤ó¤ÉÆ°ÎϤòÆÀ¤é¤ì¤Þ¤»¤ó¤¬¡¢Ìý¤òÊäµë¤¹¤ë»ö¤ÇÆ°Îϸ»¤òÆÀ¤ë»ö¤¬¤Ç¤­¤Þ¤¹¡£"
 
 #else
 
@@ -1735,25 +1735,25 @@ static cptr race_jouhou[MAX_RACES] =
 
 "A demon-creature from the nether-world, naturally resistant to fire attacks, and capable of learning fire bolt and fire ball attacks.  They are little loved by other races, but can perform fairly well in most professions.  As they advance levels, they gain the powers of See Invisible.",
 
-"A Golem is an artificial creature, built from a lifeless raw material like clay, and awakened to life.  They are nearly mindless, making them useless for professions which rely on magic, but as warriors they are very tough.  They are resistant to poison, they can see invisible things, and move freely.  At higher levels, they also become resistant to attacks which threaten to drain away their life force.  Golems gain very little nutrition from ordinary food.  Golems also gain a natural armor class bonus from their tough body.",
+"A Golem is an artificial creature, built from a lifeless raw material like clay, and awakened to life.  They are nearly mindless, making them useless for professions which rely on magic, but as warriors they are very tough.  They are resistant to poison, they can see invisible things, and move freely.  At higher levels, they also become resistant to attacks which threaten to drain away their life force.  Golems gain very little nutrition from ordinary food, but can absorb mana from staves and wands as their power source.  Golems also gain a natural armor class bonus from their tough body.",
 
-"There are two types of skeletons: the ordinary, warrior-like skeletons, and the spell-using skeletons, which are also called liches.  As undead beings, skeletons need to worry very little about poison or attacks that can drain life.  They do not really use eyes for perceiving things, and are thus not fooled by invisibility.  Their bones are resistant to sharp shrapnel, and they will quickly become resistant to cold.  Although the magical effects of these will affect the skeleton even without entering the skeleton's (non-existent) belly, the potion or food itself will fall through the skeleton's jaws, giving no nutritional benefit.",
+"There are two types of skeletons: the ordinary, warrior-like skeletons, and the spell-using skeletons, which are also called liches.  As undead beings, skeletons need to worry very little about poison or attacks that can drain life.  They do not really use eyes for perceiving things, and are thus not fooled by invisibility.  Their bones are resistant to sharp shrapnel, and they will quickly become resistant to cold.  Although the magical effects of these will affect the skeleton even without entering the skeleton's (non-existent) belly, the potion or food itself will fall through the skeleton's jaws, giving no nutritional benefit.  They can absorb mana from staves and wands as their energy source.",
 
-"Much like Skeletons, Zombies too are undead horrors: they are resistant to life-draining attacks, and can learn to restore their life-force.  Like skeletons, they become resistant to cold-based attacks (actually earlier than skeletons), resist poison and can see invisible.  While still vulnerable to cuts (unlike skeletons), Zombies are resistant to Nether.  Like Golems, they gain very little nutrition from the food of mortals.",
+"Much like Skeletons, Zombies too are undead horrors: they are resistant to life-draining attacks, and can learn to restore their life-force.  Like skeletons, they become resistant to cold-based attacks (actually earlier than skeletons), resist poison and can see invisible.  While still vulnerable to cuts (unlike skeletons), Zombies are resistant to Nether.  Like Golems, they gain very little nutrition from the food of mortals, but can absorb mana from staves and wands as their energy source.",
 
 "One of the mightier undead creatures, the Vampire is an awe-inspiring sight.  Yet this dread creature has a serious weakness: the bright rays of sun are its bane, and it will need to flee the surface to the deep recesses of earth until the sun finally sets.  Darkness, on the other hand, only makes the Vampire stronger.  As undead, the Vampire has a firm hold on its life force, and resists nether attacks.  The Vampire also resists cold and poison based attacks.  It is, however, susceptible to its perpetual hunger for fresh blood, which can only be satiated by sucking the blood from a nearby monster.",
 
-"Another powerful undead creature: the Spectre is a ghastly apparition, surrounded by an unearthly green glow.  They exist only partially on our plane of existence: half-corporeal, they can pass through walls, although the density of the wall will hurt them in the process of doing this.  As undead, they have a firm hold on their life force, see invisible, and resist poison and cold.  They also resist nether.  At higher levels they develop telepathic abilities.  Spectres make superb spellcasters, but their physical form is very weak.",
+"Another powerful undead creature: the Spectre is a ghastly apparition, surrounded by an unearthly green glow.  They exist only partially on our plane of existence: half-corporeal, they can pass through walls, although the density of the wall will hurt them in the process of doing this.  As undead, they have a firm hold on their life force, see invisible, and resist poison and cold.  They also resist nether.  At higher levels they develop telepathic abilities.  Spectres make superb spellcasters, but their physical form is very weak.  They gain very little nutrition from the food of mortals, but can absorb mana from staves and wands as their energy source.",
 
 "One of the several fairy races, Sprites are very small.  They have tiny wings and can fly over traps that may open up beneath them.  They enjoy sunlight intensely, and need worry little about light based attacks.  Although physically among the weakest races, Sprites are very talented in magic, and can become highly skilled wizards.  Sprites have the special power of spraying Sleeping Dust, and at higher levels they learn to fly faster.",
 
  "This race is a blasphemous abomination produced by Chaos.  It is not an independent race but rather a humanoid creature, most often a human, twisted by the Chaos, or a nightmarish crossbreed of a human and a beast.  All Beastmen are accustomed to Chaos so much that they are untroubled by confusion and sound, although raw logrus can still have effects on them.  Beastmen revel in chaos, as it twists them more and more.  Beastmen are subject to mutations: when they have been created, they receive a random mutation.  After that, every time they advance a level they have a small chance of gaining yet another mutation.",
 
-"The Ents are a powerful race dating from the beginning of the world, oldest of all animals or plants who inhabit Arda.  Spirits of the land, they were summoned to guard the forests of Middle-earth.  Being much like trees they are very clumsy but strong, and very susceptible to fire.",
+"The Ents are a powerful race dating from the beginning of the world, oldest of all animals or plants who inhabit Arda.  Spirits of the land, they were summoned to guard the forests of Middle-earth.  Being much like trees they are very clumsy but strong, and very susceptible to fire.  They gain very little nutrition from the food of mortals, but they can absorb water from potions as their nutrition.",
 
 "Archons are a higher class of angels.  They are good at all skills, and are strong, wise, and are a favorite with any people.  They are able to see the unseen, and their wings allow them to safely fly over traps and other dangerous places.  However, belonging to a higher plane as they do, the experiences of this world do not leave a strong impression on them and they gain levels slowly.",
 
-"Balrogs are a higher class of demons.  They are strong, intelligent and tough.  They do not believe in gods, and are not suitable for priest at all.  Balrog are resistant to fire and nether, and have a firm hold on their life force.  They also eventually learn to see invisible things.  They are good at almost all skills except stealth.",
+"Balrogs are a higher class of demons.  They are strong, intelligent and tough.  They do not believe in gods, and are not suitable for priest at all.  Balrog are resistant to fire and nether, and have a firm hold on their life force.  They also eventually learn to see invisible things.  They are good at almost all skills except stealth.  They gain very little nutrition from the food of mortals, and need human corpses as sacrifices to regain their vitality.",
 
 "Dunedain are a race of hardy men from the West.  This elder race surpasses human abilities in every field, especially constitution.  However, being men of the world, very little is new to them, and levels are very hard for them to gain.  Their constitution cannot be reduced. ",
 
@@ -1761,7 +1761,7 @@ static cptr race_jouhou[MAX_RACES] =
 
 "A Kutar is an expressionless animal-like living creature.  The word 'kuta' means 'absentmindedly' or 'vacantly'.  Their absentmindedness hurts their searching and perception skills, but renders them incapable of being confused.  Their unearthly calmness and serenity make them among the most stealthy of any race.  Kutars, although expressionless, are beautiful and so have a high charisma.  Members of this race can learn to expand their body horizontally.  This increases armour class, but renders them vulnerable to magical attacks.",
 
-"An android is a artificial creation with a body of machinery.  They are poor at spell casting, but they make excellent warriors.  They don't acquire experience like other races, but rather gain in power as they attach new equipment to their frame.  Rings, amulets, and lights do not influence growth.  Androids are resistant to poison, can move freely, and are immune to life-draining attacks.  Moreover, because of their hard metallic bodies, they get a bonus to AC.  Androids have electronic circuits throughout their body and must beware of electric shocks."
+"An android is a artificial creation with a body of machinery.  They are poor at spell casting, but they make excellent warriors.  They don't acquire experience like other races, but rather gain in power as they attach new equipment to their frame.  Rings, amulets, and lights do not influence growth.  Androids are resistant to poison, can move freely, and are immune to life-draining attacks.  Moreover, because of their hard metallic bodies, they get a bonus to AC.  Androids have electronic circuits throughout their body and must beware of electric shocks.  They gain very little nutrition from the food of mortals, but they can use flasks of oil as their energy source."
 
 #endif
 };
@@ -1815,7 +1815,7 @@ static cptr class_jouhou[MAX_CLASS] =
   
 "µ³Ê¼¤ÏÇϤ˾è¤êÀï¾ì¤ò¶î¤±È´¤±¤ë¥¨¥ê¡¼¥ÈÀï»Î¤Ç¤¹¡£ËâË¡¤Ï»È¤¨¤Þ¤»¤ó¤¬¡¢ÇϾ夫¤é¤Î°µÅÝŪ¤Ê¹¶·âÎϤò¸Ø¤ë¾å¤Ë¡¢¹â¤¤µ¡Æ°ÎϤòÀ¸¤«¤·¤¿¼Í·â¤ò¤âÆÀ°Õ¤È¤·¤Æ¤¤¤Þ¤¹¡£¥ì¥Ù¥ë¤¬¾å¤¬¤ì¤Ð¡¢ÌîÀ¸¤Î¥â¥ó¥¹¥¿¡¼¤Ë¤Þ¤¿¤¬¤ê̵ÍýÌðÍý¼ê¤Ê¤º¤±¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£Èà¤é¤Ï¸Ê¤ÎÆùÂΤÈÀº¿À¤Ë¸Ø¤ê¤ò»ý¤Á¡¢ËâË¡Æ»¶ñ¤Ë¤Ï¤¢¤Þ¤êÍê¤í¤¦¤È¤Ï¤·¤Þ¤»¤ó¡£",
   
-"¶¸Àï»Î¤ÏÅܤ궸¤Ã¤ÆÉð´ï¤ò¿¶¤ë¤¦¶²¤ë¤Ù¤­Àï»Î¤Ç¤¹¡£Á´¿¦¶ÈÃæºÇ¹â¤ÎÆùÂÎǽÎϤò¸Ø¤ê¡¢¶²ÉݤÈËãáã¤ËÂФ¹¤ëÂÑÀ­¤ò»ý¤Á¡¢¥ì¥Ù¥ë¤¬¾å¤¬¤ì¤Ð¤½¤Î¶¯¿Ù¤ÊÆùÂΤÇÌð¤Î¼öʸ¤òÄ·¤ÍÊÖ¤¹¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤µ¤é¤ËÉð´ï¤Ê¤·¤ÇÀ臘¤³¤È¤ä¡¢¼ö¤¤¤Î¤«¤±¤é¤ì¤¿ÁõÈ÷¤òÎϤŤ¯¤ÇÇí¤¬¤¹¤³¤È¤¬¤Ç¤­¡¢¤¤¤¯¤Ä¤«¤Îµ»¤ò(È¿ËâË¡¾õÂ֤Ǥâ)»È¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤·¤«¤·¡¢´¬Êª¤äËâË¡Æ»¶ñ¤ÏÁ´¤¯»È¤¦¤³¤È¤¬¤Ç¤­¤º¡¢æ«¤Î²ò½ü¤ä±£Ì©¹ÔÆ°¡¢Ãµº÷¡¢ËâË¡Ëɸ桢Èô¤ÓÆ»¶ñ¤Îµ»Ç½¤Ë´Ø¤·¤Æ¤ÏÀä˾Ū¤Ç¤¹¡£¤Ò¤¿¤¹¤é²¥¤Ã¤ÆÆ»¤ò³«¤¯¤·¤«¤¢¤ê¤Þ¤»¤ó¡£¥¢¥ó¥Ð¥é¥¤¥È¤ÈÍ©Îî¤ÏÈó¾ï¤Ë¾¡Íø¤·¤ä¤¹¤¤¤Ç¤¹¤¬¥¹¥³¥¢¤¬¤«¤Ê¤êÄ㤯½¤Àµ¤µ¤ì¤Þ¤¹¡£",
+"¶¸Àï»Î¤ÏÅܤ궸¤Ã¤ÆÉð´ï¤ò¿¶¤ë¤¦¶²¤ë¤Ù¤­Àï»Î¤Ç¤¹¡£Á´¿¦¶ÈÃæºÇ¹â¤ÎÆùÂÎǽÎϤò¸Ø¤ê¡¢¶²ÉݤÈËãáã¤ËÂФ¹¤ëÂÑÀ­¤ò»ý¤Á¡¢¥ì¥Ù¥ë¤¬¾å¤¬¤ì¤Ð¤½¤Î¶¯¿Ù¤ÊÆùÂΤÇÌð¤Î¼öʸ¤òÄ·¤ÍÊÖ¤¹¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤µ¤é¤ËÉð´ï¤Ê¤·¤ÇÀ臘¤³¤È¤ä¡¢¼ö¤¤¤Î¤«¤±¤é¤ì¤¿ÁõÈ÷¤òÎϤŤ¯¤ÇÇí¤¬¤¹¤³¤È¤¬¤Ç¤­¡¢¤¤¤¯¤Ä¤«¤Îµ»¤ò(È¿ËâË¡¾õÂ֤Ǥâ)»È¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤·¤«¤·¡¢´¬Êª¤äËâË¡Æ»¶ñ¤ÏÁ´¤¯»È¤¦¤³¤È¤¬¤Ç¤­¤º¡¢æ«¤Î²ò½ü¤ä±£Ì©¹ÔÆ°¡¢Ãµº÷¡¢ËâË¡Ëɸ桢Èô¤ÓÆ»¶ñ¤Îµ»Ç½¤Ë´Ø¤·¤Æ¤ÏÀä˾Ū¤Ç¤¹¡£¤Ò¤¿¤¹¤é²¥¤Ã¤ÆÆ»¤ò³«¤¯¤·¤«¤¢¤ê¤Þ¤»¤ó¡£Í©Îî¤ÏÈó¾ï¤Ë¾¡Íø¤·¤ä¤¹¤¤¤Ç¤¹¤¬¥¹¥³¥¢¤¬¤«¤Ê¤êÄ㤯½¤Àµ¤µ¤ì¤Þ¤¹¡£",
 
 "ÃÃÌê»Õ¤ÏÉð´ï¤äËɶñ¤ò¼«Ê¬¤Ç¶¯²½¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£Æüì¸ú²Ì¤ò»ý¤ÄÉð´ï¤äËɶñ¤«¤éÆüì¸ú²Ì¤Î¸µ¤È¤Ê¤ë¥¨¥Ã¥»¥ó¥¹¤ò¼è¤ê½Ð¤·¡¢Ê̤ÎÉð´ï¤äËɶñ¤Ë¥¨¥Ã¥»¥ó¥¹¤òÉղ乤뤳¤È¤Ë¤è¤Ã¤Æ¤½¤ÎÆüì¸ú²Ì¤òÉղäǤ­¤Þ¤¹¡£¤¢¤ëÄøÅÙ¤ÎÀïƮǽÎϤâ»ý¤Á¤Þ¤¹¤¬¡¢ËâË¡¤Ï°ìÀÚ»ÈÍѤǤ­¤º¡¢±£Ì©¤äËâË¡Ëɸæ¤Îµ»Ç½¤âÄ㤯¤Ê¤ê¤Þ¤¹¡£",
 
@@ -1843,7 +1843,7 @@ static cptr class_jouhou[MAX_CLASS] =
 
 "The Monk character class is very different from all other classes.  Their training in martial arts makes them much more powerful with no armor or weapons.  To gain the resistances necessary for survival a monk may need to wear some kind of armor, but if the armor he wears is too heavy, it will severely disturb his martial arts maneuvers.  As the monk advances levels, new, powerful forms of attack become available.  Their defensive capabilities increase likewise, but if armour is being worn, this effect decreases.  Wisdom determines a Monk's spell casting ability.",
 
-"The Mindcrafter is a unique class that uses the powers of the mind instead of magic.  These powers are unique to Mindcrafters, and vary from simple extrasensory powers to mental domination of others.  Since these powers are developed by the practice of certain disciplines, a Mindcrafter requires no spellbooks to use them.  The available powers are simply determined by the character's level.  Wisdom determines a Mindcrafter's ability to use mind powers,",
+"The Mindcrafter is a unique class that uses the powers of the mind instead of magic.  These powers are unique to Mindcrafters, and vary from simple extrasensory powers to mental domination of others.  Since these powers are developed by the practice of certain disciplines, a Mindcrafter requires no spellbooks to use them.  The available powers are simply determined by the character's level.  Wisdom determines a Mindcrafter's ability to use mind powers.",
 
 "High-mages are mages who specialize in one particular field of magic and learn it very well - much better than the ordinary mage.  For the price of giving up a second realm of magic, they gain substantial benefits in the mana costs, minimum levels, and failure rates in the spells of the realm of their specialty.  A high mage's prime statistic is intelligence as this determines his spell casting ability. ",
 
@@ -1871,7 +1871,7 @@ static cptr class_jouhou[MAX_CLASS] =
 
 "Cavalry ride on horses into battle.  Although they cannot cast spells, they are proud of their overwhelming offensive strength on horseback.  They are good at shooting.  At high levels, they learn to forcibly saddle and tame wild monsters.  Since they take pride in the body and the soul, they don't use magical devices well.",
 
-"A Berserker is a fearful fighter indeed, immune to fear and paralysis.  At high levels, Berserkers can reflect bolt spells with their tough flesh.  Furthermore, they can fight without weapons, can remove cursed equipment by force, and can even use their special combat techniques when surrounded by an anti-magic barrier.  Berserkers, however, cannot use any magical devices or read any scrolls, and are hopeless at all non-combat skills.  Since Berserker Amberite or Spectres are quite easy to *win* with, their scores are lowered.",
+"A Berserker is a fearful fighter indeed, immune to fear and paralysis.  At high levels, Berserkers can reflect bolt spells with their tough flesh.  Furthermore, they can fight without weapons, can remove cursed equipment by force, and can even use their special combat techniques when surrounded by an anti-magic barrier.  Berserkers, however, cannot use any magical devices or read any scrolls, and are hopeless at all non-combat skills.  Since Berserker Spectres are quite easy to *win* with, their scores are lowered.",
 
 "A Weaponsmith can improve weapons and armors for him or herself.  They can extract the essences of special effects from weapons or armors which have various special abilities, and can add these essences to another weapon or armor.  They are good at fighting, but cannot cast spells, and are poor at skills such as stealth or magic defense.",
 
@@ -2049,6 +2049,23 @@ static void birth_quit(void)
        quit(NULL);
 }
 
+
+/*
+ *  Show specific help file
+ */
+static void show_help(cptr helpfile)
+{
+       /* Save screen */
+       screen_save();
+
+       /* Peruse the help file */
+       (void)show_file(TRUE, helpfile, NULL, 0, 0);
+
+       /* Load screen */
+       screen_load();
+}
+
+
 /*
  * Choose from one of the available magical realms
  */
@@ -2278,7 +2295,14 @@ static byte choose_realm(s32b choices, int *count)
                        continue;
                }
                else k = -1;
-               if (c == '?') do_cmd_help();
+               if (c == '?')
+               {
+#ifdef JP                 
+                       show_help("jmagic.txt#MagicRealms");
+#else
+                       show_help("magic.txt#MagicRealms");
+#endif
+               }
                else if (c == '=')
                {
                        screen_save();
@@ -2305,7 +2329,7 @@ static byte choose_realm(s32b choices, int *count)
  */
 static bool get_player_realms(void)
 {
-        int i, count;
+       int i, count;
 
        /* Clean up infomation of modifications */
        put_str("                                   ", 3, 40);
@@ -2331,7 +2355,7 @@ static bool get_player_realms(void)
                put_str("                                   ", 4, 40);
                put_str("                                   ", 5, 40);
 
-               roff_to_buf(realm_jouhou[technic2magic(p_ptr->realm1)-1], 74, temp);
+               roff_to_buf(realm_jouhou[technic2magic(p_ptr->realm1)-1], 74, temp, sizeof(temp));
                t = temp;
                for (i = 0; i< 6; i++)
                {
@@ -2354,12 +2378,12 @@ static bool get_player_realms(void)
                        (void)inkey();
                        prt("", 0, 0);
                        break;
-                }
+               }
 else
 #ifdef JP
-                if (get_check("¤è¤í¤·¤¤¤Ç¤¹¤«¡©")) break;
+               if (get_check_strict("¤è¤í¤·¤¤¤Ç¤¹¤«¡©", CHECK_DEFAULT_Y)) break;
 #else
-                if (get_check("Are you sure? ")) break;
+               if (get_check_strict("Are you sure? ", CHECK_DEFAULT_Y)) break;
 #endif
        }
 
@@ -2394,7 +2418,7 @@ else
                        put_str("                                   ", 4, 40);
                        put_str("                                   ", 5, 40);
 
-                       roff_to_buf(realm_jouhou[technic2magic(p_ptr->realm2)-1], 74, temp);
+                       roff_to_buf(realm_jouhou[technic2magic(p_ptr->realm2)-1], 74, temp, sizeof(temp));
                        t = temp;
                        for (i = 0; i< 6; i++)
                        {
@@ -2419,9 +2443,9 @@ else
                                break;
                        }
 #ifdef JP
-                       else if (get_check("¤è¤í¤·¤¤¤Ç¤¹¤«¡©")) break;
+                       else if (get_check_strict("¤è¤í¤·¤¤¤Ç¤¹¤«¡©", CHECK_DEFAULT_Y)) break;
 #else
-                        else if (get_check("Are you sure? ")) break;
+                       else if (get_check_strict("Are you sure? ", CHECK_DEFAULT_Y)) break;
 #endif
                }
                if (p_ptr->realm2)
@@ -2552,11 +2576,8 @@ static void load_prev_data(bool swap)
 
 /*
  * Returns adjusted stat -JK-  Algorithm by -JWT-
- *
- * auto_roll is boolean and states maximum changes should be used rather
- * than random ones to allow specification of higher values to wait for
  */
-static int adjust_stat(int value, int amount, int auto_roll)
+static int adjust_stat(int value, int amount)
 {
        int i;
 
@@ -2705,7 +2726,7 @@ void get_max_stats(void)
  */
 static void get_extra(bool roll_hitdie)
 {
-       int             i, j, min_value, max_value;
+       int i, j;
 
        /* Experience factor */
        if (p_ptr->prace == RACE_ANDROID) p_ptr->expfact = rp_ptr->r_exp;
@@ -2722,17 +2743,17 @@ static void get_extra(bool roll_hitdie)
 
        for (i = 0; i < 64; i++)
        {
-               if (p_ptr->pclass == CLASS_SORCERER) p_ptr->spell_exp[i] = 1600;
-               else if (p_ptr->pclass == CLASS_RED_MAGE) p_ptr->spell_exp[i] = 1200;
-               else p_ptr->spell_exp[i] = 0;
+               if (p_ptr->pclass == CLASS_SORCERER) p_ptr->spell_exp[i] = SPELL_EXP_MASTER;
+               else if (p_ptr->pclass == CLASS_RED_MAGE) p_ptr->spell_exp[i] = SPELL_EXP_SKILLED;
+               else p_ptr->spell_exp[i] = SPELL_EXP_UNSKILLED;
        }
 
        for (i = 0; i < 5; i++)
                for (j = 0; j < 64; j++)
                        p_ptr->weapon_exp[i][j] = s_info[p_ptr->pclass].w_start[i][j];
-       if(p_ptr->pseikaku == SEIKAKU_SEXY)
+       if ((p_ptr->pseikaku == SEIKAKU_SEXY) && (p_ptr->weapon_exp[TV_HAFTED-TV_BOW][SV_WHIP] < WEAPON_EXP_BEGINNER))
        {
-               p_ptr->weapon_exp[TV_HAFTED-TV_BOW][SV_WHIP] = 4000;
+               p_ptr->weapon_exp[TV_HAFTED-TV_BOW][SV_WHIP] = WEAPON_EXP_BEGINNER;
        }
 
        for (i = 0; i < 10; i++)
@@ -2745,45 +2766,7 @@ static void get_extra(bool roll_hitdie)
                p_ptr->hitdie = rp_ptr->r_mhp + cp_ptr->c_mhp + ap_ptr->a_mhp;
 
        /* Roll for hit point unless quick-start */
-       if (roll_hitdie)
-       {
-               /* Minimum hitpoints at highest level */
-               min_value = ((PY_MAX_LEVEL+2) * (p_ptr->hitdie + 1)) * 3 / 8;
-               min_value += p_ptr->hitdie;
-
-               /* Maximum hitpoints at highest level */
-               max_value = ((PY_MAX_LEVEL+2) * (p_ptr->hitdie + 1)) * 5 / 8;
-               max_value += p_ptr->hitdie;
-
-               /* Roll out the hitpoints */
-               while (TRUE)
-               {
-                       /* Pre-calculate level 1 hitdice */
-                       p_ptr->player_hp[0] = p_ptr->hitdie;
-
-                       for (i = 1; i < 4; i++)
-                       {
-                               j = randint1(p_ptr->hitdie);
-                               p_ptr->player_hp[0] += j;
-                       }
-
-                       /* Roll the hitpoint values */
-                       for (i = 1; i < PY_MAX_LEVEL; i++)
-                       {
-                               j = randint1(p_ptr->hitdie);
-                               p_ptr->player_hp[i] = p_ptr->player_hp[i - 1] + j;
-                       }
-
-                       /* XXX Could also require acceptable "mid-level" hitpoints */
-
-                       /* Require "valid" hitpoints at highest level */
-                       if (p_ptr->player_hp[PY_MAX_LEVEL - 1] < min_value) continue;
-                       if (p_ptr->player_hp[PY_MAX_LEVEL - 1] > max_value) continue;
-
-                       /* Acceptable */
-                       break;
-               }
-       }
+       if (roll_hitdie) do_cmd_rerate_aux();
 
        /* Initial hitpoints */
        p_ptr->mhp = p_ptr->player_hp[0];
@@ -3037,13 +3020,13 @@ static void get_history(void)
        while ((n > 0) && (s[n-1] == ' ')) s[--n] = '\0';
 
        {
-        char temp[64*4];
-        roff_to_buf(s, 60, temp);
-        t = temp;
-        for(i=0 ; i<4 ; i++){
-             if(t[0]==0)break; 
-             else {strcpy(p_ptr->history[i], t);t += strlen(t)+1;}
-             }
+       char temp[64*4];
+       roff_to_buf(s, 60, temp, sizeof(temp));
+       t = temp;
+       for(i=0 ; i<4 ; i++){
+            if(t[0]==0)break; 
+            else {strcpy(p_ptr->history[i], t);t += strlen(t)+1;}
+            }
        }
 }
 
@@ -3139,7 +3122,7 @@ static void birth_put_stats(void)
                        j = rp_ptr->r_adj[i] + cp_ptr->c_adj[i] + ap_ptr->a_adj[i];
 
                        /* Obtain the current stat */
-                       m = adjust_stat(p_ptr->stat_max[i], j, TRUE);
+                       m = adjust_stat(p_ptr->stat_max[i], j);
 
                        /* Put the stat */
                        cnv_stat(m, buf);
@@ -3283,6 +3266,7 @@ static void player_wipe(void)
        cheat_xtra = FALSE;
        cheat_know = FALSE;
        cheat_live = FALSE;
+       cheat_save = FALSE;
 
        /* Assume no winning game */
        p_ptr->total_winner = FALSE;
@@ -3294,7 +3278,7 @@ static void player_wipe(void)
 
        /* Assume no cheating */
        p_ptr->noscore = 0;
-        p_ptr->wizard = FALSE;
+       p_ptr->wizard = FALSE;
 
        /* Not waiting to report score */
        p_ptr->wait_report_score = FALSE;
@@ -3303,16 +3287,16 @@ static void player_wipe(void)
        p_ptr->pet_follow_distance = PET_FOLLOW_DIST;
        p_ptr->pet_extra_flags = (PF_TELEPORT | PF_ATTACK_SPELL | PF_SUMMON_SPELL);
 
-        /* Wipe the recall depths */
-        for (i = 0; i < max_d_idx; i++)
-        {
+       /* Wipe the recall depths */
+       for (i = 0; i < max_d_idx; i++)
+       {
                max_dlv[i] = 0;
-        }
+       }
 
        p_ptr->visit = 1;
 
-        /* Reset wild_mode to FALSE */
-        p_ptr->wild_mode = FALSE;
+       /* Reset wild_mode to FALSE */
+       p_ptr->wild_mode = FALSE;
 
        for (i = 0; i < 108; i++)
        {
@@ -3381,7 +3365,7 @@ static void init_dungeon_quests(int number_of_quests)
        init_flags = INIT_ASSIGN;
        p_ptr->inside_quest = MIN_RANDOM_QUEST;
 
-       process_dungeon_file("q_info_j.txt", 0, 0, 0, 0);
+       process_dungeon_file("q_info.txt", 0, 0, 0, 0);
 
        p_ptr->inside_quest = 0;
 
@@ -3445,13 +3429,13 @@ static void init_dungeon_quests(int number_of_quests)
        init_flags = INIT_ASSIGN;
        p_ptr->inside_quest = QUEST_OBERON;
 
-       process_dungeon_file("q_info_j.txt", 0, 0, 0, 0);
+       process_dungeon_file("q_info.txt", 0, 0, 0, 0);
 
        quest[QUEST_OBERON].status = QUEST_STATUS_TAKEN;
 
        p_ptr->inside_quest = QUEST_SERPENT;
 
-       process_dungeon_file("q_info_j.txt", 0, 0, 0, 0);
+       process_dungeon_file("q_info.txt", 0, 0, 0, 0);
 
        quest[QUEST_SERPENT].status = QUEST_STATUS_TAKEN;
        p_ptr->inside_quest = 0;
@@ -3674,6 +3658,21 @@ static byte player_init[MAX_CLASS][3][2] =
 
 
 /*
+ * Hook function for human corpses
+ */
+static bool monster_hook_human(int r_idx)
+{
+       monster_race *r_ptr = &r_info[r_idx];
+
+       if (r_ptr->flags1 & (RF1_UNIQUE)) return FALSE;
+
+       if (strchr("pht", r_ptr->d_char)) return TRUE;
+
+       return FALSE;
+}
+
+
+/*
  * Init players with some belongings
  *
  * Having an item makes the player "aware" of its purpose.
@@ -3692,36 +3691,81 @@ void player_outfit(void)
        /* Give the player some food */
        switch (p_ptr->prace)
        {
-               case RACE_GOLEM:
-               case RACE_SKELETON:
-               case RACE_ZOMBIE:
-               case RACE_VAMPIRE:
-               case RACE_SPECTRE:
-               case RACE_ENT:
-               case RACE_DEMON:
-               case RACE_ANDROID:
-               {
-                       if (p_ptr->pclass == CLASS_BERSERKER) break;
-                       /* Scrolls of satisfy hunger */
-                       object_prep(q_ptr, lookup_kind(TV_SCROLL, SV_SCROLL_SATISFY_HUNGER));
-                       q_ptr->number = (byte)rand_range(2, 5);
-                       object_aware(q_ptr);
-                       object_known(q_ptr);
+       case RACE_VAMPIRE:
+               /* Nothing! */
+               /* Vampires can drain blood of creatures */
+               break;
 
-                       (void)inven_carry(q_ptr);
+       case RACE_DEMON:
+               /* Demon can drain vitality from humanoid corpse */
 
-                       break;
-               }
-               default:
-               {
-                       /* Food rations */
-                       object_prep(q_ptr, lookup_kind(TV_FOOD, SV_FOOD_RATION));
-                       q_ptr->number = (byte)rand_range(3, 7);
-                       object_aware(q_ptr);
-                       object_known(q_ptr);
+               /* Prepare allocation table */
+               get_mon_num_prep(monster_hook_human, NULL);
 
+               for (i = rand_range(3,4); i > 0; i--)
+               {
+                       object_prep(q_ptr, lookup_kind(TV_CORPSE, SV_CORPSE));
+                       q_ptr->pval = get_mon_num(2);
+                       q_ptr->number = 1;
                        (void)inven_carry(q_ptr);
                }
+               break;
+
+#if 0
+       case RACE_SKELETON:
+               /* Some Skeletons */
+               object_prep(q_ptr, lookup_kind(TV_SKELETON, SV_ANY));
+               q_ptr->number = (byte)rand_range(7, 12);
+               object_aware(q_ptr);
+               object_known(q_ptr);
+               (void)inven_carry(q_ptr);
+               break;
+#endif
+       case RACE_SKELETON:
+       case RACE_GOLEM:
+       case RACE_ZOMBIE:
+       case RACE_SPECTRE:
+               /* Staff (of Nothing) */
+               object_prep(q_ptr, lookup_kind(TV_STAFF, SV_STAFF_NOTHING));
+               q_ptr->number = 1;
+               object_aware(q_ptr);
+               object_known(q_ptr);
+
+               (void)inven_carry(q_ptr);
+               break;
+
+       case RACE_ENT:
+               /* Potions of Water */
+               object_prep(q_ptr, lookup_kind(TV_POTION, SV_POTION_WATER));
+               q_ptr->number = (byte)rand_range(15, 23);
+               object_aware(q_ptr);
+               object_known(q_ptr);
+               (void)inven_carry(q_ptr);
+
+               break;
+
+       case RACE_ANDROID:
+               /* Flasks of oil */
+               object_prep(q_ptr, lookup_kind(TV_FLASK, SV_ANY));
+
+               /* Fuel with oil (move pval to xtra4) */
+               apply_magic(q_ptr, 1, 0L);
+
+               q_ptr->number = (byte)rand_range(7, 12);
+               object_aware(q_ptr);
+               object_known(q_ptr);
+               (void)inven_carry(q_ptr);
+
+               break;
+
+       default:
+               /* Food rations */
+               object_prep(q_ptr, lookup_kind(TV_FOOD, SV_FOOD_RATION));
+               q_ptr->number = (byte)rand_range(3, 7);
+               object_aware(q_ptr);
+               object_known(q_ptr);
+
+               (void)inven_carry(q_ptr);
        }
 
        /* Get local object */
@@ -3926,6 +3970,9 @@ void player_outfit(void)
 
                (void)inven_carry(q_ptr);
        }
+
+       /* Hack -- make aware of the water */
+       k_info[lookup_kind(TV_POTION, SV_POTION_WATER)].aware = TRUE;
 }
 
 
@@ -4083,7 +4130,14 @@ static bool get_player_race(void)
                        continue;
                }
                else k = -1;
-               if (c == '?') do_cmd_help();
+               if (c == '?')
+               {
+#ifdef JP                 
+                       show_help("jraceclas.txt#TheRaces");
+#else
+                       show_help("raceclas.txt#TheRaces");
+#endif
+               }
                else if (c == '=')
                {
                        screen_save();
@@ -4291,7 +4345,14 @@ static bool get_player_class(void)
                        continue;
                }
                else k = -1;
-               if (c == '?') do_cmd_help();
+               if (c == '?')
+               {
+#ifdef JP                 
+                       show_help("jraceclas.txt#TheClasses");
+#else
+                       show_help("raceclas.txt#TheClasses");
+#endif
+               }
                else if (c == '=')
                {
                        screen_save();
@@ -4526,7 +4587,14 @@ static bool get_player_seikaku(void)
                        }
                }
                else k = -1;
-               if (c == '?') do_cmd_help();
+               if (c == '?')
+               {
+#ifdef JP                 
+                       show_help("jraceclas.txt#ThePersonalities");
+#else
+                       show_help("raceclas.txt#ThePersonalities");
+#endif
+               }
                else if (c == '=')
                {
                        screen_save();
@@ -4599,7 +4667,7 @@ static bool get_stat_limits(void)
                j = rp_ptr->r_adj[i] + cp_ptr->c_adj[i] + ap_ptr->a_adj[i];
 
                /* Obtain the "maximal" stat */
-               m = adjust_stat(17, j, TRUE);
+               m = adjust_stat(17, j);
 
                /* Save the maximum */
                mval[i] = m;
@@ -4625,7 +4693,7 @@ static bool get_stat_limits(void)
                }
 
                /* Obtain the current stat */
-               m = adjust_stat(cval[i], j, TRUE);
+               m = adjust_stat(cval[i], j);
 
                /* Above 18 */
                if (m > 18)
@@ -4689,7 +4757,7 @@ static bool get_stat_limits(void)
                                j = rp_ptr->r_adj[cs] + cp_ptr->c_adj[cs] + ap_ptr->a_adj[cs];
 
                                /* Obtain the current stat */
-                               m = adjust_stat(cval[cs], j, TRUE);
+                               m = adjust_stat(cval[cs], j);
                                
                                /* Above 18 */
                                if (m > 18)
@@ -4724,13 +4792,11 @@ static bool get_stat_limits(void)
                c = inkey();
                switch ( c ){
                case 'Q':
-                       birth_quit();
-                       break;
+                       birth_quit();
                case 'S':
-                       return (FALSE); 
-                       break;
+                       return FALSE;
                case ESCAPE:
-                       break;
+                       break;
                case ' ':
                case '\r':
                case '\n':
@@ -4795,7 +4861,13 @@ static bool get_stat_limits(void)
                        }
                        break;
                case '?':
-                       do_cmd_help();
+               {
+#ifdef JP                 
+                       show_help("jbirth.txt#AutoRoller");
+#else
+                       show_help("birth.txt#AutoRoller");
+#endif
+               }
                        break;
                case '=':
                        screen_save();
@@ -4808,7 +4880,7 @@ static bool get_stat_limits(void)
                        screen_load();
                        break;
                default:
-                       bell();
+                       bell();
                        break;
                }
                if(c == ESCAPE || ((c == ' ' || c == '\r' || c == '\n') && cs == 6))break;
@@ -4969,7 +5041,6 @@ static bool get_chara_limits(void)
                switch (c){
                case 'Q':
                        birth_quit();
-                       break;
                case 'S':
                        return (FALSE);
                case ESCAPE:
@@ -5085,7 +5156,11 @@ static bool get_chara_limits(void)
                        }
                        break;
                case '?':
-                       do_cmd_help();
+#ifdef JP                 
+                       show_help("jbirth.txt#AutoRoller");
+#else
+                       show_help("birth.txt#AutoRoller");
+#endif
                        break;
                case '=':
                        screen_save();
@@ -5114,22 +5189,143 @@ static bool get_chara_limits(void)
 }
 #endif
 
+static char histpref_buf[240];
+
+void add_history_from_pref_line(cptr t)
+{
+       int  limit = (sizeof histpref_buf) - 1;
+       int  i;
+
+       for (i = strlen(histpref_buf); *t && (i < limit); t++)
+       {
+#ifdef JP
+               if (iskanji(*t) || isprint(*t))
+#else
+               if (isprint(*t))
+#endif
+               {
+#ifdef JP
+                       if (iskanji(*t))
+                       {
+                               if (i + 1 >= limit) break;
+                               histpref_buf[i++] = *(t++);
+                       }
+#endif
+                       histpref_buf[i++] = *t;
+               }
+       }
+
+       /* Terminate */
+       histpref_buf[(i < limit) ? i : limit] = '\0';
+}
+
+
+static bool do_cmd_histpref(void)
+{
+       char buf[80];
+       errr err;
+       int i, j, n;
+       char *s, *t;
+       char temp[64 * 4];
+
+#ifdef JP
+       if (!get_check("À¸¤¤Î©¤ÁÀßÄê¥Õ¥¡¥¤¥ë¤ò¥í¡¼¥É¤·¤Þ¤¹¤«? ")) return FALSE;
+#else
+       if (!get_check("Load background history preference file? ")) return FALSE;
+#endif
+
+       /* Init buffer */
+       histpref_buf[0] = '\0';
+
+#ifdef JP
+       sprintf(buf, "histedit-%s.prf", player_name);
+#else
+       sprintf(buf, "histpref-%s.prf", player_name);
+#endif
+       err = process_histpref_file(buf);
+
+       /* Process 'hist????.prf' if 'hist????-<name>.prf' doesn't exist */
+       if (0 > err)
+       {
+#ifdef JP
+               strcpy(buf, "histedit.prf");
+#else
+               strcpy(buf, "histpref.prf");
+#endif
+               err = process_histpref_file(buf);
+       }
+
+       if (err)
+       {
+#ifdef JP
+               msg_print("À¸¤¤Î©¤ÁÀßÄê¥Õ¥¡¥¤¥ë¤ÎÆɤ߹þ¤ß¤Ë¼ºÇÔ¤·¤Þ¤·¤¿¡£");
+               msg_print("histedit.prf¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó¡£");
+#else
+               msg_print("Failed to load background history preference.");
+               msg_print("Can't find histpref.prf");
+#endif
+               msg_print(NULL);
+
+               /* Terminate buffer */
+               histpref_buf[0] = '\0';
+               return FALSE;
+       }
+
+       /* Clear the previous history strings */
+       for (i = 0; i < 4; i++) p_ptr->history[i][0] = '\0';
+
+       /* Skip leading spaces */
+       for (s = histpref_buf; *s == ' '; s++) /* loop */;
+
+       /* Get apparent length */
+       n = strlen(s);
+
+       /* Kill trailing spaces */
+       while ((n > 0) && (s[n - 1] == ' ')) s[--n] = '\0';
+
+       roff_to_buf(s, 60, temp, sizeof(temp));
+       t = temp;
+       for (i = 0; i < 4; i++)
+       {
+               if (t[0] == 0) break;
+               else
+               {
+                       strcpy(p_ptr->history[i], t);
+                       t += strlen(t) + 1;
+               }
+       }
+
+       /* Turn 0 to space */
+       for (i = 0; i < 4; i++)
+       {
+               for (j = 0; p_ptr->history[i][j]; j++) /* loop */;
+
+               for (; j < 59; j++) p_ptr->history[i][j] = ' ';
+               p_ptr->history[i][59] = '\0';
+       }
+
+       /* Terminate buffer */
+       histpref_buf[0] = '\0';
+
+       return TRUE;
+}
+
 /*
  *  Character background edit-mode
  */
 static void edit_history(void)
 {
-        char old_history[4][60];
+       char old_history[4][60];
        char c;
        int y = 0, x = 0;
        int i, j;
 
-        /* Edit character background */
-        for (i = 0; i < 4; i++)
-        {
-                sprintf(old_history[i], "%s", p_ptr->history[i]);
-        }
-        /* Turn 0 to space */
+       /* Edit character background */
+       for (i = 0; i < 4; i++)
+       {
+               sprintf(old_history[i], "%s", p_ptr->history[i]);
+       }
+       /* Turn 0 to space */
        for (i = 0; i < 4; i++)
        {
                for (j = 0; p_ptr->history[i][j]; j++) /* loop */;
@@ -5137,62 +5333,64 @@ static void edit_history(void)
                for (; j < 59; j++) p_ptr->history[i][j] = ' ';
                p_ptr->history[i][59] = '\0';
        }
-        display_player(1);
+       display_player(1);
 #ifdef JP
-        c_put_str(TERM_L_GREEN, "(¥­¥ã¥é¥¯¥¿¡¼¤ÎÀ¸¤¤Î©¤Á - ÊÔ½¸¥â¡¼¥É)", 11, 20);
+       c_put_str(TERM_L_GREEN, "(¥­¥ã¥é¥¯¥¿¡¼¤ÎÀ¸¤¤Î©¤Á - ÊÔ½¸¥â¡¼¥É)", 11, 20);
+       put_str("[ 2/4/6/8¤Ç°ÜÆ°¡¢Enter¤Ç½ªÎ»¡¢Ctrl-F¤Ç¥Õ¥¡¥¤¥ëÆɤ߹þ¤ß ]", 17, 10);
 #else
-        c_put_str(TERM_L_GREEN, "(Character Background - Edit Mode)", 11, 20);
+       c_put_str(TERM_L_GREEN, "(Character Background - Edit Mode)", 11, 20);
+       put_str("[ 2/4/6/8 for Move, Enter for End, Ctrl-F for Read pref ]", 17, 10);
 #endif
 
-        while (TRUE)
-        {
-                for (i = 0; i < 4; i++)
-                {
-                        put_str(p_ptr->history[i], i + 12, 10);
-                }
+       while (TRUE)
+       {
+               for (i = 0; i < 4; i++)
+               {
+                       put_str(p_ptr->history[i], i + 12, 10);
+               }
 #ifdef JP
                if (iskanji2(p_ptr->history[y], x))
                        c_put_str(TERM_L_BLUE, format("%c%c", p_ptr->history[y][x],p_ptr->history[y][x+1]), y + 12, x + 10);
                else
 #endif
-                c_put_str(TERM_L_BLUE, format("%c", p_ptr->history[y][x]), y + 12, x + 10);
+               c_put_str(TERM_L_BLUE, format("%c", p_ptr->history[y][x]), y + 12, x + 10);
 
                /* Place cursor just after cost of current stat */
-                Term_gotoxy(x + 10, y + 12);
+               Term_gotoxy(x + 10, y + 12);
 
-                c = inkey();
+               c = inkey();
 
-                if (c == '8')
-                {
-                        y--;
-                        if (y < 0) y = 3;
+               if (c == '8')
+               {
+                       y--;
+                       if (y < 0) y = 3;
 #ifdef JP
                        if ((x > 0) && (iskanji2(p_ptr->history[y], x-1))) x--;
 #endif
-                }
-                else if (c == '2')
-                {
-                        y++;
-                        if (y > 3) y = 0;
+               }
+               else if (c == '2')
+               {
+                       y++;
+                       if (y > 3) y = 0;
 #ifdef JP
                        if ((x > 0) && (iskanji2(p_ptr->history[y], x-1))) x--;
 #endif
-                }
-                else if (c == '6')
-                {
+               }
+               else if (c == '6')
+               {
 #ifdef JP
                        if (iskanji2(p_ptr->history[y], x)) x++;
 #endif
-                        x++;
-                        if (x > 58)
+                       x++;
+                       if (x > 58)
                        {
                                x = 0;
                                if (y < 3) y++;
                        }
-                }
-                else if (c == '4')
-                {
-                        x--;
+               }
+               else if (c == '4')
+               {
+                       x--;
                        if (x < 0)
                        {
                                if (y)
@@ -5206,20 +5404,43 @@ static void edit_history(void)
 #ifdef JP
                        if ((x > 0) && (iskanji2(p_ptr->history[y], x-1))) x--;
 #endif
-                }
-                else if (c == '\r')
-                {
-                        break;
-                }
-                else if (c == ESCAPE)
-                {
-                        for (i = 0; i < 4; i++)
-                        {
-                                sprintf(p_ptr->history[i], "%s", old_history[i]);
-                                put_str(p_ptr->history[i], i + 12, 10);
-                        }
-                        break;
-                }
+               }
+               else if (c == '\r')
+               {
+                       Term_erase(0, 11, 255);
+                       Term_erase(0, 17, 255);
+#ifdef JP
+                       put_str("(¥­¥ã¥é¥¯¥¿¡¼¤ÎÀ¸¤¤Î©¤Á - ÊÔ½¸ºÑ¤ß)", 11, 20);
+#else
+                       put_str("(Character Background - Edited)", 11, 20);
+#endif
+                       break;
+               }
+               else if (c == ESCAPE)
+               {
+                       clear_from(11);
+#ifdef JP
+                       put_str("(¥­¥ã¥é¥¯¥¿¡¼¤ÎÀ¸¤¤Î©¤Á)", 11, 25);
+#else
+                       put_str("(Character Background)", 11, 25);
+#endif
+
+                       for (i = 0; i < 4; i++)
+                       {
+                               sprintf(p_ptr->history[i], "%s", old_history[i]);
+                               put_str(p_ptr->history[i], i + 12, 10);
+                       }
+                       break;
+               }
+               else if (c == KTRL('F'))
+               {
+                       if (do_cmd_histpref())
+                       {
+#ifdef JP
+                               if ((x > 0) && (iskanji2(p_ptr->history[y], x - 1))) x--;
+#endif
+                       }
+               }
                else if (c == '\010')
                {
                        x--;
@@ -5233,7 +5454,7 @@ static void edit_history(void)
                                else x = 0;
                        }
 
-                        p_ptr->history[y][x] = ' ';
+                       p_ptr->history[y][x] = ' ';
 #ifdef JP
                        if ((x > 0) && (iskanji2(p_ptr->history[y], x - 1)))
                        {
@@ -5245,9 +5466,9 @@ static void edit_history(void)
 #ifdef JP
                else if (iskanji(c) || isprint(c))
 #else
-                else if (isprint(c)) /* BUGFIX */
+               else if (isprint(c)) /* BUGFIX */
 #endif
-                {
+               {
 #ifdef JP
                        if (iskanji2(p_ptr->history[y], x))
                        {
@@ -5273,15 +5494,15 @@ static void edit_history(void)
                                c = inkey();
                        }
 #endif
-                        p_ptr->history[y][x++] = c;
+                       p_ptr->history[y][x++] = c;
                        if (x > 58)
                        {
                                x = 0;
                                y++;
                                if (y > 3) y = 0;
                        }
-                }
-        } /* while (TRUE) */
+               }
+       } /* while (TRUE) */
 
 }
 
@@ -5364,79 +5585,6 @@ static bool player_birth_aux(void)
 #endif
 
 
-       /*** Quick Start ***/
-
-       if (previous_char.quick_ok)
-       {
-               bool do_quick_start = FALSE;
-
-               /* Extra info */
-#ifdef JP
-       put_str("¥¯¥¤¥Ã¥¯¡¦¥¹¥¿¡¼¥È¤ò»È¤¦¤È°ÊÁ°¤ÈÁ´¤¯Æ±¤¸¥­¥ã¥é¥¯¥¿¡¼¤Ç»Ï¤á¤é¤ì¤Þ¤¹¡£", 11, 5);
-#else
-       put_str("Do you want to use the quick start function(same character as your last one).", 11, 2);
-#endif
-
-               /* Choose */
-               while (1)
-               {
-#ifdef JP
-                       put_str("¥¯¥¤¥Ã¥¯¡¦¥¹¥¿¡¼¥È¤ò»È¤¤¤Þ¤¹¤«¡©[y/n]", 14, 10);
-#else
-                       put_str("Use quick start? [y/n]", 14, 10);
-#endif
-                       c = inkey();
-                       if (c == 'Q') quit(NULL);
-                       else if (c == 'S') return (FALSE);
-                       else if ((c == 'y') || (c == 'Y'))
-                       {
-                               do_quick_start = TRUE;
-                               break;
-                       }
-                       else
-                       {
-                               do_quick_start = FALSE;
-                               break;
-                       }
-               }
-
-               if (do_quick_start)
-               {
-                       load_prev_data(FALSE);
-                       init_dungeon_quests(previous_char.quests);
-                       init_turn();
-
-                       sp_ptr = &sex_info[p_ptr->psex];
-                       rp_ptr = &race_info[p_ptr->prace];
-                       cp_ptr = &class_info[p_ptr->pclass];
-                       ap_ptr = &seikaku_info[p_ptr->pseikaku];
-
-                       /* Calc hitdie, but don't roll */
-                       get_extra(FALSE);
-
-                       /* Calculate the bonuses and hitpoints */
-                       p_ptr->update |= (PU_BONUS | PU_HP);
-
-                       /* Update stuff */
-                       update_stuff();
-
-                       /* Fully healed */
-                       p_ptr->chp = p_ptr->mhp;
-
-                       /* Fully rested */
-                       p_ptr->csp = p_ptr->msp;
-
-                       /* Process the player name */
-                       process_player_name(FALSE);
-
-                       return TRUE;
-               }
-
-               /* Clean up */
-               clear_from(10);
-       }
-
-
        /*** Player sex ***/
 
        /* Extra info */
@@ -5570,17 +5718,17 @@ static bool player_birth_aux(void)
        p_ptr->prace = 0;
        while(1)
        {
-               char temp[80*9];
+               char temp[80*10];
                cptr t;
 
                if (!get_player_race()) return FALSE;
 
                clear_from(10);
 
-               roff_to_buf(race_jouhou[p_ptr->prace], 74, temp);
+               roff_to_buf(race_jouhou[p_ptr->prace], 74, temp, sizeof(temp));
                t = temp;
 
-               for (i = 0; i< 9; i++)
+               for (i = 0; i< 10; i++)
                {
                        if(t[0] == 0)
                                break; 
@@ -5591,9 +5739,9 @@ static bool player_birth_aux(void)
                        }
                }
 #ifdef JP
-               if (get_check("¤è¤í¤·¤¤¤Ç¤¹¤«¡©")) break;
+               if (get_check_strict("¤è¤í¤·¤¤¤Ç¤¹¤«¡©", CHECK_DEFAULT_Y)) break;
 #else
-               if (get_check("Are you sure? ")) break;
+               if (get_check_strict("Are you sure? ", CHECK_DEFAULT_Y)) break;
 #endif
                clear_from(10);
                c_put_str(TERM_WHITE, "              ", 4, 15);
@@ -5612,7 +5760,7 @@ static bool player_birth_aux(void)
                if (!get_player_class()) return FALSE;
 
                clear_from(10);
-               roff_to_buf(class_jouhou[p_ptr->pclass], 74, temp);
+               roff_to_buf(class_jouhou[p_ptr->pclass], 74, temp, sizeof(temp));
                t = temp;
 
                for (i = 0; i< 9; i++)
@@ -5627,9 +5775,9 @@ static bool player_birth_aux(void)
                }
 
 #ifdef JP
-               if (get_check("¤è¤í¤·¤¤¤Ç¤¹¤«¡©")) break;
+               if (get_check_strict("¤è¤í¤·¤¤¤Ç¤¹¤«¡©", CHECK_DEFAULT_Y)) break;
 #else
-               if (get_check("Are you sure? ")) break;
+               if (get_check_strict("Are you sure? ", CHECK_DEFAULT_Y)) break;
 #endif
                c_put_str(TERM_WHITE, "              ", 5, 15);
        }
@@ -5647,7 +5795,7 @@ static bool player_birth_aux(void)
                if (!get_player_seikaku()) return FALSE;
 
                clear_from(10);
-               roff_to_buf(seikaku_jouhou[p_ptr->pseikaku], 74, temp);
+               roff_to_buf(seikaku_jouhou[p_ptr->pseikaku], 74, temp, sizeof(temp));
                t = temp;
 
                for (i = 0; i< 6; i++)
@@ -5661,9 +5809,9 @@ static bool player_birth_aux(void)
                        }
                }
 #ifdef JP
-               if (get_check("¤è¤í¤·¤¤¤Ç¤¹¤«¡©")) break;
+               if (get_check_strict("¤è¤í¤·¤¤¤Ç¤¹¤«¡©", CHECK_DEFAULT_Y)) break;
 #else
-               if (get_check("Are you sure? ")) break;
+               if (get_check_strict("Are you sure? ", CHECK_DEFAULT_Y)) break;
 #endif
                c_put_str(TERM_L_BLUE, player_name, 1, 34);
                prt("", 1, 34+strlen(player_name));
@@ -5758,9 +5906,18 @@ static bool player_birth_aux(void)
                        /* Check for random number of quests */
                        if (inp[0] == '*')
                        {
-                               /* 0 to 49 random quests */
+                               /* 0 to 10 random quests */
                                number_of_quests = randint0(11);
                        }
+                       else if (inp[0] == '?')
+                       {
+#ifdef JP                 
+                               show_help("jbirth.txt#RandomQuests");
+#else
+                               show_help("birth.txt#RandomQuests");
+#endif
+                               continue;
+                       }
                        else
                        {
                                number_of_quests = atoi(inp);
@@ -5775,8 +5932,6 @@ static bool player_birth_aux(void)
        /* Clear */
        clear_from(10);
 
-       init_dungeon_quests(number_of_quests);
-
        /* Reset turn; before auto-roll and after choosing race */
        init_turn();
 
@@ -5861,7 +6016,7 @@ static bool player_birth_aux(void)
                                j = rp_ptr->r_adj[i] + cp_ptr->c_adj[i] + ap_ptr->a_adj[i];
 
                                /* Obtain the current stat */
-                               m = adjust_stat(stat_limit[i], j, TRUE);
+                               m = adjust_stat(stat_limit[i], j);
 
                                /* Put the stat */
                                cnv_stat(m, buf);
@@ -5960,7 +6115,7 @@ static bool player_birth_aux(void)
                                        /* Roll for age/height/weight */
                                        get_ahw();
 
-                                       /* Roll for social class */
+                                       /* Roll for social class */
                                        get_history();
 
                                        break;
@@ -6073,7 +6228,11 @@ static bool player_birth_aux(void)
                        /* Help */
                        if (c == '?')
                        {
-                               do_cmd_help();
+#ifdef JP                 
+                               show_help("jbirth.txt#AutoRoller");
+#else
+                               show_help("birth.txt#AutoRoller");
+#endif
                                continue;
                        }
                        else if (c == '=')
@@ -6142,17 +6301,107 @@ static bool player_birth_aux(void)
        /* Start over */
        if (c == 'S') return (FALSE);
 
+       init_dungeon_quests(number_of_quests);
+
        /* Save character data for quick start */
        save_prev_data(&previous_char);
        previous_char.quests = number_of_quests;
        previous_char.quick_ok = TRUE;
 
+       /* Process the player name */
+       process_player_name(FALSE);
+
        /* Accept */
        return (TRUE);
 }
 
 
 /*
+ * Ask whether the player use Quick Start or not.
+ */
+static bool ask_quick_start(void)
+{
+       /* Doesn't have previous data */
+       if (!previous_char.quick_ok) return FALSE;
+
+
+       /* Clear screen */
+       Term_clear();
+
+       /* Extra info */
+#ifdef JP
+       put_str("¥¯¥¤¥Ã¥¯¡¦¥¹¥¿¡¼¥È¤ò»È¤¦¤È°ÊÁ°¤ÈÁ´¤¯Æ±¤¸¥­¥ã¥é¥¯¥¿¡¼¤Ç»Ï¤á¤é¤ì¤Þ¤¹¡£", 11, 5);
+#else
+       put_str("Do you want to use the quick start function(same character as your last one).", 11, 2);
+#endif
+
+       /* Choose */
+       while (1)
+       {
+               char c;
+
+#ifdef JP
+               put_str("¥¯¥¤¥Ã¥¯¡¦¥¹¥¿¡¼¥È¤ò»È¤¤¤Þ¤¹¤«¡©[y/N]", 14, 10);
+#else
+               put_str("Use quick start? [y/N]", 14, 10);
+#endif
+               c = inkey();
+
+               if (c == 'Q') quit(NULL);
+               else if (c == 'S') return (FALSE);
+               else if (c == '?')
+               {
+#ifdef JP                 
+                       show_help("jbirth.txt#QuickStart");
+#else
+                       show_help("birth.txt#QuickStart");
+#endif
+               }
+               else if ((c == 'y') || (c == 'Y'))
+               {
+                       /* Yes */
+                       break;
+               }
+               else
+               {
+                       /* No */
+                       return FALSE;
+               }
+       }
+
+       load_prev_data(FALSE);
+       init_dungeon_quests(previous_char.quests);
+       init_turn();
+
+       sp_ptr = &sex_info[p_ptr->psex];
+       rp_ptr = &race_info[p_ptr->prace];
+       cp_ptr = &class_info[p_ptr->pclass];
+       mp_ptr = &m_info[p_ptr->pclass];
+       ap_ptr = &seikaku_info[p_ptr->pseikaku];
+
+       /* Calc hitdie, but don't roll */
+       get_extra(FALSE);
+
+       /* Calculate the bonuses and hitpoints */
+       p_ptr->update |= (PU_BONUS | PU_HP);
+
+       /* Update stuff */
+       update_stuff();
+
+       /* Fully healed */
+       p_ptr->chp = p_ptr->mhp;
+
+       /* Fully rested */
+       p_ptr->csp = p_ptr->msp;
+
+       /* Process the player name */
+       process_player_name(FALSE);
+
+       return TRUE;
+}
+
+
+/*
  * Create a new character.
  *
  * Note that we may be called with "junk" leftover in the various
@@ -6163,7 +6412,13 @@ void player_birth(void)
        int i, j;
        char buf[80];
 
-        playtime = 0;
+       playtime = 0;
+
+       /*
+        * Paranoia - wipe the pets
+        * For accuracy of precalc_cur_num_of_pet() called from wipe_m_list()
+        */
+       C_WIPE(party_mon, MAX_PARTY_MON, monster_type);
 
        /* 
         * Wipe monsters in old dungeon
@@ -6171,14 +6426,23 @@ void player_birth(void)
         */
        wipe_m_list();
 
+       /* Wipe the player */
+       player_wipe();
+
        /* Create a new character */
-       while (1)
+
+       /* Quick start? */
+       if (!ask_quick_start())
        {
-               /* Wipe the player */
-               player_wipe();
+               /* No, normal start */
+               while (1)
+               {
+                       /* Roll up a new character */
+                       if (player_birth_aux()) break;
 
-               /* Roll up a new character */
-               if (player_birth_aux()) break;
+                       /* Wipe the player */
+                       player_wipe();
+               }
        }
 
        /* Note player birth in the message recall */
@@ -6262,13 +6526,13 @@ void player_birth(void)
 
 void dump_yourself(FILE *fff)
 {
-       char temp[80*8];
+       char temp[80*10];
        int i;
        cptr t;
 
        if (!fff) return;
 
-       roff_to_buf(race_jouhou[p_ptr->prace], 78, temp);
+       roff_to_buf(race_jouhou[p_ptr->prace], 78, temp, sizeof(temp));
        fprintf(fff, "\n\n");
 #ifdef JP
        fprintf(fff, "¼ï²: %s\n", race_info[p_ptr->prace].title);
@@ -6276,14 +6540,14 @@ void dump_yourself(FILE *fff)
        fprintf(fff, "Race: %s\n", race_info[p_ptr->prace].title);
 #endif
        t = temp;
-       for (i = 0; i < 8; i++)
+       for (i = 0; i < 10; i++)
        {
                if(t[0] == 0)
                        break; 
                fprintf(fff, "%s\n",t);
                t += strlen(t) + 1;
        }
-       roff_to_buf(class_jouhou[p_ptr->pclass], 78, temp);
+       roff_to_buf(class_jouhou[p_ptr->pclass], 78, temp, sizeof(temp));
        fprintf(fff, "\n");
 #ifdef JP
        fprintf(fff, "¿¦¶È: %s\n", class_info[p_ptr->pclass].title);
@@ -6291,14 +6555,14 @@ void dump_yourself(FILE *fff)
        fprintf(fff, "Class: %s\n", class_info[p_ptr->pclass].title);
 #endif
        t = temp;
-       for (i = 0; i < 8; i++)
+       for (i = 0; i < 10; i++)
        {
                if(t[0] == 0)
                        break; 
                fprintf(fff, "%s\n",t);
                t += strlen(t) + 1;
        }
-       roff_to_buf(seikaku_jouhou[p_ptr->pseikaku], 78, temp);
+       roff_to_buf(seikaku_jouhou[p_ptr->pseikaku], 78, temp, sizeof(temp));
        fprintf(fff, "\n");
 #ifdef JP
        fprintf(fff, "À­³Ê: %s\n", seikaku_info[p_ptr->pseikaku].title);
@@ -6316,7 +6580,7 @@ void dump_yourself(FILE *fff)
        fprintf(fff, "\n");
        if (p_ptr->realm1)
        {
-               roff_to_buf(realm_jouhou[technic2magic(p_ptr->realm1)-1], 78, temp);
+               roff_to_buf(realm_jouhou[technic2magic(p_ptr->realm1)-1], 78, temp, sizeof(temp));
 #ifdef JP
                fprintf(fff, "ËâË¡: %s\n", realm_names[p_ptr->realm1]);
 #else
@@ -6334,7 +6598,7 @@ void dump_yourself(FILE *fff)
        fprintf(fff, "\n");
        if (p_ptr->realm2)
        {
-               roff_to_buf(realm_jouhou[technic2magic(p_ptr->realm2)-1], 78, temp);
+               roff_to_buf(realm_jouhou[technic2magic(p_ptr->realm2)-1], 78, temp, sizeof(temp));
 #ifdef JP
                fprintf(fff, "ËâË¡: %s\n", realm_names[p_ptr->realm2]);
 #else