Submit Your Article


 
RPG Maker

Welcome Guest ( Log In | Register )


  Games Resources RPG Maker VX RPG Maker XP Scripts Tutorials Downloads

2 Pages V   1 2 >  
Reply to this topicStart new topic
> Extended Victorty Screen!!!!, You should see this!!!
conmaster3
post Aug 4 2008, 09:54 AM
Post #1


Level 5
Group Icon

Group: Member
Posts: 71
Type: Scripter
RM Skill: Advanced




Version : V 1.0

Information:
I created an extended victory screen why because it looks more nicer tongue.gif

Details:

Author: Cell (Conmaster3)

Screenshot:

[Show/Hide] 3 shots




Demo:

Not needed

Extra information:

- I created this script by adding some stuff
- any questions and suggestions are welcome

Installation:

- Just place above main

Credits:

- Cell (Conmaster3)

The script:

[Show/Hide] the script
CODE
#       Author : Cell
#   How to use:
#               Just place above main
#------------------------------------------------------------------------------

#==============================================================================
# ** Window_Gold_Message
#------------------------------------------------------------------------------
#  This message window is used to display text.
#==============================================================================

class Window_Gold_Message < Window_Selectable
  #--------------------------------------------------------------------------
  # * Constants
  #--------------------------------------------------------------------------
  MAX_LINE = 1                            # Maximum number of lines
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    super(272, 0, 272, 60)
    self.z = 200
    self.active = false
    self.index = -1
    self.openness = 0
    @opening = false            # WIndow opening flag
    @closing = false            # Window closing flag
    @text = nil                 # Remaining text to be displayed
    @contents_x = 0             # X coordinate for drawing next character
    @contents_y = 0             # Y coordinate for drawing next character
    @line_count = 0             # Line count drawn up until now
    @wait_count = 0             # Wait count
    @background = 0             # Background type
    @position = 2               # Display position
    @show_fast = false          # Fast forward flag
    @line_show_fast = false     # Fast forward by line flag
    @pause_skip = false         # Input standby omission flag
  end
  #--------------------------------------------------------------------------
  # * Dispose
  #--------------------------------------------------------------------------
  def dispose
    super
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    super
    update_show_fast
    unless @opening or @closing             # Window is not opening or closing
      if @wait_count > 0                    # Waiting within text
        @wait_count -= 1
      elsif self.pause                      # Waiting for text advancement
        input_pause
      elsif @text != nil                    # More text exists
        update_message                        # Update message
      elsif continue?                       # If continuing
        start_message                         # Start message
        open                                  # Open window
        $game_message.visible = true
      else                                  # If not continuing
        close                                 # Close window
        $game_message.visible = @closing
      end
    end
  end
  #--------------------------------------------------------------------------
  # * Update Fast Forward Flag
  #--------------------------------------------------------------------------
  def update_show_fast
    if self.pause or self.openness < 255
      @show_fast = false
    elsif Input.trigger?(Input::C) and @wait_count < 2
      @show_fast = true
    elsif not Input.press?(Input::C)
      @show_fast = false
    end
    if @show_fast and @wait_count > 0
      @wait_count -= 1
    end
  end
  #--------------------------------------------------------------------------
  # * Determine if the Next Message Should be Displayed Continuously
  #--------------------------------------------------------------------------
  def continue?
    return true if $game_message.num_input_variable_id > 0
    return false if $game_message.texts.empty?
    if self.openness > 0 and not $game_temp.in_battle
      return false if @background != $game_message.background
      return false if @position != $game_message.position
    end
    return true
  end
  #--------------------------------------------------------------------------
  # * Start Message
  #--------------------------------------------------------------------------
  def start_message
    @text = ""
    for i in 0...$game_message.texts.size
      @text += "    " if i >= $game_message.choice_start
      @text += $game_message.texts[i].clone + "\x00"
    end
    @item_max = $game_message.choice_max
    convert_special_characters
    reset_window
    new_page
  end
  #--------------------------------------------------------------------------
  # * New Page
  #--------------------------------------------------------------------------
  def new_page
    contents.clear
    if $game_message.face_name.empty?
      @contents_x = 0
    else
      name = $game_message.face_name
      index = $game_message.face_index
      draw_face(name, index, 0, 0)
      @contents_x = 112
    end
    @contents_y = 0
    @line_count = 0
    @show_fast = false
    @line_show_fast = false
    @pause_skip = false
    contents.font.color = text_color(0)
  end
  #--------------------------------------------------------------------------
  # * New Line
  #--------------------------------------------------------------------------
  def new_line
    if $game_message.face_name.empty?
      @contents_x = 0
    else
      @contents_x = 112
    end
    @contents_y += WLH
    @line_count += 1
    @line_show_fast = false
  end
  #--------------------------------------------------------------------------
  # * Convert Special Characters
  #--------------------------------------------------------------------------
  def convert_special_characters
    @text.gsub!(/\\V\[([0-9]+)\]/i) { $game_variables[$1.to_i] }
    @text.gsub!(/\\V\[([0-9]+)\]/i) { $game_variables[$1.to_i] }
    @text.gsub!(/\\N\[([0-9]+)\]/i) { $game_actors[$1.to_i].name }
    @text.gsub!(/\\C\[([0-9]+)\]/i) { "\x01[#{$1}]" }
    @text.gsub!(/\\G/)              { "\x02" }
    @text.gsub!(/\\\./)             { "\x03" }
    @text.gsub!(/\\\|/)             { "\x04" }
    @text.gsub!(/\\!/)              { "\x05" }
    @text.gsub!(/\\>/)              { "\x06" }
    @text.gsub!(/\\</)              { "\x07" }
    @text.gsub!(/\\\^/)             { "\x08" }
    @text.gsub!(/\\\\/)             { "\\" }
  end
  #--------------------------------------------------------------------------
  # * Set Window Background and Position
  #--------------------------------------------------------------------------
  def reset_window
    @background = $game_message.background
    @position = $game_message.position
    if @background == 0   # Normal window
      self.opacity = 255
    else                  # Dim Background and Make it Transparent
      self.opacity = 0
    end
    case @position
    when 0  # Top
      self.y = 0
      @gold_window.y = 360
    when 1  # Middle
      self.y = 144
      @gold_window.y = 0
    when 2  # Bottom
      self.y = 288
      @gold_window.y = 0
    end
  end
  #--------------------------------------------------------------------------
  # * End Message
  #--------------------------------------------------------------------------
  def terminate_message
    self.active = false
    self.pause = false
    self.index = -1
    $game_message.main_proc.call if $game_message.main_proc != nil
    $game_message.clear
  end
  #--------------------------------------------------------------------------
  # * Update Message
  #--------------------------------------------------------------------------
  def update_message
    loop do
      c = @text.slice!(/./m)            # Get next text character
      case c
      when nil                          # There is no text that must be drawn
        finish_message                  # Finish update
        break
      when "\x00"                       # New line
        new_line
        if @line_count >= MAX_LINE      # If line count is maximum
          unless @text.empty?           # If there is more
            self.pause = true           # Insert number input
            break
          end
        end
      when "\x01"                       # \C[n]  (text character color change)
        @text.sub!(/\[([0-9]+)\]/, "")
        contents.font.color = text_color($1.to_i)
        next
      when "\x03"                       # \.  (wait 1/4 second)
        @wait_count = 15
        break
      when "\x04"                       # \|  (wait 1 second)
        @wait_count = 60
        break
      when "\x05"                       # \!  (Wait for input)
        self.pause = true
        break
      when "\x06"                       # \>  (Fast display ON)
        @line_show_fast = true
      when "\x07"                       # \<  (Fast display OFF)
        @line_show_fast = false
      when "\x08"                       # \^  (No wait for input)
        @pause_skip = true
      else                              # Normal text character
        contents.draw_text(@contents_x, @contents_y, 40, WLH, c)
        c_width = contents.text_size(c).width
        @contents_x += c_width
      end
      break unless @show_fast or @line_show_fast
    end
  end
  #--------------------------------------------------------------------------
  # * End Message Update
  #--------------------------------------------------------------------------
  def finish_message
    if $game_message.choice_max > 0
      start_choice
    elsif $game_message.num_input_variable_id > 0
      start_number_input
    elsif @pause_skip
      terminate_message
    else
      self.pause = true
    end
    @wait_count = 10
    @text = nil
  end
  #--------------------------------------------------------------------------
  # * Start Choices
  #--------------------------------------------------------------------------
  def start_choice
    self.active = true
    self.index = 0
  end
  #--------------------------------------------------------------------------
  # * Text Advancement Input
  #--------------------------------------------------------------------------
  def input_pause
    if Input.trigger?(Input::B) or Input.trigger?(Input::C)
      self.pause = false
      if @text != nil and not @text.empty?
        new_page if @line_count >= MAX_LINE
      else
        terminate_message
      end
    end
  end
end
#==============================================================================
# ** Window_BattleMessage
#------------------------------------------------------------------------------
#  Message window displayed during battle. In addition to the normal message
# window functions, it also has a battle progress narration function.
#==============================================================================

class Window_ExtendedGoldMessage < Window_Gold_Message
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    super
    self.openness = 255
    @lines = []
    refresh
  end
  #--------------------------------------------------------------------------
  # * Dispose
  #--------------------------------------------------------------------------
  def dispose
    super
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    super
  end
  #--------------------------------------------------------------------------
  # * Open Window (disabled)
  #--------------------------------------------------------------------------
  def open
  end
  #--------------------------------------------------------------------------
  # * Close Window (disabled)
  #--------------------------------------------------------------------------
  def close
  end
  #--------------------------------------------------------------------------
  # * Set Window Background and Position (disabled)
  #--------------------------------------------------------------------------
  def reset_window
  end
  #--------------------------------------------------------------------------
  # * Clear
  #--------------------------------------------------------------------------
  def clear
    @lines.clear
    refresh
  end
  #--------------------------------------------------------------------------
  # * Get Row Count
  #--------------------------------------------------------------------------
  def line_number
    return @lines.size
  end
  #--------------------------------------------------------------------------
  # * Go Back One Line
  #--------------------------------------------------------------------------
  def back_one
    @lines.pop
    refresh
  end
  #--------------------------------------------------------------------------
  # * Return to Designated Line
  #     line_number : Line number
  #--------------------------------------------------------------------------
  def back_to(line_number)
    while @lines.size > line_number
      @lines.pop
    end
    refresh
  end
  #--------------------------------------------------------------------------
  # * Add Text
  #     text : Text to be added
  #--------------------------------------------------------------------------
  def add_instant_text(text)
    @lines.push(text)
    refresh
  end
  #--------------------------------------------------------------------------
  # * Replace Text
  #     text : Text to be replaced
  #    Replaces the last line with different text.
  #--------------------------------------------------------------------------
  def replace_instant_text(text)
    @lines.pop
    @lines.push(text)
    refresh
  end
  #--------------------------------------------------------------------------
  # * Get Text From Last Line
  #--------------------------------------------------------------------------
  def last_instant_text
    return @lines[-1]
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    for i in 0...@lines.size
      draw_line(i)
    end
  end
  #--------------------------------------------------------------------------
  # * Draw Line
  #     index : Line number
  #--------------------------------------------------------------------------
  def draw_line(index)
    rect = Rect.new(0, 0, 0, 0)
    rect.x += 4
    rect.y += index * WLH
    rect.width = contents.width - 8
    rect.height = WLH
    self.contents.clear_rect(rect)
    self.contents.font.color = normal_color
    self.contents.draw_text(rect, @lines[index])
  end
end

#==============================================================================
# ** Window_Exp_Message
#------------------------------------------------------------------------------
#  This message window is used to display text.
#==============================================================================

class Window_Exp_Message < Window_Selectable
  #--------------------------------------------------------------------------
  # * Constants
  #--------------------------------------------------------------------------
  MAX_LINE = 1                            # Maximum number of lines
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    super(0, 0, 272, 60)
    self.z = 200
    self.active = false
    self.index = -1
    self.openness = 0
    @opening = false            # WIndow opening flag
    @closing = false            # Window closing flag
    @text = nil                 # Remaining text to be displayed
    @contents_x = 0             # X coordinate for drawing next character
    @contents_y = 0             # Y coordinate for drawing next character
    @line_count = 0             # Line count drawn up until now
    @wait_count = 0             # Wait count
    @background = 0             # Background type
    @position = 2               # Display position
    @show_fast = false          # Fast forward flag
    @line_show_fast = false     # Fast forward by line flag
    @pause_skip = false         # Input standby omission flag
  end
  #--------------------------------------------------------------------------
  # * Dispose
  #--------------------------------------------------------------------------
  def dispose
    super
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    super
    update_show_fast
    unless @opening or @closing             # Window is not opening or closing
      if @wait_count > 0                    # Waiting within text
        @wait_count -= 1
      elsif self.pause                      # Waiting for text advancement
        input_pause
      elsif @text != nil                    # More text exists
        update_message                        # Update message
      elsif continue?                       # If continuing
        start_message                         # Start message
        open                                  # Open window
        $game_message.visible = true
      else                                  # If not continuing
        close                                 # Close window
        $game_message.visible = @closing
      end
    end
  end
  #--------------------------------------------------------------------------
  # * Update Fast Forward Flag
  #--------------------------------------------------------------------------
  def update_show_fast
    if self.pause or self.openness < 255
      @show_fast = false
    elsif Input.trigger?(Input::C) and @wait_count < 2
      @show_fast = true
    elsif not Input.press?(Input::C)
      @show_fast = false
    end
    if @show_fast and @wait_count > 0
      @wait_count -= 1
    end
  end
  #--------------------------------------------------------------------------
  # * Determine if the Next Message Should be Displayed Continuously
  #--------------------------------------------------------------------------
  def continue?
    return true if $game_message.num_input_variable_id > 0
    return false if $game_message.texts.empty?
    if self.openness > 0 and not $game_temp.in_battle
      return false if @background != $game_message.background
      return false if @position != $game_message.position
    end
    return true
  end
  #--------------------------------------------------------------------------
  # * Start Message
  #--------------------------------------------------------------------------
  def start_message
    @text = ""
    for i in 0...$game_message.texts.size
      @text += "    " if i >= $game_message.choice_start
      @text += $game_message.texts[i].clone + "\x00"
    end
    @item_max = $game_message.choice_max
    convert_special_characters
    reset_window
    new_page
  end
  #--------------------------------------------------------------------------
  # * New Page
  #--------------------------------------------------------------------------
  def new_page
    contents.clear
    if $game_message.face_name.empty?
      @contents_x = 0
    else
      name = $game_message.face_name
      index = $game_message.face_index
      draw_face(name, index, 0, 0)
      @contents_x = 112
    end
    @contents_y = 0
    @line_count = 0
    @show_fast = false
    @line_show_fast = false
    @pause_skip = false
    contents.font.color = text_color(0)
  end
  #--------------------------------------------------------------------------
  # * New Line
  #--------------------------------------------------------------------------
  def new_line
    if $game_message.face_name.empty?
      @contents_x = 0
    else
      @contents_x = 112
    end
    @contents_y += WLH
    @line_count += 1
    @line_show_fast = false
  end
  #--------------------------------------------------------------------------
  # * Convert Special Characters
  #--------------------------------------------------------------------------
  def convert_special_characters
    @text.gsub!(/\\V\[([0-9]+)\]/i) { $game_variables[$1.to_i] }
    @text.gsub!(/\\V\[([0-9]+)\]/i) { $game_variables[$1.to_i] }
    @text.gsub!(/\\N\[([0-9]+)\]/i) { $game_actors[$1.to_i].name }
    @text.gsub!(/\\C\[([0-9]+)\]/i) { "\x01[#{$1}]" }
    @text.gsub!(/\\G/)              { "\x02" }
    @text.gsub!(/\\\./)             { "\x03" }
    @text.gsub!(/\\\|/)             { "\x04" }
    @text.gsub!(/\\!/)              { "\x05" }
    @text.gsub!(/\\>/)              { "\x06" }
    @text.gsub!(/\\</)              { "\x07" }
    @text.gsub!(/\\\^/)             { "\x08" }
    @text.gsub!(/\\\\/)             { "\\" }
  end
  #--------------------------------------------------------------------------
  # * Set Window Background and Position
  #--------------------------------------------------------------------------
  def reset_window
    @background = $game_message.background
    @position = $game_message.position
    if @background == 0   # Normal window
      self.opacity = 255
    else                  # Dim Background and Make it Transparent
      self.opacity = 0
    end
    case @position
    when 0  # Top
      self.y = 0
      @gold_window.y = 360
    when 1  # Middle
      self.y = 144
      @gold_window.y = 0
    when 2  # Bottom
      self.y = 288
      @gold_window.y = 0
    end
  end
  #--------------------------------------------------------------------------
  # * End Message
  #--------------------------------------------------------------------------
  def terminate_message
    self.active = false
    self.pause = false
    self.index = -1
    $game_message.main_proc.call if $game_message.main_proc != nil
    $game_message.clear
  end
  #--------------------------------------------------------------------------
  # * Update Message
  #--------------------------------------------------------------------------
  def update_message
    loop do
      c = @text.slice!(/./m)            # Get next text character
      case c
      when nil                          # There is no text that must be drawn
        finish_message                  # Finish update
        break
      when "\x00"                       # New line
        new_line
        if @line_count >= MAX_LINE      # If line count is maximum
          unless @text.empty?           # If there is more
            self.pause = true           # Insert number input
            break
          end
        end
      when "\x01"                       # \C[n]  (text character color change)
        @text.sub!(/\[([0-9]+)\]/, "")
        contents.font.color = text_color($1.to_i)
        next
      when "\x03"                       # \.  (wait 1/4 second)
        @wait_count = 15
        break
      when "\x04"                       # \|  (wait 1 second)
        @wait_count = 60
        break
      when "\x05"                       # \!  (Wait for input)
        self.pause = true
        break
      when "\x06"                       # \>  (Fast display ON)
        @line_show_fast = true
      when "\x07"                       # \<  (Fast display OFF)
        @line_show_fast = false
      when "\x08"                       # \^  (No wait for input)
        @pause_skip = true
      else                              # Normal text character
        contents.draw_text(@contents_x, @contents_y, 40, WLH, c)
        c_width = contents.text_size(c).width
        @contents_x += c_width
      end
      break unless @show_fast or @line_show_fast
    end
  end
  #--------------------------------------------------------------------------
  # * End Message Update
  #--------------------------------------------------------------------------
  def finish_message
    if $game_message.choice_max > 0
      start_choice
    elsif $game_message.num_input_variable_id > 0
      start_number_input
    elsif @pause_skip
      terminate_message
    else
      self.pause = true
    end
    @wait_count = 10
    @text = nil
  end
  #--------------------------------------------------------------------------
  # * Start Choices
  #--------------------------------------------------------------------------
  def start_choice
    self.active = true
    self.index = 0
  end
  #--------------------------------------------------------------------------
  # * Text Advancement Input
  #--------------------------------------------------------------------------
  def input_pause
    if Input.trigger?(Input::B) or Input.trigger?(Input::C)
      self.pause = false
      if @text != nil and not @text.empty?
        new_page if @line_count >= MAX_LINE
      else
        terminate_message
      end
    end
  end
