Chaos Project

RPG Maker => RPG Maker Scripts => Script Requests => Topic started by: Scoryth on July 06, 2012, 06:10:37 pm

Title: Requesting help to merge scripts.
Post by: Scoryth on July 06, 2012, 06:10:37 pm
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!
Title: Re: Requesting help to merge scripts.
Post by: KK20 on July 06, 2012, 08:08:59 pm
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.
Title: Re: Requesting help to merge scripts.
Post by: Scoryth on July 06, 2012, 09:26:32 pm
Works perfectly! Thank you!