X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=src%2Fmonster1.c;h=0daa60dc8bf55c2d04650143c67f09fe145ec394;hb=38c26a71801a40ea4dfbf409477c528d00d441fa;hp=b67086ba8e6d8f1c42dd0a105e1b4936fb75a4ec;hpb=bf928721c2aa07b7ee366948459b717949a3f71a;p=hengband%2Fhengband.git diff --git a/src/monster1.c b/src/monster1.c index b67086ba8..0daa60dc8 100644 --- a/src/monster1.c +++ b/src/monster1.c @@ -11,9 +11,15 @@ */ #include "angband.h" +#include "util.h" +#include "term.h" + +#include "cmd-dump.h" +#include "bldg.h" #include "cmd-pet.h" #include "floor.h" #include "objectkind-hook.h" +#include "player-personality.h" #include "monster.h" #include "monster-spell.h" #include "monsterrace-hook.h" @@ -24,11 +30,18 @@ #include "avatar.h" #include "wild.h" #include "spells.h" - - -/* - * Pronoun arrays, by gender. - */ +#include "dungeon.h" +#include "world.h" +#include "melee.h" +#include "japanese.h" +#include "view-mainwindow.h" +#include "player-class.h" +#include "english.h" + + + /* + * Pronoun arrays, by gender. + */ static concptr wd_he[3] = #ifdef JP { "それ", "å½¼", "彼女" }; @@ -53,26 +66,26 @@ static concptr wd_his[3] = -/*! - * @brief モンスターのAC情報を得ることができるかを返す / Determine if the "armor" is known - * @param r_idx モンスターの種族ID - * @return 敵のACを知る条件が満たされているならTRUEを返す - * @details - * The higher the level, the fewer kills needed. - */ + /*! + * @brief モンスターのAC情報を得ることができるかを返す / Determine if the "armor" is known + * @param r_idx モンスターの種族ID + * @return 敵のACを知る条件が満たされているならTRUEを返す + * @details + * The higher the level, the fewer kills needed. + */ static bool know_armour(MONRACE_IDX r_idx) { monster_race *r_ptr = &r_info[r_idx]; DEPTH level = r_ptr->level; MONSTER_NUMBER kills = r_ptr->r_tkills; - bool known = (r_ptr->r_cast_spell == MAX_UCHAR)? TRUE: FALSE; + bool known = (r_ptr->r_cast_spell == MAX_UCHAR) ? TRUE : FALSE; - if (cheat_know || known) return (TRUE); - if (kills > 304 / (4 + level)) return (TRUE); - if (!(r_ptr->flags1 & RF1_UNIQUE)) return (FALSE); - if (kills > 304 / (38 + (5 * level) / 4)) return (TRUE); - return (FALSE); + if (cheat_know || known) return TRUE; + if (kills > 304 / (4 + level)) return TRUE; + if (!(r_ptr->flags1 & RF1_UNIQUE)) return FALSE; + if (kills > 304 / (38 + (5 * level) / 4)) return TRUE; + return FALSE; } @@ -101,20 +114,20 @@ static bool know_damage(MONRACE_IDX r_idx, int i) s32b d = d1 * d2; - if (d >= ((4+level)*MAX_UCHAR)/80) d = ((4+level)*MAX_UCHAR-1)/80; - if ((4 + level) * a > 80 * d) return (TRUE); - if (!(r_ptr->flags1 & RF1_UNIQUE)) return (FALSE); - if ((4 + level) * (2 * a) > 80 * d) return (TRUE); + if (d >= ((4 + level)*MAX_UCHAR) / 80) d = ((4 + level)*MAX_UCHAR - 1) / 80; + if ((4 + level) * a > 80 * d) return TRUE; + if (!(r_ptr->flags1 & RF1_UNIQUE)) return FALSE; + if ((4 + level) * (2 * a) > 80 * d) return TRUE; /* Assume false */ - return (FALSE); + return FALSE; } /* * Prepare hook for c_roff(). It will be changed for spoiler generation in wizard1.c. */ -void (*hook_c_roff)(TERM_COLOR attr, concptr str) = c_roff; +void(*hook_c_roff)(TERM_COLOR attr, concptr str) = c_roff; /*! * @brief モンスターの思い出メッセージをあらかじめ指定された関数ポインタに基づき出力する @@ -174,13 +187,13 @@ void dice_to_string(int base_damage, int dice_num, int dice_side, int dice_mult, * @param tmp 返すメッセージを格納する配列 * @return なし */ -void set_damage(MONRACE_IDX r_idx, int SPELL_NUM, char* msg, char* tmp) +void set_damage(player_type *player_ptr, MONRACE_IDX r_idx, int SPELL_NUM, char* msg, char* tmp) { - int base_damage = monspell_race_damage(SPELL_NUM, r_idx, BASE_DAM); - int dice_num = monspell_race_damage(SPELL_NUM, r_idx, DICE_NUM); - int dice_side = monspell_race_damage(SPELL_NUM, r_idx, DICE_SIDE); - int dice_mult = monspell_race_damage(SPELL_NUM, r_idx, DICE_MULT); - int dice_div = monspell_race_damage(SPELL_NUM, r_idx, DICE_DIV); + int base_damage = monspell_race_damage(player_ptr, SPELL_NUM, r_idx, BASE_DAM); + int dice_num = monspell_race_damage(player_ptr, SPELL_NUM, r_idx, DICE_NUM); + int dice_side = monspell_race_damage(player_ptr, SPELL_NUM, r_idx, DICE_SIDE); + int dice_mult = monspell_race_damage(player_ptr, SPELL_NUM, r_idx, DICE_MULT); + int dice_div = monspell_race_damage(player_ptr, SPELL_NUM, r_idx, DICE_DIV); char dmg_str[80], dice_str[80]; dice_to_string(base_damage, dice_num, dice_side, dice_mult, dice_div, dmg_str); sprintf(dice_str, "(%s)", dmg_str); @@ -202,7 +215,7 @@ void set_damage(MONRACE_IDX r_idx, int SPELL_NUM, char* msg, char* tmp) * left edge of the screen, on a cleared line, in which the recall is * to take place. One extra blank line is left after the recall. */ -static void roff_aux(MONRACE_IDX r_idx, BIT_FLAGS mode) +static void roff_aux(player_type *player_ptr, MONRACE_IDX r_idx, BIT_FLAGS mode) { monster_race *r_ptr = &r_info[r_idx]; bool old = FALSE; @@ -255,9 +268,9 @@ static void roff_aux(MONRACE_IDX r_idx, BIT_FLAGS mode) flags7 = (r_ptr->flags7 & r_ptr->flags7); flagsr = (r_ptr->flagsr & r_ptr->r_flagsr); - for(n = 0; n < A_MAX; n++) + for (n = 0; n < A_MAX; n++) { - if(r_ptr->reinforce_id[n] > 0) reinforce = TRUE; + if (r_ptr->reinforce_id[n] > 0) reinforce = TRUE; } /* cheat_know or research_mon() */ @@ -269,12 +282,12 @@ static void roff_aux(MONRACE_IDX r_idx, BIT_FLAGS mode) { /* Hack -- maximal drops */ drop_gold = drop_item = - (((r_ptr->flags1 & RF1_DROP_4D2) ? 8 : 0) + - ((r_ptr->flags1 & RF1_DROP_3D2) ? 6 : 0) + - ((r_ptr->flags1 & RF1_DROP_2D2) ? 4 : 0) + - ((r_ptr->flags1 & RF1_DROP_1D2) ? 2 : 0) + - ((r_ptr->flags1 & RF1_DROP_90) ? 1 : 0) + - ((r_ptr->flags1 & RF1_DROP_60) ? 1 : 0)); + (((r_ptr->flags1 & RF1_DROP_4D2) ? 8 : 0) + + ((r_ptr->flags1 & RF1_DROP_3D2) ? 6 : 0) + + ((r_ptr->flags1 & RF1_DROP_2D2) ? 4 : 0) + + ((r_ptr->flags1 & RF1_DROP_1D2) ? 2 : 0) + + ((r_ptr->flags1 & RF1_DROP_90) ? 1 : 0) + + ((r_ptr->flags1 & RF1_DROP_60) ? 1 : 0)); /* Hack -- but only "valid" drops */ if (r_ptr->flags1 & RF1_ONLY_GOLD) drop_item = 0; @@ -337,112 +350,112 @@ static void roff_aux(MONRACE_IDX r_idx, BIT_FLAGS mode) } else - /* Treat uniques differently */ - if (flags1 & RF1_UNIQUE) - { - /* Hack -- Determine if the unique is "dead" */ - bool dead = (r_ptr->max_num == 0) ? TRUE : FALSE; - - /* We've been killed... */ - if (r_ptr->r_deaths) + /* Treat uniques differently */ + if (flags1 & RF1_UNIQUE) { - /* Killed ancestors */ - hooked_roff(format(_("%^sはあなたの先祖を %d 人葬っている", "%^s has slain %d of your ancestors"), - wd_he[msex], r_ptr->r_deaths)); + /* Hack -- Determine if the unique is "dead" */ + bool dead = (r_ptr->max_num == 0) ? TRUE : FALSE; - /* But we've also killed it */ - if (dead) + /* We've been killed... */ + if (r_ptr->r_deaths) { - hooked_roff(format( - _("が、すでに仇討ちは果たしている!", - (", but you have avenged %s! ", plural(r_ptr->r_deaths, "him", "them"))))); + /* Killed ancestors */ + hooked_roff(format(_("%^sはあなたの先祖を %d 人葬っている", "%^s has slain %d of your ancestors"), + wd_he[msex], r_ptr->r_deaths)); + + /* But we've also killed it */ + if (dead) + { + hooked_roff( + _(format("が、すでに仇討ちは果たしている!"), + format(", but you have avenged %s! ", plural(r_ptr->r_deaths, "him", "them")))); + } + + /* Unavenged (ever) */ + else + { + hooked_roff( + _(format("のに、まだ仇討ちを果たしていない。"), + format(", who %s unavenged. ", plural(r_ptr->r_deaths, "remains", "remain")))); + } + + /* Start a new line */ + hooked_roff("\n"); } - /* Unavenged (ever) */ - else + /* Dead unique who never hurt us */ + else if (dead) { - hooked_roff(format( - _("のに、まだ仇討ちを果たしていない。", - (", who %s unavenged. ", plural(r_ptr->r_deaths, "remains", "remain"))))); - } + hooked_roff(_("あなたはこの仇敵をすでに葬り去っている。", "You have slain this foe. ")); - /* Start a new line */ - hooked_roff("\n"); + /* Start a new line */ + hooked_roff("\n"); + } } - /* Dead unique who never hurt us */ - else if (dead) + /* Not unique, but killed us */ + else if (r_ptr->r_deaths) { - hooked_roff(_("あなたはこの仇敵をすでに葬り去っている。", "You have slain this foe. ")); + /* Dead ancestors */ + hooked_roff( + _(format("このモンスターはあなたの先祖を %d 人葬っている", r_ptr->r_deaths), + format("%d of your ancestors %s been killed by this creature, ", r_ptr->r_deaths, plural(r_ptr->r_deaths, "has", "have")))); - /* Start a new line */ - hooked_roff("\n"); - } - } + /* Some kills this life */ + if (r_ptr->r_pkills) + { + hooked_roff(format( + _("が、あなたはこのモンスターを少なくとも %d 体は倒している。", + "and you have exterminated at least %d of the creatures. "), r_ptr->r_pkills)); + } - /* Not unique, but killed us */ - else if (r_ptr->r_deaths) - { - /* Dead ancestors */ - hooked_roff( - _(format("このモンスターはあなたの先祖を %d 人葬っている", r_ptr->r_deaths), - format("%d of your ancestors %s been killed by this creature, ", r_ptr->r_deaths, plural(r_ptr->r_deaths, "has", "have")))); + /* Some kills past lives */ + else if (r_ptr->r_tkills) + { + hooked_roff(format( + _("が、あなたの先祖はこのモンスターを少なくとも %d 体は倒している。", + "and your ancestors have exterminated at least %d of the creatures. "), r_ptr->r_tkills)); + } - /* Some kills this life */ - if (r_ptr->r_pkills) - { - hooked_roff(format( - _("が、あなたはこのモンスターを少なくとも %d 体は倒している。", - "and you have exterminated at least %d of the creatures. "), r_ptr->r_pkills)); - } + /* No kills */ + else + { + hooked_roff(format( + _("が、まだ%sを倒したことはない。", + "and %s is not ever known to have been defeated. "), wd_he[msex])); + } - /* Some kills past lives */ - else if (r_ptr->r_tkills) - { - hooked_roff(format( - _("が、あなたの先祖はこのモンスターを少なくとも %d 体は倒している。", - "and your ancestors have exterminated at least %d of the creatures. "), r_ptr->r_tkills)); + /* Start a new line */ + hooked_roff("\n"); } - - /* No kills */ else { - hooked_roff(format( - _("が、まだ%sを倒したことはない。", - "and %s is not ever known to have been defeated. "), wd_he[msex])); - } + /* Killed some this life */ + if (r_ptr->r_pkills) + { + hooked_roff(format( + _("あなたはこのモンスターを少なくとも %d 体は殺している。", + "You have killed at least %d of these creatures. "), r_ptr->r_pkills)); + } - /* Start a new line */ - hooked_roff("\n"); - } - else - { - /* Killed some this life */ - if (r_ptr->r_pkills) - { - hooked_roff(format( - _("あなたはこのモンスターを少なくとも %d 体は殺している。", - "You have killed at least %d of these creatures. "), r_ptr->r_pkills)); - } + /* Killed some last life */ + else if (r_ptr->r_tkills) + { + hooked_roff(format( + _("あなたの先祖はこのモンスターを少なくとも %d 体は殺している。", + "Your ancestors have killed at least %d of these creatures. "), r_ptr->r_tkills)); + } - /* Killed some last life */ - else if (r_ptr->r_tkills) - { - hooked_roff(format( - _("あなたの先祖はこのモンスターを少なくとも %d 体は殺している。", - "Your ancestors have killed at least %d of these creatures. "), r_ptr->r_tkills)); - } + /* Killed none */ + else + { + hooked_roff(_("このモンスターを倒したことはない。", "No battles to the death are recalled. ")); + } - /* Killed none */ - else - { - hooked_roff(_("このモンスターを倒したことはない。", "No battles to the death are recalled. ")); + /* Start a new line */ + hooked_roff("\n"); } - /* Start a new line */ - hooked_roff("\n"); - } - /* Descriptions */ { concptr tmp = r_text + r_ptr->text; @@ -480,13 +493,13 @@ static void roff_aux(MONRACE_IDX r_idx, BIT_FLAGS mode) { hooked_roff(format( _("%^sは通常地下 %d フィートで出現し", "%^s is normally found at depths of %d feet"), - wd_he[msex], r_ptr->level * 50)); + wd_he[msex], r_ptr->level * 50)); } else { hooked_roff(format( _("%^sは通常地下 %d 階で出現し", "%^s is normally found on dungeon level %d"), - wd_he[msex], r_ptr->level)); + wd_he[msex], r_ptr->level)); } old = TRUE; } @@ -510,7 +523,8 @@ static void roff_aux(MONRACE_IDX r_idx, BIT_FLAGS mode) hooked_roff(format(_("%^sは", "%^s "), wd_he[msex])); old = TRUE; } -#ifndef JP +#ifdef JP +#else hooked_roff("moves"); #endif @@ -616,10 +630,10 @@ static void roff_aux(MONRACE_IDX r_idx, BIT_FLAGS mode) if ((flags3 & (RF3_DRAGON | RF3_DEMON | RF3_GIANT | RF3_TROLL | RF3_ORC | RF3_ANGEL)) || (flags2 & (RF2_QUANTUM | RF2_HUMAN))) { - /* Describe the "race" */ + /* Describe the "race" */ if (flags3 & RF3_DRAGON) hook_c_roff(TERM_ORANGE, _("ドラゴン", " dragon")); if (flags3 & RF3_DEMON) hook_c_roff(TERM_VIOLET, _("デーモン", " demon")); - if (flags3 & RF3_GIANT) hook_c_roff(TERM_L_UMBER, _("ジャイアント", " giant")); + if (flags3 & RF3_GIANT) hook_c_roff(TERM_L_UMBER, _("巨人", " giant")); if (flags3 & RF3_TROLL) hook_c_roff(TERM_BLUE, _("トロル", " troll")); if (flags3 & RF3_ORC) hook_c_roff(TERM_UMBER, _("オーク", " orc")); if (flags2 & RF2_HUMAN) hook_c_roff(TERM_L_WHITE, _("人間", " human")); @@ -639,39 +653,37 @@ static void roff_aux(MONRACE_IDX r_idx, BIT_FLAGS mode) long i, j; /* calculate the integer exp part */ - i = (long)r_ptr->mexp * r_ptr->level / (p_ptr->max_plv + 2) * 3 / 2; + i = (long)r_ptr->mexp * r_ptr->level / (player_ptr->max_plv + 2) * 3 / 2; /* calculate the fractional exp part scaled by 100, */ /* must use long arithmetic to avoid overflow */ - j = ((((long)r_ptr->mexp * r_ptr->level % (p_ptr->max_plv + 2) * 3 / 2) * - (long)1000 / (p_ptr->max_plv + 2) + 5) / 10); + j = ((((long)r_ptr->mexp * r_ptr->level % (player_ptr->max_plv + 2) * 3 / 2) * + (long)1000 / (player_ptr->max_plv + 2) + 5) / 10); #ifdef JP - hooked_roff(format(" %d レベルのキャラクタにとって 約%ld.%02ld ポイントの経験となる。", - p_ptr->lev, (long)i, (long)j )); + hooked_roff(format(" %d レベルのキャラクタにとって 約%ld.%02ld ポイントの経験となる。", player_ptr->lev, (long)i, (long)j)); #else /* Mention the experience */ - hooked_roff(format(" is worth about %ld.%02ld point%s for level %d player", - (long)i, (long)j, - (((i == 1) && (j == 0)) ? "" : "s")), p_ptr->lev); + hooked_roff(format(" is worth about %ld.%02ld point%s", + (long)i, (long)j, ((i == 1) && (j == 0)) ? "" : "s")); /* Take account of annoying English */ p = "th"; - i = p_ptr->lev % 10; - if ((p_ptr->lev / 10) == 1) /* nothing */; + i = player_ptr->lev % 10; + if ((player_ptr->lev / 10) == 1) /* nothing */; else if (i == 1) p = "st"; else if (i == 2) p = "nd"; else if (i == 3) p = "rd"; /* Take account of "leading vowels" in numbers */ q = ""; - i = p_ptr->lev; + i = player_ptr->lev; if ((i == 8) || (i == 11) || (i == 18)) q = "n"; /* Mention the dependance on the player's level */ hooked_roff(format(" for a%s %lu%s level character. ", - q, (long)i, p)); + q, (long)i, p)); #endif } @@ -722,22 +734,23 @@ static void roff_aux(MONRACE_IDX r_idx, BIT_FLAGS mode) hooked_roff(format( _("%^sは通常護衛を伴って現れる。", "%^s usually appears with escorts. "), wd_he[msex])); - if(reinforce) + if (reinforce) { hooked_roff(_("護衛の構成は", "These escorts")); - if((flags1 & RF1_ESCORT) || (flags1 & RF1_ESCORTS)) + if ((flags1 & RF1_ESCORT) || (flags1 & RF1_ESCORTS)) { hooked_roff(_("少なくとも", " at the least")); } -#ifndef JP +#ifdef JP +#else hooked_roff(" contain "); #endif - for(n = 0; n < A_MAX; n++) + for (n = 0; n < A_MAX; n++) { - if(r_ptr->reinforce_id[n] && r_ptr->reinforce_dd[n] && r_ptr->reinforce_ds[n]) + if (r_ptr->reinforce_id[n] && r_ptr->reinforce_dd[n] && r_ptr->reinforce_ds[n]) { monster_race *rf_ptr = &r_info[r_ptr->reinforce_id[n]]; - if(rf_ptr->flags1 & RF1_UNIQUE) + if (rf_ptr->flags1 & RF1_UNIQUE) { hooked_roff(format(_("、%s", ", %s"), r_name + rf_ptr->name)); } @@ -749,7 +762,7 @@ static void roff_aux(MONRACE_IDX r_idx, BIT_FLAGS mode) bool plural = (r_ptr->reinforce_dd[n] * r_ptr->reinforce_ds[n] > 1); GAME_TEXT name[MAX_NLEN]; strcpy(name, r_name + rf_ptr->name); - if(plural) plural_aux(name); + if (plural) plural_aux(name); hooked_roff(format(",%dd%d %s", r_ptr->reinforce_dd[n], r_ptr->reinforce_ds[n], name)); #endif } @@ -768,14 +781,14 @@ static void roff_aux(MONRACE_IDX r_idx, BIT_FLAGS mode) /* Collect inate attacks */ vn = 0; - if (flags4 & RF4_SHRIEK) { vp[vn] = _("悲鳴で助けを求める", "shriek for help"); color[vn++] = TERM_L_WHITE; } - if (flags4 & RF4_ROCKET) - { - set_damage(r_idx, (MS_ROCKET), _("ロケット%sを発射する", "shoot a rocket%s"), tmp_msg[vn]); - vp[vn] = tmp_msg[vn]; - color[vn++] = TERM_UMBER; - } - + if (flags4 & RF4_SHRIEK) { vp[vn] = _("悲鳴で助けを求める", "shriek for help"); color[vn++] = TERM_L_WHITE; } + if (flags4 & RF4_ROCKET) + { + set_damage(player_ptr, r_idx, (MS_ROCKET), _("ロケット%sを発射する", "shoot a rocket%s"), tmp_msg[vn]); + vp[vn] = tmp_msg[vn]; + color[vn++] = TERM_UMBER; + } + if (flags4 & RF4_SHOOT) { for (r = 0, m = 0; m < 4; m++) @@ -789,7 +802,7 @@ static void roff_aux(MONRACE_IDX r_idx, BIT_FLAGS mode) vp[vn] = tmp_msg[vn]; color[vn++] = TERM_UMBER; break; } - } + } } if (a_ability_flags2 & (RF6_SPECIAL)) { vp[vn] = _("特別な行動をする", "do something"); color[vn++] = TERM_VIOLET; } @@ -833,133 +846,133 @@ static void roff_aux(MONRACE_IDX r_idx, BIT_FLAGS mode) vn = 0; if (flags4 & (RF4_BR_ACID)) { - set_damage(r_idx, (MS_BR_ACID), _("酸%s", "acid%s"), tmp_msg[vn]); + set_damage(player_ptr, r_idx, (MS_BR_ACID), _("酸%s", "acid%s"), tmp_msg[vn]); vp[vn] = tmp_msg[vn]; color[vn++] = TERM_GREEN; } if (flags4 & (RF4_BR_ELEC)) { - set_damage(r_idx, (MS_BR_ELEC), _("稲妻%s", "lightning%s"), tmp_msg[vn]); + set_damage(player_ptr, r_idx, (MS_BR_ELEC), _("稲妻%s", "lightning%s"), tmp_msg[vn]); vp[vn] = tmp_msg[vn]; color[vn++] = TERM_BLUE; } if (flags4 & (RF4_BR_FIRE)) { - set_damage(r_idx, (MS_BR_FIRE), _("火炎%s", "fire%s"), tmp_msg[vn]); + set_damage(player_ptr, r_idx, (MS_BR_FIRE), _("火炎%s", "fire%s"), tmp_msg[vn]); vp[vn] = tmp_msg[vn]; color[vn++] = TERM_RED; } if (flags4 & (RF4_BR_COLD)) { - set_damage(r_idx, (MS_BR_COLD), _("冷気%s", "frost%s"), tmp_msg[vn]); + set_damage(player_ptr, r_idx, (MS_BR_COLD), _("冷気%s", "frost%s"), tmp_msg[vn]); vp[vn] = tmp_msg[vn]; color[vn++] = TERM_L_WHITE; } if (flags4 & (RF4_BR_POIS)) { - set_damage(r_idx, (MS_BR_POIS), _("毒%s", "poison%s"), tmp_msg[vn]); + set_damage(player_ptr, r_idx, (MS_BR_POIS), _("毒%s", "poison%s"), tmp_msg[vn]); vp[vn] = tmp_msg[vn]; color[vn++] = TERM_L_GREEN; } if (flags4 & (RF4_BR_NETH)) { - set_damage(r_idx, (MS_BR_NETHER), _("地獄%s", "nether%s"), tmp_msg[vn]); + set_damage(player_ptr, r_idx, (MS_BR_NETHER), _("地獄%s", "nether%s"), tmp_msg[vn]); vp[vn] = tmp_msg[vn]; color[vn++] = TERM_L_DARK; } if (flags4 & (RF4_BR_LITE)) { - set_damage(r_idx, (MS_BR_LITE), _("閃光%s", "light%s"), tmp_msg[vn]); + set_damage(player_ptr, r_idx, (MS_BR_LITE), _("閃光%s", "light%s"), tmp_msg[vn]); vp[vn] = tmp_msg[vn]; color[vn++] = TERM_YELLOW; } if (flags4 & (RF4_BR_DARK)) { - set_damage(r_idx, (MS_BR_DARK), _("暗黒%s", "darkness%s"), tmp_msg[vn]); + set_damage(player_ptr, r_idx, (MS_BR_DARK), _("暗黒%s", "darkness%s"), tmp_msg[vn]); vp[vn] = tmp_msg[vn]; color[vn++] = TERM_L_DARK; } if (flags4 & (RF4_BR_CONF)) { - set_damage(r_idx, (MS_BR_CONF), _("æ··ä¹±%s", "confusion%s"), tmp_msg[vn]); + set_damage(player_ptr, r_idx, (MS_BR_CONF), _("æ··ä¹±%s", "confusion%s"), tmp_msg[vn]); vp[vn] = tmp_msg[vn]; color[vn++] = TERM_L_UMBER; } if (flags4 & (RF4_BR_SOUN)) { - set_damage(r_idx, (MS_BR_SOUND), _("轟音%s", "sound%s"), tmp_msg[vn]); + set_damage(player_ptr, r_idx, (MS_BR_SOUND), _("轟音%s", "sound%s"), tmp_msg[vn]); vp[vn] = tmp_msg[vn]; color[vn++] = TERM_ORANGE; } if (flags4 & (RF4_BR_CHAO)) { - set_damage(r_idx, (MS_BR_CHAOS), _("カオス%s", "chaos%s"), tmp_msg[vn]); + set_damage(player_ptr, r_idx, (MS_BR_CHAOS), _("カオス%s", "chaos%s"), tmp_msg[vn]); vp[vn] = tmp_msg[vn]; color[vn++] = TERM_VIOLET; } if (flags4 & (RF4_BR_DISE)) { - set_damage(r_idx, (MS_BR_DISEN), _("劣化%s", "disenchantment%s"), tmp_msg[vn]); + set_damage(player_ptr, r_idx, (MS_BR_DISEN), _("劣化%s", "disenchantment%s"), tmp_msg[vn]); vp[vn] = tmp_msg[vn]; color[vn++] = TERM_VIOLET; } if (flags4 & (RF4_BR_NEXU)) { - set_damage(r_idx, (MS_BR_NEXUS), _("因果混乱%s", "nexus%s"), tmp_msg[vn]); + set_damage(player_ptr, r_idx, (MS_BR_NEXUS), _("因果混乱%s", "nexus%s"), tmp_msg[vn]); vp[vn] = tmp_msg[vn]; color[vn++] = TERM_VIOLET; } if (flags4 & (RF4_BR_TIME)) { - set_damage(r_idx, (MS_BR_TIME), _("時間逆転%s", "time%s"), tmp_msg[vn]); + set_damage(player_ptr, r_idx, (MS_BR_TIME), _("時間逆転%s", "time%s"), tmp_msg[vn]); vp[vn] = tmp_msg[vn]; color[vn++] = TERM_L_BLUE; } if (flags4 & (RF4_BR_INER)) { - set_damage(r_idx, (MS_BR_INERTIA), _("遅鈍%s", "inertia%s"), tmp_msg[vn]); + set_damage(player_ptr, r_idx, (MS_BR_INERTIA), _("遅鈍%s", "inertia%s"), tmp_msg[vn]); vp[vn] = tmp_msg[vn]; color[vn++] = TERM_SLATE; } if (flags4 & (RF4_BR_GRAV)) { - set_damage(r_idx, (MS_BR_GRAVITY), _("重力%s", "gravity%s"), tmp_msg[vn]); + set_damage(player_ptr, r_idx, (MS_BR_GRAVITY), _("重力%s", "gravity%s"), tmp_msg[vn]); vp[vn] = tmp_msg[vn]; color[vn++] = TERM_SLATE; } if (flags4 & (RF4_BR_SHAR)) { - set_damage(r_idx, (MS_BR_SHARDS), _("破片%s", "shards%s"), tmp_msg[vn]); + set_damage(player_ptr, r_idx, (MS_BR_SHARDS), _("破片%s", "shards%s"), tmp_msg[vn]); vp[vn] = tmp_msg[vn]; color[vn++] = TERM_L_UMBER; } if (flags4 & (RF4_BR_PLAS)) { - set_damage(r_idx, (MS_BR_PLASMA), _("プラズマ%s", "plasma%s"), tmp_msg[vn]); + set_damage(player_ptr, r_idx, (MS_BR_PLASMA), _("プラズマ%s", "plasma%s"), tmp_msg[vn]); vp[vn] = tmp_msg[vn]; color[vn++] = TERM_L_RED; } if (flags4 & (RF4_BR_WALL)) { - set_damage(r_idx, (MS_BR_FORCE), _("フォース%s", "force%s"), tmp_msg[vn]); + set_damage(player_ptr, r_idx, (MS_BR_FORCE), _("フォース%s", "force%s"), tmp_msg[vn]); vp[vn] = tmp_msg[vn]; color[vn++] = TERM_UMBER; } if (flags4 & (RF4_BR_MANA)) { - set_damage(r_idx, (MS_BR_MANA), _("魔力%s", "mana%s"), tmp_msg[vn]); + set_damage(player_ptr, r_idx, (MS_BR_MANA), _("魔力%s", "mana%s"), tmp_msg[vn]); vp[vn] = tmp_msg[vn]; color[vn++] = TERM_L_BLUE; } if (flags4 & (RF4_BR_NUKE)) { - set_damage(r_idx, (MS_BR_NUKE), _("放射性廃棄物%s", "toxic waste%s"), tmp_msg[vn]); + set_damage(player_ptr, r_idx, (MS_BR_NUKE), _("放射性廃棄物%s", "toxic waste%s"), tmp_msg[vn]); vp[vn] = tmp_msg[vn]; color[vn++] = TERM_L_GREEN; } if (flags4 & (RF4_BR_DISI)) { - set_damage(r_idx, (MS_BR_DISI), _("分解%s", "disintegration%s"), tmp_msg[vn]); + set_damage(player_ptr, r_idx, (MS_BR_DISI), _("分解%s", "disintegration%s"), tmp_msg[vn]); vp[vn] = tmp_msg[vn]; color[vn++] = TERM_SLATE; } @@ -978,10 +991,10 @@ static void roff_aux(MONRACE_IDX r_idx, BIT_FLAGS mode) { /* Intro */ #ifdef JP - if ( n != 0 ) hooked_roff("や"); + if (n != 0) hooked_roff("や"); #else if (n == 0) hooked_roff(" may breathe "); - else if (n < vn-1) hooked_roff(", "); + else if (n < vn - 1) hooked_roff(", "); else hooked_roff(" or "); #endif @@ -999,208 +1012,208 @@ static void roff_aux(MONRACE_IDX r_idx, BIT_FLAGS mode) vn = 0; if (a_ability_flags1 & (RF5_BA_ACID)) { - set_damage(r_idx, (MS_BALL_ACID), _("アシッド・ボール%s", "produce acid balls%s"), tmp_msg[vn]); + set_damage(player_ptr, r_idx, (MS_BALL_ACID), _("アシッド・ボール%s", "produce acid balls%s"), tmp_msg[vn]); vp[vn] = tmp_msg[vn]; color[vn++] = TERM_GREEN; } if (a_ability_flags1 & (RF5_BA_ELEC)) { - set_damage(r_idx, (MS_BALL_ELEC), _("サンダー・ボール%s", "produce lightning balls%s"), tmp_msg[vn]); + set_damage(player_ptr, r_idx, (MS_BALL_ELEC), _("サンダー・ボール%s", "produce lightning balls%s"), tmp_msg[vn]); vp[vn] = tmp_msg[vn]; color[vn++] = TERM_BLUE; } if (a_ability_flags1 & (RF5_BA_FIRE)) { - set_damage(r_idx, (MS_BALL_FIRE), _("ファイア・ボール%s", "produce fire balls%s"), tmp_msg[vn]); + set_damage(player_ptr, r_idx, (MS_BALL_FIRE), _("ファイア・ボール%s", "produce fire balls%s"), tmp_msg[vn]); vp[vn] = tmp_msg[vn]; color[vn++] = TERM_RED; } if (a_ability_flags1 & (RF5_BA_COLD)) { - set_damage(r_idx, (MS_BALL_COLD), _("アイス・ボール%s", "produce frost balls%s"), tmp_msg[vn]); + set_damage(player_ptr, r_idx, (MS_BALL_COLD), _("アイス・ボール%s", "produce frost balls%s"), tmp_msg[vn]); vp[vn] = tmp_msg[vn]; color[vn++] = TERM_L_WHITE; } if (a_ability_flags1 & (RF5_BA_POIS)) { - set_damage(r_idx, (MS_BALL_POIS), _("悪臭雲%s", "produce poison balls%s"), tmp_msg[vn]); + set_damage(player_ptr, r_idx, (MS_BALL_POIS), _("悪臭雲%s", "produce poison balls%s"), tmp_msg[vn]); vp[vn] = tmp_msg[vn]; color[vn++] = TERM_L_GREEN; } if (a_ability_flags1 & (RF5_BA_NETH)) { - set_damage(r_idx, (MS_BALL_NETHER), _("地獄球%s", "produce nether balls%s"), tmp_msg[vn]); + set_damage(player_ptr, r_idx, (MS_BALL_NETHER), _("地獄球%s", "produce nether balls%s"), tmp_msg[vn]); vp[vn] = tmp_msg[vn]; color[vn++] = TERM_L_DARK; } if (a_ability_flags1 & (RF5_BA_WATE)) { - set_damage(r_idx, (MS_BALL_WATER), _("ウォーター・ボール%s", "produce water balls%s"), tmp_msg[vn]); + set_damage(player_ptr, r_idx, (MS_BALL_WATER), _("ウォーター・ボール%s", "produce water balls%s"), tmp_msg[vn]); vp[vn] = tmp_msg[vn]; color[vn++] = TERM_BLUE; } if (flags4 & (RF4_BA_NUKE)) { - set_damage(r_idx, (MS_BALL_NUKE), _("放射能球%s", "produce balls of radiation%s"), tmp_msg[vn]); + set_damage(player_ptr, r_idx, (MS_BALL_NUKE), _("放射能球%s", "produce balls of radiation%s"), tmp_msg[vn]); vp[vn] = tmp_msg[vn]; color[vn++] = TERM_L_GREEN; } if (a_ability_flags1 & (RF5_BA_MANA)) { - set_damage(r_idx, (MS_BALL_MANA), _("魔力の嵐%s", "invoke mana storms%s"), tmp_msg[vn]); + set_damage(player_ptr, r_idx, (MS_BALL_MANA), _("魔力の嵐%s", "invoke mana storms%s"), tmp_msg[vn]); vp[vn] = tmp_msg[vn]; color[vn++] = TERM_L_BLUE; } if (a_ability_flags1 & (RF5_BA_DARK)) { - set_damage(r_idx, (MS_BALL_DARK), _("暗黒の嵐%s", "invoke darkness storms%s"), tmp_msg[vn]); + set_damage(player_ptr, r_idx, (MS_BALL_DARK), _("暗黒の嵐%s", "invoke darkness storms%s"), tmp_msg[vn]); vp[vn] = tmp_msg[vn]; color[vn++] = TERM_L_DARK; } if (a_ability_flags1 & (RF5_BA_LITE)) { - set_damage(r_idx, (MS_STARBURST), _("スターバースト%s", "invoke starburst%s"), tmp_msg[vn]); + set_damage(player_ptr, r_idx, (MS_STARBURST), _("スターバースト%s", "invoke starburst%s"), tmp_msg[vn]); vp[vn] = tmp_msg[vn]; color[vn++] = TERM_YELLOW; } if (flags4 & (RF4_BA_CHAO)) { - set_damage(r_idx, (MS_BALL_CHAOS), _("純ログルス%s", "invoke raw Logrus%s"), tmp_msg[vn]); + set_damage(player_ptr, r_idx, (MS_BALL_CHAOS), _("純ログルス%s", "invoke raw Logrus%s"), tmp_msg[vn]); vp[vn] = tmp_msg[vn]; color[vn++] = TERM_VIOLET; } if (a_ability_flags2 & (RF6_HAND_DOOM)) { vp[vn] = _("破滅の手(40%-60%)", "invoke the Hand of Doom(40%-60%)"); color[vn++] = TERM_VIOLET; } if (a_ability_flags2 & (RF6_PSY_SPEAR)) { - set_damage(r_idx, (MS_PSY_SPEAR), _("光の剣%s", "psycho-spear%s"), tmp_msg[vn]); + set_damage(player_ptr, r_idx, (MS_PSY_SPEAR), _("光の剣%s", "psycho-spear%s"), tmp_msg[vn]); vp[vn] = tmp_msg[vn]; color[vn++] = TERM_YELLOW; } if (a_ability_flags1 & (RF5_DRAIN_MANA)) { - set_damage(r_idx, (MS_DRAIN_MANA), _("魔力吸収%s", "drain mana%s"), tmp_msg[vn]); + set_damage(player_ptr, r_idx, (MS_DRAIN_MANA), _("魔力吸収%s", "drain mana%s"), tmp_msg[vn]); vp[vn] = tmp_msg[vn]; color[vn++] = TERM_SLATE; } if (a_ability_flags1 & (RF5_MIND_BLAST)) { - set_damage(r_idx, (MS_MIND_BLAST), _("精神攻撃%s", "cause mind blasting%s"), tmp_msg[vn]); + set_damage(player_ptr, r_idx, (MS_MIND_BLAST), _("精神攻撃%s", "cause mind blasting%s"), tmp_msg[vn]); vp[vn] = tmp_msg[vn]; color[vn++] = TERM_L_RED; } if (a_ability_flags1 & (RF5_BRAIN_SMASH)) { - set_damage(r_idx, (MS_BRAIN_SMASH), _("脳攻撃%s", "cause brain smashing%s"), tmp_msg[vn]); + set_damage(player_ptr, r_idx, (MS_BRAIN_SMASH), _("脳攻撃%s", "cause brain smashing%s"), tmp_msg[vn]); vp[vn] = tmp_msg[vn]; color[vn++] = TERM_RED; } if (a_ability_flags1 & (RF5_CAUSE_1)) { - set_damage(r_idx, (MS_CAUSE_1), + set_damage(player_ptr, r_idx, (MS_CAUSE_1), _("軽傷+呪い%s", "cause light wounds and cursing%s"), tmp_msg[vn]); vp[vn] = tmp_msg[vn]; color[vn++] = TERM_L_WHITE; } if (a_ability_flags1 & (RF5_CAUSE_2)) { - set_damage(r_idx, (MS_CAUSE_2), + set_damage(player_ptr, r_idx, (MS_CAUSE_2), _("重傷+呪い%s", "cause serious wounds and cursing%s"), tmp_msg[vn]); vp[vn] = tmp_msg[vn]; color[vn++] = TERM_L_WHITE; } if (a_ability_flags1 & (RF5_CAUSE_3)) { - set_damage(r_idx, (MS_CAUSE_3), + set_damage(player_ptr, r_idx, (MS_CAUSE_3), _("致命傷+呪い%s", "cause critical wounds and cursing%s"), tmp_msg[vn]); vp[vn] = tmp_msg[vn]; color[vn++] = TERM_L_WHITE; } if (a_ability_flags1 & (RF5_CAUSE_4)) { - set_damage(r_idx, (MS_CAUSE_4), + set_damage(player_ptr, r_idx, (MS_CAUSE_4), _("秘孔を突く%s", "cause mortal wounds%s"), tmp_msg[vn]); vp[vn] = tmp_msg[vn]; color[vn++] = TERM_L_WHITE; } if (a_ability_flags1 & (RF5_BO_ACID)) { - set_damage(r_idx, (MS_BOLT_ACID), _("アシッド・ボルト%s", "produce acid bolts%s"), tmp_msg[vn]); + set_damage(player_ptr, r_idx, (MS_BOLT_ACID), _("アシッド・ボルト%s", "produce acid bolts%s"), tmp_msg[vn]); vp[vn] = tmp_msg[vn]; color[vn++] = TERM_GREEN; } if (a_ability_flags1 & (RF5_BO_ELEC)) { - set_damage(r_idx, (MS_BOLT_ELEC), _("サンダー・ボルト%s", "produce lightning bolts%s"), tmp_msg[vn]); + set_damage(player_ptr, r_idx, (MS_BOLT_ELEC), _("サンダー・ボルト%s", "produce lightning bolts%s"), tmp_msg[vn]); vp[vn] = tmp_msg[vn]; color[vn++] = TERM_BLUE; } if (a_ability_flags1 & (RF5_BO_FIRE)) { - set_damage(r_idx, (MS_BOLT_FIRE), _("ファイア・ボルト%s", "produce fire bolts%s"), tmp_msg[vn]); + set_damage(player_ptr, r_idx, (MS_BOLT_FIRE), _("ファイア・ボルト%s", "produce fire bolts%s"), tmp_msg[vn]); vp[vn] = tmp_msg[vn]; color[vn++] = TERM_RED; } if (a_ability_flags1 & (RF5_BO_COLD)) { - set_damage(r_idx, (MS_BOLT_COLD), _("アイス・ボルト%s", "produce frost bolts%s"), tmp_msg[vn]); + set_damage(player_ptr, r_idx, (MS_BOLT_COLD), _("アイス・ボルト%s", "produce frost bolts%s"), tmp_msg[vn]); vp[vn] = tmp_msg[vn]; color[vn++] = TERM_L_WHITE; } if (a_ability_flags1 & (RF5_BO_NETH)) { - set_damage(r_idx, (MS_BOLT_NETHER), _("地獄の矢%s", "produce nether bolts%s"), tmp_msg[vn]); + set_damage(player_ptr, r_idx, (MS_BOLT_NETHER), _("地獄の矢%s", "produce nether bolts%s"), tmp_msg[vn]); vp[vn] = tmp_msg[vn]; color[vn++] = TERM_L_DARK; } if (a_ability_flags1 & (RF5_BO_WATE)) { - set_damage(r_idx, (MS_BOLT_WATER), _("ウォーター・ボルト%s", "produce water bolts%s"), tmp_msg[vn]); + set_damage(player_ptr, r_idx, (MS_BOLT_WATER), _("ウォーター・ボルト%s", "produce water bolts%s"), tmp_msg[vn]); vp[vn] = tmp_msg[vn]; color[vn++] = TERM_BLUE; } if (a_ability_flags1 & (RF5_BO_MANA)) { - set_damage(r_idx, (MS_BOLT_MANA), _("魔力の矢%s", "produce mana bolts%s"), tmp_msg[vn]); + set_damage(player_ptr, r_idx, (MS_BOLT_MANA), _("魔力の矢%s", "produce mana bolts%s"), tmp_msg[vn]); vp[vn] = tmp_msg[vn]; color[vn++] = TERM_L_BLUE; } if (a_ability_flags1 & (RF5_BO_PLAS)) { - set_damage(r_idx, (MS_BOLT_PLASMA), _("プラズマ・ボルト%s", "produce plasma bolts%s"), tmp_msg[vn]); + set_damage(player_ptr, r_idx, (MS_BOLT_PLASMA), _("プラズマ・ボルト%s", "produce plasma bolts%s"), tmp_msg[vn]); vp[vn] = tmp_msg[vn]; color[vn++] = TERM_L_RED; } if (a_ability_flags1 & (RF5_BO_ICEE)) { - set_damage(r_idx, (MS_BOLT_ICE), _("極寒の矢%s", "produce ice bolts%s"), tmp_msg[vn]); + set_damage(player_ptr, r_idx, (MS_BOLT_ICE), _("極寒の矢%s", "produce ice bolts%s"), tmp_msg[vn]); vp[vn] = tmp_msg[vn]; color[vn++] = TERM_WHITE; } if (a_ability_flags1 & (RF5_MISSILE)) { - set_damage(r_idx, (MS_MAGIC_MISSILE), _("マジックミサイル%s", "produce magic missiles%s"), tmp_msg[vn]); + set_damage(player_ptr, r_idx, (MS_MAGIC_MISSILE), _("マジックミサイル%s", "produce magic missiles%s"), tmp_msg[vn]); vp[vn] = tmp_msg[vn]; color[vn++] = TERM_SLATE; } - if (a_ability_flags1 & (RF5_SCARE)) { vp[vn] = _("恐怖", "terrify"); color[vn++] = TERM_SLATE; } - if (a_ability_flags1 & (RF5_BLIND)) { vp[vn] = _("目くらまし", "blind"); color[vn++] = TERM_L_DARK; } - if (a_ability_flags1 & (RF5_CONF)) { vp[vn] = _("æ··ä¹±", "confuse"); color[vn++] = TERM_L_UMBER; } - if (a_ability_flags1 & (RF5_SLOW)) { vp[vn] = _("減速", "slow"); color[vn++] = TERM_UMBER; } - if (a_ability_flags1 & (RF5_HOLD)) { vp[vn] = _("麻痺", "paralyze"); color[vn++] = TERM_RED; } - if (a_ability_flags2 & (RF6_HASTE)) { vp[vn] = _("加速", "haste-self"); color[vn++] = TERM_L_GREEN; } - if (a_ability_flags2 & (RF6_HEAL)) { vp[vn] = _("治癒", "heal-self"); color[vn++] = TERM_WHITE; } - if (a_ability_flags2 & (RF6_INVULNER)) { vp[vn] = _("無敵化", "make invulnerable"); color[vn++] = TERM_WHITE; } - if (flags4 & RF4_DISPEL) { vp[vn] = _("魔力消去", "dispel-magic"); color[vn++] = TERM_L_WHITE; } - if (a_ability_flags2 & (RF6_BLINK)) { vp[vn] = _("ショートテレポート", "blink-self"); color[vn++] = TERM_UMBER; } - if (a_ability_flags2 & (RF6_TPORT)) { vp[vn] = _("テレポート", "teleport-self"); color[vn++] = TERM_ORANGE; } - if (a_ability_flags2 & (RF6_WORLD)) { vp[vn] = _("時を止める", "stop the time"); color[vn++] = TERM_L_BLUE; } - if (a_ability_flags2 & (RF6_TELE_TO)) { vp[vn] = _("テレポートバック", "teleport to"); color[vn++] = TERM_L_UMBER; } - if (a_ability_flags2 & (RF6_TELE_AWAY)) { vp[vn] = _("テレポートアウェイ", "teleport away"); color[vn++] = TERM_UMBER; } - if (a_ability_flags2 & (RF6_TELE_LEVEL)) { vp[vn] = _("テレポート・レベル", "teleport level"); color[vn++] = TERM_ORANGE; } + if (a_ability_flags1 & (RF5_SCARE)) { vp[vn] = _("恐怖", "terrify"); color[vn++] = TERM_SLATE; } + if (a_ability_flags1 & (RF5_BLIND)) { vp[vn] = _("目くらまし", "blind"); color[vn++] = TERM_L_DARK; } + if (a_ability_flags1 & (RF5_CONF)) { vp[vn] = _("æ··ä¹±", "confuse"); color[vn++] = TERM_L_UMBER; } + if (a_ability_flags1 & (RF5_SLOW)) { vp[vn] = _("減速", "slow"); color[vn++] = TERM_UMBER; } + if (a_ability_flags1 & (RF5_HOLD)) { vp[vn] = _("麻痺", "paralyze"); color[vn++] = TERM_RED; } + if (a_ability_flags2 & (RF6_HASTE)) { vp[vn] = _("加速", "haste-self"); color[vn++] = TERM_L_GREEN; } + if (a_ability_flags2 & (RF6_HEAL)) { vp[vn] = _("治癒", "heal-self"); color[vn++] = TERM_WHITE; } + if (a_ability_flags2 & (RF6_INVULNER)) { vp[vn] = _("無敵化", "make invulnerable"); color[vn++] = TERM_WHITE; } + if (flags4 & RF4_DISPEL) { vp[vn] = _("魔力消去", "dispel-magic"); color[vn++] = TERM_L_WHITE; } + if (a_ability_flags2 & (RF6_BLINK)) { vp[vn] = _("ショートテレポート", "blink-self"); color[vn++] = TERM_UMBER; } + if (a_ability_flags2 & (RF6_TPORT)) { vp[vn] = _("テレポート", "teleport-self"); color[vn++] = TERM_ORANGE; } + if (a_ability_flags2 & (RF6_WORLD)) { vp[vn] = _("時を止める", "stop the time"); color[vn++] = TERM_L_BLUE; } + if (a_ability_flags2 & (RF6_TELE_TO)) { vp[vn] = _("テレポートバック", "teleport to"); color[vn++] = TERM_L_UMBER; } + if (a_ability_flags2 & (RF6_TELE_AWAY)) { vp[vn] = _("テレポートアウェイ", "teleport away"); color[vn++] = TERM_UMBER; } + if (a_ability_flags2 & (RF6_TELE_LEVEL)) { vp[vn] = _("テレポート・レベル", "teleport level"); color[vn++] = TERM_ORANGE; } if (a_ability_flags2 & (RF6_DARKNESS)) { - if ((p_ptr->pclass != CLASS_NINJA) || (r_ptr->flags3 & (RF3_UNDEAD | RF3_HURT_LITE)) || (r_ptr->flags7 & RF7_DARK_MASK)) + if ((player_ptr->pclass != CLASS_NINJA) || (r_ptr->flags3 & (RF3_UNDEAD | RF3_HURT_LITE)) || (r_ptr->flags7 & RF7_DARK_MASK)) { vp[vn] = _("暗闇", "create darkness"); color[vn++] = TERM_L_DARK; } @@ -1210,25 +1223,25 @@ static void roff_aux(MONRACE_IDX r_idx, BIT_FLAGS mode) } } - if (a_ability_flags2 & (RF6_TRAPS)) { vp[vn] = _("トラップ", "create traps"); color[vn++] = TERM_BLUE; } - if (a_ability_flags2 & (RF6_FORGET)) { vp[vn] = _("記憶消去", "cause amnesia"); color[vn++] = TERM_BLUE; } - if (a_ability_flags2 & (RF6_RAISE_DEAD)) { vp[vn] = _("死者復活", "raise dead"); color[vn++] = TERM_RED; } - if (a_ability_flags2 & (RF6_S_MONSTER)) { vp[vn] = _("モンスター一体召喚", "summon a monster"); color[vn++] = TERM_SLATE; } - if (a_ability_flags2 & (RF6_S_MONSTERS)) { vp[vn] = _("モンスター複数召喚", "summon monsters"); color[vn++] = TERM_L_WHITE; } - if (a_ability_flags2 & (RF6_S_KIN)) { vp[vn] = _("救援召喚", "summon aid"); color[vn++] = TERM_ORANGE; } - if (a_ability_flags2 & (RF6_S_ANT)) { vp[vn] = _("アリ召喚", "summon ants"); color[vn++] = TERM_RED; } - if (a_ability_flags2 & (RF6_S_SPIDER)) { vp[vn] = _("クモ召喚", "summon spiders"); color[vn++] = TERM_L_DARK; } - if (a_ability_flags2 & (RF6_S_HOUND)) { vp[vn] = _("ハウンド召喚", "summon hounds"); color[vn++] = TERM_L_UMBER; } - if (a_ability_flags2 & (RF6_S_HYDRA)) { vp[vn] = _("ヒドラ召喚", "summon hydras"); color[vn++] = TERM_L_GREEN; } - if (a_ability_flags2 & (RF6_S_ANGEL)) { vp[vn] = _("天使一体召喚", "summon an angel"); color[vn++] = TERM_YELLOW; } - if (a_ability_flags2 & (RF6_S_DEMON)) { vp[vn] = _("デーモン一体召喚", "summon a demon"); color[vn++] = TERM_L_RED; } - if (a_ability_flags2 & (RF6_S_UNDEAD)) { vp[vn] = _("アンデッド一体召喚", "summon an undead"); color[vn++] = TERM_L_DARK; } - if (a_ability_flags2 & (RF6_S_DRAGON)) { vp[vn] = _("ドラゴン一体召喚", "summon a dragon"); color[vn++] = TERM_ORANGE; } - if (a_ability_flags2 & (RF6_S_HI_UNDEAD)) { vp[vn] = _("強力なアンデッド召喚", "summon Greater Undead"); color[vn++] = TERM_L_DARK; } - if (a_ability_flags2 & (RF6_S_HI_DRAGON)) { vp[vn] = _("古代ドラゴン召喚", "summon Ancient Dragons"); color[vn++] = TERM_ORANGE; } - if (a_ability_flags2 & (RF6_S_CYBER)) { vp[vn] = _("サイバーデーモン召喚", "summon Cyberdemons"); color[vn++] = TERM_UMBER; } - if (a_ability_flags2 & (RF6_S_AMBERITES)) { vp[vn] = _("アンバーの王族召喚", "summon Lords of Amber"); color[vn++] = TERM_VIOLET; } - if (a_ability_flags2 & (RF6_S_UNIQUE)) { vp[vn] = _("ユニーク・モンスター召喚", "summon Unique Monsters"); color[vn++] = TERM_VIOLET; } + if (a_ability_flags2 & (RF6_TRAPS)) { vp[vn] = _("トラップ", "create traps"); color[vn++] = TERM_BLUE; } + if (a_ability_flags2 & (RF6_FORGET)) { vp[vn] = _("記憶消去", "cause amnesia"); color[vn++] = TERM_BLUE; } + if (a_ability_flags2 & (RF6_RAISE_DEAD)) { vp[vn] = _("死者復活", "raise dead"); color[vn++] = TERM_RED; } + if (a_ability_flags2 & (RF6_S_MONSTER)) { vp[vn] = _("モンスター一体召喚", "summon a monster"); color[vn++] = TERM_SLATE; } + if (a_ability_flags2 & (RF6_S_MONSTERS)) { vp[vn] = _("モンスター複数召喚", "summon monsters"); color[vn++] = TERM_L_WHITE; } + if (a_ability_flags2 & (RF6_S_KIN)) { vp[vn] = _("救援召喚", "summon aid"); color[vn++] = TERM_ORANGE; } + if (a_ability_flags2 & (RF6_S_ANT)) { vp[vn] = _("アリ召喚", "summon ants"); color[vn++] = TERM_RED; } + if (a_ability_flags2 & (RF6_S_SPIDER)) { vp[vn] = _("クモ召喚", "summon spiders"); color[vn++] = TERM_L_DARK; } + if (a_ability_flags2 & (RF6_S_HOUND)) { vp[vn] = _("ハウンド召喚", "summon hounds"); color[vn++] = TERM_L_UMBER; } + if (a_ability_flags2 & (RF6_S_HYDRA)) { vp[vn] = _("ヒドラ召喚", "summon hydras"); color[vn++] = TERM_L_GREEN; } + if (a_ability_flags2 & (RF6_S_ANGEL)) { vp[vn] = _("天使一体召喚", "summon an angel"); color[vn++] = TERM_YELLOW; } + if (a_ability_flags2 & (RF6_S_DEMON)) { vp[vn] = _("デーモン一体召喚", "summon a demon"); color[vn++] = TERM_L_RED; } + if (a_ability_flags2 & (RF6_S_UNDEAD)) { vp[vn] = _("アンデッド一体召喚", "summon an undead"); color[vn++] = TERM_L_DARK; } + if (a_ability_flags2 & (RF6_S_DRAGON)) { vp[vn] = _("ドラゴン一体召喚", "summon a dragon"); color[vn++] = TERM_ORANGE; } + if (a_ability_flags2 & (RF6_S_HI_UNDEAD)) { vp[vn] = _("強力なアンデッド召喚", "summon Greater Undead"); color[vn++] = TERM_L_DARK; } + if (a_ability_flags2 & (RF6_S_HI_DRAGON)) { vp[vn] = _("古代ドラゴン召喚", "summon Ancient Dragons"); color[vn++] = TERM_ORANGE; } + if (a_ability_flags2 & (RF6_S_CYBER)) { vp[vn] = _("サイバーデーモン召喚", "summon Cyberdemons"); color[vn++] = TERM_UMBER; } + if (a_ability_flags2 & (RF6_S_AMBERITES)) { vp[vn] = _("アンバーの王族召喚", "summon Lords of Amber"); color[vn++] = TERM_VIOLET; } + if (a_ability_flags2 & (RF6_S_UNIQUE)) { vp[vn] = _("ユニーク・モンスター召喚", "summon Unique Monsters"); color[vn++] = TERM_VIOLET; } /* Describe spells */ @@ -1267,10 +1280,10 @@ static void roff_aux(MONRACE_IDX r_idx, BIT_FLAGS mode) { /* Intro */ #ifdef JP - if ( n != 0 ) hooked_roff("、"); + if (n != 0) hooked_roff("、"); #else if (n == 0) hooked_roff(" which "); - else if (n < vn-1) hooked_roff(", "); + else if (n < vn - 1) hooked_roff(", "); else hooked_roff(" or "); #endif @@ -1313,12 +1326,12 @@ static void roff_aux(MONRACE_IDX r_idx, BIT_FLAGS mode) } /* Describe monster "toughness" */ - if (know_everything || know_armour(r_idx)) + if (know_everything || know_armour(r_idx)) { /* Armor */ hooked_roff(format( _("%^sは AC%d の防御力と", "%^s has an armor rating of %d"), - wd_he[msex], r_ptr->ac)); + wd_he[msex], r_ptr->ac)); /* Maximized hitpoints */ if ((flags1 & RF1_FORCE_MAXHP) || (r_ptr->hside == 1)) @@ -1326,7 +1339,7 @@ static void roff_aux(MONRACE_IDX r_idx, BIT_FLAGS mode) u32b hp = r_ptr->hdice * (nightmare ? 2 : 1) * r_ptr->hside; hooked_roff(format( _(" %d の体力がある。", " and a life rating of %d. "), - (s16b)MIN(30000, hp))); + (s16b)MIN(30000, hp))); } /* Variable hitpoints */ @@ -1334,7 +1347,7 @@ static void roff_aux(MONRACE_IDX r_idx, BIT_FLAGS mode) { hooked_roff(format( _(" %dd%d の体力がある。", " and a life rating of %dd%d. "), - r_ptr->hdice * (nightmare ? 2 : 1), r_ptr->hside)); + r_ptr->hdice * (nightmare ? 2 : 1), r_ptr->hside)); } } @@ -1346,8 +1359,8 @@ static void roff_aux(MONRACE_IDX r_idx, BIT_FLAGS mode) if (flags7 & (RF7_HAS_DARK_1 | RF7_HAS_DARK_2)) { vp[vn] = _("ダンジョンを暗くする", "darken the dungeon"); color[vn++] = TERM_L_DARK; } if (flags2 & RF2_OPEN_DOOR) { vp[vn] = _("ドアを開ける", "open doors"); color[vn++] = TERM_WHITE; } if (flags2 & RF2_BASH_DOOR) { vp[vn] = _("ドアを打ち破る", "bash down doors"); color[vn++] = TERM_WHITE; } - if (flags7 & RF7_CAN_FLY) { vp[vn] = _("空を飛ぶ", "fly"); color[vn++] = TERM_WHITE; } - if (flags7 & RF7_CAN_SWIM) { vp[vn] = _("水を渡る", "swim"); color[vn++] = TERM_WHITE; } + if (flags7 & RF7_CAN_FLY) { vp[vn] = _("空を飛ぶ", "fly"); color[vn++] = TERM_WHITE; } + if (flags7 & RF7_CAN_SWIM) { vp[vn] = _("水を渡る", "swim"); color[vn++] = TERM_WHITE; } if (flags2 & RF2_PASS_WALL) { vp[vn] = _("壁をすり抜ける", "pass through walls"); color[vn++] = TERM_WHITE; } if (flags2 & RF2_KILL_WALL) { vp[vn] = _("壁を掘り進む", "bore through walls"); color[vn++] = TERM_WHITE; } if (flags2 & RF2_MOVE_BODY) { vp[vn] = _("弱いモンスターを押しのける", "push past weaker monsters"); color[vn++] = TERM_WHITE; } @@ -1389,7 +1402,7 @@ static void roff_aux(MONRACE_IDX r_idx, BIT_FLAGS mode) hooked_roff(_("ことができる。", ". ")); } - + /* Aquatic */ if (flags7 & RF7_AQUATIC) { @@ -1454,10 +1467,10 @@ static void roff_aux(MONRACE_IDX r_idx, BIT_FLAGS mode) { /* Intro */ #ifdef JP - if ( n != 0 ) hooked_roff("や"); + if (n != 0) hooked_roff("や"); #else if (n == 0) hooked_roff(" is hurt by "); - else if (n < vn-1) hooked_roff(", "); + else if (n < vn - 1) hooked_roff(", "); else hooked_roff(" and "); #endif @@ -1509,10 +1522,10 @@ static void roff_aux(MONRACE_IDX r_idx, BIT_FLAGS mode) { /* Intro */ #ifdef JP - if ( n != 0 ) hooked_roff("と"); + if (n != 0) hooked_roff("と"); #else if (n == 0) hooked_roff(" resists "); - else if (n < vn-1) hooked_roff(", "); + else if (n < vn - 1) hooked_roff(", "); else hooked_roff(" and "); #endif @@ -1531,10 +1544,11 @@ static void roff_aux(MONRACE_IDX r_idx, BIT_FLAGS mode) if (r_ptr->next_r_idx) { hooked_roff(format(_("%^sは経験を積むと、", "%^s will evolve into "), wd_he[msex])); - hook_c_roff(TERM_YELLOW, format("%s", r_name+r_info[r_ptr->next_r_idx].name)); - hooked_roff(format( - _(("に進化する。"), - (" when %s gets enugh experience. ", wd_he[msex])))); + hook_c_roff(TERM_YELLOW, format("%s", r_name + r_info[r_ptr->next_r_idx].name)); + + hooked_roff( + _(format("に進化する。"), + format(" when %s gets enough experience. ", wd_he[msex]))); } else if (!(r_ptr->flags1 & RF1_UNIQUE)) { @@ -1544,9 +1558,9 @@ static void roff_aux(MONRACE_IDX r_idx, BIT_FLAGS mode) /* Collect non-effects */ vn = 0; - if (flags3 & RF3_NO_STUN) { vp[vn] = _("朦朧としない", "stunned"); color[vn++] = TERM_ORANGE; } - if (flags3 & RF3_NO_FEAR) { vp[vn] = _("恐怖を感じない", "frightened"); color[vn++] = TERM_SLATE; } - if (flags3 & RF3_NO_CONF) { vp[vn] = _("混乱しない", "confused"); color[vn++] = TERM_L_UMBER; } + if (flags3 & RF3_NO_STUN) { vp[vn] = _("朦朧としない", "stunned"); color[vn++] = TERM_ORANGE; } + if (flags3 & RF3_NO_FEAR) { vp[vn] = _("恐怖を感じない", "frightened"); color[vn++] = TERM_SLATE; } + if (flags3 & RF3_NO_CONF) { vp[vn] = _("混乱しない", "confused"); color[vn++] = TERM_L_UMBER; } if (flags3 & RF3_NO_SLEEP) { vp[vn] = _("眠らされない", "slept"); color[vn++] = TERM_BLUE; } if ((flagsr & RFR_RES_TELE) && (r_ptr->flags1 & RF1_UNIQUE)) { vp[vn] = _("テレポートされない", "teleported"); color[vn++] = TERM_ORANGE; } @@ -1562,7 +1576,7 @@ static void roff_aux(MONRACE_IDX r_idx, BIT_FLAGS mode) { /* Intro */ #ifdef JP - if ( n != 0 ) hooked_roff("し、"); + if (n != 0) hooked_roff("し、"); #else if (n == 0) hooked_roff(" cannot be "); else if (n < vn - 1) hooked_roff(", "); @@ -1581,8 +1595,8 @@ static void roff_aux(MONRACE_IDX r_idx, BIT_FLAGS mode) /* Do we know how aware it is? */ if ((((int)r_ptr->r_wake * (int)r_ptr->r_wake) > r_ptr->sleep) || - (r_ptr->r_ignore == MAX_UCHAR) || - (r_ptr->sleep == 0 && r_ptr->r_tkills >= 10) || know_everything) + (r_ptr->r_ignore == MAX_UCHAR) || + (r_ptr->sleep == 0 && r_ptr->r_tkills >= 10) || know_everything) { concptr act; @@ -1633,7 +1647,7 @@ static void roff_aux(MONRACE_IDX r_idx, BIT_FLAGS mode) hooked_roff( _(format("%^sは侵入者%s、 %d フィート先から侵入者に気付くことがある。", wd_he[msex], act, 10 * r_ptr->aaf), - format("%^s %s intruders, which %s may notice from %d feet. ", wd_he[msex], act, wd_he[msex], 10 * r_ptr->aaf))); + format("%^s %s intruders, which %s may notice from %d feet. ", wd_he[msex], act, wd_he[msex], 10 * r_ptr->aaf))); } @@ -1643,7 +1657,8 @@ static void roff_aux(MONRACE_IDX r_idx, BIT_FLAGS mode) /* Intro */ hooked_roff(format( _("%^sは", "%^s may carry"), wd_he[msex])); -#ifndef JP +#ifdef JP +#else /* No "n" needed */ sin = FALSE; #endif @@ -1656,7 +1671,8 @@ static void roff_aux(MONRACE_IDX r_idx, BIT_FLAGS mode) if (n == 1) { hooked_roff(_("一つの", " a")); -#ifndef JP +#ifdef JP +#else sin = TRUE; #endif } @@ -1686,7 +1702,8 @@ static void roff_aux(MONRACE_IDX r_idx, BIT_FLAGS mode) else if (flags1 & RF1_DROP_GOOD) { p = _("上質な", " good"); -#ifndef JP +#ifdef JP +#else sin = FALSE; #endif } @@ -1701,7 +1718,8 @@ static void roff_aux(MONRACE_IDX r_idx, BIT_FLAGS mode) if (drop_item) { /* Handle singular "an" */ -#ifndef JP +#ifdef JP +#else if (sin) hooked_roff("n"); sin = FALSE; #endif @@ -1711,7 +1729,8 @@ static void roff_aux(MONRACE_IDX r_idx, BIT_FLAGS mode) hooked_roff( _("アイテム", " object")); -#ifndef JP +#ifdef JP +#else if (n != 1) hooked_roff("s"); #endif @@ -1722,7 +1741,8 @@ static void roff_aux(MONRACE_IDX r_idx, BIT_FLAGS mode) /* Treasures */ if (drop_gold) { -#ifndef JP +#ifdef JP +#else /* Cancel prefix */ if (!p) sin = FALSE; @@ -1734,7 +1754,8 @@ static void roff_aux(MONRACE_IDX r_idx, BIT_FLAGS mode) /* Dump "treasure(s)" */ if (p) hooked_roff(p); hooked_roff(_("財宝", " treasure")); -#ifndef JP +#ifdef JP +#else if (n != 1) hooked_roff("s"); #endif @@ -1780,30 +1801,30 @@ static void roff_aux(MONRACE_IDX r_idx, BIT_FLAGS mode) /* Acquire the method */ switch (method) { - case RBM_HIT: p = _("殴る", "hit"); break; - case RBM_TOUCH: p = _("触る", "touch"); break; - case RBM_PUNCH: p = _("パンチする", "punch"); break; - case RBM_KICK: p = _("蹴る", "kick"); break; - case RBM_CLAW: p = _("ひっかく", "claw"); break; - case RBM_BITE: p = _("噛む", "bite"); break; - case RBM_STING: p = _("刺す", "sting"); break; - case RBM_SLASH: p = _("斬る", "slash"); break; - case RBM_BUTT: p = _("角で突く", "butt"); break; - case RBM_CRUSH: p = _("体当たりする", "crush"); break; - case RBM_ENGULF: p = _("飲み込む", "engulf"); break; - case RBM_CHARGE: p = _("請求書をよこす", "charge"); break; - case RBM_CRAWL: p = _("体の上を這い回る", "crawl on you"); break; - case RBM_DROOL: p = _("よだれをたらす", "drool on you"); break; - case RBM_SPIT: p = _("つばを吐く", "spit"); break; - case RBM_EXPLODE: p = _("爆発する", "explode"); break; - case RBM_GAZE: p = _("にらむ", "gaze"); break; - case RBM_WAIL: p = _("泣き叫ぶ", "wail"); break; - case RBM_SPORE: p = _("胞子を飛ばす", "release spores"); break; - case RBM_XXX4: break; - case RBM_BEG: p = _("金をせがむ", "beg"); break; - case RBM_INSULT: p = _("侮辱する", "insult"); break; - case RBM_MOAN: p = _("うめく", "moan"); break; - case RBM_SHOW: p = _("歌う", "sing"); break; + case RBM_HIT: p = _("殴る", "hit"); break; + case RBM_TOUCH: p = _("触る", "touch"); break; + case RBM_PUNCH: p = _("パンチする", "punch"); break; + case RBM_KICK: p = _("蹴る", "kick"); break; + case RBM_CLAW: p = _("ひっかく", "claw"); break; + case RBM_BITE: p = _("噛む", "bite"); break; + case RBM_STING: p = _("刺す", "sting"); break; + case RBM_SLASH: p = _("斬る", "slash"); break; + case RBM_BUTT: p = _("角で突く", "butt"); break; + case RBM_CRUSH: p = _("体当たりする", "crush"); break; + case RBM_ENGULF: p = _("飲み込む", "engulf"); break; + case RBM_CHARGE: p = _("請求書をよこす", "charge"); break; + case RBM_CRAWL: p = _("体の上を這い回る", "crawl on you"); break; + case RBM_DROOL: p = _("よだれをたらす", "drool on you"); break; + case RBM_SPIT: p = _("つばを吐く", "spit"); break; + case RBM_EXPLODE: p = _("爆発する", "explode"); break; + case RBM_GAZE: p = _("にらむ", "gaze"); break; + case RBM_WAIL: p = _("泣き叫ぶ", "wail"); break; + case RBM_SPORE: p = _("胞子を飛ばす", "release spores"); break; + case RBM_XXX4: break; + case RBM_BEG: p = _("金をせがむ", "beg"); break; + case RBM_INSULT: p = _("侮辱する", "insult"); break; + case RBM_MOAN: p = _("うめく", "moan"); break; + case RBM_SHOW: p = _("歌う", "sing"); break; } @@ -1813,64 +1834,64 @@ static void roff_aux(MONRACE_IDX r_idx, BIT_FLAGS mode) /* Acquire the effect */ switch (effect) { - case RBE_SUPERHURT: q = _("強力に攻撃する", "slaughter"); break; - case RBE_HURT: q = _("攻撃する", "attack"); break; - case RBE_POISON: q = _("毒をくらわす", "poison"); break; - case RBE_UN_BONUS: q = _("劣化させる", "disenchant"); break; - case RBE_UN_POWER: q = _("充填魔力を吸収する", "drain charges"); break; - case RBE_EAT_GOLD: q = _("金を盗む", "steal gold"); break; - case RBE_EAT_ITEM: q = _("アイテムを盗む", "steal items"); break; - case RBE_EAT_FOOD: q = _("あなたの食料を食べる", "eat your food"); break; - case RBE_EAT_LITE: q = _("明かりを吸収する", "absorb light"); break; - case RBE_ACID: q = _("酸を飛ばす", "shoot acid"); break; - case RBE_ELEC: q = _("感電させる", "electrocute"); break; - case RBE_FIRE: q = _("燃やす", "burn"); break; - case RBE_COLD: q = _("凍らせる", "freeze"); break; - case RBE_BLIND: q = _("盲目にする", "blind"); break; - case RBE_CONFUSE: q = _("混乱させる", "confuse"); break; - case RBE_TERRIFY: q = _("恐怖させる", "terrify"); break; - case RBE_PARALYZE: q = _("麻痺させる", "paralyze"); break; - case RBE_LOSE_STR: q = _("腕力を減少させる", "reduce strength"); break; - case RBE_LOSE_INT: q = _("知能を減少させる", "reduce intelligence"); break; - case RBE_LOSE_WIS: q = _("賢さを減少させる", "reduce wisdom"); break; - case RBE_LOSE_DEX: q = _("器用さを減少させる", "reduce dexterity"); break; - case RBE_LOSE_CON: q = _("耐久力を減少させる", "reduce constitution"); break; - case RBE_LOSE_CHR: q = _("魅力を減少させる", "reduce charisma"); break; - case RBE_LOSE_ALL: q = _("全ステータスを減少させる", "reduce all stats"); break; - case RBE_SHATTER: q = _("粉砕する", "shatter"); break; - case RBE_EXP_10: q = _("経験値を減少(10d6+)させる", "lower experience (by 10d6+)"); break; - case RBE_EXP_20: q = _("経験値を減少(20d6+)させる", "lower experience (by 20d6+)"); break; - case RBE_EXP_40: q = _("経験値を減少(40d6+)させる", "lower experience (by 40d6+)"); break; - case RBE_EXP_80: q = _("経験値を減少(80d6+)させる", "lower experience (by 80d6+)"); break; - case RBE_DISEASE: q = _("病気にする", "disease"); break; - case RBE_TIME: q = _("時間を逆戻りさせる", "time"); break; - case RBE_DR_LIFE: q = _("生命力を吸収する", "drain life"); break; - case RBE_DR_MANA: q = _("魔力を奪う", "drain mana force"); break; - case RBE_INERTIA: q = _("減速させる", "slow"); break; - case RBE_STUN: q = _("朦朧とさせる", "stun"); break; + case RBE_SUPERHURT: q = _("強力に攻撃する", "slaughter"); break; + case RBE_HURT: q = _("攻撃する", "attack"); break; + case RBE_POISON: q = _("毒をくらわす", "poison"); break; + case RBE_UN_BONUS: q = _("劣化させる", "disenchant"); break; + case RBE_UN_POWER: q = _("充填魔力を吸収する", "drain charges"); break; + case RBE_EAT_GOLD: q = _("金を盗む", "steal gold"); break; + case RBE_EAT_ITEM: q = _("アイテムを盗む", "steal items"); break; + case RBE_EAT_FOOD: q = _("あなたの食料を食べる", "eat your food"); break; + case RBE_EAT_LITE: q = _("明かりを吸収する", "absorb light"); break; + case RBE_ACID: q = _("酸を飛ばす", "shoot acid"); break; + case RBE_ELEC: q = _("感電させる", "electrocute"); break; + case RBE_FIRE: q = _("燃やす", "burn"); break; + case RBE_COLD: q = _("凍らせる", "freeze"); break; + case RBE_BLIND: q = _("盲目にする", "blind"); break; + case RBE_CONFUSE: q = _("混乱させる", "confuse"); break; + case RBE_TERRIFY: q = _("恐怖させる", "terrify"); break; + case RBE_PARALYZE: q = _("麻痺させる", "paralyze"); break; + case RBE_LOSE_STR: q = _("腕力を減少させる", "reduce strength"); break; + case RBE_LOSE_INT: q = _("知能を減少させる", "reduce intelligence"); break; + case RBE_LOSE_WIS: q = _("賢さを減少させる", "reduce wisdom"); break; + case RBE_LOSE_DEX: q = _("器用さを減少させる", "reduce dexterity"); break; + case RBE_LOSE_CON: q = _("耐久力を減少させる", "reduce constitution"); break; + case RBE_LOSE_CHR: q = _("魅力を減少させる", "reduce charisma"); break; + case RBE_LOSE_ALL: q = _("全ステータスを減少させる", "reduce all stats"); break; + case RBE_SHATTER: q = _("粉砕する", "shatter"); break; + case RBE_EXP_10: q = _("経験値を減少(10d6+)させる", "lower experience (by 10d6+)"); break; + case RBE_EXP_20: q = _("経験値を減少(20d6+)させる", "lower experience (by 20d6+)"); break; + case RBE_EXP_40: q = _("経験値を減少(40d6+)させる", "lower experience (by 40d6+)"); break; + case RBE_EXP_80: q = _("経験値を減少(80d6+)させる", "lower experience (by 80d6+)"); break; + case RBE_DISEASE: q = _("病気にする", "disease"); break; + case RBE_TIME: q = _("時間を逆戻りさせる", "time"); break; + case RBE_DR_LIFE: q = _("生命力を吸収する", "drain life"); break; + case RBE_DR_MANA: q = _("魔力を奪う", "drain mana force"); break; + case RBE_INERTIA: q = _("減速させる", "slow"); break; + case RBE_STUN: q = _("朦朧とさせる", "stun"); break; } #ifdef JP - if ( r == 0 ) hooked_roff( format("%^sは", wd_he[msex]) ); + if (r == 0) hooked_roff(format("%^sは", wd_he[msex])); /***若干表現を変更 ita ***/ /* Describe damage (if known) */ if (d1 && d2 && (know_everything || know_damage(r_idx, m))) - { - - /* Display the damage */ - hooked_roff(format(" %dd%d ", d1, d2)); - hooked_roff("のダメージで"); - } + { + + /* Display the damage */ + hooked_roff(format(" %dd%d ", d1, d2)); + hooked_roff("のダメージで"); + } /* Hack -- force a method */ if (!p) p = "何か奇妙なことをする"; /* Describe the method */ /* XXしてYYし/XXしてYYする/XXし/XXする */ - if(q) jverb( p ,jverb_buf, JVERB_TO); - else if(r!=n-1) jverb( p ,jverb_buf, JVERB_AND); + if (q) jverb(p, jverb_buf, JVERB_TO); + else if (r != n - 1) jverb(p, jverb_buf, JVERB_AND); else strcpy(jverb_buf, p); hooked_roff(jverb_buf); @@ -1878,18 +1899,18 @@ static void roff_aux(MONRACE_IDX r_idx, BIT_FLAGS mode) /* Describe the effect (if any) */ if (q) { - if(r!=n-1) jverb( q,jverb_buf, JVERB_AND); - else strcpy(jverb_buf,q); - hooked_roff(jverb_buf); + if (r != n - 1) jverb(q, jverb_buf, JVERB_AND); + else strcpy(jverb_buf, q); + hooked_roff(jverb_buf); } - if(r!=n-1) hooked_roff("、"); + if (r != n - 1) hooked_roff("、"); #else /* Introduce the attack description */ if (!r) { hooked_roff(format("%^s can ", wd_he[msex])); } - else if (r < n-1) + else if (r < n - 1) { hooked_roff(", "); } @@ -1940,7 +1961,7 @@ static void roff_aux(MONRACE_IDX r_idx, BIT_FLAGS mode) { hooked_roff(format( _("%^sは物理的な攻撃方法を持たない。", - "%^s has no physical attacks. "), wd_he[msex])); + "%^s has no physical attacks. "), wd_he[msex])); } /* Or describe the lack of knowledge */ @@ -1948,7 +1969,7 @@ static void roff_aux(MONRACE_IDX r_idx, BIT_FLAGS mode) { hooked_roff(format( _("%s攻撃については何も知らない。", - "Nothing is known about %s attack. "), wd_his[msex])); + "Nothing is known about %s attack. "), wd_his[msex])); } @@ -1958,16 +1979,16 @@ static void roff_aux(MONRACE_IDX r_idx, BIT_FLAGS mode) */ if ((flags1 & RF1_QUESTOR) && ((r_ptr->r_sights) && (r_ptr->max_num) && ((r_idx == MON_OBERON) || (r_idx == MON_SERPENT)))) { - hook_c_roff(TERM_VIOLET, + hook_c_roff(TERM_VIOLET, _("あなたはこのモンスターを殺したいという強い欲望を感じている...", - "You feel an intense desire to kill this monster... ")); + "You feel an intense desire to kill this monster... ")); } else if (flags7 & RF7_GUARDIAN) { - hook_c_roff(TERM_L_RED, + hook_c_roff(TERM_L_RED, _("このモンスターはダンジョンの主である。", - "This monster is the master of a dungeon.")); + "This monster is the master of a dungeon.")); } @@ -2006,7 +2027,9 @@ void roff_top(MONRACE_IDX r_idx) /* Reset the cursor */ Term_gotoxy(0, 0); -#ifndef JP +#ifdef JP +#else + /* A title (use "The" for non-uniques) */ if (!(r_ptr->flags1 & RF1_UNIQUE)) { @@ -2028,7 +2051,7 @@ void roff_top(MONRACE_IDX r_idx) Term_addstr(-1, TERM_WHITE, "'):"); /* Wizards get extra info */ - if (p_ptr->wizard) + if (current_world_ptr->wizard) { char buf[16]; @@ -2049,7 +2072,7 @@ void roff_top(MONRACE_IDX r_idx) * @param mode 表示オプション * @return なし */ -void screen_roff(MONRACE_IDX r_idx, BIT_FLAGS mode) +void screen_roff(player_type *player_ptr, MONRACE_IDX r_idx, BIT_FLAGS mode) { msg_erase(); @@ -2059,7 +2082,7 @@ void screen_roff(MONRACE_IDX r_idx, BIT_FLAGS mode) hook_c_roff = c_roff; /* Recall monster */ - roff_aux(r_idx, mode); + roff_aux(player_ptr, r_idx, mode); /* Describe monster */ roff_top(r_idx); @@ -2074,8 +2097,9 @@ void screen_roff(MONRACE_IDX r_idx, BIT_FLAGS mode) * @param r_idx モンスターの種族ID * @return なし */ -void display_roff(MONRACE_IDX r_idx) +void display_roff(player_type *player_ptr) { + MONRACE_IDX r_idx = player_ptr->monster_race_idx; int y; /* Erase the window */ @@ -2091,7 +2115,7 @@ void display_roff(MONRACE_IDX r_idx) hook_c_roff = c_roff; /* Recall monster */ - roff_aux(r_idx, 0); + roff_aux(player_ptr, r_idx, 0); /* Describe monster */ roff_top(r_idx); @@ -2105,12 +2129,12 @@ void display_roff(MONRACE_IDX r_idx) * @param roff_func 出力処理を行う関数ポインタ * @return なし */ -void output_monster_spoiler(MONRACE_IDX r_idx, void (*roff_func)(TERM_COLOR attr, concptr str)) +void output_monster_spoiler(player_type *player_ptr, MONRACE_IDX r_idx, void(*roff_func)(TERM_COLOR attr, concptr str)) { hook_c_roff = roff_func; /* Recall monster */ - roff_aux(r_idx, 0x03); + roff_aux(player_ptr, r_idx, 0x03); } @@ -2119,11 +2143,11 @@ void output_monster_spoiler(MONRACE_IDX r_idx, void (*roff_func)(TERM_COLOR attr * @brief プレイヤーの現在の広域マップ座標から得た地勢を元にモンスターの生成条件関数を返す * @return 地勢にあったモンスターの生成条件関数 */ -monsterrace_hook_type get_monster_hook(void) +monsterrace_hook_type get_monster_hook(player_type *player_ptr) { - if (!current_floor_ptr->dun_level && !p_ptr->inside_quest) + if (!player_ptr->current_floor_ptr->dun_level && !player_ptr->current_floor_ptr->inside_quest) { - switch (wilderness[p_ptr->wilderness_y][p_ptr->wilderness_x].terrain) + switch (wilderness[player_ptr->wilderness_y][player_ptr->wilderness_x].terrain) { case TERRAIN_TOWN: return (monsterrace_hook_type)mon_hook_town; @@ -2158,9 +2182,9 @@ monsterrace_hook_type get_monster_hook(void) * @brief 指定された広域マップ座標の地勢を元にモンスターの生成条件関数を返す * @return 地勢にあったモンスターの生成条件関数 */ -monsterrace_hook_type get_monster_hook2(POSITION y, POSITION x) +monsterrace_hook_type get_monster_hook2(player_type *player_ptr, POSITION y, POSITION x) { - feature_type *f_ptr = &f_info[current_floor_ptr->grid_array[y][x].feat]; + feature_type *f_ptr = &f_info[player_ptr->current_floor_ptr->grid_array[y][x].feat]; /* Set the monster list */ @@ -2201,12 +2225,13 @@ void set_friendly(monster_type *m_ptr) /*! * @brief モンスターをペットにする + * @param player_type プレーヤーへの参照ポインタ * @param m_ptr モンスター情報構造体の参照ポインタ * @return なし */ -void set_pet(monster_type *m_ptr) +void set_pet(player_type *player_ptr, monster_type *m_ptr) { - check_quest_completion(m_ptr); + check_quest_completion(player_ptr, m_ptr); m_ptr->smart |= SM_PET; if (!(r_info[m_ptr->r_idx].flags3 & (RF3_EVIL | RF3_GOOD))) @@ -2221,7 +2246,7 @@ void set_pet(monster_type *m_ptr) */ void set_hostile(monster_type *m_ptr) { - if (p_ptr->inside_battle) return; + if (p_ptr->phase_out) return; m_ptr->smart &= ~SM_PET; m_ptr->smart &= ~SM_FRIENDLY; } @@ -2233,22 +2258,22 @@ void set_hostile(monster_type *m_ptr) * @param m_ptr モンスター情報構造体の参照ポインタ * @return なし */ -void anger_monster(monster_type *m_ptr) +void anger_monster(player_type *player_ptr, monster_type *m_ptr) { - if (p_ptr->inside_battle) return; + if (player_ptr->phase_out) return; if (is_friendly(m_ptr)) { GAME_TEXT m_name[MAX_NLEN]; - monster_desc(m_name, m_ptr, 0); + monster_desc(player_ptr, m_name, m_ptr, 0); msg_format(_("%^sは怒った!", "%^s gets angry!"), m_name); set_hostile(m_ptr); - chg_virtue(V_INDIVIDUALISM, 1); - chg_virtue(V_HONOUR, -1); - chg_virtue(V_JUSTICE, -1); - chg_virtue(V_COMPASSION, -1); + chg_virtue(player_ptr, V_INDIVIDUALISM, 1); + chg_virtue(player_ptr, V_HONOUR, -1); + chg_virtue(player_ptr, V_JUSTICE, -1); + chg_virtue(player_ptr, V_COMPASSION, -1); } } @@ -2351,10 +2376,10 @@ bool monster_can_cross_terrain(FEAT_IDX feat, monster_race *r_ptr, BIT_FLAGS16 m */ bool monster_can_enter(POSITION y, POSITION x, monster_race *r_ptr, BIT_FLAGS16 mode) { - grid_type *g_ptr = ¤t_floor_ptr->grid_array[y][x]; + grid_type *g_ptr = &p_ptr->current_floor_ptr->grid_array[y][x]; /* Player or other monster */ - if (player_bold(y, x)) return FALSE; + if (player_bold(p_ptr, y, x)) return FALSE; if (g_ptr->m_idx) return FALSE; return monster_can_cross_terrain(g_ptr->feat, r_ptr, mode); @@ -2394,14 +2419,14 @@ bool are_enemies(monster_type *m_ptr, monster_type *n_ptr) monster_race *r_ptr = &r_info[m_ptr->r_idx]; monster_race *s_ptr = &r_info[n_ptr->r_idx]; - if (p_ptr->inside_battle) + if (p_ptr->phase_out) { if (is_pet(m_ptr) || is_pet(n_ptr)) return FALSE; return TRUE; } if ((r_ptr->flags8 & (RF8_WILD_TOWN | RF8_WILD_ALL)) - && (s_ptr->flags8 & (RF8_WILD_TOWN | RF8_WILD_ALL))) + && (s_ptr->flags8 & (RF8_WILD_TOWN | RF8_WILD_ALL))) { if (!is_pet(m_ptr) && !is_pet(n_ptr)) return FALSE; } @@ -2503,7 +2528,7 @@ static OBJECT_SUBTYPE_VALUE get_coin_type(MONRACE_IDX r_idx) * it drops all of its objects, which may disappear in crowded rooms. * */ -void monster_death(MONSTER_IDX m_idx, bool drop_item) +void monster_death(player_type *player_ptr, MONSTER_IDX m_idx, bool drop_item) { int i, j; POSITION y, x; @@ -2512,10 +2537,11 @@ void monster_death(MONSTER_IDX m_idx, bool drop_item) int dump_gold = 0; int number = 0; - monster_type *m_ptr = ¤t_floor_ptr->m_list[m_idx]; + floor_type *floor_ptr = player_ptr->current_floor_ptr; + monster_type *m_ptr = &floor_ptr->m_list[m_idx]; monster_race *r_ptr = &r_info[m_ptr->r_idx]; - bool visible = ((m_ptr->ml && !p_ptr->image) || (r_ptr->flags1 & RF1_UNIQUE)); + bool visible = ((m_ptr->ml && !player_ptr->image) || (r_ptr->flags1 & RF1_UNIQUE)); u32b mo_mode = 0L; @@ -2527,8 +2553,8 @@ void monster_death(MONSTER_IDX m_idx, bool drop_item) object_type forge; object_type *q_ptr; - bool drop_chosen_item = drop_item && !cloned && !p_ptr->inside_arena - && !p_ptr->inside_battle && !is_pet(m_ptr); + bool drop_chosen_item = drop_item && !cloned && !floor_ptr->inside_arena + && !player_ptr->phase_out && !is_pet(m_ptr); /* The caster is dead? */ if (current_world_ptr->timewalk_m_idx && current_world_ptr->timewalk_m_idx == m_idx) current_world_ptr->timewalk_m_idx = 0; @@ -2536,7 +2562,7 @@ void monster_death(MONSTER_IDX m_idx, bool drop_item) /* Notice changes in view */ if (r_ptr->flags7 & (RF7_LITE_MASK | RF7_DARK_MASK)) { - p_ptr->update |= (PU_MON_LITE); + player_ptr->update |= (PU_MON_LITE); } y = m_ptr->fy; @@ -2546,8 +2572,8 @@ void monster_death(MONSTER_IDX m_idx, bool drop_item) { GAME_TEXT m_name[MAX_NLEN]; - monster_desc(m_name, m_ptr, MD_INDEF_VISIBLE); - do_cmd_write_nikki(NIKKI_NAMED_PET, 3, m_name); + monster_desc(player_ptr, m_name, m_ptr, MD_INDEF_VISIBLE); + exe_write_diary(player_ptr, DIARY_NAMED_PET, 3, m_name); } /* Let monsters explode! */ @@ -2561,25 +2587,25 @@ void monster_death(MONSTER_IDX m_idx, bool drop_item) 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); + project(player_ptr, m_idx, 3, y, x, damage, typ, flg, -1); break; } } if (m_ptr->mflag2 & MFLAG2_CHAMELEON) { - choose_new_monster(m_idx, TRUE, MON_CHAMELEON); + choose_new_monster(player_ptr, m_idx, TRUE, MON_CHAMELEON); r_ptr = &r_info[m_ptr->r_idx]; } - check_quest_completion(m_ptr); + check_quest_completion(player_ptr, m_ptr); /* Handle the possibility of player vanquishing arena combatant -KMW- */ - if (p_ptr->inside_arena && !is_pet(m_ptr)) + if (floor_ptr->inside_arena && !is_pet(m_ptr)) { - p_ptr->exit_bldg = TRUE; + player_ptr->exit_bldg = TRUE; - if (p_ptr->arena_number > MAX_ARENA_MONS) + if (player_ptr->arena_number > MAX_ARENA_MONS) { msg_print(_("素晴らしい!君こそ真の勝利者だ。", "You are a Genuine Champion!")); } @@ -2588,31 +2614,31 @@ void monster_death(MONSTER_IDX m_idx, bool drop_item) msg_print(_("勝利!チャンピオンへの道を進んでいる。", "Victorious! You're on your way to becoming Champion.")); } - if (arena_info[p_ptr->arena_number].tval) + if (arena_info[player_ptr->arena_number].tval) { q_ptr = &forge; /* Prepare to make a prize */ - object_prep(q_ptr, lookup_kind(arena_info[p_ptr->arena_number].tval, arena_info[p_ptr->arena_number].sval)); - apply_magic(q_ptr, current_floor_ptr->object_level, AM_NO_FIXED_ART); - (void)drop_near(q_ptr, -1, y, x); + object_prep(q_ptr, lookup_kind(arena_info[player_ptr->arena_number].tval, arena_info[player_ptr->arena_number].sval)); + apply_magic(player_ptr, q_ptr, floor_ptr->object_level, AM_NO_FIXED_ART); + (void)drop_near(player_ptr, q_ptr, -1, y, x); } - if (p_ptr->arena_number > MAX_ARENA_MONS) p_ptr->arena_number++; - p_ptr->arena_number++; + if (player_ptr->arena_number > MAX_ARENA_MONS) player_ptr->arena_number++; + player_ptr->arena_number++; if (record_arena) { GAME_TEXT m_name[MAX_NLEN]; - monster_desc(m_name, m_ptr, MD_WRONGDOER_NAME); + monster_desc(player_ptr, m_name, m_ptr, MD_WRONGDOER_NAME); - do_cmd_write_nikki(NIKKI_ARENA, p_ptr->arena_number, m_name); + exe_write_diary(player_ptr, DIARY_ARENA, player_ptr->arena_number, m_name); } } - if (m_idx == p_ptr->riding) + if (m_idx == player_ptr->riding) { - if (rakuba(-1, FALSE)) + if (rakuba(player_ptr, -1, FALSE)) { msg_print(_("地面に落とされた。", "You have fallen from your riding pet.")); } @@ -2621,7 +2647,7 @@ void monster_death(MONSTER_IDX m_idx, bool drop_item) /* Drop a dead corpse? */ if (one_in_(r_ptr->flags1 & RF1_UNIQUE ? 1 : 4) && (r_ptr->flags9 & (RF9_DROP_CORPSE | RF9_DROP_SKELETON)) && - !(p_ptr->inside_arena || p_ptr->inside_battle || cloned || ((m_ptr->r_idx == today_mon) && is_pet(m_ptr)))) + !(floor_ptr->inside_arena || player_ptr->phase_out || cloned || ((m_ptr->r_idx == today_mon) && is_pet(m_ptr)))) { /* Assume skeleton */ bool corpse = FALSE; @@ -2653,10 +2679,10 @@ void monster_death(MONSTER_IDX m_idx, bool drop_item) /* Prepare to make an object */ object_prep(q_ptr, lookup_kind(TV_CORPSE, (corpse ? SV_CORPSE : SV_SKELETON))); - apply_magic(q_ptr, current_floor_ptr->object_level, AM_NO_FIXED_ART); + apply_magic(player_ptr, q_ptr, floor_ptr->object_level, AM_NO_FIXED_ART); q_ptr->pval = m_ptr->r_idx; - (void)drop_near(q_ptr, -1, y, x); + (void)drop_near(player_ptr, q_ptr, -1, y, x); } /* Drop objects being carried */ @@ -2669,7 +2695,7 @@ void monster_death(MONSTER_IDX m_idx, bool drop_item) { case MON_PINK_HORROR: /* Pink horrors are replaced with 2 Blue horrors */ - if (!(p_ptr->inside_arena || p_ptr->inside_battle)) + if (!(floor_ptr->inside_arena || player_ptr->phase_out)) { bool notice = FALSE; @@ -2681,9 +2707,9 @@ void monster_death(MONSTER_IDX m_idx, bool drop_item) if (pet) mode |= PM_FORCE_PET; - if (summon_specific((pet ? -1 : m_idx), wy, wx, 100, SUMMON_BLUE_HORROR, mode, '\0')) + if (summon_specific(player_ptr, (pet ? -1 : m_idx), wy, wx, 100, SUMMON_BLUE_HORROR, mode)) { - if (player_can_see_bold(wy, wx)) notice = TRUE; + if (player_can_see_bold(player_ptr, wy, wx)) notice = TRUE; } } @@ -2700,26 +2726,26 @@ void monster_death(MONSTER_IDX m_idx, bool drop_item) /* Prepare to make a Blade of Chaos */ object_prep(q_ptr, lookup_kind(TV_SWORD, SV_BLADE_OF_CHAOS)); - apply_magic(q_ptr, current_floor_ptr->object_level, AM_NO_FIXED_ART | mo_mode); - (void)drop_near(q_ptr, -1, y, x); + apply_magic(player_ptr, q_ptr, floor_ptr->object_level, AM_NO_FIXED_ART | mo_mode); + (void)drop_near(player_ptr, q_ptr, -1, y, x); } break; case MON_RAAL: - if (drop_chosen_item && (current_floor_ptr->dun_level > 9)) + if (drop_chosen_item && (floor_ptr->dun_level > 9)) { q_ptr = &forge; object_wipe(q_ptr); /* Activate restriction */ - if ((current_floor_ptr->dun_level > 49) && one_in_(5)) + if ((floor_ptr->dun_level > 49) && one_in_(5)) get_obj_num_hook = kind_is_good_book; else get_obj_num_hook = kind_is_book; /* Make a book */ - make_object(q_ptr, mo_mode); - (void)drop_near(q_ptr, -1, y, x); + make_object(player_ptr, q_ptr, mo_mode); + (void)drop_near(player_ptr, q_ptr, -1, y, x); } break; @@ -2728,7 +2754,7 @@ void monster_death(MONSTER_IDX m_idx, bool drop_item) * Mega^3-hack: killing a 'Warrior of the Dawn' is likely to * spawn another in the fallen one's place! */ - if (!p_ptr->inside_arena && !p_ptr->inside_battle) + if (!floor_ptr->inside_arena && !player_ptr->phase_out) { if (!one_in_(7)) { @@ -2738,17 +2764,17 @@ void monster_death(MONSTER_IDX m_idx, bool drop_item) do { - scatter(&wy, &wx, y, x, 20, 0); - } while (!(in_bounds(wy, wx) && cave_empty_bold2(wy, wx)) && --attempts); + scatter(player_ptr, &wy, &wx, y, x, 20, 0); + } while (!(in_bounds(floor_ptr, wy, wx) && cave_empty_bold2(floor_ptr, wy, wx)) && --attempts); if (attempts > 0) { BIT_FLAGS mode = 0L; if (pet) mode |= PM_FORCE_PET; - if (summon_specific((pet ? -1 : m_idx), wy, wx, 100, SUMMON_DAWN, mode, '\0')) + if (summon_specific(player_ptr, (pet ? -1 : m_idx), wy, wx, 100, SUMMON_DAWN, mode)) { - if (player_can_see_bold(wy, wx)) + if (player_can_see_bold(player_ptr, wy, wx)) msg_print(_("新たな戦士が現れた!", "A new warrior steps forth!")); } } @@ -2760,7 +2786,7 @@ void monster_death(MONSTER_IDX m_idx, bool drop_item) /* One more ultra-hack: An Unmaker goes out with a big bang! */ { BIT_FLAGS flg = PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL; - (void)project(m_idx, 6, y, x, 100, GF_CHAOS, flg, -1); + (void)project(player_ptr, m_idx, 6, y, x, 100, GF_CHAOS, flg, -1); } break; @@ -2768,7 +2794,7 @@ void monster_death(MONSTER_IDX m_idx, bool drop_item) case MON_MORGOTH: case MON_ONE_RING: /* Reward for "lazy" player */ - if (p_ptr->pseikaku == SEIKAKU_NAMAKE) + if (player_ptr->pseikaku == SEIKAKU_NAMAKE) { ARTIFACT_IDX a_idx = 0; artifact_type *a_ptr = NULL; @@ -2793,12 +2819,12 @@ void monster_death(MONSTER_IDX m_idx, bool drop_item) a_ptr = &a_info[a_idx]; } while (a_ptr->cur_num); - if (create_named_art(a_idx, y, x)) + if (create_named_art(player_ptr, a_idx, y, x)) { a_ptr->cur_num = 1; /* Hack -- Memorize location of artifact in saved floors */ - if (character_dungeon) a_ptr->floor_id = p_ptr->floor_id; + if (current_world_ptr->character_dungeon) a_ptr->floor_id = player_ptr->floor_id; } else if (!preserve_mode) a_ptr->cur_num = 1; } @@ -2815,8 +2841,8 @@ void monster_death(MONSTER_IDX m_idx, bool drop_item) q_ptr->name1 = ART_GROND; /* Mega-Hack -- Actually create "Grond" */ - apply_magic(q_ptr, -1, AM_GOOD | AM_GREAT); - (void)drop_near(q_ptr, -1, y, x); + apply_magic(player_ptr, q_ptr, -1, AM_GOOD | AM_GREAT); + (void)drop_near(player_ptr, q_ptr, -1, y, x); q_ptr = &forge; /* Mega-Hack -- Prepare to make "Chaos" */ @@ -2826,8 +2852,8 @@ void monster_death(MONSTER_IDX m_idx, bool drop_item) q_ptr->name1 = ART_CHAOS; /* Mega-Hack -- Actually create "Chaos" */ - apply_magic(q_ptr, -1, AM_GOOD | AM_GREAT); - (void)drop_near(q_ptr, -1, y, x); + apply_magic(player_ptr, q_ptr, -1, AM_GOOD | AM_GREAT); + (void)drop_near(player_ptr, q_ptr, -1, y, x); break; case MON_B_DEATH_SWORD: @@ -2837,7 +2863,7 @@ void monster_death(MONSTER_IDX m_idx, bool drop_item) /* Prepare to make a broken sword */ object_prep(q_ptr, lookup_kind(TV_SWORD, randint1(2))); - (void)drop_near(q_ptr, -1, y, x); + (void)drop_near(player_ptr, q_ptr, -1, y, x); } break; @@ -2851,15 +2877,15 @@ void monster_death(MONSTER_IDX m_idx, bool drop_item) /* Prepare to make a Can of Toys */ object_prep(q_ptr, lookup_kind(TV_CHEST, SV_CHEST_KANDUME)); - apply_magic(q_ptr, current_floor_ptr->object_level, AM_NO_FIXED_ART); - (void)drop_near(q_ptr, -1, y, x); + apply_magic(player_ptr, q_ptr, floor_ptr->object_level, AM_NO_FIXED_ART); + (void)drop_near(player_ptr, q_ptr, -1, y, x); } break; case MON_ROLENTO: { BIT_FLAGS flg = PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL; - (void)project(m_idx, 3, y, x, damroll(20, 10), GF_FIRE, flg, -1); + (void)project(player_ptr, m_idx, 3, y, x, damroll(20, 10), GF_FIRE, flg, -1); } break; @@ -2869,7 +2895,7 @@ void monster_death(MONSTER_IDX m_idx, bool drop_item) switch (r_ptr->d_char) { case '(': - if (current_floor_ptr->dun_level > 0) + if (floor_ptr->dun_level > 0) { q_ptr = &forge; object_wipe(q_ptr); @@ -2878,13 +2904,13 @@ void monster_death(MONSTER_IDX m_idx, bool drop_item) get_obj_num_hook = kind_is_cloak; /* Make a cloak */ - make_object(q_ptr, mo_mode); - (void)drop_near(q_ptr, -1, y, x); + make_object(player_ptr, q_ptr, mo_mode); + (void)drop_near(player_ptr, q_ptr, -1, y, x); } break; case '/': - if (current_floor_ptr->dun_level > 4) + if (floor_ptr->dun_level > 4) { q_ptr = &forge; object_wipe(q_ptr); @@ -2893,13 +2919,13 @@ void monster_death(MONSTER_IDX m_idx, bool drop_item) get_obj_num_hook = kind_is_polearm; /* Make a poleweapon */ - make_object(q_ptr, mo_mode); - (void)drop_near(q_ptr, -1, y, x); + make_object(player_ptr, q_ptr, mo_mode); + (void)drop_near(player_ptr, q_ptr, -1, y, x); } break; case '[': - if (current_floor_ptr->dun_level > 19) + if (floor_ptr->dun_level > 19) { q_ptr = &forge; object_wipe(q_ptr); @@ -2908,13 +2934,13 @@ void monster_death(MONSTER_IDX m_idx, bool drop_item) get_obj_num_hook = kind_is_armor; /* Make a hard armor */ - make_object(q_ptr, mo_mode); - (void)drop_near(q_ptr, -1, y, x); + make_object(player_ptr, q_ptr, mo_mode); + (void)drop_near(player_ptr, q_ptr, -1, y, x); } break; case '\\': - if (current_floor_ptr->dun_level > 4) + if (floor_ptr->dun_level > 4) { q_ptr = &forge; object_wipe(q_ptr); @@ -2923,8 +2949,8 @@ void monster_death(MONSTER_IDX m_idx, bool drop_item) get_obj_num_hook = kind_is_hafted; /* Make a hafted weapon */ - make_object(q_ptr, mo_mode); - (void)drop_near(q_ptr, -1, y, x); + make_object(player_ptr, q_ptr, mo_mode); + (void)drop_near(player_ptr, q_ptr, -1, y, x); } break; @@ -2938,8 +2964,8 @@ void monster_death(MONSTER_IDX m_idx, bool drop_item) get_obj_num_hook = kind_is_sword; /* Make a sword */ - make_object(q_ptr, mo_mode); - (void)drop_near(q_ptr, -1, y, x); + make_object(player_ptr, q_ptr, mo_mode); + (void)drop_near(player_ptr, q_ptr, -1, y, x); } break; } @@ -2959,46 +2985,46 @@ void monster_death(MONSTER_IDX m_idx, bool drop_item) chance = r_ptr->artifact_percent[i]; } - if ((a_idx > 0) && ((randint0(100) < chance) || p_ptr->wizard)) + if ((a_idx > 0) && ((randint0(100) < chance) || current_world_ptr->wizard)) { artifact_type *a_ptr = &a_info[a_idx]; if (!a_ptr->cur_num) { - if (create_named_art(a_idx, y, x)) + if (create_named_art(player_ptr, a_idx, y, x)) { a_ptr->cur_num = 1; /* Hack -- Memorize location of artifact in saved floors */ - if (character_dungeon) a_ptr->floor_id = p_ptr->floor_id; + if (current_world_ptr->character_dungeon) a_ptr->floor_id = player_ptr->floor_id; } else if (!preserve_mode) a_ptr->cur_num = 1; } } - if ((r_ptr->flags7 & RF7_GUARDIAN) && (d_info[p_ptr->dungeon_idx].final_guardian == m_ptr->r_idx)) + if ((r_ptr->flags7 & RF7_GUARDIAN) && (d_info[player_ptr->dungeon_idx].final_guardian == m_ptr->r_idx)) { - KIND_OBJECT_IDX k_idx = d_info[p_ptr->dungeon_idx].final_object ? d_info[p_ptr->dungeon_idx].final_object + KIND_OBJECT_IDX k_idx = d_info[player_ptr->dungeon_idx].final_object ? d_info[player_ptr->dungeon_idx].final_object : lookup_kind(TV_SCROLL, SV_SCROLL_ACQUIREMENT); - if (d_info[p_ptr->dungeon_idx].final_artifact) + if (d_info[player_ptr->dungeon_idx].final_artifact) { - a_idx = d_info[p_ptr->dungeon_idx].final_artifact; + a_idx = d_info[player_ptr->dungeon_idx].final_artifact; artifact_type *a_ptr = &a_info[a_idx]; if (!a_ptr->cur_num) { - if (create_named_art(a_idx, y, x)) + if (create_named_art(player_ptr, a_idx, y, x)) { a_ptr->cur_num = 1; /* Hack -- Memorize location of artifact in saved floors */ - if (character_dungeon) a_ptr->floor_id = p_ptr->floor_id; + if (current_world_ptr->character_dungeon) a_ptr->floor_id = player_ptr->floor_id; } else if (!preserve_mode) a_ptr->cur_num = 1; /* Prevent rewarding both artifact and "default" object */ - if (!d_info[p_ptr->dungeon_idx].final_object) k_idx = 0; + if (!d_info[player_ptr->dungeon_idx].final_object) k_idx = 0; } } @@ -3009,10 +3035,10 @@ void monster_death(MONSTER_IDX m_idx, bool drop_item) /* Prepare to make a reward */ object_prep(q_ptr, k_idx); - apply_magic(q_ptr, current_floor_ptr->object_level, AM_NO_FIXED_ART | AM_GOOD); - (void)drop_near(q_ptr, -1, y, x); + apply_magic(player_ptr, q_ptr, floor_ptr->object_level, AM_NO_FIXED_ART | AM_GOOD); + (void)drop_near(player_ptr, q_ptr, -1, y, x); } - msg_format(_("あなたは%sを制覇した!", "You have conquered %s!"), d_name + d_info[p_ptr->dungeon_idx].name); + msg_format(_("あなたは%sを制覇した!", "You have conquered %s!"), d_name + d_info[player_ptr->dungeon_idx].name); } } @@ -3027,7 +3053,7 @@ void monster_death(MONSTER_IDX m_idx, bool drop_item) if (cloned && !(r_ptr->flags1 & RF1_UNIQUE)) number = 0; /* Clones drop no stuff unless Cloning Pits */ - if (is_pet(m_ptr) || p_ptr->inside_battle || p_ptr->inside_arena) + if (is_pet(m_ptr) || player_ptr->phase_out || floor_ptr->inside_arena) number = 0; /* Pets drop no stuff */ if (!drop_item && (r_ptr->d_char != '$')) number = 0; @@ -3038,7 +3064,7 @@ void monster_death(MONSTER_IDX m_idx, bool drop_item) coin_type = force_coin; /* Average dungeon and monster levels */ - current_floor_ptr->object_level = (current_floor_ptr->dun_level + r_ptr->level) / 2; + floor_ptr->object_level = (floor_ptr->dun_level + r_ptr->level) / 2; /* Drop some objects */ for (j = 0; j < number; j++) @@ -3048,19 +3074,20 @@ void monster_death(MONSTER_IDX m_idx, bool drop_item) if (do_gold && (!do_item || (randint0(100) < 50))) { - if (!make_gold(q_ptr)) continue; + if (!make_gold(floor_ptr, q_ptr)) continue; dump_gold++; } else { - if (!make_object(q_ptr, mo_mode)) continue; + if (!make_object(player_ptr, q_ptr, mo_mode)) continue; dump_item++; } - (void)drop_near(q_ptr, -1, y, x); + + (void)drop_near(player_ptr, q_ptr, -1, y, x); } /* Reset the object level */ - current_floor_ptr->object_level = current_floor_ptr->base_level; + floor_ptr->object_level = floor_ptr->base_level; /* Reset "coin" type */ coin_type = 0; @@ -3075,22 +3102,22 @@ void monster_death(MONSTER_IDX m_idx, bool drop_item) /* Only process "Quest Monsters" */ if (!(r_ptr->flags1 & RF1_QUESTOR)) return; - if (p_ptr->inside_battle) return; + if (player_ptr->phase_out) return; /* Winner? */ if ((m_ptr->r_idx == MON_SERPENT) && !cloned) { /* Total winner */ - p_ptr->total_winner = TRUE; + current_world_ptr->total_winner = TRUE; /* Redraw the "title" */ - p_ptr->redraw |= (PR_TITLE); + player_ptr->redraw |= (PR_TITLE); play_music(TERM_XTRA_MUSIC_BASIC, MUSIC_BASIC_FINAL_QUEST_CLEAR); - do_cmd_write_nikki(NIKKI_BUNSHOU, 0, _("見事に変愚蛮怒の勝利者となった!", "become *WINNER* of Hengband finely!")); + exe_write_diary(player_ptr, DIARY_DESCRIPTION, 0, _("見事に変愚蛮怒の勝利者となった!", "become *WINNER* of Hengband finely!")); - admire_from_patron(p_ptr); + admire_from_patron(player_ptr); /* Congratulations */ msg_print(_("*** おめでとう ***", "*** CONGRATULATIONS ***")); @@ -3108,22 +3135,17 @@ void monster_death(MONSTER_IDX m_idx, bool drop_item) concptr extract_note_dies(MONRACE_IDX r_idx) { monster_race *r_ptr = &r_info[r_idx]; - /* Some monsters get "destroyed" */ - if (!monster_living(r_idx)) - { - int i; + if (monster_living(r_idx)) return _("は死んだ。", " dies."); - for (i = 0; i < 4; i++) + for (int i = 0; i < 4; i++) + { + if (r_ptr->blow[i].method == RBM_EXPLODE) { - if (r_ptr->blow[i].method == RBM_EXPLODE) - { - return _("は爆発して粉々になった。", " explodes into tiny shreds."); - } + return _("は爆発して粉々になった。", " explodes into tiny shreds."); } - return _("を倒した。", " is destroyed."); } - return _("は死んだ。", " dies."); + return _("を倒した。", " is destroyed."); } /* @@ -3210,4 +3232,3 @@ concptr look_mon_desc(monster_type *m_ptr, BIT_FLAGS mode) } } -