#==============================================================================
# 「薬の知識、拡張スクリプト」(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