end
#==============================================================================
# ** Window_BattleMessage
#------------------------------------------------------------------------------
#  Message window displayed during battle. In addition to the normal message
# window functions, it also has a battle progress narration function.
#==============================================================================

class Window_ExtendedExpMessage < Window_Exp_Message
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    super
    self.openness = 255
    @lines = []
    refresh
  end
  #--------------------------------------------------------------------------
  # * Dispose
  #--------------------------------------------------------------------------
  def dispose
    super
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    super
  end
  #--------------------------------------------------------------------------
  # * Open Window (disabled)
  #--------------------------------------------------------------------------
  def open
  end
  #--------------------------------------------------------------------------
  # * Close Window (disabled)
  #--------------------------------------------------------------------------
  def close
  end
  #--------------------------------------------------------------------------
  # * Set Window Background and Position (disabled)
  #--------------------------------------------------------------------------
  def reset_window
  end
  #--------------------------------------------------------------------------
  # * Clear
  #--------------------------------------------------------------------------
  def clear
    @lines.clear
    refresh
  end
  #--------------------------------------------------------------------------
  # * Get Row Count
  #--------------------------------------------------------------------------
  def line_number
    return @lines.size
  end
  #--------------------------------------------------------------------------
  # * Go Back One Line
  #--------------------------------------------------------------------------
  def back_one
    @lines.pop
    refresh
  end
  #--------------------------------------------------------------------------
  # * Return to Designated Line
  #     line_number : Line number
  #--------------------------------------------------------------------------
  def back_to(line_number)
    while @lines.size > line_number
      @lines.pop
    end
    refresh
  end
  #--------------------------------------------------------------------------
  # * Add Text
  #     text : Text to be added
  #--------------------------------------------------------------------------
  def add_instant_text(text)
    @lines.push(text)
    refresh
  end
  #--------------------------------------------------------------------------
  # * Replace Text
  #     text : Text to be replaced
  #    Replaces the last line with different text.
  #--------------------------------------------------------------------------
  def replace_instant_text(text)
    @lines.pop
    @lines.push(text)
    refresh
  end
  #--------------------------------------------------------------------------
  # * Get Text From Last Line
  #--------------------------------------------------------------------------
  def last_instant_text
    return @lines[-1]
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    for i in 0...@lines.size
      draw_line(i)
    end
  end
  #--------------------------------------------------------------------------
  # * Draw Line
  #     index : Line number
  #--------------------------------------------------------------------------
  def draw_line(index)
    rect = Rect.new(0, 0, 0, 0)
    rect.x += 4
    rect.y += index * WLH
    rect.width = contents.width - 8
    rect.height = WLH
    self.contents.clear_rect(rect)
    self.contents.font.color = normal_color
    self.contents.draw_text(rect, @lines[index])
  end
end

#==============================================================================
# ** Window_Item_Message
#------------------------------------------------------------------------------
#  This message window is used to display text.
#==============================================================================

class Window_Item_Message < Window_Selectable
  #--------------------------------------------------------------------------
  # * Constants
  #--------------------------------------------------------------------------
  MAX_LINE = 15                            # Maximum number of lines
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    super(0, 60, 544, 356)
    self.z = 200
    self.active = false
    self.index = -1
    self.openness = 0
    @opening = false            # WIndow opening flag
    @closing = false            # Window closing flag
    @text = nil                 # Remaining text to be displayed
    @contents_x = 0             # X coordinate for drawing next character
    @contents_y = 0             # Y coordinate for drawing next character
    @line_count = 0             # Line count drawn up until now
    @wait_count = 0             # Wait count
    @background = 0             # Background type
    @position = 2               # Display position
    @show_fast = false          # Fast forward flag
    @line_show_fast = false     # Fast forward by line flag
    @pause_skip = false         # Input standby omission flag
  end
  #--------------------------------------------------------------------------
  # * Dispose
  #--------------------------------------------------------------------------
  def dispose
    super
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    super
    update_show_fast
    unless @opening or @closing             # Window is not opening or closing
      if @wait_count > 0                    # Waiting within text
        @wait_count -= 1
      elsif self.pause                      # Waiting for text advancement
        input_pause
      elsif @text != nil                    # More text exists
        update_message                        # Update message
      elsif continue?                       # If continuing
        start_message                         # Start message
        open                                  # Open window
        $game_message.visible = true
      else                                  # If not continuing
        close                                 # Close window
        $game_message.visible = @closing
      end
    end
  end
  #--------------------------------------------------------------------------
  # * Update Fast Forward Flag
  #--------------------------------------------------------------------------
  def update_show_fast
    if self.pause or self.openness < 255
      @show_fast = false
    elsif Input.trigger?(Input::C) and @wait_count < 2
      @show_fast = true
    elsif not Input.press?(Input::C)
      @show_fast = false
    end
    if @show_fast and @wait_count > 0
      @wait_count -= 1
    end
  end
  #--------------------------------------------------------------------------
  # * Determine if the Next Message Should be Displayed Continuously
  #--------------------------------------------------------------------------
  def continue?
    return true if $game_message.num_input_variable_id > 0
    return false if $game_message.texts.empty?
    if self.openness > 0 and not $game_temp.in_battle
      return false if @background != $game_message.background
      return false if @position != $game_message.position
    end
    return true
  end
  #--------------------------------------------------------------------------
  # * Start Message
  #--------------------------------------------------------------------------
  def start_message
    @text = ""
    for i in 0...$game_message.texts.size
      @text += "    " if i >= $game_message.choice_start
      @text += $game_message.texts[i].clone + "\x00"
    end
    @item_max = $game_message.choice_max
    convert_special_characters
    reset_window
    new_page
  end
  #--------------------------------------------------------------------------
  # * New Page
  #--------------------------------------------------------------------------
  def new_page
    contents.clear
    if $game_message.face_name.empty?
      @contents_x = 0
    else
      name = $game_message.face_name
      index = $game_message.face_index
      draw_face(name, index, 0, 0)
      @contents_x = 112
    end
    @contents_y = 0
    @line_count = 0
    @show_fast = false
    @line_show_fast = false
    @pause_skip = false
    contents.font.color = text_color(0)
  end
  #--------------------------------------------------------------------------
  # * New Line
  #--------------------------------------------------------------------------
  def new_line
    if $game_message.face_name.empty?
      @contents_x = 0
    else
      @contents_x = 112
    end
    @contents_y += WLH
    @line_count += 1
    @line_show_fast = false
  end
  #--------------------------------------------------------------------------
  # * Convert Special Characters
  #--------------------------------------------------------------------------
  def convert_special_characters
    @text.gsub!(/\\V\[([0-9]+)\]/i) { $game_variables[$1.to_i] }
    @text.gsub!(/\\V\[([0-9]+)\]/i) { $game_variables[$1.to_i] }
    @text.gsub!(/\\N\[([0-9]+)\]/i) { $game_actors[$1.to_i].name }
    @text.gsub!(/\\C\[([0-9]+)\]/i) { "\x01[#{$1}]" }
    @text.gsub!(/\\G/)              { "\x02" }
    @text.gsub!(/\\\./)             { "\x03" }
    @text.gsub!(/\\\|/)             { "\x04" }
    @text.gsub!(/\\!/)              { "\x05" }
    @text.gsub!(/\\>/)              { "\x06" }
    @text.gsub!(/\\</)              { "\x07" }
    @text.gsub!(/\\\^/)             { "\x08" }
    @text.gsub!(/\\\\/)             { "\\" }
  end
  #--------------------------------------------------------------------------
  # * Set Window Background and Position
  #--------------------------------------------------------------------------
  def reset_window
    @background = $game_message.background
    @position = $game_message.position
    if @background == 0   # Normal window
      self.opacity = 255
    else                  # Dim Background and Make it Transparent
      self.opacity = 0
    end
    case @position
    when 0  # Top
      self.y = 0
      @gold_window.y = 360
    when 1  # Middle
      self.y = 144
      @gold_window.y = 0
    when 2  # Bottom
      self.y = 288
      @gold_window.y = 0
    end
  end
  #--------------------------------------------------------------------------
  # * End Message
  #--------------------------------------------------------------------------
  def terminate_message
    self.active = false
    self.pause = false
    self.index = -1
    $game_message.main_proc.call if $game_message.main_proc != nil
    $game_message.clear
  end
  #--------------------------------------------------------------------------
  # * Update Message
  #--------------------------------------------------------------------------
  def update_message
    loop do
      c = @text.slice!(/./m)            # Get next text character
      case c
      when nil                          # There is no text that must be drawn
        finish_message                  # Finish update
        break
      when "\x00"                       # New line
        new_line
        if @line_count >= MAX_LINE      # If line count is maximum
          unless @text.empty?           # If there is more
            self.pause = true           # Insert number input
            break
          end
        end
      when "\x01"                       # \C[n]  (text character color change)
        @text.sub!(/\[([0-9]+)\]/, "")
        contents.font.color = text_color($1.to_i)
        next
      when "\x03"                       # \.  (wait 1/4 second)
        @wait_count = 15
        break
      when "\x04"                       # \|  (wait 1 second)
        @wait_count = 60
        break
      when "\x05"                       # \!  (Wait for input)
        self.pause = true
        break
      when "\x06"                       # \>  (Fast display ON)
        @line_show_fast = true
      when "\x07"                       # \<  (Fast display OFF)
        @line_show_fast = false
      when "\x08"                       # \^  (No wait for input)
        @pause_skip = true
      else                              # Normal text character
        contents.draw_text(@contents_x, @contents_y, 40, WLH, c)
        c_width = contents.text_size(c).width
        @contents_x += c_width
      end
      break unless @show_fast or @line_show_fast
    end
  end
  #--------------------------------------------------------------------------
  # * End Message Update
  #--------------------------------------------------------------------------
  def finish_message
    if $game_message.choice_max > 0
      start_choice
    elsif $game_message.num_input_variable_id > 0
      start_number_input
    elsif @pause_skip
      terminate_message
    else
      self.pause = true
    end
    @wait_count = 10
    @text = nil
  end
  #--------------------------------------------------------------------------
  # * Start Choices
  #--------------------------------------------------------------------------
  def start_choice
    self.active = true
    self.index = 0
  end
  #--------------------------------------------------------------------------
  # * Text Advancement Input
  #--------------------------------------------------------------------------
  def input_pause
    if Input.trigger?(Input::B) or Input.trigger?(Input::C)
      self.pause = false
      if @text != nil and not @text.empty?
        new_page if @line_count >= MAX_LINE
      else
        terminate_message
      end
    end
  end
end
#==============================================================================
# ** Window_BattleMessage
#------------------------------------------------------------------------------
#  Message window displayed during battle. In addition to the normal message
# window functions, it also has a battle progress narration function.
#==============================================================================

class Window_ExtendedItemMessage < Window_Item_Message
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    super
    self.openness = 255
    @lines = []
    refresh
  end
  #--------------------------------------------------------------------------
  # * Dispose
  #--------------------------------------------------------------------------
  def dispose
    super
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    super
  end
  #--------------------------------------------------------------------------
  # * Open Window (disabled)
  #--------------------------------------------------------------------------
  def open
  end
  #--------------------------------------------------------------------------
  # * Close Window (disabled)
  #--------------------------------------------------------------------------
  def close
  end
  #--------------------------------------------------------------------------
  # * Set Window Background and Position (disabled)
  #--------------------------------------------------------------------------
  def reset_window
  end
  #--------------------------------------------------------------------------
  # * Clear
  #--------------------------------------------------------------------------
  def clear
    @lines.clear
    refresh
  end
  #--------------------------------------------------------------------------
  # * Get Row Count
  #--------------------------------------------------------------------------
  def line_number
    return @lines.size
  end
  #--------------------------------------------------------------------------
  # * Go Back One Line
  #--------------------------------------------------------------------------
  def back_one
    @lines.pop
    refresh
  end
  #--------------------------------------------------------------------------
  # * Return to Designated Line
  #     line_number : Line number
  #--------------------------------------------------------------------------
  def back_to(line_number)
    while @lines.size > line_number
      @lines.pop
    end
    refresh
  end
  #--------------------------------------------------------------------------
  # * Add Text
  #     text : Text to be added
  #--------------------------------------------------------------------------
  def add_instant_text(text)
    @lines.push(text)
    refresh
  end
  #--------------------------------------------------------------------------
  # * Replace Text
  #     text : Text to be replaced
  #    Replaces the last line with different text.
  #--------------------------------------------------------------------------
  def replace_instant_text(text)
    @lines.pop
    @lines.push(text)
    refresh
  end
  #--------------------------------------------------------------------------
  # * Get Text From Last Line
  #--------------------------------------------------------------------------
  def last_instant_text
    return @lines[-1]
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    for i in 0...@lines.size
      draw_line(i)
    end
  end
  #--------------------------------------------------------------------------
  # * Draw Line
  #     index : Line number
  #--------------------------------------------------------------------------
  def draw_line(index)
    rect = Rect.new(0, 0, 0, 0)
    rect.x += 4
    rect.y += index * WLH
    rect.width = contents.width - 8
    rect.height = WLH
    self.contents.clear_rect(rect)
    self.contents.font.color = normal_color
    self.contents.draw_text(rect, @lines[index])
  end
