OSDN Git Service

Merge pull request #3821 from Slimebreath6078/feature/fix_red_chiokovo_lv_99
[hengbandforosx/hengbandosx.git] / src / effect / effect-player-curse.cpp
1 #include "effect/effect-player-curse.h"
2 #include "blue-magic/blue-magic-checker.h"
3 #include "effect/effect-player.h"
4 #include "mind/mind-mirror-master.h"
5 #include "monster-race/race-indice-types.h"
6 #include "object-enchant/object-curse.h"
7 #include "player/player-damage.h"
8 #include "status/bad-status-setter.h"
9 #include "system/monster-entity.h"
10 #include "system/player-type-definition.h"
11 #include "view/display-messages.h"
12 #include "world/world.h"
13
14 void effect_player_curse_1(PlayerType *player_ptr, EffectPlayerType *ep_ptr)
15 {
16     if ((randint0(100 + ep_ptr->rlev / 2) < player_ptr->skill_sav) && !check_multishadow(player_ptr)) {
17         msg_print(_("しかし効力を跳ね返した!", "You resist the effects!"));
18     } else {
19         if (!check_multishadow(player_ptr)) {
20             curse_equipment(player_ptr, 15, 0);
21         }
22         ep_ptr->get_damage = take_hit(player_ptr, DAMAGE_ATTACK, ep_ptr->dam, ep_ptr->killer);
23     }
24 }
25
26 void effect_player_curse_2(PlayerType *player_ptr, EffectPlayerType *ep_ptr)
27 {
28     if ((randint0(100 + ep_ptr->rlev / 2) < player_ptr->skill_sav) && !check_multishadow(player_ptr)) {
29         msg_print(_("しかし効力を跳ね返した!", "You resist the effects!"));
30     } else {
31         if (!check_multishadow(player_ptr)) {
32             curse_equipment(player_ptr, 25, std::min(ep_ptr->rlev / 2 - 15, 5));
33         }
34         ep_ptr->get_damage = take_hit(player_ptr, DAMAGE_ATTACK, ep_ptr->dam, ep_ptr->killer);
35     }
36 }
37
38 void effect_player_curse_3(PlayerType *player_ptr, EffectPlayerType *ep_ptr)
39 {
40     if ((randint0(100 + ep_ptr->rlev / 2) < player_ptr->skill_sav) && !check_multishadow(player_ptr)) {
41         msg_print(_("しかし効力を跳ね返した!", "You resist the effects!"));
42     } else {
43         if (!check_multishadow(player_ptr)) {
44             curse_equipment(player_ptr, 33, std::min(ep_ptr->rlev / 2 - 15, 15));
45         }
46         ep_ptr->get_damage = take_hit(player_ptr, DAMAGE_ATTACK, ep_ptr->dam, ep_ptr->killer);
47     }
48 }
49
50 void effect_player_curse_4(PlayerType *player_ptr, EffectPlayerType *ep_ptr)
51 {
52     if ((randint0(100 + ep_ptr->rlev / 2) < player_ptr->skill_sav) && (ep_ptr->m_ptr->r_idx != MonsterRaceId::KENSHIROU) && !check_multishadow(player_ptr)) {
53         msg_print(_("しかし秘孔を跳ね返した!", "You resist the effects!"));
54         return;
55     }
56
57     ep_ptr->get_damage = take_hit(player_ptr, DAMAGE_ATTACK, ep_ptr->dam, ep_ptr->killer);
58     if (!check_multishadow(player_ptr)) {
59         (void)BadStatusSetter(player_ptr).mod_cut(damroll(10, 10));
60     }
61 }