Requesting help to merge scripts.

Started by Scoryth, July 06, 2012, 06:10:37 pm

Previous topic - Next topic

Scoryth

I don't mean to double post this in two forums, but I just realized that I posted the other one in the wrong area. Maybe I'll get better help if I put it in the right place.  :P

I'm using Nathmatt's Battle Dome in combination with BlizzABS and I would like to use a battle result window I found instead of the one that comes with Nathmatt's battle dome. How can this be done?

Nathmatt's Battle Dome
http://forum.chaos-project.com/index.php/topic,3183.0.html

This is the battle result script I would like to put in.
class Game_Actor < Game_Battler
 def exp=(exp)
   @exp = [[exp, 9999999].min, 0].max
   while @exp >= @exp_list[@level+1] and @exp_list[@level+1] > 0
     @level += 1
     
     # NEW - David
     $d_new_skill = nil
     
     for j in $data_classes[@class_id].learnings
       if j.level == @level
         learn_skill(j.skill_id)
     
         # NEW - David
         skill = $data_skills[j.skill_id]
         $d_new_skill = skill.name
     
       end
     end
   end
   while @exp < @exp_list[@level]
     @level -= 1
   end
   @hp = [@hp, self.maxhp].min
   @sp = [@sp, self.maxsp].min
 end
 
 #--------------------------------------------------------------------------
 # * Get the current EXP
 #--------------------------------------------------------------------------
 def now_exp
   return @exp - @exp_list[@level]
 end
 #--------------------------------------------------------------------------
 # * Get the next level's EXP
 #--------------------------------------------------------------------------
 def next_exp
   return @exp_list[@level+1] > 0 ? @exp_list[@level+1] - @exp_list[@level] : 0
 end

end

class Window_LevelUp < Window_Base

 #----------------------------------------------------------------
 def initialize(actor, pos)
   #change this to false to show the actor's graphic
   @face = false
   @actor = actor
   y = (pos * 120)
   super(280, y, 360, 120)
   self.contents = Bitmap.new(width - 32, height - 32)
   self.back_opacity = 255    
   if $d_dum == false
     refresh
   end
 end

 #----------------------------------------------------------------
 def dispose
   super
 end

 #----------------------------------------------------------------
 def refresh
   self.contents.clear
   self.contents.font.size = 18
   if @face == true
   draw_actor_face(@actor, 4, 0)
   else
   draw_actor_graphic(@actor, 50, 80)
   end
   draw_actor_name(@actor, 111, 0)
   draw_actor_level(@actor, 186, 0)
   show_next_exp = @actor.level == 99 ? "---" : "#{@actor.next_exp}"
   min_bar = @actor.level == 99 ? 1 : @actor.now_exp
   max_bar = @actor.level == 99 ? 1 : @actor.next_exp
   draw_slant_bar(115, 80, min_bar, max_bar, 190, 6, bar_color = Color.new(0, 100, 0, 255), end_color = Color.new(0, 255, 0, 255))
   self.contents.draw_text(115, 24, 300, 32, "Exp:#{@actor.now_exp}")
   self.contents.draw_text(115, 48, 300, 32, "Level Up:" + show_next_exp)
 end

 
 #----------------------------------------------------------------
 def level_up
   self.contents.font.color = system_color
   self.contents.draw_text(230, 48, 80, 32, "LEVEL UP!")
 end
 
 #----------------------------------------------------------------
 def update
   super
 end
 
end # of Window_LevelUp

#=================================
#Window_EXP
# Written by: David Schooley
#=================================

class Window_EXP < Window_Base

 #----------------------------------------------------------------
 def initialize(exp)
   super(0, 0, 280, 60)
   self.contents = Bitmap.new(width - 32, height - 32)
   self.back_opacity = 255
   refresh(exp)
 end

 #----------------------------------------------------------------
 def dispose
   super
 end

 #----------------------------------------------------------------
 def refresh(exp)
   self.contents.clear
   self.contents.font.color = system_color
   self.contents.draw_text(0, 0, 150, 32, "Exp Earned:")
   self.contents.font.color = normal_color
   self.contents.draw_text(180, 0, 54, 32, exp.to_s, 2)
 end
 
 #----------------------------------------------------------------
 def update
   super
 end
 
