ATB Battle System [RMXP]

27 de agosto de 2015

ATB Battle System ou New_Battle, é um script de batalha bastante básico de Active Tactical Battle, mas eficiente, desenvolvido por MakirouAru para o RPG Maker XP.

Os comentários do script estão todos zuados, mas pelo que eu pude ver, é um sistema de batalha que permite torná-la ativa, ou seja, ocorrem ações mesmo você não as selecionando.

O script é bem leve e de simples instalação, sendo ativado pelo evento que inicia batalha e sendo inserido acima do Main:

#==============================================================================
# ¦ New_Battle
#------------------------------------------------------------------------------
# Compiled By : MakirouAru
#==============================================================================
# ¥£¥ XRXS_BP 3. Ÿ—˜ŽžHP‰ñ•œ ver.1.01 ¥£¥
# by fukuyama, ÷‰ë Ý“y

# Battle_End_Recovery
#
# í“¬Œã‚̉ñ•œˆ—ƒ‚ƒWƒ…[ƒ‹
#
# Request: stay
# Script: fukuyama
# Test: ƒmƒRƒmŽq
# 
# URL: http://www4.big.or.jp/~fukuyama/rgss/Battle_End_Recovery.txt
#

module Battle_End_Recovery

 module Scene_Battle_Module

   # ‰ñ•œ—¦•Ï”‚ÌID
   @@recovery_rate_variable_id = nil

   # ‰ñ•œ—¦‚̎擾
   def battle_end_recovery_rate
     if @@recovery_rate_variable_id.nil?
       @@recovery_rate_variable_id =
         $data_system.variables.index 'í“¬Œã‚̉ñ•œ—¦'
       if @@recovery_rate_variable_id.nil?
         @@recovery_rate_variable_id = false
       end
     end
     return 0 unless @@recovery_rate_variable_id
     return $game_variables[@@recovery_rate_variable_id]
   end

   # í“¬Œã‚̉ñ•œˆ—
   def battle_end_recovery

     # ‰ñ•œ—¦
     recovery_rate = battle_end_recovery_rate
     
     # ‰ñ•œ—¦•Ï”‚ª‚OˆÈŠO‚©‚ƒAƒNƒ^[‚ª¶‘¶‚µ‚Ä‚¢‚éê‡Aí“¬Œã‚̉ñ•œˆ—‚ðs‚¤
     if recovery_rate != 0 and not actor.dead?

       # ƒp[ƒeƒB‚̃AƒNƒ^[–ˆ‚Ƀ‹[ƒv
       $game_party.actors.each do |actor|

         # ‰ñ•œ—ÊŒvŽZ
         recovery_hp = (actor.maxhp / 100.0 * recovery_rate).truncate
         recovery_sp = (actor.maxsp / 100.0 * recovery_rate).truncate

         # ŽÀÛ‚ɉñ•œ
         actor.hp += recovery_hp
         actor.sp += recovery_sp

         # ƒAƒjƒ[ƒVƒ‡ƒ“Ý’è
         actor.damage = - recovery_hp
         actor.damage_pop = true

       end

       # ƒXƒe[ƒ^ƒXƒEƒBƒ“ƒhƒE‚ðXV
       @status_window.refresh

     end
   end

 end # module Scene_Battle_Module
end # module Battle_End_Recovery

#------------------------------
# í“¬ƒV[ƒ“‚̍Ēè‹`
#------------------------------
class Scene_Battle

 # Scene_Battle—pƒ‚ƒWƒ…[ƒ‹‚ðƒCƒ“ƒNƒ‹[ƒh
 include Battle_End_Recovery::Scene_Battle_Module

 # Œ³‚̃tƒF[ƒY‚TŠJŽn‚É•Ê–¼‚ð‚‚¯‚é
 alias battle_end_recovery_original_start_phase5 start_phase5

 # ƒtƒF[ƒY‚TŠJŽn‚ðÄ’è‹`
 def start_phase5

   # í“¬Œã‚̉ñ•œˆ—‚ðŒÄ‚яo‚·
   battle_end_recovery

   # Œ³‚̃tƒF[ƒY‚TŠJŽn‚ðŒÄ‚яo‚·
   battle_end_recovery_original_start_phase5

 end
end

# Battle_End_Recovery
# ¥£¥ XRXS_BP10. LEVEL UP!ƒEƒBƒ“ƒhƒE ¥£¥
# by ÷‰ë Ý“y

$data_system_level_up_se = ""                       # ƒŒƒxƒ‹ƒAƒbƒvSEB""‚Å–³‚µB
$data_system_level_up_me = "Audio/ME/007-Fanfare01" # ƒŒƒxƒ‹ƒAƒbƒvME

#==============================================================================
# ¡ Window_LevelUpWindow
#------------------------------------------------------------------------------
# @ƒoƒgƒ‹I—¹ŽžAƒŒƒxƒ‹ƒAƒbƒv‚µ‚½ê‡‚ɃXƒe[ƒ^ƒX‚𕎦‚·‚éƒEƒBƒ“ƒhƒE‚Å‚·B
#==============================================================================
class Window_LevelUpWindow < Window_Base
 #--------------------------------------------------------------------------
 # œ ƒIƒuƒWƒFƒNƒg‰Šú‰»
 #--------------------------------------------------------------------------
 def initialize(actor, last_lv, up_hp, up_sp, up_str, up_dex, up_agi, up_int)
   super(0, 128, 160, 192)
   self.contents = Bitmap.new(width - 32, height - 32)
   self.visible = false
   refresh(actor, last_lv, up_hp, up_sp, up_str, up_dex, up_agi, up_int)
 end
 #--------------------------------------------------------------------------
 # œ ƒŠƒtƒŒƒbƒVƒ…
 #--------------------------------------------------------------------------
 def refresh(actor, last_lv, up_hp, up_sp, up_str, up_dex, up_agi, up_int)
   self.contents.clear
   self.contents.font.color = system_color
   self.contents.font.name = "Arial"
   self.contents.font.size = 14
   self.contents.draw_text( 0,   0, 160, 24, "LEVEL UP!!")
   self.contents.font.size = 18
   self.contents.draw_text( 0,  28, 160, 24, $data_system.words.hp)
   self.contents.draw_text( 0,  50, 160, 24, $data_system.words.sp)
   self.contents.font.size = 14
   self.contents.draw_text( 0,  72,  80, 24, $data_system.words.str)
   self.contents.draw_text( 0,  94,  80, 24, $data_system.words.dex)
   self.contents.draw_text( 0, 116,  80, 24, $data_system.words.agi)
   self.contents.draw_text( 0, 138,  80, 24, $data_system.words.int)
   self.contents.draw_text(92,   0, 128, 24, "¨")
   self.contents.draw_text(76,  28, 128, 24, "=")
   self.contents.draw_text(76,  50, 128, 24, "=")
   self.contents.draw_text(76,  72, 128, 24, "=")
   self.contents.draw_text(76,  94, 128, 24, "=")
   self.contents.draw_text(76, 116, 128, 24, "=")
   self.contents.draw_text(76, 138, 128, 24, "=")
   self.contents.font.color = normal_color
   self.contents.draw_text( 0,   0,  88, 24, last_lv.to_s, 2)
   self.contents.draw_text( 0,  28,  72, 24, "+" + up_hp.to_s, 2)
   self.contents.draw_text( 0,  50,  72, 24, "+" + up_sp.to_s, 2)
   self.contents.draw_text( 0,  72,  72, 24, "+" + up_str.to_s, 2)
   self.contents.draw_text( 0,  94,  72, 24, "+" + up_dex.to_s, 2)
   self.contents.draw_text( 0, 116,  72, 24, "+" + up_agi.to_s, 2)
   self.contents.draw_text( 0, 138,  72, 24, "+" + up_int.to_s, 2)
   self.contents.font.size = 20
   self.contents.draw_text( 0,   0, 128, 24, actor.level.to_s, 2)
   self.contents.draw_text( 0,  26, 128, 24, actor.maxhp.to_s, 2)
   self.contents.draw_text( 0,  48, 128, 24, actor.maxsp.to_s, 2)
   self.contents.draw_text( 0,  70, 128, 24, actor.str.to_s, 2)
   self.contents.draw_text( 0,  92, 128, 24, actor.dex.to_s, 2)
   self.contents.draw_text( 0, 114, 128, 24, actor.agi.to_s, 2)
   self.contents.draw_text( 0, 136, 128, 24, actor.int.to_s, 2)
 end
