Envision, Create, Share

Welcome to HBGames, a leading amateur game development forum and Discord server. All are welcome, and amongst our ranks you will find experts in their field from all aspects of video game design and development.

Need help merging two scripts

poser7

Member

I have two battle scripts and I want the View and everything from the first one with the FFX bar on the side. Can someone help?

here is the first

Code:
#==============================================================================

class Sprite_Battler < RPG::Sprite
#--------------------------------------------------------------------------
# * Initialize
#--------------------------------------------------------------------------
alias cbs_initialize initialize
def initialize(viewport, battler = nil)

# Configuration
@speed = 7 # Framerate speed of the battlers
@frames = 4 # Number of frames in each pose
@poses = 11 # Number of poses (stances) in the template
@mirror_enemies = true # Enemy battlers use reversed image
@stationary_enemies = false # If the enemies don't move while attacking
@stationary_actors = false # If the actors don't move while attacking
@calculate_speed = true # System calculates a mean/average speed
@phasing = true # Characters fade in/out while attacking
@default_collapse = false # Restores the old 'red fade' effect to enemies
# Array that holds the id # of weapons that forces the hero to be stationary
@stationary_weapons = [17,18,19,20,21,22,23,24] # (examples are bows & guns)

# DO NOT EDIT BELOW THIS LINE UNLESS YOU KNOW WHAT YOU'RE DOING
@frame, @pose = 0, 0
@last_time = 0
@last_move_time = 0
cbs_initialize(viewport, battler)
self.mirror = !!battler and @mirror_enemies
viewport.z = 99
end
#--------------------------------------------------------------------------
# * Update
#--------------------------------------------------------------------------
alias cbs_update update
def update
return unless @battler

# Regular Update
cbs_update

# Start Routine
unless @started
@pose = state
@width = @width / @frames
@height = @height / @poses
@display_x = @battler.screen_x
@display_y = @battler.screen_y
@destination_x = @display_x
@destination_y = @display_y
@started = true
end

# Cut Out Frame
self.src_rect.set(@width * @frame, @height * @pose, @width, @height)

# Position Sprite
self.x = @display_x
self.y = @display_y
self.z = @display_y
self.ox = @width / 2
self.oy = @height

# Setup Animation
time = Graphics.frame_count / (Graphics.frame_rate / @speed)
if @last_time < time
@frame = (@frame + 1) % @frames
if @frame == 0
if @freeze
@frame = @frames - 1
return
end
@pose = state
end
end
@last_time = time

# Move It
move if moving
end
#--------------------------------------------------------------------------
# * Current State
#--------------------------------------------------------------------------
def state
# Damage State
if [nil,{}].include?(@battler.damage)
# Battler Fine
@state = 0
# Battler Wounded
@state = 2 if @battler.hp < @battler.maxhp / 4

if @default_collapse
# Battler Dead (Red-Out Collapse)
if @battler.dead? and @battler.is_a?(Game_Actor)
@state = 10
# Fix Opacity
self.opacity = 255
end
else
# Battler Dead (Pose-Type Collapse)
if @battler.dead?
@state = 10
# Fix Opacity
self.opacity = 255
end
end
end
# Guarding State
@state = 3 if @battler.guarding?
# Moving State
if moving
# If enemy battler moving
if @battler.is_a?(Game_Enemy) 
# Battler Moving Left
@state = 5 if moving.eql?(0)
# Battler Moving Right
@state = 4 if moving.eql?(1)
# Else actor battler moving
else
# Battler Moving Left
@state = 4 if moving.eql?(0)
# Battler Moving Right
@state = 5 if moving.eql?(1)
end
end
# Return State
return @state
end
#--------------------------------------------------------------------------
# * Move
#--------------------------------------------------------------------------
def move
time = Graphics.frame_count / (Graphics.frame_rate.to_f / (@speed * 5))
if @last_move_time < time

# Pause for Animation
return if @pose != state

# Phasing
if @phasing
d1 = (@display_x - @original_x).abs
d2 = (@display_y - @original_y).abs
d3 = (@display_x - @destination_x).abs
d4 = (@display_y - @destination_y).abs
self.opacity = [255 - ([d1 + d2, d3 + d4].min * 1.75).to_i, 0].max
end

# Calculate Difference
difference_x = (@display_x - @destination_x).abs
difference_y = (@display_y - @destination_y).abs

# Done? Reset, Stop
if [difference_x, difference_y].max.between?(0, 8)
@display_x = @destination_x
@display_y = @destination_y
@pose = state
return
end

# Calculate Movement Increments
increment_x = increment_y = 1
if difference_x < difference_y
increment_x = 1.0 / (difference_y.to_f / difference_x)
elsif difference_y < difference_x
increment_y = 1.0 / (difference_x.to_f / difference_y)
end

# Calculate Movement Speed
if @calculate_speed
total = 0; $game_party.actors.each{ |actor| total += actor.agi }
speed = @battler.agi.to_f / (total / $game_party.actors.size)
increment_x *= speed
increment_y *= speed
end

# Multiply and Move
multiplier_x = (@destination_x - @display_x > 0 ? 8 : -8)
multiplier_y = (@destination_y - @display_y > 0 ? 8 : -8)
@display_x += (increment_x * multiplier_x).to_i
@display_y += (increment_y * multiplier_y).to_i
end
@last_move_time = time
end
#--------------------------------------------------------------------------
# * Set Movement
#--------------------------------------------------------------------------
def setmove(destination_x, destination_y)
unless (@battler.is_a?(Game_Enemy) and @stationary_enemies) or
(@battler.is_a?(Game_Actor) and @stationary_actors)
unless @stationary_weapons.include?(@battler.weapon_id)
@original_x = @display_x
@original_y = @display_y
@destination_x = destination_x
@destination_y = destination_y
end
end
end
#--------------------------------------------------------------------------
# * Movement Check
#--------------------------------------------------------------------------
def moving
if (@display_x != @destination_x and @display_y != @destination_y and !@battler.dead?)
return (@display_x > @destination_x ? 0 : 1)
end
end
#--------------------------------------------------------------------------
# * Set Pose
#--------------------------------------------------------------------------
def pose=(pose)
@pose = pose
@frame = 0
end
#--------------------------------------------------------------------------
# * Freeze
#--------------------------------------------------------------------------
def freeze
@freeze = true
end
#--------------------------------------------------------------------------
# * Fallen Pose
#--------------------------------------------------------------------------
alias cbs_collapse collapse
def collapse
if @default_collapse
cbs_collapse if @battler.is_a?(Game_Enemy)
end
end
end

#==============================================================================
# ** Game_Actor
#==============================================================================

class Game_Actor
#--------------------------------------------------------------------------
# * Actor X Coordinate
#--------------------------------------------------------------------------
def screen_x
if self.index != nil
return self.index * 45 + 450
else
return 0
end
end
#--------------------------------------------------------------------------
# * Actor Y Coordinate
#--------------------------------------------------------------------------
def screen_y
return self.index * 35 + 200
end
#--------------------------------------------------------------------------
# * Actor Z Coordinate
#--------------------------------------------------------------------------
def screen_z
return screen_y
end
end

#==============================================================================
# ** Scene_Battle
#==============================================================================

class Scene_Battle
#--------------------------------------------------------------------------
# * Action Animation, Movement
#--------------------------------------------------------------------------
alias cbs_update_phase4_step3 update_phase4_step3
def update_phase4_step3(battler = @active_battler)
@rtab = !@target_battlers
target = (@rtab ? battler.target : @target_battlers)[0]
@moved = {} unless @moved
return if @spriteset.battler(battler).moving
case battler.current_action.kind
when 0 # Attack
if not (@moved[battler] or battler.guarding?)
offset = (battler.is_a?(Game_Actor) ? 40 : -40)
@spriteset.battler(battler).setmove(target.screen_x + offset, target.screen_y)
@moved[battler] = true
return
elsif not battler.guarding?
@spriteset.battler(battler).pose = 6 + rand(2)
@spriteset.battler(battler).setmove(battler.screen_x, battler.screen_y)
end
when 1 # Skill
@spriteset.battler(battler).pose = 8
when 2 # Item
@spriteset.battler(battler).pose = 8
end
@moved[battler] = false
@rtab ? cbs_update_phase4_step3(battler) : cbs_update_phase4_step3
end
#--------------------------------------------------------------------------
# * Hit Animation
#--------------------------------------------------------------------------
alias cbs_update_phase4_step4 update_phase4_step4
def update_phase4_step4(battler = @active_battler)
for target in (@rtab ? battler.target : @target_battlers)
damage = (@rtab ? target.damage[battler] : target.damage)
if damage.is_a?(Numeric) and damage > 0
@spriteset.battler(target).pose = 1
end
end
@rtab ? cbs_update_phase4_step4(battler) : cbs_update_phase4_step4
end
#--------------------------------------------------------------------------
# * Victory Animation
#--------------------------------------------------------------------------
alias cbs_start_phase5 start_phase5
def start_phase5
for actor in $game_party.actors
return if @spriteset.battler(actor).moving
end
for actor in $game_party.actors
unless actor.dead?
@spriteset.battler(actor).pose = 9
@spriteset.battler(actor).freeze
end
end
cbs_start_phase5
end
#--------------------------------------------------------------------------
# * Change Arrow Viewport
#--------------------------------------------------------------------------
alias cbs_start_enemy_select start_enemy_select
def start_enemy_select
cbs_start_enemy_select
@enemy_arrow.dispose
@enemy_arrow = Arrow_Enemy.new(@spriteset.viewport2)
@enemy_arrow.help_window = @help_window
end
end

