#1.main之前右键插入,全选RGSS代码后,粘贴即可.脚本名可自己取.

#2.在属性栏中创建或者修改一个属性的名字,命名为“二刀流”.

#3.在武器中,把可以用来装备双手武器的属性上,把二刀流打上勾.

#4,在职业中,把可以双手装备武器的职业的属性有效度设为A.

#5.状态显示副手武器Window_Status的
#draw_item_name($data_armors[@actor.armor1_id], 320 + 16, 256)
#上面加draw_item_name($data_weapons[@actor.weapon2_id], 320 + 16, 256)

#这样,只要你拥有了可以双手装备的武器,就可以装备在盾的位置而双手拿剑了.

#一开始副手装备着武器的方法:
#查找@weapon2_id = 0下面加@weapon2_id = 武器id if actor_id ==角色id
#这样id为角色id的角色2号武器便为武器id的武器
#如:@weapon2_id = 1 if actor_id ==1 (代表一号角色和一号武器)

#如果需要改副手武器的攻击力率,搜索n = weapon2 != nil ? weapon2.atk / 2 : 0

class Special_Element
#--------------------------------------------------------------------------
# ● 特殊な属性を定義する定数
#--------------------------------------------------------------------------
TWO_WEAPONS = "二刀流"

#--------------------------------------------------------------------------
# ● 特殊な属性をすべて取得
#--------------------------------------------------------------------------
def self.special_elements
# 特殊な属性をすべて列挙
elements = [
TWO_WEAPONS
]
return elements
end

#--------------------------------------------------------------------------
# ● 属性名からその属性のIDを得る
#--------------------------------------------------------------------------
def self.get_index(name)
return $data_system.elements.index(name)
end

#--------------------------------------------------------------------------
# ● 正規表現にマッチするすべての属性のIDとマッチ情報を得る
# 戻り値 : 二次元配列 [n][0]にID、[n][1]にマッチ情報(MatchData)
#--------------------------------------------------------------------------
def self.get_indices(regexp)
indices = []
for i in 1...$data_system.elements.size
indices.push([i, $~]) if regexp =~ $data_system.elements[i]
end
end

#--------------------------------------------------------------------------
# ● 特殊な属性を取り除く
# element_set : 取り除く前の属性IDの配列
# ignore_elements : 取り除きたい属性 ID?名前?正規表現で指定可能
# 戻り値 : 取り除いた結果の属性IDの配列
#--------------------------------------------------------------------------
def self.delete(element_set)
result = element_set.dup
for ignore in Special_Element::special_elements
case ignore
when Integer
result.delete(ignore)
when String
result.delete(Special_Element::get_index(ignore))
when Regexp
for i in result
result[i] = nil if ignore =~ $data_system.elements[result[i]]
end
result.delete(nil)
end
end
return result
end
end

 

 

class Game_Battler
#--------------------------------------------------------------------------
# ● 属性修正の計算
# element_set : 属性
#--------------------------------------------------------------------------
def elements_correct(element_set)
# --- ここから変更部分 ---
element_set = Special_Element::delete(element_set)
# --- 変更部分終わり ---
# 無属性の場合
if element_set == []
# 100 を返す
return 100
end
# 与えられた属性の中で最も弱いものを返す
# ※メソッド element_rate は、このクラスから継承される Game_Actor
# および Game_Enemy クラスで定義される
weakest = -100
for i in element_set
weakest = [weakest, self.element_rate(i)].max
end
return weakest
end
end

class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
# ● 公開インスタンス変数
#--------------------------------------------------------------------------
attr_reader :name # 名前
attr_reader :character_name # キャラクター ファイル名
attr_reader :character_hue # キャラクター 色相
attr_reader :class_id # クラス ID
attr_reader :weapon_id # 武器 ID
# --- ここから追加部分 ---
attr_reader :weapon2_id # 二刀流武器 ID
# --- 追加部分終わり ---
attr_reader :armor1_id # 盾 ID
attr_reader :armor2_id # 頭防具 ID
attr_reader :armor3_id # 体防具 ID
attr_reader :armor4_id # 装飾品 ID
attr_reader :level # レベル
attr_reader :exp # EXP
attr_reader :skills # スキル