end

#==============================================================================
# ** Window_Lvl_Message
#------------------------------------------------------------------------------
#  This message window is used to display text.
#==============================================================================

class Window_Lvl_Message < Window_Selectable
  #--------------------------------------------------------------------------
  # * Constants
  #--------------------------------------------------------------------------
  MAX_LINE = 12                            # Maximum number of lines
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    super(0, 60, 544, 356)
    self.z = 200
    self.active = false
    self.index = -1
    self.openness = 0
    @opening = false            # WIndow opening flag
    @closing = false            # Window closing flag
    @text = nil                 # Remaining text to be displayed
    @contents_x = 0             # X coordinate for drawing next character
    @contents_y = 0             # Y coordinate for drawing next character
    @line_count = 0             # Line count drawn up until now
    @wait_count = 0             # Wait count
    @background = 0             # Background type
    @position = 2               # Display position
    @show_fast = false          # Fast forward flag
    @line_show_fast = false     # Fast forward by line flag
    @pause_skip = false         # Input standby omission flag
  end
  #--------------------------------------------------------------------------
  # * Dispose
  #--------------------------------------------------------------------------
  def dispose
    super
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    super
    update_show_fast
    unless @opening or @closing             # Window is not opening or closing
      if @wait_count > 0                    # Waiting within text
        @wait_count -= 1
      elsif self.pause                      # Waiting for text advancement
        input_pause
      elsif @text != nil                    # More text exists
        update_message                        # Update message
      elsif continue?                       # If continuing
        start_message                         # Start message
        open                                  # Open window
        $game_message.visible = true
      else                                  # If not continuing
        close                                 # Close window
        $game_message.visible = @closing
      end
    end
  end
  #--------------------------------------------------------------------------
  # * Update Fast Forward Flag
  #--------------------------------------------------------------------------
  def update_show_fast
    if self.pause or self.openness < 255
      @show_fast = false
    elsif Input.trigger?(Input::C) and @wait_count < 2
      @show_fast = true
    elsif not Input.press?(Input::C)
      @show_fast = false
    end
    if @show_fast and @wait_count > 0
      @wait_count -= 1
    end
  end
  #--------------------------------------------------------------------------
  # * Determine if the Next Message Should be Displayed Continuously
  #--------------------------------------------------------------------------
  def continue?
    return true if $game_message.num_input_variable_id > 0
    return false if $game_message.texts.empty?
    if self.openness > 0 and not $game_temp.in_battle
      return false if @background != $game_message.background
      return false if @position != $game_message.position
    end
    return true
  end
  #--------------------------------------------------------------------------
  # * Start Message
  #--------------------------------------------------------------------------
  def start_message
    @text = ""
    for i in 0...$game_message.texts.size
      @text += "    " if i >= $game_message.choice_start
      @text += $game_message.texts[i].clone + "\x00"
    end
    @item_max = $game_message.choice_max
    convert_special_characters
    reset_window
    new_page
  end
  #--------------------------------------------------------------------------
  # * New Page
  #--------------------------------------------------------------------------
  def new_page
    contents.clear
    if $game_message.face_name.empty?
      @contents_x = 0
    else
      name = $game_message.face_name
      index = $game_message.face_index
      draw_face(name, index, 0, 0)
      @contents_x = 112
    end
    @contents_y = 0
    @line_count = 0
    @show_fast = false
    @line_show_fast = false
    @pause_skip = false
    contents.font.color = text_color(0)
  end
  #--------------------------------------------------------------------------
  # * New Line
  #--------------------------------------------------------------------------
  def new_line
    if $game_message.face_name.empty?
      @contents_x = 0
    else
      @contents_x = 112
    end
    @contents_y += WLH
    @line_count += 1
    @line_show_fast = false
  end
  #--------------------------------------------------------------------------
  # * Convert Special Characters
  #--------------------------------------------------------------------------
  def convert_special_characters
    @text.gsub!(/\\V\[([0-9]+)\]/i) { $game_variables[$1.to_i] }
    @text.gsub!(/\\V\[([0-9]+)\]/i) { $game_variables[$1.to_i] }
    @text.gsub!(/\\N\[([0-9]+)\]/i) { $game_actors[$1.to_i].name }
    @text.gsub!(/\\C\[([0-9]+)\]/i) { "\x01[#{$1}]" }
    @text.gsub!(/\\G/)              { "\x02" }
    @text.gsub!(/\\\./)             { "\x03" }
    @text.gsub!(/\\\|/)             { "\x04" }
    @text.gsub!(/\\!/)              { "\x05" }
    @text.gsub!(/\\>/)              { "\x06" }
    @text.gsub!(/\\</)              { "\x07" }
    @text.gsub!(/\\\^/)             { "\x08" }
    @text.gsub!(/\\\\/)             { "\\" }
  end
  #--------------------------------------------------------------------------
  # * Set Window Background and Position
  #--------------------------------------------------------------------------
  def reset_window
    @background = $game_message.background
    @position = $game_message.position
    if @background == 0   # Normal window
      self.opacity = 255
    else                  # Dim Background and Make it Transparent
      self.opacity = 0
    end
    case @position
    when 0  # Top
      self.y = 0
      @gold_window.y = 360
    when 1  # Middle
      self.y = 144
      @gold_window.y = 0
    when 2  # Bottom
      self.y = 288
      @gold_window.y = 0
    end
  end
  #--------------------------------------------------------------------------
  # * End Message
  #--------------------------------------------------------------------------
  def terminate_message
    self.active = false
    self.pause = false
    self.index = -1
    $game_message.main_proc.call if $game_message.main_proc != nil
    $game_message.clear
  end
  #--------------------------------------------------------------------------
  # * Update Message
  #--------------------------------------------------------------------------
  def update_message
    loop do
      c = @text.slice!(/./m)            # Get next text character
      case c
      when nil                          # There is no text that must be drawn
        finish_message                  # Finish update
        break
      when "\x00"                       # New line
        new_line
        if @line_count >= MAX_LINE      # If line count is maximum
          unless @text.empty?           # If there is more
            self.pause = true           # Insert number input
            break
          end
        end
      when "\x01"                       # \C[n]  (text character color change)
        @text.sub!(/\[([0-9]+)\]/, "")
        contents.font.color = text_color($1.to_i)
        next
      when "\x03"                       # \.  (wait 1/4 second)
        @wait_count = 15
        break
      when "\x04"                       # \|  (wait 1 second)
        @wait_count = 60
        break
      when "\x05"                       # \!  (Wait for input)
        self.pause = true
        break
      when "\x06"                       # \>  (Fast display ON)
        @line_show_fast = true
      when "\x07"                       # \<  (Fast display OFF)
        @line_show_fast = false
      when "\x08"                       # \^  (No wait for input)
        @pause_skip = true
      else                              # Normal text character
        contents.draw_text(@contents_x, @contents_y, 40, WLH, c)
        c_width = contents.text_size(c).width
        @contents_x += c_width
      end
      break unless @show_fast or @line_show_fast
    end
  end
  #--------------------------------------------------------------------------
  # * End Message Update
  #--------------------------------------------------------------------------
  def finish_message
    if $game_message.choice_max > 0
      start_choice
    elsif $game_message.num_input_variable_id > 0
      start_number_input
    elsif @pause_skip
      terminate_message
    else
      self.pause = true
    end
    @wait_count = 10
    @text = nil
  end
  #--------------------------------------------------------------------------
  # * Start Choices
  #--------------------------------------------------------------------------
  def start_choice
    self.active = true
    self.index = 0
  end
  #--------------------------------------------------------------------------
  # * Text Advancement Input
  #--------------------------------------------------------------------------
  def input_pause
    if Input.trigger?(Input::B) or Input.trigger?(Input::C)
      self.pause = false
      if @text != nil and not @text.empty?
        new_page if @line_count >= MAX_LINE
      else
        terminate_message
      end
    end
  end
end
#==============================================================================
# ** Window_BattleMessage
#------------------------------------------------------------------------------
#  Message window displayed during battle. In addition to the normal message
# window functions, it also has a battle progress narration function.
#==============================================================================

class Window_ExtendedLvlMessage < Window_Lvl_Message
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    super
    self.openness = 255
    @lines = []
    refresh
  end
  #--------------------------------------------------------------------------
  # * Dispose
  #--------------------------------------------------------------------------
  def dispose
    super
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    super
  end
  #--------------------------------------------------------------------------
  # * Open Window (disabled)
  #--------------------------------------------------------------------------
  def open
  end
  #--------------------------------------------------------------------------
  # * Close Window (disabled)
  #--------------------------------------------------------------------------
  def close
  end
  #--------------------------------------------------------------------------
  # * Set Window Background and Position (disabled)
  #--------------------------------------------------------------------------
  def reset_window
  end
  #--------------------------------------------------------------------------
  # * Clear
  #--------------------------------------------------------------------------
  def clear
    @lines.clear
    refresh
  end
  #--------------------------------------------------------------------------
  # * Get Row Count
  #--------------------------------------------------------------------------
  def line_number
    return @lines.size
  end
  #--------------------------------------------------------------------------
  # * Go Back One Line
  #--------------------------------------------------------------------------
  def back_one
    @lines.pop
    refresh
  end
  #--------------------------------------------------------------------------
  # * Return to Designated Line
  #     line_number : Line number
  #--------------------------------------------------------------------------
  def back_to(line_number)
    while @lines.size > line_number
      @lines.pop
    end
    refresh
  end
  #--------------------------------------------------------------------------
  # * Add Text
  #     text : Text to be added
  #--------------------------------------------------------------------------
  def add_instant_text(text)
    @lines.push(text)
    refresh
  end
  #--------------------------------------------------------------------------
  # * Replace Text
  #     text : Text to be replaced
  #    Replaces the last line with different text.
  #--------------------------------------------------------------------------
  def replace_instant_text(text)
    @lines.pop
    @lines.push(text)
    refresh
  end
  #--------------------------------------------------------------------------
  # * Get Text From Last Line
  #--------------------------------------------------------------------------
  def last_instant_text
    return @lines[-1]
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    for i in 0...@lines.size
      draw_line(i)
    end
  end
  #--------------------------------------------------------------------------
  # * Draw Line
  #     index : Line number
  #--------------------------------------------------------------------------
  def draw_line(index)
    rect = Rect.new(0, 0, 0, 0)
    rect.x += 4
    rect.y += index * WLH
    rect.width = contents.width - 8
    rect.height = WLH
    self.contents.clear_rect(rect)
    self.contents.font.color = normal_color
    self.contents.draw_text(rect, @lines[index])
  end
end

#==============================================================================
# ** Vocab Customizes for the extended victory screen
#------------------------------------------------------------------------------
#  This module defines terms and messages. It defines some data as constant
# variables. Terms in the database are obtained from $data_system.
#==============================================================================

module Vocab



  # Display when there are multiple members
  PartyName       = ""

  # Battle Ending Messages
  Victory         = "Victorious!"
  Defeat          = "You are defeated."
  ObtainExp       = "EXP: %s!"
  ObtainGold      = "Gold: %s!"
end

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

class Scene_Battle < Scene_Battle
  #--------------------------------------------------------------------------
  # * Start processing
  #--------------------------------------------------------------------------
  def start
    super
    @victory_gold = Window_ExtendedGoldMessage.new
    @victory_exp = Window_ExtendedExpMessage.new
    @victory_item = Window_ExtendedItemMessage.new
    @victory_lvl = Window_ExtendedLvlMessage.new
    @victory_gold.visible = false
    @victory_exp.visible = false
    @victory_item.visible = false
    @victory_lvl.visible = false
  end

  #--------------------------------------------------------------------------
  # * Termination Processing
  #--------------------------------------------------------------------------
  def terminate
    super
    @victory_gold.dispose
    @victory_exp.dispose
    @victory_item.dispose
    @victory_lvl.dispose
  end
  #--------------------------------------------------------------------------
  # * Basic Update Processing
  #     main : Call from main update method
  #--------------------------------------------------------------------------
    def update_basic_gold(main = false)
    Graphics.update unless main     # Update game screen
    Input.update unless main        # Update input information
    $game_system.update             # Update timer
    $game_troop.update              # Update enemy group
    @spriteset.update               # Update sprite set
    @victory_gold.update
  end
  
    def update_basic_exp(main = false)
    Graphics.update unless main     # Update game screen
    Input.update unless main        # Update input information
    $game_system.update             # Update timer
    $game_troop.update              # Update enemy group
    @spriteset.update               # Update sprite set
    @victory_exp.update
  end
  
    def update_basic_item(main = false)
    Graphics.update unless main     # Update game screen
    Input.update unless main        # Update input information
    $game_system.update             # Update timer
    $game_troop.update              # Update enemy group
    @spriteset.update               # Update sprite set
    @victory_item.update
  end
  
    def update_basic_lvl(main = false)
    Graphics.update unless main     # Update game screen
    Input.update unless main        # Update input information
    $game_system.update             # Update timer
    $game_troop.update              # Update enemy group
    @spriteset.update               # Update sprite set
    @victory_lvl.update
  end
  #--------------------------------------------------------------------------
  # * Wait Until Message Display has Finished
  #--------------------------------------------------------------------------
    def wait_for_gold
    @victory_gold.update
    while $game_message.visible
      update_basic_gold
    end
  end
    def wait_for_exp
    @victory_exp.update
    while $game_message.visible
      update_basic_exp
    end
  end
    def wait_for_item
    @victory_item.update
    while $game_message.visible
      update_basic_item
    end
  end
    def wait_for_lvl
    @victory_lvl.update
    while $game_message.visible
      update_basic_lvl
    end
  end
  #--------------------------------------------------------------------------
  # * Victory Processing
  #--------------------------------------------------------------------------
  def process_victory
    @info_viewport.visible = false
    @message_window.visible = true
    RPG::BGM.stop
    $game_system.battle_end_me.play
    unless $BTEST
      $game_temp.map_bgm.play
      $game_temp.map_bgs.play
    end
    display_victory
    display_exp
    display_gold
    display_level_up
    display_drop_items
    battle_end(0)
  end
  #--------------------------------------------------------------------------
  # * Display Gained Experience and Gold
  #--------------------------------------------------------------------------
  def display_victory
    text = sprintf(Vocab::Victory, $game_party.name)
    $game_message.texts.push('\|' + text)
    wait_for_message
    @message_window.visible = false
  end
  
    def display_exp
    @victory_gold.visible = true
    @victory_exp.visible = true
    @victory_lvl.visible = true
    exp = $game_troop.exp_total
    if exp > 0
      text = sprintf(Vocab::ObtainExp, exp)
      $game_message.texts.push('\.' + text)
    end
    wait_for_exp
  end
  
      def display_gold
    gold = $game_troop.gold_total
    $game_party.gain_gold(gold)
    if gold > 0
      text = sprintf(Vocab::ObtainGold, gold, Vocab::gold)
      $game_message.texts.push('\.' + text)
    end
    wait_for_gold
  end
  #--------------------------------------------------------------------------
  # * Display Gained Drop Items
  #--------------------------------------------------------------------------
  def display_drop_items
    @victory_item.visible = true
    drop_items = $game_troop.make_drop_items
    for item in drop_items
      $game_party.gain_item(item, 1)
      text = sprintf(Vocab::ObtainItem, item.name)
      $game_message.texts.push(text)
    end
    wait_for_item
  end
  #--------------------------------------------------------------------------
  # * Display Level Up
  #--------------------------------------------------------------------------
  def display_level_up
    exp = $game_troop.exp_total
    for actor in $game_party.existing_members
      last_level = actor.level
      last_skills = actor.skills
      actor.gain_exp(exp, true)
    end
    wait_for_lvl
    @victory_lvl.visible = false
  end
