OSDN Git Service

[Refactor] #40014 Separated display_monster_evolution() and display_monster_immunitie...
authorHourier <hourier@users.sourceforge.jp>
Fri, 12 Jun 2020 12:50:24 +0000 (21:50 +0900)
committerHourier <hourier@users.sourceforge.jp>
Fri, 12 Jun 2020 12:50:44 +0000 (21:50 +0900)
src/lore/monster-lore.c
src/view/display-lore-status.c
src/view/display-lore-status.h

index f51b4e9..e301747 100644 (file)
@@ -212,59 +212,11 @@ void process_monster_lore(player_type *player_ptr, MONRACE_IDX r_idx, BIT_FLAGS
     lore_ptr->vn = 0;
     display_monster_concrete_resistances(lore_ptr);
     display_monster_resistances(lore_ptr);
-    if ((lore_ptr->r_ptr->r_xtra1 & MR1_EVOLUTION) || lore_ptr->know_everything) {
-        if (lore_ptr->r_ptr->next_r_idx) {
-            hooked_roff(format(_("%^sは経験を積むと、", "%^s will evolve into "), wd_he[lore_ptr->msex]));
-            hook_c_roff(TERM_YELLOW, format("%s", r_name + r_info[lore_ptr->r_ptr->next_r_idx].name));
-
-            hooked_roff(_(format("に進化する。"), format(" when %s gets enough experience.  ", wd_he[lore_ptr->msex])));
-        } else if (!(lore_ptr->r_ptr->flags1 & RF1_UNIQUE)) {
-            hooked_roff(format(_("%sは進化しない。", "%s won't evolve.  "), wd_he[lore_ptr->msex]));
-        }
-    }
+    display_monster_evolution(lore_ptr);
 
     lore_ptr->vn = 0;
-    if (lore_ptr->flags3 & RF3_NO_STUN) {
-        lore_ptr->vp[lore_ptr->vn] = _("朦朧としない", "stunned");
-        lore_ptr->color[lore_ptr->vn++] = TERM_ORANGE;
-    }
-    if (lore_ptr->flags3 & RF3_NO_FEAR) {
-        lore_ptr->vp[lore_ptr->vn] = _("恐怖を感じない", "frightened");
-        lore_ptr->color[lore_ptr->vn++] = TERM_SLATE;
-    }
-    if (lore_ptr->flags3 & RF3_NO_CONF) {
-        lore_ptr->vp[lore_ptr->vn] = _("混乱しない", "confused");
-        lore_ptr->color[lore_ptr->vn++] = TERM_L_UMBER;
-    }
-    if (lore_ptr->flags3 & RF3_NO_SLEEP) {
-        lore_ptr->vp[lore_ptr->vn] = _("眠らされない", "slept");
-        lore_ptr->color[lore_ptr->vn++] = TERM_BLUE;
-    }
-    if ((lore_ptr->flagsr & RFR_RES_TELE) && (lore_ptr->r_ptr->flags1 & RF1_UNIQUE)) {
-        lore_ptr->vp[lore_ptr->vn] = _("テレポートされない", "teleported");
-        lore_ptr->color[lore_ptr->vn++] = TERM_ORANGE;
-    }
-
-    if (lore_ptr->vn > 0) {
-        hooked_roff(format(_("%^sは", "%^s"), wd_he[lore_ptr->msex]));
-        for (int n = 0; n < lore_ptr->vn; n++) {
-#ifdef JP
-            if (n != 0)
-                hooked_roff("し、");
-#else
-            if (n == 0)
-                hooked_roff(" cannot be ");
-            else if (n < lore_ptr->vn - 1)
-                hooked_roff(", ");
-            else
-                hooked_roff(" or ");
-#endif
-            hook_c_roff(lore_ptr->color[n], lore_ptr->vp[n]);
-        }
-
-        hooked_roff(_("。", ".  "));
-    }
-
+    display_monster_concrete_immunities(lore_ptr);
+    display_monster_immunities(lore_ptr);
     if ((((int)lore_ptr->r_ptr->r_wake * (int)lore_ptr->r_ptr->r_wake) > lore_ptr->r_ptr->sleep) || (lore_ptr->r_ptr->r_ignore == MAX_UCHAR)
         || (lore_ptr->r_ptr->sleep == 0 && lore_ptr->r_ptr->r_tkills >= 10) || lore_ptr->know_everything) {
         concptr act;
index b4d4dab..5d5aa86 100644 (file)
@@ -326,3 +326,70 @@ void display_monster_resistances(lore_type *lore_ptr)
 
     hooked_roff(_("の耐性を持っている。", ".  "));
 }
+
+void display_monster_evolution(lore_type* lore_ptr)
+{
+    if (((lore_ptr->r_ptr->r_xtra1 & MR1_EVOLUTION) == 0) && !lore_ptr->know_everything)
+        return;
+
+    if (lore_ptr->r_ptr->next_r_idx) {
+        hooked_roff(format(_("%^sは経験を積むと、", "%^s will evolve into "), wd_he[lore_ptr->msex]));
+        hook_c_roff(TERM_YELLOW, format("%s", r_name + r_info[lore_ptr->r_ptr->next_r_idx].name));
+
+        hooked_roff(_(format("に進化する。"), format(" when %s gets enough experience.  ", wd_he[lore_ptr->msex])));
+    } else if (!(lore_ptr->r_ptr->flags1 & RF1_UNIQUE)) {
+        hooked_roff(format(_("%sは進化しない。", "%s won't evolve.  "), wd_he[lore_ptr->msex]));
+    }
+}
+
+void display_monster_concrete_immunities(lore_type *lore_ptr)
+{
+    if (lore_ptr->flags3 & RF3_NO_STUN) {
+        lore_ptr->vp[lore_ptr->vn] = _("朦朧としない", "stunned");
+        lore_ptr->color[lore_ptr->vn++] = TERM_ORANGE;
+    }
+
+    if (lore_ptr->flags3 & RF3_NO_FEAR) {
+        lore_ptr->vp[lore_ptr->vn] = _("恐怖を感じない", "frightened");
+        lore_ptr->color[lore_ptr->vn++] = TERM_SLATE;
+    }
+
+    if (lore_ptr->flags3 & RF3_NO_CONF) {
+        lore_ptr->vp[lore_ptr->vn] = _("混乱しない", "confused");
+        lore_ptr->color[lore_ptr->vn++] = TERM_L_UMBER;
+    }
+
+    if (lore_ptr->flags3 & RF3_NO_SLEEP) {
+        lore_ptr->vp[lore_ptr->vn] = _("眠らされない", "slept");
+        lore_ptr->color[lore_ptr->vn++] = TERM_BLUE;
+    }
+
+    if ((lore_ptr->flagsr & RFR_RES_TELE) && (lore_ptr->r_ptr->flags1 & RF1_UNIQUE)) {
+        lore_ptr->vp[lore_ptr->vn] = _("テレポートされない", "teleported");
+        lore_ptr->color[lore_ptr->vn++] = TERM_ORANGE;
+    }
+}
+
+void display_monster_immunities(lore_type *lore_ptr)
+{
+    if (lore_ptr->vn <= 0)
+        return;
+
+    hooked_roff(format(_("%^sは", "%^s"), wd_he[lore_ptr->msex]));
+    for (int n = 0; n < lore_ptr->vn; n++) {
+#ifdef JP
+        if (n != 0)
+            hooked_roff("し、");
+#else
+        if (n == 0)
+            hooked_roff(" cannot be ");
+        else if (n < lore_ptr->vn - 1)
+            hooked_roff(", ");
+        else
+            hooked_roff(" or ");
+#endif
+        hook_c_roff(lore_ptr->color[n], lore_ptr->vp[n]);
+    }
+
+    hooked_roff(_("。", ".  "));
+}
index 24a9d6c..3ede459 100644 (file)
@@ -11,3 +11,6 @@ void display_monster_concrete_weakness(lore_type *lore_ptr);
 void display_monster_weakness(lore_type *lore_ptr);
 void display_monster_concrete_resistances(lore_type *lore_ptr);
 void display_monster_resistances(lore_type *lore_ptr);
+void display_monster_evolution(lore_type *lore_ptr);
+void display_monster_concrete_immunities(lore_type *lore_ptr);
+void display_monster_immunities(lore_type *lore_ptr);