#==============================================================================
# ** Spriteset_Battle
#==============================================================================

class Spriteset_Battle
#--------------------------------------------------------------------------
# * Change Enemy Viewport
#--------------------------------------------------------------------------
alias cbs_initialize initialize
def initialize
cbs_initialize
@enemy_sprites = []
for enemy in $game_troop.enemies.reverse
@enemy_sprites.push(Sprite_Battler.new(@viewport2, enemy))
end
end
#--------------------------------------------------------------------------
# * Find Sprite From Battler Handle
#--------------------------------------------------------------------------
def battler(handle)
for sprite in @actor_sprites + @enemy_sprites
return sprite if sprite.battler == handle
end
end
end

#==============================================================================
# ** Arrow_Base
#==============================================================================

class Arrow_Base < Sprite
#--------------------------------------------------------------------------
# * Reposition Arrows
#--------------------------------------------------------------------------
alias cbs_initialize initialize
def initialize(viewport)
cbs_initialize(viewport)
self.ox = 14
self.oy = 10
end
end






And here is the second

Code:
#########################################################################
# FF10にあった、カウントタイムバトル的なモノです。
#
# ☆良くあるATB(ゲージがたまると行動可能になるやつね)との違い
# ・行動順を割り出す計算式が変わっています。
# ATBでは毎フレームすばやさに応じた値が足されていき、
# 行動を終了したら規定の値(ほとんどの方が0だと思いますが)になります。
# それに対して、この似非CTBシステム(以下CTB)では、
# 全員のゲージが同じスピードで上昇し、
# 行動を終了したあと、素早さに応じた値を減算します。
# このため、行動順がATBと微妙に変化するかと思われます。
#
# ・行動順の表示が名前の羅列になってます。
# この名前は、ゲージのように動くことはなく、
# 現在の行動者含めて五人先の人までを名前で表示しています。
# なお、行動先読みには「全ての行動が物理攻撃だった時」を前提にしてます。
# そのため、スキルやアイテムなどを使ってしまうと、その分微妙にズレます。
#
# ☆制約
# ・パーティーが三人
# 行動順を表示する部分どこにあっても邪魔なので、
# 結局パーティー表示部分の左端を削りました。
#
# ・「何もしない」の動作が不審
# 何の前触れもなくスキップしてしまうように設定していますので、
# 見かけ上は無視されたように見えてしまいます。
#
# ☆特殊操作
# ・パーティーコマンド呼び出し
# アクターのコマンドが表示されている時にXボタンを押してください。
# パーティーコマンドが呼び出されます。
# 戦闘再開はそのまま、戦闘再開。
# 行動順表示は、50人先まで行動順を表示します。
# あまり使えないかもしれませんが。
# 一応、L、Rによるページ送り機能などもつけてます。
# 逃走は、「全員のCPを一定値減算したのち、逃走する」という形式にしてます。
#
# ☆スキルについて
# 「スキル名,ディレイ値,詠唱時間」とスキル名を書き換えてください。
# ディレイ値は「その行動が終了した後に減算するCPの基準となる値」です。
# たとえば通常攻撃はこれがCP_COST_ATTACKで定義されています。
# 何も書いていない場合の値も定義可能です。
# 詠唱時間は「そのスキルが発動するまでの時間」です。
# 詠唱中はステート「詠唱」が付加されます。
# 攻撃の場合はもちろんこの詠唱時間は0ですね。
# なので、こんな感じで↓
# 「クイックカット,120,0」
# これでCP_COST_ATTACKを120以上にしておけば、
# 通常攻撃よりも早く次の出番がきますね。
# 「パワフルスイング,100,120」
# これだとスキルを選択してから発動するまでのタイムラグが120ありますね。
#########################################################################

#==============================================================================
# ■ 初期定義
#==============================================================================
module RPG
class Skill
CP_COST_DELAY = 300 # スキルで値を何も書いていない場合のディレイ値
CP_COST_SPELL = 300 # スキルで値を何も書いていない場合の詠唱時間
end
end

module CTB_Define
# 詠唱ステートのID
SPELL_STATE_ID = 300
# 消費CP
# 消費CPの算出方法は「消費CP(ここで定義)?すばやさ平均?すばやさ」です。
CP_COST_ITEM = 200 # アイテムを使用したときの減算値
CP_COST_ATTACK = 300 # 攻撃したときの減算値
CP_COST_GUARD = 200 # 防御したときの減算値
CP_COST_NOTHING = 100 # なにもしないときの減算値
CP_COST_ESCAPE = 100 # 「逃げる」時*全員の*の減算値
CP_COST_SKILL = [0,300,300,400,300,300,300,300,400,300,300,400,300,300,400,300,300,400,300,300,400,300,300,400,300,300,400,300,300,400,400,550,250,350,250,350,250,350,250,350,250,350,250,350,250,350,250,350,250,350,250,350,400,400,400,400,200,300,400,500,200,300,400,500,200,300,400,500,200,300,400,500,200,300,400,500,200,300,400,500,900]
end

#==============================================================================
# â–  RPG::Skill
#==============================================================================
module RPG
class Skill
def name
name = @name.split(/,/)[0]
return name != nil ? name : ''
end
def delay
name = @name.split(/,/)[1].to_i
return name != nil ? name : CP_COST_DELAY
end
def spell
name = @name.split(/,/)[2].to_i
return name != nil ? name : CP_COST_SPELL
end
end
end

#==============================================================================
# â–  Window_CTB
#------------------------------------------------------------------------------
# キャラの行動順を表示するウィンドウです。
#==============================================================================
class Window_CTB < Window_Base
# 詠唱ステートのID読み込み
include CTB_Define
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
def initialize(avg)
super(0, 320, 160, 160)
self.contents = Bitmap.new(self.width - 32, self.height - 32)
# 平均AGI算出 
@agi_avg = avg
# キャラ名列
@names = []
end
#--------------------------------------------------------------------------
# ● リフレッシュ
#--------------------------------------------------------------------------
def refresh
# 再描画開始
self.contents.clear
self.contents.font.name = "Tahoma"
self.contents.font.size = 20
self.contents.font.color = system_color
self.contents.font.size = 16
self.contents.draw_text(0, 0, 100, 17, "Turn Ratio")
# キャラ名列
@names = []
# 攻撃コマンド後の全員のCPを先読み
get_cps
# cpの値でソート
@names.sort!{|a,b| b[0] <=> a[0] } 
h = 0
self.contents.font.size = 17
for i in 0...6
@nam = @names[i]
if @nam == nil
break
end
x = 4
y = 18 * h + 17
if @nam[0] >= 500 # 500より大きければ白文字。
if @nam[2] == true
self.contents.font.color = Color.new(230, 255, 255, 255)
else
self.contents.font.name = "Tahoma"
self.contents.font.size = 12
self.contents.font.color = normal_color
end
else
if @nam[2] == true
self.contents.font.color = Color.new(190, 225, 225, 255)
else
self.contents.font.color = disabled_color
end
end
self.contents.draw_text(x, y, 128, 18, @nam[1])
h += 1
end
end
#--------------------------------------------------------------------------
# ● 行動後のCPの取得
#--------------------------------------------------------------------------
def get_cps
# メンバー全員の行動後のCPと名前を@namesに格納
i = 0
while @names.size < 15
for member in $game_party.actors + $game_troop.enemies
next if member.dead? or !member.exist?
cp = CP_COST_ATTACK * @agi_avg / member.agi # 攻撃時に減算するCP先読み
if i == 1 and member.current_action.kind == 1
skill = $data_skills[member.current_action.skill_id]
cp = CP_COST_SKILL[skill.id] * @agi_avg / member.agi
end
cp = member.cp - (cp * i)
if i == 0
spell = member.state?(SPELL_STATE_ID)
else
spell = false
end
@names.push([cp, member.name, spell])
end
i += 1
end
end
#--------------------------------------------------------------------------
# ● CTBウィンドウの中身が空かどうかを確認する
#--------------------------------------------------------------------------
def names_empty
if @names == []
return true
else
return false
end
end
end