end
#==============================================================================
# ¡ Window_BattleStatus
#==============================================================================
class Window_BattleStatus < Window_Base
 #--------------------------------------------------------------------------
 # œ ’ljÁEŒöŠJƒCƒ“ƒXƒ^ƒ“ƒX•Ï”
 #--------------------------------------------------------------------------
   attr_accessor :level_up_flags             # LEVEL UP!•Ž¦
end
#==============================================================================
# ¡ Game_Battler
#==============================================================================
class Game_Battler
 #--------------------------------------------------------------------------
 # œ ’ljÁEŒöŠJƒCƒ“ƒXƒ^ƒ“ƒX•Ï”
 #--------------------------------------------------------------------------
 attr_accessor :exp_gain_ban             # EXPŽæ“¾ˆêŽž‹ÖŽ~
 #--------------------------------------------------------------------------
 # œ ƒIƒuƒWƒFƒNƒg‰Šú‰»
 #--------------------------------------------------------------------------
 alias xrxs_bp10_initialize initialize
 def initialize
   @exp_gain_ban = false
   xrxs_bp10_initialize
 end
 #--------------------------------------------------------------------------
 # œ ƒXƒe[ƒg [EXP ‚ðŠl“¾‚Å‚«‚È‚¢] ”»’è
 #--------------------------------------------------------------------------
 alias xrxs_bp10_cant_get_exp? cant_get_exp?
 def cant_get_exp?
   if @exp_gain_ban == true
     return true
   else
     return xrxs_bp10_cant_get_exp?
   end
 end
end
#==============================================================================
# ¡ Scene_Battle
#==============================================================================
class Scene_Battle
 #--------------------------------------------------------------------------
 # œ ƒAƒtƒ^[ƒoƒgƒ‹ƒtƒF[ƒYŠJŽn
 #--------------------------------------------------------------------------
 alias xrxs_bp10_start_phase5 start_phase5
 def start_phase5
   # EXP Šl“¾‹ÖŽ~
   for i in 0...$game_party.actors.size
     $game_party.actors[i].exp_gain_ban = true
   end
   xrxs_bp10_start_phase5
   # EXP Šl“¾‹ÖŽ~‚̉ðœ
   for i in 0...$game_party.actors.size
     $game_party.actors[i].exp_gain_ban = false
   end
   # EXP‚ð‰Šú‰»
   @exp_gained = 0
   for enemy in $game_troop.enemies
     # Šl“¾ EXP‚ð’ljÁ         # ƒGƒlƒ~[‚ª‰B‚êó‘Ô‚Å‚È‚¢ê‡
     @exp_gained += enemy.exp if not enemy.hidden
   end
   # Ý’è
   @phase5_step       = 0
   @exp_gain_actor    = -1
   # ƒŠƒUƒ‹ƒgƒEƒBƒ“ƒhƒE‚𕎦
   @result_window.y -= 64
   @result_window.visible = true
   # ƒŒƒxƒ‹ƒAƒbƒv”»’è‚Ö
   phase5_next_levelup
 end
 #--------------------------------------------------------------------------
 # œ ƒtƒŒ[ƒ€XV (ƒAƒtƒ^[ƒoƒgƒ‹ƒtƒF[ƒY)
 #--------------------------------------------------------------------------
 alias xrxs_bp10_update_phase5 update_phase5
 def update_phase5
   case @phase5_step
   when 1
     update_phase5_step1
   else
     xrxs_bp10_update_phase5
     # ƒŒƒxƒ‹ƒAƒbƒv‚µ‚Ä‚¢‚éê‡‚Í‹­§ƒoƒgƒ‹I—¹
     battle_end(0) if @levelup_window != nil and @phase5_wait_count = $game_party.actors.size
       # ƒAƒtƒ^[ƒoƒgƒ‹ƒtƒF[ƒYŠJŽn
       @phase5_step = 0
       return
     end
     actor = $game_party.actors[@exp_gain_actor]
     if actor.cant_get_exp? == false
       # Œ»Ý‚Ì”—Í’l‚ð•ÛŽ
       last_level = actor.level
       last_maxhp = actor.maxhp
       last_maxsp = actor.maxsp
       last_str = actor.str
       last_dex = actor.dex
       last_agi = actor.agi
       last_int = actor.int
       # ŒoŒ±’lŽæ“¾‚ÌŒˆ’è“IuŠÔ(“ä
       actor.exp += @exp_gained
       # ”»’è
       if actor.level > last_level
         # ƒŒƒxƒ‹ƒAƒbƒv‚µ‚½ê‡
         @status_window.level_up(@exp_gain_actor)
         if $data_system_level_up_se != ""
           Audio.se_stop
           Audio.se_play($data_system_level_up_se)
         end
         if $data_system_level_up_me != ""
           Audio.me_stop
           Audio.me_play($data_system_level_up_me)
         end
         @levelup_window = Window_LevelUpWindow.new(actor, last_level,
           actor.maxhp - last_maxhp, actor.maxsp - last_maxsp, actor.str - last_str,
           actor.dex - last_dex, actor.agi - last_agi, actor.int - last_int)
         @levelup_window.x = 160 * @exp_gain_actor
         @levelup_window.visible = true
         @phase5_wait_count = 40
         @phase5_step       =  1
         # ƒXƒe[ƒ^ƒXƒEƒBƒ“ƒhƒE‚ðƒŠƒtƒŒƒbƒVƒ…
         @status_window.refresh
         return
       end
     end
   end until false
 end
