OSDN Git Service

[Refactor] #40014 Separated display_monster_collective() from from process_monster_lo...
authorHourier <hourier@users.sourceforge.jp>
Fri, 12 Jun 2020 10:07:41 +0000 (19:07 +0900)
committerHourier <hourier@users.sourceforge.jp>
Fri, 12 Jun 2020 10:07:41 +0000 (19:07 +0900)
src/lore/monster-lore.c
src/view/display-lore.c
src/view/display-lore.h

index 4993067..c0c4522 100644 (file)
@@ -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];
index 6509539..f37395c 100644 (file)
@@ -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]));
+    }
+}
index 5f1178b..8bf598a 100644 (file)
@@ -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);