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

All the rewards from every tier in Operation Spectre Rising’s Contraband.

With the launch of Operation Spectre Rising in Call of Duty Black Ops 4, a new Contraband has been introduced. Rather than lasting over two months and consisting of 100 tiers, this Operation will last half the time and consists of only 50 tiers.

Just like we did for Operation Grand Heist, we’re going to take a deep dive into what these tiers have to offer and how it stacks up to last season. Scroll to the bottom of the page for images of all the loot!

  • Stickers – 20 (20 Common)
  • Calling Cards – 12 (12 Rare)
  • Outfits – 6 (1 Rare, 3 Legendary, 2 Epic)
  • Gestures – 4 (2 Rare, 2 Legendary)
  • Reticles – 2 (2 Legendary)
  • Warpaints – 2 (1 Rare, 1 Legendary)
  • Weapons – 2 (2 Ultra)
  • Specialists – 1 (1 Ultra)
  • Jump Packs – 1 (1 Legendary)

Noticeably absent this Operation are weapon camos and Mastercrafts. While every Contraband has had at least one of each, my personal favorite customization item in Black Ops 4 is unobtainable through tier progression this season.

The least desirable items, anything Rare of below, take up 72% of the Contraband while most desirable items, anything Epic or higher, make up 10% of the pool.

What’s most interesting about this is that Treyarch has remained consistent with their offerings despite heavy criticism from the fans. Both in Operation Grand Heist and Spectre Rising, only 6% of items are Ultra.

However, there has been a decrease in percentage of Calling Cards and Stickers this time around (yet only by 5%), with an increase in percentage of Reticles, Gestures, Warpaints, and Jumpacks by 7%, so at least there is more variety. Mirroring last Operation, there are no Tags or character specific Warpaints and Gestures in these Tiers which is definitely a plus.

There are also two items confirmed to come to Black Ops 4 in the future, the Ballistic Knife and the Vendetta Sniper Rifle, that presumably will be part of the second half of this season.

Click the pictures below to see all 50 items in this Operation’s Contraband:

Operation Spectre Rising ends on June 4 for PlayStation 4 players. Find out what else is coming this season in Treyarch’s Roadmap overview.

With less to chase, and less time to chase it, let us know if you plan on ranking through all these tiers in the comments below!

comments below
Brooklyn boy, born and raised. @MrBrawl96 everywhere on the World Wide Web.