end # of Window_EXP

#=================================
#Window_Money_Items
# Written by: David Schooley
#=================================

class Window_Money_Items < Window_Base

 #----------------------------------------------------------------
 def initialize(money, treasures)
   @treasures = treasures
   super(0, 60, 280, 420)
   self.contents = Bitmap.new(width - 32, height - 32)
   self.back_opacity = 255
   refresh(money)
 end

 #----------------------------------------------------------------
 def dispose
   super
 end

 #----------------------------------------------------------------
 def refresh(money)
   @money = money
   self.contents.clear
   
   self.contents.font.color = system_color
   self.contents.draw_text(4, 4, 100, 32, "Items Found:")
   self.contents.font.color = normal_color
   
   y = 32
   for item in @treasures
     draw_item_name(item, 4, y)
     y += 32
   end
   
   cx = contents.text_size($data_system.words.gold).width
   self.contents.font.color = normal_color
   self.contents.draw_text(4, 340, 220-cx-2, 32, $game_party.gold.to_s, 2)
   self.contents.font.color = normal_color
   self.contents.draw_text(4, 300, 220-cx-2, 32, "+ " + @money.to_s, 2)
   self.contents.font.color = system_color
   self.contents.draw_text(124-cx, 340, cx + 100, 32, $data_system.words.gold, 2)
 end

 def update
   super
 end
 
end # of Window_Money_Items


class Scene_Battle
 alias raz_battle_report_main main
 alias raz_battle_report_be battle_end

 def main
   # NEW - David
   #$battle_end = false
   @lvup_window = []
   @show_dummies = true # Show dummy windows or not?
   raz_battle_report_main
   # NEW - David
   @lvup_window = nil
   @level_up = nil
   @ch_stats = nil
   @ch_compare_stats = nil
   Audio.me_stop
 end

 def battle_end(result)
   raz_battle_report_be(result)
   # NEW - David
   @status_window.visible = false
   @spriteset.dispose
   Graphics.transition
   if result == 0
     display_lv_up(@exp, @gold, @treasures)
     loop do
       Graphics.update
       Input.update
       if Input.trigger?(Input::C)
         break
       end
     end
     trash_lv_up
   end

 end
   
 def start_phase5
   @phase = 5
   $game_system.me_play($game_system.battle_end_me)
   $game_system.bgm_play($game_temp.map_bgm)
   exp = 0
   gold = 0
   treasures = []
   for enemy in $game_troop.enemies
     unless enemy.hidden
       exp += enemy.exp
       gold += enemy.gold
       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
   treasures = treasures[0..5]

   # NEW - David
   @treasures = treasures
   @exp  = exp
   @gold = gold

   
   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
   @phase5_wait_count = 10
 end

 def update_phase5
   if @phase5_wait_count > 0
     @phase5_wait_count -= 1
     if @phase5_wait_count == 0
       
       # NEW - David
       $game_temp.battle_main_phase = false        
     end
     return
   end

   # NEW - David
     battle_end(0)

 end

 def display_lv_up(exp, gold, treasures)
   
   $d_dum = false
   d_extra = 0
   i = 0
   for actor in $game_party.actors
       # Fill up the Lv up windows
       @lvup_window[i] = Window_LevelUp.new($game_party.actors[i], i)
       i += 1
   end

   # Make Dummies
   if @show_dummies == true
     $d_dum = true
     for m in i..3
       @lvup_window[m] = Window_LevelUp.new(m, m)
     end
   end
   
   @exp_window = Window_EXP.new(exp)
   @m_i_window = Window_Money_Items.new(gold, treasures)
   @press_enter = nil
   gainedexp = exp
   @level_up = [0, 0, 0, 0]
   @d_new_skill = ["", "", "", ""]
   @d_breakout = false
   @m_i_window.refresh(gold)
   wait_for_OK

   @d_remember = $game_system.bgs_memorize
   Audio.bgs_play("Audio/SE/LOTF-Cursor.wav", 100, 300)
   
   # NEW - David
   max_exp = exp
   value = 28
   if exp < value
     value = exp
   end
   if value == 0
     value = 1
   end
   for n in 0..gainedexp - (max_exp / value)
     exp -= (max_exp / value)
     if @d_breakout == false
       Input.update
     end
     
     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 += (max_exp / value)
         # Fill up the Lv up windows
         if @d_breakout == false
           @lvup_window[i].refresh
           @exp_window.refresh(exp)
         end
         
         if actor.level > last_level
           @level_up[i] = 5
           Audio.se_play("Audio/SE/LOTF-Level Up.ogg", 70, 150)
           if $d_new_skill
             @d_new_skill[i] = $d_new_skill
           end
         end
         
         if @level_up[i] == 0
           @d_new_skill[i] = ""
         end
         
         if @level_up[i] > 0
           @lvup_window[i].level_up
         end
         
         if Input.trigger?(Input::C) or exp <= 0
           @d_breakout = true
         end
       end
       
       if @d_breakout == false
         if @level_up[i] >0
           @level_up[i] -= 1
         end
         Graphics.update
       end
     end
     
     if @d_breakout == true
       for i in 0...$game_party.actors.size
         actor = $game_party.actors[i]
         if actor.cant_get_exp? == false
           actor.exp += exp
         end
       end
       exp = 0
       break
     end
   end
   Audio.bgs_stop
   @d_remember = $game_system.bgs_restore
   
   for i in 0...$game_party.actors.size
     @lvup_window[i].refresh
   end
   @exp_window.refresh(exp)
   Audio.se_play("Audio/SE/LOTF-Cursor.wav", 70, 150)
   $game_party.gain_gold(gold)
   @m_i_window.refresh(0)
   Graphics.update
 end
 
 def trash_lv_up
   # NEW - David
   i=0
   
   for i in 0 ... 4
     @lvup_window[i].visible = false
   end
   @exp_window.visible = false
   @m_i_window.visible = false
   @lvup_window = nil
   @exp_window = nil
   @m_i_window = nil
 end

 # Wait until OK key is pressed
 def wait_for_OK
   loop do
     Input.update
     Graphics.update
     if Input.trigger?(Input::C)
       break
     end
   end
 end