#--------------------------------------------------------------------------
# ● セットアップ
# actor_id : アクター ID
#--------------------------------------------------------------------------
def setup(actor_id)
actor = $data_actors[actor_id]
@actor_id = actor_id
@name = actor.name
@character_name = actor.character_name
@character_hue = actor.character_hue
@battler_name = actor.battler_name
@battler_hue = actor.battler_hue
@class_id = actor.class_id
@weapon_id = actor.weapon_id
# --- ここから追加部分 ---
@weapon2_id = 0
# --- 追加部分終わり ---
@armor1_id = actor.armor1_id
@armor2_id = actor.armor2_id
@armor3_id = actor.armor3_id
@armor4_id = actor.armor4_id
@level = actor.initial_level
@exp_list = Array.new(101)
make_exp_list
@exp = @exp_list[@level]
@skills = []
@hp = maxhp
@sp = maxsp
@states = []
@states_turn = {}
@maxhp_plus = 0
@maxsp_plus = 0
@str_plus = 0
@dex_plus = 0
@agi_plus = 0
@int_plus = 0
# スキル習得
for i in 1..@level
for j in $data_classes[@class_id].learnings
if j.level == i
learn_skill(j.skill_id)
end
end
end
# オートステートを更新
update_auto_state(nil, $data_armors[@armor1_id])
update_auto_state(nil, $data_armors[@armor2_id])
update_auto_state(nil, $data_armors[@armor3_id])
update_auto_state(nil, $data_armors[@armor4_id])
end

#--------------------------------------------------------------------------
# ● 通常攻撃の属性取得
#--------------------------------------------------------------------------
def element_set
weapon = $data_weapons[@weapon_id]
# --- ここから変更部分 ---
weapon2 = $data_weapons[@weapon2_id]
result = []
result.concat(weapon.element_set) if weapon != nil
result.concat(weapon2.element_set) if weapon2 != nil
return result
# --- 変更部分終わり ---
end
#--------------------------------------------------------------------------
# ● 通常攻撃のステート変化 (+) 取得
#--------------------------------------------------------------------------
def plus_state_set
weapon = $data_weapons[@weapon_id]
# --- ここから変更部分 ---
weapon2 = $data_weapons[@weapon2_id]
result = []
result.concat(weapon.plus_state_set) if weapon != nil
result.concat(weapon2.plus_state_set) if weapon2 != nil
return result
# --- 変更部分終わり ---
end
#--------------------------------------------------------------------------
# ● 通常攻撃のステート変化 (-) 取得
#--------------------------------------------------------------------------
def minus_state_set
weapon = $data_weapons[@weapon_id]
# --- ここから変更部分 ---
weapon2 = $data_weapons[@weapon2_id]
result = []
result.concat(weapon.minus_state_set) if weapon != nil
result.concat(weapon2.minus_state_set) if weapon2 != nil
return result
# --- 変更部分終わり ---
end

#--------------------------------------------------------------------------
# ● 基本腕力の取得
#--------------------------------------------------------------------------
def base_str
n = $data_actors[@actor_id].parameters[2, @level]
weapon = $data_weapons[@weapon_id]
armor1 = $data_armors[@armor1_id]
armor2 = $data_armors[@armor2_id]
armor3 = $data_armors[@armor3_id]
armor4 = $data_armors[@armor4_id]
# --- ここから追加部分 ---
weapon2 = $data_weapons[@weapon2_id]
# そのまま加算すると強すぎなので半分にしてみるテスト
n += weapon2 != nil ? weapon2.str_plus / 2 : 0
# --- 追加部分終わり ---
n += weapon != nil ? weapon.str_plus : 0
n += armor1 != nil ? armor1.str_plus : 0
n += armor2 != nil ? armor2.str_plus : 0
n += armor3 != nil ? armor3.str_plus : 0
n += armor4 != nil ? armor4.str_plus : 0
return [[n, 1].max, 999].min
end

