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

Battery is the most devastating explosives specialist to hit the scene, but using her abilities to maximum effect can be tricky.

Battery is a loud specialist with big explosive, “area of effect” damage and average cooldown times. She packs a serious punch and can be used to great effect in objective gamemodes.

However, she can be easily countered due to the heavily buffed Flak Jacket perk, so how do you use her best in the current meta? Let’s take a look. This short guide is split into the Specialist Ability & Special Issue Equipment.

Specialist Ability: War Machine

The War Machine is a quick-to-fire grenade launcher with high damage and a decent splash damage radius. The grenades can bounce off walls and other objects before exploding. They can also be fired over a long distance, albeit with a heavy drop curve.

When playing against people that know of the War Machine’s power, you will need to be tactical in its usage.

We suggest using the War Machine as a backup plan of sorts. When your team is pushed out of objectives or down in points, pull out the War Machine to flip the odds. Due to it’s explosive fuse delay/projectile air-time, the War Machine cannot used as readily as the Tempest or Annihilator.

When facing Flak Jacket users, you will have to choose your targets carefully. If you see the tell-tale Flak Jacket hit marker, let your teammates take care of it with their guns. Focus on other targets without Flak Jacket. If the Flak Jacket user pushes you, hit your War Machine grenades directly into the Flak users. These hits will do a little bit of extra damage and save you from a wasted Specialist usage.

Special Equipment: Cluster Grenade

The Cluster Grenade serves a double purpose. The grenade excels in doing damage and eliminating opponents, but also brings crowd control to objectives. Enemies will have flee from the cluste grenade’s path to avoid dying.

The absolute optimal way to use the Cluster Grenade is to stick one enemy in a group. The grenade with explode after a short fuse time and most players tend to run away with the grenade stuck to them, causing more damage to their teammates.

This tactic can be used when defending or attacking an area as it only requires that you aim the grenade well and that a enemy group is nearby. You can stick the grenade to the ground or walls, but this will generally gives the enemy a bit more time to avoid it.

A final note of the Cluster Grenade. Be aware that the grenade can be deadly due to its unpredictability at times. When the grenade explodes and splits, keep track of the projectiles and be sure to avoid them yourself.

We hope these tips will help you out the next time you use Battery. Remember to experiment with different tactics and tell us your favorites ways to play Black Ops 4 on Twitter at @CharlieIntel.

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.