Hengband  2.2.1
quest.h
[詳解]
1 #pragma once
2 
3 /*
4  * Quest constants
5  */
6 #define MIN_RANDOM_QUEST 40 /*<! ランダムクエストを割り当てるクエストIDの開始値 */
7 #define MAX_RANDOM_QUEST 49 /*<! ランダムクエストを割り当てるクエストIDの終了値 */
8 
9 /*
10  * Quest status
11  */
12 #define QUEST_STATUS_UNTAKEN 0 /*!< クエストステータス状態:未発生*/
13 #define QUEST_STATUS_TAKEN 1 /*!< クエストステータス状態:発生中*/
14 #define QUEST_STATUS_COMPLETED 2 /*!< クエストステータス状態:達成*/
15 #define QUEST_STATUS_REWARDED 3 /*!< クエストステータス状態:報酬受け取り前*/
16 #define QUEST_STATUS_FINISHED 4 /*!< クエストステータス状態:完了*/
17 #define QUEST_STATUS_FAILED 5 /*!< クエストステータス状態:失敗*/
18 #define QUEST_STATUS_FAILED_DONE 6 /*!< クエストステータス状態:失敗完了*/
19 #define QUEST_STATUS_STAGE_COMPLETED 7 /*!< クエストステータス状態:ステージ毎達成*/
20 
21 /*
22  * Quest type
23  */
24 #define QUEST_TYPE_KILL_LEVEL 1 /*!< クエスト目的: 特定のユニークモンスターを倒す */
25 #define QUEST_TYPE_KILL_ANY_LEVEL 2 /*!< クエスト目的: イベント受託時点でランダムで選ばれた特定のユニークモンスターを倒す */
26 #define QUEST_TYPE_FIND_ARTIFACT 3 /*!< クエスト目的: 特定のアーティファクトを発見する */
27 #define QUEST_TYPE_FIND_EXIT 4 /*!< クエスト目的: 脱出する */
28 #define QUEST_TYPE_KILL_NUMBER 5 /*!< クエスト目的: モンスターを無差別に特定数倒す */
29 #define QUEST_TYPE_KILL_ALL 6 /*!< クエスト目的: エリア中のすべてのモンスターを全て倒す */
30 #define QUEST_TYPE_RANDOM 7 /*!< クエスト目的: ランダムクエストとして選ばれたユニーク1体を倒す */
31 #define QUEST_TYPE_TOWER 8 /*!< クエスト目的: 複数のエリアの全てのモンスターを倒す */
32 
33 /*
34  * Quest flags
35  */
36 #define QUEST_FLAG_SILENT 0x01 /*!< クエストフラグ: クエスト進行に関する情報表示を抑止する / no messages from completion */
37 #define QUEST_FLAG_PRESET 0x02 /*!< クエストフラグ: クエストがダンジョン外で発生する / quest is outside the main dungeon */
38 #define QUEST_FLAG_ONCE 0x04 /*!< クエストフラグ: クエストがフロアを出た時点で完了する / quest is marked finished after leaving */
39 #define QUEST_FLAG_TOWER 0x08 /*!< クエストフラグ: クエスト:塔の形式で進行する / Tower quest is special */
40 
41 /*!
42  * @brief 該当IDが固定クエストかどうかを判定する / Check is the quest index is "fixed"
43  * @param Q_IDX クエストID
44  * @return 固定クエストならばTRUEを返す
45  */
46 #define is_fixed_quest_idx(Q_IDX) (((Q_IDX) < MIN_RANDOM_QUEST) || ((Q_IDX) > MAX_RANDOM_QUEST))
47 
48 #define QUEST_TOWER1 5 /*<! 塔クエスト(第1階層)に割り振るクエストID */
49 #define QUEST_TOWER2 6 /*<! 塔クエスト(第2階層)に割り振るクエストID */
50 #define QUEST_TOWER3 7 /*<! 塔クエスト(第3階層)に割り振るクエストID */
51 #define QUEST_OBERON 8 /*<! オベロン打倒クエストに割り振るクエストID */
52 #define QUEST_SERPENT 9 /*<! サーペント打倒クエストに割り振るクエストID */
53 
54 /*!
55  * @struct quest_type
56  * @brief クエスト情報の構造体 / Structure for the "quests".
57  */
58 
59 struct quest_type
60 {
61  QUEST_STATUS status; /*!< クエストの進行ステータス / Is the quest taken, completed, finished? */
62  QUEST_TYPE type; /*!< クエストの種別 / The quest type */
63 
64  GAME_TEXT name[60]; /*!< クエスト名 / Quest name */
65  DEPTH level; /*!< 処理階層 / Dungeon level */
66  MONRACE_IDX r_idx; /*!< クエスト対象のモンスターID / Monster race */
67 
68  MONSTER_NUMBER cur_num; /*!< 撃破したモンスターの数 / Number killed */
69  MONSTER_NUMBER max_num; /*!< 求められるモンスターの撃破数 / Number required */
70 
71  KIND_OBJECT_IDX k_idx; /*!< クエスト対象のアイテムID / object index */
72  MONSTER_NUMBER num_mon; /*!< QUEST_TYPE_KILL_NUMBER時の目標撃破数 number of monsters on level */
73 
74  BIT_FLAGS flags; /*!< クエストに関するフラグビット / quest flags */
75  DUNGEON_IDX dungeon; /*!< クエスト対象のダンジョンID / quest dungeon */
76 
77  PLAYER_LEVEL complev; /*!< クリア時プレイヤーレベル / player level (complete) */
78  REAL_TIME comptime; /*!< クリア時ゲーム時間 / quest clear time*/
79 };
80 
81 typedef struct quest_type quest_type;
82 extern quest_type *quest;
83 extern QUEST_IDX max_q_idx;
84 extern char quest_text[10][80];
85 extern int quest_text_line;
86 extern int leaving_quest;
87 
88 extern void determine_random_questor(quest_type *q_ptr);
89 extern void complete_quest(QUEST_IDX quest_num);
90 extern void check_quest_completion(monster_type *m_ptr);
92 extern void quest_discovery(QUEST_IDX q_idx);
95 extern void leave_quest_check(void);
96 extern void leave_tower_check(void);
97 extern void do_cmd_quest(void);
98 
s16b QUEST_TYPE
クエストの種別ID
Definition: h-type.h:254
PLAYER_LEVEL complev
クリア時プレイヤーレベル / player level (complete)
Definition: quest.h:77
QUEST_IDX random_quest_number(DEPTH level)
新しく入ったダンジョンの階層に固定されているランダムクエストを探し出しIDを返す。
Definition: quest.c:425
void check_quest_completion(monster_type *m_ptr)
特定の敵を倒した際にクエスト達成処理 / Check for "Quest" completion when a quest monster is killed or charmed.
Definition: quest.c:118
BIT_FLAGS flags
クエストに関するフラグビット / quest flags
Definition: quest.h:74
void check_find_art_quest_completion(object_type *o_ptr)
特定のアーティファクトを入手した際のクエスト達成処理 / Check for "Quest" completion when a quest monster is killed or charmed.
Definition: quest.c:330
Definition: monster.h:39
MONSTER_NUMBER cur_num
撃破したモンスターの数 / Number killed
Definition: quest.h:68
Definition: object.h:189
s32b MONSTER_NUMBER
ゲーム中のモンスター数型を定義
Definition: h-type.h:177
void do_cmd_quest(void)
クエスト入り口にプレイヤーが乗った際の処理 / Do building commands
Definition: quest.c:525
void determine_random_questor(quest_type *q_ptr)
ランダムクエストの討伐ユニークを決める / Determine the random quest uniques
Definition: quest.c:44
DEPTH level
処理階層 / Dungeon level
Definition: quest.h:65
void leave_quest_check(void)
クエスト階層から離脱する際の処理
Definition: quest.c:449
MONSTER_NUMBER max_num
求められるモンスターの撃破数 / Number required
Definition: quest.h:69
QUEST_STATUS status
クエストの進行ステータス / Is the quest taken, completed, finished?
Definition: quest.h:61
REAL_TIME comptime
クリア時ゲーム時間 / quest clear time
Definition: quest.h:78
s16b QUEST_IDX
ゲーム中のクエストID型を定義
Definition: h-type.h:136
s32b DEPTH
ゲーム中の階層レベルの型定義
Definition: h-type.h:216
s16b QUEST_STATUS
クエストの状態ID
Definition: h-type.h:255
s16b MONRACE_IDX
ゲーム中のモンスター種族ID型を定義
Definition: h-type.h:128
void quest_discovery(QUEST_IDX q_idx)
クエストの導入メッセージを表示する / Discover quest
Definition: quest.c:350
u32b BIT_FLAGS
32ビットのフラグ配列の型定義
Definition: h-type.h:225
char GAME_TEXT
ゲーム中のテキスト型定義
Definition: h-type.h:152
s16b PLAYER_LEVEL
ゲーム中のプレイヤーレベルの型を定義
Definition: h-type.h:197
QUEST_IDX max_q_idx
Maximum number of quests
Definition: quest.c:22
char quest_text[10][80]
Quest text
Definition: quest.c:23
s16b DUNGEON_IDX
ゲーム中のダンジョンID型を定義
Definition: h-type.h:130
s16b KIND_OBJECT_IDX
ゲーム中のベースアイテムID型を定義
Definition: h-type.h:142
QUEST_TYPE type
クエストの種別 / The quest type
Definition: quest.h:62
QUEST_IDX quest_number(DEPTH level)
新しく入ったダンジョンの階層に固定されている一般のクエストを探し出しIDを返す。 / Hack – Check if a level is a "quest" level
Definition: quest.c:397
DUNGEON_IDX dungeon
クエスト対象のダンジョンID / quest dungeon
Definition: quest.h:75
KIND_OBJECT_IDX k_idx
クエスト対象のアイテムID / object index
Definition: quest.h:71
void leave_tower_check(void)
「塔」クエストの各階層から離脱する際の処理
Definition: quest.c:502
void complete_quest(QUEST_IDX quest_num)
クエストを達成状態にする /
Definition: quest.c:83
MONRACE_IDX r_idx
クエスト対象のモンスターID / Monster race
Definition: quest.h:66
u32b REAL_TIME
実時刻の型定義
Definition: h-type.h:220
quest_type * quest
Quest info
Definition: quest.c:21
MONSTER_NUMBER num_mon
QUEST_TYPE_KILL_NUMBER時の目標撃破数 number of monsters on level
Definition: quest.h:72
クエスト情報の構造体 / Structure for the "quests".
Definition: quest.h:59
int leaving_quest
Definition: quest.c:25
int quest_text_line
Current line of the quest text
Definition: quest.c:24
GAME_TEXT name[60]
クエスト名 / Quest name
Definition: quest.h:64