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

Over the recent days, the Stock 2 attachment has become a topic of great controversy.

The issue was brought up by professional and amateur competitive players, but the problem extends to casual multiplayer as well. While many pro players want to see it banned, the casual community would prefer a patch fix.

The basics of the Stock 2 conundrum is that attachment allows the Saug 9mm to move at incredible speeds while ADS’d. The reason this is an issue is a multi-faceted one.

Firstly, the Saug 9mm is one of the best weapons in Black Ops 4’s multiplayer WITHOUT the use of Stock 2. The attachment further buffs a weapon that already performs at the top of its class.

Secondly, the current animation for strafing in Black Ops 4 is unable to correctly handle quick-strafing and constant switches in strafe direction. The animations easily bug out and cause the user to bend their player character’s spine at 30 degrees. This effect is repeated each time the player switches directions.

While a minority of professional players have argued that if the Stock 2 is “banned” then all level 2 attachments should be removed, Parasite made a strong case against this on Twitter.

The Stock 2 attachment is so powerful that players must choose specific specialists to counter its speed. According to prominent players, only a few teams want the attachment to remain in play.

Now, while professional players want to see the attachment banned from competitive, this is not a solution for the problem.

A more permanent solution should be applied in the form of a patch from Treyarch. Two possible patch solutions could help to remove the problem from both competitive and casual play.

Treyarch could choose to remove the Stock 2 from the Saug 9mm as the item is not a problem on other weapons (VAPR, slower base strafe speed).

Alternatively, Treyarch could look into fixing the current strafing animations in the game. The unnatural side-to-side bending of the character makes it difficult to aim at the strafing target and an animation fix could be all that is needed.

Either way, the issue will continue to plague casual multiplayer until a patch is applied. The professional scene’s problem with the Stock 2 may be band-aided through an item ban or “gentlemen’s agreement.”

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.