Torn War Auto-Win Timer (Pure Hour Final Version)

Fully accurate Torn ranked war end time estimation using exact hourly drops (with flooring and pre-24h display)

// ==UserScript==
// @name         Torn War Auto-Win Timer (Pure Hour Final Version)
// @namespace    KillerCleat[2842410]
// @version      5.3
// @description  Fully accurate Torn ranked war end time estimation using exact hourly drops (with flooring and pre-24h display)
// @author       KillerCleat [2842410]
// @match        https://www.torn.com/factions.php*
// @grant        none
// ==/UserScript==

(function () {
    'use strict';

    const WIKI_URL = 'https://wiki.torn.com/wiki/Ranked_War';

    const checkInterval = setInterval(() => {
        const warBox = document.querySelector('.rankBox___OzP3D');
        const timerSpans = document.querySelectorAll('.timer___fSGg8 span');
        const targetBox = document.querySelector('.target___NBVXq');
        const timerBox = document.querySelector('.timer___fSGg8');

        if (warBox && timerSpans.length >= 8 && targetBox && timerBox) {
            clearInterval(checkInterval);

            const timeParts = Array.from(timerSpans).map(span => span.textContent).join('').split(':');
            const days = parseInt(timeParts[0]);
            const hours = parseInt(timeParts[1]);
            const minutes = parseInt(timeParts[2]);
            const totalElapsedHours = (days * 24) + hours + (minutes / 60);

            const display = document.createElement('div');
            display.style.marginTop = '5px';
            display.style.fontWeight = 'bold';
            display.style.color = 'black';
            display.style.cursor = 'pointer';
            display.title = 'Click to view Torn Ranked War Wiki';
            display.onclick = () => window.open(WIKI_URL, '_blank');
            timerBox.parentElement.appendChild(display);

            if (totalElapsedHours <= 24) {
                display.textContent = `🕓 Waiting for 24h mark to begin calculations...`;
                return;
            }

            const dropHours = Math.floor(totalElapsedHours - 24);
            const [leadStr, targetStr] = targetBox.innerText.match(/(\d[\d,]*)\s*\/\s*(\d[\d,]*)/).slice(1, 3);
            const lead = parseInt(leadStr.replace(/,/g, ''));
            const currentTarget = parseInt(targetStr.replace(/,/g, ''));

            const originalTarget = currentTarget / (1 - (dropHours * 0.01));
            const DROP_PER_HOUR = originalTarget * 0.01;
            const gap = currentTarget - lead;

            const hoursRemaining = Math.floor(gap / DROP_PER_HOUR);
            display.textContent = `🕓 Current State Remaining: ${hoursRemaining}H`;
        }
    }, 1000);
})();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址