OSDN Git Service

[Refactor] #38862 Moved angband.h, h-*.h and system-variables.c/h
[hengband/hengband.git] / src / effect / effect-player-curse.c
1 #include "system/angband.h"
2 #include "effect/effect-player-util.h"
3 #include "effect/effect-player-curse.h"
4 #include "player/player-damage.h"
5 #include "world/world.h"
6 #include "monster-spell.h"
7 #include "object/object-curse.h"
8 #include "player/player-effects.h"
9
10 void effect_player_curse_1(player_type *target_ptr,
11                            effect_player_type *ep_ptr) {
12   if ((randint0(100 + ep_ptr->rlev / 2) < target_ptr->skill_sav) &&
13       !CHECK_MULTISHADOW(target_ptr)) {
14     msg_print(_("しかし効力を跳ね返した!", "You resist the effects!"));
15     learn_spell(target_ptr, ep_ptr->monspell);
16   } else {
17     if (!CHECK_MULTISHADOW(target_ptr))
18       curse_equipment(target_ptr, 15, 0);
19     ep_ptr->get_damage = take_hit(target_ptr, DAMAGE_ATTACK, ep_ptr->dam,
20                                   ep_ptr->killer, ep_ptr->monspell);
21   }
22 }
23
24 void effect_player_curse_2(player_type *target_ptr,
25                            effect_player_type *ep_ptr) {
26   if ((randint0(100 + ep_ptr->rlev / 2) < target_ptr->skill_sav) &&
27       !CHECK_MULTISHADOW(target_ptr)) {
28     msg_print(_("しかし効力を跳ね返した!", "You resist the effects!"));
29     learn_spell(target_ptr, ep_ptr->monspell);
30   } else {
31     if (!CHECK_MULTISHADOW(target_ptr))
32       curse_equipment(target_ptr, 25, MIN(ep_ptr->rlev / 2 - 15, 5));
33     ep_ptr->get_damage = take_hit(target_ptr, DAMAGE_ATTACK, ep_ptr->dam,
34                                   ep_ptr->killer, ep_ptr->monspell);
35   }
36 }
37
38 void effect_player_curse_3(player_type *target_ptr,
39                            effect_player_type *ep_ptr) {
40   if ((randint0(100 + ep_ptr->rlev / 2) < target_ptr->skill_sav) &&
41       !CHECK_MULTISHADOW(target_ptr)) {
42     msg_print(_("しかし効力を跳ね返した!", "You resist the effects!"));
43     learn_spell(target_ptr, ep_ptr->monspell);
44   } else {
45     if (!CHECK_MULTISHADOW(target_ptr))
46       curse_equipment(target_ptr, 33, MIN(ep_ptr->rlev / 2 - 15, 15));
47     ep_ptr->get_damage = take_hit(target_ptr, DAMAGE_ATTACK, ep_ptr->dam,
48                                   ep_ptr->killer, ep_ptr->monspell);
49   }
50 }
51
52 void effect_player_curse_4(player_type *target_ptr,
53                            effect_player_type *ep_ptr) {
54   if ((randint0(100 + ep_ptr->rlev / 2) < target_ptr->skill_sav) &&
55       !(ep_ptr->m_ptr->r_idx == MON_KENSHIROU) &&
56       !CHECK_MULTISHADOW(target_ptr)) {
57     msg_print(_("しかし秘孔を跳ね返した!", "You resist the effects!"));
58     learn_spell(target_ptr, ep_ptr->monspell);
59   } else {
60     ep_ptr->get_damage = take_hit(target_ptr, DAMAGE_ATTACK, ep_ptr->dam,
61                                   ep_ptr->killer, ep_ptr->monspell);
62     if (!CHECK_MULTISHADOW(target_ptr))
63       (void)set_cut(target_ptr, target_ptr->cut + damroll(10, 10));
64   }
65 }