execute

execute highlight

// ==UserScript==
// @name         execute
// @namespace    execute.zero.nao
// @version      0.3
// @description  execute highlight
// @author       nao [2669774]
// @match        https://www.torn.com/loader.php?sid=attack*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=torn.com
// @grant        none
// @run-at       document-start
// ==/UserScript==

const { fetch: origFetch } = window;
let percentage = 0;

window.fetch = async (...args) => {
  const response = await origFetch(...args);

  // Check if the response URL matches the desired endpoint
  if (response.url.includes("loader.php?sid=attackData")) {
    try {
      // Clone the response and parse it as JSON
      //
      console.log("Intercepted fetch response:", response);
      const body = await response.clone().json();

      const bonuses =
        body?.DB?.attackerItems?.[2]?.item?.[0]?.currentBonuses || {};
      console.log(bonuses);
      for (const bonus in bonuses) {
        const bonusData = bonuses[bonus];
        if (bonusData.title === "Execute") {
          const executePercent = bonusData.value;
          const defenderLife = body?.DB?.defenderUser?.life || 0;
          const maxLife = body?.DB?.defenderUser?.maxlife - 0 || 0;
          const executeThreshold = (maxLife * executePercent) / 100;
          percentage = executePercent;
          insert();

          console.log(executePercent, defenderLife, maxLife);

          if (defenderLife < executeThreshold) {
            const weaponElement = document.querySelector("#weapon_second");
            if (weaponElement) {
              weaponElement.style.backgroundColor = "red";
            } else {
              console.warn("#weapon_second element not found");
            }
          }
        }
      }
    } catch (err) {
      console.error("Error processing response:", err);
    }
  }

  // Return the original response
  return response;
};

function insert() {
  if ($(".pbWrap___K0uUO ").length > 0) {
    const rect = `<div class="percentzero" style="width: ${percentage}%;height: 10px;position: absolute;z-index: 5;border-right: 2px solid black;"></div>`;
    $(".pbWrap___K0uUO ").prepend(rect);
  } else {
    setTimeout(insert, 300);
  }
}