[Resolved] I need some assistance in making two scripts compatible

Started by Wraith89, November 24, 2014, 03:27:21 pm

Previous topic - Next topic

Wraith89

I am not exactly a scripter but from looking into things here and there I can infer what there needs to be changed for the most part.
I am using A3D's Battle Result window and I'm looking for a way to make it compatible with Tons of Addons Passive Skills section. Now I can completely bypass this if I place this script below Tons, but that also will not allow EXP/Gold boosting effect to work at all.

Spoiler: ShowHide
#=================================================================
# ? Battle Result by A3D Ver. 1.02
# Useful                       : show battle result in a different way
# Effect to default script : this code will replace methode "start_phase5" & "update_phase5"  in Scene_Battle
# How to install             : in script editor, insert all the code above main
# Note                          : this script is for non-commercial use only, give credit if use
# Contact                      : A3D (hyper_s@hotmail.com)
#=================================================================

module A3D
 WAIT_WINDOW_APPEAR = 60
 WAIT_RUNNING_NUMBER = 20
 STEP_EXP = 1
 STEP_GOLD = 1
 ME_LEVELUP = ["007-Fanfare01", 100, 100]
 ME_NEWSKILL = ["015-Mystery01", 100, 100]
 FONT_NAME = "Papyrus"
 FONT_SIZE = 22
end

#==============================================================================
# ? Scene_Battle
#==============================================================================

