Replace Idle Heroes names with GirlsxBattle2 names

Add GxB2 names to IH pages

目前為 2020-12-21 提交的版本,檢視 最新版本

// ==UserScript==
// @name         Replace Idle Heroes names with GirlsxBattle2 names
// @namespace    https://gf.qytechs.cn/en/users/715572-patrick-law
// @version      1.5
// @description  Add GxB2 names to IH pages
// @author       Patrick Law
// @include      *finalhive.com/*
// @include      *idleheroes.fandom.com/*
// @include      *idleheroeslist.com/*
// @include      *idleheroes.pro/*
// @include      *reddit.com/r/IdleHeroes/*
// @require      http://code.jquery.com/jquery-3.5.1.js
// ==/UserScript==

var $ = window.jQuery;
$(document).ready(replaceNames);

function replaceNames() {

    if (window.location.href.indexOf("idle-heroes/leaderboards") > -1) {
        replaceInText(document.querySelector("#app > main > div > section.flex.justify-center.flex-wrap > h3"), /\Pick a Faction\b/, "Pick a House\n(N-Gen Iron Fist, Trinity are original to GxB2.)");

        replaceInText(document.querySelector("#app > main > div > section.flex.justify-center.flex-wrap > ul"), /\bShadow\b/, "Ghost (Shadow)");
        replaceInText(document.querySelector("#app > main > div > section.flex.justify-center.flex-wrap > ul"), /\bFortress\b/, "Human (Fortress)");
        replaceInText(document.querySelector("#app > main > div > section.flex.justify-center.flex-wrap > ul"), /\bAbyss\b/, "Monster (Abyss)");
        replaceInText(document.querySelector("#app > main > div > section.flex.justify-center.flex-wrap > ul"), /\bFairy\b/, "Monster (Fairy)");
        replaceInText(document.querySelector("#app > main > div > section.flex.justify-center.flex-wrap > ul"), /\bDark\b/, "Demon (Dark)");
        replaceInText(document.querySelector("#app > main > div > section.flex.justify-center.flex-wrap > ul"), /\bLight\b/, "Angel (Light)");

        var selects = document.getElementsByTagName("span");
        for (var i = 0, il = selects.length; i < il; i++) {
            if (selects[i].className.indexOf("overflow-hidden flex content-center items-center text-grey-darkest text-xl float-left h-16 p-2") > -1) {
                selects[i].className = "px-3 py-2 no-underline inline-block text-grey-darkest font-bold";
            }
        }
    }

    var textWalker = document.createTreeWalker(
        document.body,
        NodeFilter.SHOW_TEXT, {
            acceptNode: function(node) {
                // Skip whitespace-only nodes
                if (node.nodeValue.trim()) {
                    return NodeFilter.FILTER_ACCEPT;
                }

                return NodeFilter.FILTER_SKIP;
            }
        },
        false
    );

    while (textWalker.nextNode()) {
        var textNode = textWalker.currentNode;
        var oldText = textNode.nodeValue;
        var newText = oldText.replace(/\bDominator\b/, "Succuba (Dominator)");
        newText = newText.replace(/\bLutz\b/, "Dracula (Lutz)");
        newText = newText.replace(/\bKharma\b/, "Sapphire (Kharma)");
        newText = newText.replace(/\bField\b/, "Wu Kong (Field)");
        newText = newText.replace(/\bHonor Guard\b/, "Chevalir (Honor Guard)");
        newText = newText.replace(/\bIceblink\b/, "Javelin (Iceblink)");
        newText = newText.replace(/\bIceBlink\b/, "Javelin (IceBlink)");
        newText = newText.replace(/\bIce Blink\b/, "Javelin (Ice Blink)");
        newText = newText.replace(/\bMirage\b/, "Caitlyn (Mirage)");
        newText = newText.replace(/\bMiki\b/, "Guan Yin (Miki)");
        newText = newText.replace(/\bOD-01\b/, "Librarian (OD-01)");
        newText = newText.replace(/\bLord Balrog\b/, "Silvia (Lord Balrog)");
        newText = newText.replace(/\bFat Mu\b/, "Toyo (Fat Mu)");
        newText = newText.replace(/\bGusta\b/, "Masamune (Gusta)");
        newText = newText.replace(/\bDragon Slayer\b/, "Bud Elf (Dragon Slayer)");
        newText = newText.replace(/\bFaceless\b/, "Himoto (Faceless)");
        newText = newText.replace(/\bMalassa\b/, "Pandaria (Malassa)");
        newText = newText.replace(/\bEddga\b/, "Aquaris (Eddga)");
        newText = newText.replace(/\bSleepless\b/, "Scythe (Sleepless)");
        newText = newText.replace(/\bOrmus\b/, "Blowie (Ormus but much less healing/damage)");
        newText = newText.replace(/\bBleecker\b/, "Geisha (Bleecker)");
        newText = newText.replace(/\bEmily\b/, "Hottie (Emily)");
        newText = newText.replace(/\bKarim\b/, "Hexa (Karim)");
        newText = newText.replace(/\bDantalian\b/, "Alice (Dantalian)");
        newText = newText.replace(/\bMargaret\b/, "Nia (Margaret)");
        newText = newText.replace(/\bQueen\b/, "Nobunaga (Queen)");
        newText = newText.replace(/\bAidan\b/, "Giana (Aidan)");
        newText = newText.replace(/\bWalter\b/, "Ennmaya (Walter)");
        newText = newText.replace(/\bGroo\b/, "Susan (Groo)");
        newText = newText.replace(/\bDeathsworn\b/, "Cynthia (Deathsworn)");
        newText = newText.replace(/\bDemon Hunter\b/, "Amazon (Demon Hunter)");
        newText = newText.replace(/\bGerke\b/, "Angel (Gerke)");
        newText = newText.replace(/\bRosa\b/, "Nani (Rosa)");
        newText = newText.replace(/\bStarlight\b/, "Lavia (Starlight)");
        newText = newText.replace(/\bBlood Blade\b/, "Gambler (Blood Blade)");
        newText = newText.replace(/\bBaade\b/, "Wildtress (Baade)");
        newText = newText.replace(/\bDark Arthindol\b/, "Amelia (Dark Arthindol)");
        newText = newText.replace(/\bAsmodel\b/, "Gabriel (Asmodel)");
        newText = newText.replace(/\bFlame Strike\b/, "Saint (Flame Strike)");
        newText = newText.replace(/\bBarea\b/, "Muppet (Barea)");
        newText = newText.replace(/\bDas Moge\b/, "Lucifer (Das Moge)");
        newText = newText.replace(/\bMichelle\b/, "Michael (Michelle)");
        newText = newText.replace(/\bSigmund\b/, "Sonya (Sigmund)");
        newText = newText.replace(/\bSkerei\b/, "Priestess (Skerei)");
        newText = newText.replace(/\bVesa\b/, "Kong Ming (Vesa)");
        newText = newText.replace(/\bCorpsedemon\b/, "Fencer (Corpsedemon)");
        newText = newText.replace(/\bKamath\b/, "Sakura (Kamath)");
        newText = newText.replace(/\bFaith Blade\b/, "Phoenix (Faith Blade)");
        newText = newText.replace(/\bAmuvor\b/, "Wraith (Amuvor)");
        newText = newText.replace(/\bKroos\b/, "Psychic (Kroos)");
        newText = newText.replace(/\bHeart Watcher\b/, "Linky (Heart Watcher)");
        newText = newText.replace(/\bValentino\b/, "CapsuGirl (Valentino)");
        newText = newText.replace(/\bJahra\b/, "Valeera (Jahra)");
        newText = newText.replace(/\bKing Barton\b/, "Turin (King Barton)");
        newText = newText.replace(/\bBelrain\b/, "Raphael (Belrain)");
        newText = newText.replace(/\bMihm\b/, "Esau & Jacob (Mihm)");
        newText = newText.replace(/\bValkyrie\b/, "Mio (Valkyrie)");
        newText = newText.replace(/\bXia\b/, "Ithil (Xia)");
        newText = newText.replace(/\bCthugha\b/, "Empress Saint (Cthugha without heal nor bleed)");
        newText = newText.replace(/\bCthuga\b/, "Empress Saint (Cthugha without heal nor bleed)");
        newText = newText.replace(/\bHorus\b/, "Fenrir (Horus)");
        newText = newText.replace(/\bAspen\b/, "Kratos (Aspen)");
        newText = newText.replace(/\bAida\b/, "Nephilim (Aida)");
        newText = newText.replace(/\bOberon\b/, "Kyrstal (Oberon)");
        newText = newText.replace(/\bPenny\b/, "Rogue (Penny)");
        newText = newText.replace(/\bAmen-Ra\b/, "Izanami (Amen-Ra)");
        newText = newText.replace(/\bAmen-Raa\b/, "Izanami (Amen-Ra)");
        newText = newText.replace(/\bNakia\b/, "[-1]Nakia"); // Not Trinity at all
        newText = newText.replace(/\bGustin\b/, "Vivian (Gustin)"); // 9 2019
        newText = newText.replace(/\bGaruda\b/, "Joan (Garuda but can be blocked and gives opponent energy)"); // 10 2019
        newText = newText.replace(/\bUniMax 3000\b/, "[1]UniMax 3000"); // 11 2019
        newText = newText.replace(/\bUnimax-3000\b/, "[1]UniMax 3000"); // 11 2019
        newText = newText.replace(/\bTara\b/, "Uriel (Tara)"); // 12 2019
        newText = newText.replace(/\bCarrie\b/, "[2]Carrie"); // 1 2020
        newText = newText.replace(/\bElyvia\b/, "[3]Elyvia"); // 2 2020
        newText = newText.replace(/\bDelacium\b/, "[4]Delacium"); // 3 2020
        newText = newText.replace(/\bIthaqua\b/, "[5]Ithaqua"); // 4 2020
        newText = newText.replace(/\bSherlock\b/, "[6]Sherlock"); // 5 2020
        newText = newText.replace(/\bDrake\b/, "[7]Drake"); // 6 2020
        newText = newText.replace(/\bRussell\b/, "[8]Russel"); // 6 2020
        newText = newText.replace(/\bRogan\b/, "[9]Rogan"); // 7 2020
        newText = newText.replace(/\bIgnis\b/, "[10]Ignis"); // 8 2020
        newText = newText.replace(/\bTix\b/, "[11]Tix"); // 9 2020
        newText = newText.replace("Sword Flash - Ithil (Xia)", "Sword Flash - Xia"); // 9 2020
        newText = newText.replace("Sword Flash", "[12]Sword Flash"); // 9 2020
        newText = newText.replace(/\bFlora\b/, "[13]Flora"); // 10 20202
        newText = newText.replace(/\bInosuke\b/, "[14]Inosuke"); // 10 2020
        newText = newText.replace(/\bMorax\b/, "[15]Morax"); // 11 2020
        newText = newText.replace("Scarlet Nobunaga (Queen) - Halora", "[16]Scarlet Queen - Halora"); // 12 2020
        newText = newText.replace("Scarlet Nobunaga (Queen)", "[16]Scarlet Queen"); // 12 2020
        textNode.nodeValue = newText;
    }
}

function replaceInText(element, pattern, replacement) {
    for (let node of element.childNodes) {
        switch (node.nodeType) {
            case Node.DOCUMENT_NODE:
                replaceInText(node, pattern, replacement);
                break;
            case Node.ELEMENT_NODE:
                replaceInText(node, pattern, replacement);
                break;
            case Node.TEXT_NODE:
                node.textContent = node.textContent.replace(pattern, replacement);
        }
    }
}

QingJ © 2025

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