X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=src%2Fcmd5.c;h=456d73fd8e06709db3c6255c51abd1877114352c;hb=2bc0e064cad97d5146c8e513d04cb762c498b524;hp=d723face7650806e1750a773ef0c9cb4f8e0ae1c;hpb=37e207260774f520c77b3f3481160d07e38fd4db;p=hengband%2Fhengband.git diff --git a/src/cmd5.c b/src/cmd5.c index d723face7..456d73fd8 100644 --- a/src/cmd5.c +++ b/src/cmd5.c @@ -1,6 +1,8 @@ -/* File: cmd5.c */ - -/* +/*! + * @file cmd5.c + * @brief プレイヤーの魔法に関するコマンドの実装 / Spell/Prayer commands + * @date 2014/01/02 + * @author * Copyright (c) 1997 Ben Harrison, James E. Wilson, Robert A. Koeneke * * This software may be copied and distributed for educational, research, @@ -8,23 +10,27 @@ * are included in all such copies. Other copyrights may also apply. */ -/* Purpose: Spell/Prayer commands */ #include "angband.h" -cptr spell_category_name(int tval) +/*! + * @brief 領域魔法に応じて技能の名称を返す。 + * @param tval 魔法書のtval + * @return 領域魔法の技能名称を保管した文字列ポインタ + */ +cptr spell_category_name(OBJECT_TYPE_VALUE tval) { switch (tval) { #ifdef JP case TV_HISSATSU_BOOK: - return "ɬ»¦µ»"; + return "必殺技"; case TV_LIFE_BOOK: - return "µ§¤ê"; + return "祈り"; case TV_MUSIC_BOOK: - return "²Î"; + return "歌"; default: - return "¼öʸ"; + return "呪文"; #else case TV_HISSATSU_BOOK: return "art"; @@ -38,27 +44,34 @@ cptr spell_category_name(int tval) } } -/* + +bool select_the_force = FALSE; + +/*! + * @brief 領域魔法の閲覧、学習、使用選択するインターフェイス処理 * Allow user to choose a spell/prayer from the given book. - * + * @param sn 選択した魔法IDを返す参照ポインタ + * @param prompt 魔法を利用する際の動詞表記 + * @param sval 魔道書のsval + * @param learned 閲覧/使用選択ならばTRUE、学習処理ならFALSE + * @param use_realm 魔法領域ID + * @return + *
  * If a valid spell is chosen, saves it in '*sn' and returns TRUE
  * If the user hits escape, returns FALSE, and set '*sn' to -1
  * If there are no legal choices, returns FALSE, and sets '*sn' to -2
- *
  * The "prompt" should be "cast", "recite", or "study"
  * The "known" should be TRUE for cast/pray, FALSE for study
