{"GF_SEEKER", GF_SEEKER },
{"GF_SUPER_RAY", GF_SUPER_RAY },
{"GF_STAR_HEAL", GF_STAR_HEAL },
+ {"GF_WATER_FLOW", GF_WATER_FLOW },
+ {"GF_CRUSADE", GF_CRUSADE },
+ {"GF_STASIS_EVIL", GF_STASIS_EVIL },
+ {"GF_WOUNDS", GF_WOUNDS },
{NULL, 0 }
};
int ob = option_info[i].o_bit;
if (option_info[i].o_var &&
- option_info[i].o_text &&
- streq(option_info[i].o_text, buf + 2) &&
- (!alive || option_info[i].o_page !=6))
+ option_info[i].o_text &&
+ streq(option_info[i].o_text, buf + 2))
{
+ if (alive && 6 == option_info[i].o_page && !wizard)
+ {
+#ifdef JP
+ msg_format("½é´ü¥ª¥×¥·¥ç¥ó¤ÏÊѹ¹¤Ç¤¤Þ¤»¤ó! '%s'", buf);
+#else
+ msg_format("Startup options can not changed! '%s'", buf);
+#endif
+ msg_print(NULL);
+ return 0;
+ }
+
/* Clear */
option_flag[os] &= ~(1L << ob);
(*option_info[i].o_var) = FALSE;
}
/* don't know that option. ignore it.*/
- msg_format("Ignored wrong option %s.", buf+2);
+#ifdef JP
+ msg_format("¥ª¥×¥·¥ç¥ó¤Î̾Á°¤¬Àµ¤·¤¯¤¢¤ê¤Þ¤»¤ó¡§ %s", buf);
+#else
+ msg_format("Ignored invalid option: %s", buf);
+#endif
msg_print(NULL);
return 0;
}
int ob = option_info[i].o_bit;
if (option_info[i].o_var &&
- option_info[i].o_text &&
- streq(option_info[i].o_text, buf + 2) &&
- (!alive || option_info[i].o_page !=6))
+ option_info[i].o_text &&
+ streq(option_info[i].o_text, buf + 2))
{
+ if (alive && 6 == option_info[i].o_page && !wizard)
+ {
+#ifdef JP
+ msg_format("½é´ü¥ª¥×¥·¥ç¥ó¤ÏÊѹ¹¤Ç¤¤Þ¤»¤ó! '%s'", buf);
+#else
+ msg_format("Startup options can not changed! '%s'", buf);
+#endif
+ msg_print(NULL);
+ return 0;
+ }
+
/* Set */
option_flag[os] |= (1L << ob);
(*option_info[i].o_var) = TRUE;
}
/* don't know that option. ignore it.*/
- msg_format("Ignored wrong option %s.", buf+2);
+#ifdef JP
+ msg_format("¥ª¥×¥·¥ç¥ó¤Î̾Á°¤¬Àµ¤·¤¯¤¢¤ê¤Þ¤»¤ó¡§ %s", buf);
+#else
+ msg_format("Ignored invalid option: %s", buf);
+#endif
msg_print(NULL);
return 0;
}
*/
static errr process_pickpref_file_line(char *buf)
{
- char *s, *s2;
+ autopick_type entry;
int i;
- byte act = 0;
+ if (max_autopick == MAX_AUTOPICK)
+ return 1;
+
/* Nuke illegal char */
for(i = 0; buf[i]; i++)
{
}
buf[i] = 0;
- s = buf;
+ if (!autopick_new_entry(&entry, buf)) return 0;
- act = DO_AUTOPICK | DO_DISPLAY;
- while (1)
- {
- if (*s == '!')
- {
- act &= ~DO_AUTOPICK;
- act |= DO_AUTODESTROY;
- s++;
- }
- else if (*s == '~')
- {
- act &= ~DO_AUTOPICK;
- act |= DONT_AUTOPICK;
- s++;
- }
- else if (*s == '(')
- {
- act &= ~DO_DISPLAY;
- s++;
- }
- else
- break;
- }
-
- /* don't mind upper or lower case */
- s2 = NULL;
- for (i = 0; s[i]; i++)
- {
-#ifdef JP
- if (iskanji(s[i]))
- {
- i++;
- continue;
- }
-#endif
- if (isupper(s[i]))
- s[i] = tolower(s[i]);
-
- /* Auto-inscription? */
- if (s[i] == '#')
- {
- s[i] = '\0';
- s2 = s + i + 1;
- break;
- }
- }
-
- /* Skip empty line */
- if (*s == 0)
- return 0;
- if (max_autopick == MAX_AUTOPICK)
- return 1;
-
/* Already has the same entry? */
for(i = 0; i < max_autopick; i++)
- if(!strcmp(s, autopick_name[i]))
- return 0;
+ if(!strcmp(entry.name, autopick_list[i].name)
+ && entry.flag[0] == autopick_list[i].flag[0]
+ && entry.flag[1] == autopick_list[i].flag[1]) return 0;
- autopick_name[max_autopick] = string_make(s);
- autopick_action[max_autopick] = act;
-
- autopick_insc[max_autopick] = string_make(s2);
- max_autopick++;
+ autopick_list[max_autopick++] = entry;
return 0;
}
{
char buf[1024];
- errr err = 0;
+ errr err1, err2;
/* Build the filename */
path_build(buf, 1024, ANGBAND_DIR_PREF, name);
- /* Process the pref file */
- err = process_pref_file_aux(buf, FALSE);
+ /* Process the system pref file */
+ err1 = process_pref_file_aux(buf, FALSE);
/* Stop at parser errors, but not at non-existing file */
- if (err < 1)
- {
- /* Build the filename */
- path_build(buf, 1024, ANGBAND_DIR_USER, name);
+ if (err1 > 0) return err1;
- /* Process the pref file */
- err = process_pref_file_aux(buf, FALSE);
- }
- /* Result */
- return (err);
+ /* Drop priv's */
+ safe_setuid_drop();
+
+ /* Build the filename */
+ path_build(buf, 1024, ANGBAND_DIR_USER, name);
+
+ /* Process the user pref file */
+ err2 = process_pref_file_aux(buf, FALSE);
+
+ /* Grab priv's */
+ safe_setuid_grab();
+
+
+ /* User file does not exist, but read system pref file */
+ if (err2 < 0 && !err1)
+ return -2;
+
+ /* Result of user file processing */
+ return err2;
}
}
-/*
- * Print long number with header at given row, column
- * Use the color for the number, not the header
- */
-static void prt_lnum(cptr header, s32b num, int row, int col, byte color)
+#define ENTRY_BARE_HAND 0
+#define ENTRY_TWO_HANDS 1
+#define ENTRY_RIGHT_HAND1 2
+#define ENTRY_LEFT_HAND1 3
+#define ENTRY_LEFT_HAND2 4
+#define ENTRY_RIGHT_HAND2 5
+#define ENTRY_POSTURE 6
+#define ENTRY_SHOOT_HIT_DAM 7
+#define ENTRY_SHOOT_POWER 8
+#define ENTRY_SPEED 9
+#define ENTRY_BASE_AC 10
+#define ENTRY_LEVEL 11
+#define ENTRY_CUR_EXP 12
+#define ENTRY_MAX_EXP 13
+#define ENTRY_EXP_TO_ADV 14
+#define ENTRY_GOLD 15
+#define ENTRY_DAY 16
+#define ENTRY_HP 17
+#define ENTRY_SP 18
+#define ENTRY_PLAY_TIME 19
+#define ENTRY_SKILL_FIGHT 20
+#define ENTRY_SKILL_SHOOT 21
+#define ENTRY_SKILL_SAVING 22
+#define ENTRY_SKILL_STEALTH 23
+#define ENTRY_SKILL_PERCEP 24
+#define ENTRY_SKILL_SEARCH 25
+#define ENTRY_SKILL_DISARM 26
+#define ENTRY_SKILL_DEVICE 27
+#define ENTRY_BLOWS 28
+#define ENTRY_SHOTS 29
+#define ENTRY_AVG_DMG 30
+#define ENTRY_INFRA 31
+
+#define ENTRY_NAME 32
+#define ENTRY_SEX 33
+#define ENTRY_RACE 34
+#define ENTRY_CLASS 35
+#define ENTRY_REALM 36
+#define ENTRY_PATRON 37
+#define ENTRY_AGE 38
+#define ENTRY_HEIGHT 39
+#define ENTRY_WEIGHT 40
+#define ENTRY_SOCIAL 41
+#define ENTRY_ALIGN 42
+
+
+static struct
{
- int len = strlen(header);
- char out_val[32];
- put_str(header, row, col);
- (void)sprintf(out_val, "%9ld", (long)num);
- c_put_str(color, out_val, row, col + len);
-}
-
+ int col;
+ int row;
+ int len;
+ char header[20];
+} disp_player_line[]
+#ifdef JP
+= {
+ { 1, 10, 25, "ÂǷ⽤Àµ(³ÊÆ®)"},
+ { 1, 10, 25, "ÂǷ⽤Àµ(ξ¼ê)"},
+ { 1, 10, 25, "ÂǷ⽤Àµ(±¦¼ê)"},
+ { 1, 10, 25, "ÂǷ⽤Àµ(º¸¼ê)"},
+ { 1, 11, 25, "ÂǷ⽤Àµ(º¸¼ê)"},
+ { 1, 11, 25, "ÂǷ⽤Àµ(±¦¼ê)"},
+ { 1, 11, 25, ""},
+ { 1, 15, 25, "¼Í·â¹¶·â½¤Àµ"},
+ { 1, 16, 25, "¼Í·âÉð´ïÇÜΨ"},
+ {01, 20, 25, "²Ã®"},
+ { 1, 19, 25, "£Á£Ã"},
+ {29, 13, 21, "¥ì¥Ù¥ë"},
+ {29, 14, 21, "·Ð¸³ÃÍ"},
+ {29, 15, 21, "ºÇÂç·Ð¸³"},
+ {29, 16, 21, "¼¡¥ì¥Ù¥ë"},
+ {29, 17, 21, "½ê»ý¶â"},
+ {29, 19, 21, "ÆüÉÕ"},
+ {29, 10, 21, "£È£Ð"},
+ {29, 11, 21, "£Í£Ð"},
+ {29, 20, 21, "¥×¥ì¥¤»þ´Ö"},
+ {54, 10, -1, "ÂǷ⹶·â :"},
+ {54, 11, -1, "¼Í·â¹¶·â :"},
+ {54, 12, -1, "ËâË¡Ëɸæ :"},
+ {54, 13, -1, "±£Ì©¹ÔÆ° :"},
+ {54, 15, -1, "ÃγР:"},
+ {54, 16, -1, "õº÷ :"},
+ {54, 17, -1, "²ò½ü :"},
+ {54, 18, -1, "ËâË¡Æ»¶ñ :"},
+ {01, 12, 25, "ÂÇ·â²ó¿ô"},
+ {01, 17, 25, "¼Í·â²ó¿ô"},
+ {01, 13, 25, "Ê¿¶Ñ¥À¥á¡¼¥¸"},
+ {54, 20, -1, "ÀÖ³°Àþ»ëÎÏ:"},
+ {26, 1, -1, "̾Á° : "},
+ { 1, 3, -1, "ÀÊÌ : "},
+ { 1, 4, -1, "¼ï² : "},
+ { 1, 5, -1, "¿¦¶È : "},
+ { 1, 6, -1, "ËâË¡ : "},
+ { 1, 7, -1, "¼é¸îËâ¿À : "},
+ {29, 3, 21, "ǯÎð"},
+ {29, 4, 21, "¿ÈĹ"},
+ {29, 5, 21, "ÂνÅ"},
+ {29, 6, 21, "¼Ò²ñŪÃÏ°Ì"},
+ {29, 7, 21, "°À"},
+};
+#else
+= {
+ { 1, 10, 25, "Bare hand"},
+ { 1, 10, 25, "Two hands"},
+ { 1, 10, 25, "Right hand"},
+ { 1, 10, 25, "Left hand"},
+ { 1, 11, 25, "Left hand"},
+ { 1, 11, 25, "Right hand"},
+ { 1, 11, 25, "Posture"},
+ { 1, 15, 25, "Shooting"},
+ { 1, 16, 25, "Multiplier"},
+ {01, 20, 25, "Speed"},
+ { 1, 19, 25, "AC"},
+ {29, 13, 21, "Level"},
+ {29, 14, 21, "Experience"},
+ {29, 15, 21, "Max Exp"},
+ {29, 16, 21, "Exp to Adv"},
+ {29, 17, 21, "Gold"},
+ {29, 19, 21, "Time"},
+ {29, 10, 21, "Hit point"},
+ {29, 11, 21, "SP (Mana)"},
+ {29, 20, 21, "Play time"},
+ {54, 10, -1, "Fighting : "},
+ {54, 11, -1, "Bows/Throw : "},
+ {54, 12, -1, "Saving Throw: "},
+ {54, 13, -1, "Stealth : "},
+ {54, 15, -1, "Perception : "},
+ {54, 16, -1, "Searching : "},
+ {54, 17, -1, "Disarming : "},
+ {54, 18, -1, "Magic Device: "},
+ {01, 12, 25, "Blows/Round"},
+ {01, 17, 25, "Shots/Round"},
+ {01, 13, 25, "AverageDmg/Rnd"},
+ {54, 20, -1, "Infra-Vision: "},
+ {26, 1, -1, "Name : "},
+ { 1, 3, -1, "Sex : "},
+ { 1, 4, -1, "Race : "},
+ { 1, 5, -1, "Class : "},
+ { 1, 6, -1, "Magic : "},
+ { 1, 7, -1, "Patron : "},
+ {29, 3, 21, "Age"},
+ {29, 4, 21, "Height"},
+ {29, 5, 21, "Weight"},
+ {29, 6, 21, "Social Class"},
+ {29, 7, 21, "Align"},
+};
+#endif
-/*
- * Print number with header at given row, column
- */
-static void prt_num(cptr header, int num, int row, int col, byte color)
+static void display_player_one_line(int entry, cptr val, byte attr)
{
- int len = strlen(header);
- char out_val[32];
- put_str(header, row, col);
- put_str(" ", row, col + len);
- (void)sprintf(out_val, "%6ld", (long)num);
- c_put_str(color, out_val, row, col + len + 3);
-}
+ char buf[40];
+ int row = disp_player_line[entry].row;
+ int col = disp_player_line[entry].col;
+ int len = disp_player_line[entry].len;
+ cptr head = disp_player_line[entry].header;
-#ifdef JP
-/* ÆüËܸìÈdzÈÄ¥
- * £È£Ð / ºÇÂç ¤Î¤è¤¦¤Êɽ¼¨
- * xxxxx / yyyyy
- */
-static void prt_num_max( int num, int max , int row, int col, byte color1, byte color2 )
-{
- char out_val[32];
- (void)sprintf(out_val, "%5ld", (long)num);
- c_put_str(color1, out_val, row, col );
- put_str("/",row, col+6);
- (void)sprintf(out_val, "%5ld", (long)max);
- c_put_str(color2, out_val, row, col+8 );
-}
+ int head_len = strlen(head);
-/* ÆüËܸìÈdzÈÄ¥
- * xx ºÐ ¤È¤« xx kg ¤Ê¤É¤Îɽ¼¨ÍÑ cptr tailer ¤Ëñ°Ì¤¬Æþ¤ë¡£
- */
-static void prt_num2(cptr header, cptr tailer, int num, int row, int col, byte color)
-{
- int len = strlen(header);
- char out_val[32];
- put_str(header, row, col);
- put_str(" ", row, col + len);
- (void)sprintf(out_val, "%6ld", (long)num);
- c_put_str(color, out_val, row, col + len + 3);
- put_str(tailer, row, col + len + 3+6);
+ Term_putstr(col, row, -1, TERM_WHITE, head);
+
+ if (!val)
+ return;
+
+ if (len > 0)
+ {
+ int val_len = len - head_len;
+ sprintf(buf, "%*.*s", val_len, val_len, val);
+ Term_putstr(col + head_len, row, -1, attr, buf);
+ }
+ else
+ {
+ Term_putstr(col + head_len, row, -1, attr, val);
+ }
+
+ return;
}
-#endif
+
+
/*
* Prints the following information on the screen.
- *
- * For this to look right, the following should be spaced the
- * same as in the prt_lnum code... -CFT
*/
static void display_player_middle(void)
{
char buf[160];
-#ifdef JP
- byte statcolor;
-#endif
int show_tohit, show_todam;
object_type *o_ptr;
int tmul = 0;
sprintf(buf, "(%+d,%+d)", show_tohit, show_todam);
/* Dump the bonuses to hit/dam */
-#ifdef JP
if(!buki_motteruka(INVEN_RARM) && !buki_motteruka(INVEN_LARM))
- Term_putstr(1, 9, -1, TERM_WHITE, "ÂǷ⽤Àµ(³ÊÆ®)");
+ display_player_one_line(ENTRY_BARE_HAND, buf, TERM_L_BLUE);
else if(p_ptr->ryoute)
- Term_putstr(1, 9, -1, TERM_WHITE, "ÂǷ⽤Àµ(ξ¼ê)");
+ display_player_one_line(ENTRY_TWO_HANDS, buf, TERM_L_BLUE);
+ else if (left_hander)
+ display_player_one_line(ENTRY_LEFT_HAND1, buf, TERM_L_BLUE);
else
- Term_putstr(1, 9, -1, TERM_WHITE, (left_hander ? "ÂǷ⽤Àµ(º¸¼ê)" : "ÂǷ⽤Àµ(±¦¼ê)"));
-#else
- if(!buki_motteruka(INVEN_RARM) && !buki_motteruka(INVEN_LARM))
- Term_putstr(1, 9, -1, TERM_WHITE, "Melee(bare h.)");
- else if(p_ptr->ryoute)
- Term_putstr(1, 9, -1, TERM_WHITE, "Melee(2hands)");
- else
- Term_putstr(1, 9, -1, TERM_WHITE, (left_hander ? "Melee(Left)" : "Melee(Right)"));
-#endif
- Term_putstr(15, 9, -1, TERM_L_BLUE, format("%11s", buf));
+ display_player_one_line(ENTRY_RIGHT_HAND1, buf, TERM_L_BLUE);
}
if(p_ptr->hidarite)
sprintf(buf, "(%+d,%+d)", show_tohit, show_todam);
/* Dump the bonuses to hit/dam */
-#ifdef JP
- Term_putstr(1, 10, -1, TERM_WHITE, (left_hander ? "ÂǷ⽤Àµ(±¦¼ê)" : "ÂǷ⽤Àµ(º¸¼ê)"));
-#else
- Term_putstr(1, 10, -1, TERM_WHITE, "Melee(Left)");
-#endif
- Term_putstr(15, 10, -1, TERM_L_BLUE, format("%11s", buf));
+ if (left_hander)
+ display_player_one_line(ENTRY_RIGHT_HAND2, buf, TERM_L_BLUE);
+ else
+ display_player_one_line(ENTRY_LEFT_HAND2, buf, TERM_L_BLUE);
}
else if ((p_ptr->pclass == CLASS_MONK) && (empty_hands(TRUE) > 1))
{
{
if ((p_ptr->special_defense >> i) & KAMAE_GENBU) break;
}
+ if (i < MAX_KAMAE)
#ifdef JP
- if (i < MAX_KAMAE) Term_putstr(16, 10, -1, TERM_YELLOW, format("%s¤Î¹½¤¨", kamae_shurui[i].desc));
+ display_player_one_line(ENTRY_POSTURE, format("%s¤Î¹½¤¨", kamae_shurui[i].desc), TERM_YELLOW);
#else
- if (i < MAX_KAMAE) Term_putstr(10, 10, -1, TERM_YELLOW, format("%11.11s form", kamae_shurui[i].desc));
+ display_player_one_line(ENTRY_POSTURE, format("%s form", kamae_shurui[i].desc), TERM_YELLOW);
#endif
}
else
#ifdef JP
- Term_putstr(18, 10, -1, TERM_YELLOW, "¹½¤¨¤Ê¤·");
+ display_player_one_line(ENTRY_POSTURE, "¹½¤¨¤Ê¤·", TERM_YELLOW);
#else
- Term_putstr(16, 10, -1, TERM_YELLOW, "no posture");
+ display_player_one_line(ENTRY_POSTURE, "none", TERM_YELLOW);
#endif
}
if (object_known_p(o_ptr)) show_tohit += o_ptr->to_h;
if (object_known_p(o_ptr)) show_todam += o_ptr->to_d;
- show_tohit += (weapon_exp[0][o_ptr->sval]-4000)/200;
+ if ((o_ptr->sval == SV_LIGHT_XBOW) || (o_ptr->sval == SV_HEAVY_XBOW))
+ show_tohit += (weapon_exp[0][o_ptr->sval])/400;
+ else
+ show_tohit += (weapon_exp[0][o_ptr->sval]-4000)/200;
/* Range attacks */
- sprintf(buf, "(%+d,%+d)", show_tohit, show_todam);
-#ifdef JP
- Term_putstr(1, 11, -1, TERM_WHITE, "¼Í·â¹¶·â½¤Àµ");
-#else
- Term_putstr(1, 11, -1, TERM_WHITE, "Shoot");
-#endif
- Term_putstr(15, 11, -1, TERM_L_BLUE, format("%11s", buf));
-
+ display_player_one_line(ENTRY_SHOOT_HIT_DAM, format("(%+d,%+d)", show_tohit, show_todam), TERM_L_BLUE);
if (inventory[INVEN_BOW].k_idx)
{
tmul = tmul * (100 + (int)(adj_str_td[p_ptr->stat_ind[A_STR]]) - 128);
}
- sprintf(buf, "x%d.%02d", tmul/100, tmul%100);
-#ifdef JP
- Term_putstr(1, 12, -1, TERM_WHITE, "¼Í·âÉð´ïÇÜΨ");
-#else
- Term_putstr(1, 12, -1, TERM_WHITE, "Shoot Power");
-#endif
- Term_putstr(15, 12, -1, TERM_L_BLUE, format("%11s", buf));
- /* Dump the armor class bonus */
-#ifdef JP
-prt_num("AC ½¤Àµ ", p_ptr->dis_to_a, 13, 1, TERM_L_BLUE);
-#else
- prt_num("+ To AC ", p_ptr->dis_to_a, 13, 1, TERM_L_BLUE);
-#endif
+ /* shoot power */
+ display_player_one_line(ENTRY_SHOOT_POWER, format("x%d.%02d", tmul/100, tmul%100), TERM_L_BLUE);
+ /* Dump the armor class */
+ display_player_one_line(ENTRY_BASE_AC, format("[%d,%+d]", p_ptr->dis_ac, p_ptr->dis_to_a), TERM_L_BLUE);
- /* Dump the total armor class */
-#ifdef JP
-prt_num("´ðËÜ AC ", p_ptr->dis_ac, 14, 1, TERM_L_BLUE);
-#else
- prt_num("Base AC ", p_ptr->dis_ac, 14, 1, TERM_L_BLUE);
-#endif
+ /* Dump speed */
+ {
+ bool is_fast = (p_ptr->fast || music_singing(MUSIC_SPEED) || music_singing(MUSIC_SHERO));
+ int tmp_speed = 0;
+ byte attr;
+ int i;
-#ifdef JP
-prt_num("¥ì¥Ù¥ë ", (int)p_ptr->lev, 9, 28, TERM_L_GREEN);
-#else
- prt_num("Level ", (int)p_ptr->lev, 9, 28, TERM_L_GREEN);
-#endif
+ i = p_ptr->pspeed-110;
- if (p_ptr->prace == RACE_ANDROID)
- {
-#ifdef JP
-put_str("·Ð¸³ÃÍ ", 10, 28);
-#else
-put_str("Experience ", 10, 28);
-#endif
-c_put_str(TERM_L_GREEN, " *****", 10, 28+11);
- }
- else if (p_ptr->exp >= p_ptr->max_exp)
- {
+ /* Hack -- Visually "undo" the Search Mode Slowdown */
+ if (p_ptr->action == ACTION_SEARCH) i += 10;
+
+ if (i > 0)
+ {
+ if (!p_ptr->riding)
+ attr = TERM_L_GREEN;
+ else
+ attr = TERM_GREEN;
+ }
+ else if (i == 0)
+ {
+ if (!p_ptr->riding)
+ attr = TERM_L_BLUE;
+ else
+ attr = TERM_GREEN;
+ }
+ else
+ {
+ if (!p_ptr->riding)
+ attr = TERM_L_UMBER;
+ else
+ attr = TERM_RED;
+ }
+
+ if (!p_ptr->riding)
+ {
+ if (is_fast) tmp_speed += 10;
+ if (p_ptr->slow) tmp_speed -= 10;
+ if (p_ptr->lightspeed) tmp_speed = 99;
+ }
+ else
+ {
+ if (m_list[p_ptr->riding].fast) tmp_speed += 10;
+ if (m_list[p_ptr->riding].slow) tmp_speed -= 10;
+ }
+
+ if (tmp_speed)
+ {
+ if (!p_ptr->riding)
+ sprintf(buf, "(%+d%+d)", i-tmp_speed, tmp_speed);
+ else
#ifdef JP
-prt_lnum("·Ð¸³ÃÍ ", p_ptr->exp, 10, 28, TERM_L_GREEN);
+ sprintf(buf, "¾èÇÏÃæ (%+d%+d)", i-tmp_speed, tmp_speed);
#else
- prt_lnum("Experience ", p_ptr->exp, 10, 28, TERM_L_GREEN);
+ sprintf(buf, "Riding (%+d%+d)", i-tmp_speed, tmp_speed);
#endif
- }
- else
- {
+ if (tmp_speed > 0)
+ attr = TERM_YELLOW;
+ else
+ attr = TERM_VIOLET;
+ }
+ else
+ {
+ if (!p_ptr->riding)
+ sprintf(buf, "(%+d)", i);
+ else
#ifdef JP
-prt_lnum("·Ð¸³ÃÍ ", p_ptr->exp, 10, 28, TERM_YELLOW);
+ sprintf(buf, "¾èÇÏÃæ (%+d)", i);
#else
- prt_lnum("Experience ", p_ptr->exp, 10, 28, TERM_YELLOW);
+ sprintf(buf, "Riding (%+d)", i);
#endif
-
+ }
+
+ display_player_one_line(ENTRY_SPEED, buf, attr);
}
+ /* Dump character level */
+ display_player_one_line(ENTRY_LEVEL, format("%d", p_ptr->lev), TERM_L_GREEN);
+
+ /* Dump experience */
if (p_ptr->prace == RACE_ANDROID)
- {
-#ifdef JP
-put_str("ºÇÂç·Ð¸³ ", 11, 28);
-#else
-put_str("Max Exo ", 11, 28);
-#endif
-c_put_str(TERM_L_GREEN, " *****", 11, 28+11);
- }
+ display_player_one_line(ENTRY_CUR_EXP, "*****", TERM_L_GREEN);
+ else if (p_ptr->exp >= p_ptr->max_exp)
+ display_player_one_line(ENTRY_CUR_EXP, format("%ld", p_ptr->exp), TERM_L_GREEN);
else
-#ifdef JP
-prt_lnum("ºÇÂç·Ð¸³ ", p_ptr->max_exp, 11, 28, TERM_L_GREEN);
-#else
- prt_lnum("Max Exp ", p_ptr->max_exp, 11, 28, TERM_L_GREEN);
-#endif
+ display_player_one_line(ENTRY_CUR_EXP, format("%ld", p_ptr->exp), TERM_YELLOW);
+ /* Dump max experience */
+ if (p_ptr->prace == RACE_ANDROID)
+ display_player_one_line(ENTRY_MAX_EXP, "*****", TERM_L_GREEN);
+ else
+ display_player_one_line(ENTRY_MAX_EXP, format("%ld", p_ptr->max_exp), TERM_L_GREEN);
+ /* Dump exp to advance */
if ((p_ptr->lev >= PY_MAX_LEVEL) || (p_ptr->prace == RACE_ANDROID))
- {
-#ifdef JP
-put_str("¼¡¥ì¥Ù¥ë ", 12, 28);
-c_put_str(TERM_L_GREEN, " *****", 12, 28+11);
-#else
- put_str("Exp to Adv", 12, 28);
- c_put_str(TERM_L_GREEN, " *****", 12, 28+11);
-#endif
-
- }
+ display_player_one_line(ENTRY_EXP_TO_ADV, "*****", TERM_L_GREEN);
else
- {
-#ifdef JP
-prt_lnum("¼¡¥ì¥Ù¥ë ",
-#else
- prt_lnum("Exp to Adv ",
-#endif
+ display_player_one_line(ENTRY_EXP_TO_ADV, format("%ld", (s32b)(player_exp[p_ptr->lev - 1] * p_ptr->expfact / 100L)), TERM_L_GREEN);
- (s32b)(player_exp[p_ptr->lev - 1] * p_ptr->expfact / 100L),
- 12, 28, TERM_L_GREEN);
- }
+ /* Dump gold */
+ display_player_one_line(ENTRY_GOLD, format("%ld", p_ptr->au), TERM_L_GREEN);
-#ifdef JP
-prt_lnum("½ê»ý¶â ", p_ptr->au, 13, 28, TERM_L_GREEN);
-#else
- prt_lnum("Gold ", p_ptr->au, 13, 28, TERM_L_GREEN);
-#endif
+ /* Dump Day */
+ {
+ int day, hour, min;
+ extract_day_hour_min(&day, &hour, &min);
+ sprintf(buf,
#ifdef JP
-prt_lnum("¥¿¡¼¥ó¿ô ", MAX(turn_real(turn),0), 14, 28, TERM_L_GREEN );
+ "%dÆüÌÜ %2d:%02d",
#else
-prt_lnum("Total turn ", MAX(turn_real(turn),0), 14, 28, TERM_L_GREEN );
+ "Day %d %2d:%02d",
#endif
+ day, hour, min);
+ }
+ display_player_one_line(ENTRY_DAY, buf, TERM_L_GREEN);
-#ifdef JP
-/* 54321 / 54321 */
-put_str(" £È£Ð / ºÇÂç ", 9, 52);
+ /* Dump hit point */
if (p_ptr->chp >= p_ptr->mhp)
- statcolor = TERM_L_GREEN;
+ display_player_one_line(ENTRY_HP, format("%4d/%4d", p_ptr->chp , p_ptr->mhp), TERM_L_GREEN);
+ else if (p_ptr->chp > (p_ptr->mhp * hitpoint_warn) / 10)
+ display_player_one_line(ENTRY_HP, format("%4d/%4d", p_ptr->chp , p_ptr->mhp), TERM_YELLOW);
else
- if (p_ptr->chp > (p_ptr->mhp * hitpoint_warn) / 10)
- statcolor = TERM_YELLOW;
- else
- statcolor=TERM_RED;
-prt_num_max( p_ptr->chp , p_ptr->mhp, 10, 56, statcolor , TERM_L_GREEN);
-
-#else
- prt_num("Max Hit Points ", p_ptr->mhp, 9, 52, TERM_L_GREEN);
+ display_player_one_line(ENTRY_HP, format("%4d/%4d", p_ptr->chp , p_ptr->mhp), TERM_RED);
- if (p_ptr->chp >= p_ptr->mhp)
- {
- prt_num("Cur Hit Points ", p_ptr->chp, 10, 52, TERM_L_GREEN);
- }
- else if (p_ptr->chp > (p_ptr->mhp * hitpoint_warn) / 10)
- {
- prt_num("Cur Hit Points ", p_ptr->chp, 10, 52, TERM_YELLOW);
- }
- else
- {
- prt_num("Cur Hit Points ", p_ptr->chp, 10, 52, TERM_RED);
- }
-#endif
-
-
-#ifdef JP
-/* 54321 / 54321 */
-put_str(" £Í£Ð / ºÇÂç ", 11, 52);
+ /* Dump mana power */
if (p_ptr->csp >= p_ptr->msp)
- statcolor = TERM_L_GREEN;
- else
- if (p_ptr->csp > (p_ptr->msp * hitpoint_warn) / 10)
- statcolor = TERM_YELLOW;
- else
- statcolor=TERM_RED;
-prt_num_max( p_ptr->csp , p_ptr->msp, 12, 56, statcolor , TERM_L_GREEN);
-#else
- prt_num("Max SP (Mana) ", p_ptr->msp, 11, 52, TERM_L_GREEN);
-
- if (p_ptr->csp >= p_ptr->msp)
- {
- prt_num("Cur SP (Mana) ", p_ptr->csp, 12, 52, TERM_L_GREEN);
- }
- else if (p_ptr->csp > (p_ptr->msp * hitpoint_warn) / 10)
- {
- prt_num("Cur SP (Mana) ", p_ptr->csp, 12, 52, TERM_YELLOW);
- }
+ display_player_one_line(ENTRY_SP, format("%4d/%4d", p_ptr->csp , p_ptr->msp), TERM_L_GREEN);
+ else if (p_ptr->csp > (p_ptr->msp * hitpoint_warn) / 10)
+ display_player_one_line(ENTRY_SP, format("%4d/%4d", p_ptr->csp , p_ptr->msp), TERM_YELLOW);
else
- {
- prt_num("Cur SP (Mana) ", p_ptr->csp, 12, 52, TERM_RED);
- }
-#endif
-
- sprintf(buf, "%.2lu:%.2lu:%.2lu", playtime/(60*60), (playtime/60)%60, playtime%60);
-#ifdef JP
- Term_putstr(52, 14, -1, TERM_WHITE, "¥×¥ì¥¤»þ´Ö");
-#else
- Term_putstr(52, 14, -1, TERM_WHITE, "Playtime");
-#endif
- Term_putstr(63, 14, -1, TERM_L_GREEN, format("%11s", buf));
+ display_player_one_line(ENTRY_SP, format("%4d/%4d", p_ptr->csp , p_ptr->msp), TERM_RED);
+ /* Dump play time */
+ display_player_one_line(ENTRY_PLAY_TIME, format("%.2lu:%.2lu:%.2lu", playtime/(60*60), (playtime/60)%60, playtime%60), TERM_L_GREEN);
}
if (object_known_p(o_ptr)) damage[i] += o_ptr->to_d*100;
basedam = (o_ptr->dd * (o_ptr->ds + 1))*50;
object_flags(o_ptr, &f1, &f2, &f3);
- if ((o_ptr->ident & IDENT_MENTAL) && (o_ptr->name1 == ART_VORPAL_BLADE))
+ if ((o_ptr->ident & IDENT_MENTAL) && ((o_ptr->name1 == ART_VORPAL_BLADE) || (o_ptr->name1 == ART_CHAINSWORD)))
{
/* vorpal blade */
basedam *= 5;
basedam *= 11;
basedam /= 9;
}
- if (object_known_p(o_ptr) && (p_ptr->pclass != CLASS_SAMURAI) && (f1 & TR1_FORCE_WEPON) && (p_ptr->csp > (o_ptr->dd * o_ptr->ds / 5)))
+ if (object_known_p(o_ptr) && (p_ptr->pclass != CLASS_SAMURAI) && (f1 & TR1_FORCE_WEAPON) && (p_ptr->csp > (o_ptr->dd * o_ptr->ds / 5)))
basedam = basedam * 7 / 2;
if (p_ptr->riding && (o_ptr->tval == TV_POLEARM) && ((o_ptr->sval == SV_LANCE) || (o_ptr->sval == SV_HEAVY_LANCE)))
basedam = basedam*(o_ptr->dd+2)/o_ptr->dd;
xfos = p_ptr->skill_fos;
-#ifdef JP
-put_str("ÂǷ⹶·âǽÎÏ :", 17, 1);
-#else
- put_str("Fighting :", 17, 1);
-#endif
-
desc = likert(xthn, 12);
- c_put_str(likert_color, desc, 17, 15);
-
-#ifdef JP
-put_str("¼Í·â¹¶·âǽÎÏ :", 18, 1);
-#else
- put_str("Bows/Throw :", 18, 1);
-#endif
+ display_player_one_line(ENTRY_SKILL_FIGHT, desc, likert_color);
desc = likert(xthb, 12);
- c_put_str(likert_color, desc, 18, 15);
-
-#ifdef JP
-put_str("ËâË¡ËɸæǽÎÏ :", 19, 1);
-#else
- put_str("Saving Throw:", 19, 1);
-#endif
+ display_player_one_line(ENTRY_SKILL_SHOOT, desc, likert_color);
desc = likert(xsav, 7);
- c_put_str(likert_color, desc, 19, 15);
-
-#ifdef JP
-put_str("±£Ì©¹ÔưǽÎÏ :", 20, 1);
-#else
- put_str("Stealth :", 20, 1);
-#endif
+ display_player_one_line(ENTRY_SKILL_SAVING, desc, likert_color);
desc = likert(xstl, 1);
- c_put_str(likert_color, desc, 20, 15);
-
-
-#ifdef JP
-put_str("ÃγÐǽÎÏ :", 17, 28);
-#else
- put_str("Perception :", 17, 28);
-#endif
+ display_player_one_line(ENTRY_SKILL_STEALTH, desc, likert_color);
desc = likert(xfos, 6);
- c_put_str(likert_color, desc, 17, 42);
-
-#ifdef JP
-put_str("õº÷ǽÎÏ :", 18, 28);
-#else
- put_str("Searching :", 18, 28);
-#endif
+ display_player_one_line(ENTRY_SKILL_PERCEP, desc, likert_color);
desc = likert(xsrh, 6);
- c_put_str(likert_color, desc, 18, 42);
-
-#ifdef JP
-put_str("²ò½üǽÎÏ :", 19, 28);
-#else
- put_str("Disarming :", 19, 28);
-#endif
+ display_player_one_line(ENTRY_SKILL_SEARCH, desc, likert_color);
desc = likert(xdis, 8);
- c_put_str(likert_color, desc, 19, 42);
-
-#ifdef JP
-put_str("ËâË¡Æ»¶ñ»ÈÍÑ :", 20, 28);
-#else
- put_str("Magic Device:", 20, 28);
-#endif
+ display_player_one_line(ENTRY_SKILL_DISARM, desc, likert_color);
desc = likert(xdev, 6);
- c_put_str(likert_color, desc, 20, 42);
-
-
-#ifdef JP
-put_str("ÂÇ·â²ó¿ô :", 17, 55);
-#else
- put_str("Blows/Round:", 17, 55);
-#endif
+ display_player_one_line(ENTRY_SKILL_DEVICE, desc, likert_color);
if (!muta_att)
- put_str(format("%d+%d", blows1, blows2), 17, 69);
+ display_player_one_line(ENTRY_BLOWS, format("%d+%d", blows1, blows2), TERM_L_BLUE);
else
- put_str(format("%d+%d+%d", blows1, blows2, muta_att), 17, 69);
-
-#ifdef JP
-put_str("¼Í·â²ó¿ô :", 18, 55);
-#else
- put_str("Shots/Round:", 18, 55);
-#endif
-
- put_str(format("%d.%02d", shots, shot_frac), 18, 69);
+ display_player_one_line(ENTRY_BLOWS, format("%d+%d+%d", blows1, blows2, muta_att), TERM_L_BLUE);
-#ifdef JP
-put_str("Ê¿¶Ñ¥À¥á¡¼¥¸:", 19, 55);
-#else
- put_str("Wpn.dmg/Rnd:", 19, 55); /* From PsiAngband */
-#endif
+ display_player_one_line(ENTRY_SHOTS, format("%d.%02d", shots, shot_frac), TERM_L_BLUE);
if ((damage[0]+damage[1]) == 0)
else
desc = format("%d+%d", blows1 * damage[0] / 100, blows2 * damage[1] / 100);
- put_str(desc, 19, 69);
-
-#ifdef JP
-put_str("ÀÖ³°Àþ»ëÎÏ :", 20, 55);
-#else
- put_str("Infra-Vision:", 20, 55);
-#endif
-
-#ifdef JP
-put_str(format("%d feet", p_ptr->see_infra * 10), 20, 69);
-#else
- put_str(format("%d feet", p_ptr->see_infra * 10), 20, 69);
-#endif
+ display_player_one_line(ENTRY_AVG_DMG, desc, TERM_L_BLUE);
+ display_player_one_line(ENTRY_INFRA, format("%d feet", p_ptr->see_infra * 10), TERM_WHITE);
}
/*
* Helper function, see below
*/
-static void display_player_flag_aux(int row, int col, char *header,
+static void display_player_flag_aux(int row, int col, cptr header,
int n, u32b flag1, u32b flag2,
u32b im_f[], u32b vul_f)
{
int i;
- u32b f[3];
+ u32b f[4];
bool vuln = FALSE;
if ((vul_f & flag1) && !((im_f[0] | im_f[1] | im_f[2]) & flag1))
for (i = INVEN_RARM; i < INVEN_TOTAL; i++)
{
object_type *o_ptr;
- f[0] = f[1] = f[2] = 0L;
+ f[0] = f[1] = f[2] = f[3] = 0L;
/* Object */
o_ptr = &inventory[i];
/* Known flags */
object_flags_known(o_ptr, &f[0], &f[1], &f[2]);
+ f[3] = o_ptr->curse_flags;
/* Default */
c_put_str((byte)(vuln ? TERM_RED : TERM_SLATE), ".", row, col);
/* Player flags */
player_flags(&f[0], &f[1], &f[2]);
+ f[3] = 0L;
/* Default */
c_put_str((byte)(vuln ? TERM_RED : TERM_SLATE), ".", row, col);
/* Timed player flags */
tim_player_flags(&f[0], &f[1], &f[2], TRUE);
+ f[3] = 0L;
/* Check flags */
if (f[n-1] & flag1) c_put_str((byte)(vuln ? TERM_ORANGE : TERM_YELLOW), "#", row, col);
display_player_flag_aux(row+6, col, "µÞ²óÉü :", 3, TR3_REGEN, 0, im_f[2], vul_f[2]);
display_player_flag_aux(row+7, col, "ÉâÍ· :", 3, TR3_FEATHER, 0, im_f[2], vul_f[2]);
display_player_flag_aux(row+8, col, "±Ê±ó¸÷¸» :", 3, TR3_LITE, 0, im_f[2], vul_f[2]);
-display_player_flag_aux(row+9, col, "¼ö¤¤ :", 3, (TR3_CURSED | TR3_HEAVY_CURSE), TR3_PERMA_CURSE, im_f[2], vul_f[2]);
+display_player_flag_aux(row+9, col, "¼ö¤¤ :", 4, (TRC_CURSED | TRC_HEAVY_CURSE), TRC_PERMA_CURSE, im_f[2], vul_f[2]);
#else
display_player_flag_aux(row+0, col, "Speed :", 1, TR1_SPEED, 0, im_f[0], vul_f[0]);
display_player_flag_aux(row+1, col, "FreeAction:", 2, TR2_FREE_ACT, 0, im_f[1], vul_f[1]);
display_player_flag_aux(row+6, col, "Regene. :", 3, TR3_REGEN, 0, im_f[2], vul_f[2]);
display_player_flag_aux(row+7, col, "Levitation:", 3, TR3_FEATHER, 0, im_f[2], vul_f[2]);
display_player_flag_aux(row+8, col, "Perm Lite :", 3, TR3_LITE, 0, im_f[2], vul_f[2]);
- display_player_flag_aux(row+9, col, "Cursed :", 3, (TR3_CURSED | TR3_HEAVY_CURSE), TR3_PERMA_CURSE, im_f[2], vul_f[2]);
+ display_player_flag_aux(row+9, col, "Cursed :", 4, (TRC_CURSED | TRC_HEAVY_CURSE), TRC_PERMA_CURSE, im_f[2], vul_f[2]);
#endif
}
c_put_str(TERM_BLUE, " ´ðËÜ", row, stat_col+7);
c_put_str(TERM_L_BLUE, " ¼ï ¿¦ À Áõ ", row, stat_col+13);
c_put_str(TERM_L_GREEN, "¹ç·×", row, stat_col+28);
-c_put_str(TERM_YELLOW, "¸½ºß", row, stat_col+33);
+c_put_str(TERM_YELLOW, "¸½ºß", row, stat_col+35);
#else
c_put_str(TERM_WHITE, "Stat", row, stat_col+1);
c_put_str(TERM_BLUE, " Base", row, stat_col+7);
e_adj -= cp_ptr->c_adj[i];
e_adj -= ap_ptr->a_adj[i];
- /* Reduced name of stat */
-#ifdef JP
- c_put_str(TERM_WHITE, stat_names[i], row + i+1, stat_col+1);
-#else
- c_put_str(TERM_WHITE, stat_names_reduced[i], row + i+1, stat_col+1);
-#endif
+ if (p_ptr->stat_cur[i] < p_ptr->stat_max[i])
+ /* Reduced name of stat */
+ c_put_str(TERM_WHITE, stat_names_reduced[i], row + i+1, stat_col+1);
+ else
+ c_put_str(TERM_WHITE, stat_names[i], row + i+1, stat_col+1);
/* Internal "natural" max value. Maxes at 18/100 */
cnv_stat(p_ptr->stat_max[i], buf);
if (p_ptr->stat_max[i] == p_ptr->stat_max_max[i])
{
+#ifdef JP
c_put_str(TERM_WHITE, "!", row + i+1, stat_col + 6);
+#else
+ c_put_str(TERM_WHITE, "!", row + i+1, stat_col + 4);
+#endif
}
c_put_str(TERM_BLUE, buf, row + i+1, stat_col + 13 - strlen(buf));
a = TERM_RED;
/* Label boost */
- if (o_ptr->pval < 10) c = '0' - o_ptr->pval;
+ if (o_ptr->pval > -10) c = '0' - o_ptr->pval;
}
}
a = TERM_RED;
/* Label boost */
- if (dummy < 10) c = '0' - dummy;
+ if (dummy > -10) c = '0' - dummy;
}
}
}
"¥Æ¥ì¥Ý¡¼¥È",
"È¿´¶",
"½ËÊ¡",
-"¼ö¤¤",
-"½Å¤¤¼ö¤¤",
-"±Ê±ó¤Î¼ö¤¤"
+NULL,
+NULL,
+NULL,
#else
"NoTeleport",
"AntiMagic",
"Teleport",
"Aggravate",
"Blessed",
- "Cursed",
- "Hvy Curse",
- "Prm Curse"
+ NULL,
+ NULL,
+ NULL,
#endif
};
/* XXX XXX XXX */
- if ((p_ptr->muta1 || p_ptr->muta2 || p_ptr->muta3) && skip_mutations)
+ if ((p_ptr->muta1 || p_ptr->muta2 || p_ptr->muta3) && display_mutations)
mode = (mode % 7);
else
mode = (mode % 6);
{
/* Name, Sex, Race, Class */
#ifdef JP
-put_str("̾Á° :", 1,26);
-put_str("ÀÊÌ :", 3, 1);
-put_str("¼ï² :", 4, 1);
-put_str("¿¦¶È :", 5, 1);
+ sprintf(tmp, "%s%s%s", ap_ptr->title, ap_ptr->no == 1 ? "¤Î":"", player_name);
#else
- put_str("Name :", 1,26);
- put_str("Sex :", 3, 1);
- put_str("Race :", 4, 1);
- put_str("Class :", 5, 1);
+ sprintf(tmp, "%s %s", ap_ptr->title, player_name);
#endif
- if (p_ptr->realm1 || p_ptr->realm2)
-#ifdef JP
-put_str("ËâË¡ :", 6, 1);
-#else
- put_str("Magic :", 6, 1);
-#endif
+ display_player_one_line(ENTRY_NAME, tmp, TERM_L_BLUE);
+ display_player_one_line(ENTRY_SEX, sp_ptr->title, TERM_L_BLUE);
+ display_player_one_line(ENTRY_RACE, (p_ptr->mimic_form ? mimic_info[p_ptr->mimic_form].title : rp_ptr->title), TERM_L_BLUE);
+ display_player_one_line(ENTRY_CLASS, cp_ptr->title, TERM_L_BLUE);
- if (p_ptr->pclass == CLASS_CHAOS_WARRIOR)
-#ifdef JP
-put_str("¼é¸îËâ¿À :", 7, 1);
-#else
- put_str("Patron :", 7, 1);
-#endif
-
- strcpy(tmp,ap_ptr->title);
-#ifdef JP
- if(ap_ptr->no == 1)
- strcat(tmp,"¤Î");
-#else
- strcat(tmp," ");
-#endif
- strcat(tmp,player_name);
-
- c_put_str(TERM_L_BLUE, tmp, 1, 34);
- c_put_str(TERM_L_BLUE, sp_ptr->title, 3, 15);
- c_put_str(TERM_L_BLUE, (p_ptr->mimic_form ? mimic_info[p_ptr->mimic_form].title : rp_ptr->title), 4, 15);
- c_put_str(TERM_L_BLUE, cp_ptr->title, 5, 15);
if (p_ptr->realm1)
- c_put_str(TERM_L_BLUE, realm_names[p_ptr->realm1], 6, 15);
- if (p_ptr->pclass == CLASS_CHAOS_WARRIOR)
- c_put_str(TERM_L_BLUE, chaos_patrons[p_ptr->chaos_patron], 7, 15);
+ {
+ if (p_ptr->realm2)
+ sprintf(tmp, "%s, %s", realm_names[p_ptr->realm1], realm_names[p_ptr->realm2]);
+ else
+ strcpy(tmp, realm_names[p_ptr->realm1]);
+ display_player_one_line(ENTRY_REALM, tmp, TERM_L_BLUE);
+ }
- else if (p_ptr->realm2)
- c_put_str(TERM_L_BLUE, realm_names[p_ptr->realm2], 7, 15);
+ if ((p_ptr->pclass == CLASS_CHAOS_WARRIOR) || (p_ptr->muta2 & MUT2_CHAOS_GIFT))
+ display_player_one_line(ENTRY_PATRON, chaos_patrons[p_ptr->chaos_patron], TERM_L_BLUE);
/* Age, Height, Weight, Social */
+ /* ¿ÈĹ¤Ï¥»¥ó¥Á¥á¡¼¥È¥ë¤Ë¡¢ÂνŤϥ¥í¥°¥é¥à¤ËÊѹ¹¤·¤Æ¤¢¤ê¤Þ¤¹ */
#ifdef JP
- /* ¿ÈĹ¤Ï¥»¥ó¥Á¥á¡¼¥È¥ë¤Ë¡¢ÂνŤϥ¥í¥°¥é¥à¤ËÊѹ¹¤·¤Æ¤¢¤ê¤Þ¤¹ */
- /* ¹¹¤ËÆüËܸìÈǤÎÄɲäȤ·¤Æñ°Ì¤âɽ¼¨¤·¤Þ¤¹ */
- /* Ãæ±û¤Î¥«¥é¥à¤ÏÆüËܸì¤òɽ¼¨¤¹¤ë¤Ë¤Ï¶¹¤¤¤Î¤Ç¡¢º¸¤Ë4¤ÄÆ°¤«¤·¤Þ¤¹¡£ */
- prt_num2("ǯÎð ", "ºÍ",(int)p_ptr->age, 3, 32-2, TERM_L_BLUE);
- prt_num2("¿ÈĹ ","cm",(int)((p_ptr->ht*254)/100) , 4, 32-2, TERM_L_BLUE);
- prt_num2("ÂνŠ", "kg",(int)((p_ptr->wt*4536)/10000) , 5, 32-2, TERM_L_BLUE);
- prt_num("¼Ò²ñŪÃÏ°Ì ", (int)p_ptr->sc , 6, 32-2, TERM_L_BLUE);
+ display_player_one_line(ENTRY_AGE, format("%dºÍ" ,(int)p_ptr->age), TERM_L_BLUE);
+ display_player_one_line(ENTRY_HEIGHT, format("%dcm" ,(int)((p_ptr->ht*254)/100)), TERM_L_BLUE);
+ display_player_one_line(ENTRY_WEIGHT, format("%dkg" ,(int)((p_ptr->wt*4536)/10000)), TERM_L_BLUE);
+ display_player_one_line(ENTRY_SOCIAL, format("%d " ,(int)p_ptr->sc), TERM_L_BLUE);
#else
- prt_num("Age ", (int)p_ptr->age, 3, 32, TERM_L_BLUE);
- prt_num("Height ", (int)p_ptr->ht , 4, 32, TERM_L_BLUE);
- prt_num("Weight ", (int)p_ptr->wt , 5, 32, TERM_L_BLUE);
- prt_num("Social Class ", (int)p_ptr->sc , 6, 32, TERM_L_BLUE);
+ display_player_one_line(ENTRY_AGE, format("%d" ,(int)p_ptr->age), TERM_L_BLUE);
+ display_player_one_line(ENTRY_HEIGHT, format("%d" ,(int)p_ptr->ht), TERM_L_BLUE);
+ display_player_one_line(ENTRY_WEIGHT, format("%d" ,(int)p_ptr->wt), TERM_L_BLUE);
+ display_player_one_line(ENTRY_SOCIAL, format("%d" ,(int)p_ptr->sc), TERM_L_BLUE);
#endif
+ display_player_one_line(ENTRY_ALIGN, format("%s" ,your_alignment()), TERM_L_BLUE);
/* Display the stats */
int value;
/* Use lowercase stat name */
- put_str(stat_names_reduced[i], 2 + i, 59);
+ put_str(stat_names_reduced[i], 3 + i, 54);
/* Get the current stat */
value = p_ptr->stat_use[i];
cnv_stat(value, buf);
/* Display the current stat (modified) */
- c_put_str(TERM_YELLOW, buf, 2 + i, 66);
+ c_put_str(TERM_YELLOW, buf, 3 + i, 61);
/* Acquire the max stat */
value = p_ptr->stat_top[i];
cnv_stat(value, buf);
/* Display the maximum stat (modified) */
- c_put_str(TERM_L_GREEN, buf, 2 + i, 73);
+ c_put_str(TERM_L_GREEN, buf, 3 + i, 68);
}
/* Normal treatment of "normal" stats */
else
{
/* Assume uppercase stat name */
- put_str(stat_names[i], 2 + i, 59);
+ put_str(stat_names[i], 3 + i, 54);
/* Obtain the current stat (modified) */
cnv_stat(p_ptr->stat_use[i], buf);
/* Display the current stat (modified) */
- c_put_str(TERM_L_GREEN, buf, 2 + i, 66);
+ c_put_str(TERM_L_GREEN, buf, 3 + i, 61);
}
if (p_ptr->stat_max[i] == p_ptr->stat_max_max[i])
{
- c_put_str(TERM_WHITE, "!", 2+i, 64);
+#ifdef JP
+ c_put_str(TERM_WHITE, "!", 3+i, 59);
+#else
+ c_put_str(TERM_WHITE, "!", 3+i, 59-2);
+#endif
}
}
- /* Extra info */
- display_player_middle();
-
/* Display "history" info */
if (mode == 1)
{
+ char statmsg[1000];
+
#ifdef JP
- put_str("(¥¥ã¥é¥¯¥¿¡¼¤ÎÀ¸¤¤Î©¤Á)", 16, 25);
+ put_str("(¥¥ã¥é¥¯¥¿¡¼¤ÎÀ¸¤¤Î©¤Á)", 11, 25);
#else
- put_str("(Character Background)", 16, 25);
+ put_str("(Character Background)", 11, 25);
#endif
-
for (i = 0; i < 4; i++)
{
- put_str(history[i], i + 17, 10);
+ put_str(history[i], i + 12, 10);
}
- }
- /* Display "various" info */
- else
- {
+ *statmsg = '\0';
+
+ if (death && total_winner)
+ {
+#ifdef JP
+ strcpy(statmsg, "¡Ä¤¢¤Ê¤¿¤Ï¾¡Íø¤Î¸å°úÂष¤¿¡£");
+#else
+ strcpy(statmsg, "...You retired from the adventure after the winning.");
+#endif
+ }
+ else if (death)
+ {
+ if (dun_level)
+ {
+ if (p_ptr->inside_quest && (p_ptr->inside_quest < MIN_RANDOM_QUEST))
+ {
+ /* Get the quest text */
+ init_flags = INIT_ASSIGN;
+
+ process_dungeon_file("q_info_j.txt", 0, 0, 0, 0);
+
+#ifdef JP
+ sprintf(statmsg, "¡Ä¤¢¤Ê¤¿¤Ï¡¢¥¯¥¨¥¹¥È¡Ö%s¡×¤Ç%s¤Ë»¦¤µ¤ì¤¿¡£", quest[p_ptr->inside_quest].name, died_from);
+#else
+ sprintf(statmsg, "...You were killed by %s in the quest '%s'.", died_from, quest[p_ptr->inside_quest].name);
+#endif
+ }
+ else
+ {
+#ifdef JP
+ sprintf(statmsg, "¡Ä¤¢¤Ê¤¿¤Ï¡¢%s¤Î%d³¬¤Ç%s¤Ë»¦¤µ¤ì¤¿¡£", map_name(), dun_level, died_from);
+#else
+ sprintf(statmsg, "...You were killed by %s on level %d of %s.", died_from, dun_level, map_name());
+#endif
+ }
+ }
+ else
+#ifdef JP
+ sprintf(statmsg, "¡Ä¤¢¤Ê¤¿¤Ï%s¤Ç%s¤Ë»¦¤µ¤ì¤¿¡£", map_name(), died_from);
+#else
+ sprintf(statmsg, "...You were killed by %s in %s.", died_from, map_name());
+#endif
+ }
+ else if (character_dungeon)
+ {
+ if (dun_level)
+ {
+ if (p_ptr->inside_quest && (p_ptr->inside_quest < MIN_RANDOM_QUEST))
+ {
+ /* Get the quest text */
+ init_flags = INIT_ASSIGN;
+
+ process_dungeon_file("q_info_j.txt", 0, 0, 0, 0);
+
#ifdef JP
- put_str(" (¤½¤Î¾¤ÎǽÎÏ) ", 16, 25);
+ sprintf(statmsg, "¡Ä¤¢¤Ê¤¿¤Ï¸½ºß¡¢ ¥¯¥¨¥¹¥È¡Ö%s¡×¤ò¿ë¹ÔÃæ¤À¡£", quest[p_ptr->inside_quest].name);
#else
- put_str("(Miscellaneous Abilities)", 16, 25);
+ sprintf(statmsg, "...Now, you are in the quest '%s'.", quest[p_ptr->inside_quest].name);
#endif
+ }
+ else
+ {
+#ifdef JP
+ sprintf(statmsg, "¡Ä¤¢¤Ê¤¿¤Ï¸½ºß¡¢ %s ¤Î %d ³¬¤Çõº÷¤·¤Æ¤¤¤ë¡£", map_name(), dun_level);
+#else
+ sprintf(statmsg, "...Now, you are exploring level %d of %s.", dun_level, map_name());
+#endif
+ }
+ }
+ else
+#ifdef JP
+ sprintf(statmsg, "¡Ä¤¢¤Ê¤¿¤Ï¸½ºß¡¢ %s ¤Ë¤¤¤ë¡£", map_name());
+#else
+ sprintf(statmsg, "...Now, you are in %s.", map_name());
+#endif
+ }
+ if (*statmsg)
+ {
+ char temp[64*2], *t;
+ roff_to_buf(statmsg, 60, temp);
+ t = temp;
+ for(i=0 ; i<2 ; i++)
+ {
+ if(t[0]==0)
+ break;
+ else
+ {
+ put_str(t, i + 5 + 12, 10);
+ t += strlen(t)+1;
+ }
+ }
+ }
+ }
+
+ /* Display "various" info */
+ else
+ {
+ display_player_middle();
display_player_various();
}
}
store_type *st_ptr;
char o_name[MAX_NLEN];
char buf[1024];
- cptr disp_align;
#ifndef FAKE_VERSION
display_player(1);
/* Dump part of the screen */
- for (y = 16; y < 21; y++)
+ for (y = 10; y < 19; y++)
{
/* Dump each row */
for (x = 0; x < 79; x++)
fprintf(fff, "%s\n", buf);
}
- for (i = 0; i < p_ptr->count / 80; i++)
+ for (i = 0; (unsigned int) i < (p_ptr->count / 80); i++)
fprintf(fff, " ");
fprintf(fff, "\n");
- for (i = 0; i < p_ptr->count % 80; i++)
+ for (i = 0; (unsigned int) i < (p_ptr->count % 80); i++)
fprintf(fff, " ");
+
{
bool pet = FALSE;
#ifdef JP
fprintf(fff, " ¾èÇÏÃæ");
#else
- fprintf(fff, " riding");
+ fprintf(fff, " (riding)");
#endif
fprintf(fff, "\n");
}
#else
fprintf(fff, "\n [Last messages]\n\n");
#endif
- for (i = MIN(message_num(), 15); i >= 0; i--)
+ for (i = MIN(message_num(), 30); i >= 0; i--)
{
fprintf(fff,"> %s\n",message_str((s16b)i));
}
#endif
#ifdef JP
- if (p_ptr->align > 150) disp_align = "ÂçÁ±";
- else if (p_ptr->align > 50) disp_align = "ÃæÁ±";
- else if (p_ptr->align > 10) disp_align = "¾®Á±";
- else if (p_ptr->align > -11) disp_align = "ÃæΩ";
- else if (p_ptr->align > -51) disp_align = "¾®°";
- else if (p_ptr->align > -151) disp_align = "Ãæ°";
- else disp_align = "Âç°";
- fprintf(fff, "°À : %s\n", disp_align);
+ fprintf(fff, "°À : %s\n", your_alignment());
#else
- if (p_ptr->align > 150) disp_align = "lawful";
- else if (p_ptr->align > 50) disp_align = "good";
- else if (p_ptr->align > 10) disp_align = "neutral good";
- else if (p_ptr->align > -11) disp_align = "neutral";
- else if (p_ptr->align > -51) disp_align = "neutral evil";
- else if (p_ptr->align > -151) disp_align = "evil";
- else disp_align = "chaotic";
- fprintf(fff, "Your alighnment : %s\n", disp_align);
+ fprintf(fff, "Your alighnment : %s\n", your_alignment());
#endif
fprintf(fff, "\n");
dump_virtues(fff);
/* Open the non-existing file */
if (fd < 0) fff = my_fopen(buf, "w");
- /* Grab priv's */
- safe_setuid_grab();
-
-
/* Invalid file */
if (!fff)
{
/* Close it */
my_fclose(fff);
+ /* Grab priv's */
+ safe_setuid_grab();
/* Message */
#ifdef JP
}
+typedef struct file_tag
+{
+ char name[32];
+ int line_number;
+} file_tag;
+
+
+typedef struct file_tags
+{
+ file_tag tags[64];
+ int index;
+} file_tags;
+
+
+static void add_tag(file_tags *the_tags, cptr name, int line)
+{
+ if (the_tags->index < 64)
+ {
+ file_tag *tag = &(the_tags->tags[the_tags->index]);
+
+ /* Set the name and end it with '\0' */
+ strncpy(tag->name, name, 31);
+ tag->name[31] = '\0';
+
+ /* Set the line-number */
+ tag->line_number = line;
+
+ /* Increase the number of tags */
+ the_tags->index++;
+ }
+}
+
+
+static int get_line(file_tags *the_tags, cptr name)
+{
+ int i;
+
+ /* Search for the tag */
+ for (i = 0; i < the_tags->index; i++)
+ {
+ if (streq(the_tags->tags[i].name, name))
+ {
+ return the_tags->tags[i].line_number;
+ }
+ }
+
+ /* Not found */
+ return 0;
+}
+
+
/*
* Recursive file perusal.
*
- * Return FALSE on "ESCAPE", otherwise TRUE.
+ * Return FALSE on 'Q', otherwise TRUE.
*
* Process various special text in the input file, including
* the "menu" structures used by the "help file" system.
/* Backup value for "line" */
int back = 0;
+ /* Color of the next line */
+ byte color = TERM_WHITE;
+
/* Loop counter */
int cnt;
char hook[68][32];
/* Tags for in-file references */
- int tags[68];
+ file_tags tags;
bool reverse = (line < 0);
+ int wid, hgt, rows;
+
+ Term_get_size(&wid, &hgt);
+ rows = hgt - 4;
+
/* Wipe finder */
strcpy(finder, "");
hook[i][0] = '\0';
}
+ /* No tags yet */
+ tags.index = 0;
+
/* Copy the filename */
strcpy(filename, name);
fff = my_fopen(path, "r");
}
+ /* Look in "info" */
+ if (!fff)
+ {
+ /* Build the filename */
+ path_build(path, 1024, ANGBAND_DIR, name);
+
+ for (i = 0; path[i]; i++)
+ if ('\\' == path[i])
+ path[i] = PATH_SEP[0];
+
+ /* Caption */
+#ifdef JP
+sprintf(caption, "¥¹¥Ý¥¤¥é¡¼¡¦¥Õ¥¡¥¤¥ë'%s'", name);
+#else
+ sprintf(caption, "Info file '%s'", name);
+#endif
+
+ /* Open the file */
+ fff = my_fopen(path, "r");
+ }
+
/* Oops */
if (!fff)
{
/* Pre-Parse the file */
while (TRUE)
{
+ char *str;
+
/* Read a line or stop */
if (my_fgets(fff, buf, 1024)) break;
+ /* Get a color */
+ if (prefix(buf, "#####")) str = &buf[6];
+ else str = buf;
+
/* XXX Parse "menu" items */
- if (prefix(buf, "***** "))
+ if (prefix(str, "***** "))
{
/* Notice "menu" requests */
- if ((buf[6] == '[') && (isdigit(buf[7]) || isalpha(buf[7])))
+ if ((str[6] == '[') && isalpha(str[7]))
{
/* This is a menu file */
menu = TRUE;
/* Extract the menu item */
- k = isdigit(buf[7]) ? D2I(buf[7]) : buf[7] - 'A' + 10;
+ k = str[7] - 'A';
- if ((buf[8] == ']') && (buf[9] == ' '))
+ if ((str[8] == ']') && (str[9] == ' '))
{
/* Extract the menu item */
- strcpy(hook[k], buf + 10);
+ strncpy(hook[k], str + 10, 31);
+
+ /* Make sure it's null-terminated */
+ hook[k][31] = '\0';
}
}
/* Notice "tag" requests */
- else if ((buf[6] == '<') && (isdigit(buf[7]) || isalpha(buf[7])) &&
- (buf[8] == '>'))
+ else if (str[6] == '<')
{
- /* Extract the menu item */
- k = isdigit(buf[7]) ? D2I(buf[7]) : buf[7] - 'A' + 10;
-
- /* Extract the menu item */
- tags[k] = next;
+ str[strlen(str) - 1] = '\0';
+ add_tag(&tags, str + 7, next);
}
/* Skip this */
/* Save the number of "real" lines */
size = next;
- if (line == -1) line = ((size-1)/20)*20;
+ /* start from bottom when reverse mode */
+ if (line == -1) line = ((size-1)/rows)*rows;
/* Go to the tagged line */
- if (tag)
- line = tags[isdigit(tag[0]) ? D2I(tag[0]) : tag[0] - 'A' + 10];
+ if (tag) line = get_line(&tags, tag);
/* Display the file */
while (TRUE)
Term_clear();
/* Restart when necessary */
- if (line >= size) line = 0;
-
+ if (line >= size - rows) line = size - rows;
+ if (line < 0) line = 0;
/* Re-open the file if needed */
if (next > line)
next++;
}
- /* Dump the next 20 lines of the file */
- for (i = 0; i < 20; )
+ /* Dump the next 20, or rows, lines of the file */
+ for (i = 0; i < rows; )
{
+ int print_x, x;
+ cptr str;
+
/* Hack -- track the "first" line */
if (!i) line = next;
/* Hack -- skip "special" lines */
if (prefix(buf, "***** ")) continue;
+ /* Get a color */
+ if (prefix(buf, "#####"))
+ {
+ color = color_char_to_attr(buf[5]);
+ str = &buf[6];
+ }
+ else
+ {
+ color = TERM_WHITE;
+ str = buf;
+ }
+
/* Count the "real" lines */
next++;
- /* Make a lower case version of buf for searching */
- strcpy(lc_buf, buf);
+ /* Make a lower case version of str for searching */
+ strcpy(lc_buf, str);
for (lc_buf_ptr = lc_buf; *lc_buf_ptr != 0; lc_buf_ptr++)
{
find = NULL;
/* Dump the line */
- Term_putstr(0, i+2, -1, TERM_WHITE, buf);
+ x = 0;
+ print_x = 0;
+ while (str[x])
+ {
+ /* Color ? */
+ if (prefix(str + x, "[[[[["))
+ {
+ byte c = color_char_to_attr(str[x + 5]);
+ x += 6;
+
+ /* Ok print the link name */
+ while (str[x] != ']')
+ {
+ Term_putch(print_x, i + 2, c, str[x]);
+ x++;
+ print_x++;
+ }
+ }
+ else
+ {
+ Term_putch(print_x, i + 2, color, str[x]);
+ print_x++;
+ }
+
+ x++;
+ }
/* Hilite "shower" */
if (shower[0])
{
- cptr str = lc_buf;
+ cptr s2 = lc_buf;
/* Display matches */
- while ((str = strstr(str, shower)) != NULL)
+ while ((s2 = strstr(s2, shower)) != NULL)
{
int len = strlen(shower);
/* Display the match */
- Term_putstr(str-lc_buf, i+2, len, TERM_YELLOW, &buf[str-lc_buf]);
+ Term_putstr(s2-lc_buf, i+2, len, TERM_YELLOW, &str[s2-lc_buf]);
/* Advance */
- str += len;
+ s2 += len;
}
}
/* Show a general "title" */
if (show_version)
{
+ prt(format(
#ifdef JP
-prt(format("[ÊѶòÈÚÅÜ %d.%d.%d, %s, %d/%d]",
+ "[ÊѶòÈÚÅÜ %d.%d.%d, %s, %d/%d]",
#else
- prt(format("[Hengband %d.%d.%d, %s, Line %d/%d]",
+ "[Hengband %d.%d.%d, %s, Line %d/%d]",
#endif
FAKE_VER_MAJOR-10, FAKE_VER_MINOR, FAKE_VER_PATCH,
}
else
{
+ prt(format(
#ifdef JP
-prt(format("[%s, %d/%d]",
+ "[%s, %d/%d]",
#else
- prt(format("[%s, Line %d/%d]",
+ "[%s, Line %d/%d]",
#endif
- caption, line, size), 0, 0);
- }
-
- /* Prompt -- menu screen */
- if (menu)
- {
- /* Wait for it */
-#ifdef JP
-prt("[ ÈÖ¹æ¤òÆþÎϤ·¤Æ²¼¤µ¤¤( ESC¤Ç½ªÎ» ) ]", 23, 0);
-#else
- prt("[Press a Number, or ESC to exit.]", 23, 0);
-#endif
-
+ caption, line, size), 0, 0);
}
/* Prompt -- small files */
- else if (size <= 20)
+ if (size <= rows)
{
/* Wait for it */
#ifdef JP
-prt("[¥¡¼:(?)¥Ø¥ë¥× (ESC)½ªÎ»]", 23, 0);
+prt("[¥¡¼:(?)¥Ø¥ë¥× (ESC)½ªÎ»]", hgt - 1, 0);
#else
- prt("[Press ESC to exit.]", 23, 0);
+ prt("[Press ESC to exit.]", hgt - 1, 0);
#endif
}
{
#ifdef JP
if(reverse)
- prt("[¥¡¼:(RET/¥¹¥Ú¡¼¥¹)¢¬ (-)¢ (?)¥Ø¥ë¥× (ESC)½ªÎ»]", 23, 0);
+ prt("[¥¡¼:(RET/¥¹¥Ú¡¼¥¹)¢¬ (-)¢ (?)¥Ø¥ë¥× (ESC)½ªÎ»]", hgt - 1, 0);
else
- prt("[¥¡¼:(RET/¥¹¥Ú¡¼¥¹)¢ (-)¢¬ (?)¥Ø¥ë¥× (ESC)½ªÎ»]", 23, 0);
+ prt("[¥¡¼:(RET/¥¹¥Ú¡¼¥¹)¢ (-)¢¬ (?)¥Ø¥ë¥× (ESC)½ªÎ»]", hgt - 1, 0);
#else
- prt("[Press Return, Space, -, =, /, |, or ESC to exit.]", 23, 0);
+ prt("[Press Return, Space, -, =, /, |, or ESC to exit.]", hgt - 1, 0);
#endif
}
{
/* Get "shower" */
#ifdef JP
-prt("¶¯Ä´: ", 23, 0);
+prt("¶¯Ä´: ", hgt - 1, 0);
#else
- prt("Show: ", 23, 0);
+ prt("Show: ", hgt - 1, 0);
#endif
(void)askfor_aux(shower, 80);
{
/* Get "finder" */
#ifdef JP
-prt("¸¡º÷: ", 23, 0);
+prt("¸¡º÷: ", hgt - 1, 0);
#else
- prt("Find: ", 23, 0);
+ prt("Find: ", hgt - 1, 0);
#endif
{
char tmp[81];
#ifdef JP
-prt("¹Ô: ", 23, 0);
+prt("¹Ô: ", hgt - 1, 0);
#else
- prt("Goto Line: ", 23, 0);
+ prt("Goto Line: ", hgt - 1, 0);
#endif
strcpy(tmp, "0");
{
char tmp[81];
#ifdef JP
-prt("¥Õ¥¡¥¤¥ë¡¦¥Í¡¼¥à: ", 23, 0);
+prt("¥Õ¥¡¥¤¥ë¡¦¥Í¡¼¥à: ", hgt - 1, 0);
strcpy(tmp, "jhelp.hlp");
#else
- prt("Goto File: ", 23, 0);
+ prt("Goto File: ", hgt - 1, 0);
strcpy(tmp, "help.hlp");
#endif
if (askfor_aux(tmp, 80))
{
- if (!show_file(TRUE, tmp, NULL, 0, mode)) k = ESCAPE;
+ if (!show_file(TRUE, tmp, NULL, 0, mode)) k = 'q';
}
}
- /* Hack -- Allow backing up */
+ /* Allow backing up */
if (k == '-')
{
- line = line + (reverse ? 20 : -20);
- if (line < 0) line = ((size-1)/20)*20;
+ line = line + (reverse ? rows : -rows);
+ if (line < 0) line = 0;
}
- /* Hack -- Advance a single line */
+ /* Advance a single line */
if ((k == '\n') || (k == '\r'))
{
line = line + (reverse ? -1 : 1);
- if (line < 0) line = ((size-1)/20)*20;
+ if (line < 0) line = 0;
}
- /* Advance one page */
- if (k == ' ')
+
+ /* Move up / down */
+ if (k == '8')
{
- line = line + (reverse ? -20 : 20);
- if (line < 0) line = ((size-1)/20)*20;
+ line--;
+ if (line < 0) line = 0;
}
-#ifdef JP_FALSE
- /* ÆüËܸìÈǤÇÄɲ䵤줿¥Ø¥ë¥×¤Îɽ¼¨ */
- /* ¤¢¤Þ¤ê¤è¤¤½èÍý¤Î»ÅÊý¤È¤Ï»×¤¨¤Ê¤¤¡¦¡¦¡¦¤¹¤Þ¤ó */
+ if (k == '2') line++;
- /* ´Ê°×¥³¥Þ¥ó¥É°ìÍ÷ */
- if (menu && (k == 'c' || k == 'C'))
+ /* Advance one page */
+ if (k == ' ')
{
- char tmp[80];
- switch (rogue_like_commands)
- {
- case TRUE:
- {
- strcpy(tmp, "j_com_r.txt");
- if(!show_file(TRUE, tmp, NULL, 0, mode)) k = ESCAPE;
- break;
- }
- case FALSE:
- {
- strcpy(tmp, "j_com_o.txt");
- if(!show_file(TRUE, tmp, NULL, 0, mode)) k = ESCAPE;
- break;
- }
- }
+ line = line + (reverse ? -rows : rows);
+ if (line < 0) line = ((size-1)/rows)*rows;
}
-#endif
/* Recurse on numbers */
if (menu)
{
int key = -1;
- if (isdigit(k)) key = D2I(k);
- else if (isalpha(k)) key = k - 'A' + 10;
+ if (isalpha(k))
+ key = k - 'A';
if ((key > -1) && hook[key][0])
{
/* Recurse on that file */
if (!show_file(TRUE, hook[key], NULL, 0, mode))
- k = ESCAPE;
+ k = 'q';
}
}
strcpy (xtmp, "");
#ifdef JP
-if (get_string("¥Õ¥¡¥¤¥ë̾: ", xtmp, 80))
+ if (!get_string("¥Õ¥¡¥¤¥ë̾: ", xtmp, 80))
#else
- if (get_string("File name: ", xtmp, 80))
+ if (!get_string("File name: ", xtmp, 80))
#endif
-
- {
- if (xtmp[0] && (xtmp[0] != ' '))
- {
- }
- }
- else
{
continue;
}
+
+ /* Close it */
+ my_fclose(fff);
+
+ /* Drop priv's */
+ safe_setuid_drop();
/* Build the filename */
path_build(buff, 1024, ANGBAND_DIR_USER, xtmp);
- /* Close it */
- my_fclose(fff);
-
/* Hack -- Re-Open the file */
fff = my_fopen(path, "r");
if (!(fff && ffp))
{
#ifdef JP
-msg_print("¥Õ¥¡¥¤¥ë¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó¡£");
+msg_print("¥Õ¥¡¥¤¥ë¤¬³«¤±¤Þ¤»¤ó¡£");
#else
msg_print("Failed to open file.");
#endif
my_fclose(fff);
my_fclose(ffp);
+ /* Grab priv's */
+ safe_setuid_grab();
+
/* Hack -- Re-Open the file */
fff = my_fopen(path, "r");
}
/* Exit on escape */
if (k == ESCAPE) break;
+ if (k == 'q') break;
}
/* Close the file */
my_fclose(fff);
/* Escape */
- if (k == ESCAPE) return (FALSE);
+ if (k == 'q') return (FALSE);
/* Normal return */
return (TRUE);
#endif
-#if defined(WINDOWS) || defined(MSDOS)
+#if defined(MSDOS)
/* Hack -- max length */
if (k > 8) k = 8;
strcat(tmp,player_name);
/* Re-Draw the name (in light blue) */
+ Term_erase(34, 1, 255);
c_put_str(TERM_L_BLUE, tmp, 1, 34);
/* Erase the prompt, etc */
{
/* Verify */
#ifdef JP
-if (!get_check("°úÂष¤Þ¤¹¤«? ")) return;
+if (!get_check_strict("°úÂष¤Þ¤¹¤«? ", CHECK_NO_HISTORY)) return;
#else
- if (!get_check("Do you want to retire? ")) return;
+ if (!get_check_strict("Do you want to retire? ", CHECK_NO_HISTORY)) return;
#endif
}
if ((!send_world_score(do_send)))
{
#ifdef JP
- if (get_check("¸å¤Ç¥¹¥³¥¢¤òÅÐÏ¿¤¹¤ë¤¿¤á¤ËÂÔµ¡¤·¤Þ¤¹¤«¡©"))
+ if (get_check_strict("¸å¤Ç¥¹¥³¥¢¤òÅÐÏ¿¤¹¤ë¤¿¤á¤ËÂÔµ¡¤·¤Þ¤¹¤«¡©", (CHECK_NO_ESCAPE | CHECK_NO_HISTORY)))
#else
- if (get_check("Stand by for later score registration? "))
+ if (get_check_strict("Stand by for later score registration? ", (CHECK_NO_ESCAPE | CHECK_NO_HISTORY)))
#endif
{
wait_report_score = TRUE;
if (numentries > 0)
{
/* Grab an appropriate line number */
- line = rand_int(numentries);
+ line = randint0(numentries);
/* Get the random line */
for (counter = 0; counter <= line; counter++)
errr err = 0;
+ /* Drop priv's */
+ safe_setuid_drop();
+
/* Build the filename */
path_build(buf, 1024, ANGBAND_DIR_USER, name);
err = process_pref_file_aux(buf, TRUE);
+ /* Grab priv's */
+ safe_setuid_grab();
+
/* Result */
return (err);
}
*/
static void handle_signal_abort(int sig)
{
+ int wid, hgt, rows;
+
+ Term_get_size(&wid, &hgt);
+ rows = hgt - 4;
+
/* Disable handler */
(void)signal(sig, SIG_IGN);
clear_mon_lite();
/* Clear the bottom line */
- Term_erase(0, 23, 255);
+ Term_erase(0, hgt - 1, 255);
/* Give a warning */
- Term_putstr(0, 23, -1, TERM_RED,
+ Term_putstr(0, hgt - 1, -1, TERM_RED,
#ifdef JP
"¶²¤í¤·¤¤¥½¥Õ¥È¤Î¥Ð¥°¤¬Èô¤Ó¤«¤«¤Ã¤Æ¤¤¿¡ª");
#else
/* Message */
#ifdef JP
-Term_putstr(45, 23, -1, TERM_RED, "¶ÛµÞ¥»¡¼¥Ö...");
+Term_putstr(45, hgt - 1, -1, TERM_RED, "¶ÛµÞ¥»¡¼¥Ö...");
#else
- Term_putstr(45, 23, -1, TERM_RED, "Panic save...");
+ Term_putstr(45, hgt - 1, -1, TERM_RED, "Panic save...");
#endif
if (save_player())
{
#ifdef JP
-Term_putstr(45, 23, -1, TERM_RED, "¶ÛµÞ¥»¡¼¥ÖÀ®¸ù¡ª");
+Term_putstr(45, hgt - 1, -1, TERM_RED, "¶ÛµÞ¥»¡¼¥ÖÀ®¸ù¡ª");
#else
- Term_putstr(45, 23, -1, TERM_RED, "Panic save succeeded!");
+ Term_putstr(45, hgt - 1, -1, TERM_RED, "Panic save succeeded!");
#endif
}
else
{
#ifdef JP
-Term_putstr(45, 23, -1, TERM_RED, "¶ÛµÞ¥»¡¼¥Ö¼ºÇÔ¡ª");
+Term_putstr(45, hgt - 1, -1, TERM_RED, "¶ÛµÞ¥»¡¼¥Ö¼ºÇÔ¡ª");
#else
- Term_putstr(45, 23, -1, TERM_RED, "Panic save failed!");
+ Term_putstr(45, hgt - 1, -1, TERM_RED, "Panic save failed!");
#endif
}