end

class Window_Base < Window
 def draw_actor_face(actor, x, y)
   bitmap = RPG::Cache.picture("Faces/" + actor.character_name)
   self.contents.blt(x, y, bitmap, Rect.new(0,0,96,96))
 end
 
 #--------------------------------------------------------------------------
 # * Draw Slant Bar(by SephirothSpawn)
 #--------------------------------------------------------------------------
 def draw_slant_bar(x, y, min, max, width = 152, height = 6,
     bar_color = Color.new(150, 0, 0, 255), end_color = Color.new(255, 255, 60, 255))
   # Draw Border
   for i in 0..height
     self.contents.fill_rect(x + i, y + height - i, width + 1, 1, Color.new(50, 50, 50, 255))
   end
   # Draw Background
   for i in 1..(height - 1)
     r = 100 * (height - i) / height + 0 * i / height
     g = 100 * (height - i) / height + 0 * i / height
     b = 100 * (height - i) / height + 0 * i / height
     a = 255 * (height - i) / height + 255 * i / height
     self.contents.fill_rect(x + i, y + height - i, width, 1, Color.new(r, b, g, a))
   end
   # Draws Bar
   for i in 1..( (min / max.to_f) * width - 1)
     for j in 1..(height - 1)
       r = bar_color.red * (width - i) / width + end_color.red * i / width
       g = bar_color.green * (width - i) / width + end_color.green * i / width
       b = bar_color.blue * (width - i) / width + end_color.blue * i / width
       a = bar_color.alpha * (width - i) / width + end_color.alpha * i / width
       self.contents.fill_rect(x + i + j, y + height - j, 1, 1, Color.new(r, g, b, a))
     end
   end
 end

