From: Slimebreath6078 Date: Sat, 29 Jul 2023 03:03:19 +0000 (+0900) Subject: 隕石耐性を追加 X-Git-Tag: 3.0.0.90-Alpha^2~23^2~2 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=66fcad36eba7191c948677230406c8eb691515af;p=hengbandforosx%2Fhengbandosx.git 隕石耐性を追加 隕石耐性、というものもよくわからないが、他に当てはまりそうな耐性もない(せいぜいフォースくらい?)ので新規に追加 --- diff --git a/src/effect/effect-monster-resist-hurt.cpp b/src/effect/effect-monster-resist-hurt.cpp index 7cb870032..5259f4323 100644 --- a/src/effect/effect-monster-resist-hurt.cpp +++ b/src/effect/effect-monster-resist-hurt.cpp @@ -772,3 +772,23 @@ ProcessResult effect_monster_abyss(PlayerType *player_ptr, EffectMonster *em_ptr 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; +} diff --git a/src/effect/effect-monster-resist-hurt.h b/src/effect/effect-monster-resist-hurt.h index 41a819d5a..a20373fc1 100644 --- a/src/effect/effect-monster-resist-hurt.h +++ b/src/effect/effect-monster-resist-hurt.h @@ -31,3 +31,4 @@ ProcessResult effect_monster_disintegration(PlayerType *player_ptr, EffectMonste 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); diff --git a/src/effect/effect-monster-switcher.cpp b/src/effect/effect-monster-switcher.cpp index ec90be933..60fefad72 100644 --- a/src/effect/effect-monster-switcher.cpp +++ b/src/effect/effect-monster-switcher.cpp @@ -330,7 +330,6 @@ ProcessResult switch_effects_monster(PlayerType *player_ptr, EffectMonster *em_p case AttributeType::MISSILE: case AttributeType::DEBUG: case AttributeType::MANA: - case AttributeType::METEOR: case AttributeType::BLOOD_CURSE: case AttributeType::SEEKER: case AttributeType::SUPER_RAY: @@ -497,6 +496,8 @@ ProcessResult switch_effects_monster(PlayerType *player_ptr, EffectMonster *em_p 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; diff --git a/src/info-reader/race-info-tokens-table.cpp b/src/info-reader/race-info-tokens-table.cpp index 7ca7f9aaf..0375e8ecc 100644 --- a/src/info-reader/race-info-tokens-table.cpp +++ b/src/info-reader/race-info-tokens-table.cpp @@ -327,6 +327,8 @@ const std::unordered_map r_info_flagsr { "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 r_info_aura_flags = { diff --git a/src/monster-race/race-flags-resistance.h b/src/monster-race/race-flags-resistance.h index 798875c9d..15202c8c0 100644 --- a/src/monster-race/race-flags-resistance.h +++ b/src/monster-race/race-flags-resistance.h @@ -52,5 +52,7 @@ enum class MonsterResistanceType { 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 */ }; diff --git a/src/view/display-lore-status.cpp b/src/view/display-lore-status.cpp index 475320afa..4bde36cb5 100644 --- a/src/view/display-lore-status.cpp +++ b/src/view/display-lore-status.cpp @@ -312,6 +312,11 @@ void display_monster_concrete_resistances(lore_type *lore_ptr) 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;