end
# ¥£¥ XRXS_17. ƒXƒŠƒbƒvƒ_ƒ[ƒW–hŒä^Œø‰Ê—ʏڍ׉» ver.1.51 ¥£¥
# by ÷‰ë Ý“y, fukuyama

#==============================================================================
# ¡ Game_Battler
#==============================================================================
class Game_Battler
 #--------------------------------------------------------------------------
 # œ ƒXƒŠƒbƒvƒ_ƒ[ƒW‚ÌŒø‰Ê“K—p
 #--------------------------------------------------------------------------
 alias xrxs_bp7_slip_damage_effect slip_damage_effect
 def slip_damage_effect
   # ”’l‚̏‰Šú‰»
   slip_damage_percent = 0
   slip_damage_plus = 0
   # Œ»Ý•t‰Á‚³‚ê‚Ä‚¢‚éƒXƒe[ƒg‚Ì’†‚©‚çƒXƒŠƒbƒvƒ_ƒ[ƒW—L‚è‚̃‚ƒm‚ð’T‚·
   for i in @states
     if $data_states[i].slip_damage
       # ‚»‚̃Xƒe[ƒg‚ªŽ‚Á‚Ä‚¢‚éƒXƒŠƒbƒvƒ_ƒ[ƒW‚Ì
       # Lvƒvƒ‰ƒXƒXƒe[ƒg‚Ü‚½‚ÍLvƒ}ƒCƒiƒXƒXƒe[ƒg‚ð”»’èB
       for j in $data_states[i].plus_state_set
         if $data_states[j] != nil
           if $data_states[j].name =~ /^ƒXƒŠƒbƒv([0-9]+)(%|“)/
             slip_damage_percent += $1.to_i
           elsif $data_states[j].name =~ /^ƒXƒŠƒbƒv([0-9]+)$/
             slip_damage_plus += $1.to_i
           end
         end
       end
       for j in $data_states[i].minus_state_set
         if $data_states[j] != nil
           if $data_states[j].name =~ /^ƒXƒŠƒbƒv([0-9]+)(%|“)/
             slip_damage_percent -= $1.to_i
           elsif $data_states[j].name =~ /^ƒXƒŠƒbƒv([0-9]+)$/
             slip_damage_plus -= $1.to_i
           end
         end
       end
     end
   end
   if slip_damage_percent == 0 and slip_damage_plus == 0
     xrxs_bp7_slip_damage_effect
   else
     # –h‹ï‚ªƒXƒŠƒbƒv–hŒä‚ª‚ ‚éê‡‚ð”»’è
     for i in [@armor1_id, @armor2_id, @armor3_id, @armor4_id]
       armor = $data_armors[i]
       next if armor == nil
       for j in armor.guard_state_set 
         if $data_states[j] != nil
           if $data_states[j].name =~ /^ƒXƒŠƒbƒv([0-9]+)(%|“)/
             if slip_damage_percent > 0
               slip_damage_percent = [slip_damage_percent - $1.to_i, 0].max
             end
           end
           if $data_states[j].name =~ /^ƒXƒŠƒbƒv([0-9]+)$/
             if slip_damage_percent > 0
               slip_damage_plus = [slip_damage_plus - $1.to_i, 0].max
             end
           end
         end
       end
     end
     # ƒ_ƒ[ƒW‚ðÝ’è
     self.damage = self.maxhp * slip_damage_percent / 100 + slip_damage_plus
     # •ªŽU
     if self.damage.abs > 0
       amp = [self.damage.abs * 15 / 100, 1].max
       self.damage += rand(amp+1) + rand(amp+1) - amp
     end
     # HP ‚©‚çƒ_ƒ[ƒW‚ðŒ¸ŽZ
     self.hp -= self.damage
     # ƒƒƒbƒhI—¹
     return true
   end
 end
end
# ¥£¥ XRXS_BP 1. CP§“±“ü ver.15 ¥£¥
# by ÷‰ë Ý“y, ˜aŠó, Jack-R

#==============================================================================
# ¡ Scene_Battle_CP
#==============================================================================
class Scene_Battle_CP
 #--------------------------------------------------------------------------
 # œ ŒöŠJƒCƒ“ƒXƒ^ƒ“ƒX•Ï”
 #--------------------------------------------------------------------------
 attr_accessor   :stop                   # CP‰ÁŽZƒXƒgƒbƒv
 #----------------------------------------------------------------------------
 # œ ƒIƒuƒWƒFƒNƒg‚̏‰Šú‰»
 #----------------------------------------------------------------------------
 def initialize
   @battlers = []
   @cancel = false
   @agi_total = 0
   # ”z—ñ @count_battlers ‚ð‰Šú‰»
   @count_battlers = []
   # ƒGƒlƒ~[‚ð”z—ñ @count_battlers ‚ɒljÁ
   for enemy in $game_troop.enemies
     @count_battlers.push(enemy)
   end
   # ƒAƒNƒ^[‚ð”z—ñ @count_battlers ‚ɒljÁ
   for actor in $game_party.actors
     @count_battlers.push(actor)
   end
   for battler in @count_battlers
     @agi_total += battler.agi
   end
   for battler in @count_battlers
     battler.cp = [[65535 * (rand(15) + 85) / 100 * battler.agi / @agi_total * 4, 0].max, 65535].min
   end
 end
 #----------------------------------------------------------------------------
 # œ CPƒJƒEƒ“ƒg‚ÌŠJŽn
 #----------------------------------------------------------------------------
 def start
   if @cp_thread != nil then
     return
   end
   @cancel = false
   @stop = false
   # ‚±‚±‚©‚çƒXƒŒƒbƒh
   @cp_thread = Thread.new do
     while @cancel != true
       if @stop != true
         self.update # XV
         sleep(0.05)
       end
     end
   end
   # ‚±‚±‚܂ŃXƒŒƒbƒh
 end
 #----------------------------------------------------------------------------
 # œ CPƒJƒEƒ“ƒgƒAƒbƒv
 #----------------------------------------------------------------------------
 def update
   if @count_battlers != nil then
     for battler in @count_battlers
       # s“®o—ˆ‚È‚¯‚ê‚Ζ³Ž‹
       if battler.dead? == true #or battler.movable? == false then
         battler.cp = 0
         next
       end
       # ‚±‚±‚Ì 1.3‚ð•Ï‚¦‚邱‚ƂŁ«ƒXƒs[ƒh‚ð•ÏX‰Â”B‚½‚¾‚µ¬”“_‚ÍŽg—p‚·‚邱‚ƁB
       battler.cp = [[battler.cp + 1.3 * 4096 * battler.agi / @agi_total, 0].max, 65535].min
     end
   end
 end
 #----------------------------------------------------------------------------
 # œ CPƒJƒEƒ“ƒg‚ÌŠJŽn
 #----------------------------------------------------------------------------
 def stop
   @cancel = true
   if @cp_thread != nil then
     @cp_thread.join
     @cp_thread = nil
   end
 end
