OSDN Git Service

使われなくなった関数do_cmd_pray()を削除.
[hengband/hengband.git] / src / birth.c
index a3829f9..8dde0a1 100644 (file)
@@ -1353,7 +1353,7 @@ static hist_type bg[] =
        {"¤¢¤Ê¤¿¤Ï°­¤òÌǤܤ¹¤¿¤á¤Ë¤³¤ÎÃϤËÁ÷¤é¤ì¤Æ¤­¤Þ¤·¤¿¡£", 100, 143, 144, 80},
        {"¤³¤ÎÌÜŪ¤òÀ®¤·¿ë¤²¤ë¤Þ¤Ç¤ÏµÙ¤à¤³¤È¤Ïµö¤µ¤ì¤Þ¤»¤ó¡£", 100, 144, 0, 80},
 #else
-       {"You are of the blessed host of heaven.", 100, 142, 143, 80},
+       {"You are of the blessed host of heaven.  ", 100, 142, 143, 80},
        {"You have been sent to earth to eradicate the wicked, ", 100, 143, 144, 80},
        {"and shall not rest until you have succeeded.", 100, 144, 0, 80},
 #endif
@@ -1619,7 +1619,7 @@ static cptr race_jouhou[MAX_RACES] =
   
 "¥¨¥ë¥Õ¤Ï¿Í´Ö¤è¤êÎɤ¤ËâË¡»È¤¤¤Ë¤Ê¤ì¤Þ¤¹¤¬¡¢ÀïÆ®¤Ï¶ì¼ê¤Ç¤¹¡£Èà¤é¤Ï¿Í´Ö¤ä¥Ï¡¼¥Õ¥¨¥ë¥Õ¤è¤ê¤âƬ¤¬Îɤ¯¡¢¹â¤¤¸­¤µ¤ò»ý¤Ã¤Æ¤¤¤Þ¤¹¡£¥¨¥ë¥Õ¤Ïõº÷, ²ò½ü, ÃγÐ, ±£Ì©¹ÔÆ°, ¼Í·â, ¤½¤·¤ÆËâË¡Æ»¶ñ»ÈÍѤÇÍ¥¤ì¤Æ¤¤¤Þ¤¹¤¬¡¢Éð´ï¤Î°·¤¤¤ÏÆÀ°Õ¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£Èà¤é¤ÏÀ¸¤Þ¤ì¤Ä¤­¸÷¤ËÂФ¹¤ëÂÑÀ­¤ò»ý¤Ã¤Æ¤¤¤Þ¤¹¡£",
   
