<ClCompile Include="..\..\src\view\display-birth.c" />\r
<ClCompile Include="..\..\src\view\display-characteristic.c" />\r
<ClCompile Include="..\..\src\view\display-fruit.c" />\r
+ <ClCompile Include="..\..\src\view\display-lore-attacks.c" />\r
<ClCompile Include="..\..\src\view\display-lore-drops.c" />\r
<ClCompile Include="..\..\src\view\display-lore-magics.c" />\r
<ClCompile Include="..\..\src\view\display-lore-status.c" />\r
<ClInclude Include="..\..\src\term\term-color-types.h" />\r
<ClInclude Include="..\..\src\util\object-sort.h" />\r
<ClInclude Include="..\..\src\view\display-birth.h" />\r
+ <ClInclude Include="..\..\src\view\display-lore-attacks.h" />\r
<ClInclude Include="..\..\src\view\display-lore-drops.h" />\r
<ClInclude Include="..\..\src\view\display-lore-magics.h" />\r
<ClInclude Include="..\..\src\view\display-lore-status.h" />\r
<ClCompile Include="..\..\src\lore\combat-types-setter.c">
<Filter>lore</Filter>
</ClCompile>
+ <ClCompile Include="..\..\src\view\display-lore-attacks.c">
+ <Filter>view</Filter>
+ </ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\src\cmd\cmd-basic.h">
<ClInclude Include="..\..\src\lore\combat-types-setter.h">
<Filter>lore</Filter>
</ClInclude>
+ <ClInclude Include="..\..\src\view\display-lore-attacks.h">
+ <Filter>view</Filter>
+ </ClInclude>
</ItemGroup>
<ItemGroup>
<None Include="..\..\src\wall.bmp" />
\
view/display-characteristic.c view/display-characteristic.h \
view/display-fruit.c view/display-fruit.h \
+ view/display-lore-attacks.c view/display-lore-attacks.h \
view/display-lore-drops.c view/display-lore-drops.h \
view/display-lore-magics.c view/display-lore-magics.h \
view/display-lore-status.c view/display-lore-status.h \
lore_ptr->know_everything = FALSE;
lore_ptr->mode = mode;
lore_ptr->old = FALSE;
+ lore_ptr->count = 0;
return lore_ptr;
}
concptr p;
concptr q;
rbm_type method;
+ int count;
} lore_type;
typedef void (*hook_c_roff_pf)(TERM_COLOR attr, concptr str);
#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"
#include "view/display-lore-status.h"
display_monster_drops(lore_ptr);
const int max_attack_numbers = 4;
- int count = 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))
continue;
if (lore_ptr->r_ptr->r_blows[m] || lore_ptr->know_everything)
- count++;
+ lore_ptr->count++;
}
int attack_numbers = 0;
set_monster_blow_method(lore_ptr, m);
set_monster_blow_effect(lore_ptr, m);
- int d1 = lore_ptr->r_ptr->blow[m].d_dice;
- int d2 = lore_ptr->r_ptr->blow[m].d_side;
-
-#ifdef JP
- if (attack_numbers == 0) {
- hooked_roff(format("%^sは", wd_he[lore_ptr->msex]));
- }
-
- if (d1 && d2 && (lore_ptr->know_everything || know_damage(r_idx, m))) {
- hooked_roff(format(" %dd%d ", d1, d2));
- hooked_roff("のダメージで");
- }
-
- if (!lore_ptr->p)
- lore_ptr->p = "何か奇妙なことをする";
-
- /* XXしてYYし/XXしてYYする/XXし/XXする */
- if (lore_ptr->q != NULL)
- jverb(lore_ptr->p, lore_ptr->jverb_buf, JVERB_TO);
- else if (attack_numbers != count - 1)
- jverb(lore_ptr->p, lore_ptr->jverb_buf, JVERB_AND);
- else
- strcpy(lore_ptr->jverb_buf, lore_ptr->p);
-
- hooked_roff(lore_ptr->jverb_buf);
- if (lore_ptr->q) {
- if (attack_numbers != count - 1)
- jverb(lore_ptr->q, lore_ptr->jverb_buf, JVERB_AND);
- else
- strcpy(lore_ptr->jverb_buf, lore_ptr->q);
- hooked_roff(lore_ptr->jverb_buf);
- }
-
- if (attack_numbers != count - 1)
- hooked_roff("、");
-#else
- if (attack_numbers == 0) {
- hooked_roff(format("%^s can ", wd_he[lore_ptr->msex]));
- } else if (attack_numbers < count - 1) {
- hooked_roff(", ");
- } else {
- hooked_roff(", and ");
- }
-
- if (lore_ptr->p == NULL)
- lore_ptr->p = "do something weird";
-
- hooked_roff(lore_ptr->p);
- if (lore_ptr->q != NULL) {
- hooked_roff(" to ");
- hooked_roff(lore_ptr->q);
- if (d1 && d2 && (lore_ptr->know_everything || know_damage(r_idx, m))) {
- hooked_roff(" with damage");
- hooked_roff(format(" %dd%d", d1, d2));
- }
- }
-#endif
-
+ display_monster_blows(lore_ptr, m, attack_numbers);
attack_numbers++;
}
--- /dev/null
+#include "view/display-lore-attacks.h"
+#include "locale/japanese.h"
+#include "lore/lore-calculator.h"
+
+#ifdef JP
+static void display_monster_blows_jp(lore_type *lore_ptr, int attack_numbers, int d1, int d2, int m)
+{
+ if (attack_numbers == 0) {
+ hooked_roff(format("%^sは", wd_he[lore_ptr->msex]));
+ }
+
+ if (d1 && d2 && (lore_ptr->know_everything || know_damage(lore_ptr->r_idx, m))) {
+ hooked_roff(format(" %dd%d ", d1, d2));
+ hooked_roff("のダメージで");
+ }
+
+ if (!lore_ptr->p)
+ lore_ptr->p = "何か奇妙なことをする";
+
+ /* XXしてYYし/XXしてYYする/XXし/XXする */
+ if (lore_ptr->q != NULL)
+ jverb(lore_ptr->p, lore_ptr->jverb_buf, JVERB_TO);
+ else if (attack_numbers != lore_ptr->count - 1)
+ jverb(lore_ptr->p, lore_ptr->jverb_buf, JVERB_AND);
+ else
+ strcpy(lore_ptr->jverb_buf, lore_ptr->p);
+
+ hooked_roff(lore_ptr->jverb_buf);
+ if (lore_ptr->q) {
+ if (attack_numbers != lore_ptr->count - 1)
+ jverb(lore_ptr->q, lore_ptr->jverb_buf, JVERB_AND);
+ else
+ strcpy(lore_ptr->jverb_buf, lore_ptr->q);
+ hooked_roff(lore_ptr->jverb_buf);
+ }
+
+ if (attack_numbers != lore_ptr->count - 1)
+ hooked_roff("、");
+}
+#else
+
+static void display_monster_blows_en(lore_type *lore_ptr, int attack_numbers, int d1, int d2, int m)
+{
+ if (attack_numbers == 0) {
+ hooked_roff(format("%^s can ", wd_he[lore_ptr->msex]));
+ } else if (attack_numbers < lore_ptr->count - 1) {
+ hooked_roff(", ");
+ } else {
+ hooked_roff(", and ");
+ }
+
+ if (lore_ptr->p == NULL)
+ lore_ptr->p = "do something weird";
+
+ hooked_roff(lore_ptr->p);
+ if (lore_ptr->q != NULL) {
+ hooked_roff(" to ");
+ hooked_roff(lore_ptr->q);
+ if (d1 && d2 && (lore_ptr->know_everything || know_damage(lore_ptr->r_idx, m))) {
+ hooked_roff(" with damage");
+ hooked_roff(format(" %dd%d", d1, d2));
+ }
+ }
+}
+#endif
+
+void display_monster_blows(lore_type *lore_ptr, int m, int attack_numbers)
+{
+ int d1 = lore_ptr->r_ptr->blow[m].d_dice;
+ int d2 = lore_ptr->r_ptr->blow[m].d_side;
+ 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);
+}
--- /dev/null
+#pragma once
+
+#include "system/angband.h"
+#include "lore/lore-util.h"
+
+void display_monster_blows(lore_type *lore_ptr, int m, int attack_numbers);