From: Hourier Date: Sat, 30 Jan 2021 14:59:36 +0000 (+0900) Subject: [Fix] #41383 個別にフロアクエスト用BGMを設定せず、Basic BGM (クエスト)のみを設定した場合、通常ダンジョン用のBGMしか流れない不具合を解消した... X-Git-Tag: vmacos3.0.0-alpha52~452^2~1 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=8dab9609381e5fdde484bc45d1f8c4e4c8beaff2;p=hengbandforosx%2Fhengbandosx.git [Fix] #41383 個別にフロアクエスト用BGMを設定せず、Basic BGM (クエスト)のみを設定した場合、通常ダンジョン用のBGMしか流れない不具合を解消した / Resolved the issue that only BGM for normal dungeon was played when only Basic BGM (quest) was set without setting BGM for floor quest individually --- diff --git a/src/main/sound-of-music.c b/src/main/sound-of-music.c index 1f555c209..643939c26 100644 --- a/src/main/sound-of-music.c +++ b/src/main/sound-of-music.c @@ -42,6 +42,27 @@ errr play_music(int type, int val) } /* + * @brief ダンジョン用の通常BGMまたはクエスト用BGM + * @param player_ptr プレーヤーへの参照ポインタ + * @return BGMを鳴らすか後続処理で鳴らすBGMを決めるならばTRUE、鳴らさないならばFALSE + * @details + */ +bool dungeon_quest_music(player_type *player_ptr) +{ + QUEST_IDX quest_id = player_ptr->current_floor_ptr->inside_quest; + if (quest_id == 0) + quest_id = quest_number(player_ptr, player_ptr->current_floor_ptr->dun_level); + + if (quest_id == 0) + return TRUE; + + if (!play_music(TERM_XTRA_MUSIC_QUEST, quest_id)) + return FALSE; + + return play_music(TERM_XTRA_MUSIC_BASIC, MUSIC_BASIC_QUEST) != 0; +} + +/* * Hack -- Select floor music. */ void select_floor_music(player_type *player_ptr) @@ -76,21 +97,8 @@ void select_floor_music(player_type *player_ptr) return; } - // ダンジョン内クエスト用BGMに切り替わらない問題の暫定的な修正 - // (https://osdn.net/projects/hengband/ticket/41134) - // - // ワーグクエスト、およびランダムクエストが該当。 - // これらに突入した際は inside_quest が更新されないようなので、 - // quest_number() で改めてクエストIDを取得する。 - // - // TODO: 根本的には inside_quest の更新処理を見直すべきではある。 - { - QUEST_IDX id = quest_number(player_ptr, player_ptr->current_floor_ptr->dun_level); - if (id != 0) { - if (!play_music(TERM_XTRA_MUSIC_QUEST, id)) - return; - } - } + if (!dungeon_quest_music(player_ptr)) + return; if (player_ptr->dungeon_idx) { if (player_ptr->feeling == 2) {