end


Good luck with you new Victory Screen wink.gif

Greetzz, Cell(Conmaster3)

PS: Free to use for non commercial production if you credit me... if you want to use it for commercial production please contact me

This post has been edited by conmaster3: Aug 4 2008, 04:11 PM


__________________________

Current Game(s):

[Show/Hide] Fantasy Tail
Fantasy Tail

Story line 15%
Game 15%
Monsters 0%
Characters 0%
Weapons 80%
Armor 80%
Skills 0%
Spells 0%

Total game script 60%

Downloaded 0% (In use)
A lot has been downloaded but all scripts has been replaced or removed
Own Created 40% (In use)
Go to the top of the page
 
+Quote Post
   
Grandhoug
post Aug 4 2008, 10:27 AM
Post #2


Level 5
Group Icon

Group: Member
Posts: 70
Type: Developer
RM Skill: Undisclosed




works nice, very nice


__________________________
Fly like a rhino, sting like shock paddles.
Go to the top of the page
 
+Quote Post
   
Supergodjesus
post Aug 4 2008, 01:49 PM
Post #3


Level 9
Group Icon

Group: Revolutionary
Posts: 140
Type: Developer
RM Skill: Masterful




Great job. It looks very cool and it seems to play nice with other scripts I am using, including the Level-Up display script that shows what stats you get upon leveling up as well.

thanks!


__________________________



Sometimes you have to lose yourself before you can find yourself.
Go to the top of the page
 
+Quote Post
   
Namio
post Aug 4 2008, 10:22 PM
Post #4


Level 1
Group Icon

Group: Member
Posts: 11
Type: None
RM Skill: Beginner




the scripts great but it conflicts with KGCs large party script. I'm not sure if anyone else is having this problem
Go to the top of the page
 
+Quote Post
   
Grandhoug
post Aug 4 2008, 11:17 PM
Post #5


Level 5
Group Icon

Group: Member
Posts: 70
Type: Developer
RM Skill: Undisclosed




wow works perfect, but i was wondering how you got your message boxes that way


__________________________
Fly like a rhino, sting like shock paddles.
Go to the top of the page
 
+Quote Post
   
Netto
post Aug 4 2008, 11:27 PM
Post #6


芸術家
Group Icon

Group: Revolutionary
Posts: 708
Type: None
RM Skill: Skilled




Looks great, good job.


__________________________
Current Project[RC]: Twilight Realm 3DMMORPG w/dx9, and char creation through mysql after I get a server, now C++ scripting
Current Project[VX]: Obsidian Trilogy just started 08/12/2008
Current Project[XP&RM2K3]: none
Go to the top of the page
 
+Quote Post
   
Naridar
post Aug 5 2008, 01:17 AM
Post #7


Level 14
Group Icon

Group: Revolutionary
Posts: 250
Type: Developer
RM Skill: Skilled




Thanks, this is exactly what I was looking for. Looks really nice.


__________________________
Go to the top of the page
 
+Quote Post
   
conmaster3
post Aug 5 2008, 01:36 AM
Post #8


Level 5
Group Icon

Group: Member
Posts: 71
Type: Scripter
RM Skill: Advanced




QUOTE (Grandhoug @ Aug 5 2008, 08:39 AM) *
wow works perfect, but i was wondering how you got your message boxes that way


I created 4 new Window_Message and 4 new Window_BattleMessage
and added some lines for not letting come the same text in every window

Greetzz Cell(Conmaster3)


__________________________

Current Game(s):

[Show/Hide] Fantasy Tail
Fantasy Tail

Story line 15%
Game 15%
Monsters 0%
Characters 0%
Weapons 80%
Armor 80%
Skills 0%
Spells 0%

Total game script 60%

Downloaded 0% (In use)
A lot has been downloaded but all scripts has been replaced or removed
Own Created 40% (In use)
Go to the top of the page
 
+Quote Post
   
conmaster3
post Aug 5 2008, 01:46 AM
Post #9


Level 5
Group Icon

Group: Member
Posts: 71
Type: Scripter
RM Skill: Advanced




QUOTE (Namio @ Aug 5 2008, 07:44 AM) *
the scripts great but it conflicts with KGCs large party script. I'm not sure if anyone else is having this problem


you can try placing my script above the KGCs large party script. in this way his script wont read any changes but i dont think it is still bug free...
so im sorry but try it out ill inspect the KGCs script to see what the problem is...

Greetzz Cell(Conmaster3)

Edit:

I inspected the thing and no problems with me...

it was posted by

Large Party Scipt
Author : Dargor
Category : Player/Party System

found at
Pinned: ~Forum Script Listing~ * 12
Look Here If You Are Looking For Script

if this is not the same script maybe its a solution

Greetzz Cell (Conmaster3)

This post has been edited by conmaster3: Aug 5 2008, 01:57 AM


__________________________

Current Game(s):

[Show/Hide] Fantasy Tail
Fantasy Tail

Story line 15%
Game 15%
Monsters 0%
Characters 0%
Weapons 80%
Armor 80%
Skills 0%
Spells 0%

Total game script 60%

Downloaded 0% (In use)
A lot has been downloaded but all scripts has been replaced or removed
Own Created 40% (In use)
Go to the top of the page
 
+Quote Post
   
Loki333
post Aug 5 2008, 03:11 AM
Post #10


Google it before asking stupid questions!!!
Group Icon

Group: Revolutionary
Posts: 134
Type: Event Designer
RM Skill: Masterful




Nice script, can I ask where you got that windowskin though?


__________________________
My Current VX Project


My XP Scripts
Personalized Status Screen

My VX Scripts
None Yet...


Thanks for the uPic Leper!
Go to the top of the page
 
+Quote Post
   
conmaster3
post Aug 5 2008, 03:14 AM
Post #11


Level 5
Group Icon

Group: Member
Posts: 71
Type: Scripter
RM Skill: Advanced




QUOTE (Loki333 @ Aug 5 2008, 12:33 PM) *
Nice script, can I ask where you got that windowskin though?


i made it myself ill share it with you...



Greetzz Cell(Conmaster3)


__________________________

Current Game(s):

[Show/Hide] Fantasy Tail
Fantasy Tail

Story line 15%
Game 15%
Monsters 0%
Characters 0%
Weapons 80%
Armor 80%
Skills 0%
Spells 0%

Total game script 60%

Downloaded 0% (In use)
A lot has been downloaded but all scripts has been replaced or removed
Own Created 40% (In use)
Go to the top of the page
 
+Quote Post
   
Loki333
post Aug 5 2008, 04:07 AM
Post #12


Google it before asking stupid questions!!!
Group Icon

Group: Revolutionary
Posts: 134
Type: Event Designer
RM Skill: Masterful




QUOTE (conmaster3 @ Aug 5 2008, 02:36 AM) *
QUOTE (Loki333 @ Aug 5 2008, 12:33 PM) *
Nice script, can I ask where you got that windowskin though?


i made it myself ill share it with you...



Greetzz Cell(Conmaster3)

TY i'll definately credit ya thanks again biggrin.gif


__________________________
My Current VX Project


My XP Scripts
Personalized Status Screen

My VX Scripts
None Yet...


Thanks for the uPic Leper!
Go to the top of the page
 
+Quote Post
   
Supergodjesus
post Aug 5 2008, 06:42 AM
Post #13


Level 9
Group Icon

Group: Revolutionary
Posts: 140
Type: Developer
RM Skill: Masterful




I didn't noticed until it was brought up, but yeah, if you are using the KGC large party script and have characters in reserve, they will not recieve the reserve % of EXP you set in the script if you are using this script.


__________________________



Sometimes you have to lose yourself before you can find yourself.
Go to the top of the page
 
+Quote Post
   
conmaster3
post Aug 5 2008, 12:07 PM
Post #14


Level 5
Group Icon

Group: Member
Posts: 71
Type: Scripter
RM Skill: Advanced




QUOTE (Supergodjesus @ Aug 5 2008, 04:04 PM) *
I didn't noticed until it was brought up, but yeah, if you are using the KGC large party script and have characters in reserve, they will not recieve the reserve % of EXP you set in the script if you are using this script.


uhm ok maby there needs to be some changes but i cant find the KGC script and i tested it on a other script as i sayed

QUOTE
if this is not the same script maybe its a solution
\

and please check if they do get the exp and my script doesnt display them..

or if it just dont do both...

Greetzz Cell(Conmaster3)


__________________________

Current Game(s):

[Show/Hide] Fantasy Tail
Fantasy Tail

Story line 15%
Game 15%
Monsters 0%
Characters 0%
Weapons 80%
Armor 80%
Skills 0%
Spells 0%

Total game script 60%

Downloaded 0% (In use)
A lot has been downloaded but all scripts has been replaced or removed
Own Created 40% (In use)
Go to the top of the page
 
+Quote Post
   
Xethion
post Aug 13 2008, 03:32 AM
Post #15


The returning evil!
Group Icon

Group: Revolutionary
Posts: 323
Type: Artist
RM Skill: Beginner




I was wondering if you have any plans to add under the characters gained a level anything like the stats they have gained. For example:

Player 1 is now Level 2
Gained 2 Strength
Gained 12 Health
Gained 1 Spirit

I hope you understand what I am saying.


__________________________


[Show/Hide] My Anime Stats:
Go to the top of the page
 
+Quote Post
   
Supergodjesus
post Aug 13 2008, 06:00 AM
Post #16


Level 9
Group Icon

Group: Revolutionary
Posts: 140
Type: Developer
RM Skill: Masterful




QUOTE (conmaster3 @ Aug 5 2008, 03:29 PM) *
QUOTE (Supergodjesus @ Aug 5 2008, 04:04 PM) *
I didn't noticed until it was brought up, but yeah, if you are using the KGC large party script and have characters in reserve, they will not recieve the reserve % of EXP you set in the script if you are using this script.


uhm ok maby there needs to be some changes but i cant find the KGC script and i tested it on a other script as i sayed

QUOTE
if this is not the same script maybe its a solution
\

and please check if they do get the exp and my script doesnt display them..

or if it just dont do both...

Greetzz Cell(Conmaster3)


I checked, and it just doesn't give the EXP at all (not just display). And you can find the KGC Large Party script in the KGC library translated by Mr.Anonymous and Touchfuzzy.


__________________________



Sometimes you have to lose yourself before you can find yourself.
Go to the top of the page
 
+Quote Post
   
Psiclone
post Aug 13 2008, 12:26 PM
Post #17


Level 2
Group Icon

Group: Member
Posts: 29
Type: None
RM Skill: Skilled




nvm

This post has been edited by Psiclone: Aug 20 2008, 09:01 PM
Go to the top of the page
 
+Quote Post
   
Mefisno
post Aug 14 2008, 12:41 PM
Post #18


Is most likly drunk somewhere. But I'm sure he will get back
Group Icon

Group: Revolutionary
Posts: 165
Type: Event Designer
RM Skill: Advanced




Awesome script but it's kinda dodged up a little bit with the "Enemys glow when you select to attack them" script (sorry i don't know what it's called).


__________________________
Go to the top of the page
 
+Quote Post
   
hazard64
post Nov 16 2008, 12:03 PM
Post #19



Group Icon

Group: Member
Posts: 3
Type: Event Designer
RM Skill: Beginner




QUOTE (conmaster3 @ Aug 5 2008, 03:07 PM) *
QUOTE (Supergodjesus @ Aug 5 2008, 04:04 PM) *
I didn't noticed until it was brought up, but yeah, if you are using the KGC large party script and have characters in reserve, they will not recieve the reserve % of EXP you set in the script if you are using this script.


uhm ok maby there needs to be some changes but i cant find the KGC script and i tested it on a other script as i sayed

QUOTE
if this is not the same script maybe its a solution
\

and please check if they do get the exp and my script doesnt display them..

or if it just dont do both...

Greetzz Cell(Conmaster3)


This is a awesome script its what I have been looking for so thanks. Well if you are still looking for the script here it is.
Oh and by the way it has 2028 lines.


CODE

#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_
#_/ ◆ Party Expansion & Formation - KGC_LargeParty ◆ VX ◆
#_/ ◇ Last Update: 2008/03/13 ◇
#_/ ◆ Translation by Mr. Anonymous ◆
#_/-----------------------------------------------------------------------------
#_/ This script allows you more control over the default "party" system by
#_/ removing the limitation of only having four actors to a party. These
#_/ extra actors may behave just as any other actor during battle. In addition
#_/ you may also have "standby" actors, who can be swapped out with the
#_/ current party via a "Party Formation" screen, which may optionally be
#_/ added into the main menu panel, and/or even called from pressing
#_/ a specified button while on the main menu.
#_/-----------------------------------------------------------------------------
#_/ ◆ Instructions For Usage ◆
#_/ ◆ Script Commands ◆
#_/ These commands are used in "Script" function in the third page of event
#_/ commands under "Advanced".
#_/
#_/ * call_partyform
#_/ Calls the Party Formation screen.
#_/
#_/ * set_max_battle_member_count(Value)
#_/ Allows you to manually set the maximum amount of actors in the active
#_/ party, i.e. the amount of party members who may participate in battle.
#_/
#_/ * party_full?
#_/ Used for Conditional Branches. This allows you to determine wether the
#_/ active party is full in accordance to MAX_BATTLE_MEMBERS or the above
#_/ manual statement of set_max_battle_member_count(Value).
#_/
#_/ * permit_partyform(true/false)
#_/ Allows you to enable or disable the Party Formation screen on the main
#_/ command menu. This also actives or deactivates PARTYFORM_SWITCH.
#_/
#_/ * fix_actor(ActorID, true/false)
#_/ Allows you to fix or force an actor into remaining in the active party
#_/ and not be switched out with a standby actor. If the true/false
#_/ argument is omitted, the statement is automatically considered true.
#_/
#_/ * change_party_shift(index1, index2)
#_/ This allows you to switch an actor in the position of index1 with the
#_/ actor in the position of index2. This ignores the fix_actor function.
#_/ Also of note is that the first actor in the party actually has an
#_/ index of 0, second actor has an index of 1, and so on.
#_/
#_/ * sort_party_member(sort_type, true/false)
#_/ This allows you to manually sort the actors by replacing sort_type with
#_/ SORT_BY_ID, SORT_BY_NAME, or SORT_BY_LEVEL. If you set the second
#_/ argument to true, the sorting order is reversed. If true, it is not.
#_/ Also, if the second argument is omitted, it is automatically false.
#_/
#_/ * get_stand_by_member_ids
#_/ This aquires the arrangement of the ActorIDs of the standby actors.
#_/
#_/ * stand_by_member?(ActorID)
#_/ Used for Conditional Branches. This allows you to determine if the actor
#_/ specified is a standby party member.
#_/
#_/ * add_battle_member(ActorID, index)
#_/ Allows you to add an actor to the active party and place it in the
#_/ desired position(index). If the second argument is omitted, the actor
#_/ will automatically be placed at the end of the party. Also, if the
#_/ active party is full, the actor will not be added.
#_/
#_/ * remove_battle_member(ActorID)
#_/ Removes an actor from the active party. This cannot removed an actor
#_/ who is fixed into place using fix_actor.
#_/
#_/ * remove_all_battle_member
#_/ All actors other than fixed actors are removed from the active party.
#_/ Note that this seems to unfix fixed characters, but not remove them.
#_/ Also note that if there are no fixed actors, you must add a member
#_/ back into the active party using add_battle_member BEFORE the player
#_/ is allowed to open the menu or enter battle.
#_/
#_/ * random_launch
#_/ Randomly sorts and replaces the active party with those from the standby
#_/ party. Once again this does not effect fixed actors.
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_
#_/ A special note from the translator: I'll be revising this translation for
#_/ a more user-friendly approach and expanded functionality explainations
#_/ when I have the time. If you don't understand something here now, fear not,
#_/ as this is only a beta translation. As such, some things may be incorrect.
#_/ however, it should work without a hitch, with the possible exception of
#_/ SHOW_STAND_BY_MEMBER_NOT_IN_BATTLE, which I still cannot figure out.
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_

