Envision, Create, Share

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

Can someone help me with the UMS a little? Thanks!

The Universal Message System by ccoa seems to be giving me some slight trouble. I imagine this has to do with the script or my being unknowledgeable in the script (Ive been using the Advanced Message Script up until now).

In game commands such as \p[5], which I believe should pause the text for 5 frames, end up turning my text violet. Odd. Other numbers in \p[] don't turn it violet, but they don't pause the script, and the \ shows in text (the p[] does not, however.) Also, \w[1], which should theoretically close the window after 1 frame, does not work. I imagine other commands don't work either. Could someone take a look and give me a hand? I'd be very appreciative and would include you in the credits for my game^_^

I've also included a demo, if that helps. I'm trying to provide all I can so that this can be resolved soon... Thanks once again.
http://www.mediafire.com/?0xltnc32ez4

Here's the script:

# *****************************************************************************
# * Universal Message System
# * v1.30
# * by Ccoa
# *****************************************************************************
# Usage:
=begin

IN MESSAGE CODES
\b - toggle bold on and off
\bopc - change the back opacity for this message to i (should be 0-255)
\c - change the text color
\c[#IIIIII] - change the text color to the hex code (temporary)
\e - place the text box over event i (0 = player, -1 no event)
\face \fr - change face justification to right
\g - display the gold window
\height - height of the message window, works only in normal mode
\i - toggle italics on and off
\ignr - Do not write anything on this line, only process codes, must be the first thing on a line
\jc - justify the window to the center, ignored if using \e
\jl - justify the window to the left, ignored if using \e
\jr - justify the window to the right, ignored if using \e
\m - toggle mode between normal and fit window to text
\n - display the name of actor i
\nm
\inc - include this window in the last

OUT OF MESSAGE CODES (use in a Script event command)
$game_system.ums_mode = NORMAL_MODE - switch to normal mode
$game_system.ums_mode = FIT_WINDOW_TO_TEXT - switch to fit window mode
$game_system.text_skip = true - turn text skip on
$game_system.text_skip = false
true - turn text skip off (true is necessary)
$game_system.text_mode = WRITE_FASTER - change skip mode to write faster
$game_system.text_mode = WRITE_ALL - change skip mode to write all
$game_system.write_speed = i - change the delay between letters to i frames
$game_system.window_height = i - change the window height to i
$game_system.window_width = i - change the window width to i
$game_system.window_justification = RIGHT - make the window right justified
$game_system.window_justification = LEFT - make the window left justified
$game_system.window_justification = CENTER - make the window center justified
$game_system.face_graphic = "filename" - change the face graphic to filename.png
$game_system.face_graphic = "" - change the face graphic to none
$game_system.face_graphic_justification = LEFT - the face graphic is on the left side
$game_system.face_graphic_justification = RIGHT - the face graphic is on the right side
$game_system.face_graphic_position = TOP - face graphic appears on top of window
$game_system.face_graphic_position = CENTER - face graphic appears centered in window
$game_system.face_graphic_position = BOTTOM - face graphic appears on the bottom of window
$game_system.shadow_text = true - turn text shadowing on
$game_system.shadow_text = false
true - turn text shadowing off (true is necessary)
$game_system.shadow_color = Color.new(red, blue, green, alpha) - change shadow color
$game_system.message_event = what event to put the message over (0 = player, -1 = no event)
$game_system.comic_enabled = false
true - turn off comic thingy
$game_system.comic_enabled = true - turn on comic thingy (only works with message_event not -1)
$game_system.comic_style = TALK1 - use the talk1.png comic thingy
$game_system.comic_style = TALK2 - use the talk2.png comic thingy
$game_system.comic_style = THOUGHT - use the thought.png comic thingy
$game_system.name = "name" - change the text of the name window to name
$game_system.name = "" - remove the name window
$game_system.font = "name" - change the font to name
$game_system.font = "" - return the font to the default
$game_system.text_justification = CENTER - center justify the text
$game_system.text_justification = LEFT - left justify the text
$game_system.text_justification = RIGHT - right justify the text
$game_system.show_pause = true - show pause icon when waiting for user input
$game_system.show_pause = false - don't show pause icon when waiting for user input
$game_system.shake = 0 - turn window shake off
$game_system.shake = i - set shake to i, higher i is bigger shake
$game_system.sound_effect = "" - turn off the letter-by-letter SE
$game_system.sound_effect = "sename" - play the SE sename with each letter written
$game_system.animated_faces = false - do not use animated faces
$game_system.animated_faces = true - use animated faces
$game_system.animation_pause = i - Wait i frames between each animation
$game_system.face_frame_width = i - Each frame on the faceset is i pixels
$game_system.resting_face = "" - Do not use a resting face
$game_system.resting_face = "name" - Use a different animated face named facenamename when done talking
$game_system.resting_animation_pause = i - Wait i frames between resting animations
$game_system.text_mode = ONE_LETTER_AT_A_TIME - write text one letter at a time
$game_system.text_mode = ALL_AT_ONCE - write text all at once
$game_system.font_color = Color.new(R, G, B, A) - permanently change the font color to the RGBA color given here
$game_system.font_color = nil - return the font color permanently to normal_color (white, by default)
$game_system.windowskin = "windowskinname" - change the message box windowskin to windowskin
$game_system.windowskin = "" - change the message box windowskin back to the one in the database
$game_system.name_window = true - show the name window
$game_system.name_window = false - hide the name window (just show the text)
$game_system.opacity = i - change the message window back opacity to i (0-255)

=end
# *****************************************************************************
# CONSTANTS
# *****************************************************************************

# modes
NORMAL_MODE = 0
FIT_WINDOW_TO_TEXT = 1

#text modes
ONE_LETTER_AT_A_TIME = 0
ALL_AT_ONCE = 1

# skip modes
WRITE_FASTER = 0
WRITE_ALL = 1

# justifications
RIGHT = 0
CENTER = 1
LEFT = 2

# positions for extra objects (face graphics, choice box, etc)
ABOVE = 0 # place the object above the top of the message box
CENTER = 1 # center the object vertically inside the message box
BOTTOM = 2 # place the bottom of the object on the bottom of the message box
SIDE = 3 # to the side of the message box (which side depends on justification)

# comic type
TALK1 = 0
TALK2 = 1
THOUGHT = 2


# *****************************************************************************
# Changes to Game_System. This allows any changes made to be saved when the
# game is saved.
# *****************************************************************************

class Game_System
attr_accessor :ums_mode # what mode the UMS is in
attr_accessor :text_skip # whether or not text skip is activated
attr_accessor :skip_mode # write the text faster while C is pressed, or just skip to the end
attr_accessor :write_speed # frame delay between characters

attr_accessor :text_mode # write one letter at a time, or all at once?

attr_accessor :window_height # default height of message window
attr_accessor :window_width # default width of message window
attr_accessor :window_justification # default justification of window

attr_accessor :face_graphic # current face graphic
attr_accessor :face_graphic_justification # justification of face graphic
attr_accessor :face_graphic_position # position of face graphic

attr_accessor :shadowed_text # whether or not to draw a shadow behind the text
attr_accessor :shadow_color # the shadow color

attr_accessor :choice_justification # where the choice window is located
attr_accessor :choice_position # prefered position of choice window

attr_accessor :message_event # what event to center the text over (0 player, -1 to not)

attr_accessor :comic_enabled # using "talk" icons?
attr_accessor :comic_style # what type of comic image to use

attr_accessor :name # the text for the name window
attr_accessor :name_window # should the name window be visible?

attr_accessor :font # the name of the font
attr_accessor :font_color # the name of the (permanent) font color

attr_accessor :text_justification # the justification of the window text

attr_accessor :show_pause # whether or not to show the pause icon

attr_accessor :shake # the amount of shake for the window

attr_accessor :sound_effect # SE to play with each letter

attr_accessor :slave_windows # hash of slave windows
attr_accessor :indy_windows # hash of independent windows

attr_accessor :animated_faces # are the faces animated?
attr_accessor :animation_pause # how long do I wait between animation loops?
attr_accessor :face_frame_width # how many pixels wide is each face frame
attr_accessor :resting_face # postext for waiting face graphic
attr_accessor :resting_animation_pause # how long to wait for resting graphic

attr_accessor :windowskin # what windowskin to use for messages
attr_accessor :back_opacity # back opacity of windowskin
attr_accessor :eek:pacity # opacity of windowskin

attr_reader :shortcuts # user-defined shortcuts

alias ums_initialize initialize
def initialize
ums_initialize
@ums_mode = NORMAL_MODE

@skip_mode = WRITE_FASTER
@text_skip = false
@write_speed = 1

@text_mode = ONE_LETTER_AT_A_TIME

@window_height = 128
@window_width = 480
@window_justification = CENTER

@face_graphic = ""
@face_graphic_justification = LEFT
@face_graphic_position = CENTER

@shadowed_text = true
@shadow_color = Color.new(0, 0, 0, 100)

@choice_justification = RIGHT
@choice_position = SIDE

@message_event = -1

@comic_enabled = false
@comic_style = TALK1

@name = ""
@name_window = false

@font = "Verdana"
@font_color = nil

@text_justification = LEFT

@show_pause = true

@shake = 0

@sound_effect = "pwbeeps2.wav"

@slave_windows = {}
@indy_windows = {}

@animated_faces = false
@animation_pause = 80
@face_frame_width = 100
@resting_face = ""
@resting_animation_pause = 80

@windowskin = ""
@opacity = 255
@back_opacity = 160

@used_codes = ['\v', '\n', '\c', '\g', '\skip', '\m', '\height', '\width',
'\jr', '\jc', '\jl', '\face', '\fl', '\fr', '\b', '\i', '\s',
'\e', '\t1', '\t2', '\th', '\nm', '\font', '\p', '\w', '\ws',
'\oa', '\oi', '\os', '\ow', '\tl', '\tr', '\tc', '\ignr',
'\shk', '\slv', '\ind', '\inc']

@shortcuts = {}
end

def add_shortcut(shortcut, code)
text = shortcut.downcase
if !@used_codes.include?(text)
@shortcuts[shortcut] = code
end
end

def open_window(name)
if $game_system.indy_windows.has_key?(name)
$game_system.indy_windows
$game_system.indy_windows.delete(name)
end
end
end


#==============================================================================
# ** Game_Temp
#------------------------------------------------------------------------------
# This class handles temporary data that is not included with save data.
# Refer to "$game_temp" for the instance of this class.
#==============================================================================
class Game_Temp
attr_accessor :choices
end

class Scene_Map
alias ums_update update
def update
$game_system.slave_windows.each_value { |window| window.update }
$game_system.indy_windows.each_value { |window| window.update }
ums_update
end
end

class Interpreter
#--------------------------------------------------------------------------
# * Show Text
#--------------------------------------------------------------------------
def command_101
# If other text has been set to message_text
if $game_temp.message_text != nil
# End
return false
end
# Set message end waiting flag and callback
@message_waiting = true
$game_temp.message_proc = Proc.new { @message_waiting = false }
# Set message text on first line
$game_temp.message_text = @list[@index].parameters[0] + "\n"
line_count = 1
# Loop
loop do
# If next event command text is on the second line or after
if @list[@index + 1].code == 401
# Add the second line or after to message_text
$game_temp.message_text += @list[@index + 1].parameters[0] + "\n"
line_count += 1
# If the next event command is show text
elsif @list[@index + 1].code == 101
# If the text contains the \inc code
if @list[@index + 1].parameters[0].index(/\\[Ii][Nn][Cc]/) != nil
$game_temp.message_text += @list[@index + 1].parameters[0] + "\n"
$game_temp.message_text.sub!(/\\[Ii][Nn][Cc]/) { "" }
else
return true
end
# If event command is not on the second line or after
else
# If next event command is show choices
if @list[@index + 1].code == 102
# If choices fit on screen
#if @list[@index+1].parameters[0].size <= 4 - line_count
# Advance index
@index += 1
# Choices setup
$game_temp.choice_start = line_count
setup_choices(@list[@index].parameters)
#end
# If next event command is input number
elsif @list[@index + 1].code == 103
# If number input window fits on screen
if line_count < 4
# Advance index
@index += 1
# Number input setup
$game_temp.num_input_start = line_count
$game_temp.num_input_variable_id = @list[@index].parameters[0]
$game_temp.num_input_digits_max = @list[@index].parameters[1]
end
end
# Continue
return true
end
# Advance index
@index += 1
end
end
#--------------------------------------------------------------------------
# * Setup Choices
#--------------------------------------------------------------------------
def setup_choices(parameters)
# Set choice item count to choice_max
$game_temp.choice_max = parameters[0].size
# Set choice to message_text
$game_temp.choices = parameters[0]
# Set cancel processing
$game_temp.choice_cancel_type = parameters[1]

# Set callback
current_indent = @list[@index].indent
$game_temp.choice_proc = Proc.new { |n| @branch[current_indent] = n }
end

#--------------------------------------------------------------------------
# * Input Number
#--------------------------------------------------------------------------
def command_103
# If text has been set to message_text
if $game_temp.message_text != nil
# End
return false
end
# Set message end waiting flag and callback
@message_waiting = true
$game_temp.message_proc = Proc.new { @message_waiting = false }
# Number input setup
$game_temp.message_text = ""
$game_temp.num_input_start = 0
$game_temp.num_input_variable_id = @parameters[0]
$game_temp.num_input_digits_max = @parameters[1]
# Continue
return true
end

#--------------------------------------------------------------------------
# * Script
#--------------------------------------------------------------------------
def command_355
# Set first line to script
script = @list[@index].parameters[0] + "\n"
# Loop
loop do
# If next event command is second line of script or after
if @list[@index + 1].code == 655
# Add second line or after to script
script += @list[@index + 1].parameters[0] + "\n"
# If event command is not second line or after
else
# Abort loop
break
end
# Advance index
@index += 1
end
# Evaluation
result = eval(script)

# Continue
return true
end
end

# *****************************************************************************
# Changes to Window_Message. This is the bulk of the script
# *****************************************************************************
#==============================================================================
# ** Window_Message
#------------------------------------------------------------------------------
# This message window is used to display text.
#==============================================================================

class Window_Message < Window_Base
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
# x-coordinate depends on justification
if $game_system.window_justification == RIGHT
x = 640 - self.width
elsif $game_system.window_justification == LEFT
x = 0
else # center
x = (640 - $game_system.window_width) / 2
end
# y-coordinate depends on height
y = 480 - $game_system.window_height - 16
super(x, y, $game_system.window_width, $game_system.window_height)
self.contents = Bitmap.new(width - 32, height - 32)
self.visible = false
self.z = 9998
@fade_in = false
@fade_out = false
@contents_showing = false

# face graphic sprite
@face = Sprite.new
@face.opacity = 0
@face.z = self.z + 1
@face_offset = 0

# choice window
@choice_window = Window_Choice.new([])
@choice_window.back_opacity = self.back_opacity

# comic sprite
@comic = Sprite.new
@comic.opacity = 0
@comic.z = self.z + 1
if $game_system.comic_style == TALK1
@comic.bitmap = RPG::Cache.windowskin("talk1")
elsif $game_system.comic_style == TALK2
@comic.bitmap = RPG::Cache.windowskin("talk2")
else # thought
@comic.bitmap = RPG::Cache.windowskin("thought")
end

# name window
@name_window = Window_Name.new
@name_window.z = self.z + 1

@pause_time = 0
@wait = 0

@show = false

@face_frame = 0
end
#--------------------------------------------------------------------------
# * Dispose
#--------------------------------------------------------------------------
def dispose
terminate_message
$game_temp.message_window_showing = false
if @input_number_window != nil
@input_number_window.dispose
end
@face.dispose
@choice_window.dispose
@comic.dispose
@name_window.dispose
super
end
#--------------------------------------------------------------------------
# * Terminate Message
#--------------------------------------------------------------------------
def terminate_message
@show = false
self.active = false
self.pause = false
self.contents.clear
# Clear showing flag
@contents_showing = false
# Call message callback
if $game_temp.message_proc != nil
$game_temp.message_proc.call
end
# Clear variables related to text, choices, and number input
$game_temp.message_text = nil
$game_temp.message_proc = nil
$game_temp.choice_start = 99
$game_temp.choice_max = 0
$game_temp.choice_cancel_type = 0
$game_temp.choice_proc = nil
$game_temp.num_input_start = 99
$game_temp.num_input_variable_id = 0
$game_temp.num_input_digits_max = 0
# Open gold window
if @gold_window != nil
@gold_window.dispose
@gold_window = nil
end
@choice_window.visible = false
@choice_window.active = false
@comic.opacity = 0
$game_system.slave_windows.each_pair {|name, window|
if window.show == true
window.dispose
$game_system.slave_windows.delete(name)
end
}
@done = false
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
if $game_system.font_color.nil?
self.contents.font.color = normal_color
else
self.contents.font.color = $game_system.font_color
end
if $game_system.windowskin != ""
self.windowskin = RPG::Cache.windowskin($game_system.windowskin)
else
self.windowskin = RPG::Cache.windowskin($data_system.windowskin_name)
end
@show = true
@x = @y = 0

# If waiting for a message to be displayed
if $game_temp.message_text != nil
@text = $game_temp.message_text

# replace shortcuts with original code
$game_system.shortcuts.each { |shortcut, code|
@text.gsub!(shortcut, code)
}

# VERY first thing. Check to see if this is being set up as a slave
# or independent window.
if @text.index(/\\[Ss][Ll][Vv]\[(.*?)\]/) != nil
# is this a new slave window, or a request to display it?
if !$game_system.slave_windows.has_key?($1.to_s)
# there is no such slave window yet. Set it up.
@text.gsub!(/\\[Ss][Ll][Vv]\[(.*?)\]/, "")
$game_system.slave_windows[$1.to_s] = Window_Slave.new(@text)
@text = ""
@show = false
terminate_message
return
end
end
if @text.index(/\\[Ii][Nn][Dd]\[(.*?)\]/) != nil
# is this a new independent window, or a request to display it?
if !$game_system.indy_windows.has_key?($1.to_s)
# there is no such slave window yet. Set it up.
@text.gsub!(/\\[Ii][Nn][Dd]\[(.*?)\]/, "")
$game_system.indy_windows[$1.to_s] = Window_Slave.new(@text)
@text = ""
@show = false
terminate_message
return
end
end

# Control text processing
begin
last_text = @text.clone
@text.gsub!(/\\[Vv]\[([0-9]+)\]/) { $game_variables[$1.to_i] }
end until @text == last_text
@text.gsub!(/\\[Nn]\[([0-9]+)\]/) do
$game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
end

# window mode
if @text.index(/\\[Mm]/) != nil
if $game_system.ums_mode == NORMAL_MODE
$game_system.ums_mode = FIT_WINDOW_TO_TEXT
else
$game_system.ums_mode = NORMAL_MODE
end
@text.gsub!(/\\[Mm]/) { "" }
end

# window height
@text.gsub!(/\\[Hh][Ee][Ii][Gg][Hh][Tt]\[([0-9]+)\]/) do
$game_system.window_height = $1.to_i
""
end

# window width
@text.gsub!(/\\[Ww][Ii][Dd][Tt][Hh]\[([0-9]+)\]/) do
$game_system.window_width = $1.to_i
""
end

# justification
@text.gsub!(/\\[Jj][Rr]/) do
$game_system.window_justification = RIGHT
reset_window
""
end
@text.gsub!(/\\[Jj][Cc]/) do
$game_system.window_justification = CENTER
reset_window
""
end
@text.gsub!(/\\[Jj][Ll]/) do
$game_system.window_justification = LEFT
reset_window
""
end

# face graphics
@text.gsub!(/\\[Ff][Aa][Cc][Ee]\[(.*?)\]/) do
$game_system.face_graphic = $1.to_s
if $1.to_s == ""
@face.opacity = 0
end
""
end
@text.gsub!(/\\[Ff][Ll]/) do
$game_system.face_graphic_justification = LEFT
""
end
@text.gsub!(/\\[Ff][Rr]/) do
$game_system.face_graphic_justification = RIGHT
""
end

# event centering
@text.gsub!(/\\[Ee]\[([0-9]+)\]/) do
$game_system.message_event = $1.to_i
""
end

# comic thingy
@text.gsub!(/\\[Tt]1/) do
$game_system.comic_style = TALK1
@comic.bitmap = RPG::Cache.windowskin("talk1.png")
""
end
@text.gsub!(/\\[Tt]2/) do
$game_system.comic_style = TALK2
@comic.bitmap = RPG::Cache.windowskin("talk2.png")
""
end
@text.gsub!(/\\[Tt][Hh]/) do
$game_system.comic_style = THOUGHT
@comic.bitmap = RPG::Cache.windowskin("thought.png")
""
end

# name window
@text.gsub!(/\\[Nn][Mm]\[(.*?)\]/) do
$game_system.name = $1.to_s
if $1.to_s == ""
@name_window.visible = false
@name_window.dummy_window.visible = false
end
""
end

# toggle pause
@text.gsub!(/\\[Pp][Tt]/) do
$game_system.show_pause = !$game_system.show_pause
""
end

# shaking
@text.gsub!(/\\[Ss][Hh][Kk]\[([0-9]+)\]/) do
$game_system.shake = $1.to_i
""
end

# back opacity
@text.gsub!(/\\[Bb][Oo][Pp][Cc]\[([0-9]+)\]/) do
$game_system.back_opacity = $1.to_i
self.back_opacity = $game_system.back_opacity
""
end

# opacity
@text.gsub!(/\\[Oo][Pp][Cc]\[([0-9]+)\]/) do
$game_system.opacity = $1.to_i
self.opacity = $game_system.opacity
""
end

# Change "\\\\" to "0" for convenience
@text.gsub!(/\\\\/) { "0" }
# Change "\\C" to "1" and "\\G" to "2"
@text.gsub!(/\\[Cc]\[([0-9]+)\]/) { "1[#{$1}]" }
@text.gsub!(/\\[Gg]/) { "2" }
@text.gsub!(/\\[Cc]\[0x([0123456789abcdef]+)\]/) { "26[#{$1}]" }

# text skip code
@text.gsub!(/\\[Ss][Kk][Ii][Pp]/) { "3" }

# ignore code
@text.gsub!(/\\[Ii][Gg][Nn][Rr]/) { "23" }

# slave and indy windows
@text.gsub!(/\\[Ss][Ll][Vv]\[(.*?)\]/) { "24[#{$1}]" }
@text.gsub!(/\\[Ii][Nn][Dd]\[(.*?)\]/) { "25[#{$1}]" }

# bold and italics
@text.gsub!(/\\[Bb]/) { "4" }
@text.gsub!(/\\[Ii]/) { "5" }

# shadow
@text.gsub!(/\\[Ss]/) { "6" }

# font
@text.gsub!(/\\[Ff][Oo][Nn][Tt]\[(.*?)\]/) { "7[#{$1}]" }

# pause and wait
@text.gsub!(/\\[Pp]\[([0-9]+)\]/) { "10[#{$1}]" }
@text.gsub!(/\\[Ww]\[([0-9]+)\]/) { "11[#{$1}]" }

# write speed
@text.gsub!(/\\[Ww][Ss]\[([0-9]+)\]/) { "13[#{$1}]" }

# armor, items, skills, and weapons
@text.gsub!(/\\[Oo][Aa]\[([0-9]+)\]/) {
item = $data_armors[$1.to_i]
"14[#{$1}]" + " " + item.name
}
@text.gsub!(/\\[Oo][Ii]\[([0-9]+)\]/) {
item = $data_items[$1.to_i]
"15[#{$1}]" + " " + item.name
}
@text.gsub!(/\\[Oo][Ss]\[([0-9]+)\]/) {
item = $data_skills[$1.to_i]
"16[#{$1}]" + " " + item.name
}
@text.gsub!(/\\[Oo][Ww]\[([0-9]+)\]/) {
item = $data_weapons[$1.to_i]
"17[#{$1}]" + " " + item.name
}

# text justification
@text.gsub!(/\\[Tt][Cc]/) { "20" }
@text.gsub!(/\\[Tt][Ll]/) { "21" }
@text.gsub!(/\\[Tt][Rr]/) { "22" }

# Resize the window to fit the contents?
if $game_system.ums_mode == FIT_WINDOW_TO_TEXT
width = 1
text = @text.split("\n")
height = 0
i = 0
for line in text
# don't count this line's width if it has the ignr code
if !line.include?("23")
width = [width, self.contents.text_size(line).width].max
delta = self.contents.text_size(line).height
height += delta + (delta * 0.2).to_i
end
end

if $game_system.face_graphic != "" and ($game_system.face_graphic_position == CENTER or $game_system.face_graphic_position == BOTTOM)
width += @face.bitmap.width
if height < @face.bitmap.height
height = @face.bitmap.height - 32
end
end

if height == 0
height = 1
end

self.width = width + 48
self.height = height + 48
self.contents = Bitmap.new(width + 16, height)
if $game_system.font_color.nil?
self.contents.font.color = normal_color
else
self.contents.font.color = $game_system.font_color
end
else
if self.width != $game_system.window_height or self.height != $game_system.window_width
self.width = $game_system.window_width
self.height = $game_system.window_height
self.contents = Bitmap.new(self.width - 32, self.height - 32)
if $game_system.font_color.nil?
self.contents.font.color = normal_color
else
self.contents.font.color = $game_system.font_color
end
end
end

reset_window

get_x_value

@count = Graphics.frame_count
@pause_time = 0
@ignore = false
@ascending = true
@target_x = self.x + $game_system.shake
@done = false
@face_frame = 0
@done = false

self.oy = 0
end


end

#--------------------------------------------------------------------------
# * Set Window Position and Opacity Level
#--------------------------------------------------------------------------
def reset_window (change_opacity = true)
# x-coordinate depends on justification
if $game_system.message_event == -1
if $game_system.window_justification == RIGHT
self.x = 640 - $game_system.window_width
elsif $game_system.window_justification == LEFT
self.x = 0
else # center
self.x = (640 - self.width) / 2
end
else
if $game_system.message_event == 0 or $game_map.events[$game_system.message_event] == nil
# center on player
event_x = $game_player.screen_x
else
# center on the event specified
event_x = $game_map.events[$game_system.message_event].screen_x
end
self.x = event_x - self.width / 2
@comic.x = self.x + (self.width / 2) + 4
end

if $game_temp.in_battle
self.y = 16
else
if $game_system.message_event == -1
case $game_system.message_position
when 0 # up
self.y = 16
when 1 # middle
self.y = (480 - $game_system.window_height) / 2
when 2 # down
self.y = 480 - $game_system.window_height - 24
end
else
if $game_system.message_event == 0 or $game_map.events[$game_system.message_event] == nil
# above player
self.y = $game_player.screen_y - self.height - 48
else
# above event specified
self.y = $game_map.events[$game_system.message_event].screen_y - self.height - 48
end
@comic.y = self.y + self.height - 2
@comic.angle = 0
end
end
if self.y < 0 + ($game_system.name == "" ? 0 : 16)
if $game_system.comic_enabled
if $game_system.message_event == 0 or $game_map.events[$game_system.message_event] == nil
self.y = $game_player.screen_y - 16
else
self.y = $game_map.events[$game_system.message_event].screen_y - 16
end
@comic.angle = 180
@comic.y = self.y + 2
@comic.x = self.x + (self.width / 2) - 4
else
self.y = 0 + ($game_system.name == "" ? 0 : 16)
end
elsif self.y > 480 - self.height
self.y = 480 - self.height
end
if self.x < 0
self.x = 0
elsif self.x > 680 - self.width - 48
self.x = 640 - self.width
end

if change_opacity
if $game_system.message_frame == 0 and $game_temp.message_text != ""
self.opacity = $game_system.opacity
else
self.opacity = 0
end
self.back_opacity = $game_system.back_opacity
end

# face stuff
if $game_system.face_graphic != ""
# the player has chosen to show a face graphic
if @done and $game_system.resting_face != ""
@face.bitmap = RPG::Cache.picture($game_system.face_graphic + $game_system.resting_face)
if @face_frame * $game_system.face_frame_width >= @face.bitmap.width
@face_frame = 0
end
else
@face.bitmap = RPG::Cache.picture($game_system.face_graphic)
end

# picture y-coordinate
if $game_system.face_graphic_position == ABOVE
@face.y = self.y - @face.bitmap.height
@face_offset = 0
elsif $game_system.face_graphic_position == CENTER
delta = (@face.bitmap.height - self.height) / 2
@face.y = self.y - delta
if $game_system.animated_faces
@face_offset = $game_system.face_frame_width + 16
else
@face_offset = @face.bitmap.width + 16
end
elsif $game_system.face_graphic_position == BOTTOM
@face.y = self.y + self.height - @face.bitmap.height
if $game_system.animated_faces
@face_offset = $game_system.face_frame_width + 16
else
@face_offset = @face.bitmap.width + 16
end
else # side
delta = (@face.bitmap.height - self.height) / 2
@face.y = self.y - delta
@face_offset = 0
end

# picture x-coordinate
if $game_system.face_graphic_justification == LEFT
if $game_system.face_graphic_position == SIDE
@face.x = self.x - @face.bitmap.width
else
@face.x = self.x + 10
end
else # right side
if $game_system.animated_faces
offset = @face.bitmap.width - $game_system.face_frame_width
else
offset = 0
end
if $game_system.face_graphic_position == SIDE
@face.x = self.x + self.width + offset
else
@face.x = self.x + self.width - @face.bitmap.width - 10 + offset
@face_offset = 0
end
end

if $game_system.animated_faces
@face.src_rect = Rect.new(@face_frame * $game_system.face_frame_width, 0, $game_system.face_frame_width, @face.bitmap.height)
if @done and $game_system.resting_face != ""
pause = $game_system.resting_animation_pause
else
pause = $game_system.animation_pause
end
if Graphics.frame_count % pause == 0
@animate_face = true
end
if @animate_face
if Graphics.frame_count % 3 == 0
@face_frame += 1
if @face_frame * $game_system.face_frame_width >= @face.bitmap.width
@face_frame = 0
@animate_face = false
end
end
end
end
end

# name window
if $game_system.name != ""
@name_window.x = self.x
@name_window.y = self.y - 36
@name_window.set_name($game_system.name)
end

# If choice
if $game_temp.choice_max > 0
@choice_window.set_choices($game_temp.choices)
# determine x and y coords for choice window
if $game_system.choice_justification == LEFT
@choice_window.x = self.x
else
@choice_window.x = self.x + self.width - @choice_window.width
end
if $game_system.choice_position == ABOVE
# check to make sure there is enough room above the textbox
if self.y < @choice_window.height
# not enough room above, place below
@choice_window.y = self.y + self.height
else
# draw above
@choice_window.y = self.y - @choice_window.height
end
elsif $game_system.choice_position == BOTTOM
# check to make sure there is enough room below the textbox
if (480 - self.y - self.height) < @choice_window.height
# not enough room below, place above
@choice_window.y = self.y - @choice_window.height
else
# draw below
@choice_window.y = self.y + self.height
end
else # side
if $game_system.choice_justification == LEFT
# check to make sure there's room on the left side
if self.y < @choice_window.width
# not enough room on the side, check to make sure there's room below
if (480 - self.y - self.height) < @choice_window.height
# not enough room below, place above
@choice_window.y = self.y - @choice_window.height
else
# draw below
@choice_window.y = self.y + self.height
end
else
# place on the left side
@choice_window.y = self.y
@choice_window.x = self.x - @choice_window.width
end
else # right
# check to make sure there's room on the right side
if (680 - (self.y + self.width)) < @choice_window.width
# not enough room on the side, check to make sure there's room below
if (480 - self.y - self.height) < @choice_window.height
# not enough room below, place above
@choice_window.y = self.y - @choice_window.height
else
# draw below
@choice_window.y = self.y + self.height
end
else
# place on the left side
@choice_window.y = self.y
@choice_window.x = self.x + self.width
end
end
end
end

# If number input
if $game_temp.num_input_variable_id > 0
if @input_number_window == nil
digits_max = $game_temp.num_input_digits_max
number = $game_variables[$game_temp.num_input_variable_id]
@input_number_window = Window_InputNumber.new(digits_max)
@input_number_window.number = number
end
# determine x and y coords for number input window
if $game_system.choice_justification == LEFT
@input_number_window.x = self.x
else
@input_number_window.x = self.x + self.width - @input_number_window.width
end
if $game_system.choice_position == ABOVE
# check to make sure there is enough room above the textbox
if self.y < @input_number_window.height
# not enough room above, place below
@input_number_window.y = self.y + self.height
else
# draw above
@input_number_window.y = self.y - @choice_window.height
end
elsif $game_system.choice_position == BOTTOM
# check to make sure there is enough room below the textbox
if (480 - self.y - self.height) < @input_number_window.height
# not enough room below, place above
@input_number_window.y = self.y - @input_number_window.height
else
# draw below
@input_number_window.y = self.y + self.height
end
else # side
if $game_system.choice_justification == LEFT
# check to make sure there's room on the left side
if self.y < @input_number_window.width
# not enough room on the side, check to make sure there's room below
if (480 - self.y - self.height) < @input_number_window.height
# not enough room below, place above
@input_number_window.y = self.y - @input_number_window.height
else
# draw below
@input_number_window.y = self.y + self.height
end
else
# place on the left side
@input_number_window.y = self.y
@input_number_window.x = self.x - @choice_window.width
end
else # right
# check to make sure there's room on the right side
if (680 - (self.y + self.width)) < @input_number_window.width
# not enough room on the side, check to make sure there's room below
if (480 - self.y - self.height) < @input_number_window.height
# not enough room below, place above
@input_number_window.y = self.y - @input_number_window.height
else
# draw below
@input_number_window.y = self.y + self.height
end
else
# place on the left side
@input_number_window.y = self.y
@input_number_window.x = self.x + self.width
end
end
end
end
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
super

if (@contents_showing and $game_system.message_event != -1 and $game_system.shake == 0) or $game_system.animated_faces
reset_window(false)
end

if $game_system.shake != 0 # shake the window
if @ascending
if @target_x != self.x
self.x += 1
else
@ascending = false
@target_x = self.x - ($game_system.shake * 2)
end
else
if @target_x != self.x
self.x -= 1
else
@ascending = true
@target_x = self.x + ($game_system.shake * 2)
end
end
end

@name_window.update

if @wait > 0
@wait -= 1
if @wait == 0
terminate_message
return
end
end

# If fade in
if @fade_in
if $game_temp.message_text == ""
@fade_in = false
return
end
self.contents_opacity += 24
if $game_system.face_graphic != ""
@face.opacity += 24
end
if $game_system.comic_enabled and $game_system.message_event != -1
@comic.opacity = self.opacity
@comic.visible = self.visible
end

if $game_system.name != ""
@name_window.visible = true
if $game_system.name_window
@name_window.dummy_window.visible = true
end
end
if @input_number_window != nil
@input_number_window.contents_opacity += 24
end
if self.contents_opacity == 255
@fade_in = false
end
return
end

# write the text
if @text != nil and @text != ""
speed = $game_system.write_speed
if $game_system.text_mode == ALL_AT_ONCE or $game_temp.in_battle
while (c = @text.slice!(/./m)) != nil
write_char(c)
end
$game_system.slave_windows.each_value { |window| window.write_all }
return
end
if $game_system.text_skip
if $game_system.skip_mode == WRITE_FASTER and Input.press?(Input::C)
# the player is holding the action button, write faster
speed /= 3
elsif $game_system.skip_mode == WRITE_ALL and Input.trigger?(Input::C)
# the player pressed the action button, write all the text
while (c = @text.slice!(/./m)) != nil
write_char(c)
end
$game_system.slave_windows.each_value { |window| window.write_all }
return
end
end
while @ignore
c = @text.slice!(/./m)
if c != nil
write_char(c)
end
end
if @pause_time > 0
@pause_time -= 1
return
end
if Graphics.frame_count - @count >= speed
if $game_system.sound_effect != ""
Audio.se_play("Audio/SE/" + $game_system.sound_effect, 80, 100)
end
@count = Graphics.frame_count
c = @text.slice!(/./m)
if c != nil
write_char(c)
end
end
return
end

if $game_system.animated_faces and $game_system.resting_face != ""
@done = true
end

# If inputting number
if @input_number_window != nil
@input_number_window.update
# Confirm
if Input.trigger?(Input::C)
$game_system.se_play($data_system.decision_se)
$game_variables[$game_temp.num_input_variable_id] =
@input_number_window.number
$game_map.need_refresh = true
# Dispose of number input window
@input_number_window.dispose
@input_number_window = nil
terminate_message
end
return
end

if @wait != 0
return
end

# If message is being displayed and contents are all written
if @contents_showing
# if choice
if $game_temp.choice_max > 0
if !@choice_window.active
@choice_window.visible = true
@choice_window.active = true
@choice_window.index = 0
end
@choice_window.update
else
# If choice isn't being displayed, show pause sign
self.pause = $game_system.show_pause
end
# Cancel
if Input.trigger?(Input::B)
if $game_temp.choice_max > 0 and $game_temp.choice_cancel_type > 0
$game_system.se_play($data_system.cancel_se)
$game_temp.choice_proc.call($game_temp.choice_cancel_type - 1)
terminate_message
end
end
# Confirm
if Input.trigger?(Input::C) and !(@wait > 0)
@done = true
$game_system.slave_windows.each_value { |window|
window.write_all
if !window.done
@done = false
end
}
if @done
if $game_temp.choice_max > 0
$game_system.se_play($data_system.decision_se)
$game_temp.choice_proc.call(@choice_window.index)
end
terminate_message
else
@finishing_up = true
end
end
return
end

if @finishing_up
$game_system.slave_windows.each_value { |window|
if !window.done
@done = true
break
end
}

if @done = false
terminate_message
end
end
# If display wait message or choice exists when not fading out
if @fade_out == false and $game_temp.message_text != nil
@contents_showing = true
$game_temp.message_window_showing = true

reset_window
refresh
Graphics.frame_reset
if @show
self.visible = true
end
self.contents_opacity = 0
if @input_number_window != nil
@input_number_window.contents_opacity = 0
end
@fade_in = true
return
end
# If message which should be displayed is not shown, but window is visible
if self.visible
@fade_out = true
self.opacity -= 48
@name_window.opacity -= 48
@comic.opacity -= 48
@face.opacity -= 48
if self.opacity == 0
self.visible = false
@face.opacity = 0
@choice_window.visible = false
@choice_window.active = false
@comic.opacity = 0
@name_window.visible = false
@name_window.dummy_window.visible = false
@name_window.update
@fade_out = false
$game_temp.message_window_showing = false
end
return
end

if $game_temp.battle_calling or $game_temp.shop_calling or $game_temp.name_calling or $game_temp.menu_calling or $game_temp.save_calling or $game_temp.debug_calling

$game_system.indy_windows.each_pair {|name, window|
if window.show == true
window.dispose
$game_system.indy_windows.delete(name)
end
}
end
end

#--------------------------------------------------------------------------
# * Process and write the given character
#--------------------------------------------------------------------------
def write_char(c)
if c == "0"
# Return to original text
c = "\\"
end
# If \C[n]
if c == "1"
# Change text color
@text.sub!(/\[([0-9]+)\]/, "")
color = $1.to_i
if color >= 0 and color <= 7
self.contents.font.color = text_color(color)
end
# go to next text
return
end
# If \G
if c == "2"
# Make gold window
if @gold_window == nil
@gold_window = Window_Gold.new
@gold_window.x = 560 - @gold_window.width
if $game_temp.in_battle
@gold_window.y = 192
else
@gold_window.y = self.y >= 128 ? 32 : 384
end
@gold_window.opacity = self.opacity
@gold_window.back_opacity = self.back_opacity
end
# go to next text
return
end
# If \skip
if c == "3"
# toggle text skipping
$game_system.text_skip = !$game_system.text_skip
# go to next text
return
end
# If \b
if c == "4"
# toggle bold
self.contents.font.bold = !self.contents.font.bold
# go to next text
return
end
# If \i
if c == "5"
# toggle italics
self.contents.font.italic = !self.contents.font.italic
# go to next text
return
end
# If \s
if c == "6"
# toggle shadow
$game_system.shadowed_text = !$game_system.shadowed_text
# go to next text
return
end
# If \font
if c == "7"
# change font
@text.sub!(/\[(.*?)\]/, "")
font = $1.to_s
$game_system.font = font
if font == ""
self.contents.font.name = Font.default_name
else
self.contents.font.name = font
end
# go to next text
return
end
# If \p[n]
if c == "10"
@text.sub!(/\[([0-9]+)\]/, "")
@pause_time = $1.to_i

# go to next text
return
end

# If \w[n]
if c == "11"
@text.sub!(/\[([0-9]+)\]/, "")
@wait = $1.to_i

# go to next text
return
end

# If \ws[n]
if c == "13"
@text.sub!(/\[([0-9]+)\]/, "")
$game_system.write_speed = $1.to_i

# go to next text
return
end
# If \oa[n]
if c == "14"
@text.sub!(/\[([0-9]+)\]/, "")
index = $1.to_i
@text.sub!(" ", "")
item = $data_armors[index]
# draw the icon
icon = RPG::Cache.icon(item.icon_name)
self.contents.blt(@x + 2, (@y * 32) + 4, icon, Rect.new(0, 0, 24, 24))
@x += 24

# go to next text
return
end

# If \oi[n]
if c == "15"
@text.sub!(/\[([0-9]+)\]/, "")
index = $1.to_i
@text.sub!(" ", "")
item = $data_items[index]
# draw the icon
icon = RPG::Cache.icon(item.icon_name)
self.contents.blt(@x + 2, (@y * 32) + 4, icon, Rect.new(0, 0, 24, 24))
@x += 24

# go to next text
return
end

# If \os[n]
if c == "16"
@text.sub!(/\[([0-9]+)\]/, "")
index = $1.to_i
@text.sub!(" ", "")
item = $data_skills[index]
# draw the icon
icon = RPG::Cache.icon(item.icon_name)
self.contents.blt(@x + 2, (@y * 32) + 4, icon, Rect.new(0, 0, 24, 24))
@x += 24

# go to next text
return
end

# If \ow[n]
if c == "17"
@text.sub!(/\[([0-9]+)\]/, "")
index = $1.to_i
@text.sub!(" ", "")
item = $data_weapons[index]
# draw the icon
icon = RPG::Cache.icon(item.icon_name)
self.contents.blt(@x + 2, (@y * 32) + 4, icon, Rect.new(0, 0, 24, 24))
@x += 24

# go to next text
return
end

# If \tc
if c == "20"
# center justify
$game_system.text_justification = CENTER
get_x_value
# go to next text
return
end

# If \tl
if c == "21"
# left justify
$game_system.text_justification = LEFT
get_x_value
# go to next text
return
end

# If \tr
if c == "22"
# right justify
$game_system.text_justification = RIGHT
get_x_value
# go to next text
return
end

# If \ignr
if c == "23"
# set ignore flage
@ignore = true
# go to next text
return
end

# if \slv
if c == "24"
# we need to show a slave window
@text.sub!(/\[(.*?)\]/, "")
name = $1.to_s
$game_system.slave_windows
$game_system.indy_windows end
return
end

# if \c (hex color)
if c == "26"
# convert hex color to RGB
@text.sub!(/\[([0123456789abcdef]+)\]/, "")
hex_code = $1.to_s

red = ("0x" + hex_code.slice(0..1)).hex
blue = ("0x" + hex_code.slice(2..3)).hex
green = ("0x" + hex_code.slice(4..5)).hex

self.contents.font.color = Color.new(red, blue, green)
return
end

# If new line text
if c == "\n"
# Add 1 to y
if !@ignore
@y += 1
end
if @text != ""
get_x_value
end
@ignore = false

# go to next text
return
end
if @ignore
return
end
# Draw text
line = self.contents.text_size("j").height
if $game_system.shadowed_text
old_color = self.contents.font.color.clone
self.contents.font.color = $game_system.shadow_color
self.contents.draw_text(6 + @x, line * @y + 2, 40, 32, c)
self.contents.font.color = old_color
end
self.contents.draw_text(4 + @x, line * @y, 40, 32, c)
# Add x to drawn text width
@x += self.contents.text_size(c).width
end

def get_x_value
# text justification - offset for first line
if $game_system.text_justification == CENTER
# get the length of the current line
w = self.contents.text_size(@text.split("\n")[0]).width
@x = (self.width - w - 48) / 2
elsif $game_system.text_justification == RIGHT
# get the length of the current line
w = self.contents.text_size(@text.split("\n")[0]).width
@x = self.width - w - 48
else # left
if $game_system.face_graphic == ""
@x = 0
else
@x = @face_offset
end
end
end

end

#==============================================================================
# ** Window_Choice
#------------------------------------------------------------------------------
# This message window is used to display choices.
#==============================================================================
class Window_Choice < Window_Selectable
def initialize (choices)
super(0, 0, 32, choices.size * 32)
self.visible = false
self.active = false
self.z = 9999
@index = 0
@item_max = choices.size
@choices = choices
self.contents = Bitmap.new(32, 32)
end

def refresh
# determine necessary width
width = 64
for line in @choices
width = [width, (self.contents.text_size(line).width + 48)].max
end
self.width = width
self.height = @choices.size * 32 + 32
self.contents = Bitmap.new(width - 32, height - 32)
if $game_system.font_color.nil?
self.contents.font.color = normal_color
else
self.contents.font.color = $game_system.font_color
end
if $game_system.windowskin != ""
self.windowskin = RPG::Cache.windowskin($game_system.windowskin)
else
self.windowskin = RPG::Cache.windowskin($data_system.windowskin_name)
end

# draw choices
y = 0
for line in @choices
# Draw text
if $game_system.shadowed_text
old_color = self.contents.font.color.clone
self.contents.font.color = $game_system.shadow_color
self.contents.draw_text(6, 32 * y + 2, width, 32, line)
self.contents.font.color = old_color
end
self.contents.draw_text(4, y * 32, width, 32, line)
y += 1
end
end

def set_choices(choices)
@choices = choices
@item_max = @choices.size
for choice in @choices
choice.gsub!(/\\[Vv]\[([0-9]+)\]/) { $game_variables[$1.to_i] }
choice.gsub!(/\\[Nn]\[([0-9]+)\]/) {
$game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
}
end
refresh
end
end

#==============================================================================
# ** Window_Name
#------------------------------------------------------------------------------
# This window is used to display names above the message window. Uncomment
# and modify the various sections to customize.
#==============================================================================
class Window_Name < Window_Base
attr_accessor :dummy_window

def initialize
super(0, 0, 32, 64)
self.contents = Bitmap.new(32, 32)
self.opacity = 0

@dummy_window = Window_Dummy.new

self.visible = false
end

def set_name(name)
@name = name
refresh
end

def refresh
if @name == nil
return
end
self.width = self.contents.text_size(@name).width + 48
self.contents = Bitmap.new(width - 32, height - 32)

if $game_system.name_window
@dummy_window.x = self.x
@dummy_window.y = self.y + 12
@dummy_window.set(height - 24, width - 12)
end

# uncomment this and change the font to give the name window a fancy font
#self.contents.font.name = "Ariel"
self.contents.font.color = Color.new(0, 0, 0, 255)
self.contents.draw_text(0, 0, self.width, 32, @name)
self.contents.draw_text(0, 2, self.width, 32, @name)
self.contents.draw_text(2, 0, self.width, 32, @name)
self.contents.draw_text(2, 2, self.width, 32, @name)
# change the color to give the name window a seperate color
self.contents.font.color = normal_color
self.contents.draw_text(1, 1, self.width, 32, @name)
end

def update
super
if $game_system.name_window
@dummy_window.x = self.x
@dummy_window.y = self.y + 12
@dummy_window.update
end
end

def dispose
@dummy_window.dispose
super
end
end

class Window_Dummy < Window_Base
def initialize
super(0, 0, 32, 64)
self.z = 9999
self.visible = false
end

def set(height, width)
self.height = height
self.width = width
end

def update
super
if $game_system.windowskin != ""
self.windowskin = RPG::Cache.windowskin($game_system.windowskin)
else
self.windowskin = RPG::Cache.windowskin($data_system.windowskin_name)
end
end
end

#==============================================================================
# ** Window_Slave
#------------------------------------------------------------------------------
# These are slave windows to the main message window. They will close when
# the user terminates them. Initial settings are identical to the main
# message window, with one exception. When in normal mode, it will apear
# above if the main message is below, below if it is above or centered. Use
# message codes to change the settings for this window.
#==============================================================================
class Window_Slave < Window_Base
attr_accessor :show
attr_reader :done

def write_all
@write_all = true
end

#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize (text)
super(0, 0, 33, 33)
@text = text

# x-coordinate depends on justification
if @justification == RIGHT
self.x = 640 - self.width
elsif @justification == LEFT
self.x = 0
else # center
self.x = (640 - self.width) / 2
end
# y-coordinate depends on height
self.y = 480 - $game_system.window_height - 16
self.contents = Bitmap.new(width - 32, height - 32)
self.visible = false
self.z = 9998
@fade_in = false
@fade_out = false
@contents_showing = false

# face graphic sprite
@face = Sprite.new
@face.opacity = 0
@face.z = self.z + 1
@face_offset = 0

# choice window
@choice_window = Window_Choice.new([])
@choice_window.back_opacity = $game_system.back_opacity

@comic_style = $game_system.comic_style
@name = $game_system.name

# comic sprite
@comic = Sprite.new
@comic.opacity = 0
@comic.z = self.z + 1
if @comic_style == TALK1
@comic.bitmap = RPG::Cache.windowskin("talk1")
elsif @comic_style == TALK2
@comic.bitmap = RPG::Cache.windowskin("talk2")
else # thought
@comic.bitmap = RPG::Cache.windowskin("thought")
end



@pause_time = 0
@wait = 0

@mode = $game_system.ums_mode
self.height = $game_system.window_height
self.width = $game_system.window_width
@justification = $game_system.window_justification
@face_graphic = $game_system.face_graphic
@face_graphic_justification = $game_system.face_graphic_justification
@message_event = $game_system.message_event
if $game_system.message_position == 2 # down
@message_position = 0
else
@message_postion = 2
end
@face_graphic_position = $game_system.face_graphic_position
if $game_system.font == ""
@font = Font.default_name
else
@font = $game_system.font
end
@text_justification = $game_system.text_justification

@shake = $game_system.shake

@face_frame = 0

refresh
end
#-------">
">">">">">">
">">">
 
Well you seem to be using an old version for one and two.... what other scripts do you have running as well? Have completely erased the AMS? It's weird that the script would be doing that to you, the script works fine for me.
 
Could you send me over the newer version of the UMS, please? I've been looking EVERYWEHERE and have been hit by tons of invalid links, spanish sites, etc.

The only other scripts I had running were Sideview battle scripts and RTAB... nothing that would interfere I'd think.
 

Thank you for viewing

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

Discord

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

Content

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