#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==============================================================================
# ◆ コモンイベント呼出し ver2.03 ◆ VX Ace ◆
# by Oz
#------------------------------------------------------------------------------
# スキル発動前にコモンイベントを呼び出します。スキルの詠唱イベントとかに
# 使えると思います。スキルのメモに
# [コモン呼出(call commonでもok) コモンイベントID]
# と記述するとスキル使用前にコモンイベントIDを実行します。
# イベントのスクリプトで使用者のユニット、使用者、スキルを取得したい場合は、
# 以下のメソッドをイベントのスクリプトで呼び出すことで取得できます。
# user_unit_in_battle → 使用者が味方ならtrue、敵ならfalse
# user_in_battle → スキル発動したキャラのIDです。
# use_skill_in_battle → 発動するスキルIDです。
# よくわかんない人用にDBの変数に入れることもできます。使わない場合 nil に
# にしてください。
# 戦闘中以外に呼び出した場合、0を返します。(使用者のユニットはtrueを返します。)
# 戦闘前、勝利時、敗北時、逃走時にコモンイベントを呼び出せるようにしました。
# 0を指定するとコモンイベントは呼び出ししません。
# Call_Common_Event.phase で戦闘開始前、勝利時、敗北時、逃走時を取得できます。
#==============================================================================
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
$imported = {} if $imported == nil
$imported["Call_Common_Event"] = true
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==============================================================================
# ★ 設定項目 Call Common Event ★
#==============================================================================
module Call_Common_Event
#スキル発動者のユニット用変数(0:敵、1:味方)
User_Unit_Variable_ID = nil
#スキル発動者用変数
User_Variable_ID = nil
#スキル用変数
Use_Skill_Variable_ID = nil
#戦闘前
Standby_Event_ID = 0
#戦闘勝利時
Won_Event_ID = 0
#戦闘敗北時
Defeat_Event_ID = 0
#戦闘逃走時
Escaped_Event_ID = 0
end
#==============================================================================
# ★ 設定項目 Call Common Event ★
#==============================================================================
module Call_Common_Event_System_Word
Call_Common_Event = /\[(?:コモン呼出|call\s*common)\s*[==]\s*(\d+)\]/i
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==============================================================================
# ■ RPG::Item
#==============================================================================
class RPG::UsableItem
#------------------------------------------------------------------------
# ○ キャッシュを生成
#------------------------------------------------------------------------
def create_call_common_event_cache
@call_common_event = false
@call_common_event_id = 0
self.note.each_line{|line|
case line
when Call_Common_Event_System_Word::Call_Common_Event
@call_common_event = true
@call_common_event_id = $1.to_i
end
}
end
#------------------------------------------------------------------------
# ○ コモン呼出?
#------------------------------------------------------------------------
def call_common_event?
create_call_common_event_cache if @call_common_event.nil?
return @call_common_event
end
#------------------------------------------------------------------------
# ○ コモン呼出ID
#------------------------------------------------------------------------
def call_common_event_id
create_call_common_event_cache unless @call_common_event_id
return @call_common_event_id
end
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==============================================================================
# ■ Call Common Event
#==============================================================================
module Call_Common_Event
#--------------------------------------------------------------------------
# ● メンバ変数の初期化
#--------------------------------------------------------------------------
def self.initialize(proc = nil)
@user_unit = true
@user = 0
@use_skill = 0
@call_event_proc = proc
@phase = :standby
clear_last_battler
end
#--------------------------------------------------------------------------
# ● ユニット
#--------------------------------------------------------------------------
def self.user_unit
initialize if @user_unit.nil?
return @user_unit
end
#--------------------------------------------------------------------------
# ● 発動者
#--------------------------------------------------------------------------
def self.user
initialize unless @user
return @user
end
#--------------------------------------------------------------------------
# ● スキル
#--------------------------------------------------------------------------
def self.use_skill
initialize unless @use_skill
return @use_skill
end
#--------------------------------------------------------------------------
# ● フェイズ
#--------------------------------------------------------------------------
def self.phase
initialize unless @phase
return @phase
end
#--------------------------------------------------------------------------
# ● ユニット
#--------------------------------------------------------------------------
def self.user_unit=(user_unit)
@user_unit = user_unit
self.user_unit_variable = user_unit
end
#--------------------------------------------------------------------------
# ● 発動者
#--------------------------------------------------------------------------
def self.user=(user)
@user = user
self.user_variable = user
end
#--------------------------------------------------------------------------
# ● スキル
#--------------------------------------------------------------------------
def self.use_skill=(skill)
@use_skill = skill
self.use_skill_variable = skill
end
#--------------------------------------------------------------------------
# ● ユニット変数
#--------------------------------------------------------------------------
def self.user_unit_variable=(value)
return unless User_Unit_Variable_ID
$game_variables[User_Unit_Variable_ID] = value ? 1 : 0
end
#--------------------------------------------------------------------------
# ● 発動者変数
#--------------------------------------------------------------------------
def self.user_variable=(value)
return unless User_Variable_ID
$game_variables[User_Variable_ID] = value
end
#--------------------------------------------------------------------------
# ● 発動スキル変数
#--------------------------------------------------------------------------
def self.use_skill_variable=(value)
return unless Use_Skill_Variable_ID
$game_variables[Use_Skill_Variable_ID] = value
end
#--------------------------------------------------------------------------
# ● 戦闘開始前
#--------------------------------------------------------------------------
def self.standby?
@phase == :standby
end
#--------------------------------------------------------------------------
# ● 勝利後
#--------------------------------------------------------------------------
def self.won?
@phase == :won
end
#--------------------------------------------------------------------------
# ● 敗北後
#--------------------------------------------------------------------------
def self.defeat?
@phase == :defeat
end
#--------------------------------------------------------------------------
# ● 逃走中
#--------------------------------------------------------------------------
def self.escaped?
@phase == :escaped
end
#--------------------------------------------------------------------------
# ● 開始前
#--------------------------------------------------------------------------
def self.call_standby_event
return unless Standby_Event_ID > 0
@phase = :standby
@call_event_proc.call(Standby_Event_ID) if @call_event_proc
end
#--------------------------------------------------------------------------
# ● 勝利時
#--------------------------------------------------------------------------
def self.call_won_event
return unless Won_Event_ID > 0
@phase = :won
@call_event_proc.call(Won_Event_ID) if @call_event_proc
end
#--------------------------------------------------------------------------
# ● 敗北時
#--------------------------------------------------------------------------
def self.call_defeat_event
return unless Defeat_Event_ID > 0
@phase = :defeat
@call_event_proc.call(Defeat_Event_ID) if @call_event_proc
end
#--------------------------------------------------------------------------
# ● 逃走時
#--------------------------------------------------------------------------
def self.call_escaped_event
return unless Escaped_Event_ID > 0
@phase = :escaped
@call_event_proc.call(Escaped_Event_ID) if @call_event_proc
end
#--------------------------------------------------------------------------
# ● 最後の行動者
#--------------------------------------------------------------------------
def self.last_battler=(battler)
@last_battler = battler
end
#--------------------------------------------------------------------------
# ● アクター:ランダム
#--------------------------------------------------------------------------
def self.actor_randam
members = $game_party.alive_members
actor = members[rand * members.size]
return actor ? actor.id : 0
end
#--------------------------------------------------------------------------
# ● アクター:最後の行動者
#--------------------------------------------------------------------------
def self.last_actor
return 0 if @last_battler.nil? || @last_battler.enemy?
return @last_battler.actor.id
end
#--------------------------------------------------------------------------
# ● エネミー:最後の行動者
#--------------------------------------------------------------------------
def self.last_enemy
return 0 if @last_battler.nil? || @last_battler.actor?
return @last_battler.enemy.id
end
#--------------------------------------------------------------------------
# ● 最後の行動者:クリアー
#--------------------------------------------------------------------------
def self.clear_last_battler
@last_battler = nil
end
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==============================================================================
# ■ BattleManager
#------------------------------------------------------------------------------
# 戦闘の進行を管理するモジュールです。
#==============================================================================
class << BattleManager
#--------------------------------------------------------------------------
# ● 戦闘開始
#--------------------------------------------------------------------------
alias call_common_event_battle_start battle_start
def battle_start
call_common_event_battle_start
Call_Common_Event.call_standby_event
end
#--------------------------------------------------------------------------
# ● 勝利の処理
#--------------------------------------------------------------------------
alias call_common_event_process_victory process_victory
def process_victory
return if Call_Common_Event.won?
Call_Common_Event.call_won_event
call_common_event_process_victory
end
#--------------------------------------------------------------------------
# ● 中断の処理
#--------------------------------------------------------------------------
alias call_common_event_process_abort process_abort
def process_abort
return if Call_Common_Event.escaped?
Call_Common_Event.call_escaped_event
call_common_event_process_abort
end
#--------------------------------------------------------------------------
# ● 敗北の処理
#--------------------------------------------------------------------------
alias call_common_event_process_defeat process_defeat
def process_defeat
return if Call_Common_Event.defeat?
Call_Common_Event.call_defeat_event
call_common_event_process_defeat
end
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==============================================================================
# ? Command
#==============================================================================
module Commands
module_function
#--------------------------------------------------------------------------
# ● ユーザのユニット
#--------------------------------------------------------------------------
def user_unit_in_battle
return true unless $game_party.in_battle
Call_Common_Event.user_unit
end
#--------------------------------------------------------------------------
# ● ユーザ
#--------------------------------------------------------------------------
def user_in_battle
return 0 unless $game_party.in_battle
Call_Common_Event.user
end
#--------------------------------------------------------------------------
# ● 発動スキル
#--------------------------------------------------------------------------
def use_skill_in_battle
return 0 unless $game_party.in_battle
Call_Common_Event.use_skill
end
end
class Game_Interpreter
include Commands
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==============================================================================
# ■ Scene_Battle
#------------------------------------------------------------------------------
# バトル画面の処理を行うクラスです。
#==============================================================================
class Scene_Battle < Scene_Base
#--------------------------------------------------------------------------
# ● 開始処理
#--------------------------------------------------------------------------
alias call_common_event_start start
def start
Call_Common_Event.initialize(method(:call_common_event))
call_common_event_start
end
#--------------------------------------------------------------------------
# ● 戦闘行動終了時の処理
#--------------------------------------------------------------------------
alias call_common_event_process_action_end process_action_end
def process_action_end
unless call_common_event_process_action_end
Call_Common_Event.clear_last_battler
return false
else
return true
end
end
#--------------------------------------------------------------------------
# ● スキル/アイテムの使用
#--------------------------------------------------------------------------
alias call_common_event_use_item use_item
def use_item
item = @subject.current_action.item
Call_Common_Event.last_battler = @subject
Call_Common_Event.use_skill = item.id
Call_Common_Event.user_unit = @subject.actor?
Call_Common_Event.user = @subject.actor? ? @subject.actor.id : @subject.enemy.id
call_common_event(item.call_common_event_id) if item.call_common_event?
call_common_event_use_item
end
#--------------------------------------------------------------------------
# ● 反撃の発動
#--------------------------------------------------------------------------
alias call_common_event_invoke_counter_attack invoke_counter_attack
def invoke_counter_attack(target, item)
Call_Common_Event.last_battler = target
invoke_counter_attack(target, item)
end
#--------------------------------------------------------------------------
# ● コモンイベントの呼び出し
#--------------------------------------------------------------------------
def call_common_event(common_event_id)
$game_temp.reserve_common_event(common_event_id)
process_event
end
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★