Envision, Create, Share

Welcome to HBGames, a leading amateur game development forum and Discord server. All are welcome, and amongst our ranks you will find experts in their field from all aspects of video game design and development.

Icons in the message box and letter by letter

Jason

Awesome Bro

Okay, so what I'm wanting now, is the ability to add icons into the message box, I know Dubealex has his UMS which does this, along with something else I'd like, which is a letter by letter function.

Here's his script for reference:
Code:
 

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

#  ¦ AMS - Advanced Message Script - R4 [Update #2]

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

# For more infos and update, visit:

# [url=http://www.creationasylum.net]http://www.creationasylum.net[/url] (Creation Asylum)

#

# Edited, Fixed and Enhanced by: Dubealex

# Original Script Core by: XRXS Scripter (Jap Dudes)

# HTML Hexadecimal color feature from: Phylomorphis

#

# Special Thanks:

# Rabu: For enabling the Show Face feature in an encrypted project

# LegacyX: For adding Extra Features

#

# To found all my new features, search the following:   #NEW

# To configure the button to skip the dialog, search:   #SKIP_TEXT_CODE

#

#    Edited by FF12_master :To find Edits Search for ++Edit

#   -Edits-

#

#   -Shortened face and name box short cut-

#  

#   \f[i] face shortcut, were i is the file name

#   \n[i] name box, were i is the decided name.

#

#   \oa[i]         - display the icon and name of armor i

#   \oi[i]         - display the icon and name of item i

#   \os[i]         - display the icon and name of skill i

#   \ow[i]         - display the icon and name of weapon i

#

# For any extra features to be added for Personalised Games Please PM LegacyX

#

# 24th Febuary 2009

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

 

LETTER_BY_LETTER_MODE = true    #Set the letter by letter mode ON/OFF

 

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

# ? CLASS AMS Begins

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

class AMS

 

attr_accessor :name_box_x_offset

attr_accessor :name_box_y_offset

attr_accessor :font_type

attr_accessor :name_font_type

attr_accessor :font_size

attr_accessor :name_font_size

attr_accessor :message_box_opacity

attr_accessor :name_box_skin

attr_accessor :name_box_text_color

attr_accessor :message_box_text_color

attr_accessor :message_box_skin

attr_accessor :name_box_width

attr_accessor :name_box_height

attr_accessor :message_width

attr_accessor :message_height

attr_accessor :message_x

attr_accessor :message_y_bottom

attr_accessor :message_y_middle

attr_accessor :message_y_top

attr_accessor :event_message_x_ofset

attr_accessor :event_message_y_ofset

 

def initialize

 

 

@name_box_x_offset = 0          #Choose the X axis offset of the name bos. default= 0

@name_box_y_offset = -10       #Choose the Y axis offset of the name bos. default= -10

@name_box_width = 8               #Choose the width of the Name Box. default= 8  

@name_box_height = 26            #Choose the height of the Name Box. default= 26

 

@font_type = "Tahoma"            #Choose the Font Name (Case Sensitive) for message box

@name_font_type = "Tahoma"    #Choose the Font Name (Case Sensitive) for Name Box

@font_size = 21                     #Choose the default Font Size for message box text

@name_font_size = 21             #Choose the deafault Font Size for Name Box text

@name_box_text_color=0          #Choose the Text Color of the Name Box

@message_box_text_color=0      #Choose the Text Color of the Message Box

 

@message_box_opacity = 240      #Choose the opacity of the message window. Default=160

@message_box_skin = "Black3"   #Choose the WindowSkin for the Message Box

@name_box_skin = "Black3"       #Choose the WindowSkin for the Name Box

 

@message_width = 440             #Choose the width size of the message box. Default=480

@message_height = 160            #Choose the height size of the message box. Default=160

@message_x = 80                     #Choose the X position of the message box. Default=80

@message_y_bottom = 310         #Choose the Y bottom position of the message box. Default=304

@message_y_middle = 160         #Choose the Y middle position of the message box. Default=160

@message_y_top = 16               #Choose the Y top position of the message box. Default=16

 

@event_message_x_ofset = 0      #Choose the X position offset of the event message. Default=0

@event_message_y_ofset = 48    #Choose the Y position offset of the event message. Default=48

 

end

end

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

# ? CLASS AMS Ends

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

 

 

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

# ? Class Window_Message Begins

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

class Window_Message < Window_Selectable  

 

alias xrxs9_initialize initialize

 

def initialize

 

@alex_skip = false

 

xrxs9_initialize

 

if $soundname_on_speak == nil then

  $soundname_on_speak = ""

end

 

$gaiji_file = "./Graphics/Gaiji/sample.png"

          

if FileTest.exist?($gaiji_file)

  @gaiji_cache = Bitmap.new($gaiji_file)

else

  @gaigi_cache = nil

end

@opacity_text_buf = Bitmap.new(32, 32)

end

 

 

#--------------------------------------------------------------------------

 

alias xrxs9_terminate_message terminate_message

 

def terminate_message

 

if @name_window_frame != nil

  @name_window_frame.dispose

  @name_window_frame = nil

end

 

if @name_window_text   != nil

  @name_window_text.dispose

  @name_window_text   = nil

end

xrxs9_terminate_message

end

 

#--------------------------------------------------------------------------

 

def refresh

 

self.contents.clear

self.contents.font.color = text_color($ams.message_box_text_color)

self.contents.font.name = $ams.font_type

self.contents.font.size = $ams.font_size

self.windowskin = RPG::Cache.windowskin($ams.message_box_skin)

@x = @y = @max_x = @max_y = @indent = @lines = 0

@face_indent = 0

@opacity = 255

@cursor_width = 0

@write_speed = 0

@write_wait = 0

@mid_stop = false

@face_file = nil

@popchar = -2

 

if $game_temp.choice_start == 0

  @x = 8

end

 

