lore_type *initialize_lore_type(lore_type *lore_ptr, MONRACE_IDX r_idx, BIT_FLAGS mode)
{
+ lore_ptr->r_idx = r_idx;
lore_ptr->nightmare = ironman_nightmare && !(mode & 0x02);
lore_ptr->r_ptr = &r_info[r_idx];
lore_ptr->speed = lore_ptr->nightmare ? lore_ptr->r_ptr->speed + 5 : lore_ptr->r_ptr->speed;
lore_ptr->reinforce = FALSE;
lore_ptr->know_everything = FALSE;
lore_ptr->mode = mode;
+ lore_ptr->old = FALSE;
return lore_ptr;
}
bool know_everything;
BIT_FLAGS mode;
monster_sex msex;
+ bool old;
+ MONRACE_IDX r_idx;
} lore_type;
typedef void (*hook_c_roff_pf)(TERM_COLOR attr, concptr str);
return;
}
- bool old = FALSE;
- if (lore_ptr->r_ptr->level == 0) {
- hooked_roff(format(_("%^sは町に住み", "%^s lives in the town"), wd_he[lore_ptr->msex]));
- old = TRUE;
- } else if (lore_ptr->r_ptr->r_tkills || lore_ptr->know_everything) {
- if (depth_in_feet) {
- hooked_roff(format(
- _("%^sは通常地下 %d フィートで出現し", "%^s is normally found at depths of %d feet"), wd_he[lore_ptr->msex], lore_ptr->r_ptr->level * 50));
- } else {
- hooked_roff(format(_("%^sは通常地下 %d 階で出現し", "%^s is normally found on dungeon level %d"), wd_he[lore_ptr->msex], lore_ptr->r_ptr->level));
- }
-
- old = TRUE;
- }
-
- if (r_idx == MON_CHAMELEON) {
- hooked_roff(_("、他のモンスターに化ける。", "and can take the shape of other monster."));
+ if (!display_where_to_appear(lore_ptr))
return;
- }
-
- if (old) {
- hooked_roff(_("、", ", and "));
- } else {
- hooked_roff(format(_("%^sは", "%^s "), wd_he[lore_ptr->msex]));
- old = TRUE;
- }
#ifdef JP
#else
#endif
if (lore_ptr->flags1 & RF1_NEVER_MOVE) {
- if (old) {
+ if (lore_ptr->old) {
hooked_roff(_("、しかし", ", but "));
} else {
hooked_roff(format(_("%^sは", "%^s "), wd_he[lore_ptr->msex]));
- old = TRUE;
+ lore_ptr->old = TRUE;
}
hooked_roff(_("侵入者を追跡しない", "does not deign to chase intruders"));
}
- if (old) {
+ if (lore_ptr->old) {
hooked_roff(_("。", ". "));
- old = FALSE;
+ lore_ptr->old = FALSE;
}
if (lore_ptr->r_ptr->r_tkills || lore_ptr->know_everything) {
#include "view/display-monster-lore.h"
#include "lore/monster-lore.h"
#include "monster-race/race-flags1.h"
+#include "monster-race/race-indice-types.h"
#include "term/term-color-types.h"
#include "world/world.h"
hooked_roff("\n");
}
+
+/*!
+ * @brief どこに出没するかを表示する
+ * @param lore_ptr モンスターの思い出構造体への参照ポインタ
+ * @return たぬきならFALSE、それ以外はTRUE
+ */
+bool display_where_to_appear(lore_type *lore_ptr)
+{
+ lore_ptr->old = FALSE;
+ if (lore_ptr->r_ptr->level == 0) {
+ hooked_roff(format(_("%^sは町に住み", "%^s lives in the town"), wd_he[lore_ptr->msex]));
+ lore_ptr->old = TRUE;
+ } else if (lore_ptr->r_ptr->r_tkills || lore_ptr->know_everything) {
+ if (depth_in_feet) {
+ hooked_roff(format(
+ _("%^sは通常地下 %d フィートで出現し", "%^s is normally found at depths of %d feet"), wd_he[lore_ptr->msex], lore_ptr->r_ptr->level * 50));
+ } else {
+ hooked_roff(format(_("%^sは通常地下 %d 階で出現し", "%^s is normally found on dungeon level %d"), wd_he[lore_ptr->msex], lore_ptr->r_ptr->level));
+ }
+
+ lore_ptr->old = TRUE;
+ }
+
+ if (lore_ptr->r_idx == MON_CHAMELEON) {
+ hooked_roff(_("、他のモンスターに化ける。", "and can take the shape of other monster."));
+ return FALSE;
+ }
+
+ if (lore_ptr->old) {
+ hooked_roff(_("、", ", and "));
+ } else {
+ hooked_roff(format(_("%^sは", "%^s "), wd_he[lore_ptr->msex]));
+ lore_ptr->old = TRUE;
+ }
+
+ return TRUE;
+}
void display_roff(player_type *player_ptr);
void output_monster_spoiler(player_type *player_ptr, MONRACE_IDX r_idx, void (*roff_func)(TERM_COLOR attr, concptr str));
void display_kill_numbers(lore_type *lore_ptr);
+bool display_where_to_appear(lore_type *lore_ptr);