From 26a55cf7bce462df1d2031ba2c0555c1264b6e2e Mon Sep 17 00:00:00 2001 From: Hourier Date: Fri, 12 Jun 2020 19:07:41 +0900 Subject: [PATCH] [Refactor] #40014 Separated display_monster_collective() from from process_monster_lore(); let's draw a world map with your shredded finger! --- src/lore/monster-lore.c | 45 +---------------------------------------- src/view/display-lore.c | 54 +++++++++++++++++++++++++++++++++++++++++++++++++ src/view/display-lore.h | 1 + 3 files changed, 56 insertions(+), 44 deletions(-) diff --git a/src/lore/monster-lore.c b/src/lore/monster-lore.c index 49930675f..c0c452229 100644 --- a/src/lore/monster-lore.c +++ b/src/lore/monster-lore.c @@ -313,50 +313,7 @@ void process_monster_lore(player_type *player_ptr, MONRACE_IDX r_idx, BIT_FLAGS if (lore_ptr->flags2 & RF2_REFLECTING) hooked_roff(format(_("%^sは矢の呪文を跳ね返す。", "%^s reflects bolt spells. "), wd_he[lore_ptr->msex])); - if ((lore_ptr->flags1 & RF1_ESCORT) || (lore_ptr->flags1 & RF1_ESCORTS) || lore_ptr->reinforce) { - hooked_roff(format(_("%^sは通常護衛を伴って現れる。", "%^s usually appears with escorts. "), wd_he[lore_ptr->msex])); - - if (lore_ptr->reinforce) { - hooked_roff(_("護衛の構成は", "These escorts")); - if ((lore_ptr->flags1 & RF1_ESCORT) || (lore_ptr->flags1 & RF1_ESCORTS)) { - hooked_roff(_("少なくとも", " at the least")); - } -#ifdef JP -#else - hooked_roff(" contain "); -#endif - for (int n = 0; n < A_MAX; n++) { - bool is_reinforced = lore_ptr->r_ptr->reinforce_id[n] > 0; - is_reinforced &= lore_ptr->r_ptr->reinforce_dd[n] > 0; - is_reinforced &= lore_ptr->r_ptr->reinforce_ds[n] > 0; - if (!is_reinforced) - continue; - - monster_race *rf_ptr = &r_info[lore_ptr->r_ptr->reinforce_id[n]]; - if (rf_ptr->flags1 & RF1_UNIQUE) { - hooked_roff(format(_("、%s", ", %s"), r_name + rf_ptr->name)); - continue; - } - -#ifdef JP - hooked_roff(format("、 %dd%d 体の%s", lore_ptr->r_ptr->reinforce_dd[n], lore_ptr->r_ptr->reinforce_ds[n], r_name + rf_ptr->name)); -#else - bool plural = (lore_ptr->r_ptr->reinforce_dd[n] * lore_ptr->r_ptr->reinforce_ds[n] > 1); - GAME_TEXT name[MAX_NLEN]; - strcpy(name, r_name + rf_ptr->name); - if (plural) - plural_aux(name); - hooked_roff(format(",%dd%d %s", lore_ptr->r_ptr->reinforce_dd[n], lore_ptr->r_ptr->reinforce_ds[n], name)); -#endif - } - - hooked_roff(_("で成り立っている。", ".")); - } - } - else if (lore_ptr->flags1 & RF1_FRIENDS) { - hooked_roff(format(_("%^sは通常集団で現れる。", "%^s usually appears in groups. "), wd_he[lore_ptr->msex])); - } - + display_monster_collective(lore_ptr); int vn = 0; byte color[96]; concptr vp[96]; diff --git a/src/view/display-lore.c b/src/view/display-lore.c index 650953992..f37395c55 100644 --- a/src/view/display-lore.c +++ b/src/view/display-lore.c @@ -415,3 +415,57 @@ void display_lore_this(player_type *player_ptr, lore_type *lore_ptr) display_monster_kind(lore_ptr); display_monster_exp(player_ptr, lore_ptr); } + +static void display_monster_escort_contents(lore_type *lore_ptr) +{ + if (!lore_ptr->reinforce) + return; + + hooked_roff(_("護衛の構成は", "These escorts")); + if ((lore_ptr->flags1 & RF1_ESCORT) || (lore_ptr->flags1 & RF1_ESCORTS)) { + hooked_roff(_("少なくとも", " at the least")); + } + +#ifdef JP +#else + hooked_roff(" contain "); +#endif + + for (int n = 0; n < A_MAX; n++) { + bool is_reinforced = lore_ptr->r_ptr->reinforce_id[n] > 0; + is_reinforced &= lore_ptr->r_ptr->reinforce_dd[n] > 0; + is_reinforced &= lore_ptr->r_ptr->reinforce_ds[n] > 0; + if (!is_reinforced) + continue; + + monster_race *rf_ptr = &r_info[lore_ptr->r_ptr->reinforce_id[n]]; + if (rf_ptr->flags1 & RF1_UNIQUE) { + hooked_roff(format(_("、%s", ", %s"), r_name + rf_ptr->name)); + continue; + } + +#ifdef JP + hooked_roff(format("、 %dd%d 体の%s", lore_ptr->r_ptr->reinforce_dd[n], lore_ptr->r_ptr->reinforce_ds[n], r_name + rf_ptr->name)); +#else + bool plural = (lore_ptr->r_ptr->reinforce_dd[n] * lore_ptr->r_ptr->reinforce_ds[n] > 1); + GAME_TEXT name[MAX_NLEN]; + strcpy(name, r_name + rf_ptr->name); + if (plural) + plural_aux(name); + hooked_roff(format(",%dd%d %s", lore_ptr->r_ptr->reinforce_dd[n], lore_ptr->r_ptr->reinforce_ds[n], name)); +#endif + } + + hooked_roff(_("で成り立っている。", ".")); +} + +void display_monster_collective(lore_type *lore_ptr) +{ + if ((lore_ptr->flags1 & RF1_ESCORT) || (lore_ptr->flags1 & RF1_ESCORTS) || lore_ptr->reinforce) { + hooked_roff(format(_("%^sは通常護衛を伴って現れる。", "%^s usually appears with escorts. "), wd_he[lore_ptr->msex])); + display_monster_escort_contents(lore_ptr); + } + else if (lore_ptr->flags1 & RF1_FRIENDS) { + hooked_roff(format(_("%^sは通常集団で現れる。", "%^s usually appears in groups. "), wd_he[lore_ptr->msex])); + } +} diff --git a/src/view/display-lore.h b/src/view/display-lore.h index 5f1178bde..8bf598a77 100644 --- a/src/view/display-lore.h +++ b/src/view/display-lore.h @@ -17,3 +17,4 @@ void display_monster_alignment(lore_type *lore_ptr); void display_monster_exp(player_type *player_ptr, lore_type *lore_ptr); void display_monster_aura(lore_type *lore_ptr); void display_lore_this(player_type *player_ptr, lore_type *lore_ptr); +void display_monster_collective(lore_type *lore_ptr); -- 2.11.0