-"¥Û¥Ó¥Ã¥È¡¢¤Þ¤¿¤Ï¥Ï¡¼¥Õ¥ê¥ó¥°¤ÏµÝ¤äÅêÚ³¤ËŤ±¡¢ËâË¡Ëɸæ¤âÍ¥¤ì¤Æ¤¤¤Þ¤¹¡£¤Þ¤¿¡¢Ãµº÷, ²ò½ü, ÃγÐ, ¤½¤·¤Æ±£Ì©¹ÔÆ°¤Ç¤â¤È¤Æ¤âÎɤ¤Ç½ÎϤò¼¨¤·¤Þ¤¹¡£¤½¤Î¤¿¤á¡¢Èà¤é¤ÏÍ¥¤ì¤¿Åð±¤È¤Ê¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡Ê¤·¤«¤·¡¢¡ÖǦ¤Ó¤Î¼Ô¡×¤È¸Æ¤Ð¤ì¤ë¤³¤È¤ò¹¥¤ß¤Þ¤¹¡Ë¡£¥Û¥Ó¥Ã¥È¤Ï¿Í´Ö¤è¤êÍÚ¤«¤ËÉϼå¤Ç¡¢Àï»Î¤È¤·¤Æ¤Ï¤Æ¤ó¤Ç¥À¥á¤Ç¤¹¡£Èà¤é¤Ï¤«¤Ê¤êÎɤ¤ÀÖ³°Àþ»ëÎϤò»ý¤Ã¤Æ¤ª¤ê¡¢²¹·ìưʪ¤òÎ¥¤ì¤¿¾ì½ê¤«¤é¸«¤Ä¤±¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¥Û¥Ó¥Ã¥È¤Ï´ïÍѤµ¤ò²¼¤²¤é¤ì¤ë¤³¤È¤¬¤¢¤ê¤Þ¤»¤ó¡£",
+"¥Û¥Ó¥Ã¥È¡¢¤Þ¤¿¤Ï¥Ï¡¼¥Õ¥ê¥ó¥°¤ÏµÝ¤äÅêÚ³¤ËŤ±¡¢ËâË¡Ëɸæ¤âÍ¥¤ì¤Æ¤¤¤Þ¤¹¡£¤Þ¤¿¡¢Ãµº÷, ²ò½ü, ÃγÐ, ¤½¤·¤Æ±£Ì©¹ÔÆ°¤Ç¤â¤È¤Æ¤âÎɤ¤Ç½ÎϤò¼¨¤·¤Þ¤¹¡£¤½¤Î¤¿¤á¡¢Èà¤é¤ÏÍ¥¤ì¤¿Åð±¤È¤Ê¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡Ê¤·¤«¤·¡¢¡ÖǦ¤Ó¤Î¼Ô¡×¤È¸Æ¤Ð¤ì¤ë¤³¤È¤ò¹¥¤ß¤Þ¤¹¡Ë¡£¥Û¥Ó¥Ã¥È¤Ï¿Í´Ö¤è¤êÍÚ¤«¤ËÉϼå¤Ç¡¢Àï»Î¤È¤·¤Æ¤Ï¤Æ¤ó¤Ç¥À¥á¤Ç¤¹¡£Èà¤é¤Ï¤«¤Ê¤êÎɤ¤ÀÖ³°Àþ»ëÎϤò»ý¤Ã¤Æ¤ª¤ê¡¢²¹·ìưʪ¤òÎ¥¤ì¤¿¾ì½ê¤«¤é¸«¤Ä¤±¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£Èà¤é¤ÏÀ¸Ì¿ÎϤòÊÝ»ý¤¹¤ëÎϤ¬¶¯¤¯¡¢À¸Ì¿Îϵۼý¹¶·â¤ËÂФ·¤ÆÂÑÀ­¤ò»ý¤Ã¤Æ¤¤¤Þ¤¹¡£",
   
 "¥Î¡¼¥à¤Ï¥É¥ï¡¼¥Õ¤è¤ê¾®¤µ¤¤¤Ç¤¹¤¬¡¢¥Û¥Ó¥Ã¥È¤è¤ê¤ÏÂ礭¤¤¼ï²¤Ç¤¹¡£Èà¤é¤Ï¥Û¥Ó¥Ã¥ÈƱÍÍÃÏɽ¤Îƶ·ê¤Î¤è¤¦¤Ê²È¤Ë½»¤ó¤Ç¤¤¤Þ¤¹¡£¥Î¡¼¥à¤Ï¤È¤Æ¤âÎɤ¤ËâË¡Ëɸæ¤ò»ý¤Á¡¢Ãµº÷, ²ò½ü, ÃγÐ, ±£Ì©¹ÔÆ°¤Ç¤âÍ¥¤ì¤Æ¤¤¤Þ¤¹¡£Èà¤é¤Ï¿Í´Ö¤è¤êÄ㤤ÏÓÎϤò»ý¤Á¡¢Éð´ï¤ò»ý¤Ã¤Æ¤ÎÀïÆ®¤Ï¶ì¼ê¤Ç¤¹¡£¥Î¡¼¥à¤Ï¤«¤Ê¤êÎɤ¤ÀÖ³°Àþ»ëÎϤò»ý¤Ã¤Æ¤ª¤ê¡¢²¹·ìưʪ¤òÎ¥¤ì¤¿¾ì½ê¤«¤é¸«¤Ä¤±¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¥Î¡¼¥à¤ÏÀ¸¤Þ¤ì¤Ä¤­Ëãáã¤ËÂФ¹¤ëÂÑÀ­¤ò»ý¤Ã¤Æ¤¤¤Þ¤¹¡£",
   
@@ -1695,7 +1695,7 @@ static cptr race_jouhou[MAX_RACES] =
 
 "Elves are better magicians then humans, but not as good at fighting.  They tend to be smarter and faster than either humans or half-elves and also have better wisdom.  Elves are better at searching, disarming, perception, stealth, bows, and magic, but they are not as good at hand weapons.  They resist light effects intrinsically.",
 
