#==============================================================================
# ☆ RGSS2(VX)専用 VXバグフィックス Ver 1.10
#------------------------------------------------------------------------------
# 河原 つつみ
# 連絡先 :『アクマの脳髄』http://www.akunou.com/
#------------------------------------------------------------------------------
# VXデフォルトスクリプトのスプライト関係のバグや記述抜けを修正します。
# 修正のため、関数をほとんど再定義していますので少し注意。
#
# ◆修正内容
# プレイヤー・イベント間のX座標とY座標の差が同値の際に
# イベントコマンド等で『プレイヤーの方を向く』或いは『プレイヤーの逆を向く』を指定すると
# コマンドが無視されてしまう仕様の修正。
# 敵を倒した後、イベントで敵全体にステートを付加すると
# コラプスエフェクトが再表示されてしまうバグの修正。
# Scene_Skillのビューポートの解放のし忘れを修正。
# 逃走したはずの敵が、ステート解消と同時に可視になってしまうバグの修正。
#------------------------------------------------------------------------------
# ■更新履歴
# Ver 1.10 『プレイヤーの方を向く』/『プレイヤーの逆を向く』の仕様変更追加。
#==============================================================================
#==============================================================================
# ■ Game_Character
#==============================================================================
class Game_Character
#--------------------------------------------------------------------------
# ◎ プレイヤーの方を向く
#--------------------------------------------------------------------------
def turn_toward_player
sx = distance_x_from_player
sy = distance_y_from_player
if sx.abs > sy.abs # 横の距離のほうが長い
sx > 0 ? turn_left : turn_right
else#if sx.abs < sy.abs # 縦の距離のほうが長い
sy > 0 ? turn_up : turn_down
end
end
#--------------------------------------------------------------------------
# ◎ プレイヤーの逆を向く
#--------------------------------------------------------------------------
def turn_away_from_player
sx = distance_x_from_player
sy = distance_y_from_player
if sx.abs > sy.abs # 横の距離のほうが長い
sx > 0 ? turn_right : turn_left
else#if sx.abs < sy.abs # 縦の距離のほうが長い
sy > 0 ? turn_down : turn_up
end
end
end
#==============================================================================
# ■ Game_Interpreter
#==============================================================================
class Game_Interpreter
#--------------------------------------------------------------------------
# ◎ ステートの変更
#--------------------------------------------------------------------------
def command_313
iterate_actor_id(@params[0]) do |actor|
if @params[1] == 0
live = (actor.hp > 0)
actor.add_state(@params[2])
actor.perform_collapse if live
else
actor.remove_state(@params[2])
end
end
return true
end
#--------------------------------------------------------------------------
# ◎ 敵キャラのステート変更
#--------------------------------------------------------------------------
def command_333
iterate_enemy_index(@params[0]) do |enemy|
if @params[2] == 1 # 戦闘不能の変更なら
enemy.immortal = false # 不死身フラグをクリア
end
if @params[1] == 0
live = (enemy.hp > 0)
enemy.add_state(@params[2])
enemy.perform_collapse if live
else
enemy.remove_state(@params[2])
end
end
return true
end
end
#==============================================================================
# ■ Scene_Skill
#==============================================================================
class Scene_Skill < Scene_Base
#--------------------------------------------------------------------------
# ● 終了処理
#--------------------------------------------------------------------------
alias akunou3_terminate terminate
def terminate
akunou3_terminate
@viewport.dispose
end
end
#==============================================================================
# ■ Scene_Battle
#==============================================================================
class Scene_Battle < Scene_Base
#--------------------------------------------------------------------------
# ◎ 戦闘行動の処理
#--------------------------------------------------------------------------
def process_action
return if judge_win_loss
return if $game_temp.next_scene != nil
set_next_active_battler
if @active_battler == nil
turn_end
return
end
return if @active_battler.dead?
if !@active_battler.hidden
@message_window.clear
wait(5)
@active_battler.white_flash = true
unless @active_battler.action.forcing
@active_battler.action.prepare
end
if @active_battler.action.valid?
execute_action
end
end
unless @active_battler.action.forcing
@message_window.clear if !@active_battler.hidden
remove_states_auto
display_current_state if !@active_battler.hidden
end
if !@active_battler.hidden
@active_battler.white_flash = false
@message_window.clear
end
end
#--------------------------------------------------------------------------
# ◎ ステート自然解除
#--------------------------------------------------------------------------
def remove_states_auto
last_st = @active_battler.states
@active_battler.remove_states_auto
if !@active_battler.hidden and @active_battler.states != last_st
wait(5)
display_state_changes(@active_battler)
wait(30)
@message_window.clear
end
end
end