for (int i = 0; i < max_q_idx; i++) {
quest_type *const q_ptr = &quest[i];
- q_ptr->status = QUEST_STATUS_UNTAKEN;
+ q_ptr->status = QuestStatusType::UNTAKEN;
q_ptr->cur_num = 0;
q_ptr->max_num = 0;
q_ptr->type = 0;
for (int i = MIN_RANDOM_QUEST + number_of_quests - 1; i >= MIN_RANDOM_QUEST; i--) {
quest_type *q_ptr = &quest[i];
monster_race *quest_r_ptr;
- q_ptr->status = QUEST_STATUS_TAKEN;
+ q_ptr->status = QuestStatusType::TAKEN;
determine_random_questor(player_ptr, q_ptr);
quest_r_ptr = &r_info[q_ptr->r_idx];
quest_r_ptr->flags1 |= RF1_QUESTOR;
init_flags = INIT_ASSIGN;
floor_ptr->inside_quest = QUEST_OBERON;
parse_fixed_map(player_ptr, "q_info.txt", 0, 0, 0, 0);
- quest[QUEST_OBERON].status = QUEST_STATUS_TAKEN;
+ quest[QUEST_OBERON].status = QuestStatusType::TAKEN;
floor_ptr->inside_quest = QUEST_SERPENT;
parse_fixed_map(player_ptr, "q_info.txt", 0, 0, 0, 0);
- quest[QUEST_SERPENT].status = QUEST_STATUS_TAKEN;
+ quest[QUEST_SERPENT].status = QuestStatusType::TAKEN;
floor_ptr->inside_quest = 0;
}
{
quest_type *q_ptr = &quest[player_ptr->current_floor_ptr->inside_quest];
if (confirm_quest && player_ptr->current_floor_ptr->inside_quest
- && (q_ptr->type == QUEST_TYPE_RANDOM || (q_ptr->flags & QUEST_FLAG_ONCE && q_ptr->status != QUEST_STATUS_COMPLETED)
+ && (q_ptr->type == QUEST_TYPE_RANDOM || (q_ptr->flags & QUEST_FLAG_ONCE && q_ptr->status != QuestStatusType::COMPLETED)
|| (q_ptr->flags & QUEST_FLAG_TOWER
- && ((q_ptr->status != QUEST_STATUS_STAGE_COMPLETED) || (down_stair && (quest[QUEST_TOWER1].status != QUEST_STATUS_COMPLETED)))))) {
+ && ((q_ptr->status != QuestStatusType::STAGE_COMPLETED) || (down_stair && (quest[QUEST_TOWER1].status != QuestStatusType::COMPLETED)))))) {
msg_print(_("この階を一度去ると二度と戻って来られません。", "You can't come back here once you leave this floor."));
return get_check(_("本当にこの階を去りますか?", "Really leave this floor? "));
}
leave_quest_check(player_ptr);
player_ptr->current_floor_ptr->inside_quest = g_ptr->special;
- if (!quest[player_ptr->current_floor_ptr->inside_quest].status) {
+ if (quest[player_ptr->current_floor_ptr->inside_quest].status != QuestStatusType::UNTAKEN) {
if (quest[player_ptr->current_floor_ptr->inside_quest].type != QUEST_TYPE_RANDOM) {
init_flags = INIT_ASSIGN;
parse_fixed_map(player_ptr, "q_info.txt", 0, 0, 0, 0);
}
- quest[player_ptr->current_floor_ptr->inside_quest].status = QUEST_STATUS_TAKEN;
+ quest[player_ptr->current_floor_ptr->inside_quest].status = QuestStatusType::TAKEN;
}
if (!player_ptr->current_floor_ptr->inside_quest) {
leave_quest_check(player_ptr);
leave_tower_check(player_ptr);
player_ptr->current_floor_ptr->inside_quest = g_ptr->special;
- if (!quest[player_ptr->current_floor_ptr->inside_quest].status) {
+ if (quest[player_ptr->current_floor_ptr->inside_quest].status != QuestStatusType::UNTAKEN) {
if (quest[player_ptr->current_floor_ptr->inside_quest].type != QUEST_TYPE_RANDOM) {
init_flags = INIT_ASSIGN;
parse_fixed_map(player_ptr, "q_info.txt", 0, 0, 0, 0);
}
- quest[player_ptr->current_floor_ptr->inside_quest].status = QUEST_STATUS_TAKEN;
+ quest[player_ptr->current_floor_ptr->inside_quest].status = QuestStatusType::TAKEN;
}
if (!player_ptr->current_floor_ptr->inside_quest) {
short i;
for (i = max_q_idx - 1; i > 0; i--) {
auto *const q_ptr = &quest[i];
- if (q_ptr->status != QUEST_STATUS_TAKEN) {
+ if (q_ptr->status != QuestStatusType::TAKEN) {
continue;
}
auto create_stairs = false;
auto reward = false;
- if ((quest_num > 0) && (quest[quest_num].status == QUEST_STATUS_TAKEN)) {
+ if ((quest_num > 0) && (quest[quest_num].status == QuestStatusType::TAKEN)) {
auto *const q_ptr = &quest[quest_num];
switch (q_ptr->type) {
case QUEST_TYPE_KILL_NUMBER:
}
if (q_ptr->flags & QUEST_FLAG_SILENT) {
- q_ptr->status = QUEST_STATUS_FINISHED;
+ q_ptr->status = QuestStatusType::FINISHED;
} else {
complete_quest(this->player_ptr, quest_num);
}
}
if ((quest_num == QUEST_OBERON) || (quest_num == QUEST_SERPENT)) {
- q_ptr->status = QUEST_STATUS_FINISHED;
+ q_ptr->status = QuestStatusType::FINISHED;
}
if (q_ptr->type == QUEST_TYPE_RANDOM) {
reward = true;
- q_ptr->status = QUEST_STATUS_FINISHED;
+ q_ptr->status = QuestStatusType::FINISHED;
}
break;
}
if (this->count_all_hostile_monsters() == 1) {
- q_ptr->status = QUEST_STATUS_STAGE_COMPLETED;
- if ((quest[QUEST_TOWER1].status == QUEST_STATUS_STAGE_COMPLETED) && (quest[QUEST_TOWER2].status == QUEST_STATUS_STAGE_COMPLETED)
- && (quest[QUEST_TOWER3].status == QUEST_STATUS_STAGE_COMPLETED)) {
+ q_ptr->status = QuestStatusType::STAGE_COMPLETED;
+ if ((quest[QUEST_TOWER1].status == QuestStatusType::STAGE_COMPLETED) && (quest[QUEST_TOWER2].status == QuestStatusType::STAGE_COMPLETED)
+ && (quest[QUEST_TOWER3].status == QuestStatusType::STAGE_COMPLETED)) {
complete_quest(this->player_ptr, QUEST_TOWER1);
}
}
for (int i = 0; i < max_q_idx; i++) {
monster_race *r_ptr;
BIT_FLAGS mode;
- if (quest[i].status != QUEST_STATUS_TAKEN || (quest[i].type != QUEST_TYPE_KILL_LEVEL && quest[i].type != QUEST_TYPE_RANDOM)
+ if (quest[i].status != QuestStatusType::TAKEN || (quest[i].type != QUEST_TYPE_KILL_LEVEL && quest[i].type != QUEST_TYPE_RANDOM)
|| quest[i].level != floor_ptr->dun_level || player_ptr->dungeon_idx != quest[i].dungeon || (quest[i].flags & QUEST_FLAG_PRESET)) {
continue;
}
* @param q_ptr クエスト情報への参照ポインタ
* @param stat ステータス(成功or失敗)
*/
-void record_quest_final_status(quest_type *q_ptr, PLAYER_LEVEL lev, int16_t stat)
+void record_quest_final_status(quest_type *q_ptr, PLAYER_LEVEL lev, QuestStatusType stat)
{
q_ptr->status = stat;
q_ptr->complev = lev;
break;
}
- record_quest_final_status(q_ptr, player_ptr->lev, QUEST_STATUS_COMPLETED);
+ record_quest_final_status(q_ptr, player_ptr->lev, QuestStatusType::COMPLETED);
if (q_ptr->flags & QUEST_FLAG_SILENT)
return;
{
/* Check if completed a quest */
for (QUEST_IDX i = 0; i < max_q_idx; i++) {
- if ((quest[i].type == QUEST_TYPE_FIND_ARTIFACT) && (quest[i].status == QUEST_STATUS_TAKEN) && (quest[i].k_idx == o_ptr->name1)) {
+ if ((quest[i].type == QUEST_TYPE_FIND_ARTIFACT) && (quest[i].status == QuestStatusType::TAKEN) && (quest[i].k_idx == o_ptr->name1)) {
complete_quest(player_ptr, i);
}
}
}
msg_print(_("この階は以前は誰かによって守られていたようだ…。", "It seems that this level was protected by someone before..."));
- record_quest_final_status(q_ptr, 0, QUEST_STATUS_FINISHED);
+ record_quest_final_status(q_ptr, 0, QuestStatusType::FINISHED);
}
/*!
return (floor_ptr->inside_quest);
for (QUEST_IDX i = 0; i < max_q_idx; i++) {
- if (quest[i].status != QUEST_STATUS_TAKEN)
+ if (quest[i].status != QuestStatusType::TAKEN)
continue;
if ((quest[i].type == QUEST_TYPE_KILL_LEVEL) && !(quest[i].flags & QUEST_FLAG_PRESET) && (quest[i].level == level)
return 0;
for (QUEST_IDX i = MIN_RANDOM_QUEST; i < MAX_RANDOM_QUEST + 1; i++) {
- if ((quest[i].type == QUEST_TYPE_RANDOM) && (quest[i].status == QUEST_STATUS_TAKEN) && (quest[i].level == level)
+ if ((quest[i].type == QUEST_TYPE_RANDOM) && (quest[i].status == QuestStatusType::TAKEN) && (quest[i].level == level)
&& (quest[i].dungeon == DUNGEON_ANGBAND)) {
return i;
}
return;
quest_type *const q_ptr = &quest[leaving_quest];
- bool is_one_time_quest = ((q_ptr->flags & QUEST_FLAG_ONCE) || (q_ptr->type == QUEST_TYPE_RANDOM)) && (q_ptr->status == QUEST_STATUS_TAKEN);
+ bool is_one_time_quest = ((q_ptr->flags & QUEST_FLAG_ONCE) || (q_ptr->type == QUEST_TYPE_RANDOM)) && (q_ptr->status == QuestStatusType::TAKEN);
if (!is_one_time_quest)
return;
- record_quest_final_status(q_ptr, player_ptr->lev, QUEST_STATUS_FAILED);
+ record_quest_final_status(q_ptr, player_ptr->lev, QuestStatusType::FAILED);
/* Additional settings */
switch (q_ptr->type) {
case QUEST_TYPE_TOWER:
- quest[QUEST_TOWER1].status = QUEST_STATUS_FAILED;
+ quest[QUEST_TOWER1].status = QuestStatusType::FAILED;
quest[QUEST_TOWER1].complev = player_ptr->lev;
break;
case QUEST_TYPE_FIND_ARTIFACT:
leaving_quest = player_ptr->current_floor_ptr->inside_quest;
bool is_leaving_from_tower = leaving_quest != 0;
is_leaving_from_tower &= quest[leaving_quest].type == QUEST_TYPE_TOWER;
- is_leaving_from_tower &= quest[QUEST_TOWER1].status != QUEST_STATUS_COMPLETED;
+ is_leaving_from_tower &= quest[QUEST_TOWER1].status != QuestStatusType::COMPLETED;
if (!is_leaving_from_tower)
return;
if (quest[leaving_quest].type != QUEST_TYPE_TOWER)
return;
- quest[QUEST_TOWER1].status = QUEST_STATUS_FAILED;
+ quest[QUEST_TOWER1].status = QuestStatusType::FAILED;
quest[QUEST_TOWER1].complev = player_ptr->lev;
update_playtime();
quest[QUEST_TOWER1].comptime = w_ptr->play_time;
#define MIN_RANDOM_QUEST 40 /*<! ランダムクエストを割り当てるクエストIDの開始値 */
#define MAX_RANDOM_QUEST 49 /*<! ランダムクエストを割り当てるクエストIDの終了値 */
-/*
- * @brief Quest status
- * @todo 後でenumにする.
- */
-#define QUEST_STATUS_UNTAKEN 0 /*!< クエストステータス状態:未発生*/
-#define QUEST_STATUS_TAKEN 1 /*!< クエストステータス状態:発生中*/
-#define QUEST_STATUS_COMPLETED 2 /*!< クエストステータス状態:達成*/
-#define QUEST_STATUS_REWARDED 3 /*!< クエストステータス状態:報酬受け取り前*/
-#define QUEST_STATUS_FINISHED 4 /*!< クエストステータス状態:完了*/
-#define QUEST_STATUS_FAILED 5 /*!< クエストステータス状態:失敗*/
-#define QUEST_STATUS_FAILED_DONE 6 /*!< クエストステータス状態:失敗完了*/
-#define QUEST_STATUS_STAGE_COMPLETED 7 /*!< クエストステータス状態:ステージ毎達成*/
+// clang-format off
+
+enum class QuestStatusType : short {
+ UNTAKEN = 0, /*!< クエストステータス状態:未発生*/
+ TAKEN = 1, /*!< クエストステータス状態:発生中*/
+ COMPLETED= 2, /*!< クエストステータス状態:達成*/
+ REWARDED = 3, /*!< クエストステータス状態:報酬受け取り前*/
+ FINISHED = 4, /*!< クエストステータス状態:完了*/
+ FAILED = 5, /*!< クエストステータス状態:失敗*/
+ FAILED_DONE = 6, /*!< クエストステータス状態:失敗完了*/
+ STAGE_COMPLETED = 7, /*!< クエストステータス状態:ステージ毎達成*/
+};
/*
* Quest type
#define QUEST_OBERON 8 /*<! オベロン打倒クエストに割り振るクエストID */
#define QUEST_SERPENT 9 /*<! サーペント打倒クエストに割り振るクエストID */
+// clang-format on
+
/*!
* @struct quest_type
* @brief クエスト情報の構造体 / Structure for the "quests".
public:
quest_type() = default;
virtual ~quest_type() = default;
- int16_t status; /*!< クエストの進行ステータス / Is the quest taken, completed, finished? */
+ QuestStatusType status; /*!< クエストの進行ステータス / Is the quest taken, completed, finished? */
int16_t type; /*!< クエストの種別 / The quest type */
GAME_TEXT name[60]; /*!< クエスト名 / Quest name */
struct object_type;;
struct player_type;
void determine_random_questor(player_type *player_ptr, quest_type *q_ptr);
-void record_quest_final_status(quest_type *q_ptr, PLAYER_LEVEL lev, int16_t stat);
+void record_quest_final_status(quest_type *q_ptr, PLAYER_LEVEL lev, QuestStatusType stat);
void complete_quest(player_type *player_ptr, QUEST_IDX quest_num);
void check_find_art_quest_completion(player_type *player_ptr, object_type *o_ptr);
void quest_discovery(QUEST_IDX q_idx);
if (w_ptr->game_turn < player_ptr->feeling_turn + delay && !cheat_xtra)
return;
- int quest_num = quest_number(player_ptr, floor_ptr->dun_level);
- if (quest_num
+ auto quest_num = quest_number(player_ptr, floor_ptr->dun_level);
+ if ((quest_num > 0)
&& (quest_type::is_fixed(quest_num) && !((quest_num == QUEST_OBERON) || (quest_num == QUEST_SERPENT) || !(quest[quest_num].flags & QUEST_FLAG_PRESET))))
return;
{
MONRACE_IDX quest_r_idx = 0;
for (DUNGEON_IDX i = 0; i < max_q_idx; i++) {
- if ((quest[i].status == QUEST_STATUS_TAKEN) && ((quest[i].type == QUEST_TYPE_KILL_LEVEL) || (quest[i].type == QUEST_TYPE_RANDOM))
+ if ((quest[i].status == QuestStatusType::TAKEN) && ((quest[i].type == QUEST_TYPE_KILL_LEVEL) || (quest[i].type == QUEST_TYPE_RANDOM))
&& (quest[i].level == player_ptr->current_floor_ptr->dun_level) && (player_ptr->dungeon_idx == quest[i].dungeon)
&& !(quest[i].flags & QUEST_FLAG_PRESET)) {
quest_r_idx = quest[i].r_idx;
generate_encounter = false;
set_floor_and_wall(0);
for (int i = 0; i < max_q_idx; i++)
- if (quest[i].status == QUEST_STATUS_REWARDED)
- quest[i].status = QUEST_STATUS_FINISHED;
+ if (quest[i].status == QuestStatusType::REWARDED)
+ quest[i].status = QuestStatusType::FINISHED;
}
static int16_t conv_terrain2feat[MAX_WILDERNESS];
sprintf(tmp, "%d", quest[atoi(b + 11)].type);
v = tmp;
} else if (prefix(b + 1, "QUEST")) {
- sprintf(tmp, "%d", quest[atoi(b + 6)].status);
+ sprintf(tmp, "%d", enum2i(quest[atoi(b + 6)].status));
v = tmp;
} else if (prefix(b + 1, "RANDOM")) {
sprintf(tmp, "%d", (int)(w_ptr->seed_town % atoi(b + 7)));
fprintf(fff, _("《遂行中のクエスト》\n", "< Current Quest >\n"));
for (QUEST_IDX i = 1; i < max_q_idx; i++) {
- bool is_print = quest[i].status == QUEST_STATUS_TAKEN;
- is_print |= (quest[i].status == QUEST_STATUS_STAGE_COMPLETED) && (quest[i].type == QUEST_TYPE_TOWER);
- is_print |= quest[i].status == QUEST_STATUS_COMPLETED;
+ bool is_print = quest[i].status == QuestStatusType::TAKEN;
+ is_print |= (quest[i].status == QuestStatusType::STAGE_COMPLETED) && (quest[i].type == QUEST_TYPE_TOWER);
+ is_print |= quest[i].status == QuestStatusType::COMPLETED;
if (!is_print)
continue;
if (quest[i].type != QUEST_TYPE_RANDOM) {
char note[512] = "\0";
- if (quest[i].status == QUEST_STATUS_TAKEN || quest[i].status == QUEST_STATUS_STAGE_COMPLETED) {
+ if (quest[i].status == QuestStatusType::TAKEN || quest[i].status == QuestStatusType::STAGE_COMPLETED) {
switch (quest[i].type) {
case QUEST_TYPE_KILL_LEVEL:
case QUEST_TYPE_KILL_ANY_LEVEL:
sprintf(tmp_str, _(" %s (危険度:%d階相当)%s\n", " %s (Danger level: %d)%s\n"), quest[i].name, (int)quest[i].level, note);
fputs(tmp_str, fff);
- if (quest[i].status == QUEST_STATUS_COMPLETED) {
+ if (quest[i].status == QuestStatusType::COMPLETED) {
sprintf(tmp_str, _(" クエスト達成 - まだ報酬を受けとってない。\n", " Quest Completed - Unrewarded\n"));
fputs(tmp_str, fff);
continue;
QUEST_IDX q_idx = quest_num[i];
quest_type *const q_ptr = &quest[q_idx];
- if (q_ptr->status == QUEST_STATUS_FINISHED && do_cmd_knowledge_quests_aux(player_ptr, fff, q_idx)) {
+ if (q_ptr->status == QuestStatusType::FINISHED && do_cmd_knowledge_quests_aux(player_ptr, fff, q_idx)) {
++total;
}
}
QUEST_IDX q_idx = quest_num[i];
quest_type *const q_ptr = &quest[q_idx];
- if (((q_ptr->status == QUEST_STATUS_FAILED_DONE) || (q_ptr->status == QUEST_STATUS_FAILED)) && do_cmd_knowledge_quests_aux(player_ptr, fff, q_idx)) {
+ if (((q_ptr->status == QuestStatusType::FAILED_DONE) || (q_ptr->status == QuestStatusType::FAILED)) && do_cmd_knowledge_quests_aux(player_ptr, fff, q_idx)) {
++total;
}
}
if (quest[i].flags & QUEST_FLAG_SILENT)
continue;
- if ((quest[i].type == QUEST_TYPE_RANDOM) && (quest[i].status == QUEST_STATUS_TAKEN)) {
+ if ((quest[i].type == QUEST_TYPE_RANDOM) && (quest[i].status == QuestStatusType::TAKEN)) {
total++;
sprintf(tmp_str, _(" %s (%d階, %s)\n", " %s (%d, %s)\n"), quest[i].name, (int)quest[i].level, r_info[quest[i].r_idx].name.c_str());
fputs(tmp_str, fff);
/* Quest 18 was removed */
if (h_older_than(1, 7, 0, 6)) {
quest[OLD_QUEST_WATER_CAVE] = {};
- quest[OLD_QUEST_WATER_CAVE].status = QUEST_STATUS_UNTAKEN;
+ quest[OLD_QUEST_WATER_CAVE].status = QuestStatusType::UNTAKEN;
}
load_wilderness_info(player_ptr);
#include "system/floor-type-definition.h"
#include "system/monster-race-definition.h"
#include "system/player-type-definition.h"
+#include "util/enum-converter.h"
/*!
* @brief ランダムクエスト情報の読み込み
static void load_quest_completion(quest_type *q_ptr)
{
- rd_s16b(&q_ptr->status);
int16_t tmp16s;
rd_s16b(&tmp16s);
+ q_ptr->status = i2enum<QuestStatusType>(tmp16s);
+ rd_s16b(&tmp16s);
q_ptr->level = tmp16s;
if (h_older_than(1, 0, 6))
quest_type *const q_ptr = &quest[i];
load_quest_completion(q_ptr);
- bool is_quest_running = (q_ptr->status == QUEST_STATUS_TAKEN);
- is_quest_running |= (!h_older_than(0, 3, 14) && (q_ptr->status == QUEST_STATUS_COMPLETED));
+ bool is_quest_running = (q_ptr->status == QuestStatusType::TAKEN);
+ is_quest_running |= (!h_older_than(0, 3, 14) && (q_ptr->status == QuestStatusType::COMPLETED));
is_quest_running |= (!h_older_than(1, 0, 7) && (i >= MIN_RANDOM_QUEST) && (i <= (MIN_RANDOM_QUEST + max_rquests_load)));
if (!is_quest_running)
continue;
q_ptr->dungeon = tmp8u;
}
- if (q_ptr->status == QUEST_STATUS_TAKEN || q_ptr->status == QUEST_STATUS_UNTAKEN)
+ if (q_ptr->status == QuestStatusType::TAKEN || q_ptr->status == QuestStatusType::UNTAKEN)
if (r_info[q_ptr->r_idx].flags1 & RF1_UNIQUE)
r_info[q_ptr->r_idx].flags1 |= RF1_QUESTOR;
}
{
quest.assign(max_q_idx, {});
for (auto &q_ref : quest) {
- q_ref.status = QUEST_STATUS_UNTAKEN;
+ q_ref.status = QuestStatusType::UNTAKEN;
}
}
quest_type *q_ptr;
q_ptr = &quest[q_index];
- if (q_ptr->status == QUEST_STATUS_COMPLETED) {
- q_ptr->status = QUEST_STATUS_REWARDED;
+ if (q_ptr->status == QuestStatusType::COMPLETED) {
+ q_ptr->status = QuestStatusType::REWARDED;
print_questinfo(player_ptr, q_index, false);
reinit_wilderness = true;
return;
}
- if (q_ptr->status == QUEST_STATUS_TAKEN) {
+ if (q_ptr->status == QuestStatusType::TAKEN) {
put_str(_("あなたは現在のクエストを終了させていません!", "You have not completed your current quest yet!"), 8, 0);
put_str(_("CTRL-Qを使えばクエストの状態がチェックできます。", "Use CTRL-Q to check the status of your quest."), 9, 0);
clear_bldg(4, 18);
msg_print(_("放棄しました。", "You gave up."));
msg_print(nullptr);
- record_quest_final_status(q_ptr, player_ptr->lev, QUEST_STATUS_FAILED);
+ record_quest_final_status(q_ptr, player_ptr->lev, QuestStatusType::FAILED);
}
- if (q_ptr->status == QUEST_STATUS_FAILED) {
+ if (q_ptr->status == QuestStatusType::FAILED) {
print_questinfo(player_ptr, q_index, false);
- q_ptr->status = QUEST_STATUS_FAILED_DONE;
+ q_ptr->status = QuestStatusType::FAILED_DONE;
reinit_wilderness = true;
return;
}
- if (q_ptr->status != QUEST_STATUS_UNTAKEN)
+ if (q_ptr->status != QuestStatusType::UNTAKEN)
return;
- q_ptr->status = QUEST_STATUS_TAKEN;
+ q_ptr->status = QuestStatusType::TAKEN;
reinit_wilderness = true;
if (q_ptr->type != QUEST_TYPE_KILL_ANY_LEVEL) {
print_questinfo(player_ptr, q_index, true);
for (short i = 0; i < max_q_idx; i++) {
auto *const q_ptr = &quest[i];
- wr_s16b(q_ptr->status);
+ wr_s16b(enum2i(q_ptr->status));
wr_s16b((int16_t)q_ptr->level);
wr_byte((byte)q_ptr->complev);
wr_u32b(q_ptr->comptime);
- bool is_quest_running = q_ptr->status == QUEST_STATUS_TAKEN;
- is_quest_running |= q_ptr->status == QUEST_STATUS_COMPLETED;
+ bool is_quest_running = q_ptr->status == QuestStatusType::TAKEN;
+ is_quest_running |= q_ptr->status == QuestStatusType::COMPLETED;
is_quest_running |= !quest_type::is_fixed(i);
if (!is_quest_running)
continue;
DEPTH max_depth = d_info[select_dungeon].maxdepth;
if (select_dungeon == DUNGEON_ANGBAND) {
- if (quest[QUEST_OBERON].status != QUEST_STATUS_FINISHED)
+ if (quest[QUEST_OBERON].status != QuestStatusType::FINISHED)
max_depth = 98;
- else if (quest[QUEST_SERPENT].status != QUEST_STATUS_FINISHED)
+ else if (quest[QUEST_SERPENT].status != QuestStatusType::FINISHED)
max_depth = 99;
}
init_flags = i2enum<init_flags_type>(INIT_SHOW_TEXT | INIT_ASSIGN);
player_ptr->current_floor_ptr->inside_quest = (QUEST_IDX)tmp_int;
parse_fixed_map(player_ptr, "q_info.txt", 0, 0, 0, 0);
- quest[tmp_int].status = QUEST_STATUS_TAKEN;
+ quest[tmp_int].status = QuestStatusType::TAKEN;
if (quest[tmp_int].dungeon == 0)
exe_enter_quest(player_ptr, (QUEST_IDX)tmp_int);
}
return;
}
- if (quest[player_ptr->current_floor_ptr->inside_quest].status == QUEST_STATUS_TAKEN)
+ if (quest[player_ptr->current_floor_ptr->inside_quest].status == QuestStatusType::TAKEN)
complete_quest(player_ptr, player_ptr->current_floor_ptr->inside_quest);
}
}
for (auto i = MIN_RANDOM_QUEST; i < MAX_RANDOM_QUEST + 1; i++) {
auto q_ptr = &quest[i];
- if ((q_ptr->type == QUEST_TYPE_RANDOM) && (q_ptr->status == QUEST_STATUS_TAKEN) && (q_ptr->level < player_ptr->current_floor_ptr->dun_level)) {
- q_ptr->status = QUEST_STATUS_FAILED;
+ if ((q_ptr->type == QUEST_TYPE_RANDOM) && (q_ptr->status == QuestStatusType::TAKEN) && (q_ptr->level < player_ptr->current_floor_ptr->dun_level)) {
+ q_ptr->status = QuestStatusType::FAILED;
q_ptr->complev = (byte)player_ptr->lev;
update_playtime();
q_ptr->comptime = w_ptr->play_time;