#==============================================================================#
# ★ Customization ★ #
#==============================================================================#

module KGC
module LargeParty
# ◆ Party Formation In-Game Switch ◆
# This allows you to assign an in-game Switch that allows you to enable or
# disable the Party Formation screen on the main command menu.
PARTYFORM_SWITCH = 65
# ◆ Party Formation In-Game Switch (In Combat) ◆
# This allows you to assign an in-game Switch that allows you to enable or
# disable the Party Formation screen during combat.
BATTLE_PARTYFORM_SWITCH = 66
# ◆ Default Party Formation Switch Activation Toggle ◆
# When "New Game" is selected, both party formation permission switches
# automatically become active (ON) when this is set as true.
DEFAULT_PARTYFORM_ENABLED = true

# ◆ Maximum Party Members (In Combat) ◆
# Allows you to choose how many actors may participate in a battle.
MAX_BATTLE_MEMBERS = 4
# ◆ The Party Members ◆
# Allows you to choose how many actors may be added to the party.
# *Note: Game_Party::MAX_MEMBERS Is overwritten
# When making this 100 or more, you'll receive an error.
MAX_MEMBERS = 99

# ◆ Fixed Party Member Sorting ◆
# This toggle allows you to enable/disable automatic sorting of fixed(active)
# party members.
# true = Disable automatic sorting.
# false = Enable automatic sorting.
FORBID_CHANGE_SHIFT_FIXED = false

# Standby Members Background Color
# Default: Color.new(0, 0, 0, 0)
STAND_BY_COLOR = Color.new(0, 0, 0, 128)
# ◆ Fixed Current Party Background Color
FIXED_COLOR = Color.new(255, 128, 64, 96)
# Background Color that shows when Members are selected.
SELECTED_COLOR = Color.new(64, 255, 128, 128)

# ◆ Party Formation Command Menu Selection ◆
# This allows you to change the key/button pressed in the menu screen to
# pull up the Party Formation screen without actually highlighting and
# selecting the Party Formation option. = Input::A
# If this is set as nil, this function is disabled.
MENU_PARTYFORM_BUTTON = nil
# This toggle allows you to enable/disable the Party Formation option on the
# main command window.
# true = The option is enabled.
# false = The option is removed.
USE_MENU_PARTYFORM_COMMAND = true
# This allows you to change the text displayed for the Party Formation option
# in the main command window.
VOCAB_MENU_PARTYFORM = "Party"

# This toggle allows you to enable/disable the Party Formation option while
# in combat.
# This option is added under the "Run" or "Escape" command.
USE_BATTLE_PARTYFORM = true
# This allows you to change the text displayed for the Party Formation option
# while in combat under the "Run" or "Escape" command.
VOCAB_BATTLE_PARTYFORM = "Party"

# ◆ Party Formation Screen Character Dimensions ◆
# This allows you to change the width and height of the actors' placemarkers
# on the Party Formation Screen.
# You can rewrite this [x, y] in accordance to the size of your actor's
# walking graphic.
PARTY_FORM_CHARACTER_SIZE = [40, 48]
# This allows you to change the text of the empty slots in the Party
# Formation Screen.
BATTLE_MEMBER_BLANK_TEXT = "*"
# ◆ Party Formation Screen Member Rows ◆
# This allows you to change the amount of rows that in the "Standby"
# box.
# Adjust this value to 1 if the status window protrudes beyond the screen.
PARTY_MEMBER_WINDOW_ROW_MAX = 2
# ◆ Current Party Member Display ◆
# This toggle allows you to show/hide the current party members in the
# "Standby" box.
# true = Show them! These will be greyed out.
# false = Hide them.
SHOW_BATTLE_MEMBER_IN_PARTY = false
# This allows you to change the text displayed for empty slots on in the
# "Current Party" box.
PARTY_MEMBER_BLANK_TEXT = "-"

# ◆ Width of caption window on organization screen
CAPTION_WINDOW_WIDTH = 192
# ◆ Caption of combat member window on organization screen
BATTLE_MEMBER_CAPTION = "Current Party"

if SHOW_BATTLE_MEMBER_IN_PARTY
# This allows you to change the text that appears on top of the Party
# Formation box.
# (When SHOW_BATTLE_MEMBER_IN_PARTY = true)
PARTY_MEMBER_CAPTION = "Party Formation"
else
# This allows you to change the text that appears on top of the Standby
# box.
# (When SHOW_BATTLE_MEMBER_IN_PARTY = false)
PARTY_MEMBER_CAPTION = "Standby"
end

# ◆ Width of Formation Confirmation Window ◆
CONFIRM_WINDOW_WIDTH = 160
# ◆ Vocab Strings for Formation Confirmation Window ◆
# If the order of these commands are changed or something is removed, expect
# an error.
CONFIRM_WINDOW_COMMANDS = ["Done", "Menu", "Cancel"]

# ◆ Equip Item Status Shop Scroll ◆
# This allows you to change the key/button HELD DOWN while using the Up and
# Down keys to scroll the attribute bonuses window (to the right) to view
# the each individual unit's attribute bonuses. KCG_HelpExtension is
# required for this function to work properly.
# If you set this to nil, this function is disabled.
SHOP_STATUS_SCROLL_BUTTON = Input::A

# ◆ Standby Members Experience Gain Percentage ◆
# If you enter 500 in this, the actual EXP gained is 50.0%
# You may also prevent standby units from gaining EXP by setting this is 0.
STAND_BY_EXP_RATE = 500
# ◆ Standby Members Level-Up Message ◆
# This toggle allows you to enable/disable the level-up messages displayed
# for units on standby.
# true = Show level-up messages for standby units.
# false = Hide level-up messages for standby units.
SHOW_STAND_BY_LEVEL_UP = true
# ◆ Standby Members Combat Display ◆
# *Note: I cannot figure out what this actually does. It doesn't -seem- to
# work as advertised, but I could be wrong. If anyone figures out what this
# actually does, please let me know.
# true : All members are displayed during combat.
# false : Exchanged standby members are not shown.
SHOW_STAND_BY_MEMBER_NOT_IN_BATTLE = true
end
end

$imported = {} if $imported == nil
$imported["LargeParty"] = true

#==============================================================================
# □ KGC::Commands
#==============================================================================

module KGC::Commands
# メンバーのソート形式
SORT_BY_ID = 0 # Sort by ActorID
SORT_BY_NAME = 1 # Sort by Actor Name
SORT_BY_LEVEL = 2 # Sort by Actor Level

module_function
#--------------------------------------------------------------------------
# ○ パーティ編成画面の呼び出し
#--------------------------------------------------------------------------
def call_partyform
return if $game_temp.in_battle
$game_temp.next_scene = :partyform
end
#--------------------------------------------------------------------------
# ○ 戦闘メンバー最大数を設定
# value : 人数 (省略した場合はデフォルト値を使用)
#--------------------------------------------------------------------------
def set_max_battle_member_count(value = nil)
$game_party.max_battle_member_count = value
end
#--------------------------------------------------------------------------
# ○ パーティ人数が一杯か
#--------------------------------------------------------------------------
def party_full?
return $game_party.full?
end
#--------------------------------------------------------------------------
# ○ パーティ編成可否を設定
# enabled : 有効フラグ (省略時 : true)
#--------------------------------------------------------------------------
def permit_partyform(enabled = true)
$game_switches[KGC::LargeParty::PARTYFORM_SWITCH] = enabled
end
#--------------------------------------------------------------------------
# ○ 戦闘中のパーティ編成可否を設定
# enabled : 有効フラグ (省略時 : true)
#--------------------------------------------------------------------------
def permit_battle_partyform(enabled = true)
$game_switches[KGC::LargeParty::BATTLE_PARTYFORM_SWITCH] = enabled
end
#--------------------------------------------------------------------------
# ○ アクターの固定状態を設定
# actor_id : アクター ID
# fixed : 固定フラグ (省略時 : true)
#--------------------------------------------------------------------------
def fix_actor(actor_id, fixed = true)
$game_party.fix_actor(actor_id, fixed)
end
#--------------------------------------------------------------------------
# ○ 並び替え
# メンバーの index1 番目と index2 番目を入れ替える
#--------------------------------------------------------------------------
def change_party_shift(index1, index2)
$game_party.change_shift(index1, index2)
end
#--------------------------------------------------------------------------
# ○ メンバー整列 (昇順)
# sort_type : ソート形式 (SORT_BY_xxx)
# reverse : true だと降順
#--------------------------------------------------------------------------
def sort_party_member(sort_type = SORT_BY_ID, reverse = false)
$game_party.sort_member(sort_type, reverse)
end
#--------------------------------------------------------------------------
# ○ 待機メンバーの ID を取得
#--------------------------------------------------------------------------
def get_stand_by_member_ids
result = []
$game_party.stand_by_members.each { |actor| result << actor.id }
return result
end
#--------------------------------------------------------------------------
# ○ アクターが待機メンバーか
# actor_id : アクター ID
#--------------------------------------------------------------------------
def stand_by_member?(actor_id)
return get_stand_by_member_ids.include?(actor_id)
end
#--------------------------------------------------------------------------
# ○ アクターを戦闘メンバーに加える
# actor_id : アクター ID
# index : 追加位置 (省略時は最後尾)
#--------------------------------------------------------------------------
def add_battle_member(actor_id, index = nil)
$game_party.add_battle_member(actor_id, index)
end
#--------------------------------------------------------------------------
# ○ アクターを戦闘メンバーから外す
# actor_id : アクター ID
#--------------------------------------------------------------------------
def remove_battle_member(actor_id)
$game_party.remove_battle_member(actor_id)
end
#--------------------------------------------------------------------------
# ○ 固定アクター以外を戦闘メンバーから外す
#--------------------------------------------------------------------------
def remove_all_battle_member
$game_party.all_members.each { |actor|
$game_party.remove_battle_member(actor.id)
}
end
#--------------------------------------------------------------------------
# ○ ランダム出撃
#--------------------------------------------------------------------------
def random_launch
new_battle_members = $game_party.fixed_members
candidates = $game_party.all_members - new_battle_members
num = [$game_party.max_battle_member_count - new_battle_members.size,
candidates.size].min
return if num <= 0

# ランダムに選ぶ
ary = (0...candidates.size).to_a.sort_by { rand }
ary[0...num].each { |i| new_battle_members << candidates[i] }
$game_party.set_battle_member(new_battle_members)
end
end

class Game_Interpreter
include KGC::Commands
end

#==============================================================================
# ■ Vocab
#==============================================================================

module Vocab
# 「パーティ編成」コマンド名 (メニュー)
def self.partyform
return KGC::LargeParty::VOCAB_MENU_PARTYFORM
end

# 「パーティ編成」コマンド名 (戦闘)
def self.partyform_battle
return KGC::LargeParty::VOCAB_BATTLE_PARTYFORM
end
end

#==============================================================================
# ■ Game_Actor
#==============================================================================

class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
# ○ パーティ内インデックス取得
#--------------------------------------------------------------------------
def party_index
return $game_party.all_members.index(self)
end
#--------------------------------------------------------------------------
# ○ 戦闘メンバーか判定
#--------------------------------------------------------------------------
def battle_member?
return $game_party.battle_members.include?(self)
end
#--------------------------------------------------------------------------
# ○ 固定メンバーか判定
#--------------------------------------------------------------------------
def fixed_member?
return $game_party.fixed_members.include?(self)
end
end

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆
☆★☆★☆★☆★☆★☆★

#==============================================================================
# ■ Game_Party
#==============================================================================

class Game_Party
#--------------------------------------------------------------------------
# ● 定数
#--------------------------------------------------------------------------
MAX_MEMBERS = KGC::LargeParty::MAX_MEMBERS # 最大パーティ人数
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
alias initialize_KGC_LargeParty initialize
def initialize
initialize_KGC_LargeParty

@max_battle_member_count = nil
@battle_member_count = 0
@fixed_actors = []
end
#--------------------------------------------------------------------------
# ○ 戦闘メンバー最大数取得
#--------------------------------------------------------------------------
def max_battle_member_count
if @max_battle_member_count == nil
return KGC::LargeParty::MAX_BATTLE_MEMBERS
else
return @max_battle_member_count
end
end
#--------------------------------------------------------------------------
# ○ 戦闘メンバー最大数変更
#--------------------------------------------------------------------------
def max_battle_member_count=(value)
if value.is_a?(Integer)
value = [value, 1].max
end
@max_battle_member_count = value
end
#--------------------------------------------------------------------------
# ○ 戦闘メンバー数取得
#--------------------------------------------------------------------------
def battle_member_count
if @battle_member_count == nil
@battle_member_count = @actors.size
end
@battle_member_count =
[@battle_member_count, @actors.size, max_battle_member_count].min
return @battle_member_count
end
#--------------------------------------------------------------------------
# ○ 戦闘メンバー数設定
#--------------------------------------------------------------------------
def battle_member_count=(value)
@battle_member_count = [[value, 0].max,
@actors.size, max_battle_member_count].min
end
#--------------------------------------------------------------------------
# ● メンバーの取得
#--------------------------------------------------------------------------
alias members_KGC_LargeParty members
def members
if $game_temp.in_battle ||
!KGC::LargeParty::SHOW_STAND_BY_MEMBER_NOT_IN_BATTLE
return battle_members
else
return members_KGC_LargeParty
end
end
#--------------------------------------------------------------------------
# ○ 全メンバーの取得
#--------------------------------------------------------------------------
def all_members
return members_KGC_LargeParty
end
#--------------------------------------------------------------------------
# ○ 戦闘メンバーの取得
#--------------------------------------------------------------------------
def battle_members
result = []
battle_member_count.times { |i| result << $game_actors[@actors[i]] }
return result
end
#--------------------------------------------------------------------------
# ○ 待機メンバーの取得
#--------------------------------------------------------------------------
def stand_by_members
return (all_members - battle_members)
end
#--------------------------------------------------------------------------
# ○ 固定メンバーの取得
#--------------------------------------------------------------------------
def fixed_members
result = []
@fixed_actors.each { |i| result << $game_actors[i] }
return result
end
#--------------------------------------------------------------------------
# ● 初期パーティのセットアップ
#--------------------------------------------------------------------------
alias setup_starting_members_KGC_LargeParty setup_starting_members
def setup_starting_members
setup_starting_members_KGC_LargeParty

