OSDN Git Service

[Refactor] #40416 Separated monster-attack-describer.c/h from monster-attack-player.c
authorHourier <hourier@users.sourceforge.jp>
Sun, 31 May 2020 02:23:57 +0000 (11:23 +0900)
committerHourier <hourier@users.sourceforge.jp>
Sun, 31 May 2020 02:24:36 +0000 (11:24 +0900)
Hengband/Hengband/Hengband.vcxproj
Hengband/Hengband/Hengband.vcxproj.filters
src/Makefile.am
src/combat/monster-attack-describer.c [new file with mode: 0644]
src/combat/monster-attack-describer.h [new file with mode: 0644]
src/combat/monster-attack-player.c

index 9783b59..c017cfc 100644 (file)
     <ClCompile Include="..\..\src\combat\martial-arts-table.c" />\r
     <ClCompile Include="..\..\src\combat\melee-switcher.c" />\r
     <ClCompile Include="..\..\src\combat\melee-util.c" />\r
+    <ClCompile Include="..\..\src\combat\monster-attack-describer.c" />\r
     <ClCompile Include="..\..\src\combat\monster-attack-monster.c" />\r
     <ClCompile Include="..\..\src\combat\monster-attack-player.c" />\r
     <ClCompile Include="..\..\src\combat\monster-attack-types.c" />\r
     <ClInclude Include="..\..\src\combat\martial-arts-table.h" />\r
     <ClInclude Include="..\..\src\combat\melee-switcher.h" />\r
     <ClInclude Include="..\..\src\combat\melee-util.h" />\r
+    <ClInclude Include="..\..\src\combat\monster-attack-describer.h" />\r
     <ClInclude Include="..\..\src\combat\monster-attack-effect.h" />\r
     <ClInclude Include="..\..\src\combat\monster-attack-monster.h" />\r
     <ClInclude Include="..\..\src\combat\monster-attack-player.h" />\r
index 3a6699b..e20e2dc 100644 (file)
     <ClCompile Include="..\..\src\combat\monster-attack-util.c">
       <Filter>combat</Filter>
     </ClCompile>
+    <ClCompile Include="..\..\src\combat\monster-attack-describer.c">
+      <Filter>combat</Filter>
+    </ClCompile>
   </ItemGroup>
   <ItemGroup>
     <ClInclude Include="..\..\src\cmd\cmd-activate.h">
     <ClInclude Include="..\..\src\combat\monster-attack-util.h">
       <Filter>combat</Filter>
     </ClInclude>
+    <ClInclude Include="..\..\src\combat\monster-attack-describer.h">
+      <Filter>combat</Filter>
+    </ClInclude>
   </ItemGroup>
   <ItemGroup>
     <None Include="..\..\src\wall.bmp" />
index 12089e3..bd12c69 100644 (file)
@@ -373,6 +373,7 @@ hengband_SOURCES = \
        combat/melee-switcher.c combat/melee-switcher.h \
        combat/melee-util.c combat/melee-util.h \
        combat/monster-attack-util.c combat/monster-attack-util.h \
+       combat/monster-attack-describer.c combat/monster-attack-describer.h \
        combat/shoot.c combat/shoot.h \
        combat/snipe.c combat/snipe.h \
        \