class Scene_Battle
 
 #--------------------------------------------------------------------------
 # ? After battle phase start
 #--------------------------------------------------------------------------
 def start_phase5
   # It moves to phase 5
   @phase = 5
   # Performing battle end ME
   $game_system.me_play($game_system.battle_end_me)
   # You reset to BGM before the battle starting
   $game_system.bgm_play($game_temp.map_bgm)
   # Initializing EXP, the gold and the treasure
   exp = 0
   gold = 0
   treasures = []
   # Loop
   for enemy in $game_troop.enemies
     # When the enemy hides and it is not state
     unless enemy.hidden
       # Adding acquisition EXP and the gold
       exp += enemy.exp
       gold += enemy.gold
       # Treasure appearance decision
       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 acquisition
   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
   # Create Variable & Window
   @phase5_step = 1
   @wait_window_appear = A3D::WAIT_WINDOW_APPEAR
   @wait_running_number = A3D::WAIT_RUNNING_NUMBER
   @resultreceive_window = Window_ResultReceive.new(exp, gold, treasures)
   @resultgold_window = Window_ResultGold.new
   @resultparty_window = Window_ResultParty.new
   @actor_level_before = []
   @resultlevel_window = []
   @resultskill_window = []
   for i in 0...$game_party.actors.size
     actor = $game_party.actors[i]
     @actor_level_before[i] = actor.level
     @resultlevel_window[i] = Window_ResultLevel.new(i)
     @resultskill_window[i] = Window_ResultSkill.new(i)
   end
 end
 #--------------------------------------------------------------------------
 # ? Update Phase 5
 #--------------------------------------------------------------------------
 def update_phase5
   case @phase5_step
   when 1  # EXP & Gold Phase
     update_phase5_step1
   when 2  # Skill Phase
     update_phase5_step2
   when 3  # Delete Window Phase
     update_phase5_step3
   end
 end
 #--------------------------------------------------------------------------
 # ? Update Phase 5 Step 1
 #--------------------------------------------------------------------------
 def update_phase5_step1
   # Wait Count Before Window Appear
   if @wait_window_appear > 0
     @wait_window_appear -= 1
     if @wait_window_appear == 0
       @resultreceive_window.visible = true
       @resultgold_window.visible = true
       @resultparty_window.visible = true
       $game_temp.battle_main_phase = false
     end
     return
   end
   # Wait Count Before Running Number
   if @wait_running_number > 0
     @wait_running_number -= 1
     return
   end
   # Change Item Page
   if Input.trigger?(Input::RIGHT)
     if @resultreceive_window.max_page != 1
       $game_system.me_play($data_system.cursor_se)
       @resultreceive_window.page = @resultreceive_window.page == 1 ? 2 : 1
       @resultreceive_window.refresh
     end
   end
   # EXP & Gold Rolling
   if (@resultreceive_window.exp != 0 || @resultreceive_window.gold != 0)
     # Input C to Shortcut Calculation
     if Input.trigger?(Input::C)
       for i in 0...$game_party.actors.size
         actor = $game_party.actors[i]
         next if actor.cant_get_exp?
         level_before = actor.level
         actor.exp += @resultreceive_window.exp
         if actor.level > level_before
           @resultlevel_window[i].visible = true
           Audio.me_play("Audio/ME/" + A3D::ME_LEVELUP[0], A3D::ME_LEVELUP[1], A3D::ME_LEVELUP[2])
         end
       end
       $game_party.gain_gold(@resultreceive_window.gold)
       @resultreceive_window.exp = 0
       @resultreceive_window.gold = 0
       @resultreceive_window.refresh
       @resultgold_window.refresh
       @resultparty_window.refresh
     end
     # EXP
     if @resultreceive_window.exp != 0
       step_exp = @resultreceive_window.exp >= A3D::STEP_EXP.abs ? A3D::STEP_EXP.abs : @resultreceive_window.exp
       for i in 0...$game_party.actors.size
         actor = $game_party.actors[i]
         next if actor.cant_get_exp?
         if actor.next_rest_exp <= step_exp && actor.next_rest_exp != 0
           @resultlevel_window[i].visible = true
           Audio.me_play("Audio/ME/" + A3D::ME_LEVELUP[0], A3D::ME_LEVELUP[1], A3D::ME_LEVELUP[2])
         end
         actor.exp += step_exp
       end
       @resultreceive_window.exp -= step_exp
       @resultreceive_window.refresh
       @resultparty_window.refresh
     end
     # Gold
     if @resultreceive_window.gold != 0
       step_gold = @resultreceive_window.gold >= A3D::STEP_GOLD.abs ? A3D::STEP_GOLD.abs : @resultreceive_window.gold
       $game_party.gain_gold(step_gold)
       @resultreceive_window.gold -= step_gold
       @resultreceive_window.refresh
       @resultgold_window.refresh
     end
     return
   end
   # Input C to Bypass Step
   if Input.trigger?(Input::C)
     @phase5_step = 2
     return
   end
 end
 #--------------------------------------------------------------------------
 # ? Update Phase 5 Step 2
 #--------------------------------------------------------------------------
 def update_phase5_step2
   # Change Item Page
   if Input.trigger?(Input::RIGHT)
     if @resultreceive_window.max_page != 1
       $game_system.me_play($data_system.cursor_me)
       @resultreceive_window.page = @resultreceive_window.page == 1 ? 2 : 1
       @resultreceive_window.refresh
     end
   end
   # Initialize Skill Phase
   if @initialized_skill_phase == nil
     for i in 0...$game_party.actors.size
       actor = $game_party.actors[i]
       for skill in $data_classes[actor.class_id].learnings
         if skill.level > @actor_level_before[i] && skill.level <= actor.level
           Audio.me_play("Audio/ME/" + A3D::ME_NEWSKILL[0], A3D::ME_NEWSKILL[1], A3D::ME_NEWSKILL[2])
           @resultskill_window[i].skill_id = skill.skill_id
           @resultskill_window[i].visible = true
           @resultskill_window[i].refresh
           @skill_phase_active = true
         end
       end
     end
     @initialized_skill_phase = true
   end
   # If Skill Phase Active, Show Window
   if @skill_phase_active != nil
     if @resultskill_window[0].x != 456
       for i in 0...$game_party.actors.size
         @resultskill_window[i].x -= 23
       end
       return
     end
   else
     @phase5_step = 3
     return
   end
   # Input C to Bypass Step
   if Input.trigger?(Input::C)
     @phase5_step = 3
     return
   end
 end
 #--------------------------------------------------------------------------
 # ? Update Phase 5 Step 3
 #--------------------------------------------------------------------------
 def update_phase5_step3
   # Delete All Result-Window
   @resultreceive_window.dispose
   @resultgold_window.dispose
   @resultparty_window.dispose
   for i in 0...$game_party.actors.size
     @resultlevel_window[i].dispose
     @resultskill_window[i].dispose
   end
   battle_end(0)
 end
 
