Code:
#==============================================================================
# New_Battle
#------------------------------------------------------------------------------
# Compiled By : MakirouAru
#==============================================================================
# XRXS_BP 3. HP ver.1.01
# by fukuyama, ݓy
# Battle_End_Recovery
#
# 퓌̉W[
#
# Request: stay
# Script: fukuyama
# Test: mRmq
#
# 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ȊOAN^[ĂꍇA퓌̉s
if recovery_rate != 0 and not actor.dead?
# p[eB̃AN^[Ƀ[v
$game_party.actors.each do |actor|
# ʌvZ
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
# Aj[Vݒ
actor.damage = - recovery_hp
actor.damage_pop = true
end
# Xe[^XEBhEXV
@status_window.refresh
end
end
end # module Scene_Battle_Module
end # module Battle_End_Recovery
#------------------------------
# 퓃V[̍Ē`
#------------------------------
class Scene_Battle
# Scene_BattlepW[CN[h
include Battle_End_Recovery::Scene_Battle_Module
# ̃tF[YTJnɕʖ
alias battle_end_recovery_original_start_phase5 start_phase5
# tF[YTJnĒ`
def start_phase5
# 퓌̉Ăяo
battle_end_recovery
# ̃tF[YTJnĂяo
battle_end_recovery_original_start_phase5
end
end
#==============================================================================
# Game_Battler
#==============================================================================
class Game_Battler
#--------------------------------------------------------------------------
# Xbv_[W̌ʓKp
#--------------------------------------------------------------------------
alias xrxs_bp7_slip_damage_effect slip_damage_effect
def slip_damage_effect
# l̏
slip_damage_percent = 0
slip_damage_plus = 0
# ݕtĂXe[g̒Xbv_[WL̃mT
for i in @states
if $data_states[i].slip_damage
# ̃Xe[gĂXbv_[W
# LvvXXe[g܂Lv}CiXXe[gB
for j in $data_states[i].plus_state_set
if $data_states[j] != nil
if $data_states[j].name =~ /^Xbv([0-9]+)(%|)/
slip_damage_percent += $1.to_i
elsif $data_states[j].name =~ /^Xbv([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 =~ /^Xbv([0-9]+)(%|)/
slip_damage_percent -= $1.to_i
elsif $data_states[j].name =~ /^Xbv([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
# hXbvh䂪 ꍇ
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 =~ /^Xbv([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 =~ /^Xbv([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 _[WZ
self.hp -= self.damage
# \bhI
return true
end
end
end
# XRXS_BP 1. CP ver.15
# by ݓy, a, Jack-R
#==============================================================================
# Scene_Battle_CP
#==============================================================================
class Scene_Battle_CP
#--------------------------------------------------------------------------
# JCX^Xϐ
#--------------------------------------------------------------------------
attr_accessor :stop # CPZXgbv
#----------------------------------------------------------------------------
# IuWFNg̏
#----------------------------------------------------------------------------
def initialize
@battlers = []
@cancel = false
@agi_total = 0
# z @count_battlers
@count_battlers = []
# Gl~[z @count_battlers ɒlj
for enemy in $game_troop.enemies
@count_battlers.push(enemy)
end
# AN^[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
#----------------------------------------------------------------------------
# CPJEg̊Jn
#----------------------------------------------------------------------------
def start
if @cp_thread != nil then
return
end
@cancel = false
@stop = false
# Xbh
@cp_thread = Thread.new do
while @cancel != true
if @stop != true
self.update # XV
sleep(0.05)
end
end
end
# ܂ŃXbh
end
#----------------------------------------------------------------------------
# CPJEgAbv
#----------------------------------------------------------------------------
def update
if @count_battlers != nil then
for battler in @count_battlers
# soȂΖ
if battler.dead? == true #or battler.movable? == false then
battler.cp = 0
next
end
# 1.3ς邱ƂŁXs[hύX\B_͎gp邱ƁB
battler.cp = [[battler.cp + 1.3 * 4096 * battler.agi / @agi_total, 0].max, 65535].min
end
end
end
#----------------------------------------------------------------------------
# CPJEg̊Jn
#----------------------------------------------------------------------------
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䒆tO
attr_accessor :cp # CP
attr_accessor :slip_state_update_ban # XbvEXe[g̋֎~
#--------------------------------------------------------------------------
# R}h͉\
#--------------------------------------------------------------------------
def inputable?
return (not @hidden and restriction <= 1 and @cp >=65535)
end
#--------------------------------------------------------------------------
# Xe[g [Xbv_[W]
#--------------------------------------------------------------------------
alias xrxs_bp1_slip_damage? slip_damage?
def slip_damage?
return false if @slip_state_update_ban
return xrxs_bp1_slip_damage?
end
#--------------------------------------------------------------------------
# Xe[gR (^[ƂɌĂя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
#--------------------------------------------------------------------------
# ZbgAbv
#--------------------------------------------------------------------------
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
#--------------------------------------------------------------------------
# IuWFNg
#--------------------------------------------------------------------------
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
#--------------------------------------------------------------------------
# JCX^Xϐ
#--------------------------------------------------------------------------
attr_accessor :update_cp_only # CP[^[݂̂̍XV
#--------------------------------------------------------------------------
# IuWFNg
#--------------------------------------------------------------------------
alias xrxs_bp1_initialize initialize
def initialize
@update_cp_only = false
xrxs_bp1_initialize
end
#--------------------------------------------------------------------------
# tbV
#--------------------------------------------------------------------------
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
# Ɍʉݒ肷ƁAAN^[R}h|bvƂɌʉĐ
$data_system_command_up_se = ""
#--------------------------------------------------------------------------
# ogI
# result : (0: 1:sk 2:)
#--------------------------------------------------------------------------
alias xrxs_bp1_battle_end battle_end
def battle_end(result)
# CPJEg~
@cp_thread.stop
xrxs_bp1_battle_end(result)
end
#--------------------------------------------------------------------------
# vogtF[YJn
#--------------------------------------------------------------------------
alias xrxs_bp1_start_phase1 start_phase1
def start_phase1
@agi_total = 0
@cp_thread = Scene_Battle_CP.new
# AN^[R}hEBhEč
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, "Fuir"])
@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[eBR}htF[YJn
#--------------------------------------------------------------------------
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[eBR}htF[Y)
#--------------------------------------------------------------------------
alias xrxs_bp1_update_phase2 update_phase2
def update_phase2
# C {^ꂽꍇ
if Input.trigger?(Input::C)
# p[eBR}hEBhẼJ[\ʒuŕ
case @party_command_window.index
when 0 # 키
# SE t
$game_system.se_play($data_system.decision_se)
@cp_thread.start
# AN^[R}htF[YJn
start_phase3
end
return
end
xrxs_bp1_update_phase2
end
#--------------------------------------------------------------------------
# ̃AN^[̃R}h͂
#--------------------------------------------------------------------------
def phase3_next_actor
# [v
begin
# AN^[̖ŃGtFNg OFF
if @active_battler != nil
@active_battler.blink = false
end
# Ō̃AN^[̏ꍇ
if @actor_index == $game_party.actors.size-1
# CtF[YJn
@cp_thread.start
start_phase4
return
end
# AN^[̃CfbNXi߂
@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
# AN^[R}h͂tȂԂȂx
end until @active_battler.inputable?
@cp_thread.stop
# AN^[R}hEBhEZbgAbv
@active_battler.now_guarding = false
phase3_setup_command_window
end