end
#==============================================================================
# ¡ Game_Battler
#==============================================================================
class Game_Battler
 attr_accessor :now_guarding             # Œ»Ý–hŒä’†ƒtƒ‰ƒO
 attr_accessor :cp                       # Œ»ÝCP
 attr_accessor :slip_state_update_ban    # ƒXƒŠƒbƒvEƒXƒe[ƒgŽ©“®ˆ—‚Ì‹ÖŽ~
 #--------------------------------------------------------------------------
 # œ ƒRƒ}ƒ“ƒh“ü—͉””»’è
 #--------------------------------------------------------------------------
 def inputable?
   return (not @hidden and restriction =65535)
 end
 #--------------------------------------------------------------------------
 # œ ƒXƒe[ƒg [ƒXƒŠƒbƒvƒ_ƒ[ƒW] ”»’è
 #--------------------------------------------------------------------------
 alias xrxs_bp1_slip_damage? slip_damage?
 def slip_damage?
   return false if @slip_state_update_ban
   return xrxs_bp1_slip_damage?
 end
 #--------------------------------------------------------------------------
 # œ ƒXƒe[ƒgŽ©‘R‰ðœ (ƒ^[ƒ“‚²‚ƂɌĂяo‚µ)
 #--------------------------------------------------------------------------
 alias xrxs_bp1_remove_states_auto remove_states_auto
 def remove_states_auto
   return if @slip_state_update_ban
   xrxs_bp1_remove_states_auto
 end
end
#==============================================================================
# ¡ Game_Actor
#==============================================================================
class Game_Actor < Game_Battler
 #--------------------------------------------------------------------------
 # œ ƒZƒbƒgƒAƒbƒv
 #--------------------------------------------------------------------------
 alias xrxs_bp1_setup setup
 def setup(actor_id)
   xrxs_bp1_setup(actor_id)
   @hate = 100  # init-value is 100
   @cp = 0
   @now_guarding = false
   @slip_state_update_ban = false
 end
end
#==============================================================================
# ¡ Game_Enemy
#==============================================================================
class Game_Enemy < Game_Battler
 #--------------------------------------------------------------------------
 # œ ƒIƒuƒWƒFƒNƒg‰Šú‰»
 #--------------------------------------------------------------------------
 alias xrxs_bp1_initialize initialize
 def initialize(troop_id, member_index)
   xrxs_bp1_initialize(troop_id, member_index)
   @hate = 100  # init-value is 100
   @cp = 0
   @now_guarding = false
   @slip_state_update_ban = false
 end
end
#==============================================================================
# ¡ Window_BattleStatus
#==============================================================================
class Window_BattleStatus < Window_Base
 #--------------------------------------------------------------------------
 # œ ŒöŠJƒCƒ“ƒXƒ^ƒ“ƒX•Ï”
 #--------------------------------------------------------------------------
 attr_accessor   :update_cp_only                   # CPƒ[ƒ^[‚݂̂̍XV
 #--------------------------------------------------------------------------
 # œ ƒIƒuƒWƒFƒNƒg‰Šú‰»
 #--------------------------------------------------------------------------
 alias xrxs_bp1_initialize initialize
 def initialize
   @update_cp_only = false
   xrxs_bp1_initialize
 end
 #--------------------------------------------------------------------------
 # œ ƒŠƒtƒŒƒbƒVƒ…
 #--------------------------------------------------------------------------
 alias xrxs_bp1_refresh refresh
 def refresh
   if @update_cp_only == false
     xrxs_bp1_refresh
   end
   for i in 0...$game_party.actors.size
     actor = $game_party.actors[i]
     actor_x = i * 160 + 4
     draw_actor_cp_meter(actor, actor_x, 96, 120, 0)
   end
 end
 #--------------------------------------------------------------------------
 # œ CPƒ[ƒ^[ ‚Ì•`‰æ
 #--------------------------------------------------------------------------
 def draw_actor_cp_meter(actor, x, y, width = 156, type = 0)
   self.contents.font.color = system_color
   self.contents.fill_rect(x-1, y+27, width+2,6, Color.new(0, 0, 0, 255))
   if actor.cp == nil
     actor.cp = 0
   end
   w = width * [actor.cp,65535].min / 65535
   self.contents.fill_rect(x, y+28, w,1, Color.new(255, 255, 128, 255))
   self.contents.fill_rect(x, y+29, w,1, Color.new(255, 255, 0, 255))
   self.contents.fill_rect(x, y+30, w,1, Color.new(192, 192, 0, 255))
   self.contents.fill_rect(x, y+31, w,1, Color.new(128, 128, 0, 255))
 end