#==============================================================================
# â–  Window_CTB_All
#------------------------------------------------------------------------------
# キャラの行動順を表示するウィンドウの拡大版です。
#==============================================================================
class Window_CTB_All < Window_Base
# 詠唱ステートのID読み込み
include CTB_Define
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
def initialize(avg)
super(0, 0, 160, 480)
self.contents = Bitmap.new(self.width - 32, self.height - 32)
self.contents.font.name = "Tahoma"
self.contents.font.size = 12
# 平均AGI算出 
@agi_avg = avg
# キャラ名列
@names = []
# 攻撃コマンド後の全員のCPを先読み
get_init_cps
# cpの値でソート
@names.sort!{|a,b| b[0] <=> a[0] }
end
#--------------------------------------------------------------------------
# ● リフレッシュ
#--------------------------------------------------------------------------
def refresh(id)
# 再描画開始
self.contents.clear
self.contents.font.name = "Tahoma"
self.contents.font.size = 20
self.contents.font.color = system_color
self.contents.font.size = 18
self.contents.draw_text(0, 0, 100, 20, "Turn Ratio")
h = 0
self.contents.font.size = 19
for i in id-1...[id+18,50].min
@nam = @names[i]
if @nam == nil
break
end
x = 4
y = 22 * h + 20
if @nam[0] >= 500 # 500より大きければ白文字。
if @nam[2] == true
self.contents.font.color = Color.new(230, 255, 255, 255)
else
self.contents.font.color = normal_color
end
else
if @nam[2] == true
self.contents.font.color = Color.new(190, 225, 225, 255)
else
self.contents.font.color = disabled_color
end
end
self.contents.font.name = "Tahoma"
self.contents.font.size = $fontsize
self.contents.draw_text(x, y, 32, 22, (i+1).to_s)
self.contents.draw_text(x+32, y, 128, 22, @nam[1])
h += 1
end
end
#--------------------------------------------------------------------------
# ● 行動後のCPの取得
#--------------------------------------------------------------------------
def get_init_cps
# メンバー全員の行動後のCPと名前を@namesに格納
i = 0
while @names.size < 75
for member in $game_party.actors + $game_troop.enemies
next if member.dead? or !member.exist?
cp = CP_COST_ATTACK * @agi_avg / member.agi # 攻撃時に減算するCP先読み
if i == 1 and member.current_action.kind == 1
@skill = $data_skills[@active_battler.current_action.skill_id]
skill = $data_skills[member.current_action.skill_id]
cp = CP_COST_SKILL[skill.id] * @agi_avg / member.agi
end
cp = member.cp - (cp * i)
if i == 0
spell = member.state?(SPELL_STATE_ID)
else
spell = false
end
@names.push([cp, member.name, spell])
end
i += 1
end
end
#--------------------------------------------------------------------------
# ● CTBウィンドウの中身が空かどうかを確認する
#--------------------------------------------------------------------------
def names_full(id)
if @names[id] == nil
return false
end
return true
end
end
#==============================================================================
# ■ Window_PartyCommand(座標がおかしくなるので、全部再定義しちゃってます)
#==============================================================================
class Window_PartyCommand < Window_Selectable
#--------------------------------------------------------------------------
# ● オブジェクト初期化(再定義)
#--------------------------------------------------------------------------
def initialize
super(0, 0, 640, 64)
self.contents = Bitmap.new(width - 32, height - 32)
self.back_opacity = 160
# コマンド追加
@commands = ["Battle", "Special", "Escape"]
@item_max = 3
@column_max = 3
draw_item(0, normal_color)
draw_item(1, normal_color) 
draw_item(2, $game_temp.battle_can_escape ? normal_color : disabled_color)
self.active = false
self.visible = false
self.index = 0
end
#--------------------------------------------------------------------------
# ● 項目の描画(再定義)
# index : 項目番号
# color : 文字色
#--------------------------------------------------------------------------
def draw_item(index, color)
self.contents.font.color = color
rect = Rect.new(80 + index * 160 + 4, 0, 128 - 10, 32)
self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
self.contents.draw_text(rect, @commands[index], 1)
end
#--------------------------------------------------------------------------
# ● カーソルの矩形更新(再定義)
#--------------------------------------------------------------------------
def update_cursor_rect
self.cursor_rect.set(80 + index * 160, 0, 128, 32)
end
end
#==============================================================================
# â–  Window_BattleStatus
#==============================================================================
class Window_BattleStatus < Window_Base
#--------------------------------------------------------------------------
# ● オブジェクト初期化(再定義)(微妙に座標調整)
#--------------------------------------------------------------------------
def initialize
super(160, 320, 480, 160)
self.contents = Bitmap.new(width - 32, height - 32)
@level_up_flags = [false, false, false, false]
refresh
end
#--------------------------------------------------------------------------
# ● リフレッシュ(再定義)(微妙に座標調整)
#--------------------------------------------------------------------------
def refresh
self.contents.clear
self.contents.font.name = "Tahoma"
self.contents.font.size = 19
@item_max = $game_party.actors.size
for i in 0...$game_party.actors.size
actor = $game_party.actors[i]
actor_x = i * 115 + 9
draw_actor_name(actor, actor_x, 0)
draw_actor_hp(actor, actor_x, 31, 90)
draw_actor_sp(actor, actor_x, 65, 90)
if @level_up_flags[i]
self.contents.font.color = normal_color
self.contents.draw_text(actor_x, 99, 120, 32, "Level Up!")
else
draw_actor_state(actor, actor_x, 99)
end
end
end
end

#==============================================================================
# â–  Game_Battler
#==============================================================================
class Game_Battler
# 詠唱ステートのID読み込み
include CTB_Define

attr_accessor :now_guarding # 現在防御中フラグ
attr_accessor :cp # 現在CP
#--------------------------------------------------------------------------
# ● コマンド入力可能判定
#--------------------------------------------------------------------------
alias ctb_sys_inputable? inputable?
def inputable?
bool = ctb_sys_inputable?
return false if state?(SPELL_STATE_ID)
return false if bool == false
return false if @cp < 500
return true
end
end

#==============================================================================
# â–  Game_Actor
#==============================================================================
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
# ● セットアップ
#--------------------------------------------------------------------------
alias ctb_sys_setup setup
def setup(actor_id)
ctb_sys_setup(actor_id)
@cp = 0
@now_guarding = false
end
#--------------------------------------------------------------------------
# ● バトル画面 X 座標の取得(再定義)
#--------------------------------------------------------------------------
def screen_x
# パーティ内の並び順から X 座標を計算して返す
if self.index != nil
return self.index * 115 + 215
else
return 0
end
end
end

#==============================================================================
# â–  Game_Enemy
#==============================================================================
class Game_Enemy < Game_Battler
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
alias ctb_sys_initialize initialize
def initialize(troop_id, member_index)
ctb_sys_initialize(troop_id, member_index)
@cp = 0
@now_guarding = false
end
end

#==============================================================================
# â–  Game_BattleAction
#==============================================================================
class Game_BattleAction
#--------------------------------------------------------------------------
# ● 公開インスタンス変数
#--------------------------------------------------------------------------
attr_accessor :spell # 詠唱中か否か
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
alias ctb_sys_initialize initialize
def initialize
@spell = false # spellをfalseにする
ctb_sys_initialize
end

#--------------------------------------------------------------------------
# ● クリア
#--------------------------------------------------------------------------
alias ctb_sys_clear clear
def clear
# spell がtrueならば実行しない
return if @spell
ctb_sys_clear
end
end

#==============================================================================
# â–  Scene_Battle
#==============================================================================
class Scene_Battle
# 詠唱ステートのID読み込み
include CTB_Define

#--------------------------------------------------------------------------
# ● メイン処理 (再定義)
#--------------------------------------------------------------------------
def main
# 戦闘用の各種一時データを初期化
$game_temp.in_battle = true
$game_temp.battle_turn = 0
$game_temp.battle_event_flags.clear
$game_temp.battle_abort = false
$game_temp.battle_main_phase = false
$game_temp.battleback_name = $game_map.battleback_name
$game_temp.forcing_battler = nil
# バトルイベント用インタプリタを初期化
$game_system.battle_interpreter.setup(nil, 0)
# トループを準備
@troop_id = $game_temp.battle_troop_id
$game_troop.setup(@troop_id) 
# アクターコマンドウィンドウを作成
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(115, [s1, s2, s3, s4])
@actor_command_window.y = 160
@actor_command_window.back_opacity = 0
@actor_command_window.active = false
@actor_command_window.visible = false
# その他のウィンドウを作成
@party_command_window = Window_PartyCommand.new
@help_window = Window_Help.new
@help_window.back_opacity = 0
@help_window.visible = false
@status_window = Window_BattleStatus.new
@message_window = Window_Message.new

### ココから追加部分
# 全員のすばやさの平均を割り出す
@avg = read_avg
# CTB用Windowを作成
@ctb_window = Window_CTB.new(@avg)
# 全員の初期CPを代入
first_cp
### ココまで追加部分

# スプライトセットを作成
@spriteset = Spriteset_Battle.new
# ウェイトカウントを初期化
@wait_count = 0
# トランジション実行
if $data_system.battle_transition == ""
Graphics.transition(20)
else
Graphics.transition(40, "Graphics/Transitions/" +
$data_system.battle_transition)
end

# プレバトルフェーズ開始
start_phase1
# メインループ
loop do
# ゲーム画面を更新
Graphics.update
# 入力情報を更新
Input.update
# フレーム更新
update
# 画面が切り替わったらループを中断
if $scene != self
break
end
end
# マップをリフレッシュ
$game_map.refresh
# トランジション準備
Graphics.freeze
# ウィンドウを解放
@actor_command_window.dispose
@party_command_window.dispose
@help_window.dispose
@status_window.dispose
@message_window.dispose
### ココから追加部分
@ctb_window.dispose
if @skill_window != nil
@skill_window.dispose
end
### ココまで追加部分
if @skill_window != nil
@skill_window.dispose
end
if @item_window != nil
@item_window.dispose
end
if @result_window != nil
@result_window.dispose
end
# スプライトセットを解放
@spriteset.dispose
# タイトル画面に切り替え中の場合
if $scene.is_a?(Scene_Title)
# 画面をフェードアウト
Graphics.transition
Graphics.freeze
end
# 戦闘テストからゲームオーバー画面以外に切り替え中の場合
if $BTEST and not $scene.is_a?(Scene_Gameover)
$scene = nil
end
end
#--------------------------------------------------------------------------
# ● フレーム更新(再定義)
#--------------------------------------------------------------------------
def update
# バトルイベント実行中の場合
if $game_system.battle_interpreter.running?
# インタプリタを更新
$game_system.battle_interpreter.update
# アクションを強制されているバトラーが存在しない場合
if $game_temp.forcing_battler == nil
# バトルイベントの実行が終わった場合
unless $game_system.battle_interpreter.running?
# 戦闘継続の場合、バトルイベントのセットアップを再実行
unless judge
setup_battle_event
end
end
# アフターバトルフェーズでなければ
if @phase != 5
# ステータスウィンドウをリフレッシュ
@status_window.refresh
end
end
end
# システム (タイマー)、画面を更新
$game_system.update
$game_screen.update
# タイマーが 0 になった場合
if $game_system.timer_working and $game_system.timer == 0
# バトル中断
$game_temp.battle_abort = true
end

