concptr vp[96];
char tmp_msg[96][96];
bool breath;
+ bool magic;
} lore_type;
typedef void (*hook_c_roff_pf)(TERM_COLOR attr, concptr str);
lore_ptr->color[lore_ptr->vn++] = TERM_RED;
}
}
+
+void set_summon_types(lore_type *lore_ptr)
+{
+ if (lore_ptr->a_ability_flags2 & (RF6_S_MONSTER)) {
+ lore_ptr->vp[lore_ptr->vn] = _("モンスター一体召喚", "summon a monster");
+ lore_ptr->color[lore_ptr->vn++] = TERM_SLATE;
+ }
+
+ if (lore_ptr->a_ability_flags2 & (RF6_S_MONSTERS)) {
+ lore_ptr->vp[lore_ptr->vn] = _("モンスター複数召喚", "summon monsters");
+ lore_ptr->color[lore_ptr->vn++] = TERM_L_WHITE;
+ }
+
+ if (lore_ptr->a_ability_flags2 & (RF6_S_KIN)) {
+ lore_ptr->vp[lore_ptr->vn] = _("救援召喚", "summon aid");
+ lore_ptr->color[lore_ptr->vn++] = TERM_ORANGE;
+ }
+
+ if (lore_ptr->a_ability_flags2 & (RF6_S_ANT)) {
+ lore_ptr->vp[lore_ptr->vn] = _("アリ召喚", "summon ants");
+ lore_ptr->color[lore_ptr->vn++] = TERM_RED;
+ }
+
+ if (lore_ptr->a_ability_flags2 & (RF6_S_SPIDER)) {
+ lore_ptr->vp[lore_ptr->vn] = _("クモ召喚", "summon spiders");
+ lore_ptr->color[lore_ptr->vn++] = TERM_L_DARK;
+ }
+
+ if (lore_ptr->a_ability_flags2 & (RF6_S_HOUND)) {
+ lore_ptr->vp[lore_ptr->vn] = _("ハウンド召喚", "summon hounds");
+ lore_ptr->color[lore_ptr->vn++] = TERM_L_UMBER;
+ }
+
+ if (lore_ptr->a_ability_flags2 & (RF6_S_HYDRA)) {
+ lore_ptr->vp[lore_ptr->vn] = _("ヒドラ召喚", "summon hydras");
+ lore_ptr->color[lore_ptr->vn++] = TERM_L_GREEN;
+ }
+
+ if (lore_ptr->a_ability_flags2 & (RF6_S_ANGEL)) {
+ lore_ptr->vp[lore_ptr->vn] = _("天使一体召喚", "summon an angel");
+ lore_ptr->color[lore_ptr->vn++] = TERM_YELLOW;
+ }
+
+ if (lore_ptr->a_ability_flags2 & (RF6_S_DEMON)) {
+ lore_ptr->vp[lore_ptr->vn] = _("デーモン一体召喚", "summon a demon");
+ lore_ptr->color[lore_ptr->vn++] = TERM_L_RED;
+ }
+
+ if (lore_ptr->a_ability_flags2 & (RF6_S_UNDEAD)) {
+ lore_ptr->vp[lore_ptr->vn] = _("アンデッド一体召喚", "summon an undead");
+ lore_ptr->color[lore_ptr->vn++] = TERM_L_DARK;
+ }
+
+ if (lore_ptr->a_ability_flags2 & (RF6_S_DRAGON)) {
+ lore_ptr->vp[lore_ptr->vn] = _("ドラゴン一体召喚", "summon a dragon");
+ lore_ptr->color[lore_ptr->vn++] = TERM_ORANGE;
+ }
+
+ if (lore_ptr->a_ability_flags2 & (RF6_S_HI_UNDEAD)) {
+ lore_ptr->vp[lore_ptr->vn] = _("強力なアンデッド召喚", "summon Greater Undead");
+ lore_ptr->color[lore_ptr->vn++] = TERM_L_DARK;
+ }
+
+ if (lore_ptr->a_ability_flags2 & (RF6_S_HI_DRAGON)) {
+ lore_ptr->vp[lore_ptr->vn] = _("古代ドラゴン召喚", "summon Ancient Dragons");
+ lore_ptr->color[lore_ptr->vn++] = TERM_ORANGE;
+ }
+
+ if (lore_ptr->a_ability_flags2 & (RF6_S_CYBER)) {
+ lore_ptr->vp[lore_ptr->vn] = _("サイバーデーモン召喚", "summon Cyberdemons");
+ lore_ptr->color[lore_ptr->vn++] = TERM_UMBER;
+ }
+
+ if (lore_ptr->a_ability_flags2 & (RF6_S_AMBERITES)) {
+ lore_ptr->vp[lore_ptr->vn] = _("アンバーの王族召喚", "summon Lords of Amber");
+ lore_ptr->color[lore_ptr->vn++] = TERM_VIOLET;
+ }
+
+ if (lore_ptr->a_ability_flags2 & (RF6_S_UNIQUE)) {
+ lore_ptr->vp[lore_ptr->vn] = _("ユニーク・モンスター召喚", "summon Unique Monsters");
+ lore_ptr->color[lore_ptr->vn++] = TERM_VIOLET;
+ }
+}
\ No newline at end of file
void set_status_types(lore_type *lore_ptr);
void set_teleport_types(lore_type *lore_ptr);
void set_floor_types(player_type *player_ptr, lore_type *lore_ptr);
+void set_summon_types(lore_type *lore_ptr);
set_status_types(lore_ptr);
set_teleport_types(lore_ptr);
set_floor_types(player_ptr, lore_ptr);
- if (lore_ptr->a_ability_flags2 & (RF6_S_MONSTER)) {
- lore_ptr->vp[lore_ptr->vn] = _("モンスター一体召喚", "summon a monster");
- lore_ptr->color[lore_ptr->vn++] = TERM_SLATE;
- }
-
- if (lore_ptr->a_ability_flags2 & (RF6_S_MONSTERS)) {
- lore_ptr->vp[lore_ptr->vn] = _("モンスター複数召喚", "summon monsters");
- lore_ptr->color[lore_ptr->vn++] = TERM_L_WHITE;
- }
-
- if (lore_ptr->a_ability_flags2 & (RF6_S_KIN)) {
- lore_ptr->vp[lore_ptr->vn] = _("救援召喚", "summon aid");
- lore_ptr->color[lore_ptr->vn++] = TERM_ORANGE;
- }
-
- if (lore_ptr->a_ability_flags2 & (RF6_S_ANT)) {
- lore_ptr->vp[lore_ptr->vn] = _("アリ召喚", "summon ants");
- lore_ptr->color[lore_ptr->vn++] = TERM_RED;
- }
-
- if (lore_ptr->a_ability_flags2 & (RF6_S_SPIDER)) {
- lore_ptr->vp[lore_ptr->vn] = _("クモ召喚", "summon spiders");
- lore_ptr->color[lore_ptr->vn++] = TERM_L_DARK;
- }
-
- if (lore_ptr->a_ability_flags2 & (RF6_S_HOUND)) {
- lore_ptr->vp[lore_ptr->vn] = _("ハウンド召喚", "summon hounds");
- lore_ptr->color[lore_ptr->vn++] = TERM_L_UMBER;
- }
-
- if (lore_ptr->a_ability_flags2 & (RF6_S_HYDRA)) {
- lore_ptr->vp[lore_ptr->vn] = _("ヒドラ召喚", "summon hydras");
- lore_ptr->color[lore_ptr->vn++] = TERM_L_GREEN;
- }
-
- if (lore_ptr->a_ability_flags2 & (RF6_S_ANGEL)) {
- lore_ptr->vp[lore_ptr->vn] = _("天使一体召喚", "summon an angel");
- lore_ptr->color[lore_ptr->vn++] = TERM_YELLOW;
- }
-
- if (lore_ptr->a_ability_flags2 & (RF6_S_DEMON)) {
- lore_ptr->vp[lore_ptr->vn] = _("デーモン一体召喚", "summon a demon");
- lore_ptr->color[lore_ptr->vn++] = TERM_L_RED;
- }
-
- if (lore_ptr->a_ability_flags2 & (RF6_S_UNDEAD)) {
- lore_ptr->vp[lore_ptr->vn] = _("アンデッド一体召喚", "summon an undead");
- lore_ptr->color[lore_ptr->vn++] = TERM_L_DARK;
- }
-
- if (lore_ptr->a_ability_flags2 & (RF6_S_DRAGON)) {
- lore_ptr->vp[lore_ptr->vn] = _("ドラゴン一体召喚", "summon a dragon");
- lore_ptr->color[lore_ptr->vn++] = TERM_ORANGE;
- }
-
- if (lore_ptr->a_ability_flags2 & (RF6_S_HI_UNDEAD)) {
- lore_ptr->vp[lore_ptr->vn] = _("強力なアンデッド召喚", "summon Greater Undead");
- lore_ptr->color[lore_ptr->vn++] = TERM_L_DARK;
- }
-
- if (lore_ptr->a_ability_flags2 & (RF6_S_HI_DRAGON)) {
- lore_ptr->vp[lore_ptr->vn] = _("古代ドラゴン召喚", "summon Ancient Dragons");
- lore_ptr->color[lore_ptr->vn++] = TERM_ORANGE;
- }
-
- if (lore_ptr->a_ability_flags2 & (RF6_S_CYBER)) {
- lore_ptr->vp[lore_ptr->vn] = _("サイバーデーモン召喚", "summon Cyberdemons");
- lore_ptr->color[lore_ptr->vn++] = TERM_UMBER;
- }
-
- if (lore_ptr->a_ability_flags2 & (RF6_S_AMBERITES)) {
- lore_ptr->vp[lore_ptr->vn] = _("アンバーの王族召喚", "summon Lords of Amber");
- lore_ptr->color[lore_ptr->vn++] = TERM_VIOLET;
- }
-
- if (lore_ptr->a_ability_flags2 & (RF6_S_UNIQUE)) {
- lore_ptr->vp[lore_ptr->vn] = _("ユニーク・モンスター召喚", "summon Unique Monsters");
- lore_ptr->color[lore_ptr->vn++] = TERM_VIOLET;
- }
-
- bool magic = FALSE;
- if (lore_ptr->vn) {
- magic = TRUE;
- if (lore_ptr->breath) {
- hooked_roff(_("、なおかつ", ", and is also"));
- } else {
- hooked_roff(format(_("%^sは", "%^s is"), wd_he[lore_ptr->msex]));
- }
-
-#ifdef JP
- if (lore_ptr->flags2 & (RF2_SMART))
- hook_c_roff(TERM_YELLOW, "的確に");
- hooked_roff("魔法を使うことができ、");
-#else
- hooked_roff(" magical, casting spells");
- if (lore_ptr->flags2 & RF2_SMART)
- hook_c_roff(TERM_YELLOW, " intelligently");
-#endif
-
- for (int n = 0; n < lore_ptr->vn; n++) {
-#ifdef JP
- if (n != 0)
- hooked_roff("、");
-#else
- if (n == 0)
- hooked_roff(" which ");
- 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]);
- }
-
-#ifdef JP
- hooked_roff("の呪文を唱えることがある");
-#endif
- }
-
- if (lore_ptr->breath || magic) {
+ set_summon_types(lore_ptr);
+ display_monster_magic_types(lore_ptr);
+ if (lore_ptr->breath || lore_ptr->magic) {
int m = lore_ptr->r_ptr->r_cast_spell;
int n = lore_ptr->r_ptr->freq_spell;
if (m > 100 || lore_ptr->know_everything) {
#include "view/display-lore-magics.h"
+#include "monster-race/race-flags2.h"
+#include "term/term-color-types.h"
void display_monster_breath(lore_type *lore_ptr)
{
hooked_roff("のブレスを吐くことがある");
#endif
}
+
+void display_monster_magic_types(lore_type *lore_ptr)
+{
+ lore_ptr->magic = FALSE;
+ if (lore_ptr->vn == 0)
+ return;
+
+ lore_ptr->magic = TRUE;
+ if (lore_ptr->breath) {
+ hooked_roff(_("、なおかつ", ", and is also"));
+ } else {
+ hooked_roff(format(_("%^sは", "%^s is"), wd_he[lore_ptr->msex]));
+ }
+
+#ifdef JP
+ if (lore_ptr->flags2 & (RF2_SMART))
+ hook_c_roff(TERM_YELLOW, "的確に");
+
+ hooked_roff("魔法を使うことができ、");
+#else
+ hooked_roff(" magical, casting spells");
+ if (lore_ptr->flags2 & RF2_SMART)
+ hook_c_roff(TERM_YELLOW, " intelligently");
+#endif
+
+ for (int n = 0; n < lore_ptr->vn; n++) {
+#ifdef JP
+ if (n != 0)
+ hooked_roff("、");
+#else
+ if (n == 0)
+ hooked_roff(" which ");
+ 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]);
+ }
+
+#ifdef JP
+ hooked_roff("の呪文を唱えることがある");
+#endif
+}
\ No newline at end of file
#include "lore/lore-util.h"
void display_monster_breath(lore_type *lore_ptr);
+void display_monster_magic_types(lore_type *lore_ptr);