 #06/10/07
#==============================================================================
# ■ 仲間を呼ぶ
#------------------------------------------------------------------------------
# スキルに追加　名前：仲間を呼ぶ　効果範囲：自分自身
#==============================================================================
class Game_Enemy < Game_Battler
  attr_accessor :enemy_call               # 仲間を呼ぶ
  #--------------------------------------------------------------------------
  # ■ オブジェクト初期化
  #--------------------------------------------------------------------------
  alias hidesp_initialize initialize
  def initialize(troop_id, member_index)
    super()
    @enemy_call = [false,nil]
    # 仲間を呼んだ場合の[EXP/お金]増加
    $call_enemies = []
    # 元の処理を呼び出し
    hidesp_initialize(troop_id, member_index)
  end
end

class Game_Battler
  #--------------------------------------------------------------------------
  # ■ スキルの効果適用
  #--------------------------------------------------------------------------
  alias hidesp_skill_effect skill_effect
  def skill_effect(user, skill)
    # エネミー専用
    if skill != nil && user.is_a?(Game_Enemy)
      case skill.name
      when "仲間を呼ぶ"
        self.critical = false
        self.damage = ""
        # 無限に仲間を呼ぶことを禁止(最大数24)
        if $call_enemies.size >= 24
          # 変数の初期化
          user.enemy_call = [false,nil]
          # 元の処理を呼び出し
          hidesp_skill_effect(user, skill)
          return
        end
        # ランダムで対象を決定
        for ep in 0...$game_troop.enemies.size
          call_id = rand($game_troop.enemies.size)
          enemy_p = $game_troop.enemies[call_id]
          if enemy_p != nil
            self.enemy_call = [true,enemy_p]
            break
          end
        end
        
      end
    end
    # 元の処理を呼び出し
    hidesp_skill_effect(user, skill)
  end
end
  
class Scene_Battle
  #--------------------------------------------------------------------------
  # ■ フレーム更新 (メインフェーズ ステップ 5 : ダメージ表示)
  #--------------------------------------------------------------------------
  alias hidesp_update_phase4_step5 update_phase4_step5
  def update_phase4_step5
    # スキルの効果範囲を自分自身に設定している為ターゲットは[0]
    tc = @target_battlers[0]
    if tc != nil && tc.is_a?(Game_Enemy)
      if tc.enemy_call[0] == true
        # 既に隠れ状態の場合は、無効
        if tc.enemy_call[1].hidden == true
          # 隠れフラグをOFF(出現)
          tc.enemy_call[1].hidden = false
          tc.enemy_call[1].animation_id = 1
          tc.enemy_call[1].animation_hit = true
        elsif ! tc.enemy_call[1].exist?
          #【戦闘不能】状態のエネミーを呼び出す
          # ステータスの初期化（全回復）
          tc.enemy_call[1].recover_all
          tc.enemy_call[1].animation_id = 1
          tc.enemy_call[1].animation_hit = true
          # 経験値を獲得する為にエネミーを格納
          $call_enemies.push(tc.enemy_call[1])
        else
          # 条件に当てはまらない場合は、失敗
          tc.enemy_call = [false,nil]
          # 元の処理を呼び出し
          hidesp_update_phase4_step5
          return
        end
        # 変数の初期化
        tc.enemy_call = [false,nil]
        # ヘルプウィンドウを隠す
        @help_window.visible = false
        # ステップ 6 に移行
        @phase4_step = 6
        return
      end
    end
    # 元の処理を呼び出し
    hidesp_update_phase4_step5
  end
  
  #--------------------------------------------------------------------------
  # ■ アフターバトルフェーズ開始
  #--------------------------------------------------------------------------
  alias hidesp_start_phase5 start_phase5
  def start_phase5
    # トループ配列に呼び出されたエネミー配列を追加
    for i in $call_enemies
      $game_troop.enemies.push(i)
    end
    
    $call_enemies = []
    # 元の処理を呼び出し
    hidesp_start_phase5
  end
  
end