-"Hobbits, or Halflings, are very good at bows, throwing, and have good saving throws.  They also are very good at searching, disarming, perception, and stealth; so they make excellent rogues, but prefer to be called burglars.  They are much weaker than humans, and no good at melee fighting.  Halflings have fair infravision, so they can detect warm creatures at a distance.  They have their dexterity sustained.",
+"Hobbits, or Halflings, are very good at bows, throwing, and have good saving throws.  They also are very good at searching, disarming, perception, and stealth; so they make excellent rogues, but prefer to be called burglars.  They are much weaker than humans, and no good at melee fighting.  Halflings have fair infravision, so they can detect warm creatures at a distance.  They have a strong hold on their life force, and are thus intrinsically resistant to life draining.",
 
 "Gnomes are smaller than dwarves but larger than Halflings.  They, like the hobbits, live in the earth in burrow-like homes.  Gnomes make excellent mages, and have very good saving throws.  They are good at searching, disarming, perception, and stealth.  They have lower strength than humans so they are not very good at fighting with hand weapons.  Gnomes have fair infra-vision, so they can detect warm-blooded creatures at a distance.  Gnomes are intrinsically protected against paralysis.",
 
@@ -2124,7 +2124,7 @@ static byte choose_realm(s32b choices, int *count)
        if (choices & CH_ENCHANT)
        {
                (*count)++;
-               auto_select = REALM_ENCHANT;
+               auto_select = REALM_CRAFT;
        }
        if (choices & CH_DAEMON)
        {
@@ -2346,7 +2346,7 @@ static bool get_player_realms(void)
        p_ptr->realm2 = 255;
        while (1)
        {
-               char temp[80*8];
+               char temp[80*10];
                cptr t;
                count = 0;
                p_ptr->realm1 = choose_realm(realm_choices1[p_ptr->pclass], &count);
@@ -2362,7 +2362,7 @@ static bool get_player_realms(void)
 
                roff_to_buf(realm_jouhou[technic2magic(p_ptr->realm1)-1], 74, temp, sizeof(temp));
                t = temp;
-               for (i = 0; i< 6; i++)
+               for (i = 0; i < 10; i++)
                {
                        if(t[0] == 0)
                                break; 
@@ -3176,6 +3176,24 @@ static void birth_put_stats(void)
 }
 
 
+static void k_info_reset(void)
+{
+       int i;
+
+       /* Reset the "objects" */
+       for (i = 1; i < max_k_idx; i++)
+       {
+               object_kind *k_ptr = &k_info[i];
+
+               /* Reset "tried" */
+               k_ptr->tried = FALSE;
+
+               /* Reset "aware" */
+               k_ptr->aware = FALSE;
+       }
+}
+
+
 /*
  * Clear all the global "character" data
  */
@@ -3249,8 +3267,11 @@ static void player_wipe(void)
                /* Hack -- Non-unique Nazguls are semi-unique */
                else if (r_ptr->flags7 & RF7_NAZGUL) r_ptr->max_num = MAX_NAZGUL_NUM;
 
-               /* Clear player kills */
+               /* Clear visible kills in this life */
                r_ptr->r_pkills = 0;
+
+               /* Clear all kills in this life */
+               r_ptr->r_akills = 0;
        }
 
 
@@ -3338,12 +3359,6 @@ static void player_wipe(void)
        p_ptr->mane_num = 0;
        p_ptr->exit_bldg = TRUE; /* only used for arena now -KMW- */
 
-       /* Reset rewards */
-       for (i = 0; i < MAX_BACT; i++)
-       {
-               p_ptr->rewards[i] = 0;
-       }
-
        /* Bounty */
        p_ptr->today_mon = 0;
 
@@ -3443,10 +3458,10 @@ void determine_random_questor(quest_type *q_ptr)
 /*
  *  Initialize random quests and final quests
  */
-static void init_dungeon_quests(int number_of_quests)
+static void init_dungeon_quests(void)
 {
+       int number_of_quests = MAX_RANDOM_QUEST - MIN_RANDOM_QUEST + 1;
        int i;
-       monster_race    *r_ptr;
 
        /* Init the random quests */
        init_flags = INIT_ASSIGN;
@@ -3456,13 +3471,6 @@ static void init_dungeon_quests(int number_of_quests)
 
        p_ptr->inside_quest = 0;
 
-       /* Remove QUESTOR flag */
-       for (i = 1; i < max_r_idx; i++)
-       {
-               r_ptr = &r_info[i];
-               if (r_ptr->flags1 & RF1_QUESTOR) r_ptr->flags1 &= ~RF1_QUESTOR;
-       }
-
        /* Generate quests */
        for (i = MIN_RANDOM_QUEST + number_of_quests - 1; i >= MIN_RANDOM_QUEST; i--)
        {
@@ -3642,7 +3650,7 @@ static byte player_init[MAX_CLASS][3][2] =
        },
 
        {
-               /* Harper */
+               /* Bard */
                { TV_MUSIC_BOOK, 0 },
                { TV_SOFT_ARMOR, SV_SOFT_LEATHER_ARMOR},
                { TV_SWORD, SV_SHORT_SWORD },
@@ -3677,7 +3685,7 @@ static byte player_init[MAX_CLASS][3][2] =
        },
 
        {
-               /* Kihei */
+               /* Cavalry */
                { TV_BOW, SV_SHORT_BOW },
                { TV_SOFT_ARMOR, SV_LEATHER_SCALE_MAIL},
                { TV_POLEARM, SV_BROAD_SPEAR}
@@ -3691,7 +3699,7 @@ static byte player_init[MAX_CLASS][3][2] =
        },
 
        {
-               /* Kaji */
+               /* Weaponsmith */
                { TV_RING, SV_RING_RES_FEAR }, /* Warriors need it! */
                { TV_HARD_ARMOR, SV_CHAIN_MAIL },
                { TV_POLEARM, SV_BROAD_AXE }
@@ -3720,13 +3728,29 @@ static bool monster_hook_human(int r_idx)
 
        if (r_ptr->flags1 & (RF1_UNIQUE)) return FALSE;
 
-       if (strchr("pht", r_ptr->d_char)) return TRUE;
+       if (my_strchr("pht", r_ptr->d_char)) return TRUE;
 
        return FALSE;
 }
 
 
 /*
+ * Add an outfit object
+ */
+static void add_outfit(object_type *o_ptr)
+{
+       s16b slot;
+
+       object_aware(o_ptr);
+       object_known(o_ptr);
+       slot = inven_carry(o_ptr);
+
+       /* Auto-inscription */
+       autopick_alter_item(slot, FALSE);
+}
+
+
+/*
  * Init players with some belongings
  *
  * Having an item makes the player "aware" of its purpose.
@@ -3761,7 +3785,7 @@ void player_outfit(void)
                        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);
+                       add_outfit(q_ptr);
                }
                break;
 
@@ -3770,9 +3794,7 @@ void player_outfit(void)
                /* 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);
+               add_outfit(q_ptr);
                break;
 #endif
        case RACE_SKELETON:
@@ -3782,19 +3804,15 @@ void player_outfit(void)
                /* 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);
+               add_outfit(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);
+               add_outfit(q_ptr);
 
                break;
 
@@ -3806,9 +3824,7 @@ void player_outfit(void)
                apply_magic(q_ptr, 1, AM_NO_FIXED_ART);
 
                q_ptr->number = (byte)rand_range(7, 12);
-               object_aware(q_ptr);
-               object_known(q_ptr);
-               (void)inven_carry(q_ptr);
+               add_outfit(q_ptr);
 
                break;
 
@@ -3816,10 +3832,8 @@ void player_outfit(void)
                /* 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);
+               add_outfit(q_ptr);
        }
 
        /* Get local object */
@@ -3832,10 +3846,7 @@ void player_outfit(void)
 
                q_ptr->number = (byte)rand_range(2, 5);
 
-               object_aware(q_ptr);
-               object_known(q_ptr);
-
-               (void)inven_carry(q_ptr);
+               add_outfit(q_ptr);
        }
        else if (p_ptr->pclass != CLASS_NINJA)
        {
@@ -3843,10 +3854,8 @@ void player_outfit(void)
                object_prep(q_ptr, lookup_kind(TV_LITE, SV_LITE_TORCH));
                q_ptr->number = (byte)rand_range(3, 7);
                q_ptr->xtra4 = rand_range(3, 7) * 500;
-               object_aware(q_ptr);
-               object_known(q_ptr);
 
-               (void)inven_carry(q_ptr);
+               add_outfit(q_ptr);
        }
 
        /* Get local object */
@@ -3858,20 +3867,14 @@ void player_outfit(void)
                object_prep(q_ptr, lookup_kind(TV_ARROW, SV_AMMO_NORMAL));
                q_ptr->number = (byte)rand_range(15, 20);
 
-               object_aware(q_ptr);
-               object_known(q_ptr);
-
-               (void)inven_carry(q_ptr);
+               add_outfit(q_ptr);
        }
        if (p_ptr->pclass == CLASS_RANGER)
        {
                /* Hack -- Give the player some arrows */
                object_prep(q_ptr, lookup_kind(TV_BOW, SV_SHORT_BOW));
 
-               object_aware(q_ptr);
-               object_known(q_ptr);
-
-               (void)inven_carry(q_ptr);
+               add_outfit(q_ptr);
        }
        else if (p_ptr->pclass == CLASS_ARCHER)
        {
@@ -3879,10 +3882,7 @@ void player_outfit(void)
                object_prep(q_ptr, lookup_kind(TV_ARROW, SV_AMMO_NORMAL));
                q_ptr->number = (byte)rand_range(15, 20);
 
-               object_aware(q_ptr);
-               object_known(q_ptr);
-
-               (void)inven_carry(q_ptr);
+               add_outfit(q_ptr);
        }
        else if (p_ptr->pclass == CLASS_HIGH_MAGE)
        {
@@ -3891,10 +3891,7 @@ void player_outfit(void)
                q_ptr->number = 1;
                q_ptr->pval = (byte)rand_range(25, 30);
 
-               object_aware(q_ptr);
-               object_known(q_ptr);
-
-               (void)inven_carry(q_ptr);
+               add_outfit(q_ptr);
        }
        else if (p_ptr->pclass == CLASS_SORCERER)
        {
@@ -3904,10 +3901,7 @@ void player_outfit(void)
                        object_prep(q_ptr, lookup_kind(i, 0));
                        q_ptr->number = 1;
 
-                       object_aware(q_ptr);
-                       object_known(q_ptr);
-
-                       (void)inven_carry(q_ptr);
+                       add_outfit(q_ptr);
                }
        }
        else if (p_ptr->pclass == CLASS_TOURIST)
