#==============================================================================
# +++ MOG - Battle Result (2.0) +++胜利结算
#==============================================================================
# By Moghunter
# [url]https://atelierrgss.wordpress.com/[/url]
#==============================================================================
# Apresentação animada do resultado da batalha.
#==============================================================================
# Arquivos necessários. (Graphics/System)
#
# Result.png
# Result_Layout.png
# Result_Levelup.png
# Result_Levelword.png
# Result_Number_1.png
# Result_Number_2.png
#
#==============================================================================
# ● Histórico (Version History)
#==============================================================================
# v2.0 - Correção do bug de não ativar o resultado em inimigos ocultos.
#==============================================================================
module MOG_BATLE_RESULT
#Posição do EXP.
RESULT_EXP_POSITION = [440+48,80+12]
#Posição do GOLD.
RESULT_GOLD_POSITION = [476+48,125+20]
#Posição da palavra LeveL UP.
RESULT_LEVELWORD_POSITION = [0,0]
#Posição do Level.
RESULT_LEVEL_POSITION = [230+44,-7+5]
#Posição dos parâmetros
RESULT_PARAMETER_POSITION = [70+10,70+14]
#Posição da janela de skill.
RESULT_NEW_SKILL_POSITION = [240+24,230+16+150]
#Definição da animação de Level UP.
RESULT_LEVELUP_ANIMATION_ID = 37
end
$imported = {} if $imported.nil?
$imported[:mog_battler_result] = true
#==============================================================================
# ■ Game Temp
#==============================================================================
class Game_Temp
attr_accessor :level_parameter
attr_accessor :level_parameter_old
attr_accessor :result
attr_accessor :battle_end
attr_accessor :battle_result
#--------------------------------------------------------------------------
# ● Initialize
#--------------------------------------------------------------------------
alias mog_result_initialize initialize
def initialize
@level_parameter = [] ; @level_parameter_old = []
@result = false ; @battle_end = false ; @battle_result = false
mog_result_initialize
end
#--------------------------------------------------------------------------
# ● Sprite Visible
#--------------------------------------------------------------------------
def sprite_visible
return false if $game_message.visible
return false if $game_temp.battle_end
return true
end
end
#==============================================================================
# ■ Game Actor
#==============================================================================
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
# ● Display_level_up
#--------------------------------------------------------------------------
alias mog_result_display_level_up display_level_up
def display_level_up(new_skills)
if $game_temp.result
$game_temp.level_parameter = [@level,new_skills]
return
end
mog_result_display_level_up(new_skills)
end
end
#==============================================================================
# ■ BattleManager
#==============================================================================
module BattleManager
#--------------------------------------------------------------------------
# ● Process Victory
#--------------------------------------------------------------------------
def self.process_victory
@phase = nil
@event_proc.call(0) if @event_proc
$game_temp.battle_result = true ;play_battle_end_me ; replay_bgm_and_bgs
SceneManager.return
return true
end
end
#==============================================================================
# ■ Spriteset Battle
#==============================================================================
class Scene_Battle < Scene_Base
#--------------------------------------------------------------------------
# ● Dispose
#--------------------------------------------------------------------------
alias mog_battle_result_pre_terminate pre_terminate
def pre_terminate
execute_result if can_enable_battle_result?
mog_battle_result_pre_terminate
end
#--------------------------------------------------------------------------
# ● Can Enable Battle Result?
#--------------------------------------------------------------------------
def can_enable_battle_result?
return false if !$game_temp.battle_result
return true
end
#--------------------------------------------------------------------------
# ● Execute Result
#--------------------------------------------------------------------------
def execute_result
$game_temp.battle_result = false
result = Battle_Result.new
$game_temp.combo_hit[2] = 0 rescue nil if $imported[:mog_combo_count]
@status_window.visible = false
if $imported[:mog_battle_command_ex]
@window_actor_face.visible = false if @window_actor_face != nil
end
loop do
result.update ; @spriteset.update
Graphics.update ; Input.update
break if result.victory_phase == 10
end
result.dispose
$game_party.on_battle_end
$game_troop.on_battle_end
SceneManager.exit if $BTEST
end
end
#==============================================================================
# ■ Battle Result
#==============================================================================
class Battle_Result
include MOG_BATLE_RESULT
attr_accessor :victory_phase
#--------------------------------------------------------------------------
# ● Initialize
#--------------------------------------------------------------------------
def initialize
$game_temp.battle_end = true ; $game_temp.result = true
@victory_phase = 0 ; @victory_wait_duration = 0
@fade_result_window = false ; create_victory_sprites
end
#--------------------------------------------------------------------------
# ● Create Victory Sprites
#--------------------------------------------------------------------------
def create_victory_sprites
@result_number = Cache.system("Result_Number_1")
@result_number2 = Cache.system("Result_Number_2")
@result_cw = @result_number.width / 10
@result_ch = @result_number.height / 2
@result2_cw = @result_number2.width / 10
@result2_ch = @result_number2.height / 2
create_victory_text ; create_victory_layout ; create_victory_exp
create_victory_gold ; create_window_treasure
end
#--------------------------------------------------------------------------
# ● Victory Wait ?
#--------------------------------------------------------------------------
def victory_wait?
return false if @victory_wait_duration <= 0
@victory_wait_duration -= 1
return true
end
#--------------------------------------------------------------------------
# ● End Victory
#--------------------------------------------------------------------------
def end_victory
@victory_wait_duration = 10 ; dispose
end
#--------------------------------------------------------------------------
# ● Create Victory Layout
#--------------------------------------------------------------------------
def create_victory_layout
return if @victory_layout_sprite != nil
@victory_layout_sprite = Sprite.new
@victory_layout_sprite.z = 1001
@victory_layout_sprite.bitmap = Cache.system("Result_Layout")
@victory_layout_sprite.zoom_x = 2.0
@victory_layout_sprite.opacity = 0
end
#--------------------------------------------------------------------------
# ● Create Victory Text
#--------------------------------------------------------------------------
def create_victory_text
return if @victory_sprite != nil
@victory_sprite = Sprite.new
@victory_sprite.z = 1000
@victory_sprite.bitmap = Cache.system("Result")
@victory_sprite.ox = @victory_sprite.width / 2
@victory_sprite.oy = @victory_sprite.height / 2
@victory_sprite.x = @victory_sprite.ox
@victory_sprite.y = @victory_sprite.oy
@victory_sprite.zoom_x = 1.5
@victory_sprite.zoom_y = 1.5
@victory_sprite.opacity = 0
end
end
#==============================================================================
# ■ Battle Result
#==============================================================================
class Battle_Result
#--------------------------------------------------------------------------
# ● Dispose
#--------------------------------------------------------------------------
def dispose
$game_temp.result = false
@victory_sprite.bitmap.dispose ; @victory_sprite.dispose
@victory_layout_sprite.bitmap.dispose ; @victory_layout_sprite.dispose
@exp_number.bitmap.dispose ; @exp_number.dispose
@gold_number.bitmap.dispose ; @gold_number.dispose
@result_number.dispose ; @window_treasure.dispose
dispose_level_up ; @result_number.dispose ; @result_number2.dispose
@tr_viewport.dispose
end
#--------------------------------------------------------------------------
# ● Dispose Result Actor Bitmap
#--------------------------------------------------------------------------
def dispose_result_actor_bitmap
return if @result_actor_sprite == nil
return if @result_actor_sprite.bitmap == nil
@result_actor_sprite.bitmap.dispose
end
#--------------------------------------------------------------------------
# ● Dispose Level UP
#--------------------------------------------------------------------------
def dispose_level_up
return if @levelup_layout == nil
@levelup_layout.bitmap.dispose ; @levelup_layout.dispose
@levelup_word.bitmap.dispose ; @levelup_word.dispose
@result_actor_sprite.bitmap.dispose ; @result_actor_sprite.dispose
@parameter_sprite.bitmap.dispose ; @parameter_sprite.dispose
@level_sprite.bitmap.dispose ; @level_sprite.dispose
@new_skill_window.dispose if @new_skill_window
end
end
#==============================================================================
# ■ Battle Result
#==============================================================================
class Battle_Result
#--------------------------------------------------------------------------
# ● Update
#--------------------------------------------------------------------------
def update
$game_temp.battle_end = true
if $mog_rgss3_pause != nil
update_pause if MOG_PAUSE::PAUSE_SCENE_BATTLE
end
return if @victory_phase == nil
update_victory_fade if @fade_result_window
return if victory_wait?
case @victory_phase
when 0; update_victory_initial
when 1; update_victory_initial2
when 2; update_victory_initial3
when 3; update_victory_exp
when 4; update_victory_gold
when 5; update_victory_item
when 6; update_victory_levelup
when 9; update_skip_result
end
if Input.trigger?(:C)
if @victory_phase == 10
end_victory
elsif @victory_phase.between?(1,5)
Sound.play_cursor ; @victory_phase = 9
end
end
end
#--------------------------------------------------------------------------
# ● Skip Result
#--------------------------------------------------------------------------
def update_skip_result
@victory_sprite.opacity -= 10
@victory_sprite.visible = false
@victory_layout_sprite.opacity += 10
@victory_layout_sprite.zoom_x = 1.00
@gold_number.opacity += 10
@gold_number.zoom_x = 1.00
@gold_number.zoom_y = 1.00
@exp_number.opacity += 10
@exp_number.zoom_x = 1.00
@exp_number.zoom_y = 1.00
@window_treasure.contents_opacity += 10
if @exp_old != @exp_total
@exp_old = @exp_total
refresh_exp_number
end
if @gold_old = @gold_total
@gold_old = @gold_total
refresh_gold_number
end
@window_treasure.x = 0
update_victory_item if @window_treasure.contents_opacity == 255
end
#--------------------------------------------------------------------------
# ● Update Victory Fade
#--------------------------------------------------------------------------
def update_victory_fade
fade_speed = 10
@victory_sprite.opacity -= fade_speed
@victory_layout_sprite.opacity -= fade_speed
@gold_number.opacity -= fade_speed
@exp_number.opacity -= fade_speed
@window_treasure.contents_opacity -= fade_speed
end
#--------------------------------------------------------------------------
# ● Update Victory Initial
#--------------------------------------------------------------------------
def update_victory_initial
@victory_sprite.zoom_x -= 0.01
@victory_sprite.zoom_y -= 0.01
@victory_sprite.opacity += 10
if @victory_sprite.zoom_x <= 1.00
@victory_sprite.zoom_x = 1
@victory_sprite.zoom_y = 1
@victory_sprite.opacity = 255
@victory_phase = 1
@victory_wait_duration = 20
end
end
#--------------------------------------------------------------------------
# ● Update Victory Initial 2
#--------------------------------------------------------------------------
def update_victory_initial2
@victory_sprite.zoom_x += 0.01
@victory_sprite.zoom_y += 0.01
@victory_sprite.opacity -= 10
if @victory_sprite.opacity <= 0
@victory_sprite.zoom_x = 1
@victory_sprite.zoom_y = 1
@victory_sprite.opacity = 0
@victory_phase = 2
end
end
#--------------------------------------------------------------------------
# ● Update Victory Initial 3
#--------------------------------------------------------------------------
def update_victory_initial3
@victory_layout_sprite.zoom_x -= 0.02
@victory_layout_sprite.opacity += 10
if @victory_layout_sprite.zoom_x <= 1.00
@victory_layout_sprite.zoom_x = 1
@victory_layout_sprite.opacity = 255
@victory_phase = 3
end
end
end
#==============================================================================
# ■ Battle Result
#==============================================================================
class Battle_Result
#--------------------------------------------------------------------------
# ● Create Victory Exp
#--------------------------------------------------------------------------
def create_victory_exp
@exp_number = Sprite.new
@exp_number.bitmap = Bitmap.new(@result_number.width,@result_ch)
@exp_number.z = 1002 ; @exp_number.y = RESULT_EXP_POSITION[1]
@exp_number.zoom_x = 2 ; @exp_number.zoom_y = 2
@exp_total = $game_troop.exp_total ; @exp_number.opacity = 0
@exp_old = 0
@exp_ref = ((1 * @exp_total) / 111).truncate rescue nil
@exp_ref = 1 if @exp_ref < 1 or @exp_ref == nil
@exp_ref = 0 if @exp_total == 0
refresh_exp_number
end
#--------------------------------------------------------------------------
# ● Update Victory Exp
#--------------------------------------------------------------------------
def update_victory_exp
update_exp_sprite ; update_exp_number
end
#--------------------------------------------------------------------------
# ● Update EXP Sprite
#--------------------------------------------------------------------------
def update_exp_sprite
@exp_number.opacity += 15
if @exp_number.zoom_x > 1.00
@exp_number.zoom_x -= 0.03
@exp_number.zoom_x = 1.00 if @exp_number.zoom_x <= 1.00
end
@exp_number.zoom_y = @exp_number.zoom_x
if (@exp_old >= @exp_total) and @exp_number.zoom_x == 1.00
@victory_phase = 4
Sound.play_cursor
end
end
#--------------------------------------------------------------------------
# ● Refresh Exp Number
#--------------------------------------------------------------------------
def refresh_exp_number
@exp_number.bitmap.clear
draw_result_exp(@exp_old, 0,0)
end
#--------------------------------------------------------------------------
# ● Update Exp_number
#--------------------------------------------------------------------------
def update_exp_number
return if @exp_old == @exp_total
@exp_old += @exp_ref
@exp_old = @exp_total if @exp_old > @exp_total
refresh_exp_number
end
#--------------------------------------------------------------------------
# ● Draw Result EXP
#--------------------------------------------------------------------------
def draw_result_exp(value,x,y)
ncw = @result_cw ; nch = @result_ch ; number = value.abs.to_s.split(//)
x2 = x - (number.size * ncw)
@exp_number.ox = (number.size * ncw) / 2
@exp_number.oy = @result_ch / 2
@exp_number.x = (RESULT_EXP_POSITION[0] + @result_cw + @exp_number.ox) - (number.size * ncw)
for r in 0..number.size - 1
number_abs = number[r].to_i
nsrc_rect = Rect.new(ncw * number_abs, 0, ncw, nch)
@exp_number.bitmap.blt(x + (ncw * r), y, @result_number, nsrc_rect)
end
end
end
#==============================================================================
# ■ Battle Result
#==============================================================================
class Battle_Result
#--------------------------------------------------------------------------
# ● Create Victory Gold
#--------------------------------------------------------------------------
def create_victory_gold
@gold_number = Sprite.new
@gold_number.bitmap = Bitmap.new(@result_number.width,@result_ch)
@gold_number.z = 1002
@gold_number.y = RESULT_GOLD_POSITION[1]
@gold_number.opacity = 0
@gold_number.zoom_x = 2
@gold_number.zoom_y = 2
@gold_total = $game_troop.gold_total
@gold_old = 0
@gold_ref = ((1 * @gold_total) / 111).truncate rescue nil
@gold_ref = 1 if @gold_ref < 1 or @gold_ref == nil
@gold_ref = 0 if @gold_total == 0
$game_party.gain_gold($game_troop.gold_total)
refresh_gold_number
end
#--------------------------------------------------------------------------
# ● Update Victory Gold
#--------------------------------------------------------------------------
def update_victory_gold
update_gold_sprite ; update_gold_number
end
#--------------------------------------------------------------------------
# ● Update GOLD Sprite
#--------------------------------------------------------------------------
def update_gold_sprite
@gold_number.opacity += 15
if @gold_number.zoom_x > 1.00
@gold_number.zoom_x -= 0.03
@gold_number.zoom_x = 1.00 if @gold_number.zoom_x <= 1.00
end
@gold_number.zoom_y = @gold_number.zoom_x
if @gold_old >= @gold_total and @gold_number.zoom_x == 1.00
@victory_phase = 5 ; Sound.play_cursor
end
end
#--------------------------------------------------------------------------
# ● Refresh gold Number
#--------------------------------------------------------------------------
def refresh_gold_number
@gold_number.bitmap.clear
draw_result_gold(@gold_old, 0,0)
end
#--------------------------------------------------------------------------
# ● Update Gold Number
#--------------------------------------------------------------------------
def update_gold_number
return if @gold_old == @gold_total
@gold_old += @gold_ref
@gold_old = @gold_total if @gold_old > @gold_total
refresh_gold_number
end
#--------------------------------------------------------------------------
# ● Draw Result Gold
#--------------------------------------------------------------------------
def draw_result_gold(value,x,y)
ncw = @result_cw ; nch = @result_ch
number = value.abs.to_s.split(//)
x2 = x - (number.size * ncw)
@gold_number.ox = (number.size * ncw) / 2
@gold_number.oy = @result_ch / 2
@gold_number.x = (RESULT_GOLD_POSITION[0] + @result_cw + @gold_number.ox) - (number.size * ncw)
for r in 0..number.size - 1
number_abs = number[r].to_i
nsrc_rect = Rect.new(ncw * number_abs, @result_ch, ncw, nch)
@gold_number.bitmap.blt(x + (ncw * r), y, @result_number, nsrc_rect)
end
end
end
#==============================================================================
# ■ Battle Result
#==============================================================================
class Battle_Result
#--------------------------------------------------------------------------
# ● Create Window Treasure
#--------------------------------------------------------------------------
def create_window_treasure
@tr_viewport = Viewport.new(-8+32, 164+32, Graphics.width + 32, 118+4)##此处
@tr_viewport.z = 1003
@window_treasure = Window_Treasure.new
@window_treasure.viewport = @tr_viewport
end
#--------------------------------------------------------------------------
# ● Update Victory Item
#--------------------------------------------------------------------------
def update_victory_item
@window_treasure.update
@actor_level = []
return if @window_treasure.x != 0 and @victory_phase >= 6
@victory_phase = 6
if $data_system.opt_extra_exp
@result_member_max = $game_party.members.size
else
@result_member_max = $game_party.battle_members.size
end
@result_member_id = 0
end
end
#==============================================================================
# ■ Window Treasure
#==============================================================================
class Window_Treasure < Window_Base
#--------------------------------------------------------------------------
# ● Initialize
#--------------------------------------------------------------------------
def initialize
super(-Graphics.width,-10, Graphics.width + 32, 288)
self.opacity = 0 ; self.contents_opacity = 0
self.contents.font.size = 24 ; self.contents.font.bold = true
self.z = 1003 ; @range_max = 256 ; @wait_time = 30 ; @scroll = false
draw_treasure
end
#--------------------------------------------------------------------------
# ● Draw_Treasure
#--------------------------------------------------------------------------
def draw_treasure
contents.clear
space_x = Graphics.width / 3
$game_troop.make_drop_items.each_with_index do |item, index|
xi = (index * space_x) - ((index / 3) * (space_x * 3))
yi = (index / 3) * 32
$game_party.gain_item(item, 1)
draw_item_name(item,xi, yi, true, 140)
end
@range_max = ($game_troop.make_drop_items.size / 3) * 32
@scroll = true if $game_troop.make_drop_items.size > 12
end
#--------------------------------------------------------------------------
# ● Update
#--------------------------------------------------------------------------
def update
super
self.contents_opacity += 10
if self.x < 0
self.x += 15
(self.x = 0 ; Sound.play_cursor) if self.x >= 0
end
if @scroll and self.contents_opacity == 255 and self.x == 0
@wait_time -= 1 if @wait_time > 0
return if @wait_time > 0
self.y -= 1
self.y = 128 if self.y < -@range_max
@wait_time = 30 if self.y == -10
end
end
end
#==============================================================================
# ■ Battle Result
#==============================================================================
class Battle_Result
#--------------------------------------------------------------------------
# ● Create Levelup
#--------------------------------------------------------------------------
def create_levelup
if @levelup_layout == nil
@levelup_layout = Sprite.new ; @levelup_layout.z = 1000
@levelup_layout.bitmap = Cache.system("Result_Levelup")
end
if @levelup_word == nil
@levelup_word = Sprite.new ; @levelup_word.z = 1001
@levelup_word.bitmap = Cache.system("Result_Levelword")
@levelup_word.ox = @levelup_word.bitmap.width / 2
@levelup_word.oy = @levelup_word.bitmap.height / 2
@levelup_word.x = @levelup_word.ox + RESULT_LEVELWORD_POSITION[0]
@levelup_word.y = @levelup_word.oy + RESULT_LEVELWORD_POSITION[1]
end
@levelup_word.blend_type = 1
@levelup_word.zoom_x = 2 ; @levelup_word.zoom_y = 2
end
#--------------------------------------------------------------------------
# ● Create Parameter Number #此处
#--------------------------------------------------------------------------
def create_parameter_number
if @parameter_sprite == nil
@parameter_sprite = Sprite.new
@parameter_sprite.bitmap = Bitmap.new(250,220+40)
@parameter_sprite.z = 1001
@parameter_sprite.x = RESULT_PARAMETER_POSITION[0]
@parameter_sprite.y = RESULT_PARAMETER_POSITION[1]
@parameter_sprite.bitmap.font.size = 16
@parameter_sprite.bitmap.font.bold = true
end
refresh_parameter
end
#--------------------------------------------------------------------------
# ● Refresh Parameter #28此处
#--------------------------------------------------------------------------
def refresh_parameter
@parameter_animation = 0
@parameter_sprite.bitmap.clear
@parameter_sprite.opacity = 0
@parameter_sprite.x = RESULT_PARAMETER_POSITION[0] - 200
actor_old = $game_temp.level_parameter_old
draw_result_parameter(@actor_result.mhp,actor_old[1],0,33 * 0)
draw_result_parameter(@actor_result.mmp,actor_old[2],0,33 * 1)
draw_result_parameter(@actor_result.atk,actor_old[3],0,33 * 2)
draw_result_parameter(@actor_result.def,actor_old[4],0,33 * 3)
draw_result_parameter(@actor_result.mat,actor_old[5],0,33 * 4)
draw_result_parameter(@actor_result.mdf,actor_old[6],0,33 * 5)
draw_result_parameter(@actor_result.agi,actor_old[7],0,33 * 6)
draw_result_parameter(@actor_result.luk,actor_old[8],0,33 * 7)
end
#--------------------------------------------------------------------------
# ● Draw Result EXP
#--------------------------------------------------------------------------
def draw_result_parameter(value,value2,x,y)
ncw = @result2_cw ; nch = @result2_ch ; number = value.abs.to_s.split(//)
x2 = x + (number.size * ncw) + 16
for r in 0..number.size - 1
number_abs = number[r].to_i
nsrc_rect = Rect.new(ncw * number_abs, 0, ncw, nch)
@parameter_sprite.bitmap.blt(x + (ncw * r), y, @result_number2, nsrc_rect)
end
value3 = value - value2
par = ""
if value > value2
par = "+"
@parameter_sprite.bitmap.font.color = Color.new(50,255,255)
elsif value < value2
par = ""
@parameter_sprite.bitmap.font.color = Color.new(255,155,100)
end
return if value == value2
@parameter_sprite.bitmap.draw_text(x2,y - 8,100,32,par.to_s + value3.to_s,0)
end
#--------------------------------------------------------------------------
# ● Create Result Actor #此处
#--------------------------------------------------------------------------
def create_result_actor
if @result_actor_sprite == nil
@result_actor_sprite = Sprite.new ; @result_actor_sprite.z = 999
end
dispose_result_actor_bitmap
#~ @result_actor_sprite.bitmap = Cache.picture("Actor" + @actor_result.id.to_s)
@result_actor_sprite.bitmap = Cache.menu_status("Actor_" + @actor_result.get_pet_id.to_s)
@result_actor_org = [380 - (@result_actor_sprite.bitmap.width / 2), Graphics.height - @result_actor_sprite.bitmap.height-100]
@result_actor_sprite.x = @result_actor_org[0] + 200
@result_actor_sprite.y = @result_actor_org[1]
@result_actor_sprite.opacity = 0
end
#--------------------------------------------------------------------------
# ● Check New Skill
#--------------------------------------------------------------------------
def check_new_skill
@new_skills = $game_temp.level_parameter[1] ; @new_skills_index = 0
end
#--------------------------------------------------------------------------
# ● Show New Skill
#--------------------------------------------------------------------------
def show_new_skill(start = false)
Sound.play_recovery unless start
@new_skill_window.draw_new_skill(@new_skills[@new_skills_index])
@new_skills_index += 1
if @new_skills_index == @new_skills.size or
@new_skills[@new_skills_index] == nil
@new_skills = nil
end
end
#--------------------------------------------------------------------------
# ● Check Level UP
#--------------------------------------------------------------------------
def check_level_up
if @new_skills != nil and !@new_skills.empty?
show_new_skill
return
end
for battler_id in @result_member_id..@result_member_max
actor_result = $game_party.members[@result_member_id]
$game_temp.level_parameter = []
$game_temp.level_parameter_old = []
$game_temp.level_parameter_old = [actor_result.level,actor_result.mhp,actor_result.mmp,
actor_result.atk, actor_result.def, actor_result.mat, actor_result.mdf, actor_result.agi, actor_result.luk] rescue nil
actor_result.gain_exp($game_troop.exp_total) rescue nil
@result_member_id += 1 ; @new_skills = nil ; @new_skills_index = 0
if @result_member_id > $game_party.battle_members.size
$game_temp.level_parameter = []
$game_temp.level_parameter_old = []
next
end
if $game_temp.level_parameter != nil and !$game_temp.level_parameter.empty?
show_level_result
break
end
end
return if !$game_temp.level_parameter.empty?
@victory_phase = 10 if @result_member_id >= @result_member_max
end
#--------------------------------------------------------------------------
# ● Create Level
#--------------------------------------------------------------------------
def create_level
if @level_sprite == nil
@level_sprite = Sprite.new ; @level_sprite.bitmap = Bitmap.new(200,64)
@level_sprite.z = 1002
end
@level_sprite.bitmap.font.size = 48
@level_sprite.bitmap.font.bold = true
@level_sprite.x = RESULT_LEVEL_POSITION[0]
@level_sprite.y = RESULT_LEVEL_POSITION[1]
@level_sprite.bitmap.clear
@level_sprite.bitmap.font.color = Color.new(255,255,255)
@level_sprite.bitmap.draw_text(0,0,100,64,@actor_result.level,1)
levelup = @actor_result.level - $game_temp.level_parameter_old[0]
@level_sprite.bitmap.font.color = Color.new(50,255,255)
@level_sprite.bitmap.font.size = 18
@level_sprite.bitmap.draw_text(80,0,100,64,"+" + levelup.to_s ,0)
end
#--------------------------------------------------------------------------
# ● Create New Skill Windos
#--------------------------------------------------------------------------
def create_new_skill_window
@new_skill_window = Window_Result_Skill.new if @new_skill_window == nil
@new_skill_window.x = RESULT_NEW_SKILL_POSITION[0]
@new_skill_window.y = RESULT_NEW_SKILL_POSITION[1]
check_new_skill
if @new_skills != nil and !@new_skills.empty?
show_new_skill
else
@new_skill_window.x = -Graphics.width
end
end
#--------------------------------------------------------------------------
# ● Show Level Result
#--------------------------------------------------------------------------
def show_level_result
Sound.play_cursor
@actor_result = $game_party.members[@result_member_id - 1] rescue nil
return if @actor_result == nil
@actor_result.animation_id = RESULT_LEVELUP_ANIMATION_ID
@fade_result_window = true
create_levelup ; create_level ; create_parameter_number
create_result_actor ; create_new_skill_window
end
end
#==============================================================================
# ■ Battle Result
#==============================================================================
class Battle_Result
#--------------------------------------------------------------------------
# ● Update Victory Item
#--------------------------------------------------------------------------
def update_victory_levelup
check_level_up if Input.trigger?(:C)
update_show_levelup
if @levelup_layout == nil
@window_treasure.update
else
@window_treasure.contents_opacity -= 15
end
end
#--------------------------------------------------------------------------
# ● Update Show Level UP
#--------------------------------------------------------------------------
def update_show_levelup
return if @levelup_layout == nil
return if @result_actor_sprite == nil
@new_skill_window.update
if @result_actor_sprite.x > @result_actor_org[0]
@result_actor_sprite.x -= 5
@result_actor_sprite.opacity += 7
if @result_actor_sprite.x <= @result_actor_org[0]
@result_actor_sprite.x = @result_actor_org[0]
@result_actor_sprite.opacity = 255
end
end
if @levelup_word.zoom_x > 1.00
@levelup_word.zoom_x -= 0.03
if @levelup_word.zoom_x < 1.00
@levelup_word.zoom_x = 1.00 ; @levelup_word.blend_type = 0
end
end
@levelup_word.zoom_y = @levelup_word.zoom_x
if @parameter_sprite.x < RESULT_PARAMETER_POSITION[0]
@parameter_sprite.opacity += 13
@parameter_sprite.x += 5
if @parameter_sprite.x >= RESULT_PARAMETER_POSITION[0]
@parameter_sprite.opacity = 255
@parameter_sprite.x = RESULT_PARAMETER_POSITION[0]
end
end
end
end
#==============================================================================
# ■ Window Result Skill
#==============================================================================
class Window_Result_Skill < Window_Base
#--------------------------------------------------------------------------
# ● Initialize
#--------------------------------------------------------------------------
def initialize
super(0,0, 270, 58)
self.opacity = 160 ; self.contents_opacity = 255
self.contents.font.bold = true ; self.z = 1003 ; @animation_time = 999
@org = [MOG_BATLE_RESULT::RESULT_NEW_SKILL_POSITION[0],MOG_BATLE_RESULT::RESULT_NEW_SKILL_POSITION[1]]
end
#--------------------------------------------------------------------------
# ● DrawNew Skill
#--------------------------------------------------------------------------
def draw_new_skill(skill)
contents.clear
self.contents.font.size = 16
self.contents.font.color = Color.new(100,200,100)
contents.draw_text(0,0,100,32, " 领悟",0)
self.contents.font.color = Color.new(255,255,255)
draw_item_name_skill(skill,70,0, true, 170)
self.x = @org[0] ; self.y = @org[1]
@animation_time = 0 ; self.opacity = 0 ; self.contents_opacity = 0
end
#--------------------------------------------------------------------------
# ● Draw Item Name
#--------------------------------------------------------------------------
def draw_item_name_skill(item, x, y, enabled = true, width = 172)
return unless item
draw_icon(item.icon_index, x, y, enabled)
change_color(normal_color, enabled)
draw_text(x + 24, y + 4, width, line_height, item.name)
end
#--------------------------------------------------------------------------
# ● Update
#--------------------------------------------------------------------------
def update
super
return if @animation_time == 999
@animation_time += 1 if @animation_time != 999
case @animation_time
when 0..30
self.y -= 1 ; self.opacity += 5 ; self.contents_opacity += 5
when 31..60
self.y += 1 ; self.opacity += 5 ; self.contents_opacity += 5
else
self.y = @org[1] ; self.opacity = 255 ; self.contents_opacity = 255
@animation_time = 999
end
end
end