end

#==============================================================================
# ? Game_Actor
#==============================================================================

class Game_Actor
 
 def next_rest_exp
   return @exp_list[@level+1] > 0 ? (@exp_list[@level+1] - @exp) : 0
 end

end

#==============================================================================
# ? Window_ResultReceive
#==============================================================================

class Window_ResultReceive < Window_Base
 #--------------------------------------------------------------------------
 # ? Attr
 #--------------------------------------------------------------------------
 attr_accessor         :exp
 attr_accessor         :gold
 attr_accessor         :page
 attr_reader            :max_page
 #--------------------------------------------------------------------------
 # ? Initialize
 #--------------------------------------------------------------------------
 def initialize(exp, gold, treasures)
   super(40, 28, 224, 212)
   self.contents = Bitmap.new(width - 32, height - 32)
   self.contents.font.name = A3D::FONT_NAME
   self.contents.font.size = A3D::FONT_SIZE
   self.back_opacity = 160
   self.visible = false
   @exp = exp
   @gold = gold
   @treasures = treasures
   @page = 1
   @max_page = treasures.size > 4 ? 2 : 1
   refresh
 end
 #--------------------------------------------------------------------------
 # ? Refresh
 #--------------------------------------------------------------------------
 def refresh
   self.contents.clear
   self.contents.font.color = system_color
   self.contents.draw_text(0, -8, self.width - 32, 32, "Exp")
   self.contents.draw_text(0, 16, self.width - 32, 32, $data_system.words.gold)
   self.contents.draw_text(0, 40, self.width - 32, 32, $data_system.words.item + " [" + @page.to_s + "/" + @max_page.to_s + "]" )
   self.contents.font.color = normal_color
   self.contents.draw_text(0, -8, self.width - 32, 32, @exp.to_s, 2)
   self.contents.draw_text(0, 16, self.width - 32, 32, @gold.to_s, 2)
   if @treasures.size == 0
     self.contents.draw_text(0, 68, self.width - 32, 32, "< Nothing. >")
   elsif @treasures.size > 4
     bitmap = RPG::Cache.windowskin($game_system.windowskin_name)
     self.contents.blt(184, 116, bitmap, Rect.new(168, 24, 16, 16), 255)
   end
   y = 68
   item_start_index = @page == 1 ? 0 : 4
   for i in item_start_index...@treasures.size
     item = @treasures[i]
     draw_item_name(item, 0, y)
     y += 28
   end
 end
 
end

#==============================================================================
# ? Window_ResultGold
#==============================================================================

class Window_ResultGold < Window_Base
 #--------------------------------------------------------------------------
 # ? Initialize
 #--------------------------------------------------------------------------
 def initialize
   super(40, 240, 224, 52)
   self.contents = Bitmap.new(width - 32, height - 32)
   self.contents.font.name = A3D::FONT_NAME
   self.contents.font.size = A3D::FONT_SIZE
   self.back_opacity = 160
   self.visible = false
   refresh
 end
 #--------------------------------------------------------------------------
 # ? Refresh
 #--------------------------------------------------------------------------
 def refresh
   self.contents.clear
   self.contents.font.color = system_color
   self.contents.draw_text(0, -8, self.width - 32, 32, "Total " + $data_system.words.gold)
   self.contents.font.color = normal_color
   self.contents.draw_text(0, -8, self.width - 32, 32, $game_party.gold.to_s, 2)
 end
 
end

#==============================================================================
# ? Window_ResultParty
#==============================================================================