end



Thanks for your help!

KK20

July 06, 2012, 08:08:59 pm #1 Last Edit: July 06, 2012, 08:33:04 pm by KK20
Yeah, I noticed. I deleted the other topic.

Anyways, I've looked into this and believe I have the fix for it.
Spoiler: ShowHide
#:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# Results Window Edit to Nathmatt's Battle Dome
#===============================================================================
# Editted by          KK20
# Requested by        Scoryth
#                                                                     [7/6/2012]
#:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
module Battle_Dome
  #============================================================================
  # Battle_Dome::Processor
  #----------------------------------------------------------------------------
  #  This class provides methods for Battle Dome's handling.
  #============================================================================
  class Processor
    #--------------------------------------------------------------------------
    # * battle_check
    #  Checks whether you win or escape the battle.
    #--------------------------------------------------------------------------
    def battle_check
      if Input.trigger?(Input::Escape)
        @escape_bar = Window_Escape_Bar.new
        @phase = 3
      end
      if $game_map.battlers_group(BlizzABS::Alignments::ENEMY_GROUP).size == 0
        @phase = 4
        @hud_settings = [$game_system.hud, $game_system.hotkeys, $game_system.minimap]
        $game_system.hud = false
        $game_system.hotkeys = false
        $game_system.minimap = 0
      end
    end
    #--------------------------------------------------------------------------
    # * finish
    #  Runs the win proccesing.
    #--------------------------------------------------------------------------
    def finish
      $game_system.me_play($game_system.battle_end_me)
      treasures = @items
      @escape_time = Battle_Dome::Config::Escape_Time
      treasures = treasures[0..5]
      treasures.each {|item|
      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}
      # Custom Results window
      display_lv_up(@exp, @gold, treasures)
      wait_for_OK
      trash_lv_up
      # Bring back the BABS GUI
      $game_system.hud = @hud_settings[0]
      $game_system.hotkeys = @hud_settings[1]
      $game_system.minimap = @hud_settings[2]
      Transfer()
      $game_system.bgm_play($game_temp.map_bgm)
      reset
    end
    #--------------------------------------------------------------------------
    # * display_lv_up
    #  Shows results window
    #--------------------------------------------------------------------------
    def display_lv_up(exp, gold, treasures)
   
    $d_dum = false
    d_extra = 0
    i = 0
    @lvup_window = []
    for actor in $game_party.actors
        # Fill up the Lv up windows
        @lvup_window[i] = Window_LevelUp.new($game_party.actors[i], i)
        i += 1
    end

    # Make Dummies
      $d_dum = true
      for m in i..3
        @lvup_window[m] = Window_LevelUp.new(m, m)
      end
   
    @exp_window = Window_EXP.new(exp)
    @m_i_window = Window_Money_Items.new(gold, treasures)
    @press_enter = nil
    gainedexp = exp
    @level_up = [0, 0, 0, 0]
    @d_new_skill = ["", "", "", ""]
    @d_breakout = false
    @m_i_window.refresh(gold)
    wait_for_OK

    @d_remember = $game_system.bgs_memorize
    #Audio.bgs_play("Audio/SE/LOTF-Cursor.wav", 100, 300)
   
    # NEW - David
    max_exp = exp
    value = 28
    if exp < value
      value = exp
    end
    if value == 0
      value = 1
    end
    for n in 0..gainedexp - (max_exp / value)
      exp -= (max_exp / value)
      if @d_breakout == false
        Input.update
      end
     
      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 += (max_exp / value)
          # Fill up the Lv up windows
          if @d_breakout == false
            @lvup_window[i].refresh
            @exp_window.refresh(exp)
          end
         
          if actor.level > last_level
            @level_up[i] = 5
            #Audio.se_play("Audio/SE/LOTF-Level Up.ogg", 70, 150)
            if $d_new_skill
              @d_new_skill[i] = $d_new_skill
            end
          end
         
          if @level_up[i] == 0
            @d_new_skill[i] = ""
          end
         
          if @level_up[i] > 0
            @lvup_window[i].level_up
          end
         
          if Input.trigger?(Input::C) or exp <= 0
            @d_breakout = true
          end
        end
       
        if @d_breakout == false
          if @level_up[i] >0
            @level_up[i] -= 1
          end
          Graphics.update
        end
      end
     
      if @d_breakout == true
        for i in 0...$game_party.actors.size
          actor = $game_party.actors[i]
          if actor.cant_get_exp? == false
            actor.exp += exp
          end
        end
        exp = 0
        break
      end
    end
    Audio.bgs_stop
    @d_remember = $game_system.bgs_restore
   
    for i in 0...$game_party.actors.size
      @lvup_window[i].refresh
    end
    @exp_window.refresh(exp)
    #Audio.se_play("Audio/SE/LOTF-Cursor.wav", 70, 150)
    $game_party.gain_gold(gold)
    @m_i_window.refresh(0)
    Graphics.update
  end
  #--------------------------------------------------------------------------
  # * trash_lv_up
  #  Deletes the result windows
  #--------------------------------------------------------------------------
  def trash_lv_up
    for i in 0 ... 4
      @lvup_window[i].visible = false
    end
    @exp_window.visible = false
    @m_i_window.visible = false
    @lvup_window = nil
    @exp_window = nil
    @m_i_window = nil
  end
  #--------------------------------------------------------------------------
  # * wait_for_OK
  #  Loops until Confirm
  #--------------------------------------------------------------------------
  def wait_for_OK
    loop do
      Input.update
      Graphics.update
      if Input.trigger?(Input::C)
        break
      end
    end
  end

  end
 
