1411 lines
54 KiB
Ruby
1411 lines
54 KiB
Ruby
#==============================================================================
|
||
# ■ Game_Interpreter
|
||
#------------------------------------------------------------------------------
|
||
# イベントコマンドを実行するインタプリタです。このクラスは Game_Map クラス、
|
||
# Game_Troop クラス、Game_Event クラスの内部で使用されます。
|
||
#==============================================================================
|
||
|
||
class Game_Interpreter
|
||
#--------------------------------------------------------------------------
|
||
# ● 公開インスタンス変数
|
||
#--------------------------------------------------------------------------
|
||
attr_reader :map_id # マップ ID
|
||
attr_reader :event_id # イベント ID(通常イベントのみ)
|
||
#--------------------------------------------------------------------------
|
||
# ● オブジェクト初期化
|
||
# depth : ネストの深さ
|
||
#--------------------------------------------------------------------------
|
||
def initialize(depth = 0)
|
||
@depth = depth
|
||
check_overflow
|
||
clear
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● オーバーフローのチェック
|
||
# 通常の使用で深さが 100 以上になることはない。再帰的なイベント呼び出し
|
||
# による無限ループの可能性が高いので、100 で打ち切ってエラーにする。
|
||
#--------------------------------------------------------------------------
|
||
def check_overflow
|
||
if @depth >= 100
|
||
msgbox(Vocab::EventOverflow)
|
||
exit
|
||
end
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● クリア
|
||
#--------------------------------------------------------------------------
|
||
def clear
|
||
@map_id = 0
|
||
@event_id = 0
|
||
@list = nil # 実行内容
|
||
@index = 0 # インデックス
|
||
@branch = {} # 分岐データ
|
||
@fiber = nil # ファイバー
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● イベントのセットアップ
|
||
#--------------------------------------------------------------------------
|
||
def setup(list, event_id = 0)
|
||
clear
|
||
@map_id = $game_map.map_id
|
||
@event_id = event_id
|
||
@list = list
|
||
create_fiber
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● ファイバーの作成
|
||
#--------------------------------------------------------------------------
|
||
def create_fiber
|
||
@fiber = Fiber.new { run } if @list
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● オブジェクトのダンプ
|
||
# ファイバーは Marshal に対応していないため自前で定義する。
|
||
# イベントの実行位置は一つ進めて保存する。
|
||
#--------------------------------------------------------------------------
|
||
def marshal_dump
|
||
[@depth, @map_id, @event_id, @list, @index + 1, @branch]
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● オブジェクトのロード
|
||
# obj : marshal_dump でダンプされたオブジェクト(配列)
|
||
# 多重代入でデータを復帰し、必要ならファイバーを再作成する。
|
||
#--------------------------------------------------------------------------
|
||
def marshal_load(obj)
|
||
@depth, @map_id, @event_id, @list, @index, @branch = obj
|
||
create_fiber
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● イベント起動時のマップと同じか判定
|
||
#--------------------------------------------------------------------------
|
||
def same_map?
|
||
@map_id == $game_map.map_id
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● 呼び出し予約されたコモンイベントを検出/セットアップ
|
||
#--------------------------------------------------------------------------
|
||
def setup_reserved_common_event
|
||
if $game_temp.common_event_reserved?
|
||
setup($game_temp.reserved_common_event.list)
|
||
$game_temp.clear_common_event
|
||
true
|
||
else
|
||
false
|
||
end
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● 実行
|
||
#--------------------------------------------------------------------------
|
||
def run
|
||
wait_for_message
|
||
while @list[@index] do
|
||
execute_command
|
||
@index += 1
|
||
end
|
||
Fiber.yield
|
||
@fiber = nil
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● 実行中判定
|
||
#--------------------------------------------------------------------------
|
||
def running?
|
||
@fiber != nil
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● フレーム更新
|
||
#--------------------------------------------------------------------------
|
||
def update
|
||
@fiber.resume if @fiber
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● アクター用イテレータ(ID)
|
||
# param : 1 以上なら ID、0 なら全体
|
||
#--------------------------------------------------------------------------
|
||
def iterate_actor_id(param)
|
||
if param == 0
|
||
$game_party.members.each {|actor| yield actor }
|
||
else
|
||
actor = $game_actors[param]
|
||
yield actor if actor
|
||
end
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● アクター用イテレータ(可変)
|
||
# param1 : 0 なら固定、1 なら変数で指定
|
||
# param2 : アクターまたは変数 ID
|
||
#--------------------------------------------------------------------------
|
||
def iterate_actor_var(param1, param2)
|
||
if param1 == 0
|
||
iterate_actor_id(param2) {|actor| yield actor }
|
||
else
|
||
iterate_actor_id($game_variables[param2]) {|actor| yield actor }
|
||
end
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● アクター用イテレータ(インデックス)
|
||
# param : 0 以上ならインデックス、-1 なら全体
|
||
#--------------------------------------------------------------------------
|
||
def iterate_actor_index(param)
|
||
if param < 0
|
||
$game_party.members.each {|actor| yield actor }
|
||
else
|
||
actor = $game_party.members[param]
|
||
yield actor if actor
|
||
end
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● 敵キャラ用イテレータ(インデックス)
|
||
# param : 0 以上ならインデックス、-1 なら全体
|
||
#--------------------------------------------------------------------------
|
||
def iterate_enemy_index(param)
|
||
if param < 0
|
||
$game_troop.members.each {|enemy| yield enemy }
|
||
else
|
||
enemy = $game_troop.members[param]
|
||
yield enemy if enemy
|
||
end
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● バトラー用イテレータ(敵グループ全体、パーティ全体を考慮)
|
||
# param1 : 0 なら敵キャラ、1 ならアクター
|
||
# param2 : 敵キャラならインデックス、アクターなら ID
|
||
#--------------------------------------------------------------------------
|
||
def iterate_battler(param1, param2)
|
||
if $game_party.in_battle
|
||
if param1 == 0
|
||
iterate_enemy_index(param2) {|enemy| yield enemy }
|
||
else
|
||
iterate_actor_id(param2) {|actor| yield actor }
|
||
end
|
||
end
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● 画面系コマンドの対象を取得
|
||
#--------------------------------------------------------------------------
|
||
def screen
|
||
$game_party.in_battle ? $game_troop.screen : $game_map.screen
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● イベントコマンドの実行
|
||
#--------------------------------------------------------------------------
|
||
def execute_command
|
||
command = @list[@index]
|
||
@params = command.parameters
|
||
@indent = command.indent
|
||
method_name = "command_#{command.code}"
|
||
send(method_name) if respond_to?(method_name)
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● コマンドスキップ
|
||
# 現在のインデントより深いコマンドを飛ばしてインデックスを進める。
|
||
#--------------------------------------------------------------------------
|
||
def command_skip
|
||
@index += 1 while @list[@index + 1].indent > @indent
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● 次のイベントコマンドのコードを取得
|
||
#--------------------------------------------------------------------------
|
||
def next_event_code
|
||
@list[@index + 1].code
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● キャラクターの取得
|
||
# param : -1 ならプレイヤー、0 ならこのイベント、それ以外はイベント ID
|
||
#--------------------------------------------------------------------------
|
||
def get_character(param)
|
||
if $game_party.in_battle
|
||
nil
|
||
elsif param < 0
|
||
$game_player
|
||
else
|
||
events = same_map? ? $game_map.events : {}
|
||
events[param > 0 ? param : @event_id]
|
||
end
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● 操作する値の計算
|
||
# operation : 操作(0:増やす 1:減らす)
|
||
# operand_type : オペランドタイプ(0:定数 1:変数)
|
||
# operand : オペランド(数値または変数 ID)
|
||
#--------------------------------------------------------------------------
|
||
def operate_value(operation, operand_type, operand)
|
||
value = operand_type == 0 ? operand : $game_variables[operand]
|
||
operation == 0 ? value : -value
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● ウェイト
|
||
#--------------------------------------------------------------------------
|
||
def wait(duration)
|
||
duration.times { Fiber.yield }
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● メッセージ表示がビジー状態の間ウェイト
|
||
#--------------------------------------------------------------------------
|
||
def wait_for_message
|
||
Fiber.yield while $game_message.busy?
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● 文章の表示
|
||
#--------------------------------------------------------------------------
|
||
def command_101
|
||
wait_for_message
|
||
$game_message.face_name = @params[0]
|
||
$game_message.face_index = @params[1]
|
||
$game_message.background = @params[2]
|
||
$game_message.position = @params[3]
|
||
while next_event_code == 401 # 文章データ
|
||
@index += 1
|
||
$game_message.add(@list[@index].parameters[0])
|
||
end
|
||
case next_event_code
|
||
when 102 # 選択肢の表示
|
||
@index += 1
|
||
setup_choices(@list[@index].parameters)
|
||
when 103 # 数値入力の処理
|
||
@index += 1
|
||
setup_num_input(@list[@index].parameters)
|
||
when 104 # アイテム選択の処理
|
||
@index += 1
|
||
setup_item_choice(@list[@index].parameters)
|
||
end
|
||
wait_for_message
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● 選択肢の表示
|
||
#--------------------------------------------------------------------------
|
||
def command_102
|
||
wait_for_message
|
||
setup_choices(@params)
|
||
Fiber.yield while $game_message.choice?
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● 選択肢のセットアップ
|
||
#--------------------------------------------------------------------------
|
||
def setup_choices(params)
|
||
params[0].each {|s| $game_message.choices.push(s) }
|
||
$game_message.choice_cancel_type = params[1]
|
||
$game_message.choice_proc = Proc.new {|n| @branch[@indent] = n }
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● [**] の場合
|
||
#--------------------------------------------------------------------------
|
||
def command_402
|
||
command_skip if @branch[@indent] != @params[0]
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● キャンセルの場合
|
||
#--------------------------------------------------------------------------
|
||
def command_403
|
||
command_skip if @branch[@indent] != 4
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● 数値入力の処理
|
||
#--------------------------------------------------------------------------
|
||
def command_103
|
||
wait_for_message
|
||
setup_num_input(@params)
|
||
Fiber.yield while $game_message.num_input?
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● 数値入力のセットアップ
|
||
#--------------------------------------------------------------------------
|
||
def setup_num_input(params)
|
||
$game_message.num_input_variable_id = params[0]
|
||
$game_message.num_input_digits_max = params[1]
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● アイテム選択の処理
|
||
#--------------------------------------------------------------------------
|
||
def command_104
|
||
wait_for_message
|
||
setup_item_choice(@params)
|
||
Fiber.yield while $game_message.item_choice?
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● アイテム選択のセットアップ
|
||
#--------------------------------------------------------------------------
|
||
def setup_item_choice(params)
|
||
$game_message.item_choice_variable_id = params[0]
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● スクロール文章の表示
|
||
#--------------------------------------------------------------------------
|
||
def command_105
|
||
Fiber.yield while $game_message.visible
|
||
$game_message.scroll_mode = true
|
||
$game_message.scroll_speed = @params[0]
|
||
$game_message.scroll_no_fast = @params[1]
|
||
while next_event_code == 405
|
||
@index += 1
|
||
$game_message.add(@list[@index].parameters[0])
|
||
end
|
||
wait_for_message
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● 注釈
|
||
#--------------------------------------------------------------------------
|
||
def command_108
|
||
@comments = [@params[0]]
|
||
while next_event_code == 408
|
||
@index += 1
|
||
@comments.push(@list[@index].parameters[0])
|
||
end
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● 条件分岐
|
||
#--------------------------------------------------------------------------
|
||
def command_111
|
||
result = false
|
||
case @params[0]
|
||
when 0 # スイッチ
|
||
result = ($game_switches[@params[1]] == (@params[2] == 0))
|
||
when 1 # 変数
|
||
value1 = $game_variables[@params[1]]
|
||
if @params[2] == 0
|
||
value2 = @params[3]
|
||
else
|
||
value2 = $game_variables[@params[3]]
|
||
end
|
||
case @params[4]
|
||
when 0 # と同値
|
||
result = (value1 == value2)
|
||
when 1 # 以上
|
||
result = (value1 >= value2)
|
||
when 2 # 以下
|
||
result = (value1 <= value2)
|
||
when 3 # 超
|
||
result = (value1 > value2)
|
||
when 4 # 未満
|
||
result = (value1 < value2)
|
||
when 5 # 以外
|
||
result = (value1 != value2)
|
||
end
|
||
when 2 # セルフスイッチ
|
||
if @event_id > 0
|
||
key = [@map_id, @event_id, @params[1]]
|
||
result = ($game_self_switches[key] == (@params[2] == 0))
|
||
end
|
||
when 3 # タイマー
|
||
if $game_timer.working?
|
||
if @params[2] == 0
|
||
result = ($game_timer.sec >= @params[1])
|
||
else
|
||
result = ($game_timer.sec <= @params[1])
|
||
end
|
||
end
|
||
when 4 # アクター
|
||
actor = $game_actors[@params[1]]
|
||
if actor
|
||
case @params[2]
|
||
when 0 # パーティにいる
|
||
result = ($game_party.members.include?(actor))
|
||
when 1 # 名前
|
||
result = (actor.name == @params[3])
|
||
when 2 # 職業
|
||
result = (actor.class_id == @params[3])
|
||
when 3 # スキル
|
||
result = (actor.skill_learn?($data_skills[@params[3]]))
|
||
when 4 # 武器
|
||
result = (actor.weapons.include?($data_weapons[@params[3]]))
|
||
when 5 # 防具
|
||
result = (actor.armors.include?($data_armors[@params[3]]))
|
||
when 6 # ステート
|
||
result = (actor.state?(@params[3]))
|
||
end
|
||
end
|
||
when 5 # 敵キャラ
|
||
enemy = $game_troop.members[@params[1]]
|
||
if enemy
|
||
case @params[2]
|
||
when 0 # 出現している
|
||
result = (enemy.alive?)
|
||
when 1 # ステート
|
||
result = (enemy.state?(@params[3]))
|
||
end
|
||
end
|
||
when 6 # キャラクター
|
||
character = get_character(@params[1])
|
||
if character
|
||
result = (character.direction == @params[2])
|
||
end
|
||
when 7 # ゴールド
|
||
case @params[2]
|
||
when 0 # 以上
|
||
result = ($game_party.gold >= @params[1])
|
||
when 1 # 以下
|
||
result = ($game_party.gold <= @params[1])
|
||
when 2 # 未満
|
||
result = ($game_party.gold < @params[1])
|
||
end
|
||
when 8 # アイテム
|
||
result = $game_party.has_item?($data_items[@params[1]])
|
||
when 9 # 武器
|
||
result = $game_party.has_item?($data_weapons[@params[1]], @params[2])
|
||
when 10 # 防具
|
||
result = $game_party.has_item?($data_armors[@params[1]], @params[2])
|
||
when 11 # ボタン
|
||
result = Input.press?(@params[1])
|
||
when 12 # スクリプト
|
||
result = eval(@params[1])
|
||
when 13 # 乗り物
|
||
result = ($game_player.vehicle == $game_map.vehicles[@params[1]])
|
||
end
|
||
@branch[@indent] = result
|
||
command_skip if !@branch[@indent]
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● それ以外の場合
|
||
#--------------------------------------------------------------------------
|
||
def command_411
|
||
command_skip if @branch[@indent]
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● ループ
|
||
#--------------------------------------------------------------------------
|
||
def command_112
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● 以上繰り返し
|
||
#--------------------------------------------------------------------------
|
||
def command_413
|
||
begin
|
||
@index -= 1
|
||
end until @list[@index].indent == @indent
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● ループの中断
|
||
#--------------------------------------------------------------------------
|
||
def command_113
|
||
loop do
|
||
@index += 1
|
||
return if @index >= @list.size - 1
|
||
return if @list[@index].code == 413 && @list[@index].indent < @indent
|
||
end
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● イベント処理の中断
|
||
#--------------------------------------------------------------------------
|
||
def command_115
|
||
@index = @list.size
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● コモンイベント
|
||
#--------------------------------------------------------------------------
|
||
def command_117
|
||
common_event = $data_common_events[@params[0]]
|
||
if common_event
|
||
child = Game_Interpreter.new(@depth + 1)
|
||
child.setup(common_event.list, same_map? ? @event_id : 0)
|
||
child.run
|
||
end
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● ラベル
|
||
#--------------------------------------------------------------------------
|
||
def command_118
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● ラベルジャンプ
|
||
#--------------------------------------------------------------------------
|
||
def command_119
|
||
label_name = @params[0]
|
||
@list.size.times do |i|
|
||
if @list[i].code == 118 && @list[i].parameters[0] == label_name
|
||
@index = i
|
||
return
|
||
end
|
||
end
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● スイッチの操作
|
||
#--------------------------------------------------------------------------
|
||
def command_121
|
||
(@params[0]..@params[1]).each do |i|
|
||
$game_switches[i] = (@params[2] == 0)
|
||
end
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● 変数の操作
|
||
#--------------------------------------------------------------------------
|
||
def command_122
|
||
value = 0
|
||
case @params[3] # オペランド
|
||
when 0 # 定数
|
||
value = @params[4]
|
||
when 1 # 変数
|
||
value = $game_variables[@params[4]]
|
||
when 2 # 乱数
|
||
value = @params[4] + rand(@params[5] - @params[4] + 1)
|
||
when 3 # ゲームデータ
|
||
value = game_data_operand(@params[4], @params[5], @params[6])
|
||
when 4 # スクリプト
|
||
value = eval(@params[4])
|
||
end
|
||
(@params[0]..@params[1]).each do |i|
|
||
operate_variable(i, @params[2], value)
|
||
end
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● 変数オペランド用ゲームデータの取得
|
||
#--------------------------------------------------------------------------
|
||
def game_data_operand(type, param1, param2)
|
||
case type
|
||
when 0 # アイテム
|
||
return $game_party.item_number($data_items[param1])
|
||
when 1 # 武器
|
||
return $game_party.item_number($data_weapons[param1])
|
||
when 2 # 防具
|
||
return $game_party.item_number($data_armors[param1])
|
||
when 3 # アクター
|
||
actor = $game_actors[param1]
|
||
if actor
|
||
case param2
|
||
when 0 # レベル
|
||
return actor.level
|
||
when 1 # 経験値
|
||
return actor.exp
|
||
when 2 # HP
|
||
return actor.hp
|
||
when 3 # MP
|
||
return actor.mp
|
||
when 4..11 # 通常能力値
|
||
return actor.param(param2 - 4)
|
||
end
|
||
end
|
||
when 4 # 敵キャラ
|
||
enemy = $game_troop.members[param1]
|
||
if enemy
|
||
case param2
|
||
when 0 # HP
|
||
return enemy.hp
|
||
when 1 # MP
|
||
return enemy.mp
|
||
when 2..9 # 通常能力値
|
||
return enemy.param(param2 - 2)
|
||
end
|
||
end
|
||
when 5 # キャラクター
|
||
character = get_character(param1)
|
||
if character
|
||
case param2
|
||
when 0 # X 座標
|
||
return character.x
|
||
when 1 # Y 座標
|
||
return character.y
|
||
when 2 # 向き
|
||
return character.direction
|
||
when 3 # 画面 X 座標
|
||
return character.screen_x
|
||
when 4 # 画面 Y 座標
|
||
return character.screen_y
|
||
end
|
||
end
|
||
when 6 # パーティ
|
||
actor = $game_party.members[param1]
|
||
return actor ? actor.id : 0
|
||
when 7 # その他
|
||
case param1
|
||
when 0 # マップ ID
|
||
return $game_map.map_id
|
||
when 1 # パーティ人数
|
||
return $game_party.members.size
|
||
when 2 # ゴールド
|
||
return $game_party.gold
|
||
when 3 # 歩数
|
||
return $game_party.steps
|
||
when 4 # プレイ時間
|
||
return Graphics.frame_count / Graphics.frame_rate
|
||
when 5 # タイマー
|
||
return $game_timer.sec
|
||
when 6 # セーブ回数
|
||
return $game_system.save_count
|
||
when 7 # 戦闘回数
|
||
return $game_system.battle_count
|
||
end
|
||
end
|
||
return 0
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● 変数の操作を実行
|
||
#--------------------------------------------------------------------------
|
||
def operate_variable(variable_id, operation_type, value)
|
||
begin
|
||
case operation_type
|
||
when 0 # 代入
|
||
$game_variables[variable_id] = value
|
||
when 1 # 加算
|
||
$game_variables[variable_id] += value
|
||
when 2 # 減算
|
||
$game_variables[variable_id] -= value
|
||
when 3 # 乗算
|
||
$game_variables[variable_id] *= value
|
||
when 4 # 除算
|
||
$game_variables[variable_id] /= value
|
||
when 5 # 剰余
|
||
$game_variables[variable_id] %= value
|
||
end
|
||
rescue
|
||
$game_variables[variable_id] = 0
|
||
end
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● セルフスイッチの操作
|
||
#--------------------------------------------------------------------------
|
||
def command_123
|
||
if @event_id > 0
|
||
key = [@map_id, @event_id, @params[0]]
|
||
$game_self_switches[key] = (@params[1] == 0)
|
||
end
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● タイマーの操作
|
||
#--------------------------------------------------------------------------
|
||
def command_124
|
||
if @params[0] == 0 # 始動
|
||
$game_timer.start(@params[1] * Graphics.frame_rate)
|
||
else # 停止
|
||
$game_timer.stop
|
||
end
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● 所持金の増減
|
||
#--------------------------------------------------------------------------
|
||
def command_125
|
||
value = operate_value(@params[0], @params[1], @params[2])
|
||
$game_party.gain_gold(value)
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● アイテムの増減
|
||
#--------------------------------------------------------------------------
|
||
def command_126
|
||
value = operate_value(@params[1], @params[2], @params[3])
|
||
$game_party.gain_item($data_items[@params[0]], value)
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● 武器の増減
|
||
#--------------------------------------------------------------------------
|
||
def command_127
|
||
value = operate_value(@params[1], @params[2], @params[3])
|
||
$game_party.gain_item($data_weapons[@params[0]], value, @params[4])
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● 防具の増減
|
||
#--------------------------------------------------------------------------
|
||
def command_128
|
||
value = operate_value(@params[1], @params[2], @params[3])
|
||
$game_party.gain_item($data_armors[@params[0]], value, @params[4])
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● メンバーの入れ替え
|
||
#--------------------------------------------------------------------------
|
||
def command_129
|
||
actor = $game_actors[@params[0]]
|
||
if actor
|
||
if @params[1] == 0 # 加える
|
||
if @params[2] == 1 # 初期化
|
||
$game_actors[@params[0]].setup(@params[0])
|
||
end
|
||
$game_party.add_actor(@params[0])
|
||
else # 外す
|
||
$game_party.remove_actor(@params[0])
|
||
end
|
||
end
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● 戦闘 BGM の変更
|
||
#--------------------------------------------------------------------------
|
||
def command_132
|
||
$game_system.battle_bgm = @params[0]
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● 戦闘終了 ME の変更
|
||
#--------------------------------------------------------------------------
|
||
def command_133
|
||
$game_system.battle_end_me = @params[0]
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● セーブ禁止の変更
|
||
#--------------------------------------------------------------------------
|
||
def command_134
|
||
$game_system.save_disabled = (@params[0] == 0)
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● メニュー禁止の変更
|
||
#--------------------------------------------------------------------------
|
||
def command_135
|
||
$game_system.menu_disabled = (@params[0] == 0)
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● エンカウント禁止の変更
|
||
#--------------------------------------------------------------------------
|
||
def command_136
|
||
$game_system.encounter_disabled = (@params[0] == 0)
|
||
$game_player.make_encounter_count
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● 並び替え禁止の変更
|
||
#--------------------------------------------------------------------------
|
||
def command_137
|
||
$game_system.formation_disabled = (@params[0] == 0)
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● ウィンドウカラーの変更
|
||
#--------------------------------------------------------------------------
|
||
def command_138
|
||
$game_system.window_tone = @params[0]
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● 場所移動
|
||
#--------------------------------------------------------------------------
|
||
def command_201
|
||
return if $game_party.in_battle
|
||
Fiber.yield while $game_player.transfer? || $game_message.visible
|
||
if @params[0] == 0 # 直接指定
|
||
map_id = @params[1]
|
||
x = @params[2]
|
||
y = @params[3]
|
||
else # 変数で指定
|
||
map_id = $game_variables[@params[1]]
|
||
x = $game_variables[@params[2]]
|
||
y = $game_variables[@params[3]]
|
||
end
|
||
$game_player.reserve_transfer(map_id, x, y, @params[4])
|
||
$game_temp.fade_type = @params[5]
|
||
Fiber.yield while $game_player.transfer?
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● 乗り物の位置設定
|
||
#--------------------------------------------------------------------------
|
||
def command_202
|
||
if @params[1] == 0 # 直接指定
|
||
map_id = @params[2]
|
||
x = @params[3]
|
||
y = @params[4]
|
||
else # 変数で指定
|
||
map_id = $game_variables[@params[2]]
|
||
x = $game_variables[@params[3]]
|
||
y = $game_variables[@params[4]]
|
||
end
|
||
vehicle = $game_map.vehicles[@params[0]]
|
||
vehicle.set_location(map_id, x, y) if vehicle
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● イベントの位置設定
|
||
#--------------------------------------------------------------------------
|
||
def command_203
|
||
character = get_character(@params[0])
|
||
if character
|
||
if @params[1] == 0 # 直接指定
|
||
character.moveto(@params[2], @params[3])
|
||
elsif @params[1] == 1 # 変数で指定
|
||
new_x = $game_variables[@params[2]]
|
||
new_y = $game_variables[@params[3]]
|
||
character.moveto(new_x, new_y)
|
||
else # 他のイベントと交換
|
||
character2 = get_character(@params[2])
|
||
character.swap(character2) if character2
|
||
end
|
||
character.set_direction(@params[4]) if @params[4] > 0
|
||
end
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● マップのスクロール
|
||
#--------------------------------------------------------------------------
|
||
def command_204
|
||
return if $game_party.in_battle
|
||
Fiber.yield while $game_map.scrolling?
|
||
$game_map.start_scroll(@params[0], @params[1], @params[2])
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● 移動ルートの設定
|
||
#--------------------------------------------------------------------------
|
||
def command_205
|
||
$game_map.refresh if $game_map.need_refresh
|
||
character = get_character(@params[0])
|
||
if character
|
||
character.force_move_route(@params[1])
|
||
Fiber.yield while character.move_route_forcing if @params[1].wait
|
||
end
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● 乗り物の乗降
|
||
#--------------------------------------------------------------------------
|
||
def command_206
|
||
$game_player.get_on_off_vehicle
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● 透明状態の変更
|
||
#--------------------------------------------------------------------------
|
||
def command_211
|
||
$game_player.transparent = (@params[0] == 0)
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● アニメーションの表示
|
||
#--------------------------------------------------------------------------
|
||
def command_212
|
||
character = get_character(@params[0])
|
||
if character
|
||
character.animation_id = @params[1]
|
||
Fiber.yield while character.animation_id > 0 if @params[2]
|
||
end
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● フキダシアイコンの表示
|
||
#--------------------------------------------------------------------------
|
||
def command_213
|
||
character = get_character(@params[0])
|
||
if character
|
||
character.balloon_id = @params[1]
|
||
Fiber.yield while character.balloon_id > 0 if @params[2]
|
||
end
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● イベントの一時消去
|
||
#--------------------------------------------------------------------------
|
||
def command_214
|
||
$game_map.events[@event_id].erase if same_map? && @event_id > 0
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● 隊列歩行の変更
|
||
#--------------------------------------------------------------------------
|
||
def command_216
|
||
$game_player.followers.visible = (@params[0] == 0)
|
||
$game_player.refresh
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● 隊列メンバーの集合
|
||
#--------------------------------------------------------------------------
|
||
def command_217
|
||
return if $game_party.in_battle
|
||
$game_player.followers.gather
|
||
Fiber.yield until $game_player.followers.gather?
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● 画面のフェードアウト
|
||
#--------------------------------------------------------------------------
|
||
def command_221
|
||
Fiber.yield while $game_message.visible
|
||
screen.start_fadeout(30)
|
||
wait(30)
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● 画面のフェードイン
|
||
#--------------------------------------------------------------------------
|
||
def command_222
|
||
Fiber.yield while $game_message.visible
|
||
screen.start_fadein(30)
|
||
wait(30)
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● 画面の色調変更
|
||
#--------------------------------------------------------------------------
|
||
def command_223
|
||
screen.start_tone_change(@params[0], @params[1])
|
||
wait(@params[1]) if @params[2]
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● 画面のフラッシュ
|
||
#--------------------------------------------------------------------------
|
||
def command_224
|
||
screen.start_flash(@params[0], @params[1])
|
||
wait(@params[1]) if @params[2]
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● 画面のシェイク
|
||
#--------------------------------------------------------------------------
|
||
def command_225
|
||
screen.start_shake(@params[0], @params[1], @params[2])
|
||
wait(@params[1]) if @params[2]
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● ウェイト
|
||
#--------------------------------------------------------------------------
|
||
def command_230
|
||
wait(@params[0])
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● ピクチャの表示
|
||
#--------------------------------------------------------------------------
|
||
def command_231
|
||
if @params[3] == 0 # 直接指定
|
||
x = @params[4]
|
||
y = @params[5]
|
||
else # 変数で指定
|
||
x = $game_variables[@params[4]]
|
||
y = $game_variables[@params[5]]
|
||
end
|
||
screen.pictures[@params[0]].show(@params[1], @params[2],
|
||
x, y, @params[6], @params[7], @params[8], @params[9])
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● ピクチャの移動
|
||
#--------------------------------------------------------------------------
|
||
def command_232
|
||
if @params[3] == 0 # 直接指定
|
||
x = @params[4]
|
||
y = @params[5]
|
||
else # 変数で指定
|
||
x = $game_variables[@params[4]]
|
||
y = $game_variables[@params[5]]
|
||
end
|
||
screen.pictures[@params[0]].move(@params[2], x, y, @params[6],
|
||
@params[7], @params[8], @params[9], @params[10])
|
||
wait(@params[10]) if @params[11]
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● ピクチャの回転
|
||
#--------------------------------------------------------------------------
|
||
def command_233
|
||
screen.pictures[@params[0]].rotate(@params[1])
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● ピクチャの色調変更
|
||
#--------------------------------------------------------------------------
|
||
def command_234
|
||
screen.pictures[@params[0]].start_tone_change(@params[1], @params[2])
|
||
wait(@params[2]) if @params[3]
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● ピクチャの消去
|
||
#--------------------------------------------------------------------------
|
||
def command_235
|
||
screen.pictures[@params[0]].erase
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● 天候の設定
|
||
#--------------------------------------------------------------------------
|
||
def command_236
|
||
return if $game_party.in_battle
|
||
screen.change_weather(@params[0], @params[1], @params[2])
|
||
wait(@params[2]) if @params[3]
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● BGM の演奏
|
||
#--------------------------------------------------------------------------
|
||
def command_241
|
||
@params[0].play
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● BGM のフェードアウト
|
||
#--------------------------------------------------------------------------
|
||
def command_242
|
||
RPG::BGM.fade(@params[0] * 1000)
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● BGM の保存
|
||
#--------------------------------------------------------------------------
|
||
def command_243
|
||
$game_system.save_bgm
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● BGM の再開
|
||
#--------------------------------------------------------------------------
|
||
def command_244
|
||
$game_system.replay_bgm
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● BGS の演奏
|
||
#--------------------------------------------------------------------------
|
||
def command_245
|
||
@params[0].play
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● BGS のフェードアウト
|
||
#--------------------------------------------------------------------------
|
||
def command_246
|
||
RPG::BGS.fade(@params[0] * 1000)
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● ME の演奏
|
||
#--------------------------------------------------------------------------
|
||
def command_249
|
||
@params[0].play
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● SE の演奏
|
||
#--------------------------------------------------------------------------
|
||
def command_250
|
||
@params[0].play
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● SE の停止
|
||
#--------------------------------------------------------------------------
|
||
def command_251
|
||
RPG::SE.stop
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● ムービーの再生
|
||
#--------------------------------------------------------------------------
|
||
def command_261
|
||
Fiber.yield while $game_message.visible
|
||
Fiber.yield
|
||
name = @params[0]
|
||
Graphics.play_movie('Movies/' + name) unless name.empty?
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● マップ名表示の変更
|
||
#--------------------------------------------------------------------------
|
||
def command_281
|
||
$game_map.name_display = (@params[0] == 0)
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● タイルセットの変更
|
||
#--------------------------------------------------------------------------
|
||
def command_282
|
||
$game_map.change_tileset(@params[0])
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● 戦闘背景の変更
|
||
#--------------------------------------------------------------------------
|
||
def command_283
|
||
$game_map.change_battleback(@params[0], @params[1])
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● 遠景の変更
|
||
#--------------------------------------------------------------------------
|
||
def command_284
|
||
$game_map.change_parallax(@params[0], @params[1], @params[2],
|
||
@params[3], @params[4])
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● 指定位置の情報取得
|
||
#--------------------------------------------------------------------------
|
||
def command_285
|
||
if @params[2] == 0 # 直接指定
|
||
x = @params[3]
|
||
y = @params[4]
|
||
else # 変数で指定
|
||
x = $game_variables[@params[3]]
|
||
y = $game_variables[@params[4]]
|
||
end
|
||
case @params[1]
|
||
when 0 # 地形タグ
|
||
value = $game_map.terrain_tag(x, y)
|
||
when 1 # イベント ID
|
||
value = $game_map.event_id_xy(x, y)
|
||
when 2..4 # タイル ID
|
||
value = $game_map.tile_id(x, y, @params[1] - 2)
|
||
else # リージョン ID
|
||
value = $game_map.region_id(x, y)
|
||
end
|
||
$game_variables[@params[0]] = value
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● バトルの処理
|
||
#--------------------------------------------------------------------------
|
||
def command_301
|
||
return if $game_party.in_battle
|
||
if @params[0] == 0 # 直接指定
|
||
troop_id = @params[1]
|
||
elsif @params[0] == 1 # 変数で指定
|
||
troop_id = $game_variables[@params[1]]
|
||
else # マップ指定の敵グループ
|
||
troop_id = $game_player.make_encounter_troop_id
|
||
end
|
||
if $data_troops[troop_id]
|
||
BattleManager.setup(troop_id, @params[2], @params[3])
|
||
BattleManager.event_proc = Proc.new {|n| @branch[@indent] = n }
|
||
$game_player.make_encounter_count
|
||
SceneManager.call(Scene_Battle)
|
||
end
|
||
Fiber.yield
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● 勝った場合
|
||
#--------------------------------------------------------------------------
|
||
def command_601
|
||
command_skip if @branch[@indent] != 0
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● 逃げた場合
|
||
#--------------------------------------------------------------------------
|
||
def command_602
|
||
command_skip if @branch[@indent] != 1
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● 負けた場合
|
||
#--------------------------------------------------------------------------
|
||
def command_603
|
||
command_skip if @branch[@indent] != 2
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● ショップの処理
|
||
#--------------------------------------------------------------------------
|
||
def command_302
|
||
return if $game_party.in_battle
|
||
goods = [@params]
|
||
while next_event_code == 605
|
||
@index += 1
|
||
goods.push(@list[@index].parameters)
|
||
end
|
||
SceneManager.call(Scene_Shop)
|
||
SceneManager.scene.prepare(goods, @params[4])
|
||
Fiber.yield
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● 名前入力の処理
|
||
#--------------------------------------------------------------------------
|
||
def command_303
|
||
return if $game_party.in_battle
|
||
if $data_actors[@params[0]]
|
||
SceneManager.call(Scene_Name)
|
||
SceneManager.scene.prepare(@params[0], @params[1])
|
||
Fiber.yield
|
||
end
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● HP の増減
|
||
#--------------------------------------------------------------------------
|
||
def command_311
|
||
value = operate_value(@params[2], @params[3], @params[4])
|
||
iterate_actor_var(@params[0], @params[1]) do |actor|
|
||
next if actor.dead?
|
||
actor.change_hp(value, @params[5])
|
||
actor.perform_collapse_effect if actor.dead?
|
||
end
|
||
SceneManager.goto(Scene_Gameover) if $game_party.all_dead?
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● MP の増減
|
||
#--------------------------------------------------------------------------
|
||
def command_312
|
||
value = operate_value(@params[2], @params[3], @params[4])
|
||
iterate_actor_var(@params[0], @params[1]) do |actor|
|
||
actor.mp += value
|
||
end
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● ステートの変更
|
||
#--------------------------------------------------------------------------
|
||
def command_313
|
||
iterate_actor_var(@params[0], @params[1]) do |actor|
|
||
already_dead = actor.dead?
|
||
if @params[2] == 0
|
||
actor.add_state(@params[3])
|
||
else
|
||
actor.remove_state(@params[3])
|
||
end
|
||
actor.perform_collapse_effect if actor.dead? && !already_dead
|
||
end
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● 全回復
|
||
#--------------------------------------------------------------------------
|
||
def command_314
|
||
iterate_actor_var(@params[0], @params[1]) do |actor|
|
||
actor.recover_all
|
||
end
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● 経験値の増減
|
||
#--------------------------------------------------------------------------
|
||
def command_315
|
||
value = operate_value(@params[2], @params[3], @params[4])
|
||
iterate_actor_var(@params[0], @params[1]) do |actor|
|
||
actor.change_exp(actor.exp + value, @params[5])
|
||
end
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● レベルの増減
|
||
#--------------------------------------------------------------------------
|
||
def command_316
|
||
value = operate_value(@params[2], @params[3], @params[4])
|
||
iterate_actor_var(@params[0], @params[1]) do |actor|
|
||
actor.change_level(actor.level + value, @params[5])
|
||
end
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● 能力値の増減
|
||
#--------------------------------------------------------------------------
|
||
def command_317
|
||
value = operate_value(@params[3], @params[4], @params[5])
|
||
iterate_actor_var(@params[0], @params[1]) do |actor|
|
||
actor.add_param(@params[2], value)
|
||
end
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● スキルの増減
|
||
#--------------------------------------------------------------------------
|
||
def command_318
|
||
iterate_actor_var(@params[0], @params[1]) do |actor|
|
||
if @params[2] == 0
|
||
actor.learn_skill(@params[3])
|
||
else
|
||
actor.forget_skill(@params[3])
|
||
end
|
||
end
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● 装備の変更
|
||
#--------------------------------------------------------------------------
|
||
def command_319
|
||
actor = $game_actors[@params[0]]
|
||
actor.change_equip_by_id(@params[1], @params[2]) if actor
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● 名前の変更
|
||
#--------------------------------------------------------------------------
|
||
def command_320
|
||
actor = $game_actors[@params[0]]
|
||
actor.name = @params[1] if actor
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● 職業の変更
|
||
#--------------------------------------------------------------------------
|
||
def command_321
|
||
actor = $game_actors[@params[0]]
|
||
actor.change_class(@params[1]) if actor && $data_classes[@params[1]]
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● アクターのグラフィック変更
|
||
#--------------------------------------------------------------------------
|
||
def command_322
|
||
actor = $game_actors[@params[0]]
|
||
if actor
|
||
actor.set_graphic(@params[1], @params[2], @params[3], @params[4])
|
||
end
|
||
$game_player.refresh
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● 乗り物のグラフィック変更
|
||
#--------------------------------------------------------------------------
|
||
def command_323
|
||
vehicle = $game_map.vehicles[@params[0]]
|
||
vehicle.set_graphic(@params[1], @params[2]) if vehicle
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● 二つ名の変更
|
||
#--------------------------------------------------------------------------
|
||
def command_324
|
||
actor = $game_actors[@params[0]]
|
||
actor.nickname = @params[1] if actor
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● 敵キャラの HP 増減
|
||
#--------------------------------------------------------------------------
|
||
def command_331
|
||
value = operate_value(@params[1], @params[2], @params[3])
|
||
iterate_enemy_index(@params[0]) do |enemy|
|
||
return if enemy.dead?
|
||
enemy.change_hp(value, @params[4])
|
||
enemy.perform_collapse_effect if enemy.dead?
|
||
end
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● 敵キャラの MP 増減
|
||
#--------------------------------------------------------------------------
|
||
def command_332
|
||
value = operate_value(@params[1], @params[2], @params[3])
|
||
iterate_enemy_index(@params[0]) do |enemy|
|
||
enemy.mp += value
|
||
end
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● 敵キャラのステート変更
|
||
#--------------------------------------------------------------------------
|
||
def command_333
|
||
iterate_enemy_index(@params[0]) do |enemy|
|
||
already_dead = enemy.dead?
|
||
if @params[1] == 0
|
||
enemy.add_state(@params[2])
|
||
else
|
||
enemy.remove_state(@params[2])
|
||
end
|
||
enemy.perform_collapse_effect if enemy.dead? && !already_dead
|
||
end
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● 敵キャラの全回復
|
||
#--------------------------------------------------------------------------
|
||
def command_334
|
||
iterate_enemy_index(@params[0]) do |enemy|
|
||
enemy.recover_all
|
||
end
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● 敵キャラの出現
|
||
#--------------------------------------------------------------------------
|
||
def command_335
|
||
iterate_enemy_index(@params[0]) do |enemy|
|
||
enemy.appear
|
||
$game_troop.make_unique_names
|
||
end
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● 敵キャラの変身
|
||
#--------------------------------------------------------------------------
|
||
def command_336
|
||
iterate_enemy_index(@params[0]) do |enemy|
|
||
enemy.transform(@params[1])
|
||
$game_troop.make_unique_names
|
||
end
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● 戦闘アニメーションの表示
|
||
#--------------------------------------------------------------------------
|
||
def command_337
|
||
iterate_enemy_index(@params[0]) do |enemy|
|
||
enemy.animation_id = @params[1] if enemy.alive?
|
||
end
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● 戦闘行動の強制
|
||
#--------------------------------------------------------------------------
|
||
def command_339
|
||
iterate_battler(@params[0], @params[1]) do |battler|
|
||
next if battler.death_state?
|
||
battler.force_action(@params[2], @params[3])
|
||
BattleManager.force_action(battler)
|
||
Fiber.yield while BattleManager.action_forced?
|
||
end
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● バトルの中断
|
||
#--------------------------------------------------------------------------
|
||
def command_340
|
||
BattleManager.abort
|
||
Fiber.yield
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● メニュー画面を開く
|
||
#--------------------------------------------------------------------------
|
||
def command_351
|
||
return if $game_party.in_battle
|
||
SceneManager.call(Scene_Menu)
|
||
Window_MenuCommand::init_command_position
|
||
Fiber.yield
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● セーブ画面を開く
|
||
#--------------------------------------------------------------------------
|
||
def command_352
|
||
return if $game_party.in_battle
|
||
SceneManager.call(Scene_Save)
|
||
Fiber.yield
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● ゲームオーバー
|
||
#--------------------------------------------------------------------------
|
||
def command_353
|
||
SceneManager.goto(Scene_Gameover)
|
||
Fiber.yield
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● タイトル画面に戻す
|
||
#--------------------------------------------------------------------------
|
||
def command_354
|
||
SceneManager.goto(Scene_Title)
|
||
Fiber.yield
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● スクリプト
|
||
#--------------------------------------------------------------------------
|
||
def command_355
|
||
script = @list[@index].parameters[0] + "\n"
|
||
while next_event_code == 655
|
||
@index += 1
|
||
script += @list[@index].parameters[0] + "\n"
|
||
end
|
||
eval(script)
|
||
end
|
||
end
|