       if @fleetType == 0
         if enemyType == 0
           # Opening Anti-Sub
-          stages.push simulateShelling(@mainFleet, @enemyFleet, null, packet.api_opening_taisen, StageType.Opening)
+          stages.push simulateShelling(@mainFleet, @enemyFleet, @enemyEscort, packet.api_opening_taisen, StageType.Opening)
           # Opening Torpedo Salvo
-          stages.push simulateTorpedo(@mainFleet, @enemyFleet, null, packet.api_opening_atack, StageType.Opening)
+          stages.push simulateTorpedo(@mainFleet, @enemyFleet, @enemyEscort, packet.api_opening_atack, StageType.Opening)
           # Shelling (Main), 1st
-          stages.push simulateShelling(@mainFleet, @enemyFleet, null, packet.api_hougeki1, null)
+          stages.push simulateShelling(@mainFleet, @enemyFleet, @enemyEscort, packet.api_hougeki1, null)
           # Shelling (Main), 2nd
-          stages.push simulateShelling(@mainFleet, @enemyFleet, null, packet.api_hougeki2, null)
+          stages.push simulateShelling(@mainFleet, @enemyFleet, @enemyEscort, packet.api_hougeki2, null)
           # Closing Torpedo Salvo
-          stages.push simulateTorpedo(@mainFleet, @enemyFleet, null, packet.api_raigeki)
+          stages.push simulateTorpedo(@mainFleet, @enemyFleet, @enemyEscort, packet.api_raigeki)
         if enemyType == 1
           # Opening Anti-Sub
           stages.push simulateShelling(@mainFleet, @enemyFleet, @enemyEscort, packet.api_opening_taisen, StageType.Opening)

      # Surface Task Force, 水上打撃部隊
      if @fleetType == 2
        # Opening Anti-Sub
        stages.push simulateShelling(@escortFleet, @enemyFleet, null, packet.api_opening_taisen, StageType.Opening)
        # Opening Torpedo Salvo
        stages.push simulateTorpedo(@escortFleet, @enemyFleet, null, packet.api_opening_atack, StageType.Opening)
        # Shelling (Main), 1st
        stages.push simulateShelling(@mainFleet, @enemyFleet, null, packet.api_hougeki1, StageType.Main)
        # Shelling (Main), 2nd
        stages.push simulateShelling(@mainFleet, @enemyFleet, null, packet.api_hougeki2, StageType.Main)
        # Shelling (Escort)
        stages.push simulateShelling(@escortFleet, @enemyFleet, null, packet.api_hougeki3, StageType.Escort)
        # Closing Torpedo Salvo
        stages.push simulateTorpedo(@escortFleet, @enemyFleet, null, packet.api_raigeki)

      # Carrier Task Force, 空母機動部隊
      # Transport Escort, 輸送護衛部隊
      if @fleetType == 1 or @fleetType == 3
        # Opening Anti-Sub
        stages.push simulateShelling(@escortFleet, @enemyFleet, null, packet.api_opening_taisen, StageType.Opening)
        # Opening Torpedo Salvo
        stages.push simulateTorpedo(@escortFleet, @enemyFleet, null, packet.api_opening_atack, StageType.Opening)
        # Shelling (Escort)
        stages.push simulateShelling(@escortFleet, @enemyFleet, null, packet.api_hougeki1, StageType.Escort)
        # Closing Torpedo Salvo
        stages.push simulateTorpedo(@escortFleet, @enemyFleet, null, packet.api_raigeki)
        # Shelling (Main), 1st
        stages.push simulateShelling(@mainFleet, @enemyFleet, null, packet.api_hougeki2, StageType.Main)
        # Shelling (Main), 2nd
        stages.push simulateShelling(@mainFleet, @enemyFleet, null, packet.api_hougeki3, StageType.Main)

    if path in ['/kcsapi/api_req_battle_midnight/battle',
                '/kcsapi/api_req_practice/midnight_battle',

    attacks: attacks
    kouku: kouku

# TODO: torpedo from main & escort fleet
simulateTorpedoAttack = (fleet, targetFleet, targetEscort, api_eydam, api_erai, api_ecl) ->
  list = []
  return list unless targetFleet? and api_eydam?
