#==============================================================================
#                「スキル毎クリティカル設定」(ACE) ver3.0  by奈々
#
#   ◇使用規約
#   使用される場合はスクリプト作成者として「奈々」を明記して下さい。
#   このスクリプトを改変したり、改変したものを配布するなどは自由ですが
#   その場合も元のスクリプトの作成者として名前は載せて下さい。
#
#------------------------------------------------------------------------------
#
#   ・会心率をスキル毎に増減
#   スキルのメモ欄に<会心率プラス 数値>か<会心率マイナス 数値>と書きます。
#   このスキルを使用する場合、アクターの「会心率」にその数値が足されます。
#   (例えば<会心率プラス 50>のスキルを会心率+10%のアクターが使うと60%扱い)
#
#   ・クリティカル時にダメージを何倍にするか指定
#   スキルのメモ欄に<会心威力 数値>と書いて設定します。(1.5などの小数も可能)
#   書かない場合はデフォルトの3倍で計算されます。
#
#==============================================================================
#==============================================================================
#
#   内蔵型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
  #--------------------------------------------------------------------------
  # ○ スキル/アイテムの会心率計算(再定義)
  #--------------------------------------------------------------------------
  def item_cri(user, item)
    item.damage.critical ? (user.cri + item.cri_fix) * (1 - cev) : 0
  end
  #--------------------------------------------------------------------------
  # ○ クリティカルの適用(再定義)
  #--------------------------------------------------------------------------
  def apply_critical(damage, item)
    item.cri_damage ? damage * item.cri_damage.truncate : damage * 3
  end
  #--------------------------------------------------------------------------
  # ○ *クリティカル(再定義)
  #--------------------------------------------------------------------------
  def make_damage_value_6(user, item, value)
    value = apply_critical(value, item) if @result.critical
    return value
  end
end
class RPG::UsableItem < RPG::BaseItem
  #--------------------------------------------------------------------------
  # ☆ 会心率修正の定義(追加定義)
  #--------------------------------------------------------------------------  
  def cri_fix
    @note.scan(/<会心率(プラス|マイナス)\s?(\d*)>/)
    return ($2.to_i * 0.01) if $2 && $1 == "プラス"
    return -(($2.to_i * 0.01)) if $2 && $1 == "マイナス"
    return 0
  end
  #--------------------------------------------------------------------------
  # ☆ 会心の威力の定義(追加定義)
  #--------------------------------------------------------------------------  
  def cri_damage
    @note.scan(/<会心威力\s?(\d*)>/)
    return $1.to_i if $1
    return 3
  end
end