X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=src%2Ffiles.c;h=cbeb5b168d1838a0794be326327e68a2abf835ef;hb=d35ce4aec281386ea3e96c7e2ae6d6b115637566;hp=60927a2e10d5dae0ce10d2b9dd3547be2c5c26ec;hpb=69815be6a27f4fb44f5ad2ae86620b5a4ffd59c0;p=hengband%2Fhengband.git diff --git a/src/files.c b/src/files.c index 60927a2e1..cbeb5b168 100644 --- a/src/files.c +++ b/src/files.c @@ -433,7 +433,7 @@ errr process_pref_file_command(char *buf) n2 = strtol(zz[2], NULL, 0); if (i >= max_r_idx) return 1; r_ptr = &r_info[i]; - if (n1 || (!(n2 & 0x80) && n2)) r_ptr->x_attr = n1; /* Allow ATTR_DARK text */ + if (n1 || (!(n2 & 0x80) && n2)) r_ptr->x_attr = n1; /* Allow TERM_DARK text */ if (n2) r_ptr->x_char = n2; return 0; } @@ -449,7 +449,7 @@ errr process_pref_file_command(char *buf) n2 = strtol(zz[2], NULL, 0); if (i >= max_k_idx) return 1; k_ptr = &k_info[i]; - if (n1 || (!(n2 & 0x80) && n2)) k_ptr->x_attr = n1; /* Allow ATTR_DARK text */ + if (n1 || (!(n2 & 0x80) && n2)) k_ptr->x_attr = n1; /* Allow TERM_DARK text */ if (n2) k_ptr->x_char = n2; return 0; } @@ -458,13 +458,13 @@ errr process_pref_file_command(char *buf) /* Process "F::/" -- attr/char for terrain features */ /* "F::/" */ /* "F::/:LIT" */ - /* "F::/:/:/:/" */ + /* "F::/:/:/" */ case 'F': { feature_type *f_ptr; - int num = tokenize(buf + 2, 9, zz, TOKENIZE_CHECKQUOTE); + int num = tokenize(buf + 2, F_LIT_MAX * 2 + 1, zz, TOKENIZE_CHECKQUOTE); - if ((num != 3) && (num != 4) && (num != 9)) return 1; + if ((num != 3) && (num != 4) && (num != F_LIT_MAX * 2 + 1)) return 1; else if ((num == 4) && !streq(zz[3], "LIT")) return 1; i = (huge)strtol(zz[0], NULL, 0); @@ -473,7 +473,7 @@ errr process_pref_file_command(char *buf) n1 = strtol(zz[1], NULL, 0); n2 = strtol(zz[2], NULL, 0); - if (n1 || (!(n2 & 0x80) && n2)) f_ptr->x_attr[F_LIT_STANDARD] = n1; /* Allow ATTR_DARK text */ + if (n1 || (!(n2 & 0x80) && n2)) f_ptr->x_attr[F_LIT_STANDARD] = n1; /* Allow TERM_DARK text */ if (n2) f_ptr->x_char[F_LIT_STANDARD] = n2; /* Mega-hack -- feat supports lighting */ @@ -496,12 +496,12 @@ errr process_pref_file_command(char *buf) break; /* Use desired lighting */ - case 9: + case F_LIT_MAX * 2 + 1: for (j = F_LIT_NS_BEGIN; j < F_LIT_MAX; j++) { n1 = strtol(zz[j * 2 + 1], NULL, 0); n2 = strtol(zz[j * 2 + 2], NULL, 0); - if (n1 || (!(n2 & 0x80) && n2)) f_ptr->x_attr[j] = n1; /* Allow ATTR_DARK text */ + if (n1 || (!(n2 & 0x80) && n2)) f_ptr->x_attr[j] = n1; /* Allow TERM_DARK text */ if (n2) f_ptr->x_char[j] = n2; } break; @@ -811,17 +811,18 @@ errr process_pref_file_command(char *buf) * Output: * result */ -cptr process_pref_file_expr(cptr *sp, char *fp) +cptr process_pref_file_expr(char **sp, char *fp) { cptr v; - cptr s; + char *b; + char *s; char b1 = '['; char b2 = ']'; char f = ' '; - static char tmp[8]; + static char tmp[10]; /* Initial */ s = (*sp); @@ -829,6 +830,9 @@ cptr process_pref_file_expr(cptr *sp, char *fp) /* Skip spaces */ while (isspace(*s)) s++; + /* Save start */ + b = s; + /* Default */ v = "?o?o?"; @@ -945,24 +949,25 @@ cptr process_pref_file_expr(cptr *sp, char *fp) if (f != b2) v = "?x?x?"; /* Extract final and Terminate */ - if ((f = *s) != '\0') s++; + if ((f = *s) != '\0') *s++ = '\0'; } /* Other */ else { - char b[1024]; - int i; - /* Accept all printables except spaces and brackets */ - for (i = 0; isprint(*s) && !my_strchr(" []", *s); i++) - b[i] = *s++; - - /* Terminate */ - b[i] = '\0'; +#ifdef JP + while (iskanji(*s) || (isprint(*s) && !my_strchr(" []", *s))) + { + if (iskanji(*s)) s++; + s++; + } +#else + while (isprint(*s) && !my_strchr(" []", *s)) ++s; +#endif /* Extract final and Terminate */ - if ((f = *s) != '\0') s++; + if ((f = *s) != '\0') *s++ = '\0'; /* Variable */ if (*b == '$') @@ -1016,7 +1021,22 @@ cptr process_pref_file_expr(cptr *sp, char *fp) /* Player */ else if (streq(b+1, "PLAYER")) { - v = player_base; + static char tmp_player_name[32]; + char *pn, *tpn; + for (pn = player_name, tpn = tmp_player_name; *pn; pn++, tpn++) + { +#ifdef JP + if (iskanji(*pn)) + { + *(tpn++) = *(pn++); + *tpn = *pn; + continue; + } +#endif + *tpn = my_strchr(" []", *pn) ? '_' : *pn; + } + *tpn = '\0'; + v = tmp_player_name; } /* First realm */ @@ -1054,6 +1074,13 @@ cptr process_pref_file_expr(cptr *sp, char *fp) else v = "0"; } + + /* Money */ + else if (streq(b+1, "MONEY")) + { + sprintf(tmp, "%09d", p_ptr->au); + v = tmp; + } } /* Constant */ @@ -1130,7 +1157,7 @@ static errr process_pref_file_aux(cptr name, int preftype) { char f; cptr v; - cptr s; + char *s; /* Start */ s = buf + 2; @@ -1682,61 +1709,55 @@ static void display_player_one_line(int entry, cptr val, byte attr) } +static void display_player_melee_bonus(int hand, int hand_entry) +{ + char buf[160]; + int show_tohit = p_ptr->dis_to_h[hand]; + int show_todam = p_ptr->dis_to_d[hand]; + object_type *o_ptr = &inventory[INVEN_RARM + hand]; + + /* Hack -- add in weapon info if known */ + if (object_is_known(o_ptr)) show_tohit += o_ptr->to_h; + if (object_is_known(o_ptr)) show_todam += o_ptr->to_d; + + /* Melee attacks */ + sprintf(buf, "(%+d,%+d)", show_tohit, show_todam); + + /* Dump the bonuses to hit/dam */ + if (!buki_motteruka(INVEN_RARM) && !buki_motteruka(INVEN_LARM)) + display_player_one_line(ENTRY_BARE_HAND, buf, TERM_L_BLUE); + else if (p_ptr->ryoute) + display_player_one_line(ENTRY_TWO_HANDS, buf, TERM_L_BLUE); + else + display_player_one_line(hand_entry, buf, TERM_L_BLUE); +} + + /* * Prints the following information on the screen. */ static void display_player_middle(void) { char buf[160]; - int show_tohit, show_todam; - object_type *o_ptr; - int tmul = 0; - int e; - - if(p_ptr->migite) - { - show_tohit = p_ptr->dis_to_h[0]; - show_todam = p_ptr->dis_to_d[0]; - o_ptr = &inventory[INVEN_RARM]; + /* Base skill */ + int show_tohit = p_ptr->dis_to_h_b; + int show_todam = 0; - /* Hack -- add in weapon info if known */ - if (object_is_known(o_ptr)) show_tohit += o_ptr->to_h; - if (object_is_known(o_ptr)) show_todam += o_ptr->to_d; + /* Range weapon */ + object_type *o_ptr = &inventory[INVEN_BOW]; - /* Melee attacks */ - sprintf(buf, "(%+d,%+d)", show_tohit, show_todam); + int tmul = 0; + int e; - /* Dump the bonuses to hit/dam */ - if(!buki_motteruka(INVEN_RARM) && !buki_motteruka(INVEN_LARM)) - display_player_one_line(ENTRY_BARE_HAND, buf, TERM_L_BLUE); - else if(p_ptr->ryoute) - 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 - display_player_one_line(ENTRY_RIGHT_HAND1, buf, TERM_L_BLUE); + if (p_ptr->migite) + { + display_player_melee_bonus(0, left_hander ? ENTRY_LEFT_HAND1 : ENTRY_RIGHT_HAND1); } - if(p_ptr->hidarite) + if (p_ptr->hidarite) { - show_tohit = p_ptr->dis_to_h[1]; - show_todam = p_ptr->dis_to_d[1]; - - o_ptr = &inventory[INVEN_LARM]; - - /* Hack -- add in weapon info if known */ - if (object_is_known(o_ptr)) show_tohit += o_ptr->to_h; - if (object_is_known(o_ptr)) show_todam += o_ptr->to_d; - - /* Melee attacks */ - sprintf(buf, "(%+d,%+d)", show_tohit, show_todam); - - /* Dump the bonuses to hit/dam */ - 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); + display_player_melee_bonus(1, left_hander ? ENTRY_RIGHT_HAND2: ENTRY_LEFT_HAND2); } else if ((p_ptr->pclass == CLASS_MONK) && (empty_hands(TRUE) & EMPTY_HAND_RARM)) { @@ -1762,13 +1783,6 @@ static void display_player_middle(void) #endif } - /* Range weapon */ - o_ptr = &inventory[INVEN_BOW]; - - /* Base skill */ - show_tohit = p_ptr->dis_to_h_b; - show_todam = 0; - /* Apply weapon bonuses */ if (object_is_known(o_ptr)) show_tohit += o_ptr->to_h; if (object_is_known(o_ptr)) show_todam += o_ptr->to_d; @@ -1838,8 +1852,8 @@ static void display_player_middle(void) } else { - if (m_list[p_ptr->riding].fast) tmp_speed += 10; - if (m_list[p_ptr->riding].slow) tmp_speed -= 10; + if (MON_FAST(&m_list[p_ptr->riding])) tmp_speed += 10; + if (MON_SLOW(&m_list[p_ptr->riding])) tmp_speed -= 10; } if (tmp_speed) @@ -1910,13 +1924,13 @@ static void display_player_middle(void) int day, hour, min; extract_day_hour_min(&day, &hour, &min); - sprintf(buf, #ifdef JP - "%dÆüÌÜ %2d:%02d", + if (day < MAX_DAYS) sprintf(buf, "%dÆüÌÜ %2d:%02d", day, hour, min); + else sprintf(buf, "*****ÆüÌÜ %2d:%02d", hour, min); #else - "Day %d %2d:%02d", + if (day < MAX_DAYS) sprintf(buf, "Day %d %2d:%02d", day, hour, min); + else sprintf(buf, "Day ***** %2d:%02d", hour, min); #endif - day, hour, min); } display_player_one_line(ENTRY_DAY, buf, TERM_L_GREEN); @@ -2270,7 +2284,8 @@ static void player_flags(u32b flgs[TR_FLAG_SIZE]) add_flag(flgs, TR_SPEED); else { - if (!inventory[INVEN_LARM].tval || p_ptr->hidarite) + if ((!inventory[INVEN_RARM].k_idx || p_ptr->migite) && + (!inventory[INVEN_LARM].k_idx || p_ptr->hidarite)) add_flag(flgs, TR_SPEED); if (p_ptr->lev>24) add_flag(flgs, TR_FREE_ACT); @@ -2340,7 +2355,7 @@ static void player_flags(u32b flgs[TR_FLAG_SIZE]) add_flag(flgs, TR_SH_FIRE); add_flag(flgs, TR_SEE_INVIS); add_flag(flgs, TR_TELEPATHY); - add_flag(flgs, TR_FEATHER); + add_flag(flgs, TR_LEVITATION); add_flag(flgs, TR_SPEED); break; case MIMIC_VAMPIRE: @@ -2379,7 +2394,7 @@ static void player_flags(u32b flgs[TR_FLAG_SIZE]) if (p_ptr->lev > 14) { add_flag(flgs, TR_REGEN); - if (p_ptr->pclass == CLASS_WARRIOR) + if ((p_ptr->pclass == CLASS_WARRIOR) || (p_ptr->pclass == CLASS_BERSERKER)) { add_flag(flgs, TR_SLOW_DIGEST); /* @@ -2441,7 +2456,7 @@ static void player_flags(u32b flgs[TR_FLAG_SIZE]) add_flag(flgs, TR_SEE_INVIS); break; case RACE_DRACONIAN: - add_flag(flgs, TR_FEATHER); + add_flag(flgs, TR_LEVITATION); if (p_ptr->lev > 4) add_flag(flgs, TR_RES_FIRE); if (p_ptr->lev > 9) @@ -2500,7 +2515,7 @@ static void player_flags(u32b flgs[TR_FLAG_SIZE]) add_flag(flgs, TR_RES_COLD); break; case RACE_SPECTRE: - add_flag(flgs, TR_FEATHER); + add_flag(flgs, TR_LEVITATION); add_flag(flgs, TR_FREE_ACT); add_flag(flgs, TR_RES_COLD); add_flag(flgs, TR_SEE_INVIS); @@ -2514,7 +2529,7 @@ static void player_flags(u32b flgs[TR_FLAG_SIZE]) break; case RACE_SPRITE: add_flag(flgs, TR_RES_LITE); - add_flag(flgs, TR_FEATHER); + add_flag(flgs, TR_LEVITATION); if (p_ptr->lev > 9) add_flag(flgs, TR_SPEED); break; @@ -2523,7 +2538,7 @@ static void player_flags(u32b flgs[TR_FLAG_SIZE]) add_flag(flgs, TR_RES_CONF); break; case RACE_ANGEL: - add_flag(flgs, TR_FEATHER); + add_flag(flgs, TR_LEVITATION); add_flag(flgs, TR_SEE_INVIS); break; case RACE_DEMON: @@ -2537,9 +2552,9 @@ static void player_flags(u32b flgs[TR_FLAG_SIZE]) add_flag(flgs, TR_SUST_CON); break; case RACE_S_FAIRY: - add_flag(flgs, TR_FEATHER); + add_flag(flgs, TR_LEVITATION); break; - case RACE_KUTA: + case RACE_KUTAR: add_flag(flgs, TR_RES_CONF); break; case RACE_ANDROID: @@ -2581,7 +2596,7 @@ static void player_flags(u32b flgs[TR_FLAG_SIZE]) if (p_ptr->muta3 & MUT3_WINGS) { - add_flag(flgs, TR_FEATHER); + add_flag(flgs, TR_LEVITATION); } if (p_ptr->muta3 & MUT3_FEARLESS) @@ -2621,7 +2636,7 @@ static void player_flags(u32b flgs[TR_FLAG_SIZE]) if (p_ptr->special_defense & KAMAE_GENBU) add_flag(flgs, TR_REFLECT); if (p_ptr->special_defense & KAMAE_SUZAKU) - add_flag(flgs, TR_FEATHER); + add_flag(flgs, TR_LEVITATION); if (p_ptr->special_defense & KAMAE_SEIRYU) { add_flag(flgs, TR_RES_FIRE); @@ -2629,7 +2644,7 @@ static void player_flags(u32b flgs[TR_FLAG_SIZE]) add_flag(flgs, TR_RES_ACID); add_flag(flgs, TR_RES_ELEC); add_flag(flgs, TR_RES_POIS); - add_flag(flgs, TR_FEATHER); + add_flag(flgs, TR_LEVITATION); add_flag(flgs, TR_SH_FIRE); add_flag(flgs, TR_SH_ELEC); add_flag(flgs, TR_SH_COLD); @@ -2653,7 +2668,7 @@ static void player_flags(u32b flgs[TR_FLAG_SIZE]) add_flag(flgs, TR_SH_FIRE); add_flag(flgs, TR_SH_ELEC); add_flag(flgs, TR_SH_COLD); - add_flag(flgs, TR_FEATHER); + add_flag(flgs, TR_LEVITATION); add_flag(flgs, TR_LITE); add_flag(flgs, TR_SEE_INVIS); add_flag(flgs, TR_TELEPATHY); @@ -2729,7 +2744,7 @@ static void tim_player_flags(u32b flgs[TR_FLAG_SIZE]) add_flag(flgs, TR_RES_CONF); add_flag(flgs, TR_REFLECT); add_flag(flgs, TR_FREE_ACT); - add_flag(flgs, TR_FEATHER); + add_flag(flgs, TR_LEVITATION); } if (p_ptr->tim_res_nether) { @@ -2758,7 +2773,7 @@ static void tim_player_flags(u32b flgs[TR_FLAG_SIZE]) add_flag(flgs, TR_SH_FIRE); add_flag(flgs, TR_SH_ELEC); add_flag(flgs, TR_SH_COLD); - add_flag(flgs, TR_FEATHER); + add_flag(flgs, TR_LEVITATION); add_flag(flgs, TR_LITE); add_flag(flgs, TR_SEE_INVIS); add_flag(flgs, TR_TELEPATHY); @@ -2771,6 +2786,18 @@ static void tim_player_flags(u32b flgs[TR_FLAG_SIZE]) add_flag(flgs, TR_SUST_CON); add_flag(flgs, TR_SUST_CHR); } + + /* Hex bonuses */ + if (p_ptr->realm1 == REALM_HEX) + { + if (hex_spelling(HEX_DEMON_AURA)) + { + add_flag(flgs, TR_SH_FIRE); + add_flag(flgs, TR_REGEN); + } + if (hex_spelling(HEX_ICE_ARMOR)) add_flag(flgs, TR_SH_COLD); + if (hex_spelling(HEX_SHOCK_CLOAK)) add_flag(flgs, TR_SH_ELEC); + } } @@ -3125,7 +3152,7 @@ display_flag_aux(row+3, col, " display_flag_aux(row+4, col, "·Ù¹ð :", TR_WARNING, &f, 0); display_flag_aux(row+5, col, "Ãپò½ :", TR_SLOW_DIGEST, &f, 0); display_flag_aux(row+6, col, "µÞ²óÉü :", TR_REGEN, &f, 0); -display_flag_aux(row+7, col, "ÉâÍ· :", TR_FEATHER, &f, 0); +display_flag_aux(row+7, col, "ÉâÍ· :", TR_LEVITATION, &f, 0); display_flag_aux(row+8, col, "±Ê±ó¸÷¸» :", TR_LITE, &f, 0); display_flag_aux(row+9, col, "¼ö¤¤ :", 0, &f, DP_CURSE); #else @@ -3136,7 +3163,7 @@ display_flag_aux(row+9, col, " display_flag_aux(row+4, col, "Warning :", TR_WARNING, &f, 0); display_flag_aux(row+5, col, "SlowDigest:", TR_SLOW_DIGEST, &f, 0); display_flag_aux(row+6, col, "Regene. :", TR_REGEN, &f, 0); - display_flag_aux(row+7, col, "Levitation:", TR_FEATHER, &f, 0); + display_flag_aux(row+7, col, "Levitation:", TR_LEVITATION, &f, 0); display_flag_aux(row+8, col, "Perm Lite :", TR_LITE, &f, 0); display_flag_aux(row+9, col, "Cursed :", 0, &f, DP_CURSE); #endif @@ -3237,49 +3264,49 @@ static void display_player_other_flag_info(void) row = 3; col = col + 12 + 7; - display_player_equippy(row-2, col+12, 0); - c_put_str(TERM_WHITE, "abcdefghijkl@", row-1, col+12); - -#ifdef JP - display_flag_aux(row+ 0, col, "¥Æ¥ì¥Ñ¥·¡¼:", TR_TELEPATHY, &f, 0); - display_flag_aux(row+ 1, col, "¼Ù°­ESP :", TR_ESP_EVIL, &f, 0); - display_flag_aux(row+ 2, col, "̵À¸ÊªESP :", TR_ESP_NONLIVING, &f, 0); - display_flag_aux(row+ 3, col, "Á±ÎÉESP :", TR_ESP_GOOD, &f, 0); - display_flag_aux(row+ 4, col, "ÉÔ»àESP :", TR_ESP_UNDEAD, &f, 0); - display_flag_aux(row+ 5, col, "°­ËâESP :", TR_ESP_DEMON, &f, 0); - display_flag_aux(row+ 6, col, "ζESP :", TR_ESP_DRAGON, &f, 0); - display_flag_aux(row+ 7, col, "¿Í´ÖESP :", TR_ESP_HUMAN, &f, 0); - display_flag_aux(row+ 8, col, "ưʪESP :", TR_ESP_ANIMAL, &f, 0); - display_flag_aux(row+ 9, col, "¥ª¡¼¥¯ESP :", TR_ESP_ORC, &f, 0); - display_flag_aux(row+10, col, "¥È¥í¥ëESP :", TR_ESP_TROLL, &f, 0); - display_flag_aux(row+11, col, "µð¿ÍESP :", TR_ESP_GIANT, &f, 0); - - display_flag_aux(row+13, col, "ÏÓÎÏ°Ý»ý :", TR_SUST_STR, &f, 0); - display_flag_aux(row+14, col, "ÃÎÎÏ°Ý»ý :", TR_SUST_INT, &f, 0); - display_flag_aux(row+15, col, "¸­¤µ°Ý»ý :", TR_SUST_WIS, &f, 0); - display_flag_aux(row+16, col, "´ïÍÑ°Ý»ý :", TR_SUST_DEX, &f, 0); - display_flag_aux(row+17, col, "Âѵװݻý :", TR_SUST_CON, &f, 0); - display_flag_aux(row+18, col, "Ì¥ÎÏ°Ý»ý :", TR_SUST_CHR, &f, 0); -#else - display_flag_aux(row+ 0, col, "Telepathy :", TR_TELEPATHY, &f, 0); - display_flag_aux(row+ 1, col, "ESP Evil :", TR_ESP_EVIL, &f, 0); - display_flag_aux(row+ 2, col, "ESP Noliv.:", TR_ESP_NONLIVING, &f, 0); - display_flag_aux(row+ 3, col, "ESP Good :", TR_ESP_GOOD, &f, 0); - display_flag_aux(row+ 4, col, "ESP Undead:", TR_ESP_UNDEAD, &f, 0); - display_flag_aux(row+ 5, col, "ESP Demon :", TR_ESP_DEMON, &f, 0); - display_flag_aux(row+ 6, col, "ESP Dragon:", TR_ESP_DRAGON, &f, 0); - display_flag_aux(row+ 7, col, "ESP Human :", TR_ESP_HUMAN, &f, 0); - display_flag_aux(row+ 8, col, "ESP Animal:", TR_ESP_ANIMAL, &f, 0); - display_flag_aux(row+ 9, col, "ESP Orc :", TR_ESP_ORC, &f, 0); - display_flag_aux(row+10, col, "ESP Troll :", TR_ESP_TROLL, &f, 0); - display_flag_aux(row+11, col, "ESP Giant :", TR_ESP_GIANT, &f, 0); - - display_flag_aux(row+13, col, "Sust Str :", TR_SUST_STR, &f, 0); - display_flag_aux(row+14, col, "Sust Int :", TR_SUST_INT, &f, 0); - display_flag_aux(row+15, col, "Sust Wis :", TR_SUST_WIS, &f, 0); - display_flag_aux(row+16, col, "Sust Dex :", TR_SUST_DEX, &f, 0); - display_flag_aux(row+17, col, "Sust Con :", TR_SUST_CON, &f, 0); - display_flag_aux(row+18, col, "Sust Chr :", TR_SUST_CHR, &f, 0); + display_player_equippy(row-2, col+13, 0); + c_put_str(TERM_WHITE, "abcdefghijkl@", row-1, col+13); + +#ifdef JP + display_flag_aux(row+ 0, col, "¥Æ¥ì¥Ñ¥·¡¼ :", TR_TELEPATHY, &f, 0); + display_flag_aux(row+ 1, col, "¼Ù°­ESP :", TR_ESP_EVIL, &f, 0); + display_flag_aux(row+ 2, col, "̵À¸ÊªESP :", TR_ESP_NONLIVING, &f, 0); + display_flag_aux(row+ 3, col, "Á±ÎÉESP :", TR_ESP_GOOD, &f, 0); + display_flag_aux(row+ 4, col, "ÉÔ»àESP :", TR_ESP_UNDEAD, &f, 0); + display_flag_aux(row+ 5, col, "°­ËâESP :", TR_ESP_DEMON, &f, 0); + display_flag_aux(row+ 6, col, "ζESP :", TR_ESP_DRAGON, &f, 0); + display_flag_aux(row+ 7, col, "¿Í´ÖESP :", TR_ESP_HUMAN, &f, 0); + display_flag_aux(row+ 8, col, "ưʪESP :", TR_ESP_ANIMAL, &f, 0); + display_flag_aux(row+ 9, col, "¥ª¡¼¥¯ESP :", TR_ESP_ORC, &f, 0); + display_flag_aux(row+10, col, "¥È¥í¥ëESP :", TR_ESP_TROLL, &f, 0); + display_flag_aux(row+11, col, "µð¿ÍESP :", TR_ESP_GIANT, &f, 0); + display_flag_aux(row+12, col, "¥æ¥Ë¡¼¥¯ESP:", TR_ESP_UNIQUE, &f, 0); + display_flag_aux(row+13, col, "ÏÓÎÏ°Ý»ý :", TR_SUST_STR, &f, 0); + display_flag_aux(row+14, col, "ÃÎÎÏ°Ý»ý :", TR_SUST_INT, &f, 0); + display_flag_aux(row+15, col, "¸­¤µ°Ý»ý :", TR_SUST_WIS, &f, 0); + display_flag_aux(row+16, col, "´ïÍÑ°Ý»ý :", TR_SUST_DEX, &f, 0); + display_flag_aux(row+17, col, "Âѵװݻý :", TR_SUST_CON, &f, 0); + display_flag_aux(row+18, col, "Ì¥ÎÏ°Ý»ý :", TR_SUST_CHR, &f, 0); +#else + display_flag_aux(row+ 0, col, "Telepathy :", TR_TELEPATHY, &f, 0); + display_flag_aux(row+ 1, col, "ESP Evil :", TR_ESP_EVIL, &f, 0); + display_flag_aux(row+ 2, col, "ESP Noliv. :", TR_ESP_NONLIVING, &f, 0); + display_flag_aux(row+ 3, col, "ESP Good :", TR_ESP_GOOD, &f, 0); + display_flag_aux(row+ 4, col, "ESP Undead :", TR_ESP_UNDEAD, &f, 0); + display_flag_aux(row+ 5, col, "ESP Demon :", TR_ESP_DEMON, &f, 0); + display_flag_aux(row+ 6, col, "ESP Dragon :", TR_ESP_DRAGON, &f, 0); + display_flag_aux(row+ 7, col, "ESP Human :", TR_ESP_HUMAN, &f, 0); + display_flag_aux(row+ 8, col, "ESP Animal :", TR_ESP_ANIMAL, &f, 0); + display_flag_aux(row+ 9, col, "ESP Orc :", TR_ESP_ORC, &f, 0); + display_flag_aux(row+10, col, "ESP Troll :", TR_ESP_TROLL, &f, 0); + display_flag_aux(row+11, col, "ESP Giant :", TR_ESP_GIANT, &f, 0); + display_flag_aux(row+12, col, "ESP Unique :", TR_ESP_UNIQUE, &f, 0); + display_flag_aux(row+13, col, "Sust Str :", TR_SUST_STR, &f, 0); + display_flag_aux(row+14, col, "Sust Int :", TR_SUST_INT, &f, 0); + display_flag_aux(row+15, col, "Sust Wis :", TR_SUST_WIS, &f, 0); + display_flag_aux(row+16, col, "Sust Dex :", TR_SUST_DEX, &f, 0); + display_flag_aux(row+17, col, "Sust Con :", TR_SUST_CON, &f, 0); + display_flag_aux(row+18, col, "Sust Chr :", TR_SUST_CHR, &f, 0); #endif @@ -3838,17 +3865,17 @@ void display_player(int mode) *statmsg = '\0'; - if (p_ptr->is_dead && p_ptr->total_winner) + if (p_ptr->is_dead) { + if (p_ptr->total_winner) + { #ifdef JP - strcpy(statmsg, "¡Ä¤¢¤Ê¤¿¤Ï¾¡Íø¤Î¸å°úÂष¤¿¡£"); + sprintf(statmsg, "¡Ä¤¢¤Ê¤¿¤Ï¾¡Íø¤Î¸å%s¤·¤¿¡£", streq(p_ptr->died_from, "Seppuku") ? "ÀÚÊ¢" : "°úÂà"); #else - strcpy(statmsg, "...You retired from the adventure after the winning."); + sprintf(statmsg, "...You %s after the winning.", streq(p_ptr->died_from, "Seppuku") ? "did Seppuku" : "retired from the adventure"); #endif - } - else if (p_ptr->is_dead) - { - if (!dun_level) + } + else if (!dun_level) { #ifdef JP sprintf(statmsg, "¡Ä¤¢¤Ê¤¿¤Ï%s¤Ç%s¤Ë»¦¤µ¤ì¤¿¡£", map_name(), p_ptr->died_from); @@ -4100,11 +4127,7 @@ static void dump_aux_display_player(FILE *fff) fprintf(fff, "%s\n", buf); } - for (i = 0; (unsigned int) i < (p_ptr->count / 80); i++) - fprintf(fff, " "); fprintf(fff, "\n"); - for (i = 0; (unsigned int) i < (p_ptr->count % 80); i++) - fprintf(fff, " "); } @@ -4115,6 +4138,7 @@ static void dump_aux_pet(FILE *fff) { int i; bool pet = FALSE; + bool pet_settings = FALSE; char pet_name[80]; for (i = m_max - 1; i >= 1; i--) @@ -4123,13 +4147,14 @@ static void dump_aux_pet(FILE *fff) if (!m_ptr->r_idx) continue; if (!is_pet(m_ptr)) continue; + pet_settings = TRUE; if (!m_ptr->nickname && (p_ptr->riding != i)) continue; if (!pet) { #ifdef JP - fprintf(fff, "\n [¼ç¤Ê¥Ú¥Ã¥È]\n\n"); + fprintf(fff, "\n\n [¼ç¤Ê¥Ú¥Ã¥È]\n\n"); #else - fprintf(fff, "\n [leading pets]\n\n"); + fprintf(fff, "\n\n [Leading Pets]\n\n"); #endif pet = TRUE; } @@ -4137,7 +4162,52 @@ static void dump_aux_pet(FILE *fff) fprintf(fff, "%s\n", pet_name); } - if (pet) fprintf(fff, "\n"); + if (pet_settings) + { +#ifdef JP + fprintf(fff, "\n\n [¥Ú¥Ã¥È¤Ø¤ÎÌ¿Îá]\n"); +#else + fprintf(fff, "\n\n [Command for Pets]\n"); +#endif + +#ifdef JP + fprintf(fff, "\n ¥É¥¢¤ò³«¤±¤ë: %s", (p_ptr->pet_extra_flags & PF_OPEN_DOORS) ? "ON" : "OFF"); +#else + fprintf(fff, "\n Pets open doors: %s", (p_ptr->pet_extra_flags & PF_OPEN_DOORS) ? "ON" : "OFF"); +#endif + +#ifdef JP + fprintf(fff, "\n ¥¢¥¤¥Æ¥à¤ò½¦¤¦: %s", (p_ptr->pet_extra_flags & PF_PICKUP_ITEMS) ? "ON" : "OFF"); +#else + fprintf(fff, "\n Pets pick up items: %s", (p_ptr->pet_extra_flags & PF_PICKUP_ITEMS) ? "ON" : "OFF"); +#endif + +#ifdef JP + fprintf(fff, "\n ¥Æ¥ì¥Ý¡¼¥È·ÏËâË¡¤ò»È¤¦: %s", (p_ptr->pet_extra_flags & PF_TELEPORT) ? "ON" : "OFF"); +#else + fprintf(fff, "\n Allow teleport: %s", (p_ptr->pet_extra_flags & PF_TELEPORT) ? "ON" : "OFF"); +#endif + +#ifdef JP + fprintf(fff, "\n ¹¶·âËâË¡¤ò»È¤¦: %s", (p_ptr->pet_extra_flags & PF_ATTACK_SPELL) ? "ON" : "OFF"); +#else + fprintf(fff, "\n Allow cast attack spell: %s", (p_ptr->pet_extra_flags & PF_ATTACK_SPELL) ? "ON" : "OFF"); +#endif + +#ifdef JP + fprintf(fff, "\n ¾¤´­ËâË¡¤ò»È¤¦: %s", (p_ptr->pet_extra_flags & PF_SUMMON_SPELL) ? "ON" : "OFF"); +#else + fprintf(fff, "\n Allow cast summon spell: %s", (p_ptr->pet_extra_flags & PF_SUMMON_SPELL) ? "ON" : "OFF"); +#endif + +#ifdef JP + fprintf(fff, "\n ¥×¥ì¥¤¥ä¡¼¤ò´¬¤­¹þ¤àÈÏ°ÏËâË¡¤ò»È¤¦: %s", (p_ptr->pet_extra_flags & PF_BALL_SPELL) ? "ON" : "OFF"); +#else + fprintf(fff, "\n Allow involve player in area spell: %s", (p_ptr->pet_extra_flags & PF_BALL_SPELL) ? "ON" : "OFF"); +#endif + + fputc('\n', fff); + } } @@ -4162,9 +4232,9 @@ static void dump_aux_class_special(FILE *fff) for (i=0;i<60;i++) { p[i][0] = '\0'; } #ifdef JP - strcat(p[col], "\n [³Ø½¬ºÑ¤ß¤ÎÀÄËâË¡]\n"); + strcat(p[col], "\n\n [³Ø½¬ºÑ¤ß¤ÎÀÄËâË¡]\n"); #else - strcat(p[col], "\n [Learned blue magic]\n"); + strcat(p[col], "\n\n [Learned Blue Magic]\n"); #endif @@ -4178,7 +4248,7 @@ static void dump_aux_class_special(FILE *fff) #ifdef JP strcat(p[col], "\n [¥Ü¥ë¥È·¿]\n"); #else - strcat(p[col], "\n [Bolt type]\n"); + strcat(p[col], "\n [Bolt Type]\n"); #endif break; @@ -4186,7 +4256,7 @@ static void dump_aux_class_special(FILE *fff) #ifdef JP strcat(p[col], "\n [¥Ü¡¼¥ë·¿]\n"); #else - strcat(p[col], "\n [Ball type]\n"); + strcat(p[col], "\n [Ball Type]\n"); #endif break; @@ -4210,7 +4280,7 @@ static void dump_aux_class_special(FILE *fff) #ifdef JP strcat(p[col], "\n [ ¤½¤Î¾ ]\n"); #else - strcat(p[col], "\n [Other type]\n"); + strcat(p[col], "\n [Other Type]\n"); #endif break; } @@ -4276,7 +4346,88 @@ static void dump_aux_class_special(FILE *fff) for (i=0;i<=col;i++) { - fprintf(fff, p[i]); + fputs(p[i], fff); + } + } + else if (p_ptr->pclass == CLASS_MAGIC_EATER) + { + char s[EATER_EXT][MAX_NLEN]; + int tval, ext, k_idx; + int i, magic_num; + +#ifdef JP + fprintf(fff, "\n\n [¼è¤ê¹þ¤ó¤ÀËâË¡Æ»¶ñ]\n"); +#else + fprintf(fff, "\n\n [Magic devices eaten]\n"); +#endif + + for (ext = 0; ext < 3; ext++) + { + int eat_num = 0; + + /* Dump an extent name */ + switch (ext) + { + case 0: + tval = TV_STAFF; +#ifdef JP + fprintf(fff, "\n[¾ó]\n"); +#else + fprintf(fff, "\n[Staffs]\n"); +#endif + break; + case 1: + tval = TV_WAND; +#ifdef JP + fprintf(fff, "\n[ËâË¡ËÀ]\n"); +#else + fprintf(fff, "\n[Wands]\n"); +#endif + break; + case 2: + tval = TV_ROD; +#ifdef JP + fprintf(fff, "\n[¥í¥Ã¥É]\n"); +#else + fprintf(fff, "\n[Rods]\n"); +#endif + break; + } + + /* Get magic device names that were eaten */ + for (i = 0; i < EATER_EXT; i++) + { + int idx = EATER_EXT * ext + i; + + magic_num = p_ptr->magic_num2[idx]; + if (!magic_num) continue; + + k_idx = lookup_kind(tval, i); + if (!k_idx) continue; + sprintf(s[eat_num], "%23s (%2d)", (k_name + k_info[k_idx].name), magic_num); + eat_num++; + } + + /* Dump magic devices in this extent */ + if (eat_num > 0) + { + for (i = 0; i < eat_num; i++) + { + fputs(s[i], fff); + if (i % 3 < 2) fputs(" ", fff); + else fputs("\n", fff); + } + + if (i % 3 > 0) fputs("\n", fff); + } + else /* Not found */ + { +#ifdef JP + fputs(" (¤Ê¤·)\n", fff); +#else + fputs(" (none)\n", fff); +#endif + } } } } @@ -4295,7 +4446,7 @@ static void dump_aux_quest(FILE *fff) #ifdef JP fprintf(fff, "\n\n [¥¯¥¨¥¹¥È¾ðÊó]\n"); #else - fprintf(fff, "\n\n [Quest information]\n"); + fprintf(fff, "\n\n [Quest Information]\n"); #endif /* Allocate Memory */ @@ -4312,6 +4463,7 @@ static void dump_aux_quest(FILE *fff) do_cmd_knowledge_quests_completed(fff, quest_num); fputc('\n', fff); do_cmd_knowledge_quests_failed(fff, quest_num); + fputc('\n', fff); /* Free Memory */ C_KILL(quest_num, max_quests, int); @@ -4332,13 +4484,13 @@ static void dump_aux_last_message(FILE *fff) #ifdef JP fprintf(fff, "\n [»à¤ÌľÁ°¤Î¥á¥Ã¥»¡¼¥¸]\n\n"); #else - fprintf(fff, "\n [Last messages]\n\n"); + fprintf(fff, "\n [Last Messages]\n\n"); #endif for (i = MIN(message_num(), 30); i >= 0; i--) { fprintf(fff,"> %s\n",message_str((s16b)i)); } - fprintf(fff, "\n"); + fputc('\n', fff); } /* Hack -- *Winning* message */ @@ -4347,9 +4499,10 @@ static void dump_aux_last_message(FILE *fff) #ifdef JP fprintf(fff, "\n [*¾¡Íø*¥á¥Ã¥»¡¼¥¸]\n\n"); #else - fprintf(fff, "\n [*Winning* message]\n\n"); + fprintf(fff, "\n [*Winning* Message]\n\n"); #endif fprintf(fff," %s\n", p_ptr->last_message); + fputc('\n', fff); } } } @@ -4363,9 +4516,9 @@ static void dump_aux_recall(FILE *fff) int y; #ifdef JP - fprintf(fff, "\n\n [µ¢´Ô¾ì½ê]\n\n"); + fprintf(fff, "\n [µ¢´Ô¾ì½ê]\n\n"); #else - fprintf(fff, "\n\n [Recall Depth]\n\n"); + fprintf(fff, "\n [Recall Depth]\n\n"); #endif for (y = 1; y < max_d_idx; y++) @@ -4397,7 +4550,7 @@ static void dump_aux_options(FILE *fff) #ifdef JP fprintf(fff, "\n [¥ª¥×¥·¥ç¥óÀßÄê]\n"); #else - fprintf(fff, "\n [Option settings]\n"); + fprintf(fff, "\n [Option Settings]\n"); #endif @@ -4514,16 +4667,16 @@ static void dump_aux_options(FILE *fff) #endif - fprintf(fff,"\n"); + fputc('\n', fff); if (p_ptr->noscore) #ifdef JP - fprintf(fff, "\n ²¿¤«ÉÔÀµ¤Ê¤³¤È¤ò¤·¤Æ¤·¤Þ¤Ã¤Æ¤¤¤Þ¤¹¡£"); + fprintf(fff, "\n ²¿¤«ÉÔÀµ¤Ê¤³¤È¤ò¤·¤Æ¤·¤Þ¤Ã¤Æ¤¤¤Þ¤¹¡£\n"); #else - fprintf(fff, "\n You have done something illegal."); + fprintf(fff, "\n You have done something illegal.\n"); #endif - fprintf(fff,"\n"); + fputc('\n', fff); } @@ -4593,8 +4746,8 @@ static void dump_aux_monsters(FILE *fff) /* Monsters slain */ int k; - unsigned long uniq_total = 0; - unsigned long norm_total = 0; + long uniq_total = 0; + long norm_total = 0; s16b *who; /* Sort by monster level */ @@ -4603,7 +4756,7 @@ static void dump_aux_monsters(FILE *fff) #ifdef JP fprintf(fff, "\n [Åݤ·¤¿¥â¥ó¥¹¥¿¡¼]\n\n"); #else - fprintf(fff, "\n [Defeated monsters]\n\n"); + fprintf(fff, "\n [Defeated Monsters]\n\n"); #endif /* Allocate the "who" array */ @@ -4655,9 +4808,9 @@ static void dump_aux_monsters(FILE *fff) else if (uniq_total == 0) { #ifdef JP - fprintf(fff,"%luÂΤÎŨ¤òÅݤ·¤Æ¤¤¤Þ¤¹¡£\n", norm_total); + fprintf(fff,"%ldÂΤÎŨ¤òÅݤ·¤Æ¤¤¤Þ¤¹¡£\n", norm_total); #else - fprintf(fff,"You have defeated %lu %s.\n", norm_total, norm_total == 1 ? "enemy" : "enemies"); + fprintf(fff,"You have defeated %ld %s.\n", norm_total, norm_total == 1 ? "enemy" : "enemies"); #endif } @@ -4665,9 +4818,9 @@ static void dump_aux_monsters(FILE *fff) else /* if (uniq_total > 0) */ { #ifdef JP - fprintf(fff, "%luÂΤΥæ¥Ë¡¼¥¯¡¦¥â¥ó¥¹¥¿¡¼¤ò´Þ¤à¡¢¹ç·×%luÂΤÎŨ¤òÅݤ·¤Æ¤¤¤Þ¤¹¡£\n", uniq_total, norm_total); + fprintf(fff, "%ldÂΤΥæ¥Ë¡¼¥¯¡¦¥â¥ó¥¹¥¿¡¼¤ò´Þ¤à¡¢¹ç·×%ldÂΤÎŨ¤òÅݤ·¤Æ¤¤¤Þ¤¹¡£\n", uniq_total, norm_total); #else - fprintf(fff, "You have defeated %lu %s including %lu unique monster%s in total.\n", norm_total, norm_total == 1 ? "enemy" : "enemies", uniq_total, (uniq_total == 1 ? "" : "s")); + fprintf(fff, "You have defeated %ld %s including %ld unique monster%s in total.\n", norm_total, norm_total == 1 ? "enemy" : "enemies", uniq_total, (uniq_total == 1 ? "" : "s")); #endif @@ -4679,9 +4832,9 @@ static void dump_aux_monsters(FILE *fff) ang_sort(who, &why, uniq_total); #ifdef JP - fprintf(fff, "\n¡Ô¾å°Ì%luÂΤΥæ¥Ë¡¼¥¯¡¦¥â¥ó¥¹¥¿¡¼¡Õ\n", MIN(uniq_total, 10)); + fprintf(fff, "\n¡Ô¾å°Ì%ldÂΤΥæ¥Ë¡¼¥¯¡¦¥â¥ó¥¹¥¿¡¼¡Õ\n", MIN(uniq_total, 10)); #else - fprintf(fff, "\n< Unique monsters top %lu >\n", MIN(uniq_total, 10)); + fprintf(fff, "\n< Unique monsters top %ld >\n", MIN(uniq_total, 10)); #endif /* Print top 10 */ @@ -4734,6 +4887,8 @@ static void dump_aux_race_history(FILE *fff) fprintf(fff, "\n You were a %s before.", race_info[i].title); #endif } + + fputc('\n', fff); } } @@ -4747,6 +4902,7 @@ static void dump_aux_realm_history(FILE *fff) { int i; + fputc('\n', fff); for (i = 0; i < MAX_MAGIC; i++) { if (!(p_ptr->old_realm & 1L << i)) continue; @@ -4756,6 +4912,7 @@ static void dump_aux_realm_history(FILE *fff) fprintf(fff, "\n You were able to use %s magic before.", realm_names[i+1]); #endif } + fputc('\n', fff); } } @@ -4797,9 +4954,6 @@ static void dump_aux_mutations(FILE *fff) dump_mutations(fff); } - - /* Skip some lines */ - fprintf(fff, "\n\n"); } @@ -4823,7 +4977,7 @@ static void dump_aux_equipment_inventory(FILE *fff) for (i = INVEN_RARM; i < INVEN_TOTAL; i++) { object_desc(o_name, &inventory[i], 0); - if ((i == INVEN_LARM) && p_ptr->ryoute) + if ((((i == INVEN_RARM) && p_ptr->hidarite) || ((i == INVEN_LARM) && p_ptr->migite)) && p_ptr->ryoute) #ifdef JP strcpy(o_name, "(Éð´ï¤òξ¼ê»ý¤Á)"); #else @@ -4966,6 +5120,7 @@ errr make_character_dump(FILE *fff) dump_aux_class_special(fff); dump_aux_mutations(fff); dump_aux_pet(fff); + fputs("\n\n", fff); dump_aux_equipment_inventory(fff); dump_aux_home_museum(fff); @@ -5098,7 +5253,7 @@ static void show_file_aux_line(cptr str, int cy, cptr shower) /* Search for a shower string in the line */ if (shower) { - ptr = my_strstr(&lcstr[i], shower); + ptr = my_strstr(&lcstr[i], shower); if (ptr) showercol = ptr - &lcstr[i]; } @@ -5217,6 +5372,7 @@ bool show_file(bool show_version, cptr name, cptr what, int line, int mode) /* Hold strings to find/show */ char finder_str[81]; char shower_str[81]; + char back_str[81]; /* String to show */ cptr shower = NULL; @@ -5567,9 +5723,10 @@ prt("[ /* Get a special key code */ skey = inkey_special(TRUE); - /* Show the help for the help */ - if (skey == '?') + switch (skey) { + /* Show the help for the help */ + case '?': /* Hack - prevent silly recursion */ #ifdef JP if (strcmp(name, "jhelpinfo.txt") != 0) @@ -5578,11 +5735,10 @@ prt("[ if (strcmp(name, "helpinfo.txt") != 0) show_file(TRUE, "helpinfo.txt", NULL, 0, mode); #endif - } + break; /* Hack -- try showing */ - if (skey == '=') - { + case '=': /* Get "shower" */ #ifdef JP prt("¶¯Ä´: ", hgt - 1, 0); @@ -5590,18 +5746,25 @@ prt("[ prt("Show: ", hgt - 1, 0); #endif - (void)askfor(shower_str, 80); - - /* Make it lowercase */ - str_tolower(shower_str); + strcpy(back_str, shower_str); + if (askfor(shower_str, 80)) + { + if (shower_str[0]) + { + /* Make it lowercase */ + str_tolower(shower_str); - /* Show it */ - shower = shower_str; - } + /* Show it */ + shower = shower_str; + } + else shower = NULL; /* Stop showing */ + } + else strcpy(shower_str, back_str); + break; /* Hack -- try finding */ - if (skey == '/' || skey == KTRL('s')) - { + case '/': + case KTRL('s'): /* Get "finder" */ #ifdef JP prt("¸¡º÷: ", hgt - 1, 0); @@ -5609,113 +5772,113 @@ prt("[ prt("Find: ", hgt - 1, 0); #endif - + strcpy(back_str, finder_str); if (askfor(finder_str, 80)) { - /* Find it */ - find = finder_str; - back = line; - line = line + 1; + if (finder_str[0]) + { + /* Find it */ + find = finder_str; + back = line; + line = line + 1; - /* Make finder lowercase */ - str_tolower(finder_str); + /* Make finder lowercase */ + str_tolower(finder_str); - /* Show it */ - shower = finder_str; + /* Show it */ + shower = finder_str; + } + else shower = NULL; /* Stop showing */ } - } + else strcpy(finder_str, back_str); + break; /* Hack -- go to a specific line */ - if (skey == '#') - { - char tmp[81]; + case '#': + { + char tmp[81]; #ifdef JP -prt("¹Ô: ", hgt - 1, 0); + prt("¹Ô: ", hgt - 1, 0); #else - prt("Goto Line: ", hgt - 1, 0); + prt("Goto Line: ", hgt - 1, 0); #endif - strcpy(tmp, "0"); + strcpy(tmp, "0"); - if (askfor(tmp, 80)) - { - line = atoi(tmp); + if (askfor(tmp, 80)) line = atoi(tmp); } - } + break; /* Hack -- go to the top line */ - if (skey == SKEY_TOP) - { + case SKEY_TOP: line = 0; - } + break; /* Hack -- go to the bottom line */ - if (skey == SKEY_BOTTOM) - { - line = ((size-1)/rows)*rows; - } + case SKEY_BOTTOM: + line = ((size - 1) / rows) * rows; + break; /* Hack -- go to a specific file */ - if (skey == '%') - { - char tmp[81]; + case '%': + { + char tmp[81]; #ifdef JP -prt("¥Õ¥¡¥¤¥ë¡¦¥Í¡¼¥à: ", hgt - 1, 0); -strcpy(tmp, "jhelp.hlp"); + prt("¥Õ¥¡¥¤¥ë¡¦¥Í¡¼¥à: ", hgt - 1, 0); + strcpy(tmp, "jhelp.hlp"); #else - prt("Goto File: ", hgt - 1, 0); - strcpy(tmp, "help.hlp"); + prt("Goto File: ", hgt - 1, 0); + strcpy(tmp, "help.hlp"); #endif - - if (askfor(tmp, 80)) - { - if (!show_file(TRUE, tmp, NULL, 0, mode)) skey = 'q'; + if (askfor(tmp, 80)) + { + if (!show_file(TRUE, tmp, NULL, 0, mode)) skey = 'q'; + } } - } + break; /* Allow backing up */ - if (skey == '-') - { + case '-': line = line + (reverse ? rows : -rows); if (line < 0) line = 0; - } + break; /* One page up */ - if (skey == SKEY_PGUP) - { + case SKEY_PGUP: line = line - rows; if (line < 0) line = 0; - } + break; /* Advance a single line */ - if ((skey == '\n') || (skey == '\r')) - { + case '\n': + case '\r': line = line + (reverse ? -1 : 1); if (line < 0) line = 0; - } - + break; /* Move up / down */ - if (skey == '8' || skey == SKEY_UP) - { + case '8': + case SKEY_UP: line--; if (line < 0) line = 0; - } + break; - if (skey == '2' || skey == SKEY_DOWN) line++; + case '2': + case SKEY_DOWN: + line++; + break; /* Advance one page */ - if (skey == ' ') - { + case ' ': line = line + (reverse ? -rows : rows); if (line < 0) line = 0; - } + break; /* One page down */ - if (skey == SKEY_PGDOWN) - { + case SKEY_PGDOWN: line = line + rows; + break; } /* Recurse on numbers */ @@ -5744,14 +5907,11 @@ strcpy(tmp, "jhelp.hlp"); strcpy (xtmp, ""); #ifdef JP - if (!get_string("¥Õ¥¡¥¤¥ë̾: ", xtmp, 80)) + if (!get_string("¥Õ¥¡¥¤¥ë̾: ", xtmp, 80)) continue; #else - if (!get_string("File name: ", xtmp, 80)) + if (!get_string("File name: ", xtmp, 80)) continue; #endif - { - continue; - } - + /* Close it */ my_fclose(fff); @@ -5767,16 +5927,15 @@ strcpy(tmp, "jhelp.hlp"); if (!(fff && ffp)) { #ifdef JP -msg_print("¥Õ¥¡¥¤¥ë¤¬³«¤±¤Þ¤»¤ó¡£"); + msg_print("¥Õ¥¡¥¤¥ë¤ò³«¤±¤Þ¤»¤ó¡£"); #else msg_print("Failed to open file."); #endif - skey = ESCAPE; break; } - sprintf(xtmp, "%s: %s", player_name, what); + sprintf(xtmp, "%s: %s", player_name, what ? what : caption); my_fputs(ffp, xtmp, 80); my_fputs(ffp, "\n", 80); @@ -5792,8 +5951,7 @@ msg_print(" } /* Return to last screen */ - if (skey == ESCAPE) break; - if (skey == '<') break; + if ((skey == ESCAPE) || (skey == '<')) break; /* Exit on the ^q */ if (skey == KTRL('q')) skey = 'q'; @@ -5935,9 +6093,11 @@ quit_fmt("'%s' player_base[k++] = '_'; i += strlen(PATH_SEP); } + /* Convert some characters to underscore */ #ifdef MSDOS - /* Convert space, dot, and underscore to underscore */ - else if (my_strchr(". _", c)) player_base[k++] = '_'; + else if (my_strchr(" \"*+,./:;<=>?[\\]|", c)) player_base[k++] = '_'; +#elif defined(WINDOWS) + else if (my_strchr("\"*,/:;<>?\\|", c)) player_base[k++] = '_'; #endif else if (isprint(c)) player_base[k++] = c; } @@ -6042,7 +6202,8 @@ void get_name(void) /* Use the name */ strcpy(player_name, tmp); } - else if (0 == strlen(player_name)) + + if (0 == strlen(player_name)) { /* Use default name */ strcpy(player_name, "PLAYER"); @@ -6125,10 +6286,18 @@ prt(" { char buf[1024] = ""; + do + { #ifdef JP - while (!get_string("*¾¡Íø*¥á¥Ã¥»¡¼¥¸: ", buf, sizeof buf)) ; + while (!get_string("*¾¡Íø*¥á¥Ã¥»¡¼¥¸: ", buf, sizeof buf)) ; #else - while (!get_string("*Winning* message: ", buf, sizeof buf)) ; + while (!get_string("*Winning* message: ", buf, sizeof buf)) ; +#endif + } +#ifdef JP + while (!get_check_strict("¤è¤í¤·¤¤¤Ç¤¹¤«¡©", CHECK_NO_HISTORY)); +#else + while (!get_check_strict("Are you sure? ", CHECK_NO_HISTORY)); #endif if (buf[0]) @@ -6260,6 +6429,9 @@ prt(" /* Update stuff */ update_stuff(); + /* Initialize monster process */ + mproc_init(); + /* HACK -- reset the hackish flag */ hack_mind = TRUE; } @@ -6343,9 +6515,10 @@ long total_points(void) } +#define GRAVE_LINE_WIDTH 31 /* - * Centers a string within a 31 character string -JWT- + * Centers a string within a GRAVE_LINE_WIDTH character string -JWT- */ static void center_string(char *buf, cptr str) { @@ -6355,10 +6528,10 @@ static void center_string(char *buf, cptr str) i = strlen(str); /* Necessary border */ - j = 15 - i / 2; + j = GRAVE_LINE_WIDTH / 2 - i / 2; /* Mega-Hack */ - (void)sprintf(buf, "%*s%s%*s", j, "", str, 31 - i - j, ""); + (void)sprintf(buf, "%*s%s%*s", j, "", str, GRAVE_LINE_WIDTH - i - j, ""); } @@ -6453,20 +6626,17 @@ static void print_tomb(void) /* Print the text-tombstone */ if (!done) { - cptr p; - - char tmp[160]; - - char buf[1024]; -#ifndef JP - char dummy[80]; + cptr p; + char tmp[160]; + char buf[1024]; + char dummy[80]; + char *t; + FILE *fp; + time_t ct = time((time_t)0); +#ifdef JP + int extra_line = 0; #endif - FILE *fp; - - time_t ct = time((time_t)0); - - /* Clear screen */ Term_clear(); @@ -6477,7 +6647,6 @@ static void print_tomb(void) path_build(buf, sizeof(buf), ANGBAND_DIR_FILE, "dead.txt"); #endif - /* Open the News file */ fp = my_fopen(buf, "r"); @@ -6497,17 +6666,15 @@ static void print_tomb(void) my_fclose(fp); } - /* King or Queen */ if (p_ptr->total_winner || (p_ptr->lev > PY_MAX_LEVEL)) { #ifdef JP - /* ±ÑÆüÀÚ¤êÂؤ¨ */ - p= "°ÎÂç¤Ê¤ë¼Ô"; + /* ±ÑÆüÀÚ¤êÂؤ¨ */ + p= "°ÎÂç¤Ê¤ë¼Ô"; #else p = "Magnificent"; #endif - } /* Normal */ @@ -6527,47 +6694,40 @@ static void print_tomb(void) center_string(buf, p); put_str(buf, 8, 11); - center_string(buf, cp_ptr->title); - put_str(buf, 10, 11); #ifdef JP -(void)sprintf(tmp, "¥ì¥Ù¥ë: %d", (int)p_ptr->lev); + (void)sprintf(tmp, "¥ì¥Ù¥ë: %d", (int)p_ptr->lev); #else (void)sprintf(tmp, "Level: %d", (int)p_ptr->lev); #endif - center_string(buf, tmp); put_str(buf, 11, 11); #ifdef JP -(void)sprintf(tmp, "·Ð¸³ÃÍ: %ld", (long)p_ptr->exp); + (void)sprintf(tmp, "·Ð¸³ÃÍ: %ld", (long)p_ptr->exp); #else (void)sprintf(tmp, "Exp: %ld", (long)p_ptr->exp); #endif - center_string(buf, tmp); put_str(buf, 12, 11); #ifdef JP -(void)sprintf(tmp, "½ê»ý¶â: %ld", (long)p_ptr->au); + (void)sprintf(tmp, "½ê»ý¶â: %ld", (long)p_ptr->au); #else (void)sprintf(tmp, "AU: %ld", (long)p_ptr->au); #endif - center_string(buf, tmp); put_str(buf, 13, 11); #ifdef JP - /* Êè¤Ë¹ï¤à¸ÀÍÕ¤ò¥ª¥ê¥¸¥Ê¥ë¤è¤êºÙ¤«¤¯É½¼¨ */ - if (streq(p_ptr->died_from, "ÅÓÃ潪λ")) - { - strcpy(tmp, "<¼«»¦>"); - } - else - { - if (streq(p_ptr->died_from, "ripe")) + /* Êè¤Ë¹ï¤à¸ÀÍÕ¤ò¥ª¥ê¥¸¥Ê¥ë¤è¤êºÙ¤«¤¯É½¼¨ */ + if (streq(p_ptr->died_from, "ÅÓÃ潪λ")) + { + strcpy(tmp, "<¼«»¦>"); + } + else if (streq(p_ptr->died_from, "ripe")) { strcpy(tmp, "°úÂà¸å¤ËÅ·¼÷¤òÁ´¤¦"); } @@ -6577,71 +6737,105 @@ static void print_tomb(void) } else { - strcpy(tmp, p_ptr->died_from); - } - } - center_string(buf, tmp); - put_str(buf, 14, 11); - - if(!streq(p_ptr->died_from, "ripe") && !streq(p_ptr->died_from, "Seppuku")) - { - if( dun_level == 0 ) - { - cptr town = (p_ptr->town_num ? "³¹" : "¹ÓÌî"); - if(streq(p_ptr->died_from, "ÅÓÃ潪λ")) + roff_to_buf(p_ptr->died_from, GRAVE_LINE_WIDTH + 1, tmp, sizeof tmp); + t = tmp + strlen(tmp) + 1; + if (*t) { - sprintf(tmp, "%s¤Ç»à¤ó¤À", town); - } - else - { - sprintf(tmp, "¤Ë%s¤Ç»¦¤µ¤ì¤¿", town); + strcpy(dummy, t); /* 2nd line */ + if (*(t + strlen(t) + 1)) /* Does 3rd line exist? */ + { + for (t = dummy + strlen(dummy) - 2; iskanji(*(t - 1)); t--) /* Loop */; + strcpy(t, "¡Ä"); + } + else if (my_strstr(tmp, "¡Ø") && suffix(dummy, "¡Ù")) + { + char dummy2[80]; + char *name_head = my_strstr(tmp, "¡Ø"); + sprintf(dummy2, "%s%s", name_head, dummy); + if (strlen(dummy2) <= GRAVE_LINE_WIDTH) + { + strcpy(dummy, dummy2); + *name_head = '\0'; + } + } + else if (my_strstr(tmp, "¡Ö") && suffix(dummy, "¡×")) + { + char dummy2[80]; + char *name_head = my_strstr(tmp, "¡Ö"); + sprintf(dummy2, "%s%s", name_head, dummy); + if (strlen(dummy2) <= GRAVE_LINE_WIDTH) + { + strcpy(dummy, dummy2); + *name_head = '\0'; + } + } + center_string(buf, dummy); + put_str(buf, 15, 11); + extra_line = 1; } } - else + center_string(buf, tmp); + put_str(buf, 14, 11); + + if (!streq(p_ptr->died_from, "ripe") && !streq(p_ptr->died_from, "Seppuku")) { - if(streq(p_ptr->died_from, "ÅÓÃ潪λ")) + if (dun_level == 0) { - sprintf(tmp, "Ãϲ¼ %d ³¬¤Ç»à¤ó¤À", dun_level); + cptr town = p_ptr->town_num ? "³¹" : "¹ÓÌî"; + if (streq(p_ptr->died_from, "ÅÓÃ潪λ")) + { + sprintf(tmp, "%s¤Ç»à¤ó¤À", town); + } + else + { + sprintf(tmp, "¤Ë%s¤Ç»¦¤µ¤ì¤¿", town); + } } else { - sprintf(tmp, "¤ËÃϲ¼ %d ³¬¤Ç»¦¤µ¤ì¤¿", dun_level); + if (streq(p_ptr->died_from, "ÅÓÃ潪λ")) + { + sprintf(tmp, "Ãϲ¼ %d ³¬¤Ç»à¤ó¤À", dun_level); + } + else + { + sprintf(tmp, "¤ËÃϲ¼ %d ³¬¤Ç»¦¤µ¤ì¤¿", dun_level); + } } + center_string(buf, tmp); + put_str(buf, 15 + extra_line, 11); } - center_string(buf, tmp); - put_str(buf, 15, 11); - } #else (void)sprintf(tmp, "Killed on Level %d", dun_level); center_string(buf, tmp); put_str(buf, 14, 11); - - if (strlen(p_ptr->died_from) > 24) - { - strncpy(dummy, p_ptr->died_from, 24); - dummy[24] = '\0'; - (void)sprintf(tmp, "by %s.", dummy); - } - else - (void)sprintf(tmp, "by %s.", p_ptr->died_from); - + roff_to_buf(format("by %s.", p_ptr->died_from), GRAVE_LINE_WIDTH + 1, tmp, sizeof tmp); center_string(buf, tmp); put_str(buf, 15, 11); + t = tmp + strlen(tmp) + 1; + if (*t) + { + strcpy(dummy, t); /* 2nd line */ + if (*(t + strlen(t) + 1)) /* Does 3rd line exist? */ + { + int dummy_len = strlen(dummy); + strcpy(dummy + MIN(dummy_len, GRAVE_LINE_WIDTH - 3), "..."); + } + center_string(buf, dummy); + put_str(buf, 16, 11); + } #endif - - (void)sprintf(tmp, "%-.24s", ctime(&ct)); center_string(buf, tmp); put_str(buf, 17, 11); #ifdef JP -msg_format("¤µ¤è¤¦¤Ê¤é¡¢%s!", player_name); + msg_format("¤µ¤è¤¦¤Ê¤é¡¢%s!", player_name); #else msg_format("Goodbye, %s!", player_name); #endif - } } @@ -7603,10 +7797,9 @@ Term_putstr(0, 0, -1, TERM_WHITE, " */ static void handle_signal_abort(int sig) { - int wid, hgt, rows; + int wid, hgt; Term_get_size(&wid, &hgt); - rows = hgt - 4; /* Disable handler */ (void)signal(sig, SIG_IGN); @@ -7640,6 +7833,12 @@ Term_putstr(45, hgt - 1, -1, TERM_RED, " #endif +#ifdef JP + do_cmd_write_nikki(NIKKI_GAMESTART, 0, "----¥²¡¼¥à°Û¾ï½ªÎ»----"); +#else + do_cmd_write_nikki(NIKKI_GAMESTART, 0, "---- Panic Save and Abort Game ----"); +#endif + /* Flush output */ Term_fresh();