self.battle_member_count = @actors.size
end
#--------------------------------------------------------------------------
# ● 戦闘テスト用パーティのセットアップ
#--------------------------------------------------------------------------
alias setup_battle_test_members_KGC_LargeParty setup_battle_test_members
def setup_battle_test_members
setup_battle_test_members_KGC_LargeParty

self.battle_member_count = @actors.size
end
#--------------------------------------------------------------------------
# ○ メンバーの新規設定
# new_member : 新しいメンバー
#--------------------------------------------------------------------------
def set_member(new_member)
@actors = []
new_member.each { |actor| @actors << actor.id }
end
#--------------------------------------------------------------------------
# ○ 戦闘メンバーの新規設定
# new_member : 新しい戦闘メンバー
#--------------------------------------------------------------------------
def set_battle_member(new_member)
new_battle_member = []
new_member.each { |actor|
@actors.delete(actor.id)
new_battle_member << actor.id
}
@actors = new_battle_member + @actors
self.battle_member_count = new_member.size
end
#--------------------------------------------------------------------------
# ○ パーティ編成を許可しているか判定
#--------------------------------------------------------------------------
def partyform_enable?
return $game_switches[KGC::LargeParty::PARTYFORM_SWITCH]
end
#--------------------------------------------------------------------------
# ○ 戦闘中のパーティ編成を許可しているか判定
#--------------------------------------------------------------------------
def battle_partyform_enable?
return false unless partyform_enable?
return $game_switches[KGC::LargeParty::BATTLE_PARTYFORM_SWITCH]
end
#--------------------------------------------------------------------------
# ○ メンバーが一杯か判定
#--------------------------------------------------------------------------
def full?
return (@actors.size >= MAX_MEMBERS)
end
#--------------------------------------------------------------------------
# ○ 固定アクターか判定
# actor_id : 判定するアクターの ID
#--------------------------------------------------------------------------
def actor_fixed?(actor_id)
return @fixed_actors.include?(actor_id)
end
#--------------------------------------------------------------------------
# ● アクターを加える
# actor_id : アクター ID
#--------------------------------------------------------------------------
alias add_actor_KGC_LargeParty add_actor
def add_actor(actor_id)
last_size = @actors.size

add_actor_KGC_LargeParty(actor_id)

if last_size < @actors.size
self.battle_member_count += 1
end
end
#--------------------------------------------------------------------------
# ○ アクターを戦闘メンバーに加える
# actor_id : アクター ID
# index : 追加位置 (省略時は最後尾)
#--------------------------------------------------------------------------
def add_battle_member(actor_id, index = nil)
return unless @actors.include?(actor_id) # パーティにいない
if index == nil
return if battle_members.include?($game_actors[actor_id]) # 出撃済み
return if battle_member_count == max_battle_member_count # 人数が最大
index = battle_member_count
end

@actors.delete(actor_id)
@actors.insert(index, actor_id)
self.battle_member_count += 1
end
#--------------------------------------------------------------------------
# ○ アクターを戦闘メンバーから外す
# actor_id : アクター ID
#--------------------------------------------------------------------------
def remove_battle_member(actor_id)
return unless @actors.include?(actor_id) # パーティにいない
return if actor_fixed?(actor_id) # 固定済み
return if stand_by_members.include?($game_actors[actor_id]) # 待機中

@actors.delete(actor_id)
@actors.push(actor_id)
self.battle_member_count -= 1
end
#--------------------------------------------------------------------------
# ○ アクターの固定状態を設定
# actor_id : アクター ID
# fixed : 固定フラグ (省略時 : false)
#--------------------------------------------------------------------------
def fix_actor(actor_id, fixed = false)
return unless @actors.include?(actor_id) # パーティにいない

if fixed
# 固定
unless @fixed_actors.include?(actor_id)
@fixed_actors << actor_id
unless battle_members.include?($game_actors[actor_id])
self.battle_member_count += 1
end
end
# 強制出撃
apply_force_launch
else
# 固定解除
@fixed_actors.delete(actor_id)
end
$game_player.refresh
end
#--------------------------------------------------------------------------
# ○ 強制出撃適用
#--------------------------------------------------------------------------
def apply_force_launch
while (fixed_members - battle_members).size > 0
# 固定状態でないメンバーを適当に持ってきて入れ替え
actor1 = stand_by_members.find { |a| @fixed_actors.include?(a.id) }
actor2 = battle_members.reverse.find { |a| !@fixed_actors.include?(a.id) }
index1 = @actors.index(actor1.id)
index2 = @actors.index(actor2.id)
@actors[index1], @actors[index2] = @actors[index2], @actors[index1]

# 戦闘メンバーが全員固定されたら戻る (無限ループ防止)
all_fixed = true
battle_members.each { |actor|
unless actor.fixed_member?
all_fixed = false
break
end
}
break if all_fixed
end
end
#--------------------------------------------------------------------------
# ○ メンバー整列 (昇順)
# sort_type : ソート形式 (SORT_BY_xxx)
# reverse : true だと降順
#--------------------------------------------------------------------------
def sort_member(sort_type = KGC::Commands::SORT_BY_ID,
reverse = false)
# バッファを準備
b_actors = battle_members
actors = all_members - b_actors
f_actors = fixed_members
# 固定キャラはソートしない
if KGC::LargeParty::FORBID_CHANGE_SHIFT_FIXED
actors -= f_actors
b_actors -= f_actors
end

# ソート
case sort_type
when KGC::Commands::SORT_BY_ID # ID順
actors.sort! { |a, b| a.id <=> b.id }
b_actors.sort! { |a, b| a.id <=> b.id }
when KGC::Commands::SORT_BY_NAME # 名前順
actors.sort! { |a, b| a.name <=> b.name }
b_actors.sort! { |a, b| a.name <=> b.name }
when KGC::Commands::SORT_BY_LEVEL # レベル順
actors.sort! { |a, b| a.level <=> b.level }
b_actors.sort! { |a, b| a.level <=> b.level }
end
# 反転
if reverse
actors.reverse!
b_actors.reverse!
end

# 固定キャラを先頭に持ってくる
if KGC::LargeParty::FORBID_CHANGE_SHIFT_FIXED
actors = f_actors + actors
b_actors = f_actors + b_actors
end

# 復帰
set_member(actors)
set_battle_member(b_actors)

apply_force_launch
$game_player.refresh
end
#--------------------------------------------------------------------------
# ○ 並び替え
# 戦闘メンバーの index1 番目と index2 番目を入れ替える
#--------------------------------------------------------------------------
def change_shift(index1, index2)
size = @actors.size
if index1 >= size || index2 >= size
return
end
buf = @actors[index1]
@actors[index1] = @actors[index2]
@actors[index2] = buf
$game_player.refresh
end
#--------------------------------------------------------------------------
# ● 戦闘用ステートの解除 (戦闘終了時に呼び出し)
#--------------------------------------------------------------------------
def remove_states_battle
for actor in all_members
actor.remove_states_battle
end
end
end

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆
☆★☆★☆★☆★☆★☆★

#==============================================================================
# ■ Window_Command
#==============================================================================

class Window_Command < Window_Selectable
unless method_defined?(:add_command)
#--------------------------------------------------------------------------
# ○ コマンドを追加
# 追加した位置を返す
#--------------------------------------------------------------------------
def add_command(command)
@commands << command
@item_max = @commands.size
item_index = @item_max - 1
refresh_command
draw_item(item_index)
return item_index
end
#--------------------------------------------------------------------------
# ○ コマンドをリフレッシュ
#--------------------------------------------------------------------------
def refresh_command
buf = self.contents.clone
self.height = [self.height, row_max * WLH + 32].max
create_contents
self.contents.blt(0, 0, buf, buf.rect)
buf.dispose
end
#--------------------------------------------------------------------------
# ○ コマンドを挿入
#--------------------------------------------------------------------------
def insert_command(index, command)
@commands.insert(index, command)
@item_max = @commands.size
refresh_command
refresh
end
#--------------------------------------------------------------------------
# ○ コマンドを削除
#--------------------------------------------------------------------------
def remove_command(command)
@commands.delete(command)
@item_max = @commands.size
refresh
end
end
end

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆
☆★☆★☆★☆★☆★☆★

#==============================================================================
# ■ Window_MenuStatus
#==============================================================================

class Window_MenuStatus < Window_Selectable
#--------------------------------------------------------------------------
# ● 定数
#--------------------------------------------------------------------------
STATUS_HEIGHT = 96 # ステータス一人分の高さ
#--------------------------------------------------------------------------
# ● ウィンドウ内容の作成
#--------------------------------------------------------------------------
def create_contents
self.contents.dispose
self.contents = Bitmap.new(width - 32,
[height - 32, row_max * STATUS_HEIGHT].max)
end
#--------------------------------------------------------------------------
# ● 先頭の行の取得
#--------------------------------------------------------------------------
def top_row
return self.oy / STATUS_HEIGHT
end
#--------------------------------------------------------------------------
# ● 先頭の行の設定
# row : 先頭に表示する行
#--------------------------------------------------------------------------
def top_row=(row)
super(row)
self.oy = self.oy / WLH * STATUS_HEIGHT
end
#--------------------------------------------------------------------------
# ● 1 ページに表示できる行数の取得
#--------------------------------------------------------------------------
def page_row_max
return (self.height - 32) / STATUS_HEIGHT
end
#--------------------------------------------------------------------------
# ● 項目を描画する矩形の取得
# index : 項目番号
#--------------------------------------------------------------------------
def item_rect(index)
rect = super(index)
rect.height = STATUS_HEIGHT
rect.y = index / @column_max * STATUS_HEIGHT
return rect
end
#--------------------------------------------------------------------------
# ● リフレッシュ
#--------------------------------------------------------------------------
def refresh
@item_max = $game_party.members.size
create_contents
fill_stand_by_background
draw_member
end
#--------------------------------------------------------------------------
# ○ パーティメンバー描画
#--------------------------------------------------------------------------
def draw_member
for actor in $game_party.members
draw_actor_face(actor, 2, actor.party_index * 96 + 2, 92)
x = 104
y = actor.party_index * 96 + WLH / 2
draw_actor_name(actor, x, y)
draw_actor_class(actor, x + 120, y)
draw_actor_level(actor, x, y + WLH * 1)
draw_actor_state(actor, x, y + WLH * 2)
draw_actor_hp(actor, x + 120, y + WLH * 1)
draw_actor_mp(actor, x + 120, y + WLH * 2)
end
end
#--------------------------------------------------------------------------
# ○ 待機メンバーの背景色を塗る
#--------------------------------------------------------------------------
def fill_stand_by_background
color = KGC::LargeParty::STAND_BY_COLOR
dy = STATUS_HEIGHT * $game_party.battle_members.size
dh = STATUS_HEIGHT * $game_party.stand_by_members.size
if dh > 0
self.contents.fill_rect(0, dy, self.width - 32, dh, color)
end
end
#--------------------------------------------------------------------------
# ● カーソルの更新
#--------------------------------------------------------------------------
def update_cursor
if @index < 0 # カーソルなし
self.cursor_rect.empty
elsif @index < @item_max # 通常
super
elsif @index >= 100 # 自分
self.cursor_rect.set(0, (@index - 100) * STATUS_HEIGHT,
contents.width, STATUS_HEIGHT)
else # 全体
self.cursor_rect.set(0, 0, contents.width, @item_max * STATUS_HEIGHT)
end
end
end

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆
☆★☆★☆★☆★☆★☆★

#==============================================================================
# ■ Window_ShopStatus
#==============================================================================

class Window_ShopStatus < Window_Base
#--------------------------------------------------------------------------
# ● ウィンドウ内容の作成
#--------------------------------------------------------------------------
def create_contents
self.contents.dispose
self.contents = Bitmap.new(width - 32,
WLH * ($game_party.members.size + 1) * 2)
end
end

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆
☆★☆★☆★☆★☆★☆★

#==============================================================================
# ■ Window_BattleStatus
#==============================================================================

class Window_BattleStatus < Window_Selectable
#--------------------------------------------------------------------------
# ● ウィンドウ内容の作成
#--------------------------------------------------------------------------
def create_contents
self.contents.dispose
self.contents = Bitmap.new(width - 32,
[WLH * $game_party.members.size, height - 32].max)
end
#--------------------------------------------------------------------------
# ● リフレッシュ
#--------------------------------------------------------------------------
alias refresh_KGC_LargeParty refresh
def refresh
create_contents

refresh_KGC_LargeParty
end
end

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆
☆★☆★☆★☆★☆★☆★

#==============================================================================
# □ Window_PartyFormCaption
#------------------------------------------------------------------------------
#  パーティ編成画面でウィンドウのキャプションを表示す
ウィンドウです。
#==============================================================================

class Window_PartyFormCaption < Window_Base
#--------------------------------------------------------------------------
# ● オブジェクト初期化
# caption : 表示するキャプション
#--------------------------------------------------------------------------
def initialize(caption = "")
super(0, 0, KGC::LargeParty::CAPTION_WINDOW_WIDTH, WLH + 32)
self.z = 1500
@caption = caption
refresh
end
#--------------------------------------------------------------------------
# ● リフレッシュ
#--------------------------------------------------------------------------
def refresh
self.contents.clear
self.contents.draw_text(0, 0, width - 32, WLH, @caption)
end
end

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆
☆★☆★☆★☆★☆★☆★

#==============================================================================
# □ Window_PartyFormMember
#------------------------------------------------------------------------------
#  パーティ編成画面でメンバーを表示するウィンドウです

#==============================================================================