#--------------------------------------------------------------------------
# ● 基本器用さの取得
#--------------------------------------------------------------------------
def base_dex
n = $data_actors[@actor_id].parameters[3, @level]
weapon = $data_weapons[@weapon_id]
armor1 = $data_armors[@armor1_id]
armor2 = $data_armors[@armor2_id]
armor3 = $data_armors[@armor3_id]
armor4 = $data_armors[@armor4_id]
# --- ここから追加部分 ---
weapon2 = $data_weapons[@weapon2_id]
# そのまま加算すると強すぎなので半分にしてみるテスト
n += weapon2 != nil ? weapon2.dex_plus / 2 : 0
# --- 追加部分終わり ---
n += weapon != nil ? weapon.dex_plus : 0
n += armor1 != nil ? armor1.dex_plus : 0
n += armor2 != nil ? armor2.dex_plus : 0
n += armor3 != nil ? armor3.dex_plus : 0
n += armor4 != nil ? armor4.dex_plus : 0
return [[n, 1].max, 999].min
end

#--------------------------------------------------------------------------
# ● 基本素早さの取得
#--------------------------------------------------------------------------
def base_agi
n = $data_actors[@actor_id].parameters[4, @level]
weapon = $data_weapons[@weapon_id]
armor1 = $data_armors[@armor1_id]
armor2 = $data_armors[@armor2_id]
armor3 = $data_armors[@armor3_id]
armor4 = $data_armors[@armor4_id]
# --- ここから追加部分 ---
weapon2 = $data_weapons[@weapon2_id]
# そのまま加算すると強すぎなので半分にしてみるテスト
n += weapon2 != nil ? weapon2.agi_plus / 2 : 0
# --- 追加部分終わり ---
n += weapon != nil ? weapon.agi_plus : 0
n += armor1 != nil ? armor1.agi_plus : 0
n += armor2 != nil ? armor2.agi_plus : 0
n += armor3 != nil ? armor3.agi_plus : 0
n += armor4 != nil ? armor4.agi_plus : 0
return [[n, 1].max, 999].min
end

#--------------------------------------------------------------------------
# ● 基本魔力の取得
#--------------------------------------------------------------------------
def base_int
n = $data_actors[@actor_id].parameters[5, @level]
weapon = $data_weapons[@weapon_id]
armor1 = $data_armors[@armor1_id]
armor2 = $data_armors[@armor2_id]
armor3 = $data_armors[@armor3_id]
armor4 = $data_armors[@armor4_id]
# --- ここから追加部分 ---
weapon2 = $data_weapons[@weapon2_id]
# そのまま加算すると強すぎなので半分にしてみるテスト
n += weapon2 != nil ? weapon2.int_plus / 2 : 0
# --- 追加部分終わり ---
n += weapon != nil ? weapon.int_plus : 0
n += armor1 != nil ? armor1.int_plus : 0
n += armor2 != nil ? armor2.int_plus : 0
n += armor3 != nil ? armor3.int_plus : 0
n += armor4 != nil ? armor4.int_plus : 0
return [[n, 1].max, 999].min
end

#--------------------------------------------------------------------------
# ● 基本攻撃力の取得
#--------------------------------------------------------------------------
def base_atk
weapon = $data_weapons[@weapon_id]
# --- ここから変更部分 ---
weapon2 = $data_weapons[@weapon2_id]
# そのまま加算すると強すぎなので半分にしてみるテスト
n = weapon2 != nil ? weapon2.atk / 2 : 0
return weapon != nil ? weapon.atk + n : n
# --- 変更部分終わり ---
end

#--------------------------------------------------------------------------
# ● 基本物理防御の取得
#--------------------------------------------------------------------------
def base_pdef
weapon = $data_weapons[@weapon_id]
armor1 = $data_armors[@armor1_id]
armor2 = $data_armors[@armor2_id]
armor3 = $data_armors[@armor3_id]
armor4 = $data_armors[@armor4_id]
pdef1 = weapon != nil ? weapon.pdef : 0
pdef2 = armor1 != nil ? armor1.pdef : 0
pdef3 = armor2 != nil ? armor2.pdef : 0
pdef4 = armor3 != nil ? armor3.pdef : 0
pdef5 = armor4 != nil ? armor4.pdef : 0
# --- ここから追加部分 ---
weapon2 = $data_weapons[@weapon2_id]
# そのまま加算すると強すぎなので半分にしてみるテスト
pdef1 += weapon2 != nil ? weapon2.pdef / 2 : 0
# --- 追加部分終わり ---
return pdef1 + pdef2 + pdef3 + pdef4 + pdef5
end

