#============================================================================== # ■ RGSS3 戦闘関連回数 Ver1.00 by 星潟 #------------------------------------------------------------------------------ # 戦闘勝利・中止・敗北・逃走回数を取得できるようになります。 # 導入される場合は素材欄の下方への配置を推奨。 #============================================================================== # 下記、イベントコマンドのスクリプト使用例。 # なお変数への戦闘回数そのものの代入はデフォルト機能で可能な為、省いています。 # 変数IDや増減回数に関してはスクリプト文が使用可能です。 #============================================================================== # get_ex_battle_count_for_v(0,500) # # 戦闘勝利回数を変数ID500に代入します。 #------------------------------------------------------------------------------ # get_ex_battle_count_for_v(1,600) # # 戦闘中止回数を変数ID600に代入します。 #------------------------------------------------------------------------------ # get_ex_battle_count_for_v(2,700) # # 戦闘敗北回数を変数ID700に代入します。 #------------------------------------------------------------------------------ # get_ex_battle_count_for_v(3,800) # # 戦闘逃走回数を変数ID800に代入します。 #------------------------------------------------------------------------------ # ex_battle_count_plus(0,4) # # 戦闘回数と戦闘勝利回数を4回増加させます。 #------------------------------------------------------------------------------ # ex_battle_count_plus(1,-5) # # 戦闘回数と戦闘中止回数を5回減少させます。 # 0未満になる場合は自動的に0に補正。 #------------------------------------------------------------------------------ # ex_battle_count_plus(2,6) # # 戦闘回数と戦闘敗北回数を6回増加させます。 #------------------------------------------------------------------------------ # ex_battle_count_plus(3,-7) # # 戦闘回数と戦闘逃走回数を7回減少させます。 # 0未満になる場合は自動的に0に補正。 #------------------------------------------------------------------------------ # ex_battle_count_reset # # 戦闘回数と戦闘勝利回数と戦闘中止回数と # 戦闘敗北回数と戦闘逃走回数を全て初期化し、0に戻します。 # ただし、戦闘中の場合はこのコマンドは無効化されます。 #============================================================================== # キャラクターの能力値としても戦闘回数が追加。 # アクターの場合、アクター個別の戦闘回数で判定される訳ではなく # ゲームシステムに記録された値が用いられる。 # エネミーの場合、下記戦闘関連回数関連設定を用いたデフォルト設定値、 # もしくはエネミー個別にメモ欄設定された戦闘回数で判定される。 # これらは全てstar_exbc(type)で取得出来るようになります。 # # 例. # star_exbc(0) => 戦闘勝利回数 # star_exbc(1) => 戦闘中止回数 # star_exbc(2) => 戦闘敗北回数 # star_exbc(3) => 戦闘逃走回数 # star_exbc(4) => 戦闘回数(アクターの物は$game_system.battle_countでも取得可能) # # ダメージ計算に使う場合は # a.star_exbc(0)やb.star_exbc(1)のようにして組み込んで下さい。 #============================================================================== # 下記、敵に個別に戦闘関連回数を設定する為の設定。 # 数字部分にはスクリプト文を用いる事も出来ます。 #============================================================================== # <戦闘関連回数設定:20,0,5,10> # # この敵の戦闘回数は35回で、その内訳は下記の通りとなります。 # 戦闘勝利回数 => 20 # 戦闘中止回数 => 0 # 戦闘敗北回数 => 5 # 戦闘逃走回数 => 10 #============================================================================== module EXBattleCount #敵への戦闘関連回数関連設定キーワードを指定。 #アクターはゲーム全体のデータを取得しますがエネミーの場合は個別設定となります。 #設定されていない場合、全て0として扱います。 Word = "戦闘関連回数設定" #敵のデフォルトの戦闘勝利回数を設定。 #例1. #Count0 = "$game_system.ex_battle_count[0]" #この場合、プレイヤーと同じ戦闘勝利回数とする。 #例2. #Count0 = "0" #この場合、常に0回とする。 #例3. #Count0 = "$game_variables[50]" #この場合、変数50の値とする。 Count0 = "$game_system.ex_battle_count[0]" #敵のデフォルトの戦闘中止回数を設定。 #例1. #Count1 = "$game_system.ex_battle_count[1]" #この場合、プレイヤーと同じ戦闘中止回数とする。 #例2. #Count1 = "20" #この場合、常に20回とする。 Count1 = "$game_system.ex_battle_count[1]" #敵のデフォルトの戦闘敗北回数を設定。 #例. #Count2 = "$game_system.ex_battle_count[2]" #この場合、プレイヤーと同じ戦闘敗北回数とする。 Count2 = "$game_system.ex_battle_count[2]" #敵のデフォルトの戦闘逃走回数を設定。 #例. #Count3 = "$game_system.ex_battle_count[3]" #この場合、プレイヤーと同じ戦闘逃走回数とする。 Count3 = "$game_system.ex_battle_count[3]" Array = [] Array.push(Count0) Array.push(Count1) Array.push(Count2) Array.push(Count3) #-------------------------------------------------------------------------- # 戦闘関連回数 #-------------------------------------------------------------------------- def self.array Array end end class << BattleManager #-------------------------------------------------------------------------- # 逃走の処理 #-------------------------------------------------------------------------- alias process_escape_ex_battle_count process_escape unless $! def process_escape @escaping = true result = process_escape_ex_battle_count @escaping = nil result end #-------------------------------------------------------------------------- # 戦闘終了 #-------------------------------------------------------------------------- alias battle_end_ex_battle_count battle_end unless $! def battle_end(result) $game_system.ex_battle_count_plus(result == 1 && @escaping ? 3 : result,1) battle_end_ex_battle_count(result) end end class Game_System #-------------------------------------------------------------------------- # 戦闘関連回数 #-------------------------------------------------------------------------- def ex_battle_count @ex_battle_count ||= [0,0,0,0] end #-------------------------------------------------------------------------- # 戦闘関連回数の追加 #-------------------------------------------------------------------------- def ex_battle_count_plus(type,count) return false if count == 0 ex_battle_count @ex_battle_count[type] += count true end #-------------------------------------------------------------------------- # 戦闘関連回数のリセット #-------------------------------------------------------------------------- def ex_battle_count_reset return if $game_party.in_battle @ex_battle_count = [0,0,0,0] @battle_count = 0 end end class Game_Interpreter #-------------------------------------------------------------------------- # 戦闘関連回数を変数に取得 #-------------------------------------------------------------------------- def get_ex_battle_count_for_v(type,id) $game_variables[eval(id.to_s)] = $game_system.ex_battle_count[type] end #-------------------------------------------------------------------------- # 戦闘関連回数増減 #-------------------------------------------------------------------------- def ex_battle_count_plus(type,count) count = eval(count.to_s) if $game_system.ex_battle_count[type] + count < 0 count = -$game_system.ex_battle_count[type] end return unless $game_system.ex_battle_count_plus(type,count) $game_system.battle_count += count end #-------------------------------------------------------------------------- # 戦闘関連回数リセット #-------------------------------------------------------------------------- def ex_battle_count_reset $game_system.ex_battle_count_reset end end class Game_Battler < Game_BattlerBase #-------------------------------------------------------------------------- # 戦闘関連回数 #-------------------------------------------------------------------------- def star_exbc(type) 0 end end class Game_Actor < Game_Battler #-------------------------------------------------------------------------- # 戦闘関連回数 #-------------------------------------------------------------------------- def star_exbc(type) type.between?(0,3) ? $game_system.ex_battle_count[type] : $game_system.battle_count end end class Game_Enemy < Game_Battler #-------------------------------------------------------------------------- # 戦闘関連回数 #-------------------------------------------------------------------------- def star_exbc(type) type.between?(0,3) ? eval(enemy.star_exbc[type]) : enemy.star_exbc.inject(0) {|r,i| r += eval(i)} + 1 end end class RPG::Enemy < RPG::BaseItem #-------------------------------------------------------------------------- # 戦闘関連回数 #-------------------------------------------------------------------------- def star_exbc @star_exbc ||= star_exbc_make end #-------------------------------------------------------------------------- # 戦闘関連回数作成 #-------------------------------------------------------------------------- def star_exbc_make a = (/<#{EXBattleCount::Word}[::](\S+)>/ =~ note ? $1.to_s.split(/\s*,\s*/) : []).inject([]) {|r,i| r += [i]} a.size == 4 ? a : EXBattleCount.array end end