1 #include "effect/effect-monster-lite-dark.h"
2 #include "effect/effect-monster-util.h"
3 #include "monster-race/monster-race.h"
4 #include "monster-race/race-flags-resistance.h"
5 #include "monster-race/race-flags3.h"
6 #include "monster/monster-info.h"
7 #include "system/monster-race-info.h"
8 #include "system/player-type-definition.h"
10 ProcessResult effect_monster_lite_weak(PlayerType *player_ptr, EffectMonster *em_ptr)
13 em_ptr->skipped = true;
14 return ProcessResult::PROCESS_CONTINUE;
17 if (em_ptr->r_ptr->resistance_flags.has_not(MonsterResistanceType::HURT_LITE)) {
19 return ProcessResult::PROCESS_CONTINUE;
23 em_ptr->obvious = true;
26 if (is_original_ap_and_seen(player_ptr, em_ptr->m_ptr)) {
27 em_ptr->r_ptr->r_resistance_flags.set(MonsterResistanceType::HURT_LITE);
30 em_ptr->note = _("は光に身をすくめた!", " cringes from the light!");
31 em_ptr->note_dies = _("は光を受けてしぼんでしまった!", " shrivels away in the light!");
32 return ProcessResult::PROCESS_CONTINUE;
35 ProcessResult effect_monster_lite(PlayerType *player_ptr, EffectMonster *em_ptr)
38 em_ptr->obvious = true;
41 if (em_ptr->r_ptr->resistance_flags.has(MonsterResistanceType::RESIST_LITE)) {
42 em_ptr->note = _("には耐性がある!", " resists!");
44 em_ptr->dam /= (randint1(6) + 6);
45 if (is_original_ap_and_seen(player_ptr, em_ptr->m_ptr)) {
46 em_ptr->r_ptr->r_resistance_flags.set(MonsterResistanceType::RESIST_LITE);
48 } else if (em_ptr->r_ptr->resistance_flags.has(MonsterResistanceType::HURT_LITE)) {
49 if (is_original_ap_and_seen(player_ptr, em_ptr->m_ptr)) {
50 em_ptr->r_ptr->r_resistance_flags.set(MonsterResistanceType::HURT_LITE);
53 em_ptr->note = _("は光に身をすくめた!", " cringes from the light!");
54 em_ptr->note_dies = _("は光を受けてしぼんでしまった!", " shrivels away in the light!");
58 return ProcessResult::PROCESS_CONTINUE;
61 ProcessResult effect_monster_dark(PlayerType *player_ptr, EffectMonster *em_ptr)
64 em_ptr->obvious = true;
67 if (em_ptr->r_ptr->resistance_flags.has_not(MonsterResistanceType::RESIST_DARK)) {
68 return ProcessResult::PROCESS_CONTINUE;
71 em_ptr->note = _("には耐性がある!", " resists!");
73 em_ptr->dam /= (randint1(6) + 6);
74 if (is_original_ap_and_seen(player_ptr, em_ptr->m_ptr)) {
75 em_ptr->r_ptr->r_resistance_flags.set(MonsterResistanceType::RESIST_DARK);
78 return ProcessResult::PROCESS_CONTINUE;