#============================================================================== # スキル優先度 ver1.00 #------------------------------------------------------------------------------ #[特徴] # 優先度の高いスキルは、敏捷性・速度補正に関わらず、先に発動する。 # #[スキル設定方法] # スキルのメモ欄に <スキル優先度:数値> と書く。 # 数値を負の数にすると、優先度を低くすることも可能です。 # メモ欄に書かなかった場合は、優先度は 0 となります。 # #[その他の設定方法] # アクター・職業・武器・防具・ステート・エネミーのメモ欄に # # <スキル優先度補正:属性,ID,数値> と書くと、 # 数値分その属性のスキルの優先度が加算されます。 # 例)<スキル優先度補正:属性,3,2> 炎属性のスキルの優先度が2加算される。 # # <スキル優先度補正:タイプ,ID,数値> と書くと、 # 数値分そのスキルタイプのスキルの優先度が加算されます。 # 例)<スキル優先度補正:タイプ,2,-1> 魔法タイプのスキルの優先度が1減算される。 # # # 作成:ぶちょー # ホム:http://nyannyannyan.bake-neko.net/ # 著作:自分で作ったとか言わないで>< # 改造はご自由にどうぞ。 # リードミーとかに私の名前の載せたりするのは任意で。 #============================================================================== #============================================================================== # バージョンアップ情報 # ver1.00 公開 #============================================================================== #============================================================================== # 設定項目 #============================================================================== module Kazari module SkillPriority # 優先度補正が重複した際の計算方法 # 0 : 加算 # 1 : 最大値 CALC = 0 end end #============================================================================== # ここまで #============================================================================== $kzr_imported = {} if $kzr_imported == nil $kzr_imported["SkillPriority"] = true #============================================================================== # ■ Game_Battler #============================================================================== class Game_Battler < Game_BattlerBase #-------------------------------------------------------------------------- # ● スキル優先度の取得 #-------------------------------------------------------------------------- def s_priority item = @actions[0].item if item sp = item.skill_priority rev = feature_objects.inject(0) {|r, obj| if Kazari::SkillPriority::CALC == 0 r += obj.skill_priority_revision("属性", item.damage.element_id) r += obj.skill_priority_revision("タイプ", item.stype_id) else r = [r, obj.skill_priority_revision("属性", item.damage.element_id), obj.skill_priority_revision("タイプ", item.stype_id)].max r end } return sp + rev end return 0 end end #============================================================================== # ■ BattleManager #============================================================================== class << BattleManager #-------------------------------------------------------------------------- # ● 行動順序の作成 #-------------------------------------------------------------------------- alias kzr_make_action_orders make_action_orders def make_action_orders kzr_make_action_orders @action_battlers.sort! {|a,b| b.s_priority - a.s_priority } end end #============================================================================== # ■ RPG::BaseItem #============================================================================== class RPG::BaseItem def skill_priority_revision(type, id) rev = (Kazari::SkillPriority::CALC == 0) ? 0 : -9999 note.each_line { |line| case line when /<スキル優先度補正:(\S+),(\d+),(-)?(\d+)>/ if $1.to_s == type && $2.to_i == id r = $3 ? $4.to_i * -1 : $4.to_i if Kazari::SkillPriority::CALC == 0 rev += r else rev = [rev, r].max end end end } rev = 0 if Kazari::SkillPriority::CALC == 1 && rev == -9999 return rev end end #============================================================================== # ■ RPG::UsableItem #============================================================================== class RPG::UsableItem < RPG::BaseItem def skill_priority note.each_line { |line| case line when /<スキル優先度:(-)?(\d+)>/ ; return $1 ? $2.to_i * -1 : $2.to_i end } return 0 end end