OSDN Git Service

[Refactor] #40014 Separated display_kill_unique() and display_killed() from display_k...
authorHourier <hourier@users.sourceforge.jp>
Thu, 11 Jun 2020 13:31:31 +0000 (22:31 +0900)
committerHourier <hourier@users.sourceforge.jp>
Thu, 11 Jun 2020 13:31:31 +0000 (22:31 +0900)
src/view/display-monster-lore.c

index 9c53bd3..8cb9305 100644 (file)
@@ -97,53 +97,66 @@ void output_monster_spoiler(player_type *player_ptr, MONRACE_IDX r_idx, void (*r
     process_monster_lore(player_ptr, r_idx, 0x03);
 }
 
-void display_kill_numbers(lore_type *lore_ptr)
+static bool display_kill_unique(lore_type *lore_ptr)
 {
-    if ((lore_ptr->mode & 0x02) != 0)
-        return;
+    if ((lore_ptr->flags1 & RF1_UNIQUE) == 0)
+        return FALSE;
+
+    bool dead = (lore_ptr->r_ptr->max_num == 0);
+    if (lore_ptr->r_ptr->r_deaths) {
+        hooked_roff(format(_("%^sはあなたの先祖を %d 人葬っている", "%^s has slain %d of your ancestors"), wd_he[lore_ptr->msex], lore_ptr->r_ptr->r_deaths));
 
-    if (lore_ptr->flags1 & RF1_UNIQUE) {
-        bool dead = (lore_ptr->r_ptr->max_num == 0) ? TRUE : FALSE;
-        if (lore_ptr->r_ptr->r_deaths) {
+        if (dead) {
             hooked_roff(
-                format(_("%^sはあなたの先祖を %d 人葬っている", "%^s has slain %d of your ancestors"), wd_he[lore_ptr->msex], lore_ptr->r_ptr->r_deaths));
-
-            if (dead) {
-                hooked_roff(
-                    _(format("が、すでに仇討ちは果たしている!"), format(", but you have avenged %s!  ", plural(lore_ptr->r_ptr->r_deaths, "him", "them"))));
-            } else {
-                hooked_roff(
-                    _(format("のに、まだ仇討ちを果たしていない。"), format(", who %s unavenged.  ", plural(lore_ptr->r_ptr->r_deaths, "remains", "remain"))));
-            }
-
-            hooked_roff("\n");
-        } else if (dead) {
-            hooked_roff(_("あなたはこの仇敵をすでに葬り去っている。", "You have slain this foe.  "));
-            hooked_roff("\n");
+                _(format("が、すでに仇討ちは果たしている!"), format(", but you have avenged %s!  ", plural(lore_ptr->r_ptr->r_deaths, "him", "them"))));
+        } else {
+            hooked_roff(
+                _(format("のに、まだ仇討ちを果たしていない。"), format(", who %s unavenged.  ", plural(lore_ptr->r_ptr->r_deaths, "remains", "remain"))));
         }
 
-        return;
+        hooked_roff("\n");
+    } else if (dead) {
+        hooked_roff(_("あなたはこの仇敵をすでに葬り去っている。", "You have slain this foe.  "));
+        hooked_roff("\n");
     }
 
-    if (lore_ptr->r_ptr->r_deaths) {
-        hooked_roff(_(format("このモンスターはあなたの先祖を %d 人葬っている", lore_ptr->r_ptr->r_deaths),
-            format("%d of your ancestors %s been killed by this creature, ", lore_ptr->r_ptr->r_deaths, plural(lore_ptr->r_ptr->r_deaths, "has", "have"))));
-
-        if (lore_ptr->r_ptr->r_pkills) {
-            hooked_roff(format(_("が、あなたはこのモンスターを少なくとも %d 体は倒している。", "and you have exterminated at least %d of the creatures.  "),
-                lore_ptr->r_ptr->r_pkills));
-        } else if (lore_ptr->r_ptr->r_tkills) {
-            hooked_roff(format(
-                _("が、あなたの先祖はこのモンスターを少なくとも %d 体は倒している。", "and your ancestors have exterminated at least %d of the creatures.  "),
-                lore_ptr->r_ptr->r_tkills));
-        } else {
-            hooked_roff(format(_("が、まだ%sを倒したことはない。", "and %s is not ever known to have been defeated.  "), wd_he[lore_ptr->msex]));
-        }
+    return TRUE;
+}
 
-        hooked_roff("\n");
-        return;
+static bool display_killed(lore_type *lore_ptr)
+{
+    if (lore_ptr->r_ptr->r_deaths == 0)
+        return FALSE;
+
+    hooked_roff(_(format("このモンスターはあなたの先祖を %d 人葬っている", lore_ptr->r_ptr->r_deaths),
+        format("%d of your ancestors %s been killed by this creature, ", lore_ptr->r_ptr->r_deaths, plural(lore_ptr->r_ptr->r_deaths, "has", "have"))));
+
+    if (lore_ptr->r_ptr->r_pkills) {
+        hooked_roff(format(_("が、あなたはこのモンスターを少なくとも %d 体は倒している。", "and you have exterminated at least %d of the creatures.  "),
+            lore_ptr->r_ptr->r_pkills));
+    } else if (lore_ptr->r_ptr->r_tkills) {
+        hooked_roff(format(
+            _("が、あなたの先祖はこのモンスターを少なくとも %d 体は倒している。", "and your ancestors have exterminated at least %d of the creatures.  "),
+            lore_ptr->r_ptr->r_tkills));
+    } else {
+        hooked_roff(format(_("が、まだ%sを倒したことはない。", "and %s is not ever known to have been defeated.  "), wd_he[lore_ptr->msex]));
     }
 
+    hooked_roff("\n");
+    return TRUE;
+}
+
+void display_kill_numbers(lore_type *lore_ptr)
+{
+    if ((lore_ptr->mode & 0x02) != 0)
+        return;
+
+    if (display_kill_unique(lore_ptr))
+        return;
+
+    if (display_killed(lore_ptr))
+        return;
+
     if (lore_ptr->r_ptr->r_pkills) {
         hooked_roff(format(
             _("あなたはこのモンスターを少なくとも %d 体は殺している。", "You have killed at least %d of these creatures.  "), lore_ptr->r_ptr->r_pkills));