#--------------------------------------------------------------------------
# ● 基本魔法防御の取得
#--------------------------------------------------------------------------
def base_mdef
weapon = $data_weapons[@weapon_id]
armor1 = $data_armors[@armor1_id]
armor2 = $data_armors[@armor2_id]
armor3 = $data_armors[@armor3_id]
armor4 = $data_armors[@armor4_id]
mdef1 = weapon != nil ? weapon.mdef : 0
mdef2 = armor1 != nil ? armor1.mdef : 0
mdef3 = armor2 != nil ? armor2.mdef : 0
mdef4 = armor3 != nil ? armor3.mdef : 0
mdef5 = armor4 != nil ? armor4.mdef : 0
# --- ここから追加部分 ---
weapon2 = $data_weapons[@weapon2_id]
# そのまま加算すると強すぎなので半分にしてみるテスト
mdef1 += weapon2 != nil ? weapon2.mdef / 2 : 0
# --- 追加部分終わり ---
return mdef1 + mdef2 + mdef3 + mdef4 + mdef5
end

#--------------------------------------------------------------------------
# ● 通常攻撃 攻撃側アニメーション ID の取得
#--------------------------------------------------------------------------
def animation1_id
weapon = $data_weapons[@weapon_id]
# --- ここから変更部分 ---
weapon2 = $data_weapons[@weapon2_id]
animations = []
animations.push(weapon.animation1_id) if weapon != nil
animations.push(weapon2.animation1_id) if weapon2 != nil
animations.delete(0)
return animations.empty? ? 0 : animations
# --- 変更部分終わり ---
end

#--------------------------------------------------------------------------
# ● 通常攻撃 対象側アニメーション ID の取得
#--------------------------------------------------------------------------
def animation2_id
weapon = $data_weapons[@weapon_id]
# --- ここから変更部分 ---
weapon2 = $data_weapons[@weapon2_id]
animations = []
animations.push(weapon.animation2_id) if weapon != nil
animations.push(weapon2.animation2_id) if weapon2 != nil
animations.delete(0)
return animations.empty? ? 0 : animations
# --- 変更部分終わり ---
end

#--------------------------------------------------------------------------
# ● 装備の変更
# equip_type : 装備タイプ(変更点:-1なら二刀流の盾部分の武器)
# id : 武器 or 防具 ID (0 なら装備解除)
#--------------------------------------------------------------------------
def equip(equip_type, id)
case equip_type
when 0 # 武器
if id == 0 or $game_party.weapon_number(id) > 0
$game_party.gain_weapon(@weapon_id, 1)
@weapon_id = id
$game_party.lose_weapon(id, 1)
# --- ここから追加部分 ---
# 二刀武器じゃないものを装備した場合、盾の部分の二刀武器を外す
if id != 0 and !$data_weapons[id].element_set.include?(Special_Element::get_index(Special_Element::TWO_WEAPONS))
$game_party.gain_weapon(@weapon2_id, 1)
@weapon2_id = 0
end
# --- 追加部分終わり ---
end
when 1 # 盾
if id == 0 or $game_party.armor_number(id) > 0
update_auto_state($data_armors[@armor1_id], $data_armors[id])
$game_party.gain_armor(@armor1_id, 1)
@armor1_id = id
$game_party.lose_armor(id, 1)
# --- ここから追加部分 ---
# 二刀武器を装備していた場合は外す
if id != 0
$game_party.gain_weapon(@weapon2_id, 1)
@weapon2_id = 0
end
# --- 追加部分終わり ---
end
when 2 # 頭
if id == 0 or $game_party.armor_number(id) > 0
update_auto_state($data_armors[@armor2_id], $data_armors[id])
$game_party.gain_armor(@armor2_id, 1)
@armor2_id = id
$game_party.lose_armor(id, 1)
end
when 3 # 身体
if id == 0 or $game_party.armor_number(id) > 0
update_auto_state($data_armors[@armor3_id], $data_armors[id])
$game_party.gain_armor(@armor3_id, 1)
@armor3_id = id
$game_party.lose_armor(id, 1)
end
when 4 # 装飾品
if id == 0 or $game_party.armor_number(id) > 0
update_auto_state($data_armors[@armor4_id], $data_armors[id])
$game_party.gain_armor(@armor4_id, 1)
@armor4_id = id
$game_party.lose_armor(id, 1)
end
# --- ここから追加部分 ---
when -1 # 二刀流の盾部分の武器
if id == 0 or $game_party.weapon_number(id) > 0
$game_party.gain_weapon(@weapon2_id, 1)
@weapon2_id = id
$game_party.lose_weapon(id, 1)
# 盾を外す
$game_party.gain_armor(@armor1_id, 1)
@armor1_id = 0
# 既に装備している武器が二刀武器じゃない場合は外す
if id != 0 and @weapon_id != 0 and !$data_weapons[@weapon_id].element_set.include?(Special_Element::get_index(Special_Element::TWO_WEAPONS))
$game_party.gain_weapon(@weapon_id, 1)
@weapon_id = 0
end
end
# --- 追加部分終わり ---
end
end