end
#============================================================================
# BlizzABS::Processor
#----------------------------------------------------------------------------
#  This edits the part of bliz'z script that controls
#  how you get exp, gold, and items so you get it after battle.
#============================================================================
class BlizzABS::Processor
  #--------------------------------------------------------------------------
  # * remove_enemy
  #  enemy - the killed enemy event
  #  Processes the after-death period of enemies.
  #--------------------------------------------------------------------------
  def remove_enemy(enemy)
    # stop except if enemy event code is to be executed or enemy is erased
    return if enemy.execute || enemy.erased || enemy.body != nil
    # start event code if there is some
    enemy.start if enemy.trigger == BlizzABS::CETDeath
    # remove except if code needs to be executed
    $game_map.events.delete(enemy.id) unless enemy.execute
    # get all dropped items on the map
    items = drop_items(enemy)
    # if not dropping
    if !BlizzABS::Config::ITEM_DROP
      # add items into inventory
      items.each {|item|
          case item
          when RPG::Weapon then $game_party.gain_weapon(item.id, 1)
          when RPG::Armor then $game_party.gain_armor(item.id, 1)
          when RPG::Item then $game_party.gain_item(item.id, 1)
          end}
      # clear items
      items = []
    end
    # experience result
    exp_result(enemy)
    # gold result
    gold = gold_result(enemy)
    # if not using drop gold mode
    if BlizzABS::Config::GOLD_DROP == ''
      # just increase gold
      #$game_party.gain_gold(gold)
    # if dropping any gold
    elsif gold > 0
      # add gold to items
      items = [gold] + items
    end
    # execute all additional enemy results
    additional_result(enemy)
    # if using corpses
    if BlizzABS::Config::CORPSES
      # if using empty corpses or any drop exists
      if BlizzABS::Config::EMPTY_CORPSES || items.size > 0
        # create a corpse dropped items
        drop_event(items, enemy.real_x, enemy.real_y, enemy)
      end
    else
      # create all necessary dropped items
      items.each {|item| drop_event([item], enemy.real_x, enemy.real_y)}
    end
  end
   
end
Just paste this below the Battle Dome and Custom Results window scripts.

Other Projects
RPG Maker XP Ace  Upgrade RMXP to RMVXA performance!
XPA Tilemap  Tilemap rewrite with many features, including custom resolution!

Nintendo Switch Friend Code: 8310-1917-5318
Discord: KK20 Tyler#8901

Join the CP Discord Server!

Scoryth