diff --git a/src/combat/monster-attack-describer.c b/src/combat/monster-attack-describer.c
new file mode 100644 (file)
index 0000000..3abb82d
--- /dev/null
@@ -0,0 +1,233 @@
+/*!
+ * @brief モンスターの打撃種別を記述すると共に、切り傷/朦朧値を追加する
+ * @date 2020/05/31
+ * @author Hourier
+ */
+
+#include "combat/monster-attack-describer.h"
+#include "combat/insults-moans.h"
+#include "main/sound-definitions-table.h"
+
+static void show_jaian_song(monap_type *monap_ptr)
+{
+#ifdef JP
+    switch (randint1(15)) {
+    case 1:
+    case 6:
+    case 11:
+        monap_ptr->act = "「♪お~れはジャイアン~~ガ~キだいしょう~」";
+        break;
+    case 2:
+        monap_ptr->act = "「♪て~んかむ~てきのお~とこだぜ~~」";
+        break;
+    case 3:
+        monap_ptr->act = "「♪の~び太スネ夫はメじゃないよ~~」";
+        break;
+    case 4:
+        monap_ptr->act = "「♪け~んかスポ~ツ~どんとこい~」";
+        break;
+    case 5:
+        monap_ptr->act = "「♪うた~も~~う~まいぜ~まかしとけ~」";
+        break;
+    case 7:
+        monap_ptr->act = "「♪ま~ちいちば~んのに~んきもの~~」";
+        break;
+    case 8:
+        monap_ptr->act = "「♪べんきょうしゅくだいメじゃないよ~~」";
+        break;
+    case 9:
+        monap_ptr->act = "「♪きはやさし~くて~ち~からもち~」";
+        break;
+    case 10:
+        monap_ptr->act = "「♪かお~も~~スタイルも~バツグンさ~」";
+        break;
+    case 12:
+        monap_ptr->act = "「♪がっこうい~ちの~あ~ばれんぼう~~」";
+        break;
+    case 13:
+        monap_ptr->act = "「♪ド~ラもドラミもメじゃないよ~~」";
+        break;
+    case 14:
+        monap_ptr->act = "「♪よじげんぽけっと~な~くたって~」";
+        break;
+    case 15:
+        monap_ptr->act = "「♪あし~の~~ながさ~は~まけないぜ~」";
+        break;
+    }
+#else
+    monap_ptr->act = "horribly sings 'I AM GIAAAAAN. THE BOOOSS OF THE KIIIIDS.'";
+#endif
+}
+
+static void monster_attack_show(monap_type *monap_ptr)
+{
+#ifdef JP
+    monap_ptr->abbreviate = -1;
+#endif
+    if (monap_ptr->m_ptr->r_idx == MON_JAIAN) {
+        show_jaian_song(monap_ptr);
+    } else {
+        if (one_in_(3))
+            monap_ptr->act = _("は♪僕らは楽しい家族♪と歌っている。", "sings 'We are a happy family.'");
+        else
+            monap_ptr->act = _("は♪アイ ラブ ユー、ユー ラブ ミー♪と歌っている。", "sings 'I love you, you love me.'");
+    }
+
+    sound(SOUND_SHOW);
+}
+
+void describe_monster_attack_method(monap_type *monap_ptr)
+{
+    switch (monap_ptr->method) {
+    case RBM_HIT: {
+        monap_ptr->act = _("殴られた。", "hits you.");
+        monap_ptr->do_cut = monap_ptr->do_stun = 1;
+        monap_ptr->touched = TRUE;
+        sound(SOUND_HIT);
+        break;
+    }
+    case RBM_TOUCH: {
+        monap_ptr->act = _("触られた。", "touches you.");
+        monap_ptr->touched = TRUE;
+        sound(SOUND_TOUCH);
+        break;
+    }
+    case RBM_PUNCH: {
+        monap_ptr->act = _("パンチされた。", "punches you.");
+        monap_ptr->touched = TRUE;
+        monap_ptr->do_stun = 1;
+        sound(SOUND_HIT);
+        break;
+    }
+    case RBM_KICK: {
+        monap_ptr->act = _("蹴られた。", "kicks you.");
+        monap_ptr->touched = TRUE;
+        monap_ptr->do_stun = 1;
+        sound(SOUND_HIT);
+        break;
+    }
+    case RBM_CLAW: {
+        monap_ptr->act = _("ひっかかれた。", "claws you.");
+        monap_ptr->touched = TRUE;
+        monap_ptr->do_cut = 1;
+        sound(SOUND_CLAW);
+        break;
+    }
+    case RBM_BITE: {
+        monap_ptr->act = _("噛まれた。", "bites you.");
+        monap_ptr->do_cut = 1;
+        monap_ptr->touched = TRUE;
+        sound(SOUND_BITE);
+        break;
+    }
+    case RBM_STING: {
+        monap_ptr->act = _("刺された。", "stings you.");
+        monap_ptr->touched = TRUE;
+        sound(SOUND_STING);
+        break;
+    }
+    case RBM_SLASH: {
+        monap_ptr->act = _("斬られた。", "slashes you.");
+        monap_ptr->touched = TRUE;
+        monap_ptr->do_cut = 1;
+        sound(SOUND_CLAW);
+        break;
+    }
+    case RBM_BUTT: {
+        monap_ptr->act = _("角で突かれた。", "butts you.");
+        monap_ptr->do_stun = 1;
+        monap_ptr->touched = TRUE;
+        sound(SOUND_HIT);
+        break;
+    }
+    case RBM_CRUSH: {
+        monap_ptr->act = _("体当たりされた。", "crushes you.");
+        monap_ptr->do_stun = 1;
+        monap_ptr->touched = TRUE;
+        sound(SOUND_CRUSH);
+        break;
+    }
+    case RBM_ENGULF: {
+        monap_ptr->act = _("飲み込まれた。", "engulfs you.");
+        monap_ptr->touched = TRUE;
+        sound(SOUND_CRUSH);
+        break;
+    }
+    case RBM_CHARGE: {
+        monap_ptr->abbreviate = -1;
+        monap_ptr->act = _("は請求書をよこした。", "charges you.");
+        monap_ptr->touched = TRUE;
+
+        /* このコメントはジョークが効いているので残しておく / Note! This is "charges", not "charges at". */
+        sound(SOUND_BUY);
+        break;
+    }
+    case RBM_CRAWL: {
+        monap_ptr->abbreviate = -1;
+        monap_ptr->act = _("が体の上を這い回った。", "crawls on you.");
+        monap_ptr->touched = TRUE;
+        sound(SOUND_SLIME);
+        break;
+    }
+    case RBM_DROOL: {
+        monap_ptr->act = _("よだれをたらされた。", "drools on you.");
+        sound(SOUND_SLIME);
+        break;
+    }
+    case RBM_SPIT: {
+        monap_ptr->act = _("唾を吐かれた。", "spits on you.");
+        sound(SOUND_SLIME);
+        break;
+    }
+    case RBM_EXPLODE: {
+        monap_ptr->abbreviate = -1;
+        monap_ptr->act = _("は爆発した。", "explodes.");
+        monap_ptr->explode = TRUE;
+        break;
+    }
+    case RBM_GAZE: {
+        monap_ptr->act = _("にらまれた。", "gazes at you.");
+        break;
+    }
+    case RBM_WAIL: {
+        monap_ptr->act = _("泣き叫ばれた。", "wails at you.");
+        sound(SOUND_WAIL);
+        break;
+    }
+    case RBM_SPORE: {
+        monap_ptr->act = _("胞子を飛ばされた。", "releases spores at you.");
+        sound(SOUND_SLIME);
+        break;
+    }
+    case RBM_XXX4: {
+        monap_ptr->abbreviate = -1;
+        monap_ptr->act = _("が XXX4 を発射した。", "projects XXX4's at you.");
+        break;
+    }
+    case RBM_BEG: {
+        monap_ptr->act = _("金をせがまれた。", "begs you for money.");
+        sound(SOUND_MOAN);
+        break;
+    }
+    case RBM_INSULT: {
+#ifdef JP
+        monap_ptr->abbreviate = -1;
+#endif
+        monap_ptr->act = desc_insult[randint0(monap_ptr->m_ptr->r_idx == MON_DEBBY ? 10 : 8)];
+        sound(SOUND_MOAN);
+        break;
+    }
+    case RBM_MOAN: {
+#ifdef JP
+        monap_ptr->abbreviate = -1;
+#endif
+        monap_ptr->act = desc_moan[randint0(4)];
+        sound(SOUND_MOAN);
+        break;
+    }
+    case RBM_SHOW: {
+        monster_attack_show(monap_ptr);
+        break;
+    }
+    }
+}
diff --git a/src/combat/monster-attack-describer.h b/src/combat/monster-attack-describer.h
new file mode 100644 (file)
index 0000000..494cd91
--- /dev/null
@@ -0,0 +1,5 @@
+#pragma once
+
+#include "combat/monster-attack-util.h"
+
+void describe_monster_attack_method(monap_type *monap_ptr);
index 6326f7f..1f95016 100644 (file)
@@ -11,7 +11,7 @@
 #include "combat/attack-criticality.h"
 #include "combat/combat-options-type.h"
 #include "combat/hallucination-attacks-table.h"
