OSDN Git Service

[Refactor] #37353 コメント整理。 / Refactor comments.
[hengband/hengband.git] / src / spells-status.c
1 #include "angband.h"
2 #include "avatar.h"
3 #include "spells-status.h"
4 #include "projection.h"
5
6 /*!
7  * @brief \83\82\83\93\83X\83^\81[\89ñ\95\9c\8f\88\97\9d
8  * @param dir \95û\8cü(5\82È\82ç\82Î\83O\83\8d\81[\83o\83\8b\95Ï\90\94 target_col/target_row \82Ì\8dÀ\95W\82ð\96Ú\95W\82É\82·\82é)
9  * @param dam \88Ð\97Í
10  * @return \8dì\97p\82ª\8eÀ\8dÛ\82É\82 \82Á\82½\8fê\8d\87TRUE\82ð\95Ô\82·
11  */
12 bool heal_monster(DIRECTION dir, HIT_POINT dam)
13 {
14         BIT_FLAGS flg = PROJECT_STOP | PROJECT_KILL | PROJECT_REFLECTABLE;
15         return (project_hook(GF_OLD_HEAL, dir, dam, flg));
16 }
17
18 /*!
19  * @brief \83\82\83\93\83X\83^\81[\89Á\91¬\8f\88\97\9d
20  * @param dir \95û\8cü(5\82È\82ç\82Î\83O\83\8d\81[\83o\83\8b\95Ï\90\94 target_col/target_row \82Ì\8dÀ\95W\82ð\96Ú\95W\82É\82·\82é)
21  * @param power \8cø\97Í
22  * @return \8dì\97p\82ª\8eÀ\8dÛ\82É\82 \82Á\82½\8fê\8d\87TRUE\82ð\95Ô\82·
23  */
24 bool speed_monster(DIRECTION dir, int power)
25 {
26         BIT_FLAGS flg = PROJECT_STOP | PROJECT_KILL | PROJECT_REFLECTABLE;
27         return (project_hook(GF_OLD_SPEED, dir, power, flg));
28 }
29
30 /*!
31  * @brief \83\82\83\93\83X\83^\81[\8c¸\91¬\8f\88\97\9d
32  * @param dir \95û\8cü(5\82È\82ç\82Î\83O\83\8d\81[\83o\83\8b\95Ï\90\94 target_col/target_row \82Ì\8dÀ\95W\82ð\96Ú\95W\82É\82·\82é)
33  * @param power \8cø\97Í
34  * @return \8dì\97p\82ª\8eÀ\8dÛ\82É\82 \82Á\82½\8fê\8d\87TRUE\82ð\95Ô\82·
35  */
36 bool slow_monster(DIRECTION dir, int power)
37 {
38         BIT_FLAGS flg = PROJECT_STOP | PROJECT_KILL | PROJECT_REFLECTABLE;
39         return (project_hook(GF_OLD_SLOW, dir, power, flg));
40 }
41
42 /*!
43  * @brief \83\82\83\93\83X\83^\81[\8dÃ\96°\8f\88\97\9d
44  * @param dir \95û\8cü(5\82È\82ç\82Î\83O\83\8d\81[\83o\83\8b\95Ï\90\94 target_col/target_row \82Ì\8dÀ\95W\82ð\96Ú\95W\82É\82·\82é)
45  * @param power \8cø\97Í
46  * @return \8dì\97p\82ª\8eÀ\8dÛ\82É\82 \82Á\82½\8fê\8d\87TRUE\82ð\95Ô\82·
47  */
48 bool sleep_monster(DIRECTION dir, int power)
49 {
50         BIT_FLAGS flg = PROJECT_STOP | PROJECT_KILL | PROJECT_REFLECTABLE;
51         return (project_hook(GF_OLD_SLEEP, dir, power, flg));
52 }
53
54 /*!
55  * @brief \83\82\83\93\83X\83^\81[\8dS\91©(STASIS)\8f\88\97\9d
56  * @param dir \95û\8cü(5\82È\82ç\82Î\83O\83\8d\81[\83o\83\8b\95Ï\90\94 target_col/target_row \82Ì\8dÀ\95W\82ð\96Ú\95W\82É\82·\82é)
57  * @return \8dì\97p\82ª\8eÀ\8dÛ\82É\82 \82Á\82½\8fê\8d\87TRUE\82ð\95Ô\82·
58  * @details \88Ð\97Í\82Í\83v\83\8c\83C\83\84\81[\83\8c\83x\83\8b*2\82É\8cÅ\92è
59  */
60 bool stasis_monster(DIRECTION dir)
61 {
62         return (fire_ball_hide(GF_STASIS, dir, p_ptr->lev * 2, 0));
63 }
64
65 /*!
66  * @brief \8e×\88«\82È\83\82\83\93\83X\83^\81[\8dS\91©(STASIS)\8f\88\97\9d
67  * @param dir \95û\8cü(5\82È\82ç\82Î\83O\83\8d\81[\83o\83\8b\95Ï\90\94 target_col/target_row \82Ì\8dÀ\95W\82ð\96Ú\95W\82É\82·\82é)
68  * @return \8dì\97p\82ª\8eÀ\8dÛ\82É\82 \82Á\82½\8fê\8d\87TRUE\82ð\95Ô\82·
69  * @details \88Ð\97Í\82Í\83v\83\8c\83C\83\84\81[\83\8c\83x\83\8b*2\82É\8cÅ\92è
70  */
71 bool stasis_evil(DIRECTION dir)
72 {
73         return (fire_ball_hide(GF_STASIS_EVIL, dir, p_ptr->lev * 2, 0));
74 }
75
76 /*!
77  * @brief \83\82\83\93\83X\83^\81[\8d¬\97\90\8f\88\97\9d
78  * @param dir \95û\8cü(5\82È\82ç\82Î\83O\83\8d\81[\83o\83\8b\95Ï\90\94 target_col/target_row \82Ì\8dÀ\95W\82ð\96Ú\95W\82É\82·\82é)
79  * @param plev \83v\83\8c\83C\83\84\81[\83\8c\83x\83\8b(=\8cø\97Í)
80  * @return \8dì\97p\82ª\8eÀ\8dÛ\82É\82 \82Á\82½\8fê\8d\87TRUE\82ð\95Ô\82·
81  */
82 bool confuse_monster(DIRECTION dir, PLAYER_LEVEL plev)
83 {
84         BIT_FLAGS flg = PROJECT_STOP | PROJECT_KILL | PROJECT_REFLECTABLE;
85         return (project_hook(GF_OLD_CONF, dir, plev, flg));
86 }
87
88 /*!
89  * @brief \83\82\83\93\83X\83^\81[\9eN\9eO\8f\88\97\9d
90  * @param dir \95û\8cü(5\82È\82ç\82Î\83O\83\8d\81[\83o\83\8b\95Ï\90\94 target_col/target_row \82Ì\8dÀ\95W\82ð\96Ú\95W\82É\82·\82é)
91  * @param plev \83v\83\8c\83C\83\84\81[\83\8c\83x\83\8b(=\8cø\97Í)
92  * @return \8dì\97p\82ª\8eÀ\8dÛ\82É\82 \82Á\82½\8fê\8d\87TRUE\82ð\95Ô\82·
93  */
94 bool stun_monster(DIRECTION dir, PLAYER_LEVEL plev)
95 {
96         BIT_FLAGS flg = PROJECT_STOP | PROJECT_KILL | PROJECT_REFLECTABLE;
97         return (project_hook(GF_STUN, dir, plev, flg));
98 }
99
100 /*!
101  * @brief \83`\83F\83\93\83W\83\82\83\93\83X\83^\81[\8f\88\97\9d
102  * @param dir \95û\8cü(5\82È\82ç\82Î\83O\83\8d\81[\83o\83\8b\95Ï\90\94 target_col/target_row \82Ì\8dÀ\95W\82ð\96Ú\95W\82É\82·\82é)
103  * @param power \8cø\97Í
104  * @return \8dì\97p\82ª\8eÀ\8dÛ\82É\82 \82Á\82½\8fê\8d\87TRUE\82ð\95Ô\82·
105  */
106 bool poly_monster(DIRECTION dir, int power)
107 {
108         BIT_FLAGS flg = PROJECT_STOP | PROJECT_KILL | PROJECT_REFLECTABLE;
109         bool tester = (project_hook(GF_OLD_POLY, dir, power, flg));
110         if (tester)
111                 chg_virtue(V_CHANCE, 1);
112         return(tester);
113 }
114
115 /*!
116  * @brief \83N\83\8d\81[\83\93\83\82\83\93\83X\83^\81[\8f\88\97\9d
117  * @param dir \95û\8cü(5\82È\82ç\82Î\83O\83\8d\81[\83o\83\8b\95Ï\90\94 target_col/target_row \82Ì\8dÀ\95W\82ð\96Ú\95W\82É\82·\82é)
118  * @return \8dì\97p\82ª\8eÀ\8dÛ\82É\82 \82Á\82½\8fê\8d\87TRUE\82ð\95Ô\82·
119  */
120 bool clone_monster(DIRECTION dir)
121 {
122         BIT_FLAGS flg = PROJECT_STOP | PROJECT_KILL | PROJECT_REFLECTABLE;
123         return (project_hook(GF_OLD_CLONE, dir, 0, flg));
124 }
125
126 /*!
127  * @brief \83\82\83\93\83X\83^\81[\8b°\8dQ\8f\88\97\9d
128  * @param dir \95û\8cü(5\82È\82ç\82Î\83O\83\8d\81[\83o\83\8b\95Ï\90\94 target_col/target_row \82Ì\8dÀ\95W\82ð\96Ú\95W\82É\82·\82é)
129  * @param plev \83v\83\8c\83C\83\84\81[\83\8c\83x\83\8b(=\8cø\97Í)
130  * @return \8dì\97p\82ª\8eÀ\8dÛ\82É\82 \82Á\82½\8fê\8d\87TRUE\82ð\95Ô\82·
131  */
132 bool fear_monster(DIRECTION dir, PLAYER_LEVEL plev)
133 {
134         BIT_FLAGS flg = PROJECT_STOP | PROJECT_KILL | PROJECT_REFLECTABLE;
135         return (project_hook(GF_TURN_ALL, dir, plev, flg));
136 }
137
138 /*!
139 * @brief \89Ì\82Ì\92â\8e~\82ð\8f\88\97\9d\82·\82é / Stop singing if the player is a Bard
140 * @return \82È\82µ
141 */
142 void stop_singing(void)
143 {
144         if (p_ptr->pclass != CLASS_BARD) return;
145
146         /* Are there interupted song? */
147         if (INTERUPTING_SONG_EFFECT(p_ptr))
148         {
149                 /* Forget interupted song */
150                 INTERUPTING_SONG_EFFECT(p_ptr) = MUSIC_NONE;
151                 return;
152         }
153
154         /* The player is singing? */
155         if (!SINGING_SONG_EFFECT(p_ptr)) return;
156
157         /* Hack -- if called from set_action(), avoid recursive loop */
158         if (p_ptr->action == ACTION_SING) set_action(ACTION_NONE);
159
160         /* Message text of each song or etc. */
161         do_spell(REALM_MUSIC, SINGING_SONG_ID(p_ptr), SPELL_STOP);
162
163         SINGING_SONG_EFFECT(p_ptr) = MUSIC_NONE;
164         SINGING_SONG_ID(p_ptr) = 0;
165         p_ptr->update |= (PU_BONUS);
166         p_ptr->redraw |= (PR_STATUS);
167 }