return ProcessResult::PROCESS_CONTINUE;
}
+
+ProcessResult effect_monster_meteor(PlayerType *player_ptr, EffectMonster *em_ptr)
+{
+ if (em_ptr->seen) {
+ em_ptr->obvious = true;
+ }
+
+ if (em_ptr->r_ptr->resistance_flags.has_not(MonsterResistanceType::RESIST_METEOR)) {
+ return ProcessResult::PROCESS_CONTINUE;
+ }
+
+ em_ptr->note = _("には耐性がある!", " resists!");
+ em_ptr->dam *= 3;
+ em_ptr->dam /= randint1(6) + 6;
+ if (is_original_ap_and_seen(player_ptr, em_ptr->m_ptr)) {
+ em_ptr->r_ptr->r_resistance_flags.set(MonsterResistanceType::RESIST_METEOR);
+ }
+
+ return ProcessResult::PROCESS_CONTINUE;
+}
ProcessResult effect_monster_icee_bolt(PlayerType *player_ptr, EffectMonster *em_ptr);
ProcessResult effect_monster_void(PlayerType *player_ptr, EffectMonster *em_ptr);
ProcessResult effect_monster_abyss(PlayerType *player_ptr, EffectMonster *em_ptr);
+ProcessResult effect_monster_meteor(PlayerType *player_ptr, EffectMonster *em_ptr);
case AttributeType::MISSILE:
case AttributeType::DEBUG:
case AttributeType::MANA:
- case AttributeType::METEOR:
case AttributeType::BLOOD_CURSE:
case AttributeType::SEEKER:
case AttributeType::SUPER_RAY:
return effect_monster_void(player_ptr, em_ptr);
case AttributeType::ABYSS:
return effect_monster_abyss(player_ptr, em_ptr);
+ case AttributeType::METEOR:
+ return effect_monster_meteor(player_ptr, em_ptr);
default: {
em_ptr->skipped = true;
em_ptr->dam = 0;
{ "RES_ABYSS", MonsterResistanceType::RESIST_ABYSS },
{ "HURT_VOID", MonsterResistanceType::HURT_VOID_MAGIC },
{ "RES_VOID", MonsterResistanceType::RESIST_VOID_MAGIC },
+ { "HURT_METEOR", MonsterResistanceType::HURT_METEOR },
+ { "RES_METEOR", MonsterResistanceType::RESIST_METEOR },
};
const std::unordered_map<std::string_view, MonsterAuraType> r_info_aura_flags = {
RESIST_ABYSS = 48, /* Resist abyss */
HURT_VOID_MAGIC = 49, /* Hurt badly by void */
RESIST_VOID_MAGIC = 50, /* Resist void */
+ HURT_METEOR = 51, /* Hurt badly by meteor */
+ RESIST_METEOR = 52, /* Resist meteor */
MAX, /* Max of Resistances */
};
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;