class Window_ResultParty < Window_Base
 #--------------------------------------------------------------------------
 # ? Initialize
 #--------------------------------------------------------------------------
 def initialize
   super(264, 28, 336, 264)
   self.contents = Bitmap.new(width - 32, height - 32)
   self.contents.font.name = A3D::FONT_NAME
   self.contents.font.size = A3D::FONT_SIZE
   self.back_opacity = 160
   self.visible = false
   refresh
 end
 #--------------------------------------------------------------------------
 # ? Refresh
 #--------------------------------------------------------------------------
 def refresh
   self.contents.clear
   for i in 0...$game_party.actors.size
     actor = $game_party.actors[i]
     y = 60 * i + 22
     draw_actor_graphic(actor, 24, y + 28 )
     draw_actor_name(actor, 64, y - 28)
     self.contents.font.color = system_color
     self.contents.draw_text(116, y, (self.width - 32), 32, "Lv.")
     self.contents.draw_text(188, y, (self.width - 32), 32, "Next")
     self.contents.font.color = normal_color
     self.contents.draw_text(-140, y, (self.width - 32), 32, actor.level.to_s ,2)
     self.contents.draw_text(0     , y, (self.width - 32), 32, actor.next_rest_exp_s ,2)
   end
 end
 
end

#==============================================================================
# ? Window_ResultLevel
#==============================================================================

class Window_ResultLevel < Window_Base
 #--------------------------------------------------------------------------
 # ? Initialize
 #--------------------------------------------------------------------------
 def initialize(id)
   super(332, 60 * id + 40, 124, 60)
   self.contents = Bitmap.new(width - 32, height - 32)
   self.contents.font.name = A3D::FONT_NAME
   self.contents.font.size = A3D::FONT_SIZE
   self.back_opacity = 160
   self.visible = false
   self.z = 200
   refresh
 end
 #--------------------------------------------------------------------------
 # ? Refresh
 #--------------------------------------------------------------------------
 def refresh
   self.contents.clear
   self.contents.draw_text(0, -2, self.width - 32, 32, "Level-Up !!", 1)
 end
 
end

#==============================================================================
# ? Window_ResultSkill
#==============================================================================

class Window_ResultSkill < Window_Base
 #--------------------------------------------------------------------------
 # ? Attr
 #--------------------------------------------------------------------------
 attr_accessor         :skill_id
 #--------------------------------------------------------------------------
 # ? Initialize
 #--------------------------------------------------------------------------
 def initialize(id)
   super(640, 60 * id + 40, 200, 60)
   self.contents = Bitmap.new(width - 32, height - 32)
   self.contents.font.name = A3D::FONT_NAME
   self.contents.font.size = A3D::FONT_SIZE
   self.back_opacity = 160
   self.visible = false
   self.z = 200
   @skill_id = nil
 end
 #--------------------------------------------------------------------------
 # ? Refresh
 #--------------------------------------------------------------------------
 def refresh
   self.contents.clear
   if @skill_id == nil
     return
   end
   skill = $data_skills[@skill_id]
   bitmap = RPG::Cache.icon(skill.icon_name)
   self.contents.blt(0, 2, bitmap, Rect.new(0, 0, 24, 24), 255)
   self.contents.font.color = normal_color
   self.contents.draw_text(32, -2, self.width - 64, 32, skill.name)
 end
 
end



The part in Tons of Addons (Part 2) I need changed is this part:

Spoiler: ShowHide
#==============================================================================
# Scene_Battle
#==============================================================================

class Scene_Battle
 
 alias start_phase5_passkl_later start_phase5
 def start_phase5
   unless $game_system.PASSIVE_SKILLS
     start_phase5_passkl_later
     return
   end
   old_gold, old_exp, old_levels = $game_party.gold, [], []
   $game_party.actors.each {|actor|
       old_exp.push(actor.exp)
       old_levels.push(actor.level)}
   start_phase5_passkl_later
   new_gold = $game_party.gold - old_gold
   $game_party.lose_gold(new_gold)
   gold_rate = 100
   $game_party.actors.each {|actor| gold_rate *= actor.gold_rate}
   @result_window.gold = (new_gold * gold_rate / 100).to_i
   $game_party.gain_gold(@result_window.gold)
   new_exp = 0
   $game_party.actors.each_index {|i|
       if $game_party.actors[i].exp - old_exp[i] > 0
         new_exp = $game_party.actors[i].exp - old_exp[i]
       end
       $game_party.actors[i].exp = old_exp[i]}
   exp_rate = 100
   $game_party.actors.each {|actor| exp_rate *= actor.exp_rate}
   @result_window.exp = (new_exp * exp_rate / 100).to_i
   @result_window.refresh
   $game_party.actors.each_index {|i|
       @status_window.level_up_flags[i] = false
       unless $game_party.actors[i].cant_get_exp?
         $game_party.actors[i].exp += @result_window.exp
         @status_window.level_up(i) if $game_party.actors[i].level > old_levels[i]
       end}
 end
 
