OSDN Git Service

Merge pull request #3532 from sikabane-works/release/3.0.0.87-alpha
[hengbandforosx/hengbandosx.git] / src / player / patron.h
1 #pragma once
2
3 #include "system/angband.h"
4 #include <string>
5 #include <vector>
6
7 #define MAX_PATRON 16 /*!< カオスパトロンの最大定義数 / The number of "patrons" available (for Chaos Warriors) */
8
9 /* カオスパトロンからの報酬種別定義 / Chaos Warrior: Reward types: */
10 enum patron_reward {
11     REW_POLY_SLF = 1, /*!< カオスパトロンからの報酬: 自己変容 */
12     REW_GAIN_EXP = 2, /*!< カオスパトロンからの報酬: 経験値増加 */
13     REW_LOSE_EXP = 3, /*!< カオスパトロンからの報酬: 経験値減少 */
14     REW_GOOD_OBJ = 4, /*!< カオスパトロンからの報酬: GOODなアイテム単体の下賜 */
15     REW_GREA_OBJ = 5, /*!< カオスパトロンからの報酬: GREATなアイテム単体の下賜 */
16     REW_CHAOS_WP = 6, /*!< カオスパトロンからの報酬: 混沌武器の下賜 */
17     REW_GOOD_OBS = 7, /*!< カオスパトロンからの報酬: GOODなアイテム複数の下賜 */
18     REW_GREA_OBS = 8, /*!< カオスパトロンからの報酬: GREATなアイテム複数の下賜 */
19     REW_TY_CURSE = 9, /*!< カオスパトロンからの報酬: 太古の怨念 */
20     REW_SUMMON_M = 10, /*!< カオスパトロンからの報酬: 敵対的なモンスターの召喚(通常) */
21     REW_H_SUMMON = 11, /*!< カオスパトロンからの報酬: 敵対的なモンスターの召喚(hi-summon) */
22     REW_DO_HAVOC = 12, /*!< カオスパトロンからの報酬: 混沌招来 */
23     REW_GAIN_ABL = 13, /*!< カオスパトロンからの報酬: 増強 */
24     REW_LOSE_ABL = 14, /*!< カオスパトロンからの報酬: 1能力低下 */
25     REW_RUIN_ABL = 15, /*!< カオスパトロンからの報酬: 全能力低下 */
26     REW_AUGM_ABL = 16, /*!< カオスパトロンからの報酬: 1能力上昇 */
27     REW_POLY_WND = 17, /*!< カオスパトロンからの報酬: 傷の変化 */
28     REW_HEAL_FUL = 18, /*!< カオスパトロンからの報酬: 完全回復 */
29     REW_HURT_LOT = 19, /*!< カオスパトロンからの報酬: 分解の球によるダメージ */
30     REW_CURSE_WP = 20, /*!< カオスパトロンからの報酬: 武器呪縛 */
31     REW_CURSE_AR = 21, /*!< カオスパトロンからの報酬: 防具呪縛 */
32     REW_PISS_OFF = 22, /*!< カオスパトロンからの報酬: 苛立ち */
33     REW_WRATH = 23, /*!< カオスパトロンからの報酬: 怒り */
34     REW_DESTRUCT = 24, /*!< カオスパトロンからの報酬: *破壊* */
35     REW_GENOCIDE = 25, /*!< カオスパトロンからの報酬: シンボル抹殺 */
36     REW_MASS_GEN = 26, /*!< カオスパトロンからの報酬: 周辺抹殺 */
37     REW_DISPEL_C = 27, /*!< カオスパトロンからの報酬: モンスター退散 */
38     REW_UNUSED_1 = 28, /*!< カオスパトロンからの報酬: 未使用 */
39     REW_UNUSED_2 = 29, /*!< カオスパトロンからの報酬: 未使用 */
40     REW_UNUSED_3 = 30, /*!< カオスパトロンからの報酬: 未使用 */
41     REW_UNUSED_4 = 31, /*!< カオスパトロンからの報酬: 未使用 */
42     REW_UNUSED_5 = 32, /*!< カオスパトロンからの報酬: 未使用 */
43     REW_IGNORE = 33, /*!< カオスパトロンからの報酬: 無視 */
44     REW_SER_UNDE = 34, /*!< カオスパトロンからの報酬: アンデッドの下僕下賜 */
45     REW_SER_DEMO = 35, /*!< カオスパトロンからの報酬: 悪魔の下僕下賜 */
46     REW_SER_MONS = 36, /*!< カオスパトロンからの報酬: モンスターの下僕下賜 */
47 };
48
49 class PlayerType;
50 enum player_ability_type : int;
51
52 /*!
53  * @brief パトロン情報の定義
54  */
55 class Patron {
56 public:
57     std::string name; //!< パトロン名
58 #ifdef JP
59     std::string ename; //!< PatronName
60     Patron(const char *name, const char *ename, std::vector<patron_reward> reward_table, const player_ability_type boost_stat);
61 #else
62     Patron(const char *name, std::vector<patron_reward> reward_table, const player_ability_type boost_stat);
63 #endif
64     virtual ~Patron() = default;
65
66     // @note C4458 クラスメンバーの隠蔽 への対応として末尾に「_」を付ける.
67     void gain_level_reward(PlayerType *player_ptr_, int chosen_reward);
68     void admire(PlayerType *player_ptr_);
69
70 private:
71     PlayerType *player_ptr = nullptr; //!< プレイヤー参照ポインタ
72     std::vector<patron_reward> reward_table; //!< 報酬テーブル
73     player_ability_type boost_stat; //!< 強化能力値傾向
74 };
75
76 extern std::vector<Patron> patron_list;