i'm using the leatest version of the Pokémon STARTER KIT and it's unfriendly resolution scripting...
i thught about edding a Pokémon cahnging script into the battle system so i did a copy of the Scene_Pokémon script and called it Scene_Pokémon_Switch_Battle
here it is (not useble for now...):
now...
i'm using these scripts in my battle system:
1.
2.
3.
4.
i thught about edding a Pokémon cahnging script into the battle system so i did a copy of the Scene_Pokémon script and called it Scene_Pokémon_Switch_Battle
here it is (not useble for now...):
Code:
#==============================================================================
# ■Scene_Pokémon_Switch_Battle
#------------------------------------------------------------------------------
#  ゲーム終了画é¢ã®å‡¦ç†ã‚’è¡Œã†ã‚¯ãƒ©ã‚¹ã§ã™ã€‚
#==============================================================================
class Scene_Pokémon_Switch_Battle
def initialize(actor_index=0)
@actor_index = actor_index
end
#--------------------------------------------------------------------------
# - main
#--------------------------------------------------------------------------
def main
@window = Window_MenuStatus.new
@window.index = @actor_index
@window.z = 99998
s1 = "Summary"
s2 = "Switch"
s3 = "End"
commands = [s1,s2,s3]
@command = Window_Command.new(124, commands)
@command.x = 0
@command.y = $height - @command.height
@command.z = 99999
@command.active = false
@command.visible = false
@picture = Sprite.new
@picture.bitmap = RPG::Cache.picture("pokeselection")
@picture.zoom_x, @picture.zoom_y = 2,2
@gfx = Window_MenuGraphic.new(@window.index)
@changer = 0
@where = 0
@checker = 0
@update_switch = false
Graphics.transition
loop do
Graphics.update
Input.update
update
if $scene != self
break
end
end
Graphics.freeze
@window.dispose
@command.dispose
@picture.dispose
@gfx.dispose
end
#--------------------------------------------------------------------------
# - update
#--------------------------------------------------------------------------
def update
@window.update
@command.update
@picture.update
@gfx.update(@window.index)
if @update_switch
update_switch
return
end
if Input.trigger?(Input::B)
if @window.active == true
$game_system.se_play($data_system.cancel_se)
# end_???_select
return
else
$game_system.se_play($data_system.cancel_se)
@command.active = false
@command.visible = false
@window.active = true
return
end
end
if Input.trigger?(Input::C)
if @command.active
case @command.commands[@command.index]
when "Summary"
$game_system.se_play($data_system.cancel_se)
$scene = Scene_Status_Pokémon_Battle.new(@window.index)
when "Switch"
@command.active = false
@command.visible = false
@window.active = true
@changer = $game_party.actors[@window.index]
@where = @window.index
@checker = 1
@update_switch = true
when "End"
# end_???_select
end
else
@command.active = true
@command.visible = true
@command.active = true
@window.active = false
return
end
end
end
def update_switch
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
@command.active = true
@command.visible = true
@window.active = false
@window.index = -1
@update_switch = false
return
end
if Input.trigger?(Input::C)
case @command.commands[@command.index]
when "Switch"
$game_system.se_play($data_system.decision_se)
$game_party.actors[@where] = $game_party.actors[@window.index]
$game_party.actors[@window.index] = @changer
$game_variables[2] = @changer.name
@checker = 0
@window.refresh
@update_switch = false
end
return
end
end
#--------------------------------------------------------------------------
# - end (class)
#--------------------------------------------------------------------------
end
#==============================================================================
# â– Window_MenuStatus
#------------------------------------------------------------------------------
#  メニュー画é¢ã§ãƒ‘ーティメンãƒãƒ¼ã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ã‚’表示ã™ã‚‹ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã§ã™ã€‚
#==============================================================================
class Window_MenuStatus_Battle < Window_Selectable
#--------------------------------------------------------------------------
# ◠オブジェクトåˆæœŸåŒ–
#--------------------------------------------------------------------------
def initialize
super(0, 0, 480, 320)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = $fontface
self.contents.font.size = $fontsize
refresh
self.active = true
self.index = 0
self.opacity = 0
self.back_opacity = 0
end
#--------------------------------------------------------------------------
# ◠リフレッシュ
#--------------------------------------------------------------------------
def refresh
self.contents.clear
@item_max = $game_party.actors.size
for i in 0...$game_party.actors.size
x = 24 + 200
y = i * 40 + 4
actor = $game_party.actors[i]
draw_actor_name(actor, x, y, state=true)
draw_hp_bar(actor, x+128, y+12)
end
end
#--------------------------------------------------------------------------
# ◠カーソルã®çŸ©å½¢æ›´æ–°
#--------------------------------------------------------------------------
def update_cursor_rect
if @index < 0
self.cursor_rect.empty
else
self.cursor_rect.set(196, @index * 40+2, 32, 32)
end
end
end
class Window_MenuGraphic < Window_Base
#--------------------------------------------------------------------------
# - Initialize the window
#--------------------------------------------------------------------------
def initialize(actor)
super(16, -8, 200, 200)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = $fontface
self.contents.font.size = $fontsize
self.opacity = 0
self.back_opacity = 0
refresh(actor)
end
#--------------------------------------------------------------------------
# - Draws the content of the window
#--------------------------------------------------------------------------
def refresh(actor)
self.contents.clear
@actor = $game_party.actors[actor]
draw_actor_Pokémon(@actor, 140, 140)
draw_pkmn_level(@actor, 24, 128, true)
end
#--------------------------------------------------------------------------
# - Update the content of the window
#--------------------------------------------------------------------------
def update(actor)
refresh(actor)
end
end
i'm using these scripts in my battle system:
1.
Code:
#==============================================================================
# ■Scene_Battle (分割定義 1)
#------------------------------------------------------------------------------
#  ãƒãƒˆãƒ«ç”»é¢ã®å‡¦ç†ã‚’è¡Œã†ã‚¯ãƒ©ã‚¹ã§ã™ã€‚
#==============================================================================
class Scene_Battle
#--------------------------------------------------------------------------
# ◠メイン処ç†
#--------------------------------------------------------------------------
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 = "Fight"
s2 = "Item"
s3 = "Pokémon"
s4 = "Run"
commands = [s1,s2,s3,s4]
@actor_command_window = Window_BattleCommand.new(160, commands)
@actor_command_window.active = false
@actor_command_window.visible = false
@help_window = Window_Help.new
@help_window.back_opacity = 160
@help_window.visible = false
@status_window = Window_BattleStatus.new
@message_window = Window_Message.new
@spriteset = Spriteset_Battle.new
@enemy_window = Window_EnemyHP.new
@wait_count = 0
@backpicture = Sprite.new
@backpicture.bitmap = RPG::Cache.picture("hp_hero")
@backpicture.zoom_x = 2
@backpicture.zoom_y = 2
@enemyhpbar = Sprite.new
@enemyhpbar.bitmap = RPG::Cache.picture("hp_enemy")
@enemyhpbar.zoom_x = 2
@enemyhpbar.zoom_y = 2
if $data_system.battle_transition == ""
Graphics.transition(20)
else
Graphics.transition(40, "Graphics/Transitions/" +
$data_system.battle_transition)
end
#$game_temp.message_text = ("Wild " + $game_troop.enemies[0].name + " appears")
$game_switches[1] = true
start_phase1
loop do
Graphics.update
Input.update
update
if $scene != self
break
end
end
$game_map.refresh
Graphics.freeze
@actor_command_window.dispose
@help_window.dispose
@status_window.dispose
@message_window.dispose
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
@enemy_window.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 judge
# 全滅判定ãŒçœŸã€ã¾ãŸã¯ãƒ‘ーティ人数㌠0 人ã®å ´åˆ
if $game_party.all_dead? or $game_party.actors.size == 0
# 敗北å¯èƒ½ã®å ´åˆ
if $game_temp.battle_can_lose
# ãƒãƒˆãƒ«é–‹å§‹å‰ã® BGM ã«æˆ»ã™
$game_system.bgm_play($game_temp.map_bgm)
# ãƒãƒˆãƒ«çµ‚了
battle_end(2)
# true ã‚’è¿”ã™
return true
end
# ゲームオーãƒãƒ¼ãƒ•ãƒ©ã‚°ã‚’セット
$game_temp.gameover = true
# true ã‚’è¿”ã™
return true
end
# エãƒãƒŸãƒ¼ãŒ 1 体ã§ã‚‚å˜åœ¨ã™ã‚Œã° false ã‚’è¿”ã™
for enemy in $game_troop.enemies
if enemy.exist?
return false
end
end
# アフターãƒãƒˆãƒ«ãƒ•ã‚§ãƒ¼ã‚ºé–‹å§‹ (å‹åˆ©)
start_phase5
# true ã‚’è¿”ã™
return true
end
#--------------------------------------------------------------------------
# â— ãƒãƒˆãƒ«çµ‚了
# result : çµæžœ (0:å‹åˆ© 1:敗北 2:逃走)
#--------------------------------------------------------------------------
def battle_end(result)
# 戦闘ä¸ãƒ•ãƒ©ã‚°ã‚’クリア
$game_temp.in_battle = false
# パーティ全員ã®ã‚¢ã‚¯ã‚·ãƒ§ãƒ³ã‚’クリア
$game_party.clear_actions
# ãƒãƒˆãƒ«ç”¨ã‚¹ãƒ†ãƒ¼ãƒˆã‚’解除
for actor in $game_party.actors
actor.remove_states_battle
end
# エãƒãƒŸãƒ¼ã‚’クリア
$game_troop.enemies.clear
# ãƒãƒˆãƒ« コールãƒãƒƒã‚¯ã‚’呼ã¶
if $game_temp.battle_proc != nil
$game_temp.battle_proc.call(result)
$game_temp.battle_proc = nil
end
# マップ画é¢ã«åˆ‡ã‚Šæ›¿ãˆ
$pkmn.show_pkmn = false
$scene = Scene_Map.new
end
#--------------------------------------------------------------------------
# â— ãƒãƒˆãƒ«ã‚¤ãƒ™ãƒ³ãƒˆã®ã‚»ãƒƒãƒˆã‚¢ãƒƒãƒ—
#--------------------------------------------------------------------------
def setup_battle_event
# ãƒãƒˆãƒ«ã‚¤ãƒ™ãƒ³ãƒˆå®Ÿè¡Œä¸ã®å ´åˆ
if $game_system.battle_interpreter.running?
return
end
# ãƒãƒˆãƒ«ã‚¤ãƒ™ãƒ³ãƒˆã®å…¨ãƒšãƒ¼ã‚¸ã‚’検索
for index in 0...$data_troops[@troop_id].pages.size
# イベントページをå–å¾—
page = $data_troops[@troop_id].pages[index]
# イベントæ¡ä»¶ã‚’ c ã§å‚ç…§å¯èƒ½ã«
c = page.condition
# 何もæ¡ä»¶ãŒæŒ‡å®šã•ã‚Œã¦ã„ãªã„å ´åˆã¯æ¬¡ã®ãƒšãƒ¼ã‚¸ã¸
unless c.turn_valid or c.enemy_valid or
c.actor_valid or c.switch_valid
next
end
# 実行済ã¿ã®å ´åˆã¯æ¬¡ã®ãƒšãƒ¼ã‚¸ã¸
if $game_temp.battle_event_flags[index]
next
end
# ターン æ¡ä»¶ç¢ºèª
if c.turn_valid
n = $game_temp.battle_turn
a = c.turn_a
b = c.turn_b
if (b == 0 and n != a) or
(b > 0 and (n < 1 or n < a or n % b != a % b))
next
end
end
# エãƒãƒŸãƒ¼ æ¡ä»¶ç¢ºèª
if c.enemy_valid
enemy = $game_troop.enemies[c.enemy_index]
if enemy == nil or enemy.hp * 100.0 / enemy.maxhp > c.enemy_hp
next
end
end
# アクター æ¡ä»¶ç¢ºèª
if c.actor_valid
actor = $game_actors[c.actor_id]
if actor == nil or actor.hp * 100.0 / actor.maxhp > c.actor_hp
next
end
end
# スイッムæ¡ä»¶ç¢ºèª
if c.switch_valid
if $game_switches[c.switch_id] == false
next
end
end
# イベントをセットアップ
$game_system.battle_interpreter.setup(page.list, 0)
# ã“ã®ãƒšãƒ¼ã‚¸ã®ã‚¹ãƒ‘ン㌠[ãƒãƒˆãƒ«] ã‹ [ターン] ã®å ´åˆ
if page.span <= 1
# 実行済ã¿ãƒ•ãƒ©ã‚°ã‚’セット
$game_temp.battle_event_flags[index] = true
end
return
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
@enemy_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
# ウィンドウを更新
@help_window.update
@actor_command_window.update
@status_window.update
@message_window.update
# スプライトセットを更新
@spriteset.update
@enemy_window.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
end
end
end
Code:
#==============================================================================
# ■Scene_Battle (分割定義 2)
#------------------------------------------------------------------------------
#  ãƒãƒˆãƒ«ç”»é¢ã®å‡¦ç†ã‚’è¡Œã†ã‚¯ãƒ©ã‚¹ã§ã™ã€‚
#==============================================================================
class Scene_Battle
#--------------------------------------------------------------------------
# ◠プレãƒãƒˆãƒ«ãƒ•ã‚§ãƒ¼ã‚ºé–‹å§‹
#--------------------------------------------------------------------------
def start_phase1
# フェーズ 1 ã«ç§»è¡Œ
@phase = 1
# パーティ全員ã®ã‚¢ã‚¯ã‚·ãƒ§ãƒ³ã‚’クリア
$game_party.clear_actions
# ãƒãƒˆãƒ«ã‚¤ãƒ™ãƒ³ãƒˆã‚’セットアップ
setup_battle_event
end
#--------------------------------------------------------------------------
# ◠フレーム更新 (プレãƒãƒˆãƒ«ãƒ•ã‚§ãƒ¼ã‚º)
#--------------------------------------------------------------------------
def update_phase1
# å‹æ•—判定
if judge
# å‹åˆ©ã¾ãŸã¯æ•—北ã®å ´åˆ : メソッド終了
return
end
# パーティコマンドフェーズ開始
start_phase2
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
end
#--------------------------------------------------------------------------
# ◠フレーム更新 (パーティコマンドフェーズ)
#--------------------------------------------------------------------------
def update_phase2
start_phase3
end
#--------------------------------------------------------------------------
# ◠フレーム更新 (パーティコマンドフェーズ : 逃ã’ã‚‹)
#--------------------------------------------------------------------------
def update_phase2_escape
# エãƒãƒŸãƒ¼ã®ç´ æ—©ã•å¹³å‡å€¤ã‚’計算
enemies_agi = 0
enemies_number = 0
for enemy in $game_troop.enemies
if enemy.exist?
enemies_agi += enemy.agi
enemies_number += 1
end
end
if enemies_number > 0
enemies_agi /= enemies_number
end
# アクターã®ç´ æ—©ã•å¹³å‡å€¤ã‚’計算
actors_agi = 0
actors_number = 0
for actor in $game_party.actors
if actor.exist?
actors_agi += actor.agi
actors_number += 1
end
end
if actors_number > 0
actors_agi /= actors_number
end
# 逃走æˆåŠŸåˆ¤å®š
success = rand(100) < 50 * actors_agi / enemies_agi
# 逃走æˆåŠŸã®å ´åˆ
if success
# 逃走 SE ã‚’æ¼”å¥
$game_system.se_play($data_system.escape_se)
# ãƒãƒˆãƒ«é–‹å§‹å‰ã® BGM ã«æˆ»ã™
$game_system.bgm_play($game_temp.map_bgm)
# ãƒãƒˆãƒ«çµ‚了
battle_end(1)
# 逃走失敗ã®å ´åˆ
else
# パーティ全員ã®ã‚¢ã‚¯ã‚·ãƒ§ãƒ³ã‚’クリア
$game_party.clear_actions
# メインフェーズ開始
start_phase4
end
end
#--------------------------------------------------------------------------
# ◠アフターãƒãƒˆãƒ«ãƒ•ã‚§ãƒ¼ã‚ºé–‹å§‹
#--------------------------------------------------------------------------
def start_phase5
# フェーズ 5 ã«ç§»è¡Œ
@phase = 5
# ãƒãƒˆãƒ«çµ‚了 ME ã‚’æ¼”å¥
$game_system.me_play($game_system.battle_end_me)
# ãƒãƒˆãƒ«é–‹å§‹å‰ã® BGM ã«æˆ»ã™
$game_system.bgm_play($game_temp.map_bgm)
# EXPã€ã‚´ãƒ¼ãƒ«ãƒ‰ã€ãƒˆãƒ¬ã‚¸ãƒ£ãƒ¼ã‚’åˆæœŸåŒ–
exp = 0
gold = 0
treasures = []
# ループ
for enemy in $game_troop.enemies
# エãƒãƒŸãƒ¼ãŒéš れ状態ã§ãªã„å ´åˆ
unless enemy.hidden
# ç²å¾— EXPã€ã‚´ãƒ¼ãƒ«ãƒ‰ã‚’追åŠ
exp += enemy.exp
gold += enemy.gold
# トレジャー出ç¾åˆ¤å®š
if rand(100) < enemy.treasure_prob
if enemy.item_id > 0
treasures.push($data_items[enemy.item_id])
end
if enemy.weapon_id > 0
treasures.push($data_weapons[enemy.weapon_id])
end
if enemy.armor_id > 0
treasures.push($data_armors[enemy.armor_id])
end
end
end
end
# トレジャーã®æ•°ã‚’ 6 個ã¾ã§ã«é™å®š
treasures = treasures[0..5]
# EXP ç²å¾—
for i in 0...$game_party.actors.size
actor = $game_party.actors[i]
if actor.cant_get_exp? == false
last_level = actor.level
actor.exp += exp
if actor.level > last_level
@status_window.level_up(i)
end
end
end
# ゴールドç²å¾—
$game_party.gain_gold(gold)
# トレジャーç²å¾—
for item in treasures
case item
when RPG::Item
$game_party.gain_item(item.id, 1)
when RPG::Weapon
$game_party.gain_weapon(item.id, 1)
when RPG::Armor
$game_party.gain_armor(item.id, 1)
end
end
# ãƒãƒˆãƒ«ãƒªã‚¶ãƒ«ãƒˆã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã‚’作æˆ
@result_window = Window_BattleResult.new(exp, gold, treasures)
# ウェイトカウントをè¨å®š
@phase5_wait_count = 100
end
#--------------------------------------------------------------------------
# ◠フレーム更新 (アフターãƒãƒˆãƒ«ãƒ•ã‚§ãƒ¼ã‚º)
#--------------------------------------------------------------------------
def update_phase5
# ウェイトカウント㌠0 より大ãã„å ´åˆ
if @phase5_wait_count > 0
# ウェイトカウントを減らã™
@phase5_wait_count -= 1
# ウェイトカウント㌠0 ã«ãªã£ãŸå ´åˆ
if @phase5_wait_count == 0
# リザルトウィンドウを表示
@result_window.visible = true
# メインフェーズフラグをクリア
$game_temp.battle_main_phase = false
# ステータスウィンドウをリフレッシュ
@status_window.refresh
@enemy_window.refresh
end
return
end
# C ボタンãŒæŠ¼ã•ã‚ŒãŸå ´åˆ
if Input.trigger?(Input::C)
# ãƒãƒˆãƒ«çµ‚了
battle_end(0)
end
end
end
Code:
#==============================================================================
# ■Scene_Battle (分割定義 3)
#------------------------------------------------------------------------------
#  ãƒãƒˆãƒ«ç”»é¢ã®å‡¦ç†ã‚’è¡Œã†ã‚¯ãƒ©ã‚¹ã§ã™ã€‚
#==============================================================================
class Scene_Battle
#--------------------------------------------------------------------------
# ◠アクターコマンドフェーズ開始
#--------------------------------------------------------------------------
def start_phase3
# フェーズ 3 ã«ç§»è¡Œ
@phase = 3
# アクターをéžé¸æŠžçŠ¶æ…‹ã«è¨å®š
@actor_index = -1
@active_battler = nil
# 次ã®ã‚¢ã‚¯ã‚¿ãƒ¼ã®ã‚³ãƒžãƒ³ãƒ‰å…¥åŠ›ã¸
phase3_next_actor
end
#--------------------------------------------------------------------------
# ◠次ã®ã‚¢ã‚¯ã‚¿ãƒ¼ã®ã‚³ãƒžãƒ³ãƒ‰å…¥åŠ›ã¸
#--------------------------------------------------------------------------
def phase3_next_actor
# ループ
begin
# アクターã®æ˜Žæ»…エフェクト OFF
if @active_battler != nil
@active_battler.blink = false
end
# 最後ã®ã‚¢ã‚¯ã‚¿ãƒ¼ã®å ´åˆ
if @actor_index == 0
# メインフェーズ開始
start_phase4
return
end
# アクターã®ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ã‚’進ã‚ã‚‹
@actor_index += 1
@active_battler = $game_party.actors[@actor_index]
@active_battler.blink = true
# アクターãŒã‚³ãƒžãƒ³ãƒ‰å…¥åŠ›ã‚’å—ã‘付ã‘ãªã„状態ãªã‚‰ã‚‚ã†ä¸€åº¦
end until @active_battler.inputable?
# アクターコマンドウィンドウをセットアップ
phase3_setup_command_window
end
#--------------------------------------------------------------------------
# â— å‰ã®ã‚¢ã‚¯ã‚¿ãƒ¼ã®ã‚³ãƒžãƒ³ãƒ‰å…¥åŠ›ã¸
#--------------------------------------------------------------------------
def phase3_prior_actor
# ループ
begin
# アクターã®æ˜Žæ»…エフェクト OFF
if @active_battler != nil
@active_battler.blink = false
end
# 最åˆã®ã‚¢ã‚¯ã‚¿ãƒ¼ã®å ´åˆ
if @actor_index == 0
# パーティコマンドフェーズ開始
start_phase2
return
end
# アクターã®ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ã‚’戻ã™
@actor_index -= 1
@active_battler = $game_party.actors[@actor_index]
@active_battler.blink = true
# アクターãŒã‚³ãƒžãƒ³ãƒ‰å…¥åŠ›ã‚’å—ã‘付ã‘ãªã„状態ãªã‚‰ã‚‚ã†ä¸€åº¦
end until @active_battler.inputable?
# アクターコマンドウィンドウをセットアップ
phase3_setup_command_window
end
#--------------------------------------------------------------------------
# ◠アクターコマンドウィンドウã®ã‚»ãƒƒãƒˆã‚¢ãƒƒãƒ—
#--------------------------------------------------------------------------
def phase3_setup_command_window
# アクターコマンドウィンドウを有効化
@actor_command_window.active = true
@actor_command_window.visible = true
# アクターコマンドウィンドウã®ä½ç½®ã‚’è¨å®š
#@actor_command_window.x = @actor_index * 160
# インデックスを 0 ã«è¨å®š
@actor_command_window.index = 0
end
#--------------------------------------------------------------------------
# ◠フレーム更新 (アクターコマンドフェーズ)
#--------------------------------------------------------------------------
def update_phase3
# エãƒãƒŸãƒ¼ã‚¢ãƒãƒ¼ãŒæœ‰åŠ¹ã®å ´åˆ
if @enemy_arrow != nil
update_phase3_enemy_select
# アクターアãƒãƒ¼ãŒæœ‰åŠ¹ã®å ´åˆ
elsif @actor_arrow != nil
update_phase3_actor_select
# スã‚ルウィンドウãŒæœ‰åŠ¹ã®å ´åˆ
elsif @skill_window != nil
update_phase3_skill_select
# アイテムウィンドウãŒæœ‰åŠ¹ã®å ´åˆ
elsif @item_window != nil
update_phase3_item_select
# アクターコマンドウィンドウãŒæœ‰åŠ¹ã®å ´åˆ
elsif @actor_command_window.active
update_phase3_basic_command
end
end
#--------------------------------------------------------------------------
# ◠フレーム更新 (アクターコマンドフェーズ : 基本コマンド)
#--------------------------------------------------------------------------
def update_phase3_basic_command
# B ボタンãŒæŠ¼ã•ã‚ŒãŸå ´åˆ
if Input.trigger?(Input::B)
# ã‚ャンセル SE ã‚’æ¼”å¥
$game_system.se_play($data_system.cancel_se)
# å‰ã®ã‚¢ã‚¯ã‚¿ãƒ¼ã®ã‚³ãƒžãƒ³ãƒ‰å…¥åŠ›ã¸
phase3_prior_actor
return
end
# C ボタンãŒæŠ¼ã•ã‚ŒãŸå ´åˆ
if Input.trigger?(Input::C)
# アクターコマンドウィンドウã®ã‚«ãƒ¼ã‚½ãƒ«ä½ç½®ã§åˆ†å²
case @actor_command_window.commands[@actor_command_window.index]
when "Run" # 攻撃
$game_system.se_play($data_system.decision_se)
update_phase2_escape
when "Fight" # スã‚ル
# 決定 SE ã‚’æ¼”å¥
$game_system.se_play($data_system.decision_se)
# アクションをè¨å®š
@active_battler.current_action.kind = 1
# スã‚ルã®é¸æŠžã‚’開始
start_skill_select
when "Pokémon" # 防御
# 決定 SE ã‚’æ¼”å¥
$game_system.se_play($data_system.decision_se)
$scene = Scene_Pokémon_Switch_Battle.new
# アクションをè¨å®š
# @active_battler.current_action.kind = 0
# @active_battler.current_action.basic = 1
# 次ã®ã‚¢ã‚¯ã‚¿ãƒ¼ã®ã‚³ãƒžãƒ³ãƒ‰å…¥åŠ›ã¸
phase3_next_actor
when "Item" # アイテãƒ
# 決定 SE ã‚’æ¼”å¥
$game_system.se_play($data_system.decision_se)
# アクションをè¨å®š
@active_battler.current_action.kind = 2
# アイテムã®é¸æŠžã‚’開始
start_item_select
end
return
end
end
#--------------------------------------------------------------------------
# ◠フレーム更新 (アクターコマンドフェーズ : スã‚ルé¸æŠž)
#--------------------------------------------------------------------------
def update_phase3_skill_select
# スã‚ルウィンドウをå¯è¦–状態ã«ã™ã‚‹
@skill_window.visible = true
# スã‚ルウィンドウを更新
@skill_window.update
# B ボタンãŒæŠ¼ã•ã‚ŒãŸå ´åˆ
if Input.trigger?(Input::B)
# ã‚ャンセル SE ã‚’æ¼”å¥
$game_system.se_play($data_system.cancel_se)
# スã‚ルã®é¸æŠžã‚’終了
end_skill_select
return
end
# C ボタンãŒæŠ¼ã•ã‚ŒãŸå ´åˆ
if Input.trigger?(Input::C)
# スã‚ルウィンドウã§ç¾åœ¨é¸æŠžã•ã‚Œã¦ã„るデータをå–å¾—
@skill = @skill_window.skill
# 使用ã§ããªã„å ´åˆ
if @skill == nil or not @active_battler.skill_can_use?(@skill.id)
# ブザー SE ã‚’æ¼”å¥
$game_system.se_play($data_system.buzzer_se)
return
end
# 決定 SE ã‚’æ¼”å¥
$game_system.se_play($data_system.decision_se)
# アクションをè¨å®š
@active_battler.current_action.skill_id = @skill.id
# スã‚ルウィンドウをä¸å¯è¦–状態ã«ã™ã‚‹
@skill_window.visible = false
# 効果範囲ãŒæ•µå˜ä½“ã®å ´åˆ
if @skill.scope == 1
# エãƒãƒŸãƒ¼ã®é¸æŠžã‚’開始
start_enemy_select
# 効果範囲ãŒå‘³æ–¹å˜ä½“ã®å ´åˆ
elsif @skill.scope == 3 or @skill.scope == 5
# アクターã®é¸æŠžã‚’開始
start_actor_select
# 効果範囲ãŒå˜ä½“ã§ã¯ãªã„å ´åˆ
else
# スã‚ルã®é¸æŠžã‚’終了
end_skill_select
# 次ã®ã‚¢ã‚¯ã‚¿ãƒ¼ã®ã‚³ãƒžãƒ³ãƒ‰å…¥åŠ›ã¸
phase3_next_actor
end
return
end
end
#--------------------------------------------------------------------------
# ◠フレーム更新 (アクターコマンドフェーズ : アイテムé¸æŠž)
#--------------------------------------------------------------------------
def update_phase3_item_select
# アイテムウィンドウをå¯è¦–状態ã«ã™ã‚‹
@item_window.visible = true
# アイテムウィンドウを更新
@item_window.update
# B ボタンãŒæŠ¼ã•ã‚ŒãŸå ´åˆ
if Input.trigger?(Input::B)
# ã‚ャンセル SE ã‚’æ¼”å¥
$game_system.se_play($data_system.cancel_se)
# アイテムã®é¸æŠžã‚’終了
end_item_select
return
end
# C ボタンãŒæŠ¼ã•ã‚ŒãŸå ´åˆ
if Input.trigger?(Input::C)
# アイテムウィンドウã§ç¾åœ¨é¸æŠžã•ã‚Œã¦ã„るデータをå–å¾—
@item = @item_window.item
# 使用ã§ããªã„å ´åˆ
unless $game_party.item_can_use?(@item.id)
# ブザー SE ã‚’æ¼”å¥
$game_system.se_play($data_system.buzzer_se)
return
end
# 決定 SE ã‚’æ¼”å¥
$game_system.se_play($data_system.decision_se)
# アクションをè¨å®š
@active_battler.current_action.item_id = @item.id
# アイテムウィンドウをä¸å¯è¦–状態ã«ã™ã‚‹
@item_window.visible = false
# 効果範囲ãŒæ•µå˜ä½“ã®å ´åˆ
if @item.scope == 1
# エãƒãƒŸãƒ¼ã®é¸æŠžã‚’開始
start_enemy_select
# 効果範囲ãŒå‘³æ–¹å˜ä½“ã®å ´åˆ
elsif @item.scope == 3 or @item.scope == 5
# アクターã®é¸æŠžã‚’開始
start_actor_select
# 効果範囲ãŒå˜ä½“ã§ã¯ãªã„å ´åˆ
else
# アイテムã®é¸æŠžã‚’終了
end_item_select
# 次ã®ã‚¢ã‚¯ã‚¿ãƒ¼ã®ã‚³ãƒžãƒ³ãƒ‰å…¥åŠ›ã¸
phase3_next_actor
end
return
end
end
#--------------------------------------------------------------------------
# ◠フレーム更新 (アクターコマンドフェーズ : エãƒãƒŸãƒ¼é¸æŠž)
#--------------------------------------------------------------------------
def update_phase3_enemy_select
# エãƒãƒŸãƒ¼ã‚¢ãƒãƒ¼ã‚’æ›´æ–°
@enemy_arrow.update
# B ボタンãŒæŠ¼ã•ã‚ŒãŸå ´åˆ
if Input.trigger?(Input::B)
# ã‚ャンセル SE ã‚’æ¼”å¥
$game_system.se_play($data_system.cancel_se)
# エãƒãƒŸãƒ¼ã®é¸æŠžã‚’終了
end_enemy_select
return
end
# C ボタンãŒæŠ¼ã•ã‚ŒãŸå ´åˆ
if Input.trigger?(Input::C)
# 決定 SE ã‚’æ¼”å¥
$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
# 次ã®ã‚¢ã‚¯ã‚¿ãƒ¼ã®ã‚³ãƒžãƒ³ãƒ‰å…¥åŠ›ã¸
phase3_next_actor
end
end
#--------------------------------------------------------------------------
# ◠フレーム更新 (アクターコマンドフェーズ : アクターé¸æŠž)
#--------------------------------------------------------------------------
def update_phase3_actor_select
# アクターアãƒãƒ¼ã‚’æ›´æ–°
@actor_arrow.update
# B ボタンãŒæŠ¼ã•ã‚ŒãŸå ´åˆ
if Input.trigger?(Input::B)
# ã‚ャンセル SE ã‚’æ¼”å¥
$game_system.se_play($data_system.cancel_se)
# アクターã®é¸æŠžã‚’終了
end_actor_select
return
end
# C ボタンãŒæŠ¼ã•ã‚ŒãŸå ´åˆ
if Input.trigger?(Input::C)
# 決定 SE ã‚’æ¼”å¥
$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
# 次ã®ã‚¢ã‚¯ã‚¿ãƒ¼ã®ã‚³ãƒžãƒ³ãƒ‰å…¥åŠ›ã¸
phase3_next_actor
end
end
#--------------------------------------------------------------------------
# ◠エãƒãƒŸãƒ¼é¸æŠžé–‹å§‹
#--------------------------------------------------------------------------
def start_enemy_select
# エãƒãƒŸãƒ¼ã‚¢ãƒãƒ¼ã‚’作æˆ
@enemy_arrow = Arrow_Enemy.new(@spriteset.viewport1)
# ヘルプウィンドウを関連付ã‘
@enemy_arrow.help_window = @help_window
# アクターコマンドウィンドウを無効化
@actor_command_window.active = false
@actor_command_window.visible = false
end
#--------------------------------------------------------------------------
# ◠エãƒãƒŸãƒ¼é¸æŠžçµ‚了
#--------------------------------------------------------------------------
def end_enemy_select
# エãƒãƒŸãƒ¼ã‚¢ãƒãƒ¼ã‚’解放
@enemy_arrow.dispose
@enemy_arrow = nil
# コマンド㌠[戦ã†] ã®å ´åˆ
if @actor_command_window.index == 0
# アクターコマンドウィンドウを有効化
@actor_command_window.active = true
@actor_command_window.visible = true
# ãƒ˜ãƒ«ãƒ—ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã‚’éš ã™
@help_window.visible = false
end
end
#--------------------------------------------------------------------------
# ◠アクターé¸æŠžé–‹å§‹
#--------------------------------------------------------------------------
def start_actor_select
# アクターアãƒãƒ¼ã‚’作æˆ
@actor_arrow = Arrow_Actor.new(@spriteset.viewport2)
@actor_arrow.index = @actor_index
# ヘルプウィンドウを関連付ã‘
@actor_arrow.help_window = @help_window
# アクターコマンドウィンドウを無効化
@actor_command_window.active = false
@actor_command_window.visible = false
end
#--------------------------------------------------------------------------
# ◠アクターé¸æŠžçµ‚了
#--------------------------------------------------------------------------
def end_actor_select
# アクターアãƒãƒ¼ã‚’解放
@actor_arrow.dispose
@actor_arrow = nil
end
#--------------------------------------------------------------------------
# ◠スã‚ルé¸æŠžé–‹å§‹
#--------------------------------------------------------------------------
def start_skill_select
# スã‚ルウィンドウを作æˆ
@skill_window = Window_Skill.new(@active_battler)
# ヘルプウィンドウを関連付ã‘
@skill_window.help_window = @help_window
# アクターコマンドウィンドウを無効化
@actor_command_window.active = false
@actor_command_window.visible = false
end
#--------------------------------------------------------------------------
# ◠スã‚ルé¸æŠžçµ‚了
#--------------------------------------------------------------------------
def end_skill_select
# スã‚ルウィンドウを解放
@skill_window.dispose
@skill_window = nil
# ãƒ˜ãƒ«ãƒ—ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã‚’éš ã™
@help_window.visible = false
# アクターコマンドウィンドウを有効化
@actor_command_window.active = true
@actor_command_window.visible = true
end
#--------------------------------------------------------------------------
# ◠アイテムé¸æŠžé–‹å§‹
#--------------------------------------------------------------------------
def start_item_select
# アイテムウィンドウを作æˆ
@item_window = Window_Item.new
# ヘルプウィンドウを関連付ã‘
@item_window.help_window = @help_window
# アクターコマンドウィンドウを無効化
@actor_command_window.active = false
@actor_command_window.visible = false
end
#--------------------------------------------------------------------------
# ◠アイテムé¸æŠžçµ‚了
#--------------------------------------------------------------------------
def end_item_select
# アイテムウィンドウを解放
@item_window.dispose
@item_window = nil
# ãƒ˜ãƒ«ãƒ—ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã‚’éš ã™
@help_window.visible = false
# アクターコマンドウィンドウを有効化
@actor_command_window.active = true
@actor_command_window.visible = true
end
end
Code:
#==============================================================================
# ■Scene_Battle (分割定義 4)
#------------------------------------------------------------------------------
#  ãƒãƒˆãƒ«ç”»é¢ã®å‡¦ç†ã‚’è¡Œã†ã‚¯ãƒ©ã‚¹ã§ã™ã€‚
#==============================================================================
class Scene_Battle
#--------------------------------------------------------------------------
# ◠メインフェーズ開始
#--------------------------------------------------------------------------
def start_phase4
# フェーズ 4 ã«ç§»è¡Œ
@phase = 4
# ターン数カウント
$game_temp.battle_turn += 1
# ãƒãƒˆãƒ«ã‚¤ãƒ™ãƒ³ãƒˆã®å…¨ãƒšãƒ¼ã‚¸ã‚’検索
for index in 0...$data_troops[@troop_id].pages.size
# イベントページをå–å¾—
page = $data_troops[@troop_id].pages[index]
# ã“ã®ãƒšãƒ¼ã‚¸ã®ã‚¹ãƒ‘ン㌠[ターン] ã®å ´åˆ
if page.span == 1
# 実行済ã¿ãƒ•ãƒ©ã‚°ã‚’クリア
$game_temp.battle_event_flags[index] = false
end
end
# アクターをéžé¸æŠžçŠ¶æ…‹ã«è¨å®š
@actor_index = -1
@active_battler = nil
# アクターコマンドウィンドウを無効化
@actor_command_window.active = false
@actor_command_window.visible = false
# メインフェーズフラグをセット
$game_temp.battle_main_phase = true
# エãƒãƒŸãƒ¼ã‚¢ã‚¯ã‚·ãƒ§ãƒ³ä½œæˆ
for enemy in $game_troop.enemies
enemy.make_action
end
# è¡Œå‹•é †åºä½œæˆ
make_action_orders
# ステップ 1 ã«ç§»è¡Œ
@phase4_step = 1
end
#--------------------------------------------------------------------------
# â— è¡Œå‹•é †åºä½œæˆ
#--------------------------------------------------------------------------
def make_action_orders
# é…列 @action_battlers ã‚’åˆæœŸåŒ–
@action_battlers = []
# エãƒãƒŸãƒ¼ã‚’é…列 @action_battlers ã«è¿½åŠ
for enemy in $game_troop.enemies
@action_battlers.push(enemy)
end
# アクターをé…列 @action_battlers ã«è¿½åŠ
for actor in $game_party.actors
@action_battlers.push(actor)
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
#--------------------------------------------------------------------------
# ◠フレーム更新 (メインフェーズ)
#--------------------------------------------------------------------------
def update_phase4
case @phase4_step
when 1
update_phase4_step1
when 2
update_phase4_step2
when 3
update_phase4_step3
when 4
update_phase4_step4
when 5
update_phase4_step5
when 6
update_phase4_step6
end
end
#--------------------------------------------------------------------------
# ◠フレーム更新 (メインフェーズ ステップ 1 : アクション準備)
#--------------------------------------------------------------------------
def update_phase4_step1
# ãƒ˜ãƒ«ãƒ—ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã‚’éš ã™
@help_window.visible = false
# å‹æ•—判定
if judge
# å‹åˆ©ã¾ãŸã¯æ•—北ã®å ´åˆ : メソッド終了
return
end
# アクションを強制ã•ã‚Œã¦ã„ã‚‹ãƒãƒˆãƒ©ãƒ¼ãŒå˜åœ¨ã—ãªã„å ´åˆ
if $game_temp.forcing_battler == nil
# ãƒãƒˆãƒ«ã‚¤ãƒ™ãƒ³ãƒˆã‚’セットアップ
setup_battle_event
# ãƒãƒˆãƒ«ã‚¤ãƒ™ãƒ³ãƒˆå®Ÿè¡Œä¸ã®å ´åˆ