Attack links on enemy list

Adds attack links on enemy list

// ==UserScript==
// @name         Attack links on enemy list
// @namespace    https://gitgud.com/stephenlynx
// @version      1.2.1
// @description  Adds attack links on enemy list
// @author       Stephen Lynx
// @license      MIT
// @match        https://www.torn.com/blacklist.php
// @match        https://www.torn.com/page.php?sid=UserList*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=torn.com
// @run-at       document-body
// @grant        none
// ==/UserScript==

(function() {
  'use strict';

  var toBlock = [ '72', '77', '71', '15', '16', '70', '82' ];

  function checkIcons(base) {

    var iconArray = Array.from(base.getElementsByClassName('iconShow'));

    for (var i = 0; i < iconArray.length; i++) {

      var icon = iconArray[i];

      if (toBlock.indexOf(icon.id.substr(4, 2)) > -1) {
        return false;
      }

    }

    return true;

  }

  var observer = new MutationObserver(
      function(mutationList, observer) {
        mutationList
            .forEach(function(event) {

              // user-info-list-wrap bottom-round cont-gray
              if (event.addedNodes.length
                  && ((event.target.className === 'blacklist' && event.target.tagName === 'DIV') || (event.target.classList && event.target.classList.contains('user-info-list-wrap') && event.target.tagName === 'UL'))) {

                event.addedNodes
                    .forEach(function(addedNode) {

                      if (addedNode.classList
                          && (addedNode.classList
                              .contains('user-info-blacklist-wrap') || addedNode.tagName === 'LI')) {

                        var links = addedNode
                            .getElementsByClassName('user name');

                        Array
                            .from(links)
                            .forEach(
                                function(link) {

                                  var cell = addedNode.tagName === 'LI' ? addedNode
                                      : link.parentNode.parentNode.parentNode;

                                  var okStatus = addedNode.tagName === 'LI' ? checkIcons(addedNode)
                                      : !!cell
                                          .getElementsByClassName('user-green-status ').length;

                                  if (!okStatus) {
                                    cell.style.display = 'none';
                                    return;
                                  }

                                  var destination = link.href;
                                  var id = destination
                                      .match(/\/profiles\.php\?XID=(\d*)/)[1];

                                  var attackLink = document.createElement('a');
                                  var oldOnClick = attackLink.onclick;
                                  attackLink.onclick = function(event) {
                                    event.stopPropagation();
                                    oldOnClick();
                                  }
                                  attackLink.innerHTML = 'Attack';
                                  attackLink.style['font-size'] = '12px';
                                  attackLink.target = '_blank';
                                  attackLink.href = '/loader.php?sid=attack&user2ID='
                                      + id;
                                  link.after(attackLink);

                                });
                      }

                    });

              }
            });

      });

  observer.observe(document.getElementsByTagName('body')[0], {
    childList : true,
    subtree : true
  });

})();