#============================================================================== # 「薬の知識、拡張スクリプト」(ACE) ver3.0 by奈々 # # ◇使用規約 # 使用される場合はスクリプト作成者として「奈々」を明記して下さい。 # このスクリプトを改変したり、改変したものを配布するなどは自由ですが # その場合も元のスクリプトの作成者として名前は載せて下さい。 # #------------------------------------------------------------------------------ # # 「薬の知識」が影響を与える要素を増やします。 # 初期設定で各項目のtrue/falseを切り替えてください。 # trueにした項目は、本来の数値に「薬の知識」の数値が乗算されます。 # この設定は全てのアクターに共通して適用されます。 # # アクター・職業・ステート・装備のメモ欄に # <薬の知識 ダメージ> <薬の知識 ステート付与率> <薬の知識 ステート解除率> # <薬の知識 HP回復率> <薬の知識 MP回復率> <薬の知識 TP回復率> # と入れると個別のアクターに対して設定可能です。 # # また、アイテムのメモ欄に<薬の知識無効>と入れると # そのアイテムは「薬の知識」の影響を受けなくなります。 # #============================================================================== # ◇初期設定(falseをtrueにすると全てのアクターで適用される) module NanaSeven PHA_DAMAGE = false #アイテムによるダメージ(回復や吸収含む) PHA_ADD_STATE = false #アイテムによるステート付与率 PHA_REMOVE_STATE = false #アイテムによるステート解除率 PHA_RECOVER_HP = false #アイテムによるHP回復率 PHA_RECOVER_MP = false #アイテムによるMP回復率 PHA_RECOVER_TP = false #アイテムによるTP回復率 end # #============================================================================== #============================================================================== # # 内蔵型MDVリッパー # #------------------------------------------------------------------------------ unless (NanaSeven::MDV_RIPPER rescue false) # 他のMDVリッパーの検出 module NanaSeven MDV_RIPPER = true end class Game_Battler < Game_BattlerBase #-------------------------------------------------------------------------- # ● ダメージ計算(極力再定義しない) #-------------------------------------------------------------------------- def make_damage_value(user, item) value = make_damage_value_1(user, item) value = make_damage_value_2(user, item, value) value = make_damage_value_3(user, item, value) value = make_damage_value_4(user, item, value) value = make_damage_value_5(user, item, value) value = make_damage_value_6(user, item, value) value = make_damage_value_7(user, item, value) value = make_damage_value_8(user, item, value) value = make_damage_value_new(user, item, value) @result.make_damage(value.to_i, item) end #-------------------------------------------------------------------------- # ● 再定義用下位メソッド群 #-------------------------------------------------------------------------- #-------------------------------------------------------------------------- # ● *ダメージ計算式 #-------------------------------------------------------------------------- def make_damage_value_1(user, item) value = item.damage.eval(user, self, $game_variables) return value end #-------------------------------------------------------------------------- # ● *属性有効度 #-------------------------------------------------------------------------- def make_damage_value_2(user, item, value) value *= item_element_rate(user, item) return value end #-------------------------------------------------------------------------- # ● *物理ダメージ率 #-------------------------------------------------------------------------- def make_damage_value_3(user, item, value) value *= pdr if item.physical? return value end #-------------------------------------------------------------------------- # ● *魔法ダメージ率 #-------------------------------------------------------------------------- def make_damage_value_4(user, item, value) value *= mdr if item.magical? return value end #-------------------------------------------------------------------------- # ● *回復効果率 #-------------------------------------------------------------------------- def make_damage_value_5(user, item, value) value *= rec if item.damage.recover? return value end #-------------------------------------------------------------------------- # ● *クリティカル #-------------------------------------------------------------------------- def make_damage_value_6(user, item, value) value = apply_critical(value) if @result.critical return value end #-------------------------------------------------------------------------- # ● 分散度 #-------------------------------------------------------------------------- def make_damage_value_7(user, item, value) value = apply_variance(value, item.damage.variance) return value end #-------------------------------------------------------------------------- # ● 防御修正 #-------------------------------------------------------------------------- def make_damage_value_8(user, item, value) value = apply_guard(value) return value end #-------------------------------------------------------------------------- # ● エイリアス用新規メソッド #-------------------------------------------------------------------------- def make_damage_value_new(user, item, value) return value end end end #------------------------------------------------------------------------------ # # ここまでMDVリッパー # #============================================================================== class Game_Battler < Game_BattlerBase #-------------------------------------------------------------------------- # ● ダメージと回復 *回復効果率 #-------------------------------------------------------------------------- alias pha_make_damage_value_5 make_damage_value_5 def make_damage_value_5(user, item, value) value = pha_make_damage_value_5(user, item, value) value *= user.pha if item.is_a?(RPG::Item) && (NanaSeven::PHA_DAMAGE == true || user.pha_damege?) && ! item.note.include?("<薬の知識無効>") return value end #-------------------------------------------------------------------------- # ● 使用効果[HP 回復](再定義) #-------------------------------------------------------------------------- def item_effect_recover_hp(user, item, effect) value = (mhp * effect.value1 + effect.value2) * rec value *= user.pha if item.is_a?(RPG::Item) && (NanaSeven::PHA_RECOVER_HP == true || user.pha_recover_hp?) && ! item.note.include?("<薬の知識無効>") value = value.to_i @result.hp_damage -= value @result.success = true self.hp += value end #-------------------------------------------------------------------------- # ● 使用効果[MP 回復](再定義) #-------------------------------------------------------------------------- def item_effect_recover_mp(user, item, effect) value = (mmp * effect.value1 + effect.value2) * rec value *= user.pha if item.is_a?(RPG::Item) && (NanaSeven::PHA_RECOVER_MP == true || user.pha_recover_mp?) && ! item.note.include?("<薬の知識無効>") value = value.to_i @result.mp_damage -= value @result.success = true if value != 0 self.mp += value end #-------------------------------------------------------------------------- # ● 使用効果[TP 増加](再定義) #-------------------------------------------------------------------------- def item_effect_gain_tp(user, item, effect) value = effect.value1.to_i value *= user.pha if item.is_a?(RPG::Item) && (NanaSeven::PHA_RECOVER_TP == true || user.pha_recover_tp?) && ! item.note.include?("<薬の知識無効>") value = value.to_i @result.tp_damage -= value @result.success = true if value != 0 self.tp += value end #-------------------------------------------------------------------------- # ● 使用効果[ステート付加]:通常攻撃(再定義) #-------------------------------------------------------------------------- def item_effect_add_state_attack(user, item, effect) user.atk_states.each do |state_id| chance = effect.value1 chance *= state_rate(state_id) chance *= user.atk_states_rate(state_id) chance *= luk_effect_rate(user) chance *= user.pha if item.is_a?(RPG::Item) && (NanaSeven::PHA_ADD_STATE == true || user.pha_add_state?) && ! item.note.include?("<薬の知識無効>") if rand < chance add_state(state_id) @result.success = true end end end #-------------------------------------------------------------------------- # ● 使用効果[ステート付加]:通常(再定義) #-------------------------------------------------------------------------- def item_effect_add_state_normal(user, item, effect) chance = effect.value1 chance *= state_rate(effect.data_id) if opposite?(user) chance *= luk_effect_rate(user) if opposite?(user) chance *= user.pha if item.is_a?(RPG::Item) && (NanaSeven::PHA_ADD_STATE == true || user.pha_add_state?) && ! item.note.include?("<薬の知識無効>") if rand < chance add_state(effect.data_id) @result.success = true end end #-------------------------------------------------------------------------- # ● 使用効果[ステート解除](再定義) #-------------------------------------------------------------------------- def item_effect_remove_state(user, item, effect) chance = effect.value1 chance *= user.pha if item.is_a?(RPG::Item) && (NanaSeven::PHA_REMOVE_STATE == true || user.pha_remove_state?) && ! item.note.include?("<薬の知識無効>") if rand < chance remove_state(effect.data_id) @result.success = true end end end class RPG::BaseItem #-------------------------------------------------------------------------- # ● 薬の知識(ダメージ) #-------------------------------------------------------------------------- def pha_damege? @note.include?("<薬の知識 ダメージ>") end #-------------------------------------------------------------------------- # ● 薬の知識(ステート付与率) #-------------------------------------------------------------------------- def pha_add_state? @note.include?("<薬の知識 ステート付与率>") end #-------------------------------------------------------------------------- # ● 薬の知識(ステート解除率) #-------------------------------------------------------------------------- def pha_remove_state? @note.include?("<薬の知識 ステート解除率>") end #-------------------------------------------------------------------------- # ● 薬の知識(HP回復率) #-------------------------------------------------------------------------- def pha_recover_hp? @note.include?("<薬の知識 HP回復率>") end #-------------------------------------------------------------------------- # ● 薬の知識(MP回復率) #-------------------------------------------------------------------------- def pha_recover_mp? @note.include?("<薬の知識 MP回復率>") end #-------------------------------------------------------------------------- # ● 薬の知識(TP回復率) #-------------------------------------------------------------------------- def pha_recover_tp? @note.include?("<薬の知識 TP回復率>") end end class Game_Battler < Game_BattlerBase #-------------------------------------------------------------------------- # ● 薬の知識(ダメージ) #-------------------------------------------------------------------------- def pha_damege? return false unless self.is_a?(Game_Actor) self.actor.pha_damege? || self.class.pha_damege? || self.equips.any? do |equip| next unless equip equip.pha_damege? end || self.states.any? do |state| next unless state state.pha_damege? end end #-------------------------------------------------------------------------- # ● 薬の知識(ステート付与率) #-------------------------------------------------------------------------- def pha_add_state? return false unless self.is_a?(Game_Actor) self.actor.pha_add_state? || self.class.pha_add_state? || self.equips.any? do |equip| next unless equip equip.pha_add_state? end || self.states.any? do |state| next unless state state.pha_add_state? end end #-------------------------------------------------------------------------- # ● 薬の知識(ステート解除率) #-------------------------------------------------------------------------- def pha_remove_state? return false unless self.is_a?(Game_Actor) self.actor.pha_remove_state? || self.class.pha_remove_state? || self.equips.any? do |equip| next unless equip equip.pha_remove_state? end || self.states.any? do |state| next unless state state.pha_remove_state? end end #-------------------------------------------------------------------------- # ● 薬の知識(HP回復率) #-------------------------------------------------------------------------- def pha_recover_hp? return false unless self.is_a?(Game_Actor) self.actor.pha_recover_hp? || self.class.pha_recover_hp? || self.equips.any? do |equip| next unless equip equip.pha_recover_hp? end || self.states.any? do |state| next unless state state.pha_recover_hp? end end #-------------------------------------------------------------------------- # ● 薬の知識(MP回復率) #-------------------------------------------------------------------------- def pha_recover_mp? return false unless self.is_a?(Game_Actor) self.actor.pha_recover_mp? || self.class.pha_recover_mp? || self.equips.any? do |equip| next unless equip equip.pha_recover_mp? end || self.states.any? do |state| next unless state state.pha_recover_mp? end end #-------------------------------------------------------------------------- # ● 薬の知識(TP回復率) #-------------------------------------------------------------------------- def pha_recover_tp? return false unless self.is_a?(Game_Actor) self.actor.pha_recover_tp? || self.class.pha_recover_tp? || self.equips.any? do |equip| next unless equip equip.pha_recover_tp? end || self.states.any? do |state| next unless state state.pha_recover_tp? end end end