@@ -3918,51 +3912,33 @@ void player_outfit(void)
                        object_prep(q_ptr, lookup_kind(TV_SHOT, SV_AMMO_LIGHT));
                        q_ptr->number = (byte)rand_range(15, 20);
 
-                       object_aware(q_ptr);
-                       object_known(q_ptr);
-
-                       (void)inven_carry(q_ptr);
+                       add_outfit(q_ptr);
                }
 
                object_prep(q_ptr, lookup_kind(TV_FOOD, SV_FOOD_BISCUIT));
                q_ptr->number = (byte)rand_range(2, 4);
 
-               object_aware(q_ptr);
-               object_known(q_ptr);
-
-               (void)inven_carry(q_ptr);
+               add_outfit(q_ptr);
 
                object_prep(q_ptr, lookup_kind(TV_FOOD, SV_FOOD_WAYBREAD));
                q_ptr->number = (byte)rand_range(2, 4);
 
-               object_aware(q_ptr);
-               object_known(q_ptr);
-
-               (void)inven_carry(q_ptr);
+               add_outfit(q_ptr);
 
                object_prep(q_ptr, lookup_kind(TV_FOOD, SV_FOOD_JERKY));
                q_ptr->number = (byte)rand_range(1, 3);
 
-               object_aware(q_ptr);
-               object_known(q_ptr);
-
-               (void)inven_carry(q_ptr);
+               add_outfit(q_ptr);
 
                object_prep(q_ptr, lookup_kind(TV_FOOD, SV_FOOD_PINT_OF_ALE));
                q_ptr->number = (byte)rand_range(2, 4);
 