end
#==============================================================================
# ¡ Scene_Battle
#==============================================================================
class Scene_Battle
 # ‚±‚±‚ÉŒø‰Ê‰¹‚ðÝ’è‚·‚é‚ƁAƒAƒNƒ^[ƒRƒ}ƒ“ƒh‚ªƒ|ƒbƒv‚µ‚½‚Æ‚«‚ÉŒø‰Ê‰¹‚ðÄ¶
 $data_system_command_up_se = ""
 #--------------------------------------------------------------------------
 # œ ƒoƒgƒ‹I—¹
 #     result : Œ‹‰Ê (0:Ÿ—˜ 1:”s–k 2:“¦‘–)
 #--------------------------------------------------------------------------
 alias xrxs_bp1_battle_end battle_end
 def battle_end(result)
   # CPƒJƒEƒ“ƒg’âŽ~
   @cp_thread.stop
   xrxs_bp1_battle_end(result)
 end
 #--------------------------------------------------------------------------
 # œ ƒvƒŒƒoƒgƒ‹ƒtƒF[ƒYŠJŽn
 #--------------------------------------------------------------------------
 alias xrxs_bp1_start_phase1 start_phase1
 def start_phase1
   @agi_total = 0
   @cp_thread = Scene_Battle_CP.new
   # ƒAƒNƒ^[ƒRƒ}ƒ“ƒhƒEƒBƒ“ƒhƒE‚ðÄì¬
   s1 = $data_system.words.attack
   s2 = $data_system.words.skill
   s3 = $data_system.words.guard
   s4 = $data_system.words.item
   @actor_command_window = Window_Command.new(160, [s1, s2, s3, s4, "Run"])
   @actor_command_window.y = 128
   @actor_command_window.back_opacity = 160
   @actor_command_window.active = false
   @actor_command_window.visible = false
   @actor_command_window.draw_item(4, $game_temp.battle_can_escape ? @actor_command_window.normal_color : @actor_command_window.disabled_color)
   xrxs_bp1_start_phase1
 end
 #--------------------------------------------------------------------------
 # œ ƒp[ƒeƒBƒRƒ}ƒ“ƒhƒtƒF[ƒYŠJŽn
 #--------------------------------------------------------------------------
 alias xrxs_bp1_start_phase2 start_phase2
 def start_phase2
   xrxs_bp1_start_phase2
   @party_command_window.active = false
   @party_command_window.visible = false
   # ŽŸ‚Ö
   start_phase3
 end
 #--------------------------------------------------------------------------
 # œ ƒtƒŒ[ƒ€XV (ƒp[ƒeƒBƒRƒ}ƒ“ƒhƒtƒF[ƒY)
 #--------------------------------------------------------------------------
 alias xrxs_bp1_update_phase2 update_phase2
 def update_phase2
   # C ƒ{ƒ^ƒ“‚ª‰Ÿ‚³‚ꂽê‡
   if Input.trigger?(Input::C)
     # ƒp[ƒeƒBƒRƒ}ƒ“ƒhƒEƒBƒ“ƒhƒE‚̃J[ƒƒ‹ˆÊ’u‚Å•ªŠò
     case @party_command_window.index
     when 0  # í‚¤
       # Œˆ’è SE ‚ð‰‰‘t
       $game_system.se_play($data_system.decision_se)
       @cp_thread.start
       # ƒAƒNƒ^[ƒRƒ}ƒ“ƒhƒtƒF[ƒYŠJŽn
       start_phase3
     end
     return
   end
   xrxs_bp1_update_phase2
 end
 #--------------------------------------------------------------------------
 # œ ŽŸ‚̃AƒNƒ^[‚̃Rƒ}ƒ“ƒh“ü—Í‚Ö
 #--------------------------------------------------------------------------
 def phase3_next_actor
   # ƒ‹[ƒv
   begin
     # ƒAƒNƒ^[‚Ì–¾–ŃGƒtƒFƒNƒg OFF
     if @active_battler != nil
       @active_battler.blink = false
     end
     # ÅŒã‚̃AƒNƒ^[‚̏ꍇ
     if @actor_index == $game_party.actors.size-1
       # ƒƒCƒ“ƒtƒF[ƒYŠJŽn
       @cp_thread.start
       start_phase4
       return
     end
     # ƒAƒNƒ^[‚̃Cƒ“ƒfƒbƒNƒX‚ði‚ß‚é
     @actor_index += 1
     @active_battler = $game_party.actors[@actor_index]
     @active_battler.blink = true
     if @active_battler.inputable? == false
       @active_battler.current_action.kind = -1
     end
     # ƒAƒNƒ^[‚ªƒRƒ}ƒ“ƒh“ü—Í‚ðŽó‚¯•t‚¯‚È‚¢ó‘Ô‚È‚ç‚à‚¤ˆê“x
   end until @active_battler.inputable?
   @cp_thread.stop
   # ƒAƒNƒ^[ƒRƒ}ƒ“ƒhƒEƒBƒ“ƒhƒE‚ðƒZƒbƒgƒAƒbƒv
   @active_battler.now_guarding = false
   phase3_setup_command_window
 end
 #--------------------------------------------------------------------------
 # œ ‘O‚̃AƒNƒ^[‚̃Rƒ}ƒ“ƒh“ü—Í‚Ö
 #--------------------------------------------------------------------------
 def phase3_prior_actor
   # ƒ‹[ƒv
   begin
     # ƒAƒNƒ^[‚Ì–¾–ŃGƒtƒFƒNƒg OFF
     if @active_battler != nil
       @active_battler.blink = false
     end
     # Å‰‚̃AƒNƒ^[‚̏ꍇ
     if @actor_index == 0
       # Å‰‚Ö–ß‚é
       start_phase3
       return
     end
     # ƒAƒNƒ^[‚̃Cƒ“ƒfƒbƒNƒX‚ð–ß‚·
     @actor_index -= 1
     @active_battler = $game_party.actors[@actor_index]
     @active_battler.blink = true
     # ƒAƒNƒ^[‚ªƒRƒ}ƒ“ƒh“ü—Í‚ðŽó‚¯•t‚¯‚È‚¢ó‘Ô‚È‚ç‚à‚¤ˆê“x
   end until @active_battler.inputable?
   @cp_thread.stop
   # ƒAƒNƒ^[ƒRƒ}ƒ“ƒhƒEƒBƒ“ƒhƒE‚ðƒZƒbƒgƒAƒbƒv
   @active_battler.now_guarding = false
   phase3_setup_command_window
 end
 #--------------------------------------------------------------------------
 # œ ƒAƒNƒ^[ƒRƒ}ƒ“ƒhƒEƒBƒ“ƒhƒE‚̃ZƒbƒgƒAƒbƒv
 #--------------------------------------------------------------------------
 alias xrxs_bp1_phase3_setup_command_window phase3_setup_command_window
 def phase3_setup_command_window
   # Œø‰Ê‰¹‚̍ж
   Audio.se_play($data_system_command_up_se) if $data_system_command_up_se != ""
   # –ß‚·
   xrxs_bp1_phase3_setup_command_window
 end
 #--------------------------------------------------------------------------
 # œ ƒtƒŒ[ƒ€XV (ƒAƒNƒ^[ƒRƒ}ƒ“ƒhƒtƒF[ƒY : Šî–{ƒRƒ}ƒ“ƒh)
 #--------------------------------------------------------------------------
 alias xrxs_bsp1_update_phase3_basic_command update_phase3_basic_command
 def update_phase3_basic_command
   # C ƒ{ƒ^ƒ“‚ª‰Ÿ‚³‚ꂽê‡
   if Input.trigger?(Input::C)
     # ƒAƒNƒ^[ƒRƒ}ƒ“ƒhƒEƒBƒ“ƒhƒE‚̃J[ƒƒ‹ˆÊ’u‚Å•ªŠò
     case @actor_command_window.index
     when 4  # “¦‚°‚é
       if $game_temp.battle_can_escape
         # Œˆ’è SE ‚ð‰‰‘t
         $game_system.se_play($data_system.decision_se)
         # ƒAƒNƒVƒ‡ƒ“‚ðÝ’è
         @active_battler.current_action.kind = 0
         @active_battler.current_action.basic = 4
         # ŽŸ‚̃AƒNƒ^[‚̃Rƒ}ƒ“ƒh“ü—Í‚Ö
         phase3_next_actor
       else
         # ƒuƒU[ SE ‚ð‰‰‘t
         $game_system.se_play($data_system.buzzer_se)
       end
       return
     end
   end
   xrxs_bsp1_update_phase3_basic_command
 end
 #--------------------------------------------------------------------------
 # œ ƒƒCƒ“ƒtƒF[ƒYŠJŽn
 #--------------------------------------------------------------------------
 alias xrxs_bp1_start_phase4 start_phase4
 def start_phase4
   xrxs_bp1_start_phase4
   # ƒGƒlƒ~[ƒAƒNƒVƒ‡ƒ“ì¬
   for enemy in $game_troop.enemies
     if enemy.cp < 65535
       enemy.current_action.clear
       enemy.current_action.kind = -1 # ƒ^[ƒ“”ò‚΂µB
       next
     end
     enemy.make_action
   end
   # s“®‡˜ì¬
   make_action_orders
 end
 #--------------------------------------------------------------------------
 # œ ƒtƒŒ[ƒ€XV (ƒƒCƒ“ƒtƒF[ƒY ƒXƒeƒbƒv 1 : ƒAƒNƒVƒ‡ƒ“€”õ)
 #--------------------------------------------------------------------------
 alias xrxs_bp1_update_phase4_step1 update_phase4_step1
 def update_phase4_step1
   # ‰Šú‰»
   @phase4_act_continuation = 0
   # Ÿ”s”»’è
   if judge
     @cp_thread.stop
     # Ÿ—˜‚Ü‚½‚Í”s–k‚̏ꍇ : ƒƒƒbƒhI—¹
     return
   end
   # –¢s“®ƒoƒgƒ‰[”z—ñ‚̐擪‚©‚çŽæ“¾
   @active_battler = @action_battlers[0]
   # ƒXƒe[ƒ^ƒXXV‚ðCP‚¾‚¯‚ÉŒÀ’èB
   @status_window.update_cp_only = true
   # ƒXƒe[ƒgXV‚ð‹ÖŽ~B
   @active_battler.slip_state_update_ban = true if @active_battler != nil
   # –ß‚·
   xrxs_bp1_update_phase4_step1
   # ‹ÖŽ~‚ð‰ðœ
   @status_window.update_cp_only = false
   @active_battler.slip_state_update_ban = false if @active_battler != nil 
 end
 #--------------------------------------------------------------------------
 # œ ƒtƒŒ[ƒ€XV (ƒƒCƒ“ƒtƒF[ƒY ƒXƒeƒbƒv 2 : ƒAƒNƒVƒ‡ƒ“ŠJŽn)
 #--------------------------------------------------------------------------
 alias xrxs_bp1_update_phase4_step2 update_phase4_step2
 def update_phase4_step2
   # ‹­§ƒAƒNƒVƒ‡ƒ“‚Å‚È‚¯‚ê‚Î
   unless @active_battler.current_action.forcing
     # CP‚ª‘«‚è‚Ä‚¢‚È‚¢ê‡
     if @phase4_act_continuation == 0 and @active_battler.cp = 65535
         # ƒXƒe[ƒgŽ©‘R‰ðœ
         @active_battler.remove_states_auto
         # CPÁ”ï
         @active_battler.cp = [(@active_battler.cp - 65535),0].max
         # ƒXƒe[ƒ^ƒXƒEƒBƒ“ƒhƒE‚ðƒŠƒtƒŒƒbƒVƒ…
         @status_window.refresh
       end
       # ƒXƒeƒbƒv 1 ‚Ɉڍs
       @phase4_step = 1
       return
     end
   end
   # ƒAƒNƒVƒ‡ƒ“‚ÌŽí•Ê‚Å•ªŠò
   case @active_battler.current_action.kind
   when 0
     # UŒ‚¥–hŒäE“¦‚°‚éE‰½‚à‚µ‚È‚¢Žž‚Ì‹¤’ʏÁ”ïCP
     @active_battler.cp -=     0 if @phase4_act_continuation == 0
   when 1
     # ƒXƒLƒ‹Žg—pŽž‚̏Á”ïCP
     @active_battler.cp -= 65535 if @phase4_act_continuation == 0
   when 2
     # ƒAƒCƒeƒ€Žg—pŽž‚̏Á”ïCP
     @active_battler.cp -= 65535 if @phase4_act_continuation == 0
   when -1
     # CP‚ª—­‚Ü‚Á‚Ä‚¢‚È‚¢
     @phase4_step = 6
     return
   end
   # CP‰ÁŽZ‚ðˆêŽž’âŽ~‚·‚é
   @cp_thread.stop = true
   # ƒXƒe[ƒgŽ©‘R‰ðœ
   @active_battler.remove_states_auto
   xrxs_bp1_update_phase4_step2
 end
 #--------------------------------------------------------------------------
 # œ Šî–{ƒAƒNƒVƒ‡ƒ“ Œ‹‰Êì¬
 #--------------------------------------------------------------------------
 alias xrxs_bp1_make_basic_action_result make_basic_action_result
 def make_basic_action_result
   # UŒ‚‚̏ꍇ
   if @active_battler.current_action.basic == 0 and @phase4_act_continuation == 0
     @active_battler.cp -= 65535 # UŒ‚Žž‚ÌCPÁ”ï
   end
   # –hŒä‚̏ꍇ
   if @active_battler.current_action.basic == 1 and @phase4_act_continuation == 0
     @active_battler.cp -= 32767 # –hŒäŽž‚ÌCPÁ”ï
   end
   # “G‚Ì“¦‚°‚é‚̏ꍇ
   if @active_battler.is_a?(Game_Enemy) and
      @active_battler.current_action.basic == 2 and @phase4_act_continuation == 0
     @active_battler.cp -= 65535 # “¦‘–Žž‚ÌCPÁ”ï
   end
   # ‰½‚à‚µ‚È‚¢‚̏ꍇ
   if @active_battler.current_action.basic == 3 and @phase4_act_continuation == 0
     @active_battler.cp -= 32767 # ‰½‚à‚µ‚È‚¢Žž‚ÌCPÁ”ï
   end
   # “¦‚°‚é‚̏ꍇ
   if @active_battler.current_action.basic == 4 and @phase4_act_continuation == 0
     @active_battler.cp -= 65535 # “¦‘–Žž‚ÌCPÁ”ï
     # “¦‘–‰Â”‚Å‚Í‚È‚¢ê‡
     if $game_temp.battle_can_escape == false
       # ƒuƒU[ SE ‚ð‰‰‘t
       $game_system.se_play($data_system.buzzer_se)
       return
     end
     # Œˆ’è SE ‚ð‰‰‘t
     $game_system.se_play($data_system.decision_se)
     # “¦‘–ˆ—
     update_phase2_escape
     return
   end
   xrxs_bp1_make_basic_action_result
 end
 #--------------------------------------------------------------------------
 # œ ƒtƒŒ[ƒ€XV (ƒƒCƒ“ƒtƒF[ƒY ƒXƒeƒbƒv 5 : ƒ_ƒ[ƒW•Ž¦)
 #--------------------------------------------------------------------------
 alias xrxs_bp1_update_phase4_step5 update_phase4_step5
 def update_phase4_step5
   # ƒXƒŠƒbƒvƒ_ƒ[ƒW
   if @active_battler.hp > 0 and @active_battler.slip_damage?
     @active_battler.slip_damage_effect
     @active_battler.damage_pop = true
   end
   xrxs_bp1_update_phase4_step5
 end
 #--------------------------------------------------------------------------
 # œ ƒtƒŒ[ƒ€XV (ƒƒCƒ“ƒtƒF[ƒY ƒXƒeƒbƒv 6 : ƒŠƒtƒŒƒbƒVƒ…)
 #--------------------------------------------------------------------------
 alias xrxs_bp1_update_phase4_step6 update_phase4_step6
 def update_phase4_step6
   # CP‰ÁŽZ‚ðÄŠJ‚·‚é
   @cp_thread.stop = false
   # ƒwƒ‹ƒvƒEƒBƒ“ƒhƒE‚ð‰B‚·
   @help_window.visible = false
   xrxs_bp1_update_phase4_step6
 end
