kindasignum / Fight Mode

// ==UserScript==
// @name         Fight Mode
// @namespace    http://tampermonkey.net/
// @version      v0.1[alpha]
// @description  Изменение Игровой под активный бой
// @updateURL https://openuserjs.org/meta/kindasignum/Fight_Mode.meta.js
// @downloadURL https://openuserjs.org/install/kindasignum/Fight_Mode.user.js
// @author       You
// @copyright   2024, kindasignum (https://openuserjs.org/users/kindasignum)
// @match        https://catwar.su/cw3/
// @icon         https://www.google.com/s2/favicons?sz=64&domain=catwar.su
// @grant       none
// @license     MIT
// ==/UserScript==

(function () {
  'use strict';

  var exit = document.createElement('input');
  exit.type = 'button';
  exit.id = 'fm_off';
  exit.value = 'Выйти';
  exit.classList.add('exit');

  var window = document.getElementById('app');
  window.appendChild(exit);

  // СКРЫТИЕ ЛИШНИХ ЭЛЕМЕНТОВ -------
  var elementsToRemove = document.querySelectorAll('.other_cats_list, .small, #tr_chat, #tr_tos, #tr_mouth, #family, #history, br, #parameter h2');

  elementsToRemove.forEach(function (element) {
    element.remove();
  });

  var blackElement = document.querySelector('#black');
  var parentP = blackElement.parentNode;
  if (parentP) {
    parentP.remove();
  }

  var mainTable = document.getElementById('main_table');

  mainTable.style.borderSpacing = '0';

  // --------- ВЫДЕЛЕНИЕ КРИТ УДАРОВ --------
  function setCritClass() {
    var spanElements = document.querySelectorAll('#fightLog span.log_paws');

    spanElements.forEach(function (element) {
      if ((element.textContent.includes('(шея)') && element.textContent.includes('Я => ')) || (element.textContent.includes('горло') && element.textContent.includes('Я => '))) {
        element.classList.add('my_crit');
      }
      else if ((element.textContent.includes('(шея)') && element.textContent.includes(' => я')) || (element.textContent.includes('горло') && element.textContent.includes(' => я'))) {
        element.classList.add('enemy_crit');
      }
      else {
        element.classList.remove('my_crit');
        element.classList.remove('enemy_crit');
      }
    });
  }

  function checkAndSetCritClass() {
    var fightLogDiv = document.getElementById('fightLog');

    var observer = new MutationObserver(function (mutationsList) {
      mutationsList.forEach(function (mutation) {
        if (mutation.target === fightLogDiv) {
          setCritClass();
        }
      });
    });

    var config = {
      childList: true,
      subtree: true
    };

    observer.observe(fightLogDiv, config);
  }

  checkAndSetCritClass();

  // Стили
  var customStyles = document.createElement('style');
  customStyles.textContent = `
    #main_table /* границы поля */ {
        margin-top: 0;
        border-left: 2px solid black;
        border-right: 2px solid black;
        border-bottom: 2px solid black;
    }

    #cages_div /* всегда день */ {
        opacity: 1 !important;
    }

    .cage /* границы клеток */ {
        box-shadow: inset 0px 0.1px 0px 0.1px #ffffff;
    }

    .cat_tooltip /* скрыть меню */ {
        display: none !important;
    }

    #sky /* скрыть небо */ {
        display: none;
    }

    #tr_actions /* скрыть действия */ {
        position: absolute;
        top: -1000%;
    }

    #hunger_table, #thirst_table, #need_table, #clean_table, #smell_table, #dig_table, #swim_table, #might_table, #tree_table, #observ_table, #parameters_block hr /* параметры и навыки */ {
        display: none;
    }

    #health_table, #dream_table /* сон и здоровье */ {
        position: fixed;
        right: 170px;
        top: 0;
    }

    #dream_table /* положение сна */ {
        margin-top: 14px;
    }

    #health_table /* положение здоровья */ {
        margin-top: 34px;
    }

    #fightPanel /* положение панели бр */ {
        margin-top: 50px;
    }

    /* ПОДСВЕТКА КРИТОВ */

    .my_crit /* нанесен крит врагу */ {
        background-color: #08c3d4e8;
    }

    .enemy_crit /* получен крит от врага */ {
        background-color: #ff1616d4;
    }

    a[data-id="27"], a[data-id="28"] {
        position: fixed;
        right: 40px;
        top: 5px;
    }

    img[src="actions/28.png"], img[src="actions/27.png"] {
        width: 60px;
        height: 60px;
    }

    img[src="symbole/unlock.png"], img[src="symbole/lock.png"] {
        width: 20px;
        height: 20px;
    }

    span.log_paws {
        font-size: 15px;
    }
  `;

  document.head.appendChild(customStyles);

})();