-               object_aware(q_ptr);
-               object_known(q_ptr);
-
-               (void)inven_carry(q_ptr);
+               add_outfit(q_ptr);
 
                object_prep(q_ptr, lookup_kind(TV_FOOD, SV_FOOD_PINT_OF_WINE));
                q_ptr->number = (byte)rand_range(2, 4);
 
-               object_aware(q_ptr);
-               object_known(q_ptr);
-
-               (void)inven_carry(q_ptr);
+               add_outfit(q_ptr);
        }
        else if (p_ptr->pclass == CLASS_NINJA)
        {
@@ -3970,10 +3946,7 @@ void player_outfit(void)
                object_prep(q_ptr, lookup_kind(TV_SPIKE, 0));
                q_ptr->number = (byte)rand_range(15, 20);
 
-               object_aware(q_ptr);
-               object_known(q_ptr);
-
-               (void)inven_carry(q_ptr);
+               add_outfit(q_ptr);
        }
 
        if(p_ptr->pseikaku == SEIKAKU_SEXY)
@@ -4019,10 +3992,7 @@ void player_outfit(void)
                        q_ptr->name2 = EGO_BRAND_POIS;
                }
 
-               object_aware(q_ptr);
-               object_known(q_ptr);
-
-               (void)inven_carry(q_ptr);
+               add_outfit(q_ptr);
        }
 
        /* Hack -- make aware of the water */
