-#include "view/display-lore-status.h"
+#include "view/display-lore-status.h"
#include "locale/japanese.h"
#include "lore/lore-calculator.h"
#include "lore/lore-util.h"
#include "monster-race/monster-race.h"
#include "monster-race/race-brightness-flags.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-flags7.h"
#include "system/monster-entity.h"
#include "system/monster-race-info.h"
#include "term/term-color-types.h"
return;
}
- hooked_roff(format(_("%^sは AC%d の防御力と", "%^s has an armor rating of %d"), Who::who(lore_ptr->msex), lore_ptr->r_ptr->ac));
- if ((lore_ptr->flags1 & RF1_FORCE_MAXHP) || (lore_ptr->r_ptr->hside == 1)) {
+ hooked_roff(format(_("%s^は AC%d の防御力と", "%s^ has an armor rating of %d"), Who::who(lore_ptr->msex), lore_ptr->r_ptr->ac));
+ if (lore_ptr->misc_flags.has(MonsterMiscType::FORCE_MAXHP) || (lore_ptr->r_ptr->hside == 1)) {
auto hp = lore_ptr->r_ptr->hdice * (lore_ptr->nightmare ? 2 : 1) * lore_ptr->r_ptr->hside;
hooked_roff(format(_(" %d の体力がある。", " and a life rating of %d. "), std::min(MONSTER_MAXHP, hp)));
} else {
lore_ptr->color[lore_ptr->vn++] = TERM_WHITE;
}
- if (lore_ptr->feature_flags.has(MonsterFeatureType::CAN_FLY)) {
+ if (lore_ptr->r_ptr->feature_flags.has(MonsterFeatureType::CAN_FLY)) {
lore_ptr->vp[lore_ptr->vn] = _("空を飛ぶ", "fly");
lore_ptr->color[lore_ptr->vn++] = TERM_WHITE;
}
- if (lore_ptr->feature_flags.has(MonsterFeatureType::CAN_SWIM)) {
+ if (lore_ptr->r_ptr->feature_flags.has(MonsterFeatureType::CAN_SWIM)) {
lore_ptr->vp[lore_ptr->vn] = _("水を渡る", "swim");
lore_ptr->color[lore_ptr->vn++] = TERM_WHITE;
}
return;
}
- hooked_roff(format(_("%^sは", "%^s"), Who::who(lore_ptr->msex)));
+ hooked_roff(format(_("%s^は", "%s^"), Who::who(lore_ptr->msex)));
for (int n = 0; n < lore_ptr->vn; n++) {
#ifdef JP
if (n != lore_ptr->vn - 1) {
- jverb(lore_ptr->vp[n], lore_ptr->jverb_buf, JVERB_AND);
- hook_c_roff(lore_ptr->color[n], lore_ptr->jverb_buf);
+ const auto verb = conjugate_jverb(lore_ptr->vp[n], JVerbConjugationType::AND);
+ hook_c_roff(lore_ptr->color[n], verb);
hooked_roff("、");
} else {
hook_c_roff(lore_ptr->color[n], lore_ptr->vp[n]);
void display_monster_constitutions(lore_type *lore_ptr)
{
- if (lore_ptr->feature_flags.has(MonsterFeatureType::AQUATIC)) {
- hooked_roff(format(_("%^sは水中に棲んでいる。", "%^s lives in water. "), Who::who(lore_ptr->msex)));
+ if (lore_ptr->r_ptr->feature_flags.has(MonsterFeatureType::AQUATIC)) {
+ hooked_roff(format(_("%s^は水中に棲んでいる。", "%s^ lives in water. "), Who::who(lore_ptr->msex)));
}
if (lore_ptr->brightness_flags.has_any_of({ MonsterBrightnessType::SELF_LITE_1, MonsterBrightnessType::SELF_LITE_2 })) {
- hooked_roff(format(_("%^sは光っている。", "%^s is shining. "), Who::who(lore_ptr->msex)));
+ hooked_roff(format(_("%s^は光っている。", "%s^ is shining. "), Who::who(lore_ptr->msex)));
}
if (lore_ptr->brightness_flags.has_any_of({ MonsterBrightnessType::SELF_DARK_1, MonsterBrightnessType::SELF_DARK_2 })) {
- hook_c_roff(TERM_L_DARK, format(_("%^sは暗黒に包まれている。", "%^s is surrounded by darkness. "), Who::who(lore_ptr->msex)));
+ hook_c_roff(TERM_L_DARK, format(_("%s^は暗黒に包まれている。", "%s^ is surrounded by darkness. "), Who::who(lore_ptr->msex)));
}
- if (lore_ptr->flags2 & RF2_INVISIBLE) {
- hooked_roff(format(_("%^sは透明で目に見えない。", "%^s is invisible. "), Who::who(lore_ptr->msex)));
+ if (lore_ptr->misc_flags.has(MonsterMiscType::INVISIBLE)) {
+ hooked_roff(format(_("%s^は透明で目に見えない。", "%s^ is invisible. "), Who::who(lore_ptr->msex)));
}
- if (lore_ptr->flags2 & RF2_COLD_BLOOD) {
- hooked_roff(format(_("%^sは冷血動物である。", "%^s is cold blooded. "), Who::who(lore_ptr->msex)));
+ if (lore_ptr->misc_flags.has(MonsterMiscType::COLD_BLOOD)) {
+ hooked_roff(format(_("%s^は冷血動物である。", "%s^ is cold blooded. "), Who::who(lore_ptr->msex)));
}
- if (lore_ptr->flags2 & RF2_EMPTY_MIND) {
- hooked_roff(format(_("%^sはテレパシーでは感知できない。", "%^s is not detected by telepathy. "), Who::who(lore_ptr->msex)));
- } else if (lore_ptr->flags2 & RF2_WEIRD_MIND) {
- hooked_roff(format(_("%^sはまれにテレパシーで感知できる。", "%^s is rarely detected by telepathy. "), Who::who(lore_ptr->msex)));
+ if (lore_ptr->misc_flags.has(MonsterMiscType::EMPTY_MIND)) {
+ hooked_roff(format(_("%s^はテレパシーでは感知できない。", "%s^ is not detected by telepathy. "), Who::who(lore_ptr->msex)));
+ } else if (lore_ptr->misc_flags.has(MonsterMiscType::WEIRD_MIND)) {
+ hooked_roff(format(_("%s^はまれにテレパシーで感知できる。", "%s^ is rarely detected by telepathy. "), Who::who(lore_ptr->msex)));
}
- if (lore_ptr->flags2 & RF2_MULTIPLY) {
- hook_c_roff(TERM_L_UMBER, format(_("%^sは爆発的に増殖する。", "%^s breeds explosively. "), Who::who(lore_ptr->msex)));
+ if (lore_ptr->misc_flags.has(MonsterMiscType::MULTIPLY)) {
+ hook_c_roff(TERM_L_UMBER, format(_("%s^は爆発的に増殖する。", "%s^ breeds explosively. "), Who::who(lore_ptr->msex)));
}
- if (lore_ptr->flags2 & RF2_REGENERATE) {
- hook_c_roff(TERM_L_WHITE, format(_("%^sは素早く体力を回復する。", "%^s regenerates quickly. "), Who::who(lore_ptr->msex)));
+ if (lore_ptr->misc_flags.has(MonsterMiscType::REGENERATE)) {
+ hook_c_roff(TERM_L_WHITE, format(_("%s^は素早く体力を回復する。", "%s^ regenerates quickly. "), Who::who(lore_ptr->msex)));
}
- if (lore_ptr->flags7 & RF7_RIDING) {
- hook_c_roff(TERM_SLATE, format(_("%^sに乗ることができる。", "%^s is suitable for riding. "), Who::who(lore_ptr->msex)));
+ if (lore_ptr->misc_flags.has(MonsterMiscType::RIDING)) {
+ hook_c_roff(TERM_SLATE, format(_("%s^に乗ることができる。", "%s^ is suitable for riding. "), Who::who(lore_ptr->msex)));
}
}
return;
}
- hooked_roff(format(_("%^sには", "%^s"), Who::who(lore_ptr->msex)));
+ hooked_roff(format(_("%s^には", "%s^"), Who::who(lore_ptr->msex)));
for (int n = 0; n < lore_ptr->vn; n++) {
#ifdef JP
if (n != 0) {
lore_ptr->color[lore_ptr->vn++] = TERM_SLATE;
}
+ if (lore_ptr->resistance_flags.has(MonsterResistanceType::RESIST_METEOR)) {
+ lore_ptr->vp[lore_ptr->vn] = _("隕石", "meteor");
+ lore_ptr->color[lore_ptr->vn++] = TERM_UMBER;
+ }
+
if (lore_ptr->resistance_flags.has(MonsterResistanceType::RESIST_ALL)) {
lore_ptr->vp[lore_ptr->vn] = _("あらゆる攻撃", "all");
lore_ptr->color[lore_ptr->vn++] = TERM_YELLOW;
return;
}
- hooked_roff(format(_("%^sは", "%^s"), Who::who(lore_ptr->msex)));
+ hooked_roff(format(_("%s^は", "%s^"), Who::who(lore_ptr->msex)));
for (int n = 0; n < lore_ptr->vn; n++) {
#ifdef JP
if (n != 0) {
}
if (MonsterRace(lore_ptr->r_ptr->next_r_idx).is_valid()) {
- hooked_roff(format(_("%^sは経験を積むと、", "%^s will evolve into "), Who::who(lore_ptr->msex)));
+ hooked_roff(format(_("%s^は経験を積むと、", "%s^ will evolve into "), Who::who(lore_ptr->msex)));
hook_c_roff(TERM_YELLOW, format("%s", monraces_info[lore_ptr->r_ptr->next_r_idx].name.data()));
hooked_roff(_(format("に進化する。"), format(" when %s gets enough experience. ", Who::who(lore_ptr->msex))));
void display_monster_concrete_immunities(lore_type *lore_ptr)
{
- if (lore_ptr->flags3 & RF3_NO_STUN) {
+ if (lore_ptr->resistance_flags.has(MonsterResistanceType::NO_STUN)) {
lore_ptr->vp[lore_ptr->vn] = _("朦朧としない", "stunned");
lore_ptr->color[lore_ptr->vn++] = TERM_ORANGE;
}
- if (lore_ptr->flags3 & RF3_NO_FEAR) {
+ if (lore_ptr->resistance_flags.has(MonsterResistanceType::NO_FEAR)) {
lore_ptr->vp[lore_ptr->vn] = _("恐怖を感じない", "frightened");
lore_ptr->color[lore_ptr->vn++] = TERM_SLATE;
}
- if (lore_ptr->flags3 & RF3_NO_CONF) {
+ if (lore_ptr->resistance_flags.has(MonsterResistanceType::NO_CONF)) {
lore_ptr->vp[lore_ptr->vn] = _("混乱しない", "confused");
lore_ptr->color[lore_ptr->vn++] = TERM_L_UMBER;
}
- if (lore_ptr->flags3 & RF3_NO_SLEEP) {
+ if (lore_ptr->resistance_flags.has(MonsterResistanceType::NO_SLEEP)) {
lore_ptr->vp[lore_ptr->vn] = _("眠らされない", "slept");
lore_ptr->color[lore_ptr->vn++] = TERM_BLUE;
}
lore_ptr->vp[lore_ptr->vn] = _("テレポートされない", "teleported");
lore_ptr->color[lore_ptr->vn++] = TERM_ORANGE;
}
+
+ if (lore_ptr->resistance_flags.has(MonsterResistanceType::NO_INSTANTLY_DEATH) || lore_ptr->r_ptr->kind_flags.has(MonsterKindType::UNIQUE)) {
+ lore_ptr->vp[lore_ptr->vn] = _("即死しない", "instantly killed");
+ lore_ptr->color[lore_ptr->vn++] = TERM_L_DARK;
+ }
}
void display_monster_immunities(lore_type *lore_ptr)
return;
}
- hooked_roff(format(_("%^sは", "%^s"), Who::who(lore_ptr->msex)));
+ hooked_roff(format(_("%s^は", "%s^"), Who::who(lore_ptr->msex)));
for (int n = 0; n < lore_ptr->vn; n++) {
#ifdef JP
if (n != 0) {
act = _("をかなり警戒しており", "is ever vigilant for");
}
- hooked_roff(_(format("%^sは侵入者%s、 %d フィート先から侵入者に気付くことがある。", Who::who(lore_ptr->msex), act, 10 * lore_ptr->r_ptr->aaf),
- format("%^s %s intruders, which %s may notice from %d feet. ", Who::who(lore_ptr->msex), act, Who::who(lore_ptr->msex), 10 * lore_ptr->r_ptr->aaf)));
+ hooked_roff(_(format("%s^は侵入者%s、 %d フィート先から侵入者に気付くことがある。", Who::who(lore_ptr->msex), act, 10 * lore_ptr->r_ptr->aaf),
+ format("%s^ %s intruders, which %s may notice from %d feet. ", Who::who(lore_ptr->msex), act, Who::who(lore_ptr->msex), 10 * lore_ptr->r_ptr->aaf)));
}