• R/O
  • HTTP
  • SSH
  • HTTPS

hengband: Commit

変愚蛮怒のメインリポジトリです


Commit MetaInfo

Revision816f1b99f6acae5acb22cc0728f113f0a643d456 (tree)
Time2019-02-02 00:13:14
AuthorDeskull <deskull@user...>
CommiterDeskull

Log Message

[Refactor] #37353 spells1.c から spell-diceroll.c を分離。 / Separate spell-diceroll.c from spells1.c.

Change Summary

Incremental Difference

--- a/Hengband_vcs2017/Hengband/Hengband.vcxproj
+++ b/Hengband_vcs2017/Hengband/Hengband.vcxproj
@@ -239,6 +239,7 @@
239239 <ClCompile Include="..\..\src\shoot.c" />
240240 <ClCompile Include="..\..\src\snipe.c" />
241241 <ClCompile Include="..\..\src\sort.c" />
242+ <ClCompile Include="..\..\src\spells-diceroll.c" />
242243 <ClCompile Include="..\..\src\spells-object.c" />
243244 <ClCompile Include="..\..\src\spells-status.c" />
244245 <ClCompile Include="..\..\src\spells-summon.c" />
@@ -325,6 +326,7 @@
325326 <ClInclude Include="..\..\src\selfinfo.h" />
326327 <ClInclude Include="..\..\src\shoot.h" />
327328 <ClInclude Include="..\..\src\sort.h" />
329+ <ClInclude Include="..\..\src\spells-diceroll.h" />
328330 <ClInclude Include="..\..\src\spells-object.h" />
329331 <ClInclude Include="..\..\src\spells-status.h" />
330332 <ClInclude Include="..\..\src\spells-summon.h" />
--- /dev/null
+++ b/src/spells-diceroll.c
@@ -0,0 +1,85 @@
1+#include "angband.h"
2+
3+#include "spells-diceroll.h"
4+
5+#include "monster.h"
6+#include "monsterrace-hook.h"
7+#include "mutation.h"
8+#include "projection.h"
9+#include "rooms.h"
10+
11+
12+/*!
13+ * @brief モンスター魅了用セービングスロー共通部(汎用系)
14+ * @param pow 魅了パワー
15+ * @param m_ptr 対象モンスター
16+ * @return 魅了に抵抗したらTRUE
17+ */
18+bool_hack common_saving_throw_charm(player_type *player_ptr, HIT_POINT pow, monster_type *m_ptr)
19+{
20+ monster_race *r_ptr = &r_info[m_ptr->r_idx];
21+
22+ if (p_ptr->inside_arena) return TRUE;
23+
24+ /* Memorize a flag */
25+ if (r_ptr->flagsr & RFR_RES_ALL)
26+ {
27+ if (is_original_ap_and_seen(m_ptr)) r_ptr->r_flagsr |= (RFR_RES_ALL);
28+ return TRUE;
29+ }
30+
31+ if (r_ptr->flags3 & RF3_NO_CONF)
32+ {
33+ if (is_original_ap_and_seen(m_ptr)) r_ptr->r_flags3 |= (RF3_NO_CONF);
34+ return TRUE;
35+ }
36+
37+ if (r_ptr->flags1 & RF1_QUESTOR || m_ptr->mflag2 & MFLAG2_NOPET) return TRUE;
38+
39+ pow += (adj_chr_chm[player_ptr->stat_ind[A_CHR]] - 1);
40+ if ((r_ptr->flags1 & RF1_UNIQUE) || (r_ptr->flags7 & RF7_NAZGUL)) pow = pow * 2 / 3;
41+ return (r_ptr->level > randint1((pow - 10) < 1 ? 1 : (pow - 10)) + 5);
42+}
43+
44+/*!
45+ * @brief モンスター服従用セービングスロー共通部(部族依存系)
46+ * @param pow 服従パワー
47+ * @param m_ptr 対象モンスター
48+ * @return 服従に抵抗したらTRUE
49+ */
50+bool_hack common_saving_throw_control(player_type *player_ptr, HIT_POINT pow, monster_type *m_ptr)
51+{
52+ monster_race *r_ptr = &r_info[m_ptr->r_idx];
53+
54+ if (p_ptr->inside_arena) return TRUE;
55+
56+ /* Memorize a flag */
57+ if (r_ptr->flagsr & RFR_RES_ALL)
58+ {
59+ if (is_original_ap_and_seen(m_ptr)) r_ptr->r_flagsr |= (RFR_RES_ALL);
60+ return TRUE;
61+ }
62+
63+ if (r_ptr->flags1 & RF1_QUESTOR || m_ptr->mflag2 & MFLAG2_NOPET) return TRUE;
64+
65+ pow += adj_chr_chm[player_ptr->stat_ind[A_CHR]] - 1;
66+ if ((r_ptr->flags1 & RF1_UNIQUE) || (r_ptr->flags7 & RF7_NAZGUL)) pow = pow * 2 / 3;
67+ return (r_ptr->level > randint1((pow - 10) < 1 ? 1 : (pow - 10)) + 5);
68+}
69+
70+/*!
71+* @brief 一部ボルト魔法のビーム化確率を算出する / Prepare standard probability to become beam for fire_bolt_or_beam()
72+* @return ビーム化確率(%)
73+* @details
74+* ハードコーティングによる実装が行われている。
75+* メイジは(レベル)%、ハイメイジ、スペルマスターは(レベル)%、それ以外の職業は(レベル/2)%
76+*/
77+PERCENTAGE beam_chance(void)
78+{
79+ if (p_ptr->pclass == CLASS_MAGE)
80+ return (PERCENTAGE)(p_ptr->lev);
81+ if (p_ptr->pclass == CLASS_HIGH_MAGE || p_ptr->pclass == CLASS_SORCERER)
82+ return (PERCENTAGE)(p_ptr->lev + 10);
83+
84+ return (PERCENTAGE)(p_ptr->lev / 2);
85+}
--- /dev/null
+++ b/src/spells-diceroll.h
@@ -0,0 +1,5 @@
1+#pragma once
2+
3+extern bool_hack common_saving_throw_control(player_type *player_ptr, HIT_POINT pow, monster_type *m_ptr);
4+extern bool_hack common_saving_throw_charm(player_type *player_ptr, HIT_POINT pow, monster_type *m_ptr);
5+
--- a/src/spells1.c
+++ b/src/spells1.c
@@ -19,6 +19,7 @@
1919
2020 #include "monster.h"
2121 #include "monster-status.h"
22+#include "spells-diceroll.h"
2223 #include "spells-summon.h"
2324 #include "monsterrace-hook.h"
2425
@@ -39,81 +40,6 @@ static int rakubadam_p; /*!< 落馬した際のダメージ量 */
3940 int project_length = 0; /*!< 投射の射程距離 */
4041
4142
42-/*!
43- * @brief モンスター魅了用セービングスロー共通部(汎用系)
44- * @param pow 魅了パワー
45- * @param m_ptr 対象モンスター
46- * @return 魅了に抵抗したらTRUE
47- */
48-static bool_hack common_saving_throw_charm(player_type *player_ptr, HIT_POINT pow, monster_type *m_ptr)
49-{
50- monster_race *r_ptr = &r_info[m_ptr->r_idx];
51-
52- if(p_ptr->inside_arena) return TRUE;
53-
54- /* Memorize a flag */
55- if (r_ptr->flagsr & RFR_RES_ALL)
56- {
57- if (is_original_ap_and_seen(m_ptr)) r_ptr->r_flagsr |= (RFR_RES_ALL);
58- return TRUE;
59- }
60-
61- if (r_ptr->flags3 & RF3_NO_CONF)
62- {
63- if (is_original_ap_and_seen(m_ptr)) r_ptr->r_flags3 |= (RF3_NO_CONF);
64- return TRUE;
65- }
66-
67- if (r_ptr->flags1 & RF1_QUESTOR || m_ptr->mflag2 & MFLAG2_NOPET) return TRUE;
68-
69- pow += (adj_chr_chm[player_ptr->stat_ind[A_CHR]] - 1);
70- if((r_ptr->flags1 & RF1_UNIQUE) || (r_ptr->flags7 & RF7_NAZGUL)) pow = pow * 2 / 3;
71- return (r_ptr->level > randint1((pow - 10) < 1 ? 1 : (pow - 10)) + 5);
72-}
73-
74-/*!
75- * @brief モンスター服従用セービングスロー共通部(部族依存系)
76- * @param pow 服従パワー
77- * @param m_ptr 対象モンスター
78- * @return 服従に抵抗したらTRUE
79- */
80-static bool_hack common_saving_throw_control(player_type *player_ptr, HIT_POINT pow, monster_type *m_ptr)
81-{
82- monster_race *r_ptr = &r_info[m_ptr->r_idx];
83-
84- if (p_ptr->inside_arena) return TRUE;
85-
86- /* Memorize a flag */
87- if (r_ptr->flagsr & RFR_RES_ALL)
88- {
89- if (is_original_ap_and_seen(m_ptr)) r_ptr->r_flagsr |= (RFR_RES_ALL);
90- return TRUE;
91- }
92-
93- if (r_ptr->flags1 & RF1_QUESTOR || m_ptr->mflag2 & MFLAG2_NOPET) return TRUE;
94-
95- pow += adj_chr_chm[player_ptr->stat_ind[A_CHR]] - 1;
96- if ((r_ptr->flags1 & RF1_UNIQUE) || (r_ptr->flags7 & RF7_NAZGUL)) pow = pow * 2 / 3;
97- return (r_ptr->level > randint1((pow - 10) < 1 ? 1 : (pow - 10)) + 5);
98-}
99-
100-/*!
101-* @brief 一部ボルト魔法のビーム化確率を算出する / Prepare standard probability to become beam for fire_bolt_or_beam()
102-* @return ビーム化確率(%)
103-* @details
104-* ハードコーティングによる実装が行われている。
105-* メイジは(レベル)%、ハイメイジ、スペルマスターは(レベル)%、それ以外の職業は(レベル/2)%
106-*/
107-PERCENTAGE beam_chance(void)
108-{
109- if (p_ptr->pclass == CLASS_MAGE)
110- return (PERCENTAGE)(p_ptr->lev);
111- if (p_ptr->pclass == CLASS_HIGH_MAGE || p_ptr->pclass == CLASS_SORCERER)
112- return (PERCENTAGE)(p_ptr->lev + 10);
113-
114- return (PERCENTAGE)(p_ptr->lev / 2);
115-}
116-
11743
11844 /*!
11945 * @brief 配置した鏡リストの次を取得する /
Show on old repository browser