@@ -4209,10 +4179,9 @@ static bool get_player_race(void)
        p_ptr->prace = k;
 
        rp_ptr = &race_info[p_ptr->prace];
-       str = rp_ptr->title;
 
        /* Display */
-       c_put_str(TERM_L_BLUE, str, 4, 15);
+       c_put_str(TERM_L_BLUE, rp_ptr->title, 4, 15);
 
        /* Success */
        return TRUE;
@@ -4425,15 +4394,10 @@ static bool get_player_class(void)
        p_ptr->pclass = k;
        cp_ptr = &class_info[p_ptr->pclass];
        mp_ptr = &m_info[p_ptr->pclass];
-       str = cp_ptr->title;
 
 
        /* Display */
-#ifdef JP
-       c_put_str(TERM_L_BLUE, str, 5, 15);
-#else
        c_put_str(TERM_L_BLUE, cp_ptr->title, 5, 15);
-#endif
 
        return TRUE;
 }
@@ -5412,13 +5376,13 @@ static void edit_history(void)
                Term_gotoxy(x + 10, y + 12);
 
                /* Get special key code */
-               skey = inkey_special();
+               skey = inkey_special(TRUE);
 
                /* Get a character code */
                if (!(skey & SKEY_MASK)) c = (char)skey;
                else c = 0;
 
-               if (skey == SKEY_UP)
+               if (skey == SKEY_UP || c == KTRL('p'))
                {
                        y--;
                        if (y < 0) y = 3;
@@ -5426,7 +5390,7 @@ static void edit_history(void)
                        if ((x > 0) && (iskanji2(p_ptr->history[y], x-1))) x--;
 #endif
                }
-               else if (skey == SKEY_DOWN)
+               else if (skey == SKEY_DOWN || c == KTRL('n'))
                {
                        y++;
                        if (y > 3) y = 0;
@@ -5434,7 +5398,7 @@ static void edit_history(void)
                        if ((x > 0) && (iskanji2(p_ptr->history[y], x-1))) x--;
 #endif
                }
-               else if (skey == SKEY_RIGHT)
+               else if (skey == SKEY_RIGHT || c == KTRL('f'))
                {
 #ifdef JP
                        if (iskanji2(p_ptr->history[y], x)) x++;
@@ -5446,7 +5410,7 @@ static void edit_history(void)
                                if (y < 3) y++;
                        }
                }
-               else if (skey == SKEY_LEFT)
+               else if (skey == SKEY_LEFT || c == KTRL('b'))
                {
                        x--;
                        if (x < 0)
@@ -5463,7 +5427,7 @@ static void edit_history(void)
                        if ((x > 0) && (iskanji2(p_ptr->history[y], x-1))) x--;
 #endif
                }
