}
/*!
+ * @brief クエストの最終状態を記録する(成功or失敗、時間)
+ * @param player_type プレイヤー情報への参照ポインタ
+ * @param q_ptr クエスト情報への参照ポインタ
+ * @param stat ステータス(成功or失敗)
+ * @return なし
+ */
+void record_quest_final_status(quest_type *q_ptr, PLAYER_LEVEL lev, QUEST_STATUS stat)
+{
+ q_ptr->status = stat;
+ q_ptr->complev = lev;
+ update_playtime();
+ q_ptr->comptime = current_world_ptr->play_time;
+}
+
+/*!
* @brief クエストを達成状態にする /
* @param player_ptr プレーヤーへの参照ポインタ
* @param quest_num 達成状態にしたいクエストのID
break;
}
- q_ptr->status = QUEST_STATUS_COMPLETED;
- q_ptr->complev = player_ptr->lev;
- update_playtime();
- q_ptr->comptime = current_world_ptr->play_time;
+ record_quest_final_status(q_ptr, player_ptr->lev, QUEST_STATUS_COMPLETED);
if (q_ptr->flags & QUEST_FLAG_SILENT)
return;
}
msg_print(_("この階は以前は誰かによって守られていたようだ…。", "It seems that this level was protected by someone before..."));
- quest[q_idx].status = QUEST_STATUS_FINISHED;
- q_ptr->complev = 0;
- update_playtime();
- q_ptr->comptime = current_world_ptr->play_time;
+ record_quest_final_status(q_ptr, 0, QUEST_STATUS_FINISHED);
}
/*!
if (!is_one_time_quest)
return;
- q_ptr->status = QUEST_STATUS_FAILED;
- q_ptr->complev = player_ptr->lev;
- update_playtime();
- q_ptr->comptime = current_world_ptr->play_time;
+ record_quest_final_status(q_ptr, player_ptr->lev, QUEST_STATUS_FAILED);
/* Additional settings */
switch (q_ptr->type) {
extern int leaving_quest;
void determine_random_questor(player_type *player_ptr, quest_type *q_ptr);
+void record_quest_final_status(quest_type *q_ptr, PLAYER_LEVEL lev, QUEST_STATUS 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);
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);
- get_questinfo(player_ptr, q_index, FALSE);
+ get_questinfo(player_ptr, q_index, true);
put_str(format(_("現在のクエスト「%s」", "Current quest is '%s'."), q_ptr->name), 11, 0);
- if (q_ptr->type != QUEST_TYPE_KILL_LEVEL) {
+ if (q_ptr->type != QUEST_TYPE_KILL_LEVEL || q_ptr->dungeon == 0) {
put_str(_("クエストを終わらせたら戻って来て下さい。", "Return when you have completed your quest."), 12, 0);
return;
}
clear_bldg(4, 18);
msg_print(_("放棄しました。", "You gave up."));
msg_print(NULL);
- q_ptr->status = QUEST_STATUS_FAILED;
+ record_quest_final_status(q_ptr, player_ptr->lev, QUEST_STATUS_FAILED);
}
if (q_ptr->status == QUEST_STATUS_FAILED) {