#--------------------------------------------------------------------------
# ● 二刀流可能なアクターかどうか
#--------------------------------------------------------------------------
def can_two_weapons?
return class_element_set.include?(Special_Element::get_index(Special_Element::TWO_WEAPONS))
end

#--------------------------------------------------------------------------
# ● アクターの所属クラスの属性がAのものを取得
#--------------------------------------------------------------------------
def class_element_set
element_set = []
for i in 1...$data_classes[@class_id].element_ranks.xsize
element_set.push(i) if $data_classes[@class_id].element_ranks[i] == 1
end
return element_set
end
end

 

 

class Window_EquipRight < Window_Selectable
#--------------------------------------------------------------------------
# ● リフレッシュ
#--------------------------------------------------------------------------
def refresh
self.contents.clear
@data = []
@data.push($data_weapons[@actor.weapon_id])
# --- ここから変更部分 ---
@data.push(@actor.weapon2_id != 0 ? $data_weapons[@actor.weapon2_id] : $data_armors[@actor.armor1_id])
# --- 変更部分終わり ---
@data.push($data_armors[@actor.armor2_id])
@data.push($data_armors[@actor.armor3_id])
@data.push($data_armors[@actor.armor4_id])
@item_max = @data.size
self.contents.font.color = system_color
self.contents.draw_text(4, 32 * 0, 92, 32, $data_system.words.weapon)
self.contents.draw_text(4, 32 * 1, 92, 32, $data_system.words.armor1)
self.contents.draw_text(4, 32 * 2, 92, 32, $data_system.words.armor2)
self.contents.draw_text(4, 32 * 3, 92, 32, $data_system.words.armor3)
self.contents.draw_text(5, 32 * 4, 92, 32, $data_system.words.armor4)
draw_item_name(@data[0], 92, 32 * 0)
draw_item_name(@data[1], 92, 32 * 1)
draw_item_name(@data[2], 92, 32 * 2)
draw_item_name(@data[3], 92, 32 * 3)
draw_item_name(@data[4], 92, 32 * 4)
end
end

 

 

class Window_EquipItem < Window_Selectable
#--------------------------------------------------------------------------
# ● リフレッシュ
#--------------------------------------------------------------------------
def refresh
if self.contents != nil
self.contents.dispose
self.contents = nil
end
@data = []
# 装備可能な武器を追加
if @equip_type == 0
weapon_set = $data_classes[@actor.class_id].weapon_set
for i in 1...$data_weapons.size
if $game_party.weapon_number(i) > 0 and weapon_set.include?(i)
@data.push($data_weapons[i])
end
end
end
# --- ここから追加部分 ---
# 二刀流可能なアクターの場合は、盾に二刀武器も表示
if @equip_type == 1 and @actor.can_two_weapons?
weapon_set = $data_classes[@actor.class_id].weapon_set
for i in 1...$data_weapons.size
if $game_party.weapon_number(i) > 0 and weapon_set.include?(i) and $data_weapons[i].element_set.include?(Special_Element::get_index(Special_Element::TWO_WEAPONS))
@data.push($data_weapons[i])
end
end
end
# --- 追加部分終わり ---
# 装備可能な防具を追加
if @equip_type != 0
armor_set = $data_classes[@actor.class_id].armor_set
for i in 1...$data_armors.size
if $game_party.armor_number(i) > 0 and armor_set.include?(i)
if $data_armors[i].kind == @equip_type-1
@data.push($data_armors[i])
end
end
end
end
# 空白を追加
@data.push(nil)
# ビットマップを作成し、全項目を描画
@item_max = @data.size
self.contents = Bitmap.new(width - 32, row_max * 32)
for i in 0...@item_max-1
draw_item(i)
end
end
end

 

 