-               else if (c == '\r')
+               else if (c == '\r' || c == '\n')
                {
                        Term_erase(0, 11, 255);
                        Term_erase(0, 17, 255);
@@ -5575,7 +5539,6 @@ static void edit_history(void)
 static bool player_birth_aux(void)
 {
        int i, k, n, cs, os;
-       int number_of_quests;
 
        int mode = 0;
 
@@ -5595,7 +5558,6 @@ static bool player_birth_aux(void)
        char b2 = ']';
 
        char buf[80], cur[80];
-       char inp[80];
 
 
        /*** Intro ***/
@@ -5658,14 +5620,12 @@ static bool player_birth_aux(void)
        {
                /* Analyze */
                sp_ptr = &sex_info[n];
-               str = sp_ptr->title;
-
 
                /* Display */
 #ifdef JP
-               sprintf(buf, "%c%c%s", I2A(n), p2, str);
+               sprintf(buf, "%c%c%s", I2A(n), p2, sp_ptr->title);
 #else
-               sprintf(buf, "%c%c %s", I2A(n), p2, str);
+               sprintf(buf, "%c%c %s", I2A(n), p2, sp_ptr->title);
 #endif
                put_str(buf, 12 + (n/5), 2 + 15 * (n%5));
        }
@@ -5763,11 +5723,9 @@ static bool player_birth_aux(void)
        /* Set sex */
        p_ptr->psex = k;
        sp_ptr = &sex_info[p_ptr->psex];
-       str = sp_ptr->title;
-
 
        /* Display */
-       c_put_str(TERM_L_BLUE, str, 3, 15);
+       c_put_str(TERM_L_BLUE, sp_ptr->title, 3, 15);
 
        /* Clean up */
        clear_from(10);
@@ -5913,80 +5871,6 @@ static bool player_birth_aux(void)
 
 #endif /* ALLOW_AUTOROLLER */
 
-       /* Clean up */
-       clear_from(10);
-
-       /*** User enters number of quests ***/
-       /* Heino Vander Sanden and Jimmy De Laet */
-
-       /* Extra info */
-#ifdef JP
-       put_str("ɬ¿Ü¤Î¥¯¥¨¥¹¥È(¥ª¥Ù¥í¥óµÚ¤Óº®Æ٤Υµ¡¼¥Ú¥ó¥È)¤Ë²Ã¤¨¤Æ¡¢ÄɲäΥ¯¥¨¥¹¥È¤Î", 10, 5);
-       put_str("¿ô¤òÀßÄꤹ¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£", 11, 5);
-       put_str("Äɲ寥¨¥¹¥È¤ò¹Ô¤Ê¤¤¤¿¤¯¤Ê¤¤¾ì¹ç¤Ï '0'¤òÆþÎϤ·¤Æ²¼¤µ¤¤¡£", 12, 5);
-       put_str("¥é¥ó¥À¥à¤Ë·èÄꤹ¤ë¤Ë¤Ï'*'¤òÆþÎϤ·¤Æ²¼¤µ¤¤¡£", 13, 5);
-#else
-       put_str("You can enter the number of quests you'd like to perform in addition", 10, 5);
-       put_str("to the two obligatory ones ( Oberon and the Serpent of Chaos )", 11, 5);
-       put_str("In case you do not want any additional quests, just enter 0", 12, 5);
-       put_str("If you want a random number of random quests, just enter *", 13, 5);
-#endif
-
-       /* Ask the number of additional quests */
-       while (TRUE)
-       {
-
-#ifdef JP
-               put_str(format("Äɲ寥¨¥¹¥È¤Î¿ô (%u°Ê²¼) ", MAX_RANDOM_QUEST - MIN_RANDOM_QUEST + 1), 15, 5);
-#else
-               put_str(format("Number of additional quests? (<%u) ", MAX_RANDOM_QUEST - MIN_RANDOM_QUEST + 2), 15, 5);
-#endif
-
-
-               /* Get a the number of additional quest */
-               while (TRUE)
-               {
-                       /* Move the cursor */
-                       put_str("", 15, 40);
-
-                       /* Default */
-                       strcpy(inp, "10");
-
-                       /* Get a response (or escape) */
-                       if (!askfor_aux(inp, 2)) strcpy(inp, "10");
-
-                       /* Quit */
-                       if (inp[0] == 'Q') birth_quit();
-
-                       /* Start over */
-                       if (inp[0] == 'S') return (FALSE);
-
-                       /* Check for random number of quests */
-                       if (inp[0] == '*')
-                       {
-                               /* 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);
-                       }
-
-                       /* Break on valid input */
-                       if ((number_of_quests <= MAX_RANDOM_QUEST - MIN_RANDOM_QUEST + 1) && (number_of_quests >= 0)) break;
-               }
-               break;
-       }
-
        /* Clear */
        clear_from(10);
 
@@ -6360,11 +6244,12 @@ static bool player_birth_aux(void)
        /* Start over */
        if (c == 'S') return (FALSE);
 
-       init_dungeon_quests(number_of_quests);
+
+       /* Initialize random quests */
+       init_dungeon_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 */
@@ -6429,7 +6314,7 @@ static bool ask_quick_start(void)
        }
 
        load_prev_data(FALSE);
-       init_dungeon_quests(previous_char.quests);
+       init_dungeon_quests();
        init_turn();
 
        sp_ptr = &sex_info[p_ptr->psex];