﻿#==============================================================================
# ★ ExEnemy_DoubleAction
#------------------------------------------------------------------------------
# 　設置讓敵人一定機率出現連續行動。
#==============================================================================

# 能夠連續行動的敵人識別用文字。
# 在敵人的「備註」欄中填寫：
# 識別用文字 + [機率]，也就是說：可以設定不同敵人的機率
# 出現連續行動的機率、每回合判斷一次。
# 例) 50％機率出現連續行動 => *DOUBLE_ACTION[50]
EXENM_DOUBLEACT_SIGNATURE = "*DOUBLE_ACTION"

# 連續行動的默認機率。
# 當識別用文字中沒有設置時調用的機率、請指定為1～100(％)。
EXENM_DOUBLEACT_PROBARITY = 100

#------------------------------------------------------------------------------

class Game_Enemy
  alias _exedblact_initialize initialize
  #--------------------------------------------------------------------------
  # ○ 定義執行個體變數 (追加定義)
  #--------------------------------------------------------------------------
  attr_accessor :attacked                 # 「已經攻擊一次」標記
  #--------------------------------------------------------------------------
  # ○ 初始化物件 (追加定義)
  #     index    : 隊伍中索引
  #     enemy_id : 敵人 ID
  #--------------------------------------------------------------------------
  def initialize(index, enemy_id)
    _exedblact_initialize(index, enemy_id)
    @attacked = false
  end
  #--------------------------------------------------------------------------
  # ☆ 判定能否連續行動
  #--------------------------------------------------------------------------
  def double_action?
    return false if @attacked
    sig = EXENM_DOUBLEACT_SIGNATURE
    return false unless enemy.note[/#{Regexp.quote sig}\[?(\d*)\]?/].to_a[0]
    prob = $1.to_i
    prob = EXENM_DOUBLEACT_PROBARITY if prob == 0
    @attacked = true
    return rand(100) < prob
  end
end

class Game_Troop
  alias _exedblact_increase_turn increase_turn
  #--------------------------------------------------------------------------
  # ○ 增加回合數 (追加定義)
  #--------------------------------------------------------------------------
  def increase_turn
    _exedblact_increase_turn
    for enemy in members
      enemy.attacked = false
    end
  end
end

class Scene_Battle
  alias _exedblact_set_next_active_battler set_next_active_battler
  #--------------------------------------------------------------------------
  # ○ 設置下一戰鬥者行動 (追加定義)
  #--------------------------------------------------------------------------
  def set_next_active_battler
    if @active_battler.is_a?(Game_Enemy)
      return @active_battler.make_action if @active_battler.double_action?
    end
    _exedblact_set_next_active_battler
  end
end
