<ClCompile Include="..\..\src\info-reader\race-reader.c" />\r
<ClCompile Include="..\..\src\info-reader\skill-reader.c" />\r
<ClCompile Include="..\..\src\info-reader\vault-reader.c" />\r
+ <ClCompile Include="..\..\src\lore\combat-types-setter.c" />\r
<ClCompile Include="..\..\src\lore\magic-types-setter.c" />\r
<ClCompile Include="..\..\src\lore\lore-calculator.c" />\r
<ClCompile Include="..\..\src\lore\lore-util.c" />\r
<ClInclude Include="..\..\src\info-reader\random-grid-effect-types.h" />\r
<ClInclude Include="..\..\src\info-reader\skill-reader.h" />\r
<ClInclude Include="..\..\src\info-reader\vault-reader.h" />\r
+ <ClInclude Include="..\..\src\lore\combat-types-setter.h" />\r
<ClInclude Include="..\..\src\lore\magic-types-setter.h" />\r
<ClInclude Include="..\..\src\lore\lore-calculator.h" />\r
<ClInclude Include="..\..\src\lore\lore-util.h" />\r
<ClCompile Include="..\..\src\view\display-lore-drops.c">
<Filter>view</Filter>
</ClCompile>
+ <ClCompile Include="..\..\src\lore\combat-types-setter.c">
+ <Filter>lore</Filter>
+ </ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\src\cmd\cmd-basic.h">
<ClInclude Include="..\..\src\view\display-lore-drops.h">
<Filter>view</Filter>
</ClInclude>
+ <ClInclude Include="..\..\src\lore\combat-types-setter.h">
+ <Filter>lore</Filter>
+ </ClInclude>
</ItemGroup>
<ItemGroup>
<None Include="..\..\src\wall.bmp" />
\
locale/japanese.c locale/japanese.h locale/english.c locale/english.h \
\
+ lore/combat-types-setter.c lore/combat-types-setter.h \
lore/lore-calculator.c lore/lore-calculator.h \
lore/lore-store.c lore/lore-store.h \
lore/lore-util.c lore/lore-util.h \
--- /dev/null
+#include "lore/combat-types-setter.h"
+#include "monster-attack/monster-attack-types.h"
+
+void set_monster_blow_method(lore_type *lore_ptr, int m)
+{
+ rbm_type method = lore_ptr->r_ptr->blow[m].method;
+ lore_ptr->p = NULL;
+ switch (method) {
+ case RBM_HIT:
+ lore_ptr->p = _("殴る", "hit");
+ break;
+ case RBM_TOUCH:
+ lore_ptr->p = _("触る", "touch");
+ break;
+ case RBM_PUNCH:
+ lore_ptr->p = _("パンチする", "punch");
+ break;
+ case RBM_KICK:
+ lore_ptr->p = _("蹴る", "kick");
+ break;
+ case RBM_CLAW:
+ lore_ptr->p = _("ひっかく", "claw");
+ break;
+ case RBM_BITE:
+ lore_ptr->p = _("噛む", "bite");
+ break;
+ case RBM_STING:
+ lore_ptr->p = _("刺す", "sting");
+ break;
+ case RBM_SLASH:
+ lore_ptr->p = _("斬る", "slash");
+ break;
+ case RBM_BUTT:
+ lore_ptr->p = _("角で突く", "butt");
+ break;
+ case RBM_CRUSH:
+ lore_ptr->p = _("体当たりする", "crush");
+ break;
+ case RBM_ENGULF:
+ lore_ptr->p = _("飲み込む", "engulf");
+ break;
+ case RBM_CHARGE:
+ lore_ptr->p = _("請求書をよこす", "charge");
+ break;
+ case RBM_CRAWL:
+ lore_ptr->p = _("体の上を這い回る", "crawl on you");
+ break;
+ case RBM_DROOL:
+ lore_ptr->p = _("よだれをたらす", "drool on you");
+ break;
+ case RBM_SPIT:
+ lore_ptr->p = _("つばを吐く", "spit");
+ break;
+ case RBM_EXPLODE:
+ lore_ptr->p = _("爆発する", "explode");
+ break;
+ case RBM_GAZE:
+ lore_ptr->p = _("にらむ", "gaze");
+ break;
+ case RBM_WAIL:
+ lore_ptr->p = _("泣き叫ぶ", "wail");
+ break;
+ case RBM_SPORE:
+ lore_ptr->p = _("胞子を飛ばす", "release spores");
+ break;
+ case RBM_XXX4:
+ break;
+ case RBM_BEG:
+ lore_ptr->p = _("金をせがむ", "beg");
+ break;
+ case RBM_INSULT:
+ lore_ptr->p = _("侮辱する", "insult");
+ break;
+ case RBM_MOAN:
+ lore_ptr->p = _("うめく", "moan");
+ break;
+ case RBM_SHOW:
+ lore_ptr->p = _("歌う", "sing");
+ break;
+ }
+}
+
+void set_monster_blow_effect(lore_type *lore_ptr, int m)
+{
+ rbe_type effect = lore_ptr->r_ptr->blow[m].effect;
+ lore_ptr->q = NULL;
+ switch (effect) {
+ case RBE_SUPERHURT:
+ lore_ptr->q = _("強力に攻撃する", "slaughter");
+ break;
+ case RBE_HURT:
+ lore_ptr->q = _("攻撃する", "attack");
+ break;
+ case RBE_POISON:
+ lore_ptr->q = _("毒をくらわす", "poison");
+ break;
+ case RBE_UN_BONUS:
+ lore_ptr->q = _("劣化させる", "disenchant");
+ break;
+ case RBE_UN_POWER:
+ lore_ptr->q = _("充填魔力を吸収する", "drain charges");
+ break;
+ case RBE_EAT_GOLD:
+ lore_ptr->q = _("金を盗む", "steal gold");
+ break;
+ case RBE_EAT_ITEM:
+ lore_ptr->q = _("アイテムを盗む", "steal items");
+ break;
+ case RBE_EAT_FOOD:
+ lore_ptr->q = _("あなたの食料を食べる", "eat your food");
+ break;
+ case RBE_EAT_LITE:
+ lore_ptr->q = _("明かりを吸収する", "absorb light");
+ break;
+ case RBE_ACID:
+ lore_ptr->q = _("酸を飛ばす", "shoot acid");
+ break;
+ case RBE_ELEC:
+ lore_ptr->q = _("感電させる", "electrocute");
+ break;
+ case RBE_FIRE:
+ lore_ptr->q = _("燃やす", "burn");
+ break;
+ case RBE_COLD:
+ lore_ptr->q = _("凍らせる", "freeze");
+ break;
+ case RBE_BLIND:
+ lore_ptr->q = _("盲目にする", "blind");
+ break;
+ case RBE_CONFUSE:
+ lore_ptr->q = _("混乱させる", "confuse");
+ break;
+ case RBE_TERRIFY:
+ lore_ptr->q = _("恐怖させる", "terrify");
+ break;
+ case RBE_PARALYZE:
+ lore_ptr->q = _("麻痺させる", "paralyze");
+ break;
+ case RBE_LOSE_STR:
+ lore_ptr->q = _("腕力を減少させる", "reduce strength");
+ break;
+ case RBE_LOSE_INT:
+ lore_ptr->q = _("知能を減少させる", "reduce intelligence");
+ break;
+ case RBE_LOSE_WIS:
+ lore_ptr->q = _("賢さを減少させる", "reduce wisdom");
+ break;
+ case RBE_LOSE_DEX:
+ lore_ptr->q = _("器用さを減少させる", "reduce dexterity");
+ break;
+ case RBE_LOSE_CON:
+ lore_ptr->q = _("耐久力を減少させる", "reduce constitution");
+ break;
+ case RBE_LOSE_CHR:
+ lore_ptr->q = _("魅力を減少させる", "reduce charisma");
+ break;
+ case RBE_LOSE_ALL:
+ lore_ptr->q = _("全ステータスを減少させる", "reduce all stats");
+ break;
+ case RBE_SHATTER:
+ lore_ptr->q = _("粉砕する", "shatter");
+ break;
+ case RBE_EXP_10:
+ lore_ptr->q = _("経験値を減少(10d6+)させる", "lower experience (by 10d6+)");
+ break;
+ case RBE_EXP_20:
+ lore_ptr->q = _("経験値を減少(20d6+)させる", "lower experience (by 20d6+)");
+ break;
+ case RBE_EXP_40:
+ lore_ptr->q = _("経験値を減少(40d6+)させる", "lower experience (by 40d6+)");
+ break;
+ case RBE_EXP_80:
+ lore_ptr->q = _("経験値を減少(80d6+)させる", "lower experience (by 80d6+)");
+ break;
+ case RBE_DISEASE:
+ lore_ptr->q = _("病気にする", "disease");
+ break;
+ case RBE_TIME:
+ lore_ptr->q = _("時間を逆戻りさせる", "time");
+ break;
+ case RBE_DR_LIFE:
+ lore_ptr->q = _("生命力を吸収する", "drain life");
+ break;
+ case RBE_DR_MANA:
+ lore_ptr->q = _("魔力を奪う", "drain mana force");
+ break;
+ case RBE_INERTIA:
+ lore_ptr->q = _("減速させる", "slow");
+ break;
+ case RBE_STUN:
+ lore_ptr->q = _("朦朧とさせる", "stun");
+ break;
+ }
+}
--- /dev/null
+#pragma once
+
+#include "system/angband.h"
+#include "lore/lore-util.h"
+
+void set_monster_blow_method(lore_type *lore_ptr, int m);
+void set_monster_blow_effect(lore_type *lore_ptr, int m);
bool magic;
int drop_quantity;
concptr drop_quality;
+ concptr p;
+ concptr q;
+ rbm_type method;
} lore_type;
typedef void (*hook_c_roff_pf)(TERM_COLOR attr, concptr str);
#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"
display_monster_concrete_immunities(lore_ptr);
display_monster_immunities(lore_ptr);
display_monster_alert(lore_ptr);
- display_monster_drop(lore_ptr);
+ display_monster_drops(lore_ptr);
const int max_attack_numbers = 4;
int count = 0;
|| (((lore_ptr->r_ptr->r_blows[m] == 0) && !lore_ptr->know_everything)))
continue;
- rbm_type method = lore_ptr->r_ptr->blow[m].method;
- int effect = lore_ptr->r_ptr->blow[m].effect;
+ 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;
- concptr p = NULL;
- switch (method) {
- case RBM_HIT:
- p = _("殴る", "hit");
- break;
- case RBM_TOUCH:
- p = _("触る", "touch");
- break;
- case RBM_PUNCH:
- p = _("パンチする", "punch");
- break;
- case RBM_KICK:
- p = _("蹴る", "kick");
- break;
- case RBM_CLAW:
- p = _("ひっかく", "claw");
- break;
- case RBM_BITE:
- p = _("噛む", "bite");
- break;
- case RBM_STING:
- p = _("刺す", "sting");
- break;
- case RBM_SLASH:
- p = _("斬る", "slash");
- break;
- case RBM_BUTT:
- p = _("角で突く", "butt");
- break;
- case RBM_CRUSH:
- p = _("体当たりする", "crush");
- break;
- case RBM_ENGULF:
- p = _("飲み込む", "engulf");
- break;
- case RBM_CHARGE:
- p = _("請求書をよこす", "charge");
- break;
- case RBM_CRAWL:
- p = _("体の上を這い回る", "crawl on you");
- break;
- case RBM_DROOL:
- p = _("よだれをたらす", "drool on you");
- break;
- case RBM_SPIT:
- p = _("つばを吐く", "spit");
- break;
- case RBM_EXPLODE:
- p = _("爆発する", "explode");
- break;
- case RBM_GAZE:
- p = _("にらむ", "gaze");
- break;
- case RBM_WAIL:
- p = _("泣き叫ぶ", "wail");
- break;
- case RBM_SPORE:
- p = _("胞子を飛ばす", "release spores");
- break;
- case RBM_XXX4:
- break;
- case RBM_BEG:
- p = _("金をせがむ", "beg");
- break;
- case RBM_INSULT:
- p = _("侮辱する", "insult");
- break;
- case RBM_MOAN:
- p = _("うめく", "moan");
- break;
- case RBM_SHOW:
- p = _("歌う", "sing");
- break;
- }
-
- concptr q = NULL;
- switch (effect) {
- case RBE_SUPERHURT:
- q = _("強力に攻撃する", "slaughter");
- break;
- case RBE_HURT:
- q = _("攻撃する", "attack");
- break;
- case RBE_POISON:
- q = _("毒をくらわす", "poison");
- break;
- case RBE_UN_BONUS:
- q = _("劣化させる", "disenchant");
- break;
- case RBE_UN_POWER:
- q = _("充填魔力を吸収する", "drain charges");
- break;
- case RBE_EAT_GOLD:
- q = _("金を盗む", "steal gold");
- break;
- case RBE_EAT_ITEM:
- q = _("アイテムを盗む", "steal items");
- break;
- case RBE_EAT_FOOD:
- q = _("あなたの食料を食べる", "eat your food");
- break;
- case RBE_EAT_LITE:
- q = _("明かりを吸収する", "absorb light");
- break;
- case RBE_ACID:
- q = _("酸を飛ばす", "shoot acid");
- break;
- case RBE_ELEC:
- q = _("感電させる", "electrocute");
- break;
- case RBE_FIRE:
- q = _("燃やす", "burn");
- break;
- case RBE_COLD:
- q = _("凍らせる", "freeze");
- break;
- case RBE_BLIND:
- q = _("盲目にする", "blind");
- break;
- case RBE_CONFUSE:
- q = _("混乱させる", "confuse");
- break;
- case RBE_TERRIFY:
- q = _("恐怖させる", "terrify");
- break;
- case RBE_PARALYZE:
- q = _("麻痺させる", "paralyze");
- break;
- case RBE_LOSE_STR:
- q = _("腕力を減少させる", "reduce strength");
- break;
- case RBE_LOSE_INT:
- q = _("知能を減少させる", "reduce intelligence");
- break;
- case RBE_LOSE_WIS:
- q = _("賢さを減少させる", "reduce wisdom");
- break;
- case RBE_LOSE_DEX:
- q = _("器用さを減少させる", "reduce dexterity");
- break;
- case RBE_LOSE_CON:
- q = _("耐久力を減少させる", "reduce constitution");
- break;
- case RBE_LOSE_CHR:
- q = _("魅力を減少させる", "reduce charisma");
- break;
- case RBE_LOSE_ALL:
- q = _("全ステータスを減少させる", "reduce all stats");
- break;
- case RBE_SHATTER:
- q = _("粉砕する", "shatter");
- break;
- case RBE_EXP_10:
- q = _("経験値を減少(10d6+)させる", "lower experience (by 10d6+)");
- break;
- case RBE_EXP_20:
- q = _("経験値を減少(20d6+)させる", "lower experience (by 20d6+)");
- break;
- case RBE_EXP_40:
- q = _("経験値を減少(40d6+)させる", "lower experience (by 40d6+)");
- break;
- case RBE_EXP_80:
- q = _("経験値を減少(80d6+)させる", "lower experience (by 80d6+)");
- break;
- case RBE_DISEASE:
- q = _("病気にする", "disease");
- break;
- case RBE_TIME:
- q = _("時間を逆戻りさせる", "time");
- break;
- case RBE_DR_LIFE:
- q = _("生命力を吸収する", "drain life");
- break;
- case RBE_DR_MANA:
- q = _("魔力を奪う", "drain mana force");
- break;
- case RBE_INERTIA:
- q = _("減速させる", "slow");
- break;
- case RBE_STUN:
- q = _("朦朧とさせる", "stun");
- break;
- }
-
#ifdef JP
if (attack_numbers == 0) {
hooked_roff(format("%^sは", wd_he[lore_ptr->msex]));
hooked_roff("のダメージで");
}
- if (!p)
- p = "何か奇妙なことをする";
+ if (!lore_ptr->p)
+ lore_ptr->p = "何か奇妙なことをする";
/* XXしてYYし/XXしてYYする/XXし/XXする */
- if (q != NULL)
- jverb(p, lore_ptr->jverb_buf, JVERB_TO);
+ if (lore_ptr->q != NULL)
+ jverb(lore_ptr->p, lore_ptr->jverb_buf, JVERB_TO);
else if (attack_numbers != count - 1)
- jverb(p, lore_ptr->jverb_buf, JVERB_AND);
+ jverb(lore_ptr->p, lore_ptr->jverb_buf, JVERB_AND);
else
- strcpy(lore_ptr->jverb_buf, p);
+ strcpy(lore_ptr->jverb_buf, lore_ptr->p);
hooked_roff(lore_ptr->jverb_buf);
- if (q) {
+ if (lore_ptr->q) {
if (attack_numbers != count - 1)
- jverb(q, lore_ptr->jverb_buf, JVERB_AND);
+ jverb(lore_ptr->q, lore_ptr->jverb_buf, JVERB_AND);
else
- strcpy(lore_ptr->jverb_buf, q);
+ strcpy(lore_ptr->jverb_buf, lore_ptr->q);
hooked_roff(lore_ptr->jverb_buf);
}
hooked_roff(", and ");
}
- if (!p)
- p = "do something weird";
- hooked_roff(p);
- if (q) {
+ 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(q);
+ 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));