+ * 
*/ - -bool select_the_force = FALSE; - -static int get_spell(int *sn, cptr prompt, int sval, bool learned, int use_realm) +static int get_spell(COMMAND_CODE *sn, cptr prompt, OBJECT_SUBTYPE_VALUE sval, bool learned, REALM_IDX use_realm) { int i; - int spell = -1; + SPELL_IDX spell = -1; int num = 0; int ask = TRUE; - int need_mana; - byte spells[64]; + MANA_POINT need_mana; + SPELL_IDX spells[64]; bool flag, redraw, okay; char choice; const magic_type *s_ptr; @@ -133,8 +146,8 @@ static int get_spell(int *sn, cptr prompt, int sval, bool learned, int use_realm /* Build a prompt (accept all spells) */ #ifdef JP - jverb1( prompt, jverb_buf ); - (void) strnfmt(out_val, 78, "(%^s:%c-%c, '*'¤Ç°ìÍ÷, ESC¤ÇÃæÃÇ) ¤É¤Î%s¤ò%^s¤Þ¤¹¤«? ", + jverb( prompt, jverb_buf, JVERB_AND ); + (void) strnfmt(out_val, 78, "(%^s:%c-%c, '*'で一覧, ESCで中断) どの%sを%^sますか? ", p, I2A(0), I2A(num - 1), p, jverb_buf ); #else (void)strnfmt(out_val, 78, "(%^ss %c-%c, *=List, ESC=exit) %^s which %s? ", @@ -229,7 +242,7 @@ static int get_spell(int *sn, cptr prompt, int sval, bool learned, int use_realm ask = (isupper(choice)); /* Lowercase */ - if (ask) choice = tolower(choice); + if (ask) choice = (char)tolower(choice); /* Extract request */ i = (islower(choice) ? A2I(choice) : -1); @@ -250,7 +263,7 @@ static int get_spell(int *sn, cptr prompt, int sval, bool learned, int use_realm { bell(); #ifdef JP - msg_format("¤½¤Î%s¤ò%s¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¡£", p, prompt); + msg_format("その%sを%sことはできません。", p, prompt); #else msg_format("You may not %s that %s.", prompt, p); #endif @@ -285,9 +298,9 @@ static int get_spell(int *sn, cptr prompt, int sval, bool learned, int use_realm /* Prompt */ #ifdef JP - jverb1( prompt, jverb_buf ); - /* ±ÑÆüÀÚ¤êÂؤ¨µ¡Ç½¤ËÂбþ */ - (void) strnfmt(tmp_val, 78, "%s(MP%d, ¼ºÇÔΨ%d%%)¤ò%s¤Þ¤¹¤«? ", + jverb( prompt, jverb_buf, JVERB_AND ); + /* 英日切り替え機能に対応 */ + (void) strnfmt(tmp_val, 78, "%s(MP%d, 失敗率%d%%)を%sますか? ", do_spell(use_realm, spell, SPELL_NAME), need_mana, spell_chance(spell, use_realm),jverb_buf); #else @@ -333,7 +346,11 @@ static int get_spell(int *sn, cptr prompt, int sval, bool learned, int use_realm return TRUE; } - +/*! + * @brief オブジェクトがプレイヤーが使用可能な魔道書かどうかを判定する + * @param o_ptr 判定したいオブ会ジェクトの構造体参照ポインタ + * @return 学習できる魔道書ならばTRUEを返す + */ static bool item_tester_learn_spell(object_type *o_ptr) { s32b choices = realm_choices2[p_ptr->pclass]; @@ -358,7 +375,10 @@ static bool item_tester_learn_spell(object_type *o_ptr) return (FALSE); } - +/*! + * @brief プレイヤーが魔道書を一冊も持っていないかを判定する + * @return 魔道書を一冊も持っていないならTRUEを返す + */ static bool player_has_no_spellbooks(void) { int i; @@ -370,7 +390,7 @@ static bool player_has_no_spellbooks(void) if (o_ptr->k_idx && check_book_realm(o_ptr->tval, o_ptr->sval)) return FALSE; } - for (i = cave[py][px].o_idx; i; i = o_ptr->next_o_idx) + for (i = cave[p_ptr->y][p_ptr->x].o_idx; i; i = o_ptr->next_o_idx) { o_ptr = &o_list[i]; if (o_ptr->k_idx && (o_ptr->marked & OM_FOUND) && check_book_realm(o_ptr->tval, o_ptr->sval)) return FALSE; @@ -379,10 +399,14 @@ static bool player_has_no_spellbooks(void) return TRUE; } - +/*! + * @brief プレイヤーの職業が練気術師の時、領域魔法と練気術を切り換える処理のインターフェイス + * @param browse_only 魔法と技能の閲覧を行うならばTRUE + * @return 魔道書を一冊も持っていないならTRUEを返す + */ static void confirm_use_force(bool browse_only) { - int item; + SPELL_IDX item; char which; #ifdef ALLOW_REPEAT @@ -397,11 +421,7 @@ static void confirm_use_force(bool browse_only) #endif /* ALLOW_REPEAT */ /* Show the prompt */ -#ifdef JP - prt("('w'Îýµ¤½Ñ, ESC) 'w'¤«ESC¤ò²¡¤·¤Æ¤¯¤À¤µ¤¤¡£ ", 0, 0); -#else - prt("(w for the Force, ESC) Hit 'w' or ESC. ", 0, 0); -#endif + prt(_("('w'練気術, ESC) 'w'かESCを押してください。 ", "(w for the Force, ESC) Hit 'w' or ESC. "), 0, 0); while (1) { @@ -432,22 +452,29 @@ static void confirm_use_force(bool browse_only) } -/* +/*! + * @brief プレイヤーの魔法と技能を閲覧するコマンドのメインルーチン / * Peruse the spells/prayers in a book - * + * @return なし + * @details + *
  * Note that *all* spells in the book are listed
  *
  * Note that browsing is allowed while confused or blind,
  * and in the dark, primarily to allow browsing in stores.
+ * 
*/ void do_cmd_browse(void) { - int item, sval, use_realm = 0, j, line; - int spell = -1; + OBJECT_IDX item; + OBJECT_SUBTYPE_VALUE sval; + REALM_IDX use_realm = 0; + int j, line; + SPELL_IDX spell = -1; int num = 0; - byte spells[64]; - char temp[62*4]; + int spells[64]; + char temp[62*4]; object_type *o_ptr; @@ -456,12 +483,7 @@ void do_cmd_browse(void) /* Warriors are illiterate */ if (!(p_ptr->realm1 || p_ptr->realm2) && (p_ptr->pclass != CLASS_SORCERER) && (p_ptr->pclass != CLASS_RED_MAGE)) { -#ifdef JP - msg_print("ËܤòÆɤळ¤È¤¬¤Ç¤­¤Ê¤¤¡ª"); -#else - msg_print("You cannot read books!"); -#endif - + msg_print(_("本を読むことができない!", "You cannot read books!")); return; } @@ -485,17 +507,8 @@ void do_cmd_browse(void) else item_tester_hook = item_tester_learn_spell; /* Get an item */ -#ifdef JP - q = "¤É¤ÎËܤòÆɤߤޤ¹¤«? "; -#else - q = "Browse which book? "; -#endif - -#ifdef JP - s = "Æɤá¤ëËܤ¬¤Ê¤¤¡£"; -#else - s = "You have no books that you can read."; -#endif + q = _("どの本を読みますか? ", "Browse which book? "); + s = _("読める本がない。", "You have no books that you can read."); if (!get_item(&item, q, s, (USE_INVEN | USE_FLOOR))) { @@ -556,11 +569,7 @@ void do_cmd_browse(void) while(TRUE) { /* Ask for a spell, allow cancel */ -#ifdef JP - if (!get_spell(&spell, "Æɤà", o_ptr->sval, TRUE, use_realm)) -#else - if (!get_spell(&spell, "browse", o_ptr->sval, TRUE, use_realm)) -#endif + if (!get_spell(&spell, _("読む", "browse"), o_ptr->sval, TRUE, use_realm)) { /* If cancelled, leave immediately. */ if (spell == -1) break; @@ -570,17 +579,9 @@ void do_cmd_browse(void) /* Notify that there's nothing to see, and wait. */ if (use_realm == REALM_HISSATSU) -#ifdef JP - prt("Æɤá¤ëµ»¤¬¤Ê¤¤¡£", 0, 0); -#else - prt("No techniques to browse.", 0, 0); -#endif + prt(_("読める技がない。", "No techniques to browse."), 0, 0); else -#ifdef JP - prt("Æɤá¤ë¼öʸ¤¬¤Ê¤¤¡£", 0, 0); -#else - prt("No spells to browse.", 0, 0); -#endif + prt(_("読める呪文がない。", "No spells to browse."), 0, 0); (void)inkey(); @@ -609,8 +610,12 @@ void do_cmd_browse(void) screen_load(); } - -static void change_realm2(int next_realm) +/*! + * @brief プレイヤーの第二魔法領域を変更する / + * @param next_realm 変更先の魔法領域ID + * @return なし + */ +static void change_realm2(CHARACTER_IDX next_realm) { int i, j = 0; char tmp[80]; @@ -631,11 +636,7 @@ static void change_realm2(int next_realm) p_ptr->spell_worked2 = 0L; p_ptr->spell_forgotten2 = 0L; -#ifdef JP - sprintf(tmp,"ËâË¡¤ÎÎΰè¤ò%s¤«¤é%s¤ËÊѹ¹¤·¤¿¡£", realm_names[p_ptr->realm2], realm_names[next_realm]); -#else - sprintf(tmp,"change magic realm from %s to %s.", realm_names[p_ptr->realm2], realm_names[next_realm]); -#endif + sprintf(tmp,_("魔法の領域を%sから%sに変更した。", "change magic realm from %s to %s."), realm_names[p_ptr->realm2], realm_names[next_realm]); do_cmd_write_nikki(NIKKI_BUNSHOU, 0, tmp); p_ptr->old_realm |= 1 << (p_ptr->realm2-1); p_ptr->realm2 = next_realm; @@ -649,17 +650,21 @@ static void change_realm2(int next_realm) } -/* +/*! + * @brief 魔法を学習するコマンドのメインルーチン / * Study a book to gain a new spell/prayer + * @return なし */ void do_cmd_study(void) { - int i, item, sval; + int i; + OBJECT_IDX item; + OBJECT_SUBTYPE_VALUE sval; int increment = 0; bool learned = FALSE; /* Spells of realm2 will have an increment of +32 */ - int spell = -1; + SPELL_IDX spell = -1; cptr p = spell_category_name(mp_ptr->spell_book); @@ -669,45 +674,25 @@ void do_cmd_study(void) if (!p_ptr->realm1) { -#ifdef JP -msg_print("ËܤòÆɤळ¤È¤¬¤Ç¤­¤Ê¤¤¡ª"); -#else - msg_print("You cannot read books!"); -#endif - + msg_print(_("本を読むことができない!", "You cannot read books!")); return; } if (p_ptr->blind || no_lite()) { -#ifdef JP -msg_print("Ìܤ¬¸«¤¨¤Ê¤¤¡ª"); -#else - msg_print("You cannot see!"); -#endif - + msg_print(_("目が見えない!", "You cannot see!")); return; } if (p_ptr->confused) { -#ifdef JP -msg_print("º®Í𤷤Ƥ¤¤ÆÆɤá¤Ê¤¤¡ª"); -#else - msg_print("You are too confused!"); -#endif - + msg_print(_("混乱していて読めない!", "You are too confused!")); return; } if (!(p_ptr->new_spells)) { -#ifdef JP -msg_format("¿·¤·¤¤%s¤ò³Ð¤¨¤ë¤³¤È¤Ï¤Ç¤­¤Ê¤¤¡ª", p); -#else - msg_format("You cannot learn any new %ss!", p); -#endif - + msg_format(_("新しい%sを覚えることはできない!", "You cannot learn any new %ss!"), p); return; } @@ -718,9 +703,9 @@ msg_format(" #ifdef JP if( p_ptr->new_spells < 10 ){ - msg_format("¤¢¤È %d ¤Ä¤Î%s¤ò³Ø¤Ù¤ë¡£", p_ptr->new_spells, p); + msg_format("あと %d つの%sを学べる。", p_ptr->new_spells, p); }else{ - msg_format("¤¢¤È %d ¸Ä¤Î%s¤ò³Ø¤Ù¤ë¡£", p_ptr->new_spells, p); + msg_format("あと %d 個の%sを学べる。", p_ptr->new_spells, p); } #else msg_format("You can learn %d new %s%s.", p_ptr->new_spells, p, @@ -735,17 +720,8 @@ msg_format(" else item_tester_hook = item_tester_learn_spell; /* Get an item */ -#ifdef JP -q = "¤É¤ÎËܤ«¤é³Ø¤Ó¤Þ¤¹¤«? "; -#else - q = "Study which book? "; -#endif - -#ifdef JP -s = "Æɤá¤ëËܤ¬¤Ê¤¤¡£"; -#else - s = "You have no books that you can read."; -#endif + q = _("どの本から学びますか? ", "Study which book? "); + s = _("読める本がない。", "You have no books that you can read."); if (!get_item(&item, q, s, (USE_INVEN | USE_FLOOR))) return; @@ -767,11 +743,7 @@ s = " if (o_ptr->tval == REALM2_BOOK) increment = 32; else if (o_ptr->tval != REALM1_BOOK) { -#ifdef JP - if (!get_check("ËÜÅö¤ËËâË¡¤ÎÎΰè¤òÊѹ¹¤·¤Þ¤¹¤«¡©")) return; -#else - if (!get_check("Really, change magic realm? ")) return; -#endif + if (!get_check(_("本当に魔法の領域を変更しますか?", "Really, change magic realm? "))) return; change_realm2(tval2realm(o_ptr->tval)); increment = 32; } @@ -787,7 +759,7 @@ s = " { /* Ask for a spell, allow cancel */ #ifdef JP - if (!get_spell(&spell, "³Ø¤Ö", sval, FALSE, o_ptr->tval - TV_LIFE_BOOK + 1) + if (!get_spell(&spell, "学ぶ", sval, FALSE, o_ptr->tval - TV_LIFE_BOOK + 1) && (spell == -1)) return; #else if (!get_spell(&spell, "study", sval, FALSE, o_ptr->tval - TV_LIFE_BOOK + 1) @@ -829,12 +801,7 @@ s = " if (spell < 0) { /* Message */ -#ifdef JP -msg_format("¤½¤ÎËܤˤϳؤ֤٤­%s¤¬¤Ê¤¤¡£", p); -#else - msg_format("You cannot learn any %ss in that book.", p); -#endif - + msg_format(_("その本には学ぶべき%sがない。", "You cannot learn any %ss in that book."), p); /* Abort */ return; @@ -864,15 +831,11 @@ msg_format(" if (old_exp >= max_exp) { -#ifdef JP - msg_format("¤½¤Î%s¤Ï´°Á´¤Ë»È¤¤¤³¤Ê¤»¤ë¤Î¤Ç³Ø¤ÖɬÍפϤʤ¤¡£", p); -#else - msg_format("You don't need to study this %s anymore.", p); -#endif + msg_format(_("その%sは完全に使いこなせるので学ぶ必要はない。", "You don't need to study this %s anymore."), p); return; } #ifdef JP - if (!get_check(format("%s¤Î%s¤ò¤µ¤é¤Ë³Ø¤Ó¤Þ¤¹¡£¤è¤í¤·¤¤¤Ç¤¹¤«¡©", name, p))) + if (!get_check(format("%sの%sをさらに学びます。よろしいですか?", name, p))) #else if (!get_check(format("You will study a %s of %s again. Are you sure? ", p, name))) #endif @@ -900,11 +863,7 @@ msg_format(" p_ptr->spell_exp[spell] = SPELL_EXP_BEGINNER + old_exp / 3; new_rank = EXP_LEVEL_BEGINNER; } -#ifdef JP - msg_format("%s¤Î½ÏÎýÅÙ¤¬%s¤Ë¾å¤¬¤Ã¤¿¡£", name, exp_level_str[new_rank]); -#else - msg_format("Your proficiency of %s is now %s rank.", name, exp_level_str[new_rank]); -#endif + msg_format(_("%sの熟練度が%sに上がった。", "Your proficiency of %s is now %s rank."), name, exp_level_str[new_rank]); } else { @@ -920,15 +879,15 @@ msg_format(" /* Mention the result */ #ifdef JP - /* ±ÑÆüÀÚ¤êÂؤ¨µ¡Ç½¤ËÂбþ */ + /* 英日切り替え機能に対応 */ if (mp_ptr->spell_book == TV_MUSIC_BOOK) { - msg_format("%s¤ò³Ø¤ó¤À¡£", + msg_format("%sを学んだ。", do_spell(increment ? p_ptr->realm2 : p_ptr->realm1, spell % 32, SPELL_NAME)); } else { - msg_format("%s¤Î%s¤ò³Ø¤ó¤À¡£", + msg_format("%sの%sを学んだ。", do_spell(increment ? p_ptr->realm2 : p_ptr->realm1, spell % 32, SPELL_NAME) ,p); } #else @@ -938,7 +897,7 @@ msg_format(" } /* Take a turn */ - energy_use = 100; + p_ptr->energy_use = 100; switch (mp_ptr->spell_book) { @@ -967,8 +926,8 @@ msg_format(" { /* Message */ #ifdef JP - if (p_ptr->new_spells < 10) msg_format("¤¢¤È %d ¤Ä¤Î%s¤ò³Ø¤Ù¤ë¡£", p_ptr->new_spells, p); - else msg_format("¤¢¤È %d ¸Ä¤Î%s¤ò³Ø¤Ù¤ë¡£", p_ptr->new_spells, p); + if (p_ptr->new_spells < 10) msg_format("あと %d つの%sを学べる。", p_ptr->new_spells, p); + else msg_format("あと %d 個の%sを学べる。", p_ptr->new_spells, p); #else msg_format("You can learn %d more %s%s.", p_ptr->new_spells, p, (p_ptr->new_spells != 1) ? "s" : ""); @@ -984,14 +943,18 @@ msg_format(" p_ptr->window |= (PW_OBJECT); } - +/*! + * @brief 運命の輪、並びにカオス的な効果の発動 + * @param spell ランダムな効果を選択するための基準ID + * @return なし + */ static void wild_magic(int spell) { int counter = 0; - int type = SUMMON_BIZARRE1 + randint0(6); + int type = SUMMON_MOLD + randint0(6); - if (type < SUMMON_BIZARRE1) type = SUMMON_BIZARRE1; - else if (type > SUMMON_BIZARRE6) type = SUMMON_BIZARRE6; + if (type < SUMMON_MOLD) type = SUMMON_MOLD; + else if (type > SUMMON_MIMIC) type = SUMMON_MIMIC; switch (randint1(spell) + randint1(8) + 1) { @@ -1029,7 +992,7 @@ static void wild_magic(int spell) break; case 19: case 20: - trap_creation(py, px); + trap_creation(p_ptr->y, p_ptr->x); break; case 21: case 22: @@ -1041,7 +1004,7 @@ static void wild_magic(int spell) aggravate_monsters(0); break; case 26: - earthquake(py, px, 5); + earthquake(p_ptr->y, p_ptr->x, 5); break; case 27: case 28: @@ -1064,15 +1027,15 @@ static void wild_magic(int spell) case 35: while (counter++ < 8) { - (void)summon_specific(0, py, px, (dun_level * 3) / 2, type, (PM_ALLOW_GROUP | PM_NO_PET)); + (void)summon_specific(0, p_ptr->y, p_ptr->x, (dun_level * 3) / 2, type, (PM_ALLOW_GROUP | PM_NO_PET)); } break; case 36: case 37: - activate_hi_summon(py, px, FALSE); + activate_hi_summon(p_ptr->y, p_ptr->x, FALSE); break; case 38: - (void)summon_cyber(-1, py, px); + (void)summon_cyber(-1, p_ptr->y, p_ptr->x); break; default: { @@ -1086,12 +1049,17 @@ static void wild_magic(int spell) } -/* +/*! + * @brief 魔法を詠唱するコマンドのメインルーチン / * Cast a spell + * @return なし */ void do_cmd_cast(void) { - int item, sval, spell, realm; + OBJECT_IDX item; + OBJECT_SUBTYPE_VALUE sval; + SPELL_IDX spell; + REALM_IDX realm; int chance; int increment = 0; int use_realm; @@ -1110,12 +1078,7 @@ void do_cmd_cast(void) /* Require spell ability */ if (!p_ptr->realm1 && (p_ptr->pclass != CLASS_SORCERER) && (p_ptr->pclass != CLASS_RED_MAGE)) { -#ifdef JP - msg_print("¼öʸ¤ò¾§¤¨¤é¤ì¤Ê¤¤¡ª"); -#else - msg_print("You cannot cast spells!"); -#endif - + msg_print(_("呪文を唱えられない!", "You cannot cast spells!")); return; } @@ -1125,11 +1088,7 @@ void do_cmd_cast(void) if (p_ptr->pclass == CLASS_FORCETRAINER) confirm_use_force(FALSE); else { -#ifdef JP - msg_print("Ìܤ¬¸«¤¨¤Ê¤¤¡ª"); -#else - msg_print("You cannot see!"); -#endif + msg_print(_("目が見えない!", "You cannot see!")); flush(); } return; @@ -1138,11 +1097,7 @@ void do_cmd_cast(void) /* Not when confused */ if (p_ptr->confused) { -#ifdef JP - msg_print("º®Í𤷤Ƥ¤¤Æ¾§¤¨¤é¤ì¤Ê¤¤¡ª"); -#else - msg_print("You are too confused!"); -#endif + msg_print(_("混乱していて唱えられない!", "You are too confused!")); flush(); return; } @@ -1153,11 +1108,7 @@ void do_cmd_cast(void) if (hex_spell_fully()) { bool flag = FALSE; -#ifdef JP - msg_print("¤³¤ì°Ê¾å¿·¤·¤¤¼öʸ¤ò±Ó¾§¤¹¤ë¤³¤È¤Ï¤Ç¤­¤Ê¤¤¡£"); -#else - msg_print("Can not spell new spells more."); -#endif + msg_print(_("これ以上新しい呪文を詠唱することはできない。", "Can not spell new spells more.")); flush(); if (p_ptr->lev >= 35) flag = stop_hex_spell(); if (!flag) return; @@ -1180,17 +1131,8 @@ void do_cmd_cast(void) item_tester_tval = mp_ptr->spell_book; /* Get an item */ -#ifdef JP - q = "¤É¤Î¼öʸ½ñ¤ò»È¤¤¤Þ¤¹¤«? "; -#else - q = "Use which book? "; -#endif - -#ifdef JP - s = "¼öʸ½ñ¤¬¤Ê¤¤¡ª"; -#else - s = "You have no spell books!"; -#endif + q = _("どの呪文書を使いますか? ", "Use which book? "); + s = _("呪文書がない!", "You have no spell books!"); if (!get_item(&item, q, s, (USE_INVEN | USE_FLOOR))) { @@ -1237,10 +1179,10 @@ void do_cmd_cast(void) /* Ask for a spell */ #ifdef JP if (!get_spell(&spell, - ((mp_ptr->spell_book == TV_LIFE_BOOK) ? "±Ó¾§¤¹¤ë" : (mp_ptr->spell_book == TV_MUSIC_BOOK) ? "²Î¤¦" : "¾§¤¨¤ë"), + ((mp_ptr->spell_book == TV_LIFE_BOOK) ? "詠唱する" : (mp_ptr->spell_book == TV_MUSIC_BOOK) ? "歌う" : "唱える"), sval, TRUE, realm)) { - if (spell == -2) msg_format("¤½¤ÎËܤˤÏÃΤäƤ¤¤ë%s¤¬¤Ê¤¤¡£", prayer); + if (spell == -2) msg_format("その本には知っている%sがない。", prayer); return; } #else @@ -1261,11 +1203,7 @@ void do_cmd_cast(void) { if (hex_spelling(spell)) { -#ifdef JP - msg_print("¤½¤Î¼öʸ¤Ï¤¹¤Ç¤Ë±Ó¾§Ãæ¤À¡£"); -#else - msg_print("You are already casting it."); -#endif + msg_print(_("その呪文はすでに詠唱中だ。", "You are already casting it.")); return; } } @@ -1289,8 +1227,8 @@ void do_cmd_cast(void) /* Warning */ #ifdef JP -msg_format("¤½¤Î%s¤ò%s¤Î¤Ë½½Ê¬¤Ê¥Þ¥¸¥Ã¥¯¥Ý¥¤¥ó¥È¤¬¤Ê¤¤¡£",prayer, - ((mp_ptr->spell_book == TV_LIFE_BOOK) ? "±Ó¾§¤¹¤ë" : (mp_ptr->spell_book == TV_LIFE_BOOK) ? "²Î¤¦" : "¾§¤¨¤ë")); +msg_format("その%sを%sのに十分なマジックポイントがない。",prayer, + ((mp_ptr->spell_book == TV_LIFE_BOOK) ? "詠唱する" : (mp_ptr->spell_book == TV_LIFE_BOOK) ? "歌う" : "唱える")); #else msg_format("You do not have enough mana to %s this %s.", ((mp_ptr->spell_book == TV_LIFE_BOOK) ? "recite" : "cast"), @@ -1301,12 +1239,7 @@ msg_format(" if (!over_exert) return; /* Verify */ -#ifdef JP - if (!get_check_strict("¤½¤ì¤Ç¤âÄ©À路¤Þ¤¹¤«? ", CHECK_OKAY_CANCEL)) return; -#else - if (!get_check_strict("Attempt it anyway? ", CHECK_OKAY_CANCEL)) return; -#endif - + if (!get_check_strict(_("それでも挑戦しますか? ", "Attempt it anyway? "), CHECK_OKAY_CANCEL)) return; } /* Spell failure chance */ @@ -1320,17 +1253,15 @@ msg_format(" } else over_exerted = TRUE; + /* Redraw mana */ + p_ptr->redraw |= (PR_MANA); + /* Failed spell */ if (randint0(100) < chance) { if (flush_failure) flush(); - -#ifdef JP -msg_format("%s¤ò¤¦¤Þ¤¯¾§¤¨¤é¤ì¤Ê¤«¤Ã¤¿¡ª", prayer); -#else - msg_format("You failed to get the %s off!", prayer); -#endif - + + msg_format(_("%sをうまく唱えられなかった!", "You failed to get the %s off!"), prayer); sound(SOUND_FAIL); switch (realm) @@ -1364,12 +1295,7 @@ msg_format("%s if ((o_ptr->tval == TV_CHAOS_BOOK) && (randint1(100) < spell)) { -#ifdef JP -msg_print("¥«¥ª¥¹Åª¤Ê¸ú²Ì¤òȯÀ¸¤·¤¿¡ª"); -#else - msg_print("You produce a chaotic effect!"); -#endif - + msg_print(_("カオス的な効果を発生した!", "You produce a chaotic effect!")); wild_magic(spell); } else if ((o_ptr->tval == TV_DEATH_BOOK) && (randint1(100) < spell)) @@ -1380,30 +1306,16 @@ msg_print(" } else { -#ifdef JP - msg_print("Äˤ¤¡ª"); -#else - msg_print("It hurts!"); -#endif - -#ifdef JP - take_hit(DAMAGE_LOSELIFE, damroll(o_ptr->sval + 1, 6), "°Å¹õËâË¡¤ÎµÕή", -1); -#else - take_hit(DAMAGE_LOSELIFE, damroll(o_ptr->sval + 1, 6), "a miscast Death spell", -1); -#endif + msg_print(_("痛い!", "It hurts!")); + take_hit(DAMAGE_LOSELIFE, damroll(o_ptr->sval + 1, 6), _("暗黒魔法の逆流", "a miscast Death spell"), -1); - if ((spell > 15) && one_in_(6) && !p_ptr->hold_life) + if ((spell > 15) && one_in_(6) && !p_ptr->hold_exp) lose_exp(spell * 250); } } else if ((o_ptr->tval == TV_MUSIC_BOOK) && (randint1(200) < spell)) { -#ifdef JP -msg_print("¤¤¤ä¤Ê²»¤¬¶Á¤¤¤¿"); -#else -msg_print("An infernal sound echoed."); -#endif - + msg_print(_("いやな音が響いた", "An infernal sound echoed.")); aggravate_monsters(0); } if (randint1(100) >= chance) @@ -1549,7 +1461,7 @@ msg_print("An infernal sound echoed."); } /* Take a turn */ - energy_use = 100; + p_ptr->energy_use = 100; /* Over-exert the player */ @@ -1562,12 +1474,7 @@ msg_print("An infernal sound echoed."); p_ptr->csp_frac = 0; /* Message */ -#ifdef JP -msg_print("Àº¿À¤ò½¸Ã椷¤¹¤®¤Æµ¤¤ò¼º¤Ã¤Æ¤·¤Þ¤Ã¤¿¡ª"); -#else - msg_print("You faint from the effort!"); -#endif - + msg_print(_("精神を集中しすぎて気を失ってしまった!", "You faint from the effort!")); /* Hack -- Bypass free action */ (void)set_paralyzed(p_ptr->paralyzed + randint1(5 * oops + 1)); @@ -1603,27 +1510,26 @@ msg_print(" bool perm = (randint0(100) < 25); /* Message */ -#ifdef JP -msg_print("ÂΤò°­¤¯¤·¤Æ¤·¤Þ¤Ã¤¿¡ª"); -#else - msg_print("You have damaged your health!"); -#endif - + msg_print(_("体を悪くしてしまった!", "You have damaged your health!")); /* Reduce constitution */ (void)dec_stat(A_CON, 15 + randint1(10), perm); } } - /* Redraw mana */ - p_ptr->redraw |= (PR_MANA); - /* Window stuff */ p_ptr->window |= (PW_PLAYER); p_ptr->window |= (PW_SPELL); } - +/*! + * @brief ペットになっているモンスターをソートするための比較処理 + * @param u モンスターの構造体配列 + * @param v 未使用 + * @param a 比較対象のモンスターID1 + * @param b 比較対象のモンスターID2 + * @return 2番目が大ならばTRUEを返す + */ static bool ang_sort_comp_pet_dismiss(vptr u, vptr v, int a, int b) { u16b *who = (u16b*)(u); @@ -1660,6 +1566,12 @@ static bool ang_sort_comp_pet_dismiss(vptr u, vptr v, int a, int b) return w1 <= w2; } +/*! + * @brief ペットの善悪属性に応じた維持コストの途中計算処理 + * @param m_ptr 計算基準となるモンスターの構造体参照ポインタ + * @param inc m_ptrで指定したモンスターを維持コスト計算に加えるならTRUE、外すならFALSEを指定 + * @return なし + */ void check_pets_num_and_align(monster_type *m_ptr, bool inc) { s32b old_friend_align = friend_align; @@ -1681,10 +1593,14 @@ void check_pets_num_and_align(monster_type *m_ptr, bool inc) if (old_friend_align != friend_align) p_ptr->update |= (PU_BONUS); } +/*! + * @brief ペットの維持コスト計算 + * @return 維持コスト(%) + */ int calculate_upkeep(void) { s32b old_friend_align = friend_align; - int m_idx; + MONSTER_IDX m_idx; bool have_a_unique = FALSE; s32b total_friend_levels = 0; @@ -1739,17 +1655,22 @@ int calculate_upkeep(void) return 0; } +/*! + * @brief ペットを開放するコマンドのメインルーチン + * @return なし + */ void do_cmd_pet_dismiss(void) { monster_type *m_ptr; bool all_pets = FALSE; - int pet_ctr, i; + MONSTER_IDX pet_ctr; + int i; int Dismissed = 0; - u16b *who; + MONSTER_IDX *who; u16b dummy_why; int max_pet = 0; - int cu, cv; + bool_hack cu, cv; cu = Term->scr->cu; cv = Term->scr->cv; @@ -1757,7 +1678,7 @@ void do_cmd_pet_dismiss(void) Term->scr->cv = 1; /* Allocate the "who" array */ - C_MAKE(who, max_m_idx, u16b); + C_MAKE(who, max_m_idx, MONSTER_IDX); /* Process the monsters (backwards) */ for (pet_ctr = m_max - 1; pet_ctr >= 1; pet_ctr--) @@ -1777,7 +1698,6 @@ void do_cmd_pet_dismiss(void) { bool delete_this; char friend_name[80]; - char buf[80]; bool kakunin; /* Access the monster */ @@ -1795,14 +1715,9 @@ void do_cmd_pet_dismiss(void) /* Hack -- handle stuff */ handle_stuff(); - -#ifdef JP - sprintf(buf, "%s¤òÊü¤·¤Þ¤¹¤«¡© [Yes/No/Unnamed (%dÂÎ)]", friend_name, max_pet - i); -#else - sprintf(buf, "Dismiss %s? [Yes/No/Unnamed (%d remain)]", friend_name, max_pet - i); -#endif - prt(buf, 0, 0); - + + msg_format(_("%sを放しますか? [Yes/No/Unnamed (%d体)]","Dismiss %s? [Yes/No/Unnamed (%d remain)]"), friend_name, max_pet - i); + if (m_ptr->ml) move_cursor_relative(m_ptr->fy, m_ptr->fx); @@ -1816,12 +1731,9 @@ void do_cmd_pet_dismiss(void) if (kakunin) { -#ifdef JP - sprintf(buf, "ËÜÅö¤Ë¤è¤í¤·¤¤¤Ç¤¹¤«¡© (%s) ", friend_name); -#else - sprintf(buf, "Are you sure? (%s) ", friend_name); -#endif - if (!get_check(buf)) + msg_format(_("本当によろしいですか? (%s) ","Are you sure? (%s) "), friend_name); + ch = inkey(); + if (ch != 'Y' && ch != 'y') delete_this = FALSE; } break; @@ -1852,11 +1764,7 @@ void do_cmd_pet_dismiss(void) if (pet_ctr == p_ptr->riding) { -#ifdef JP - msg_format("%s¤«¤é¹ß¤ê¤¿¡£", friend_name); -#else - msg_format("You have got off %s. ", friend_name); -#endif + msg_format(_("%sから降りた。","You have got off %s. "), friend_name); p_ptr->riding = 0; @@ -1866,12 +1774,7 @@ void do_cmd_pet_dismiss(void) } /* HACK : Add the line to message buffer */ -#ifdef JP - sprintf(buf, "%s ¤òÊü¤·¤¿¡£", friend_name); -#else - sprintf(buf, "Dismissed %s.", friend_name); -#endif - message_add(buf); + msg_format(_("%s を放した。","Dismissed %s."), friend_name); p_ptr->window |= (PW_MESSAGE); window_stuff(); @@ -1884,27 +1787,29 @@ void do_cmd_pet_dismiss(void) Term->scr->cv = cv; Term_fresh(); - C_KILL(who, max_m_idx, u16b); + C_KILL(who, max_m_idx, MONSTER_IDX); #ifdef JP - msg_format("%d ÂΤΥڥåȤòÊü¤·¤Þ¤·¤¿¡£", Dismissed); + msg_format("%d 体のペットを放しました。", Dismissed); #else msg_format("You have dismissed %d pet%s.", Dismissed, (Dismissed == 1 ? "" : "s")); #endif if (Dismissed == 0 && all_pets) -#ifdef JP - msg_print("'U'nnamed ¤Ï¡¢¾èÇϰʳ°¤Î̾Á°¤Î¤Ê¤¤¥Ú¥Ã¥È¤À¤±¤òÁ´¤Æ²òÊü¤·¤Þ¤¹¡£"); -#else - msg_print("'U'nnamed means all your pets except named pets and your mount."); -#endif + msg_print(_("'U'nnamed は、乗馬以外の名前のないペットだけを全て解放します。", "'U'nnamed means all your pets except named pets and your mount.")); } +/*! + * @brief プレイヤーの騎乗/下馬処理判定 + * @param c_ptr プレイヤーの移動先マスの構造体参照ポインタ + * @param now_riding TRUEなら下馬処理、FALSEならば騎乗処理 + * @return 可能ならばTRUEを返す + */ static bool player_can_ride_aux(cave_type *c_ptr, bool now_riding) { bool p_can_enter; bool old_character_xtra = character_xtra; - int old_riding = p_ptr->riding; + MONSTER_IDX old_riding = p_ptr->riding; bool old_riding_ryoute = p_ptr->riding_ryoute; bool old_old_riding_ryoute = p_ptr->old_riding_ryoute; bool old_pf_ryoute = (p_ptr->pet_extra_flags & PF_RYOUTE) ? TRUE : FALSE; @@ -1937,7 +1842,13 @@ static bool player_can_ride_aux(cave_type *c_ptr, bool now_riding) return p_can_enter; } -bool rakuba(int dam, bool force) +/*! + * @brief プレイヤーの落馬判定処理 + * @param dam 落馬判定を発した際に受けたダメージ量 + * @param force TRUEならば強制的に落馬する + * @return 実際に落馬したらTRUEを返す + */ +bool rakuba(HIT_POINT dam, bool force) { int i, y, x, oy, ox; int sn = 0, sy = 0, sx = 0; @@ -1957,7 +1868,7 @@ bool rakuba(int dam, bool force) int max = s_info[p_ptr->pclass].s_max[GINOU_RIDING]; int ridinglevel = r_ptr->level; - /* ÍîÇϤΤ·¤ä¤¹¤µ */ + /* 落馬のしやすさ */ int rakubalevel = r_ptr->level; if (p_ptr->riding_ryoute) rakubalevel += 20; @@ -1974,7 +1885,7 @@ bool rakuba(int dam, bool force) p_ptr->skill_exp[GINOU_RIDING] = MIN(max, cur + inc); } - /* ¥ì¥Ù¥ë¤ÎÄ㤤¾èÇϤ«¤é¤ÏÍîÇϤ·¤Ë¤¯¤¤ */ + /* レベルの低い乗馬からは落馬しにくい */ if (randint0(dam / 2 + rakubalevel * 2) < cur / 30 + 10) { if ((((p_ptr->pclass == CLASS_BEASTMASTER) || (p_ptr->pclass == CLASS_CAVALRY)) && !p_ptr->riding_ryoute) || !one_in_(p_ptr->lev*(p_ptr->riding_ryoute ? 2 : 3) + 30)) @@ -1990,8 +1901,8 @@ bool rakuba(int dam, bool force) cave_type *c_ptr; /* Access the location */ - y = py + ddy_ddd[i]; - x = px + ddx_ddd[i]; + y = p_ptr->y + ddy_ddd[i]; + x = p_ptr->x + ddx_ddd[i]; c_ptr = &cave[y][x]; @@ -2018,8 +1929,8 @@ bool rakuba(int dam, bool force) { monster_desc(m_name, m_ptr, 0); #ifdef JP -msg_format("%s¤«¤é¿¶¤êÍî¤È¤µ¤ì¤½¤¦¤Ë¤Ê¤Ã¤Æ¡¢Êɤˤ֤Ĥ«¤Ã¤¿¡£",m_name); - take_hit(DAMAGE_NOESCAPE, r_ptr->level+3, "Êɤؤξ×ÆÍ", -1); +msg_format("%sから振り落とされそうになって、壁にぶつかった。",m_name); + take_hit(DAMAGE_NOESCAPE, r_ptr->level+3, "壁への衝突", -1); #else msg_format("You have nearly fallen from %s, but bumped into wall.",m_name); take_hit(DAMAGE_NOESCAPE, r_ptr->level+3, "bumping into wall", -1); @@ -2027,17 +1938,17 @@ msg_format("%s return FALSE; } - oy = py; - ox = px; + oy = p_ptr->y; + ox = p_ptr->x; - py = sy; - px = sx; + p_ptr->y = sy; + p_ptr->x = sx; /* Redraw the old spot */ lite_spot(oy, ox); /* Redraw the new spot */ - lite_spot(py, px); + lite_spot(p_ptr->y, p_ptr->x); /* Check for new panel */ verify_panel(); @@ -2065,29 +1976,26 @@ msg_format("%s if (p_ptr->levitation && !force) { monster_desc(m_name, m_ptr, 0); -#ifdef JP - msg_format("%s¤«¤éÍî¤Á¤¿¤¬¡¢¶õÃæ¤Ç¤¦¤Þ¤¯ÂÎÀª¤òΩ¤Æľ¤·¤ÆÃåÃϤ·¤¿¡£",m_name); -#else - msg_format("You are thrown from %s, but make a good landing.",m_name); -#endif + msg_format(_("%sから落ちたが、空中でうまく体勢を立て直して着地した。", "You are thrown from %s, but make a good landing."),m_name); } else { -#ifdef JP - take_hit(DAMAGE_NOESCAPE, r_ptr->level+3, "ÍîÇÏ", -1); -#else - take_hit(DAMAGE_NOESCAPE, r_ptr->level+3, "Falling from riding", -1); -#endif + take_hit(DAMAGE_NOESCAPE, r_ptr->level+3, _("落馬", "Falling from riding"), -1); fall_dam = TRUE; } /* Move the player */ if (sy && !p_ptr->is_dead) - (void)move_player_effect(py, px, MPE_DONT_PICKUP | MPE_DONT_SWAP_MON); + (void)move_player_effect(p_ptr->y, p_ptr->x, MPE_DONT_PICKUP | MPE_DONT_SWAP_MON); return fall_dam; } +/*! + * @brief ペットから騎乗/下馬するコマンドのメインルーチン / + * @param force 強制的に騎乗/下馬するならばTRUE + * @return 騎乗/下馬できたらTRUE + */ bool do_riding(bool force) { int x, y, dir = 0; @@ -2095,8 +2003,8 @@ bool do_riding(bool force) monster_type *m_ptr; if (!get_rep_dir2(&dir)) return FALSE; - y = py + ddy[dir]; - x = px + ddx[dir]; + y = p_ptr->y + ddy[dir]; + x = p_ptr->x + ddx[dir]; c_ptr = &cave[y][x]; if (p_ptr->special_defense & KATA_MUSOU) set_action(ACTION_NONE); @@ -2106,27 +2014,19 @@ bool do_riding(bool force) /* Skip non-empty grids */ if (!player_can_ride_aux(c_ptr, FALSE)) { -#ifdef JP - msg_print("¤½¤Á¤é¤Ë¤Ï¹ß¤ê¤é¤ì¤Þ¤»¤ó¡£"); -#else - msg_print("You cannot go to that direction."); -#endif + msg_print(_("そちらには降りられません。", "You cannot go to that direction.")); return FALSE; } - if (!pattern_seq(py, px, y, x)) return FALSE; + if (!pattern_seq(p_ptr->y, p_ptr->x, y, x)) return FALSE; if (c_ptr->m_idx) { /* Take a turn */ - energy_use = 100; + p_ptr->energy_use = 100; /* Message */ -#ifdef JP - msg_print("¥â¥ó¥¹¥¿¡¼¤¬Î©¤Á¤Õ¤µ¤¬¤Ã¤Æ¤¤¤ë¡ª"); -#else - msg_print("There is a monster in the way!"); -#endif + msg_print(_("モンスターが立ちふさがっている!", "There is a monster in the way!")); py_attack(y, x, 0); return FALSE; @@ -2140,11 +2040,7 @@ bool do_riding(bool force) { if (p_ptr->confused) { -#ifdef JP - msg_print("º®Í𤷤Ƥ¤¤Æ¾è¤ì¤Ê¤¤¡ª"); -#else - msg_print("You are too confused!"); -#endif + msg_print(_("混乱していて乗れない!", "You are too confused!")); return FALSE; } @@ -2152,46 +2048,31 @@ bool do_riding(bool force) if (!c_ptr->m_idx || !m_ptr->ml) { -#ifdef JP - msg_print("¤½¤Î¾ì½ê¤Ë¤Ï¥â¥ó¥¹¥¿¡¼¤Ï¤¤¤Þ¤»¤ó¡£"); -#else - msg_print("Here is no monster."); -#endif - + msg_print(_("その場所にはモンスターはいません。", "Here is no monster.")); return FALSE; } if (!is_pet(m_ptr) && !force) { -#ifdef JP - msg_print("¤½¤Î¥â¥ó¥¹¥¿¡¼¤Ï¥Ú¥Ã¥È¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£"); -#else - msg_print("That monster is not a pet."); -#endif - + msg_print(_("そのモンスターはペットではありません。", "That monster is not a pet.")); return FALSE; } if (!(r_info[m_ptr->r_idx].flags7 & RF7_RIDING)) { -#ifdef JP - msg_print("¤½¤Î¥â¥ó¥¹¥¿¡¼¤Ë¤Ï¾è¤ì¤Ê¤µ¤½¤¦¤À¡£"); -#else - msg_print("This monster doesn't seem suitable for riding."); -#endif - + msg_print(_("そのモンスターには乗れなさそうだ。", "This monster doesn't seem suitable for riding.")); return FALSE; } - if (!pattern_seq(py, px, y, x)) return FALSE; + if (!pattern_seq(p_ptr->y, p_ptr->x, y, x)) return FALSE; if (!player_can_ride_aux(c_ptr, TRUE)) { /* Feature code (applying "mimic" field) */ feature_type *f_ptr = &f_info[get_feat_mimic(c_ptr)]; #ifdef JP - msg_format("¤½¤Î¥â¥ó¥¹¥¿¡¼¤Ï%s¤Î%s¤Ë¤¤¤ë¡£", f_name + f_ptr->name, + msg_format("そのモンスターは%sの%sにいる。", f_name + f_ptr->name, ((!have_flag(f_ptr->flags, FF_MOVE) && !have_flag(f_ptr->flags, FF_CAN_FLY)) || (!have_flag(f_ptr->flags, FF_LOS) && !have_flag(f_ptr->flags, FF_TREE))) ? - "Ãæ" : "¾å"); + "中" : "上"); #else msg_format("This monster is %s the %s.", ((!have_flag(f_ptr->flags, FF_MOVE) && !have_flag(f_ptr->flags, FF_CAN_FLY)) || @@ -2203,14 +2084,8 @@ bool do_riding(bool force) } if (r_info[m_ptr->r_idx].level > randint1((p_ptr->skill_exp[GINOU_RIDING] / 50 + p_ptr->lev / 2 + 20))) { -#ifdef JP - msg_print("¤¦¤Þ¤¯¾è¤ì¤Ê¤«¤Ã¤¿¡£"); -#else - msg_print("You failed to ride."); -#endif - - energy_use = 100; - + msg_print(_("うまく乗れなかった。", "You failed to ride.")); + p_ptr->energy_use = 100; return FALSE; } @@ -2219,11 +2094,7 @@ bool do_riding(bool force) char m_name[80]; monster_desc(m_name, m_ptr, 0); (void)set_monster_csleep(c_ptr->m_idx, 0); -#ifdef JP - msg_format("%s¤òµ¯¤³¤·¤¿¡£", m_name); -#else - msg_format("You have waked %s up.", m_name); -#endif + msg_format(_("%sを起こした。", "You have waked %s up."), m_name); } if (p_ptr->action == ACTION_KAMAE) set_action(ACTION_NONE); @@ -2234,7 +2105,7 @@ bool do_riding(bool force) if (p_ptr->riding == p_ptr->health_who) health_track(0); } - energy_use = 100; + p_ptr->energy_use = 100; /* Mega-Hack -- Forget the view and lite */ p_ptr->update |= (PU_UN_VIEW | PU_UN_LITE); @@ -2253,6 +2124,10 @@ bool do_riding(bool force) return TRUE; } +/*! + * @brief ペットに名前をつけるコマンドのメインルーチン + * @return なし + */ static void do_name_pet(void) { monster_type *m_ptr; @@ -2276,31 +2151,18 @@ static void do_name_pet(void) if (!is_pet(m_ptr)) { /* Message */ -#ifdef JP - msg_print("¤½¤Î¥â¥ó¥¹¥¿¡¼¤Ï¥Ú¥Ã¥È¤Ç¤Ï¤Ê¤¤¡£"); -#else - msg_format("This monster is not a pet."); -#endif + msg_print(_("そのモンスターはペットではない。", "This monster is not a pet.")); return; } if (r_info[m_ptr->r_idx].flags1 & RF1_UNIQUE) { -#ifdef JP - msg_print("¤½¤Î¥â¥ó¥¹¥¿¡¼¤Î̾Á°¤ÏÊѤ¨¤é¤ì¤Ê¤¤¡ª"); -#else - msg_format("You cannot change name of this monster!"); -#endif + msg_print(_("そのモンスターの名前は変えられない!", "You cannot change name of this monster!")); return; } monster_desc(m_name, m_ptr, 0); /* Message */ -#ifdef JP - msg_format("%s¤Ë̾Á°¤ò¤Ä¤±¤ë¡£", m_name); -#else - msg_format("Name %s.", m_name); -#endif - + msg_format(_("%sに名前をつける。", "Name %s."), m_name); msg_print(NULL); /* Start with nothing */ @@ -2315,12 +2177,7 @@ static void do_name_pet(void) } /* Get a new inscription (possibly empty) */ -#ifdef JP - if (get_string("̾Á°: ", out_val, 15)) -#else - if (get_string("Name: ", out_val, 15)) -#endif - + if (get_string(_("名前: ", "Name: "), out_val, 15)) { if (out_val[0]) { @@ -2328,8 +2185,6 @@ static void do_name_pet(void) m_ptr->nickname = quark_add(out_val); if (record_named_pet) { - char m_name[80]; - monster_desc(m_name, m_ptr, MD_INDEF_VISIBLE); do_cmd_write_nikki(NIKKI_NAMED_PET, RECORD_NAMED_PET_NAME, m_name); } @@ -2338,8 +2193,6 @@ static void do_name_pet(void) { if (record_named_pet && old_name) { - char m_name[80]; - monster_desc(m_name, m_ptr, MD_INDEF_VISIBLE); do_cmd_write_nikki(NIKKI_NAMED_PET, RECORD_NAMED_PET_UNNAME, m_name); } @@ -2349,17 +2202,19 @@ static void do_name_pet(void) } } -/* + +/*! + * @brief ペットに関するコマンドリストのメインルーチン / * Issue a pet command + * @return なし */ void do_cmd_pet(void) { - int i = 0; + COMMAND_CODE i = 0; int num; int powers[36]; cptr power_desc[36]; bool flag, redraw; - int ask; char choice; char out_val[160]; int pet_ctr; @@ -2374,202 +2229,109 @@ void do_cmd_pet(void) num = 0; -#ifdef JP - power_desc[num] = "¥Ú¥Ã¥È¤òÊü¤¹"; -#else - power_desc[num] = "dismiss pets"; -#endif - + power_desc[num] = _("ペットを放す", "dismiss pets"); powers[num++] = PET_DISMISS; #ifdef JP - sprintf(target_buf, "¥Ú¥Ã¥È¤Î¥¿¡¼¥²¥Ã¥È¤ò»ØÄê (¸½ºß¡§%s)", - (pet_t_m_idx ? (p_ptr->image ? "²¿¤«´ñ̯¤Êʪ" : (r_name + r_info[m_list[pet_t_m_idx].ap_r_idx].name)) : "»ØÄê¤Ê¤·")); + sprintf(target_buf, "ペットのターゲットを指定 (現在:%s)", + (pet_t_m_idx ? (p_ptr->image ? "何か奇妙な物" : (r_name + r_info[m_list[pet_t_m_idx].ap_r_idx].name)) : "指定なし")); #else sprintf(target_buf, "specify a target of pet (now:%s)", (pet_t_m_idx ? (p_ptr->image ? "something strange" : (r_name + r_info[m_list[pet_t_m_idx].ap_r_idx].name)) : "nothing")); #endif power_desc[num] = target_buf; - powers[num++] = PET_TARGET; - -#ifdef JP - power_desc[num] = "¶á¤¯¤Ë¤¤¤í"; -#else - power_desc[num] = "stay close"; -#endif + power_desc[num] = _("近くにいろ", "stay close"); if (p_ptr->pet_follow_distance == PET_CLOSE_DIST) mode = num; powers[num++] = PET_STAY_CLOSE; - -#ifdef JP - power_desc[num] = "¤Ä¤¤¤ÆÍ褤"; -#else - power_desc[num] = "follow me"; -#endif + power_desc[num] = _("ついて来い", "follow me"); if (p_ptr->pet_follow_distance == PET_FOLLOW_DIST) mode = num; powers[num++] = PET_FOLLOW_ME; - -#ifdef JP - power_desc[num] = "Ũ¤ò¸«¤Ä¤±¤ÆÅݤ»"; -#else - power_desc[num] = "seek and destroy"; -#endif + power_desc[num] = _("敵を見つけて倒せ", "seek and destroy"); if (p_ptr->pet_follow_distance == PET_DESTROY_DIST) mode = num; powers[num++] = PET_SEEK_AND_DESTROY; - -#ifdef JP - power_desc[num] = "¾¯¤·Î¥¤ì¤Æ¤¤¤í"; -#else - power_desc[num] = "give me space"; -#endif + power_desc[num] = _("少し離れていろ", "give me space"); if (p_ptr->pet_follow_distance == PET_SPACE_DIST) mode = num; powers[num++] = PET_ALLOW_SPACE; - -#ifdef JP - power_desc[num] = "Î¥¤ì¤Æ¤¤¤í"; -#else - power_desc[num] = "stay away"; -#endif + power_desc[num] = _("離れていろ", "stay away"); if (p_ptr->pet_follow_distance == PET_AWAY_DIST) mode = num; powers[num++] = PET_STAY_AWAY; if (p_ptr->pet_extra_flags & PF_OPEN_DOORS) { -#ifdef JP - power_desc[num] = "¥É¥¢¤ò³«¤±¤ë (¸½ºß:ON)"; -#else - power_desc[num] = "pets open doors (now On)"; -#endif + power_desc[num] = _("ドアを開ける (現在:ON)", "pets open doors (now On)"); } else { -#ifdef JP - power_desc[num] = "¥É¥¢¤ò³«¤±¤ë (¸½ºß:OFF)"; -#else - power_desc[num] = "pets open doors (now Off)"; -#endif + power_desc[num] = _("ドアを開ける (現在:OFF)", "pets open doors (now Off)"); } powers[num++] = PET_OPEN_DOORS; if (p_ptr->pet_extra_flags & PF_PICKUP_ITEMS) { -#ifdef JP - power_desc[num] = "¥¢¥¤¥Æ¥à¤ò½¦¤¦ (¸½ºß:ON)"; -#else - power_desc[num] = "pets pick up items (now On)"; -#endif + power_desc[num] = _("アイテムを拾う (現在:ON)", "pets pick up items (now On)"); } else { -#ifdef JP - power_desc[num] = "¥¢¥¤¥Æ¥à¤ò½¦¤¦ (¸½ºß:OFF)"; -#else - power_desc[num] = "pets pick up items (now Off)"; -#endif + power_desc[num] = _("アイテムを拾う (現在:OFF)", "pets pick up items (now Off)"); } powers[num++] = PET_TAKE_ITEMS; if (p_ptr->pet_extra_flags & PF_TELEPORT) { -#ifdef JP - power_desc[num] = "¥Æ¥ì¥Ý¡¼¥È·ÏËâË¡¤ò»È¤¦ (¸½ºß:ON)"; -#else - power_desc[num] = "allow teleport (now On)"; -#endif + power_desc[num] = _("テレポート系魔法を使う (現在:ON)", "allow teleport (now On)"); } else { -#ifdef JP - power_desc[num] = "¥Æ¥ì¥Ý¡¼¥È·ÏËâË¡¤ò»È¤¦ (¸½ºß:OFF)"; -#else - power_desc[num] = "allow teleport (now Off)"; -#endif + power_desc[num] = _("テレポート系魔法を使う (現在:OFF)", "allow teleport (now Off)"); } powers[num++] = PET_TELEPORT; if (p_ptr->pet_extra_flags & PF_ATTACK_SPELL) { -#ifdef JP - power_desc[num] = "¹¶·âËâË¡¤ò»È¤¦ (¸½ºß:ON)"; -#else - power_desc[num] = "allow cast attack spell (now On)"; -#endif + power_desc[num] = _("攻撃魔法を使う (現在:ON)", "allow cast attack spell (now On)"); } else { -#ifdef JP - power_desc[num] = "¹¶·âËâË¡¤ò»È¤¦ (¸½ºß:OFF)"; -#else - power_desc[num] = "allow cast attack spell (now Off)"; -#endif + power_desc[num] = _("攻撃魔法を使う (現在:OFF)", "allow cast attack spell (now Off)"); } powers[num++] = PET_ATTACK_SPELL; if (p_ptr->pet_extra_flags & PF_SUMMON_SPELL) { -#ifdef JP - power_desc[num] = "¾¤´­ËâË¡¤ò»È¤¦ (¸½ºß:ON)"; -#else - power_desc[num] = "allow cast summon spell (now On)"; -#endif + power_desc[num] = _("召喚魔法を使う (現在:ON)", "allow cast summon spell (now On)"); } else { -#ifdef JP - power_desc[num] = "¾¤´­ËâË¡¤ò»È¤¦ (¸½ºß:OFF)"; -#else - power_desc[num] = "allow cast summon spell (now Off)"; -#endif + power_desc[num] = _("召喚魔法を使う (現在:OFF)", "allow cast summon spell (now Off)"); } powers[num++] = PET_SUMMON_SPELL; if (p_ptr->pet_extra_flags & PF_BALL_SPELL) { -#ifdef JP - power_desc[num] = "¥×¥ì¥¤¥ä¡¼¤ò´¬¤­¹þ¤àÈÏ°ÏËâË¡¤ò»È¤¦ (¸½ºß:ON)"; -#else - power_desc[num] = "allow involve player in area spell (now On)"; -#endif + power_desc[num] = _("プレイヤーを巻き込む範囲魔法を使う (現在:ON)", "allow involve player in area spell (now On)"); } else { -#ifdef JP - power_desc[num] = "¥×¥ì¥¤¥ä¡¼¤ò´¬¤­¹þ¤àÈÏ°ÏËâË¡¤ò»È¤¦ (¸½ºß:OFF)"; -#else - power_desc[num] = "allow involve player in area spell (now Off)"; -#endif + power_desc[num] = _("プレイヤーを巻き込む範囲魔法を使う (現在:OFF)", "allow involve player in area spell (now Off)"); } powers[num++] = PET_BALL_SPELL; if (p_ptr->riding) { -#ifdef JP - power_desc[num] = "¥Ú¥Ã¥È¤«¤é¹ß¤ê¤ë"; -#else - power_desc[num] = "get off a pet"; -#endif + power_desc[num] = _("ペットから降りる", "get off a pet"); } else { -#ifdef JP - power_desc[num] = "¥Ú¥Ã¥È¤Ë¾è¤ë"; -#else - power_desc[num] = "ride a pet"; -#endif + power_desc[num] = _("ペットに乗る", "ride a pet"); } powers[num++] = PET_RIDING; - -#ifdef JP - power_desc[num] = "¥Ú¥Ã¥È¤Ë̾Á°¤ò¤Ä¤±¤ë"; -#else - power_desc[num] = "name pets"; -#endif - + power_desc[num] = _("ペットに名前をつける", "name pets"); powers[num++] = PET_NAME; if (p_ptr->riding) @@ -2581,19 +2343,11 @@ void do_cmd_pet(void) { if (p_ptr->pet_extra_flags & PF_RYOUTE) { -#ifdef JP - power_desc[num] = "Éð´ï¤òÊÒ¼ê¤Ç»ý¤Ä"; -#else - power_desc[num] = "use one hand to control a riding pet"; -#endif + power_desc[num] = _("武器を片手で持つ", "use one hand to control a riding pet"); } else { -#ifdef JP - power_desc[num] = "Éð´ï¤òξ¼ê¤Ç»ý¤Ä"; -#else - power_desc[num] = "use both hands for a weapon"; -#endif + power_desc[num] = _("武器を両手で持つ", "use both hands for a weapon"); } powers[num++] = PET_RYOUTE; @@ -2609,19 +2363,11 @@ void do_cmd_pet(void) { if (p_ptr->pet_extra_flags & PF_RYOUTE) { -#ifdef JP - power_desc[num] = "ÊÒ¼ê¤Ç³ÊÆ®¤¹¤ë"; -#else - power_desc[num] = "use one hand to control a riding pet"; -#endif + power_desc[num] = _("片手で格闘する", "use one hand to control a riding pet"); } else { -#ifdef JP - power_desc[num] = "ξ¼ê¤Ç³ÊÆ®¤¹¤ë"; -#else - power_desc[num] = "use both hands for melee"; -#endif + power_desc[num] = _("両手で格闘する", "use both hands for melee"); } powers[num++] = PET_RYOUTE; @@ -2630,19 +2376,11 @@ void do_cmd_pet(void) { if (p_ptr->pet_extra_flags & PF_RYOUTE) { -#ifdef JP - power_desc[num] = "³ÊÆ®¤ò¹Ô¤ï¤Ê¤¤"; -#else - power_desc[num] = "use one hand to control a riding pet"; -#endif + power_desc[num] = _("格闘を行わない", "use one hand to control a riding pet"); } else { -#ifdef JP - power_desc[num] = "³ÊÆ®¤ò¹Ô¤¦"; -#else - power_desc[num] = "use one hand for melee"; -#endif + power_desc[num] = _("格闘を行う", "use one hand for melee"); } powers[num++] = PET_RYOUTE; @@ -2669,21 +2407,13 @@ void do_cmd_pet(void) screen_save(); /* Build a prompt */ -#ifdef JP - strnfmt(out_val, 78, "(¥³¥Þ¥ó¥É¡¢ESC=½ªÎ») ¥³¥Þ¥ó¥É¤òÁª¤ó¤Ç¤¯¤À¤µ¤¤:"); -#else - strnfmt(out_val, 78, "(Command, ESC=exit) Choose command from menu."); -#endif + strnfmt(out_val, 78, _("(コマンド、ESC=終了) コマンドを選んでください:", "(Command, ESC=exit) Choose command from menu.")); } else { /* Build a prompt */ strnfmt(out_val, 78, -#ifdef JP - "(¥³¥Þ¥ó¥É %c-%c¡¢'*'=°ìÍ÷¡¢ESC=½ªÎ») ¥³¥Þ¥ó¥É¤òÁª¤ó¤Ç¤¯¤À¤µ¤¤:", -#else - "(Command %c-%c, *=List, ESC=exit) Select a command: ", -#endif + _("(コマンド %c-%c、'*'=一覧、ESC=終了) コマンドを選んでください:", "(Command %c-%c, *=List, ESC=exit) Select a command: "), I2A(0), I2A(num - 1)); } @@ -2692,6 +2422,8 @@ void do_cmd_pet(void) /* Get a command from the user */ while (!flag) { + int ask = TRUE; + if (choice == ESCAPE) choice = ' '; else if (!get_com(out_val, &choice, TRUE)) break; @@ -2759,12 +2491,10 @@ void do_cmd_pet(void) for (ctr = 0; ctr < num; ctr++) { /* Letter/number for power selection */ -#ifdef JP - if (use_menu) sprintf(buf, "%c%s ", (ctr == mode) ? '*' : ' ', (ctr == (menu_line - 1)) ? "¡Õ" : " "); -#else - if (use_menu) sprintf(buf, "%c%s ", (ctr == mode) ? '*' : ' ', (ctr == (menu_line - 1)) ? "> " : " "); -#endif - else sprintf(buf, "%c%c) ", (ctr == mode) ? '*' : ' ', I2A(ctr)); + if (use_menu) + sprintf(buf, "%c%s ", (ctr == mode) ? '*' : ' ', (ctr == (menu_line - 1)) ? _("》", "> ") : " "); + else + sprintf(buf, "%c%c) ", (ctr == mode) ? '*' : ' ', I2A(ctr)); strcat(buf, power_desc[ctr]); @@ -2794,7 +2524,7 @@ void do_cmd_pet(void) ask = (isupper(choice)); /* Lowercase */ - if (ask) choice = tolower(choice); + if (ask) choice = (char)tolower(choice); /* Extract request */ i = (islower(choice) ? A2I(choice) : -1); @@ -2811,11 +2541,7 @@ void do_cmd_pet(void) if (ask) { /* Prompt */ -#ifdef JP - strnfmt(buf, 78, "%s¤ò»È¤¤¤Þ¤¹¤«¡© ", power_desc[i]); -#else - strnfmt(buf, 78, "Use %s? ", power_desc[i]); -#endif + strnfmt(buf, 78, _("%sを使いますか? ", "Use %s? "), power_desc[i]); /* Belay that order */ if (!get_check(buf)) continue; @@ -2831,7 +2557,7 @@ void do_cmd_pet(void) /* Abort if needed */ if (!flag) { - energy_use = 0; + p_ptr->energy_use = 0; return; } @@ -2853,11 +2579,7 @@ void do_cmd_pet(void) if (!pet_ctr) { -#ifdef JP - msg_print("¥Ú¥Ã¥È¤¬¤¤¤Ê¤¤¡ª"); -#else - msg_print("You have no pets!"); -#endif + msg_print(_("ペットがいない!", "You have no pets!")); break; } do_cmd_pet_dismiss();