-#include "combat/insults-moans.h"
+#include "combat/monster-attack-describer.h"
 #include "combat/monster-attack-effect.h"
 #include "combat/monster-attack-util.h"
 #include "dungeon/dungeon.h"
@@ -51,230 +51,6 @@ static bool check_no_blow(player_type *target_ptr, monap_type *monap_ptr)
     return TRUE;
 }
 
-static void show_jaian_song(monap_type *monap_ptr)
-{
-#ifdef JP
-    switch (randint1(15)) {
-    case 1:
-    case 6:
-    case 11:
-        monap_ptr->act = "「♪お~れはジャイアン~~ガ~キだいしょう~」";
-        break;
-    case 2:
-        monap_ptr->act = "「♪て~んかむ~てきのお~とこだぜ~~」";
-        break;
-    case 3:
-        monap_ptr->act = "「♪の~び太スネ夫はメじゃないよ~~」";
-        break;
-    case 4:
-        monap_ptr->act = "「♪け~んかスポ~ツ~どんとこい~」";
-        break;
-    case 5:
-        monap_ptr->act = "「♪うた~も~~う~まいぜ~まかしとけ~」";
-        break;
-    case 7:
-        monap_ptr->act = "「♪ま~ちいちば~んのに~んきもの~~」";
-        break;
-    case 8:
-        monap_ptr->act = "「♪べんきょうしゅくだいメじゃないよ~~」";
-        break;
-    case 9:
-        monap_ptr->act = "「♪きはやさし~くて~ち~からもち~」";
-        break;
-    case 10:
-        monap_ptr->act = "「♪かお~も~~スタイルも~バツグンさ~」";
-        break;
-    case 12:
-        monap_ptr->act = "「♪がっこうい~ちの~あ~ばれんぼう~~」";
-        break;
-    case 13:
-        monap_ptr->act = "「♪ド~ラもドラミもメじゃないよ~~」";
-        break;
-    case 14:
-        monap_ptr->act = "「♪よじげんぽけっと~な~くたって~」";
-        break;
-    case 15:
-        monap_ptr->act = "「♪あし~の~~ながさ~は~まけないぜ~」";
-        break;
-    }
-#else
-    monap_ptr->act = "horribly sings 'I AM GIAAAAAN. THE BOOOSS OF THE KIIIIDS.'";
-#endif
-}
-
-static void monster_attack_show(monap_type *monap_ptr)
-{
-#ifdef JP
-    monap_ptr->abbreviate = -1;
-#endif
-    if (monap_ptr->m_ptr->r_idx == MON_JAIAN) {
-        show_jaian_song(monap_ptr);
-    } else {
-        if (one_in_(3))
-            monap_ptr->act = _("は♪僕らは楽しい家族♪と歌っている。", "sings 'We are a happy family.'");
-        else
-            monap_ptr->act = _("は♪アイ ラブ ユー、ユー ラブ ミー♪と歌っている。", "sings 'I love you, you love me.'");
-    }
-
-    sound(SOUND_SHOW);
-}
-
-static void describe_monster_attack_method(monap_type *monap_ptr)
-{
-    switch (monap_ptr->method) {
-    case RBM_HIT: {
-        monap_ptr->act = _("殴られた。", "hits you.");
-        monap_ptr->do_cut = monap_ptr->do_stun = 1;
-        monap_ptr->touched = TRUE;
-        sound(SOUND_HIT);
-        break;
-    }
-    case RBM_TOUCH: {
-        monap_ptr->act = _("触られた。", "touches you.");
-        monap_ptr->touched = TRUE;
-        sound(SOUND_TOUCH);
-        break;
-    }
-    case RBM_PUNCH: {
-        monap_ptr->act = _("パンチされた。", "punches you.");
-        monap_ptr->touched = TRUE;
-        monap_ptr->do_stun = 1;
-        sound(SOUND_HIT);
-        break;
-    }
-    case RBM_KICK: {
-        monap_ptr->act = _("蹴られた。", "kicks you.");
-        monap_ptr->touched = TRUE;
-        monap_ptr->do_stun = 1;
-        sound(SOUND_HIT);
-        break;
-    }
-    case RBM_CLAW: {
-        monap_ptr->act = _("ひっかかれた。", "claws you.");
-        monap_ptr->touched = TRUE;
-        monap_ptr->do_cut = 1;
-        sound(SOUND_CLAW);
-        break;
-    }
-    case RBM_BITE: {
-        monap_ptr->act = _("噛まれた。", "bites you.");
-        monap_ptr->do_cut = 1;
-        monap_ptr->touched = TRUE;
-        sound(SOUND_BITE);
-        break;
-    }
-    case RBM_STING: {
-        monap_ptr->act = _("刺された。", "stings you.");
-        monap_ptr->touched = TRUE;
-        sound(SOUND_STING);
-        break;
-    }
-    case RBM_SLASH: {
-        monap_ptr->act = _("斬られた。", "slashes you.");
-        monap_ptr->touched = TRUE;
-        monap_ptr->do_cut = 1;
-        sound(SOUND_CLAW);
-        break;
-    }
-    case RBM_BUTT: {
-        monap_ptr->act = _("角で突かれた。", "butts you.");
-        monap_ptr->do_stun = 1;
-        monap_ptr->touched = TRUE;
-        sound(SOUND_HIT);
-        break;
-    }
-    case RBM_CRUSH: {
-        monap_ptr->act = _("体当たりされた。", "crushes you.");
-        monap_ptr->do_stun = 1;
-        monap_ptr->touched = TRUE;
-        sound(SOUND_CRUSH);
-        break;
-    }
-    case RBM_ENGULF: {
-        monap_ptr->act = _("飲み込まれた。", "engulfs you.");
-        monap_ptr->touched = TRUE;
-        sound(SOUND_CRUSH);
-        break;
-    }
-    case RBM_CHARGE: {
-        monap_ptr->abbreviate = -1;
-        monap_ptr->act = _("は請求書をよこした。", "charges you.");
-        monap_ptr->touched = TRUE;
-
-        /* このコメントはジョークが効いているので残しておく / Note! This is "charges", not "charges at". */
-        sound(SOUND_BUY);
-        break;
-    }
-    case RBM_CRAWL: {
-        monap_ptr->abbreviate = -1;
-        monap_ptr->act = _("が体の上を這い回った。", "crawls on you.");
-        monap_ptr->touched = TRUE;
-        sound(SOUND_SLIME);
-        break;
-    }
-    case RBM_DROOL: {
-        monap_ptr->act = _("よだれをたらされた。", "drools on you.");
-        sound(SOUND_SLIME);
-        break;
-    }
-    case RBM_SPIT: {
-        monap_ptr->act = _("唾を吐かれた。", "spits on you.");
-        sound(SOUND_SLIME);
-        break;
-    }
-    case RBM_EXPLODE: {
-        monap_ptr->abbreviate = -1;
-        monap_ptr->act = _("は爆発した。", "explodes.");
-        monap_ptr->explode = TRUE;
-        break;
-    }
-    case RBM_GAZE: {
-        monap_ptr->act = _("にらまれた。", "gazes at you.");
-        break;
-    }
-    case RBM_WAIL: {
-        monap_ptr->act = _("泣き叫ばれた。", "wails at you.");
-        sound(SOUND_WAIL);
-        break;
-    }
-    case RBM_SPORE: {
-        monap_ptr->act = _("胞子を飛ばされた。", "releases spores at you.");
-        sound(SOUND_SLIME);
-        break;
-    }
-    case RBM_XXX4: {
-        monap_ptr->abbreviate = -1;
-        monap_ptr->act = _("が XXX4 を発射した。", "projects XXX4's at you.");
-        break;
-    }
-    case RBM_BEG: {
-        monap_ptr->act = _("金をせがまれた。", "begs you for money.");
-        sound(SOUND_MOAN);
-        break;
-    }
-    case RBM_INSULT: {
-#ifdef JP
-        monap_ptr->abbreviate = -1;
-#endif
-        monap_ptr->act = desc_insult[randint0(monap_ptr->m_ptr->r_idx == MON_DEBBY ? 10 : 8)];
-        sound(SOUND_MOAN);
-        break;
-    }
-    case RBM_MOAN: {
-#ifdef JP
-        monap_ptr->abbreviate = -1;
-#endif
-        monap_ptr->act = desc_moan[randint0(4)];
-        sound(SOUND_MOAN);
-        break;
-    }
-    case RBM_SHOW: {
-        monster_attack_show(monap_ptr);
-        break;
-    }
-    }
-}
-
 /*!
  * @brief 時間逆転攻撃による能力低下
  * @param target_ptr プレーヤーへの参照ポインタ