RPGツクールXP/VX用のRGSS素材です。
一部英語版対応です。
(A few materials can be used for English RPG MAKER XP/VX.)
競合率はルファーの独断と偏見なのでたまにハズレます。
#==============================================================================
# ■ ダブルプレイヤーモード (分割定義 7)
#------------------------------------------------------------------------------
# 2 つのデータを読み込んで対戦するシーンクラスの定義です。
# ゲーム内で使うには、 $scene = Scene_DoublePlayersLoad.new というスクリプトを
# どこかに挿入する必要があります。
# (C) ルファー
# HP https://tkoolerlufar.pages.dev/
#==============================================================================
#----------------------------------------------------------------------------
# ◆ Scene_DoublePlayersBattle クラス
#----------------------------------------------------------------------------
class Scene_DoublePlayersBattle
#--------------------------------------------------------------------------
# ● プレバトルフェーズ開始
#--------------------------------------------------------------------------
def start_phase1
@phase = 1
for i in 0..1
$game_doubleplayers[i].clear_actions
end
end
#--------------------------------------------------------------------------
# ● フレーム更新 (プレバトルフェーズ)
#--------------------------------------------------------------------------
def update_phase1
start_phase2 unless judge
end
#--------------------------------------------------------------------------
# ● アフターバトルフェーズ開始
#--------------------------------------------------------------------------
def start_phase4
@phase = 4
Audio.bgm_stop
if @winner == -1
$game_system.me_play($data_system.gameover_me)
@help_window.set_text("引き分けになりました。")
@help_window.pause = true
else
$game_system.me_play($game_system.battle_end_me)
@help_window.set_text(sprintf("%dP が勝利しました!",
@winner + 1, $game_doubleplayers[@winner].actors[0].name))
@help_window.pause = true
end
end
#--------------------------------------------------------------------------
# ● フレーム更新 (アフターバトルフェーズ)
#--------------------------------------------------------------------------
def update_phase4
if Input.trigger?(Input::C)
$game_system.se_play($data_system.decision_se)
battle_end
end
end
#--------------------------------------------------------------------------
# ● コマンドフェーズ開始
#--------------------------------------------------------------------------
def start_phase2
@phase = 2
@player_index = 0
@actor_index = -1
@active_battler = nil
phase2_next_actor
end
#--------------------------------------------------------------------------
# ● 次のアクターのコマンド入力へ
#--------------------------------------------------------------------------
def phase2_next_actor
begin
if @active_battler != nil
@active_battler.blink = false
end
if @actor_index == $game_doubleplayers[@player_index].actors.size - 1
if @player_index == 0
@player_index = 1
@actor_index = -1
else
start_phase3
return
end
end
@actor_index += 1
@active_battler =
$game_doubleplayers[@player_index].actors[@actor_index]
@active_battler.blink = true
end until @active_battler.inputable?
phase2_setup_command_window
end
#--------------------------------------------------------------------------
# ● 前のアクターのコマンド入力へ
#--------------------------------------------------------------------------
def phase2_prior_actor
before_actor_index = @actor_index
begin
if @active_battler != nil
@active_battler.blink = false
if @actor_index == 0
@actor_index = before_actor_index
@active_battler =
$game_doubleplayers[@player_index].actors[@actor_index]
@active_battler.blink = true
return
end
end
@actor_index -= 1
@active_battler =
$game_doubleplayers[@player_index].actors[@actor_index]
@active_battler.blink = true
end until @active_battler.inputable?
$game_system.se_play($data_system.cancel_se)
phase2_setup_command_window
end
#--------------------------------------------------------------------------
# ● コマンドウィンドウのセットアップ
#--------------------------------------------------------------------------
def phase2_setup_command_window
@command_window.mode = 1
@command_window.help_window = @help_window
@command_window.index = 0
end
#--------------------------------------------------------------------------
# ● フレーム更新 (コマンドフェーズ)
#--------------------------------------------------------------------------
def update_phase2
if @enemy_arrow != nil
update_phase2_enemy_select
elsif @actor_arrow != nil
update_phase2_actor_select
elsif @command_window.mode == 1
update_phase2_basic_command
elsif @command_window.mode == 2
update_phase2_skill_select
end
end
#--------------------------------------------------------------------------
# ● フレーム更新 (コマンドフェーズ : 基本コマンド)
#--------------------------------------------------------------------------
def update_phase2_basic_command
@command_window.update
if Input.trigger?(Input::B)
phase2_prior_actor
return
end
if Input.trigger?(Input::C)
case @command_window.index
when 0
$game_system.se_play($data_system.decision_se)
@active_battler.current_action.kind = 0
@active_battler.current_action.basic = 0
@selected_attack = true
start_enemy_select
when 1
$game_system.se_play($data_system.decision_se)
@active_battler.current_action.kind = 1
start_skill_select
@selected_attack = false
when 2
$game_system.se_play($data_system.decision_se)
@active_battler.current_action.kind = 0
@active_battler.current_action.basic = 1
phase2_next_actor
end
end
end
#--------------------------------------------------------------------------
# ● フレーム更新 (コマンドフェーズ : スキル選択)
#--------------------------------------------------------------------------
def update_phase2_skill_select
@command_window.update
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
end_skill_select
return
end
if Input.trigger?(Input::C)
@skill = @command_window.skill
if @skill == nil or not @active_battler.skill_can_use?(@skill.id)
$game_system.se_play($data_system.buzzer_se)
return
end
$game_system.se_play($data_system.decision_se)
@active_battler.current_action.skill_id = @skill.id
if @skill.scope == 1
start_enemy_select
elsif @skill.scope == 3 or @skill.scope == 5
start_actor_select
else
end_skill_select
phase2_next_actor
end
return
end
end
#--------------------------------------------------------------------------
# ● フレーム更新 (コマンドフェーズ : エネミー選択)
#--------------------------------------------------------------------------
def update_phase2_enemy_select
@enemy_arrow.update
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
end_enemy_select
return
end
if Input.trigger?(Input::C)
$game_system.se_play($data_system.decision_se)
@active_battler.current_action.target_index = @enemy_arrow.index
end_enemy_select
if @skill_window != nil
end_skill_select
end
if @item_window != nil
end_item_select
end
phase2_next_actor
end
end
#--------------------------------------------------------------------------
# ● フレーム更新 (コマンドフェーズ : アクター選択)
#--------------------------------------------------------------------------
def update_phase2_actor_select
@actor_arrow.update
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
end_actor_select
return
end
if Input.trigger?(Input::C)
$game_system.se_play($data_system.decision_se)
@active_battler.current_action.target_index = @actor_arrow.index
end_actor_select
if @skill_window != nil
end_skill_select
end
if @item_window != nil
end_item_select
end
phase2_next_actor
end
end
#--------------------------------------------------------------------------
# ● エネミー選択開始
#--------------------------------------------------------------------------
def start_enemy_select
if @player_index == 0
@enemy_arrow = Arrow_DoublePlayers.new(@spriteset.viewport2, 1, true)
else
@enemy_arrow = Arrow_DoublePlayers.new(@spriteset.viewport1, 0, true)
end
@enemy_arrow.help_window = @help_window
end
#--------------------------------------------------------------------------
# ● エネミー選択終了
#--------------------------------------------------------------------------
def end_enemy_select
@enemy_arrow.dispose
@enemy_arrow = nil
end
#--------------------------------------------------------------------------
# ● アクター選択開始
#--------------------------------------------------------------------------
def start_actor_select
if @player_index == 0
@actor_arrow = Arrow_DoublePlayers.new(@spriteset.viewport1, 0, false)
else
@actor_arrow = Arrow_DoublePlayers.new(@spriteset.viewport2, 1, false)
end
@actor_arrow.index = @actor_index
@actor_arrow.help_window = @help_window
end
#--------------------------------------------------------------------------
# ● アクター選択終了
#--------------------------------------------------------------------------
def end_actor_select
@actor_arrow.dispose
@actor_arrow = nil
end
#--------------------------------------------------------------------------
# ● スキル選択開始
#--------------------------------------------------------------------------
def start_skill_select
@command_window.actor = @active_battler
@command_window.mode = 2
@command_window.index = 0
end
#--------------------------------------------------------------------------
# ● スキル選択終了
#--------------------------------------------------------------------------
def end_skill_select
@command_window.mode = 1
@command_window.index = 1
end
end
戻る