# ココから追加
# CPæ›´æ–°
if @phase != 4
cp_countup
end
@ctb_window.update
# CTB ウィンドウに名前が表示されていない場合(戦闘開始時)はrefresh
@ctb_window.refresh if @ctb_window.names_empty
# ココまで追加

# ウィンドウを更新
@help_window.update
@party_command_window.update
@actor_command_window.update
@status_window.update
@message_window.update
# スプライトセットを更新
@spriteset.update
# トランジション処理中の場合
if $game_temp.transition_processing
# トランジション処理中フラグをクリア
$game_temp.transition_processing = false
# トランジション実行
if $game_temp.transition_name == ""
Graphics.transition(20)
else
Graphics.transition(40, "Graphics/Transitions/" +
$game_temp.transition_name)
end
end
# メッセージウィンドウ表示中の場合
if $game_temp.message_window_showing
return
end
# エフェクト表示中の場合
if @spriteset.effect?
return
end
# ゲームオーバーの場合
if $game_temp.gameover
# ゲームオーバー画面に切り替え
$scene = Scene_Gameover.new
return
end
# タイトル画面に戻す場合
if $game_temp.to_title
# タイトル画面に切り替え
$scene = Scene_Title.new
return
end
# バトル中断の場合
if $game_temp.battle_abort
# バトル開始前の BGM に戻す
$game_system.bgm_play($game_temp.map_bgm)
# バトル終了
battle_end(1)
return
end
# ウェイト中の場合
if @wait_count > 0
# ウェイトカウントを減らす
@wait_count -= 1
return
end
# アクションを強制されているバトラーが存在せず、
# かつバトルイベントが実行中の場合
if $game_temp.forcing_battler == nil and
$game_system.battle_interpreter.running?
return
end
# フェーズによって分岐
case @phase
when 1 # プレバトルフェーズ
update_phase1
when 2 # パーティコマンドフェーズ
update_phase2
when 3 # アクターコマンドフェーズ
update_phase3
when 4 # メインフェーズ
update_phase4
when 5 # アフターバトルフェーズ
update_phase5
# ココから追加
when 6 # 全行動順確認フェーズ(追加部分)
update_ctb_all
end
end
#--------------------------------------------------------------------------
# ● パーティコマンドフェーズ開始(再定義)
#--------------------------------------------------------------------------
def start_phase2
# フェーズ 2 に移行
@phase = 2
# アクターを非選択状態に設定
@actor_index = -1
@active_battler = nil
# ココから変更
# アクターコマンドウィンドウを無効化
@actor_command_window.active = false
@actor_command_window.visible = false
# ココまで変更
# メインフェーズフラグをクリア
$game_temp.battle_main_phase = false
# パーティ全員のアクションをクリア
$game_party.clear_actions 
# コマンド入力不可能な場合
unless $game_party.inputable?
# メインフェーズ開始
start_phase4
end
# ココから変更
# パーティーコマンドがアクティブならばパーティーコマンドフェーズへ
if @party_command_window.active != true
start_phase3
else
update_phase2
end
# ココまで変更
end
#--------------------------------------------------------------------------
# ● フレーム更新 (パーティコマンドフェーズ)(再定義)
#--------------------------------------------------------------------------
def update_phase2
# 全部変更してます
# C ボタンが押された場合
if Input.trigger?(Input::C)
# パーティコマンドウィンドウのカーソル位置で分岐
case @party_command_window.index
when 0 # 戦う
# 決定 SE を演奏
$game_system.se_play($data_system.decision_se)
# アクターコマンドフェーズ開始
start_phase3
when 1 # CTBWindow2
# 決定 SE を演奏
$game_system.se_play($data_system.decision_se)
# CTB表示開始
start_phase2_CTB
when 2 # 逃げる
# 逃走可能ではない場合
if $game_temp.battle_can_escape == false
# ブザー SE を演奏
$game_system.se_play($data_system.buzzer_se)
return
end
# 決定 SE を演奏
$game_system.se_play($data_system.decision_se)
# 逃走処理
update_phase2_escape
end
return
elsif Input.trigger?(Input::B)
# 決定 SE を演奏
$game_system.se_play($data_system.cancel_se)
# アクターコマンドフェーズ開始
start_phase3
end
end
#--------------------------------------------------------------------------
# ● フレーム更新 (パーティコマンドフェーズ : 逃げる)
#--------------------------------------------------------------------------
alias ctb_sys_update_phase2_escape update_phase2_escape
def update_phase2_escape
# CP消費 (全員)
for actor in $game_party.actors
if actor.exist?
actor.cp -= CP_COST_ESCAPE * @avg / actor.agi
end
end
ctb_sys_update_phase2_escape
end
#--------------------------------------------------------------------------
# ● アクターコマンドウィンドウのセットアップ
#--------------------------------------------------------------------------
alias ctb_sys_phase3_setup_command_window phase3_setup_command_window
def phase3_setup_command_window
ctb_sys_phase3_setup_command_window
# ガードフラグをfalseにする
@active_battler.now_guarding = false
# アクターコマンドウィンドウの位置を再設定(右へ160移動)
@actor_command_window.x = @actor_index * 105 + 160
end
#--------------------------------------------------------------------------
# ● フレーム更新 (アクターコマンドフェーズ : 基本コマンド)
#--------------------------------------------------------------------------
alias ctb_sys_update_phase3_basic_command update_phase3_basic_command
def update_phase3_basic_command
# X ボタンが押された場合
if Input.trigger?(Input::X)
# 決定 SE を演奏
$game_system.se_play($data_system.decision_se)
# パーティーコマンド呼び出し
@party_command_window.active = true
@party_command_window.visible = true 
start_phase2 
else
ctb_sys_update_phase3_basic_command
end
end
#--------------------------------------------------------------------------
# ● 行動順序作成 (再定義)
#--------------------------------------------------------------------------
def make_action_orders
# CP500以上のバトラーはpushしないようにした。
# 配列 @action_battlers を初期化
@action_battlers = []
# CP500以上のエネミーを配列 @action_battlers に追加
for enemy in $game_troop.enemies
if enemy.cp >= 500
@action_battlers.push(enemy)
end
end
# CP500以上のアクターを配列 @action_battlers に追加
for actor in $game_party.actors
if actor.cp >= 500
@action_battlers.push(actor)
end
end
# 全員のアクションスピードを決定
for battler in @action_battlers
battler.make_action_speed
end
# アクションスピードの大きい順に並び替え
@action_battlers.sort! {|a,b|
b.current_action.speed - a.current_action.speed }
end
#--------------------------------------------------------------------------
# ● フレーム更新 (メインフェーズ ステップ 1 : アクション準備)
#--------------------------------------------------------------------------
alias ctb_sys_update_phase4_step1 update_phase4_step1
def update_phase4_step1
# CTBリフレッシュ
@ctb_window.refresh
ctb_sys_update_phase4_step1
end
#--------------------------------------------------------------------------
# ● フレーム更新 (メインフェーズ ステップ 2 : アクション開始)(再定義)
#--------------------------------------------------------------------------
def update_phase4_step2
# 強制アクションでなければ
unless @active_battler.current_action.forcing
# 制約が [敵を通常攻撃する] か [味方を通常攻撃する] の場合
if @active_battler.restriction == 2 or @active_battler.restriction == 3
# アクションに攻撃を設定
@active_battler.current_action.kind = 0
@active_battler.current_action.basic = 0
end
# 制約が [行動できない] の場合
if @active_battler.restriction == 4
# アクション強制対象のバトラーをクリア
$game_temp.forcing_battler = nil
if @active_battler.cp >= 500
# ステート自然解除
@active_battler.remove_states_auto
# CP消費 (行動できない場合は何もしない場合と同じ) ココ追加
@active_battler.cp -= CP_COST_NOTHING * @avg / @active_battler.agi
# cpをカウントアップ
cp_countup
end
# ステップ 1 に移行
@phase4_step = 1
return
end
end
# 対象バトラーをクリア
@target_battlers = []
# アクションの種別で分岐
case @active_battler.current_action.kind
when 0 # 基本
make_basic_action_result
when 1 # スキル
make_skill_action_result
when 2 # アイテム
make_item_action_result
end
# ステップ 3 に移行
if @phase4_step == 2
@phase4_step = 3
end
end
#--------------------------------------------------------------------------
# ● 基本アクション 結果作成
#--------------------------------------------------------------------------
alias ctb_sys_make_basic_action_result make_basic_action_result
def make_basic_action_result
# 攻撃の場合
if @active_battler.current_action.basic == 0
@active_battler.cp -= CP_COST_ATTACK * @avg / @active_battler.agi
end
# 防御の場合
if @active_battler.current_action.basic == 1
# CP消費
@active_battler.cp -= CP_COST_GUARD * @avg / @active_battler.agi
end
# 敵の逃げるの場合
if @active_battler.is_a?(Game_Enemy) and
@active_battler.current_action.basic == 2
# CP消費
@active_battler.cp -= CP_COST_ESCAPE * @avg / @active_battler.agi
end
# 何もしないの場合
if @active_battler.current_action.basic == 3
# CP消費
@active_battler.cp -= CP_COST_NOTHING * @avg / @active_battler.agi
# アクション強制対象のバトラーをクリア
$game_temp.forcing_battler = nil
# cpをカウントアップ
cp_countup
# ステップ 1 に移行
@phase4_step = 1
return
end
# 呼び戻し
ctb_sys_make_basic_action_result
end
#--------------------------------------------------------------------------
# ● スキルアクション 結果作成(再定義)
#--------------------------------------------------------------------------
def make_skill_action_result
# スキルを取得
@skill = $data_skills[@active_battler.current_action.skill_id]
skill = $data_skills[@active_battler.current_action.skill_id]
# ステータスウィンドウをリフレッシュ
@status_window.refresh
@ctb_window.refresh
# ヘルプウィンドウにスキル名を表示
@help_window.set_text(@skill.name, 1)
# 詠唱中の場合
if @active_battler.state?(SPELL_STATE_ID)
# ステート「詠唱」を削除
@active_battler.remove_state(SPELL_STATE_ID)
@active_battler.current_action.spell = false
else
# SP 消費
@active_battler.sp -= @skill.sp_cost
# SkillのSpell値が1以上の場合
if @skill.spell > 0
# CP 消費 skill.spellの減算
@active_battler.cp -= CP_COST_SKILL[skill.id] * @avg / @active_battler.agi
# ステート「詠唱」を付
@active_battler.add_state(SPELL_STATE_ID)
@active_battler.current_action.spell = true
end
end
# ステート「詠唱」がなければ効果実行
unless @active_battler.state?(SPELL_STATE_ID)
# SP 消費を戻す。
@active_battler.sp += @skill.sp_cost
# 強制アクションでなければ
unless @active_battler.current_action.forcing
# SP 切れなどで使用できなくなった場合
unless @active_battler.skill_can_use?(@skill.id)
# アクション強制対象のバトラーをクリア
$game_temp.forcing_battler = nil
# ステップ 1 に移行
@phase4_step = 1
return
end
end
# SP をまた消費
@active_battler.sp -= @skill.sp_cost
# CP 消費 skill.delayの減算
@active_battler.cp -= CP_COST_SKILL[skill.id] * @avg / @active_battler.agi
# アニメーション ID を設定
@animation1_id = @skill.animation1_id
@animation2_id = @skill.animation2_id
# コモンイベント ID を設定
@common_event_id = @skill.common_event_id
# 対象側バトラーを設定
set_target_battlers(@skill.scope)
# スキルの効果を適用
for target in @target_battlers
target.skill_effect(@active_battler, @skill)
end
end
end
#--------------------------------------------------------------------------
# ● アイテムアクション 結果作成
#--------------------------------------------------------------------------
def make_item_action_result
alias ctb_sys_make_item_action_result make_item_action_result
ctb_sys_make_item_action_result
# CP 消費
@active_battler.cp -= CP_COST_ITEM * @avg / @active_battler.agi
end
#--------------------------------------------------------------------------
# ● フレーム更新 (メインフェーズ ステップ 6 : リフレッシュ)
#--------------------------------------------------------------------------
alias ctb_sys_update_phase4_step6 update_phase4_step6
def update_phase4_step6
ctb_sys_update_phase4_step6
# cpをカウントアップ
cp_countup
end
#--------------------------------------------------------------------------
# ● すばやさ平均割り出し
#--------------------------------------------------------------------------
def read_avg
temp = 0
for member in $game_party.actors + $game_troop.enemies
temp += member.agi
end
temp /= $game_troop.enemies.size + $game_party.actors.size
return temp
end 
#--------------------------------------------------------------------------
# ● 全員の初期CPを決&#2345
 
