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

As of current, the CWL ruleset allows for a plethora of traditionally non-competitive items to be used within CWL matches. These matches include 2K tourneys and all CWL LAN events.

As such, professional players from all major teams as well as many amateur teams have agreed to forego the use of these items. The rules, known as Gentlemen’s Agreements or GA’s, have become the standard way professional Black Ops 4 is played.

These GA’s are the reason viewers will not have seen usage of Darts, RC-XDs, Seeker Drones, and the like in any CWL streamed event.

The current GA’s include items which provide an unfair advantage to the player or take less skill than determined acceptable by the pros. Below is a list of some items included in the current GA’s:

  • Specialists: Ballistic Shield, 9-Bang, Reactor Core, Sensor Dart, Seeker Drone, Tac-Deploy, Barricade, Razor Wire
  • Gear: Comsec Device, Body Armor, Equipment Charge
  • Equipment: Molotov
  • Scorestreaks: RC-XD, Dart

As seen, items in the GA’s can give teams/players instant advantages without much effort or individual skill. This is why pros feel it necessary to play by their own additional restrictions until Treyarch implements at least some of the GA’s into its official CWL ruleset.

Not only do the unofficial rules create a confusing atmosphere between amateur competitive players (and upcoming League Play players) and their professional counterparts, but the development also leads to unnecessary rivalry disputes and unofficial enforcement of these rules.

This may work for professional teams who know each other well, but becomes a dubious proposal when talking about open bracket play and online tournaments.

The current mechanism pro players use to keep each other in line and abiding by the GA’s is a threat of sorts. If a player or team uses GA banned items, other teams will be informed and teams will no longer scrim said team. This means any team that gets caught breaking the agreements becomes a pariah and cannot get ample practice for events.

The overall situation leads to a rather unhealthy relationship between teams and creates confusion for eager viewers of CoD eSports.

Solving the situation would require a ruleset change by Treyarch, who have already made several changes to the CWL ruleset. Implementing the GA’s into the CWL ruleset would unite the community behind a central playlist used in all sanctioned events.

The change also potentially helps the success of the upcoming League Play ranked mode by allowing aspiring competitive players to truly play like the pros, using strategies made by their favorites teams and players.

League Play is currently scheduled to arrive by the end of January and the next CWL event takes place on Jan. 16th. Daily and Weekly Tournaments are played on Gamebattles, UMG, and CMG

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.