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

Call of Duty’s rise to popularity came with a mixture of iconic gameplay and remarkable characters.

Many of Call of Duty’s finest characters left lasting impressions on us as players. Captain Price taught us to check our corners and Gaz instructed us with the key tip of “switching to your sidearm is always faster than reloading.”

We went on to fight alongside them in missions and took the lessons they taught us to the grimy battlefields of Multiplayer.

Alternatively, in the case of the other memorable characters listed here, they were our greatest enemies. They committed acts of violence and lunacy that shook us to the very bone, teaching us what evil and hatred look like when manifested into man.

Now, it would only be fitting to honor these comrades and enemies with something worthy of their personalities, histories, and combat prowess.

These are characters we would love to see receive a reintroduction as Blackout skins for Black Ops 4.

Captain Price

Captain Price appeared in all three Modern Warfare games and served as the main supporting role alongside our player characters. A to-the-point military man with a bit of humor to spice things up, Price was there from beginning to bitter end.

General Shepherd

A ruthless military mastermind who hatched a plan to begin World War III in order to cement himself as the greatest military general in history. This led to Russia’s attack on US soil and the death of Ghost as well as many others. He served as the secret main antagonist of Modern Warfare 2.

John “Soap” MacTavish

A playable character in Modern Warfare 1, Soap was recruited into the SAS and served under Price. His actions helped save the world from the evils of Makarov and he died in service to this cause.

Vladimir Makarov

The mastermind behind most of the events of the Modern Warfare games, Makarov is a killer and fiend. His primary goal was to see Russia restored to its standing as the Soviet Union. He believed the current Russian government had grown weak and needed to be replaced by his own kind. Makarov was hung by Captain Price at the end of Modern Warfare 3.

Simon “Ghost” Riley

Simon “Ghost” Riley played much the same role as Gaz. He is a supporting squadmate with clever lines and the tactical smarts to win out in any firefight. His iconic skull mask already inspired a new CoD universe in “Ghosts” and would be a welcome addition to the ranks of Blackout.

Do you agree with our five suggestions for Blackout skins? What would you like to see added to the popular game mode? Tell us here or @CharlieIntel on Twitter.

comments below
A life-long Call of Duty player, Bachelor of Game Design, and a lover of eSports. Floodsye is my real name, Tommi is just the gamertag my parents gave me.