end


I know it is really a clash of methods and definitions as "@result_window" from default no longer exists, and I tried replacing each by myself, but before it gets messy with multiple awkward clashes can somebody help me out here? :^_^':

KK20

*sigh* I thought I was done looking at that horrid script.

The trick really is to just apply the Tons' Passive Skill effects to the EXP and Gold inside A3D's script. No need to modify windows or anything. Replace A3D with this, and keep it below TONS

#=================================================================
# ? Battle Result by A3D Ver. 1.02
# Useful                       : show battle result in a different way
# Effect to default script : this code will replace methode "start_phase5" & "update_phase5"  in Scene_Battle
# How to install             : in script editor, insert all the code above main
# Note                          : this script is for non-commercial use only, give credit if use
# Contact                      : A3D (hyper_s@hotmail.com)
#=================================================================

module A3D
  WAIT_WINDOW_APPEAR = 60
  WAIT_RUNNING_NUMBER = 20
  STEP_EXP = 1
  STEP_GOLD = 1
  ME_LEVELUP = ["007-Fanfare01", 100, 100]
  ME_NEWSKILL = ["015-Mystery01", 100, 100]
  FONT_NAME = "Papyrus"
  FONT_SIZE = 22
end

#==============================================================================
# ? Scene_Battle
#==============================================================================

