OSDN Git Service

Merge branch 'master' of git.osdn.net:/gitroot/hengband/hengband
[hengband/hengband.git] / src / effect / effect-player-curse.c
1 #include "effect/effect-player-curse.h"
2 #include "blue-magic/blue-magic-checker.h"
3 #include "mind/mind-mirror-master.h"
4 #include "monster-race/race-indice-types.h"
5 #include "object-enchant/object-curse.h"
6 #include "player/player-damage.h"
7 #include "status/bad-status-setter.h"
8 #include "view/display-messages.h"
9 #include "world/world.h"
10
11 void effect_player_curse_1(player_type *target_ptr, effect_player_type *ep_ptr)
12 {
13     if ((randint0(100 + ep_ptr->rlev / 2) < target_ptr->skill_sav) && !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, ep_ptr->killer, ep_ptr->monspell);
20     }
21 }
22
23 void effect_player_curse_2(player_type *target_ptr, effect_player_type *ep_ptr)
24 {
25     if ((randint0(100 + ep_ptr->rlev / 2) < target_ptr->skill_sav) && !check_multishadow(target_ptr)) {
26         msg_print(_("しかし効力を跳ね返した!", "You resist the effects!"));
27         learn_spell(target_ptr, ep_ptr->monspell);
28     } else {
29         if (!check_multishadow(target_ptr))
30             curse_equipment(target_ptr, 25, MIN(ep_ptr->rlev / 2 - 15, 5));
31         ep_ptr->get_damage = take_hit(target_ptr, DAMAGE_ATTACK, ep_ptr->dam, ep_ptr->killer, ep_ptr->monspell);
32     }
33 }
34
35 void effect_player_curse_3(player_type *target_ptr, effect_player_type *ep_ptr)
36 {
37     if ((randint0(100 + ep_ptr->rlev / 2) < target_ptr->skill_sav) && !check_multishadow(target_ptr)) {
38         msg_print(_("しかし効力を跳ね返した!", "You resist the effects!"));
39         learn_spell(target_ptr, ep_ptr->monspell);
40     } else {
41         if (!check_multishadow(target_ptr))
42             curse_equipment(target_ptr, 33, MIN(ep_ptr->rlev / 2 - 15, 15));
43         ep_ptr->get_damage = take_hit(target_ptr, DAMAGE_ATTACK, ep_ptr->dam, ep_ptr->killer, ep_ptr->monspell);
44     }
45 }
46
47 void effect_player_curse_4(player_type *target_ptr, effect_player_type *ep_ptr)
48 {
49     if ((randint0(100 + ep_ptr->rlev / 2) < target_ptr->skill_sav) && !(ep_ptr->m_ptr->r_idx == MON_KENSHIROU) && !check_multishadow(target_ptr)) {
50         msg_print(_("しかし秘孔を跳ね返した!", "You resist the effects!"));
51         learn_spell(target_ptr, ep_ptr->monspell);
52     } else {
53         ep_ptr->get_damage = take_hit(target_ptr, DAMAGE_ATTACK, ep_ptr->dam, ep_ptr->killer, ep_ptr->monspell);
54         if (!check_multishadow(target_ptr))
55             (void)set_cut(target_ptr, target_ptr->cut + damroll(10, 10));
56     }
57 }