#==============================================================================
# 「連撃発動スクリプト」(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