=begin RGSS3 追加スキル発動装備 ver.1.03 2012/04/08 mo-to TKOOL COOL http://mototkool.blog.fc2.com/ ★概要★ 通常攻撃をした際、追加でスキル発動する装備品。 ★使用法★ スクリプトの▼ 素材 以下 ▼ メイン 以上にこれをコピーして張り付ける。 装備のメモ欄に <追加スキル n:m%> n=スキルID m=確率1~100と記述する。 例)武器(防具)のメモ欄に <追加スキル 51:50%> と記述すると   通常攻撃した際、デフォでは50%の確率で『ファイア』が発動される。 ★注意・仕様★ 設定している装備を複数付けている場合でも一種類しか発動しません。 その際の発動条件は装備しているもの全ての確率抽選をし、条件を満たしたものが 選ばれて発動します。 複数ともに条件を満たした場合は等確率ランダムでひとつ選ばれます。 ・追加スキルは反撃、魔法反射の影響は受けません。 ・追加スキルは発動しても消費コストが掛かりません。 ・追加スキルは攻撃回数がx回の装備でも最初の一回のみ発動です。 ★更新履歴★ ver.1.00 公開 ver.1.01 追加スキルにコモンイベントを使えるようにした ver.1.02 アイテムを使用したとき追加スキルが発動することがある不具合を修正^^; ver.1.03 魔法反射で行動不能に陥ったときエラー落ちする不具合を修正 =end #↓カスタマイズ module MOTO #通常攻撃がミスでも発動するか?(true/false) MISS_ADD_SKILL = false #対象を通常攻撃で倒した際も別対象に発動するか?(true/false) DEAD_ADD_SKILL = true end #ここまで module RPG class EquipItem < BaseItem #-------------------------------------------------------------------------- # ☆ メモ欄取得 #-------------------------------------------------------------------------- def add_skill_attack_set @add_skill_attack = [] self.note.each_line { |line| case line when /<追加スキル\s*(\d+):\s*(\d+)([%%])?>/ skill_id = $1.to_i rate = $2.to_i if @add_skill_attack[skill_id] == nil @add_skill_attack[skill_id] = 0 end @add_skill_attack[skill_id] += rate end } end def add_skill_attack add_skill_attack_set if @add_skill_attack == nil return @add_skill_attack end end end class Game_Actor < Game_Battler #-------------------------------------------------------------------------- # ○ 公開インスタンス変数 #-------------------------------------------------------------------------- attr_reader :add_skill_id #-------------------------------------------------------------------------- # ○ セットアップ #-------------------------------------------------------------------------- alias ori_moto_setup setup def setup(actor_id) ori_moto_setup(actor_id) @add_skill_id = [] end #-------------------------------------------------------------------------- # ☆ 発動確率と追加スキルIDの取得フラグ #-------------------------------------------------------------------------- def add_skill_attack_flag @add_skill_id = [] for equip in equips.compact for skill_id in 0...equip.add_skill_attack.size if equip.add_skill_attack[skill_id] != nil && equip.add_skill_attack[skill_id] >= rand(100) + 1 @add_skill_id << skill_id end end end #最終的 if @add_skill_id != [] @add_skill_id = @add_skill_id[rand(@add_skill_id.length)] return true else return false end end end class Game_Battler < Game_BattlerBase #-------------------------------------------------------------------------- # ☆ スキル/アイテムの使用 # 行動側に対して呼び出され、使用対象以外に対する効果を適用する。 # (コモンイベント) #-------------------------------------------------------------------------- def use_item_common_event(item) item.effects.each {|effect| item_global_effect_apply(effect) } end end #============================================================================== # ■ Scene_Battle #------------------------------------------------------------------------------ #  バトル画面の処理を行うクラスです。 #============================================================================== class Scene_Battle < Scene_Base #-------------------------------------------------------------------------- # ○ スキル/アイテムの効果を適用 #-------------------------------------------------------------------------- alias ori_moto_apply_item_effects apply_item_effects def apply_item_effects(target, item) ori_moto_apply_item_effects(target, item) return if $game_troop.all_dead? || @subject.enemy? || @subject.current_action == nil unless MOTO::DEAD_ADD_SKILL return if target.dead? end unless MOTO::MISS_ADD_SKILL return unless target.result.hit? end if @subject.current_action.attack? if !@subject.confusion? && @subject.add_skill_attack_flag @subject.current_action.set_skill(@subject.add_skill_id) add_skill_action end end end #-------------------------------------------------------------------------- # ☆ 追加スキル発動 #-------------------------------------------------------------------------- def add_skill_action item = @subject.current_action.item targets = @subject.current_action.make_targets.compact @subject.use_item_common_event(item) show_animation(targets, item.animation_id) targets.each{ |target| target.item_apply(@subject, item) @log_window.display_action_results(target, item) } end end