well, i looked at the coding, and tested them out in a test game... they don't need to be merged. I did edit the code so the side view with the ffx bar is a little more compact and set up properly, with all the player battlers on the right side, not spread all over the right three fourths of the screen.

Just paste the FFX Bar under the CBS code, and it should work properly.

Code:
#########################################################################
# FF10にあった、カウントタイムバトル的なモノです。
#
# ☆良くあるATB(ゲージがたまると行動可能になるやつね)との違い
# ・行動順を割り出す計算式が変わっています。
# ATBでは毎フレームすばやさに応じた値が足されていき、
# 行動を終了したら規定の値(ほとんどの方が0だと思いますが)になります。
# それに対して、この似非CTBシステム(以下CTB)では、
# 全員のゲージが同じスピードで上昇し、
# 行動を終了したあと、素早さに応じた値を減算します。
# このため、行動順がATBと微妙に変化するかと思われます。
#
# ・行動順の表示が名前の羅列になってます。
# この名前は、ゲージのように動くことはなく、
# 現在の行動者含めて五人先の人までを名前で表示しています。
# なお、行動先読みには「全ての行動が物理攻撃だった時」を前提にしてます。
# そのため、スキルやアイテムなどを使ってしまうと、その分微妙にズレます。
#
# ☆制約
# ・パーティーが三人
# 行動順を表示する部分どこにあっても邪魔なので、
# 結局パーティー表示部分の左端を削りました。
#
# ・「何もしない」の動作が不審
# 何の前触れもなくスキップしてしまうように設定していますので、
# 見かけ上は無視されたように見えてしまいます。
#
# ☆特殊操作
# ・パーティーコマンド呼び出し
# アクターのコマンドが表示されている時にXボタンを押してください。
# パーティーコマンドが呼び出されます。
# 戦闘再開はそのまま、戦闘再開。
# 行動順表示は、50人先まで行動順を表示します。
# あまり使えないかもしれませんが。
# 一応、L、Rによるページ送り機能などもつけてます。
# 逃走は、「全員のCPを一定値減算したのち、逃走する」という形式にしてます。
#
# ☆スキルについて
# 「スキル名,ディレイ値,詠唱時間」とスキル名を書き換えてください。
# ディレイ値は「その行動が終了した後に減算するCPの基準となる値」です。
# たとえば通常攻撃はこれがCP_COST_ATTACKで定義されています。
# 何も書いていない場合の値も定義可能です。
# 詠唱時間は「そのスキルが発動するまでの時間」です。
# 詠唱中はステート「詠唱」が付加されます。
# 攻撃の場合はもちろんこの詠唱時間は0ですね。
# なので、こんな感じで↓
# 「クイックカット,120,0」
# これでCP_COST_ATTACKを120以上にしておけば、
# 通常攻撃よりも早く次の出番がきますね。
# 「パワフルスイング,100,120」
# これだとスキルを選択してから発動するまでのタイムラグが120ありますね。
#########################################################################

#==============================================================================
# ■ 初期定義
#==============================================================================
module RPG
class Skill
CP_COST_DELAY = 300 # スキルで値を何も書いていない場合のディレイ値
CP_COST_SPELL = 300 # スキルで値を何も書いていない場合の詠唱時間
end
end

module CTB_Define
# 詠唱ステートのID
SPELL_STATE_ID = 300
# 消費CP
# 消費CPの算出方法は「消費CP(ここで定義)?すばやさ平均?すばやさ」です。
CP_COST_ITEM = 200 # アイテムを使用したときの減算値
CP_COST_ATTACK = 300 # 攻撃したときの減算値
CP_COST_GUARD = 200 # 防御したときの減算値
CP_COST_NOTHING = 100 # なにもしないときの減算値
CP_COST_ESCAPE = 100 # 「逃げる」時*全員の*の減算値
CP_COST_SKILL = [0,300,300,400,300,300,300,300,400,300,300,400,300,300,400,300,300,400,300,300,400,300,300,400,300,300,400,300,300,400,400,550,250,350,250,350,250,350,250,350,250,350,250,350,250,350,250,350,250,350,250,350,400,400,400,400,200,300,400,500,200,300,400,500,200,300,400,500,200,300,400,500,200,300,400,500,200,300,400,500,900]
end

#==============================================================================
# â–  RPG::Skill
#==============================================================================
module RPG
class Skill
def name
name = @name.split(/,/)[0]
return name != nil ? name : ''
end
def delay
name = @name.split(/,/)[1].to_i
return name != nil ? name : CP_COST_DELAY
end
def spell
name = @name.split(/,/)[2].to_i
return name != nil ? name : CP_COST_SPELL
end
end
end

#==============================================================================
# â–  Window_CTB
#------------------------------------------------------------------------------
# キャラの行動順を表示するウィンドウです。
#==============================================================================
class Window_CTB < Window_Base
# 詠唱ステートのID読み込み
include CTB_Define
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
def initialize(avg)
super(0, 320, 160, 160)
self.contents = Bitmap.new(self.width - 32, self.height - 32)
# 平均AGI算出 
@agi_avg = avg
# キャラ名列
@names = []
end
#--------------------------------------------------------------------------
# ● リフレッシュ
#--------------------------------------------------------------------------
def refresh
# 再描画開始
self.contents.clear
self.contents.font.name = "Tahoma"
self.contents.font.size = 20
self.contents.font.color = system_color
self.contents.font.size = 16
self.contents.draw_text(0, 0, 100, 17, "Turn Ratio")
# キャラ名列
@names = []
# 攻撃コマンド後の全員のCPを先読み
get_cps
# cpの値でソート
@names.sort!{|a,b| b[0] <=> a[0] } 
h = 0
self.contents.font.size = 17
for i in 0...6
@nam = @names[i]
if @nam == nil
break
end
x = 4
y = 18 * h + 17
if @nam[0] >= 500 # 500より大きければ白文字。
if @nam[2] == true
self.contents.font.color = Color.new(230, 255, 255, 255)
else
self.contents.font.name = "Tahoma"
self.contents.font.size = 12
self.contents.font.color = normal_color
end
else
if @nam[2] == true
self.contents.font.color = Color.new(190, 225, 225, 255)
else
self.contents.font.color = disabled_color
end
end
self.contents.draw_text(x, y, 128, 18, @nam[1])
h += 1
end
end
#--------------------------------------------------------------------------
# ● 行動後のCPの取得
#--------------------------------------------------------------------------
def get_cps
# メンバー全員の行動後のCPと名前を@namesに格納
i = 0
while @names.size < 15
for member in $game_party.actors + $game_troop.enemies
next if member.dead? or !member.exist?
cp = CP_COST_ATTACK * @agi_avg / member.agi # 攻撃時に減算するCP先読み
if i == 1 and member.current_action.kind == 1
skill = $data_skills[member.current_action.skill_id]
cp = CP_COST_SKILL[skill.id] * @agi_avg / member.agi
end
cp = member.cp - (cp * i)
if i == 0
spell = member.state?(SPELL_STATE_ID)
else
spell = false
end
@names.push([cp, member.name, spell])
end
i += 1
end
end
#--------------------------------------------------------------------------
# ● CTBウィンドウの中身が空かどうかを確認する
#--------------------------------------------------------------------------
def names_empty
if @names == []
return true
else
return false
end
end
end

