#============================================================================== # スキル(アイテム)ダメージ強化 ver1.03 #------------------------------------------------------------------------------ #[特徴] # スキル(アイテム)のダメージをいろんな判定で強化(弱化)します。 # #[属性強化] # アクター、職業、エネミー、スキル、装備品、ステートのメモ欄に # <属性強化:属性ID,数値> と書く。 # # <属性強化:3,80> と書くと、 # 属性IDが 3 の【炎】のスキル(アイテム)の威力が 80% になります。 # # #[武器タイプ強化] # アクター、職業、スキル、装備品、ステートのメモ欄に # <武器タイプ強化:武器タイプID,数値> と書く。 # # <武器タイプ強化:1, 120> と書くと、 # 武器タイプIDが 1 の【斧】が必要武器に含まれるスキルの威力が 120% になります。 # # 【斧】を強化する状態のときは【斧】を装備している必要があるかどうかを # 下記の設定項目で設定可能です。 # (【斧】【槍】が必要武器に含まれるスキルを【槍】で使用した際、 #  スキルの威力を強化したくない場合などに設定してください) # # #[スキルタイプ強化] # アクター、職業、エネミー、スキル、装備品、ステートのメモ欄に # <スキルタイプ強化:スキルタイプID,数値> と書く。 # # <スキルタイプ強化:1, 110> と書くと、 # スキルタイプIDが 1 の【特技】のスキルの威力が 110% になります。 # # # 設定が複数重複したときの計算方法を加算にするか乗算にするかは # 下記の設定項目で設定可能です。 # (加算:120%+120%=140% or 乗算:120%×120%=144%) # # # 作成:ぶちょー # ホム:http://nyannyannyan.bake-neko.net # 著作:自分で作ったとか言わないで>< # 改造はご自由にどうぞ。 # リードミーとかに私の名前の載せたりするのは任意で。 #============================================================================== #============================================================================== # バージョンアップ情報 # ver1.03 バグ修正 # ver1.02 武器タイプ強化の仕様を変更 # ver1.01 バグ修正 # ver1.00 公開 #============================================================================== #============================================================================== # 設定項目 #============================================================================== module Kazari module SkillBoost # 設定が重複したときの計算方法 # 0 : 加算 # 1 : 乗算 CALC_TYPE = 0 # 武器タイプ強化をする際、 # 装備している武器のタイプも一致している必要があるかどうかの設定 # true : 一致している必要がある # false : 一致している必要がない NEED_WEAPON = true # 必要武器タイプが【斧】【槍】のスキルを【斧】強化の状態で使用した際、 # 【槍】を装備している時は強化したくない場合は true end end #============================================================================== # ここまで #============================================================================== $kzr_imported = {} if $kzr_imported == nil $kzr_imported["SkillBoost"] = true #============================================================================== # ■ Game_Battler #============================================================================== class Game_Battler #-------------------------------------------------------------------------- # ● スキル/アイテムの属性修正値を取得 #-------------------------------------------------------------------------- alias kzr_skill_boost_item_element_rate item_element_rate def item_element_rate(user, item) obj = user.feature_objects obj += user.skills if user.actor? elements = item.damage.element_id < 0 ? user.atk_elements : [item.damage.element_id] case Kazari::SkillBoost::CALC_TYPE when 0 rate = elements.inject(1.0) do |r, id| r += obj.inject(0.0) {|r, o| r += o.element_boost(id) } end if item.is_a?(RPG::Skill) rate += obj.inject(0.0) do |r, o| r += item.required_wtype.inject(0.0) {|r, wid| need_weapon = Kazari::SkillBoost::NEED_WEAPON ? user.actor? ? user.wtype_equipped?(wid) : true : true r += need_weapon ? o.weapon_boost(wid) : 0.0 } r += o.skill_type_boost(item.stype_id) end end when 1 rate = elements.inject(1.0) do |r, id| r *= obj.inject(1.0) {|r, o| r *= o.element_boost(id) } end if item.is_a?(RPG::Skill) rate *= obj.inject(1.0) do |r, o| r *= item.required_wtype.inject(1.0) {|r, wid| need_weapon = Kazari::SkillBoost::NEED_WEAPON ? user.actor? ? user.wtype_equipped?(wid) : true : true r *= need_weapon ? o.weapon_boost(wid) : 1.0 } r *= o.skill_type_boost(item.stype_id) end end end return kzr_skill_boost_item_element_rate(user, item) * [rate, 0.0].max end end class RPG::BaseItem def element_boost(element_id) return @element_boost[element_id] if @element_boost add = (Kazari::SkillBoost::CALC_TYPE == 0) @element_boost = (add ? [0.0] : [1.0]) * $data_system.elements.size note.each_line { |line| case line when /<属性強化:(\d+),(\d+)>/i @element_boost[$1.to_i] = $2.to_f / 100 - (add ? 1.0 : 0.0) end } return @element_boost[element_id] end def weapon_boost(weapon_id) return @weapon_boost[weapon_id] if @weapon_boost add = (Kazari::SkillBoost::CALC_TYPE == 0) @weapon_boost = (add ? [0.0] : [1.0]) * $data_system.weapon_types.size note.each_line { |line| case line when /<武器タイプ強化:(\d+),(\d+)>/i @weapon_boost[$1.to_i] = $2.to_f / 100 - (add ? 1.0 : 0.0) end } return @weapon_boost[weapon_id] end def skill_type_boost(type_id) return @skill_type_boost[type_id] if @skill_type_boost add = (Kazari::SkillBoost::CALC_TYPE == 0) @skill_type_boost = (add ? [0.0] : [1.0]) * $data_system.skill_types.size note.each_line { |line| case line when /<スキルタイプ強化:(\d+),(\d+)>/i @skill_type_boost[$1.to_i] = $2.to_f / 100 - (add ? 1.0 : 0.0) end } return @skill_type_boost[type_id] end end class RPG::Skill < RPG::UsableItem def required_wtype ids = [@required_wtype_id1, @required_wtype_id2].uniq ids.delete(0) ids end end