Show posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Messages - Moshan

1
Welcome! / Re: Hello, World!
August 24, 2016, 02:31:51 pm
 Hello! Good luck on your path,developer! I hope I'll get the chance to play something made by you. :)
2
New Projects / Re: One-day projects
September 27, 2015, 11:12:38 am
 Cube Jumping has impressive beautiful sounds! Great job, you really nailed it!
3
Video Games / Re: Free Steam Keys
September 02, 2015, 06:33:00 am
 FTL: Faster Than Light is a must on my indie games list  :haha:
4
Recruitment / Re: Dragonball Z Eclipse Project
August 28, 2015, 09:45:33 am
 I am willing to help with mapping. I'm a DBZ fan but that's my only advantage for this project...My maps were mostly edits from other maps, but I'm getting bored and I also curious about this Eclipse engine ^_^. So, five me the tilesets and your request and I'll do my best.
5
Video Games / Re: Free Steam Keys
June 14, 2015, 01:10:41 am
 I am really surprised that no one is willing to be responsible...I've been expecting Blizz to take over this but I think he's also busy. I could dedicate my time to this project since I've made already an habit of checking the forum daily.
6
Video Games / Re: Free Steam Keys
June 11, 2015, 05:26:34 am
 Bump...just to avoid this  :^_^':
Quote from: gameus on February 25, 2015, 02:03:32 am
I forgot my master password into my key database. Anywho, games sent, main post updated, added the games Blizzard donated. :3
7
Video Games / Re: Free Steam Keys
May 08, 2015, 04:28:49 pm
 Can I get Papers, Please...huh...please?
8
 To prevent enemies "respawning" when you go back to that specific map you have to put a Control Self Switch to ON in that enemy event page. Then just make a new event page which is available only when that respective Self Switch is on.
Take a look at this:
Spoiler: ShowHide
9
 Hello!
First of all, please read the manual if you encounter any problem understanding the functions of BABS before asking for help.

So...to disable the respawn function search in the first part of BABS for this line: RESPAWN_TIME. Setting this value to 0 (RESPAWN_TIME = 0) will disable respawn.
Quote from: The BABS ManualThis option can be changed in-game by using an event Call Script command with following syntax: $game_system.respawn_time = POSSIBLE_VALUE


For your second question I suggest you to use a Drop Sprite. Check the manual for this!
10
Video Games / Re: Free Steam Keys
November 12, 2014, 03:31:16 pm
All hail the mighty gameus!
I was looking forward to buying Insurgency...Looks like I'm in luck! Can I get one, please? :)
Thanks in advance!
11
Video Games / Re: Free Steam Keys
October 30, 2014, 09:59:47 am
 Can I get Risk of Rain, please?
12
Video Games / Re: Free Steam Keys
September 03, 2014, 12:35:49 pm
 Natural Selection 2 looks very different from what I've played in regular FPS games. I would definietly try it.
13
Video Games / Re: Free Steam Keys
August 30, 2014, 06:35:06 pm
 Can I get Awesomenauts? Please.
14
 All hail the Cookie Monster!

Now...back in my corner....crying....I can't script...
15
 I've already posted this on the RMXPAce support website: http://rmxpace.com but I think I should also post it here  :^_^':

Script Name: Battle Dome (http://forum.chaos-project.com/index.php/topic,3183.0.html)
Screenshot: I couldn't explain by pictures...so I've made a video: http://youtu.be/hwe1kcYXbBk
Description of Error: As you can see in video after the battle is done the message window doesn't show any text. It does not display the experience/gold gained nor the items.

Extra: This issue does not occur without RMXPAce engine. I've noticed that the window size modifies when it needs to display multiple lines of text. (for example when gaining items and experience it requires 2 lines of text to display this)

   Thanks in advance!

  Demo (if needed):https://drive.google.com/file/d/0Bz22DF-S1J2nbVR1QWZMR2xXMU0
16
 Hello! For the past days I've been searching for a custom message system and I've finally found one that suits my needs.

The problem is that I can't make it compatibile with my project...where are already some several scripts and also the XP ace engine.

I've made a demo of my project: https://drive.google.com/file/d/0Bz22DF-S1J2naVdTYkVRaGpMLU0/edit?usp=sharing so you can easily troubleshoot the issue.

I would be grateful to anyone who can help/advice me with this error. Thanks in advance!

Here's the original Custom Message Script (I've edited the one in my project to fix the superclass missmatch error):
Spoiler: ShowHide
#==============================================================================
# ** Custom Message Script by Hodgeelmf **
#
#     Version 1.4
#
#       Version History
#         1.0.0 - Basic functionality
#         1.1.0 - Fixed issue with bubble size and bolded text
#               Modified gold window
#               Added /q function
#         1.2.0 - Added Icon display
#               Added Face Graphics
#               Fixed Gold command iteration error (This is what formerly broke
#                                                   the script)
#               Added use of Windowskin Graphic
#               Fixed sub window termination to be more natural
#         1.3.0 - Added thought indicater option
#               Added emotion colors
#         1.4.0 - Fixed glitch when switching from Windowskin to Bubble mode
#               Added function to disable bubble bouncing
#         1.4.1 - Fixed text drawing issue when choices displayed without
#               preceding message text
#                 Created \nc command
#
#       **************UPDATE NOTE*******************
#         This script displays all choices immediately after the text
#         which precedes them.  I have added a command to prevent this
#         should you elect to do so:
#
#               \nc
#
#           I see no reason to turn this into a toggle currently unless
#           there were significant push for it
#
#
#     Necessary updates
#
#       -Add other various functions like display hp, quest, etc.
#
#==============================================================================
=begin

Welcome to the Custom Message script!

Installation instructions:

1.  Install this script above Main, preferrably directly above
2.  Download attached graphics (message_bubble and pointer2)
   and place in Graphics/Pictures
3.  That's it!

Message commands:

\e[x]   Display message over a map event

   By default, bubble messages display over the player's sprite.  Values
   outside of the map events range will display over the player as well.

\c[x]   Change message text color (0-8)

\n[x]   Insert actor name

\v[x]   Insert variable value

\b      Toggle bold text

\w[x]   Wait control (0-999)

   Wait values are determined by frame.  40 FPS is the script rate.

\p      Pause control

   Forces the player to press enter before continuing.

\q      Forced ending

   Forces the message winddow to close once the character is encountered.
   Typically best to use directly after a wait timer.
   
\f      Force position

   Forces a specific position for the message bubble.
   
   0 - Upper right of the sprite
   1 - Upper left of the sprite
   2 - Lower right of the sprite
   3 - Lower left of the sprite
   
\g      Displays gold window

   Fades in the gold window to the bottom right corner of the screen.  To keep
   it displayed after current message, add \g into the next master message.

\i[x]   Display icon

   Displays an icon from the "Icons" folder.  A constant array, Icons, is
   compiled at runtime to store imported icon names in addition to RTP.
   
\z[x]   Display face graphic (found in Graphics/Faces - you may have to create this
                                                       folder)

   Displays a face graphic on the left of the message.  Currently this script
   only supports images with one face (as opposed to a whole faceset).

\t     Thought Bubble

       Uses thought indicater (ie two dots instead of mouth opening style)
       
\m[x]   Mood Coloring

       Changes bubble color to indicate speakers/thinkers mood (0-4)
       
\nc     Do not Display Choices

       Keeps choices from being appended to the text preceding them
   
\h[x]  Display Hp

   Not functioning at this point

\s[x]   Sub window controls (explained below)

 
 Master - the message which controls sub windows
 Sub - any message that displays as a part of a master
   
   1. The master message always has a higher z value than any sub messages
   2. Sub message must immediately follow the master message and be in
       consecutive order (ex. sub 0 must be the next event command after
       the master message, sub 1 must be the next event command after
       sub 0, etc.)
   3. Sub messagge numbers do not reset after a master message.  For
       example, if the first master messsage contains two sub messages,
       the second master message with sub messages must begin with sub
       message number 3, and so on.
   4. Use \s[x] where x is the number of the sub message to indicate that
       a particular message is a sub message
   5. Call sub messages in a master message with \s[x] where x is the
       number of the sub message.
   6. There is no limit to the number of sub messages, but since text is
       drawn one letter at a time, too many messages may cause lag.
       
 ***NOTE***
     If any of these commands seem bulky, it is because there is a glitch in
     the run script command in the event editor which does not allow for
     single lines changing global variables to function properly.
       
