// 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); };});

First debuted last week on PlayStation 4, the new Gauntlet feature, alongside brand new elixirs is coming to Xbox One and PC to Call of Duty: Black Ops 4 on January 22, 2019.

Treyarch announced this feature prior to launch, but held the release till the stability issues surrounding Zombies were fully addresses. Treyarch launched the Gauntlet feature on 115 Day on PlayStation 4, and now the new feature is coming to Xbox One and PC on January 22. There’s only one Gauntlet available, with another coming later this month.

We’re excited to debut Gauntlets in Zombies starting with “Unsinkable” in Voyage of Despair! Gauntlets in Zombies are endlessly-replayable, 30-round challenges with unique rules governing gameplay in each round. Players earn medals and tiered rewards for completing rounds 10, 20, and 30, as well as a unique reward to adorn your Emblem for completing round 30 without failing a round. Sound easy? Think again.

The rules of engagement change each round, including weapon restrictions, area defense challenges, health-drain modifiers, time limitations, and much more. You and your crew will earn a Strike by failing a round, and after three Strikes, it’s game over. Mastering all 30 rounds will test the skills of even the most seasoned veterans, and only the best zombie killers will conquer an entire Gauntlet with zero Strikes.

Here’s what’s coming on Xbox One and PC:

  • Gauntlets
    • Unsinkable” Gauntlet live in Voyage of Despair.
    • 30 rounds of challenges with unique rules for each round.
    • Players earn medals and tiered rewards for completing rounds 10, 20, and 30, as well as an additional reward for completing round 30 without failing a round.
    • Players are issued a Strike by failing a round, with the game ending after three Strikes.
    • All matches are timed for competitive speed-run support.
  • New Elixirs
    • Perk Up (Epic): Gain 4 additional random Perks that are not in your loadout.
    • Refresh Mint (Epic): Refreshes the cooldowns for Equipment, Perks, and Special Weapons for your entire team.
    • Conflagration Liquidation (Epic): Spawn a Bonfire Sale power-up.

Stay tuned for news as Xbox One and PC gets this new feature. Also check out what Treyarch has planned for Zombies in the future in the 115 Day post here.

comments below