OSDN Git Service

[Fix] #37353 クエスト対象のモンスターが表示されなくなる可能性のあるを修正 / Fixed possible issue that quest monster...
[hengband/hengband.git] / src / quest.c
index a2aac0b..9b5510f 100644 (file)
@@ -43,9 +43,9 @@ static concptr find_quest[] =
  * @param q_ptr クエスト構造体の参照ポインタ
  * @return なし
  */
-void determine_random_questor(quest_type *q_ptr)
+void determine_random_questor(player_type *player_ptr, quest_type *q_ptr)
 {
-       get_mon_num_prep(mon_hook_quest, NULL);
+       get_mon_num_prep(player_ptr, mon_hook_quest, NULL);
 
        MONRACE_IDX r_idx;
        while (TRUE)
@@ -54,7 +54,7 @@ void determine_random_questor(quest_type *q_ptr)
                 * Random monster 5 - 10 levels out of depth
                 * (depending on level)
                 */
-               r_idx = get_mon_num(q_ptr->level + 5 + randint1(q_ptr->level / 10));
+               r_idx = get_mon_num(player_ptr, q_ptr->level + 5 + randint1(q_ptr->level / 10));
                monster_race *r_ptr;
                r_ptr = &r_info[r_idx];
 
@@ -90,10 +90,10 @@ void complete_quest(player_type *player_ptr, QUEST_IDX quest_num)
        switch (q_ptr->type)
        {
        case QUEST_TYPE_RANDOM:
-               if (record_rand_quest) exe_write_diary(player_ptr, NIKKI_RAND_QUEST_C, quest_num, NULL);
+               if (record_rand_quest) exe_write_diary(player_ptr, DIARY_RAND_QUEST_C, quest_num, NULL);
                break;
        default:
-               if (record_fix_quest) exe_write_diary(player_ptr, NIKKI_FIX_QUEST_C, quest_num, NULL);
+               if (record_fix_quest) exe_write_diary(player_ptr, DIARY_FIX_QUEST_C, quest_num, NULL);
                break;
        }
 
@@ -364,8 +364,8 @@ void quest_discovery(QUEST_IDX q_idx)
                return;
        }
 
-       bool is_random_quest_skipped = (r_ptr->flags1 & RF1_UNIQUE);
-       is_random_quest_skipped &= 0 == r_ptr->max_num;
+       bool is_random_quest_skipped = (r_ptr->flags1 & RF1_UNIQUE) != 0;
+       is_random_quest_skipped &= r_ptr->max_num == 0;
        if (!is_random_quest_skipped)
        {
                msg_format(_("注意せよ!この階は%sによって守られている!", "Beware, this level is protected by %s!"), name);
@@ -446,7 +446,7 @@ void leave_quest_check(player_type *player_ptr)
        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);
-       if (is_one_time_quest) return;
+       if (!is_one_time_quest) return;
 
        q_ptr->status = QUEST_STATUS_FAILED;
        q_ptr->complev = player_ptr->lev;
@@ -475,12 +475,12 @@ void leave_quest_check(player_type *player_ptr)
        if (q_ptr->type == QUEST_TYPE_RANDOM)
        {
                if (record_rand_quest)
-                       exe_write_diary(player_ptr, NIKKI_RAND_QUEST_F, leaving_quest, NULL);
+                       exe_write_diary(player_ptr, DIARY_RAND_QUEST_F, leaving_quest, NULL);
                return;
        }
 
        if (record_fix_quest)
-               exe_write_diary(player_ptr, NIKKI_FIX_QUEST_F, leaving_quest, NULL);
+               exe_write_diary(player_ptr, DIARY_FIX_QUEST_F, leaving_quest, NULL);
 }
 
 
@@ -520,7 +520,7 @@ void do_cmd_quest(player_type *player_ptr)
                msg_print(_("ここにはクエストの入口はない。", "You see no quest level here."));
                return;
        }
-       
+
        msg_print(_("ここにはクエストへの入口があります。", "There is an entry of a quest."));
        if (!get_check(_("クエストに入りますか?", "Do you enter? "))) return;
        if ((player_ptr->pseikaku == SEIKAKU_COMBAT) || (player_ptr->inventory_list[INVEN_BOW].name1 == ART_CRIMSON))