if $game_temp.message_text != nil

  @now_text = $game_temp.message_text

  if (/\A\\[Ff]\[(.+?)\]/.match(@now_text))!=nil then

       @face_file ="Faces/" + $1 + ".png"

       @x = @face_indent = 128

     if FileTest.exist?("Graphics/Pictures/" + $1 + ".png")

        self.contents.blt(16, 16, RPG::Cache.picture(@face_file), Rect.new(0, 0, 96, 96))

     end

     @now_text.gsub!(/\\[Ff]\[(.*?)\]/) { "" }

  end

 

  begin

  last_text = @now_text.clone

  @now_text.gsub!(/\\[Vv]\[([IiWwAaSs]?)([0-9]+)\]/) { convart_value($1, $2.to_i) }

  end until @now_text == last_text

  @now_text.gsub!(/\\[Nn]\[([0-9]+)\]/) do

     $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""

    end

 

  #NEW

  #Dubealex's Stop Skip Text ON-OFF

  @now_text.gsub!(/\\[%]/) { "\100" }

  #End new command

    

  #NEW

  #Dubealex's Show Monster Name Feature

    @now_text.gsub!(/\\[Mm]\[([0-9]+)\]/) do

    $data_enemies[$1.to_i] != nil ? $data_enemies[$1.to_i].name : ""

    end

    #End new command

    

  #NEW

  #Dubealex's Show Item Price Feature

    @now_text.gsub!(/\\[Pp]rice\[([0-9]+)\]/) do

    $data_items[$1.to_i] != nil ? $data_items[$1.to_i].price : ""

    end

    #End new command

    

  #NEW

  #Dubealex's Show Hero Class Name Feature

    @now_text.gsub!(/\\[Cc]lass\[([0-9]+)\]/) do

    $data_classes[$data_actors[$1.to_i].class_id] != nil ? $data_classes[$data_actors[$1.to_i].class_id].name : ""

    end

    #End new command

    

  #NEW

  #Dubealex's Show Current Map Name Feature

    @now_text.gsub!(/\\[Mm]ap/) do

    $game_map.name      != nil ? $game_map.name      : ""

    end

    #End new command

    

  #New

    

    #New

    #++Edit

    #Shows Icon and Weapon/Armour and Item name use \ow[i], \oa[i], \oi[i]

    # armor, items, skills, and weapons

        @now_text.gsub!(/\\[Oo][Aa]\[([0-9]+)\]/) {

           item = $data_armors[$1.to_i]

           "\014[#{$1}]" + "   " + item.name

        }

        @now_text.gsub!(/\\[Oo][Ii]\[([0-9]+)\]/) {

           item = $data_items[$1.to_i]

           "\015[#{$1}]" + "   " + item.name

        }

        @now_text.gsub!(/\\[Oo][Ss]\[([0-9]+)\]/) {

           item = $data_skills[$1.to_i]

           "\016[#{$1}]" + "   " + item.name

        }

        @now_text.gsub!(/\\[Oo][Ww]\[([0-9]+)\]/) {

           item = $data_weapons[$1.to_i]

           "\017[#{$1}]" + "   " + item.name

        }

    

  #NEW

  #Dubealex's Choose Name Box Text Color

    @now_text.gsub!(/\\[Zz]\[([0-9]+)\]/) do

    $ams.name_box_text_color=$1.to_i

    @now_text.sub!(/\\[Zz]\[([0-9]+)\]/) { "" }

    end

    #End new command

    

    

    

  name_window_set = false

  if (/\\[Nn]\[(.+?)\]/.match(@now_text)) != nil

     name_window_set = true

     name_text = $1

     @now_text.sub!(/\\[Nn]\[(.*?)\]/) { "" }

  end

 

  if (/\\[Pp]\[([-1,0-9]+)\]/.match(@now_text))!=nil then

     @popchar = $1.to_i

     if @popchar == -1

        @x = @indent = 48

        @y = 4

     end

     @now_text.gsub!(/\\[Pp]\[([-1,0-9]+)\]/) { "" }

  end

 

  @max_choice_x = 0

  if @popchar >= 0

     @text_save = @now_text.clone

     @max_x = 0

     @max_y = 4

     for i in 0..3

        line = @now_text.split(/\n/)[3-i]

        @max_y -= 1 if line == nil and @max_y <= 4-i

        next if line == nil

        line.gsub!(/\\\w\[(\w+)\]/) { "" }

        cx = contents.text_size(line).width

        @max_x = cx if cx > @max_x

        if i >= $game_temp.choice_start

           @max_choice_x = cx if cx > @max_choice_x

        end

     end

     self.width = @max_x + 32 + @face_indent

     self.height = (@max_y - 1) * 32 + 64

     @max_choice_x -= 68

     @max_choice_x -= @face_indent*216/128

  else

     @max_x = self.width - 32 - @face_indent

     for i in 0..3

        line = @now_text.split(/\n/)[i]

        next if line == nil

        line.gsub!(/\\\w\[(\w+)\]/) { "" }

        cx = contents.text_size(line).width

        if i >= $game_temp.choice_start

           @max_choice_x = cx if cx > @max_choice_x

        end

     end

     @max_choice_x += 8

  end

  @cursor_width = 0

  @now_text.gsub!(/\\\\/) { "\000" }

  @now_text.gsub!(/\\[Cc]\[([0123456789ABCDEF#]+)\]/) { "\001[#{$1}]" }

  @now_text.gsub!(/\\[Gg]/) { "\002" }

  @now_text.gsub!(/\\[Ss]\[([0-9]+)\]/) { "\003[#{$1}]" }

  @now_text.gsub!(/\\[Aa]\[(.*?)\]/) { "\004[#{$1}]" }

 

    #NEW

    #Dubealex's Permanent Color Change

    @now_text.gsub!(/\\[Cc]olor\[([0-9]+)\]/) do

       $ams.message_box_text_color= $1.to_i

     @now_text.sub!(/\\[Cc]\[([0-9]+)\]/) { "" }

       end

    #End of new command

    

    #NEW

    #Dubealex's Font Change Feature

     @now_text.gsub(/\\[Tt]\[(.*?)\]/) do

       buftxt = $1.to_s

       $ams.font_type = buftxt

       @now_text.sub!(/\\[Tt]\[(.*?)\]/) { "" }

       end

    #End of new command

    

  @now_text.gsub!(/\\[.]/) { "\005" }

  @now_text.gsub!(/\\[|]/) { "\006" }

  @now_text.gsub!(/\\[|]/) { "\014" }

  @now_text.gsub!(/\\[|]/) { "\015" }

  @now_text.gsub!(/\\[|]/) { "\016" }

  @now_text.gsub!(/\\[|]/) { "\017" }

  @now_text.gsub!(/\\[>]/) { "\019" }

  @now_text.gsub!(/\\[<]/) { "\031" }

  @now_text.gsub!(/\\[!]/) { "\020" }

  @now_text.gsub!(/\\[~]/) { "\021" }

  @now_text.gsub!(/\\[Ee]\[([0-9]+)\]/) { "\022[#{$1}]" }

  @now_text.gsub!(/\\[Ii]/) { "\023" }

  @now_text.gsub!(/\\[Oo]\[([0-9]+)\]/) { "\024[#{$1}]" }

  @now_text.gsub!(/\\[Hh]\[([0-9]+)\]/) { "\025[#{$1}]" }

  @now_text.gsub!(/\\[Bb]\[([0-9]+)\]/) { "\026[#{$1}]" }

  @now_text.gsub!(/\\[Rr]\[(.*?)\]/) { "\027[#{$1}]" }

 

  reset_window

 

  if name_window_set

     color=$ams.name_box_text_color

     off_x =   $ams.name_box_x_offset

     off_y =   $ams.name_box_y_offset

     space = 2

     x = self.x + off_x - space / 2

     y = self.y + off_y - space / 2

     w = self.contents.text_size(name_text).width + $ams.name_box_width + space

     h = $ams.name_box_height + space

     @name_window_frame = Window_Frame.new(x, y, w, h)

     @name_window_frame.z = self.z + 1

     x = self.x + off_x + 4

     y = self.y + off_y

     @name_window_text   = Air_Text.new(x, y, name_text, color)

     @name_window_text.z = self.z + 2

  end

end

 

reset_window

 

if $game_temp.choice_max > 0

  @item_max = $game_temp.choice_max

  self.active = true

  self.index = 0

end

 

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

 

#--------------------------------------------------------------------------

 

def update

 

super

 

 

    

if @fade_in

  self.contents_opacity += 24

  if @input_number_window != nil

     @input_number_window.contents_opacity += 24

  end

  if self.contents_opacity == 255

     @fade_in = false

  end

  return

end

@now_text = nil if @now_text == ""

 

if @now_text != nil and @mid_stop == false

  if @write_wait > 0

     @write_wait -= 1

     return

  end

  text_not_skip = LETTER_BY_LETTER_MODE

  while true

     @max_x = @x if @max_x < @x

     @max_y = @y if @max_y < @y

     if (c = @now_text.slice!(/./m)) != nil

        if c == "\000"

           c = "\\"

        end

      

        if c == "\001"

           @now_text.sub!(/\[([0123456789ABCDEF#]+)\]/, "")

           temp_color = $1

           color = temp_color.to_i

           leading_x = temp_color.to_s.slice!(/./m)

           if leading_x == "#"

              self.contents.font.color = hex_color(temp_color)

              next

           end

           if color >= 0 and color <= 7

              self.contents.font.color = text_color(color)

           end

           next

        end

 

        if c == "\002"

           if @gold_window == nil and @popchar <= 0

              @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

           c = ""

        end

 

        if c == "\003"

           @now_text.sub!(/\[([0-9]+)\]/, "")

           speed = $1.to_i

           if speed >= 0 and speed <= 19

              @write_speed = speed

           end

           c = ""

        end

 

        if c == "\004"

           @now_text.sub!(/\[(.*?)\]/, "")

           buftxt = $1.dup.to_s

           if buftxt.match(/\//) == nil and buftxt != "" then

              $soundname_on_speak = "Audio/SE/" + buftxt

           else

              $soundname_on_speak = buftxt.dup

           end

           c = ""

        elsif c == "\004"

           c = ""

        end

      

        if c == "\005"

           @write_wait += 5

           c = ""

        end

      

        if c == "\006"

           @write_wait += 20

           c = ""

        end

      

        if c == "\019"

           text_not_skip = false

           c = ""

        end

      

        if c == "\031"

           text_not_skip = true

           c = ""

        end

      

        if c == "\020"

           @mid_stop = true

           c = ""

        end

      

        if c == "\021"

           terminate_message

           return

        end

      

        if c == "\023"

           @indent = @x

           c = ""

        end

 

        if c == "\024"

           @now_text.sub!(/\[([0-9]+)\]/, "")

           @opacity = $1.to_i

           color = self.contents.font.color

           self.contents.font.name = $ams.font_type

           self.contents.font.size = $ams.font_size

           self.contents.font.color = Color.new(color.red, color.green, color.blue, color.alpha * @opacity / 255)

           c = ""

        end

 

        if c == "\025"

           @now_text.sub!(/\[([0-9]+)\]/, "")

           self.contents.font.size = [[$1.to_i, 6].max, 32].min

           c = ""

        end

 

        if c == "\026"

           @now_text.sub!(/\[([0-9]+)\]/, "")

           @x += $1.to_i

           c = ""

        end

      

        if c == "\027"

           @now_text.sub!(/\[(.*?)\]/, "")

           @x += ruby_draw_text(self.contents, @x, @y * line_height + (line_height - self.contents.font.size), $1, @opacity)

           if $soundname_on_speak != ""

              Audio.se_play($soundname_on_speak)

           end

        c = ""

        end

 

        if c == "\030"

           @now_text.sub!(/\[(.*?)\]/, "")

           self.contents.blt(@x , @y * line_height + 8, RPG::Cache.icon($1), Rect.new(0, 0, 24, 24))

           if $soundname_on_speak != ""

              Audio.se_play($soundname_on_speak)

           end

           @x += 24

           c = ""

        end

 

        if c == "\n"

           @lines += 1

           @y += 1

           @x = 0 + @indent + @face_indent

           if @lines >= $game_temp.choice_start

              @x = 8 + @indent + @face_indent

              @cursor_width = @max_choice_x

           end

           c = ""

        end

      

        if c == "\022"

           @now_text.sub!(/\[([0-9]+)\]/, "")

           @x += gaiji_draw(4 + @x, @y * line_height + (line_height - self.contents.font.size), $1.to_i)

           c = ""

        end

      

        #NEW

        #Dubealex's Text Skip On/OFF Command

          if c == "\100"

              if @alex_skip==false

                   @alex_skip=true

              else

                 @alex_skip=false

              end

             c = ""

          end  

          #end of new command

                                                    

        if c != ""

           self.contents.draw_text(0+@x, 32 * @y, 40, 32, c)

           @x += self.contents.text_size(c).width

           if $soundname_on_speak != "" then

              Audio.se_play($soundname_on_speak)

           end

        end

      

  #New

    #++Edit

    #Shows Icon and Weapon/Armour and Item name use \ow[i], \oa[i], \oi[i]

    

        # If \oa[n]

     if c == "\014"

        @now_text.sub!(/\[([0-9]+)\]/, "")

        index = $1.to_i

        @now_text.sub!("   ", " ")

        item = $data_armors[index]

        # draw the icon

        icon = RPG::Cache.icon(item.icon_name)

        line = self.contents.text_size("dj").height

        self.contents.blt(@x + 4, (@y * line) + 4, icon, Rect.new(0, 0, 24, 24))

        @x += 24

 

        # go to next text

        return

     end

     #++Edit

     # If \oi[n]

     if c == "\015"

        @now_text.sub!(/\[([0-9]+)\]/, "")

        index = $1.to_i

        @now_text.sub!("   ", " ")

        item = $data_items[index]

        # draw the icon

        icon = RPG::Cache.icon(item.icon_name)

        line = self.contents.text_size("dj").height

        self.contents.blt(@x + 4, (@y * line) + 4, icon, Rect.new(0, 0, 24, 24))

        @x += 24

 

        # go to next text

        return

     end

     #++Edit

     # If \os[n]

     if c == "\016"

        @now_text.sub!(/\[([0-9]+)\]/, "")

        index = $1.to_i

        @now_text.sub!("   ", " ")

        item = $data_skills[index]

        # draw the icon

        icon = RPG::Cache.icon(item.icon_name)

        line = self.contents.text_size("dj").height

        self.contents.blt(@x + 2, (@y * line) + 4, icon, Rect.new(0, 0, 24, 24))

        @x += 24

 

        # go to next text

        return

     end

     #++Edit

     # If \ow[n]

     if c == "\017"

        @now_text.sub!(/\[([0-9]+)\]/, "")

        index = $1.to_i

        @now_text.sub!("   ", " ")

        item = $data_weapons[index]

        # draw the icon

        icon = RPG::Cache.icon(item.icon_name)

        line = self.contents.text_size("dj").height

        self.contents.blt(@x + 2, (@y * line) + 4, icon, Rect.new(0, 0, 24, 24))

        @x += 24

      

        # go to next text

        return

     end

 

      

#SKIP_TEXT_CODE

 

# B = Escape, 0 (On The NumPad), X

# C = Enter, Space Bar and C

# A = Shift, Z

 

  if Input.press?(Input::C) # <-- Change the value on that line

     if @alex_skip==false        

     text_not_skip = false

     end

        end

     else

        text_not_skip = true

        break

     end

    

     if text_not_skip

        break

     end

  end

  @write_wait += @write_speed

  return

end

 

if @input_number_window != nil

  @input_number_window.update

  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

     @input_number_window.dispose

     @input_number_window = nil

     terminate_message

  end

  return

end

 

if @contents_showing

  if $game_temp.choice_max == 0

     self.pause = true

  end

 

  if Input.trigger?(Input::B)

     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

 

  if Input.trigger?(Input::C)

     if $game_temp.choice_max > 0

        $game_system.se_play($data_system.decision_se)

        $game_temp.choice_proc.call(self.index)

     end

     if @mid_stop

        @mid_stop = false

        return

     else

        terminate_message

     end

  end

  return

end

 

if @fade_out == false and $game_temp.message_text != nil

  @contents_showing = true

  $game_temp.message_window_showing = true

  refresh

  Graphics.frame_reset

  self.visible = true

  self.contents_opacity = 0

  if @input_number_window != nil

     @input_number_window.contents_opacity = 0

  end

  @fade_in = true

  return

end

 

if self.visible

  @fade_out = true

  self.opacity -= 48

  if self.opacity == 0

     self.visible = false

     @fade_out = false

     $game_temp.message_window_showing = false

  end

  return

end

end

 

#--------------------------------------------------------------------------

 

def get_character(parameter)

 

case parameter

when 0  

  return $game_player

else

  events = $game_map.events

  return events == nil ? nil : events[parameter]

end

end

 

#--------------------------------------------------------------------------

 

def reset_window

 

#MESSAGE_SIZE

#MESSAGE_POSITION

 

if @popchar >= 0

  events = $game_map.events

  if events != nil

     character = get_character(@popchar)

     x = [[character.screen_x -   $ams.event_message_x_ofset - self.width / 2, 4].max, 636 - self.width].min

     y = [[character.screen_y - $ams.event_message_y_ofset - self.height, 4].max, 476 - self.height].min

     self.x = x

     self.y = y

  end

elsif @popchar == -1

  self.x = -4

  self.y = -4

  self.width = 648

  self.height = 488

else

  if $game_temp.in_battle

     self.y = 16

  else

     case $game_system.message_position

     when 0  

        self.y = $ams.message_y_top

     when 1  

        self.y = $ams.message_y_middle

     when 2  

        self.y = $ams.message_y_bottom

     end

     self.x = $ams.message_x

     if @face_file == nil

        self.width = $ams.message_width

        self.x = $ams.message_x

     else

        if self.width <= 600

           self.width = 600

           self.x -=60

          end

     end

     self.height = $ams.message_height

  end

end

self.contents = Bitmap.new(self.width - 32, self.height - 32)

self.contents.font.color = text_color($ams.message_box_text_color)

self.contents.font.name = $ams.font_type

self.contents.font.size = $ams.font_size

if @face_file != nil

  self.contents.blt(16, 16, RPG::Cache.picture(@face_file), Rect.new(0, 0, 96, 96))

end

if @popchar == -1

  self.opacity = 255

  self.back_opacity = 0

elsif $game_system.message_frame == 0

  self.opacity = 255

  self.back_opacity = $ams.message_box_opacity

else

  self.opacity = 0

  self.back_opacity = $ams.message_box_opacity

end

end

 

#--------------------------------------------------------------------------

 

def gaiji_draw(x, y, num)

 

if @gaiji_cache == nil

  return 0

else

  if @gaiji_cache.width < num * 24

     return 0

  end

 

  if self.contents.font.size >= 20 and self.contents.font.size <= 24

     size = 24

  else

     size = self.contents.font.size * 100 * 24 / 2200

  end

 

  self.contents.stretch_blt(Rect.new(x, y, size, size), @gaiji_cache, Rect.new(num * 24, 0, 24, 24))

 

  if $soundname_on_speak != "" then

     Audio.se_play($soundname_on_speak)

  end

  return size

end

end

 

#--------------------------------------------------------------------------

 

def line_height

return 32

 

if self.contents.font.size >= 20 and self.contents.font.size <= 24

  return 32

else

  return self.contents.font.size * 15 / 10

end

end

 

#--------------------------------------------------------------------------

 

def ruby_draw_text(target, x, y, str,opacity)

 

sizeback = target.font.size

target.font.size * 3 / 2 > 32 ? rubysize = 32 - target.font.size : rubysize = target.font.size / 2

rubysize = [rubysize, 6].max

opacity = [[opacity, 0].max, 255].min

split_s = str.split(/,/)

split_s[0] == nil ? split_s[0] = "" : nil

split_s[1] == nil ? split_s[1] = "" : nil

 

height = sizeback + rubysize

width   = target.text_size(split_s[0]).width

 

target.font.size = rubysize

ruby_width = target.text_size(split_s[1]).width

target.font.size = sizeback

 

buf_width = [target.text_size(split_s[0]).width, ruby_width].max

 

width - ruby_width != 0 ? sub_x = (width - ruby_width) / 2 : sub_x = 0

 

if opacity == 255

  target.font.size = rubysize

  target.draw_text(x + sub_x, y - target.font.size, target.text_size(split_s[1]).width, target.font.size, split_s[1])

  target.font.size = sizeback

  target.draw_text(x, y, width, target.font.size, split_s[0])

  return width

else

  if @opacity_text_buf.width < buf_width or @opacity_text_buf.height < height

     @opacity_text_buf.dispose

     @opacity_text_buf = Bitmap.new(buf_width, height)

  else

     @opacity_text_buf.clear

  end

  @opacity_text_buf.font.size = rubysize

  @opacity_text_buf.draw_text(0 , 0, buf_width, rubysize, split_s[1], 1)

  @opacity_text_buf.font.size = sizeback

  @opacity_text_buf.draw_text(0 , rubysize, buf_width, sizeback, split_s[0], 1)

  if sub_x >= 0

     target.blt(x, y - rubysize, @opacity_text_buf, Rect.new(0, 0, buf_width, height), opacity)

  else

     target.blt(x + sub_x, y - rubysize, @opacity_text_buf, Rect.new(0, 0, buf_width, height), opacity)

  end

  return width

end

end

 

#--------------------------------------------------------------------------

 

def convart_value(option, index)

option == nil ? option = "" : nil

option.downcase!

 

case option

when "i"

  unless $data_items[index].name == nil

     r = sprintf("\030[%s]%s", $data_items[index].icon_name, $data_items[index].name)

  end

when "w"

  unless $data_weapons[index].name == nil

     r = sprintf("\030[%s]%s", $data_weapons[index].icon_name, $data_weapons[index].name)

  end

when "a"

  unless $data_armors[index].name == nil

     r = sprintf("\030[%s]%s", $data_armors[index].icon_name, $data_armors[index].name)

  end

when "s"

  unless $data_skills[index].name == nil

     r = sprintf("\030[%s]%s", $data_skills[index].icon_name, $data_skills[index].name)

  end

else

  r = $game_variables[index]

end

 

r == nil ? r = "" : nil

return r

end

 

#--------------------------------------------------------------------------

 

def dispose

terminate_message

 

if @gaiji_cache != nil

  unless @gaiji_cache.disposed?

     @gaiji_cache.dispose

  end

end

 

unless @opacity_text_buf.disposed?

  @opacity_text_buf.dispose

end

 

$game_temp.message_window_showing = false

if @input_number_window != nil

  @input_number_window.dispose

end

super

end

 

 

 

#--------------------------------------------------------------------------

 

def update_cursor_rect

if @index >= 0

  n = $game_temp.choice_start + @index

  self.cursor_rect.set(8 + @indent + @face_indent, n * 32, @cursor_width, 32)

else

  self.cursor_rect.empty

end

end

end

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

# ? CLASS Window_Message Ends

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

 

 

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

# ? Class Window_Frame Begins

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

class Window_Frame < Window_Base

 

def initialize(x, y, width, height)

super(x, y, width, height)

self.windowskin = RPG::Cache.windowskin($ams.name_box_skin)

self.contents = nil

end

 

#--------------------------------------------------------------------------

 

def dispose

super

end

end

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

# ? CLASS Window_Frame Ends

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

 

 

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

# ? CLASS Game_Map Additional Code Begins

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

class Game_Map

 

#Dubealex's Addition (from XRXS) to show Map Name on screen

def name

$map_infos[@map_id]

end

end

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

# ? CLASS Game_Map Additional Code Ends

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

 

 

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

# ? CLASS Scene_Title Additional Code Begins

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

class Scene_Title

 

#Dubealex's Addition (from XRXS) to show Map Name on screen

$map_infos = load_data("Data/MapInfos.rxdata")

for key in $map_infos.keys

    $map_infos[key] = $map_infos[key].name

end

 

#Dubealex's addition to save data from the AMS in the save files

$ams = AMS.new

 

end

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

# ? CLASS Scene_Title Additional Code Ends

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

 

 

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

# ? CLASS Window_Base Additional Code Begins

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

class Window_Base < Window

 

#Dubealex Addition (from Phylomorphis) to use HTML Hex Code Colors

def hex_color(string)

  red = 0

  green = 0

  blue = 0

  if string.size != 6

     print("Hex strings must be six characters long.")

     print("White text will be used.")

     return Color.new(255, 255, 255, 255)

  end

  for i in 1..6

     s = string.slice!(/./m)

     if s == "#"

        print("Hex color string may not contain the \"#\" character.")

        print("White text will be used.")

        return Color.new(255, 255, 255, 255)

     end

     value = hex_convert(s)

     if value == -1

        print("Error converting hex value.")

        print("White text will be used.")

        return Color.new(255, 255, 255, 255)

     end

     case i

     when 1

        red += value * 16

     when 2

        red += value

     when 3

        green += value * 16

     when 4

        green += value

     when 5

        blue += value * 16

     when 6

        blue += value

     end

  end

  return Color.new(red, green, blue, 255)

end

 

#--------------------------------------------------------------------------

 

def hex_convert(character)

  case character

    when "0"

       return 0

  when "1"

       return 1

  when "2"

       return 2

  when "3"

       return 3

  when "4"

       return 4

  when "5"

       return 5

  when "6"

       return 6

  when "7"

       return 7

  when "8"

       return 8

  when "9"

       return 9

  when "A"

       return 10

  when "B"

       return 11

  when "C"

       return 12

  when "D"

       return 13

  when "E"

       return 14

  when "F"

       return 15

    end

  return -1

end

end

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

# ? CLASS Window_Base Additional Code Ends

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

 

 

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

# ? Class Air_Text Begins

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

class Air_Text < Window_Base

 

def initialize(x, y, designate_text, color=0)

 

super(x-16, y-16, 32 + designate_text.size * 12, 56)

self.opacity         = 0

self.back_opacity = 0

self.contents = Bitmap.new(self.width - 32, self.height - 32)

w = self.contents.width

h = self.contents.height

self.contents.font.name = $ams.name_font_type

self.contents.font.size = $ams.name_font_size

self.contents.font.color = text_color(color)

self.contents.draw_text(0, 0, w, h, designate_text)

end

 

#--------------------------------------------------------------------------

 

def dispose

self.contents.clear

super

end

end

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

# ? CLASS Air_Text   Ends

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

 

 

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

# ? CLASS Scene_Save Additional Code Begins

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

class Scene_Save < Scene_File

 

alias ams_original_write_save_data write_save_data

 

def write_save_data(file)

    ams_original_write_save_data(file)

    Marshal.dump($ams, file)

end

 

end

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

# ? CLASS Scene_Save Additional Code Ends

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

 

 

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

# ? CLASS Scene_Load Additional Code Begins

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

class Scene_Load < Scene_File

 

alias ams_original_read_save_data read_save_data

 

def read_save_data(file)

    ams_original_read_save_data(file)

    $ams         = Marshal.load(file)

end

 

end

 

I've tried editing this myself to take everything out except the letter by letter and display icons (For items, armours, weapons and skills), but I keep getting error after error, so I thought I'd let someone else take a look.

Cheers to anyone that can do this :cheers: :thumb:
 
I'm not too familiar with that script, but I've always used Ccoa's UMS which allows you to do both of the things you mentioned. The letter by letter text is the default I believe, and showing items is a simple command \oi 
 

Jason

Awesome Bro

I'd use Ccoa's script, but sadly it isn't compatible with the name box addon I'm using, basically I type \n[Whatever] and it brings up a seperate box above the message box displaying the text (In this case it's "Whatever"), but while using Ccoa's UMS, it just appears in the message box itself, looking like "\n[Whatever]" followed by the text I want in the actual message box, y'know? I'm either going to need some major edits, or a new script entirely, I'm hoping it won't be too troublesome though.
 
I fixed my script to work with ccoa's
cocoa's ums edit
(edit: moved to the post below, I think I hit max characters in a post, or something. the UMS is HUGE)

my script-
[rgss]#==============================================================================
#   Message Name Box
#-----------------------------------------------------------------------------
# made by: Silverwind on HBGames.org
# version: 1.0
#
# How to use:
#  1. add "\N
 
ccoa's UMS edited:
Code:
 

# *****************************************************************************

# *    Universal Message System

# *      v1.5.0

# *      by Ccoa

# *****************************************************************************

#=begin # comment out to use w/o the UMS

 

# *****************************************************************************

#  CONSTANTS

# *****************************************************************************

 

# modes

NORMAL_MODE        = 0

FIT_WINDOW_TO_TEXT = 1

 

#text modes

ONE_LETTER_AT_A_TIME = 0

ALL_AT_ONCE          = 1

 

# skip modes

WRITE_FASTER = 0

WRITE_ALL    = 1

 

# justifications

RIGHT  = 0

CENTER = 1

LEFT   = 2

 

# positions for extra objects (face graphics, choice box, etc)

ABOVE  = 0  # place the object above the top of the message box

CENTER = 1  # center the object vertically inside the message box

BOTTOM = 2  # place the bottom of the object on the bottom of the message box

SIDE   = 3  # to the side of the message box (which side depends on justification)

 

# comic type

TALK1   = 0

TALK2   = 1

THOUGHT = 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_accessor :window_image # image used behind window

  

  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

    

    @window_image = nil

    

    @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

  end

  

  #--------------------#

  # silver wind's edit #

  #--------------------#

  def comic_mode()

    @ums_mode = FIT_WINDOW_TO_TEXT

    @comic_enabled = true

    @comic_style = TALK1

  end

  

  def set_ums_to_normal()

    @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

    @window_image = nil

  end

  

  

end

 

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

# ** 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 :choices

  attr_accessor :num_choices

  attr_accessor :skip_next_choices

  

  alias old_init initialize

  def initialize

    old_init

    @skip_next_choices = 0

    @num_choices = 1

  end

end

 

class 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

  end

end

 

class Interpreter

  #--------------------------------------------------------------------------

  # * Event Command Execution

  #--------------------------------------------------------------------------

  def execute_command

    # If last to arrive for list of event commands

    if @index >= @list.size - 1

      # End event

      command_end

      # Continue

      return true

    end

    # Make event command parameters available for reference via @parameters

    if !(@list[@index].code == 102 and $game_temp.skip_next_choices > 0) 

      @parameters = @list[@index].parameters.clone

      if @list[@index].code == 402

        @parameters[0] += @offset

      end

    end

    # Branch by command code

    case @list[@index].code

    when 101  # Show Text

      return command_101

    when 102  # Show Choices

      return command_102

    when 402  # When [**]

      return command_402

    when 403  # When Cancel

      return command_403

    when 103  # Input Number

      return command_103

    when 104  # Change Text Options

      return command_104

    when 105  # Button Input Processing

      return command_105

    when 106  # Wait

      return command_106

    when 111  # Conditional Branch

      return command_111

    when 411  # Else

      return command_411

    when 112  # Loop

      return command_112

    when 413  # Repeat Above

      return command_413

    when 113  # Break Loop

      return command_113

    when 115  # Exit Event Processing

      return command_115

    when 116  # Erase Event

      return command_116

    when 117  # Call Common Event

      return command_117

    when 118  # Label

      return command_118

    when 119  # Jump to Label

      return command_119

    when 121  # Control Switches

      return command_121

    when 122  # Control Variables

      return command_122

    when 123  # Control Self Switch

      return command_123

    when 124  # Control Timer

      return command_124

    when 125  # Change Gold

      return command_125

    when 126  # Change Items

      return command_126

    when 127  # Change Weapons

      return command_127

    when 128  # Change Armor

      return command_128

    when 129  # Change Party Member

      return command_129

    when 131  # Change Windowskin

      return command_131

    when 132  # Change Battle BGM

      return command_132

    when 133  # Change Battle End ME

      return command_133

    when 134  # Change Save Access

      return command_134

    when 135  # Change Menu Access

      return command_135

    when 136  # Change Encounter

      return command_136

    when 201  # Transfer Player

      return command_201

    when 202  # Set Event Location

      return command_202

    when 203  # Scroll Map

      return command_203

    when 204  # Change Map Settings

      return command_204

    when 205  # Change Fog Color Tone

      return command_205

    when 206  # Change Fog Opacity

      return command_206

    when 207  # Show Animation

      return command_207

    when 208  # Change Transparent Flag

      return command_208

    when 209  # Set Move Route

      return command_209

    when 210  # Wait for Move's Completion

      return command_210

    when 221  # Prepare for Transition

      return command_221

    when 222  # Execute Transition

      return command_222

    when 223  # Change Screen Color Tone

      return command_223

    when 224  # Screen Flash

      return command_224

    when 225  # Screen Shake

      return command_225

    when 231  # Show Picture

      return command_231

    when 232  # Move Picture

      return command_232

    when 233  # Rotate Picture

      return command_233

    when 234  # Change Picture Color Tone

      return command_234

    when 235  # Erase Picture

      return command_235

    when 236  # Set Weather Effects

      return command_236

    when 241  # Play BGM

      return command_241

    when 242  # Fade Out BGM

      return command_242

    when 245  # Play BGS

      return command_245

    when 246  # Fade Out BGS

      return command_246

    when 247  # Memorize BGM/BGS

      return command_247

    when 248  # Restore BGM/BGS

      return command_248

    when 249  # Play ME

      return command_249

    when 250  # Play SE

      return command_250

    when 251  # Stop SE

      return command_251

    when 301  # Battle Processing

      return command_301

    when 601  # If Win

      return command_601

    when 602  # If Escape

      return command_602

    when 603  # If Lose

      return command_603

    when 302  # Shop Processing

      return command_302

    when 303  # Name Input Processing

      return command_303

    when 311  # Change HP

      return command_311

    when 312  # Change SP

      return command_312

    when 313  # Change State

      return command_313

    when 314  # Recover All

      return command_314

    when 315  # Change EXP

      return command_315

    when 316  # Change Level

      return command_316

    when 317  # Change Parameters

      return command_317

    when 318  # Change Skills

      return command_318

    when 319  # Change Equipment

      return command_319

    when 320  # Change Actor Name

      return command_320

    when 321  # Change Actor Class

      return command_321

    when 322  # Change Actor Graphic

      return command_322

    when 331  # Change Enemy HP

      return command_331

    when 332  # Change Enemy SP

      return command_332

    when 333  # Change Enemy State

      return command_333

    when 334  # Enemy Recover All

      return command_334

    when 335  # Enemy Appearance

      return command_335

    when 336  # Enemy Transform

      return command_336

    when 337  # Show Battle Animation

      return command_337

    when 338  # Deal Damage

      return command_338

    when 339  # Force Action

      return command_339

    when 340  # Abort Battle

      return command_340

    when 351  # Call Menu Screen

      return command_351

    when 352  # Call Save Screen

      return command_352

    when 353  # Game Over

      return command_353

    when 354  # Return to Title Screen

      return command_354

    when 355  # Script

      return command_355

    else      # Other

      return true

    end

  end

  

  #--------------------------------------------------------------------------

  # * 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

          # Advance index

          @index += 1

          

          # skip this one, it was already shown?

          if $game_temp.skip_next_choices > 0

            $game_temp.skip_next_choices -= 1

          else

            # 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

  #--------------------------------------------------------------------------

  # * Show Choices

  #--------------------------------------------------------------------------

  def command_102

    # If text has been set to message_text

    if $game_temp.message_text != nil

      # End

      return false

    end

    

    if $game_temp.skip_next_choices > 0

      # skip this one, it is part of another

      $game_temp.skip_next_choices -= 1

      @offset += 4

      @index += 1

      return false

    else

      @offset = 0

    end

    # Set message end waiting flag and callback

    @message_waiting = true

    $game_temp.message_proc = Proc.new { @message_waiting = false }

    # Choices setup

    $game_temp.message_text = ""

    $game_temp.choice_start = 0

    setup_choices(@parameters)

    # Continue

    return true

  end

  #--------------------------------------------------------------------------

  # * Setup Choices

  #--------------------------------------------------------------------------

  def setup_choices(parameters)

    params = parameters.clone

    @offset = 0

    i = @index

    curr = 1

    while curr < $game_temp.num_choices

      i += 1

      if @list[i].code == 102

        params[0] += @list[i].parameters[0]

        if @list[i].parameters[1] == 5

          @cancel_flag = true

        else

          @cancel_flag = false

        end

        params[1] = @list[i].parameters[1] + (curr * 4)

        curr += 1

      end

    end

    

    # Set choice item count to choice_max

    $game_temp.choice_max = params[0].size

    # Set choice to message_text

    $game_temp.choices = params[0]

    # Set cancel processing

    $game_temp.choice_cancel_type = params[1]

    

    if $game_temp.num_choices != 1

      $game_temp.skip_next_choices = $game_temp.num_choices - 1

      $game_temp.num_choices = 1

    end

    

    # Set callback

    current_indent = @list[@index].indent

    $game_temp.choice_proc = Proc.new { |n| @branch[current_indent] = n }

  end

  

  #--------------------------------------------------------------------------

  # * When [**]

  #--------------------------------------------------------------------------

  def command_402

    # If fitting choices are selected

    if @branch[@list[@index].indent] == @parameters[0]

      # Delete branch data

      @branch.delete(@list[@index].indent)

      # Continue

      return true

    end

    # If it doesn't meet the condition: command skip

    return command_skip

  end

  

  #--------------------------------------------------------------------------

  # * When Cancel

  #--------------------------------------------------------------------------

  def command_403

    # If choices are cancelled

    if @cancel_flag

      # Delete branch data

      @branch.delete(@list[@index].indent)

      # Continue

      return true

    end

    # If it doen't meet the condition: command skip

    return command_skip

  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

  end

end

 

# *****************************************************************************

#  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_Selectable

  #--------------------------------------------------------------------------

  # * 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 = $game_system.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

    

    # window image sprite

    @window_back = Sprite.new

    @window_back.opacity = 0

    @window_back.z = self.z - 1

    if $game_system.window_image != nil

      @window_back.bitmap = RPG::Cache.windowskin($game_system.window_image)

    end

    

    # name window

    @name_window = Window_Name.new

    @name_window.z = self.z + 1

    

    @pause_time = 0

    @wait = 0

    

    @show = false

    

    @face_frame = 0

    # my edit- nameBox window

    @message_name_window = Window_Name_Box.new

    

  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

    # my edit- nameBox window

    @message_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

    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

    @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]\[(.*?)\]/) do

        # my edit

        # was $game_actors[$1.to_i]

        #$data_enemies[$1.to_i] != nil ? $data_enemies[$1.to_i].name : ""

        $game_temp.message_name_box = $1.to_s

        ""

      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

      

      # center text above actor (silver wind's edit)#

      @text.gsub!(/\\[Aa][Cc][Tt][Oo][Rr]\[([0-9]+)\]/) do

      event_id = $game_map.cat_event_id($1.to_i)

      $game_system.message_event = event_id

      ""

     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

      

      if $game_system.window_image != nil

        # figure out how we're going to resize this          

        @window_back.zoom_x = self.width.to_f / @window_back.bitmap.width 

        @window_back.zoom_y = self.height.to_f / @window_back.bitmap.height

      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

    

    # window back stuff

    if $game_system.window_image != nil

      @window_back.bitmap = RPG::Cache.windowskin($game_system.window_image)

      @window_back.x = self.x

      @window_back.y = self.y

    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

    

    # my edit- nameBox window

    @message_name_window.update

    

    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.window_image != nil

        @window_back.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::B)

          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

      @window_back.opacity -= 48

      if self.opacity == 0

        self.visible = false

        @face.opacity = 0

        @window_back.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)

      line = self.contents.text_size("dj").height

      self.contents.blt(@x + 4, (@y * line) + 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)

      line = self.contents.text_size("dj").height

      self.contents.blt(@x + 4, (@y * line) + 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)

      line = self.contents.text_size("dj").height

      self.contents.blt(@x + 2, (@y * line) + 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)

      line = self.contents.text_size("dj").height

      self.contents.blt(@x + 2, (@y * line) + 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("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 $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)

    self.opacity = $game_system.opacity

    self.back_opacity = $game_system.back_opacity

  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]+)\]/) { 

      # my edit, was $game_actors

        $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""

      }

    end

    refresh

  end

end

 

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

# ** 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

  end

end

 

class 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

  end

end

 

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

# ** 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

        # my edit was $game_actors

        $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

  end

end

 

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

# ** 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

  end

end

 

#=end # comment out to use w/o the UMS
 

Thank you for viewing

HBGames is a leading amateur video game development forum and Discord server open to all ability levels. Feel free to have a nosey around!

Discord

Join our growing and active Discord server to discuss all aspects of game making in a relaxed environment. Join Us

Content

  • Our Games
  • Games in Development
  • Emoji by Twemoji.
    Top