X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=src%2Fxtra2.c;h=a223a79cedeedfa113ac84a028e632fe2812522e;hb=924ccf7dec90442b9f1dc29743203792b11fdd3d;hp=6f884fa74150b04f30783ce81ee4cea4f3e88c89;hpb=c385f3a10a44a345e9850a36bdba439506a2c90e;p=hengband%2Fhengband.git diff --git a/src/xtra2.c b/src/xtra2.c index 6f884fa74..a223a79ce 100644 --- a/src/xtra2.c +++ b/src/xtra2.c @@ -1,22 +1,25 @@ -/* File: xtra2.c */ - -/* - * Copyright (c) 1997 Ben Harrison, James E. Wilson, Robert A. Koeneke - * - * This software may be copied and distributed for educational, research, - * and not for profit purposes provided that this copyright and statement - * are included in all such copies. Other copyrights may also apply. +/*! + * @file xtra2.c + * @brief éå¤ãªãã®ä»ã®å¦ç2 / effects of various "objects" + * @date 2014/02/06 + * @author + * Copyright (c) 1989 James E. Wilson, Robert A. Koeneke\n + * This software may be copied and distributed for educational, research, and\n + * not for profit purposes provided that this copyright and statement are\n + * included in all such copies.\n + * 2014 Deskull rearranged comment for Doxygen. */ -/* Purpose: effects of various "objects" */ #include "angband.h" #define REWARD_CHANCE 10 -/* +/*! + * @brief ãã¬ã¤ã¤ã¼ã®çµé¨å¤ã«ã¤ãã¦æ´åæ§ã®ããã®ãã§ãã¯ã¨èª¿æ´ãè¡ã / * Advance experience levels and print experience + * @return ãªã */ void check_experience(void) { @@ -101,7 +104,7 @@ void check_experience(void) /* Message */ #ifdef JP -msg_format("¥ì¥Ù¥ë %d ¤Ë¤è¤¦¤³¤½¡£", p_ptr->lev); +msg_format("ã¬ãã« %d ã«ããããã", p_ptr->lev); #else msg_format("Welcome to level %d.", p_ptr->lev); @@ -116,7 +119,7 @@ msg_format(" /* Window stuff */ p_ptr->window |= (PW_PLAYER | PW_SPELL | PW_INVEN); - /* HP¤ÈMP¤Î¾å¾ºÎ̤òɽ¼¨ */ + /* HPã¨MPã®ä¸æéã表示 */ level_up = 1; /* Handle stuff */ @@ -137,19 +140,19 @@ msg_format(" #ifdef JP cnv_stat(p_ptr->stat_max[0], tmp); - prt(format(" a) ÏÓÎÏ (¸½ºßÃÍ %s)", tmp), 2, 14); + prt(format(" a) è å (ç¾å¨å¤ %s)", tmp), 2, 14); cnv_stat(p_ptr->stat_max[1], tmp); - prt(format(" b) ÃÎǽ (¸½ºßÃÍ %s)", tmp), 3, 14); + prt(format(" b) ç¥è½ (ç¾å¨å¤ %s)", tmp), 3, 14); cnv_stat(p_ptr->stat_max[2], tmp); - prt(format(" c) ¸¤µ (¸½ºßÃÍ %s)", tmp), 4, 14); + prt(format(" c) è³¢ã (ç¾å¨å¤ %s)", tmp), 4, 14); cnv_stat(p_ptr->stat_max[3], tmp); - prt(format(" d) ´ïÍÑ (¸½ºßÃÍ %s)", tmp), 5, 14); + prt(format(" d) å¨ç¨ (ç¾å¨å¤ %s)", tmp), 5, 14); cnv_stat(p_ptr->stat_max[4], tmp); - prt(format(" e) ÂÑµ× (¸½ºßÃÍ %s)", tmp), 6, 14); + prt(format(" e) èä¹ (ç¾å¨å¤ %s)", tmp), 6, 14); cnv_stat(p_ptr->stat_max[5], tmp); - prt(format(" f) Ì¥ÎÏ (¸½ºßÃÍ %s)", tmp), 7, 14); + prt(format(" f) é å (ç¾å¨å¤ %s)", tmp), 7, 14); prt("", 8, 14); - prt(" ¤É¤ÎǽÎÏÃͤò¾å¤²¤Þ¤¹¤«¡©", 1, 14); + prt(" ã©ã®è½åå¤ãä¸ãã¾ããï¼", 1, 14); #else cnv_stat(p_ptr->stat_max[0], tmp); prt(format(" a) Str (cur %s)", tmp), 2, 14); @@ -174,11 +177,7 @@ msg_format(" for(n = 0; n < 6; n++) if (n != choice - 'a') prt("",n+2,14); -#ifdef JP - if (get_check("¤è¤í¤·¤¤¤Ç¤¹¤«¡©")) break; -#else - if (get_check("Are you sure? ")) break; -#endif + if (get_check(_("ããããã§ããï¼", "Are you sure? "))) break; } do_inc_stat(choice - 'a'); screen_load(); @@ -189,19 +188,14 @@ msg_format(" if (level_mutation) { -#ifdef JP -msg_print("¤¢¤Ê¤¿¤ÏÊѤï¤Ã¤¿µ¤¤¬¤¹¤ë..."); -#else - msg_print("You feel different..."); -#endif - + msg_print(_("ããªãã¯å¤ãã£ãæ°ããã...", "You feel different...")); (void)gain_random_mutation(0); level_mutation = FALSE; } /* - * Ê󽷤ǥì¥Ù¥ë¤¬¾å¤ë¤ÈºÆµ¢Åª¤Ë check_experience() ¤¬ - * ¸Æ¤Ð¤ì¤ë¤Î¤Ç½çÈÖ¤òºÇ¸å¤Ë¤¹¤ë¡£ + * å ±é ¬ã§ã¬ãã«ãä¸ãã¨å帰çã« check_experience() ã + * å¼ã°ããã®ã§é çªãæå¾ã«ããã */ if (level_reward) { @@ -227,23 +221,26 @@ msg_print(" } -/* +/*! + * @brief ã¢ã³ã¹ã¿ã¼ãåããéã®è²¡å®svalãè¿ã + * @param r_idx åããã¢ã³ã¹ã¿ã¼ã®ç¨®æID + * @return 財å®ã®sval + * @details * Hack -- Return the "automatic coin type" of a monster race * Used to allocate proper treasure when "Creeping coins" die - * * XXX XXX XXX Note the use of actual "monster names" */ -static int get_coin_type(int r_idx) +static int get_coin_type(MONRACE_IDX r_idx) { /* Analyze monsters */ switch (r_idx) { - case MON_COPPER_COINS: return 2; - case MON_SILVER_COINS: return 5; - case MON_GOLD_COINS: return 10; - case MON_MITHRIL_COINS: - case MON_MITHRIL_GOLEM: return 16; - case MON_ADAMANT_COINS: return 17; + case MON_COPPER_COINS: return 2; + case MON_SILVER_COINS: return 5; + case MON_GOLD_COINS: return 10; + case MON_MITHRIL_COINS: + case MON_MITHRIL_GOLEM: return 16; + case MON_ADAMANT_COINS: return 17; } /* Assume nothing */ @@ -251,8 +248,11 @@ static int get_coin_type(int r_idx) } -/* +/*! + * @brief ãªãã¸ã§ã¯ããã¯ãã¼ã¯ãã©ãããå¤å®ãã / * Hack -- determine if a template is Cloak + * @param k_idx å¤å®ããããªãã¸ã§ã¯ãã®ãã¼ã¹ã¢ã¤ãã ID + * @return ãªãã¸ã§ã¯ããã¯ãã¼ã¯ãªãã°TRUEãè¿ã */ static bool kind_is_cloak(int k_idx) { @@ -269,8 +269,11 @@ static bool kind_is_cloak(int k_idx) } -/* +/*! + * @brief ãªãã¸ã§ã¯ããç«¿ç¶æ¦å¨ãã©ãããå¤å®ãã / * Hack -- determine if a template is Polearm + * @param k_idx å¤å®ããããªãã¸ã§ã¯ãã®ãã¼ã¹ã¢ã¤ãã ID + * @return ãªãã¸ã§ã¯ããç«¿ç¶æ¦å¨ãªãã°TRUEãè¿ã */ static bool kind_is_polearm(int k_idx) { @@ -287,8 +290,11 @@ static bool kind_is_polearm(int k_idx) } -/* +/*! + * @brief ãªãã¸ã§ã¯ããå£ãã©ãããå¤å®ãã / * Hack -- determine if a template is Sword + * @param k_idx å¤å®ããããªãã¸ã§ã¯ãã®ãã¼ã¹ã¢ã¤ãã ID + * @return ãªãã¸ã§ã¯ããå£ãªãã°TRUEãè¿ã */ static bool kind_is_sword(int k_idx) { @@ -305,8 +311,11 @@ static bool kind_is_sword(int k_idx) } -/* +/*! + * @brief ãªãã¸ã§ã¯ããéæ³æ¸ãã©ãããå¤å®ãã / * Hack -- determine if a template is Book + * @param k_idx å¤å®ããããªãã¸ã§ã¯ãã®ãã¼ã¹ã¢ã¤ãã ID + * @return ãªãã¸ã§ã¯ããéæ³æ¸ãªãã°TRUEãè¿ã */ static bool kind_is_book(int k_idx) { @@ -323,8 +332,11 @@ static bool kind_is_book(int k_idx) } -/* +/*! + * @brief ãªãã¸ã§ã¯ãããã¼ã¹ã¢ã¤ãã æç¹ã§GOODãã©ãããå¤å®ãã / * Hack -- determine if a template is Good book + * @param k_idx å¤å®ããããªãã¸ã§ã¯ãã®ãã¼ã¹ã¢ã¤ãã ID + * @return ãªãã¸ã§ã¯ãããã¼ã¹ã¢ã¤ãã æç¹ã§GOODãªã¢ã¤ãã ãªãã°TRUEãè¿ã */ static bool kind_is_good_book(int k_idx) { @@ -341,8 +353,11 @@ static bool kind_is_good_book(int k_idx) } -/* +/*! + * @brief ãªãã¸ã§ã¯ããé§ãã©ãããå¤å®ãã / * Hack -- determine if a template is Armor + * @param k_idx å¤å®ããããªãã¸ã§ã¯ãã®ãã¼ã¹ã¢ã¤ãã ID + * @return ãªãã¸ã§ã¯ããé§ãªãã°TRUEãè¿ã */ static bool kind_is_armor(int k_idx) { @@ -359,8 +374,11 @@ static bool kind_is_armor(int k_idx) } -/* +/*! + * @brief ãªãã¸ã§ã¯ããæææ¦å¨ãã©ãããå¤å®ãã / * Hack -- determine if a template is hafted weapon + * @param k_idx å¤å®ããããªãã¸ã§ã¯ãã®ãã¼ã¹ã¢ã¤ãã ID + * @return ãªãã¸ã§ã¯ããæææ¦å¨ãªãã°TRUEãè¿ã */ static bool kind_is_hafted(int k_idx) { @@ -376,13 +394,72 @@ static bool kind_is_hafted(int k_idx) return (FALSE); } +/*! + * @brief ã¯ã¨ã¹ããéæç¶æ ã«ãã / + * @param quest_num éæç¶æ ã«ãããã¯ã¨ã¹ãã®ID + * @return ãªã + */ +void complete_quest(int quest_num) +{ + quest_type* const q_ptr = &quest[quest_num]; -/* + switch (q_ptr->type) + { + case QUEST_TYPE_RANDOM: + if (record_rand_quest) do_cmd_write_nikki(NIKKI_RAND_QUEST_C, quest_num, NULL); + break; + default: + if (record_fix_quest) do_cmd_write_nikki(NIKKI_FIX_QUEST_C, quest_num, NULL); + break; + } + + q_ptr->status = QUEST_STATUS_COMPLETED; + q_ptr->complev = (byte)p_ptr->lev; + update_playtime(); + q_ptr->comptime = playtime; + + if (!(q_ptr->flags & QUEST_FLAG_SILENT)) + { + play_music(TERM_XTRA_MUSIC_BASIC, MUSIC_BASIC_QUEST_CLEAR); + msg_print(_("ã¯ã¨ã¹ããéæããï¼", "You just completed your quest!")); + msg_print(NULL); + } +} + +/*! + * @brief ç¾å¨ããã¢ã«æ®ã£ã¦ããæµã¢ã³ã¹ã¿ã¼ã®æ°ãè¿ã / + * @return ç¾å¨ã®æµã¢ã³ã¹ã¿ã¼ã®æ° + */ +static int count_all_hostile_monsters(void) +{ + int x, y; + int number_mon = 0; + + for (x = 0; x < cur_wid; ++ x) + { + for (y = 0; y < cur_hgt; ++ y) + { + MONSTER_IDX m_idx = cave[y][x].m_idx; + + if (m_idx > 0 && is_hostile(&m_list[m_idx])) + { + ++ number_mon; + } + } + } + + return number_mon; +} + +/*! + * @brief ç¹å®ã®æµãåããéã«ã¯ã¨ã¹ãéæå¦ç / * Check for "Quest" completion when a quest monster is killed or charmed. + * @param m_ptr æç ´ããã¢ã³ã¹ã¿ã¼ã®æ§é ä½åç §ãã¤ã³ã¿ + * @return ãªã */ void check_quest_completion(monster_type *m_ptr) { - int i, j, y, x, ny, nx, i2, j2; + POSITION y, x; int quest_num; @@ -390,48 +467,53 @@ void check_quest_completion(monster_type *m_ptr) bool reward = FALSE; object_type forge; - object_type *q_ptr; + object_type *o_ptr; /* Get the location */ y = m_ptr->fy; x = m_ptr->fx; /* Inside a quest */ - quest_num = p_ptr->inside_quest; + quest_num = p_ptr->inside_quest; /* Search for an active quest on this dungeon level */ if (!quest_num) { + int i; + for (i = max_quests - 1; i > 0; i--) { + quest_type* const q_ptr = &quest[i]; + /* Quest is not active */ - if (quest[i].status != QUEST_STATUS_TAKEN) + if (q_ptr->status != QUEST_STATUS_TAKEN) continue; /* Quest is not a dungeon quest */ - if (quest[i].flags & QUEST_FLAG_PRESET) + if (q_ptr->flags & QUEST_FLAG_PRESET) continue; /* Quest is not on this level */ - if ((quest[i].level != dun_level) && - (quest[i].type != QUEST_TYPE_KILL_ANY_LEVEL)) + if ((q_ptr->level != dun_level) && + (q_ptr->type != QUEST_TYPE_KILL_ANY_LEVEL)) continue; /* Not a "kill monster" quest */ - if ((quest[i].type == QUEST_TYPE_FIND_ARTIFACT) || - (quest[i].type == QUEST_TYPE_FIND_EXIT)) + if ((q_ptr->type == QUEST_TYPE_FIND_ARTIFACT) || + (q_ptr->type == QUEST_TYPE_FIND_EXIT)) continue; /* Interesting quest */ - if ((quest[i].type == QUEST_TYPE_KILL_NUMBER) || - (quest[i].type == QUEST_TYPE_KILL_ALL)) + if ((q_ptr->type == QUEST_TYPE_KILL_NUMBER) || + (q_ptr->type == QUEST_TYPE_TOWER) || + (q_ptr->type == QUEST_TYPE_KILL_ALL)) break; /* Interesting quest */ - if (((quest[i].type == QUEST_TYPE_KILL_LEVEL) || - (quest[i].type == QUEST_TYPE_KILL_ANY_LEVEL) || - (quest[i].type == QUEST_TYPE_RANDOM)) && - (quest[i].r_idx == m_ptr->r_idx)) + if (((q_ptr->type == QUEST_TYPE_KILL_LEVEL) || + (q_ptr->type == QUEST_TYPE_KILL_ANY_LEVEL) || + (q_ptr->type == QUEST_TYPE_RANDOM)) && + (q_ptr->r_idx == m_ptr->r_idx)) break; } @@ -442,68 +524,35 @@ void check_quest_completion(monster_type *m_ptr) if (quest_num && (quest[quest_num].status == QUEST_STATUS_TAKEN)) { /* Current quest */ - i = quest_num; + quest_type* const q_ptr = &quest[quest_num]; - switch (quest[i].type) + switch (q_ptr->type) { case QUEST_TYPE_KILL_NUMBER: { - quest[i].cur_num++; + q_ptr->cur_num++; - if (quest[i].cur_num >= quest[i].num_mon) + if (q_ptr->cur_num >= q_ptr->num_mon) { - if (record_fix_quest) do_cmd_write_nikki(NIKKI_FIX_QUEST_C, i, NULL); - /* completed quest */ - quest[i].status = QUEST_STATUS_COMPLETED; - quest[i].complev = (byte)p_ptr->lev; - - if (!(quest[i].flags & QUEST_FLAG_SILENT)) - { -#ifdef JP -msg_print("¥¯¥¨¥¹¥È¤òãÀ®¤·¤¿¡ª"); -#else - msg_print("You just completed your quest!"); -#endif + complete_quest(quest_num); - msg_print(NULL); - } - - quest[i].cur_num = 0; + q_ptr->cur_num = 0; } break; } case QUEST_TYPE_KILL_ALL: { - int number_mon = 0; - if (!is_hostile(m_ptr)) break; - /* Count all hostile monsters */ - for (i2 = 0; i2 < cur_wid; ++i2) - for (j2 = 0; j2 < cur_hgt; j2++) - if (cave[j2][i2].m_idx > 0) - if (is_hostile(&m_list[cave[j2][i2].m_idx])) - number_mon++; - - if ((number_mon - 1) == 0) + if (count_all_hostile_monsters() == 1) { - if (record_fix_quest) do_cmd_write_nikki(NIKKI_FIX_QUEST_C, i, NULL); - /* completed */ - if (quest[i].flags & QUEST_FLAG_SILENT) + if (q_ptr->flags & QUEST_FLAG_SILENT) { - quest[i].status = QUEST_STATUS_FINISHED; + q_ptr->status = QUEST_STATUS_FINISHED; } else { - quest[i].status = QUEST_STATUS_COMPLETED; - quest[i].complev = (byte)p_ptr->lev; -#ifdef JP -msg_print("¥¯¥¨¥¹¥È¤òãÀ®¤·¤¿¡ª"); -#else - msg_print("You just completed your quest!"); -#endif - - msg_print(NULL); + complete_quest(quest_num); } } break; @@ -512,70 +561,60 @@ msg_print(" case QUEST_TYPE_RANDOM: { /* Only count valid monsters */ - if (quest[i].r_idx != m_ptr->r_idx) + if (q_ptr->r_idx != m_ptr->r_idx) break; - quest[i].cur_num++; + q_ptr->cur_num++; - if (quest[i].cur_num >= quest[i].max_num) + if (q_ptr->cur_num >= q_ptr->max_num) { - if (record_fix_quest && (quest[i].type == QUEST_TYPE_KILL_LEVEL)) do_cmd_write_nikki(NIKKI_FIX_QUEST_C, i, NULL); - if (record_rand_quest && (quest[i].type == QUEST_TYPE_RANDOM)) do_cmd_write_nikki(NIKKI_RAND_QUEST_C, i, NULL); - /* completed quest */ - quest[i].status = QUEST_STATUS_COMPLETED; - quest[i].complev = (byte)p_ptr->lev; - if (!(quest[i].flags & QUEST_FLAG_PRESET)) + complete_quest(quest_num); + + if (!(q_ptr->flags & QUEST_FLAG_PRESET)) { create_stairs = TRUE; p_ptr->inside_quest = 0; } - if (!(quest[i].flags & QUEST_FLAG_SILENT)) - { -#ifdef JP -msg_print("¥¯¥¨¥¹¥È¤òãÀ®¤·¤¿¡ª"); -#else - msg_print("You just completed your quest!"); -#endif - - msg_print(NULL); - } - /* Finish the two main quests without rewarding */ - if ((i == QUEST_OBERON) || (i == QUEST_SERPENT)) + if ((quest_num == QUEST_OBERON) || (quest_num == QUEST_SERPENT)) { - quest[i].status = QUEST_STATUS_FINISHED; + q_ptr->status = QUEST_STATUS_FINISHED; } - if (quest[i].type == QUEST_TYPE_RANDOM) + if (q_ptr->type == QUEST_TYPE_RANDOM) { reward = TRUE; - quest[i].status = QUEST_STATUS_FINISHED; + q_ptr->status = QUEST_STATUS_FINISHED; } } break; } case QUEST_TYPE_KILL_ANY_LEVEL: { - quest[i].cur_num++; - if (quest[i].cur_num >= quest[i].max_num) + q_ptr->cur_num++; + if (q_ptr->cur_num >= q_ptr->max_num) { - if (record_fix_quest) do_cmd_write_nikki(NIKKI_FIX_QUEST_C, i, NULL); - /* completed quest */ - quest[i].status = QUEST_STATUS_COMPLETED; - quest[i].complev = (byte)p_ptr->lev; + complete_quest(quest_num); + q_ptr->cur_num = 0; + } + break; + } + case QUEST_TYPE_TOWER: + { + if (!is_hostile(m_ptr)) break; + + if (count_all_hostile_monsters() == 1) + { + q_ptr->status = QUEST_STATUS_STAGE_COMPLETED; - if (!(quest[i].flags & QUEST_FLAG_SILENT)) + if((quest[QUEST_TOWER1].status == QUEST_STATUS_STAGE_COMPLETED) && + (quest[QUEST_TOWER2].status == QUEST_STATUS_STAGE_COMPLETED) && + (quest[QUEST_TOWER3].status == QUEST_STATUS_STAGE_COMPLETED)) { -#ifdef JP -msg_print("¥¯¥¨¥¹¥È¤òãÀ®¤·¤¿¡ª"); -#else - msg_print("You just completed your quest!"); -#endif - msg_print(NULL); + complete_quest(QUEST_TOWER1); } - quest[i].cur_num = 0; } break; } @@ -585,6 +624,8 @@ msg_print(" /* Create a magical staircase */ if (create_stairs) { + POSITION ny, nx; + /* Stagger around */ while (cave_perma_bold(y, x) || cave[y][x].o_idx || (cave[y][x].info & CAVE_OBJECT) ) { @@ -596,12 +637,7 @@ msg_print(" } /* Explain the staircase */ -#ifdef JP -msg_print("ËâË¡¤Î³¬Ãʤ¬¸½¤ì¤¿..."); -#else - msg_print("A magical staircase appears..."); -#endif - + msg_print(_("éæ³ã®é段ãç¾ãã...", "A magical staircase appears...")); /* Create stairs down */ cave_set_feat(y, x, feat_down_stair); @@ -615,26 +651,52 @@ msg_print(" */ if (reward) { - for (j = 0; j < (dun_level / 15)+1; j++) + int i; + + for (i = 0; i < (dun_level / 15)+1; i++) { /* Get local object */ - q_ptr = &forge; + o_ptr = &forge; /* Wipe the object */ - object_wipe(q_ptr); + object_wipe(o_ptr); /* Make a great object */ - make_object(q_ptr, AM_GOOD | AM_GREAT); + make_object(o_ptr, AM_GOOD | AM_GREAT); /* Drop it in the dungeon */ - (void)drop_near(q_ptr, -1, y, x); + (void)drop_near(o_ptr, -1, y, x); + } + } +} + +/*! + * @brief ç¹å®ã®ã¢ã¼ãã£ãã¡ã¯ããå ¥æããéã®ã¯ã¨ã¹ãéæå¦ç / + * Check for "Quest" completion when a quest monster is killed or charmed. + * @param o_ptr å ¥æãããªãã¸ã§ã¯ãã®æ§é ä½åç §ãã¤ã³ã¿ + * @return ãªã + */ +void check_find_art_quest_completion(object_type *o_ptr) +{ + int i; + /* Check if completed a quest */ + for (i = 0; i < max_quests; i++) + { + if ((quest[i].type == QUEST_TYPE_FIND_ARTIFACT) && + (quest[i].status == QUEST_STATUS_TAKEN) && + (quest[i].k_idx == o_ptr->name1)) + { + complete_quest(i); } } } -/* +/*! + * @brief ã¢ã³ã¹ã¿ã¼ãæç ´ããéã®è¿°èªã¡ãã»ã¼ã¸ãè¿ã / * Return monster death string + * @param r_ptr æç ´ãããã¢ã³ã¹ã¿ã¼ã®ç¨®ææ å ±ãæã¤æ§é ä½ã®åç §ãã¤ã³ã¿ + * @return æç ´ãããã¢ã³ã¹ã¿ã¼ã®è¿°èª */ cptr extract_note_dies(monster_race *r_ptr) { @@ -647,45 +709,35 @@ cptr extract_note_dies(monster_race *r_ptr) { if (r_ptr->blow[i].method == RBM_EXPLODE) { -#ifdef JP - return "¤ÏÇúȯ¤·¤ÆÊ´¡¹¤Ë¤Ê¤Ã¤¿¡£"; -#else - return " explodes into tiny shreds."; -#endif + return _("ã¯ççºãã¦ç²ã ã«ãªã£ãã", " explodes into tiny shreds."); } } - -#ifdef JP - return "¤òÅݤ·¤¿¡£"; -#else - return " is destroyed."; -#endif + return _("ãåããã", " is destroyed."); } /* Assume a default death */ -#ifdef JP - return "¤Ï»à¤ó¤À¡£"; -#else - return " dies."; -#endif + return _("ã¯æ»ãã ã", " dies."); } -/* +/*! + * @brief ã¢ã³ã¹ã¿ã¼ãæ»äº¡ããæã®å¦ç / * Handle the "death" of a monster. - * + * @param m_idx æ»äº¡ããã¢ã³ã¹ã¿ã¼ã®ID + * @param drop_item TRUEãªãã°ã¢ã³ã¹ã¿ã¼ã®ããããå¦çãè¡ã + * @return æç ´ãããã¢ã³ã¹ã¿ã¼ã®è¿°èª + * @details + *
* Disperse treasures centered at the monster location based on the * various flags contained in the monster flags fields. - * * Check for "Quest" completion when a quest monster is killed. - * * Note that only the player can induce "monster_death()" on Uniques. * Thus (for now) all Quest monsters should be Uniques. - * * Note that monsters can now carry objects, and when a monster dies, * it drops all of its objects, which may disappear in crowded rooms. + **/ -void monster_death(int m_idx, bool drop_item) +void monster_death(MONSTER_IDX m_idx, bool drop_item) { int i, j, y, x; @@ -742,9 +794,9 @@ void monster_death(int m_idx, bool drop_item) { int flg = PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL; int typ = mbe_info[r_ptr->blow[i].effect].explode_type; - int d_dice = r_ptr->blow[i].d_dice; - int d_side = r_ptr->blow[i].d_side; - int damage = damroll(d_dice, d_side); + DICE_NUMBER d_dice = r_ptr->blow[i].d_dice; + DICE_SID d_side = r_ptr->blow[i].d_side; + HIT_POINT damage = damroll(d_dice, d_side); project(m_idx, 3, y, x, damage, typ, flg, -1); break; @@ -767,19 +819,11 @@ void monster_death(int m_idx, bool drop_item) if (p_ptr->arena_number > MAX_ARENA_MONS) { -#ifdef JP -msg_print("ÁÇÀ²¤é¤·¤¤¡ª·¯¤³¤½¿¿¤Î¾¡Íø¼Ô¤À¡£"); -#else - msg_print("You are a Genuine Champion!"); -#endif + msg_print(_("ç´ æ´ãããï¼åããçã®åå©è ã ã", "You are a Genuine Champion!")); } else { -#ifdef JP -msg_print("¾¡Íø¡ª¥Á¥ã¥ó¥Ô¥ª¥ó¤Ø¤ÎÆ»¤ò¿Ê¤ó¤Ç¤¤¤ë¡£"); -#else - msg_print("Victorious! You're on your way to becoming Champion."); -#endif + msg_print(_("åå©ï¼ãã£ã³ããªã³ã¸ã®éãé²ãã§ããã", "Victorious! You're on your way to becoming Champion.")); } if (arena_info[p_ptr->arena_number].tval) @@ -813,11 +857,7 @@ msg_print(" { if (rakuba(-1, FALSE)) { -#ifdef JP -msg_print("ÃÏÌ̤ËÍî¤È¤µ¤ì¤¿¡£"); -#else - msg_print("You have fallen from your riding pet."); -#endif + msg_print(_("å°é¢ã«è½ã¨ãããã", "You have fallen from your riding pet.")); } } @@ -896,11 +936,7 @@ msg_print(" } if (notice) -#ifdef JP - msg_print("¥Ô¥ó¥¯¡¦¥Û¥é¡¼¤ÏʬÎö¤·¤¿¡ª"); -#else - msg_print("The Pink horror divides!"); -#endif + msg_print(_("ãã³ã¯ã»ãã©ã¼ã¯åè£ããï¼", "The Pink horror divides!")); } break; @@ -953,7 +989,7 @@ msg_print(" { if (!one_in_(7)) { - int wy = y, wx = x; + POSITION wy = y, wx = x; int attempts = 100; bool pet = is_pet(m_ptr); @@ -971,12 +1007,7 @@ msg_print(" if (summon_specific((pet ? -1 : m_idx), wy, wx, 100, SUMMON_DAWN, mode)) { if (player_can_see_bold(wy, wx)) -#ifdef JP - msg_print("¿·¤¿¤ÊÀï»Î¤¬¸½¤ì¤¿¡ª"); -#else - msg_print("A new warrior steps forth!"); -#endif - + msg_print(_("æ°ããªæ¦å£«ãç¾ããï¼", "A new warrior steps forth!")); } } } @@ -1220,174 +1251,11 @@ msg_print(" int a_idx = 0; int chance = 0; - switch (m_ptr->r_idx) + for(i = 0; i < 4; i++) { - case MON_OBERON: - if (one_in_(3)) - { - a_idx = ART_JUDGE; - chance = 33; - } - else - { - a_idx = ART_AMBER; - chance = 50; - } - break; - - case MON_GHB: - a_idx = ART_GHB; - chance = 100; - break; - - case MON_STORMBRINGER: - a_idx = ART_STORMBRINGER; - chance = 100; - break; - - case MON_ECHIZEN: - a_idx = ART_CRIMSON; - chance = 50; - break; - - case MON_GANDALF: - a_idx = ART_ICANUS; - chance = 20; - break; - - case MON_OROCHI: - a_idx = ART_KUSANAGI; - chance = 25; - break; - - case MON_DWORKIN: - a_idx = ART_JUDGE; - chance = 20; - break; - - case MON_SAURON: - if (one_in_(10)) - { - a_idx = ART_POWER; - chance = 100; - } - else - { - a_idx = ART_AHO; - chance = 100; - } - break; - - case MON_BRAND: - if (!one_in_(3)) - { - a_idx = ART_BRAND; - chance = 25; - } - else - { - a_idx = ART_WEREWINDLE; - chance = 33; - } - break; - - case MON_CORWIN: - if (!one_in_(3)) - { - a_idx = ART_GRAYSWANDIR; - chance = 33; - } - else - { - a_idx = ART_CORWIN; - chance = 33; - } - break; - - case MON_SURTUR: - a_idx = ART_TWILIGHT; - chance = 66; - break; - - case MON_SARUMAN: - a_idx = ART_ELENDIL; - chance = 33; - break; - - case MON_FIONA: - a_idx = ART_FIONA; - chance = 50; - break; - - case MON_JULIAN: - a_idx = ART_JULIAN; - chance = 45; - break; - - case MON_KLING: - a_idx = ART_DESTINY; - chance = 40; - break; - - case MON_GOEMON: - a_idx = ART_ZANTETSU; - chance = 75; - break; - - case MON_HAGEN: - a_idx = ART_HAGEN; - chance = 66; - break; - - case MON_CAINE: - a_idx = ART_CAINE; - chance = 50; - break; - - case MON_BULLGATES: - a_idx = ART_WINBLOWS; - chance = 66; - break; - - case MON_LUNGORTHIN: - a_idx = ART_CALRIS; - chance = 50; - break; - - case MON_JACK_SHADOWS: - a_idx = ART_JACK; - chance = 15; - break; - - case MON_DIO: - a_idx = ART_STONEMASK; - chance = 20; - break; - - case MON_BELD: - a_idx = ART_SOULCRUSH; - chance = 10; - break; - - case MON_PIP: - a_idx = ART_EXCALIBUR_J; - chance = 50; - break; - - case MON_SHUTEN: - a_idx = ART_SHUTEN_DOJI; - chance = 33; - break; - - case MON_GOTHMOG: - a_idx = ART_GOTHMOG; - chance = 33; - break; - - case MON_FUNDIN: - a_idx = ART_FUNDIN; - chance = 5; - break; + if(!r_ptr->artifact_id[i]) break; + a_idx = r_ptr->artifact_id[i]; + chance = r_ptr->artifact_percent[i]; } if ((a_idx > 0) && ((randint0(100) < chance) || p_ptr->wizard)) @@ -1410,12 +1278,12 @@ msg_print(" if ((r_ptr->flags7 & RF7_GUARDIAN) && (d_info[dungeon_type].final_guardian == m_ptr->r_idx)) { - int k_idx = d_info[dungeon_type].final_object ? d_info[dungeon_type].final_object + IDX k_idx = d_info[dungeon_type].final_object ? d_info[dungeon_type].final_object : lookup_kind(TV_SCROLL, SV_SCROLL_ACQUIREMENT); if (d_info[dungeon_type].final_artifact) { - int a_idx = d_info[dungeon_type].final_artifact; + a_idx = d_info[dungeon_type].final_artifact; artifact_type *a_ptr = &a_info[a_idx]; if (!a_ptr->cur_num) @@ -1448,11 +1316,7 @@ msg_print(" /* Drop it in the dungeon */ (void)drop_near(q_ptr, -1, y, x); } -#ifdef JP - msg_format("¤¢¤Ê¤¿¤Ï%s¤òÀ©ÇƤ·¤¿¡ª",d_name+d_info[dungeon_type].name); -#else - msg_format("You have conquered %s!",d_name+d_info[dungeon_type].name); -#endif + msg_format(_("ããªãã¯%sãå¶è¦ããï¼", "You have conquered %s!"),d_name+d_info[dungeon_type].name); } } @@ -1470,6 +1334,9 @@ msg_print(" if (is_pet(m_ptr) || p_ptr->inside_battle || p_ptr->inside_arena) number = 0; /* Pets drop no stuff */ if (!drop_item && (r_ptr->d_char != '$')) number = 0; + + if((r_ptr->flags2 & (RF2_MULTIPLY)) && (r_ptr->r_akills > 1024)) + number = 0; /* Limit of Multiply monster drop */ /* Hack -- handle creeping coins */ coin_type = force_coin; @@ -1537,54 +1404,39 @@ msg_print(" /* Redraw the "title" */ p_ptr->redraw |= (PR_TITLE); -#ifdef JP - do_cmd_write_nikki(NIKKI_BUNSHOU, 0, "¸«»ö¤ËÊѶòÈÚÅܤξ¡Íø¼Ô¤È¤Ê¤Ã¤¿¡ª"); -#else - do_cmd_write_nikki(NIKKI_BUNSHOU, 0, "become *WINNER* of Hengband finely!"); -#endif + play_music(TERM_XTRA_MUSIC_BASIC, MUSIC_BASIC_FINAL_QUEST_CLEAR); + + do_cmd_write_nikki(NIKKI_BUNSHOU, 0, _("è¦äºã«å¤æè®æã®åå©è ã¨ãªã£ãï¼", "become *WINNER* of Hengband finely!")); if ((p_ptr->pclass == CLASS_CHAOS_WARRIOR) || (p_ptr->muta2 & MUT2_CHAOS_GIFT)) { -#ifdef JP - msg_format("%s¤«¤é¤ÎÀ¼¤¬¶Á¤¤¤¿¡£", chaos_patrons[p_ptr->chaos_patron]); - msg_print("¡Ø¤è¤¯¤ä¤Ã¤¿¡¢ÄêÌ¿¤Î¼Ô¤è¡ª¡Ù"); -#else - msg_format("The voice of %s booms out:", chaos_patrons[p_ptr->chaos_patron]); - msg_print("'Thou art donst well, mortal!'"); -#endif + msg_format(_("%sããã®å£°ãé¿ããã", "The voice of %s booms out:"), chaos_patrons[p_ptr->chaos_patron]); + msg_print(_("ããããã£ããå®å½ã®è ãï¼ã", "'Thou art donst well, mortal!'")); } /* Congratulations */ -#ifdef JP - msg_print("*** ¤ª¤á¤Ç¤È¤¦ ***"); -#else - msg_print("*** CONGRATULATIONS ***"); -#endif - -#ifdef JP - msg_print("¤¢¤Ê¤¿¤Ï¥²¡¼¥à¤ò¥³¥ó¥×¥ê¡¼¥È¤·¤Þ¤·¤¿¡£"); -#else - msg_print("You have won the game!"); -#endif - -#ifdef JP - msg_print("½àÈ÷¤¬À°¤Ã¤¿¤é°úÂà(¼«»¦¥³¥Þ¥ó¥É)¤·¤Æ¤â·ë¹½¤Ç¤¹¡£"); -#else - msg_print("You may retire (commit suicide) when you are ready."); -#endif + msg_print(_("*** ããã§ã¨ã ***", "*** CONGRATULATIONS ***")); + msg_print(_("ããªãã¯ã²ã¼ã ãã³ã³ããªã¼ããã¾ããã", "You have won the game!")); + msg_print(_("æºåãæ´ã£ããå¼é(èªæ®ºã³ãã³ã)ãã¦ãçµæ§ã§ãã", "You may retire (commit suicide) when you are ready.")); } } -/* +/*! + * @brief ã¢ã³ã¹ã¿ã¼ã«ä¸ãããã¡ã¼ã¸ã®ä¿®æ£å¦ç / * Modify the physical damage done to the monster. + * @param m_ptr ãã¡ã¼ã¸ãåããã¢ã³ã¹ã¿ã¼ã®æ§é ä½åç §ãã¤ã³ã¿ + * @param dam ãã¡ã¼ã¸åºæ¬å¤ + * @param is_psy_spear æ»ææ段ãå ã®å£ãªãã°TRUE + * @return ä¿®æ£ãè¡ã£ãçµæã®ãã¡ã¼ã¸é + * @details + *
* (for example when it's invulnerable or shielded) - * * ToDo: Accept a damage-type to calculate the modified damage from * things like fire, frost, lightning, poison, ... attacks. - * * "type" is not yet used and should be 0. + **/ -int mon_damage_mod(monster_type *m_ptr, int dam, bool is_psy_spear) +HIT_POINT mon_damage_mod(monster_type *m_ptr, HIT_POINT dam, bool is_psy_spear) { monster_race *r_ptr = &r_info[m_ptr->r_idx]; @@ -1600,11 +1452,7 @@ int mon_damage_mod(monster_type *m_ptr, int dam, bool is_psy_spear) { if (!p_ptr->blind && is_seen(m_ptr)) { -#ifdef JP - msg_print("¥Ð¥ê¥¢¤òÀÚ¤êÎö¤¤¤¿¡ª"); -#else - msg_print("The barrier is penetrated!"); -#endif + msg_print(_("ããªã¢ãåãè£ããï¼", "The barrier is penetrated!")); } } else if (!one_in_(PENETRATE_INVULNERABILITY)) @@ -1616,14 +1464,19 @@ int mon_damage_mod(monster_type *m_ptr, int dam, bool is_psy_spear) } -/* +/*! + * @brief ã¢ã³ã¹ã¿ã¼ã«ä¸ãããã¡ã¼ã¸ãå ã«çµé¨å¤ãå ç®ãã / * Calculate experience point to be get - * + * @param dam ä¸ãããã¡ã¼ã¸é + * @param m_ptr ãã¡ã¼ã¸ãä¸ããã¢ã³ã¹ã¿ã¼ã®æ§é ä½åç §ãã¤ã³ã¿ + * @return ãªã + * @details + *
* Even the 64 bit operation is not big enough to avoid overflaw * unless we carefully choose orders of multiplication and division. - * * Get the coefficient first, and multiply (potentially huge) base * experience point of a monster later. + **/ static void get_exp_from_mon(int dam, monster_type *m_ptr) { @@ -1672,6 +1525,20 @@ static void get_exp_from_mon(int dam, monster_type *m_ptr) s64b_RSHIFT(new_exp, new_exp_frac, 2); } } + + /* Special penalty for rest_and_shoot exp scum */ + if ((m_ptr->dealt_damage > (u32b)m_ptr->max_maxhp) && (m_ptr->hp >= 0)) + { + int over_damage = m_ptr->dealt_damage / m_ptr->max_maxhp; + if (over_damage > 32) over_damage = 32; + + while (over_damage--) + { + /* 9/10 for once */ + s64b_mul(&new_exp, &new_exp_frac, 0, 9); + s64b_div(&new_exp, &new_exp_frac, 0, 10); + } + } /* Finally multiply base experience point of the monster */ s64b_mul(&new_exp, &new_exp_frac, 0, r_ptr->mexp); @@ -1681,36 +1548,36 @@ static void get_exp_from_mon(int dam, monster_type *m_ptr) } -/* +/*! + * @brief ã¢ã³ã¹ã¿ã¼ã®HPããã¡ã¼ã¸ã«å¿ãã¦æ¸ç®ãã / * Decreases monsters hit points, handling monster death. - * + * @param dam ä¸ãããã¡ã¼ã¸é + * @param m_idx ãã¡ã¼ã¸ãä¸ããã¢ã³ã¹ã¿ã¼ã®ID + * @param fear ãã¡ã¼ã¸ã«ãã£ã¦ã¢ã³ã¹ã¿ã¼ãææ ç¶æ ã«é¥ã£ããªãã°TRUEãè¿ã + * @param note ã¢ã³ã¹ã¿ã¼ãåãããéã®ç¹å¥ãªã¡ãã»ã¼ã¸è¿°èª + * @return ãªã + * @details + *
* We return TRUE if the monster has been killed (and deleted). - * * We announce monster death (using an optional "death message" * if given, and a otherwise a generic killed/destroyed message). - * * Only "physical attacks" can induce the "You have slain" message. * Missile and Spell attacks will induce the "dies" message, or * various "specialized" messages. Note that "You have destroyed" * and "is destroyed" are synonyms for "You have slain" and "dies". - * * Hack -- unseen monsters yield "You have killed it." message. - * * Added fear (DGK) and check whether to print fear messages -CWS - * * Made name, sex, and capitalization generic -BEN- - * * As always, the "ghost" processing is a total hack. - * * Hack -- we "delay" fear messages by passing around a "fear" flag. - * * XXX XXX XXX Consider decreasing monster experience over time, say, * by using "(m_exp * m_lev * (m_lev)) / (p_lev * (m_lev + n_killed))" * instead of simply "(m_exp * m_lev) / (p_lev)", to make the first * monster worth more than subsequent monsters. This would also need * to induce changes in the monster recall code. + **/ -bool mon_take_hit(int m_idx, int dam, bool *fear, cptr note) +bool mon_take_hit(MONSTER_IDX m_idx, int dam, bool *fear, cptr note) { monster_type *m_ptr = &m_list[m_idx]; monster_race *r_ptr = &r_info[m_ptr->r_idx]; @@ -1721,19 +1588,17 @@ bool mon_take_hit(int m_idx, int dam, bool *fear, cptr note) bool innocent = TRUE, thief = FALSE; int i; int expdam; + int dealt_damage; - COPY(&exp_mon, m_ptr, monster_type); - if (!(r_ptr->flags7 & RF7_KILL_EXP)) - { - expdam = (m_ptr->hp > dam) ? dam : m_ptr->hp; - if (r_ptr->flags6 & RF6_HEAL) expdam = (expdam+1) * 2 / 3; - - get_exp_from_mon(expdam, &exp_mon); + (void)COPY(&exp_mon, m_ptr, monster_type); + + expdam = (m_ptr->hp > dam) ? dam : m_ptr->hp; - /* Genocided by chaos patron */ - if (!m_ptr->r_idx) m_idx = 0; - } + get_exp_from_mon(expdam, &exp_mon); + /* Genocided by chaos patron */ + if (!m_ptr->r_idx) m_idx = 0; + /* Redraw (later) if needed */ if (p_ptr->health_who == m_idx) p_ptr->redraw |= (PR_HEALTH); if (p_ptr->riding == m_idx) p_ptr->redraw |= (PR_UHEALTH); @@ -1749,9 +1614,20 @@ bool mon_take_hit(int m_idx, int dam, bool *fear, cptr note) /* Genocided by chaos patron */ if (!m_idx) return TRUE; + + /* Remember dealt_damage before this attack*/ + dealt_damage = m_ptr->dealt_damage; /* Hurt it */ m_ptr->hp -= dam; + + m_ptr->dealt_damage += dam; + if(m_ptr->dealt_damage > (u32b)m_ptr->max_maxhp * 100) m_ptr->dealt_damage = m_ptr->max_maxhp * 100; + if (p_ptr->wizard) + { + msg_format( _("åè¨%d/%dã®ãã¡ã¼ã¸ãä¸ããã","You do %d (out of %d) damage."), + m_ptr->dealt_damage, m_ptr->maxhp); + } /* It is dead now */ if (m_ptr->hp < 0) @@ -1833,12 +1709,7 @@ bool mon_take_hit(int m_idx, int dam, bool *fear, cptr note) bool stop_ty = FALSE; int count = 0; -#ifdef JP -msg_format("%^s¤Ï¶²¤í¤·¤¤·ì¤Î¼ö¤¤¤ò¤¢¤Ê¤¿¤Ë¤«¤±¤¿¡ª", m_name); -#else - msg_format("%^s puts a terrible blood curse on you!", m_name); -#endif - + msg_format(_("%^sã¯æãããè¡ã®åªããããªãã«ãããï¼", "%^s puts a terrible blood curse on you!"), m_name); curse_equipment(100, 50); do @@ -1853,11 +1724,7 @@ msg_format("%^s char line_got[1024]; /* Dump a message */ -#ifdef JP - if (!get_rnd_line("mondeath_j.txt", m_ptr->r_idx, line_got)) -#else - if (!get_rnd_line("mondeath.txt", m_ptr->r_idx, line_got)) -#endif + if (!get_rnd_line(_("mondeath_j.txt", "mondeath.txt"), m_ptr->r_idx, line_got)) msg_format("%^s %s", m_name, line_got); @@ -1974,7 +1841,7 @@ msg_format("%^s chg_virtue (V_JUSTICE, -1); } - if ((r_ptr->flags3 & RF3_ANIMAL) && !(r_ptr->flags3 & RF3_EVIL) && !(r_ptr->flags4 & ~(RF4_NOMAGIC_MASK)) && !(r_ptr->flags5 & ~(RF5_NOMAGIC_MASK)) && !(r_ptr->flags6 & ~(RF6_NOMAGIC_MASK))) + if ((r_ptr->flags3 & RF3_ANIMAL) && !(r_ptr->flags3 & RF3_EVIL) && !(r_ptr->flags4 & ~(RF4_NOMAGIC_MASK)) && !(r_ptr->a_ability_flags1 & ~(RF5_NOMAGIC_MASK)) && !(r_ptr->a_ability_flags2 & ~(RF6_NOMAGIC_MASK))) { if (one_in_(4)) chg_virtue(V_NATURE, -1); } @@ -1983,7 +1850,7 @@ msg_format("%^s { char note_buf[160]; #ifdef JP - sprintf(note_buf, "%s%s", r_name + r_ptr->name, (m_ptr->smart & SM_CLONED) ? "(¥¯¥í¡¼¥ó)" : ""); + sprintf(note_buf, "%s%s", r_name + r_ptr->name, (m_ptr->smart & SM_CLONED) ? "(ã¯ãã¼ã³)" : ""); #else sprintf(note_buf, "%s%s", r_name + r_ptr->name, (m_ptr->smart & SM_CLONED) ? "(Clone)" : ""); #endif @@ -2004,9 +1871,9 @@ msg_format("%^s { #ifdef JP if ((p_ptr->pseikaku == SEIKAKU_COMBAT) || (inventory[INVEN_BOW].name1 == ART_CRIMSON)) - msg_format("¤»¤Ã¤«¤¯¤À¤«¤é%s¤ò»¦¤·¤¿¡£", m_name); + msg_format("ãã£ããã ãã%sã殺ããã", m_name); else -msg_format("%s¤ò»¦¤·¤¿¡£", m_name); + msg_format("%sã殺ããã", m_name); #else msg_format("You have killed %s.", m_name); #endif @@ -2016,7 +1883,6 @@ msg_format("%s /* Death by Physical attack -- non-living monster */ else if (!monster_living(r_ptr)) { - int i; bool explode = FALSE; for (i = 0; i < 4; i++) @@ -2026,18 +1892,14 @@ msg_format("%s /* Special note at death */ if (explode) -#ifdef JP - msg_format("%s¤ÏÇúȯ¤·¤ÆÊ´¡¹¤Ë¤Ê¤Ã¤¿¡£", m_name); -#else - msg_format("%^s explodes into tiny shreds.", m_name); -#endif + msg_format(_("%sã¯ççºãã¦ç²ã ã«ãªã£ãã", "%^s explodes into tiny shreds."), m_name); else { #ifdef JP if ((p_ptr->pseikaku == SEIKAKU_COMBAT) || (inventory[INVEN_BOW].name1 == ART_CRIMSON)) - msg_format("¤»¤Ã¤«¤¯¤À¤«¤é%s¤òÅݤ·¤¿¡£", m_name); + msg_format("ãã£ããã ãã%sãåããã", m_name); else -msg_format("%s¤òÅݤ·¤¿¡£", m_name); +msg_format("%sãåããã", m_name); #else msg_format("You have destroyed %s.", m_name); #endif @@ -2049,9 +1911,9 @@ msg_format("%s { #ifdef JP if ((p_ptr->pseikaku == SEIKAKU_COMBAT) || (inventory[INVEN_BOW].name1 == ART_CRIMSON)) - msg_format("¤»¤Ã¤«¤¯¤À¤«¤é%s¤òÁò¤êµî¤Ã¤¿¡£", m_name); + msg_format("ãã£ããã ãã%sãè¬ãå»ã£ãã", m_name); else -msg_format("%s¤òÁò¤êµî¤Ã¤¿¡£", m_name); +msg_format("%sãè¬ãå»ã£ãã", m_name); #else msg_format("You have slain %s.", m_name); #endif @@ -2063,11 +1925,7 @@ msg_format("%s { if ((kubi_r_idx[i] == m_ptr->r_idx) && !(m_ptr->mflag2 & MFLAG2_CHAMELEON)) { -#ifdef JP -msg_format("%s¤Î¼ó¤Ë¤Ï¾Þ¶â¤¬¤«¤«¤Ã¤Æ¤¤¤ë¡£", m_name); -#else - msg_format("There is a price on %s's head.", m_name); -#endif + msg_format(_("%sã®é¦ã«ã¯è³éãããã£ã¦ããã", "There is a price on %s's head."), m_name); break; } } @@ -2091,11 +1949,7 @@ msg_format("%s if (summon_named_creature(0, dummy_y, dummy_x, MON_BIKETAL, mode)) { -#ifdef JP - msg_print("¡Ö¥Ï¥¡¥Ã¥Ï¥Ã¥Ï¥Ã¥Ï¡ª¡ª»ä¤¬¥Ð¥¤¥±¥¿¥ë¤À¡ª¡ª¡×"); -#else - msg_print("Uwa-hahaha! *I* am Biketal!"); -#endif + msg_print(_("ããã¡ããããããï¼ï¼ç§ããã¤ã±ã¿ã«ã ï¼ï¼ã", "Uwa-hahaha! *I* am Biketal!")); } } else @@ -2104,11 +1958,7 @@ msg_format("%s delete_monster_idx(m_idx); } - /* Prevent bug of chaos patron's reward */ - if (r_ptr->flags7 & RF7_KILL_EXP) - get_exp_from_mon((long)exp_mon.max_maxhp*2, &exp_mon); - else - get_exp_from_mon(((long)exp_mon.max_maxhp+1L) * 9L / 10L, &exp_mon); + get_exp_from_mon((long)exp_mon.max_maxhp*2, &exp_mon); /* Not afraid */ (*fear) = FALSE; @@ -2167,11 +2017,7 @@ msg_format("%s if (m_ptr->hp > m_ptr->maxhp/3) dam = (dam + 1) / 2; if (rakuba((dam > 200) ? 200 : dam, FALSE)) { -#ifdef JP -msg_format("%^s¤Ë¿¶¤êÍî¤È¤µ¤ì¤¿¡ª", m_name); -#else - msg_format("%^s has thrown you off!", m_name); -#endif + msg_format(_("%^sã«æ¯ãè½ã¨ãããï¼", "%^s has thrown you off!"), m_name); } } #endif @@ -2181,8 +2027,12 @@ msg_format("%^s } -/* +/*! + * @brief ç¾å¨ã®ã³ã³ã½ã¼ã«è¡¨ç¤ºã®ç¸¦æ¨ªãè¿ãã / * Get term size and calculate screen size + * @param wid_p ã³ã³ã½ã¼ã«ã®è¡¨ç¤ºå¹ æåæ°ãè¿ã + * @param hgt_p ã³ã³ã½ã¼ã«ã®è¡¨ç¤ºè¡æ°ãè¿ã + * @return ãªã */ void get_screen_size(int *wid_p, int *hgt_p) { @@ -2193,9 +2043,10 @@ void get_screen_size(int *wid_p, int *hgt_p) } -/* - * Calculates current boundaries - * Called below and from "do_cmd_locate()". +/*! + * @brief ã³ã³ã½ã¼ã«ä¸ã«ãããããã表示ã®å·¦ä¸ä½ç½®ãè¿ã / + * Calculates current boundaries Called below and from "do_cmd_locate()". + * @return ãªã */ void panel_bounds_center(void) { @@ -2211,8 +2062,10 @@ void panel_bounds_center(void) } -/* +/*! + * @brief ã³ã³ã½ã¼ã«ã®ãªãµã¤ãºã«åããã¦ããããåæç»ãã / * Map resizing whenever the main term changes size + * @return ãªã */ void resize_map(void) { @@ -2254,14 +2107,16 @@ void resize_map(void) * Waiting command; * Place the cursor on the player */ - if (can_save) move_cursor_relative(py, px); + if (can_save) move_cursor_relative(p_ptr->y, p_ptr->x); /* Refresh */ Term_fresh(); } -/* +/*! + * @brief ã³ã³ã½ã¼ã«ãåæç»ãã / * Redraw a term when it is resized + * @return ãªã */ void redraw_window(void) { @@ -2282,12 +2137,14 @@ void redraw_window(void) } -/* +/*! + * @brief ãã©ã¼ã«ã¹ãå½ã¦ãã¹ããããæç»ã®åºæºåº§æ¨ãæå®ããï¼ãµãã«ã¼ãã³ï¼ + * @param dy å¤æ´å ã®ããã¢Yåº§æ¨ + * @param dx å¤æ´å ã®ããã¢Xåº§æ¨ * Handle a request to change the current panel - * * Return TRUE if the panel was changed. - * * Also used in do_cmd_locate + * @return å®éã«åæç»ãå¿ è¦ã ã£ãå ´åTRUEãè¿ã */ bool change_panel(int dy, int dx) { @@ -2336,19 +2193,48 @@ bool change_panel(int dy, int dx) return (FALSE); } +/*! + * @brief ãã©ã¼ã«ã¹ãå½ã¦ãã¹ããããæç»ã®åºæºåº§æ¨ãæå®ãã + * @param y å¤æ´å ã®ããã¢Yåº§æ¨ + * @param x å¤æ´å ã®ããã¢Xåº§æ¨ + * @details + * Handle a request to change the current panel + * Return TRUE if the panel was changed. + * Also used in do_cmd_locate + * @return å®éã«åæç»ãå¿ è¦ã ã£ãå ´åTRUEãè¿ã + */ +bool change_panel_xy(int y, int x) +{ + int dy = 0, dx = 0; + int wid, hgt; + + /* Get size */ + get_screen_size(&wid, &hgt); + + if (y < panel_row_min) dy = -1; + if (y > panel_row_max) dy = 1; + if (x < panel_col_min) dx = -1; + if (x > panel_col_max) dx = 1; -/* + if (!dy && !dx) return (FALSE); + + return change_panel(dy, dx); +} + + +/*! + * @brief ãããæç»ã®ãã©ã¼ã«ã¹ãå½ã¦ãã¹ã座æ¨ãæ´æ°ãã + * @details * Given an row (y) and col (x), this routine detects when a move * off the screen has occurred and figures new borders. -RAK- - * * "Update" forces a "full update" to take place. - * * The map is reprinted if necessary, and "TRUE" is returned. + * @return å®éã«åæç»ãå¿ è¦ã ã£ãå ´åTRUEãè¿ã */ void verify_panel(void) { - int y = py; - int x = px; + int y = p_ptr->y; + int x = p_ptr->x; int wid, hgt; int prow_min; @@ -2472,7 +2358,7 @@ cptr look_mon_desc(monster_type *m_ptr, u32b mode) { /* No damage */ #ifdef JP - desc = living ? "̵½ý" : "̵¥À¥á¡¼¥¸"; + desc = living ? "ç¡å·" : "ç¡ãã¡ã¼ã¸"; #else desc = living ? "unhurt" : "undamaged"; #endif @@ -2482,7 +2368,7 @@ cptr look_mon_desc(monster_type *m_ptr, u32b mode) else if (perc >= 60) { #ifdef JP - desc = living ? "·Ú½ý" : "¾®¥À¥á¡¼¥¸"; + desc = living ? "軽å·" : "å°ãã¡ã¼ã¸"; #else desc = living ? "somewhat wounded" : "somewhat damaged"; #endif @@ -2492,7 +2378,7 @@ cptr look_mon_desc(monster_type *m_ptr, u32b mode) else if (perc >= 25) { #ifdef JP - desc = living ? "Éé½ý" : "Ãæ¥À¥á¡¼¥¸"; + desc = living ? "è² å·" : "ä¸ãã¡ã¼ã¸"; #else desc = living ? "wounded" : "damaged"; #endif @@ -2502,7 +2388,7 @@ cptr look_mon_desc(monster_type *m_ptr, u32b mode) else if (perc >= 10) { #ifdef JP - desc = living ? "½Å½ý" : "Âç¥À¥á¡¼¥¸"; + desc = living ? "éå·" : "大ãã¡ã¼ã¸"; #else desc = living ? "badly wounded" : "badly damaged"; #endif @@ -2512,7 +2398,7 @@ cptr look_mon_desc(monster_type *m_ptr, u32b mode) else { #ifdef JP - desc = living ? "Ⱦ»àȾÀ¸" : "Åݤ줫¤±"; + desc = living ? "åæ»åç" : "åããã"; #else desc = living ? "almost dead" : "almost destroyed"; #endif @@ -2527,27 +2413,15 @@ cptr look_mon_desc(monster_type *m_ptr, u32b mode) } else if (is_pet(m_ptr)) { -#ifdef JP - attitude = ", ¥Ú¥Ã¥È"; -#else - attitude = ", pet"; -#endif + attitude = _(", ããã", ", pet"); } else if (is_friendly(m_ptr)) { -#ifdef JP - attitude = ", ͧ¹¥Åª"; -#else - attitude = ", friendly"; -#endif + attitude = _(", å好ç", ", friendly"); } else { -#ifdef JP - attitude = ""; -#else - attitude = ""; -#endif + attitude = _("", ""); } @@ -2564,19 +2438,11 @@ cptr look_mon_desc(monster_type *m_ptr, u32b mode) /* Display monster's level --- idea borrowed from ToME */ if (ap_r_ptr->r_tkills && !(m_ptr->mflag2 & MFLAG2_KAGE)) { -#ifdef JP - return format("¥ì¥Ù¥ë%d, %s%s%s", ap_r_ptr->level, desc, attitude, clone); -#else - return format("Level %d, %s%s%s", ap_r_ptr->level, desc, attitude, clone); -#endif + return format(_("ã¬ãã«%d, %s%s%s", "Level %d, %s%s%s"), ap_r_ptr->level, desc, attitude, clone); } else { -#ifdef JP - return format("¥ì¥Ù¥ë???, %s%s%s", desc, attitude, clone); -#else - return format("Level ???, %s%s%s", desc, attitude, clone); -#endif + return format(_("ã¬ãã«???, %s%s%s", "Level ???, %s%s%s"), desc, attitude, clone); } } @@ -2664,7 +2530,7 @@ void ang_sort(vptr u, vptr v, int n) * Future versions may restrict the ability to target "trappers" * and "mimics", but the semantics is a little bit weird. */ -bool target_able(int m_idx) +bool target_able(MONSTER_IDX m_idx) { monster_type *m_ptr = &m_list[m_idx]; @@ -2680,7 +2546,7 @@ bool target_able(int m_idx) if (p_ptr->riding && (p_ptr->riding == m_idx)) return (TRUE); /* Monster must be projectable */ - if (!projectable(py, px, m_ptr->fy, m_ptr->fx)) return (FALSE); + if (!projectable(p_ptr->y, p_ptr->x, m_ptr->fy, m_ptr->fx)) return (FALSE); /* XXX XXX XXX Hack -- Never target trappers */ /* if (CLEAR_ATTR && (CLEAR_CHAR)) return (FALSE); */ @@ -2738,15 +2604,15 @@ static bool ang_sort_comp_distance(vptr u, vptr v, int a, int b) int da, db, kx, ky; /* Absolute distance components */ - kx = x[a]; kx -= px; kx = ABS(kx); - ky = y[a]; ky -= py; ky = ABS(ky); + kx = x[a]; kx -= p_ptr->x; kx = ABS(kx); + ky = y[a]; ky -= p_ptr->y; ky = ABS(ky); /* Approximate Double Distance to the first point */ da = ((kx > ky) ? (kx + kx + ky) : (ky + ky + kx)); /* Absolute distance components */ - kx = x[b]; kx -= px; kx = ABS(kx); - ky = y[b]; ky -= py; ky = ABS(ky); + kx = x[b]; kx -= p_ptr->x; kx = ABS(kx); + ky = y[b]; ky -= p_ptr->y; ky = ABS(ky); /* Approximate Double Distance to the first point */ db = ((kx > ky) ? (kx + kx + ky) : (ky + ky + kx)); @@ -2773,8 +2639,8 @@ static bool ang_sort_comp_importance(vptr u, vptr v, int a, int b) monster_race *ap_ra_ptr, *ap_rb_ptr; /* The player grid */ - if (y[a] == py && x[a] == px) return TRUE; - if (y[b] == py && x[b] == px) return FALSE; + if (y[a] == p_ptr->y && x[a] == p_ptr->x) return TRUE; + if (y[b] == p_ptr->y && x[b] == p_ptr->x) return FALSE; /* Extract monster race */ if (ca_ptr->m_idx && ma_ptr->ml) ap_ra_ptr = &r_info[ma_ptr->ap_r_idx]; @@ -2792,7 +2658,7 @@ static bool ang_sort_comp_importance(vptr u, vptr v, int a, int b) if ((ap_ra_ptr->flags1 & RF1_UNIQUE) && !(ap_rb_ptr->flags1 & RF1_UNIQUE)) return TRUE; if (!(ap_ra_ptr->flags1 & RF1_UNIQUE) && (ap_rb_ptr->flags1 & RF1_UNIQUE)) return FALSE; - /* Shadowers first (¤¢¤ä¤·¤¤±Æ) */ + /* Shadowers first (ããããå½±) */ if ((ma_ptr->mflag2 & MFLAG2_KAGE) && !(mb_ptr->mflag2 & MFLAG2_KAGE)) return TRUE; if (!(ma_ptr->mflag2 & MFLAG2_KAGE) && (mb_ptr->mflag2 & MFLAG2_KAGE)) return FALSE; @@ -2854,7 +2720,7 @@ static void ang_sort_swap_distance(vptr u, vptr v, int a, int b) /* * Hack -- help "select" a location (see below) */ -static s16b target_pick(int y1, int x1, int dy, int dx) +static s16b target_pick(POSITION y1, POSITION x1, POSITION dy, POSITION dx) { int i, v; @@ -2973,14 +2839,32 @@ static bool target_set_accept(int y, int x) static void target_set_prepare(int mode) { int y, x; + int min_hgt, max_hgt, min_wid, max_wid; + + if (mode & TARGET_KILL) + { + /* Inner range */ + min_hgt = MAX((p_ptr->y - MAX_RANGE), 0); + max_hgt = MIN((p_ptr->y + MAX_RANGE), cur_hgt - 1); + min_wid = MAX((p_ptr->x - MAX_RANGE), 0); + max_wid = MIN((p_ptr->x + MAX_RANGE), cur_wid - 1); + } + else /* not targetting */ + { + /* Inner panel */ + min_hgt = panel_row_min; + max_hgt = panel_row_max; + min_wid = panel_col_min; + max_wid = panel_col_max; + } /* Reset "temp" array */ temp_n = 0; /* Scan the current panel */ - for (y = panel_row_min; y <= panel_row_max; y++) + for (y = min_hgt; y <= max_hgt; y++) { - for (x = panel_col_min; x <= panel_col_max; x++) + for (x = min_wid; x <= max_wid; x++) { cave_type *c_ptr; @@ -3020,7 +2904,7 @@ static void target_set_prepare(int mode) if (p_ptr->riding && target_pet && (temp_n > 1) && (mode & (TARGET_KILL))) { - byte tmp; + POSITION tmp; tmp = temp_y[0]; temp_y[0] = temp_y[1]; @@ -3031,6 +2915,10 @@ static void target_set_prepare(int mode) } } +void target_set_prepare_look(void){ + target_set_prepare(TARGET_LOOK); +} + /* * Evaluate number of kill needed to gain level @@ -3083,7 +2971,7 @@ static void evaluate_monster_exp(char *buf, monster_type *m_ptr) num = MIN(999, exp_adv_frac); /* Display the number */ - sprintf(buf,"%03ld", num); + sprintf(buf,"%03ld", (long int)num); } @@ -3131,11 +3019,7 @@ static int target_set_aux(int y, int x, int mode, cptr info) if (floor_num) { -#ifdef JP - x_info = "xʪ "; -#else - x_info = "x,"; -#endif + x_info = _("xç© ", "x,"); } } @@ -3146,9 +3030,9 @@ static int target_set_aux(int y, int x, int mode, cptr info) { /* Description */ #ifdef JP - s1 = "¤¢¤Ê¤¿¤Ï"; - s2 = "¤Î¾å"; - s3 = "¤Ë¤¤¤ë"; + s1 = "ããªãã¯"; + s2 = "ã®ä¸"; + s3 = "ã«ãã"; #else s1 = "You are "; @@ -3158,22 +3042,13 @@ static int target_set_aux(int y, int x, int mode, cptr info) } else { -#ifdef JP - s1 = "¥¿¡¼¥²¥Ã¥È:"; -#else - s1 = "Target:"; -#endif + s1 = _("ã¿ã¼ã²ãã:", "Target:"); } /* Hack -- hallucination */ if (p_ptr->image) { -#ifdef JP - cptr name = "²¿¤«´ñ̯¤Êʪ"; -#else - cptr name = "something strange"; -#endif - + cptr name = _("ä½ãå¥å¦ãªç©", "something strange"); /* Display a message */ #ifdef JP @@ -3232,11 +3107,7 @@ static int target_set_aux(int y, int x, int mode, cptr info) screen_roff(m_ptr->ap_r_idx, 0); /* Hack -- Complete the prompt (again) */ -#ifdef JP - Term_addstr(-1, TERM_WHITE, format(" [r»× %s%s]", x_info, info)); -#else - Term_addstr(-1, TERM_WHITE, format(" [r,%s%s]", x_info, info)); -#endif + Term_addstr(-1, TERM_WHITE, format(_(" [ræ %s%s]", " [r,%s%s]"), x_info, info)); /* Command */ query = inkey(); @@ -3260,7 +3131,7 @@ static int target_set_aux(int y, int x, int mode, cptr info) evaluate_monster_exp(acount, m_ptr); #ifdef JP - sprintf(out_val, "[%s]%s%s(%s)%s%s [r»× %s%s]", acount, s1, m_name, look_mon_desc(m_ptr, 0x01), s2, s3, x_info, info); + sprintf(out_val, "[%s]%s%s(%s)%s%s [ræ %s%s]", acount, s1, m_name, look_mon_desc(m_ptr, 0x01), s2, s3, x_info, info); #else sprintf(out_val, "[%s]%s%s%s%s(%s) [r, %s%s]", acount, s1, s2, s3, m_name, look_mon_desc(m_ptr, 0x01), x_info, info); #endif @@ -3287,31 +3158,16 @@ static int target_set_aux(int y, int x, int mode, cptr info) if ((query == ' ') && !(mode & (TARGET_LOOK))) return query; /* Change the intro */ -#ifdef JP - s1 = "¤½¤ì¤Ï"; -#else - s1 = "It is "; -#endif - + s1 = _("ããã¯", "It is "); /* Hack -- take account of gender */ -#ifdef JP - if (ap_r_ptr->flags1 & (RF1_FEMALE)) s1 = "Èà½÷¤Ï"; -#else - if (ap_r_ptr->flags1 & (RF1_FEMALE)) s1 = "She is "; -#endif - -#ifdef JP - else if (ap_r_ptr->flags1 & (RF1_MALE)) s1 = "Èà¤Ï"; -#else - else if (ap_r_ptr->flags1 & (RF1_MALE)) s1 = "He is "; -#endif - + if (ap_r_ptr->flags1 & (RF1_FEMALE)) s1 = _("彼女ã¯", "She is "); + else if (ap_r_ptr->flags1 & (RF1_MALE)) s1 = _("å½¼ã¯", "He is "); /* Use a preposition */ #ifdef JP - s2 = "¤ò"; - s3 = "»ý¤Ã¤Æ¤¤¤ë"; + s2 = "ã"; + s3 = "æã£ã¦ãã"; #else s2 = "carrying "; #endif @@ -3351,17 +3207,13 @@ static int target_set_aux(int y, int x, int mode, cptr info) if ((query == ' ') && !(mode & (TARGET_LOOK))) return query; /* Change the intro */ -#ifdef JP - s2 = "¤ò¤Þ¤¿"; -#else - s2 = "also carrying "; -#endif + s2 = _("ãã¾ã", "also carrying "); } /* Use a preposition */ #ifdef JP - s2 = "¤Î¾å"; - s3 = "¤Ë¤¤¤ë"; + s2 = "ã®ä¸"; + s3 = "ã«ãã"; #else s2 = "on "; #endif @@ -3411,7 +3263,7 @@ static int target_set_aux(int y, int x, int mode, cptr info) { /* Display rough information about items */ #ifdef JP - sprintf(out_val, "%s %d¸Ä¤Î¥¢¥¤¥Æ¥à%s%s ['x'¤Ç°ìÍ÷, %s]", + sprintf(out_val, "%s %dåã®ã¢ã¤ãã %s%s ['x'ã§ä¸è¦§, %s]", s1, floor_num, s2, s3, info); #else sprintf(out_val, "%s%s%sa pile of %d items [x,%s]", @@ -3434,7 +3286,8 @@ static int target_set_aux(int y, int x, int mode, cptr info) /* Continue scrolling list if requested */ while (1) { - int i, o_idx; + int i; + IDX o_idx; /* Save screen */ screen_save(); @@ -3446,7 +3299,7 @@ static int target_set_aux(int y, int x, int mode, cptr info) /* Prompt */ #ifdef JP - sprintf(out_val, "%s %d¸Ä¤Î¥¢¥¤¥Æ¥à%s%s [Enter¤Ç¼¡¤Ø, %s]", + sprintf(out_val, "%s %dåã®ã¢ã¤ãã %s%s [Enterã§æ¬¡ã¸, %s]", s1, floor_num, s2, s3, info); #else sprintf(out_val, "%s%s%sa pile of %d items [Enter,%s]", @@ -3533,25 +3386,15 @@ static int target_set_aux(int y, int x, int mode, cptr info) if ((query == ' ') && !(mode & TARGET_LOOK)) return query; /* Change the intro */ -#ifdef JP - s1 = "¤½¤ì¤Ï"; -#else - s1 = "It is "; -#endif - + s1 = _("ããã¯", "It is "); /* Plurals */ -#ifdef JP - if (o_ptr->number != 1) s1 = "¤½¤ì¤é¤Ï"; -#else - if (o_ptr->number != 1) s1 = "They are "; -#endif - + if (o_ptr->number != 1) s1 = _("ãããã¯", "They are "); /* Preposition */ #ifdef JP - s2 = "¤Î¾å"; - s3 = "¤Ë¸«¤¨¤ë"; + s2 = "ã®ä¸"; + s3 = "ã«è¦ãã"; #else s2 = "on "; #endif @@ -3581,7 +3424,7 @@ static int target_set_aux(int y, int x, int mode, cptr info) if (have_flag(f_ptr->flags, FF_QUEST_ENTER)) { /* Set the quest number temporary */ - int old_quest = p_ptr->inside_quest; + IDX old_quest = p_ptr->inside_quest; int j; /* Clear the text */ @@ -3591,15 +3434,12 @@ static int target_set_aux(int y, int x, int mode, cptr info) p_ptr->inside_quest = c_ptr->special; /* Get the quest text */ - init_flags = INIT_SHOW_TEXT; + init_flags = INIT_NAME_ONLY; process_dungeon_file("q_info.txt", 0, 0, 0, 0); -#ifdef JP - name = format("¥¯¥¨¥¹¥È¡Ö%s¡×(%d³¬ÁêÅö)", quest[c_ptr->special].name, quest[c_ptr->special].level); -#else - name = format("the entrance to the quest '%s'(level %d)", quest[c_ptr->special].name, quest[c_ptr->special].level); -#endif + name = format(_("ã¯ã¨ã¹ãã%sã(%déç¸å½)", "the entrance to the quest '%s'(level %d)"), + quest[c_ptr->special].name, quest[c_ptr->special].level); /* Reset the old quest number */ p_ptr->inside_quest = old_quest; @@ -3612,11 +3452,7 @@ static int target_set_aux(int y, int x, int mode, cptr info) } else if (have_flag(f_ptr->flags, FF_ENTRANCE)) { -#ifdef JP - name = format("%s(%d³¬ÁêÅö)", d_text + d_info[c_ptr->special].text, d_info[c_ptr->special].mindepth); -#else - name = format("%s(level %d)", d_text + d_info[c_ptr->special].text, d_info[c_ptr->special].mindepth); -#endif + name = format(_("%s(%déç¸å½)", "%s(level %d)"), d_text + d_info[c_ptr->special].text, d_info[c_ptr->special].mindepth); } else if (have_flag(f_ptr->flags, FF_TOWN)) { @@ -3624,11 +3460,7 @@ static int target_set_aux(int y, int x, int mode, cptr info) } else if (p_ptr->wild_mode && (feat == feat_floor)) { -#ifdef JP - name = "Æ»"; -#else - name = "road"; -#endif + name = _("é", "road"); } else { @@ -3642,11 +3474,7 @@ static int target_set_aux(int y, int x, int mode, cptr info) (!have_flag(f_ptr->flags, FF_LOS) && !have_flag(f_ptr->flags, FF_TREE)) || have_flag(f_ptr->flags, FF_TOWN))) { -#ifdef JP - s2 = "¤ÎÃæ"; -#else - s2 = "in "; -#endif + s2 = _("ã®ä¸", "in "); } /* Hack -- special introduction for store & building doors -KMW- */ @@ -3656,7 +3484,7 @@ static int target_set_aux(int y, int x, int mode, cptr info) have_flag(f_ptr->flags, FF_ENTRANCE)) { #ifdef JP - s2 = "¤ÎÆþ¸ý"; + s2 = "ã®å ¥å£"; #else s3 = ""; #endif @@ -3683,7 +3511,7 @@ static int target_set_aux(int y, int x, int mode, cptr info) if (c_ptr->mimic) sprintf(f_idx_str, "%d/%d", c_ptr->feat, c_ptr->mimic); else sprintf(f_idx_str, "%d", c_ptr->feat); #ifdef JP - sprintf(out_val, "%s%s%s%s[%s] %x %s %d %d %d (%d,%d)", s1, name, s2, s3, info, c_ptr->info, f_idx_str, c_ptr->dist, c_ptr->cost, c_ptr->when, y, x); + sprintf(out_val, "%s%s%s%s[%s] %x %s %d %d %d (%d,%d) %d", s1, name, s2, s3, info, c_ptr->info, f_idx_str, c_ptr->dist, c_ptr->cost, c_ptr->when, y, x, travel.cost[y][x]); #else sprintf(out_val, "%s%s%s%s [%s] %x %s %d %d %d (%d,%d)", s1, s2, s3, name, info, c_ptr->info, f_idx_str, c_ptr->dist, c_ptr->cost, c_ptr->when, y, x); #endif @@ -3755,8 +3583,8 @@ static int target_set_aux(int y, int x, int mode, cptr info) bool target_set(int mode) { int i, d, m, t, bd; - int y = py; - int x = px; + POSITION y = p_ptr->y; + POSITION x = p_ptr->x; bool done = FALSE; @@ -3766,11 +3594,12 @@ bool target_set(int mode) char info[80]; + char same_key; + cave_type *c_ptr; int wid, hgt; - - + /* Get size */ get_screen_size(&wid, &hgt); @@ -3781,6 +3610,14 @@ bool target_set(int mode) /* Cancel tracking */ /* health_track(0); */ + if (rogue_like_commands) + { + same_key = 'x'; + } + else + { + same_key = 'l'; + } /* Prepare the "temp" array */ target_set_prepare(mode); @@ -3797,6 +3634,9 @@ bool target_set(int mode) y = temp_y[m]; x = temp_x[m]; + /* Set forcus */ + change_panel_xy(y, x); + if (!(mode & TARGET_LOOK)) prt_path(y, x); /* Access */ @@ -3805,27 +3645,20 @@ bool target_set(int mode) /* Allow target */ if (target_able(c_ptr->m_idx)) { -#ifdef JP -strcpy(info, "q»ß t·è p¼« o¸½ +¼¡ -Á°"); -#else - strcpy(info, "q,t,p,o,+,-,