From 8dab9609381e5fdde484bc45d1f8c4e4c8beaff2 Mon Sep 17 00:00:00 2001 From: Hourier Date: Sat, 30 Jan 2021 23:59:36 +0900 Subject: [PATCH] =?utf8?q?[Fix]=20#41383=20=E5=80=8B=E5=88=A5=E3=81=AB?= =?utf8?q?=E3=83=95=E3=83=AD=E3=82=A2=E3=82=AF=E3=82=A8=E3=82=B9=E3=83=88?= =?utf8?q?=E7=94=A8BGM=E3=82=92=E8=A8=AD=E5=AE=9A=E3=81=9B=E3=81=9A?= =?utf8?q?=E3=80=81Basic=20BGM=20(=E3=82=AF=E3=82=A8=E3=82=B9=E3=83=88)?= =?utf8?q?=E3=81=AE=E3=81=BF=E3=82=92=E8=A8=AD=E5=AE=9A=E3=81=97=E3=81=9F?= =?utf8?q?=E5=A0=B4=E5=90=88=E3=80=81=E9=80=9A=E5=B8=B8=E3=83=80=E3=83=B3?= =?utf8?q?=E3=82=B8=E3=83=A7=E3=83=B3=E7=94=A8=E3=81=AEBGM=E3=81=97?= =?utf8?q?=E3=81=8B=E6=B5=81=E3=82=8C=E3=81=AA=E3=81=84=E4=B8=8D=E5=85=B7?= =?utf8?q?=E5=90=88=E3=82=92=E8=A7=A3=E6=B6=88=E3=81=97=E3=81=9F=20/=20Res?= =?utf8?q?olved=20the=20issue=20that=20only=20BGM=20for=20normal=20dungeon?= =?utf8?q?=20was=20played=20when=20only=20Basic=20BGM=20(quest)=20was=20se?= =?utf8?q?t=20without=20setting=20BGM=20for=20floor=20quest=20individually?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- src/main/sound-of-music.c | 38 +++++++++++++++++++++++--------------- 1 file changed, 23 insertions(+), 15 deletions(-) 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) { -- 2.11.0