+/*
+ * Hack -- Play a music
+ */
+errr play_music(int type, int val)
+{
+ /* No sound */
+ if (!use_music) return 1;
+
+ /* Make a sound (if allowed) */
+ return Term_xtra(type, val);
+}
+
+/*
+ * Hack -- Select floor music.
+ */
+void select_floor_music()
+{
+ int i;
+ /* No sound */
+ if (!use_music) return;
+
+ if(ambush_flag)
+ {
+ play_music(TERM_XTRA_MUSIC_BASIC, MUSIC_BASIC_AMBUSH);
+ return;
+ }
+
+ if(p_ptr->wild_mode)
+ {
+ play_music(TERM_XTRA_MUSIC_BASIC, MUSIC_BASIC_WILD);
+ return;
+ }
+
+ if(p_ptr->inside_arena)
+ {
+ play_music(TERM_XTRA_MUSIC_BASIC, MUSIC_BASIC_ARENA);
+ return;
+ }
+
+ if(p_ptr->inside_battle)
+ {
+ play_music(TERM_XTRA_MUSIC_BASIC, MUSIC_BASIC_BATTLE);
+ return;
+ }
+
+ if(p_ptr->inside_quest)
+ {
+ if(play_music(TERM_XTRA_MUSIC_QUEST, p_ptr->inside_quest))
+ {
+ play_music(TERM_XTRA_MUSIC_BASIC, MUSIC_BASIC_QUEST);
+ }
+ return;
+ }
+
+ for(i = 0; i < max_quests; i++)
+ { // TODO マクロで類似条件を統合すること
+ if(quest[i].status == QUEST_STATUS_TAKEN &&
+ (quest[i].type == QUEST_TYPE_KILL_LEVEL || quest[i].type == QUEST_TYPE_RANDOM) &&
+ quest[i].level == dun_level && dungeon_type == quest[i].dungeon)
+ {
+ if(play_music(TERM_XTRA_MUSIC_QUEST, i))
+ {
+ play_music(TERM_XTRA_MUSIC_BASIC, MUSIC_BASIC_QUEST);
+ }
+ return;
+ }
+ }
+
+ if(dungeon_type)
+ {
+ if(p_ptr->feeling == 2) play_music(TERM_XTRA_MUSIC_BASIC, MUSIC_BASIC_DUN_FEEL2);
+ else if(p_ptr->feeling >= 3 && p_ptr->feeling <= 5) play_music(TERM_XTRA_MUSIC_BASIC, MUSIC_BASIC_DUN_FEEL1);
+ else
+ {
+ if(play_music(TERM_XTRA_MUSIC_DUNGEON, dungeon_type))
+ {
+ if(dun_level < 40) play_music(TERM_XTRA_MUSIC_BASIC, MUSIC_BASIC_DUN_LOW);
+ else if(dun_level < 80) play_music(TERM_XTRA_MUSIC_BASIC, MUSIC_BASIC_DUN_MED);
+ else play_music(TERM_XTRA_MUSIC_BASIC, MUSIC_BASIC_DUN_HIGH);
+ }
+ }
+ return;
+ }
+
+ if(p_ptr->town_num)
+ {
+ if(play_music(TERM_XTRA_MUSIC_TOWN, p_ptr->town_num))
+ {
+ play_music(TERM_XTRA_MUSIC_BASIC, MUSIC_BASIC_TOWN);
+ }
+ return;
+ }
+
+ if(!dun_level)
+ {
+ if(p_ptr->lev >= 45) play_music(TERM_XTRA_MUSIC_BASIC, MUSIC_BASIC_FIELD3);
+ else if(p_ptr->lev >= 25) play_music(TERM_XTRA_MUSIC_BASIC, MUSIC_BASIC_FIELD2);
+ else play_music(TERM_XTRA_MUSIC_BASIC, MUSIC_BASIC_FIELD1);
+ return;
+ }
+
+}
+