#============================================================================== # ■ RGSS3 通常攻撃時使用効果付与特徴 Ver1.03 by 星潟 #------------------------------------------------------------------------------ # デフォルトでは、「使用効果:ステート付加:通常攻撃〜%」で敵に付与できるのは # 特徴(攻撃時ステート)で設定されたステートのみですが # このスクリプトを利用する事で各種『使用効果』も付与できるようになります。 # # つまり、通常攻撃時、対象にHP/MPの割合・固定回復/ダメージやTP回復/ダメージの追加、 # ステート解除(ステート付与はデフォルトで出来ます)、強化/弱体の付与及び解除、 # 敵の強制逃走、敵への成長効果付与、敵のスキル習得(デフォルトでは意味なし)、 # 行動後のコモンイベントの発動を付与する特徴が作成可能になります。 #------------------------------------------------------------------------------ # 使用例 # # ★それぞれ、特徴を有する項目(アクター・職業・装備・ステート等)のメモ欄に #  特定の文字列と数字を書き込む事で効果が得られます。 # ※強制逃走の対象やスキル習得、成長等の効果対象は本来の攻撃対象です。 # # キーワード後の最初の数値で効果の種類を決定し # 効果量等を後の数値で指定します。 # #  ☆HP回復/ダメージ(種類指定11) #   #   <使用効果追加:11,10,500> #   #    HP 最大HPの10%&固定値500ポイント回復。 #   #   <使用効果追加:11,-20,-1000> #   #    HP 最大HPの20%&固定値1000ポイントダメージ。 #   #  ☆MP回復/ダメージ(種類指定12) #   #   <使用効果追加:12,30,1500> #   #    MP 最大MPの30%&固定値1500ポイント回復。 #   #   <使用効果追加:12,-40,-2000> #   #    MP 最大MPの40%&固定値2000ポイントダメージ。 #   #  ☆TP回復/ダメージ(種類指定13) #   #   <使用効果追加:13,35> #   #    TP 固定値35ポイント回復。 #   #   <使用効果追加:13,-45> #    #    TP 固定値45ポイントダメージ。 #   #  ☆ステート付与(種類指定21) #   #   <使用効果追加:21,3,50> #   #    ID3のステートを50%の確率で付与。 #   #  ☆ステート解除(種類指定22) #   #   <使用効果追加:22,4,75> #   #    ID4のステートを75%の確率で解除。 #   #  ☆強化付与(種類指定31) #   #   <使用効果追加:31,0,5> #   #   最大HPを5ターン強化。 #   #   <使用効果追加:31,1,6> #   #   最大MPを6ターン強化。 #   #   <使用効果追加:31,2,7> #   #   攻撃力を7ターン強化。 #   #   <使用効果追加:31,3,8> #   #   防御力を8ターン強化。 #   #   <使用効果追加:31,4,9> #   #   魔法力を9ターン強化。 #   #   <使用効果追加:31,5,10> #   #   魔法防御を10ターン強化。 #   #   <使用効果追加:31,6,11> #   #   敏捷性を11ターン強化。 #   #   <使用効果追加:31,7,12> #   #   運を12ターン強化。 #   #  ☆弱体付与(種類指定32) #   #   <使用効果追加:32,0,13> #   #   最大HPを13ターン弱体。 #   #   <使用効果追加:32,1,14> #   #   最大MPを14ターン弱体。 #   #   <使用効果追加:32,2,15> #   #   攻撃力を15ターン弱体。 #   #   <使用効果追加:32,3,16> #   #   防御力を16ターン弱体。 #   #   <使用効果追加:32,4,17> #   #   魔法力を17ターン弱体。 #   #   <使用効果追加:32,5,18> #   #   魔法防御を18ターン弱体。 #   #   <使用効果追加:32,6,19> #   #   敏捷性を19ターン弱体。 #   #   <使用効果追加:32,7,20> #   #   運を20ターン弱体。 #   #  ☆強化解除(種類指定33) #   #   <使用効果追加:33,0> #   #   最大HPの強化を解除。 #   #   <使用効果追加:33,1> #   #   最大MPの強化を解除。 #   #   <使用効果追加:33,2> #   #   攻撃力の強化を解除。 #   #   <使用効果追加:33,3> #   #   防御力の強化を解除。 #   #   <使用効果追加:33,4> #   #   魔法力の強化を解除。 #   #   <使用効果追加:33,5> #   #   魔法防御の強化を解除。 #   #   <使用効果追加:33,6> #   #   敏捷性の強化を解除。 #   #   <使用効果追加:33,7> #   #   運の強化を解除。 #   #  ☆弱体解除(種類指定34) #   #   <使用効果追加:34,0> #   #   最大HPの弱体を解除。 #   #   <使用効果追加:34,1> #   #   最大MPの弱体を解除。 #   #   <使用効果追加:34,2> #   #   攻撃力の弱体を解除。 #   #   <使用効果追加:34,3> #   #   防御力の弱体を解除。 #   #   <使用効果追加:34,4> #   #   魔法力の弱体を解除。 #   #   <使用効果追加:34,5> #   #   魔法防御の弱体を解除。 #   #   <使用効果追加:34,6> #   #   敏捷性の弱体を解除。 #   #   <使用効果追加:34,7> #   #   運の弱体を解除。 #   #  ☆強制逃走(種類指定41)※バランスブレイカーの為要注意 #   #   <使用効果追加:41,0> #   #   対象を強制的に逃走させる。 #   #  ☆成長効果付与(種類指定42)※バランスブレイカーの為要注意 #   #   <使用効果追加:42,0,5> #   #   最大HPを5増加させる。 #   #   <使用効果追加:42,1,-6> #   #   最大MPを6減少させる。 #   #   <使用効果追加:42,2,8> #   #   攻撃力を8増加させる。 #   #   <使用効果追加:42,3,-9> #   #   防御力を9減少させる。 #   #   <使用効果追加:42,4,11> #   #   魔法力を11増加させる。 #   #   <使用効果追加:42,5,-12> #   #   魔法防御を12減少させる。 #   #   <使用効果追加:42,6,14> #   #   敏捷性を14増加させる。 #   #   <使用効果追加:42,7,-15> #   #   運を15減少させる。 #   #  ☆スキル習得(種類指定43)※敵相手にはデフォルトでは意味がありません。 #   #   <使用効果追加:43,10> #   #   ID10のスキルを習得させます。 #   #  ☆コモンイベント(種類指定44) #   #   <使用効果追加:44,15> #   #   ID15のコモンイベントを発生させます。 #------------------------------------------------------------------------------ # Ver1.02 コモンイベント関連の不具合を修正。 #============================================================================== module ATTACK_USE_EFFECT #使用効果追加のキーワードを設定します。 WORD = "使用効果追加" end class Game_Battler < Game_BattlerBase #-------------------------------------------------------------------------- # 使用効果[ステート付加]:通常攻撃 #-------------------------------------------------------------------------- alias item_effect_add_state_attack_attack_change item_effect_add_state_attack def item_effect_add_state_attack(user, item, effect) #本来の処理を実行。 item_effect_add_state_attack_attack_change(user, item, effect) #特徴別に追加使用効果を発動。 user.feature_objects.each do |f| #追加使用効果が空の場合は処理を飛ばす。 next if f.atch_ex_effect.empty? f.atch_ex_effect.each do |neo_effect| item_effect_apply(user, item, neo_effect) end end end #-------------------------------------------------------------------------- # スキル/アイテムの使用 #-------------------------------------------------------------------------- alias use_item_attack_change use_item def use_item(item) #本来の処理を実行。 use_item_attack_change(item) #使用効果[ステート付加]が行動にない場合は処理を飛ばす。 flag = item.effects.any? {|e| e.code == 21 && e.data_id == 0} return unless flag #特徴別に追加使用効果を発動。 feature_objects.each do |f| #追加使用効果が空の場合は処理を飛ばす。 next if f.atch_ex_effect.empty? f.atch_ex_effect.each {|neo_effect| item_global_effect_apply(neo_effect) } end end end class RPG::BaseItem #-------------------------------------------------------------------------- # 通常攻撃使用効果付与 #-------------------------------------------------------------------------- def atch_ex_effect #キャッシュがある場合はキャッシュを返す。 @atch_ex_effect ||= create_atch_ex_effect end #-------------------------------------------------------------------------- # 通常攻撃使用効果付与データ作成 #-------------------------------------------------------------------------- def create_atch_ex_effect #空の配列を用意 e = [] self.note.each_line do |l| #メモ欄の各行からデータを取得する。 next unless /<#{ATTACK_USE_EFFECT::WORD}[::](\S+)>/ =~ l #取得内容を優先対象ステートデータの配列に #文字列から数値化して移し替える。 a = $1.to_s.split(/\s*,\s*/).inject([]) {|r,i| r.push(i.to_i)} #記述内容から処理形式を分岐。 type = 0 case a[0].to_i when 11,12 #HP/MP type = 1 when 13 #TP type = 2 when 21,22 #ステート付与/ステート解除 type = 3 when 31,32,42 #強化付与 type = 4 when 33,34,41,43,44 #強化解除/強制逃走/スキル習得/コモンイベント type = 5 end #処理形式別に処理を実行し、追加使用効果の配列に加える。 case type when 1 next if a.size != 3 e.push(RPG::BaseItem::ATCH_EFFECT.new(a[0],0,a[1] * 0.01,a[2].to_f)) when 2 next if a.size != 2 e.push(RPG::BaseItem::ATCH_EFFECT.new(a[0],0,a[1].to_f,0.0)) when 3 next if a.size != 3 next if a[0] == 21 && a[1] == 0 e.push(RPG::BaseItem::ATCH_EFFECT.new(a[0],a[1],a[2] * 0.01,0.0)) when 4 next if a.size != 3 e.push(RPG::BaseItem::ATCH_EFFECT.new(a[0],a[1],a[2].to_f,0.0)) when 5 next if a.size != 2 e.push(RPG::BaseItem::ATCH_EFFECT.new(a[0],a[1],0.0,0.0)) end end #データを返す。 e end end #追加使用効果のクラスを作成。(通常の使用効果に準じる) class RPG::BaseItem::ATCH_EFFECT #-------------------------------------------------------------------------- # 初期化 #-------------------------------------------------------------------------- def initialize(code = 0, data_id = 0, value1 = 0, value2 = 0) @code = code @data_id = data_id @value1 = value1 @value2 = value2 end attr_accessor :code attr_accessor :data_id attr_accessor :value1 attr_accessor :value2 end