end
# ¥£¥ XRXS_BP 7. ƒoƒgƒ‹ƒXƒe[ƒ^ƒXEƒNƒŠƒAƒfƒUƒCƒ“ ver.1.02 ¥£¥
# by ÷‰ë Ý“y, TOMY

#==============================================================================
# ¡ Window_BattleStatus
#==============================================================================
class Window_BattleStatus < Window_Base
 #--------------------------------------------------------------------------
 # œ ŒöŠJƒCƒ“ƒXƒ^ƒ“ƒX•Ï”
 #--------------------------------------------------------------------------
 attr_accessor   :update_cp_only                   # CPƒ[ƒ^[‚݂̂̍XV
 #--------------------------------------------------------------------------
 # œ ƒIƒuƒWƒFƒNƒg‰Šú‰»
 #--------------------------------------------------------------------------
 alias xrxs_bp7_initialize initialize
 def initialize
   xrxs_bp7_initialize
   # «Full-View‚̏ꍇ‚͉º“ñs‚Ì # ‚ðÁ‚µ‚Ä‚­‚¾‚³‚¢B
   #self.opacity = 0
   #self.back_opacity = 0
 end
 #--------------------------------------------------------------------------
 # œ ƒŠƒtƒŒƒbƒVƒ…
 #--------------------------------------------------------------------------
 alias xrxs_bp7_refresh refresh
 def refresh
   if @update_cp_only
     xrxs_bp7_refresh
     return
   end
   # •`ŽÊ‚ð‹ÖŽ~‚µ‚È‚ª‚ç–ß‚·
   @draw_ban = true
   xrxs_bp7_refresh
   # •`ŽÊ‚Ì‹ÖŽ~‚ð‰ðœ
   @draw_ban = false
   # •`ŽÊ‚ðŠJŽn
   @item_max = $game_party.actors.size
   for i in 0...$game_party.actors.size
     actor = $game_party.actors[i]
     actor_x = i * 160 + 21
     # •àsƒLƒƒƒ‰ƒOƒ‰ƒtƒBƒbƒN‚Ì•`ŽÊ
     draw_actor_graphic(actor, actor_x - 9, 116)
     # HP/SPƒ[ƒ^[‚Ì•`ŽÊ
     draw_actor_hp_meter_line(actor, actor_x,  72, 96, 12)
     draw_actor_sp_meter_line(actor, actor_x, 104, 96, 12)
     # HP”’l‚Ì•`ŽÊ
     self.contents.font.size = 24            # HP/SP”’l‚Ì•¶Žš‚Ì‘å‚«‚³
     self.contents.font.color = actor.hp == 0 ? knockout_color :
       actor.hp <= actor.maxhp / 4 ? crisis_color : normal_color
     draw_shadow_text(actor_x-2, 58, 96, 24, actor.hp.to_s, 2)
     # SP”’l‚Ì•`ŽÊ
     self.contents.font.color = actor.sp == 0 ? knockout_color :
       actor.sp <= actor.maxsp / 4 ? crisis_color : normal_color
     draw_shadow_text(actor_x-2, 90, 96, 24, actor.sp.to_s, 2)
     # —pŒêuHPv‚Æ—pŒêuSPv‚Ì•`ŽÊ
     self.contents.font.size = 12            # —pŒêuHP/SPv‚Ì•¶Žš‚Ì‘å‚«‚³
     self.contents.font.color = system_color # —pŒêuHP/SPv‚Ì•¶Žš‚̐F
     draw_shadow_text(actor_x, 60, 96, 12, $data_system.words.hp)
     draw_shadow_text(actor_x, 92, 96, 12, $data_system.words.sp)
     
     draw_actor_state(actor, actor_x, 100)
   end
 end