#==============================================================================
# â–  Window_CTB_All
#------------------------------------------------------------------------------
# キャラの行動順を表示するウィンドウの拡大版です。
#==============================================================================
class Window_CTB_All < Window_Base
# 詠唱ステートのID読み込み
include CTB_Define
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
def initialize(avg)
super(0, 0, 160, 480)
self.contents = Bitmap.new(self.width - 32, self.height - 32)
self.contents.font.name = "Tahoma"
self.contents.font.size = 12
# 平均AGI算出 
@agi_avg = avg
# キャラ名列
@names = []
# 攻撃コマンド後の全員のCPを先読み
get_init_cps
# cpの値でソート
@names.sort!{|a,b| b[0] <=> a[0] }
end
#--------------------------------------------------------------------------
# ● リフレッシュ
#--------------------------------------------------------------------------
def refresh(id)
# 再描画開始
self.contents.clear
self.contents.font.name = "Tahoma"
self.contents.font.size = 20
self.contents.font.color = system_color
self.contents.font.size = 18
self.contents.draw_text(0, 0, 100, 20, "Turn Ratio")
h = 0
self.contents.font.size = 19
for i in id-1...[id+18,50].min
@nam = @names[i]
if @nam == nil
break
end
x = 4
y = 22 * h + 20
if @nam[0] >= 500 # 500より大きければ白文字。
if @nam[2] == true
self.contents.font.color = Color.new(230, 255, 255, 255)
else
self.contents.font.color = normal_color
end
else
if @nam[2] == true
self.contents.font.color = Color.new(190, 225, 225, 255)
else
self.contents.font.color = disabled_color
end
end
self.contents.font.name = "Tahoma"
self.contents.font.size = $fontsize
self.contents.draw_text(x, y, 32, 22, (i+1).to_s)
self.contents.draw_text(x+32, y, 128, 22, @nam[1])
h += 1
end
end
#--------------------------------------------------------------------------
# ● 行動後のCPの取得
#--------------------------------------------------------------------------
def get_init_cps
# メンバー全員の行動後のCPと名前を@namesに格納
i = 0
while @names.size < 75
for member in $game_party.actors + $game_troop.enemies
next if member.dead? or !member.exist?
cp = CP_COST_ATTACK * @agi_avg / member.agi # 攻撃時に減算するCP先読み
if i == 1 and member.current_action.kind == 1
@skill = $data_skills[@active_battler.current_action.skill_id]
skill = $data_skills[member.current_action.skill_id]
cp = CP_COST_SKILL[skill.id] * @agi_avg / member.agi
end
cp = member.cp - (cp * i)
if i == 0
spell = member.state?(SPELL_STATE_ID)
else
spell = false
end
@names.push([cp, member.name, spell])
end
i += 1
end
end
#--------------------------------------------------------------------------
# ● CTBウィンドウの中身が空かどうかを確認する
#--------------------------------------------------------------------------
def names_full(id)
if @names[id] == nil
return false
end
return true
end
end
#==============================================================================
# ■ Window_PartyCommand(座標がおかしくなるので、全部再定義しちゃってます)
#==============================================================================
class Window_PartyCommand < Window_Selectable
#--------------------------------------------------------------------------
# ● オブジェクト初期化(再定義)
#--------------------------------------------------------------------------
def initialize
super(0, 0, 640, 64)
self.contents = Bitmap.new(width - 32, height - 32)
self.back_opacity = 160
# コマンド追加
@commands = ["Battle", "Special", "Escape"]
@item_max = 3
@column_max = 3
draw_item(0, normal_color)
draw_item(1, normal_color) 
draw_item(2, $game_temp.battle_can_escape ? normal_color : disabled_color)
self.active = false
self.visible = false
self.index = 0
end
#--------------------------------------------------------------------------
# ● 項目の描画(再定義)
# index : 項目番号
# color : 文字色
#--------------------------------------------------------------------------
def draw_item(index, color)
self.contents.font.color = color
rect = Rect.new(80 + index * 160 + 4, 0, 128 - 10, 32)
self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
self.contents.draw_text(rect, @commands[index], 1)
end
#--------------------------------------------------------------------------
# ● カーソルの矩形更新(再定義)
#--------------------------------------------------------------------------
def update_cursor_rect
self.cursor_rect.set(80 + index * 160, 0, 128, 32)
end
end
#==============================================================================
# â–  Window_BattleStatus
#==============================================================================
class Window_BattleStatus < Window_Base
#--------------------------------------------------------------------------
# ● オブジェクト初期化(再定義)(微妙に座標調整)
#--------------------------------------------------------------------------
def initialize
super(160, 320, 480, 160)
self.contents = Bitmap.new(width - 32, height - 32)
@level_up_flags = [false, false, false, false]
refresh
end
#--------------------------------------------------------------------------
# ● リフレッシュ(再定義)(微妙に座標調整)
#--------------------------------------------------------------------------
def refresh
self.contents.clear
self.contents.font.name = "Tahoma"
self.contents.font.size = 19
@item_max = $game_party.actors.size
for i in 0...$game_party.actors.size
actor = $game_party.actors[i]
actor_x = i * 115 + 9
draw_actor_name(actor, actor_x, 0)
draw_actor_hp(actor, actor_x, 31, 90)
draw_actor_sp(actor, actor_x, 65, 90)
if @level_up_flags[i]
self.contents.font.color = normal_color
self.contents.draw_text(actor_x, 99, 120, 32, "Level Up!")
else
draw_actor_state(actor, actor_x, 99)
end
end
end
end

#==============================================================================
# â–  Game_Battler
#==============================================================================
class Game_Battler
# 詠唱ステートのID読み込み
include CTB_Define

attr_accessor :now_guarding # 現在防御中フラグ
attr_accessor :cp # 現在CP
#--------------------------------------------------------------------------
# ● コマンド入力可能判定
#--------------------------------------------------------------------------
alias ctb_sys_inputable? inputable?
def inputable?
bool = ctb_sys_inputable?
return false if state?(SPELL_STATE_ID)
return false if bool == false
return false if @cp < 500
return true
end
end

#==============================================================================
# â–  Game_Actor
#==============================================================================
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
# ● セットアップ
#--------------------------------------------------------------------------
alias ctb_sys_setup setup
def setup(actor_id)
ctb_sys_setup(actor_id)
@cp = 0
@now_guarding = false
end
#--------------------------------------------------------------------------
# ● バトル画面 X 座標の取得(再定義)
#--------------------------------------------------------------------------
def screen_x
# パーティ内の並び順から X 座標を計算して返す
if self.index != nil
return self.index * 50 + 430
else
return 0
end
end
end

#==============================================================================
# â–  Game_Enemy
#==============================================================================
class Game_Enemy < Game_Battler
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
alias ctb_sys_initialize initialize
def initialize(troop_id, member_index)
ctb_sys_initialize(troop_id, member_index)
@cp = 0
@now_guarding = false
end
end

#==============================================================================
# â–  Game_BattleAction
#==============================================================================
class Game_BattleAction
#--------------------------------------------------------------------------
# ● 公開インスタンス変数
#--------------------------------------------------------------------------
attr_accessor :spell # 詠唱中か否か
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
alias ctb_sys_initialize initialize
def initialize
@spell = false # spellをfalseにする
ctb_sys_initialize
end

#--------------------------------------------------------------------------
# ● クリア
#--------------------------------------------------------------------------
alias ctb_sys_clear clear
def clear
# spell がtrueならば実行しない
return if @spell
ctb_sys_clear
end
end

#==============================================================================
# â–  Scene_Battle
#==============================================================================
class Scene_Battle
# 詠唱ステートのID読み込み
include CTB_Define

#--------------------------------------------------------------------------
# ● メイン処理 (再定義)
#--------------------------------------------------------------------------
def main
# 戦闘用の各種一時データを初期化
$game_temp.in_battle = true
$game_temp.battle_turn = 0
$game_temp.battle_event_flags.clear
$game_temp.battle_abort = false
$game_temp.battle_main_phase = false
$game_temp.battleback_name = $game_map.battleback_name
$game_temp.forcing_battler = nil
# バトルイベント用インタプリタを初期化
$game_system.battle_interpreter.setup(nil, 0)
# トループを準備
@troop_id = $game_temp.battle_troop_id
$game_troop.setup(@troop_id) 
# アクターコマンドウィンドウを作成
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(115, [s1, s2, s3, s4])
@actor_command_window.y = 160
@actor_command_window.back_opacity = 0
@actor_command_window.active = false
@actor_command_window.visible = false
# その他のウィンドウを作成
@party_command_window = Window_PartyCommand.new
@help_window = Window_Help.new
@help_window.back_opacity = 0
@help_window.visible = false
@status_window = Window_BattleStatus.new
@message_window = Window_Message.new

