RPG Maker Forums

Basically what the title says, I really would love to have the RMXP script of Ccao's U.M.S (Universal Message System) converted over to work with MV, or at least something so that i can have message window appear over the event or player and auto fir the text that's put in it, along with the option for name box's.

here's a picture of what i need from the XP version, and of course, the actual demo of the script for XP.

Link for the Demo

http://www.mediafire.com/download/gk11f7ip5ofv8q6/UMS.rar

and the actual RGSS Script

Code:
# *****************************************************************************# *    Universal Message System# *      v1.30# *      by Ccoa# *****************************************************************************# Usage:=beginIN MESSAGE CODES  \b          - toggle bold on and off  \bopc[i]    - change the back opacity for this message to i (should be 0-255)  \c[i]       - change the text color  \c[#IIIIII] - change the text color to the hex code (temporary)  \e[i]       - place the text box over event i (0 = player, -1 no event)  \face[name] - changes the face graphic to name.png (leave empty [] for no face)  \fl         - change face justification to left  \font[name] - change the font to name, leave empty [] to return to the default font  \fr         - change face justification to right  \g          - display the gold window  \height     - height of the message window, works only in normal mode  \i          - toggle italics on and off  \ignr       - Do not write anything on this line, only process codes, must be the first thing on a line   \jc         - justify the window to the center, ignored if using \e  \jl         - justify the window to the left, ignored if using \e  \jr         - justify the window to the right, ignored if using \e  \m          - toggle mode between normal and fit window to text  \n[i]       - display the name of actor i  \nm[name]   - display the name in the name window, leave empty [] to remove the name window  \oa[i]      - display the icon and name of armor i  \oi[i]      - display the icon and name of item i  \opc[i]     - change the opacity for this message to i (should be 0-255)  \os[i]      - display the icon and name of skill i  \ow[i]      - display the icon and name of weapon i  \p[i]       - pause for i frames before writing the next character  \pt         - toggle pause display on and off  \s          - toggle shadowed text  \shk[i]     - set window shake to i, higher i is bigger shake, 0 is no shake  \skip       - toggle text skip on and off  \t1         - switch to the talk1 comic thingy  \t2         - switch to the talk2 comic thingy  \tc         - center the text, must be the first thing on a line  \th         - switch to the thought comic thingy  \tl         - left justify the text, must be the first thing on a line  \tr         - right justify the text, must be the first thing on a line  \v[i]       - display variable i  \width      - width of the message window, works only in normal mode  \w[i]       - wait for i frames after receiving this code, then close the window  \ws[i]      - change the write speed to i  \slv[name]  - set this window to be slave window name, or show slave window name  \inc        - include this window in the last  OUT OF MESSAGE CODES (use in a Script event command)$game_system.ums_mode = NORMAL_MODE - switch to normal mode$game_system.ums_mode = FIT_WINDOW_TO_TEXT - switch to fit window mode$game_system.text_skip = true - turn text skip on$game_system.text_skip = falsetrue                           - turn text skip off (true is necessary)$game_system.text_mode = WRITE_FASTER - change skip mode to write faster$game_system.text_mode = WRITE_ALL - change skip mode to write all$game_system.write_speed = i - change the delay between letters to i frames$game_system.window_height = i - change the window height to i$game_system.window_width = i - change the window width to i$game_system.window_justification = RIGHT - make the window right justified$game_system.window_justification = LEFT - make the window left justified$game_system.window_justification = CENTER - make the window center justified$game_system.face_graphic = "filename" - change the face graphic to filename.png$game_system.face_graphic = "" - change the face graphic to none$game_system.face_graphic_justification = LEFT - the face graphic is on the left side$game_system.face_graphic_justification = RIGHT - the face graphic is on the right side$game_system.face_graphic_position = TOP - face graphic appears on top of window$game_system.face_graphic_position = CENTER - face graphic appears centered in window$game_system.face_graphic_position = BOTTOM - face graphic appears on the bottom of window$game_system.shadow_text = true - turn text shadowing on$game_system.shadow_text = falsetrue                            - turn text shadowing off (true is necessary)$game_system.shadow_color = Color.new(red, blue, green, alpha) - change shadow color$game_system.message_event = what event to put the message over (0 = player, -1 = no event)$game_system.comic_enabled = false true                               - turn off comic thingy$game_system.comic_enabled = true  - turn on comic thingy (only works with message_event not -1)$game_system.comic_style = TALK1   - use the talk1.png comic thingy$game_system.comic_style = TALK2   - use the talk2.png comic thingy$game_system.comic_style = THOUGHT - use the thought.png comic thingy$game_system.name = "name" - change the text of the name window to name$game_system.name = "" - remove the name window$game_system.font = "name" - change the font to name$game_system.font = "" - return the font to the default$game_system.text_justification = CENTER - center justify the text$game_system.text_justification = LEFT - left justify the text$game_system.text_justification = RIGHT - right justify the text$game_system.show_pause = true - show pause icon when waiting for user input$game_system.show_pause = false - don't show pause icon when waiting for user input$game_system.shake = 0 - turn window shake off$game_system.shake = i - set shake to i, higher i is bigger shake$game_system.sound_effect = "" - turn off the letter-by-letter SE$game_system.sound_effect = "sename" - play the SE sename with each letter written$game_system.animated_faces = false - do not use animated faces$game_system.animated_faces = true - use animated faces$game_system.animation_pause = i - Wait i frames between each animation$game_system.face_frame_width = i - Each frame on the faceset is i pixels$game_system.resting_face = "" - Do not use a resting face$game_system.resting_face = "name" - Use a different animated face named facenamename when done talking$game_system.resting_animation_pause = i - Wait i frames between resting animations$game_system.text_mode = ONE_LETTER_AT_A_TIME - write text one letter at a time$game_system.text_mode = ALL_AT_ONCE - write text all at once$game_system.font_color = Color.new(R, G, B, A) - permanently change the font color to the RGBA color given here$game_system.font_color = nil - return the font color permanently to normal_color (white, by default)$game_system.windowskin = "windowskinname" - change the message box windowskin to windowskin$game_system.windowskin = "" - change the message box windowskin back to the one in the database$game_system.name_window = true - show the name window$game_system.name_window = false - hide the name window (just show the text)$game_system.opacity = i - change the message window back opacity to i (0-255)=end# *****************************************************************************#  CONSTANTS# *****************************************************************************# modesNORMAL_MODE        = 0FIT_WINDOW_TO_TEXT = 1#text modesONE_LETTER_AT_A_TIME = 0ALL_AT_ONCE          = 1# skip modesWRITE_FASTER = 0WRITE_ALL    = 1# justificationsRIGHT  = 0CENTER = 1LEFT   = 2# positions for extra objects (face graphics, choice box, etc)ABOVE  = 0  # place the object above the top of the message boxCENTER = 1  # center the object vertically inside the message boxBOTTOM = 2  # place the bottom of the object on the bottom of the message boxSIDE   = 3  # to the side of the message box (which side depends on justification)# comic typeTALK1   = 0TALK2   = 1THOUGHT = 2# *****************************************************************************#  Changes to Game_System.  This allows any changes made to be saved when the#     game is saved.# *****************************************************************************class Game_System  attr_accessor :ums_mode # what mode the UMS is in  attr_accessor :text_skip # whether or not text skip is activated  attr_accessor :skip_mode # write the text faster while C is pressed, or just skip to the end  attr_accessor :write_speed # frame delay between characters    attr_accessor :text_mode # write one letter at a time, or all at once?    attr_accessor :window_height # default height of message window  attr_accessor :window_width # default width of message window  attr_accessor :window_justification # default justification of window    attr_accessor :face_graphic # current face graphic  attr_accessor :face_graphic_justification # justification of face graphic  attr_accessor :face_graphic_position # position of face graphic    attr_accessor :shadowed_text # whether or not to draw a shadow behind the text  attr_accessor :shadow_color # the shadow color    attr_accessor :choice_justification # where the choice window is located  attr_accessor :choice_position # prefered position of choice window    attr_accessor :message_event # what event to center the text over (0 player, -1 to not)    attr_accessor :comic_enabled # using "talk" icons?  attr_accessor :comic_style   # what type of comic image to use    attr_accessor :name # the text for the name window  attr_accessor :name_window # should the name window be visible?    attr_accessor :font # the name of the font  attr_accessor :font_color # the name of the (permanent) font color    attr_accessor :text_justification # the justification of the window text    attr_accessor :show_pause # whether or not to show the pause icon    attr_accessor :shake # the amount of shake for the window    attr_accessor :sound_effect # SE to play with each letter    attr_accessor :slave_windows # hash of slave windows  attr_accessor :indy_windows  # hash of independent windows    attr_accessor :animated_faces # are the faces animated?  attr_accessor :animation_pause # how long do I wait between animation loops?  attr_accessor :face_frame_width # how many pixels wide is each face frame  attr_accessor :resting_face  # postext for waiting face graphic  attr_accessor :resting_animation_pause # how long to wait for resting graphic    attr_accessor :windowskin # what windowskin to use for messages  attr_accessor :back_opacity # back opacity of windowskin  attr_accessor :opacity # opacity of windowskin    attr_reader :shortcuts  # user-defined shortcuts    alias ums_initialize initialize  def initialize    ums_initialize    @ums_mode = NORMAL_MODE        @skip_mode = WRITE_ALL    @text_skip = true    @write_speed = 2        @text_mode = ONE_LETTER_AT_A_TIME        @window_height = 128    @window_width = 480    @window_justification = CENTER        @face_graphic = ""    @face_graphic_justification = LEFT    @face_graphic_position = CENTER        @shadowed_text = false    @shadow_color = Color.new(0, 0, 0, 100)        @choice_justification = RIGHT    @choice_position = SIDE        @message_event = -1        @comic_enabled = false    @comic_style = TALK1        @name = ""    @name_window = false        @font = "Verdana"    @font_color = nil        @text_justification = LEFT        @show_pause = true        @shake = 0        @sound_effect = ""        @slave_windows = {}    @indy_windows  = {}        @animated_faces = false    @animation_pause = 80    @face_frame_width = 100    @resting_face = ""    @resting_animation_pause = 80        @windowskin = ""    @opacity = 255    @back_opacity = 160        @used_codes = ['\v', '\n', '\c', '\g', '\skip', '\m', '\height', '\width',                    '\jr', '\jc', '\jl', '\face', '\fl', '\fr', '\b', '\i', '\s',                   '\e', '\t1', '\t2', '\th', '\nm', '\font', '\p', '\w', '\ws',                   '\oa', '\oi', '\os', '\ow', '\tl', '\tr', '\tc', '\ignr',                    '\shk', '\slv', '\ind', '\inc']                       @shortcuts = {}  end    def add_shortcut(shortcut, code)    text = shortcut.downcase    if !@used_codes.include?(text)      @shortcuts[shortcut] = code    end  end    def open_window(name)    if $game_system.indy_windows.has_key?(name)      $game_system.indy_windows[name].show = true    end  end    def close_window(name)    if $game_system.indy_windows.has_key?(name)      $game_system.indy_windows[name].dispose      $game_system.indy_windows.delete(name)    end  endend#==============================================================================# ** Game_Temp#------------------------------------------------------------------------------#  This class handles temporary data that is not included with save data.#  Refer to "$game_temp" for the instance of this class.#==============================================================================class Game_Temp  attr_accessor :choicesendclass Scene_Map  alias ums_update update  def update    $game_system.slave_windows.each_value { |window| window.update }    $game_system.indy_windows.each_value { |window| window.update }    ums_update  endendclass Interpreter  #--------------------------------------------------------------------------  # * Show Text  #--------------------------------------------------------------------------  def command_101    # If other text has been set to message_text    if $game_temp.message_text != nil      # End      return false    end    # Set message end waiting flag and callback    @message_waiting = true    $game_temp.message_proc = Proc.new { @message_waiting = false }    # Set message text on first line    $game_temp.message_text = @list[@index].parameters[0] + "\n"    line_count = 1    # Loop    loop do      # If next event command text is on the second line or after      if @list[@index + 1].code == 401        # Add the second line or after to message_text        $game_temp.message_text += @list[@index + 1].parameters[0] + "\n"        line_count += 1      # If the next event command is show text      elsif @list[@index + 1].code == 101        # If the text contains the \inc code        if @list[@index + 1].parameters[0].index(/\\[Ii][Nn][Cc]/) != nil          $game_temp.message_text += @list[@index + 1].parameters[0] + "\n"          $game_temp.message_text.sub!(/\\[Ii][Nn][Cc]/) { "" }        else          return true        end      # If event command is not on the second line or after      else        # If next event command is show choices        if @list[@index + 1].code == 102          # If choices fit on screen          #if @list[@index+1].parameters[0].size <= 4 - line_count            # Advance index            @index += 1            # Choices setup            $game_temp.choice_start = line_count            setup_choices(@list[@index].parameters)          #end        # If next event command is input number        elsif @list[@index + 1].code == 103          # If number input window fits on screen          if line_count < 4            # Advance index            @index += 1            # Number input setup            $game_temp.num_input_start = line_count            $game_temp.num_input_variable_id = @list[@index].parameters[0]            $game_temp.num_input_digits_max = @list[@index].parameters[1]          end        end        # Continue        return true      end      # Advance index      @index += 1    end  end  #--------------------------------------------------------------------------  # * Setup Choices  #--------------------------------------------------------------------------  def setup_choices(parameters)    # Set choice item count to choice_max    $game_temp.choice_max = parameters[0].size    # Set choice to message_text    $game_temp.choices = parameters[0]    # Set cancel processing    $game_temp.choice_cancel_type = parameters[1]        # Set callback    current_indent = @list[@index].indent    $game_temp.choice_proc = Proc.new { |n| @branch[current_indent] = n }  end    #--------------------------------------------------------------------------  # * Input Number  #--------------------------------------------------------------------------  def command_103    # If text has been set to message_text    if $game_temp.message_text != nil      # End      return false    end    # Set message end waiting flag and callback    @message_waiting = true    $game_temp.message_proc = Proc.new { @message_waiting = false }    # Number input setup    $game_temp.message_text = ""    $game_temp.num_input_start = 0    $game_temp.num_input_variable_id = @parameters[0]    $game_temp.num_input_digits_max = @parameters[1]    # Continue    return true  end    #--------------------------------------------------------------------------  # * Script  #--------------------------------------------------------------------------  def command_355    # Set first line to script    script = @list[@index].parameters[0] + "\n"    # Loop    loop do      # If next event command is second line of script or after      if @list[@index + 1].code == 655        # Add second line or after to script        script += @list[@index + 1].parameters[0] + "\n"      # If event command is not second line or after      else        # Abort loop        break      end      # Advance index      @index += 1    end    # Evaluation    result = eval(script)    # Continue    return true  endend# *****************************************************************************#  Changes to Window_Message.  This is the bulk of the script# *****************************************************************************#==============================================================================# ** Window_Message#------------------------------------------------------------------------------#  This message window is used to display text.#==============================================================================class Window_Message < Window_Base  #--------------------------------------------------------------------------  # * Object Initialization  #--------------------------------------------------------------------------  def initialize    # x-coordinate depends on justification    if $game_system.window_justification == RIGHT      x = 640 - self.width    elsif $game_system.window_justification == LEFT      x = 0    else # center      x = (640 - $game_system.window_width) / 2    end    # y-coordinate depends on height    y = 480 - $game_system.window_height - 16    super(x, y, $game_system.window_width, $game_system.window_height)    self.contents = Bitmap.new(width - 32, height - 32)    self.visible = false    self.z = 9998    @fade_in = false    @fade_out = false    @contents_showing = false        # face graphic sprite    @face = Sprite.new    @face.opacity = 0    @face.z = self.z + 1    @face_offset = 0        # choice window    @choice_window = Window_Choice.new([])     @choice_window.back_opacity = self.back_opacity        # comic sprite    @comic = Sprite.new    @comic.opacity = 0    @comic.z = self.z + 1    if $game_system.comic_style == TALK1      @comic.bitmap = RPG::Cache.windowskin("talk1")    elsif $game_system.comic_style == TALK2      @comic.bitmap = RPG::Cache.windowskin("talk2")    else # thought      @comic.bitmap = RPG::Cache.windowskin("thought")    end        # name window    @name_window = Window_Name.new    @name_window.z = self.z + 1        @pause_time = 0    @wait = 0        @show = false        @face_frame = 0  end  #--------------------------------------------------------------------------  # * Dispose  #--------------------------------------------------------------------------  def dispose    terminate_message    $game_temp.message_window_showing = false    if @input_number_window != nil      @input_number_window.dispose    end    @face.dispose    @choice_window.dispose    @comic.dispose    @name_window.dispose    super  end  #--------------------------------------------------------------------------  # * Terminate Message  #--------------------------------------------------------------------------  def terminate_message    @show = false    self.active = false    self.pause = false    self.contents.clear    # Clear showing flag    @contents_showing = false    # Call message callback    if $game_temp.message_proc != nil      $game_temp.message_proc.call    end    # Clear variables related to text, choices, and number input    $game_temp.message_text = nil    $game_temp.message_proc = nil    $game_temp.choice_start = 99    $game_temp.choice_max = 0    $game_temp.choice_cancel_type = 0    $game_temp.choice_proc = nil    $game_temp.num_input_start = 99    $game_temp.num_input_variable_id = 0    $game_temp.num_input_digits_max = 0    # Open gold window    if @gold_window != nil      @gold_window.dispose      @gold_window = nil    end    @choice_window.visible = false    @choice_window.active = false    @comic.opacity = 0    $game_system.slave_windows.each_pair {|name, window|       if window.show == true        window.dispose        $game_system.slave_windows.delete(name)      end    }    @done = false  end  #--------------------------------------------------------------------------  # * Refresh  #--------------------------------------------------------------------------  def refresh    self.contents.clear    if $game_system.font_color.nil?      self.contents.font.color = normal_color    else      self.contents.font.color = $game_system.font_color    end    if $game_system.windowskin != ""        self.windowskin = RPG::Cache.windowskin($game_system.windowskin)    else      self.windowskin = RPG::Cache.windowskin($data_system.windowskin_name)    end    @show = true    @x = @y = 0    # If waiting for a message to be displayed    if $game_temp.message_text != nil       @text = $game_temp.message_text            # replace shortcuts with original code      $game_system.shortcuts.each { |shortcut, code|        @text.gsub!(shortcut, code)      }            # VERY first thing.  Check to see if this is being set up as a slave      #  or independent window.      if @text.index(/\\[Ss][Ll][Vv]\[(.*?)\]/) != nil        # is this a new slave window, or a request to display it?        if !$game_system.slave_windows.has_key?($1.to_s)          # there is no such slave window yet.  Set it up.          @text.gsub!(/\\[Ss][Ll][Vv]\[(.*?)\]/, "")          $game_system.slave_windows[$1.to_s] = Window_Slave.new(@text)          @text = ""          @show = false          terminate_message          return        end      end      if @text.index(/\\[Ii][Nn][Dd]\[(.*?)\]/) != nil        # is this a new independent window, or a request to display it?        if !$game_system.indy_windows.has_key?($1.to_s)          # there is no such slave window yet.  Set it up.          @text.gsub!(/\\[Ii][Nn][Dd]\[(.*?)\]/, "")          $game_system.indy_windows[$1.to_s] = Window_Slave.new(@text)          @text = ""          @show = false          terminate_message          return        end      end            # Control text processing      begin        last_text = @text.clone        @text.gsub!(/\\[Vv]\[([0-9]+)\]/) { $game_variables[$1.to_i] }      end until @text == last_text      @text.gsub!(/\\[Nn]\[([0-9]+)\]/) do        $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""      end            # window mode      if @text.index(/\\[Mm]/) != nil        if $game_system.ums_mode == NORMAL_MODE          $game_system.ums_mode = FIT_WINDOW_TO_TEXT        else          $game_system.ums_mode = NORMAL_MODE        end        @text.gsub!(/\\[Mm]/) { "" }      end            # window height      @text.gsub!(/\\[Hh][Ee][Ii][Gg][Hh][Tt]\[([0-9]+)\]/) do        $game_system.window_height = $1.to_i        ""      end            # window width      @text.gsub!(/\\[Ww][Ii][Dd][Tt][Hh]\[([0-9]+)\]/) do        $game_system.window_width = $1.to_i        ""      end            # justification      @text.gsub!(/\\[Jj][Rr]/) do        $game_system.window_justification = RIGHT        reset_window        ""      end      @text.gsub!(/\\[Jj][Cc]/) do        $game_system.window_justification = CENTER        reset_window        ""      end            @text.gsub!(/\\[Jj][Ll]/) do        $game_system.window_justification = LEFT        reset_window        ""      end            # face graphics      @text.gsub!(/\\[Ff][Aa][Cc][Ee]\[(.*?)\]/) do        $game_system.face_graphic = $1.to_s        if $1.to_s == ""          @face.opacity = 0        end        ""      end      @text.gsub!(/\\[Ff][Ll]/) do        $game_system.face_graphic_justification = LEFT        ""      end      @text.gsub!(/\\[Ff][Rr]/) do        $game_system.face_graphic_justification = RIGHT        ""      end            # event centering      @text.gsub!(/\\[Ee]\[([0-9]+)\]/) do        $game_system.message_event = $1.to_i        ""      end            # comic thingy      @text.gsub!(/\\[Tt]1/) do        $game_system.comic_style = TALK1        @comic.bitmap = RPG::Cache.windowskin("talk1.png")        ""      end      @text.gsub!(/\\[Tt]2/) do        $game_system.comic_style = TALK2        @comic.bitmap = RPG::Cache.windowskin("talk2.png")        ""      end      @text.gsub!(/\\[Tt][Hh]/) do        $game_system.comic_style = THOUGHT        @comic.bitmap = RPG::Cache.windowskin("thought.png")        ""      end            # name window      @text.gsub!(/\\[Nn][Mm]\[(.*?)\]/) do        $game_system.name = $1.to_s        if $1.to_s == ""          @name_window.visible = false          @name_window.dummy_window.visible = false        end        ""      end            # toggle pause      @text.gsub!(/\\[Pp][Tt]/) do        $game_system.show_pause = !$game_system.show_pause        ""      end            # shaking      @text.gsub!(/\\[Ss][Hh][Kk]\[([0-9]+)\]/) do        $game_system.shake = $1.to_i        ""      end            # back opacity      @text.gsub!(/\\[Bb][Oo][Pp][Cc]\[([0-9]+)\]/) do        $game_system.back_opacity = $1.to_i        self.back_opacity = $game_system.back_opacity        ""      end            # opacity      @text.gsub!(/\\[Oo][Pp][Cc]\[([0-9]+)\]/) do        $game_system.opacity = $1.to_i        self.opacity = $game_system.opacity        ""      end            # Change "\\\\" to "\000" for convenience      @text.gsub!(/\\\\/) { "\000" }      # Change "\\C" to "\001" and "\\G" to "\002"      @text.gsub!(/\\[Cc]\[([0-9]+)\]/) { "\001[#{$1}]" }      @text.gsub!(/\\[Gg]/) { "\002" }      @text.gsub!(/\\[Cc]\[0x([0123456789abcdef]+)\]/) { "\026[#{$1}]" }            # text skip code      @text.gsub!(/\\[Ss][Kk][Ii][Pp]/) { "\003" }            # ignore code      @text.gsub!(/\\[Ii][Gg][Nn][Rr]/) { "\023" }            # slave and indy windows      @text.gsub!(/\\[Ss][Ll][Vv]\[(.*?)\]/) { "\024[#{$1}]" }      @text.gsub!(/\\[Ii][Nn][Dd]\[(.*?)\]/) { "\025[#{$1}]" }            # bold and italics      @text.gsub!(/\\[Bb]/) { "\004" }      @text.gsub!(/\\[Ii]/) { "\005" }            # shadow      @text.gsub!(/\\[Ss]/) { "\006" }            # font      @text.gsub!(/\\[Ff][Oo][Nn][Tt]\[(.*?)\]/) { "\007[#{$1}]" }            # pause and wait      @text.gsub!(/\\[Pp]\[([0-9]+)\]/) { "\010[#{$1}]" }      @text.gsub!(/\\[Ww]\[([0-9]+)\]/) { "\011[#{$1}]" }            # write speed      @text.gsub!(/\\[Ww][Ss]\[([0-9]+)\]/) { "\013[#{$1}]" }                  # armor, items, skills, and weapons      @text.gsub!(/\\[Oo][Aa]\[([0-9]+)\]/) {         item = $data_armors[$1.to_i]        "\014[#{$1}]" + "  " + item.name      }      @text.gsub!(/\\[Oo][Ii]\[([0-9]+)\]/) {         item = $data_items[$1.to_i]        "\015[#{$1}]" + "  " + item.name      }      @text.gsub!(/\\[Oo][Ss]\[([0-9]+)\]/) {         item = $data_skills[$1.to_i]        "\016[#{$1}]" + "  " + item.name      }      @text.gsub!(/\\[Oo][Ww]\[([0-9]+)\]/) {         item = $data_weapons[$1.to_i]        "\017[#{$1}]" + "  " + item.name      }            # text justification      @text.gsub!(/\\[Tt][Cc]/) { "\020" }      @text.gsub!(/\\[Tt][Ll]/) { "\021" }      @text.gsub!(/\\[Tt][Rr]/) { "\022" }            # Resize the window to fit the contents?      if $game_system.ums_mode == FIT_WINDOW_TO_TEXT        width = 1        text = @text.split("\n")        height = 0        i = 0        for line in text          # don't count this line's width if it has the ignr code          if !line.include?("\023")            width = [width, self.contents.text_size(line).width].max            delta = self.contents.text_size(line).height            height += delta + (delta * 0.2).to_i          end        end                if $game_system.face_graphic != "" and ($game_system.face_graphic_position == CENTER or $game_system.face_graphic_position == BOTTOM)          width += @face.bitmap.width          if height < @face.bitmap.height            height = @face.bitmap.height - 32          end        end                if height == 0          height = 1        end                self.width = width + 48        self.height = height + 48         self.contents = Bitmap.new(width + 16, height)        if $game_system.font_color.nil?          self.contents.font.color = normal_color        else          self.contents.font.color = $game_system.font_color        end      else        if self.width != $game_system.window_height or self.height != $game_system.window_width          self.width = $game_system.window_width          self.height = $game_system.window_height          self.contents = Bitmap.new(self.width - 32, self.height - 32)          if $game_system.font_color.nil?            self.contents.font.color = normal_color          else            self.contents.font.color = $game_system.font_color          end        end      end            reset_window            get_x_value            @count = Graphics.frame_count      @pause_time = 0      @ignore = false      @ascending = true      @target_x = self.x + $game_system.shake      @done = false      @face_frame = 0      @done = false            self.oy = 0    end          end    #--------------------------------------------------------------------------  # * Set Window Position and Opacity Level  #--------------------------------------------------------------------------  def reset_window (change_opacity = true)    # x-coordinate depends on justification    if $game_system.message_event == -1      if $game_system.window_justification == RIGHT        self.x = 640 - $game_system.window_width      elsif $game_system.window_justification == LEFT        self.x = 0      else # center        self.x = (640 - self.width) / 2      end    else      if $game_system.message_event == 0 or $game_map.events[$game_system.message_event] == nil        # center on player        event_x = $game_player.screen_x      else        # center on the event specified        event_x = $game_map.events[$game_system.message_event].screen_x      end      self.x = event_x - self.width / 2      @comic.x = self.x + (self.width / 2) + 4    end        if $game_temp.in_battle      self.y = 16    else      if $game_system.message_event == -1        case $game_system.message_position          when 0  # up            self.y = 16          when 1  # middle            self.y = (480 - $game_system.window_height) / 2          when 2  # down            self.y = 480 - $game_system.window_height - 24        end      else        if $game_system.message_event == 0 or $game_map.events[$game_system.message_event] == nil          # above player          self.y = $game_player.screen_y - self.height - 48        else          # above event specified          self.y = $game_map.events[$game_system.message_event].screen_y - self.height - 48        end        @comic.y = self.y + self.height - 2        @comic.angle = 0      end    end    if self.y < 0 + ($game_system.name == "" ? 0 : 16)      if $game_system.comic_enabled        if $game_system.message_event == 0 or $game_map.events[$game_system.message_event] == nil          self.y = $game_player.screen_y - 16        else          self.y = $game_map.events[$game_system.message_event].screen_y - 16        end        @comic.angle = 180        @comic.y = self.y + 2        @comic.x = self.x + (self.width / 2) - 4      else        self.y = 0 + ($game_system.name == "" ? 0 : 16)      end    elsif self.y > 480 - self.height       self.y = 480 - self.height    end    if self.x < 0       self.x = 0    elsif self.x > 680 - self.width - 48      self.x = 640 - self.width    end        if change_opacity      if $game_system.message_frame == 0 and $game_temp.message_text != ""        self.opacity = $game_system.opacity      else        self.opacity = 0      end      self.back_opacity = $game_system.back_opacity    end          # face stuff      if $game_system.face_graphic != ""          # the player has chosen to show a face graphic        if @done and $game_system.resting_face != ""          @face.bitmap = RPG::Cache.picture($game_system.face_graphic + $game_system.resting_face)          if @face_frame * $game_system.face_frame_width >= @face.bitmap.width            @face_frame = 0          end        else          @face.bitmap = RPG::Cache.picture($game_system.face_graphic)        end                # picture y-coordinate        if $game_system.face_graphic_position == ABOVE          @face.y = self.y - @face.bitmap.height          @face_offset = 0        elsif $game_system.face_graphic_position == CENTER          delta = (@face.bitmap.height - self.height) / 2          @face.y = self.y - delta          if $game_system.animated_faces            @face_offset = $game_system.face_frame_width + 16          else            @face_offset = @face.bitmap.width + 16          end        elsif $game_system.face_graphic_position == BOTTOM           @face.y = self.y + self.height - @face.bitmap.height          if $game_system.animated_faces            @face_offset = $game_system.face_frame_width + 16          else            @face_offset = @face.bitmap.width + 16          end        else # side          delta = (@face.bitmap.height - self.height) / 2          @face.y = self.y - delta          @face_offset = 0        end                # picture x-coordinate        if $game_system.face_graphic_justification == LEFT          if $game_system.face_graphic_position == SIDE            @face.x = self.x - @face.bitmap.width          else            @face.x = self.x + 10          end        else # right side          if $game_system.animated_faces            offset = @face.bitmap.width - $game_system.face_frame_width          else            offset = 0          end          if $game_system.face_graphic_position == SIDE            @face.x = self.x + self.width + offset          else            @face.x = self.x + self.width - @face.bitmap.width - 10 + offset            @face_offset = 0          end        end                if $game_system.animated_faces          @face.src_rect = Rect.new(@face_frame * $game_system.face_frame_width, 0, $game_system.face_frame_width, @face.bitmap.height)          if @done and $game_system.resting_face != ""            pause = $game_system.resting_animation_pause          else            pause = $game_system.animation_pause          end          if Graphics.frame_count % pause == 0            @animate_face = true          end          if @animate_face            if Graphics.frame_count % 3 == 0              @face_frame += 1              if @face_frame * $game_system.face_frame_width >= @face.bitmap.width                @face_frame = 0                @animate_face = false              end            end          end        end      end            # name window      if $game_system.name != ""        @name_window.x = self.x        @name_window.y = self.y - 36        @name_window.set_name($game_system.name)      end            # If choice    if $game_temp.choice_max > 0      @choice_window.set_choices($game_temp.choices)      # determine x and y coords for choice window      if $game_system.choice_justification == LEFT        @choice_window.x = self.x      else        @choice_window.x = self.x + self.width - @choice_window.width      end      if $game_system.choice_position == ABOVE        # check to make sure there is enough room above the textbox        if self.y < @choice_window.height          # not enough room above, place below          @choice_window.y = self.y + self.height        else          # draw above          @choice_window.y = self.y - @choice_window.height        end      elsif $game_system.choice_position == BOTTOM        # check to make sure there is enough room below the textbox        if (480 - self.y - self.height) < @choice_window.height          # not enough room below, place above          @choice_window.y = self.y - @choice_window.height        else          # draw below           @choice_window.y = self.y + self.height        end      else # side        if $game_system.choice_justification == LEFT          # check to make sure there's room on the left side          if self.y < @choice_window.width            # not enough room on the side, check to make sure there's room below            if (480 - self.y - self.height) < @choice_window.height              # not enough room below, place above              @choice_window.y = self.y - @choice_window.height            else              # draw below               @choice_window.y = self.y + self.height            end          else            # place on the left side            @choice_window.y = self.y            @choice_window.x = self.x - @choice_window.width          end        else # right          # check to make sure there's room on the right side          if (680 - (self.y + self.width)) < @choice_window.width            # not enough room on the side, check to make sure there's room below            if (480 - self.y - self.height) < @choice_window.height              # not enough room below, place above              @choice_window.y = self.y - @choice_window.height            else              # draw below               @choice_window.y = self.y + self.height            end          else            # place on the left side            @choice_window.y = self.y            @choice_window.x = self.x + self.width          end        end      end    end        # If number input    if $game_temp.num_input_variable_id > 0      if @input_number_window == nil        digits_max = $game_temp.num_input_digits_max        number = $game_variables[$game_temp.num_input_variable_id]        @input_number_window = Window_InputNumber.new(digits_max)        @input_number_window.number = number      end      # determine x and y coords for number input window      if $game_system.choice_justification == LEFT        @input_number_window.x = self.x      else        @input_number_window.x = self.x + self.width - @input_number_window.width      end      if $game_system.choice_position == ABOVE        # check to make sure there is enough room above the textbox        if self.y < @input_number_window.height          # not enough room above, place below          @input_number_window.y = self.y + self.height        else          # draw above          @input_number_window.y = self.y - @choice_window.height        end      elsif $game_system.choice_position == BOTTOM        # check to make sure there is enough room below the textbox        if (480 - self.y - self.height) < @input_number_window.height          # not enough room below, place above          @input_number_window.y = self.y - @input_number_window.height        else          # draw below           @input_number_window.y = self.y + self.height        end      else # side        if $game_system.choice_justification == LEFT          # check to make sure there's room on the left side          if self.y < @input_number_window.width            # not enough room on the side, check to make sure there's room below            if (480 - self.y - self.height) < @input_number_window.height              # not enough room below, place above              @input_number_window.y = self.y - @input_number_window.height            else              # draw below               @input_number_window.y = self.y + self.height            end          else            # place on the left side            @input_number_window.y = self.y            @input_number_window.x = self.x - @choice_window.width          end        else # right          # check to make sure there's room on the right side          if (680 - (self.y + self.width)) < @input_number_window.width            # not enough room on the side, check to make sure there's room below            if (480 - self.y - self.height) < @input_number_window.height              # not enough room below, place above              @input_number_window.y = self.y - @input_number_window.height            else              # draw below               @input_number_window.y = self.y + self.height            end          else            # place on the left side            @input_number_window.y = self.y            @input_number_window.x = self.x + self.width          end        end      end    end  end  #--------------------------------------------------------------------------  # * Frame Update  #--------------------------------------------------------------------------  def update    super        if (@contents_showing and $game_system.message_event != -1 and $game_system.shake == 0) or $game_system.animated_faces      reset_window(false)    end        if $game_system.shake != 0  # shake the window      if @ascending        if @target_x != self.x          self.x += 1        else          @ascending = false          @target_x = self.x - ($game_system.shake * 2)        end      else         if @target_x != self.x          self.x -= 1        else          @ascending = true          @target_x = self.x + ($game_system.shake * 2)        end      end    end        @name_window.update        if @wait > 0      @wait -= 1      if @wait == 0        terminate_message        return      end    end        # If fade in    if @fade_in      if $game_temp.message_text == ""        @fade_in = false        return      end      self.contents_opacity += 24      if $game_system.face_graphic != ""        @face.opacity += 24      end      if $game_system.comic_enabled and $game_system.message_event != -1        @comic.opacity = self.opacity        @comic.visible = self.visible      end            if $game_system.name != ""        @name_window.visible = true        if $game_system.name_window          @name_window.dummy_window.visible = true        end      end      if @input_number_window != nil        @input_number_window.contents_opacity += 24      end      if self.contents_opacity == 255        @fade_in = false      end      return    end        # write the text    if @text != nil and @text != ""      speed = $game_system.write_speed      if $game_system.text_mode == ALL_AT_ONCE or $game_temp.in_battle        while (c = @text.slice!(/./m)) != nil          write_char(c)        end        $game_system.slave_windows.each_value { |window| window.write_all }        return      end      if $game_system.text_skip        if $game_system.skip_mode == WRITE_FASTER and Input.press?(Input::C)          # the player is holding the action button, write faster          speed /= 3        elsif $game_system.skip_mode == WRITE_ALL and Input.trigger?(Input::C)          # the player pressed the action button, write all the text          while (c = @text.slice!(/./m)) != nil            write_char(c)          end          $game_system.slave_windows.each_value { |window| window.write_all }          return        end      end      while @ignore        c = @text.slice!(/./m)        if c != nil          write_char(c)        end      end      if @pause_time > 0        @pause_time -= 1        return      end      if Graphics.frame_count - @count >= speed        if $game_system.sound_effect != ""          Audio.se_play("Audio/SE/" + $game_system.sound_effect, 80, 100)        end        @count = Graphics.frame_count        c = @text.slice!(/./m)        if c != nil          write_char(c)        end      end      return    end        if $game_system.animated_faces and $game_system.resting_face != ""      @done = true    end        # If inputting number    if @input_number_window != nil      @input_number_window.update      # Confirm      if Input.trigger?(Input::C)        $game_system.se_play($data_system.decision_se)        $game_variables[$game_temp.num_input_variable_id] =          @input_number_window.number        $game_map.need_refresh = true        # Dispose of number input window        @input_number_window.dispose        @input_number_window = nil        terminate_message      end      return    end        if @wait != 0      return    end        # If message is being displayed and contents are all written    if @contents_showing      # if choice      if $game_temp.choice_max > 0        if !@choice_window.active          @choice_window.visible = true          @choice_window.active = true          @choice_window.index = 0        end        @choice_window.update      else        # If choice isn't being displayed, show pause sign        self.pause = $game_system.show_pause      end        # Cancel        if Input.trigger?(Input::          if $game_temp.choice_max > 0 and $game_temp.choice_cancel_type > 0            $game_system.se_play($data_system.cancel_se)            $game_temp.choice_proc.call($game_temp.choice_cancel_type - 1)            terminate_message          end        end        # Confirm        if Input.trigger?(Input::C) and !(@wait > 0)          @done = true          $game_system.slave_windows.each_value { |window|             window.write_all             if !window.done              @done = false            end          }          if @done            if $game_temp.choice_max > 0              $game_system.se_play($data_system.decision_se)              $game_temp.choice_proc.call(@choice_window.index)            end            terminate_message          else            @finishing_up = true          end        end        return      end          if @finishing_up      $game_system.slave_windows.each_value { |window|         if !window.done          @done = true          break        end      }            if @done = false        terminate_message      end    end    # If display wait message or choice exists when not fading out    if @fade_out == false and $game_temp.message_text != nil      @contents_showing = true      $game_temp.message_window_showing = true            reset_window      refresh      Graphics.frame_reset      if @show        self.visible = true      end      self.contents_opacity = 0      if @input_number_window != nil        @input_number_window.contents_opacity = 0      end      @fade_in = true      return    end    # If message which should be displayed is not shown, but window is visible    if self.visible      @fade_out = true      self.opacity -= 48      @name_window.opacity -= 48      @comic.opacity -= 48      @face.opacity -= 48      if self.opacity == 0        self.visible = false        @face.opacity = 0        @choice_window.visible = false        @choice_window.active = false        @comic.opacity = 0        @name_window.visible = false        @name_window.dummy_window.visible = false        @name_window.update        @fade_out = false        $game_temp.message_window_showing = false      end      return    end        if $game_temp.battle_calling or $game_temp.shop_calling or $game_temp.name_calling or $game_temp.menu_calling or $game_temp.save_calling or $game_temp.debug_calling              $game_system.indy_windows.each_pair {|name, window|           if window.show == true            window.dispose            $game_system.indy_windows.delete(name)          end        }    end  end    #--------------------------------------------------------------------------  # * Process and write the given character  #--------------------------------------------------------------------------  def write_char(c)    if c == "\000"      # Return to original text      c = "\\"    end    # If \C[n]    if c == "\001"    # Change text color      @text.sub!(/\[([0-9]+)\]/, "")      color = $1.to_i      if color >= 0 and color <= 7        self.contents.font.color = text_color(color)      end      # go to next text      return    end    # If \G    if c == "\002"      # Make gold window      if @gold_window == nil        @gold_window = Window_Gold.new        @gold_window.x = 560 - @gold_window.width        if $game_temp.in_battle          @gold_window.y = 192        else          @gold_window.y = self.y >= 128 ? 32 : 384        end        @gold_window.opacity = self.opacity        @gold_window.back_opacity = self.back_opacity      end      # go to next text      return    end    # If \skip    if c == "\003"      # toggle text skipping      $game_system.text_skip = !$game_system.text_skip      # go to next text      return    end    # If \b    if c == "\004"      # toggle bold      self.contents.font.bold = !self.contents.font.bold      # go to next text      return    end    # If \i    if c == "\005"      # toggle italics      self.contents.font.italic = !self.contents.font.italic      # go to next text      return    end    # If \s    if c == "\006"      # toggle shadow      $game_system.shadowed_text = !$game_system.shadowed_text      # go to next text      return    end    # If \font    if c == "\007"      # change font      @text.sub!(/\[(.*?)\]/, "")      font = $1.to_s      $game_system.font = font      if font == ""        self.contents.font.name = Font.default_name      else        self.contents.font.name = font      end      # go to next text      return    end    # If \p[n]    if c == "\010"      @text.sub!(/\[([0-9]+)\]/, "")      @pause_time = $1.to_i      # go to next text      return    end        # If \w[n]    if c == "\011"      @text.sub!(/\[([0-9]+)\]/, "")      @wait = $1.to_i      # go to next text      return    end        # If \ws[n]    if c == "\013"      @text.sub!(/\[([0-9]+)\]/, "")      $game_system.write_speed = $1.to_i      # go to next text      return    end     # If \oa[n]    if c == "\014"      @text.sub!(/\[([0-9]+)\]/, "")      index = $1.to_i      @text.sub!("  ", "")      item = $data_armors[index]      # draw the icon      icon = RPG::Cache.icon(item.icon_name)      self.contents.blt(@x + 2, (@y * 32) + 4, icon, Rect.new(0, 0, 24, 24))      @x += 24      # go to next text      return    end        # If \oi[n]    if c == "\015"      @text.sub!(/\[([0-9]+)\]/, "")      index = $1.to_i      @text.sub!("  ", "")      item = $data_items[index]      # draw the icon      icon = RPG::Cache.icon(item.icon_name)      self.contents.blt(@x + 2, (@y * 32) + 4, icon, Rect.new(0, 0, 24, 24))      @x += 24      # go to next text      return    end        # If \os[n]    if c == "\016"      @text.sub!(/\[([0-9]+)\]/, "")      index = $1.to_i      @text.sub!("  ", "")      item = $data_skills[index]      # draw the icon      icon = RPG::Cache.icon(item.icon_name)      self.contents.blt(@x + 2, (@y * 32) + 4, icon, Rect.new(0, 0, 24, 24))      @x += 24      # go to next text      return    end        # If \ow[n]    if c == "\017"      @text.sub!(/\[([0-9]+)\]/, "")      index = $1.to_i      @text.sub!("  ", "")      item = $data_weapons[index]      # draw the icon      icon = RPG::Cache.icon(item.icon_name)      self.contents.blt(@x + 2, (@y * 32) + 4, icon, Rect.new(0, 0, 24, 24))      @x += 24            # go to next text      return    end        # If \tc    if c == "\020"      # center justify      $game_system.text_justification = CENTER      get_x_value      # go to next text      return    end        # If \tl    if c == "\021"      # left justify      $game_system.text_justification = LEFT      get_x_value      # go to next text      return    end        # If \tr    if c == "\022"      # right justify      $game_system.text_justification = RIGHT      get_x_value      # go to next text      return    end        # If \ignr    if c == "\023"      # set ignore flage      @ignore = true      # go to next text      return    end        # if \slv    if c == "\024"      # we need to show a slave window      @text.sub!(/\[(.*?)\]/, "")      name = $1.to_s      $game_system.slave_windows[name].show = true      return    end        # if \ind    if c == "\025"      # we need to show a independent window      @text.sub!(/\[(.*?)\]/, "")      name = $1.to_s      if $game_system.indy_windows[name].show        $game_system.indy_windows[name].dispose        $game_system.indy_windows.delete(name)      else        $game_system.indy_windows[name].show = true      end      return    end        # if \c (hex color)    if c == "\026"      # convert hex color to RGB      @text.sub!(/\[([0123456789abcdef]+)\]/, "")      hex_code = $1.to_s           red   = ("0x" + hex_code.slice(0..1)).hex      blue  = ("0x" + hex_code.slice(2..3)).hex      green = ("0x" + hex_code.slice(4..5)).hex            self.contents.font.color = Color.new(red, blue, green)      return    end        # If new line text    if c == "\n"      # Add 1 to y      if !@ignore        @y += 1      end      if @text != ""        get_x_value      end      @ignore = false      # go to next text      return    end    if @ignore      return    end    # Draw text    line = self.contents.text_size("j").height    if $game_system.shadowed_text      old_color = self.contents.font.color.clone      self.contents.font.color = $game_system.shadow_color           self.contents.draw_text(6 + @x, line * @y + 2, 40, 32, c)      self.contents.font.color = old_color    end    self.contents.draw_text(4 + @x, line * @y, 40, 32, c)    # Add x to drawn text width    @x += self.contents.text_size(c).width  end    def get_x_value    # text justification - offset for first line    if $game_system.text_justification == CENTER      # get the length of the current line      w = self.contents.text_size(@text.split("\n")[0]).width      @x = (self.width - w - 48) / 2    elsif $game_system.text_justification == RIGHT      # get the length of the current line      w = self.contents.text_size(@text.split("\n")[0]).width      @x = self.width - w - 48    else # left      if $game_system.face_graphic == ""        @x = 0      else        @x = @face_offset      end    end  end    end#==============================================================================# ** Window_Choice#------------------------------------------------------------------------------#  This message window is used to display choices.#==============================================================================class Window_Choice < Window_Selectable  def initialize (choices)    super(0, 0, 32, choices.size * 32)    self.visible = false    self.active = false    self.z = 9999    @index = 0    @item_max = choices.size    @choices = choices    self.contents = Bitmap.new(32, 32)  end    def refresh    # determine necessary width    width = 64    for line in @choices      width = [width, (self.contents.text_size(line).width + 48)].max    end    self.width = width    self.height = @choices.size * 32 + 32    self.contents = Bitmap.new(width - 32, height - 32)    if $game_system.font_color.nil?      self.contents.font.color = normal_color    else      self.contents.font.color = $game_system.font_color    end    if $game_system.windowskin != ""        self.windowskin = RPG::Cache.windowskin($game_system.windowskin)    else      self.windowskin = RPG::Cache.windowskin($data_system.windowskin_name)    end        # draw choices    y = 0    for line in @choices      # Draw text      if $game_system.shadowed_text        old_color = self.contents.font.color.clone        self.contents.font.color = $game_system.shadow_color        self.contents.draw_text(6, 32 * y + 2, width, 32, line)        self.contents.font.color = old_color      end      self.contents.draw_text(4, y * 32, width, 32, line)       y += 1    end  end        def set_choices(choices)    @choices = choices    @item_max = @choices.size    for choice in @choices      choice.gsub!(/\\[Vv]\[([0-9]+)\]/) { $game_variables[$1.to_i] }      choice.gsub!(/\\[Nn]\[([0-9]+)\]/) {         $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""      }    end    refresh  endend#==============================================================================# ** Window_Name#------------------------------------------------------------------------------#  This window is used to display names above the message window.  Uncomment#   and modify the various sections to customize.#==============================================================================class Window_Name < Window_Base  attr_accessor :dummy_window    def initialize    super(0, 0, 32, 64)    self.contents = Bitmap.new(32, 32)    self.opacity = 0        @dummy_window = Window_Dummy.new        self.visible = false  end    def set_name(name)    @name = name    refresh  end    def refresh    if @name == nil      return    end    self.width = self.contents.text_size(@name).width + 48    self.contents = Bitmap.new(width - 32, height - 32)        if $game_system.name_window      @dummy_window.x = self.x      @dummy_window.y = self.y + 12      @dummy_window.set(height - 24, width - 12)    end        # uncomment this and change the font to give the name window a fancy font    #self.contents.font.name = "Ariel"    self.contents.font.color = Color.new(0, 0, 0, 255)    self.contents.draw_text(0, 0, self.width, 32, @name)    self.contents.draw_text(0, 2, self.width, 32, @name)    self.contents.draw_text(2, 0, self.width, 32, @name)    self.contents.draw_text(2, 2, self.width, 32, @name)    # change the color to give the name window a seperate color    self.contents.font.color = normal_color    self.contents.draw_text(1, 1, self.width, 32, @name)  end    def update    super    if $game_system.name_window      @dummy_window.x = self.x      @dummy_window.y = self.y + 12      @dummy_window.update    end  end    def dispose    @dummy_window.dispose    super  endendclass Window_Dummy < Window_Base  def initialize    super(0, 0, 32, 64)    self.z = 9999    self.visible = false  end    def set(height, width)    self.height = height    self.width = width  end    def update    super    if $game_system.windowskin != ""        self.windowskin = RPG::Cache.windowskin($game_system.windowskin)    else      self.windowskin = RPG::Cache.windowskin($data_system.windowskin_name)    end  endend#==============================================================================# ** Window_Slave#------------------------------------------------------------------------------#  These are slave windows to the main message window.  They will close when #   the user terminates them.  Initial settings are identical to the main #   message window, with one exception.  When in normal mode, it will apear#   above if the main message is below, below if it is above or centered.  Use#   message codes to change the settings for this window.#==============================================================================class Window_Slave < Window_Base  attr_accessor :show  attr_reader :done    def write_all    @write_all = true  end    #--------------------------------------------------------------------------  # * Object Initialization  #--------------------------------------------------------------------------  def initialize (text)    super(0, 0, 33, 33)    @text = text        # x-coordinate depends on justification    if @justification == RIGHT      self.x = 640 - self.width    elsif @justification == LEFT      self.x = 0    else # center      self.x = (640 - self.width) / 2    end    # y-coordinate depends on height    self.y = 480 - $game_system.window_height - 16    self.contents = Bitmap.new(width - 32, height - 32)    self.visible = false    self.z = 9998    @fade_in = false    @fade_out = false    @contents_showing = false        # face graphic sprite    @face = Sprite.new    @face.opacity = 0    @face.z = self.z + 1    @face_offset = 0        # choice window    @choice_window = Window_Choice.new([])    @choice_window.back_opacity = $game_system.back_opacity        @comic_style = $game_system.comic_style    @name = $game_system.name        # comic sprite    @comic = Sprite.new    @comic.opacity = 0    @comic.z = self.z + 1    if @comic_style == TALK1      @comic.bitmap = RPG::Cache.windowskin("talk1")    elsif @comic_style == TALK2      @comic.bitmap = RPG::Cache.windowskin("talk2")    else # thought      @comic.bitmap = RPG::Cache.windowskin("thought")    end                @pause_time = 0    @wait = 0        @mode = $game_system.ums_mode    self.height = $game_system.window_height    self.width = $game_system.window_width    @justification = $game_system.window_justification    @face_graphic = $game_system.face_graphic    @face_graphic_justification = $game_system.face_graphic_justification    @message_event = $game_system.message_event    if $game_system.message_position == 2 # down      @message_position = 0    else      @message_postion = 2    end    @face_graphic_position = $game_system.face_graphic_position    if $game_system.font == ""      @font = Font.default_name    else      @font = $game_system.font    end    @text_justification = $game_system.text_justification        @shake = $game_system.shake        @face_frame = 0        refresh  end  #--------------------------------------------------------------------------  # * Dispose  #--------------------------------------------------------------------------  def dispose    terminate_message    $game_temp.message_window_showing = false    if @input_number_window != nil      @input_number_window.dispose    end    @face.dispose    @choice_window.dispose    @comic.dispose    if @name_window != nil      @name_window.dispose    end    super  end  #--------------------------------------------------------------------------  # * Terminate Message  #--------------------------------------------------------------------------  def terminate_message    self.active = false    self.pause = false    self.contents.clear    # Clear showing flag    @contents_showing = false    # Call message callback    if $game_temp.message_proc != nil      $game_temp.message_proc.call    end    # Clear variables related to text, choices, and number input    $game_temp.message_text = nil    $game_temp.message_proc = nil    $game_temp.choice_start = 99    $game_temp.choice_max = 0    $game_temp.choice_cancel_type = 0    $game_temp.choice_proc = nil    $game_temp.num_input_start = 99    $game_temp.num_input_variable_id = 0    $game_temp.num_input_digits_max = 0    # Open gold window    if @gold_window != nil      @gold_window.dispose      @gold_window = nil    end    @choice_window.visible = false    @choice_window.active = false    @comic.opacity = 0  end  #--------------------------------------------------------------------------  # * Refresh  #--------------------------------------------------------------------------  def refresh        self.contents.clear    if $game_system.font_color.nil?      self.contents.font.color = normal_color    else      self.contents.font.color = $game_system.font_color    end    if $game_system.windowskin != ""        self.windowskin = RPG::Cache.windowskin($game_system.windowskin)    else      self.windowskin = RPG::Cache.windowskin($data_system.windowskin_name)    end    @x = @y = 0    # If waiting for a message to be displayed    if @text != nil      # replace shortcuts with original code      $game_system.shortcuts.each { |shortcut, code|        @text.gsub!(shortcut, code)      }            # Control text processing      begin        last_text = @text.clone        @text.gsub!(/\\[Vv]\[([0-9]+)\]/) { $game_variables[$1.to_i] }      end until @text == last_text      @text.gsub!(/\\[Nn]\[([0-9]+)\]/) do        $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""      end            # window mode      if @text.index(/\\[Mm]/) != nil        if $game_system.ums_mode == NORMAL_MODE          @mode = FIT_WINDOW_TO_TEXT        else          @mode = NORMAL_MODE        end        @text.gsub!(/\\[Mm]/) { "" }      end            # window height      @text.gsub!(/\\[Hh][Ee][Ii][Gg][Hh][Tt]\[([0-9]+)\]/) do        self.height = $1.to_i        ""      end            # window width      @text.gsub!(/\\[Ww][Ii][Dd][Tt][Hh]\[([0-9]+)\]/) do        self.width = $1.to_i        ""      end            # justification      @text.gsub!(/\\[Jj][Rr]/) do        @justification = RIGHT        reset_window        ""      end      @text.gsub!(/\\[Jj][Cc]/) do        @justification = CENTER        reset_window        ""      end            @text.gsub!(/\\[Jj][Ll]/) do        @justification = LEFT        reset_window        ""      end            # face graphics      @text.gsub!(/\\[Ff][Aa][Cc][Ee]\[(.*?)\]/) do        @face_graphic = $1.to_s        if $1.to_s == ""          @face.opacity = 0        end        ""      end      @text.gsub!(/\\[Ff][Ll]/) do        @face_graphic_justification = LEFT        ""      end      @text.gsub!(/\\[Ff][Rr]/) do        @face_graphic_justification = RIGHT        ""      end            # event centering      @text.gsub!(/\\[Ee]\[([0-9]+)\]/) do        @message_event = $1.to_i        ""      end            # comic thingy      @text.gsub!(/\\[Tt]1/) do        @comic_style = TALK1        @comic.bitmap = RPG::Cache.windowskin("talk1.png")        ""      end      @text.gsub!(/\\[Tt]2/) do        @comic_style = TALK2        @comic.bitmap = RPG::Cache.windowskin("talk2.png")        ""      end      @text.gsub!(/\\[Tt][Hh]/) do        @comic_style = THOUGHT        @comic.bitmap = RPG::Cache.windowskin("thought.png")        ""      end            # name window      @text.gsub!(/\\[Nn][Mm]\[(.*?)\]/) do        @name = $1.to_s        if $1.to_s == "" and @name_window != nil          @name_window.visible = false        end        ""      end      if @name != ""        # name window        @name_window = Window_Name.new        @name_window.z = self.z + 1        @name_window.set_name(@name)      end            # shaking      @text.gsub!(/\\[Ss][Hh][Kk]\[([0-9]+)\]/) do        @shake = $1.to_i        ""      end            # back opacity      @text.gsub!(/\\[Bb][Oo][Pp][Cc]\[([0-9]+)\]/) do        self.back_opacity = $1.to_i        ""      end            # opacity      @text.gsub!(/\\[Oo][Pp][Cc]\[([0-9]+)\]/) do        self.opacity = $1.to_i        ""      end            # Change "\\\\" to "\000" for convenience      @text.gsub!(/\\\\/) { "\000" }      # Change "\\C" to "\001" and "\\G" to "\002"      @text.gsub!(/\\[Cc]\[([0-9]+)\]/) { "\001[#{$1}]" }      @text.gsub!(/\\[Gg]/) { "\002" }      @text.gsub!(/\\[Cc]\[0x([0123456789abcdef]+)\]/) { "\026[#{$1}]" }            # text skip code      @text.gsub!(/\\[Ss][Kk][Ii][Pp]/) { "\003" }            # ignore code      @text.gsub!(/\\[Ii][Gg][Nn][Rr]/) { "\023" }            # bold and italics      @text.gsub!(/\\[Bb]/) { "\004" }      @text.gsub!(/\\[Ii]/) { "\005" }            # shadow      @text.gsub!(/\\[Ss]/) { "\006" }            # font      @text.gsub!(/\\[Ff][Oo][Nn][Tt]\[(.*?)\]/) { "\007[#{$1}]" }            # pause and wait      @text.gsub!(/\\[Pp]\[([0-9]+)\]/) { "\010[#{$1}]" }      @text.gsub!(/\\[Ww]\[([0-9]+)\]/) { "\011[#{$1}]" }            # write speed      @text.gsub!(/\\[Ww][Ss]\[([0-9]+)\]/) { "\013[#{$1}]" }                  # armor, items, skills, and weapons      @text.gsub!(/\\[Oo][Aa]\[([0-9]+)\]/) {         item = $data_armors[$1.to_i]        "\014[#{$1}]" + "  " + item.name      }      @text.gsub!(/\\[Oo][Ii]\[([0-9]+)\]/) {         item = $data_items[$1.to_i]        "\015[#{$1}]" + "  " + item.name      }      @text.gsub!(/\\[Oo][Ss]\[([0-9]+)\]/) {         item = $data_skills[$1.to_i]        "\016[#{$1}]" + "  " + item.name      }      @text.gsub!(/\\[Oo][Ww]\[([0-9]+)\]/) {         item = $data_weapons[$1.to_i]        "\017[#{$1}]" + "  " + item.name      }            # text justification      @text.gsub!(/\\[Tt][Cc]/) { "\020" }      @text.gsub!(/\\[Tt][Ll]/) { "\021" }      @text.gsub!(/\\[Tt][Rr]/) { "\022" }            # Resize the window to fit the contents?      if @mode == FIT_WINDOW_TO_TEXT        width = 1        text = @text.split("\n")        height = 0        i = 0        for line in text          # don't count this line's width if it has the ignr code          if !line.include?("\023")            width = [width, self.contents.text_size(line).width].max            delta = self.contents.text_size(line).height            height += delta + (6 * i) + 3            if i < 3              i += 1            end          end        end                if @face_graphic != "" and ($game_system.face_graphic_position == CENTER or $game_system.face_graphic_position == BOTTOM)          width += @face.bitmap.width          if height < @face.bitmap.height            height = @face.bitmap.height - 32          end        end                if height == 0          height = 1        end                 self.width = width + 48        self.height = height + 48        self.contents = Bitmap.new(width + 16, height)        if $game_system.font_color.nil?          self.contents.font.color = normal_color        else          self.contents.font.color = $game_system.font_color        end      else        if self.width != $game_system.window_height or self.height != $game_system.window_width          self.width = $game_system.window_width          self.height = $game_system.window_height          self.contents = Bitmap.new(self.width - 32, self.height - 32)          if $game_system.font_color.nil?            self.contents.font.color = normal_color          else            self.contents.font.color = $game_system.font_color          end        end      end            reset_window            get_x_value            @count = Graphics.frame_count      @pause_time = 0      @ignore = false      @done = false      @face_frame = 0    end                # If number input    if $game_temp.num_input_variable_id > 0      digits_max = $game_temp.num_input_digits_max      number = $game_variables[$game_temp.num_input_variable_id]      @input_number_window = Window_InputNumber.new(digits_max)      @input_number_window.number = number      @input_number_window.x = self.x + 8      @input_number_window.y = self.y + $game_temp.num_input_start * 32    end  end  #--------------------------------------------------------------------------  # * Set Window Position and Opacity Level  #--------------------------------------------------------------------------  def reset_window (change_opacity = true)    # x-coordinate depends on justification    if @message_event == -1      if @justification == RIGHT        self.x = 640 - self.width      elsif @justification == LEFT        self.x = 0      else # center        self.x = (640 - self.width) / 2      end    else      if @message_event == 0 or $game_map.events[@message_event] == nil        # center on player        event_x = $game_player.screen_x      else        # center on the event specified        event_x = $game_map.events[@message_event].screen_x      end      self.x = event_x - self.width / 2      @comic.x = self.x + (self.width / 2) + 4    end        if $game_temp.in_battle      self.y = 16    else      if @message_event == -1        case @message_position          when 0  # up            self.y = 16          when 1  # middle            self.y = (480 - self.height) / 2          when 2  # down            self.y = 480 - self.height - 24        end      else        if @message_event == 0 or $game_map.events[@message_event] == nil          # above player          self.y = $game_player.screen_y - self.height - 48        else          # above event specified          self.y = $game_map.events[@message_event].screen_y - self.height - 48        end        @comic.y = self.y + self.height - 2      end    end    if self.y < 0 + (@name == "" ? 0 : 16)      self.y = 0 + (@name == "" ? 0 : 16)    elsif self.y > 480 - self.height       self.y = 480 - self.height    end    if self.x < 0       self.x = 0    elsif self.x > 680 - self.width - 48      self.x = 640 - self.width    end        if change_opacity      if $game_system.message_frame == 0        self.opacity = 255      else        self.opacity = 0      end      self.back_opacity = $game_system.back_opacity    end        # face stuff      if @face_graphic != ""          # the player has chosen to show a face graphic        if @done and $game_system.resting_face != ""          @face.bitmap = RPG::Cache.picture(@face_graphic + $game_system.resting_face)          if @face_frame * $game_system.face_frame_width >= @face.bitmap.width            @face_frame = 0          end        else          @face.bitmap = RPG::Cache.picture(@face_graphic)        end                # picture y-coordinate        if @face_graphic_position == ABOVE          @face.y = self.y - @face.bitmap.height          @face_offset = 0        elsif @face_graphic_position == CENTER          delta = (@face.bitmap.height - self.height) / 2          @face.y = self.y - delta          if $game_system.animated_faces            @face_offset = $game_system.face_frame_width + 16          else            @face_offset = @face.bitmap.width + 16          end        elsif @face_graphic_position == BOTTOM           @face.y = self.y + self.height - @face.bitmap.height          if $game_system.animated_faces            @face_offset = $game_system.face_frame_width + 16          else            @face_offset = @face.bitmap.width + 16          end        else # side          delta = (@face.bitmap.height - self.height) / 2          @face.y = self.y - delta          @face_offset = 0        end                # picture x-coordinate        if @face_graphic_justification == LEFT          if @face_graphic_position == SIDE            @face.x = self.x - @face.bitmap.width          else            @face.x = self.x + 10          end        else          if $game_system.animated_faces            offset = @face.bitmap.width - $game_system.face_frame_width          else            offset = 0          end          if @face_graphic_position == SIDE            @face.x = self.x + self.width + offset          else            @face.x = self.x + self.width - @face.bitmap.width - 10 + offset            @face_offset = 0          end        end                if $game_system.animated_faces          @face.src_rect = Rect.new(@face_frame * $game_system.face_frame_width, 0, $game_system.face_frame_width, @face.bitmap.height)          if @done and $game_system.resting_face != ""            pause = $game_system.resting_animation_pause          else            pause = $game_system.animation_pause          end          if Graphics.frame_count % pause == 0            @animate_face = true          end          if @animate_face            if Graphics.frame_count % 3 == 0              @face_frame += 1              if @face_frame * $game_system.face_frame_width >= @face.bitmap.width                @face_frame = 0                @animate_face = false              end            end          end        end      end            # name window      if @name != "" and @name != nil        @name_window.set_name(@name)        @name_window.x = self.x        @name_window.y = self.y - 36      end            # If choice    if $game_temp.choice_max > 0      @choice_window.set_choices($game_temp.choices)      # determine x and y coords for choice window      if $game_system.choice_justification == LEFT        @choice_window.x = self.x      else        @choice_window.x = self.x + self.width - @choice_window.width      end      if $game_system.choice_position == ABOVE        # check to make sure there is enough room above the textbox        if self.y < @choice_window.height          # not enough room above, place below          @choice_window.y = self.y + self.height        else          # draw above          @choice_window.y = self.y - @choice_window.height        end      elsif $game_system.choice_position == BOTTOM        # check to make sure there is enough room below the textbox        if (480 - self.y - self.height) < @choice_window.height          # not enough room below, place above          @choice_window.y = self.y - @choice_window.height        else          # draw below           @choice_window.y = self.y + self.height        end      else # side        if $game_system.choice_justification == LEFT          # check to make sure there's room on the left side          if self.y < @choice_window.width            # not enough room on the side, check to make sure there's room below            if (480 - self.y - self.height) < @choice_window.height              # not enough room below, place above              @choice_window.y = self.y - @choice_window.height            else              # draw below               @choice_window.y = self.y + self.height            end          else            # place on the left side            @choice_window.y = self.y            @choice_window.x = self.x - @choice_window.width          end        else # right          # check to make sure there's room on the right side          if (680 - (self.y + self.width)) < @choice_window.width            # not enough room on the side, check to make sure there's room below            if (480 - self.y - self.height) < @choice_window.height              # not enough room below, place above              @choice_window.y = self.y - @choice_window.height            else              # draw below               @choice_window.y = self.y + self.height            end          else            # place on the left side            @choice_window.y = self.y            @choice_window.x = self.x + self.width          end        end      end    end  end  #--------------------------------------------------------------------------  # * Frame Update  #--------------------------------------------------------------------------  def update    super        if !@show      return    else      self.visible = true      if @face_graphic != ""        @face.opacity = 255      end      if $game_system.comic_enabled and @message_event != -1        @comic.opacity = 255      end      if @name != ""        @name_window.visible = true      end      if @input_number_window != nil        @input_number_window.contents_opacity = 255      end      reset_window    end            if (@contents_showing and $game_system.message_event != -1 and @shake == 0) or $game_system.animated_faces      reset_window(false)    end        if $game_system.shake != 0  # shake the window      if @ascending        if @target_x != self.x          self.x += 1        else          @ascending = false          @target_x = self.x - ($game_system.shake * 2)        end      else         if @target_x != self.x          self.x -= 1        else          @ascending = true          @target_x = self.x + ($game_system.shake * 2)        end      end    end        if @wait > 0      @wait -= 1      if @wait == 0        terminate_message        return      end    end        # If fade in    if @fade_in      self.contents_opacity += 24      if @face_graphic != ""        @face.opacity += 24      end      if $game_system.comic_enabled and @message_event != -1        @comic.opacity += 24      end      if @name != ""        @name_window.visible = true      end      if @input_number_window != nil        @input_number_window.contents_opacity += 24      end      if self.contents_opacity == 255        @fade_in = false      end      return    end        # write the text    if @text != nil and @text != ""      speed = $game_system.write_speed      if $game_system.text_skip        if $game_system.skip_mode == WRITE_FASTER and Input.press?(Input::C)          # the player is holding the action button, write faster          speed /= 3        elsif $game_system.skip_mode == WRITE_ALL and @write_all          # the player pressed the action button, write all the text          while (c = @text.slice!(/./m)) != nil            write_char(c)          end          return        end      end      while @ignore        c = @text.slice!(/./m)        if c != nil          write_char(c)        end      end      if @pause_time > 0        @pause_time -= 1        return      end      if Graphics.frame_count - @count >= speed        if $game_system.sound_effect != ""          Audio.se_play("Audio/SE/" + $game_system.sound_effect, 80, 100)        end        @count = Graphics.frame_count        c = @text.slice!(/./m)        if c != nil          write_char(c)        end      end      return    end        @done = true        # If inputting number    if @input_number_window != nil      @input_number_window.update      # Confirm      if Input.trigger?(Input::C)        $game_system.se_play($data_system.decision_se)        $game_variables[$game_temp.num_input_variable_id] =          @input_number_window.number        $game_map.need_refresh = true        # Dispose of number input window        @input_number_window.dispose        @input_number_window = nil        terminate_message      end      return    end        if @wait != 0      return    end        # If message is being displayed and contents are all written    if @contents_showing      # if choice      if $game_temp.choice_max > 0        if !@choice_window.active          @choice_window.visible = true          @choice_window.active = true          @choice_window.index = 0        end        @choice_window.update      else        # If choice isn't being displayed, show pause sign        self.pause = true      end      return    end  end    #--------------------------------------------------------------------------  # * Process and write the given character  #--------------------------------------------------------------------------  def write_char(c)    if c == "\000"      # Return to original text      c = "\\"    end    # If \C[n]    if c == "\001"    # Change text color      @text.sub!(/\[([0-9]+)\]/, "")      color = $1.to_i      if color >= 0 and color <= 7        self.contents.font.color = text_color(color)      end      # go to next text      return    end    # If \G    if c == "\002"      # Make gold window      if @gold_window == nil        @gold_window = Window_Gold.new        @gold_window.x = 560 - @gold_window.width        if $game_temp.in_battle          @gold_window.y = 192        else          @gold_window.y = self.y >= 128 ? 32 : 384        end        @gold_window.opacity = self.opacity        @gold_window.back_opacity = self.back_opacity      end      # go to next text      return    end    # If \skip    if c == "\003"      # toggle text skipping      #$game_system.text_skip = !$game_system.text_skip      # go to next text      return    end    # If \b    if c == "\004"      # toggle bold      self.contents.font.bold = !self.contents.font.bold      # go to next text      return    end    # If \i    if c == "\005"      # toggle italics      self.contents.font.italic = !self.contents.font.italic      # go to next text      return    end    # If \s    if c == "\006"      # toggle shadow      #$game_system.shadowed_text = !$game_system.shadowed_text      # go to next text      return    end    # If \font    if c == "\007"      # change font      @text.sub!(/\[(.*?)\]/, "")      font = $1.to_s      @font = font      if font == ""        self.contents.font.name = Font.default_name      else        self.contents.font.name = font      end      # go to next text      return    end    # If \p[n]    if c == "\010"      @text.sub!(/\[([0-9]+)\]/, "")      @pause_time = $1.to_i      # go to next text      return    end        # If \w[n]    if c == "\011"      @text.sub!(/\[([0-9]+)\]/, "")      @wait = $1.to_i      # go to next text      return    end        # If \ws[n]    if c == "\013"      @text.sub!(/\[([0-9]+)\]/, "")      $game_system.write_speed = $1.to_i      # go to next text      return    end     # If \oa[n]    if c == "\014"      @text.sub!(/\[([0-9]+)\]/, "")      index = $1.to_i      @text.sub!("  ", "")      item = $data_armors[index]      # draw the icon      icon = RPG::Cache.icon(item.icon_name)      self.contents.blt(@x + 2, (@y * 32) + 4, icon, Rect.new(0, 0, 24, 24))      @x += 24      # go to next text      return    end        # If \oi[n]    if c == "\015"      @text.sub!(/\[([0-9]+)\]/, "")      index = $1.to_i      @text.sub!("  ", "")      item = $data_items[index]      # draw the icon      icon = RPG::Cache.icon(item.icon_name)      self.contents.blt(@x + 2, (@y * 32) + 4, icon, Rect.new(0, 0, 24, 24))      @x += 24      # go to next text      return    end        # If \os[n]    if c == "\016"      @text.sub!(/\[([0-9]+)\]/, "")      index = $1.to_i      @text.sub!("  ", "")      item = $data_skills[index]      # draw the icon      icon = RPG::Cache.icon(item.icon_name)      self.contents.blt(@x + 2, (@y * 32) + 4, icon, Rect.new(0, 0, 24, 24))      @x += 24      # go to next text      return    end        # If \ow[n]    if c == "\017"      @text.sub!(/\[([0-9]+)\]/, "")      index = $1.to_i      @text.sub!("  ", "")      item = $data_weapons[index]      # draw the icon      icon = RPG::Cache.icon(item.icon_name)      self.contents.blt(@x + 2, (@y * 32) + 4, icon, Rect.new(0, 0, 24, 24))      @x += 24            # go to next text      return    end        # If \tc    if c == "\020"      # center justify      @text_justification = CENTER      get_x_value      # go to next text      return    end        # If \tl    if c == "\021"      # left justify      @text_justification = LEFT      get_x_value      # go to next text      return    end        # If \tr    if c == "\022"      # right justify      @text_justification = RIGHT      get_x_value      # go to next text      return    end        # If \ignr    if c == "\023"      # set ignore flage      @ignore = true      # go to next text      return    end        # if \c (hex color)    if c == "\026"      # convert hex color to RGB      @text.sub!(/\[([0123456789abcdef]+)\]/, "")      hex_code = $1.to_s           red   = ("0x" + hex_code.slice(0..1)).hex      blue  = ("0x" + hex_code.slice(2..3)).hex      green = ("0x" + hex_code.slice(4..5)).hex            self.contents.font.color = Color.new(red, blue, green)      return    end        # If new line text    if c == "\n"      # Add 1 to y      if !@ignore        @y += 1      end      if @text != ""        get_x_value      end      @ignore = false      # go to next text      return    end    if @ignore      return    end    # Draw text    line = self.contents.text_size("dj").height    if $game_system.shadowed_text      old_color = self.contents.font.color.clone      self.contents.font.color = $game_system.shadow_color      self.contents.draw_text(6 + @x, line * @y + 2, 40, 32, c)      self.contents.font.color = old_color    end    self.contents.draw_text(4 + @x, line * @y, 40, 32, c)    # Add x to drawn text width    @x += self.contents.text_size(c).width  end    def get_x_value    # text justification - offset for first line    if @text_justification == CENTER      # get the length of the current line      w = self.contents.text_size(@text.split("\n")[0]).width      @x = (self.width - w - 48) / 2    elsif @text_justification == RIGHT      # get the length of the current line      w = self.contents.text_size(@text.split("\n")[0]).width      @x = self.width - w - 48    else # left      if @face_graphic == ""        @x = 0      else        @x = @face_offset      end    end  endend#==============================================================================# ** Window_InputNumber#------------------------------------------------------------------------------#  This window is for inputting numbers, and is used within the#  message window.#==============================================================================class Window_InputNumber < Window_Base  #--------------------------------------------------------------------------  # * Object Initialization  #     digits_max : digit count  #--------------------------------------------------------------------------  def initialize(digits_max)    @digits_max = digits_max    @number = 0    # Calculate cursor width from number width (0-9 equal width and postulate)    dummy_bitmap = Bitmap.new(32, 32)    @cursor_width = dummy_bitmap.text_size("0").width + 8    dummy_bitmap.dispose    super(0, 0, @cursor_width * @digits_max + 32, 64)    self.contents = Bitmap.new(width - 32, height - 32)    self.z += 9999    self.opacity = $game_system.opacity    self.back_opacity = $game_system.back_opacity    @index = 0    refresh    update_cursor_rect  end    #--------------------------------------------------------------------------  # * Refresh  #--------------------------------------------------------------------------  def refresh    self.contents.clear    if $game_system.font_color.nil?      self.contents.font.color = normal_color    else      self.contents.font.color = $game_system.font_color    end    if $game_system.windowskin != ""        self.windowskin = RPG::Cache.windowskin($game_system.windowskin)    else      self.windowskin = RPG::Cache.windowskin($data_system.windowskin_name)    end    s = sprintf("%0*d", @digits_max, @number)    for i in 0...@digits_max      # Draw text      if $game_system.shadowed_text        old_color = self.contents.font.color.clone        self.contents.font.color = $game_system.shadow_color        self.contents.draw_text(i * @cursor_width + 6, 2, 32, 32, s[i,1])        self.contents.font.color = old_color      end      self.contents.draw_text(i * @cursor_width + 4, 0, 32, 32, s[i,1])    end  endend

Latest Threads

Latest Posts

Latest Profile Posts

Our latest feature is an interview with... me?!

People4_2 (Capelet off and on) added!

Just beat the last of us 2 last night and starting jedi: fallen order right now, both use unreal engine & when I say i knew 80% of jedi's buttons right away because they were the same buttons as TLOU2 its ridiculous, even the same narrow hallway crawl and barely-made-it jump they do. Unreal Engine is just big budget RPG Maker the way they make games nearly identical at its core lol.
Can someone recommend some fun story-heavy RPGs to me? Coming up with good gameplay is a nightmare! I was thinking of making some gameplay platforming-based, but that doesn't work well in RPG form*. I also was thinking of removing battles, but that would be too much like OneShot. I don't even know how to make good puzzles!
one bad plugin combo later and one of my followers is moonwalking off the screen on his own... I didn't even more yet on the new map lol.

Forum statistics

Threads
106,035
Messages
1,018,450
Members
137,820
Latest member
georg09byron
Top