// initialize jwplayer var playerInstance = jwplayer('player');// player dom elements var playerContainerEl = document.querySelector('.player-container');// returns video player position from top of document function getElementOffsetTop(el) { var boundingClientRect = el.getBoundingClientRect(); var bodyEl = document.body; var docEl = document.documentElement; var scrollTop = window.pageYOffset || docEl.scrollTop || bodyEl.scrollTop; var clientTop = docEl.clientTop || bodyEl.clientTop || 0; return Math.round(boundingClientRect.top + scrollTop - clientTop); }// returns the current y scroll position function getScrollTop() { var docEl = document.documentElement; return (window.pageYOffset || docEl.scrollTop) - (docEl.clientTop || 0); }// configure jwplayer instance playerInstance.setup({ autostart: true, playlist: 'https://cdn.jwplayer.com/v2/playlists/mYdavspX', primary: 'html5', setFullscreen: true, width: '100%' });// when jwplayer instance is ready playerInstance.on('ready', function() { var config = playerInstance.getConfig(); var utils = playerInstance.utils; // get height of player element var playerHeight = config.containerHeight; // flag determining whether close has been clicked var closed = true; // CHANGED // flag determing whether player is playing var playing = false; // ADDED // eventhandler for when close button is being pressed document.getElementsByClassName('icon-close')[0].addEventListener('click', () => { closed = true; onScrollViewHandler(); }); playerInstance.on('play', function() { closed = false; playing = true; // ADDED }).on('pause', function () { playing = false; // ADDED }).on('adPlay', function() { closed = false; // ADDED playing = true; // ADDED }).on('adPause', function() { playing = false; // ADDED });// get player element position from top of document var playerOffsetTop = getElementOffsetTop(playerContainerEl);// set player container to match height of actual video element playerContainerEl.style.height = playerHeight + 'px';// below we handle window scroll event without killing performance function onScrollViewHandler() { var minimized = getScrollTop() >= playerOffsetTop;if (closed && minimized) { minimized = false; jwplayer().pause(); playing = false; // ADDED } else if (!minimized && !playing) { closed = true; // ADDED } utils.toggleClass(playerContainerEl, 'player-minimize', minimized); // update the player's size so the controls are adjusted playerInstance.resize(); }// namespace for whether or not we are waiting for setTimeout() to finish var isScrollTimeout = false;// window onscroll event handler window.onscroll = function() { // skip if we're waiting on a scroll update timeout to finish if (isScrollTimeout) return; // flag that a new timeout will begin isScrollTimeout = true; // otherwise, call scroll event view handler onScrollViewHandler(); // set new timeout setTimeout(function() { // reset timeout flag to false (no longer waiting) isScrollTimeout = false; }, 80); };});

The third downloadable content pack for Call of Duty: Black Ops 3, Descent, will be available August 11th on Xbox One and PC.

Call of Duty: Black Ops 3 Descent DLC Pack 3 features four new multiplayer maps, including a remake of Call of Duty: Black Ops 2’s Raid, and the next chapter in the Black Ops 3 Zombies saga, Gorod Krovi.

Multiplayer Maps: 

  • Empire: Treyarch adapts its Black Ops III movement system to the Call of Duty®: Black Ops II fan favorite map Raid. The re-imagining of this classic, medium-sized map features an authentic Roman villa that has been “recreated by a modern-day eccentric billionaire,” where a classic map structure mixes with the new gameplay mechanics of Black Ops III. Watch the preview video here.
  • Cryogen: Located far off the coast in the Dead Sea, an isolated compound holds some of the world’s most dangerous criminals in frozen isolation. Sentry towers keep watch over the small map’s circular design as frenetic combat is funneled around the prison’s cryogenic tubes, where opportunities for wall running attacks abound. Watch the preview video here.
  • Berserk: Ancient sentinels from a lost civilization guard the entrance to Berserk, a Viking village frozen in time. Players will fight through blizzards, and control the center bridge as they navigate this medium-sized map’s wooden buildings, deadly rocky outcroppings, and tight chokepoints. Watch the preview video here.
  • Rumble: Gamers battle amongst larger-than-life mechanized warriors in Rumble, a stadium where giant robots battle to the roar of the crowd. This medium-sized map funnels high-speed combat to the central arena, where players battle their way through fallen mechs and pyrotechnics. Watch the preview video here.

Zombies: 

  • Gorod Krovi: Descent also thrusts players to an alternate universe of Nikolai’s motherland, the 1940s Soviet Union, in the next highly-anticipated chapter of the Origins Zombies saga, Gorod Krovi. Players face-off against a swarm of mechanized zombie infantry and dodge hell-fire from aerial dragon assaults, all in the middle of a raging battle within the remnants of Stalingrad. Gorod Krovi delivers the most exciting Zombies experience yet, filled with horrifying new enemies, exciting new gameplay mechanics and an epic set of Zombie annihilating weapons. Watch the gameplay trailer here.

Trailer:



Call of Duty: Black Ops 3 Descent is available now on PlayStation 4 and is coming August 11 to Xbox One and PC. Descent is available with the Call of Duty: Black Ops 3 Season Pass or available separately the in-game store and the PlayStation Store for $14.99.

*DLC Pack 3 is not available on PS3 or Xbox 360.

comments below