1 #include "main/sound-of-music.h"
2 #include "dungeon/quest.h"
3 #include "game-option/disturbance-options.h"
4 #include "game-option/special-options.h"
5 #include "main/music-definitions-table.h"
6 #include "system/floor-type-definition.h"
7 #include "term/screen-processor.h"
10 * Flush the screen, make a noise
16 term_xtra(TERM_XTRA_NOISE, 0);
22 * todo intをsound_typeに差し替える
30 term_xtra(TERM_XTRA_SOUND, val);
34 * Hack -- Play a music
36 errr play_music(int type, int val)
41 return term_xtra(type, val);
45 * @brief ダンジョン用の通常BGMまたはクエスト用BGM
46 * @param player_ptr プレーヤーへの参照ポインタ
47 * @return BGMを鳴らすか後続処理で鳴らすBGMを決めるならばTRUE、鳴らさないならばFALSE
48 * @details v3.0.0現在、フロアクエストとはワーグクエストとランダムクエストのみ該当する
50 bool dungeon_quest_music(player_type *player_ptr)
52 QUEST_IDX quest_id = player_ptr->current_floor_ptr->inside_quest;
54 quest_id = quest_number(player_ptr, player_ptr->current_floor_ptr->dun_level);
59 if (!play_music(TERM_XTRA_MUSIC_QUEST, quest_id))
62 return play_music(TERM_XTRA_MUSIC_BASIC, MUSIC_BASIC_QUEST) != 0;
66 * Hack -- Select floor music.
68 void select_floor_music(player_type *player_ptr)
73 if (player_ptr->ambush_flag) {
74 if (!play_music(TERM_XTRA_MUSIC_BASIC, MUSIC_BASIC_AMBUSH))
78 if (player_ptr->wild_mode) {
79 if (!play_music(TERM_XTRA_MUSIC_BASIC, MUSIC_BASIC_WILD))
83 if (player_ptr->current_floor_ptr->inside_arena) {
84 if (!play_music(TERM_XTRA_MUSIC_BASIC, MUSIC_BASIC_ARENA))
88 if (player_ptr->phase_out) {
89 if (!play_music(TERM_XTRA_MUSIC_BASIC, MUSIC_BASIC_BATTLE))
93 if (player_ptr->current_floor_ptr->inside_quest) {
94 if (!play_music(TERM_XTRA_MUSIC_QUEST, player_ptr->current_floor_ptr->inside_quest))
96 if (!play_music(TERM_XTRA_MUSIC_BASIC, MUSIC_BASIC_QUEST))
100 if (!dungeon_quest_music(player_ptr))
103 if (player_ptr->dungeon_idx) {
104 if (player_ptr->feeling == 2) {
105 if (!play_music(TERM_XTRA_MUSIC_BASIC, MUSIC_BASIC_DUN_FEEL2))
107 } else if (player_ptr->feeling >= 3 && player_ptr->feeling <= 5) {
108 if (!play_music(TERM_XTRA_MUSIC_BASIC, MUSIC_BASIC_DUN_FEEL1))
111 if (!play_music(TERM_XTRA_MUSIC_DUNGEON, player_ptr->dungeon_idx))
114 if (player_ptr->current_floor_ptr->dun_level < 40) {
115 if (!play_music(TERM_XTRA_MUSIC_BASIC, MUSIC_BASIC_DUN_LOW))
117 } else if (player_ptr->current_floor_ptr->dun_level < 80) {
118 if (!play_music(TERM_XTRA_MUSIC_BASIC, MUSIC_BASIC_DUN_MED))
121 if (!play_music(TERM_XTRA_MUSIC_BASIC, MUSIC_BASIC_DUN_HIGH))
127 if (player_ptr->town_num) {
128 if (!play_music(TERM_XTRA_MUSIC_TOWN, player_ptr->town_num))
130 if (!play_music(TERM_XTRA_MUSIC_BASIC, MUSIC_BASIC_TOWN))
135 if (!player_ptr->current_floor_ptr->dun_level) {
136 if (player_ptr->lev >= 45) {
137 if (!play_music(TERM_XTRA_MUSIC_BASIC, MUSIC_BASIC_FIELD3))
139 } else if (player_ptr->lev >= 25) {
140 if (!play_music(TERM_XTRA_MUSIC_BASIC, MUSIC_BASIC_FIELD2))
143 if (!play_music(TERM_XTRA_MUSIC_BASIC, MUSIC_BASIC_FIELD1))
148 play_music(TERM_XTRA_MUSIC_MUTE, 0);