#============================================================================== # ○通常攻撃後追加発動スキル # for RGSS3 # 巫女瓜 / Space not far # http://muspell.raindrop.jp/ # 通常攻撃後に確率でスキルを発動させられる装備などが作れます。 #============================================================================== # 攻撃追加スキル[スキルID|n%|対or自] # という書式で、ステート/アクター/エネミー/職業/装備のメモ欄に記述してください。 # 該当する要素にある/身につけている状態で通常攻撃を行うと # n%の確率で指定したIDのスキルが発動します。 # 対象は「対」であれば通常攻撃を行った対象、 # 「自」であれば攻撃者自身となります。 # 複数の攻撃追加スキルがある場合、それぞれについて判定が行われます。 module SNF ADDITIONALSKILL_ANIMATION = true # 追加発動スキルのアニメーションを表示するか (true/false) ADDITIONALSKILL_KARABURI = true # 攻撃対象が死んでおり、追加スキルの対象が「対」である場合 # スキルが発動しないようにするかどうか (true/false) end class RPG::BaseItem #-------------------------------------------------------------------------- # @ 追加スキル #-------------------------------------------------------------------------- def additional_skill_set n = nil s = @note[/攻撃追加スキル\[(\d+)\|(\d+)\%\|(\S+)\]/] n = [$1.to_i, $2.to_i, $3] if s != nil return n end end class Game_Battler < Game_BattlerBase #-------------------------------------------------------------------------- # @ 追加スキル #-------------------------------------------------------------------------- def additional_skill_set result = feature_objects.compact.collect {|object| object.additional_skill_set}.compact return result end end class Scene_Battle < Scene_Base #-------------------------------------------------------------------------- # ● スキル/アイテムの使用 #-------------------------------------------------------------------------- alias snf_additionalskill_use_item use_item def use_item snf_additionalskill_use_item if @subject.current_action.attack? @subject.additional_skill_set.each do |set| next if rand(100) > set[1] skill = $data_skills[set[0]] case set[2] when "対" next if additionalskill_karaburi? targets = @subject.current_action.make_targets.compact when "自" targets = [@subject] else print "Caution:追加スキルの対象が正しく指定されていません" targets = [@subject] end show_animation(targets, skill.animation_id) if SNF::ADDITIONALSKILL_ANIMATION targets.each {|target| skill.repeats.times { invoke_item(target, skill) } } end end end #-------------------------------------------------------------------------- # @ 空振り判定 #-------------------------------------------------------------------------- def additionalskill_karaburi? return false unless SNF::ADDITIONALSKILL_KARABURI return !@subject.opponents_unit.members[@subject.last_target_index].alive? end end