Script commands (from the Event Editor):

 1. Choose message style (bubble, windowskin or invisible)
     
     ***** If you do not have the correct images in Graphics/Pictures
     ***** the script will automatically change to WINDOWSKIN mode and
     ***** change the default text color to white
 
     $game_system.message_text_mode = x
     
     TEXT_MODE_BUBBLE
     TEXT_MODE_INVISIBLE
     TEXT_MODE_WINDOWSKIN
     
 2. Enable or disable bubble bouncing (only applies when in TEXT_MODE_BUBBLE)
 
     $game_system.message_bubble_bounce = x
     
     BUBBLE_BOUNCE_ON
     BUBBLE_BOUNCE_OFF
     
 2. Change position of invisible text
 
     $game_system.invisible_position = x
     
     INVISIBLE_POSITION_TOP
     INVISIBLE_POSITION_MIDDLE
     INVISIBLE_POSITION_BOTTOM
     INVISIBLE_POSITION_BOOK(arbitrary value from one of my projects)
     
 3. Change outline text options
 
     $game_system.message_text_outline = x
     
     TEXT_NORMAL
     TEXT_OUTLINE
     
 4. Change text speed
 
     $game_system.message_text_speed = x
     
     TEXT_SPEED_SLOW
     TEXT_SPEED_MEDIUM
     TEXT_SPEED_FAST
 
 5. Change text skip rate (one letter per frame up to all at once)
     
     $game_system.message_text_skip = x
 
     TEXT_SKIP_NORMAL  (1)
     TEXT_SKIP_DOUBLE  (2)
     TEXT_SKIP_TRIPLE  (3)
     TEXT_SKIP_FULL
 
     
 5. Change text size
 
     $game_system.message_text_size = x
     
     TEXT_SIZE_SMALL
     TEXT_SIZE_MEDIUM
     TEXT_SIZE_LARGE
     TEXT_SIZE_JUMBO
     
 6. Change text font
 
     $game_system.message_text_font = x
     
     TEXT_FONT_DEFAULT
     TEXT_FONT_CORSIVA
     
 7. Color Constants
 
     TEXT_COLOR_BLACK
     TEXT_COLOR_WHITE
     
 8. Face Graphic Functions
 
     $game_system.face_graphic_type = x
     
 9. Face Graphic Constants
 
     FACE_GRAPHIC_FULL - typically a bust which looks better offset to the left
                         and extending abovve the bubble
     FACE_GRAPHIC_BOX -  traditional boxed in face graphics which need to be
                         encased by the bubble to look correct
     
 10. Global Methods (for ease of access)
 
     message(string) - place in script box in event processing
     
     ***** Only place this command once per Event Script Box *****
     
     You may wish to have dialogue or entries that are longer than three
     lines.  This global method allows you to supply a string to
     $game_temp.message_text manually.  The best way to do so is to store
     a message in a variable and pass it to the method.  In this example
     script there is a Game_Messages class which has public methods that
     assign a message to a variable.  For full games, it would be better
     to create a text file to load from.  The best formatter to use is
     %q (ex @message = %q(lots of text...can be multiple lines).  The
     %q formatter mimicks the event dialogue box text editing format
     so you can use single "\" characters instead of using "\\" or not
     being able to use special characters at all.
     
     default_color(x) - set message default color
     
     Input either a number 0 through 8 or a Color object.
     
     face(string) - set default face graphic
     
     Use this method to supply a default face graphic for messages.  This graphic
     has secondary priority to one explicitly declared in a message, so is useful
     for largely unbroken monologues.
     
     clear_face - clears the default face graphic
     
     small_text
     medium_text   - Shortcut methods to change $game_system.message_text_size
     large_text
     jumbo_text
     
     slow_text
     fast_text     - Shortcut methods to change $game_system.messge_text_speed
     
           
     
                                     Enjoy! And remember to credit!

=end

#========================================================================
#   Game_Messages
#       You can easily create messages to display of any length using this
#       Class or a similar one of your creation.
#========================================================================

class Game_Messages
 
 # This message is obviously far too long for a bubble message, but it looks
 # quite good with a darkened screen tone
 
 # When loaded into a global variable, these class methods can be called to
 # the event editor with two lines of code.  For your own projects, you will
 # probably want a more sophisticated heirarchy.
 def message_1
   @message = %q(\c[0]\bMessage commands:\b

\c[6]\b\\e[x]\c[0]     Display message over a map event\b
                   By default, bubble messages display over the player's sprite.  Values
                   outside of the map events range will display over the player as well.
\c[6]\b\\c[x]\c[0]     Change message text color (0-8)\b
\c[6]\b\\n[x]\c[0]     Insert actor name\b
\c[6]\b\\v[x]\c[0]     Insert variable value\b
\c[6]\b\\\\b\c[0]        Toggle bold text\b
\c[6]\b\\w[x]\c[0]     Wait control (0-999)\b
                   Wait values are determined by frame.  40 FPS is the script rate.
\c[6]\b\\\\p\c[0]        Pause control\b
                   Forces the player to press enter before continuing.
\c[6]\b\\\\q\c[0]        Forced ending\b
                   Forces the message winddow to close once the character is encountered.
                   Typically best to use directly after a wait timer.
\c[6]\b\\\\f[x]\c[0]      Force position\b
                   Forces a specific position for the message bubble.

                   \b0\b - Upper right of the sprite
                   \b1\b - Upper left of the sprite
                   \b2\b - Lower right of the sprite
                   \b3\b - Lower left of the sprite
\c[6]\b\\\\g\c[0]        Displays gold window\b
                    Fades in the gold window to the bottom right corner of the screen.  To keep
                    it displayed after current message, add \\\\g into the next master message.
\c[6]\b\\\\i[x]\c[0]      Displays an icon from Graphics/Icons\b
\c[6]\b\\\\z[x]\c[0]      Displays a face graphic from Graphics/Faces\b
                    References an array compiled at runtime from Graphics/Faces.  You will have
                    to create this folder and manually install files.                    
\c[6]\b\\\\s[x]\c[0]     Sub window controls\b (see documentation for full instructions))
 end
 
 def message_2
   @message = %q(          \c[6]\b$game_system Properties\b\c[0]
   
             Change these properties in the Event Editor by using the Script command.  Begin with
             $game_system, then add a "." followed by the property you wish to alter.  In the
             Script command you will need to use two lines.  For example:
             
                         $game_system.message_text_speed =\
                         TEXT_SPEED_FAST
           
         The properties are listed below with available values to the right.  For full
         documentation, refer to the script instructions.
         
             \c[6]\bmessage_text_mode\b\c[0]             TEXT_MODE_INVISIBLE,TEXT_MODE_BUBBLE,TEXT_MODE_WINDOWSKIN
             \c[6]\binvisible_position\b\c[0]                    INVISIBLE_POSITION_TOP,INVISIBLE_POSITION_MIDDLE,
                                                                  INVISIBLE_POSITION_BOTTOM
             \c[6]\bmessage_text_outline\b\c[0]          TEXT_NORMAL,TEXT_OUTLINE
             \c[6]\bmessage_text_speed\b\c[0]           TEXT_SPEED_SLOW,TEXT_SPEED_MEDIUM,TEXT_SPEED_FAST
             \c[6]\bmessage_text_size\b\c[0]               TEXT_SIZE_SMALL,TEXT_SIZE_MEDIUM,TEXT_SIZE_LARGE,
                                                                 TEXT_SIZE_JUMBO
             \c[6]\bmessage_text_font\b\c[0]               TEXT_FONT_DEFAULT, whatever constant you would
                                                                  like to create
             \c[6]\bmessage_text_skip\b\c[0]               TEXT_SKIP_NORMAL,TEXT_SKIP_DOUBLE,TEXT_SKIP_TRIPLE,
                                                                 TEXT_SKIP_QUAD,
                                                                 TEXT_SKIP_QUIN,TEXT_SKIP_FULL
             \c[6]\bmessage_skip_disabled\b\c[0]       true,false
             \c[6]\bface_graphic_type\b\c[0]                  FACE_GRAPHIC_BOX,FACE_GRAPHIC_FULL
             \c[6]\bface_graphic_name\b\c[0]                file name of graphic - without folders
             \c[6]\bdefault_color\b\c[0]                            any Color object
             \c[6]\bmessage_text_outline_color\b\c[0]  any Color object)

 end
   
end

#========================================================================
#   Global Variables - simplest way to create communication between
#                       Interpreter and Window_Message
#========================================================================

$separate_choices = false

#========================================================================
#   Constant Declaration
#========================================================================

# Stores the class methods for quick custom message access
$game_messages = Game_Messages.new

BUBBLE_BOUNCE_ON = 1
BUBBLE_BOUNCE_OFF = 0

BUBBLE_UPPER_LEFT = Rect.new(0,0,13,10)
BUBBLE_LOWER_LEFT = Rect.new(0,10,13,9)
BUBBLE_UPPER_RIGHT = Rect.new(13,0,12,10)
BUBBLE_LOWER_RIGHT = Rect.new(13,10,12,9)

SKIN_UPPER_LEFT = Rect.new(128,0,10,10)
SKIN_LOWER_LEFT = Rect.new(128,54,10,10)
SKIN_UPPER_RIGHT = Rect.new(182,0,10,10)
SKIN_LOWER_RIGHT = Rect.new(182,54,10,10)

TEXT_MODE_BUBBLE = 0
TEXT_MODE_INVISIBLE = 1
TEXT_MODE_WINDOWSKIN = 2

INVISIBLE_POSITION_TOP = [320,0]
INVISIBLE_POSITION_MIDDLE = [320,240]
INVISIBLE_POSITION_BOTTOM = [320,480]
INVISIBLE_POSITION_BOOK = [460,35]

TEXT_NORMAL = 0
TEXT_OUTLINE = 1

TEXT_SPEED_SLOW = 2
TEXT_SPEED_MEDIUM = 1
TEXT_SPEED_FAST = 0

TEXT_SKIP_NORMAL = 1
TEXT_SKIP_DOUBLE = 2
TEXT_SKIP_TRIPLE = 3
TEXT_SKIP_QUAD = 4
TEXT_SKIP_QUIN = 5
TEXT_SKIP_FULL = 6

TEXT_SIZE_SMALL = 14
TEXT_SIZE_MEDIUM = 16
TEXT_SIZE_LARGE = 18
TEXT_SIZE_JUMBO = 28

# Remember to set a common default or fallback font since some users won't have
# them all
TEXT_FONT_DEFAULT = "Arial"
TEXT_FONT_CORSIVA = ["Monotype Corsiva", "Arial"]
TEXT_FONT_BOLI = ["MV Boli", "Arial"]
TEXT_FONT_COMICSANS = ["Comic Sans MS", "Arial"]

TEXT_COLOR_BLACK = Color.new(0,0,0)
TEXT_COLOR_WHITE = Color.new(250,250,250)

FACE_GRAPHIC_FULL = 0
FACE_GRAPHIC_BOX = 1

# Compile Icon array
# RTP icons are best stored manually
Icons = ['001-Weapon01','002-Weapon02','003-Weapon03','004-Weapon04'\
,'005-Weapon05','006-Weapon06','007-Weapon07','008-Weapon08'\
,'009-Shield01','010-Head01','011-Head02','012-Head03','013-Body01'\
,'014-Body02','015-Body03','016-Accessory01','017-Accessory02'\
,'018-Accessory03','019-Accessory04','020-Accessory05'\
,'021-Potion01','022-Potion02','023-Potion03','024-Potion04'\
,'025-Herb01','026-Herb02','027-Herb03','028-Herb04'\
,'029-Key01','030-Key02','031-Key03','032-Item01'\
,'033-Item02','034-Item03','035-Item04','036-Item05'\
,'037-Item06','038-Item07','039-Item08','040-Item09'\
,'041-Item10','042-Item11','043-Item12','044-Skill01'\
,'045-Skill02','046-Skill03','047-Skill04','048-Skill05'\
,'049-Skill06','050-Skill07']

# All icons in the icon folder are dynamically added at runtime
ICON_FOLDER_PATH = Dir::getwd + "/Graphics/Icons/"
dir = Dir.new(ICON_FOLDER_PATH)
dir.each { |file|
 if file != "." && file != ".."
   Icons.push file
 end
}

# Compile Face array
if File.directory? Dir::getwd + "/Graphics/Faces/"
 Faces = []
 FACE_FOLDER_PATH = Dir::getwd + "/Graphics/Faces/"
 dir = Dir.new(FACE_FOLDER_PATH)
 dir.each { |file|
   if file != "." && file != ".."
     Faces.push file
   end
 }
end

#========================================================================
#   Global Methods
#       Use these methods to quickly modify basic settings or set text
#       to $game_temp.message_text manually
#========================================================================

def message(text)
 $game_system.map_interpreter.message_waiting = true
 $game_temp.message_proc = Proc.new { @message_waiting = false }
 $game_temp.message_text = text
end

def default_color(color)
 # If an integer passed to the method
 if color.class == Fixnum
   case color
   when 0
     $game_system.default_color = TEXT_COLOR_BLACK
   when 1
     $game_system.default_color = Color.new(128, 128, 255, 255)
   when 2
     $game_system.default_color = Color.new(255, 128, 128, 255)
   when 3
     $game_system.default_color = Color.new(128, 255, 128, 255)
   when 4
     $game_system.default_color = Color.new(128, 255, 255, 255)
   when 5
     $game_system.default_color = Color.new(255, 128, 255, 255)
   when 6
     $game_system.default_color = Color.new(255, 255, 128, 255)
   when 7
     $game_system.default_color = Color.new(192, 192, 192, 255)
   when 8
     $game_system.default_color = TEXT_COLOR_WHITE
   else
     $game_system.default_color = TEXT_COLOR_BLACK
   end
 # If a Color class value is passed to the method
 elsif color.class == Color
   $game_sytem.default_color = color
 end
 
 return true
end

def mood_color(color)
 case color
 when 0
   return Color.new(70,130,180,190)
 when 1
   return Color.new(178,34,34,190)
 when 2
   return Color.new(238,174,238,190)
 when 3
   return Color.new(139,136,120,180)
 when 4
   return Color.new(255,215,0,190)
 end
end

def face(name)
 $game_system.face_graphic_name = name
end

def clear_face
 $game_system.face_graphic_name = nil
end

def small_text
 $game_system.message_text_size == TEXT_SIZE_SMALL
end

def medium_text
 $game_system.message_text_size == TEXT_SIZE_MEDIUM
end

def large_text
 $game_system.message_text_size == TEXT_SIZE_LARGE
end

def jumbo_text
 $game_system.message_text_size == TEXT_SIZE_JUMBO
end

def slow_text
 $game_system.message_text_speed == TEXT_SPEED_SLOW
end

def fast_text
 $game_system.message_text_speed == TEXT_SPEED_FAST
end

#========================================================================
#   Game Temp
#
#       @current_event - tracks the current game event for ease of access
#========================================================================

class Game_Temp
 
 attr_accessor :current_event
 attr_accessor :consecutive_gold_window
 
 alias old_initialize initialize
 
 def initialize
   old_initialize
   @current_event = nil
   @consecutive_gold_window = false
 end
 
end

#========================================================================
#   Game System
#
#       Stores message text options
#       Use $game_system to view and change values
#========================================================================

class Game_System
 attr_accessor :message_text_mode
 attr_accessor :message_bubble_bounce
 attr_accessor :invisible_position
 attr_accessor :message_text_outline
 attr_accessor :message_text_speed
 attr_accessor :message_text_size
 attr_accessor :message_text_font
 attr_accessor :message_skip_disabled
 attr_accessor :face_graphic_type
 attr_accessor :face_graphic_name
 attr_accessor :message_text_skip
 attr_accessor :default_color
 attr_accessor :message_text_outline_color
 
 alias old_initialize initialize
 
 def initialize
   old_initialize
   @message_text_mode = TEXT_MODE_BUBBLE
   @message_bubble_bounce = BUBBLE_BOUNCE_ON
   @invisible_position = INVISIBLE_POSITION_TOP
   @message_text_outline = TEXT_NORMAL
   @message_text_speed = TEXT_SPEED_FAST
   @message_text_size = TEXT_SIZE_SMALL
   @message_text_font = TEXT_FONT_DEFAULT
   @message_text_skip = TEXT_SKIP_NORMAL
   @message_skip_disabled = false
   @face_graphic_type = FACE_GRAPHIC_BOX
   @face_graphic_name = nil
   @default_color = TEXT_COLOR_BLACK
   @message_text_outline_color = TEXT_COLOR_WHITE
   
 end
 
end

#========================================================================
#   Game Player
#
#        The only change is in the condition --if Input.trigger?(Input::C)--
#        The change allows for $game_temp.message text to be manually
#          altered and still function properly
#========================================================================

class Game_Player
 #--------------------------------------------------------------------------
 # * Frame Update
 #--------------------------------------------------------------------------
 def update
   # Remember whether or not moving in local variables
   last_moving = moving?
   # If moving, event running, move route forcing, and message window
   # display are all not occurring
   unless moving? or $game_system.map_interpreter.running? or
          @move_route_forcing or $game_temp.message_window_showing
     # Move player in the direction the directional button is being pressed
     case Input.dir4
     when 2
       move_down
     when 4
       move_left
     when 6
       move_right
     when 8
       move_up
     end
   end
   # Remember coordinates in local variables
   last_real_x = @real_x
   last_real_y = @real_y
   super
   # If character moves down and is positioned lower than the center
   # of the screen
   if @real_y > last_real_y and @real_y - $game_map.display_y > CENTER_Y
     # Scroll map down
     $game_map.scroll_down(@real_y - last_real_y)
   end
   # If character moves left and is positioned more let on-screen than
   # center
   if @real_x < last_real_x and @real_x - $game_map.display_x < CENTER_X
     # Scroll map left
     $game_map.scroll_left(last_real_x - @real_x)
   end
   # If character moves right and is positioned more right on-screen than
   # center
   if @real_x > last_real_x and @real_x - $game_map.display_x > CENTER_X
     # Scroll map right
     $game_map.scroll_right(@real_x - last_real_x)
   end
   # If character moves up and is positioned higher than the center
   # of the screen
   if @real_y < last_real_y and @real_y - $game_map.display_y < CENTER_Y
     # Scroll map up
     $game_map.scroll_up(last_real_y - @real_y)
   end
   # If not moving
   unless moving?
     # If player was moving last time
     if last_moving
       # Event determinant is via touch of same position event
       result = check_event_trigger_here([1,2])
       # If event which started does not exist
       if result == false
         # Disregard if debug mode is ON and ctrl key was pressed
         unless $DEBUG and Input.press?(Input::CTRL)
           # Encounter countdown
           if @encounter_count > 0
             @encounter_count -= 1
           end
         end
       end
     end
     #-----------------------------------------------------------------
     #  Allows messages to display without interruption when directly
     #  assigned to $game_temp.message_text
     #-----------------------------------------------------------------
     # If C button was pressed
     if Input.trigger?(Input::C) && $game_temp.message_text == nil
       # Same position and front event determinant
       check_event_trigger_here([0])
       check_event_trigger_there([0,1,2])
     end
   end
 end
end

#========================================================================
#   Interpreter
#
#       Edit forces the interpreter to wait to update until all messages
#         currently on screen have finished writing
#========================================================================


class Interpreter
 
 attr_accessor :list
 attr_accessor :index
 attr_accessor :message_waiting
 
 alias old_update update
 
 def update
   
   #if $scene.message_window != nil && $scene.message_window.finished != nil
   if $game_temp.message_text != nil
     return
   else
     old_update
     $game_temp.current_event = @event_id
   end
 end
 
 def command_101
   # If other text has been set to message_text
   if $game_temp.message_text != nil
     # End
     return false
   end
   # Check for consecutive gold window calls
   temp_index = @index+1
   loop do
     case @list[temp_index].code
     when 401
       temp_index += 1
     when 101
       break
     else
       break
     end
   end
   
   # Search for consecutive message window with /g formatter
   text = nil
   
   # Iterate through max possible message size
   for i in 0...3
     # Check for existence of list element before checking code
     if @list[temp_index+i] != nil
       # Search for /g
       if @list[temp_index+i].code == 101 or @list[temp_index+i].code == 401
         text = @list[temp_index+i].parameters[0].slice(/\\[Gg]/)
         if text != nil
           # Allows for gold window to continue after first message
           $game_temp.consecutive_gold_window = true
           break
         end
       end
     end
   end
   # Turns consecutive flag off if need be
   if $game_temp.consecutive_gold_window == true && text == nil
     $game_temp.consecutive_gold_window = 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 event command is not on the second line or after
     else        
       # If next event command is show choices
       if @list[@index+1].code == 102
         # Make sure choice appellation is allowed
         for choice in @list[@index+1].parameters[0]
           if choice.slice(/\\[Nn][Cc]/)
             $separate_choices = true
             break
           end
         end
         if $separate_choices == true
           return
         end
         # Advance index
         @index += 1
         # Choices setup
         $game_temp.choice_start = line_count
         #Insert 5 spaces for indenting choices
         for i in 0...@list[@index].parameters[0].size
           if @list[@index].parameters[0][i].slice(0,5) != '     '
             @list[@index].parameters[0][i].insert(0,'     ')
           end
         end
         setup_choices(@list[@index].parameters)
       # 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
end

#========================================================================
#   Spriteset Map
#
#       Edit allows access to the character_sprites variable
#       Use $game_map.character_sprites to access
#========================================================================

class Spriteset_Map

 attr_accessor :character_sprites  
 
end

class Scene_Map
 
 attr_accessor :spriteset
 attr_accessor :message_window
 
end

#========================================================================
#   Window Base
#
#       Edit allows for color 8 (black)
#========================================================================

class Window_Base < Window
 
 #--------------------------------------------------------------------------
 # * Get Text Color
 #     n : text color number (0-7)
 #--------------------------------------------------------------------------
 def text_color(n)
   case n
   when 0
     return Color.new(250, 250, 250, 255)
   when 1
     return Color.new(45, 45, 255, 255)
   when 2
     return Color.new(255, 45, 45, 255)
   when 3
     return Color.new(45, 255, 45, 255)
   when 4
     return Color.new(45, 215, 215, 255)
   when 5
     return Color.new(255, 45, 255, 255)
   when 6
     return Color.new(230, 230, 15, 255)
   when 7
     return Color.new(125, 125, 125, 255)
   when 8
     return Color.new(0, 0, 0)
   else
     normal_color
   end
 end
 
end

#==============================================================================
# ** Window_Gold
#------------------------------------------------------------------------------
#  The gold window has been modified to use an icon and some outlined text
#==============================================================================

class Window_Gold_New < Window_Base
 def initialize
   @current_gold = $game_party.gold
   
   @icon = Sprite.new
   @icon.opacity = 0
   @icon.bitmap = Bitmap.new('Graphics/Icons/032-Item01')
   @icon.ox = @icon.bitmap.width/2
   @icon.oy = @icon.bitmap.height/2
   @icon.x,@icon.y = 624,460
   
   draw_gold
 end
 
 def update
   refresh
   @icon.opacity += 12 if @icon.opacity < 192
   @gold.opacity += 12 if @gold.opacity < 192
 end
 
 def refresh
   if @current_gold != $game_party.gold
     @current_gold = $game_party.gold
     @gold.bitmap.clear
     draw_gold
   end
 end
 
 def draw_gold
   @gold = Sprite.new
   @gold.opacity = 0
   @gold.bitmap = Bitmap.new(100,32)
   @gold.ox,@gold.oy = @gold.bitmap.width/2,@gold.bitmap.height/2
   @gold.x = 560
   @gold.y = 465
   @gold.z = 50
   @gold.bitmap.font.size = 18
   @gold.bitmap.font.bold = true
   @gold.bitmap.font.color = text_color(8)
   @gold.bitmap.draw_text(22,0,75,30,$game_party.gold.to_s,2)
   @gold.bitmap.draw_text(22,2,75,30,$game_party.gold.to_s,2)
   @gold.bitmap.draw_text(21,1,75,30,$game_party.gold.to_s,2)
   @gold.bitmap.draw_text(23,1,75,30,$game_party.gold.to_s,2)
   @gold.bitmap.font.color = text_color(6)
   @gold.bitmap.draw_text(22,1,75,30,@current_gold.to_s,2)
 end
 
 def fade_out
   @icon.opacity -= 48
   @gold.opacity -= 48
 end
 
 def dispose
   @icon.bitmap.dispose
   @icon.dispose
   @gold.bitmap.dispose
   @gold.dispose
 end
 
end

#==============================================================================
# ** Window_InputNumber
#------------------------------------------------------------------------------
#  This window is for inputting numbers, and is used within the
#  message window.
#==============================================================================

class Window_InputNumber < Window_Base
 
 attr_accessor :x
 attr_accessor :y
 
 #--------------------------------------------------------------------------
 # * Object Initialization
 #     digits_max : digit count
 #--------------------------------------------------------------------------
 def initialize(digits_max,x=0,y=0,indent=0)
   @digits_max = digits_max
   @number = 0
   @x = x
   @y = y
   @indent = indent
   @count = 0
   @move_right = true
   # Calculate character width for drawing and tracking cursor movement
   dummy_bitmap = Bitmap.new(32, 32)
   dummy_bitmap.font.size = $game_system.message_text_size
   dummy_bitmap.font.name = $game_system.message_text_font
   @width = (dummy_bitmap.text_size('0').width\
       + dummy_bitmap.text_size(' ').width)
   @x = @x - (@width*@digits_max)
   dummy_bitmap.dispose
   @index = 0
   # Create number display bitmap
   @number_window = Sprite.new
   @number_window.x = @x
   @number_window.y = @y
   @number_window.z = 15
   @number_window.bitmap = Bitmap.new(@width*@digits_max, 40)
   @number_window.bitmap.font.color = TEXT_COLOR_BLACK
   @number_window.bitmap.font.size = $game_system.message_text_size
   @number_window.bitmap.font.name = $game_system.message_text_font
   # Create the cursor to track input position
   create_cursor
 end
 #--------------------------------------------------------------------------
 # * Get Number
 #--------------------------------------------------------------------------
 def number
   return @number
 end
 #--------------------------------------------------------------------------
 # * Set Number
 #     number : new number
 #--------------------------------------------------------------------------
 def number=(number)
   @number = [[number, 0].max, 10 ** @digits_max - 1].min
   refresh
 end
 #--------------------------------------------------------------------------
 # * Create Cursor
 #--------------------------------------------------------------------------
 def create_cursor
   @cursor = Sprite.new
   @cursor.bitmap = Bitmap.new(32,5)
   @cursor.x = @number_window.x
   @cursor.y = @number_window.y\
             + @number_window.bitmap.text_size('0').height + 3
   @cursor.z = 16
   @cursor.opacity = 185
   width = @number_window.bitmap.text_size('0').width + 2
   @cursor.bitmap.fill_rect(0,0,width,2,text_color(1))
 end
 #--------------------------------------------------------------------------
 # * Cursor Update
 #--------------------------------------------------------------------------
 def update_cursor
   @count += 1
   if @count % 10 == 0
     if @move_right == true
       @cursor.x += 1
     else
       @cursor.x -= 1
     end
     if @count == 20
       if @move_right == true
         @move_right = false
       else
         @move_right = true
       end
       @count = 0
     end
   end
 end
 #--------------------------------------------------------------------------
 # * Frame Update
 #--------------------------------------------------------------------------
 def update
   update_position
   # If up or down directional button was pressed
   if Input.repeat?(Input::UP) or Input.repeat?(Input::DOWN)
     $game_system.se_play($data_system.cursor_se)
     # Get current place number and change it to 0
     place = 10 ** (@digits_max - 1 - @index)
     n = @number / place % 10
     @number -= n * place
     # If up add 1, if down substract 1
     n = (n + 1) % 10 if Input.repeat?(Input::UP)
     n = (n + 9) % 10 if Input.repeat?(Input::DOWN)
     # Reset current place number
     @number += n * place
     refresh
   end
   # Cursor right
   if Input.repeat?(Input::RIGHT)
     if @digits_max >= 2
       $game_system.se_play($data_system.cursor_se)
       @index = (@index + 1) % @digits_max
       @cursor.x += @width
       if @index == 0
         @cursor.x = @number_window.x
       end
     end
   end
   # Cursor left
   if Input.repeat?(Input::LEFT)
     if @digits_max >= 2
       $game_system.se_play($data_system.cursor_se)
       @index = (@index + @digits_max - 1) % @digits_max
       @cursor.x -= @width
       if @index == @digits_max - 1
         @cursor.x += @width * @digits_max
       end
     end
   end
   update_cursor
 end

 #--------------------------------------------------------------------------
 # * Dispose
 #--------------------------------------------------------------------------

 def dispose
   @number_window.bitmap.clear
   @number_window = nil
   @cursor.bitmap.clear
   @cursor = nil
 end
 
 #--------------------------------------------------------------------------
 # * Update Position for Bubble Movement
 #--------------------------------------------------------------------------
 
 def update_position
   if @number_window.x != @x
     @number_window.x = @x
     @cursor.x = @number_window.x + (@index * @width)
   end
   if @number_window.y != @y
     @number_window.y = @y
     @cursor.y = @number_window.y\
               + @number_window.bitmap.text_size('0').height + 3
   end    
 end
 
 #--------------------------------------------------------------------------
 # * Refresh
 #--------------------------------------------------------------------------
 def refresh
   @number_window.bitmap.clear
   s = sprintf("%0*d", @digits_max, @number)
   for i in 0...@digits_max
     @number_window.bitmap.draw_text(i * @width, 0, 32, 32, s[i,1])
   end
 end
end

#========================================================================
#   Window Message
#
#       Controls message displayed from the show text event command
#
#       This modified version also allows for a message to be displayed
#         from a script.  Simply change $game_temp.message_text to
#         whatever text you want to display.  Remember that outside
#         of the message entry box in the event commands, you will have
#         to manuall insert the newline character "\n".)
#========================================================================

class Window_Message < Window_Base
 
 attr_accessor :contents_showing
 attr_accessor :finished
 attr_accessor :fade_in
 attr_accessor :fade_out
 attr_accessor :message
 attr_accessor :enter_pressed
 
 #--------------------------------------------------------------------------
 # * Object Initialization
 #
 #       Prepare message variables, then wait for re_initialize
 #--------------------------------------------------------------------------
 def initialize(sub=false, text=nil)
   # Bubble message variables
   @enter_pressed = false
   @text_height = 0
   @fade_in = false
   @event = 0
   @contents_showing = false
   @finished = nil
   @position = ''
   @active = false
   @lines = 0
   @up = 0
   @count = 0
   @cursor_count = 0
   @cursor_move_right = nil
   @wait = 0
   @wait_add = 0
   @pause = false
   @index = 0
   @sub = sub
   @face = nil
   @face_extension_x = 0
   @face_extension_y = 0
   @thought = false
   @bubble_color = nil
   @hp = nil
   if @sub == false
     @sub_number = nil
     @sub_windows = []
   end
   @indent = false
   @text = text
 end
 #--------------------------------------------------------------------------
 # * Re_Initialize
 #
 #       Call when actual text processing occurs
 #--------------------------------------------------------------------------
   def re_initialize
     
     if $game_temp.message_text != nil
       # Prevent improper cursor indention on choices
       @indent = false
       if $game_system.face_graphic_name != nil
         @face = $game_system.face_graphic_name
       else
         @face = nil
       end
       @face_extension_x = 0
       @face_extension_y = 0
       
       temp = Sprite.new
       temp = Bitmap.new(32,32)
       # Set @text to whatever text will display
       # For sub messages this will already be set
       if @text == nil
         @text = $game_temp.message_text
       end
       
       # Change \ escaped characters to character codes for processing
       prep_text
       
       # Determine number of lines in the message
       @lines = 0
       @text.each_line {|line|
         @lines += 1
       }
       
       temp_text = @text.clone
       # Get rid of any non displayed elements to determine the
       #   appropriate message box size
       
       def get_digits(integer)
         if integer < 10
           return 1
         elsif integer >= 10
           return 2
         elsif integer >= 100
           return 3
         end
       end
       
       while temp_text.slice(/\001\[([0-9]+)\]/)
         temp_text.slice!(/\001\[([0-9]+)\]/)
       end
       
       while temp_text.slice(/\002/)
         temp_text.slice!(/\002/)
       end
       
       while temp_text.slice(/\004\[([0-9]+)\]/)
         temp_text.slice!(/\004\[([0-9]+)\]/)
       end
       
       while temp_text.slice(/\005\[([0-9]+)\]/) != nil
         temp_text.slice!(/\005\[([0-9]+)\]/)
       end
       
       while temp_text.slice(/\006/)
         temp_text.slice!(/\006/)
       end
       
       while temp_text.slice(/\007\[([0-9]+)\]/)
         temp_text.slice!(/\007\[([0-9]+)\]/)
       end
       
       while temp_text.slice(/\011/) != nil
         temp_text.slice!(/\011/)
       end
               
       while temp_text.slice(/\015\[([0-9]+)\]/)
         temp_text.slice!(/\015\[([0-9]+)\]/)
         @face = Faces[$1.to_i]
       end
       
       # Make sure @thought is false unless specified true
       @thought = false
       while temp_text.slice(/\017/)
         temp_text.slice!(/\017/)
         @thought = true
         @text.slice!(/\017/)
       end
       
       # Change @bubble_color to keep default color unless specified other color
       @bubble_color = nil
       while temp_text.slice(/\018\[([0-9]+)\]/)
         temp_text.slice!(/\018\[([0-9]+)\]/)
         @bubble_color = mood_color($1.to_i)
         @text.slice!(/\018\[([0-9]+)\]/)
       end
       
       # Determine message bubble size
       bitmap = Sprite.new
       bitmap.bitmap = Bitmap.new(32,32)
       bitmap.bitmap.font.name = $game_system.message_text_font
       bitmap.bitmap.font.size = $game_system.message_text_size
       @text_rect = Rect.new(0,0,0,0)
       @line_width = []
       i = 0
       temp_text.each_line {|line|
         temp = bitmap.bitmap.text_size(line)
         @line_width[i] = temp.width
         if temp.width > @text_rect.width
           @text_rect.width = temp.width
         end
         @text_height = temp.height
         i += 1
       }
       
       # Add space for number input if necessary
       if $game_temp.num_input_variable_id > 0 && @sub == false
         @lines += 1
       end

       @text_rect.height = @text_height * @lines
       
       total_size = 0
       longest_line = 0
       current_line_height = @text_height
       @line_height_correction = [0,0,0,0]
       line = 0
       skip = 0
       
       for i in 0...temp_text.size
         # Check for bold toggling and icon insertion
         if temp_text[i] == 3
           bitmap.bitmap.font.bold == false ? bitmap.bitmap.font.bold = true : bitmap.bitmap.font.bold = false
         end
         # Check for icon insertion and add 24 pixels to this line's width
         if temp_text[i] == 12
           # Add sufficient width for an icon to be inserted in the text
           total_size += 24
           # Adjust the height of the text box if necessary
           if current_line_height < 24
             current_line_height = 24
             @text_rect.height += (24 - @text_height)
             @line_height_correction[line] = (24 - @text_height)
           end
           # Set variable to skip over icon text in sizing operations
           skip = 4
         end
         # Check for face graphic
         if temp_text[i] == 13
           temp_text.slice(/\015\[([0-9]+)\]/)
           skip = 4
           @face = Faces[$1.to_i]
         end
         # Check for new line character
         if temp_text[i] == 10
           total_size = 0
           current_line_height = @text_height
           line += 1
         end
         # Do not size characters relating to an icon
         if skip == 0
           total_size += bitmap.bitmap.text_size(temp_text.slice(i,1)).width
         else
           skip -= 1
         end
         # Make sure longest line sets the bubble width value
         longest_line = total_size if total_size > longest_line
       end
       
       # Insert facce graphic name if none explicit in message and
       # one is stored in $game_system
       if $game_system.face_graphic_name != nil && temp_text.slice(/\015\[([0-9]+)\]/) == nil
         @face = $game_system.face_graphic_name
       end
       # Account for face graphic in message box graphic
       if @face != nil
         determine_face_extension
       else
         @face_extension_x = 0
         @face_extension_y = 0
       end
       
       if $game_system.face_graphic_type == FACE_GRAPHIC_FULL
         @text_rect.width = longest_line
       else
         @text_rect.width = longest_line + @face_extension_x
       end

       # Set start values for text drawing
       @x=@y=0
       # Determine message position and create the message bubble
       #(only if $game_system.message_text_mode == TEXT_MODE_BUBBLE        
       if $game_system.message_text_mode != TEXT_MODE_INVISIBLE
         # Check for existence of necessary Bubble files if mode is set to Bubble
         if $game_system.message_text_mode == TEXT_MODE_BUBBLE
           # Correct text mode if files do not exist
           if File.exist?("Graphics/Pictures/Message_Bubble.png") == false || \
             File.exist?("Graphics/Pictures/Pointer2.png") == false
             $game_system.message_text_mode = TEXT_MODE_WINDOWSKIN
             default_color(8)
           end
         end            
         determine_position
         create_bubble
       else
         @bubble_correction_y = 0
         @message_box = Sprite.new
         @message_box.bitmap = Bitmap.new(@text_rect.width+25, @text_rect.height+26)
         @message_box.ox = @message_box.bitmap.width/2
         @message_box.oy = @message_box.bitmap.height/2
         @message_box.x = $game_system.invisible_position[0]
         @message_box.y = $game_system.invisible_position[1]
         if @message_box.y - @message_box.bitmap.height/2 < 0
           @message_box.y += @message_box.bitmap.height/2
         elsif @message_box.y + @message_box.bitmap.height/2 > 480
           @message_box.y -= @message_box.bitmap.height/2
         end
       end
       # Create message sprite for drawing actual text
       @message = Sprite.new
       @message.x = @message_box.x
       @message.y = @message_box.y
       if @sub == false
         @message.z += 1
       end
       @message.ox = @message_box.ox
       @message.oy = @message_box.oy
       @message.bitmap = \
         Bitmap.new(@message_box.bitmap.width,@message_box.bitmap.height)
       @message.bitmap.font.size = $game_system.message_text_size
       @message.bitmap.font.color = TEXT_COLOR_BLACK
       @speed = $game_system.message_text_speed
       @text_color = $game_system.default_color
     end
   end
 #--------------------------------------------------------------------------
 # * Dispose
 #--------------------------------------------------------------------------
 def dispose
   terminate_message
   $game_temp.message_window_showing = false
   if @input_number_window != nil
     @input_number_window.dispose
   end
 end
 
 #--------------------------------------------------------------------------
 # * Subs Finished?
 #
 #       Checks to see if all sub messages have finished writing
 #--------------------------------------------------------------------------
 def subs_finished?
   abort_flag = true
   count = 0
   for sub in @sub_windows
     count += 1 if (sub.finished == true && sub.enter_pressed == false)
     if sub.finished && sub.enter_pressed
       sub.enter_pressed = false
     end
   end
   abort_flag = false if count == @sub_windows.size
   if abort_flag == true
     return false
   else
     return true
   end
 end
 
 #--------------------------------------------------------------------------
 # * Erase Subs
 #
 #       Erases any existing subb messages
 #--------------------------------------------------------------------------
 def erase_subs
   if @sub_windows != nil
     for sub in @sub_windows
       sub.fade_out = true
     end
   end
 end
 #--------------------------------------------------------------------------
 # * Terminate Message
 #--------------------------------------------------------------------------
 def terminate_message
   # Call message callback
   if @message != nil
     @message_box.bitmap.clear
     @message.z -= 1
     @message.bitmap.clear
   end
   if @cursor != nil
     @cursor.bitmap.clear
     @cursor.dispose
     @cursor = nil
   end
   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
   # Dispose of gold window
   if @gold_window != nil && $game_temp.consecutive_gold_window == false
     @gold_window.dispose
     @gold_window = nil
   end
   @contents_showing = false
   @finished = nil
   @active = false
   $game_temp.message_window_showing = false
   @text = nil
   if @sub == false
     erase_subs
     temp = subs_finished?
     if temp == true
       for i in 0...@sub_windows.size
         @sub_windows[i] = nil
       end
       @sub_windows = []
     end
   end
   @sub_number = nil
 end
 #--------------------------------------------------------------------------
 # * Draw_Message
 #--------------------------------------------------------------------------
 def draw_message
   
   if @pause == true
     return
   end
   
   if @text == nil
     return
   end
   
   # Indent if choice and following message text
   index = $game_system.map_interpreter.index - 2
   code = $game_system.map_interpreter.list[index].code

   # Check for choice following a line of text
   if @y == $game_temp.choice_start && (code == 101 || code == 401) \
     && @indent == false && $separate_choices == false
     @indent = true
     #@x = 16 + @face_extension_x
   end
   
   if @wait == 0

     # Set correction for icon insertion
     y_correction = 0
     for i in 0..@y
       if @line_height_correction[i] != nil
         y_correction += @line_height_correction[i]
       end
     end
     # Set offset value dependant on text mode
     if $game_system.message_text_mode == TEXT_MODE_WINDOWSKIN
       offset = 10
     elsif $game_system.message_text_mode == TEXT_MODE_BUBBLE
       offset = 13
     else
       offset = 0
     end

     y = @text_y + (@text_height * @y) + @bubble_correction_y + y_correction
     
     # Insert face graphic if included
     if @text.slice!(/\015\[([0-9]+)\]/) || @face != nil
       draw_face
     end
     
     # Check for formatting options character from text
     @c = @text[0,1].slice(/./m)
     case @c
     # If \\
     when "\000"
       # Return to original text
       @c = "\\"
       @text.sub!("\000") {"\\"}
       return
     # If \C[n]
     when "\001"
       # Change text color
       @text.sub!(/\[([0-9]+)\]/, "")
       color = $1.to_i
       if color >= 0 and color <= 8
         @message.bitmap.font.color = text_color(color)
         @text_color = text_color(color)
       end
       @text.slice!("\001")
       # go to next text
       return
     # If \G
     when "\002"
       # Make gold window
       if @gold_window == nil
         @gold_window = Window_Gold_New.new
         #@gold_window.x = 560 - @gold_window.width
         if $game_temp.in_battle
         #  @gold_window.y = 192
         else
         #  @gold_window.y = 0
         end
         #@gold_window.opacity = @message.opacity
         #@gold_window.back_opacity = 200
       end
       @text.slice!("\002")
       # go to next text
       return
     # If \B
     when "\003"
       if @message.bitmap.font.bold == false
         @message.bitmap.font.bold = true
       else
         @message.bitmap.font.bold = false
       end
       @text.slice!("\003")
       return
     # If sub window is being called
     when "\004"
       @text.slice!("\004")
       @text.sub!(/\[([0-9]+)\]/, "")
       if @sub == false
         @sub_number = $1
         event_key = $game_temp.current_event
         # Find the cooresponding slave window
         # Must immediately follow master window and be
         # in consecutive order
         num = 0
         index = 0
         if $game_system.map_interpreter.list[$game_system.map_interpreter.index].code == 101 \
           && num != @sub_number.to_i
           for i in $game_system.map_interpreter.index\
             ...$game_system.map_interpreter.list.size
             if $game_system.map_interpreter.list[i].code == 101
               num = $game_system.map_interpreter.list[i].parameters[0].slice(/\\[Ss]\[([0-9]+)\]/)
               num = num.slice(/([0-9]+)/).to_i if num!= nil
               if num != nil
                 if num != @sub_number.to_i
                   num += 1
                 end
                 index = i
               end
               if num == @sub_number.to_i
                 break
               end
             end
           end
         else
           index = $game_system.map_interpreter.index
         end
         $game_system.map_interpreter.index = index
         # Save original index value for later
         original_index = $game_system.map_interpreter.index
         lines = 1
         if $game_system.map_interpreter.list[index].code == 101
           # Loop until the cooresponding \s[x] character is found
           loop do
             # Break if there is nothing more to sort through
             if $game_system.map_interpreter.list[index] == nil
               break
             end
             # Check the \s[x] for a match with the initial match in master message
             temp = $game_system.map_interpreter.list[index].parameters.clone
             number = temp[0].slice(/\\[Ss]\[([0-9]+)\]/)
             if number != nil
               number = number.slice(/[0-9]+/)
             end
             # If the proper match is found, create sub window
             if number == @sub_number
               # Create message text for sub message
               # Make sure sub message begins at first line
               while $game_system.map_interpreter.list[index].code != 101
                 index -= 1
               end
               text = $game_system.map_interpreter.list[index].parameters[0].clone
               if $game_system.map_interpreter.list[index+1].code == 401
                 text = text + "\n"
                 lines += 1
               end
               # Continue to add text if there is something to be added
               if $game_system.map_interpreter.list[index+1].code == 401
                 # Loop until all sub message text is added
                 loop do
                   index += 1
                   text = text + $game_system.map_interpreter.list[index].parameters[0].clone
                   if $game_system.map_interpreter.list[index+1].code == 401
                     text = text + "\n"
                     lines += 1
                   else
                     break
                   end
                 end
               end
               # If last sub window, set event index
               if @text.slice("\004") == nil
                 $game_system.map_interpreter.index = index + 1
               end
               # Create actual sub window object and place it into
               # @sub_windows array for update and disposal
               sub = Window_Message.new(true,text)
               @sub_windows.push sub
               break
             else
               index += 1
             end
           end # end loop
         return
         end # end if code == 101
       end
     # When \w[x]
     when "\005"
       @text.slice!(/\005\[([0-9]+)\]/)
       @wait_add = $1.to_i
       @wait += @wait_add
       @wait_add = 0
       return
     # When \p
     when "\006"
       @text.slice!("\006")
       if @enter_pressed == false
         @pause = true
       end
       return
     # When \q
     when "\011"
       terminate_message
       return
     # When \i[x]
     when "\014"  
       @text.slice!(/\014\[([0-9]+)\]/)
       icon = Sprite.new
       icon.opacity = 0
       icon.bitmap = Bitmap.new("Graphics/Icons/#{Icons[$1.to_i]}")
       true_y = @text_y + (@y * @text_height) + y_correction #+ y + @face_extension_y - (@text_rect.height + 25)
       @message.bitmap.blt(offset+@x+@face_extension_x,true_y,icon.bitmap,Rect.new(0,0,24,24))
       @x += 24
     # When \h[x]
     when "\016"
       @text.slice!(/\016\[([0-9]+)\]/)
       @hp = $game_party.actors[$1.to_i].hp
     end
     
     # Get 1 character from text
     @c = @text.slice!(/./m)

     if @c == nil
       @finished = true
       if $game_temp.choice_max > 0
         @cursor_move_right = true
         @index = 0
         create_cursor
         $separate_choices = false
       elsif $game_temp.num_input_variable_id > 0 && @sub == false
         digits_max = $game_temp.num_input_digits_max
         number = $game_variables[$game_temp.num_input_variable_id]
         x = @message.x + @message.bitmap.width/2 - 13
         y = @message.y - @message.bitmap.height/2\
             + @text_height * (@y) + @bubble_correction_y
         @input_number_window = Window_InputNumber.new(digits_max,x,y,@face_extension_x)
         @input_number_window.number = number
       end
       return
     end
     # If new line text
     if @c == "\n"
       # Add 1 to y
       @y += 1
       @x = 0
       # Indent if choice
       if @y >= $game_temp.choice_start
         @x = 0
       end
       # go to next text
       return
     end
     # Draw text    
     @message.bitmap.font.name = $game_system.message_text_font
     # Set exact y value for drawing
     if @face_extension_y != 0
       true_y = y + @face_extension_y - (@text_rect.height + 25)
     else
       true_y = y
     end
     
     true_y = @text_y + @y*@text_height + y_correction
     
     if $game_system.message_text_outline == TEXT_OUTLINE
       if $game_system.message_text_outline == TEXT_OUTLINE
         @message.bitmap.font.color = $game_system.message_text_outline_color
       elsif @message.bitmap.font.color != $game_system.default_color
         @message.bitmap.font.color = $game_system.default_color
       end
       # Correct character writing position for lower case "f"
       # due to Monotype Corsiva text writing glitch
       temp = @x
       if  @c == 'f' && $game_system.message_text_font == TEXT_FONT_CORSIVA
         @x -= 2
       end
       @message.bitmap.draw_text(offset+@x+@face_extension_x+1,true_y,40,32,@c)
       @message.bitmap.draw_text(offset+@x+@face_extension_x-1,true_y,40,32,@c)
       @message.bitmap.draw_text(offset+@x+@face_extension_x,true_y+1,40,32,@c)
       @message.bitmap.draw_text(offset+@x+@face_extension_x,true_y-1,40,32,@c)
       
       # Correct any change made to @x so that text is written
       # in the proper place
       if  @x != temp
         @x = temp
       end
       
     end
     
     @message.bitmap.font.color = @text_color
     
     # Correct character writing position for lower case "f"
     # due to Monotype Corsiva text writing glitch
     temp = @x
     if @c == 'f' && $game_system.message_text_font == TEXT_FONT_CORSIVA
       @x -= 2
     end
     @message.bitmap.draw_text(offset+@x+@face_extension_x,true_y,40,32,@c)
     # Correct any change made to @x so that text is written
     # in the proper place
     if @x != temp && $game_system.message_text_font == TEXT_FONT_CORSIVA
       @x = temp
     end
     # Add x to drawn text width
     @x += @message.bitmap.text_size(@c).width
     @wait = $game_system.message_text_speed
     @wait_add = 0
   else
     @wait -= 1
   end
 end
 
 #--------------------------------------------------------------------------
 # * Determine Face Extension
 #     This method determines how much distance needs to be added to the
 #     face graphic
 #--------------------------------------------------------------------------
 def determine_face_extension
   sprite = Sprite.new
   sprite.opacity = 0
   sprite.bitmap = Bitmap.new("Graphics/Faces/#{@face}")
   # Set extension value in horizontal direction
   if @face != nil
     @face_extension_x = sprite.bitmap.width
     if $game_system.face_graphic_type == FACE_GRAPHIC_BOX
       @face_extension_x += 5
     end
     if sprite.bitmap.height > @text_rect.height
       @face_extension_y = sprite.bitmap.height - @text_rect.height
     end
   end
   sprite.bitmap.dispose
   sprite = nil
 end
 
 #--------------------------------------------------------------------------
 # * Draw Face Graphics
 #--------------------------------------------------------------------------
 def draw_face
   sprite = Sprite.new
   sprite.opacity = 0
   sprite.bitmap = Bitmap.new("Graphics/Faces/#{@face}")
   rect = Rect.new(0,0,sprite.bitmap.width,sprite.bitmap.height)
   if $game_system.face_graphic_type == FACE_GRAPHIC_FULL
     @message.bitmap.blt(0,0,sprite.bitmap,rect)
   else
     y = @text_y + 10
     @message.bitmap.blt(13,y,sprite.bitmap,rect)
   end
   sprite.bitmap.dispose
   sprite = nil
 end
 
 #--------------------------------------------------------------------------
 # * Refresh
 #--------------------------------------------------------------------------
 def refresh
   if @pause == false
     if Input.trigger?(Input::C) && $game_system.message_skip_disabled == false
       @enter_pressed = true
       until @c == nil || @text == nil
         draw_message
       end
       @enter_pressed = false if @sub == false
     else
       if $game_system.message_text_skip != TEXT_SKIP_FULL
         count = $game_system.message_text_skip
         for i in 0...count
           draw_message if (@c != nil || @text != nil)
         end
       else
         if @c == nil && @text != nil
           draw_message
         end
         until @c == nil || @text == nil
           draw_message
         end
       end
     end
   else
     if Input.trigger?(Input::C)
       temp = subs_finished?
       if temp == true
         erase_subs
         @pause = false
       end
     end
     draw_message
   end
 end
 #--------------------------------------------------------------------------
 # * Frame Update
 #--------------------------------------------------------------------------
 def update
   # Update sub messages if they exist
   if @sub_windows != nil
     for i in 0...@sub_windows.size
       @sub_windows[i].update
     end
   end
   # Update gold window if it exists
   if @gold_window != nil
     @gold_window.update
   end
   # Update bubble graphic
   if @active == true && ($game_system.message_text_mode == TEXT_MODE_BUBBLE \
     || $game_system.message_text_mode == TEXT_MODE_WINDOWSKIN)
     update_bubble
   end
   # If fade in
   if @fade_in
     if $game_system.message_text_mode == TEXT_MODE_WINDOWSKIN
       max_opacity = 192
     else
       max_opacity = 255
     end
     @message_box.opacity += 24
     if @input_number_window != nil
       @input_number_window.contents_opacity += 24
     end
     if @message_box.opacity == max_opacity
       @fade_in = false
     end
     return
   end
   
   # If fade out
   if @fade_out
     @message_box.opacity -= 48
     @message.opacity -= 48
     if @cursor != nil
       @cursor.opacity -= 48
     end
     if @input_number_window != nil
       @input_number_window.contents_opacity -= 24
     end
     if @gold_window != nil && $game_temp.consecutive_gold_window == false
       @gold_window.fade_out
     end
     if @message_box.opacity == 0 && @message.opacity == 0
       @fade_out = false
       terminate_message if @sub == false
     end
     return
   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
       
       if @sub_windows != nil
         temp = subs_finished?
         if temp == true
           @fade_out = true
           erase_subs
         end
       end
     end
     return
   end
   # If message is being displayed
   if @contents_showing && @finished == true
     # If choice isn't being displayed, show pause sign
     if $game_temp.choice_max == 0
       @active = true
     else
       update_cursor
     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)
       if $game_temp.choice_max > 0
         $game_system.se_play($data_system.decision_se)
         $game_temp.choice_proc.call(@index)
       end
       if @sub_windows != nil
         temp = subs_finished?
         if temp == true
           @fade_out = true
           erase_subs
         end
       end
     end
     return
   end
   # If display wait message or choice exists when not fading out
   if $game_temp.message_text != nil && @finished == nil
     @contents_showing = true
     $game_temp.message_window_showing = true
     @finished = false
     re_initialize
     Graphics.frame_reset
     if @input_number_window != nil
       @input_number_window.contents_opacity = 0
     end
     @fade_in = true
     return
   elsif @finished == false
     refresh
     return
   end
 end
 #--------------------------------------------------------------------------
 # Create Message Bubble
 #--------------------------------------------------------------------------
 # Remember! The bubble will currently display based on the src_rect of
 # the $character_sprite bitmap...need to work on this...
 
 def create_bubble # Text can be multiple lines
   sprites = $scene.spriteset.character_sprites
   @event_x = sprites[@event].x
   @event_y = sprites[@event].y
   # Draw bubble bitmap to blt from
   bubble = Sprite.new
   if @position.include?('Flipped_Down')
     @bubble_correction_y = 7
   else
     @bubble_correction_y = 0
   end
   # Set basic x and y values for bubble drawing
   # If a face graphic will be drawn
   if @face != nil
     # If face graphic drawn outside bubble
     if $game_system.face_graphic_type == FACE_GRAPHIC_FULL
       base_y = (@face_extension_y + @text_rect.height) - (@text_rect.height + 20)
       # If bubble is flipped horizontally
       if @position.include?('Mirror')
         base_x = 0
       else
         base_x = @face_extension_x
       end
       # If bubble is not flipped vertically
       if not @position.include?('Flipped_Down')
         base_y -= 6
       end
       base_height = @text_rect.height
       height_extension = @face_extension_y
       if $game_system.message_text_mode == TEXT_MODE_BUBBLE
         width_extension = @face_extension_x + 25
       elsif $game_system.message_text_mode == TEXT_MODE_WINDOWSKIN
         width_extension = @face_extension_x + 20
       end
     # If face graphic drawn inside bubble
     else
       base_x = 0
       base_y = @bubble_correction_y
       base_height = @face_extension_y + @text_rect.height
       if $game_system.message_text_mode == TEXT_MODE_BUBBLE
         width_extension = 25
         height_extension = 20 + 6
       elsif $game_system.message_text_mode == TEXT_MODE_WINDOWSKIN
         width_extension = 20
         height_extension = 20
       end
     end
   else
     base_x = 0
     base_y = @bubble_correction_y
     base_height = @text_rect.height
     if $game_system.message_text_mode == TEXT_MODE_BUBBLE
       height_extension = 20 + 7
       width_extension = 25
     elsif $game_system.message_text_mode == TEXT_MODE_WINDOWSKIN
       height_extension = 20
       width_extension = 20
     end
   end
   base_width = @text_rect.width
   
   # Set text drawing starting coordinates
   @text_y = base_y
   
   if $game_system.message_text_mode == TEXT_MODE_BUBBLE
     bubble.bitmap = Bitmap.new("Graphics/Pictures/Message_Bubble")
   elsif $game_system.message_text_mode == TEXT_MODE_WINDOWSKIN
     bubble.bitmap = Bitmap.new("Graphics/Windowskins/"+$data_system.windowskin_name)
   end
   
   # Make the bubble bitmap the appropriate size
   @message_box = Sprite.new
       
   true_width = base_width + width_extension
   true_height = base_height + height_extension
   @message_box.bitmap = Bitmap.new(true_width,true_height)
   @message_box.ox = @message_box.bitmap.width/2
   @message_box.oy = @message_box.bitmap.height/2
   @message_box.x = sprites[@event].x\
     + @message_box.bitmap.width/2\
     + sprites[@event].src_rect.width/2 - 15
   if $game_system.face_graphic_type == FACE_GRAPHIC_FULL
     @message_box.x -= @face_extension_x
   end
   @message_box.y = sprites[@event].y\
     - ((sprites[@event].src_rect.height/3)*2)\
     - @message_box.oy
   if $game_system.face_graphic_type == FACE_GRAPHIC_FULL \
     && @position.include?('Flipped_Down')
     @message_box.y -= @face_extension_y
   end
   if @sub == false
     @message_box.z += 1
   end
   
   # Set rectangles for graphic block transfers
   if $game_system.message_text_mode == TEXT_MODE_BUBBLE
     upper_left = BUBBLE_UPPER_LEFT
     lower_left = BUBBLE_LOWER_LEFT
     upper_right = BUBBLE_UPPER_RIGHT
     lower_right = BUBBLE_LOWER_RIGHT
     
   elsif $game_system.message_text_mode == TEXT_MODE_WINDOWSKIN
     background = Rect.new(base_x+1,base_y+1,base_width+20-2,base_height+20-2)
     source_rect = Rect.new(0,0,128,128)
     @message_box.bitmap.stretch_blt(background,bubble.bitmap,source_rect)
     upper_left = SKIN_UPPER_LEFT
     lower_left = SKIN_LOWER_LEFT
     upper_right = SKIN_UPPER_RIGHT
     lower_right = SKIN_LOWER_RIGHT
   end
   
   # Blt the upper left quadrant of the bubble
   rect = Rect.new(0,0,13,10)    
   @message_box.bitmap.blt(base_x,base_y,bubble.bitmap,upper_left)
   
   # Blt the lower left quadrant of the bubble
   rect.set(0,10,13,9)
   y = base_y + base_height + lower_left.height
   @message_box.bitmap.blt(base_x,y,bubble.bitmap,lower_left)
   
   # Blt the upper right quadrant of the bubble
   rect.set(13,0,12,10)
   x = base_x + base_width + upper_right.width
   @message_box.bitmap.blt(x,base_y,bubble.bitmap,upper_right)
   
   # Blt the lower right quadrant of the bubble
   rect.set(13,10,12,9)
   x = base_x + base_width + lower_right.width
   y = base_y + base_height + upper_right.height
   @message_box.bitmap.blt(x,y,bubble.bitmap,lower_right)
   
   if $game_system.message_text_mode == TEXT_MODE_BUBBLE
     # Fill in the left side gap
     rect.set(0,8,13,1)    
     x = base_x
     y = base_y + upper_left.height
     rect2 = Rect.new(x,y,13,base_height)
     @message_box.bitmap.stretch_blt(rect2,bubble.bitmap,rect)
       
     # Fill in the right side gap
     rect.set(13,8,12,1)
     x = base_x + base_width + upper_right.width
     y = base_y + upper_right.height
     rect2 = Rect.new(x,y,13,base_height)
     @message_box.bitmap.stretch_blt(rect2,bubble.bitmap,rect)
     
     # Fill in the middle gap    
     x = base_x + upper_left.width - 1
     y = base_y
     width = base_width
     height = base_height + upper_left.height + lower_left.height
     rect.set(x,y,1,height)
     rect2.set(x,y,base_width,height)
     @message_box.bitmap.stretch_blt(rect2,@message_box.bitmap,rect)
   
     # Place character pointer either below or above bubble
     if @position.include?('Flipped_Down')
       if @thought == false
         rect.set(15,19,10,8)
       else
         rect.set(25,8,10,8)
       end
       x = base_x + 9
       y = base_y - @bubble_correction_y
       @message_box.bitmap.blt(x,y,bubble.bitmap,rect)
       @message_box.y = sprites[@event].y\
         - ((sprites[@event].src_rect.height/3)*2)\
         + @message_box.oy - @face_extension_y#- (offset_y-@text_rect.height-20)
     else
       if @thought == false
         rect.set(0,19,10,8)
       else
         rect.set(25,0,10,8)
       end
       x = base_x + 9
       y = base_y + base_height + 17
       @message_box.bitmap.blt(x,y,bubble.bitmap,rect)
     end
     if @position.include?('Mirror')
       @message_box.mirror = true
       @message_box.x = sprites[@event].x\
         - sprites[@event].src_rect.width/2\
         - @message_box.bitmap.width/2 + 15 + base_x #+offset_x
     end
   # Fill in rim of a windowskin box
   elsif $game_system.message_text_mode == TEXT_MODE_WINDOWSKIN
     
     # Top rim
     dest_rect = Rect.new(base_x+10,base_y,base_width,10)
     source_rect = Rect.new(148,0,24,10)
     @message_box.bitmap.stretch_blt(dest_rect,bubble.bitmap,source_rect)
     
     # Bottom rim
     dest_rect = Rect.new(base_x+10,base_y+base_height+20-10,base_width,10)
     source_rect = Rect.new(148,54,24,10)
     @message_box.bitmap.stretch_blt(dest_rect,bubble.bitmap,source_rect)
     
     # Left rim
     dest_rect = Rect.new(base_x,base_y+10,10,base_height)
     source_rect = Rect.new(128,10,10,44)
     @message_box.bitmap.stretch_blt(dest_rect,bubble.bitmap,source_rect)
     
     # Right rim
     dest_rect = Rect.new(base_x+base_width+20-10,base_y+10,10,base_height)
     source_rect = Rect.new(182,10,10,44)
     @message_box.bitmap.stretch_blt(dest_rect,bubble.bitmap,source_rect)
     
   end
   # Prepare bubble for up/down animation
   @up = true
   @message_box.opacity = 0
   @fade_in = true
   # Dispose of the blted bubble
   bubble.bitmap.dispose
   bubble = nil
   @contents_showing = true
   @active = true
   
   if @bubble_color.class == Color
     @message_box.color = @bubble_color
   end

 end
 #--------------------------------------------------------------------------
 # * Determine Bubble Position
 #--------------------------------------------------------------------------
 def determine_position(no_text=false)
   
   sprites = $scene.spriteset.character_sprites
   
   @position = ''
   # Check upper screen boundary
   temp = @text_rect.height + 25 + sprites[@event].src_rect.height
   if sprites[@event].y - temp < 0
     @position += 'Flipped_Down'
   end
   temp = @text_rect.width + 45
   if sprites[@event].x\
     + sprites[@event].src_rect.width/2 + temp > 640
     @position += 'Mirror'
   end
   if no_text == false
     if @text.slice(/\007\[([0-9]+)\]/)
       #c = @text.slice(/[0-9]+/).to_i
       @text.slice!(/\007\[([0-9]+)\]/)
       c = $1.to_i
       @position = ''
       if c == 0
         @position = ''
       elsif c == 1
         @position = 'Flipped_Down'
       elsif c == 2
         @position = 'Mirror'
       elsif c == 3
         @position = 'Flipped_Down Mirror'
       end
     end
   end
 end
 #--------------------------------------------------------------------------
 # * Bubble Graphic Update
 #--------------------------------------------------------------------------
 def update_bubble
   
   # Create an easier to use access point to the screen sprites
   sprites = $scene.spriteset.character_sprites
   
   # Bounce bubble
   if $game_system.message_text_mode == TEXT_MODE_BUBBLE \
       && $game_system.message_bubble_bounce == BUBBLE_BOUNCE_ON
     
     @count += 1
     
     if @count % 10 == 0 && @up == true
       @message_box.y -= 1
       if @input_number_window != nil
         @input_number_window.y -= 1
       end
       if @cursor != nil
         @cursor.y -= 1
       end
       if @count == 20
         @count = 0
         @up = false
       end
     elsif @count % 10 == 0 && @up == false
       @message_box.y += 1
       if @input_number_window != nil
         @input_number_window.y += 1
       end
       if @cursor != nil
         @cursor.y += 1
       end
       if @count == 20
         @count = 0
         @up = true
       end
     end
   end
       
   x = @event_x
   y = @event_y
   
   @event_x = sprites[@event].x
   @event_y = sprites[@event].y
   
   if @event_x != x || @event_y != y
           
     if @event_x != x
       @message_box.x = @message_box.x + (@event_x - x)
       if @input_number_window != nil
         @input_number_window.x = @input_number_window.x + (@event_x-x)
       end
       if @cursor != nil
         @cursor.x = @cursor.x + (@event_x - x)
       end
     end
     
     if @event_y - @face_extension_y != y
       @message_box.y = @message_box.y + (@event_y - y)
       if @input_number_window != nil
         @input_number_window.y = @input_number_window.y + (@event_y-y)
       end
       if @cursor != nil
         @cursor.y = @cursor.y + (@event_y - y)
       end
     end
         
     change = false
     # Check upper screen boundary
     temp = @message_box.y - @message_box.bitmap.height/2
     if temp < 0 && (@position.include?('Flipped_Down') == false)
       change = true
     end
     # Check lower screen boundary
     temp = @message_box.y + @message_box.bitmap.height/2
     if temp > 480
       change = true
     end
     # Check right screen boundary
     temp = @message_box.x + @message_box.bitmap.width/2
     if temp > 640
       change = true
     end
     # Check left screen boundary
     temp = @message_box.x - @message_box.bitmap.width/2
     if temp < 0
       change = true
     end
     
     if change == true
       @message_box.bitmap.clear
       determine_position(true)
       create_bubble
       if @cursor != nil
         reset_cursor
       end
       if @position.include?('Flipped_Down')
         get_text
       end
       @message_box.z -= 1
     end
     

   end
   
   @message.y = @message_box.y
   @message.x = @message_box.x      

 end
 
 #--------------------------------------------------------------------------
 # * Get Message Text
 #--------------------------------------------------------------------------

 def get_text
   
   index = $game_system.map_interpreter.index - 1
   until $game_system.map_interpreter.list[index].code == 101
     index -= 1
   end
   old_text = @text.clone
   @text = ""
   @lines.times do
     if $game_system.map_interpreter.list[index].code == 102 \
       || $game_system.map_interpreter.list[index].code == 402
       for i in 0...$game_system.map_interpreter.list[index].parameters.size
         if $game_system.map_interpreter.list[index].parameters[0][i].class == String
           @text = @text + $game_system.map_interpreter.list[index].parameters[0][i].clone + "\n"
         end
       end
     else        
       @text = @text + $game_system.map_interpreter.list[index].parameters[0].clone + "\n"
     end
     index += 1
   end
   
   prep_text
   @message.bitmap.clear
   @x = 0
   @x += 10 if $game_system.message_text_mode == TEXT_MODE_WINDOWSKIN
   @y = 0
   begin
     draw_message
   end until @text == old_text
 end

 #--------------------------------------------------------------------------
 # * Prepare Text for processing
 #--------------------------------------------------------------------------
 
 def prep_text
   # Determine what event the message will be over
   if @text.slice!(/\\[Ee]\[([0-9]+)\]/) == nil
     @event = -1 # Default to over player
   else
     @event = $1.to_i - 1
   end
   # Control text processing
   begin
     @last_text = @text.clone
     @text.gsub!(/\\[Vv]\[([0-9]+)\]/) { $game_variables[$1.to_i] }
   end until @text == @last_text
   @text.gsub!(/\\[Nn]\[([0-9]+)\]/) do
     $game_actors[$1.to_i] != nil ? "#{$game_actors[$1.to_i].name}:"+"\n" : ""
   end
   # Change "\\\\" to "\000" for convenience
   @text.gsub!(/\\\\/) { "\000" }
   # Change "\\C" to "\001" and "\\G" to "\002"
   #   and "\\B" to "\003" and "\\S" to "\004"
   #   and "\\W" to "\005" and "\\p" to "\006"
   #   and "\\F" to "\007" and "\\q" to "\011"
   #   and "\\I" to "\014  and "\\z" to "\015"
   #   and "\\T" to "\017  and "\\m" to "\018"
 
   while @text.slice(/\\[Cc]\[([0-9]+)\]/) != nil
     @text.gsub!(/\\[Cc]\[([0-9]+)\]/) { "\001[#{$1}]" }
   end
   @text.gsub!(/\\[Gg]/) { "\002" }
   @text.gsub!(/\\[Bb]/) { "\003" }
   @text.gsub!(/\\[Ss]/) { "\004" }
   while @text.slice(/\\[Ww]\[([0-9]+)\]/) != nil
     @text.gsub!(/\\[Ww]\[([0-9]+)\]/) { "\005[#{$1}]" }
   end        
   while @text.slice(/\\[Pp]/) != nil
     @text.gsub!(/\\[Pp]/) { "\006" }
   end
   while @text.slice(/\\[Ii]/) != nil
     @text.gsub!(/\\[Ii]\[([0-9]+)\]/) { "\014[#{$1}]" }
   end
   while @text.slice(/\\[Zz]/) != nil
     # Check for face directory existence
     if File.directory? Dir::getwd + "/Graphics/Faces/"
       @text.slice(/\\[Zz]\[([0-9]+)\]/)
       # Check for file existence
       if Faces[$1.to_i] != nil
         @text.gsub!(/\\[Zz]\[([0-9]+)\]/) { "\015[#{$1}]" }
       else
         @text.gsub!(/\\[Zz]\[([0-9]+)\]/) { "" }
       end
     else
       @text.gsub!(/\\[Zz]\[([0-9]+)\]/) { "" }
     end
   end
   while @text.slice(/\\[Hh]/) != nil
     @text.gsub!(/\\[Hh]\[([0-9]+)\]/) { "\016[#{$1}]" }
   end
   @text.gsub!(/\\[Ff]/) { "\007" }
   @text.gsub!(/\\[Qq]/) { "\011" }
   @text.gsub!(/\\[Tt]/) { "\017" }
   while @text.slice(/\\[Mm]\[([0-9]+)]/)
     @text.gsub!(/\\[Mm]\[([0-9]+)]/) { "\018[#{$1}]" }
   end
   @text.slice!(/\\[Nn][Cc]/)
 end
 #--------------------------------------------------------------------------
 # * Create cursor graphic
 #--------------------------------------------------------------------------
 def create_cursor
   
   if $game_system.message_text_mode == TEXT_MODE_BUBBLE
     @cursor = Sprite.new
     @cursor.bitmap = Bitmap.new("Graphics/Pictures/Pointer2")
     @cursor.ox = @cursor.bitmap.width
     if $separate_choices == false
       indent = @message.bitmap.text_size("    ").width
     else
       indent = @message.bitmap.text_size("    ").width
     end
     
   elsif $game_system.message_text_mode == TEXT_MODE_WINDOWSKIN
     template = Sprite.new
     template.opacity = 0
     template.bitmap = Bitmap.new("Graphics/Windowskins/"+$data_system.windowskin_name)
     source_rect = Rect.new(128,64,32,32)
     # Set width of the cursor rectangle
     width = @line_width[@lines-$game_temp.choice_max+@index]
     # Correct for added spaces in choices following main text
     width -= @message.bitmap.text_size('     ').width if @indent == true
     dest_rect = Rect.new(0,0,width,@text_height)
     if @cursor == nil
       @cursor = Sprite.new
     else
       @cursor.bitmap.clear
       @cursor.bitmap.dispose
     end
     @cursor.opacity = 255
     @cursor.bitmap = Bitmap.new(width,@text_height)
     # Upper left
     source_rect = Rect.new(128,64,3,3)
     @cursor.bitmap.blt(0,0,template.bitmap,source_rect)
     # Upper right
     source_rect = Rect.new(157,64,3,3)
     @cursor.bitmap.blt(width-3,0,template.bitmap,source_rect)
     # Lower left
     source_rect = Rect.new(128,93,3,3)
     @cursor.bitmap.blt(0,@text_height-3,template.bitmap,source_rect)
     # Lower right
     source_rect = Rect.new(157,93,3,3)
     @cursor.bitmap.blt(width-3,@text_height-3,template.bitmap,source_rect)
     # Top fill in
     source_rect = Rect.new(131,64,26,3)
     dest_rect = Rect.new(3,0,width-6,3)
     @cursor.bitmap.stretch_blt(dest_rect,template.bitmap,source_rect)
     # Bottom fill in
     source_rect = Rect.new(131,93,26,3)
     dest_rect = Rect.new(3,@text_height-3,width-6,3)
     @cursor.bitmap.stretch_blt(dest_rect,template.bitmap,source_rect)
     # Left fill in
     source_rect = Rect.new(128,67,3,@text_height-6)
     dest_rect = Rect.new(0,3,3,@text_height-6)
     @cursor.bitmap.stretch_blt(dest_rect,template.bitmap,source_rect)
     # Right fill in
     source_rect = Rect.new(157,67,3,@text_height-6)
     dest_rect = Rect.new(width-3,3,3,@text_height-6)
     @cursor.bitmap.stretch_blt(dest_rect,template.bitmap,source_rect)
     # Center fill in
     source_rect = Rect.new(131,67,26,26)
     dest_rect = Rect.new(3,3,width-6,@text_height-6)
     @cursor.bitmap.stretch_blt(dest_rect,template.bitmap,source_rect)
     
     @cursor.ox = 0
     template.bitmap.clear
     template = nil
     indent = @message.bitmap.text_size("  ").width
   end
   
     @cursor.oy = @cursor.bitmap.height/2
     
     if @indent == true
       @cursor.x = @message.x - @message.ox + 14 + @face_extension_x + indent
     else
       @cursor.x = @message.x - @message.ox + @face_extension_x + indent
     end

     y_correction = 0
     @line_height_correction.each { |number|
         y_correction += number
     }
     
     @cursor.y = @message.y - @message.oy + @bubble_correction_y \
       + 10 + @text_height/2 + ((@lines-$game_temp.choice_max+@index)*@text_height)\
       + y_correction
     @cursor.z += 5
     # More accurately place windowskin rectangle
     if $game_system.message_text_mode == TEXT_MODE_WINDOWSKIN
       @cursor.y -= 1
     end
     # Correct for bad sizing of bitmap draw_text method
     if $game_system.message_text_size == TEXT_SIZE_LARGE
       @cursor.y -= 2
     elsif
       $game_system.message_text_size == TEXT_SIZE_JUMBO
       @cursor.y -= 6
     end
   
 end  
 #--------------------------------------------------------------------------
 # * Reset cursor graphic
 #--------------------------------------------------------------------------
 
 def reset_cursor
   
   @cursor.x = @message_box.x - @message_box.ox + 16
   @cursor.y = @message_box.y - @message_box.oy\
     + ((@lines-$game_temp.choice_max + 1)*@text_height)\
     + @bubble_correction_y
 end
 
 #--------------------------------------------------------------------------
 # * Update cursor graphic
 #--------------------------------------------------------------------------
 def update_cursor
   if $game_system.message_text_mode == TEXT_MODE_BUBBLE
     modulus = 10
   elsif $game_system.message_text_mode == TEXT_MODE_WINDOWSKIN
     modulus = 3
   end
   
   @cursor_count += 1
   if @cursor_count % modulus  == 0 && @cursor_move_right == true
     if $game_system.message_text_mode == TEXT_MODE_BUBBLE
       @cursor.x += 1
     elsif $game_system.message_text_mode == TEXT_MODE_WINDOWSKIN
       @cursor.opacity -= 10
     end
     if @cursor_count == modulus * 5
       @cursor_count = 0
       @cursor_move_right = false
     end
     
   elsif @cursor_count % modulus == 0 && @cursor_move_right == false
     if $game_system.message_text_mode == TEXT_MODE_BUBBLE
       @cursor.x -= 1
     elsif $game_system.message_text_mode == TEXT_MODE_WINDOWSKIN
       @cursor.opacity += 10
     end
    if @cursor_count == modulus * 5
       @cursor_count = 0
       @cursor_move_right = true
     end
   end
   
   if Input.trigger?(Input::UP)
     if @index != 0
       @cursor.y -= @text_height
       @index -= 1
     else
       @cursor.y += @text_height * ($game_temp.choice_max-1)
       @index = $game_temp.choice_max-1
     end
     if $game_system.message_text_mode == TEXT_MODE_WINDOWSKIN
       create_cursor
     end
   elsif Input.trigger?(Input::DOWN)
     if @index != $game_temp.choice_max-1
       @cursor.y += @text_height
       @index += 1
     else
       @cursor.y -= @text_height * ($game_temp.choice_max-1)
       @index = 0
     end
     if $game_system.message_text_mode == TEXT_MODE_WINDOWSKIN
       create_cursor
     end
   end
 end  
 
end
17
Video Games / Re: Free Steam Keys
July 25, 2014, 01:10:11 pm
 Can I get Magicka? I would like to play it with my friends.
18
Projects / Games / Re: Tower of Paragon
July 23, 2014, 03:31:49 pm
 Sorry for late answering...I've been gone for the past days.
The XPPlatformer.dll is not missing. I've redownloaded the project and I have the same problem...Maybe I'm missing something else?
19
Projects / Games / Re: Tower of Paragon
July 21, 2014, 03:46:27 am
  The error appears when I try to start a New Game.
  I've copied the .dll from system32 into the game folder and now the file is not a problem anymore, but now it throws me this error:
Spoiler: ShowHide
20
Projects / Games / Re: Tower of Paragon
July 20, 2014, 02:37:13 am
 It throws this error:
Spoiler: ShowHide


And I have  C++ Redistributable Package installed. Any idea?