class Window_PartyFormMember < Window_Selectable
#--------------------------------------------------------------------------
# ○ 定数
#--------------------------------------------------------------------------
DRAW_SIZE = KGC::LargeParty::PARTY_FORM_CHARACTER_SIZE
#--------------------------------------------------------------------------
# ● 公開インスタンス変数
#--------------------------------------------------------------------------
attr_accessor :selected_index # 選択済みインデックス
#--------------------------------------------------------------------------
# ● オブジェクト初期化
# x : ウィンドウの X 座標
# y : ウィンドウの Y 座標
# width : ウィンドウの幅
# height : ウィンドウの高さ
# spacing : 横に項目が並ぶときの空白の幅
#--------------------------------------------------------------------------
def initialize(x, y, width, height, spacing = 8)
super(x, y, width, height, spacing)
self.z = 1000
end
#--------------------------------------------------------------------------
# ● ウィンドウ内容の作成
#--------------------------------------------------------------------------
def create_contents
self.contents.dispose
self.contents = Bitmap.new(width - 32,
[height - 32, row_max * DRAW_SIZE[1]].max)
end
#--------------------------------------------------------------------------
# ● 先頭の行の取得
#--------------------------------------------------------------------------
def top_row
return self.oy / DRAW_SIZE[1]
end
#--------------------------------------------------------------------------
# ● 先頭の行の設定
# row : 先頭に表示する行
#--------------------------------------------------------------------------
def top_row=(row)
super(row)
self.oy = self.oy / WLH * DRAW_SIZE[1]
end
#--------------------------------------------------------------------------
# ● 1 ページに表示できる行数の取得
#--------------------------------------------------------------------------
def page_row_max
return (self.height - 32) / DRAW_SIZE[1]
end
#--------------------------------------------------------------------------
# ● 項目を描画する矩形の取得
# index : 項目番号
#--------------------------------------------------------------------------
def item_rect(index)
rect = super(index)
rect.width = DRAW_SIZE[0]
rect.height = DRAW_SIZE[1]
rect.y = index / @column_max * DRAW_SIZE[1]
return rect
end
#--------------------------------------------------------------------------
# ○ 選択アクター取得
#--------------------------------------------------------------------------
def actor
return @actors[self.index]
end
#--------------------------------------------------------------------------
# ● リフレッシュ
#--------------------------------------------------------------------------
def refresh
self.contents.clear
restore_member_list
draw_member
end
#--------------------------------------------------------------------------
# ○ メンバーリスト修復
#--------------------------------------------------------------------------
def restore_member_list
# 継承先で定義
end
#--------------------------------------------------------------------------
# ○ メンバー描画
#--------------------------------------------------------------------------
def draw_member
# 継承先で定義
end
#--------------------------------------------------------------------------
# ○ 空欄アクター描画
# index : 項目番号
#--------------------------------------------------------------------------
def draw_empty_actor(index)
# 継承先で定義
end
#--------------------------------------------------------------------------
# ○ 固定キャラ背景描画
# index : 項目番号
#--------------------------------------------------------------------------
def draw_fixed_back(index)
rect = item_rect(index)
self.contents.fill_rect(rect, KGC::LargeParty::FIXED_COLOR)
end
#--------------------------------------------------------------------------
# ○ 選択中キャラ背景描画
# index : 項目番号
#--------------------------------------------------------------------------
def draw_selected_back(index)
rect = item_rect(index)
self.contents.fill_rect(rect, KGC::LargeParty::SELECTED_COLOR)
end
end

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆
☆★☆★☆★☆★☆★☆★

#==============================================================================
# □ Window_PartyFormBattleMember
#------------------------------------------------------------------------------
#  パーティ編成画面で戦闘メンバーを表示するウィンドウ
す。
#==============================================================================

class Window_PartyFormBattleMember < Window_PartyFormMember
#--------------------------------------------------------------------------
# ● 公開インスタンス変数
#--------------------------------------------------------------------------
attr_accessor :selected_index # 選択済みインデックス
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
def initialize
super(0, 0, 64, DRAW_SIZE[1] + 32)
column_width = DRAW_SIZE[0] + @spacing
nw = [column_width * $game_party.max_battle_member_count + 32,
Graphics.width].min
self.width = nw

@item_max = $game_party.max_battle_member_count
@column_max = width / column_width
@selected_index = nil
create_contents
refresh
self.active = true
self.index = 0
end
#--------------------------------------------------------------------------
# ○ メンバーリスト修復
#--------------------------------------------------------------------------
def restore_member_list
@actors = $game_party.battle_members
end
#--------------------------------------------------------------------------
# ○ メンバー描画
#--------------------------------------------------------------------------
def draw_member
@item_max.times { |i|
actor = @actors[i]
if actor == nil
draw_empty_actor(i)
else
if i == @selected_index
draw_selected_back(i)
elsif $game_party.actor_fixed?(actor.id)
draw_fixed_back(i)
end
rect = item_rect(i)
draw_actor_graphic(actor,
rect.x + DRAW_SIZE[0] / 2,
rect.y + DRAW_SIZE[1] - 4)
end
}
end
#--------------------------------------------------------------------------
# ○ 空欄アクター描画
# index : 項目番号
#--------------------------------------------------------------------------
def draw_empty_actor(index)
rect = item_rect(index)
self.contents.font.color = system_color
self.contents.draw_text(rect, KGC::LargeParty::BATTLE_MEMBER_BLANK_TEXT, 1)
self.contents.font.color = normal_color
end
end

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆
☆★☆★☆★☆★☆★☆★

#==============================================================================
# □ Window_PartyFormAllMember
#------------------------------------------------------------------------------
#  パーティ編成画面で全メンバーを表示するウィンドウで

#==============================================================================

class Window_PartyFormAllMember < Window_PartyFormMember
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
def initialize
super(0, 0, 64, 64)
restore_member_list
@item_max = $game_party.all_members.size

# 各種サイズ計算
column_width = DRAW_SIZE[0] + @spacing
sw = [@item_max * column_width + 32, Graphics.width].min
@column_max = (sw - 32) / column_width
sh = ([@item_max - 1, 0].max / @column_max + 1) * DRAW_SIZE[1] + 32
sh = [sh, DRAW_SIZE[1] * KGC::LargeParty::PARTY_MEMBER_WINDOW_ROW_MAX + 32].min

# 座標・サイズ調整
self.y += DRAW_SIZE[1] + 32
self.width = sw
self.height = sh

create_contents
refresh
self.active = false
self.index = 0
end
#--------------------------------------------------------------------------
# ○ 選択しているアクターのインデックス取得
#--------------------------------------------------------------------------
def actor_index
return @index_offset + self.index
end
#--------------------------------------------------------------------------
# ○ メンバーリスト修復
#--------------------------------------------------------------------------
def restore_member_list
if KGC::LargeParty::SHOW_BATTLE_MEMBER_IN_PARTY
@actors = $game_party.all_members
@index_offset = 0
else
@actors = $game_party.stand_by_members
@index_offset = $game_party.battle_members.size
end
end
#--------------------------------------------------------------------------
# ○ メンバー描画
#--------------------------------------------------------------------------
def draw_member
@item_max.times { |i|
actor = @actors[i]
if actor == nil
draw_empty_actor(i)
next
end

if $game_party.actor_fixed?(actor.id)
draw_fixed_back(i)
end
rect = item_rect(i)
opacity = ($game_party.battle_members.include?(actor) ? 96 : 255)
draw_actor_graphic(actor,
rect.x + DRAW_SIZE[0] / 2,
rect.y + DRAW_SIZE[1] - 4,
opacity)
}
end
#--------------------------------------------------------------------------
# ● アクターの歩行グラフィック描画
# actor : アクター
# x : 描画先 X 座標
# y : 描画先 Y 座標
# opacity : 不透明度
#--------------------------------------------------------------------------
def draw_actor_graphic(actor, x, y, opacity = 255)
draw_character(actor.character_name, actor.character_index, x, y, opacity)
end
#--------------------------------------------------------------------------
# ● 歩行グラフィックの描画
# character_name : 歩行グラフィック ファイル名
# character_index : 歩行グラフィック インデックス
# x : 描画先 X 座標
# y : 描画先 Y 座標
# opacity : 不透明度
#--------------------------------------------------------------------------
def draw_character(character_name, character_index, x, y, opacity = 255)
return if character_name == nil
bitmap = Cache.character(character_name)
sign = character_name[/^[\!\$]./]
if sign != nil and sign.include?('$')
cw = bitmap.width / 3
ch = bitmap.height / 4
else
cw = bitmap.width / 12
ch = bitmap.height / 8
end
n = character_index
src_rect = Rect.new((n%4*3+1)*cw, (n/4*4)*ch, cw, ch)
self.contents.blt(x - cw / 2, y - ch, bitmap, src_rect, opacity)
end
#--------------------------------------------------------------------------
# ○ 空欄アクター描画
# index : 項目番号
#--------------------------------------------------------------------------
def draw_empty_actor(index)
rect = item_rect(index)
self.contents.font.color = system_color
self.contents.draw_text(rect, KGC::LargeParty::PARTY_MEMBER_BLANK_TEXT, 1)
self.contents.font.color = normal_color
end
end

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆
☆★☆★☆★☆★☆★☆★

#==============================================================================
# □ Window_PartyFormStatus
#------------------------------------------------------------------------------
#  パーティ編成画面でアクターのステータスを表示するウ
ンドウです。
#==============================================================================

class Window_PartyFormStatus < Window_Base
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
def initialize
super(0, 0, 384, 128)
self.z = 1000
@actor = nil
refresh
end
#--------------------------------------------------------------------------
# ○ アクター設定
#--------------------------------------------------------------------------
def set_actor(actor)
if @actor != actor
@actor = actor
refresh
end
end
#--------------------------------------------------------------------------
# ● リフレッシュ
#--------------------------------------------------------------------------
def refresh
self.contents.clear
if @actor == nil
return
end

draw_actor_face(@actor, 0, 0)
dx = 104
draw_actor_name(@actor, dx, 0)
draw_actor_level(@actor, dx, WLH * 1)
draw_actor_hp(@actor, dx, WLH * 2)
draw_actor_mp(@actor, dx, WLH * 3)
4.times { |i|
draw_actor_parameter(@actor, dx + 128, WLH * i, i, 120)
}
end
#--------------------------------------------------------------------------
# ● 能力値の描画
# actor : アクター
# x : 描画先 X 座標
# y : 描画先 Y 座標
# type : 能力値の種類 (0~3)
# width : 描画幅
#--------------------------------------------------------------------------
def draw_actor_parameter(actor, x, y, type, width = 156)
case type
when 0
parameter_name = Vocab::atk
parameter_value = actor.atk
when 1
parameter_name = Vocab::def
parameter_value = actor.def
when 2
parameter_name = Vocab::spi
parameter_value = actor.spi
when 3
parameter_name = Vocab::agi
parameter_value = actor.agi
end
nw = width - 36
self.contents.font.color = system_color
self.contents.draw_text(x, y, nw, WLH, parameter_name)
self.contents.font.color = normal_color
self.contents.draw_text(x + nw, y, 36, WLH, parameter_value, 2)
end
end

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆
☆★☆★☆★☆★☆★☆★

#==============================================================================
# □ Window_PartyFormControl
#------------------------------------------------------------------------------
#  パーティ編成画面で操作方法を表示するウィンドウです

#==============================================================================

class Window_PartyFormControl < Window_Base
#--------------------------------------------------------------------------
# ○ 定数
#--------------------------------------------------------------------------
MODE_BATTLE_MEMBER = 0
MODE_SHIFT_CHANGE = 1
MODE_PARTY_MEMBER = 2
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
def initialize
super(0, 0, Graphics.width - 384, 128)
self.z = 1000
@mode = MODE_BATTLE_MEMBER
refresh
end
#--------------------------------------------------------------------------
# ○ モード変更
#--------------------------------------------------------------------------
def mode=(value)
@mode = value
refresh
end
#--------------------------------------------------------------------------
# ● Refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
case @mode
when MODE_BATTLE_MEMBER # Battle Party Member
buttons = [
"A: Remove",
"B: End",
"C: Decision",
"X: Sort"
]
when MODE_SHIFT_CHANGE # Sorting
buttons = [
"B: Cancel",
"C: Decision",
"X: Decision"
]
when MODE_PARTY_MEMBER # Party Members
buttons = [
"B: Cancel",
"C: Decision"
]
else
return
end

buttons.each_with_index { |c, i|
self.contents.draw_text(0, WLH * i, width - 32, WLH, c)
}
end
end

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆
☆★☆★☆★☆★☆★☆★

#==============================================================================
# ■ Scene_Title
#==============================================================================

class Scene_Title < Scene_Base
#--------------------------------------------------------------------------
# ● 各種ゲームオブジェクトの作成
#--------------------------------------------------------------------------
alias create_game_objects_KGC_LargeParty create_game_objects
def create_game_objects
create_game_objects_KGC_LargeParty

if KGC::LargeParty::DEFAULT_PARTYFORM_ENABLED
$game_switches[KGC::LargeParty::PARTYFORM_SWITCH] = true
$game_switches[KGC::LargeParty::BATTLE_PARTYFORM_SWITCH] = true
end
end
end

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆
☆★☆★☆★☆★☆★☆★

#==============================================================================
# ■ Scene_Map
#==============================================================================

class Scene_Map < Scene_Base
#--------------------------------------------------------------------------
# ● 画面切り替えの実行
#--------------------------------------------------------------------------
alias update_scene_change_KGC_LargeParty update_scene_change
def update_scene_change
return if $game_player.moving? # プレイヤーの移動中?

if $game_temp.next_scene == :partyform
call_partyform
return
end

update_scene_change_KGC_LargeParty
end
#--------------------------------------------------------------------------
# ○ パーティ編成画面への切り替え
#--------------------------------------------------------------------------
def call_partyform
$game_temp.next_scene = nil
$scene = Scene_PartyForm.new(0, Scene_PartyForm::HOST_MAP)
end
end

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆
☆★☆★☆★☆★☆★☆★

#==============================================================================
# ■ Scene_Menu
#==============================================================================

class Scene_Menu < Scene_Base
if KGC::LargeParty::USE_MENU_PARTYFORM_COMMAND
#--------------------------------------------------------------------------
# ● コマンドウィンドウの作成
#--------------------------------------------------------------------------
alias create_command_window_KGC_LargeParty create_command_window
def create_command_window
create_command_window_KGC_LargeParty

return if $imported["CustomMenuCommand"]

@__command_partyform_index =
@command_window.add_command(Vocab.partyform)
@command_window.draw_item(@__command_partyform_index,
$game_party.partyform_enable?)
if @command_window.oy > 0
@command_window.oy -= Window_Base::WLH
end
@command_window.index = @menu_index
end
end
#--------------------------------------------------------------------------
# ● コマンド選択の更新
#--------------------------------------------------------------------------
alias update_command_selection_KGC_LargeParty update_command_selection
def update_command_selection
current_menu_index = @__command_partyform_index
call_partyform_flag = false

if Input.trigger?(Input::C)
case @command_window.index
when @__command_partyform_index # パーティ編成
call_partyform_flag = true
end
# パーティ編成ボタン押下
elsif KGC::LargeParty::MENU_PARTYFORM_BUTTON != nil &&
Input.trigger?(KGC::LargeParty::MENU_PARTYFORM_BUTTON)
call_partyform_flag = true
current_menu_index = @command_window.index if current_menu_index == nil
end

# パーティ編成画面に移行
if call_partyform_flag
if $game_party.members.size == 0 || !$game_party.partyform_enable?
Sound.play_buzzer
return
end
Sound.play_decision
$scene = Scene_PartyForm.new(current_menu_index)
return
end

update_command_selection_KGC_LargeParty
end
end

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆
☆★☆★☆★☆★☆★☆★

#==============================================================================
# ■ Scene_Shop
#==============================================================================

unless $imported["HelpExtension"]
class Scene_Shop < Scene_Base
#--------------------------------------------------------------------------
# ● フレーム更新
#--------------------------------------------------------------------------
alias udpate_KGC_LargeParty update
def update
# スクロール判定
if !@command_window.active &&
KGC::LargeParty::SHOP_STATUS_SCROLL_BUTTON != nil &&
Input.press?(KGC::LargeParty::SHOP_STATUS_SCROLL_BUTTON)
super
update_menu_background
update_scroll_status
return
else
@status_window.cursor_rect.empty
end

udpate_KGC_LargeParty
end
#--------------------------------------------------------------------------
# ○ ステータスウィンドウのスクロール処理
#--------------------------------------------------------------------------
def update_scroll_status
# ステータスウィンドウにカーソルを表示
@status_window.cursor_rect.width = @status_window.contents.width
@status_window.cursor_rect.height = @status_window.height - 32
@status_window.update

if Input.press?(Input::UP)
@status_window.oy = [@status_window.oy - 4, 0].max
elsif Input.press?(Input::DOWN)
max_pos = [@status_window.contents.height -
(@status_window.height - 32), 0].max
@status_window.oy = [@status_window.oy + 4, max_pos].min
end
end
end
end

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆
☆★☆★☆★☆★☆★☆★