class Scene_Battle
 
  #--------------------------------------------------------------------------
  # ? After battle phase start
  #--------------------------------------------------------------------------
  def start_phase5
    # It moves to phase 5
    @phase = 5
    # Performing battle end ME
    $game_system.me_play($game_system.battle_end_me)
    # You reset to BGM before the battle starting
    $game_system.bgm_play($game_temp.map_bgm)
    # Initializing EXP, the gold and the treasure
    exp = 0
    gold = 0
    treasures = []
    # Loop
    for enemy in $game_troop.enemies
      # When the enemy hides and it is not state
      unless enemy.hidden
        # Adding acquisition EXP and the gold
        exp += enemy.exp
        gold += enemy.gold
        # Treasure appearance decision
        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
    # Apply TONS Passive Skill Effects
    gold_rate = 100
    $game_party.actors.each {|actor| gold_rate *= actor.gold_rate}
    gold = gold * gold_rate / 100
    exp_rate = 100
    $game_party.actors.each {|actor| exp_rate *= actor.exp_rate}
    exp = exp * exp_rate / 100
    # Treasure acquisition
    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
    # Create Variable & Window
    @phase5_step = 1
    @wait_window_appear = A3D::WAIT_WINDOW_APPEAR
    @wait_running_number = A3D::WAIT_RUNNING_NUMBER
    @resultreceive_window = Window_ResultReceive.new(exp, gold, treasures)
    @resultgold_window = Window_ResultGold.new
    @resultparty_window = Window_ResultParty.new
    @actor_level_before = []
    @resultlevel_window = []
    @resultskill_window = []
    for i in 0...$game_party.actors.size
      actor = $game_party.actors[i]
      @actor_level_before[i] = actor.level
      @resultlevel_window[i] = Window_ResultLevel.new(i)
      @resultskill_window[i] = Window_ResultSkill.new(i)
    end
  end
  #--------------------------------------------------------------------------
  # ? Update Phase 5
  #--------------------------------------------------------------------------
  def update_phase5
    case @phase5_step
    when 1  # EXP & Gold Phase
      update_phase5_step1
    when 2  # Skill Phase
      update_phase5_step2
    when 3  # Delete Window Phase
      update_phase5_step3
    end
  end
  #--------------------------------------------------------------------------
  # ? Update Phase 5 Step 1
  #--------------------------------------------------------------------------
  def update_phase5_step1
    # Wait Count Before Window Appear
    if @wait_window_appear > 0
      @wait_window_appear -= 1
      if @wait_window_appear == 0
        @resultreceive_window.visible = true
        @resultgold_window.visible = true
        @resultparty_window.visible = true
        $game_temp.battle_main_phase = false
      end
      return
    end
    # Wait Count Before Running Number
    if @wait_running_number > 0
      @wait_running_number -= 1
      return
    end
    # Change Item Page
    if Input.trigger?(Input::RIGHT)
      if @resultreceive_window.max_page != 1
        $game_system.me_play($data_system.cursor_se)
        @resultreceive_window.page = @resultreceive_window.page == 1 ? 2 : 1
        @resultreceive_window.refresh
      end
    end
    # EXP & Gold Rolling
    if (@resultreceive_window.exp != 0 || @resultreceive_window.gold != 0)
      # Input C to Shortcut Calculation
      if Input.trigger?(Input::C)
        for i in 0...$game_party.actors.size
          actor = $game_party.actors[i]
          next if actor.cant_get_exp?
          level_before = actor.level
          actor.exp += @resultreceive_window.exp
          if actor.level > level_before
            @resultlevel_window[i].visible = true
            Audio.me_play("Audio/ME/" + A3D::ME_LEVELUP[0], A3D::ME_LEVELUP[1], A3D::ME_LEVELUP[2])
          end
        end
        $game_party.gain_gold(@resultreceive_window.gold)
        @resultreceive_window.exp = 0
        @resultreceive_window.gold = 0
        @resultreceive_window.refresh
        @resultgold_window.refresh
        @resultparty_window.refresh
      end
      # EXP
      if @resultreceive_window.exp != 0
        step_exp = @resultreceive_window.exp >= A3D::STEP_EXP.abs ? A3D::STEP_EXP.abs : @resultreceive_window.exp
        for i in 0...$game_party.actors.size
          actor = $game_party.actors[i]
          next if actor.cant_get_exp?
          if actor.next_rest_exp <= step_exp && actor.next_rest_exp != 0
            @resultlevel_window[i].visible = true
            Audio.me_play("Audio/ME/" + A3D::ME_LEVELUP[0], A3D::ME_LEVELUP[1], A3D::ME_LEVELUP[2])
          end
          actor.exp += step_exp
        end
        @resultreceive_window.exp -= step_exp
        @resultreceive_window.refresh
        @resultparty_window.refresh
      end
      # Gold
      if @resultreceive_window.gold != 0
        step_gold = @resultreceive_window.gold >= A3D::STEP_GOLD.abs ? A3D::STEP_GOLD.abs : @resultreceive_window.gold
        $game_party.gain_gold(step_gold)
        @resultreceive_window.gold -= step_gold
        @resultreceive_window.refresh
        @resultgold_window.refresh
      end
      return
    end
    # Input C to Bypass Step
    if Input.trigger?(Input::C)
      @phase5_step = 2
      return
    end
  end
  #--------------------------------------------------------------------------
  # ? Update Phase 5 Step 2
  #--------------------------------------------------------------------------
  def update_phase5_step2
    # Change Item Page
    if Input.trigger?(Input::RIGHT)
      if @resultreceive_window.max_page != 1
        $game_system.me_play($data_system.cursor_me)
        @resultreceive_window.page = @resultreceive_window.page == 1 ? 2 : 1
        @resultreceive_window.refresh
      end
    end
    # Initialize Skill Phase
    if @initialized_skill_phase == nil
      for i in 0...$game_party.actors.size
        actor = $game_party.actors[i]
        for skill in $data_classes[actor.class_id].learnings
          if skill.level > @actor_level_before[i] && skill.level <= actor.level
            Audio.me_play("Audio/ME/" + A3D::ME_NEWSKILL[0], A3D::ME_NEWSKILL[1], A3D::ME_NEWSKILL[2])
            @resultskill_window[i].skill_id = skill.skill_id
            @resultskill_window[i].visible = true
            @resultskill_window[i].refresh
            @skill_phase_active = true
          end
        end
      end
      @initialized_skill_phase = true
    end
    # If Skill Phase Active, Show Window
    if @skill_phase_active != nil
      if @resultskill_window[0].x != 456
        for i in 0...$game_party.actors.size
          @resultskill_window[i].x -= 23
        end
        return
      end
    else
      @phase5_step = 3
      return
    end
    # Input C to Bypass Step
    if Input.trigger?(Input::C)
      @phase5_step = 3
      return
    end
  end
  #--------------------------------------------------------------------------
  # ? Update Phase 5 Step 3
  #--------------------------------------------------------------------------
  def update_phase5_step3
    # Delete All Result-Window
    @resultreceive_window.dispose
    @resultgold_window.dispose
    @resultparty_window.dispose
    for i in 0...$game_party.actors.size
      @resultlevel_window[i].dispose
      @resultskill_window[i].dispose
    end
    battle_end(0)
  end
 
