#============================================================================== # 「連撃発動スクリプト」(ACE) ver.4.1 by奈々 # # ◇使用規約 # 使用される場合はスクリプト作成者として「奈々」を明記して下さい。 # このスクリプトを改変したり、改変したものを配布するなどは自由ですが # その場合も元のスクリプトの作成者として名前は載せて下さい。 # その他、詳しい利用規約はブログを参照して下さい。 # #------------------------------------------------------------------------------ # # スキルを一定確率で連続発動させるスクリプトです。 # # ◇使い方 # # データベース「スキル、アイテム」のメモ欄にタグを書きます。 # # <連撃A n%> n%の確率で連続発動(個別判定) # <連撃B n%> n%の確率で連続発動(合算判定) # <連撃上限 n> 連撃の発動を最大n回までに制限 # <連撃影響 m> 使用者の持つ連撃設定を追加する(mは任意の数値) # # 連撃タグは複数設定でき、AとBで扱いが異なります。 # <連撃A 60%><連撃A 50%>の場合、60%の判定と50%の判定が行われます。 # <連撃B 60%><連撃B 50%>の場合、100%の判定と10%の判定が行われます。 # <連撃A 60%><連撃B 30%><連撃B 20%>の場合、60%の判定と50%の判定が行われます。 # # <連撃上限 n>のタグを書いたスキルは # 最大でもn回までしか連撃が発動しないようになります。 # 複数の上限が設定された場合、ステートの設定が優先され # それ以外やステート同士の場合は、より大きい上限が優先されます。 # # # データベース「アクター、職業、ステート、エネミー、装備品」のメモ欄にタグを書きます。 # それぞれ、<連撃影響 m>が設定されているスキルに対して連撃設定を追加します。 # # <連撃A n% m> <連撃影響 m>が設定されているスキルに対して<連撃A n%>を追加 # <連撃B n% m> <連撃影響 m>が設定されているスキルに対して<連撃A n%>を追加 # <連撃上限 n m> <連撃影響 m>が設定されているスキルに対して<連撃上限 n>を追加 # # # 因みに特徴の攻撃回数追加とは別物です。 # 同時に使った場合、単純な+ではなく、連撃回数*攻撃回数となります。 # #============================================================================== #============================================================================== # ■ Scene_Battle #------------------------------------------------------------------------------ # バトル画面の処理を行うクラスです。 #============================================================================== class Scene_Battle < Scene_Base #-------------------------------------------------------------------------- # ● スキル/アイテムの使用 #-------------------------------------------------------------------------- alias nana_use_item use_item def use_item item = @subject.current_action.item repeats_back = item.repeats value = 0 total = 0 #連撃Aの判定 #スキル/アイテムのタグ item.note.gsub(/<連撃A[ ]*(\d+)%>/){ value = $1.to_i total += 1 if value >= (rand(100) + 1) } #装備品のタグ item.note.gsub(/<連撃影響[ ]*(\d+)>/){ type = $1.to_i @subject.equips.each {|equip| next unless equip equip.note.gsub(/<連撃A[ ]*(\d+)%[ ]*#{type}>/){ value = $1.to_i total += 1 if value >= (rand(100) + 1) } } } if @subject.actor? #アクターのタグ item.note.gsub(/<連撃影響[ ]*(\d+)>/){ type = $1.to_i @subject.actor.note.gsub(/<連撃A[ ]*(\d+)%[ ]*#{type}>/){ value = $1.to_i total += 1 if value >= (rand(100) + 1) } } if @subject.actor? #クラスのタグ item.note.gsub(/<連撃影響[ ]*(\d+)>/){ type = $1.to_i @subject.class.note.gsub(/<連撃A[ ]*(\d+)%[ ]*#{type}>/){ value = $1.to_i total += 1 if value >= (rand(100) + 1) } } if @subject.actor? #エネミーのタグ item.note.gsub(/<連撃影響[ ]*(\d+)>/){ type = $1.to_i @subject.enemy.note.gsub(/<連撃A[ ]*(\d+)%[ ]*#{type}>/){ value = $1.to_i total += 1 if value >= (rand(100) + 1) } } if @subject.enemy? #ステートのタグ item.note.gsub(/<連撃影響[ ]*(\d+)>/){ type = $1.to_i @subject.states.each {|state| next unless state state.note.gsub(/<連撃A[ ]*(\d+)%[ ]*#{type}>/){ value = $1.to_i total += 1 if value >= (rand(100) + 1) } } } #連撃Bの判定 value = 0 #スキル/アイテムのタグ item.note.gsub(/<連撃B[ ]*(\d+)%>/){ value += $1.to_i } #装備品のタグ item.note.gsub(/<連撃影響[ ]*(\d+)>/){ type = $1.to_i @subject.equips.each {|equip| next unless equip equip.note.gsub(/<連撃B[ ]*(\d+)%[ ]*#{type}>/){ value += $1.to_i } } } if @subject.actor? #アクターのタグ item.note.gsub(/<連撃影響[ ]*(\d+)>/){ type = $1.to_i @subject.actor.note.gsub(/<連撃B[ ]*(\d+)%[ ]*#{type}>/){ value += $1.to_i } } if @subject.actor? #クラスのタグ item.note.gsub(/<連撃影響[ ]*(\d+)>/){ type = $1.to_i @subject.class.note.gsub(/<連撃B[ ]*(\d+)%[ ]*#{type}>/){ value += $1.to_i } } if @subject.actor? #エネミーのタグ item.note.gsub(/<連撃影響[ ]*(\d+)>/){ type = $1.to_i @subject.enemy.note.gsub(/<連撃B[ ]*(\d+)%[ ]*#{type}>/){ value += $1.to_i } } if @subject.enemy? #ステートのタグ item.note.gsub(/<連撃影響[ ]*(\d+)>/){ type = $1.to_i @subject.states.each {|state| next unless state state.note.gsub(/<連撃B[ ]*(\d+)%[ ]*#{type}>/){ value += $1.to_i } } } total += (value * 0.01).truncate total += 1 if (value % 100) >= (rand(100) + 1) #連撃上限の判定 value = -1 #ステートのタグ item.note.gsub(/<連撃影響[ ]*(\d+)>/){ type = $1.to_i @subject.states.each {|state| next unless state state.note.gsub(/<連撃上限[ ]*(\d+)[ ]*#{type}>/){ value = [value, $1.to_i].max } } } #スキル/アイテムのタグ item.note.gsub(/<連撃上限[ ]*(\d+)>/){ value = [value, $1.to_i].max } if value == -1 #装備品のタグ item.note.gsub(/<連撃影響[ ]*(\d+)>/){ type = $1.to_i @subject.equips.each {|equip| next unless equip equip.note.gsub(/<連撃上限[ ]*(\d+)[ ]*#{type}>/){ value = [value, $1.to_i].max } } } if @subject.actor? && value == -1 #アクターのタグ item.note.gsub(/<連撃影響[ ]*(\d+)>/){ type = $1.to_i @subject.actor.note.gsub(/<連撃上限[ ]*(\d+)[ ]*#{type}>/){ value = [value, $1.to_i].max } } if @subject.actor? && value == -1 #クラスのタグ item.note.gsub(/<連撃影響[ ]*(\d+)>/){ type = $1.to_i @subject.class.note.gsub(/<連撃上限[ ]*(\d+)[ ]*#{type}>/){ value = [value, $1.to_i].max } } if @subject.actor? && value == -1 #エネミーのタグ item.note.gsub(/<連撃影響[ ]*(\d+)>/){ type = $1.to_i @subject.enemy.note.gsub(/<連撃上限[ ]*(\d+)[ ]*#{type}>/){ value = [value, $1.to_i].max } } if @subject.enemy? && value == -1 total = [total, value].min if value != -1 item.repeats += total nana_use_item item.repeats = repeats_back end end