Save-Point
Edited Paradog's Battle BGM Anti-Reset - Printable Version

+- Save-Point (https://www.save-point.org)
+-- Forum: Material Development (https://www.save-point.org/forum-8.html)
+--- Forum: Scripts Database (https://www.save-point.org/forum-39.html)
+---- Forum: RPGMaker XP (RGSS) Engine (https://www.save-point.org/forum-116.html)
+---- Thread: Edited Paradog's Battle BGM Anti-Reset (/thread-2326.html)



Edited Paradog's Battle BGM Anti-Reset - MicKo - 04-08-2009

Edited Paradog's Battle BGM Anti-Reset
Version: 1, I guess :x

Introduction

So, basically, I needed something to play my battle BGM without resetting the map BGM. I tried a few scripts, none really satisfied me. So I tried editing Paradog's Battle BGM Anti-Reset so that it doesn't only work when both the battle and map BGM are the same.

It's pretty simple, but there is a convenience : the battle BGM is played as a ME file, which doesn't loop. It's pretty much my first attempt to edit a script, so I don't even know if this is possible to loop MEs !


Features
By editing the script (just have to change the switchs, you can have 3 different things :
  • No switch : does the same think as if you didn't have the script, the battle BGM is played as a BGM, which loops, but the map BGM WILL reset after the battle.
  • First switch : The battle BGM is the same as the map BGM, so it continues, thanks to Paradog's script !
  • Second switch : The battle BGM is played as a ME. Doesn't loop, but the map BGM won't reset after the battle. This is what I use for random battles : those are quickly over, so the battle BGM doesn't have time to finish.
Screenshots

None.


Demo

Here.


Script

Code:
#==============================================================================
#????Battle BGM Anti-Reset ver. 1.00???
#??Script by ParaDog
#??http://2d6.parasite.jp/
#------------------------------------------------------------------------------
# Prevents the music from starting over when entering combat if both the field
# map's and battlesystem's BMG are the same.  Likewise, the music will not re-
# set upon escaping combat,  or after victory if the  'battle end ME' has been
# turned off (set to 'None).
#------------------------------------------------------------------------------
# For best results of this system, please set the 'Battle End ME'  to ("None)"
# in either the SYSTEM section or through an event command.
#==============================================================================

#==============================================================================
# ** Scene_Map
#------------------------------------------------------------------------------
#  This class performs map screen processing.
#==============================================================================

class Scene_Map
  #--------------------------------------------------------------------------
  # * Battle Call
  #--------------------------------------------------------------------------
  def call_battle
    # Clear battle calling flag
    $game_temp.battle_calling = false
    # Clear menu calling flag
    $game_temp.menu_calling = false
    $game_temp.menu_beep = false
    # Make encounter count
    $game_player.make_encounter_count
    # Memorize map BGM and stop BGM
    $game_temp.map_bgm = $game_system.playing_bgm
    # Play battle start SE
    $game_system.se_play($data_system.battle_start_se)
    # Play battle BGM
    #If Switch 1 is ON
    if $game_switches[1] == true
      # Play same battle BGM as the map BGM
      $game_system.battle_bgm = $game_temp.map_bgm
      $game_system.bgm_play($game_system.battle_bgm)
    #If Switch 2 is ON
    elsif $game_switches[2] == true
      # Play the basic battle BGM
      # ! WILL RESET THE MAP BGM AFTER BATTLE ! #
      # I use this for bosses, so that the battle BGM can loop.
      $game_system.bgm_play($game_system.battle_bgm)
    #Else, if Switch 1 and Switch 2 are OFF
    elsif $game_switches[1] == false and $game_switches[2] == false
    #Play battle BGM as ME (won't loop)
    Audio.me_play("Audio/BGM/" + $game_system.battle_bgm.name, $game_system.battle_bgm.volume, $game_system.battle_bgm.pitch)
    end
    # Straighten player position
    $game_player.straighten
    # Switch to battle screen
    $scene = Scene_Battle.new
  end
end

#==============================================================================
# ** Scene_Battle
#------------------------------------------------------------------------------
#  This class performs battle screen processing.
#==============================================================================

class Scene_Battle
  #--------------------------------------------------------------------------
  # * Start After Battle Phase
  #--------------------------------------------------------------------------
  def start_phase5
    # Shift to phase 5
    @phase = 5
    if $game_system.battle_end_me.name != ""
      # Play battle end ME
      $game_system.me_play($game_system.battle_end_me)
    end
    # Return to BGM before battle started
    $game_system.bgm_play($game_temp.map_bgm)
    # Initialize EXP, amount of gold, and treasure
    exp = 0
    gold = 0
    treasures = []
    # Loop
    for enemy in $game_troop.enemies
      # If enemy is not hidden
      unless enemy.hidden
        # Add EXP and amount of gold obtained
        exp += enemy.exp
        gold += enemy.gold
        # Determine if treasure appears
        if rand(100) < enemy.treasure_prob
          if enemy.item_id > 0
            treasures.push($data_items[enemy.item_id])
          end
          if enemy.weapon_id > 0
            treasures.push($data_weapons[enemy.weapon_id])
          end
          if enemy.armor_id > 0
            treasures.push($data_armors[enemy.armor_id])
          end
        end
      end
    end  
    # Treasure is limited to a maximum of 6 items
    treasures = treasures[0..5]
    # Obtaining EXP
    for i in 0...$game_party.actors.size
      actor = $game_party.actors[i]
      if actor.cant_get_exp? == false
        last_level = actor.level
        actor.exp += exp
        if actor.level > last_level
          @status_window.level_up(i)
        end
      end
    end
    # Obtaining gold
    $game_party.gain_gold(gold)
    # Obtaining treasure
    for item in treasures
      case item
      when RPG::Item
        $game_party.gain_item(item.id, 1)
      when RPG::Weapon
        $game_party.gain_weapon(item.id, 1)
      when RPG::Armor
        $game_party.gain_armor(item.id, 1)
      end
    end
    # Make battle result window
    @result_window = Window_BattleResult.new(exp, gold, treasures)
    if $game_system.battle_end_me.name != ""
      # Set wait count
      @phase5_wait_count = 100
    else
      # Set wait count
      @phase5_wait_count = 20
    end
  end
end


Instructions

You just have to change the switches you want to use at lines 38, 42 and 44.
Check the demo out to see what events look like.


FAQ

-


Compatibility

Doesn't require SDK or anything else. I tried it with Charlie Lee's CTB and with basic battles and it worked well.


Credits and Thanks

Just give credits to Paradog !


Author's Notes

As I said, this is my first attempt to edit a script, so don't hesitate to say if the way I did it just sucks or anything !
If you want Paradog's script, just see here.


Terms and Conditions

Here is the Paradog's condition of use.

Content Hidden



RE: Edited Paradog's Battle BGM Anti-Reset - Steel Beast 6Beets - 06-27-2014

Sorry for the necropost but I wish to use this script yet I've encountered what I believe is an overlooked bug: If you escape a battle, the battle theme will continue to play until it finishes. Is there any way to fix this?