### ココから追加部分
# 全員のすばやさの平均を割り出す
@avg = read_avg
# CTB用Windowを作成
@ctb_window = Window_CTB.new(@avg)
# 全員の初期CPを代入
first_cp
### ココまで追加部分

# スプライトセットを作成
@spriteset = Spriteset_Battle.new
# ウェイトカウントを初期化
@wait_count = 0
# トランジション実行
if $data_system.battle_transition == ""
Graphics.transition(20)
else
Graphics.transition(40, "Graphics/Transitions/" +
$data_system.battle_transition)
end

# プレバトルフェーズ開始
start_phase1
# メインループ
loop do
# ゲーム画面を更新
Graphics.update
# 入力情報を更新
Input.update
# フレーム更新
update
# 画面が切り替わったらループを中断
if $scene != self
break
end
end
# マップをリフレッシュ
$game_map.refresh
# トランジション準備
Graphics.freeze
# ウィンドウを解放
@actor_command_window.dispose
@party_command_window.dispose
@help_window.dispose
@status_window.dispose
@message_window.dispose
### ココから追加部分
@ctb_window.dispose
if @skill_window != nil
@skill_window.dispose
end
### ココまで追加部分
if @skill_window != nil
@skill_window.dispose
end
if @item_window != nil
@item_window.dispose
end
if @result_window != nil
@result_window.dispose
end
# スプライトセットを解放
@spriteset.dispose
# タイトル画面に切り替え中の場合
if $scene.is_a?(Scene_Title)
# 画面をフェードアウト
Graphics.transition
Graphics.freeze
end
# 戦闘テストからゲームオーバー画面以外に切り替え中の場合
if $BTEST and not $scene.is_a?(Scene_Gameover)
$scene = nil
end
end
#--------------------------------------------------------------------------
# ● フレーム更新(再定義)
#--------------------------------------------------------------------------
def update
# バトルイベント実行中の場合
if $game_system.battle_interpreter.running?
# インタプリタを更新
$game_system.battle_interpreter.update
# アクションを強制されているバトラーが存在しない場合
if $game_temp.forcing_battler == nil
# バトルイベントの実行が終わった場合
unless $game_system.battle_interpreter.running?
# 戦闘継続の場合、バトルイベントのセットアップを再実行
unless judge
setup_battle_event
end
end
# アフターバトルフェーズでなければ
if @phase != 5
# ステータスウィンドウをリフレッシュ
@status_window.refresh
end
end
end
# システム (タイマー)、画面を更新
$game_system.update
$game_screen.update
# タイマーが 0 になった場合
if $game_system.timer_working and $game_system.timer == 0
# バトル中断
$game_temp.battle_abort = true
end

# ココから追加
# CPæ›´æ–°
if @phase != 4
cp_countup
end
@ctb_window.update
# CTB ウィンドウに名前が表示されていない場合(戦闘開始時)はrefresh
@ctb_window.refresh if @ctb_window.names_empty
# ココまで追加

