OSDN Git Service

83c7cb97fb5778871aef191b389cc128660eeb54
[hengband/hengband.git] / src / quest.h
1 /*
2  * Quest constants
3  */
4 #define MIN_RANDOM_QUEST 40 /*<! ランダムクエストを割り当てるクエストIDの開始値 */
5 #define MAX_RANDOM_QUEST 49 /*<! ランダムクエストを割り当てるクエストIDの終了値 */
6
7 /*
8  * Quest status
9  */
10 #define QUEST_STATUS_UNTAKEN              0 /*!< クエストステータス状態:未発生*/
11 #define QUEST_STATUS_TAKEN                1 /*!< クエストステータス状態:発生中*/
12 #define QUEST_STATUS_COMPLETED            2 /*!< クエストステータス状態:達成*/
13 #define QUEST_STATUS_REWARDED             3 /*!< クエストステータス状態:報酬受け取り前*/
14 #define QUEST_STATUS_FINISHED             4 /*!< クエストステータス状態:完了*/
15 #define QUEST_STATUS_FAILED               5 /*!< クエストステータス状態:失敗*/
16 #define QUEST_STATUS_FAILED_DONE          6 /*!< クエストステータス状態:失敗完了*/
17 #define QUEST_STATUS_STAGE_COMPLETED      7 /*!< クエストステータス状態:ステージ毎達成*/
18
19 /*
20  * Quest type
21  */
22 #define QUEST_TYPE_KILL_LEVEL                1 /*!< クエスト目的: 特定のユニークモンスターを倒す */
23 #define QUEST_TYPE_KILL_ANY_LEVEL            2 /*!< クエスト目的: イベント受託時点でランダムで選ばれた特定のユニークモンスターを倒す */
24 #define QUEST_TYPE_FIND_ARTIFACT             3 /*!< クエスト目的: 特定のアーティファクトを発見する */
25 #define QUEST_TYPE_FIND_EXIT                 4 /*!< クエスト目的: 脱出する */
26 #define QUEST_TYPE_KILL_NUMBER               5 /*!< クエスト目的: モンスターを無差別に特定数倒す */
27 #define QUEST_TYPE_KILL_ALL                  6 /*!< クエスト目的: エリア中のすべてのモンスターを全て倒す */
28 #define QUEST_TYPE_RANDOM                    7 /*!< クエスト目的: ランダムクエストとして選ばれたユニーク1体を倒す */
29 #define QUEST_TYPE_TOWER                     8 /*!< クエスト目的: 複数のエリアの全てのモンスターを倒す */
30
31 /*
32  * Quest flags
33  */
34 #define QUEST_FLAG_SILENT  0x01 /*!< クエストフラグ: クエスト進行に関する情報表示を抑止する / no messages from completion */
35 #define QUEST_FLAG_PRESET  0x02 /*!< クエストフラグ: クエストがダンジョン外で発生する / quest is outside the main dungeon */
36 #define QUEST_FLAG_ONCE    0x04 /*!< クエストフラグ: クエストがフロアを出た時点で完了する / quest is marked finished after leaving */
37 #define QUEST_FLAG_TOWER   0x08 /*!< クエストフラグ: クエスト:塔の形式で進行する / Tower quest is special */
38
39 /*!
40  * @brief 該当IDが固定クエストかどうかを判定する / Check is the quest index is "fixed"
41  * @param Q_IDX クエストID
42  * @return 固定クエストならばTRUEを返す
43  */
44 #define is_fixed_quest_idx(Q_IDX) (((Q_IDX) < MIN_RANDOM_QUEST) || ((Q_IDX) > MAX_RANDOM_QUEST))
45
46 #define QUEST_TOWER1 5 /*<! 塔クエスト(第1階層)に割り振るクエストID */
47 #define QUEST_TOWER2 6 /*<! 塔クエスト(第2階層)に割り振るクエストID */
48 #define QUEST_TOWER3 7 /*<! 塔クエスト(第3階層)に割り振るクエストID */
49 #define QUEST_OBERON 8 /*<! オベロン打倒クエストに割り振るクエストID */
50 #define QUEST_SERPENT 9 /*<! サーペント打倒クエストに割り振るクエストID */
51
52
53 extern void determine_random_questor(quest_type *q_ptr);
54 extern void complete_quest(QUEST_IDX quest_num);
55 extern void check_quest_completion(monster_type *m_ptr);
56 extern void check_find_art_quest_completion(object_type *o_ptr);
57 void quest_discovery(QUEST_IDX q_idx);
58 extern QUEST_IDX quest_number(DEPTH level);
59 extern QUEST_IDX random_quest_number(DEPTH level);
60 extern void leave_quest_check(void);
61 extern void leave_tower_check(void);