OSDN Git Service

[Refactor] #40414 Separated display_monster_guardian() from process_monster_lore...
authorHourier <hourier@users.sourceforge.jp>
Fri, 12 Jun 2020 14:37:30 +0000 (23:37 +0900)
committerHourier <hourier@users.sourceforge.jp>
Fri, 12 Jun 2020 14:37:30 +0000 (23:37 +0900)
src/lore/monster-lore.c
src/view/display-lore-attacks.c
src/view/display-lore-attacks.h
src/view/display-lore.c
src/view/display-lore.h

index e9dc2b9..e093d1a 100644 (file)
@@ -5,26 +5,16 @@
  */
 
 #include "lore/monster-lore.h"
-#include "locale/english.h"
-#include "locale/japanese.h"
-#include "lore/combat-types-setter.h"
 #include "lore/lore-calculator.h"
 #include "lore/lore-util.h"
 #include "lore/magic-types-setter.h"
-#include "monster-race/race-flags-ability1.h"
 #include "monster-race/race-flags-ability2.h"
-#include "monster-race/race-flags-resistance.h"
 #include "monster-race/race-flags1.h"
 #include "monster-race/race-flags2.h"
 #include "monster-race/race-flags3.h"
 #include "monster-race/race-flags4.h"
-#include "monster-race/race-flags7.h"
 #include "monster-race/race-indice-types.h"
-#include "mspell/monster-spell.h"
-#include "mspell/mspell-damage-calculator.h"
-#include "mspell/mspell-type.h"
 #include "term/term-color-types.h"
-#include "util/util.h"
 #include "view/display-lore-attacks.h"
 #include "view/display-lore-drops.h"
 #include "view/display-lore-magics.h"
@@ -217,45 +207,6 @@ void process_monster_lore(player_type *player_ptr, MONRACE_IDX r_idx, BIT_FLAGS
     display_monster_immunities(lore_ptr);
     display_monster_alert(lore_ptr);
     display_monster_drops(lore_ptr);
-
-    const int max_attack_numbers = 4;
-    for (int m = 0; m < max_attack_numbers; m++) {
-        if (!lore_ptr->r_ptr->blow[m].method || (lore_ptr->r_ptr->blow[m].method == RBM_SHOOT))
-            continue;
-
-        if (lore_ptr->r_ptr->r_blows[m] || lore_ptr->know_everything)
-            lore_ptr->count++;
-    }
-
-    int attack_numbers = 0;
-    for (int m = 0; m < max_attack_numbers; m++) {
-        if (!lore_ptr->r_ptr->blow[m].method || (lore_ptr->r_ptr->blow[m].method == RBM_SHOOT)
-            || (((lore_ptr->r_ptr->r_blows[m] == 0) && !lore_ptr->know_everything)))
-            continue;
-
-        set_monster_blow_method(lore_ptr, m);
-        set_monster_blow_effect(lore_ptr, m);
-        display_monster_blows(lore_ptr, m, attack_numbers);
-        attack_numbers++;
-    }
-
-    if (attack_numbers > 0) {
-        hooked_roff(_("。", ".  "));
-    } else if (lore_ptr->flags1 & RF1_NEVER_BLOW) {
-        hooked_roff(format(_("%^sは物理的な攻撃方法を持たない。", "%^s has no physical attacks.  "), wd_he[lore_ptr->msex]));
-    } else {
-        hooked_roff(format(_("%s攻撃については何も知らない。", "Nothing is known about %s attack.  "), wd_his[lore_ptr->msex]));
-    }
-
-    bool is_kingpin = (lore_ptr->flags1 & RF1_QUESTOR) != 0;
-    is_kingpin &= lore_ptr->r_ptr->r_sights > 0;
-    is_kingpin &= lore_ptr->r_ptr->max_num > 0;
-    is_kingpin &= (r_idx == MON_OBERON) || (r_idx == MON_SERPENT);
-    if (is_kingpin) {
-        hook_c_roff(TERM_VIOLET, _("あなたはこのモンスターを殺したいという強い欲望を感じている...", "You feel an intense desire to kill this monster...  "));
-    } else if (lore_ptr->flags7 & RF7_GUARDIAN) {
-        hook_c_roff(TERM_L_RED, _("このモンスターはダンジョンの主である。", "This monster is the master of a dungeon."));
-    }
-
-    hooked_roff("\n");
+    display_monster_attacks(lore_ptr);
+    display_monster_guardian(lore_ptr);
 }
index d4fcb21..40e63b0 100644 (file)
@@ -1,6 +1,8 @@
 #include "view/display-lore-attacks.h"
 #include "locale/japanese.h"
