Torn Dump Instant Search

Quickly spam searching the dump

이 스크립트를 설치하려면 Tampermonkey, Greasemonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

You will need to install an extension such as Tampermonkey to install this script.

이 스크립트를 설치하려면 Tampermonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Userscripts와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 유저 스크립트 관리자 확장 프로그램이 필요합니다.

(이미 유저 스크립트 관리자가 설치되어 있습니다. 설치를 진행합니다!)

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

(이미 유저 스타일 관리자가 설치되어 있습니다. 설치를 진행합니다!)

// ==UserScript==
// @name         Torn Dump Instant Search
// @match        https://www.torn.com/dump.php*
// @grant        none
// @description  Quickly spam searching the dump
// @author       Manuel [3747263]
// @license      MIT
// @version 0.0.1.20251214114927
// @namespace https://greasyfork.org/users/1480021
// ==/UserScript==

(function () {
    'use strict';

    const RFCV = window.rfcv;

    function instantSearch() {
        fetch(`/dump.php?step=search&rfcv=${RFCV}`, {
            method: "POST",
            credentials: "include",
            headers: {
                "X-Requested-With": "XMLHttpRequest"
            }
        }).then(r => r.json()).then(() => {
            // instantly restore UI so you can click again
            unlockSearchUI();
        });
    }

    function unlockSearchUI() {
        // remove animation / glow
        document.querySelectorAll(
            '.timeout_glow, .search-progress-wrap, .searcher'
        ).forEach(e => {
            e.classList.remove('in-progress', 'item-found', 'glow');
            e.style.display = 'none';
        });

        // re-enable SEARCH button
        const searchWrap = document.querySelector('.btn-wrap.search');
        if (searchWrap) {
            searchWrap.style.display = 'block';
            searchWrap.classList.remove('disabled');
        }
    }

    document.addEventListener('click', e => {
        const btn = e.target.closest('a[href*="step=search"]');
        if (!btn) return;

        e.preventDefault();
        e.stopImmediatePropagation();

        instantSearch();
    }, true);
})();