diff --git a/Data/Scripts/003_Game processing/002_Scene_Map.rb b/Data/Scripts/003_Game processing/002_Scene_Map.rb index d09d9ac90..6bcb3ea49 100644 --- a/Data/Scripts/003_Game processing/002_Scene_Map.rb +++ b/Data/Scripts/003_Game processing/002_Scene_Map.rb @@ -54,12 +54,8 @@ class Scene_Map playingBGS = $game_system.playing_bgs return if !playingBGM && !playingBGS map = load_data(sprintf("Data/Map%03d.rxdata", mapid)) - if playingBGM && map.autoplay_bgm - if (PBDayNight.isNight? rescue false) - pbBGMFade(0.8) if playingBGM.name != map.bgm.name && playingBGM.name != map.bgm.name + "_n" - elsif playingBGM.name != map.bgm.name - pbBGMFade(0.8) - end + if playingBGM && map.autoplay_bgm && playingBGM.name != map.bgm_name + pbBGMFade(0.8) end if playingBGS && map.autoplay_bgs && playingBGS.name != map.bgs.name pbBGMFade(0.8) diff --git a/Data/Scripts/004_Game classes/004_Game_Map.rb b/Data/Scripts/004_Game classes/004_Game_Map.rb index b11e96041..bef809143 100644 --- a/Data/Scripts/004_Game classes/004_Game_Map.rb +++ b/Data/Scripts/004_Game classes/004_Game_Map.rb @@ -96,6 +96,7 @@ class Game_Map def encounter_step; return @map.encounter_step; end def data; return @map.data; end def tileset_id; return @map.tileset_id; end + def bgm; return @map.bgm; end def name return pbGetMapNameFromId(@map_id) @@ -104,37 +105,32 @@ class Game_Map def metadata return GameData::MapMetadata.try_get(@map_id) end + + #----------------------------------------------------------------------------- + # Returns the name of this map's BGM. If it's night time, returns the night + # version of the BGM (if it exists). + #----------------------------------------------------------------------------- + def bgm_name + if PBDayNight.isNight? && FileTest.audio_exist?("Audio/BGM/" + @map.bgm.name + "_n") + return @map.bgm.name + "_n" + end + return @map.bgm.name + end #----------------------------------------------------------------------------- # * Autoplays background music # Plays music called "[normal BGM]_n" if it's night time and it exists #----------------------------------------------------------------------------- def autoplayAsCue - if @map.autoplay_bgm - if PBDayNight.isNight? && FileTest.audio_exist?("Audio/BGM/" + @map.bgm.name + "_n") - pbCueBGM(@map.bgm.name + "_n", 1.0, @map.bgm.volume, @map.bgm.pitch) - else - pbCueBGM(@map.bgm, 1.0) - end - end - if @map.autoplay_bgs - pbBGSPlay(@map.bgs) - end + pbCueBGM(bgm_name, 1.0, @map.bgm.volume, @map.bgm.pitch) if @map.autoplay_bgm + pbBGSPlay(@map.bgs) if @map.autoplay_bgs end #----------------------------------------------------------------------------- # * Plays background music # Plays music called "[normal BGM]_n" if it's night time and it exists #----------------------------------------------------------------------------- def autoplay - if @map.autoplay_bgm - if PBDayNight.isNight? && FileTest.audio_exist?("Audio/BGM/" + @map.bgm.name + "_n") - pbBGMPlay(@map.bgm.name + "_n", @map.bgm.volume, @map.bgm.pitch) - else - pbBGMPlay(@map.bgm) - end - end - if @map.autoplay_bgs - pbBGSPlay(@map.bgs) - end + pbBGMPlay(bgm_name, @map.bgm.volume, @map.bgm.pitch) if @map.autoplay_bgm + pbBGSPlay(@map.bgs) if @map.autoplay_bgs end def valid?(x, y) diff --git a/Data/Scripts/016_UI/011_UI_Jukebox.rb b/Data/Scripts/016_UI/011_UI_Jukebox.rb index ff5585b07..cbce3f0b5 100644 --- a/Data/Scripts/016_UI/011_UI_Jukebox.rb +++ b/Data/Scripts/016_UI/011_UI_Jukebox.rb @@ -68,10 +68,12 @@ class PokemonJukeboxScreen cmdLullaby = -1 cmdOak = -1 cmdCustom = -1 - commands[cmdMarch = commands.length] = _INTL("March") - commands[cmdLullaby = commands.length] = _INTL("Lullaby") - commands[cmdOak = commands.length] = _INTL("Oak") - commands[cmdCustom = commands.length] = _INTL("Custom...") + cmdTurnOff = -1 + commands[cmdMarch = commands.length] = _INTL("Play: Pokémon March") + commands[cmdLullaby = commands.length] = _INTL("Play: Pokémon Lullaby") + commands[cmdOak = commands.length] = _INTL("Play: Oak") + commands[cmdCustom = commands.length] = _INTL("Play: Custom...") + commands[cmdTurnOff = commands.length] = _INTL("Stop") commands[commands.length] = _INTL("Exit") @scene.pbStartScene(commands) loop do @@ -106,7 +108,6 @@ class PokemonJukeboxScreen files.map! { |f| f.chomp(File.extname(f)) } files.uniq! files.sort! { |a, b| a.downcase <=> b.downcase } -# files.insert(0, _INTL("(Default)")) @scene.pbSetCommands(files, 0) loop do cmd2 = @scene.pbScene @@ -115,11 +116,17 @@ class PokemonJukeboxScreen break end pbPlayDecisionSE - $game_system.setDefaultBGM(files[cmd2]) # ((cmd2 == 0) ? nil : files[cmd2]) + $game_system.setDefaultBGM(files[cmd2]) $PokemonMap.whiteFluteUsed = false if $PokemonMap $PokemonMap.blackFluteUsed = false if $PokemonMap end @scene.pbSetCommands(nil, cmdCustom) + elsif cmdTurnOff >= 0 && cmd == cmdTurnOff + pbPlayDecisionSE + $game_system.setDefaultBGM(nil) + pbBGMPlay(pbResolveAudioFile($game_map.bgm_name, $game_map.bgm.volume, $game_map.bgm.pitch)) + $PokemonMap.whiteFluteUsed = false if $PokemonMap + $PokemonMap.blackFluteUsed = false if $PokemonMap else # Exit pbPlayCloseMenuSE break