Help with an ATB - VEE-Chary - 04-20-2014
Whoops, I moved this over from development discussion. I was wondering if I could get any help wit a script I've been having a wee bit of trouble with.
The script in question is MakirouAru's ATB script. I've checked out other ATBs and this is the closest to what I wanted without getting very complicated. (just in case an ATB, Active Time Battle, is one of those systems like the SNES Final Fantasy's where instead of turns every character performs their action when a bar that fills up individually at a speed tied to a stat like agility.)
Anyway, the script works just fine. The thing is I'm trying to do the Earthbound/Persona thingie where the way you approach enemies from the overworld gives you an advantage in battle (if you catch the enemy from the back, you get an extra turn, you get the idea). I actually managed to get around that with a combination of Mr. MO's Abs and common events, and I'm very happy with the results.
The problem is I don't know how to give players full turns when they get Player Advantage, or give players no turn when they get Enemy Advantage. Calling a script should do the trick, but I don't know what to write to get this to work and the script has no explanation on how to do this.
Here's the script:
Code: #==============================================================================# ¦ New_Battle #------------------------------------------------------------------------------ # Compiled By : MakirouAru #Instrucciones en español por Orochii ;3.#==============================================================================#=~Índice Orochezco:~=#-------Buscar "by xxxxx" usando Ctrl-F. El número de línea debe calzar.-------#Línea 16-Battle_End_Recovery, CODIGO BUSQUEDA:-<by fukuyama, ÷‰ë Ý“y>-#Línea 113-LevelUpWindow, CODIGO BUSQUEDA:-<by ÷‰ë Ý“y (*)>-#Línea 326-SlipDamage Effect Customizer (% de daño por turno), CODIGO BUSQUEDA:-<by ÷‰ë Ý“y, fukuyama>-#Línea 404-BattleCP (Núcleo del ATB), CODIGO BUSQUEDA:-<by ÷‰ë Ý“y, ˜aŠó, Jack-R>-#Línea 928-BattleStatus Mejorado, CODIGO BUSQUEDA:-<by ÷‰ë Ý“y, TOMY>-## ¥£¥ 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##Instrucciones orochiianas: Cambia el valor nil en @@recovery_rate_variable_id# por el número de variable que usarás para definir el % de# HP/MP que se recobrará después de batalla.# (Si nada ha cambiado, debería estar en la línea 30).
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‚ðXV @status_window.refresh end end end # module Scene_Battle_Moduleend # 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 endend
# Battle_End_Recovery# ¥£¥ XRXS_BP10. LEVEL UP!ƒEƒBƒ“ƒhƒE ¥£¥# -<by ÷‰ë Ý“y (*)>-
#Instrucciones orochiianas: Modifica la siguiente configuración según tu gusto.$data_system_level_up_se = "" # ƒŒƒxƒ‹ƒAƒbƒvSEB""‚Å–³‚µB$data_system_level_up_me = "Audio/ME/007-Fanfare01" # ƒŒƒxƒ‹ƒAƒbƒvME$data_system_level_up_text = "¡SUBE DE NIVEL!"
#==============================================================================# ¡ 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, $data_system_level_up_text) 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) endend#==============================================================================# ¡ Window_BattleStatus#==============================================================================class Window_BattleStatus < Window_Base #-------------------------------------------------------------------------- # œ ’ljÁEŒöŠJƒCƒ“ƒXƒ^ƒ“ƒX•Ï” #-------------------------------------------------------------------------- attr_accessor :level_up_flags # ¡SUBE DE NIVEL!•\Ž¦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 endend#==============================================================================# ¡ 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ƒŒ[ƒ€XV (ƒ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 <= 0 end end #-------------------------------------------------------------------------- # œ ƒtƒŒ[ƒ€XV (ƒAƒtƒ^[ƒoƒgƒ‹ƒtƒF[ƒY 1 : ƒŒƒxƒ‹ƒAƒbƒv) #-------------------------------------------------------------------------- def update_phase5_step1 # C ƒ{ƒ^ƒ“‚ª‰Ÿ‚³‚ê‚½ê‡ if Input.trigger?(Input::C) # ƒEƒBƒ“ƒhƒE‚ð•Â‚¶‚ÄŽŸ‚̃AƒNƒ^[‚Ö @levelup_window.visible = false if @levelup_window != nil @status_window.level_up_flags[@exp_gain_actor] = false phase5_next_levelup end end #-------------------------------------------------------------------------- # œ ŽŸ‚̃AƒNƒ^[‚̃Œƒxƒ‹ƒAƒbƒv•\Ž¦‚Ö #-------------------------------------------------------------------------- def phase5_next_levelup begin # ŽŸ‚̃AƒNƒ^[‚Ö @exp_gain_actor += 1 # ÅŒã‚̃AƒNƒ^[‚Ìê‡ if @exp_gain_actor >= $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Žæ“¾‚ÌŒˆ’è“IuŠÔ(“ä 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 endend# ¥£¥ XRXS_17. ƒXƒŠƒbƒvƒ_ƒ[ƒW–hŒä^Œø‰Ê—ÊÚ׉» ver.1.51 ¥£¥# -<by ÷‰ë Ý“y, fukuyama>-
=begin#==============================================================================# ¡ 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 =~ /^Veneno([0-9]+)\%/ slip_damage_percent += $1.to_i elsif $data_states[j].name =~ /^Veneno([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 =~ /^Veneno([0-9]+)\%/ slip_damage_percent -= $1.to_i elsif $data_states[j].name =~ /^Veneno([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 =~ /^Veneno([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 =~ /^Veneno([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ƒhI—¹ return true end endend=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 # XV 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 endend
#==============================================================================# ¡ Game_Battler#==============================================================================class Game_Battler attr_accessor :now_guarding # Œ»Ý–hŒä’†ƒtƒ‰ƒO attr_accessor :cp # Œ»ÝCP attr_accessor :slip_state_update_ban # ƒXƒŠƒbƒvEƒXƒe[ƒgŽ©“®ˆ—‚Ì‹ÖŽ~ #-------------------------------------------------------------------------- # œ ƒRƒ}ƒ“ƒh“ü—͉”\”»’è #-------------------------------------------------------------------------- def inputable? return (not @hidden and restriction <= 1 and @cp >=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 endend#==============================================================================# ¡ 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 endend#==============================================================================# ¡ 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 endend#==============================================================================# ¡ Window_BattleStatus#==============================================================================class Window_BattleStatus < Window_Base #-------------------------------------------------------------------------- #-------------------------------------------------------------------------- # œ ŒöŠJƒCƒ“ƒXƒ^ƒ“ƒX•Ï” #-------------------------------------------------------------------------- attr_accessor :update_cp_only # CPƒ[ƒ^[‚Ì‚Ý‚ÌXV #-------------------------------------------------------------------------- # œ ƒ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 #-------------------------------------------------------------------------- def draw_actor_name(actor, x, y) self.contents.font.color = normal_color self.contents.font.size = 24 self.contents.draw_text(x, y, 120, 32, actor.name) 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)) endend
#==============================================================================# ¡ 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, "Huir"]) @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ƒŒ[ƒ€XV (ƒ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 # ʼn‚̃AƒNƒ^[‚Ìê‡ if @actor_index == 0 # ʼn‚Ö–ß‚é 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ƒŒ[ƒ€XV (ƒ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ƒŒ[ƒ€XV (ƒƒ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ƒhI—¹ return end # –¢s“®ƒoƒgƒ‰[”z—ñ‚Ì擪‚©‚çŽæ“¾ @active_battler = @action_battlers[0] # ƒXƒe[ƒ^ƒXXV‚ðCP‚¾‚¯‚ÉŒÀ’èB @status_window.update_cp_only = true # ƒXƒe[ƒgXV‚ð‹ÖŽ~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ƒŒ[ƒ€XV (ƒƒ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 @phase4_step = 6 return end # §–ñ‚ª [“G‚ð’íUŒ‚‚•‚é] ‚© [–¡•û‚ð’íUŒ‚‚•‚é] ‚Ìê‡ if @active_battler.restriction == 2 or @active_battler.restriction == 3 # ƒAƒNƒVƒ‡ƒ“‚ÉUŒ‚‚ðÝ’è @active_battler.current_action.kind = 0 @active_battler.current_action.basic = 0 end # §–ñ‚ª [s“®‚Å‚«‚È‚¢] ‚Ìê‡ if @active_battler.restriction == 4 # ƒAƒNƒVƒ‡ƒ“‹ §‘Îۂ̃oƒgƒ‰[‚ðƒNƒŠƒA $game_temp.forcing_battler = nil 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ƒŒ[ƒ€XV (ƒƒ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ƒŒ[ƒ€XV (ƒƒ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 endend# ¥£¥ XRXS_BP 7. ƒoƒgƒ‹ƒXƒe[ƒ^ƒXEƒ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ƒ[ƒ^[‚Ì‚Ý‚ÌXV #-------------------------------------------------------------------------- # œ ƒ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ŒêuHPv‚Æ—pŒêuSPv‚Ì•`ŽÊ self.contents.font.size = 12 # —pŒêuHP/SPv‚Ì•Žš‚Ì‘å‚«‚³ self.contents.font.color = system_color # —pŒêuHP/SPv‚Ì•Žš‚Ì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ŽZB‘å‚«‚ß‚É’¼Š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
If there's a way to change the energy bar's value from an event, please let me know.
Or hey, if you know of another easy to integrate ATB where I can do this (Trickster's ATB for instance is a bit too messy), I'd love to hear some recommendations.
Thanks in advance.
RE: Help with an ATB - DerVVulfman - 04-20-2014
I am sorry, but the code within the code box didn't render properly as the line breaks didn't function. Perhaps you could see about editing your post with a fixed copy. Try pasting your own personal copy within notepad, and then copy from notepad into the post itself. Could work.
After that, a scripter could take a look. Less confusing that way.
RE: Help with an ATB - VEE-Chary - 04-20-2014
Good idea. Attached a .txt.
Some of the instructions are in gibberish (mistranslated japanese I suppose) and Spanish but none of it helps, so don't worry about the language barrier.
RE: Help with an ATB - DerVVulfman - 04-21-2014
Curious (mind you I'm at work so no actual RMXP engine for editing right now)......
Is this the pure code you received or did you perform any edits of your own. I see that the Game_Battler class that began around line #320 was commented out with the =begin and =end statements.
Also, I may have something that 'may' work, though it has been ages since I worked with it. It is a script that I wrote some years ago entitled: (>ADVANTAGES!<) The script allows you to have random encounters determine (based on party-vs-troop agility) who has an advantage and thus the surprise, and thus fill their AT bars. OR you can set a conditional switch to turn on 'player' advantage or 'troop' advantage. I wrote Advantages to be compatible with various battlsystems including XRXS #65 script.... you may have some luck.
RE: Help with an ATB - VEE-Chary - 04-21-2014
That's kind of what I had in mind, actually, but you're missing the point.
The game can detect whether the player or the enemy has an advantage. What I'm trying to do now is get that advantage to make a difference. Enemy advantage should make players start with no energy. Player advantage should make players start with full energy.
In case you're curious, you have to attack an enemy on the overworld (I'm using Mr. Mo's ABS) from the front to get enemy advantage, and from the back or sides to get player advantage. This system makes the thief and ranger characters extra important because the thief can temporarily stun enemies and then attack them on the back, while the ranger can get enemies from behind without alerting them (for obvious reasons).
As for the script itself, I didn't edit it myself, I'm assuming a Spanish-speaking translator snatched it from a Japanese coder. It works perfectly but I can't change the energy to zero or full from an event. That's all I need.
Thanks for replying.
RE: Help with an ATB - MechanicalPen - 04-22-2014
Actually you CAN change the energy from script, but the ATB system overwrites the value at battle start anyways. Let's fix that.
Find: Code: #----------------------------------------------------------------------------
# œ ƒ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
replace with Code: #----------------------------------------------------------------------------
# œ ƒ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
if (battler.cp == 0)
battler.cp = [[65535 * (rand(15) + 85) / 100 * battler.agi / @agi_total * 4, 0].max, 65535].min
end
end
end
then find: Code: #--------------------------------------------------------------------------
# œ ƒ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
#-------
replace with: Code: #--------------------------------------------------------------------------
# œ ƒoƒgƒ‹I—¹
# result : Œ‹‰ (0:Ÿ—˜ 1:”s–k 2:“¦‘–)
#--------------------------------------------------------------------------
alias xrxs_bp1_battle_end battle_end
def battle_end(result)
#return actor CP to inital value
for actor in $game_party.actors
actor.cp = 0
end
# CPƒJƒEƒ“ƒg’âŽ~
@cp_thread.stop
xrxs_bp1_battle_end(result)
end
#------
Now, from a "Script..." Event, do: Code: #Player Advantage!
for actor in $game_party.actors
actor.cp = 65534
end
Code: #Enemy Advantage!
for actor in $game_party.actors
actor.cp = 1
end
I tested it and it works for me, so let me know if you have any problems.
RE: Help with an ATB - VEE-Chary - 04-22-2014
YES, that works perfectly!
I think I'll name one of my children after you now. Thanks!
I'm adding the edited version in case anyone stumbles upon this thread and wants it:
MakirouAru\'s ATB (edited).txt (Size: 43.97 KB / Downloads: 0)
|