=begin FF6で有名なバグ技再現スクリプト。 パーティアタックが出来ないと再現がかなり難しいスクリプト。 なお、カウンタースクリプトはKamesoft様のものを使用することを前提にしています のでご注意を。 ・やり方 @アクター一人を「ステートで」カウンター状態にする。 Aそのアクターをカウンターステートがかかったままそのターン内に戦闘不能にする。 この時カウンターが発生してはいけない。 B復活させてカウンターステートをかけると敵からの全ての行動に対して反撃する。 C「カッパ」(片仮名限定)という名前のステートをかけ、カウンターが発生すると 延々と敵を攻撃し続ける。 ・問題点 卑怯すぎる。 ・余談 カッパという生き物は日本独自のものであるため、メソッド名が「kappa」になっている のは思いつかなかったんだよ!(逆切れ) 作成:faida =end #============================================================================== # □ Game_CounterAction #============================================================================== class Game_CounterAction #-------------------------------------------------------------------------- # ○ 有効判定 #-------------------------------------------------------------------------- alias valid_bug? valid? unless $@ def valid?(attacker, defender) return true if $berserker_mode if defender.actor? && defender.berserker_counter return attacker.actor? ^ defender.actor? end return valid_bug?(attacker, defender) end end #============================================================================== # □ Game_CounterCondition #============================================================================== class Game_CounterCondition #-------------------------------------------------------------------------- # ○ 有効判定 #-------------------------------------------------------------------------- alias valid_bug? valid? unless $@ def valid?(attacker, defender) return true if $berserker_mode if defender.actor? && defender.berserker_counter return attacker.actor? ^ defender.actor? end return valid_bug?(attacker, defender) end end #============================================================================== # ■ Game_Actor #============================================================================== class Game_Actor < Game_Battler attr_accessor :berserker_counter #-------------------------------------------------------------------------- # ○ ステート性カウンターか? #-------------------------------------------------------------------------- def state_counter? return false if equips.compact.any?{|item|!item.counter_actions.empty?} states.any?{|state|!state.counter_actions.empty?} end #-------------------------------------------------------------------------- # ○ カッパか? #-------------------------------------------------------------------------- def kappa? states.any?{|state|state.name == "カッパ"} end #-------------------------------------------------------------------------- # ● コラプスの実行 #-------------------------------------------------------------------------- alias perform_collapse_bug perform_collapse unless $@ def perform_collapse perform_collapse_bug return if state_counter? self.berserker_counter = true if $state_counter == self.id end #-------------------------------------------------------------------------- # ● 戦闘用ステートの解除 (戦闘終了時に呼び出し) #-------------------------------------------------------------------------- alias remove_states_battle_bug remove_states_battle unless $@ def remove_states_battle remove_states_battle_bug $state_counter = 0; $berserker_mode = false; berserker_counter = false end end #============================================================================== # ■ Scene_Battle #============================================================================== class Scene_Battle < Scene_Base #-------------------------------------------------------------------------- # ● 次に行動するべきバトラーの設定 #-------------------------------------------------------------------------- alias set_next_active_battler_bug set_next_active_battler unless $@ def set_next_active_battler if @active_battler.is_a?(Game_Actor) if @active_battler.berserker_counter && @active_battler.kappa? target = $game_troop.existing_members[0] counter = @active_battler.counter_actions[0] judge_counter_action(target, @active_battler, counter) $berserker_mode = true elsif @active_battler.state_counter? $state_counter = @active_battler.id end end set_next_active_battler_bug end #-------------------------------------------------------------------------- # ● ターン終了 #-------------------------------------------------------------------------- alias turn_end_bug turn_end def turn_end $state_counter = 0 turn_end_bug end #-------------------------------------------------------------------------- # ○ カウンター判定 #-------------------------------------------------------------------------- alias judge_counter_action_bug judge_counter_action def judge_counter_action(attacker, target, counter) judge_counter_action_bug(attacker, target, counter) if @counter_added && target.actor? && $state_counter == target.id $state_counter = 0 end end end