class Scene_Equip
#--------------------------------------------------------------------------
# ● リフレッシュ
#--------------------------------------------------------------------------
def refresh
# アイテムウィンドウの可視状態設定
@item_window1.visible = (@right_window.index == 0)
@item_window2.visible = (@right_window.index == 1)
@item_window3.visible = (@right_window.index == 2)
@item_window4.visible = (@right_window.index == 3)
@item_window5.visible = (@right_window.index == 4)
# 現在装備中のアイテムを取得
item1 = @right_window.item
# 現在のアイテムウィンドウを @item_window に設定
case @right_window.index
when 0
@item_window = @item_window1
when 1
@item_window = @item_window2
when 2
@item_window = @item_window3
when 3
@item_window = @item_window4
when 4
@item_window = @item_window5
end
# ライトウィンドウがアクティブの場合
if @right_window.active
# 装備変更後のパラメータを消去
@left_window.set_new_parameters(nil, nil, nil)
end
# アイテムウィンドウがアクティブの場合
if @item_window.active
# 現在選択中のアイテムを取得
item2 = @item_window.item
# 装備を変更
last_hp = @actor.hp
last_sp = @actor.sp
# --- ここから変更部分 ---
# 現在の装備を保存(装備の種類を増やしている場合はここを変更)
equipments = [@actor.weapon2_id, @actor.weapon_id, @actor.armor1_id, @actor.armor2_id, @actor.armor3_id, @actor.armor4_id]
 index = equip_type(@right_window.index, item2);@actor.equip((index == -1 ? index : index.abs), item2 == nil ? 0 : item2.id)
# --- 変更部分終わり ---
# 装備変更後のパラメータを取得
# 装備変更後のパラメータを取得
new_atk = @actor.atk
new_pdef = @actor.pdef
new_mdef = @actor.mdef
# --- ここから変更部分 ---
# 装備を戻す
for i in 0...equipments.size - 3
@actor.equip(i - 1, equipments[i])
end
# --- 変更部分終わり ---
@actor.hp = last_hp
@actor.sp = last_sp
# レフトウィンドウに描画
@left_window.set_new_parameters(new_atk, new_pdef, new_mdef)
end
end

#--------------------------------------------------------------------------
# ● フレーム更新 (アイテムウィンドウがアクティブの場合)
#--------------------------------------------------------------------------
def update_item
# B ボタンが押された場合
if Input.trigger?(Input::B)
# キャンセル SE を演奏
$game_system.se_play($data_system.cancel_se)
# ライトウィンドウをアクティブ化
@right_window.active = true
@item_window.active = false
@item_window.index = -1
return
end
# C ボタンが押された場合
if Input.trigger?(Input::C)
# 装備 SE を演奏
$game_system.se_play($data_system.equip_se)
# アイテムウィンドウで現在選択されているデータを取得
item = @item_window.item
# --- ここから変更部分 ---
# 装備を変更
@actor.equip(equip_type(@right_window.index, item), item == nil ? 0 : item.id)
# --- 変更部分終わり ---
# ライトウィンドウをアクティブ化
@right_window.active = true
@item_window.active = false
@item_window.index = -1
# ライトウィンドウ、アイテムウィンドウの内容を再作成
@right_window.refresh
# --- ここから変更部分 ---
# めんどくさいのですべてのウィンドウをリフレッシュ
@item_window1.refresh
@item_window2.refresh
@item_window3.refresh
@item_window4.refresh
@item_window5.refresh
# --- 変更部分終わり ---
return
end
end