end
#==============================================================================
# ¡ Window_Base
#==============================================================================
class Window_Base < Window
 #--------------------------------------------------------------------------
 # œ HPƒ[ƒ^[ ‚Ì•`‰æ
 #--------------------------------------------------------------------------
 def draw_actor_hp_meter_line(actor, x, y, width = 156, height = 4)
   w = width * actor.hp / actor.maxhp
   hp_color_1 = Color.new(255,   0,   0, 192)
   hp_color_2 = Color.new(255, 255,   0, 192)
   self.contents.fill_rect(x+8, y+4, width, (height/4).floor, Color.new(0, 0, 0, 128))
   draw_line(x, y, x + w, y, hp_color_1, (height/4).floor, hp_color_2)
   x -= 1
   y += (height/4).floor
   self.contents.fill_rect(x+8, y+4, width, (height/4).ceil , Color.new(0, 0, 0, 128))
   draw_line(x, y, x + w, y, hp_color_1, (height/4).ceil , hp_color_2)
   x -= 1
   y += (height/4).ceil
   self.contents.fill_rect(x+8, y+4, width, (height/4).ceil , Color.new(0, 0, 0, 128))
   draw_line(x, y, x + w, y, hp_color_1, (height/4).ceil , hp_color_2)
   x -= 1
   y += (height/4).ceil
   self.contents.fill_rect(x+8, y+4, width, (height/4).floor, Color.new(0, 0, 0, 128))
   draw_line(x, y, x + w, y, hp_color_1, (height/4).floor, hp_color_2)
 end
 #--------------------------------------------------------------------------
 # œ SPƒ[ƒ^[ ‚Ì•`‰æ
 #--------------------------------------------------------------------------
 def draw_actor_sp_meter_line(actor, x, y, width = 156, height = 4)
   w = width * actor.sp / actor.maxsp
   hp_color_1 = Color.new(  0,   0, 255, 192)
   hp_color_2 = Color.new(  0, 255, 255, 192)
   self.contents.fill_rect(x+8, y+4, width, (height/4).floor, Color.new(0, 0, 0, 128))
   draw_line(x, y, x + w, y, hp_color_1, (height/4).floor, hp_color_2)
   x -= 1
   y += (height/4).floor
   self.contents.fill_rect(x+8, y+4, width, (height/4).ceil , Color.new(0, 0, 0, 128))
   draw_line(x, y, x + w, y, hp_color_1, (height/4).ceil , hp_color_2)
   x -= 1
   y += (height/4).ceil
   self.contents.fill_rect(x+8, y+4, width, (height/4).ceil , Color.new(0, 0, 0, 128))
   draw_line(x, y, x + w, y, hp_color_1, (height/4).ceil , hp_color_2)
   x -= 1
   y += (height/4).ceil
   self.contents.fill_rect(x+8, y+4, width, (height/4).floor, Color.new(0, 0, 0, 128))
   draw_line(x, y, x + w, y, hp_color_1, (height/4).floor, hp_color_2)
 end
 #--------------------------------------------------------------------------
 # œ –¼‘O‚Ì•`‰æ
 #--------------------------------------------------------------------------
 alias xrxs_bp7_draw_actor_name draw_actor_name
 def draw_actor_name(actor, x, y)
   xrxs_bp7_draw_actor_name(actor, x, y) if @draw_ban != true
 end
 #--------------------------------------------------------------------------
 # œ ƒXƒe[ƒg‚Ì•`‰æ
 #--------------------------------------------------------------------------
 alias xrxs_bp7_draw_actor_state draw_actor_state
 def draw_actor_state(actor, x, y, width = 120)
   xrxs_bp7_draw_actor_state(actor, x, y, width) if @draw_ban != true
 end
 #--------------------------------------------------------------------------
 # œ HP ‚Ì•`‰æ
 #--------------------------------------------------------------------------
 alias xrxs_bp7_draw_actor_hp draw_actor_hp
 def draw_actor_hp(actor, x, y, width = 144)
   xrxs_bp7_draw_actor_hp(actor, x, y, width) if @draw_ban != true
 end
 #--------------------------------------------------------------------------
 # œ SP ‚Ì•`‰æ
 #--------------------------------------------------------------------------
 alias xrxs_bp7_draw_actor_sp draw_actor_sp
 def draw_actor_sp(actor, x, y, width = 144)
   xrxs_bp7_draw_actor_sp(actor, x, y, width) if @draw_ban != true
 end
