OSDN Git Service

[WIP] [Refcator] #3287 PlayerType::window_flags に関わる処理を、RedrawingFlagsUpdater に集約した
[hengbandforosx/hengbandosx.git] / src / blue-magic / blue-magic-spirit-curse.cpp
1 /*!
2  * @file blue-magic-spirit-curse.cpp
3  * @brief 青魔法の呪い系処理定義
4  */
5
6 #include "blue-magic/blue-magic-spirit-curse.h"
7 #include "blue-magic/blue-magic-util.h"
8 #include "effect/attribute-types.h"
9 #include "monster-race/race-ability-flags.h"
10 #include "mspell/mspell-damage-calculator.h"
11 #include "spell-kind/spells-launcher.h"
12 #include "system/player-type-definition.h"
13 #include "target/target-getter.h"
14 #include "view/display-messages.h"
15
16 bool cast_blue_drain_mana(PlayerType *player_ptr, bmc_type *bmc_ptr)
17 {
18     if (!get_aim_dir(player_ptr, &bmc_ptr->dir)) {
19         return false;
20     }
21
22     bmc_ptr->damage = monspell_bluemage_damage(player_ptr, MonsterAbilityType::DRAIN_MANA, bmc_ptr->plev, DAM_ROLL);
23     fire_ball_hide(player_ptr, AttributeType::DRAIN_MANA, bmc_ptr->dir, bmc_ptr->damage, 0);
24     return true;
25 }
26
27 bool cast_blue_mind_blast(PlayerType *player_ptr, bmc_type *bmc_ptr)
28 {
29     if (!get_aim_dir(player_ptr, &bmc_ptr->dir)) {
30         return false;
31     }
32
33     bmc_ptr->damage = monspell_bluemage_damage(player_ptr, MonsterAbilityType::MIND_BLAST, bmc_ptr->plev, DAM_ROLL);
34     fire_ball_hide(player_ptr, AttributeType::MIND_BLAST, bmc_ptr->dir, bmc_ptr->damage, 0);
35     return true;
36 }
37
38 bool cast_blue_brain_smash(PlayerType *player_ptr, bmc_type *bmc_ptr)
39 {
40     if (!get_aim_dir(player_ptr, &bmc_ptr->dir)) {
41         return false;
42     }
43
44     bmc_ptr->damage = monspell_bluemage_damage(player_ptr, MonsterAbilityType::BRAIN_SMASH, bmc_ptr->plev, DAM_ROLL);
45     fire_ball_hide(player_ptr, AttributeType::BRAIN_SMASH, bmc_ptr->dir, bmc_ptr->damage, 0);
46     return true;
47 }
48
49 bool cast_blue_curse_1(PlayerType *player_ptr, bmc_type *bmc_ptr)
50 {
51     if (!get_aim_dir(player_ptr, &bmc_ptr->dir)) {
52         return false;
53     }
54
55     bmc_ptr->damage = monspell_bluemage_damage(player_ptr, MonsterAbilityType::CAUSE_1, bmc_ptr->plev, DAM_ROLL);
56     fire_ball_hide(player_ptr, AttributeType::CAUSE_1, bmc_ptr->dir, bmc_ptr->damage, 0);
57     return true;
58 }
59
60 bool cast_blue_curse_2(PlayerType *player_ptr, bmc_type *bmc_ptr)
61 {
62     if (!get_aim_dir(player_ptr, &bmc_ptr->dir)) {
63         return false;
64     }
65
66     bmc_ptr->damage = monspell_bluemage_damage(player_ptr, MonsterAbilityType::CAUSE_2, bmc_ptr->plev, DAM_ROLL);
67     fire_ball_hide(player_ptr, AttributeType::CAUSE_2, bmc_ptr->dir, bmc_ptr->damage, 0);
68     return true;
69 }
70
71 bool cast_blue_curse_3(PlayerType *player_ptr, bmc_type *bmc_ptr)
72 {
73     if (!get_aim_dir(player_ptr, &bmc_ptr->dir)) {
74         return false;
75     }
76
77     bmc_ptr->damage = monspell_bluemage_damage(player_ptr, MonsterAbilityType::CAUSE_3, bmc_ptr->plev, DAM_ROLL);
78     fire_ball_hide(player_ptr, AttributeType::CAUSE_3, bmc_ptr->dir, bmc_ptr->damage, 0);
79     return true;
80 }
81
82 bool cast_blue_curse_4(PlayerType *player_ptr, bmc_type *bmc_ptr)
83 {
84     if (!get_aim_dir(player_ptr, &bmc_ptr->dir)) {
85         return false;
86     }
87
88     bmc_ptr->damage = monspell_bluemage_damage(player_ptr, MonsterAbilityType::CAUSE_4, bmc_ptr->plev, DAM_ROLL);
89     fire_ball_hide(player_ptr, AttributeType::CAUSE_4, bmc_ptr->dir, bmc_ptr->damage, 0);
90     return true;
91 }