- Mensajes
- 454
- Reacciones
- 0
- Puntos
- 0
#=====================================================
# - Final Fantasy VIII opening Credits Script v1.1 By Azzy9
#=====================================================
# In Main replace "$scene = Scene_Title.new" with "$scene = FFVIIICredits.new"
class FFVIIICredits
def main
$data_system = load_data("Data/System.rxdata")
$game_system = Game_System.new
# - Drawing up the Background for Scene FFVII_Credits
@Background = Sprite.new
@Background.bitmap = RPG::Cache.picture("1")
@Background.opacity = 255
@Background_c = 0
@sprite1 = Window1.new
@sprite1.x = 100
@sprite1.y = 100
@sprite1.visible = false
@sprite2 = Window2.new
@sprite2.x = 350
@sprite2.y = 300
@sprite2.visible = false
@sprite3 = Window3.new
@sprite3.x = 350
@sprite3.y = 100
@sprite3.visible = false
@sprite4 = Window4.new
@sprite4.x = 100
@sprite4.y = 300
@sprite4.visible = false
@sprite5 = Window5.new
@sprite5.x = 100
@sprite5.y = 100
@sprite5.visible = false
@sprite6 = Window6.new
@sprite6.x = 350
@sprite6.y = 300
@sprite6.visible = false
@sprite7 = Window7.new
@sprite7.x = 350
@sprite7.y = 100
@sprite7.visible = false
@sprite8 = Window8.new
@sprite8.x = 100
@sprite8.y = 300
@sprite8.visible = false
@sprite9 = Window9.new
@sprite9.x = 100
@sprite9.y = 100
@sprite9.visible = false
@sprite10 = Window10.new
@sprite10.x = 350
@sprite10.y = 300
@sprite10.visible = false
@sprite11 = Window11.new
@sprite11.x = 350
@sprite11.y = 100
@sprite11.visible = false
@sprite12 = Window12.new
@sprite12.x = 100
@sprite12.y = 300
@sprite12.visible = false
@sprite13 = Window13.new
@sprite13.x = 100
@sprite13.y = 100
@sprite13.visible = false
@sprite14 = Window14.new
@sprite14.x = 350
@sprite14.y = 300
@sprite14.visible = false
@sprite15 = Window15.new
@sprite15.x = 350
@sprite15.y = 100
@sprite15.visible = false
@sprite16 = Window16.new
@sprite16.x = 100
@sprite16.y = 300
@sprite16.visible = false
@sprite17 = Window17.new
@sprite17.x = 100
@sprite17.y = 100
@sprite17.visible = false
@sprite18 = Window18.new
@sprite18.x = 350
@sprite18.y = 300
@sprite18.visible = false
@sprite19 = Window19.new
@sprite19.x = 350
@sprite19.y = 100
@sprite19.visible = false
@sprite20 = Window20.new
@sprite20.x = 100
@sprite20.y = 300
@sprite20.visible = false
@sprite21 = Window21.new
@sprite21.x = 100
@sprite21.y = 100
@sprite21.visible = false
@sprite22 = Window22.new
@sprite22.x = 350
@sprite22.y = 300
@sprite22.visible = false
@sprite23 = Window23.new
@sprite23.x = 350
@sprite23.y = 100
@sprite23.visible = false
@sprite24 = Window24.new
@sprite24.x = 100
@sprite24.y = 300
@sprite24.visible = false
@sprite25 = Window25.new
@sprite25.x = 100
@sprite25.y = 100
@sprite25.visible = false
@sprite26 = Window26.new
@sprite26.x = 350
@sprite26.y = 300
@sprite26.visible = false
@sprite27 = Window27.new
@sprite27.x = 350
@sprite27.y = 100
@sprite27.visible = false
@sprite28 = Window28.new
@sprite28.x = 100
@sprite28.y = 300
@sprite28.visible = false
Graphics.transition
loop do
Graphics.update
Input.update
update
if $scene != self
break
end
end
Graphics.freeze
@Background.dispose
@sprite1.dispose
@sprite2.dispose
@sprite3.dispose
@sprite4.dispose
@sprite5.dispose
@sprite6.dispose
@sprite7.dispose
@sprite8.dispose
@sprite9.dispose
@sprite10.dispose
@sprite11.dispose
@sprite12.dispose
@sprite13.dispose
@sprite14.dispose
@sprite15.dispose
@sprite16.dispose
@sprite17.dispose
@sprite18.dispose
@sprite19.dispose
@sprite20.dispose
@sprite21.dispose
@sprite22.dispose
@sprite23.dispose
@sprite24.dispose
@sprite25.dispose
@sprite26.dispose
@sprite27.dispose
@sprite28.dispose
end
def update
@Background.update # Change of background
@Background_c = (@Background_c + 1)
case @Background_c
when 200
Audio.bgm_play("Audio/BGM/" + "Overture", 100, 100) # - Plays the Background Music
@Background.bitmap = RPG::Cache.picture("0")
@sprite1.visible = true
@sprite2.visible = true
@sprite1.contents_opacity -= 2
when 400
@sprite1.visible = false
@sprite2.visible = false
@sprite3.visible = true
@sprite4.visible = true
when 600
@sprite3.visible = false
@sprite4.visible = false
@Background.bitmap = RPG::Cache.picture("2")
when 800
@Background.bitmap = RPG::Cache.picture("3")
when 1000
@Background.bitmap = RPG::Cache.picture("0")
@sprite5.visible = true
@sprite6.visible = true
when 1200
@sprite5.visible = false
@sprite6.visible = false
@sprite7.visible = true
@sprite8.visible = true
when 1400
@sprite7.visible = false
@sprite8.visible = false
@Background.bitmap = RPG::Cache.picture("4")
when 1600
@Background.bitmap = RPG::Cache.picture("5")
when 1800
@Background.bitmap = RPG::Cache.picture("0")
@sprite9.visible = true
@sprite10.visible = true
when 2000
@sprite9.visible = false
@sprite10.visible = false
@sprite11.visible = true
@sprite12.visible = true
when 2200
@sprite11.visible = false
@sprite12.visible = false
@Background.bitmap = RPG::Cache.picture("6")
when 2400
@Background.bitmap = RPG::Cache.picture("7")
when 2600
@Background.bitmap = RPG::Cache.picture("0")
@sprite13.visible = true
@sprite14.visible = true
when 2800
@sprite13.visible = false
@sprite14.visible = false
@sprite15.visible = true
@sprite16.visible = true
when 3000
@sprite15.visible = false
@sprite16.visible = false
@Background.bitmap = RPG::Cache.picture("8")
when 3200
@Background.bitmap = RPG::Cache.picture("9")
when 3400
@Background.bitmap = RPG::Cache.picture("0")
@sprite17.visible = true
@sprite18.visible = true
when 3600
@sprite17.visible = false
@sprite18.visible = false
@sprite19.visible = true
@sprite20.visible = true
when 3800
@sprite19.visible = false
@sprite20.visible = false
@Background.bitmap = RPG::Cache.picture("10")
when 4000
@Background.bitmap = RPG::Cache.picture("11")
when 4200
@Background.bitmap = RPG::Cache.picture("0")
@sprite21.visible = true
@sprite22.visible = true
when 4400
@sprite21.visible = false
@sprite22.visible = false
@sprite23.visible = true
@sprite24.visible = true
when 4600
@sprite23.visible = false
@sprite24.visible = false
@Background.bitmap = RPG::Cache.picture("12")
when 4800
@Background.bitmap = RPG::Cache.picture("13")
when 5000
@Background.bitmap = RPG::Cache.picture("0")
@sprite25.visible = true
@sprite26.visible = true
when 5200
@sprite25.visible = false
@sprite26.visible = false
@sprite27.visible = true
@sprite28.visible = true
when 5400
@sprite27.visible = false
@sprite28.visible = false
@Background.bitmap = RPG::Cache.picture("14")
when 5600
@Background.bitmap = RPG::Cache.picture("15")
when 5800
@Background.bitmap = RPG::Cache.picture("16")
when 5850
@Background.bitmap = RPG::Cache.picture("17")
when 6200
Audio.bgm_stop
$scene = FFVIIICredits.new
end
if Input.trigger?(Input::C)
$scene = Scene_Title.new
end
end
end
class Window1 < Window_Base
def initialize
super(0, 0, 240,240)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = "Tahoma"
self.contents.font.size = 30
self.opacity = 0
self.contents.draw_text(0, 0, 233, 33, "Executive Producer")
self.contents.draw_text(0, 10, 143, 63, "Azzy9")
end
end
class Window2 < Window_Base
def initialize
super(0, 0, 240,240)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = "Tahoma"
self.contents.font.size = 30
self.opacity = 0
self.contents.draw_text(0, 0, 133, 33, "Producer")
self.contents.draw_text(0, 10, 143, 63, "Azzy9")
end
end
class Window3 < Window_Base
def initialize
super(0, 0, 240,240)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = "Tahoma"
self.contents.font.size = 30
self.opacity = 0
self.contents.draw_text(0, 0, 133, 33, "Director")
self.contents.draw_text(0, 10, 143, 63, "Azzy9")
end
end
class Window4 < Window_Base
def initialize
super(0, 0, 240,240)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = "Tahoma"
self.contents.font.size = 30
self.opacity = 0
self.contents.draw_text(0, 0, 133, 33, "Music")
self.contents.draw_text(0, 10, 143, 63, "Azzy9")
end
end
class Window5 < Window_Base
def initialize
super(0, 0, 240,240)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = "Tahoma"
self.contents.font.size = 30
self.opacity = 0
self.contents.draw_text(0, 0, 233, 33, "Battle System Designer")
self.contents.draw_text(0, 10, 143, 63, "Azzy9")
end
end
class Window6 < Window_Base
def initialize
super(0, 0, 240,240)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = "Tahoma"
self.contents.font.size = 30
self.opacity = 0
self.contents.draw_text(0, 0, 233, 33, "Main Programmer")
self.contents.draw_text(0, 10, 143, 63, "Azzy9")
end
end
class Window7 < Window_Base
def initialize
super(0, 0, 240,240)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = "Tahoma"
self.contents.font.size = 30
self.opacity = 0
self.contents.draw_text(0, 0, 183, 33, "Art Director")
self.contents.draw_text(0, 10, 143, 63, "Azzy9")
end
end
class Window8 < Window_Base
def initialize
super(0, 0, 240,240)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = "Tahoma"
self.contents.font.size = 30
self.opacity = 0
self.contents.draw_text(0, 0, 183, 33, "Charcter Design ")
self.contents.draw_text(0, 10, 233, 63, "& Battle visual director")
self.contents.draw_text(0, 20, 153, 93, "Azzy9")
end
end
class Window9 < Window_Base
def initialize
super(0, 0, 240,240)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = "Tahoma"
self.contents.font.size = 30
self.opacity = 0
self.contents.draw_text(0, 0, 133, 33, "Scenario")
self.contents.draw_text(0, 10, 143, 63, "Azzy9")
end
end
class Window10 < Window_Base
def initialize
super(0, 0, 240,240)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = "Tahoma"
self.contents.font.size = 30
self.opacity = 0
self.contents.draw_text(0, 0, 183, 33, "Image Illustrator")
self.contents.draw_text(0, 10, 143, 63, "Azzy9")
end
end
class Window11 < Window_Base
def initialize
super(0, 0, 240,240)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = "Tahoma"
self.contents.font.size = 30
self.opacity = 0
self.contents.draw_text(0, 0, 183, 33, "CG Supervisor")
self.contents.draw_text(0, 10, 143, 63, "Azzy9")
end
end
class Window12 < Window_Base
def initialize
super(0, 0, 240,240)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = "Tahoma"
self.contents.font.size = 30
self.opacity = 0
self.contents.draw_text(0, 0, 183, 33, "Movie Director")
self.contents.draw_text(0, 10, 143, 63, "Azzy9")
end
end
class Window13 < Window_Base
def initialize
super(0, 0, 240,240)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = "Tahoma"
self.contents.font.size = 30
self.opacity = 0
self.contents.draw_text(0, 0, 233, 33, "Modeling Director")
self.contents.draw_text(0, 10, 143, 63, "Azzy9")
end
end
class Window14 < Window_Base
def initialize
super(0, 0, 240,240)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = "Tahoma"
self.contents.font.size = 30
self.opacity = 0
self.contents.draw_text(0, 0, 233, 33, "Movie Director")
self.contents.draw_text(0, 10, 143, 63, "Azzy9")
end
end
class Window15 < Window_Base
def initialize
super(0, 0, 240,240)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = "Tahoma"
self.contents.font.size = 30
self.opacity = 0
self.contents.draw_text(0, 0, 233, 33, "Battle Effect Director")
self.contents.draw_text(0, 10, 143, 63, "Azzy9")
end
end
class Window16 < Window_Base
def initialize
super(0, 0, 240,240)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = "Tahoma"
self.contents.font.size = 30
self.opacity = 0
self.contents.draw_text(0, 0, 233, 33, "Polygon Director")
self.contents.draw_text(0, 10, 143, 63, "Azzy9")
end
end
class Window17 < Window_Base
def initialize
super(0, 0, 240,240)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = "Tahoma"
self.contents.font.size = 30
self.opacity = 0
self.contents.draw_text(0, 0, 183, 33, "Motion Director")
self.contents.draw_text(0, 10, 143, 63, "Azzy9")
end
end
class Window18 < Window_Base
def initialize
super(0, 0, 240,240)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = "Tahoma"
self.contents.font.size = 30
self.opacity = 0
self.contents.draw_text(0, 0, 233, 33, "CardGame Director")
self.contents.draw_text(0, 10, 143, 63, "Azzy9")
end
end
class Window19 < Window_Base
def initialize
super(0, 0, 240,240)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = "Tahoma"
self.contents.font.size = 30
self.opacity = 0
self.contents.draw_text(0, 0, 233, 33, "LeadField Designer")
self.contents.draw_text(0, 10, 143, 63, "Azzy9")
end
end
class Window20 < Window_Base
def initialize
super(0, 0, 240,240)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = "Tahoma"
self.contents.font.size = 30
self.opacity = 0
self.contents.draw_text(0, 0, 233, 33, "LeadField Designer")
self.contents.draw_text(0, 10, 143, 63, "Azzy9")
end
end
class Window21 < Window_Base
def initialize
super(0, 0, 240,240)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = "Tahoma"
self.contents.font.size = 30
self.opacity = 0
self.contents.draw_text(0, 0, 233, 33, "VFX & Composite")
self.contents.draw_text(0, 10, 143, 63, "Azzy9")
end
end
class Window22 < Window_Base
def initialize
super(0, 0, 240,240)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = "Tahoma"
self.contents.font.size = 30
self.opacity = 0
self.contents.draw_text(0, 0, 233, 33, "Event Programmer")
self.contents.draw_text(0, 10, 143, 63, "Azzy9")
end
end
class Window23 < Window_Base
def initialize
super(0, 0, 240,240)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = "Tahoma"
self.contents.font.size = 30
self.opacity = 0
self.contents.draw_text(0, 0, 138, 33, "Event Director")
self.contents.draw_text(0, 10, 143, 63, "Azzy9")
end
end
class Window24 < Window_Base
def initialize
super(0, 0, 240,240)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = "Tahoma"
self.contents.font.size = 30
self.opacity = 0
self.contents.draw_text(0, 0, 233, 33, "Battle Programmers")
self.contents.draw_text(0, 10, 143, 63, "Azzy9")
end
end
class Window25 < Window_Base
def initialize
super(0, 0, 240,240)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = "Tahoma"
self.contents.font.size = 30
self.opacity = 0
self.contents.draw_text(0, 0, 233, 33, "WorldMap Director")
self.contents.draw_text(0, 10, 143, 63, "Azzy9")
end
end
class Window26 < Window_Base
def initialize
super(0, 0, 240,240)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = "Tahoma"
self.contents.font.size = 30
self.opacity = 0
self.contents.draw_text(0, 0, 183, 33, "Map Director")
self.contents.draw_text(0, 10, 143, 63, "Azzy9")
end
end
class Window27 < Window_Base
def initialize
super(0, 0, 250,240)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = "Tahoma"
self.contents.font.size = 30
self.opacity = 0
self.contents.draw_text(0, 0, 240, 33, "Sound Programmer")
self.contents.draw_text(0, 10, 143, 63, "Azzy9")
end
end
class Window28 < Window_Base
def initialize
super(0, 0, 240,240)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = "Tahoma"
self.contents.font.size = 30
self.opacity = 0
self.contents.draw_text(0, 0, 183, 33, "Sound Editor")
self.contents.draw_text(0, 10, 143, 63, "Azzy9")
end
end
Audio.bgm_play("Audio/BGM/" + "Overture", 100, 100) # - Plays the Background Music
#==============================================================================
# +++ MOG XP - Combo Display V1.0 +++
#==============================================================================
# By Moghunter
# http://www.atelier-rgss.com/
#==============================================================================
# ■ Apresenta a quantidade de acertos no alvo e o dano maximo.
# ---------------------------------------------------------------------------
# É necessário ter os arquivos imagens na pasta Graphics/Windoskins.
# Combo_Damage.png
# Combo_Hud.png
# Combo_Number.png
#==============================================================================
module MOG_COMBO_DISPLAY
#Ativar tempo para fazer combo.
TIME_COUNT = true
# Tempo para fazer um combo. (40 = 1s)
COMBO_TIME = 40
# Cancelar a contagem de Combo caso o inimigo acertar o herói.
ENEMY_CANCEL_COMBO = true
# Posição geral das imagens. X Y
COMBO_POSITION = [10,80]
# Posição do número de HITS. X Y
HIT_POSITION = [15,20]
# Posição do número de dano. X Y
TOTAL_POSITION = [60,-20]
# Prioridade das imagens.
PRIORITY_Z = 50
end
#===============================================================================
# ■ Game_Temp
#===============================================================================
class Game_Temp
attr_accessor :combo_hit
attr_accessor :max_damage
attr_accessor :combo_time
#--------------------------------------------------------------------------
# ● initialize
#--------------------------------------------------------------------------
alias mog_combo_display_initialize initialize
def initialize
@combo_hit = 0
@max_damage = 0
@combo_time = 0
mog_combo_display_initialize
end
end
#===============================================================================
# ■ Combo_Sprite_Hud
#===============================================================================
class Combo_Sprite_Hud < Sprite
attr_accessor :combo_wait
include MOG_COMBO_DISPLAY
#--------------------------------------------------------------------------
# ● Initialize
#--------------------------------------------------------------------------
def initialize
super
@combo_wait = false
$game_temp.combo_time = 0
$game_temp.combo_hit = 0
$game_temp.max_damage = 0
@combo_hit_old = 0
@animation_speed = 0
@pos_x = COMBO_POSITION[0]
@pos_x_fix = 0
@pos_y = COMBO_POSITION[1]
create_combo_sprite
create_total_damage_sprite
create_hud_sprite
end
#--------------------------------------------------------------------------
# ● Create Hud Sprite
#--------------------------------------------------------------------------
def create_hud_sprite
@hud = Sprite.new
@hud.bitmap = RPG::Cache.windowskin("Combo_HUD")
@hud.z = PRIORITY_Z
@hud.x = COMBO_POSITION[0]
@hud.y = COMBO_POSITION[1]
@hud.opacity = 250
@hud.visible = false
end
#--------------------------------------------------------------------------
# ● Create Total Damage Sprite
#--------------------------------------------------------------------------
def create_total_damage_sprite
@total_image = RPG::Cache.windowskin("Combo_damage")
@total_bitmap = Bitmap.new(@combo_image.width,@combo_image.height)
@total = Sprite.new
@total.bitmap = @total_bitmap
@total_im_cw = @total_image.width / 10
@total_im_ch = @total_image.height
@total_number_text = $game_temp.max_damage.abs.to_s.split(//)
for r in 0..@total_number_text.size - 1
@total_number_abs = @total_number_text[r].to_i
@total_src_rect = Rect.new(@total_im_cw * @total_number_abs, 0, @total_im_cw, @total_im_ch)
@total_bitmap.blt(40 + ((@total_im_cw - 12) * r), 0, @total_image, @total_src_rect)
end
@total.z = PRIORITY_Z + 1
@total_orig_x = COMBO_POSITION[0] + TOTAL_POSITION[0]
@total_orig_y = COMBO_POSITION[1] + TOTAL_POSITION[1]
@total.x = @total_orig_x
@total.y = @total_orig_y
@total.zoom_x = 1.00
@total.zoom_y = 1.00
@total.opacity = 250
@total.visible = false
end
#--------------------------------------------------------------------------
# ● Create Combo Number
#--------------------------------------------------------------------------
def create_combo_sprite
@combo_image = RPG::Cache.windowskin("Combo_Number")
@combo_bitmap = Bitmap.new(@combo_image.width,@combo_image.height)
@combo = Sprite.new
@combo.bitmap = @combo_bitmap
@combo_im_cw = @combo_image.width / 10
@combo_im_ch = @combo_image.height
@combo_number_text = $game_temp.combo_hit.abs.to_s.split(//)
for r in 0..@combo_number_text.size - 1
@combo_number_abs = @combo_number_text[r].to_i
@combo_src_rect = Rect.new(@combo_im_cw * @combo_number_abs, 0, @combo_im_cw, @combo_im_ch)
@combo_bitmap.blt(40 + ((@combo_im_cw - 12) * r), 0, @combo_image, @combo_src_rect)
end
@combo.z = PRIORITY_Z + 2
@combo_orig_x = COMBO_POSITION[0] + HIT_POSITION[0]
@combo_orig_y = COMBO_POSITION[1] + HIT_POSITION[1]
@pos_x_fix = (@combo_im_cw / 2 * @combo_number_text.size)
@combo.x = @combo_orig_x - @pos_x_fix
@combo.y = @combo_orig_y
@combo.zoom_x = 1.00
@combo.zoom_y = 1.00
@combo.opacity = 250
@combo.visible = false
end
#--------------------------------------------------------------------------
# ● Dispose
#--------------------------------------------------------------------------
def dispose
@combo_bitmap.dispose
@combo.bitmap.dispose
@combo.dispose
@hud.bitmap.dispose
@hud.dispose
@total_bitmap.dispose
@total.bitmap.dispose
@total.dispose
super
end
#--------------------------------------------------------------------------
# ● Refresh
#--------------------------------------------------------------------------
def refresh
@combo_hit_old = $game_temp.combo_hit
@combo.bitmap.clear
@total.bitmap.clear
@combo_number_text = $game_temp.combo_hit.abs.to_s.split(//)
for r in 0..@combo_number_text.size - 1
@combo_number_abs = @combo_number_text[r].to_i
@combo_src_rect = Rect.new(@combo_im_cw * @combo_number_abs, 0, @combo_im_cw, @combo_im_ch)
@combo_bitmap.blt(40 + ((@combo_im_cw - 12) * r), 0, @combo_image, @combo_src_rect)
end
@total_number_text = $game_temp.max_damage.abs.to_s.split(//)
for r in 0..@total_number_text.size - 1
@total_number_abs = @total_number_text[r].to_i
@total_src_rect = Rect.new(@total_im_cw * @total_number_abs, 0, @total_im_cw, @total_im_ch)
@total_bitmap.blt(40 + ((@total_im_cw - 12) * r), 20, @total_image, @total_src_rect)
end
#Combo Position
@pos_x_fix = (@combo_im_cw / 2 * @combo_number_text.size)
@combo.x = @combo_orig_x - @pos_x_fix
@combo.y = @combo_orig_y
@combo.zoom_x = 2
@combo.zoom_y = 2
@combo.opacity = 70
@combo.visible = true
#Total Position
@total.x = @total_orig_x + 20
@total.y = @total_orig_y
@total.opacity = 100
@total.visible = true
#Hud Position
@hud.x = COMBO_POSITION[0]
@hud.y = COMBO_POSITION[1]
@hud.opacity = 255
@hud.visible = true
end
#--------------------------------------------------------------------------
# ● Slide Update
#--------------------------------------------------------------------------
def slide_update
return if @combo.visible == false
if $game_temp.combo_time > 0 and @combo_wait == false
$game_temp.combo_time -= 1 if TIME_COUNT == true
end
if $game_temp.combo_time > 0 and $game_temp.combo_hit > 0
#Total Damage
if @total.x > @total_orig_x
@total.x -= 1
@total.opacity += 8
else
@total.x = @total_orig_x
@total.opacity = 255
end
#Combo
if @combo.zoom_x > 1.00
@combo.zoom_x -= 0.05
@combo.zoom_y -= 0.05
@combo.opacity += 8
else
@combo.zoom_x = 1
@combo.zoom_y = 1
@combo.opacity = 255
@combo.x = @combo_orig_x - @pos_x_fix
@combo.y = @combo_orig_y
end
elsif $game_temp.combo_time == 0 and @combo.visible == true
@combo.x -= 5
@combo.opacity -= 10
@total.x -= 3
@total.opacity -= 10
@hud.x += 5
@hud.opacity -= 10
$game_temp.combo_hit = 0
@combo_hit_old = $game_temp.combo_hit
$game_temp.max_damage = 0
if @combo.opacity <= 0
@combo.visible = false
@total.visible = false
@hud.visible = false
end
end
end
#--------------------------------------------------------------------------
# ● Cancel
#--------------------------------------------------------------------------
def cancel
$game_temp.combo_hit = 0
$game_temp.max_damage = 0
$game_temp.combo_time = 0
@combo_hit_old = $game_temp.combo_hit
end
#--------------------------------------------------------------------------
# ● Clear
#--------------------------------------------------------------------------
def clear
$game_temp.combo_time = 0
end
#--------------------------------------------------------------------------
# ● Update
#--------------------------------------------------------------------------
def update
super
refresh if $game_temp.combo_hit != @combo_hit_old
slide_update
end
end
#===============================================================================
# ■ Scene_Battle
#===============================================================================
class Scene_Battle
include MOG_COMBO_DISPLAY
#--------------------------------------------------------------------------
# ● main
#--------------------------------------------------------------------------
alias mog_combo_main main
def main
create_cb_sprite
mog_combo_main
dispose_cb_sprite
end
#--------------------------------------------------------------------------
# ● create_cb_sprite
#--------------------------------------------------------------------------
def create_cb_sprite
@combo_sprite = Combo_Sprite_Hud.new
end
#--------------------------------------------------------------------------
# ● dispose_cb_sprite
#--------------------------------------------------------------------------
def dispose_cb_sprite
@combo_sprite.dispose
end
#--------------------------------------------------------------------------
# ● update
#--------------------------------------------------------------------------
alias mog_combo_update update
def update
mog_combo_update
@combo_sprite.update
end
#--------------------------------------------------------------------------
# ● mog_combo_start_phase1
#--------------------------------------------------------------------------
alias mog_combo_start_phase2 start_phase2
def start_phase2
@combo_sprite.combo_wait = false
mog_combo_start_phase2
end
#--------------------------------------------------------------------------
# ● start_phase4
#--------------------------------------------------------------------------
alias mog_combo_display_start_phase4 start_phase4
def start_phase4
@combo_sprite.combo_wait = true
mog_combo_display_start_phase4
end
#--------------------------------------------------------------------------
# ● update_phase4_step5
#--------------------------------------------------------------------------
alias mog_combo_display_update_phase4_step5 update_phase4_step5
def update_phase4_step5
for target in @target_battlers
if target.damage != nil and target.damage.is_a?(Numeric) and
target.damage.to_i > 0
if target.is_a?(Game_Enemy)
$game_temp.combo_hit += 1
$game_temp.max_damage += target.damage.to_i
$game_temp.combo_time = COMBO_TIME
else
$game_temp.combo_time = 0 if ENEMY_CANCEL_COMBO == true
end
end
end
mog_combo_display_update_phase4_step5
end
#--------------------------------------------------------------------------
# ● Start After Battle Phase
#--------------------------------------------------------------------------
alias mog_combo_start_phase5 start_phase5
def start_phase5
@combo_sprite.clear
mog_combo_start_phase5
end
end
$mog_rgssxp_combo_display = true
#===================================================
# ? AMS - Advanced Message Script - R4 Thai Mod version 1.5
#===================================================
#----------------------------------------------------
# Original Message
#----------------------------------------------------
# For more infos and update, visit:
# www.dubealex.com (Creation Asylum)
#
# Edited, Fixed and Enhanced by: Dubealex
# Original Script Core by: XRXS Scripter (Jap Dudes)
# HTML Hexadecimal color feature from: Phylomorphis
#
# Special Thanks:
# Rabu: For enabling the Show Face feature in an encrypted project
#
# To found all my new features, search the following: #NEW
# To configure the button to skip the dialog, search: #SKIP_TEXT_CODE
#
# May 18, 2005
#----------------------------------------------------
# Mod Thai characters fix by Hima 18/08/2007
# Version 1.3
# ----------------- Version History ----------------
# 1.0 - First released
# 1.1 - Fixed some special syntaxes
# 1.2 - Fixed so that it works with RGSS102E.dll
# 1.3 - Fixed a problem with สระอำ, การันต์ และ ตัวเขบ็ด ก็
# 1.4 - Fixed a problem with \% function (cancle text skip)
# 1.5 - Added a new feature, message style selection.
#
#===================================================
# New Function
#===================================================
=begin
1.) Msg Box style selection
By adding "\style[numbers]" into the message, the message box will change according to the style's number
To add more style, search for "Add more style here" and you'll see the array of style. Copy and paste it on the
next line, and change the array index number. Then change the parameter inside, corresponding to the index name for example
@message_style[3] = {"width" => 100, "height" => 160, "x" => 80, "y" =>[200,160,1], "opacity" => 160, "skin" => "001-Blue01"}
This would mean, the style number "3" is as follow
width : 100 px, height : 160 px, x position : 80 y position : top - 200, middle - 160, bottom - 1, opacity : 160 and using a skin of file name "001-Blue01"
Note that this function will change the style "permanently".
=end
#===================================================
LETTER_BY_LETTER_MODE = true #Set the letter by letter mode ON/OFF
#===================================================
# CLASS AMS Begins
#===================================================
class AMS
attr_accessor :name_box_x_offset
attr_accessor :name_box_y_offset
attr_accessor :font_type
attr_accessor :name_font_type
attr_accessor :font_size
attr_accessor :name_font_size
attr_accessor :message_box_opacity
attr_accessor :name_box_skin
attr_accessor :name_box_text_color
attr_accessor :message_box_text_color
attr_accessor :message_box_skin
attr_accessor :name_box_width
attr_accessor :name_box_height
attr_accessor :message_width
attr_accessor :message_height
attr_accessor :message_x
attr_accessor :message_y_bottom
attr_accessor :message_y_middle
attr_accessor :message_y_top
attr_accessor :event_message_x_ofset
attr_accessor :event_message_y_ofset
attr_accessor :style
attr_reader :message_style
def initialize
@name_box_x_offset = 0 #Choose the X axis offset of the name bos. default= 0
@name_box_y_offset = -10 #Choose the Y axis offset of the name bos. default= -10
@name_box_width = 8 #Choose the width of the Name Box. default= 8
@name_box_height = 26 #Choose the height of the Name Box. default= 26
@font_type = "Trajan Pro" #Choose the Font Name (Case Sensitive) for message box
@name_font_type = "Trajan Pro" #Choose the Font Name (Case Sensitive) for Name Box
@font_size = 20 #Choose the default Font Size for message box text
@name_font_size = 20 #Choose the deafault Font Size for Name Box text
@name_box_text_color=0 #Choose the Text Color of the Name Box
@message_box_text_color=0 #Choose the Text Color of the Message Box
@message_box_opacity = 160 #Choose the opacity of the message window. Default=160
@message_box_skin = "001-Blue01" #Choose the WindowSkin for the Message Box
@name_box_skin = "001-Blue01" #Choose the WindowSkin for the Name Box
@message_width = 480 #Choose the width size of the message box. Default=480
@message_height = 160 #Choose the height size of the message box. Default=160
@message_x = 80 #Choose the X position of the message box. Default=80
@message_y_bottom = 304 #Choose the Y bottom position of the message box. Default=304
@message_y_middle = 160 #Choose the Y middle position of the message box. Default=160
@message_y_top = 16 #Choose the Y top position of the message box. Default=16
@event_message_x_ofset = 0 #Choose the X position offset of the event message. Default=0
@event_message_y_ofset = 48 #Choose the Y position offset of the event message. Default=48
@style = 0
@message_style = []
# Add more styles here
@message_style[0] = {"width" => 480, "height" => 160, "x" => 80, "y" =>[16,160,304], "opacity" => 160, "skin" => "001-Blue01"}
@message_style[1] = {"width" => 360, "height" => 160, "x" => 80, "y" =>[16,160,304], "opacity" => 160, "skin" => "001-Blue01"}
end
end
#===================================================
# CLASS AMS Ends
#===================================================
#===================================================
# Class Window_Message Begins
#===================================================
class Window_Message < Window_Selectable
alias xrxs9_initialize initialize
def initialize
@alex_skip = false
$formed_letters = [
"่" , "้" , "๊" , "๋" , "ี" "ื" , "ึ" , "ุ", "ู", "็"
]
xrxs9_initialize
if $soundname_on_speak == nil then
$soundname_on_speak = ""
end
$gaiji_file = "./Graphics/Gaiji/sample.png"
if FileTest.exist?($gaiji_file)
@gaiji_cache = Bitmap.new($gaiji_file)
else
@gaigi_cache = nil
end
@opacity_text_buf = Bitmap.new(32, 32)
end
#--------------------------------------------------------------------------
alias xrxs9_terminate_message terminate_message
def terminate_message
if @name_window_frame != nil
@name_window_frame.dispose
@name_window_frame = nil
end
if @name_window_text != nil
@name_window_text.dispose
@name_window_text = nil
end
xrxs9_terminate_message
end
#--------------------------------------------------------------------------
def refresh
self.contents.clear
self.contents.font.color = text_color($ams.message_box_text_color)
self.contents.font.name = $ams.font_type
self.contents.font.size = $ams.font_size
self.windowskin = RPG::Cache.windowskin($ams.message_box_skin)
@x = @y = @max_x = @max_y = @indent = @lines = 0
@face_indent = 0
@opacity = 255
@cursor_width = 0
@write_speed = 0
@write_wait = 0
@mid_stop = false
@face_file = nil
@popchar = -2
if $game_temp.choice_start == 0
@x = 8
end
if $game_temp.message_text != nil
@now_text = $game_temp.message_text
if (/\A\\[Ff]\[(.+?)\]/.match(@now_text))!=nil then
@face_file = $1 + ".png"
@x = @face_indent = 128
if FileTest.exist?("Graphics/Pictures/" + $1 + ".png")
self.contents.blt(16, 16, RPG::Cache.picture(@face_file), Rect.new(0, 0, 96, 96))
end
@now_text.gsub!(/\\[Ff]\[(.*?)\]/) { "" }
end
begin
last_text = @now_text.clone
@now_text.gsub!(/\\[Vv]\[([IiWwAaSs]?)([0-9]+)\]/) { convart_value($1, $2.to_i) }
end until @now_text == last_text
@now_text.gsub!(/\\[Nn]\[([0-9]+)\]/) do
$game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
end
@now_text.gsub!(/\\[Ii]tem\[([0-9]+)\]/) do
$data_items[$1.to_i] != nil ? $data_items[$1.to_i].name : ""
end
#NEW
#Dubealex's Stop Skip Text ON-OFF
@now_text.gsub!(/\\[%]/) { "\100" }
#End new command
#NEW
#Dubealex's Show Monster Name Feature
@now_text.gsub!(/\\[Mm]\[([0-9]+)\]/) do
$data_enemies[$1.to_i] != nil ? $data_enemies[$1.to_i].name : ""
end
#End new command
#NEW
#Dubealex's Show Item Price Feature
@now_text.gsub!(/\\[Pp]rice\[([0-9]+)\]/) do
$data_items[$1.to_i] != nil ? $data_items[$1.to_i].price : ""
end
#End new command
#NEW
#Dubealex's Show Hero Class Name Feature
@now_text.gsub!(/\\[Cc]lass\[([0-9]+)\]/) do
$data_classes[$data_actors[$1.to_i].class_id] != nil ? $data_classes[$data_actors[$1.to_i].class_id].name : ""
end
#End new command
#NEW
#Dubealex's Show Current Map Name Feature
@now_text.gsub!(/\\[Mm]ap/) do
$game_map.name != nil ? $game_map.name : ""
end
#End new command
#NEW
#Dubealex's Choose Name Box Text Color
@now_text.gsub!(/\\[Zz]\[([0-9]+)\]/) do
$ams.name_box_text_color=$1.to_i
@now_text.sub!(/\\[Zz]\[([0-9]+)\]/) { "" }
end
#End new command
name_window_set = false
if (/\\[Nn]ame\[(.+?)\]/.match(@now_text)) != nil
name_window_set = true
name_text = $1
@now_text.sub!(/\\[Nn]ame\[(.*?)\]/) { "" }
end
if (/\\[Aa]ctor/.match(@now_text)) != nil
name_window_set = true
name_text = $text
@now_text.sub!(/\\[Aa]ctor/) { "" }
end
if (/\\[Pp]\[([-1,0-9]+)\]/.match(@now_text))!=nil then
@popchar = $1.to_i
if @popchar == -1
@x = @indent = 48
@y = 4
end
@now_text.gsub!(/\\[Pp]\[([-1,0-9]+)\]/) { "" }
end
@max_choice_x = 0
if @popchar >= 0
@text_save = @now_text.clone
@max_x = 0
@max_y = 4
for i in 0..3
line = @now_text.split(/\n/)[3-i]
@max_y -= 1 if line == nil and @max_y <= 4-i
next if line == nil
line.gsub!(/\\\w\[(\w+)\]/) { "" }
cx = contents.text_size(line).width
@max_x = cx if cx > @max_x
if i >= $game_temp.choice_start
@max_choice_x = cx if cx > @max_choice_x
end
end
self.width = @max_x + 32 + @face_indent
self.height = (@max_y - 1) * 32 + 64
@max_choice_x -= 68
@max_choice_x -= @face_indent*216/128
else
@max_x = self.width - 32 - @face_indent
for i in 0..3
line = @now_text.split(/\n/)[i]
next if line == nil
line.gsub!(/\\\w\[(\w+)\]/) { "" }
cx = contents.text_size(line).width
if i >= $game_temp.choice_start
@max_choice_x = cx if cx > @max_choice_x
end
end
@max_choice_x += 8
end
@cursor_width = 0
@now_text.gsub!(/\\\\/) { "\000" }
@now_text.gsub!(/\\[Cc]\[([0123456789ABCDEF#]+)\]/) { "\001[#{$1}]" }
@now_text.gsub!(/\\[Gg]/) { "\002" }
@now_text.gsub!(/\\[Ss]\[([0-9]+)\]/) { "\003[#{$1}]" }
@now_text.gsub!(/\\[Aa]\[(.*?)\]/) { "\004[#{$1}]" }
#NEW
#Hima's Message Box Style Change
@now_text.gsub!(/\\[Ss]tyle\[([0-9]+)\]/) do
$ams.style= $1.to_i
@now_text.sub!(/\\[Ss]\[([0-9]+)\]/) { "" }
end
#End of new command
#NEW
#Dubealex's Permanent Color Change
@now_text.gsub!(/\\[Cc]olor\[([0-9]+)\]/) do
$ams.message_box_text_color= $1.to_i
@now_text.sub!(/\\[Cc]\[([0-9]+)\]/) { "" }
end
#End of new command
#NEW
#Dubealex's Font Change Feature
@now_text.gsub(/\\[Tt]\[(.*?)\]/) do
buftxt = $1.to_s
$ams.font_type = buftxt
@now_text.sub!(/\\[Tt]\[(.*?)\]/) { "" }
end
#End of new command
@now_text.gsub!(/\\[.]/) { "\005" }
@now_text.gsub!(/\\[|]/) { "\006" }
@now_text.gsub!(/\\[>]/) { "\016" }
@now_text.gsub!(/\\[<]/) { "\017" }
@now_text.gsub!(/\\[!]/) { "\020" }
@now_text.gsub!(/\\[~]/) { "\021" }
@now_text.gsub!(/\\[Ee]\[([0-9]+)\]/) { "\022[#{$1}]" }
@now_text.gsub!(/\\[Ii]/) { "\023" }
@now_text.gsub!(/\\[Oo]\[([0-9]+)\]/) { "\024[#{$1}]" }
@now_text.gsub!(/\\[Hh]\[([0-9]+)\]/) { "\025[#{$1}]" }
@now_text.gsub!(/\\[Bb]\[([0-9]+)\]/) { "\026[#{$1}]" }
@now_text.gsub!(/\\[Rr]\[(.*?)\]/) { "\027[#{$1}]" }
reset_window
if name_window_set
color=$ams.name_box_text_color
off_x = $ams.name_box_x_offset
off_y = $ams.name_box_y_offset
space = 2
x = self.x + off_x - space / 2
y = self.y + off_y - space / 2
w = self.contents.text_size(name_text).width + $ams.name_box_width + space
h = $ams.name_box_height + space
@name_window_frame = Window_Frame.new(x, y, w, h)
@name_window_frame.z = self.z + 1
x = self.x + off_x + 4
y = self.y + off_y
@name_window_text = Air_Text.new(x, y, name_text, color)
@name_window_text.z = self.z + 2
end
@text_array = @now_text.scan(/./)
@type_time = 0
end
reset_window
if $game_temp.choice_max > 0
@item_max = $game_temp.choice_max
self.active = true
self.index = 0
end
if $game_temp.num_input_variable_id > 0
digits_max = $game_temp.num_input_digits_max
number = $game_variables[$game_temp.num_input_variable_id]
@input_number_window = Window_InputNumber.new(digits_max)
@input_number_window.number = number
@input_number_window.x = self.x + 8
@input_number_window.y = self.y + $game_temp.num_input_start * 32
end
end
#--------------------------------------------------------------------------
def update
super
if @fade_in
self.contents_opacity += 24
if @input_number_window != nil
@input_number_window.contents_opacity += 24
end
if self.contents_opacity == 255
@fade_in = false
end
return
end
@now_text = nil if @now_text == ""
if @now_text != nil and @mid_stop == false
if @write_wait > 0
@write_wait -= 1
return
end
text_not_skip = LETTER_BY_LETTER_MODE
while true
@max_x = @x if @max_x < @x
@max_y = @y if @max_y < @y
if (c = @now_text.slice!(/./m)) != nil && @type_time < @text_array.size
@mark = ""
if c == "ำ" or c == "้" or c == "่" or c == "๊" or c == "๋" or c == "ี" or c == "ิ" or c == "ื" or c == "ึ" or c == "ุ" or c == "ู" or c == "ั" or c == "็" or c == "์"
@type_time += 1
next
end
if @type_time != @text_array.size - 1 && c != "" && c != "ไ" && c != "ใ"
if ((@text_array[@type_time+1] <=> "ำ") == 0)
@mark = "ำ"
end
if ((@text_array[@type_time+1] <=> "ั") == 0)
@mark = "ั"
end
if ((@text_array[@type_time+1] <=> "็") == 0)
@mark = "็"
end
if ((@text_array[@type_time+1] <=> "์") == 0)
@mark = "์"
end
if ((@text_array[@type_time+1] <=> "ิ") == 0)
@mark = "ิ"
end
if ((@text_array[@type_time+1] <=> "ี") == 0)
@mark = "ี"
end
if ((@text_array[@type_time+1] <=> "ึ") == 0)
@mark = "ึ"
end
if ((@text_array[@type_time+1] <=> "ื") == 0)
@mark = "ื"
end
if ((@text_array[@type_time+1] <=> "ุ") == 0)
@mark = "ุ"
end
if ((@text_array[@type_time+1] <=> "ู") == 0)
@mark = "ู"
end
if ((@text_array[@type_time+1] <=> "๋") == 0)
@mark = "๋"
end
if ((@text_array[@type_time+1] <=> "๊") == 0)
@mark = "๊"
end
if ((@text_array[@type_time+1] <=> "้") == 0)
@mark = "้"
end
if ((@text_array[@type_time+1] <=> "่") == 0)
@mark = "่"
end
if @type_time != @text_array.size - 2 && c != " " && @mark != ""
if ((@text_array[@type_time+2] <=> "ำ") == 0)
@mark.concat("ำ")
end
if ((@text_array[@type_time+2] <=> "๋") == 0)
@mark.concat("๋")
end
if ((@text_array[@type_time+2] <=> "๊") == 0)
@mark.concat("๊")
end
if ((@text_array[@type_time+2] <=> "้") == 0)
@mark.concat("้")
end
if ((@text_array[@type_time+2] <=> "่") == 0)
@mark.concat("่")
end
end
end
if c == "\000"
c = "\\"
end
if c == "\001"
@now_text.sub!(/\[([0123456789ABCDEF#]+)\]/, "")
temp_color = $1
color = temp_color.to_i
leading_x = temp_color.to_s.slice!(/./m)
if leading_x == "#"
self.contents.font.color = hex_color(temp_color)
next
end
if color >= 0 and color <= 7
self.contents.font.color = text_color(color)
end
@type_time += (3+$1.to_s.length)
end
if c == "\002"
if @gold_window == nil and @popchar <= 0
@gold_window = Window_Gold.new
@gold_window.x = 560 - @gold_window.width
if $game_temp.in_battle
@gold_window.y = 192
else
@gold_window.y = self.y >= 128 ? 32 : 384
end
@gold_window.opacity = self.opacity
@gold_window.back_opacity = self.back_opacity
end
@type_time += 1
c = ""
end
if c == "\003"
@now_text.sub!(/\[([0-9]+)\]/, "")
speed = $1.to_i
if speed >= 0 and speed <= 19
@write_speed = speed
end
c = ""
@type_time += (3+$1.to_s.length)
end
if c == "\004"
@now_text.sub!(/\[(.*?)\]/, "")
buftxt = $1.dup.to_s
@type_time += (3+$1.to_s.length)
if buftxt.match(/\//) == nil and buftxt != "" then
$soundname_on_speak = "Audio/SE/" + buftxt
else
$soundname_on_speak = buftxt.dup
end
c = ""
elsif c == "\004"
c = ""
end
if c == "\005"
@write_wait += 5
c = ""
@type_time += 1
end
if c == "\006"
@write_wait += 20
@type_time += 1
c = ""
end
if c == "\016"
text_not_skip = false
@type_time += 1
c = ""
end
if c == "\017"
text_not_skip = true
@type_time += 1
c = ""
end
if c == "\020"
@mid_stop = true
@type_time += 1
c = ""
end
if c == "\021"
terminate_message
@type_time += 1
return
end
if c == "\023"
@indent = @x
@type_time += 1
c = ""
end
if c == "\024"
@now_text.sub!(/\[([0-9]+)\]/, "")
@opacity = $1.to_i
color = self.contents.font.color
self.contents.font.name = $ams.font_type
self.contents.font.size = $ams.font_size
self.contents.font.color = Color.new(color.red, color.green, color.blue, color.alpha * @opacity / 255)
@type_time += (3+$1.to_s.length)
c = ""
end
if c == "\025"
@now_text.sub!(/\[([0-9]+)\]/, "")
self.contents.font.size = [[$1.to_i, 6].max, 32].min
@type_time += (3+$1.to_s.length)
c = ""
end
if c == "\026"
@now_text.sub!(/\[([0-9]+)\]/, "")
@x += $1.to_i
@type_time += (3+$1.to_s.length)
c = ""
end
if c == "\027"
@now_text.sub!(/\[(.*?)\]/, "")
@x += ruby_draw_text(self.contents, @x, @y * line_height + (line_height - self.contents.font.size), $1, @opacity)
if $soundname_on_speak != ""
Audio.se_play($soundname_on_speak)
end
@type_time += (3+$1.to_s.length)
c = ""
end
if c == "\030"
@now_text.sub!(/\[(.*?)\]/, "")
self.contents.blt(@x , @y * line_height + 8, RPG::Cache.icon($1), Rect.new(0, 0, 24, 24))
if $soundname_on_speak != ""
Audio.se_play($soundname_on_speak)
end
@x += 24
@type_time += (3+$1.to_s.length)
c = ""
end
if c == "\n"
@lines += 1
@y += 1
@x = 0 + @indent + @face_indent
if @lines >= $game_temp.choice_start
@x = 8 + @indent + @face_indent
@cursor_width = @max_choice_x
end
c = ""
end
if c == "\022"
@now_text.sub!(/\[([0-9]+)\]/, "")
@x += gaiji_draw(4 + @x, @y * line_height + (line_height - self.contents.font.size), $1.to_i)
c = ""
end
#NEW
#Dubealex's Text Skip On/OFF Command
if c == "\100"
if @alex_skip==false
@alex_skip=true
else
@alex_skip=false
end
c = ""
@type_time += 1
end
#end of new command
if c != ""
if @mark != ""
c.concat(@mark)
@mark = ""
end
self.contents.draw_text(0+@x, 32 * @y, 40, 32, c)
@x += self.contents.text_size(c).width
if $soundname_on_speak != "" then
Audio.se_play($soundname_on_speak)
end
@type_time += 1
end
#SKIP_TEXT_CODE
# B = Escape, 0 (On The NumPad), X
# C = Enter, Space Bar and C
# A = Shift, Z
if Input.press?(Input::C) # <-- Change the value on that line
if @alex_skip==false
text_not_skip = false
end
end
else
@now_text = ""
text_not_skip = true
break
end
if text_not_skip
break
end
end
@write_wait += @write_speed
return
end
if @input_number_window != nil
@input_number_window.update
if Input.trigger?(Input::C)
$game_system.se_play($data_system.decision_se)
$game_variables[$game_temp.num_input_variable_id] =
@input_number_window.number
$game_map.need_refresh = true
@input_number_window.dispose
@input_number_window = nil
terminate_message
end
return
end
if @contents_showing
if $game_temp.choice_max == 0
self.pause = true
end
if Input.trigger?(Input::B)
if $game_temp.choice_max > 0 and $game_temp.choice_cancel_type > 0
$game_system.se_play($data_system.cancel_se)
$game_temp.choice_proc.call($game_temp.choice_cancel_type - 1)
terminate_message
end
end
if Input.trigger?(Input::C)
if $game_temp.choice_max > 0
$game_system.se_play($data_system.decision_se)
$game_temp.choice_proc.call(self.index)
end
if @mid_stop
@mid_stop = false
return
else
terminate_message
end
end
return
end
if @fade_out == false and $game_temp.message_text != nil
@contents_showing = true
$game_temp.message_window_showing = true
refresh
Graphics.frame_reset
self.visible = true
self.contents_opacity = 0
if @input_number_window != nil
@input_number_window.contents_opacity = 0
end
@fade_in = true
return
end
if self.visible
@fade_out = true
self.opacity -= 48
if self.opacity == 0
self.visible = false
@fade_out = false
$game_temp.message_window_showing = false
end
return
end
end
#--------------------------------------------------------------------------
def get_character(parameter)
case parameter
when 0
return $game_player
else
events = $game_map.events
return events == nil ? nil : events[parameter]
end
end
#--------------------------------------------------------------------------
def reset_window
#MESSAGE_SIZE
#MESSAGE_POSITION
if @popchar >= 0
events = $game_map.events
if events != nil
character = get_character(@popchar)
x = [[character.screen_x - $ams.event_message_x_ofset - self.width / 2, 4].max, 636 - self.width].min
y = [[character.screen_y - $ams.event_message_y_ofset - self.height, 4].max, 476 - self.height].min
self.x = x
self.y = y
end
elsif @popchar == -1
self.x = -4
self.y = -4
self.width = 648
self.height = 488
else
if $game_temp.in_battle
self.y = 16
else
case $game_system.message_position
when 0
self.y = $ams.message_style[$ams.style]["y"][0]
when 1
self.y = $ams.message_style[$ams.style]["y"][1]
when 2
self.y = $ams.message_style[$ams.style]["y"][2]
end
self.x = $ams.message_style[$ams.style]["x"]
if @face_file == nil
self.width = $ams.message_style[$ams.style]["width"]
self.x = $ams.message_style[$ams.style]["x"]
else
if self.width <= 600
self.width = 600
self.x -=60
end
end
self.height = $ams.message_style[$ams.style]["height"]
end
end
self.contents = Bitmap.new(self.width - 32, self.height - 32)
self.contents.font.color = text_color($ams.message_box_text_color)
self.contents.font.name = $ams.font_type
self.contents.font.size = $ams.font_size
if @face_file != nil
self.contents.blt(16, 16, RPG::Cache.picture(@face_file), Rect.new(0, 0, 96, 96))
end
if @popchar == -1
self.opacity = 255
self.back_opacity = 0
elsif $game_system.message_frame == 0
self.opacity = 255
self.back_opacity = $ams.message_style[$ams.style]["opacity"]
else
self.opacity = 0
self.back_opacity = $ams.message_style[$ams.style]["opacity"]
end
end
#--------------------------------------------------------------------------
def gaiji_draw(x, y, num)
if @gaiji_cache == nil
return 0
else
if @gaiji_cache.width < num * 24
return 0
end
if self.contents.font.size >= 20 and self.contents.font.size <= 24
size = 24
else
size = self.contents.font.size * 100 * 24 / 2200
end
self.contents.stretch_blt(Rect.new(x, y, size, size), @gaiji_cache, Rect.new(num * 24, 0, 24, 24))
if $soundname_on_speak != "" then
Audio.se_play($soundname_on_speak)
end
return size
end
end
#--------------------------------------------------------------------------
def line_height
return 32
if self.contents.font.size >= 20 and self.contents.font.size <= 24
return 32
else
return self.contents.font.size * 15 / 10
end
end
#--------------------------------------------------------------------------
def ruby_draw_text(target, x, y, str,opacity)
sizeback = target.font.size
target.font.size * 3 / 2 > 32 ? rubysize = 32 - target.font.size : rubysize = target.font.size / 2
rubysize = [rubysize, 6].max
opacity = [[opacity, 0].max, 255].min
split_s = str.split(/,/)
split_s[0] == nil ? split_s[0] = "" : nil
split_s[1] == nil ? split_s[1] = "" : nil
height = sizeback + rubysize
width = target.text_size(split_s[0]).width
target.font.size = rubysize
ruby_width = target.text_size(split_s[1]).width
target.font.size = sizeback
buf_width = [target.text_size(split_s[0]).width, ruby_width].max
width - ruby_width != 0 ? sub_x = (width - ruby_width) / 2 : sub_x = 0
if opacity == 255
target.font.size = rubysize
target.draw_text(x + sub_x, y - target.font.size, target.text_size(split_s[1]).width, target.font.size, split_s[1])
target.font.size = sizeback
target.draw_text(x, y, width, target.font.size, split_s[0])
return width
else
if @opacity_text_buf.width < buf_width or @opacity_text_buf.height < height
@opacity_text_buf.dispose
@opacity_text_buf = Bitmap.new(buf_width, height)
else
@opacity_text_buf.clear
end
@opacity_text_buf.font.size = rubysize
@opacity_text_buf.draw_text(0 , 0, buf_width, rubysize, split_s[1], 1)
@opacity_text_buf.font.size = sizeback
@opacity_text_buf.draw_text(0 , rubysize, buf_width, sizeback, split_s[0], 1)
if sub_x >= 0
target.blt(x, y - rubysize, @opacity_text_buf, Rect.new(0, 0, buf_width, height), opacity)
else
target.blt(x + sub_x, y - rubysize, @opacity_text_buf, Rect.new(0, 0, buf_width, height), opacity)
end
return width
end
end
#--------------------------------------------------------------------------
def convart_value(option, index)
option == nil ? option = "" : nil
option.downcase!
case option
when "i"
unless $data_items[index].name == nil
r = sprintf("\030[%s]%s", $data_items[index].icon_name, $data_items[index].name)
end
when "w"
unless $data_weapons[index].name == nil
r = sprintf("\030[%s]%s", $data_weapons[index].icon_name, $data_weapons[index].name)
end
when "a"
unless $data_armors[index].name == nil
r = sprintf("\030[%s]%s", $data_armors[index].icon_name, $data_armors[index].name)
end
when "s"
unless $data_skills[index].name == nil
r = sprintf("\030[%s]%s", $data_skills[index].icon_name, $data_skills[index].name)
end
else
r = $game_variables[index]
end
r == nil ? r = "" : nil
return r
end
#--------------------------------------------------------------------------
def dispose
terminate_message
if @gaiji_cache != nil
unless @gaiji_cache.disposed?
@gaiji_cache.dispose
end
end
unless @opacity_text_buf.disposed?
@opacity_text_buf.dispose
end
$game_temp.message_window_showing = false
if @input_number_window != nil
@input_number_window.dispose
end
super
end
#--------------------------------------------------------------------------
def update_cursor_rect
if @index >= 0
n = $game_temp.choice_start + @index
self.cursor_rect.set(8 + @indent + @face_indent, n * 32, @cursor_width, 32)
else
self.cursor_rect.empty
end
end
end
#=========================================
# CLASS Window_Message Ends
#=========================================
#=========================================
# Class Window_Frame Begins
#=========================================
class Window_Frame < Window_Base
def initialize(x, y, width, height)
super(x, y, width, height)
self.windowskin = RPG::Cache.windowskin($ams.name_box_skin)
self.contents = nil
end
#--------------------------------------------------------------------------
def dispose
super
end
end
#=========================================
# CLASS Window_Frame Ends
#=========================================
#=========================================
# CLASS Game_Map Additional Code Begins
#=========================================
class Game_Map
#Dubealex's Addition (from XRXS) to show Map Name on screen
def name
return $map_infos[@map_id].gsub(/\[.*\]/) {""} # brackets, including the brackets
end
end
#=========================================
# CLASS Game_Map Additional Code Ends
#=========================================
#=========================================
# CLASS Scene_Title Additional Code Begins
#=========================================
class Scene_Title
#Dubealex's Addition (from XRXS) to show Map Name on screen
$map_infos = load_data("Data/MapInfos.rxdata")
for key in $map_infos.keys
$map_infos[key] = $map_infos[key].name
end
#Dubealex's addition to save data from the AMS in the save files
$ams = AMS.new
end
#=========================================
# CLASS Scene_Title Additional Code Ends
#=========================================
#=========================================
# CLASS Window_Base Additional Code Begins
#=========================================
class Window_Base < Window
#Dubealex Addition (from Phylomorphis) to use HTML Hex Code Colors
def hex_color(string)
red = 0
green = 0
blue = 0
if string.size != 6
print("Hex strings must be six characters long.")
print("White text will be used.")
return Color.new(255, 255, 255, 255)
end
for i in 1..6
s = string.slice!(/./m)
if s == "#"
print("Hex color string may not contain the \"#\" character.")
print("White text will be used.")
return Color.new(255, 255, 255, 255)
end
value = hex_convert(s)
if value == -1
print("Error converting hex value.")
print("White text will be used.")
return Color.new(255, 255, 255, 255)
end
case i
when 1
red += value * 16
when 2
red += value
when 3
green += value * 16
when 4
green += value
when 5
blue += value * 16
when 6
blue += value
end
end
return Color.new(red, green, blue, 255)
end
#--------------------------------------------------------------------------
def hex_convert(character)
case character
when "0"
return 0
when "1"
return 1
when "2"
return 2
when "3"
return 3
when "4"
return 4
when "5"
return 5
when "6"
return 6
when "7"
return 7
when "8"
return 8
when "9"
return 9
when "A"
return 10
when "B"
return 11
when "C"
return 12
when "D"
return 13
when "E"
return 14
when "F"
return 15
end
return -1
end
end
#=========================================
# CLASS Window_Base Additional Code Ends
#=========================================
#=========================================
# Class Air_Text Begins
#=========================================
class Air_Text < Window_Base
def initialize(x, y, designate_text, color=0)
super(x-16, y-16, 32 + designate_text.size * 12, 56)
self.opacity = 0
self.back_opacity = 0
self.contents = Bitmap.new(self.width - 32, self.height - 32)
w = self.contents.width
h = self.contents.height
self.contents.font.name = $ams.name_font_type
self.contents.font.size = $ams.name_font_size
self.contents.font.color = text_color(color)
self.contents.draw_text(0, 0, w, h, designate_text)
end
#--------------------------------------------------------------------------
def dispose
self.contents.clear
super
end
end
#==========================================
# CLASS Air_Text Ends
#==========================================
######################################
# Juego Tic-tac-toe hecho por
sadho, traducido por TN-69 - 27 Julio 2006
# Version : 1.3
######################################
class
Tictactoe
@@turn = "x"
@@font_name = "Arial"
@@font_size =
40
def initialize(menu_index = 0)
@menu_index = menu_index
end
######################
def
main
@turnWindow = Turn_window.new(@@turn)
@turnwindow.x = 450
@turnwindow.y
= 370
setSquares
setMenu
Graphics.transition
loop do
Graphics.update
Input.update
update
if
$scene != self
break
end
end
Graphics.freeze
@command_window.dispose
@turnwindow.dispose
for
x in 0..8
@sqr[x].dispose
end
end
######################
def
update
@command_window.update
@turnwindow.update(@@turn)
for
x in 0..8
@sqr[x].update
end
if @command_window.active
update_command
return
end
end
######################
def
update_command
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
$scene
= Scene_Map.new
return
end
if Input.trigger?(Input::C)
case
@command_window.index
when 0..8
$game_system.se_play($data_system.decision_se)
doAction(@command_window.index)
when
9
$game_system.se_play($data_system.decision_se)
$scene =
Tictactoe.new
when 10
$game_system.se_play($data_system.cancel_se)
$scene
= Scene_Map.new
end
return
end
end
######################
def
setMenu
s1 = "Arriba izquierda"
s2 = "Arriba medio"
s3 =
"Arriba derecha"
s4 = "Centro izquierda"
s5 = "Centro medio"
s6
= "Centro derecha"
s7 = "Abajo izquierda"
s8 = "Abajo medio"
s9
= "Abajo derecha"
s10 = "Repetir"
s11 = "Salir"
@command_window
= Window_Command.new(175, [s1, s2, s3, s4, s5, s6,s7,s8,s9,s10,s11])
@command_window.index
= @menu_index
@command_window.x = 440
end
######################
def
setSquares
@sqr = []
for x in 0..2
@sqr[x] =
Square.new(@@font_name,@@font_size)
@sqr[x].x = (x+1)*100
@sqr[x].y
= 50
end
for x in 3..5
@sqr[x] =
Square.new(@@font_name,@@font_size)
@sqr[x].x = (x-2)*100
@sqr[x].y
= 150
end
for x in 6..8
@sqr[x] =
Square.new(@@font_name,@@font_size)
@sqr[x].x = (x-5)*100
@sqr[x].y
= 250
end
end
######################
def
doAction(squareId)
if (@sqr[squareId].getOwner == "none")
@sqr[squareId].setOwner(@@turn)
verifyScore
else
$game_system.se_play($data_system.buzzer_se)
end
end
######################
def
verifyScore
gameIsFinish = false
#check all --
for x in 0..2
if
(@sqr[x*3].getOwner == @@turn && @sqr[x*3+1].getOwner == @@turn
&& @sqr[x*3+2].getOwner == @@turn)
print "El "+@@turn+" ha
ganado!"
gameIsFinish = true
end
end
#check all |
for
x in 0..2
if (@sqr[x].getOwner == @@turn &&
@sqr[x+3].getOwner == @@turn && @sqr[x+6].getOwner == @@turn)
print
"El "+@@turn+" ha ganado!"
gameIsFinish = true
end
end
#check
\
if (@sqr[0].getOwner == @@turn && @sqr[4].getOwner ==
@@turn && @sqr[8].getOwner == @@turn)
print "El "+@@turn+"
ha ganado!"
gameIsFinish = true
end
#check /
if
(@sqr[2].getOwner == @@turn && @sqr[4].getOwner == @@turn
&& @sqr[6].getOwner == @@turn)
print "El "+@@turn+" ha
ganado!"
gameIsFinish = true
end
if noMoreSpace &&
!gameIsFinish
print "¡Empate!"
$scene = Scene_Restart.new
end
if
gameIsFinish
$scene = Scene_Restart.new
elsif (@@turn == "x")
@@turn
= "o"
else @@turn = "x"
end
end
######################
def
noMoreSpace
for x in 0..8
if (@sqr[x].getOwner == "none")
return
false
end
end
return true
end
######################
end
#----------------------------------------------------------------------
#Squares
#----------------------------------------------------------------------
class
Square < Window_Base
def initialize(fontName,fontSize)
@owner
= "none"
super(0, 0, 100,100)
self.contents =
Bitmap.new(width-32, height-32)
self.contents.font.name = fontName
self.contents.font.size
= fontSize
refresh
end
def refresh
self.contents.clear
if
(@owner == "x")
self.contents.font.color = text_color(2)
self.contents.draw_text(22,
15, 100, 32, "X")
elsif (@owner == "o")
self.contents.font.color =
text_color(1)
self.contents.draw_text(22, 15, 100, 32, "O")
end
end
def
update
refresh
end
#############
def setOwner(newOwner)
@owner
= newOwner
end
#############
def getOwner
return @owner
end
#############
end
#----------------------------------------------------------------------
#Turn
Window
#----------------------------------------------------------------------
class
Turn_Window < Window_Base
def initialize(turn)
super(0, 0,
165,60)
self.contents = Bitmap.new(width-32, height-32)
self.contents.font.name
= "Arial"
self.contents.font.size = 30
refresh(turn)
end
def
refresh(turn)
self.contents.clear
if (turn == "x")
self.contents.font.color
= text_color(2)
self.contents.draw_text(0,0,100,32,"Turno de: X")
elsif
self.contents.font.color
= text_color(1)
self.contents.draw_text(0,0,100,32,"Turno de: O")
end
end
def
update(turn)
refresh(turn)
end
end
#----------------------------------------------------------------------
#scene
restart
#----------------------------------------------------------------------
class
Scene_Restart
@@font_name = "Arial"
@@font_size = 40
def
initialize(menu_index = 0)
@menu_index = menu_index
end
######################
def
main
setMenu
Graphics.transition
loop do
Graphics.update
Input.update
update
if
$scene != self
break
end
end
Graphics.freeze
@command_window.dispose
end
######################
def
update
@command_window.update
if @command_window.active
update_command
return
end
end
######################
def
update_command
if Input.trigger?(Input::C)
case
@command_window.index
when 0
$game_system.se_play($data_system.decision_se)
$scene
= Tictactoe.new
when 1
$game_system.se_play($data_system.cancel_se)
$scene
= Scene_Map.new
end
return
end
end
######################
def setMenu
s1 = "Repetir"
s2 = "Salir"
@command_window =
Window_Command.new(180, [s1, s2])
@command_window.index = @menu_index
@command_window.x
= 250
@command_window.y = 200
end
end
#_______________________________________________________________________________
# MOG Skill Item V1.0
#_______________________________________________________________________________
# By Moghunter
# http://www.atelier-rgss.com
#_______________________________________________________________________________
# Permite aprender habilidades al usar un objeto.
#_______________________________________________________________________________
module MOG
# Definición del sonido cuando se aprende una habilidad.
SKILL_LEARN_SE = RPG::AudioFile.new("106-Heal02",150,150)
# Definición del sonido cuando no se puede aprender una habilidad.
SKILL_NOLEARN_SE = RPG::AudioFile.new("057-Wrong01",150,150)
# Definición de los ítems que enseñan habilidades.
#
# ITEM_SKILL = {A=>B, A=B, ...}
#
# A = ID del ITEM.
# B = ID de la HABILIDAD(SKILL).
#
ITEM_SKILL = {
1=>1,
2=>2,
3=>3,
4=>10,
5=>23,
10=>13,
15=>15
}
end
################
# Game_Battler #
################
class Game_Battler
alias mog44_item_effect item_effect
def item_effect(item)
item_skill = MOG::ITEM_SKILL[item.id]
if item_skill != nil
unless self.skill_learn?(item_skill)
self.learn_skill(item_skill)
$game_system.se_play(MOG::SKILL_LEARN_SE)
return true
else
$game_system.se_play(MOG::SKILL_NOLEARN_SE)
return false
end
end
mog44_item_effect(item)
end
end
#===============================================================================
# Creado por: Northro
# Para: RPG Maker XP
# Nombre del Script: Movement Diagonal
# Versión del Script: 1.0
# Descripción: Mueve el personaje diagonalmente.
#===============================================================================
#===============================================================================
# Instrucciones: Pegar arriba del script "Main", para
# poner a un personaje el character que
# va a usar cuando se mueva en diagonal
# debes ponerle el nombre del character
# más "_diagonal".
#===============================================================================
#===============================================================================
# Clase "Game_Player"
#===============================================================================
class Game_Player < Game_Character
def update
actor = $game_party.actors[0]
if @character_diagonal and graphic_movement_diagonal(actor)
@character_name = actor.character_name + "_diagonal"
else
@character_name = actor.character_name
end
last_moving = moving?
unless moving? or $game_system.map_interpreter.running? or
@move_route_forcing or $game_temp.message_window_showing
x = $game_player.x
y = $game_player.y
d = 0
case Input.dir8
when 1
@through == true ? through = true : through = false
if passable?(x - 1, y + 1, d)
@character_diagonal = true
@through = true if through == false
move_left
move_down
end
@through = false if through == false
when 2
@character_diagonal = false
move_down
when 3
@through == true ? through = true : through = false
if passable?(x + 1, y + 1, d)
@character_diagonal = true
@through = true if through == false
move_down
move_right
end
@through = false if through == false
when 4
@character_diagonal = false
move_left
when 6
@character_diagonal = false
move_right
when 7
@through == true ? through = true : through = false
if passable?(x - 1, y - 1, d)
@character_diagonal = true
@through = true if through == false
move_up
move_left
end
@through = false if through == false
when 8
@character_diagonal = false
move_up
when 9
@through == true ? through = true : through = false
if passable?(x + 1, y - 1, d)
@character_diagonal = true
@through = true if through == false
move_right
move_up
end
@through = false if through == false
end
end
last_real_x = @real_x
last_real_y = @real_y
super
if @real_y > last_real_y and @real_y - $game_map.display_y > CENTER_Y
$game_map.scroll_down(@real_y - last_real_y)
end
if @real_x < last_real_x and @real_x - $game_map.display_x < CENTER_X
$game_map.scroll_left(last_real_x - @real_x)
end
if @real_x > last_real_x and @real_x - $game_map.display_x > CENTER_X
$game_map.scroll_right(@real_x - last_real_x)
end
if @real_y < last_real_y and @real_y - $game_map.display_y < CENTER_Y
$game_map.scroll_up(last_real_y - @real_y)
end
unless moving?
if last_moving
result = check_event_trigger_here([1,2])
if result == false
unless $DEBUG and Input.press?(Input::CTRL)
if @encounter_count > 0
@encounter_count -= 1
end
end
end
end
if Input.trigger?(Input::C)
check_event_trigger_here([0])
check_event_trigger_there([0,1,2])
end
end
end
def graphic_movement_diagonal(actor)
if moving?
RPG::Cache.character(actor.character_name + "_diagonal", actor.character_hue) rescue return false
end
end
end