end
#==============================================================================
# ž ŠO•”ƒ‰ƒCƒuƒ‰ƒŠ
#==============================================================================
class Window_Base
 #--------------------------------------------------------------------------
 # œ ƒ‰ƒCƒ“•`‰æ by ÷‰ë Ý“y
 #--------------------------------------------------------------------------
 def draw_line(start_x, start_y, end_x, end_y, start_color, width = 1, end_color = start_color)
   # •`ŽÊ‹——£‚ÌŒvŽZB‘å‚«‚ß‚É’¼ŠpŽž‚Ì’·‚³B
   distance = (start_x - end_x).abs + (start_y - end_y).abs
   # •`ŽÊŠJŽn
   if end_color == start_color
     for i in 1..distance
       x = (start_x + 1.0 * (end_x - start_x) * i / distance).to_i
       y = (start_y + 1.0 * (end_y - start_y) * i / distance).to_i
       self.contents.fill_rect(x, y, width, width, start_color) 
     end
   else
     for i in 1..distance
       x = (start_x + 1.0 * (end_x - start_x) * i / distance).to_i
       y = (start_y + 1.0 * (end_y - start_y) * i / distance).to_i
       r = start_color.red   * (distance-i)/distance + end_color.red   * i/distance
       g = start_color.green * (distance-i)/distance + end_color.green * i/distance
       b = start_color.blue  * (distance-i)/distance + end_color.blue  * i/distance
       a = start_color.alpha * (distance-i)/distance + end_color.alpha * i/distance
       self.contents.fill_rect(x, y, width, width, Color.new(r, g, b, a)) 
     end
   end
 end

 #--------------------------------------------------------------------------
 # œ ‰e•¶Žš•`‰æ by TOMY
 #--------------------------------------------------------------------------
 def draw_shadow_text(x, y, width, height, string, align = 0)
   # Œ³‚̐F‚ð•Û‘¶‚µ‚Ä‚¨‚­
   color = self.contents.font.color.dup
   # •Žš‚ʼne•`‰æ
   self.contents.font.color = Color.new(0, 0, 0)
   self.contents.draw_text(x + 2, y + 2, width, height, string, align)
   # Œ³‚̐F‚É–ß‚µ‚Ä•`‰æ
   self.contents.font.color = color
   self.contents.draw_text(x, y, width, height, string, align)
 end
end

Mais RMXP

Observação: se você gostou deste post ou ele lhe foi útil de alguma forma, por favor considere apoiar financeiramente a Gaming Room. Fico feliz só de ajudar, mas a contribuição do visitante é muito importante para que este site continua existindo e para que eu possa continuar provendo este tipo de conteúdo e melhorar cada vez mais. Clique aqui e saiba como. Obrigado!

Deixe um comentário

Inscreva-se na nossa newsletter!