#============================================================================== # ■ RGSS3 エネミー行動強制追加 Ver2.00 by 星潟 #------------------------------------------------------------------------------ # 特定の敵の行動をその戦闘でのみイベントコマンドで追加します。 # 敵グループ内インデックスで判別して追加するタイプと # エネミーIDで判別して追加するタイプの2種類のコマンドが追加されます。 # なお、変身させた場合は追加したスキルは全て失われます。 # (同一のエネミーIDに変身させた場合も失われます) #============================================================================== # イベントコマンドのスクリプトで追加 #============================================================================== # t_id_actplus(index, s_id,c_type,c_p1,c_p2,rate_data) # # 敵グループ内インデックス[index]の敵にスキルID[sid]を追加。 # コンディションタイプは[c_type]で[c_p1]、[c_p2]を判定に用いる。 # 優先度は[rate_data]。 #------------------------------------------------------------------------------ # e_id_actplus(id, s_id,c_type,c_p1,c_p2,rate_data) # # エネミーID[id]の敵にスキルID[sid]を追加。 # コンディションタイプは[c_type]で[c_p1]、[c_p2]を判定に用いる。 # 優先度は[rate_data]。 #============================================================================== # 設定共通点 #------------------------------------------------------------------------------ # s_id => 追加されるスキルIDを指定。 #------------------------------------------------------------------------------ # c_type => コンディションタイプを指定。 # # コンディションタイプは下記7種。 # # 0 : 常時 # 1 : ターン数 # 2 : HP # 3 : MP # 4 : ステート # 5 : パーティレベル # 6 : スイッチ #------------------------------------------------------------------------------ # c_p1 => コンディションタイプによって指定する物が変化。常時の場合は0とする事。 # # ターン数 開始ターン数を指定。 # HP HPの下限を指定。 # MP MPの下限を指定。 # ステート ステートIDを指定。 # パーティレベル パーティーレベルを指定。 # スイッチ スイッチIDを指定。 #------------------------------------------------------------------------------ # c_p2 => コンディションタイプがターン数とHPとMPの場合のみ使用。 # 他の場合は0を指定する事。 # # ターン数 +ターン数*Xのターン数の部分を指定。 # HP HPの上限を指定。 # MP MPの上限を指定。 #------------------------------------------------------------------------------ # rate_data => 優先度を指定。(通常は1〜10) #============================================================================== # 設定例 #============================================================================== # t_id_actplus(0, 2, 0, 0, 0, 10) # 敵グループ内インデックス0の敵に、使用条件常時・優先度10の防御を追加する。 # (敵グループ内インデックスは本来0から始まる。 # イベントコマンド等でindex1と表示されるのは本来は0) #------------------------------------------------------------------------------ # e_id_actplus(3, 3, 2, 0, 50, 10) # エネミーID3の敵全てに、HPが0〜50%の場合を使用条件として # 優先度10の連続攻撃を追加する。 #============================================================================== class Game_Troop < Game_Unit attr_accessor :ex_action_enemy attr_accessor :ex_action_data end class Game_Enemy < Game_Battler #-------------------------------------------------------------------------- # オブジェクト初期化 #-------------------------------------------------------------------------- alias initialize_ex_action_data initialize def initialize(index, enemy_id) initialize_ex_action_data(index, enemy_id) @ex_action_data = [] end #-------------------------------------------------------------------------- # 戦闘行動の追加 #-------------------------------------------------------------------------- def action_plus(s_id,c_type,c_p1,c_p2,rate_data) ex_action = RPG::Enemy::Action.new ex_action.skill_id = s_id ex_action.condition_type = c_type ex_action.condition_param1 = c_p1 ex_action.condition_param2 = c_p2 if c_type == 2 or c_type == 3 ex_action.condition_param1 *= 0.01 ex_action.condition_param2 *= 0.01 end ex_action.rating = rate_data @ex_action_data.push(ex_action) end #-------------------------------------------------------------------------- # 変身 #-------------------------------------------------------------------------- alias transform_ex_action_data transform def transform(enemy_id) @ex_action_data = [] transform_ex_action_data(enemy_id) end #-------------------------------------------------------------------------- # 戦闘行動の作成 #-------------------------------------------------------------------------- alias make_actions_ex_action_data make_actions def make_actions $game_troop.ex_action_enemy = self $game_troop.ex_action_data = @ex_action_data.clone r = make_actions_ex_action_data $game_troop.ex_action_enemy = nil $game_troop.ex_action_data = nil r end end class RPG::Enemy < RPG::BaseItem #-------------------------------------------------------------------------- # 戦闘行動 #-------------------------------------------------------------------------- alias actions_ex_action_data actions unless $! def actions r = actions_ex_action_data r + (($game_troop && $game_troop.ex_action_data) ? $game_troop.ex_action_data : []) end end class Game_Interpreter #-------------------------------------------------------------------------- # 敵グループ内の指定インデックスの敵に行動追加 #-------------------------------------------------------------------------- def t_id_actplus(index, s_id,c_type,c_p1,c_p2,rate_data) return unless $game_party.in_battle return unless $game_troop.members[index] $game_troop.members[index].action_plus(s_id,c_type,c_p1,c_p2,rate_data) end #-------------------------------------------------------------------------- # 指定したエネミーIDの敵に行動追加 #-------------------------------------------------------------------------- def e_id_actplus(id, s_id,c_type,c_p1,c_p2,rate_data) return unless $game_party.in_battle $game_troop.members.each {|e| e.action_plus(s_id,c_type,c_p1,c_p2,rate_data) if e.enemy_id == id} end end