OSDN Git Service

Merge pull request #3532 from sikabane-works/release/3.0.0.87-alpha
[hengbandforosx/hengbandosx.git] / src / effect / effect-monster-lite-dark.cpp
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"
9
10 ProcessResult effect_monster_lite_weak(PlayerType *player_ptr, EffectMonster *em_ptr)
11 {
12     if (!em_ptr->dam) {
13         em_ptr->skipped = true;
14         return ProcessResult::PROCESS_CONTINUE;
15     }
16
17     if (em_ptr->r_ptr->resistance_flags.has_not(MonsterResistanceType::HURT_LITE)) {
18         em_ptr->dam = 0;
19         return ProcessResult::PROCESS_CONTINUE;
20     }
21
22     if (em_ptr->seen) {
23         em_ptr->obvious = true;
24     }
25
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);
28     }
29
30     em_ptr->note = _("は光に身をすくめた!", " cringes from the light!");
31     em_ptr->note_dies = _("は光を受けてしぼんでしまった!", " shrivels away in the light!");
32     return ProcessResult::PROCESS_CONTINUE;
33 }
34
35 ProcessResult effect_monster_lite(PlayerType *player_ptr, EffectMonster *em_ptr)
36 {
37     if (em_ptr->seen) {
38         em_ptr->obvious = true;
39     }
40
41     if (em_ptr->r_ptr->resistance_flags.has(MonsterResistanceType::RESIST_LITE)) {
42         em_ptr->note = _("には耐性がある!", " resists!");
43         em_ptr->dam *= 2;
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);
47         }
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);
51         }
52
53         em_ptr->note = _("は光に身をすくめた!", " cringes from the light!");
54         em_ptr->note_dies = _("は光を受けてしぼんでしまった!", " shrivels away in the light!");
55         em_ptr->dam *= 2;
56     }
57
58     return ProcessResult::PROCESS_CONTINUE;
59 }
60
61 ProcessResult effect_monster_dark(PlayerType *player_ptr, EffectMonster *em_ptr)
62 {
63     if (em_ptr->seen) {
64         em_ptr->obvious = true;
65     }
66
67     if (em_ptr->r_ptr->resistance_flags.has_not(MonsterResistanceType::RESIST_DARK)) {
68         return ProcessResult::PROCESS_CONTINUE;
69     }
70
71     em_ptr->note = _("には耐性がある!", " resists!");
72     em_ptr->dam *= 2;
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);
76     }
77
78     return ProcessResult::PROCESS_CONTINUE;
79 }