#============================================================================== # ■サポートエフェクト for RGSS3 Ver1.01-β # □作成者 kure # #=============================================================================== $kure_integrate_script = {} if $kure_integrate_script == nil $kure_integrate_script[:SupportEffect] = 100 p "サポートエフェクト" #-------------------------------------------------------------------------- # ★ 設定項目(各設定の値を変更してください) #-------------------------------------------------------------------------- module KURE module Support #ステート付与時に行動可能判定を行うか(0=OFF 1=ON) STATE_MOVE_CHEAK = 0 #スキル発動時に行動可能判定を行うか(0=OFF 1=ON) SKILL_MOVE_CHEAK = 0 end end #============================================================================== # ■ RPG::Actor(追加定義) #============================================================================== class RPG::Actor < RPG::BaseItem #-------------------------------------------------------------------------- # ★ 支援ステートの定義(追加定義)(範囲、ステートID) #-------------------------------------------------------------------------- def support_state @note.match(/<支援ステート\s?(\d+)\s?,\s?(\d+)\s?>/) return $1 && $2 ? [$1.to_i, $2.to_i] : nil end #-------------------------------------------------------------------------- # ★ 支援スキルの定義(追加定義)(範囲、スキルID、確率) #-------------------------------------------------------------------------- def support_skill @note.match(/<支援スキル\s?(\d+)\s?,\s?(\d+)\s?,\s?(\d+)%\s?>/) return $1 && $2 && $3 ? [$1.to_i, $2.to_i, $3.to_i] : nil end end #============================================================================== # ■ Scene_Battle(エイリアス再定義) #============================================================================== class Scene_Battle < Scene_Base #-------------------------------------------------------------------------- # ◎ 戦闘開始時の拡張処理(エイリアス再定義) #-------------------------------------------------------------------------- alias k_support_effect_before_battle_start_add_event battle_start_add_event def battle_start_add_event k_support_effect_before_battle_start_add_event support_state_adder end #-------------------------------------------------------------------------- # ◎ ターン終了時の拡張処理((エイリアス再定義) #-------------------------------------------------------------------------- alias k_support_effect_before_turn_end_add_event turn_end_add_event def turn_end_add_event k_support_effect_before_turn_end_add_event support_effecter end #-------------------------------------------------------------------------- # ● 支援ステートの付与(追加定義) #-------------------------------------------------------------------------- def support_state_adder supporter = $game_party.all_members[$game_party.battle_members.size] return unless supporter data = supporter.actor.support_state return unless data if KURE::Support::STATE_MOVE_CHEAK == 1 return unless supporter.movable? return unless supporter.alive? end case data[0] when 0 ; member = all_battle_members when 1 ; member = $game_party.members when 2 ; member = $game_troop.members end member.each{|battler| battler.erase_state(data[1]) battler.add_new_state(data[1]) battler.reset_state_counts(data[1]) } end #-------------------------------------------------------------------------- # ● 支援エフェクトの発動(追加定義) #-------------------------------------------------------------------------- def support_effecter supporter = $game_party.all_members[$game_party.battle_members.size] return unless supporter data = supporter.actor.support_skill return unless data if KURE::Support::SKILL_MOVE_CHEAK == 1 return unless supporter.movable? return unless supporter.alive? end #確率判定 if data[2] > rand(100) case data[0] when 0 ; member = all_battle_members when 1 ; member = $game_party.members when 2 ; member = $game_troop.members end supporter.force_action_item_reset(data[1]) use_support_effect(supporter, member) end end #-------------------------------------------------------------------------- # ★ フィールドエフェクトの発動(追加定義) #-------------------------------------------------------------------------- def use_support_effect(user, member) return unless user.current_action item = user.current_action.item @log_window.display_use_item(user, item) item.effects.each {|effect| user.item_global_effect_apply(effect) } case item.scope when 0 ; return when 1,3,7,11 ; targets = member.select{|battler| battler.alive?}.sample(1) when 4 ; targets = member.select{|battler| battler.alive?}.sample(2) when 5 ; targets = member.select{|battler| battler.alive?}.sample(3) when 6 ; targets = member.select{|battler| battler.alive?}.sample(4) when 2,8 ; targets = member.select{|battler| battler.alive?} when 9 ; targets = member.select{|battler| battler.dead?}.pop(1) when 10 ; targets = member.select{|battler| battler.dead?} end show_animation_set(targets, user, item) targets.each {|target| item.repeats.times { apply_item_effects_set(user, item, [target])}} refresh_status @log_window.back_one end end