#==============================================================================
# □ Scene_PartyForm
#------------------------------------------------------------------------------
#  パーティ編成画面の処理を行うクラスです。
#==============================================================================

class Scene_PartyForm < Scene_Base
#--------------------------------------------------------------------------
# ○ 定数
#--------------------------------------------------------------------------
CAPTION_OFFSET = 40 # キャプションウィンドウの位置補正
HOST_MENU = 0 # 呼び出し元 : メニュー
HOST_MAP = 1 # 呼び出し元 : マップ
HOST_BATTLE = 2 # 呼び出し元 : 戦闘
#--------------------------------------------------------------------------
# ● オブジェクト初期化
# menu_index : コマンドのカーソル初期位置
# host_scene : 呼び出し元 (0..メニュー 1..マップ 2..戦闘)
#--------------------------------------------------------------------------
def initialize(menu_index = 0, host_scene = HOST_MENU)
@menu_index = menu_index
@host_scene = host_scene
end
#--------------------------------------------------------------------------
# ● 開始処理
#--------------------------------------------------------------------------
def start
super
create_menu_background

create_windows
create_confirm_window
adjust_window_location

# 編成前のパーティを保存
@battle_actors = $game_party.battle_members.dup
@party_actors = $game_party.all_members.dup
end
#--------------------------------------------------------------------------
# ○ ウィンドウの作成
#--------------------------------------------------------------------------
def create_windows
# 編成用ウィンドウを作成
@battle_member_window = Window_PartyFormBattleMember.new
@party_member_window = Window_PartyFormAllMember.new
@status_window = Window_PartyFormStatus.new
@status_window.set_actor(@battle_member_window.actor)

# その他のウィンドウを作成
@battle_member_caption_window =
Window_PartyFormCaption.new(KGC::LargeParty::BATTLE_MEMBER_CAPTION)
@party_member_caption_window =
Window_PartyFormCaption.new(KGC::LargeParty::PARTY_MEMBER_CAPTION)
@control_window = Window_PartyFormControl.new
end
#--------------------------------------------------------------------------
# ○ 確認ウィンドウの作成
#--------------------------------------------------------------------------
def create_confirm_window
commands = KGC::LargeParty::CONFIRM_WINDOW_COMMANDS
@confirm_window =
Window_Command.new(KGC::LargeParty::CONFIRM_WINDOW_WIDTH, commands)
@confirm_window.index = 0
@confirm_window.x = (Graphics.width - @confirm_window.width) / 2
@confirm_window.y = (Graphics.height - @confirm_window.height) / 2
@confirm_window.z = 2000
@confirm_window.openness = 0
@confirm_window.active = false
end
#--------------------------------------------------------------------------
# ○ ウィンドウの座標調整
#--------------------------------------------------------------------------
def adjust_window_location
# 基準座標を計算
base_x = [@battle_member_window.width, @party_member_window.width].max
base_x = [(Graphics.width - base_x) / 2, 0].max
base_y = @battle_member_window.height + @party_member_window.height +
@status_window.height + CAPTION_OFFSET * 2
base_y = [(Graphics.height - base_y) / 2, 0].max

# 編成用ウィンドウの座標をセット
@battle_member_window.x = base_x
@battle_member_window.y = base_y + CAPTION_OFFSET
@party_member_window.x = base_x
@party_member_window.y = @battle_member_window.y +
@battle_member_window.height + CAPTION_OFFSET
@status_window.x = 0
@status_window.y = @party_member_window.y + @party_member_window.height

# その他のウィンドウの座標をセット
@battle_member_caption_window.x = [base_x - 16, 0].max
@battle_member_caption_window.y = @battle_member_window.y - CAPTION_OFFSET
@party_member_caption_window.x = [base_x - 16, 0].max
@party_member_caption_window.y = @party_member_window.y - CAPTION_OFFSET
@control_window.x = @status_window.width
@control_window.y = @status_window.y
end
#--------------------------------------------------------------------------
# ● 終了処理
#--------------------------------------------------------------------------
def terminate
super
dispose_menu_background
@battle_member_window.dispose
@party_member_window.dispose
@status_window.dispose
@battle_member_caption_window.dispose
@party_member_caption_window.dispose
@control_window.dispose
@confirm_window.dispose
end
#--------------------------------------------------------------------------
# ● メニュー画面系の背景作成
#--------------------------------------------------------------------------
def create_menu_background
super
@menuback_sprite.z = 500
end
#--------------------------------------------------------------------------
# ● 元の画面へ戻る
#--------------------------------------------------------------------------
def return_scene
case @host_scene
when HOST_MENU
$scene = Scene_Menu.new(@menu_index)
when HOST_MAP
$scene = Scene_Map.new
when HOST_BATTLE
$scene = Scene_Battle.new
end
$game_player.refresh
end
#--------------------------------------------------------------------------
# ● フレーム更新
#--------------------------------------------------------------------------
def update
super
update_menu_background
update_window
if @battle_member_window.active
update_battle_member
elsif @party_member_window.active
update_party_member
elsif @confirm_window.active
update_confirm
end
end
#--------------------------------------------------------------------------
# ○ ウィンドウ更新
#--------------------------------------------------------------------------
def update_window
@battle_member_window.update
@party_member_window.update
@status_window.update
@battle_member_caption_window.update
@party_member_caption_window.update
@control_window.update
@confirm_window.update
end
#--------------------------------------------------------------------------
# ○ ウィンドウ再描画
#--------------------------------------------------------------------------
def refresh_window
@battle_member_window.refresh
@party_member_window.refresh
end
#--------------------------------------------------------------------------
# ○ フレーム更新 (戦闘メンバーウィンドウがアクティブの場合)
#--------------------------------------------------------------------------
def update_battle_member
@status_window.set_actor(@battle_member_window.actor)
if Input.trigger?(Input::A)
if @battle_member_window.selected_index == nil # 並び替え中でない
actor = @battle_member_window.actor
# アクターを外せない場合
if actor == nil || $game_party.actor_fixed?(actor.id)
Sound.play_buzzer
return
end
# アクターを外す
Sound.play_decision
actors = $game_party.battle_members
actors.delete_at(@battle_member_window.index)
$game_party.set_battle_member(actors)
refresh_window
end
elsif Input.trigger?(Input::cool.gif
if @battle_member_window.selected_index == nil # 並び替え中でない
# 確認ウィンドウに切り替え
Sound.play_cancel
show_confirm_window
else # 並び替え中
# 並び替え解除
Sound.play_cancel
@battle_member_window.selected_index = nil
@battle_member_window.refresh
@control_window.mode = Window_PartyFormControl::MODE_BATTLE_MEMBER
end
elsif Input.trigger?(Input::C)
if @battle_member_window.selected_index == nil # 並び替え中でない
actor = @battle_member_window.actor
# アクターを外せない場合
if actor != nil && $game_party.actor_fixed?(actor.id)
Sound.play_buzzer
return
end
# パーティメンバーウィンドウに切り替え
Sound.play_decision
@battle_member_window.active = false
@party_member_window.active = true
@control_window.mode = Window_PartyFormControl::MODE_PARTY_MEMBER
else # 並び替え中
unless can_change_shift?(@battle_member_window.actor)
Sound.play_buzzer
return
end
# 並び替え実行
Sound.play_decision
index1 = @battle_member_window.selected_index
index2 = @battle_member_window.index
change_shift(index1, index2)
@control_window.mode = Window_PartyFormControl::MODE_BATTLE_MEMBER
end
elsif Input.trigger?(Input::X)
# 並び替え不可能な場合
unless can_change_shift?(@battle_member_window.actor)
Sound.play_buzzer
return
end
if @battle_member_window.selected_index == nil # 並び替え中でない
# 並び替え開始
Sound.play_decision
@battle_member_window.selected_index = @battle_member_window.index
@battle_member_window.refresh
@control_window.mode = Window_PartyFormControl::MODE_SHIFT_CHANGE
else # 並び替え中
# 並び替え実行
Sound.play_decision
index1 = @battle_member_window.selected_index
index2 = @battle_member_window.index
change_shift(index1, index2)
@control_window.mode = Window_PartyFormControl::MODE_BATTLE_MEMBER
end
end
end
#--------------------------------------------------------------------------
# ○ 並び替え可否判定
#--------------------------------------------------------------------------
def can_change_shift?(actor)
# 選択したアクターが存在しない、または並び替え不能な場

if actor == nil ||
(KGC::LargeParty::FORBID_CHANGE_SHIFT_FIXED &&
$game_party.actor_fixed?(actor.id))
return false
end
return true
end
#--------------------------------------------------------------------------
# ○ 並び替え
#--------------------------------------------------------------------------
def change_shift(index1, index2)
# 位置を入れ替え
$game_party.change_shift(index1, index2)
# 選択済みインデックスをクリア
@battle_member_window.selected_index = nil
refresh_window
end
#--------------------------------------------------------------------------
# ○ フレーム更新 (パーティウィンドウがアクティブの場合)
#--------------------------------------------------------------------------
def update_party_member
@status_window.set_actor(@party_member_window.actor)
if Input.trigger?(Input::cool.gif
Sound.play_cancel
# 戦闘メンバーウィンドウに切り替え
@battle_member_window.active = true
@party_member_window.active = false
@control_window.mode = Window_PartyFormControl::MODE_BATTLE_MEMBER
elsif Input.trigger?(Input::C)
actor = @party_member_window.actor
# アクターが戦闘メンバーに含まれる場合
if $game_party.battle_members.include?(actor)
Sound.play_buzzer
return
end
# アクターを入れ替え
Sound.play_decision
actors = $game_party.all_members
battle_actors = $game_party.battle_members
if @battle_member_window.actor != nil
actors[@party_member_window.actor_index] = @battle_member_window.actor
actors[@battle_member_window.index] = actor
$game_party.set_member(actors.compact)
end
battle_actors[@battle_member_window.index] = actor
$game_party.set_battle_member(battle_actors.compact)
refresh_window
# 戦闘メンバーウィンドウに切り替え
@battle_member_window.active = true
@party_member_window.active = false
@control_window.mode = Window_PartyFormControl::MODE_BATTLE_MEMBER
end
end
#--------------------------------------------------------------------------
# ○ フレーム更新 (確認ウィンドウがアクティブの場合)
#--------------------------------------------------------------------------
def update_confirm
if Input.trigger?(Input::cool.gif
Sound.play_cancel
hide_confirm_window
elsif Input.trigger?(Input::C)
case @confirm_window.index
when 0 # 編成完了
# パーティが無効の場合
unless battle_member_valid?
Sound.play_buzzer
return
end
Sound.play_decision
return_scene
when 1 # 編成中断
Sound.play_decision
# パーティを編成前の状態に戻す
$game_party.set_member(@party_actors)
$game_party.set_battle_member(@battle_actors)
return_scene
when 2 # キャンセル
Sound.play_cancel
hide_confirm_window
end
end
end
#--------------------------------------------------------------------------
# ○ 戦闘メンバー有効判定
#--------------------------------------------------------------------------
def battle_member_valid?
return false if $game_party.battle_members.size == 0 # 戦闘メンバーが空
$game_party.battle_members.each { |actor|
return true if actor.exist? # 生存者がいればOK
}
return false
end
#--------------------------------------------------------------------------
# ○ 確認ウィンドウの表示
#--------------------------------------------------------------------------
def show_confirm_window
if @battle_member_window.active
@last_active_window = @battle_member_window
else
@last_active_window = @party_member_window
end
@battle_member_window.active = false
@party_member_window.active = false

@confirm_window.draw_item(0, battle_member_valid?)
@confirm_window.open
@confirm_window.active = true
end
#--------------------------------------------------------------------------
# ○ 確認ウィンドウの非表示
#--------------------------------------------------------------------------
def hide_confirm_window
@confirm_window.active = true
@confirm_window.close
@last_active_window.active = true
end
end

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆
☆★☆★☆★☆★☆★☆★

#==============================================================================
# ■ Scene_Battle
#==============================================================================

class Scene_Battle < Scene_Base
#--------------------------------------------------------------------------
# ● メッセージ表示が終わるまでウェイト
#--------------------------------------------------------------------------
alias wait_for_message_KGC_LargeParty wait_for_message
def wait_for_message
return if @ignore_wait_for_message # メッセージ終了までのウェイトを無視

wait_for_message_KGC_LargeParty
end
#--------------------------------------------------------------------------
# ● レベルアップの表示
#--------------------------------------------------------------------------
alias display_level_up_KGC_LargeParty display_level_up
def display_level_up
@ignore_wait_for_message = true

display_level_up_KGC_LargeParty

exp = $game_troop.exp_total * KGC::LargeParty::STAND_BY_EXP_RATE / 1000
$game_party.stand_by_members.each { |actor|
if actor.exist?
actor.gain_exp(exp, KGC::LargeParty::SHOW_STAND_BY_LEVEL_UP)
end
}
@ignore_wait_for_message = false
wait_for_message
end
#--------------------------------------------------------------------------
# ● パーティコマンド選択の開始
#--------------------------------------------------------------------------
alias start_party_command_selection_KGC_LargeParty start_party_command_selection
def start_party_command_selection
if $game_temp.in_battle
@status_window.index = 0
end

start_party_command_selection_KGC_LargeParty
end

if KGC::LargeParty::USE_BATTLE_PARTYFORM
#--------------------------------------------------------------------------
# ● 情報表示ビューポートの作成
#--------------------------------------------------------------------------
alias create_info_viewport_KGC_LargeParty create_info_viewport
def create_info_viewport
create_info_viewport_KGC_LargeParty

@__command_partyform_index =
@party_command_window.add_command(Vocab.partyform_battle)
@party_command_window.draw_item(@__command_partyform_index,
$game_party.battle_partyform_enable?)
end
#--------------------------------------------------------------------------
# ● パーティコマンド選択の更新
#--------------------------------------------------------------------------
alias update_party_command_selection_KGC_LargeParty update_party_command_selection
def update_party_command_selection
if Input.trigger?(Input::C)
case @party_command_window.index
when @__command_partyform_index # パーティ編成
unless $game_party.battle_partyform_enable?
Sound.play_buzzer
return
end
Sound.play_decision
process_partyform
return
end
end

update_party_command_selection_KGC_LargeParty
end
#--------------------------------------------------------------------------
# ○ パーティ編成の処理
#--------------------------------------------------------------------------
def process_partyform
Graphics.freeze
snapshot_for_background
$scene = Scene_PartyForm.new(0, Scene_PartyForm::HOST_BATTLE)
$scene.main
$scene = self
@status_window.refresh
perform_transition
end
end
end

#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_
#_/ The original untranslated version of this script can be found here:
# http://f44.aaa.livedoor.jp/~ytomy/tkool/rp...ech=large_party
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_


Go to the top of the page
 
+Quote Post
   
andani
post Nov 16 2008, 07:27 PM
Post #20


Level 4
Group Icon

Group: Member
Posts: 47
Type: Event Designer
RM Skill: Skilled




Wow! 1700+ lines of code! That dwarfs all my other scripts in my project. Anyway, thanks a million for this script. I know it took a while for you to do. I find this sort of thing very useful.


__________________________





My name's Andani. I am a very blunt person who says what they feel. I usually do not reveal my thoughts except when I feel obliged.

-Andani Yunatta Kappenluthe
Go to the top of the page
 
+Quote Post
   

2 Pages V   1 2 >
Reply to this topicStart new topic
1 User(s) are reading this topic (1 Guests and 0 Anonymous Users)
0 Members:

 

Lo-Fi Version Time is now: 24th May 2013 - 04:49 PM
RPG RPG Revolution is an Privacy Policy and Legal
eXTReMe Tracker