// ==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);
}
}
}