end

#==============================================================================
# ? Game_Actor
#==============================================================================

class Game_Actor
 
  def next_rest_exp
    return @exp_list[@level+1] > 0 ? (@exp_list[@level+1] - @exp) : 0
  end

end

#==============================================================================
# ? Window_ResultReceive
#==============================================================================

class Window_ResultReceive < Window_Base
  #--------------------------------------------------------------------------
  # ? Attr
  #--------------------------------------------------------------------------
  attr_accessor         :exp
  attr_accessor         :gold
  attr_accessor         :page
  attr_reader            :max_page
  #--------------------------------------------------------------------------
  # ? Initialize
  #--------------------------------------------------------------------------
  def initialize(exp, gold, treasures)
    super(40, 28, 224, 212)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.contents.font.name = A3D::FONT_NAME
    self.contents.font.size = A3D::FONT_SIZE
    self.back_opacity = 160
    self.visible = false
    @exp = exp
    @gold = gold
    @treasures = treasures
    @page = 1
    @max_page = treasures.size > 4 ? 2 : 1
    refresh
  end
  #--------------------------------------------------------------------------
  # ? Refresh
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    self.contents.font.color = system_color
    self.contents.draw_text(0, -8, self.width - 32, 32, "Exp")
    self.contents.draw_text(0, 16, self.width - 32, 32, $data_system.words.gold)
    self.contents.draw_text(0, 40, self.width - 32, 32, $data_system.words.item + " [" + @page.to_s + "/" + @max_page.to_s + "]" )
    self.contents.font.color = normal_color
    self.contents.draw_text(0, -8, self.width - 32, 32, @exp.to_s, 2)
    self.contents.draw_text(0, 16, self.width - 32, 32, @gold.to_s, 2)
    if @treasures.size == 0
      self.contents.draw_text(0, 68, self.width - 32, 32, "< Nothing. >")
    elsif @treasures.size > 4
      bitmap = RPG::Cache.windowskin($game_system.windowskin_name)
      self.contents.blt(184, 116, bitmap, Rect.new(168, 24, 16, 16), 255)
    end
    y = 68
    item_start_index = @page == 1 ? 0 : 4
    for i in item_start_index...@treasures.size
      item = @treasures[i]
      draw_item_name(item, 0, y)
      y += 28
    end
  end
 
end

#==============================================================================
# ? Window_ResultGold
#==============================================================================

class Window_ResultGold < Window_Base
  #--------------------------------------------------------------------------
  # ? Initialize
  #--------------------------------------------------------------------------
  def initialize
    super(40, 240, 224, 52)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.contents.font.name = A3D::FONT_NAME
    self.contents.font.size = A3D::FONT_SIZE
    self.back_opacity = 160
    self.visible = false
    refresh
  end
  #--------------------------------------------------------------------------
  # ? Refresh
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    self.contents.font.color = system_color
    self.contents.draw_text(0, -8, self.width - 32, 32, "Total " + $data_system.words.gold)
    self.contents.font.color = normal_color
    self.contents.draw_text(0, -8, self.width - 32, 32, $game_party.gold.to_s, 2)
  end
 
end

#==============================================================================
# ? Window_ResultParty
#==============================================================================

