#==============================================================================
#                     「混乱のリアリティ強化」(ACE) Ver.1.0
#   製作者:奈々(なな)
#   へぷたなすくろーる http://heptanas.mamagoto.com/
#
#   ◇使用規約
#   使用される場合はスクリプト作成者として「奈々」を明記して下さい。
#   スクリプトの改変は自由に行って頂いて構いませんが
#   その場合も元のスクリプトの作成者として名前を載せて下さい。
#   また配布前に必ず、ブログにある利用規約を確認して下さい。
#
#------------------------------------------------------------------------------
#   
#   デフォルトの「混乱」(敵か味方を攻撃する)は
#   まず1/2の確率で敵に攻撃するか味方に攻撃するかを判定し
#   その上で狙われ率に応じて誰に攻撃が当たるかを決めていました。
#   
#   これを、自分自身を除いた敵味方全員に対して
#   狙われ率に応じて判定するよう変更します。
#   
#   つまり、人数が多い方により攻撃が当たりやすくなり
#   かばうなどで味方からの攻撃も防げるようになり
#   1人しかいない相手には混乱の有効性が下がるようになります。
#   
#   使い方は、スクリプトをリストに追加するだけです。
#   (特にスクリプトの設定をする必要はありません)
#   
#==============================================================================

#==============================================================================
# ■ Game_Action
#------------------------------------------------------------------------------
#  戦闘行動を扱うクラスです。このクラスは Game_Battler クラスの内部で使用され
# ます。
#==============================================================================

class Game_Action
  #--------------------------------------------------------------------------
  # ● 混乱時のターゲット
  #--------------------------------------------------------------------------
  def confusion_target
    case subject.confusion_level
    when 1
      opponents_unit.random_target
    when 2
      random_target_without_self
    else
      friends_random_target_without_self
    end
  end
  #Game_Unitの処理を移植改変
  #--------------------------------------------------------------------------
  # ● 無差別ターゲットのランダムな決定
  #--------------------------------------------------------------------------
  def random_target_without_self
    o = opponents_unit
    f = friends_unit
    s = subject
    
    tgr_rand = rand * (o.tgr_sum + f.tgr_sum - s.tgr)
    o.alive_members.each do |member|
      tgr_rand -= member.tgr
      return member if tgr_rand < 0
    end
    f.alive_members.each do |member|
      next if member == s
      tgr_rand -= member.tgr
      return member if tgr_rand < 0
    end
    o.alive_members[0]
  end
  #--------------------------------------------------------------------------
  # ● 味方ターゲットのランダムな決定
  #--------------------------------------------------------------------------
  def friends_random_target_without_self
    f = friends_unit
    s = subject
    
    tgr_rand = rand * (f.tgr_sum - s.tgr)
    f.alive_members.each do |member|
      next if member == s
      tgr_rand -= member.tgr
      return member if tgr_rand < 0
    end
    f.alive_members[0]
  end
end