# --- ここから追加部分 ---
#--------------------------------------------------------------------------
# ● 二刀流用の装備部位取得
#--------------------------------------------------------------------------
def equip_type(index, item)
return index * (item.is_a?(RPG::Armor) ? 1 : -1)
end
# --- 追加部分終わり ---
end

 

 

class Scene_Battle
#--------------------------------------------------------------------------
# ● 基本アクション 結果作成
#--------------------------------------------------------------------------
def make_basic_action_result
# 攻撃の場合
if @active_battler.current_action.basic == 0
# --- ここから変更部分 ---
# アニメーション ID を設定
@animation1_id = @active_battler.animation1_id.is_a?(Array) ? @active_battler.animation1_id.dup : @active_battler.animation1_id
@animation2_id = @active_battler.animation2_id.is_a?(Array) ? @active_battler.animation2_id.dup : @active_battler.animation2_id
# --- 変更部分終わり ---
# 行動側バトラーがエネミーの場合
if @active_battler.is_a?(Game_Enemy)
if @active_battler.restriction == 3
target = $game_troop.random_target_enemy
elsif @active_battler.restriction == 2
target = $game_party.random_target_actor
else
index = @active_battler.current_action.target_index
target = $game_party.smooth_target_actor(index)
end
end
# 行動側バトラーがアクターの場合
if @active_battler.is_a?(Game_Actor)
if @active_battler.restriction == 3
target = $game_party.random_target_actor
elsif @active_battler.restriction == 2
target = $game_troop.random_target_enemy
else
index = @active_battler.current_action.target_index
target = $game_troop.smooth_target_enemy(index)
end
end
# 対象側バトラーの配列を設定
@target_battlers = [target]
# 通常攻撃の効果を適用
for target in @target_battlers
target.attack_effect(@active_battler)
end
return
end
# 防御の場合
if @active_battler.current_action.basic == 1
# ヘルプウィンドウに "防御" を表示
@help_window.set_text($data_system.words.guard, 1)
return
end
# 逃げるの場合
if @active_battler.is_a?(Game_Enemy) and
@active_battler.current_action.basic == 2
# ヘルプウィンドウに "逃げる" を表示
@help_window.set_text("逃げる", 1)
# 逃げる
@active_battler.escape
return
end
# 何もしないの場合
if @active_battler.current_action.basic == 3
# アクション強制対象のバトラーをクリア
$game_temp.forcing_battler = nil
# ステップ 1 に移行
@phase4_step = 1
return
end
end

#--------------------------------------------------------------------------
# ● フレーム更新 (メインフェーズ ステップ 3 : 行動側アニメーション)
#--------------------------------------------------------------------------
def update_phase4_step3
# --- ここから変更部分 ---
# アニメーションの配列の先頭を取り出す
if @animation1_id.is_a?(Integer)
@animation1_id = [@animation1_id]
end
animation = @animation1_id.shift
# 行動側アニメーション (ID が 0 の場合は白フラッシュ)
if animation == 0
@active_battler.white_flash = true
else
@active_battler.animation_id = animation
@active_battler.animation_hit = true
end
# アニメーションがなくなったらステップ 4 に移行
@phase4_step = 4 if @animation1_id.empty?
# --- 変更部分終わり ---
end

#--------------------------------------------------------------------------
# ● フレーム更新 (メインフェーズ ステップ 4 : 対象側アニメーション)
#--------------------------------------------------------------------------
def update_phase4_step4
# --- ここから変更部分 ---
# アニメーションの配列の先頭を取り出す
if @animation2_id.is_a?(Integer)
@animation2_id = [@animation2_id]
end
animation = @animation2_id.shift
# 対象側アニメーション
for target in @target_battlers
target.animation_id = animation
target.animation_hit = (target.damage != "Miss")
end
# アニメーションの長さにかかわらず、最低 8 フレーム待つ
@wait_count = 8
# アニメーションがなくなったらステップ 5 に移行
@phase4_step = 5 if @animation2_id.empty?
# --- 変更部分終わり ---
end
end