class Window_ResultParty < Window_Base
  #--------------------------------------------------------------------------
  # ? Initialize
  #--------------------------------------------------------------------------
  def initialize
    super(264, 28, 336, 264)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.contents.font.name = A3D::FONT_NAME
    self.contents.font.size = A3D::FONT_SIZE
    self.back_opacity = 160
    self.visible = false
    refresh
  end
  #--------------------------------------------------------------------------
  # ? Refresh
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    for i in 0...$game_party.actors.size
      actor = $game_party.actors[i]
      y = 60 * i + 22
      draw_actor_graphic(actor, 24, y + 28 )
      draw_actor_name(actor, 64, y - 28)
      self.contents.font.color = system_color
      self.contents.draw_text(116, y, (self.width - 32), 32, "Lv.")
      self.contents.draw_text(188, y, (self.width - 32), 32, "Next")
      self.contents.font.color = normal_color
      self.contents.draw_text(-140, y, (self.width - 32), 32, actor.level.to_s ,2)
      self.contents.draw_text(0     , y, (self.width - 32), 32, actor.next_rest_exp_s ,2)
    end
  end
 
end

#==============================================================================
# ? Window_ResultLevel
#==============================================================================

class Window_ResultLevel < Window_Base
  #--------------------------------------------------------------------------
  # ? Initialize
  #--------------------------------------------------------------------------
  def initialize(id)
    super(332, 60 * id + 40, 124, 60)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.contents.font.name = A3D::FONT_NAME
    self.contents.font.size = A3D::FONT_SIZE
    self.back_opacity = 160
    self.visible = false
    self.z = 200
    refresh
  end
  #--------------------------------------------------------------------------
  # ? Refresh
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    self.contents.draw_text(0, -2, self.width - 32, 32, "Level-Up !!", 1)
  end
 
end

#==============================================================================
# ? Window_ResultSkill
#==============================================================================

class Window_ResultSkill < Window_Base
  #--------------------------------------------------------------------------
  # ? Attr
  #--------------------------------------------------------------------------
  attr_accessor         :skill_id
  #--------------------------------------------------------------------------
  # ? Initialize
  #--------------------------------------------------------------------------
  def initialize(id)
    super(640, 60 * id + 40, 200, 60)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.contents.font.name = A3D::FONT_NAME
    self.contents.font.size = A3D::FONT_SIZE
    self.back_opacity = 160
    self.visible = false
    self.z = 200
    @skill_id = nil
  end
  #--------------------------------------------------------------------------
  # ? Refresh
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    if @skill_id == nil
      return
    end
    skill = $data_skills[@skill_id]
    bitmap = RPG::Cache.icon(skill.icon_name)
    self.contents.blt(0, 2, bitmap, Rect.new(0, 0, 24, 24), 255)
    self.contents.font.color = normal_color
    self.contents.draw_text(32, -2, self.width - 64, 32, skill.name)
  end
 
end

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!

Wraith89

Thank you. You are helping me understand parts about scripts that I have not before. Is the script really that bad? I thought it was a neat idea, but probably executed badly. I believe I found it in Creation Asylum long ago or someplace.

One more thing and this bugs me: now the EXP shows up as decimals instead of rounded numbers (probably due to Tons multiplying experience by a decimal). These things also happen in battle damage calculations that I have to add random .floor to some things, but that feels tedious and most likely unnecessary. Is there any way to display whole numbers instead?

KK20

I guess I didn't know the EXP/Gold configuration values were floats and not ints. In that case,

    # Apply TONS Passive Skill Effects
    gold_rate = 100
    $game_party.actors.each {|actor| gold_rate *= actor.gold_rate}
    gold = (gold * gold_rate / 100).to_i
    exp_rate = 100
    $game_party.actors.each {|actor| exp_rate *= actor.exp_rate}
    exp = (exp * exp_rate / 100).to_i

The other "float to integer" conversion methods you can use are floor, round, and ceil (which should be self explanatory). to_i is exactly the same as floor.

If your damage values are coming up as floats, try finding where the actual damage is done being calculated and convert it to an integer rather than having to convert a bunch of variables to integers to achieve a similar result. Of course, you will have to find the script that is causing this--that's a worthy bug to report.

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!