+#include "lore/combat-types-setter.h"
 #include "lore/lore-calculator.h"
+#include "monster-race/race-flags1.h"
 
 #ifdef JP
 static void display_monster_blows_jp(lore_type *lore_ptr, int attack_numbers, int d1, int d2, int m)
@@ -71,3 +73,35 @@ void display_monster_blows(lore_type *lore_ptr, int m, int attack_numbers)
     void (*display_monster_blows_pf)(lore_type *, int, int, int, int) = _(display_monster_blows_jp, display_monster_blows_en);
     (*display_monster_blows_pf)(lore_ptr, attack_numbers, d1, d2, m);
 }
+
+void display_monster_attacks(lore_type *lore_ptr)
+{
+    const int max_attack_numbers = 4;
+    for (int m = 0; m < max_attack_numbers; m++) {
+        if (!lore_ptr->r_ptr->blow[m].method || (lore_ptr->r_ptr->blow[m].method == RBM_SHOOT))
+            continue;
+
+        if (lore_ptr->r_ptr->r_blows[m] || lore_ptr->know_everything)
+            lore_ptr->count++;
+    }
+
+    int attack_numbers = 0;
+    for (int m = 0; m < max_attack_numbers; m++) {
+        if (!lore_ptr->r_ptr->blow[m].method || (lore_ptr->r_ptr->blow[m].method == RBM_SHOOT)
+            || (((lore_ptr->r_ptr->r_blows[m] == 0) && !lore_ptr->know_everything)))
+            continue;
+
+        set_monster_blow_method(lore_ptr, m);
+        set_monster_blow_effect(lore_ptr, m);
+        display_monster_blows(lore_ptr, m, attack_numbers);
+        attack_numbers++;
+    }
+
+    if (attack_numbers > 0) {
+        hooked_roff(_("。", ".  "));
+    } else if (lore_ptr->flags1 & RF1_NEVER_BLOW) {
+        hooked_roff(format(_("%^sは物理的な攻撃方法を持たない。", "%^s has no physical attacks.  "), wd_he[lore_ptr->msex]));
+    } else {
+        hooked_roff(format(_("%s攻撃については何も知らない。", "Nothing is known about %s attack.  "), wd_his[lore_ptr->msex]));
+    }
+}
index 79f02b2..38a3aea 100644 (file)
@@ -4,3 +4,4 @@
 #include "lore/lore-util.h"
 
 void display_monster_blows(lore_type *lore_ptr, int m, int attack_numbers);
+void display_monster_attacks(lore_type *lore_ptr);
index f44bb7c..4a8d47e 100644 (file)
@@ -13,6 +13,7 @@
 #include "monster-race/race-flags2.h"
 #include "monster-race/race-flags3.h"
 #include "monster-race/race-flags4.h"
+#include "monster-race/race-flags7.h"
 #include "monster-race/race-indice-types.h"
 #include "mspell/mspell-type.h"
 #include "term/term-color-types.h"
@@ -535,3 +536,18 @@ void display_monster_sometimes(lore_type *lore_ptr)
 
     hooked_roff(_("ことがある。", ".  "));
 }
+
+void display_monster_guardian(lore_type *lore_ptr)
+{
+    bool is_kingpin = (lore_ptr->flags1 & RF1_QUESTOR) != 0;
+    is_kingpin &= lore_ptr->r_ptr->r_sights > 0;
+    is_kingpin &= lore_ptr->r_ptr->max_num > 0;
+    is_kingpin &= (lore_ptr->r_idx == MON_OBERON) || (lore_ptr->r_idx == MON_SERPENT);
+    if (is_kingpin) {
+        hook_c_roff(TERM_VIOLET, _("あなたはこのモンスターを殺したいという強い欲望を感じている...", "You feel an intense desire to kill this monster...  "));
+    } else if (lore_ptr->flags7 & RF7_GUARDIAN) {
+        hook_c_roff(TERM_L_RED, _("このモンスターはダンジョンの主である。", "This monster is the master of a dungeon."));
+    }
+
+    hooked_roff("\n");
+}
index b5dabb5..f90976d 100644 (file)
@@ -20,3 +20,4 @@ void display_lore_this(player_type *player_ptr, lore_type *lore_ptr);
 void display_monster_collective(lore_type *lore_ptr);
 void display_monster_launching(player_type *player_ptr, lore_type *lore_ptr);
 void display_monster_sometimes(lore_type *lore_ptr);
+void display_monster_guardian(lore_type *lore_ptr);