# ウィンドウを更新
@help_window.update
@party_command_window.update
@actor_command_window.update
@status_window.update
@message_window.update
# スプライトセットを更新
@spriteset.update
# トランジション処理中の場合
if $game_temp.transition_processing
# トランジション処理中フラグをクリア
$game_temp.transition_processing = false
# トランジション実行
if $game_temp.transition_name == ""
Graphics.transition(20)
else
Graphics.transition(40, "Graphics/Transitions/" +
$game_temp.transition_name)
end
end
# メッセージウィンドウ表示中の場合
if $game_temp.message_window_showing
return
end
# エフェクト表示中の場合
if @spriteset.effect?
return
end
# ゲームオーバーの場合
if $game_temp.gameover
# ゲームオーバー画面に切り替え
$scene = Scene_Gameover.new
return
end
# タイトル画面に戻す場合
if $game_temp.to_title
# タイトル画面に切り替え
$scene = Scene_Title.new
return
end
# バトル中断の場合
if $game_temp.battle_abort
# バトル開始前の BGM に戻す
$game_system.bgm_play($game_temp.map_bgm)
# バトル終了
battle_end(1)
return
end
# ウェイト中の場合
if @wait_count > 0
# ウェイトカウントを減らす
@wait_count -= 1
return
end
# アクションを強制されているバトラーが存在せず、
# かつバトルイベントが実行中の場合
if $game_temp.forcing_battler == nil and
$game_system.battle_interpreter.running?
return
end
# フェーズによって分岐
case @phase
when 1 # プレバトルフェーズ
update_phase1
when 2 # パーティコマンドフェーズ
update_phase2
when 3 # アクターコマンドフェーズ
update_phase3
when 4 # メインフェーズ
update_phase4
when 5 # アフターバトルフェーズ
update_phase5
# ココから追加
when 6 # 全行動順確認フェーズ(追加部分)
update_ctb_all
end
end
#--------------------------------------------------------------------------
# ● パーティコマンドフェーズ開始(再定義)
#--------------------------------------------------------------------------
def start_phase2
# フェーズ 2 に移行
@phase = 2
# アクターを非選択状態に設定
@actor_index = -1
@active_battler = nil
# ココから変更
# アクターコマンドウィンドウを無効化
@actor_command_window.active = false
@actor_command_window.visible = false
# ココまで変更
# メインフェーズフラグをクリア
$game_temp.battle_main_phase = false
# パーティ全員のアクションをクリア
$game_party.clear_actions 
# コマンド入力不可能な場合
unless $game_party.inputable?
# メインフェーズ開始
start_phase4
end
# ココから変更
# パーティーコマンドがアクティブならばパーティーコマンドフェーズへ
if @party_command_window.active != true
start_phase3
else
update_phase2
end
# ココまで変更
end
#--------------------------------------------------------------------------
# ● フレーム更新 (パーティコマンドフェーズ)(再定義)
#--------------------------------------------------------------------------
def update_phase2
# 全部変更してます
# C ボタンが押された場合
if Input.trigger?(Input::C)
# パーティコマンドウィンドウのカーソル位置で分岐
case @party_command_window.index
when 0 # 戦う
# 決定 SE を演奏
$game_system.se_play($data_system.decision_se)
# アクターコマンドフェーズ開始
start_phase3
when 1 # CTBWindow2
# 決定 SE を演奏
$game_system.se_play($data_system.decision_se)
# CTB表示開始
start_phase2_CTB
when 2 # 逃げる
# 逃走可能ではない場合
if $game_temp.battle_can_escape == false
# ブザー SE を演奏
$game_system.se_play($data_system.buzzer_se)
return
end
# 決定 SE を演奏
$game_system.se_play($data_system.decision_se)
# 逃走処理
update_phase2_escape
end
return
elsif Input.trigger?(Input::B)
# 決定 SE を演奏
$game_system.se_play($data_system.cancel_se)
# アクターコマンドフェーズ開始
start_phase3
end
end
#--------------------------------------------------------------------------
# ● フレーム更新 (パーティコマンドフェーズ : 逃げる)
#--------------------------------------------------------------------------
alias ctb_sys_update_phase2_escape update_phase2_escape
def update_phase2_escape
# CP消費 (全員)
for actor in $game_party.actors
if actor.exist?
actor.cp -= CP_COST_ESCAPE * @avg / actor.agi
end
end
ctb_sys_update_phase2_escape
end
#--------------------------------------------------------------------------
# ● アクターコマンドウィンドウのセットアップ
#--------------------------------------------------------------------------
alias ctb_sys_phase3_setup_command_window phase3_setup_command_window
def phase3_setup_command_window
ctb_sys_phase3_setup_command_window
# ガードフラグをfalseにする
@active_battler.now_guarding = false
# アクターコマンドウィンドウの位置を再設定(右へ160移動)
@actor_command_window.x = @actor_index * 105 + 160
end
#--------------------------------------------------------------------------
# ● フレーム更新 (アクターコマンドフェーズ : 基本コマンド)
#--------------------------------------------------------------------------
alias ctb_sys_update_phase3_basic_command update_phase3_basic_command
def update_phase3_basic_command
# X ボタンが押された場合
if Input.trigger?(Input::X)
# 決定 SE を演奏
$game_system.se_play($data_system.decision_se)
# パーティーコマンド呼び出し
@party_command_window.active = true
@party_command_window.visible = true 
start_phase2 
else
ctb_sys_update_phase3_basic_command
end
end
#--------------------------------------------------------------------------
# ● 行動順序作成 (再定義)
#--------------------------------------------------------------------------
def make_action_orders
# CP500以上のバトラーはpushしないようにした。
# 配列 @action_battlers を初期化
@action_battlers = []
# CP500以上のエネミーを配列 @action_battlers に追加
for enemy in $game_troop.enemies
if enemy.cp >= 500
@action_battlers.push(enemy)
end
end
# CP500以上のアクターを配列 @action_battlers に追加
for actor in $game_party.actors
if actor.cp >= 500
@action_battlers.push(actor)
end
end
# 全員のアクションスピードを決定
for battler in @action_battlers
battler.make_action_speed
end
# アクションスピードの大きい順に並び替え
@action_battlers.sort! {|a,b|
b.current_action.speed - a.current_action.speed }
end
#--------------------------------------------------------------------------
# ● フレーム更新 (メインフェーズ ステップ 1 : アクション準備)
#--------------------------------------------------------------------------
alias ctb_sys_update_phase4_step1 update_phase4_step1
def update_phase4_step1
# CTBリフレッシュ
@ctb_window.refresh
ctb_sys_update_phase4_step1
end
#--------------------------------------------------------------------------
# ● フレーム更新 (メインフェーズ ステップ 2 : アクション開始)(再定義)
#--------------------------------------------------------------------------
def update_phase4_step2
# 強制アクションでなければ
unless @active_battler.current_action.forcing
# 制約が [敵を通常攻撃する] か [味方を通常攻撃する] の場合
if @active_battler.restriction == 2 or @active_battler.restriction == 3
# アクションに攻撃を設定
@active_battler.current_action.kind = 0
@active_battler.current_action.basic = 0
end
# 制約が [行動できない] の場合
if @active_battler.restriction == 4
# アクション強制対象のバトラーをクリア
$game_temp.forcing_battler = nil
if @active_battler.cp >= 500
# ステート自然解除
@active_battler.remove_states_auto
# CP消費 (行動できない場合は何もしない場合と同じ) ココ追加
@active_battler.cp -= CP_COST_NOTHING * @avg / @active_battler.agi
# cpをカウントアップ
cp_countup
end
# ステップ 1 に移行
@phase4_step = 1
return
end
end
# 対象バトラーをクリア
@target_battlers = []
# アクションの種別で分岐
case @active_battler.current_action.kind
when 0 # 基本
make_basic_action_result
when 1 # スキル
make_skill_action_result
when 2 # アイテム
make_item_action_result
end
# ステップ 3 に移行
if @phase4_step == 2
@phase4_step = 3
end
end
#--------------------------------------------------------------------------
# ● 基本アクション 結果作成
#--------------------------------------------------------------------------
alias ctb_sys_make_basic_action_result make_basic_action_result
def make_basic_action_result
# 攻撃の場合
if @active_battler.current_action.basic == 0
@active_battler.cp -= CP_COST_ATTACK * @avg / @active_battler.agi
end
# 防御の場合
if @active_battler.current_action.basic == 1
# CP消費
@active_battler.cp -= CP_COST_GUARD * @avg / @active_battler.agi
end
# 敵の逃げるの場合
if @active_battler.is_a?(Game_Enemy) and
@active_battler.current_action.basic == 2
# CP消費
@active_battler.cp -= CP_COST_ESCAPE * @avg / @active_battler.agi
end
# 何もしないの場合
if @active_battler.current_action.basic == 3
# CP消費
@active_battler.cp -= CP_COST_NOTHING * @avg / @active_battler.agi
# アクション強制対象のバトラーをクリア
$game_temp.forcing_battler = nil
# cpをカウントアップ
cp_countup
# ステップ 1 に移行
@phase4_step = 1
return
end
# 呼び戻し
ctb_sys_make_basic_action_result
end
#--------------------------------------------------------------------------
# ● スキルアクション 結果作成(再定義)
#--------------------------------------------------------------------------
def make_skill_action_result
# スキルを取得
@skill = $data_skills[@active_battler.current_action.skill_id]
skill = $data_skills[@active_battler.current_action.skill_id]
# ステータスウィンドウをリフレッシュ
@status_window.refresh
@ctb_window.refresh
# ヘルプウィンドウにスキル名を表示
@help_window.set_text(@skill.name, 1)
# 詠唱中の場合
if @active_battler.state?(SPELL_STATE_ID)
# ステート「詠唱」を削除
@active_battler.remove_state(SPELL_STATE_ID)
@active_battler.current_action.spell = false
else
# SP 消費
@active_battler.sp -= @skill.sp_cost
# SkillのSpell値が1以上の場合
if @skill.spell > 0
# CP 消費 skill.spellの減算
@active_battler.cp -= CP_COST_SKILL[skill.id] * @avg / @active_battler.agi
# ステート「詠唱」を付
@active_battler.add_state(SPELL_STATE_ID)
@active_battler.current_action.spell = true
end
end
# ステート「詠唱」がなければ効果実行
unless @active_battler.state?(SPELL_STATE_ID)
# SP 消費を戻す。
@active_battler.sp += @skill.sp_cost
# 強制アクションでなければ
unless @active_battler.current_action.forcing
# SP 切れなどで使用できなくなった場合
unless @active_battler.skill_can_use?(@skill.id)
# アクション強制対象のバトラーをクリア
$game_temp.forcing_battler = nil
# ステップ 1 に移行
@phase4_step = 1
return
end
end
# SP をまた消費
@active_battler.sp -= @skill.sp_cost
# CP 消費 skill.delayの減算
@active_battler.cp -= CP_COST_SKILL[skill.id] * @avg / @active_battler.agi
# アニメーション ID を設定
@animation1_id = @skill.animation1_id
@animation2_id = @skill.animation2_id
# コモンイベント ID を設定
@common_event_id = @skill.common_event_id
# 対象側バトラーを設定
set_target_battlers(@skill.scope)
# スキルの効果を適用
for target in @target_battlers
target.skill_effect(@active_battler, @skill)
end
end
end
#--------------------------------------------------------------------------
# ● アイテムアクション 結果作成
#--------------------------------------------------------------------------
def make_item_action_result
alias ctb_sys_make_item_action_result make_item_action_result
ctb_sys_make_item_action_result
# CP 消費
@active_battler.cp -= CP_COST_ITEM * @avg / @active_battler.agi
end
#--------------------------------------------------------------------------
# ● フレーム更新 (メインフェーズ ステップ 6 : リフレッシュ)
#--------------------------------------------------------------------------
alias ctb_sys_update_phase4_step6 update_phase4_step6
def update_phase4_step6
ctb_sys_update_phase4_step6
# cpをカウントアップ
cp_countup
end
#--------------------------------------------------------------------------
# ● すばやさ平均割り出し
#--------------------------------------------------------------------------
def read_avg
temp = 0
for member in $game_party.actors + $game_troop.enemies
temp += member.agi
end
temp /= $game_troop.enemies.size + $game_party.actors.size
return temp
end 
#--------------------------------------------------------------------------
# ● 全員の初期CPを決定
#--------------------------------------------------------------------------
def first_cp
for member in $game_party.actors + $game_troop.enemies
member.cp = [[5 * (rand(20) + 60) * member.agi / @avg, 0].max, 490].min
end
end
#----------------------------------------------------------------------------
# ● 次の行動者までCPをカウントアップ
#----------------------------------------------------------------------------
def cp_countup 
# 500 - cpの最小値を読み込む
cpmin = 500
edead = 0
for enemy in $game_troop.enemies
# 行動出来なければ無視
if enemy.dead? == true
edead +=1
enemy.cp = 0
next
end
cpmin = [cpmin, 500 - enemy.cp].min
end

# エネミーが全員死んでいればreturn
return if $game_troop.enemies.size == edead

for actor in $game_party.actors
# 行動出来なければ無視
if actor.dead? == true
actor.cp = 0
next
end
cpmin = [cpmin, 500 - actor.cp].min
end

# cpminが0ならばここで処理終了
return if cpmin <= 0

# 全員のCPをcpmin加算
for member in $game_party.actors + $game_troop.enemies
# 行動出来なければ無視
next if member.dead?
member.cp += cpmin
# cpが500より小さければ次へ
next if member.cp < 500
# ステート自然解除
member.remove_states_auto
# MP回復
plus = [member.maxsp * 5/ 100,1].max
member.sp = [member.sp + plus,member.maxsp].min
if member.slip_damage?
# スリップダメージ
member.slip_damage_effect
member.damage_pop = true
end
end
@status_window.refresh
end
#--------------------------------------------------------------------------
# ● フレーム更新 (パーティコマンドフェーズ : 行動順表示)
#--------------------------------------------------------------------------
def start_phase2_CTB
@party_command_window.active = false
@party_command_window.visible = false
# フェーズ 6 に移行
@phase = 6
@ctb_window.visible = false
@ctb_window_all = Window_CTB_All.new(@avg)
@ctb_window_all.update
@id = 1
@ctb_window_all.refresh(@id)
end 
#--------------------------------------------------------------------------
# ● フレーム更新 (パーティコマンドフェーズ : 行動順アップデート)
#--------------------------------------------------------------------------
def update_ctb_all
# 下 ボタンが押された場合
if Input.trigger?(Input::DOWN) or Input.repeat?(Input::DOWN)
if @id < 50
@id +=1
else
@id = 1
end
@ctb_window_all.refresh(@id)
# 上 ボタンが押された場合 
elsif Input.trigger?(Input::UP) or Input.repeat?(Input::UP)
if @id > 1
@id -= 1
else
@id = 50
end
@ctb_window_all.refresh(@id)
# L ボタンが押された場合 
elsif Input.trigger?(Input::L)
@id = [@id-18,1].max
@ctb_window_all.refresh(@id)
# R ボタンが押された場合 
elsif Input.trigger?(Input::R)
@id = [@id+18, 50].min
@ctb_window_all.refresh(@id)
# BかAが押されたら
elsif Input.trigger?(Input::B)
# キャンセル SE を演奏
$game_system.se_play($data_system.cancel_se)
@ctb_window.visible = true
@ctb_window_all.dispose
@party_command_window.active = true
@party_command_window.visible = true 
start_phase2 
end
end
end
 

Thank you for viewing

HBGames is a leading amateur video game development forum and Discord server open to all ability levels. Feel free to have a nosey around!

Discord

Join our growing and active Discord server to discuss all aspects of game making in a relaxed environment. Join Us

Content

  • Our Games
  • Games in Development
  • Emoji by Twemoji.
    Top