{"¤¢¤Ê¤¿¤Ï°¤òÌǤܤ¹¤¿¤á¤Ë¤³¤ÎÃϤËÁ÷¤é¤ì¤Æ¤¤Þ¤·¤¿¡£", 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
"¥¨¥ë¥Õ¤Ï¿Í´Ö¤è¤êÎɤ¤ËâË¡»È¤¤¤Ë¤Ê¤ì¤Þ¤¹¤¬¡¢ÀïÆ®¤Ï¶ì¼ê¤Ç¤¹¡£Èà¤é¤Ï¿Í´Ö¤ä¥Ï¡¼¥Õ¥¨¥ë¥Õ¤è¤ê¤âƬ¤¬Îɤ¯¡¢¹â¤¤¸¤µ¤ò»ý¤Ã¤Æ¤¤¤Þ¤¹¡£¥¨¥ë¥Õ¤Ïõº÷, ²ò½ü, ÃγÐ, ±£Ì©¹ÔÆ°, ¼Í·â, ¤½¤·¤ÆËâË¡Æ»¶ñ»ÈÍѤÇÍ¥¤ì¤Æ¤¤¤Þ¤¹¤¬¡¢Éð´ï¤Î°·¤¤¤ÏÆÀ°Õ¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£Èà¤é¤ÏÀ¸¤Þ¤ì¤Ä¤¸÷¤ËÂФ¹¤ëÂÑÀ¤ò»ý¤Ã¤Æ¤¤¤Þ¤¹¡£",
-"¥Û¥Ó¥Ã¥È¡¢¤Þ¤¿¤Ï¥Ï¡¼¥Õ¥ê¥ó¥°¤ÏµÝ¤äÅêÚ³¤ËŤ±¡¢ËâË¡Ëɸæ¤âÍ¥¤ì¤Æ¤¤¤Þ¤¹¡£¤Þ¤¿¡¢Ãµº÷, ²ò½ü, ÃγÐ, ¤½¤·¤Æ±£Ì©¹ÔÆ°¤Ç¤â¤È¤Æ¤âÎɤ¤Ç½ÎϤò¼¨¤·¤Þ¤¹¡£¤½¤Î¤¿¤á¡¢Èà¤é¤ÏÍ¥¤ì¤¿Åð±¤È¤Ê¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡Ê¤·¤«¤·¡¢¡ÖǦ¤Ó¤Î¼Ô¡×¤È¸Æ¤Ð¤ì¤ë¤³¤È¤ò¹¥¤ß¤Þ¤¹¡Ë¡£¥Û¥Ó¥Ã¥È¤Ï¿Í´Ö¤è¤êÍÚ¤«¤ËÉϼå¤Ç¡¢Àï»Î¤È¤·¤Æ¤Ï¤Æ¤ó¤Ç¥À¥á¤Ç¤¹¡£Èà¤é¤Ï¤«¤Ê¤êÎɤ¤ÀÖ³°Àþ»ëÎϤò»ý¤Ã¤Æ¤ª¤ê¡¢²¹·ìưʪ¤òÎ¥¤ì¤¿¾ì½ê¤«¤é¸«¤Ä¤±¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£¥Û¥Ó¥Ã¥È¤Ï´ïÍѤµ¤ò²¼¤²¤é¤ì¤ë¤³¤È¤¬¤¢¤ê¤Þ¤»¤ó¡£",
+"¥Û¥Ó¥Ã¥È¡¢¤Þ¤¿¤Ï¥Ï¡¼¥Õ¥ê¥ó¥°¤ÏµÝ¤äÅêÚ³¤ËŤ±¡¢ËâË¡Ëɸæ¤âÍ¥¤ì¤Æ¤¤¤Þ¤¹¡£¤Þ¤¿¡¢Ãµº÷, ²ò½ü, ÃγÐ, ¤½¤·¤Æ±£Ì©¹ÔÆ°¤Ç¤â¤È¤Æ¤âÎɤ¤Ç½ÎϤò¼¨¤·¤Þ¤¹¡£¤½¤Î¤¿¤á¡¢Èà¤é¤ÏÍ¥¤ì¤¿Åð±¤È¤Ê¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡Ê¤·¤«¤·¡¢¡ÖǦ¤Ó¤Î¼Ô¡×¤È¸Æ¤Ð¤ì¤ë¤³¤È¤ò¹¥¤ß¤Þ¤¹¡Ë¡£¥Û¥Ó¥Ã¥È¤Ï¿Í´Ö¤è¤êÍÚ¤«¤ËÉϼå¤Ç¡¢Àï»Î¤È¤·¤Æ¤Ï¤Æ¤ó¤Ç¥À¥á¤Ç¤¹¡£Èà¤é¤Ï¤«¤Ê¤êÎɤ¤ÀÖ³°Àþ»ëÎϤò»ý¤Ã¤Æ¤ª¤ê¡¢²¹·ìưʪ¤òÎ¥¤ì¤¿¾ì½ê¤«¤é¸«¤Ä¤±¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£Èà¤é¤ÏÀ¸Ì¿ÎϤòÊÝ»ý¤¹¤ëÎϤ¬¶¯¤¯¡¢À¸Ì¿Îϵۼý¹¶·â¤ËÂФ·¤ÆÂÑÀ¤ò»ý¤Ã¤Æ¤¤¤Þ¤¹¡£",
"¥Î¡¼¥à¤Ï¥É¥ï¡¼¥Õ¤è¤ê¾®¤µ¤¤¤Ç¤¹¤¬¡¢¥Û¥Ó¥Ã¥È¤è¤ê¤ÏÂ礤¤¼ï²¤Ç¤¹¡£Èà¤é¤Ï¥Û¥Ó¥Ã¥ÈƱÍÍÃÏɽ¤Îƶ·ê¤Î¤è¤¦¤Ê²È¤Ë½»¤ó¤Ç¤¤¤Þ¤¹¡£¥Î¡¼¥à¤Ï¤È¤Æ¤âÎɤ¤ËâË¡Ëɸæ¤ò»ý¤Á¡¢Ãµº÷, ²ò½ü, ÃγÐ, ±£Ì©¹ÔÆ°¤Ç¤âÍ¥¤ì¤Æ¤¤¤Þ¤¹¡£Èà¤é¤Ï¿Í´Ö¤è¤êÄ㤤ÏÓÎϤò»ý¤Á¡¢Éð´ï¤ò»ý¤Ã¤Æ¤ÎÀïÆ®¤Ï¶ì¼ê¤Ç¤¹¡£¥Î¡¼¥à¤Ï¤«¤Ê¤êÎɤ¤ÀÖ³°Àþ»ëÎϤò»ý¤Ã¤Æ¤ª¤ê¡¢²¹·ìưʪ¤òÎ¥¤ì¤¿¾ì½ê¤«¤é¸«¤Ä¤±¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£¥Î¡¼¥à¤ÏÀ¸¤Þ¤ì¤Ä¤Ëãáã¤ËÂФ¹¤ëÂÑÀ¤ò»ý¤Ã¤Æ¤¤¤Þ¤¹¡£",
"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.",
*/
static s16b stat_limit[6];
-static s16b chara_limit[6];
+static struct {
+ s16b agemin, agemax;
+ s16b htmin, htmax;
+ s16b wtmin, wtmax;
+ s16b scmin, scmax;
+} chara_limit;
/*
* Autoroll matches
if (choices & CH_ENCHANT)
{
(*count)++;
- auto_select = REALM_ENCHANT;
+ auto_select = REALM_CRAFT;
}
if (choices & CH_DAEMON)
{
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);
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;
/*
- * Computes character's age, height, and weight
- * by henkma
+ * Get character's height and weight
*/
-static void get_ahw(void)
+void get_height_weight(void)
{
- int h_percent; /* ¿ÈŤ¬Ê¿¶Ñ¤Ë¤¯¤é¤Ù¤Æ¤É¤Î¤¯¤é¤¤°ã¤¦¤«. */
-
+ int h_percent; /* ¿ÈŤ¬Ê¿¶Ñ¤Ë¤¯¤é¤Ù¤Æ¤É¤Î¤¯¤é¤¤°ã¤¦¤«. */
- /* Calculate the age */
- p_ptr->age = rp_ptr->b_age + randint1(rp_ptr->m_age);
-
- /* Calculate the height/weight for males */
- if (p_ptr->psex == SEX_MALE)
+ /* Calculate the height/weight for males */
+ if (p_ptr->psex == SEX_MALE)
{
- p_ptr->ht = randnor(rp_ptr->m_b_ht, rp_ptr->m_m_ht);
- h_percent = (int)(p_ptr->ht) * 100 / (int)(rp_ptr->m_b_ht);
- p_ptr->wt = randnor((int)(rp_ptr->m_b_wt) * h_percent /100
- , (int)(rp_ptr->m_m_wt) * h_percent / 300 );
+ p_ptr->ht = randnor(rp_ptr->m_b_ht, rp_ptr->m_m_ht);
+ h_percent = (int)(p_ptr->ht) * 100 / (int)(rp_ptr->m_b_ht);
+ p_ptr->wt = randnor((int)(rp_ptr->m_b_wt) * h_percent /100
+ , (int)(rp_ptr->m_m_wt) * h_percent / 300 );
}
- /* Calculate the height/weight for females */
- else if (p_ptr->psex == SEX_FEMALE)
+ /* Calculate the height/weight for females */
+ else if (p_ptr->psex == SEX_FEMALE)
{
- p_ptr->ht = randnor(rp_ptr->f_b_ht, rp_ptr->f_m_ht);
- h_percent = (int)(p_ptr->ht) * 100 / (int)(rp_ptr->f_b_ht);
- p_ptr->wt = randnor((int)(rp_ptr->f_b_wt) * h_percent /100
- , (int)(rp_ptr->f_m_wt) * h_percent / 300 );
+ p_ptr->ht = randnor(rp_ptr->f_b_ht, rp_ptr->f_m_ht);
+ h_percent = (int)(p_ptr->ht) * 100 / (int)(rp_ptr->f_b_ht);
+ p_ptr->wt = randnor((int)(rp_ptr->f_b_wt) * h_percent /100
+ , (int)(rp_ptr->f_m_wt) * h_percent / 300 );
}
}
+
+/*
+ * Computes character's age, height, and weight
+ * by henkma
+ */
+static void get_ahw(void)
+{
+ /* Get character's age */
+ p_ptr->age = rp_ptr->b_age + randint1(rp_ptr->m_age);
+
+ /* Get character's height and weight */
+ get_height_weight();
+}
+
+
/*
* Get the player's starting money
*/
}
+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
*/
/* 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;
}
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;
/*
* 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;
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--)
{
{
/* Undead start just after midnight */
turn = (TURNS_PER_TICK*3 * TOWN_DAWN) / 4 + 1;
+ turn_limit = TURNS_PER_TICK * TOWN_DAWN * MAX_DAYS + TURNS_PER_TICK * TOWN_DAWN * 3 / 4;
}
else
{
turn = 1;
+ turn_limit = TURNS_PER_TICK * TOWN_DAWN * (MAX_DAYS - 1) + TURNS_PER_TICK * TOWN_DAWN * 3 / 4;
}
dungeon_turn = 1;
+ dungeon_turn_limit = TURNS_PER_TICK * TOWN_DAWN * (MAX_DAYS - 1) + TURNS_PER_TICK * TOWN_DAWN * 3 / 4;
}
/*
},
{
- /* Harper */
+ /* Bard */
{ TV_MUSIC_BOOK, 0 },
{ TV_SOFT_ARMOR, SV_SOFT_LEATHER_ARMOR},
{ TV_SWORD, SV_SHORT_SWORD },
},
{
- /* Kihei */
+ /* Cavalry */
{ TV_BOW, SV_SHORT_BOW },
{ TV_SOFT_ARMOR, SV_LEATHER_SCALE_MAIL},
{ TV_POLEARM, SV_BROAD_SPEAR}
},
{
- /* Kaji */
+ /* Weaponsmith */
{ TV_RING, SV_RING_RES_FEAR }, /* Warriors need it! */
{ TV_HARD_ARMOR, SV_CHAIN_MAIL },
{ TV_POLEARM, SV_BROAD_AXE }
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.
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;
/* 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:
/* 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;
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;
/* 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 */
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)
{
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 */
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)
{
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)
{
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)
{
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)
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)
{
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)
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 */
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;
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;
}
#ifdef ALLOW_AUTOROLLER
static bool get_chara_limits(void)
{
+#define MAXITEMS 8
+
int i, j, m, cs, os;
- int mval[6], cval[6];
+ int mval[MAXITEMS], cval[MAXITEMS];
int max_percent, min_percent;
char c;
char buf[80], cur[80];
- char param[3][80] = {
+ cptr itemname[] = {
#ifdef JP
+ "ǯÎð",
"¿ÈĹ(¥¤¥ó¥Á)",
"ÂνÅ(¥Ý¥ó¥É)",
"¼Ò²ñŪÃÏ°Ì"
#else
+ "age",
"height",
"weight",
"social class"
#endif
/* Output the maximum stats */
- for (i = 0; i < 6; i++)
+ for (i = 0; i < MAXITEMS; i++)
{
/* Obtain the "maximal" stat */
switch (i)
{
- case 0: /* Minimum height */
+ case 0: /* Minimum age */
+ m = rp_ptr->b_age + 1;
+ break;
+ case 1: /* Maximum age */
+ m = rp_ptr->b_age + rp_ptr->m_age;
+ break;
+
+ case 2: /* Minimum height */
if (p_ptr->psex == SEX_MALE) m = rp_ptr->m_b_ht-rp_ptr->m_m_ht*4+1;
else m = rp_ptr->f_b_ht-rp_ptr->f_m_ht*4+1;
break;
- case 1: /* Maximum height */
+ case 3: /* Maximum height */
if (p_ptr->psex == SEX_MALE) m = rp_ptr->m_b_ht+rp_ptr->m_m_ht*4-1;
else m = rp_ptr->f_b_ht+rp_ptr->f_m_ht*4-1;
break;
- case 2: /* Minimum weight */
+ case 4: /* Minimum weight */
if (p_ptr->psex == SEX_MALE) m = (rp_ptr->m_b_wt * min_percent / 100) - (rp_ptr->m_m_wt * min_percent / 75) +1;
else m = (rp_ptr->f_b_wt * min_percent / 100) - (rp_ptr->f_m_wt * min_percent / 75) +1;
break;
- case 3: /* Maximum weight */
+ case 5: /* Maximum weight */
if (p_ptr->psex == SEX_MALE) m = (rp_ptr->m_b_wt * max_percent / 100) + (rp_ptr->m_m_wt * max_percent / 75) -1;
else m = (rp_ptr->f_b_wt * max_percent / 100) + (rp_ptr->f_m_wt * max_percent / 75) -1;
break;
- case 4: /* Minimum social class */
+ case 6: /* Minimum social class */
m = 1;
break;
- case 5: /* Maximum social class */
+ case 7: /* Maximum social class */
m = 100;
break;
default:
cval[i] = m;
}
- for (i = 0; i < 3; i++)
+ for (i = 0; i < 4; i++)
{
/* Prepare a prompt */
- sprintf(buf, "%-12s (%3d - %3d)", param[i], mval[i*2], mval[i*2+1]);
+ sprintf(buf, "%-12s (%3d - %3d)", itemname[i], mval[i*2], mval[i*2+1]);
/* Dump the prompt */
put_str(buf, 14 + i, 20);
/* Get a minimum stat */
cs = 0;
- os = 6;
+ os = MAXITEMS;
while (TRUE)
{
/* Move Cursol */
if (cs != os)
{
- if(os == 6)
- {
#ifdef JP
- c_put_str(TERM_WHITE, "·èÄꤹ¤ë", 18, 35);
+ const char accept[] = "·èÄꤹ¤ë";
#else
- c_put_str(TERM_WHITE, "Accept", 18, 35);
+ const char accept[] = "Accept";
#endif
+ if(os == MAXITEMS)
+ {
+ c_put_str(TERM_WHITE, accept, 19, 35);
}
- else if(os < 6)
+ else
+ {
c_put_str(TERM_WHITE, cur, 14 + os/2, 45 + 8 * (os%2));
+ }
- if(cs == 6)
+ if(cs == MAXITEMS)
{
-#ifdef JP
- c_put_str(TERM_YELLOW, "·èÄꤹ¤ë", 18, 35);
-#else
- c_put_str(TERM_YELLOW, "Accept", 18, 35);
-#endif
+ c_put_str(TERM_YELLOW, accept, 19, 35);
}
else
{
case ' ':
case '\r':
case '\n':
- if(cs == 6) break;
+ if(cs == MAXITEMS) break;
cs++;
c = '6';
break;
break;
case '2':
case 'j':
- if (cs < 6) cs += 2;
- if (cs > 6) cs = 6;
+ if (cs < MAXITEMS) cs += 2;
+ if (cs > MAXITEMS) cs = MAXITEMS;
break;
case '4':
case 'h':
break;
case '6':
case 'l':
- if (cs < 6) cs++;
+ if (cs < MAXITEMS) cs++;
break;
case '-':
case '<':
- if (cs != 6)
+ if (cs != MAXITEMS)
{
if(cs%2)
{
break;
case '+':
case '>':
- if (cs != 6)
+ if (cs != MAXITEMS)
{
if(cs%2)
{
}
break;
case 'm':
- if(cs != 6)
+ if(cs != MAXITEMS)
{
if(cs%2)
{
}
break;
case 'n':
- if(cs != 6)
+ if(cs != MAXITEMS)
{
if(cs%2)
{
bell();
break;
}
- if(c == ESCAPE || ((c == ' ' || c == '\r' || c == '\n') && cs == 6))break;
+ if(c == ESCAPE || ((c == ' ' || c == '\r' || c == '\n') && cs == MAXITEMS))break;
}
/* Input the minimum stats */
- for (i = 0; i < 6; i++)
- {
- /* Save the minimum stat */
- chara_limit[i] = (cval[i] > 0) ? cval[i] : 0;
- }
+ chara_limit.agemin = cval[0];
+ chara_limit.agemax = cval[1];
+ chara_limit.htmin = cval[2];
+ chara_limit.htmax = cval[3];
+ chara_limit.wtmin = cval[4];
+ chara_limit.wtmax = cval[5];
+ chara_limit.scmin = cval[6];
+ chara_limit.scmax = cval[7];
+
return TRUE;
}
#endif
-static char histpref_buf[240];
+#define HISTPREF_LIMIT 1024
+static char *histpref_buf = NULL;
+/*
+ * Hook function for reading the histpref.prf file.
+ */
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;
- }
- }
+ /* Do nothing if the buffer is not ready */
+ if (!histpref_buf) return;
- /* Terminate */
- histpref_buf[(i < limit) ? i : limit] = '\0';
+ my_strcat(histpref_buf, t, HISTPREF_LIMIT);
}
int i, j, n;
char *s, *t;
char temp[64 * 4];
+ char histbuf[HISTPREF_LIMIT];
#ifdef JP
if (!get_check("À¸¤¤Î©¤ÁÀßÄê¥Õ¥¡¥¤¥ë¤ò¥í¡¼¥É¤·¤Þ¤¹¤«? ")) return FALSE;
if (!get_check("Load background history preference file? ")) return FALSE;
#endif
- /* Init buffer */
- histpref_buf[0] = '\0';
+ /* Prepare the buffer */
+ histbuf[0] = '\0';
+ histpref_buf = histbuf;
#ifdef JP
sprintf(buf, "histedit-%s.prf", player_name);
#endif
msg_print(NULL);
- /* Terminate buffer */
- histpref_buf[0] = '\0';
+ /* Kill the buffer */
+ histpref_buf = NULL;
+
return FALSE;
}
}
}
- /* Turn 0 to space */
+ /* Fill the remaining spaces */
for (i = 0; i < 4; i++)
{
for (j = 0; p_ptr->history[i][j]; j++) /* loop */;
p_ptr->history[i][59] = '\0';
}
- /* Terminate buffer */
- histpref_buf[0] = '\0';
+ /* Kill the buffer */
+ histpref_buf = NULL;
return TRUE;
}
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;
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;
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++;
if (y < 3) y++;
}
}
- else if (skey == SKEY_LEFT)
+ else if (skey == SKEY_LEFT || c == KTRL('b'))
{
x--;
if (x < 0)
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);
static bool player_birth_aux(void)
{
int i, k, n, cs, os;
- int number_of_quests;
int mode = 0;
char b2 = ']';
char buf[80], cur[80];
- char inp[80];
/*** Intro ***/
{
/* 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));
}
/* 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);
#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);
if (autochara)
{
- if ((p_ptr->ht < chara_limit[0]) || (p_ptr->ht > chara_limit[1])) accept = FALSE;
- if ((p_ptr->wt < chara_limit[2]) || (p_ptr->wt > chara_limit[3])) accept = FALSE;
- if ((p_ptr->sc < chara_limit[4]) || (p_ptr->sc > chara_limit[5])) accept = FALSE;
+ if ((p_ptr->age < chara_limit.agemin) || (p_ptr->age > chara_limit.agemax)) accept = FALSE;
+ if ((p_ptr->ht < chara_limit.htmin) || (p_ptr->ht > chara_limit.htmax)) accept = FALSE;
+ if ((p_ptr->wt < chara_limit.wtmin) || (p_ptr->wt > chara_limit.wtmax)) accept = FALSE;
+ if ((p_ptr->sc < chara_limit.scmin) || (p_ptr->sc > chara_limit.scmax)) accept = FALSE;
}
if (accept) break;
}
/* 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 */
}
load_prev_data(FALSE);
- init_dungeon_quests(previous_char.quests);
+ init_dungeon_quests();
init_turn();
sp_ptr = &sex_info[p_ptr->psex];