Professional Documents
Culture Documents
Script Hentai Heroes Test Server 0.36
Script Hentai Heroes Test Server 0.36
// @namespace https://sleazyfork.org/fr/scripts/429375-hentai-heroes-ocd-
season-version-test-server
// @description Adding things here and there in the test server Hentai Heroes
game.
// @version 0.36
// @match https://test.hentaiheroes.com/*
// @run-at document-end
// @grant none
// ==/UserScript==
/* ===========
CHANGELOG
=========== */
// 0.36: Added some improvements in BDSM simulation. Fixed a bug with average score in
league on mobile.
// 0.33: Changed the position of Pantheon's Stairway timer to the top of the screen. Fixed
minor bug.
// 0.32: Added Pantheon's Stairway shortcut and timer on 'Home' page. Added searched
elements in teams filter and market filter.
// 0.31: Removed girl stats sum on tooltip window on change team page. Removed old PoA
window which no longer exists. Fixed a bug with villains' tiers.
// 0.30: Added new girls on Sake's tier 1. Changed code for trolls' tiers.
// 0.26: Fixed a bug for timer with mythic booster. Fixed a bug in league sim display due to
server-side code change.
// 0.23: Fixed a bug in girls stats sum in English. Removed load/save teams features in teams
filters. Added support for russian and japanese languages.
// 0.14: Added girl stats sum on tooltip window on change team page.
// 0.12: Refactored code of options menu (thanks to BenBrazke). Fixed minor bugs.
// 0.11: Fixed issues following server-side code change. Fixed a bug on villain feature with
mythic event.
// 0.10: Fixed minor bug. Added an option in the script menu to enable/disable old PoA event
window.
// 0.6: Fixed an issue with load and save buttons in the fight team filter. Added affection filter
to the fight team filter.
// 0.2: Fixed calculated points in league. Added critical hits in battle simulation.
// 0.1: Dedicated script for test server with new combat system.
/* =========
GENERAL
========= */
localStorage.removeItem('HHS.oldPoAWindow');
// Define jQuery
var $ = window.jQuery;
// Define CSS
document.head.appendChild(style);
return style.sheet;
})();
var power = [
];
var i;
break;
if (updown == 1) {
else if (updown == 0) {
// Thousand spacing
function nThousand(x) {
if(typeof x != 'number')
return 0;
switch(pageLang){ //atm this shows the numbers equal to the game
case 'ja':
function localeStringToNumber(s){
let e = s.replace(/[^0-9]/gi,'x').split('x')
switch(e.length){
case 0: return 0
default: break
let f =e.pop()
e = e.toString().replace(/[^0-9]/gi,'')
switch(f.length){
const HC = 1;
const CH = 2;
const KH = 3;
const DST = true;
/* ==============
TRANSLATIONS
============== */
texts.en = {
optionsLinks: 'Shortcuts/Timers',
and: 'and',
or: 'or',
affection: 'affection',
haremettes: 'haremettes',
hardcore: 'Hardcore',
charm: 'Charm',
know_how: 'Know-how',
shagger: 'Shagger',
lover: 'Lover',
expert: 'Expert',
equipments: 'equipments',
boosters: 'boosters',
books: 'books',
gifts: 'gifts',
restock: 'Restock',
Xp: 'XP',
starting: 'Starting',
common: 'Common',
rare: 'Rare',
epic: 'Epic',
legendary: 'Legendary',
mythic: 'Mythic',
day: 'd',
hour: 'h',
minute: 'm',
second: 's',
demote_down: 'To <u>demote</u> you must be passed by players with as few as ',
stagnate_down: 'To <u>not promote</u> you must be passed by players with as few as ',
top4_up: 'To <u>be in the top 4</u> you must have a minimum of ',
top4_hold: 'To <u>stay in the top 4</u> you must have a minimum of ',
top15_up: 'To <u>be in the top 15</u> you must have a minimum of ',
top15_hold: 'To <u>stay in the top 15</u> you must have a minimum of ',
top30_up: 'To <u>be in the top 30</u> you must have a minimum of ',
top30_hold: 'To <u>stay in the top 30</u> you must have a minimum of ',
points: 'points',
in: 'in',
pop: 'Places',
season: 'Season',
full: 'Full',
league: 'League',
victories: 'Victories',
defeats: 'Defeats',
unknown: 'Unknown',
opponents: 'Opponents',
leaguePoints: 'Points',
avg: 'Average',
fights: 'Fights',
filter: 'Filter',
all: 'All',
team: 'Team',
combativity: 'Combativity',
energy: 'Energy',
sort: 'Sort',
hide: 'Hide',
display: 'Display',
submissive: 'Submissive',
voyeur: 'Voyeur',
eccentric: 'Eccentric',
exhibitionist: 'Exhibitionist',
physical: 'Physical',
playful: 'Playful',
sensual: 'Sensual'
};
texts.fr = {
optionsLinks: 'Raccourcis/Timers',
optionsSeasonStats: 'Stats de la saison',
and: 'et',
or: 'ou',
affection: 'affection',
haremettes: 'haremettes',
hardcore: 'Hardcore',
charm: 'Charme',
know_how: 'Savoir-faire',
shagger: 'Niqueur',
lover: 'Romantique',
expert: 'Expert',
to_go: 'restant',
money_income: 'Revenus',
equipments: 'équipements',
boosters: 'boosters',
books: 'livres',
gifts: 'cadeaux',
restock: 'Restock',
Xp: 'XP',
common: 'Commun',
rare: 'Rare',
epic: 'Épique',
legendary: 'Légendaire',
mythic: 'Mythique',
day: 'j',
hour: 'h',
minute: 'm',
second: 's',
demote_down: 'Pour <u>être rétrogradé</u> vous devez être dépassé par les joueurs qui
ont ',
stagnate_up: 'Pour <u>ne pas être promu</u> vous pouvez avoir un maximum de ',
stagnate_down: 'Pour <u>ne pas être promu</u> vous devez être dépassé par les joueurs
qui ont ',
stagnate_holdzero: 'Pour <u>ne pas être promu</u> vous devez rester avec ',
top4_up: 'Pour <u>être dans le top 4</u> vous devez avoir un minimum de ',
top4_hold: 'Pour <u>rester dans le top 4</u> vous devez avoir un minimum de ',
top15_up: 'Pour <u>être dans le top 15</u> vous devez avoir un minimum de ',
top15_hold: 'Pour <u>rester dans le top 15</u> vous devez avoir un minimum de ',
top30_up: 'Pour <u>être dans le top 30</u> vous devez avoir un minimum de ',
top30_hold: 'Pour <u>rester dans le top 30</u> vous devez avoir un minimum de ',
points: 'points',
in: 'dans',
pop: 'Lieux',
season: 'Saison',
full: 'Remplie',
league: 'Ligue',
victories: 'Victoires',
defeats: 'Defaites',
unknown: 'Inconnus',
opponents: 'Adversaires',
leaguePoints: 'Points',
avg: 'Moyenne',
fights: 'Combats',
filter: 'Filtre',
all: 'Toutes',
team: 'Équipe',
load_from: 'Charger',
combativity: 'Combativité',
energy: 'Énergie',
sort: 'Trier',
hide: 'Masquer',
display: 'Afficher',
dominatrix: 'Dominatrice',
submissive: 'Soumise',
voyeur: 'Voyeuse',
eccentric: 'Excentrique',
exhibitionist: 'Exhibitioniste',
physical: 'Physique',
playful: 'Joueuse',
sensual: 'Sensuelle'
};
texts.es = {
optionsLinks: 'Atajos/Temporizadores',
and: 'y',
or: 'o',
in: 'en',
affection: 'afecto',
haremettes: 'haremettes',
hardcore: 'Folladas',
charm: 'Encanto',
know_how: 'Saber-hacer',
shagger: 'Follador',
lover: 'Amante',
expert: 'Experto',
to_go: 'restante',
equipments: 'equipamiento',
boosters: 'potenciadores',
books: 'libros',
gifts: 'regalos',
restock: 'Restock',
you_own: 'Tienes',
starting: 'Principiante',
common: 'Común',
rare: 'Raro',
epic: 'Épico',
legendary: 'Legendario',
mythic: 'Mítica',
day: 'd',
hour: 'h',
minute: 'm',
second: 's',
demote_down: 'Para <u>degradar</u> debes ser superado por jugadores con tan solo ',
stagnate_down: 'Para <u>no promocionar</u> debes ser superado por jugadores con tan
solo ',
top4_up: 'Para <u>estar entre los 4 primeros</u> debes tener un mínimo de ',
top4_hold: 'Para <u>quedar entre los 4 primeros</u> debes tener un mínimo de ',
top15_up: 'Para <u>estar entre los 15 primeros</u> debes tener un mínimo de ',
top15_hold: 'Para <u>quedar entre los 15 primeros</u> debes tener un mínimo de ',
top30_up: 'Para <u>estar entre los 30 primeros</u> debes tener un mínimo de ',
top30_hold: 'Para <u>quedar entre los 30 primeros</u> debes tener un mínimo de ',
points: 'puntos',
pop: 'Lugares',
season: 'Temporada',
full_in: 'Completa',
full: 'Completa',
league: 'Liga',
victories: 'Victorias',
defeats: 'Derrota',
unknown: 'Desconocido',
opponents: 'Opositores',
leaguePoints: 'Puntos',
avg: 'Media',
fights: 'Fights',
filter: 'Filtro',
all: 'Todo',
team: 'Equipo',
load_from: 'Carga',
combativity: 'Combatividad',
energy: 'Energía',
sort: 'Ordenar',
hide: 'Ocultar',
display: 'Mostrar',
dominatrix: 'Dominatrix',
submissive: 'Sumisa',
voyeur: 'Voyeur',
eccentric: 'Excéntrica',
exhibitionist: 'Exhibicionista',
physical: 'Física',
playful: 'Juguetona',
sensual: 'Sensual'
};
texts.it = {
optionsLinks: 'Scorciatoie/Timer',
and: 'e',
or: 'o',
in: 'in',
affection: 'affetto',
hardcore: 'Prono',
charm: 'Fascino',
know_how: 'Competenza',
shagger: 'Scopata',
lover: 'Amante',
expert: 'Esperto',
to_go: 'mancanti',
money_income: 'Guadagni',
per_hour: 'orario',
equipments: 'equipaggiamento',
boosters: 'potenziamenti',
books: 'libri',
gifts: 'regali',
restock: 'Rifornimento',
fight_villain: 'Combattimenti',
you_own: 'Possiedi',
starting: 'Starter',
common: 'Comuni',
rare: 'Rare',
epic: 'Epiche',
legendary: 'Leggendarie',
mythic: 'Mitica',
day: 'g',
hour: 'h',
minute: 'm',
second: 's',
demote_down: 'Per <u>il degrado</u> devi essere sorpassato da giocatori con ',
top4_up: 'Per <u>essere tra i primi 4</u> devi avere un minimo di ',
top4_hold: 'Per <u>rimanere tra i primi 4</u> devi avere un minimo di ',
top15_up: 'Per <u>essere tra i primi 15</u> devi avere un minimo di ',
top15_hold: 'Per <u>rimanere tra i primi 15</u> devi avere un minimo di ',
top30_up: 'Per <u>essere tra i primi 30</u> devi avere un minimo di ',
top30_hold: 'Per <u>rimanere tra i primi 30</u> devi avere un minimo di ',
points: 'punti',
pop: 'Luoghi',
season: 'Stagione',
full: 'Piena',
league: 'Leghe',
victories: 'Vittorie',
defeats: 'Sconfitte',
unknown: 'Sconosciuto',
opponents: 'Avversari',
leaguePoints: 'Punti',
avg: 'Medio',
fights: 'Fights',
filter: 'Filtro',
all: 'Tutti',
team: 'Squadra',
load_from: 'Caricare',
combativity: 'Combattività',
energy: 'Energia',
sort: 'Ordinare',
hide: 'Nascondere',
display: 'Visualizzare',
dominatrix: 'Dominatrice',
submissive: 'Sottomessa',
voyeur: 'Guardona',
eccentric: 'Eccentrica',
exhibitionist: 'Esibizionista',
physical: 'Fisica',
playful: 'Giocosa',
sensual: 'Sensuale'
};
texts.de = {
optionsVillain: 'Widersacher-Menü',
optionsMarket: 'Marktplatz-Informationen',
optionsHarem: 'Harem-Informationen',
optionsLeague: 'Liga-Informationen',
optionsSimFight: 'Liga/Saison/Widersacher-Simulation',
optionsLinks: 'Abkürzungen/Zeitgeber',
and: 'und',
or: 'oder',
in: 'in',
affection: 'Zuneigung',
harem_stats: 'Harem-Statistiken',
haremettes: 'Harem-Mädchen',
hardcore: 'Hardcore',
charm: 'Charme',
know_how: 'Wissen',
shagger: 'Stecher',
lover: 'Liebhaber',
expert: 'Experte',
harem_level: 'Harem-Level',
to_go: 'übrig',
money_income: 'Einkommen',
equipments: 'Ausrüstungen',
boosters: 'Booster',
books: 'Bücher',
gifts: 'Geschenke',
wiki: '-Wikiseite',
fight_villain: 'Widersacher',
starting: 'Starter',
common: 'Gewöhnliche',
rare: 'Seltene',
epic: 'Epische',
legendary: 'Legendäre',
mythic: 'Mythische',
day: 'd',
hour: 'h',
minute: 'm',
second: 's',
demote_down: 'Für den <u>Abstieg</u> musst du überholt werden von Spielern mit
höchstens ',
stagnate_down: 'Für den <u>Nichtaufstieg</u> musst du überholt werden von Spielern mit
höchstens ',
pop: 'Orte',
season: 'Saison',
full: 'Voll',
league: 'Liga',
victories: 'Siege',
defeats: 'Niederlagen',
unknown: 'Unbekannt',
opponents: 'Gegner',
leaguePoints: 'Punkte',
avg: 'Mittelwert',
fights: 'Kämpfe',
filter: 'Filter',
searched_name : 'Name',
searched_class: 'Klasse',
searched_rarity: 'Seltenheit',
all: 'Alle',
team: 'Team',
save_as: 'Speichern',
load_from: 'Laden',
level_range: 'Level',
combativity: 'Kampflust',
energy: 'Energie',
sort: 'Sortieren',
hide: 'Ausblenden',
display: 'Anzeigen',
searched_blessed_attributes: 'Segnungen',
blessed_attributes: 'gesegnet',
searched_element : 'Element',
dominatrix: 'Domina',
submissive: 'Unterwürfig',
voyeur: 'Voyeur',
eccentric: 'Exzentrisch',
exhibitionist: 'Exhibitionist',
physical: 'Körperlich',
playful: 'Verspielt',
sensual: 'Sinnlich'
};
if(texts[pageLang])
lang=pageLang;
var tierGirlsID;
if ($('#hh_comix').length == 0) {
tierGirlsID = [
];
else {
tierGirlsID = [
];
GIRLS_EXP_LEVELS.starting = [10, 21, 32, 43, 54, 65, 76, 87, 98, 109, 120, 131, 142, 154, 166,
178, 190, 202, 214, 226, 238, 250, 262, 274, 286, 299, 312, 325, 338, 351, 364, 377, 390, 403,
416, 429, 443, 457, 471, 485, 499, 513, 527, 541, 555, 569, 584, 599, 614, 629, 644, 659, 674,
689, 704, 720, 736, 752, 768, 784, 800, 816, 832, 849, 866, 883, 900, 917, 934, 951, 968, 985,
1003, 1021, 1039, 1057, 1075, 1093, 1111, 1130, 1149, 1168, 1187, 1206, 1225, 1244, 1264,
1284, 1304, 1324, 1344, 1364, 1384, 1405, 1426, 1447, 1468, 1489, 1510, 1531, 1553, 1575,
1597, 1619, 1641, 1663, 1686, 1709, 1732, 1755, 1778, 1801, 1825, 1849, 1873, 1897, 1921,
1945, 1970, 1995, 2020, 2045, 2070, 2096, 2122, 2148, 2174, 2200, 2227, 2254, 2281, 2308,
2335, 2363, 2391, 2419, 2447, 2475, 2504, 2533, 2562, 2591, 2620, 2650, 2680, 2710, 2740,
2770, 2801, 2832, 2863, 2894, 2926, 2958, 2990, 3022, 3055, 3088, 3121, 3154, 3188, 3222,
3256, 3290, 3325, 3360, 3395, 3430, 3466, 3502, 3538, 3574, 3611, 3648, 3685, 3722, 3760,
3798, 3836, 3875, 3914, 3953, 3992, 4032, 4072, 4112, 4153, 4194, 4235, 4277, 4319, 4361,
4403, 4446, 4489, 4532, 4576, 4620, 4664, 4709, 4754, 4799, 4845, 4891, 4937, 4984, 5031,
5078, 5126, 5174, 5223, 5272, 5321, 5371, 5421, 5471, 5522, 5573, 5624, 5676, 5728, 5781,
5834, 5887, 5941, 5995, 6050, 6105, 6160, 6216, 6272, 6329, 6386, 6444, 6502, 6560, 6619,
6678, 6738, 6798, 6859, 6920, 6981, 7043, 7105, 7168, 7231, 7295, 7359, 7424, 7489, 7555,
7621, 7688, 7755, 7823, 7891, 7960, 8029, 8099, 8169, 8240, 8311, 8383, 8455, 8528, 8601,
8675, 8750, 8825, 8901, 8977, 9054, 9131, 9209, 9288, 9367, 9447, 9527, 9608, 9690, 9772,
9855, 9938, 10022, 10107, 10192, 10278, 10365, 10452, 10540, 10628, 10717, 10807, 10897,
10988, 11080, 11172, 11265, 11359, 11454, 11549, 11645, 11742, 11839, 11937, 12036,
12136, 12236, 12337, 12439, 12542, 12645, 12749, 12854, 12960, 13067, 13174, 13282,
13391, 13501, 13612, 13723, 13835, 13948, 14062, 14177, 14293, 14409, 14526, 14644,
14763, 14883, 15004, 15126, 15249, 15373, 15498, 15623, 15749, 15876, 16004, 16133,
16263, 16394, 16526, 16659, 16793, 16928, 17064, 17201, 17339, 17478, 17618, 17759,
17901, 18044, 18189, 18335, 18482, 18630, 18779, 18929, 19080, 19232, 19385, 19540,
19696, 19853, 20011, 20170, 20330, 20492, 20655, 20819, 20984, 21151, 21319, 21488,
21658, 21830, 22003, 22177, 22352, 22529, 22707, 22886, 23067, 23249, 23432, 23617,
23803, 23991, 24180, 24370, 24562, 24755, 24950, 25146, 25344, 25543, 25744, 25946,
26150, 26355, 26562, 26770, 26980, 27191, 27404, 27619, 27835, 28053, 28272, 28493,
28716, 28940, 29166, 29394, 29623, 29854, 30087, 30322, 30558, 30796, 31036, 31278,
31522, 31767, 32014, 32263, 32514, 32767, 33022, 33279, 33537, 33797, 34059, 34323,
34589, 34857, 35127, 35399, 35673, 35949, 36228, 36509, 36792, 37077, 37364, 37653,
37944, 38237, 38533, 38831, 39131, 39433, 39738, 40045, 40354, 40665, 40979, 41295,
41614, 41935, 42258, 42584, 42912, 43243, 43576, 43912, 44250, 44591, 44934, 45280,
45628, 45979, 46333, 46689, 47048, 47410, 47774, 48141, 48511, 48884, 49259, 49637,
50018, 50402, 50789, 51179, 51572, 51967, 52365, 52766, 53170, 53577, 53988, 54402,
54819];
GIRLS_EXP_LEVELS.common = [10, 21, 32, 43, 54, 65, 76, 87, 98, 109, 120, 131, 142, 154, 166,
178, 190, 202, 214, 226, 238, 250, 262, 274, 286, 299, 312, 325, 338, 351, 364, 377, 390, 403,
416, 429, 443, 457, 471, 485, 499, 513, 527, 541, 555, 569, 584, 599, 614, 629, 644, 659, 674,
689, 704, 720, 736, 752, 768, 784, 800, 816, 832, 849, 866, 883, 900, 917, 934, 951, 968, 985,
1003, 1021, 1039, 1057, 1075, 1093, 1111, 1130, 1149, 1168, 1187, 1206, 1225, 1244, 1264,
1284, 1304, 1324, 1344, 1364, 1384, 1405, 1426, 1447, 1468, 1489, 1510, 1531, 1553, 1575,
1597, 1619, 1641, 1663, 1686, 1709, 1732, 1755, 1778, 1801, 1825, 1849, 1873, 1897, 1921,
1945, 1970, 1995, 2020, 2045, 2070, 2096, 2122, 2148, 2174, 2200, 2227, 2254, 2281, 2308,
2335, 2363, 2391, 2419, 2447, 2475, 2504, 2533, 2562, 2591, 2620, 2650, 2680, 2710, 2740,
2770, 2801, 2832, 2863, 2894, 2926, 2958, 2990, 3022, 3055, 3088, 3121, 3154, 3188, 3222,
3256, 3290, 3325, 3360, 3395, 3430, 3466, 3502, 3538, 3574, 3611, 3648, 3685, 3722, 3760,
3798, 3836, 3875, 3914, 3953, 3992, 4032, 4072, 4112, 4153, 4194, 4235, 4277, 4319, 4361,
4403, 4446, 4489, 4532, 4576, 4620, 4664, 4709, 4754, 4799, 4845, 4891, 4937, 4984, 5031,
5078, 5126, 5174, 5223, 5272, 5321, 5371, 5421, 5471, 5522, 5573, 5624, 5676, 5728, 5781,
5834, 5887, 5941, 5995, 6050, 6105, 6160, 6216, 6272, 6329, 6386, 6444, 6502, 6560, 6619,
6678, 6738, 6798, 6859, 6920, 6981, 7043, 7105, 7168, 7231, 7295, 7359, 7424, 7489, 7555,
7621, 7688, 7755, 7823, 7891, 7960, 8029, 8099, 8169, 8240, 8311, 8383, 8455, 8528, 8601,
8675, 8750, 8825, 8901, 8977, 9054, 9131, 9209, 9288, 9367, 9447, 9527, 9608, 9690, 9772,
9855, 9938, 10022, 10107, 10192, 10278, 10365, 10452, 10540, 10628, 10717, 10807, 10897,
10988, 11080, 11172, 11265, 11359, 11454, 11549, 11645, 11742, 11839, 11937, 12036,
12136, 12236, 12337, 12439, 12542, 12645, 12749, 12854, 12960, 13067, 13174, 13282,
13391, 13501, 13612, 13723, 13835, 13948, 14062, 14177, 14293, 14409, 14526, 14644,
14763, 14883, 15004, 15126, 15249, 15373, 15498, 15623, 15749, 15876, 16004, 16133,
16263, 16394, 16526, 16659, 16793, 16928, 17064, 17201, 17339, 17478, 17618, 17759,
17901, 18044, 18189, 18335, 18482, 18630, 18779, 18929, 19080, 19232, 19385, 19540,
19696, 19853, 20011, 20170, 20330, 20492, 20655, 20819, 20984, 21151, 21319, 21488,
21658, 21830, 22003, 22177, 22352, 22529, 22707, 22886, 23067, 23249, 23432, 23617,
23803, 23991, 24180, 24370, 24562, 24755, 24950, 25146, 25344, 25543, 25744, 25946,
26150, 26355, 26562, 26770, 26980, 27191, 27404, 27619, 27835, 28053, 28272, 28493,
28716, 28940, 29166, 29394, 29623, 29854, 30087, 30322, 30558, 30796, 31036, 31278,
31522, 31767, 32014, 32263, 32514, 32767, 33022, 33279, 33537, 33797, 34059, 34323,
34589, 34857, 35127, 35399, 35673, 35949, 36228, 36509, 36792, 37077, 37364, 37653,
37944, 38237, 38533, 38831, 39131, 39433, 39738, 40045, 40354, 40665, 40979, 41295,
41614, 41935, 42258, 42584, 42912, 43243, 43576, 43912, 44250, 44591, 44934, 45280,
45628, 45979, 46333, 46689, 47048, 47410, 47774, 48141, 48511, 48884, 49259, 49637,
50018, 50402, 50789, 51179, 51572, 51967, 52365, 52766, 53170, 53577, 53988, 54402,
54819];
GIRLS_EXP_LEVELS.rare = [12, 25, 38, 51, 64, 77, 90, 103, 116, 129, 142, 156, 170, 184, 198,
212, 226, 240, 254, 268, 282, 297, 312, 327, 342, 357, 372, 387, 402, 417, 433, 449, 465, 481,
497, 513, 529, 545, 561, 578, 595, 612, 629, 646, 663, 680, 697, 715, 733, 751, 769, 787, 805,
823, 841, 860, 879, 898, 917, 936, 955, 974, 994, 1014, 1034, 1054, 1074, 1094, 1114, 1135,
1156, 1177, 1198, 1219, 1240, 1262, 1284, 1306, 1328, 1350, 1372, 1394, 1417, 1440, 1463,
1486, 1509, 1532, 1556, 1580, 1604, 1628, 1652, 1677, 1702, 1727, 1752, 1777, 1802, 1828,
1854, 1880, 1906, 1932, 1959, 1986, 2013, 2040, 2067, 2095, 2123, 2151, 2179, 2207, 2236,
2265, 2294, 2323, 2352, 2382, 2412, 2442, 2472, 2503, 2534, 2565, 2596, 2627, 2659, 2691,
2723, 2755, 2788, 2821, 2854, 2887, 2921, 2955, 2989, 3023, 3058, 3093, 3128, 3163, 3199,
3235, 3271, 3307, 3344, 3381, 3418, 3456, 3494, 3532, 3570, 3609, 3648, 3687, 3727, 3767,
3807, 3847, 3888, 3929, 3970, 4012, 4054, 4096, 4139, 4182, 4225, 4269, 4313, 4357, 4402,
4447, 4492, 4538, 4584, 4630, 4677, 4724, 4771, 4819, 4867, 4915, 4964, 5013, 5062, 5112,
5162, 5213, 5264, 5315, 5367, 5419, 5471, 5524, 5577, 5631, 5685, 5739, 5794, 5849, 5905,
5961, 6017, 6074, 6131, 6189, 6247, 6306, 6365, 6424, 6484, 6544, 6605, 6666, 6728, 6790,
6853, 6916, 6980, 7044, 7108, 7173, 7238, 7304, 7370, 7437, 7504, 7572, 7640, 7709, 7778,
7848, 7918, 7989, 8061, 8133, 8206, 8279, 8353, 8427, 8502, 8577, 8653, 8729, 8806, 8884,
8962, 9041, 9120, 9200, 9281, 9362, 9444, 9526, 9609, 9693, 9777, 9862, 9947, 10033, 10120,
10207, 10295, 10384, 10473, 10563, 10654, 10745, 10837, 10930, 11023, 11117, 11212,
11308, 11404, 11501, 11599, 11697, 11796, 11896, 11997, 12098, 12200, 12303, 12407,
12511, 12616, 12722, 12829, 12937, 13045, 13154, 13264, 13375, 13487, 13600, 13713,
13827, 13942, 14058, 14175, 14293, 14412, 14531, 14651, 14772, 14894, 15017, 15141,
15266, 15392, 15519, 15647, 15776, 15906, 16037, 16169, 16302, 16436, 16571, 16707,
16844, 16982, 17121, 17261, 17402, 17544, 17687, 17831, 17976, 18122, 18269, 18417,
18566, 18716, 18868, 19021, 19175, 19330, 19486, 19643, 19802, 19962, 20123, 20285,
20448, 20613, 20779, 20946, 21114, 21284, 21455, 21627, 21800, 21975, 22151, 22328,
22507, 22687, 22868, 23051, 23235, 23420, 23607, 23795, 23985, 24176, 24368, 24562,
24757, 24954, 25152, 25352, 25553, 25756, 25960, 26166, 26373, 26582, 26792, 27004,
27218, 27433, 27650, 27868, 28088, 28310, 28533, 28758, 28985, 29213, 29443, 29675,
29909, 30144, 30381, 30620, 30861, 31103, 31347, 31593, 31841, 32091, 32343, 32597,
32852, 33109, 33368, 33629, 33892, 34157, 34424, 34693, 34964, 35237, 35512, 35789,
36068, 36349, 36633, 36919, 37207, 37497, 37789, 38083, 38380, 38679, 38980, 39283,
39588, 39896, 40206, 40518, 40833, 41150, 41469, 41791, 42115, 42442, 42771, 43103,
43437, 43774, 44113, 44455, 44799, 45146, 45495, 45847, 46202, 46559, 46919, 47282,
47647, 48015, 48386, 48760, 49136, 49515, 49897, 50282, 50670, 51061, 51455, 51852,
52252, 52655, 53061, 53470, 53882, 54297, 54715, 55136, 55560, 55987, 56418, 56852,
57289, 57729, 58173, 58620, 59070, 59524, 59981, 60442, 60906, 61373, 61844, 62318,
62796, 63278, 63763, 64252, 64745, 65241, 65741];
GIRLS_EXP_LEVELS.epic = [14, 29, 44, 59, 74, 89, 104, 119, 134, 149, 165, 181, 197, 213, 229,
245, 261, 277, 294, 311, 328, 345, 362, 379, 396, 413, 431, 449, 467, 485, 503, 521, 539, 557,
576, 595, 614, 633, 652, 671, 690, 710, 730, 750, 770, 790, 810, 830, 851, 872, 893, 914, 935,
956, 977, 999, 1021, 1043, 1065, 1087, 1109, 1132, 1155, 1178, 1201, 1224, 1247, 1271, 1295,
1319, 1343, 1367, 1391, 1416, 1441, 1466, 1491, 1516, 1542, 1568, 1594, 1620, 1646, 1673,
1700, 1727, 1754, 1781, 1809, 1837, 1865, 1893, 1921, 1950, 1979, 2008, 2037, 2066, 2096,
2126, 2156, 2186, 2217, 2248, 2279, 2310, 2341, 2373, 2405, 2437, 2469, 2502, 2535, 2568,
2601, 2635, 2669, 2703, 2737, 2772, 2807, 2842, 2877, 2913, 2949, 2985, 3021, 3058, 3095,
3132, 3169, 3207, 3245, 3283, 3322, 3361, 3400, 3439, 3479, 3519, 3559, 3600, 3641, 3682,
3724, 3766, 3808, 3850, 3893, 3936, 3979, 4023, 4067, 4111, 4156, 4201, 4246, 4292, 4338,
4384, 4431, 4478, 4525, 4573, 4621, 4670, 4719, 4768, 4818, 4868, 4918, 4969, 5020, 5071,
5123, 5175, 5228, 5281, 5334, 5388, 5442, 5497, 5552, 5607, 5663, 5719, 5776, 5833, 5891,
5949, 6007, 6066, 6125, 6185, 6245, 6306, 6367, 6429, 6491, 6553, 6616, 6679, 6743, 6807,
6872, 6937, 7003, 7069, 7136, 7203, 7271, 7339, 7408, 7477, 7547, 7617, 7688, 7759, 7831,
7903, 7976, 8049, 8123, 8198, 8273, 8349, 8425, 8502, 8579, 8657, 8736, 8815, 8895, 8975,
9056, 9138, 9220, 9303, 9386, 9470, 9555, 9640, 9726, 9813, 9900, 9988, 10076, 10165,
10255, 10345, 10436, 10528, 10621, 10714, 10808, 10903, 10998, 11094, 11191, 11288,
11386, 11485, 11585, 11685, 11786, 11888, 11991, 12094, 12198, 12303, 12409, 12516,
12623, 12731, 12840, 12950, 13061, 13172, 13284, 13397, 13511, 13626, 13742, 13859,
13976, 14094, 14213, 14333, 14454, 14576, 14699, 14823, 14948, 15074, 15200, 15327,
15455, 15584, 15714, 15845, 15977, 16110, 16244, 16379, 16515, 16652, 16790, 16929,
17069, 17210, 17352, 17496, 17641, 17787, 17934, 18082, 18231, 18381, 18532, 18684,
18837, 18992, 19148, 19305, 19463, 19622, 19782, 19944, 20107, 20271, 20436, 20603,
20771, 20940, 21110, 21282, 21455, 21629, 21804, 21981, 22159, 22338, 22519, 22701,
22884, 23069, 23255, 23443, 23632, 23822, 24014, 24207, 24402, 24598, 24796, 24995,
25196, 25398, 25602, 25807, 26014, 26222, 26432, 26643, 26856, 27071, 27287, 27505,
27724, 27945, 28168, 28392, 28618, 28846, 29075, 29306, 29539, 29774, 30010, 30248,
30488, 30730, 30974, 31219, 31466, 31715, 31966, 32219, 32474, 32731, 32990, 33250,
33512, 33776, 34042, 34310, 34580, 34852, 35126, 35402, 35681, 35962, 36245, 36530,
36817, 37106, 37397, 37690, 37986, 38284, 38584, 38886, 39191, 39498, 39807, 40119,
40433, 40749, 41068, 41389, 41712, 42038, 42366, 42697, 43030, 43366, 43704, 44045,
44388, 44734, 45082, 45433, 45787, 46143, 46502, 46864, 47228, 47595, 47965, 48338,
48713, 49091, 49472, 49856, 50243, 50633, 51026, 51422, 51821, 52223, 52628, 53036,
53447, 53861, 54278, 54698, 55121, 55547, 55976, 56409, 56845, 57284, 57726, 58172,
58621, 59073, 59529, 59988, 60451, 60917, 61387, 61860, 62337, 62817, 63301, 63789,
64280, 64775, 65274, 65776, 66282, 66792, 67306, 67823, 68344, 68869, 69398, 69931,
70468, 71009, 71554, 72103, 72656, 73214, 73776, 74342, 74912, 75487, 76066, 76649];
GIRLS_EXP_LEVELS.legendary = [16, 33, 50, 67, 84, 101, 118, 135, 152, 170, 188, 206, 224, 242,
260, 278, 297, 316, 335, 354, 373, 392, 411, 431, 451, 471, 491, 511, 531, 551, 572, 593, 614,
635, 656, 677, 698, 720, 742, 764, 786, 808, 830, 853, 876, 899, 922, 945, 968, 992, 1016,
1040, 1064, 1088, 1112, 1137, 1162, 1187, 1212, 1237, 1263, 1289, 1315, 1341, 1367, 1394,
1421, 1448, 1475, 1502, 1529, 1557, 1585, 1613, 1641, 1670, 1699, 1728, 1757, 1786, 1816,
1846, 1876, 1906, 1936, 1967, 1998, 2029, 2060, 2092, 2124, 2156, 2188, 2221, 2254, 2287,
2320, 2354, 2388, 2422, 2456, 2491, 2526, 2561, 2596, 2632, 2668, 2704, 2740, 2777, 2814,
2851, 2888, 2926, 2964, 3002, 3041, 3080, 3119, 3158, 3198, 3238, 3278, 3319, 3360, 3401,
3443, 3485, 3527, 3569, 3612, 3655, 3698, 3742, 3786, 3830, 3875, 3920, 3965, 4011, 4057,
4103, 4150, 4197, 4244, 4292, 4340, 4388, 4437, 4486, 4536, 4586, 4636, 4687, 4738, 4789,
4841, 4893, 4946, 4999, 5052, 5106, 5160, 5215, 5270, 5325, 5381, 5437, 5494, 5551, 5608,
5666, 5724, 5783, 5842, 5902, 5962, 6023, 6084, 6145, 6207, 6269, 6332, 6395, 6459, 6523,
6588, 6653, 6719, 6785, 6852, 6919, 6987, 7055, 7124, 7193, 7263, 7333, 7404, 7475, 7547,
7619, 7692, 7765, 7839, 7914, 7989, 8065, 8141, 8218, 8295, 8373, 8451, 8530, 8610, 8690,
8771, 8852, 8934, 9017, 9100, 9184, 9269, 9354, 9440, 9526, 9613, 9701, 9789, 9878, 9968,
10058, 10149, 10241, 10333, 10426, 10520, 10615, 10710, 10806, 10903, 11000, 11098,
11197, 11297, 11397, 11498, 11600, 11703, 11806, 11910, 12015, 12121, 12227, 12334,
12442, 12551, 12661, 12771, 12882, 12994, 13107, 13221, 13336, 13452, 13568, 13685,
13803, 13922, 14042, 14163, 14285, 14408, 14532, 14656, 14781, 14907, 15034, 15162,
15291, 15421, 15552, 15684, 15817, 15951, 16086, 16222, 16359, 16497, 16636, 16776,
16917, 17059, 17202, 17346, 17492, 17639, 17787, 17936, 18086, 18237, 18389, 18542,
18696, 18852, 19009, 19167, 19326, 19486, 19648, 19811, 19975, 20140, 20306, 20474,
20643, 20813, 20984, 21157, 21331, 21506, 21683, 21861, 22040, 22221, 22403, 22586,
22771, 22957, 23144, 23333, 23523, 23715, 23908, 24103, 24299, 24496, 24695, 24895,
25097, 25300, 25505, 25712, 25920, 26130, 26341, 26554, 26768, 26984, 27202, 27421,
27642, 27865, 28089, 28315, 28543, 28772, 29003, 29236, 29470, 29706, 29944, 30184,
30426, 30669, 30914, 31161, 31410, 31661, 31914, 32168, 32424, 32682, 32942, 33204,
33468, 33734, 34002, 34272, 34544, 34818, 35094, 35372, 35652, 35934, 36219, 36506,
36795, 37086, 37379, 37674, 37972, 38272, 38574, 38878, 39185, 39494, 39805, 40119,
40435, 40753, 41074, 41397, 41722, 42050, 42380, 42713, 43048, 43386, 43726, 44069,
44415, 44763, 45114, 45467, 45823, 46182, 46543, 46907, 47274, 47644, 48016, 48391,
48769, 49150, 49534, 49920, 50309, 50701, 51096, 51494, 51895, 52299, 52706, 53116,
53529, 53945, 54364, 54787, 55213, 55642, 56074, 56509, 56948, 57390, 57835, 58284,
58736, 59191, 59650, 60112, 60578, 61047, 61520, 61996, 62476, 62959, 63446, 63937,
64431, 64929, 65431, 65937, 66446, 66959, 67476, 67997, 68522, 69051, 69584, 70121,
70662, 71207, 71756, 72309, 72866, 73427, 73992, 74562, 75136, 75714, 76297, 76884,
77475, 78071, 78671, 79276, 79885, 80499, 81117, 81740, 82368, 83000, 83637, 84279,
84926, 85578, 86235, 86896, 87562];
GIRLS_EXP_LEVELS.mythic = [40, 81, 122, 163, 205, 247, 289, 332, 375, 418, 462, 506, 550, 595,
640, 685, 731, 777, 823, 870, 917, 964, 1012, 1060, 1108, 1157, 1206, 1255, 1305, 1355, 1406,
1457, 1508, 1560, 1612, 1664, 1717, 1770, 1824, 1878, 1932, 1987, 2042, 2098, 2154, 2210,
2267, 2324, 2382, 2440, 2499, 2558, 2617, 2677, 2737, 2798, 2859, 2921, 2983, 3046, 3109,
3173, 3237, 3302, 3367, 3433, 3499, 3565, 3632, 3699, 3767, 3835, 3904, 3974, 4044, 4115,
4186, 4258, 4330, 4403, 4476, 4550, 4624, 4699, 4774, 4850, 4927, 5004, 5082, 5160, 5239,
5318, 5398, 5479, 5560, 5642, 5724, 5807, 5891, 5975, 6060, 6146, 6232, 6319, 6407, 6495,
6584, 6673, 6763, 6854, 6945, 7037, 7130, 7224, 7318, 7413, 7509, 7605, 7702, 7800, 7899,
7998, 8098, 8199, 8301, 8403, 8506, 8610, 8715, 8820, 8926, 9033, 9141, 9250, 9359, 9469,
9580, 9692, 9805, 9919, 10033, 10148, 10264, 10381, 10499, 10618, 10738, 10858, 10979,
11101, 11224, 11348, 11473, 11599, 11726, 11854, 11983, 12113, 12244, 12376, 12509,
12643, 12778, 12914, 13051, 13189, 13328, 13468, 13609, 13751, 13894, 14038, 14183,
14329, 14476, 14624, 14774, 14925, 15077, 15230, 15384, 15539, 15695, 15853, 16012,
16172, 16333, 16495, 16658, 16823, 16989, 17156, 17324, 17494, 17665, 17837, 18011,
18186, 18362, 18539, 18718, 18898, 19079, 19262, 19446, 19632, 19819, 20007, 20197,
20388, 20581, 20775, 20970, 21167, 21365, 21565, 21766, 21969, 22173, 22379, 22587,
22796, 23007, 23219, 23433, 23648, 23865, 24084, 24304, 24526, 24750, 24975, 25202,
25431, 25661, 25893, 26127, 26363, 26600, 26839, 27080, 27323, 27567, 27813, 28061,
28311, 28563, 28817, 29073, 29331, 29591, 29852, 30115, 30380, 30647, 30916, 31187,
31460, 31735, 32013, 32293, 32575, 32859, 33145, 33433, 33723, 34015, 34310, 34607,
34906, 35207, 35511, 35817, 36125, 36435, 36748, 37063, 37380, 37700, 38022, 38347,
38674, 39003, 39335, 39669, 40006, 40345, 40687, 41032, 41379, 41729, 42081, 42436,
42794, 43154, 43517, 43883, 44251, 44622, 44996, 45373, 45753, 46136, 46521, 46909,
47300, 47694, 48091, 48491, 48894, 49300, 49709, 50121, 50536, 50954, 51375, 51800,
52228, 52659, 53093, 53530, 53971, 54415, 54862, 55313, 55767, 56225, 56686, 57150,
57618, 58089, 58564, 59042, 59524, 60010, 60499, 60992, 61489, 61989, 62493, 63001,
63513, 64029, 64548, 65071, 65598, 66129, 66664, 67203, 67746, 68293, 68844, 69400,
69960, 70524, 71092, 71664, 72241, 72822, 73407, 73997, 74591, 75190, 75793, 76401,
77013, 77630, 78251, 78877, 79508, 80143, 80783, 81428, 82078, 82733, 83393, 84058,
84728, 85403, 86083, 86768, 87458, 88153, 88853, 89558, 90269, 90985, 91706, 92433,
93165, 93903, 94646, 95395, 96149, 96909, 97675, 98447, 99224, 100007, 100796, 101591,
102392, 103199, 104012, 104831, 105656, 106487, 107325, 108169, 109019, 109876, 110739,
111609, 112485, 113368, 114257, 115153, 116056, 116965, 117881, 118804, 119734, 120671,
121615, 122566, 123524, 124489, 125462, 126442, 127429, 128424, 129426, 130436, 131453,
132478, 133510, 134550, 135598, 136654, 137718, 138790, 139870, 140958, 142054, 143158,
144271, 145392, 146521, 147659, 148805, 149960, 151123, 152295, 153476, 154666, 155865,
157073, 158290, 159516, 160751, 161995, 163249, 164512, 165785, 167067, 168359, 169660,
170971, 172292, 173623, 174964, 176315, 177676, 179047, 180429, 181821, 183223, 184636,
186059, 187493, 188938, 190394, 191861, 193339, 194828, 196328, 197839, 199361, 200895,
202440, 203997, 205566, 207146, 208738, 210342, 211958, 213586, 215227, 216880];
/* =========
OPTIONS
========= */
function loadSetting(e){
catch(err){}
return true
return temp
// Show which modules are enabled and if so, run them when appropriate
if (loadSetting('refresh')) {
if (CurrentPage.indexOf('home') != -1) {
moduleRefresh();
if (loadSetting('villain')) {
try {
moduleVillain();
} catch(e) {}
if (loadSetting('xpMoney')) {
try {
moduleXP();
moduleMoney();
} catch(e) {}
if (loadSetting('market')) {
if (CurrentPage.indexOf('shop') != -1) {
moduleMarket();
if (loadSetting('marketFilter')) {
if (CurrentPage.indexOf('shop') != -1) {
moduleMarketFilter();
if (loadSetting('market_XP_Aff')) {
if (CurrentPage.indexOf('shop') != -1) {
moduleMarket_XP_Aff();
if (loadSetting('sortArmorItems')) {
if (CurrentPage.indexOf('shop') != -1) {
moduleSortArmorItems();
if (loadSetting('hideSellButton')) {
if (CurrentPage.indexOf('shop') != -1) {
moduleHideSellButton();
if (loadSetting('harem')) {
if (CurrentPage.indexOf('harem') != -1) {
moduleHarem();
if (loadSetting('league')) {
if (CurrentPage.indexOf('tower-of-fame') != -1) {
moduleLeague();
if (loadSetting('simFight')) {
if (CurrentPage.indexOf('tower-of-fame') != -1)
moduleSim();
if (CurrentPage.indexOf('season-arena') != -1)
moduleSeasonSim();
if (window.location.href.indexOf('/troll-pre-battle') != -1)
moduleBattleSim();
if (loadSetting('teamsFilter')) {
moduleTeamsFilter();
if (loadSetting('champions')) {
moduleChampions();
if (loadSetting('links')) {
try {
moduleLinks();
} catch(e) {}
if (loadSetting('seasonStats')) {
moduleSeasonStats();
if (loadSetting('pachinkoNames')) {
modulePachinkoNames();
if (loadSetting('missionsBackground')) {
moduleMissionsBackground();
if (loadSetting('collectMoneyAnimation')) {
moduleCollectMoneyAnimation();
function options() {
// Options menu
+ ' <label class="switch"><input
type="checkbox" hhs="tiers"><span class="slider"></span></label>' + texts[lang].optionsTiers
+ '<br />'
+ ' <label class="switch"><input
type="checkbox" hhs="leagueBoard"><span class="slider"></span></label>' +
texts[lang].optionsLeagueBoard + '<br />'
+ '<label class="switch"><input type="checkbox" hhs="simFight"><span
class="slider"></span></label>' + texts[lang].optionsSimFight + '<br />'
+ '</div>');
$('#hhsButton').click(function() {
var x = document.getElementById('hhsOptions');
x.style.display = 'block';
else {
x.style.display = 'none';
});
$('[hhs]').each(function(){
$(this).attr('checked', loadSetting($(this).attr('hhs')))
})
$('[hhs]').click(function() {
localStorage.setItem('HHS.'+$(this).attr('hhs'), $(this).prop('checked'))
})
$('[hhs=villain]').click(function() {
if (!$(this).is(':checked')) {
$('[hhs=tiers]').prop('checked', false);
localStorage.setItem('HHS.tiers', false)
});
$('[hhs=tiers]').click(function() {
if ($(this).is(':checked')) {
$('[hhs=villain]').prop('checked', true);
localStorage.setItem('HHS.villain', true)
});
$('[hhs=league]').click(function() {
if (!$(this).is(':checked')) {
$('[hhs=leagueBoard]').prop('checked', false);
localStorage.setItem('HHS.leagueBoard', false)
});
$('[hhs=leagueBoard]').click(function() {
if ($(this).is(':checked')) {
$('[hhs=league]').prop('checked', true);
localStorage.setItem('HHS.league', true)
});
//CSS
sheet.insertRule('#hhsButton {'
);
sheet.insertRule('.hhsTooltip {'
);
sheet.insertRule('.switch {'
+ 'height: 17px;}'
);
sheet.insertRule('.slider {'
+ 'top: 0; '
+ 'left: 0; '
+ 'right: 0; '
+ 'bottom: 0; '
+ 'margin-right: 4px;}'
);
sheet.insertRule('.slider:before {'
+ 'border-radius: 50%;}'
);
+ 'background-color: #F11F64;}'
);
+ 'transform: translateX(13px);}'
);
/* =====================
===================== */
function moduleRefresh() {
setInterval(function() {
window.location.reload();
}, 600000);
}
/* ======================
====================== */
function moduleVillain() {
localStorage.setItem('eventTrolls', '[]');
localStorage.setItem('mythicEventTrolls', '[]');
localStorage.setItem('tierGirlsOwned', '[[], [], [], [], [], [], [], [], [], [], [], [], [], []]');
if (loadSetting('tiers'))
includeTiers = true;
if (Math.floor(new Date().getTime()/1000) > eventEndTime)
localStorage.removeItem('eventTrolls');
localStorage.removeItem('mythicEventTrolls');
if (window.location.search.includes("tab=event")) {
localStorage.setItem('eventTime', eventEndTime);
eventTrolls = [];
if (girlLocation.includes('troll-pre-battle')) {
localStorage.setItem('eventTrolls', JSON.stringify(eventTrolls));
if (window.location.search.includes("tab=mythic_event")) {
localStorage.setItem('mythicEventTime', mythicEventEndTime);
mythicEventTrolls = [];
if (girlLocation.includes('troll-pre-battle'))
localStorage.setItem('mythicEventTrolls', JSON.stringify(mythicEventTrolls));
}
if (CurrentPage.indexOf('home') != -1) {
if (includeTiers) {
tierGirlsOwned = [[], [], [], [], [], [], [], [], [], [], [], [], [], []];
tierGirlsOwned[tIdx][pIdx] = true;
if (idGirl == "0") {
tierGirlsOwned[tIdx][pIdx] = true;
tierGirlsOwned[tIdx][pIdx] = false;
else {
tierGirlsOwned[tIdx][pIdx] = true;
else {
tierGirlsOwned[tIdx][pIdx] = false;
}
}
localStorage.setItem('tierGirlsOwned', JSON.stringify(tierGirlsOwned));
var trolls;
if ($('#hh_comix').length == 0) {
trolls = ['Dark Lord', 'Ninja Spy', 'Gruntt', 'Edwarda', 'Donatien', 'Silvanus', 'Bremen',
'Finalmecia', 'Roko Senseï', 'Karole', 'Jackson’s Crew', 'Pandora Witch', 'Nike', 'Sake'];
if (lang == 'fr') {
if (lang == 'es') {
if (lang == 'it') {
if (lang == 'de') {
trolls[0] = 'Dunkler Lord';
else {
trollName = '',
trollNameTiers = '',
trollsMenu = '';
trollName = trolls[i];
if (includeTiers) {
if (!(tierGirlsOwned[i][0])) {
if (!(tierGirlsOwned[i][1])) {
if (!(tierGirlsOwned[i][2])) {
}
}
type = 'mythicEventTroll';
//CSS
+ '.TrollsMenu {'
+ 'text-align: center;}}'
);
+ '.TrollsMenu {'
+ 'text-align: center;}}'
);
sheet.insertRule('#hh_comix .TrollsMenu {'
);
sheet.insertRule('.TrollsMenu a {'
+ 'text-decoration: none;}'
);
sheet.insertRule('.eventTroll {'
);
sheet.insertRule('.eventTroll:hover {'
);
sheet.insertRule('.eventTroll.common {'
);
sheet.insertRule('.eventTroll.common:hover {'
);
sheet.insertRule('.eventTroll.rare {'
);
sheet.insertRule('.eventTroll.rare:hover {'
);
sheet.insertRule('.eventTroll.epic {'
);
sheet.insertRule('.eventTroll.epic:hover {'
);
sheet.insertRule('.eventTroll.legendary {'
);
sheet.insertRule('.eventTroll.legendary:hover {'
);
sheet.insertRule('.mythicEventTroll {'
);
sheet.insertRule('.mythicEventTroll:hover {'
);
+ 'opacity: 0; '
+ 'visibility: hidden;'
);
+ 'opacity: 0; '
+ 'visibility: hidden;'
);
+ 'opacity: 1; '
+ 'visibility: visible;}'
);
sheet.insertRule('#TrollsID a {'
+ 'text-decoration: none;}'
);
+ 'text-decoration: underline;}'
);
/* ===========
BETTER XP
=========== */
function moduleXP() {
function betterXP() {
$('span[hero="xp"]').empty().append('Next: ');
$('span[hero="xp_sep"]').empty().append(nThousand(Hero.infos.Xp.left));
$('span[hero="xp_max"]').empty().append(' XP');
};
betterXP();
$('.button_glow').click(function() {
setInterval(function() {
betterXP();
}, 3000)
});
/* ==============
BETTER MONEY
============== */
function moduleMoney() {
function betterMoney() {
$('div[hero="soft_currency"]').empty().append(nRounding(Hero.infos.soft_currency, 3, -
1));
};
betterMoney();
$('.button_glow').click(function() {
setInterval(function() {
betterMoney();
}, 3000)
});
$('#collect_all').click(function() {
setInterval(function() {
betterMoney();
}, 3000)
});
$('.collect_money').click(function() {
setInterval(function() {
betterMoney();
}, 3000)
});
/* ====================
MARKET INFORMATION
==================== */
function moduleMarket() {
loc2.each(function() {
});
updateStats();
function updateStats() {
var last_cost = 0,
levelMoney = 0,
levelMoney = calculateTotalPrice(levelPoints);
loc2.each(function() {
$('.CustomStats').html('');
spentMoney = calculateTotalPrice(boughtPoints),
itemPoints = 0;
equipmentsData.each(function() {
statPosEnd = equipmentsStats.substr(statPosStart).indexOf(',');
}});
ginsengPoints = 0,
ginsengLegendary = 0;
boostersData.each(function() {
if ($(this).attr('id_item') == '7') {
ginsengLegendary = ginsengLegendary + 1;
}
});
$('#CustomStats' + stat).html(
);
});
function calculateTotalPrice(points) {
var price = 0;
return price;
function calculateStatPrice(points) {
var cost = 0;
cost = 5 + points * 2;
return cost;
}
var lsMarket = {};
lsMarket.buyable = {};
lsMarket.stocks = {};
lsMarket.restock = {};
setTimeout(function() {
var restocktime = 0;
lsMarket.restock.herolvl = Hero.infos.level;
get_buyableStocks('potion');
get_buyableStocks('gift');
equipments_shop(0);
boosters_shop(0);
books_shop(0);
gifts_shop(0);
}, 500);
var timer;
opened_shop = $('#shop').children('.selected');
clearTimeout(timer);
timer = setTimeout(function() {
if (opened_shop.hasClass('armor')) {
equipments_shop(1);
else if (opened_shop.hasClass('booster')) {
boosters_shop(1);
else if (opened_shop.hasClass('potion')) {
books_shop(1);
else if (opened_shop.hasClass('gift')) {
gifts_shop(1);
}, 500);
});
function get_buyableStocks(loc_class) {
var itemsNb = 0,
itemsXp = 0,
itemsPrice = 0,
loc.find('.slot').each(function() {
itemsNb++;
});
function equipments_shop(update) {
function boosters_shop(update) {
function books_shop(update) {
function gifts_shop(update) {
var itemsNb = 0,
itemsSell = 0,
loc.find('.slot').each(function() {
Nb = parseInt(item.count, 10);
itemsNb += Nb;
});
localStorage.setItem('lsMarket', JSON.stringify(lsMarket));
if (update === 0) {
loc.prepend('<span class="CustomTT"></span><div class="' + tt_class + '">' + tooltip +
'</div>');
else {
loc.children('.' + tt_class).html(tooltip);
Hero.infos[stat]++;
timer = setTimeout(function() {
updateStats();
}, 400);
});
ItemTooltip.prototype.buildMythicItemCustomTooltip = function() {
if(this.itemData.usages) {
switch(this.itemData.identifier) {
case "XP4":
case "K4":
case "MB1":
case "MB2":
case "MB3":
case "MB4":
case "MB5":
case "MB6":
case "MB7":
return '<span class="item-value mythic-item-description">' +
GT.design.item_mythic_mb7 + currentUsesText + tooltipStackWarning + '</span>';
return "";
};
//CSS
+ 'height: 20px;}'
);
+ 'cursor: help;}'
);
+ 'opacity: 1; '
+ 'visibility: visible;}'
);
+ 'opacity: 0; '
);
+ 'height: 43px;}'
);
+ 'height: 60px;}'
);
+ 'font-weight: bold;}'
);
+ 'background-image: url("https://i.postimg.cc/wv01VstN/icon-currency-
ymen.png"); '
+ 'display: inline-block;}'
);
+ 'cursor: help;}'
);
+ 'visibility: none;}'
);
+ 'opacity: 1; '
+ 'visibility: visible;}'
);
+ 'opacity: 0; '
);
+ 'font-weight: bold;}'
);
sheet.insertRule('#hh_comix #inventory .imgMoney {'
+ 'background-image:
url("https://ch.hh-content.com/pictures/design/ic_topbar_soft_currency.png");}'
);
/* =========================================
========================================= */
function moduleMarketFilter() {
container.find('.number').remove();
container.append(nav);
function updateNavMax() {
nb_girls = container.children().length - 1;
max_girl.text(nb_girls);
nav.prepend(num_girl);
return;
goto_girl(dst_num, false);
});
}
function girl_at(id = cur_id) {
function hideCurrentGirl() {
cur_girl.addClass('not-selected');
girl_at(prev_girl_id()).css('left', '-145px');
cur_girl.css('left', '-145px');
girl_at(next_girl_id()).css('left', '-145px');
if(hide_current)
hideCurrentGirl();
dst_girl.removeClass('not-selected');
girl_at(prev_girl_id(id_girl)).css('left', '0px');
girl_at(next_girl_id(id_girl)).css('left', '290px');
dst_girl.css('left', '145px');
window.$girl = dst_girl;
if( override_nav )
num_girl.text(id_girl);
cur_id = id_girl;
update_header();
if (loadSetting('market_XP_Aff'))
moduleMarket_XP_Aff();
function update_header() {
if ($girl.attr('class').indexOf('girl') != -1) {
$("#girls_list>.level_target_squared>div>div").attr("chars", $girl.data("g")
["level"].length);
$("#girls_list>.level_target_squared>div>div").text($girl.data("g")["level"]);
$("#girls_list>h3").text($girl.data("g")["Name"]);
$("#girls_list>.icon").attr("carac", $girl.data("g")["class"]);
lnav.off('click');
rnav.off('click');
rnav.on('click', (ev) => { goto_girl( next_girl_id() ); });
function addGirlFilter() {
function getGirlData() {
function createFilterBox() {
+ '</div></div>';
+ '</select></div></div>';
totalHTML += '<div class="form-control"><div class="select-group">'
+ '</select></div></div>';
+ '</div></div>';
+ '</select></div></div>';
+ '</select></div></div>';
+ '</select></div></div>';
+ '</select></div></div>';
totalHTML += '</div></div>';
return $(totalHTML);
function createFilterBtn() {
return btn;
hideCurrentGirl();
let matchesBlessedAttributes;
switch (filterBlessedAttributes) {
case 'blessed_attributes':
break;
case 'non_blessed_attributes':
break;
case 'all':
break;
} else {
allGirls[i].detach();
updateNavMax();
target.append(btn);
target.append(filterBox);
btn.on('click', function() {
$('#arena_filter_box').css('display', $
('#arena_filter_box').css('display')=='block'?'none':'block');
});
filterGirls(filterBox, girlsData);
};
filterBox.find("#sort_rarity").on('change', sortGirls);
filterBox.find("#sort_aff_category").on('change', sortGirls);
filterBox.find("#sort_aff_lvl").on('change', sortGirls);
filterBox.find("#filter_blessed_attributes").on('change', sortGirls);
filterBox.find("#filter_element").on('change', sortGirls);
addGirlFilter();
//CSS
+ 'display: block;'
+ 'position: relative;'
+ 'left: -5px;'
+ 'z-index: 15;'
+ 'margin-bottom: -8px;'
+ 'padding-left: 7px;'
+ 'font-size: 14px;'
+ 'font-weight: 400;'
+ 'letter-spacing: .22px;'
+ 'background:transparent;'
+ 'text-shadow: -1px -1px 0 #000,1px -1px 0 #000,-1px 1px 0 #000,1px 1px 0 #000,-
2px -2px 5px rgba(255,159,0,.4),2px -2px 5px rgba(255,159,0,.4),-2px 2px 5px
rgba(255,159,0,.4),2px 2px 5px rgba(255,159,0,.4),0 0 10px rgba(255,159,0,.4);}'
);
+ 'left: 0 !important;}'
);
+ 'input.blue_text_button.girl_filter {'
+ 'position: absolute;'
+ 'left: -2px;'
+ 'top: 0px;}}'
);
+ 'input.blue_text_button.girl_filter {'
+ 'position: absolute;'
+ 'left: -2px;'
+ 'top: -30px;}}'
);
+ '#arena_filter_box {'
+ 'margin-top: -28px;}}'
);
/* =====================================
===================================== */
function moduleMarket_XP_Aff() {
var nbItem = 0;
function updateGirlXP(girl) {
var xp_total = 0;
switch (girl_rarity) {
case "starting":
xp_total = GIRLS_EXP_LEVELS.starting[lvl_max-2];
break;
case "common":
xp_total = GIRLS_EXP_LEVELS.common[lvl_max-2];
break;
case "rare":
xp_total = GIRLS_EXP_LEVELS.rare[lvl_max-2];
break;
case "epic":
xp_total = GIRLS_EXP_LEVELS.epic[lvl_max-2];
break;
case "legendary":
xp_total = GIRLS_EXP_LEVELS.legendary[lvl_max-2];
break;
case "mythic":
xp_total = GIRLS_EXP_LEVELS.mythic[lvl_max-2];
break;
girl.find('.bar-wrap[rel="xp"] #xpTool').remove();
function updateGirlAff(girl) {
updateGirlAff(girl);
updateGirlXP(girl);
updateGirlAff(girl);
});
updateGirlXP(girl);
updateGirlAff(girl);
});
updateGirlXP(girl);
updateGirlAff(girl);
});
updateGirlXP(girl);
updateGirlAff(girl);
});
let button = document.querySelector('#inventory button.blue_text_button');
button.addEventListener('click', function(){
setTimeout(function(){updateGirlAff(girl);}, 500);
setTimeout(function(){updateGirlAff(girl);}, 3000);
setTimeout(function(){updateGirlXP(girl);}, 500);
setTimeout(function(){updateGirlXP(girl);}, 3000);
});
//CSS
sheet.insertRule('.xpTooltip {'
+ 'margin-top: 23px;'
+ 'margin-left: 20px;}'
);
+ 'visibility: visible;}'
);
function moduleSortArmorItems() {
function sortArmorItems() {
let target = $('#shops_right #inventory .armor .inventory_slots .ui-droppable');
items[rarity].detach();
target.append(Object.values(items));
+ '</div>');
buttonSortArmorItems.addEventListener('click', function(){
sortArmorItems();
});
function moduleHideSellButton() {
function hideSellButton() {
function displaySellButton() {
+ '</div>');
if (hidden == 1) {
hideSellButton();
$('#hideText').html(texts[lang].display);
else {
$('#hideText').html(texts[lang].hide);
buttonHideSellButton.addEventListener('click', function(){
if (hidden == 0) {
hideSellButton();
hidden = 1;
localStorage.setItem('HHS.hideSellButton', 1);
$('#hideText').html(texts[lang].display);
else {
displaySellButton();
hidden = 0;
localStorage.setItem('HHS.hideSellButton', 0);
$('#hideText').html(texts[lang].hide);
});
shops[i].addEventListener('click', function(){
if (hidden == 0)
displaySellButton();
else
hideSellButton();
});
/* ===================
HAREM INFORMATION
=================== */
function moduleHarem() {
stats.girls = 0;
stats.hourlyMoney = 0;
stats.allCollect = 0;
stats.unlockedScenes = 0;
stats.allScenes = 0;
stats.xp = 0;
stats.affection = 0;
stats.money = 0;
stats.kobans = 0;
starting.push({affection: 90, money: 36000, kobans: 36, taffection: 90, tmoney: 36000,
tkobans: 36});
starting.push({affection: 225, money: 90000, kobans: 60, taffection: 315, tmoney: 126000,
tkobans: 96});
starting.push({affection: 563, money: 225000, kobans: 114, taffection: 878, tmoney: 351000,
tkobans: 210});
EvoReq.common = commonGirls;
EvoReq.rare = rareGirls;
EvoReq.epic = epicGirls;
EvoReq.legendary = legendGirls;
EvoReq.mythic = mythicGirls;
if (girl.own) {
stats.allCollect += girl.salary;
stats.rarities[girl.rarity]++;
stats.caracs[girl.class]++;
stats.girls++;
stats.hourlyMoney += Math.round(girl.salary_per_hour);
stats.unlockedScenes += girl.graded;
if (girl.graded != nbgrades) {
var currentLevelMoney = 0,
currentLevelKobans = 0;
if (girl.graded != 0) {
if (hh_nutaku) {
else {
stats.xp += expToMax;
try {
d = new Date(lsMarket.restock.time),
RestockInfo;
RestockInfo = '> The <a href="../shop.html">Market</a> restocked since your last visit.';
else {
+ '<br /><font style="color: gray;">' + texts[lang].restock + ': ' + d.toLocaleString() + ' ('
+ texts[lang].or_level + ' ' + (Hero.infos.level+1) + ')</font>';
+ RestockInfo;
} catch(e) {
'- ' + stats.caracs[1] + ' ' + texts[lang].hardcore + ', ' + stats.caracs[2] + ' ' +
texts[lang].charm + ', ' + stats.caracs[3] + ' ' + texts[lang].know_how + '<br />- '
+ nThousand(parseInt(document.getElementsByClassName('focus_text')
[0].innerHTML.replace(/\D/g, ''), 10)) + '/' + nThousand(Hero.infos.level * stats.girls) + ' ' +
texts[lang].harem_level + ' (' + nThousand(Hero.infos.level * stats.girls -
parseInt(document.getElementsByClassName('focus_text')[0].innerHTML.replace(/\D/g, ''),
10)) + ' ' + texts[lang].to_go + ')<br />- '
+ nThousand(stats.xp) + ' ' + texts[lang].Xp + ' (' + nThousand(stats.xp * 200) + ' <span
class="imgMoney"></span>) <br />'
+ MarketStocks
+ '</div>';
$('#harem_left').append('<div id="CustomBar">'
+ '</div>'
switch (clickOn) {
case 'stats':
toggleTabs(Stats);
break;
default:
TabsContainer.fadeOut(400);
});
function toggleTabs(tabIn) {
if (TabsContainer.css('display') == 'block') {
TabsContainer.fadeOut(400);
else {
tabIn.toggle(true);
TabsContainer.fadeIn(400);
$('.girls_list div[id_girl]').click(function() {
updateInfo();
});
updateInfo();
function updateInfo() {
setTimeout(function () {
haremRight.children('[girl]').each(function() {
//for Wiki FR
if ($('#hh_comix').length == 0) {
if (!girl.own) {
if (window.HH_UNIVERSE == 'gay') {
else {
if (window.HH_UNIVERSE == 'gay') {
else {
}
}
else {
if (HH_UNIVERSE == 'gay') {
else {
var j = 0,
FirstLockedScene = 1,
ScenesLink = '',
girl_quests = $(this).find('.girl_quests');
girl_quests.find('g').each(function() {
j++;
var aff = 0,
money = 0,
kobans = 0;
var currentLevelMoney = 0,
currentLevelKobans = 0;
if (girl.graded != 0) {
if (girl.graded >= j) {
if (hh_nutaku) {
else {
else {
if (hh_nutaku) {
else {
}
AffectionTT += addPriceRowGirl(j + '</b><span class="imgStar"></span>', aff,
money, kobans);
if ($(this).hasClass('grey') || $(this).hasClass('green')) {
if (FirstLockedScene === 0) {
ScenesLink += '0';
else {
FirstLockedScene = 0;
else {
ScenesLink += attrHref.substr(7);
});
girl_quests.children('a').each(function() {
});
ScenesLink = '';
girl_quests.parent().children('h4').prepend('<span class="CustomTT"></span><div
class="AffectionTooltip">' + AffectionTT + '</div>');
});
}, 50);
//CSS
+ 'font-size: 12px;}'
);
sheet.insertRule('#CustomBar {'
);
+ 'opacity: 0.5;}'
);
+ 'opacity: 1; '
+ 'cursor: pointer;}'
);
+ 'margin-top: 2px;}'
);
+ 'text-decoration: none;}'
);
+ 'text-decoration: none;}'
);
+ 'text-decoration: underline;}'
);
sheet.insertRule('#TabsContainer {'
+ 'display: none;}'
);
);
+ 'color: #B14;}'
);
sheet.insertRule('#TabsContainer .subTitle {'
+ 'display: block;}'
);
+ 'vertical-align: text-bottom;}'
);
+ 'box-sizing: content-box;}'
);
+ 'visibility: none;}'
);
sheet.insertRule('#harem_whole .CustomTT:hover {'
+ 'cursor: help;}'
);
+ 'opacity: 1; '
+ 'visibility: visible;}'
);
+ 'opacity: 0; '
sheet.insertRule('#collect_all_container {'
);
+ 'font-weight: bold;}'
);
+ 'font-size: 12px;}'
);
);
+ 'display: inline-block;}'
);
sheet.insertRule('#harem_whole .imgStar, #harem_left .imgStar {'
+ 'background-image: url("https://hh.hh-content.com/design_v2/affstar_S.png");}'
);
+ 'background-image:
url("https://hh.hh-content.com/pictures/design/ic_topbar_soft_currency.png");}'
);
+ 'background-image:
url("https://hh.hh-content.com/pictures/design/ic_topbar_hard_currency.png");}'
);
+ 'background-image:
url("https://ch.hh-content.com/pictures/design/ic_topbar_soft_currency.png");}'
);
+ 'background-image:
url("https://ch.hh-content.com/pictures/design/ic_topbar_hard_currency.png");}'
);
}
/* ====================
LEAGUE INFORMATION
==================== */
function moduleLeague() {
var playersTotal;
var challengesLeft;
var challengesPossibleMinutes;
var challengesPossible;
var challengesDone = 0;
var playerCurrentParse;
var playerCurrentPos;
var playerCurrentPoints;
var maxDemoteParse;
var maxDemotePoints;
var maxDemoteDiff;
var maxDemoteDisplay;
var textDemote;
var maxStagnateParse;
var maxStagnatePoints;
var maxStagnateDiff;
var maxStagnateDisplay;
var textStagnate;
var minTop4Parse;
var minTop4Points;
var minTop4Diff;
var minTop4Display;
var textTop4;
var minTop15Points;
var textTop15;
var minTop15Display;
var minTop30Parse;
var minTop30Points;
var minTop30Diff;
var minTop30Display;
var textTop30;
var avgScore;
var scoreExpected;
var playerSelectedPos;
var playerSelectedPoints;
var top4Points;
var top5Points;
var top15Points;
var top16Points;
var top30Points;
var top31Points;
var topDemotePoints;
var topNonDemotePoints;
if (loadSetting('leagueBoard')) {
includeBoard = true;
challengesPossible = (Hero.energies.challenge.amount !=
Hero.energies.challenge.max_amount)? Math.floor((challengesPossibleMinutes + (35 -
Hero.energies.challenge.next_refresh_ts / 60))/35) +
parseInt(Hero.energies.challenge.amount, 10) : Math.floor(challengesPossibleMinutes/35) +
parseInt(Hero.energies.challenge.amount, 10);
var fightsDone = 0;
if (playerData.className.indexOf('selected-player-leagues') != -1) {
if (fightsData[j].className != 'result')
fightsDone ++;
switch (playerSelectedPos) {
case 4:
top4Points = playerSelectedPoints;
break;
case 5:
top5Points = playerSelectedPoints;
break;
case 15:
top15Points = playerSelectedPoints;
break;
case 16:
top16Points = playerSelectedPoints;
break;
case 30:
top30Points = playerSelectedPoints;
break;
case 31:
top31Points = playerSelectedPoints;
break;
case (playersTotal-14):
topDemotePoints = playerSelectedPoints;
break;
case (playersTotal-15):
topNonDemotePoints = playerSelectedPoints;
break;
else {
case 4:
top4Points = points;
break;
case 5:
top5Points = points;
break;
case 15:
top15Points = points;
break;
case 16:
top16Points = points;
break;
case 30:
top30Points = points;
break;
case 31:
top31Points = points;
break;
case (playersTotal-14):
topDemotePoints = points;
break;
case (playersTotal-15):
topNonDemotePoints = points;
break;
}
if (fightsStr == '-') {
fightsDone = 0;
playerCurrentParse = playerData;
else
challengesDone += fightsDone;
challengesLeft = 3*(playersTotal-1)-challengesDone;
scoreExpected = Math.floor(avgScore*3*(playersTotal-1));
var leagueScore = {
points: playerCurrentPoints,
avg: Math.round(avgScore*100)/100
localStorage.setItem('leagueScore', JSON.stringify(leagueScore));
}
maxDemotePoints = topNonDemotePoints;
textDemote = texts[lang].demote_holdzero;
else {
textDemote = texts[lang].demote_up;
else {
maxDemotePoints = topDemotePoints
textDemote = texts[lang].demote_holdzero;
else {
if (maxDemoteDiff == 0) {
else {
maxDemoteDisplay = nThousand(maxDemoteDiff);
}
textDemote = texts[lang].demote_down;
maxStagnatePoints = top15Points;
minTop15Points = maxStagnatePoints + 1;
textStagnate = texts[lang].stagnate_holdzero;
textTop15 = texts[lang].top15_up;
else {
textStagnate = texts[lang].stagnate_up;
textTop15 = texts[lang].top15_up;
else {
maxStagnatePoints = top16Points;
minTop15Points = top16Points;
textStagnate = texts[lang].stagnate_holdzero;
textTop15 = texts[lang].top15_hold;
else {
if (maxStagnateDiff == 0) {
else {
maxStagnateDisplay = nThousand(maxStagnateDiff);
minTop15Display = nThousand(maxStagnateDiff);
textStagnate = texts[lang].stagnate_down;
textTop15 = texts[lang].top15_hold;
minTop30Points = top30Points + 1;
if (minTop30Diff > 0) {
textTop30 = texts[lang].top30_up;
else {
minTop30Display = nThousand(minTop30Diff);
textTop30 = texts[lang].top30_hold;
else {
minTop30Points = top31Points;
if (minTop30Diff < 0) {
minTop30Display = nThousand(minTop30Diff);
textTop30 = texts[lang].top30_hold;
else {
textTop30 = texts[lang].top30_hold;
if (playerCurrentPos > 4) {
minTop4Points = top4Points + 1;
if (minTop4Diff > 0) {
textTop4 = texts[lang].top4_up;
else {
minTop4Display = nThousand(minTop4Diff);
textTop4 = texts[lang].top4_hold;
}
else {
minTop4Points = top5Points;
if (minTop4Diff > 0) {
textTop4 = texts[lang].top4_hold;
else {
minTop4Display = nThousand(minTop4Diff);
textTop4 = texts[lang].top4_hold;
if (league_tag == 9) {
$('div.league_end_in').append('<div class="scriptLeagueInfo">'
+ '<span class="averageScore"><img
src="https://image.flaticon.com/icons/png/512/1753/1753830.png" style="height: 15px;
width: 16px; margin-left: 2px; margin-bottom: 2px;">' +
nThousand(Math.round(avgScore*100)/100)
+ '<span class="possibleChallenges"><img
src="https://image.flaticon.com/icons/png/512/551/551227.png" style="height: 15px; width:
16px; margin-left: 6px; margin-bottom: 2px;">' + challengesPossible + '/' + challengesLeft
+ '<span class="minTop15"><img
src="https://upload.wikimedia.org/wikipedia/commons/c/cc/France_road_sign_B14_
%2815%29.svg" style="height: 15px; width: 16px; margin-left: 6px; margin-bottom: 2px;">' +
minTop15Display
+ '<span class="minTop30"><img
src="https://www.flaticon.com/premium-icon/icons/svg/2773/2773307.svg" style="height:
15px; width: 16px; margin-left: 6px; margin-bottom: 2px;">' + minTop30Display
+ '<span class="maxDemote"><img
src="https://image.flaticon.com/icons/png/512/892/892505.png" style="height: 15px; width:
16px; margin-left: 6px; margin-bottom: 2px;">' + maxDemoteDisplay
+ '</div>');
if (includeBoard == false) {
$('.minTop4').empty();
$('.minTop15').empty();
$('.minTop30').empty();
else if (league_tag == 1) {
$('div.league_end_in').append('<span class="scriptLeagueInfo">'
+ '<span class="averageScore"><img
src="https://image.flaticon.com/icons/png/512/1753/1753830.png" style="height: 15px;
width: 16px; margin-left: 2px; margin-bottom: 2px;"> ' +
nThousand(Math.round(avgScore*100)/100)
+ '<span class="possibleChallenges"><img
src="https://image.flaticon.com/icons/png/512/551/551227.png" style="height: 15px; width:
16px; margin-left: 7px; margin-bottom: 2px;"> ' + challengesPossible + '/' + challengesLeft
+ '<span class="maxStagnate"><img
src="https://i.postimg.cc/HnkyDtG3/icon-league-hold.png" style="margin-left: 7px; margin-
bottom: 2px;"> ' + maxStagnateDisplay
+ '<span class="minTop30"><img
src="https://www.flaticon.com/premium-icon/icons/svg/2773/2773307.svg" style="height:
15px; width: 16px; margin-left: 7px; margin-bottom: 2px;"> ' + minTop30Display
+ '</span>');
if (includeBoard == false) {
$('.minTop30').empty();
else {
$('div.league_end_in').append('<span class="scriptLeagueInfo">'
+ '<span class="averageScore"><img
src="https://image.flaticon.com/icons/png/512/1753/1753830.png" style="height: 15px;
width: 16px; margin-left: 2px; margin-bottom: 2px;"> ' +
nThousand(Math.round(avgScore*100)/100)
+ '<span class="scriptLeagueInfoTooltip averageScoreTooltip">' +
texts[lang].averageScore + nThousand(Math.round(avgScore*100)/100) + '<BR>' +
texts[lang].scoreExpected + nThousand(scoreExpected) + '</span></span>'
+ '<span class="possibleChallenges"><img
src="https://image.flaticon.com/icons/png/512/551/551227.png" style="height: 15px; width:
16px; margin-left: 6px; margin-bottom: 2px;"> ' + challengesPossible + '/' + challengesLeft
+ '<span class="minTop4"><img
src="https://www.flaticon.com/premium-icon/icons/svg/3840/3840753.svg" style="height:
15px; width: 16px; margin-left: 6px; margin-bottom: 2px;">' + minTop4Display
+ '<span class="maxStagnate"><img
src="https://i.postimg.cc/HnkyDtG3/icon-league-hold.png" style="height: 15px; width: 16px;
margin-left: 6px; margin-bottom: 2px;"> ' + maxStagnateDisplay
+ '<span class="minTop30"><img
src="https://www.flaticon.com/premium-icon/icons/svg/2773/2773307.svg" style="height:
15px; width: 16px; margin-left: 6px; margin-bottom: 2px;"> ' + minTop30Display
+ '<span class="maxDemote"><img
src="https://image.flaticon.com/icons/png/512/892/892505.png" style="height: 15px; width:
16px; margin-left: 6px; margin-bottom: 2px;"> ' + maxDemoteDisplay
+ '</span>');
if (includeBoard == false) {
$('.minTop4').empty();
$('.minTop30').empty();
}
}
//CSS
sheet.insertRule('.scriptLeagueInfo {'
+ 'float: right;}'
);
+ '.scriptLeagueInfo {'
+ 'margin-right: 3px;}}'
);
+ '.scriptLeagueInfo {'
+ 'margin-right: 350px;}}'
);
sheet.insertRule('.scriptLeagueInfoTooltip {'
+ 'z-index: 9;}'
);
sheet.insertRule('.scriptLeagueInfoTooltip::after {'
);
sheet.insertRule('.kobanWinningsTooltip {'
+ 'margin-left: -95px;}'
);
+ 'visibility: visible;}'
);
sheet.insertRule('.averageScoreTooltip {'
+ 'margin-left: -115px;}'
);
+ 'visibility: visible;}'
);
sheet.insertRule('.possibleChallengesTooltip {'
+ 'margin-left: -115px;}'
);
+ 'visibility: visible;}'
);
sheet.insertRule('.maxStagnateTooltip {'
+ 'margin-left: -115px;}'
);
+ 'visibility: visible;}'
);
sheet.insertRule('.minTop4Tooltip {'
+ 'margin-left: -115px;}'
);
+ 'visibility: visible;}'
);
sheet.insertRule('.minTop15Tooltip {'
+ 'margin-left: -115px;}'
);
+ 'visibility: visible;}'
);
sheet.insertRule('.minTop30Tooltip {'
+ 'margin-left: -111px;}'
);
sheet.insertRule('.minTop30:hover .minTop30Tooltip {'
+ 'visibility: visible;}'
);
sheet.insertRule('.minTop45Tooltip {'
+ 'margin-left: -111px;}'
);
+ 'visibility: visible;}'
);
sheet.insertRule('.maxDemoteTooltip {'
+ 'margin-left: -100px;}'
);
+ 'visibility: visible;}'
);
function removeBeatenOpponents() {
var board = document.getElementsByClassName("leadTable")[0];
if(!board)
return;
try {
opponents[i].style.display="none"
} catch(e) {}
function displayBeatenOpponents() {
if(!board)
return;
try {
opponents[i].style.display=""
} catch(e) {}
}
let hidden = loadSetting('hide_beaten');
$(".league_end_in").append('<button id="beaten_opponents"
class="blue_text_button"><span id="hide_beaten"></span></button>');
if (hidden == 1) {
removeBeatenOpponents();
$('#hide_beaten').html(texts[lang].display);
else {
$('#hide_beaten').html(texts[lang].hide);
button.addEventListener('click', function(){
if (hidden == 0) {
removeBeatenOpponents();
hidden = 1;
localStorage.setItem('HHS.hide_beaten', 1);
$('#hide_beaten').html(texts[lang].display);
else {
displayBeatenOpponents();
hidden = 0;
localStorage.setItem('HHS.hide_beaten', 0);
$('#hide_beaten').html(texts[lang].hide);
});
let sort_by = document.querySelectorAll('span[sort_by]');
sort.addEventListener('click', function(){
if (hidden == 1)
removeBeatenOpponents();
displayLeaguePlayersClass();
});
+ '#beaten_opponents {'
+ 'position: absolute;'
+ 'height: 26px;'
+ 'top: -39px;'
+ 'right: 519px;}}'
);
+ '#hide_beaten {'
+ 'position: relative;'
+ 'top: -5px;}}'
);
+ '#beaten_opponents {'
+ 'position: absolute;'
+ 'height: 26px;'
+ 'top: -10px;'
+ 'right: 700px;}}'
);
+ '#hide_beaten {'
+ 'position: relative;'
+ 'top: -5px;}}'
);
function displayLeaguePlayersClass() {
if (localStorage.getItem('newLeagueResults') == null) {
localStorage.removeItem('leagueResults');
localStorage.setItem('newLeagueResults', 1)
if (leaguePlayers != null) {
if (player != undefined) {
case 1:
playerData.find('.square-avatar-wrapper').append($('<img class="classLeague"
src="https://hh2.hh-content.com/caracs/hardcore.png">'));
break;
case 2:
playerData.find('.square-avatar-wrapper').append($('<img class="classLeague"
src="https://hh2.hh-content.com/caracs/charm.png">'));
break;
case 3:
playerData.find('.square-avatar-wrapper').append($('<img class="classLeague"
src="https://hh2.hh-content.com/caracs/knowhow.png">'));
break;
+ '.classLeague {'
);
);
displayLeaguePlayersClass();
/* ============
LEAGUE SIM
============ */
function moduleSim() {
var playerEgo;
var playerEgoStr;
var playerOriginEgo;
var playerTeamPower;
var playerDef;
var playerAtk;
var playerAtkStr;
var playerDef;
var playerClass;
var playerTeamElement;
var opponentEgo;
var opponentEgoStr;
var opponentOriginEgo;
var opponentDef;
var opponentDefStr;
var opponentAtk;
var opponentAtkStr;
var opponentClass;
var opponentTeamElement;
var matchRating;
function calculatePower() {
// INIT
else
playerTeamPower = +playerTeamPower;
playerEgo = heroLeaguesData.totalEgo;
playerOriginEgo = heroLeaguesData.totalEgo;
playerAtk = heroLeaguesData.damage;
playerDef = heroLeaguesData.defense;
playerTeamElement = Array();
playerTeamElement.push(heroLeaguesData.team.themeElements[i].type);
opponentEgo = playerLeaguesData.caracs.ego;
opponentOriginEgo = playerLeaguesData.caracs.ego;
opponentAtk = playerLeaguesData.caracs.damage;
opponentDef = playerLeaguesData.caracs.defense;
opponentTeamElement = Array();
opponentTeamElement.push(playerLeaguesData.team.themeElements[i].type);
var playerBonus = 0;
var opponentBonus = 0;
switch (opponentTeamElement[i]) {
case "fire":
if (playerTeamElement[j] == "water")
playerBonus += 1;
opponentBonus += 1;
break;
case "nature":
if (playerTeamElement[j] == "fire")
playerBonus += 1;
opponentBonus += 1;
break;
case "stone":
if (playerTeamElement[j] == "nature")
playerBonus += 1;
opponentBonus += 1;
break;
case "sun":
if (playerTeamElement[j] == "stone")
playerBonus += 1;
opponentBonus += 1;
break;
case "water":
if (playerTeamElement[j] == "sun")
playerBonus += 1;
opponentBonus += 1;
break;
}
}
let player = {
ego: playerEgo*(1+playerBonus*0.1),
originEgo: playerOriginEgo*(1+playerBonus*0.1),
atk: playerAtk*(1+playerBonus*0.1),
def: playerDef,
text: 'Player',
};
let opponent = {
ego: opponentEgo*(1+opponentBonus*0.1),
originEgo: opponentOriginEgo*(1+opponentBonus*0.1),
atk: opponentAtk*(1+opponentBonus*0.1),
def: opponentDef,
text: 'Opponent',
};
$('.matchRating').remove();
saveVictories();
calculatePower();
var opntName;
$('.leadTable').click(function() {
opntName=''
})
function waitOpnt() {
setTimeout(function() {
sessionStorage.setItem('opntName', opntName);
calculatePower();
else {
waitOpnt()
}, 50);
opntName = opntNameNew;
waitOpnt();
function saveVictories() {
if (time_results == null) {
time_results = date_end_league;
localStorage.setItem('leagueTime', time_results);
localStorage.setItem('leagueResults', null);
if (time_results == 1636023600) {
time_results = 1636027200
localStorage.setItem('leagueTime', time_results);
}
localStorage.setItem('oldLeagueResults', localStorage.getItem('leagueResults'));
localStorage.setItem('oldLeagueTime', localStorage.getItem('leagueTime'));
localStorage.setItem('oldLeaguePlayers', localStorage.getItem('leaguePlayers'));
localStorage.setItem('oldLeagueScore', localStorage.getItem('leagueScore'));
localStorage.setItem('oldLeagueUnknown', localStorage.getItem('leagueUnknown'));
localStorage.removeItem('leagueResults');
localStorage.setItem('leagueTime', date_end_league);
localStorage.removeItem('leagueScore');
localStorage.removeItem('leagueUnknown');
let nb_victories = 0;
let nb_defeats = 0;
if( ((result.text() == 'V') && (($('html')[0].lang === 'fr') || ($('html')[0].lang === 'it_IT'))) ||
(result.text() == 'W') || (result.text() == 'S') || (result.text() == '勝'))
++nb_victories;
if( (result.text() == 'D') || (result.text() == 'L') || (result.text() == 'P') || ((result.text() ==
'V') && ($('html')[0].lang === 'de_DE')) || (result.text() == '負'))
++nb_defeats;
data[player] = {
victories: nb_victories,
defeats: nb_defeats,
};
localStorage.setItem('leagueResults', JSON.stringify(data));
calculateVictories();
function calculateVictories() {
localStorage.setItem('leaguePlayers', nb_opponents);
let fightsPlayed = 0;
var played = 0;
if (players[i].className.indexOf('lead_table_default') != -1) {
if ($('.lead_table_default .result').length != 0)
played = parseInt($('.lead_table_default .won').length + $
('.lead_table_default .lost').length, 10);
else
else {
fightsPlayed += played;
let tot_victory = 0;
let tot_defeat = 0;
tot_victory += data[key].victories;
tot_defeat += data[key].defeats;
localStorage.setItem('leagueUnknown', nb_unknown);
$('span.possibleChallenges span.scriptLeagueInfoTooltip.possibleChallengesTooltip
span#leagueStats').empty();
$('span.scriptLeagueInfoTooltip.possibleChallengesTooltip').append('<span
id="leagueStats"><BR><BR><u>' + texts[lang].current_league + '</u>'
+ '</span>');
$('span.possibleChallengesMobile
span.scriptMobileLeagueInfoTooltip.possibleChallengesMobileTooltip
span#leagueStatsMobile').empty();
$('span.scriptMobileLeagueInfoTooltip.possibleChallengesMobileTooltip').append('<span
id="leagueStatsMobile"><BR><BR><u>' + texts[lang].current_league + '</u>'
+ '</span>');
let old_tot_victory = 0;
let old_tot_defeat = 0;
let old_points = old_score.points || 0;
old_tot_victory += old_data[old_key].victories;
old_tot_defeat += old_data[old_key].defeats;
if (localStorage.getItem('oldLeagueTime') != null) {
$('span.possibleChallenges span.scriptLeagueInfoTooltip.possibleChallengesTooltip
span#oldLeagueStats').empty();
$('span.scriptLeagueInfoTooltip.possibleChallengesTooltip').append('<span
id="oldLeagueStats"><BR>_______________________'
+ '<BR><BR>' + texts[lang].league_finished +
old_date_end_league
+ '</span>');
$('span.possibleChallengesMobile
span.scriptMobileLeagueInfoTooltip.possibleChallengesMobileTooltip
span#oldLeagueStatsMobile').empty();
$
('span.scriptMobileLeagueInfoTooltip.possibleChallengesMobileTooltip').append('<span
id="oldLeagueStatsMobile"><BR>_______________________'
+ '<BR><BR>' + texts[lang].league_finished +
old_date_end_league
+ '</span>');
//CSS
+ '.matchRating {'
+ 'text-align: center; '
+ 'text-shadow: 1px 1px 0 #000, -1px 1px 0 #000, -1px -1px 0 #000, 1px -1px 0
#000; '
+ 'font-size: 15px;}}'
);
+ '.matchRating {'
+ 'text-shadow: 1px 1px 0 #000, -1px 1px 0 #000, -1px -1px 0 #000, 1px -1px 0
#000; '
+ 'font-size: 18px;}}'
);
sheet.insertRule('.plus {'
+ 'color: #66CD00;}'
);
sheet.insertRule('.minus {'
+ 'color: #FF2F2F;}'
);
sheet.insertRule('.close {'
+ 'color: #FFA500;}'
);
}
//Battle simulation
let playerEgoCheck = 0;
let opponentEgoCheck = 0;
//crit.
console.log('Starting Egos adjusted for the case proc scenario (0 for you and 1 for the
opponent):');
function play_turn(cur) {
console.log('Round ' + (turns + 1) + ': ' + cur.text + ' hit! -' + Math.max(0, (cur.atk - o.def)));
//Log results
console.log('after Round ' + (turns + 1) + ': ' + o.text + ' ego: ' + o.ego);
//Simulate challenge
opponentEgoCheck = opponent.ego;
if (opponentEgoCheck <= 0)
player.ego = 0;
break;
play_turn(player);
if (opponent.ego <= 0) {
playerEgoCheck = player.ego;
if (playerEgoCheck <= 0)
console.log('Defeat! With 1 more critical hit for opponent, Player ego: ' +
playerEgoCheck);
opponent.ego = 0;
break;
}
play_turn(opponent);
let matchRatingClass;
matchRatingClass = 'close';
matchRatingClass = 'minus';
matchRatingClass = 'close';
matchRatingClass = 'plus';
pointsInt -= 1/10;
pointsInt += 1;
pointsInt = Math.floor(pointsInt);
return {
score: Math.floor(matchRating),
scoreStr: matchRatingStr,
scoreClass: matchRatingClass,
playerEgoCheck: playerEgoCheck,
points: pointsInt,
pointsStr: pointsStr
};
/* =========================================
========================================= */
function moduleChampions() {
+ '<span
class="mapArrowBack_flat_icn"></span></a><span>></span><a class="back" href="'
+ championsCallBack.location + '">'
+ championsCallBack.name + '<span
class="mapArrowBack_flat_icn"></span></a>');
sessionStorage.removeItem('championsCallBack');
let isSkipButtonClicked;
markMatchedPositions();
if ($('.page-champions').length) showAdditionalInformation();
showNumberOfTicketsWhileTeamResting();
page
.on('click', '.champions-bottom__confirm-team',
showNumberOfTicketsWhileTeamResting)
$('.page-club_champion')
.on('click', '.champions-bottom__confirm-team',
showNumberOfTicketsWhileTeamResting)
$(window).on('beforeunload', () => {
championsData = ($('.page-champions').length == 1) ?
JSON.parse(localStorage.getItem('championsData') || DEFAULT_CHAMPIONS_DATA) :
JSON.parse(localStorage.getItem('clubChampionsData') || DEFAULT_CHAMPIONS_DATA);
championsData.positions[personalKey] = positions;
championsData.attempts[personalKey] = attempts;
championsData.statistics[championData.champion.id] = statistics;
if ($('.page-champions').length) localStorage.setItem('championsData',
JSON.stringify(championsData));
});
if (response.positions) {
if (!positions) {
if (!statistics) {
statistics = Array(positionImages.length).fill(0);
attempts = 0;
positions = undefined;
else {
positions = response.positions;
attempts++;
else {
markMatchedPositions();
}
if (isSkipButtonClicked) {
showAdditionalInformation();
isSkipButtonClicked = false;
});
if (restTimer.is(':visible')) {
function showAdditionalInformation() {
positions = undefined;
if ($('#additionalInformation').is(':visible')) {
return;
if (positions) {
createCurrentPositionsInfo();
else if (statistics) {
createStatisticsInfo();
if (positions || statistics) {
configureInfoBox();
}
function markMatchedPositions() {
$('.girl-selection__girl-box').each(function(index) {
if (currentGirlsPose.next().size() === 0) {
if (positions2) {
if (currentGirlsPose.attr('src').indexOf(preparePositionImage(positions2[index %
positions2.length])) >= 0) {
currentGirlsPose.next().removeClass('empty');
currentGirlsPose.next().addClass('green-tick-icon');
currentGirlsPose.next().css('filter', 'none');
currentGirlsPose.next().addClass('green-tick-icon empty');
currentGirlsPose.next().css('filter', 'hue-rotate(-45deg)');
else {
currentGirlsPose.next().removeClass('green-tick-icon');
else if (statistics) {
currentGirlsPose.next().css({'filter': 'invert'});
currentGirlsPose.next().css('filter', 'hue-rotate(-45deg)');
else {
currentGirlsPose.next().removeClass('green-tick-icon');
});
function showNumberOfTicketsWhileTeamResting() {
if ($('.champions-bottom__ticket-amount').is(':visible') == false) {
$('.champions-bottom__rest').css({'width': '280px'})
function preparePositionImage(positionID) {
function createCurrentPositionsInfo() {
positions.forEach((e) => {
positionsBox += '<img style="height: 48px; width: 48px; cursor: pointer;" src="' +
preparePositionImage(e) + '" hh_title="' + GT.figures[e]+ '">';
});
$('.champions-over__champion-wrapper').append(positionsBox);
$('#additionalInformation #ascrail2000-hr').remove();
function createStatisticsInfo() {
positionList.forEach((p) => {
});
$('.champions-over__champion-wrapper').append(statisticsBox);
$('.champions-over__champion-wrapper').find('.scroll-area > div').css({'width':
positionList.length * 52 + 'px'});
if (positionList.length > 4) {
if (is_mobile_size()) {
$('.champions-over__champion-wrapper').find('.scroll-area').css({'padding-bottom':
'10px', 'margin-bottom': '-5px'});
else {
$('.champions-over__champion-wrapper').find('.scroll-area').css({'padding-bottom':
'', 'margin-bottom': '5px'});
$('.champions-over__champion-wrapper').find('.scroll-area').niceScroll().resize();
$('#additionalInformation #ascrail2000-hr').remove();
function configureInfoBox() {
$(e.currentTarget).next().toggle('slow');
$(e.currentTarget).children().toggle('fast');
}).draggable({
cursor: 'move',
start: function () {
$(this).css({'right': ''});
},
ui.position.left /= FullSize.scale;
},
config.top = Math.round(ui.position.top);
+ '</div></a>');
if (config.visible == false) {
$('#additionalInformation .eye').children().toggle();
$('#additionalInformation .eye').next().toggle();
sheet.insertRule('.champions-bottom__ticket-amount {'
+ 'width: 145px;}'
);
sheet.insertRule('.champions-bottom__ticket-amount.right {'
);
}
/* =======
LINKS
======= */
function moduleLinks() {
// is localstorage available?
function lsTest() {
try {
localStorage.setItem('test', 'test');
localStorage.removeItem('test');
return true;
} catch(e) {
return false;
// verify localstorage
pop();
setInterval(function(){contests();}, 1000);
//setInterval(function(){champions();}, 1000);
champions();
setInterval(function(){market();}, 1000);
booster();
function calculateTime(deadline) {
return convertToTimeFormat(remaining);
function convertToTimeFormat(remainingTime) {
remS = 0;
if (remD > 0)
return remD + texts[lang].day + " " + remH + texts[lang].hour + " " + remM +
texts[lang].minute + " ";
if (remS > 9)
else
else
function convertToTimeFormatMinutes(remainingTime) {
remM = 0;
remS = 0;
function parseTime(remainingTimeStr) {
scriptTimers();
+ '<a href="/shop.html?type=booster">'
+ '<span id="scriptBoosterTimer"
rel="booster_count_txt"></span>'
+ '</a></div></div></div>');
if (localStorage.getItem("LeagueExists") == 1)
+ '<span class="league_icn">'
+ '<a href="/tower-of-fame.html">'
+ '<span id="scriptLeagueAttempts">0</span>/<span
rel="max">15</span>'
+ '<span id="scriptLeagueTimer" rel="league_count_txt"
timeforsinglepoint="2100" timeonload="24"></span>'
+ '</a></div></div></div>');
+ '<span class="season_icn">'
+ '<a href="/season-arena.html">'
+ '<span id="scriptSeasonAttempts">0</span>/<span
rel="max">10</span>'
+ '</a></div></div></div>');
if ($('#hh_comix').length == 0)
+ '<span class="pantheon_icn">'
+ '<a href="/pantheon.html">'
+ '<div id="worship_bar"
class="tier_bar_pantheon"></div>'
+ '<span id="scriptPantheonAttempts">0</span>/<span
rel="max">10</span>'
+ '<span id="scriptPantheonTimer"
rel="pantheon_count_txt" timeforsinglepoint="8640"></span>'
+ '</a></div></div></div>');
if (localStorage.getItem("nb_Pop") > 0)
+ '<a href="/activities.html?tab=pop">'
+ '<span id="scriptPoPTimer"
rel="pop_count_txt"></span>'
+ '</a></div></div></div>');
function questTitle(){
$('#breadcrumbs').css('z-index', '99');
$('#breadcrumbs').css('top', '63px');
function scriptTimers(){
setInterval(function(){leagueBattles();
seasonBattles();
popTimer();
boosterTimer();
questInfo();
trollTimer();
pantheonBattles();
}, 1000);
function questInfo(){
if (quest_link.includes('quest') == false)
quest_link = "/champions-help.html";
+ '<span rel="count_txt"
timeforsinglepoint="450" timeonload="440">'
+ '</span>'
+ '<div rel="count_txt_mobile"
timeforsinglepoint="450" timeonload="440">'
+ '</div>'
+ '</a>');
else
function trollTimer(){
$('#trollTimer').html(convertToTimeFormat(remaining_troll_time));
else
function pop(){
var popTime = 0;
var popRemainingTime = 0;
var popId = 0;
if (!className.includes('greyed')) {
popList.push(popAll[k]);
$('div.pop_thumb_container:nth-child(3)').after($('div.pop_thumb_container:nth-
child(' + (k+1) + ')'));
localStorage.setItem("nb_Pop", nb_Pop);
update();
function update() {
if (popList[j].className.includes('pop_thumb_selected'))
popId = (j+1);
if (popList[j].attributes[2].value == "pending_reward") {
popDate = current_date_sec;
popTime = 0;
else {
}
let button = document.querySelector('#pop_info .pop_central_part.dark_subpanel_box
button.blue_button_L');
button.addEventListener('click', function(){
popTime = popRemainingTime;
});
displayClassGirl();
function displayClassGirl() {
if (girls[m].attributes.girl != undefined) {
switch (girl_class) {
case 1:
break;
case 2:
break;
case 3:
break;
sheet.insertRule('.classGirl {'
+ 'position: relative;'
+ 'top: -98px;'
+ 'left: 25px;'
+ 'border: none;}'
);
button2.addEventListener('click', function(){
displayClassGirl();
});
}
function popTimer(){
var time_remaining = 0;
if (nb_Pop > 0) {
pop_can_start = true;
else {
popDate.push(popDate_i);
popTime.push(popTime_i);
if (popDate_i == 0)
if (popDateMin == Infinity)
popDateMin = current_date_sec;
pop_percent = Math.min(100,
((popTime[index]-(popDate[index]-current_date_sec))/popTime[index])*100);
if (time_remaining > 0) {
$('.tier_bar_pop').css('background-image', 'linear-gradient(90deg,#780049,#c80053)');
if (pop_can_start == true)
$('#scriptPoPTimer').css('color', 'orange');
else
$('#scriptPoPTimer').css('color', '#8ec3ff');
else {
$('#popTool').css('display', 'none');
function booster(){
var i = 0;
if ($booster[0].attributes.rarity.value != "mythic") {
boosters_date[i] = time;
i++;
})
var date_min;
if (boosters_date.length > 0)
date_min = Math.min(...boosters_date);
else
date_min = current_date_sec;
localStorage.setItem("booster_date", date_min);
button.addEventListener('click', function(){
localStorage.setItem("booster_date", boosterDate);
}
});
function boosterTimer(){
$('.tier_bar_booster').css('background-image', 'linear-
gradient(90deg,#780049,#c80053)');
else {
$('#scriptBoosterTimer').empty();
$('#boosterTool').css('display', 'none');
}
function leagueBattles(){
$('#scriptLeagueAttempts').text(attempts);
$('.tier_bar_league').css('background-image', 'linear-
gradient(90deg,#780049,#c80053)');
else {
$('#scriptLeagueTimer').empty();
$('#leagueTool').html("<span id=league_title>" + texts[lang].league + "<BR></span>" +
texts[lang].full);
function leagueInfo(){
setInterval(function(){
remaining_next_battle = remaining_full_time%2100;
}, 1000);
function seasonBattles(){
$('#scriptSeasonAttempts').text(all_kisses);
$('.tier_bar_season').css('background-image', 'linear-
gradient(90deg,#780049,#c80053)');
else {
$('#scriptSeasonTimer').empty();
function pantheonBattles(){
$('#scriptPantheonAttempts').text(all_worships);
$('.tier_bar_pantheon').css('background-image', 'linear-
gradient(90deg,#780049,#c80053)');
else {
$('#scriptPantheonTimer').empty();
$('#pantheonTool').html("<span id=pantheon_title>" + texts[lang].pantheon +
"<BR></span>" + texts[lang].full);
function pachinko(){
localStorage.setItem("pachinkoTime", pachinkoTime);
button.addEventListener('click', function(){
localStorage.setItem("pachinkoTime", pachinkoTime);
});
mutations.forEach(function(mutation) {
if ($('.playing-zone')[0].attributes[1].value != "great")
return;
button.addEventListener('click', function(){
localStorage.setItem("pachinkoTime", pachinkoTime);
});
})
})
observer.observe($('.playing-zone')[0], {
childList: false
, subtree: false
, attributes: true
})
function market(){
localStorage.setItem("marketTime", marketTime);
function champions(){
if (CurrentPage == "/champions-map.html") {
/*if (timer != 0) {
}*/
HHTimers.thresholdTenSec = 1000;
HHTimers.thresholdSec = 999;
HHTimers.updateTimer("minute");
HHTimers.updateTimer("tenSeconds");
HHTimers.timerMapping.minute.threshold = 6e4;
}
if (time_min_champions == time_now + 15*60 + 1)
localStorage.setItem("championsTime", time_now*1000);
else
localStorage.setItem("championsTime", time_min_champions*1000);
else {
}, 1000);
localStorage.setItem("championsTime", current_timer*1000);
if ($('champions-bottom__start-battle').length > 0) {
button.addEventListener('click', function(){
localStorage.setItem("championsTime", champion_timer);
});
}
function clubChampion(){
if (CurrentPage == "/club-champion.html") {
localStorage.setItem("clubChampionTime", date_club_champion*1000);
$('.champions-bottom__rest').append('<span timer="' +
date_club_champion + '" property="teamRest" rel="timer" style="color: #8ec3ff;">' +
calculateTime(date_club_champion*1000) + '</span>');
}, 1000);
if ($('button.champions-bottom__start-battle').length > 0) {
button.addEventListener('click', function(){
localStorage.setItem("clubChampionTime", club_champion_timer);
});
localStorage.setItem("clubChampionTime", date_club_champion*1000);
setInterval(function(){$('.club_champions_buttons_container .finish_in_bar .text
span').remove();
$
('.club_champions_buttons_container .finish_in_bar .text').append('<span>' +
calculateTime(date_club_champion*1000) + '</span>');
}, 1000);
function contests() {
$
('.contest.is_legendary .contest_header.in_progress.contest_header_active .personal_rewards
.hh_bar.contest_timer .text > span').remove();
$
('.contest.is_legendary .contest_header.in_progress.contest_header_active .personal_rewards
.hh_bar.contest_timer .text').append('<span>' + calculateTime(end_legendary_contest_date) +
'</span>');
$
('.contest .contest_header.in_progress .personal_rewards .hh_bar.contest_timer .text').appen
d('<span>' + calculateTime(end_regular_contest_date) + '</span>');
function home() {
$('.champion-timer').remove();
$('#champion-timer').remove();
champions.css('height', 'auto');
champions.append('<BR><span id="scriptChampionsTimer">' +
calculateTime(championsTime) + '</span>');
}
+ '<span class="townForward_flat_icn"></span></a>');
if ($('a[href$="tower-of-fame.html"]').length === 0)
localStorage.setItem("LeagueExists", 0);
else
localStorage.setItem("LeagueExists", 1);
club.append('<BR><span id="scriptClubChampionTimer">' +
calculateTime(clubChampionTime) + '</span>');
setInterval(function(){$('#scriptMarketTimer').text(calculateTime(marketTime));
$('#scriptPachinkoTimer').text(calculateTime(pachinkoTime));
$('#scriptChampionsTimer').text(calculateTime(championsTime));
$('#missionsTimer1').text(calculateTime(mission_remaining_date));
$('#missionsTimer2').text(calculateTime(mission_remaining_date));
$('#scriptClubChampionTimer').text(calculateTime(clubChampionTime));
}, 1000);
//CSS
+ 'overflow:hidden;'
+ 'display: block;'
+ 'margin-top: -5px;'
+ 'color: gray;}'
);
+ '.booster_timer {'
+ 'z-index: 4; '
+ 'text-align: center;}}'
);
+ '.booster_timer {'
+ 'z-index: 4; '
+ 'text-align: center;}}'
);
sheet.insertRule('.booster_timer a {'
+ 'text-decoration: none;}'
);
+ '#BoosterTimer {'
+ 'left: 20px;}'
);
+ '#BoosterTimer {'
+ 'left: 20px;}'
);
);
sheet.insertRule('#BoosterTimer a {'
+ 'text-decoration: none;}'
);
);
sheet.insertRule ('#scriptBoosterTimer {'
+ 'color: #8ec3ff;}'
);
sheet.insertRule('#booster_bar {'
);
sheet.insertRule('.boosterTooltip {'
+ 'margin-left: -140px;}'
);
+ 'z-index:99; '
+ 'visibility: visible;}'
);
+ '.league_counter {'
+ 'text-align: center;}}'
);
+ '.league_counter {'
+ 'z-index: 4; '
+ 'text-align: center;}}'
);
sheet.insertRule('.league_counter a {'
+ 'text-decoration: none;}'
);
+ '#LeagueTimer {'
+ 'left: 6px;}'
);
+ '#LeagueTimer {'
+ 'left: -5px;}'
);
);
sheet.insertRule('#LeagueTimer a {'
+ 'text-decoration: none;}'
);
);
+ 'color: #8ec3ff;}'
);
sheet.insertRule('#league_bar {'
);
sheet.insertRule('.league_icn{'
+ 'display:block;'
+ 'width:29px;'
+ 'height:31px;'
+ 'background-image:url(https://hh2.hh-content.com/league_points.png);'
+ 'background-size:25px;'
+ 'background-position:center;'
+ 'background-repeat:no-repeat;'
+ 'margin:0;'
+ 'padding:0;'
+ 'position:absolute;'
+ 'z-index:36}');
sheet.insertRule('.leagueTooltip {'
+ 'margin-left: -90px;}'
);
+ 'visibility: visible;}'
);
+ 'visibility: visible;}'
);
sheet.insertRule('.league_icn:hover #league_time_remaining {'
+ 'visibility: visible;}'
);
+ '.scriptSeasonInfo {'
+ 'z-index: 4; '
+ 'text-align: center;}}'
);
+ '.scriptSeasonInfo {'
+ 'text-align: center;}}'
);
sheet.insertRule('.scriptSeasonInfo a {'
+ 'text-decoration: none;}'
);
+ '#FightSeason {'
+ 'left: -35px;}'
);
+ 'left: -25px;}'
);
);
sheet.insertRule('#FightSeason a {'
+ 'text-decoration: none;}'
);
);
+ 'color: #8ec3ff;}'
);
sheet.insertRule('#kisses_bar {'
);
sheet.insertRule('.season_icn{'
+ 'display:block;'
+ 'width:29px;'
+ 'height:31px;'
+
'background-image:url(https://hh2.hh-content.com/pictures/design/ic_kiss.png);'
+ 'background-size:25px;'
+ 'background-position:center;'
+ 'background-repeat:no-repeat;'
+ 'margin:0;'
+ 'padding:0;'
+ 'position:absolute;'
+ 'z-index: 36}');
sheet.insertRule('.seasonTooltip {'
+ 'margin-left: -90px;}'
);
);
+ 'visibility: visible;}'
);
+ 'visibility: visible;}'
);
+ '.scriptPantheonInfo {'
+ 'z-index: 4; '
+ 'text-align: center;}}'
);
+ '.scriptPantheonInfo {'
+ 'z-index: 4; '
+ 'text-align: center;}}'
);
sheet.insertRule('.scriptPantheonInfo a {'
+ 'text-decoration: none;}'
);
+ '#FightPantheon {'
+ 'left: 345px;}'
);
+ '#FightPantheon {'
+ 'left: 290px;}'
);
sheet.insertRule('#FightPantheon a {'
+ 'text-decoration: none;}'
);
);
);
sheet.insertRule('#worship_bar {'
);
sheet.insertRule('.pantheon_icn{'
+ 'display:block;'
+ 'width:29px;'
+ 'height:31px;'
+
'background-image:url(https://hh.hh-content.com/pictures/design/ic_worship.svg);'
+ 'background-size:25px;'
+ 'background-position:center;'
+ 'background-repeat:no-repeat;'
+ 'margin:0;'
+ 'padding:0;'
+ 'position:absolute;'
+ 'z-index: 36}');
sheet.insertRule('.pantheonTooltip {'
+ 'margin-left: -90px;}'
);
+ 'visibility: visible;}'
);
+ 'visibility: visible;}'
);
+ 'visibility: visible;}'
);
+ '.pop_timer {'
+ 'z-index: 4; '
+ 'text-align: center;}}'
);
+ '.pop_timer {'
+ 'z-index: 4; '
+ 'text-align: center;}}'
);
sheet.insertRule('.pop_timer a {'
+ 'text-decoration: none;}'
);
+ '#PoPTimer {'
+ 'left: 106px;}'
);
+ '#PoPTimer {'
+ 'left: 109px;}'
);
);
sheet.insertRule('#PoPTimer a {'
+ 'text-decoration: none;}'
);
sheet.insertRule('#PoPTimer a:hover {'
);
+ 'font-size: 11px;}'
);
sheet.insertRule('#pop_bar {'
);
sheet.insertRule('.popTooltip {'
+ 'margin-left: -120px;}'
);
+ 'z-index:99; '
+ 'visibility: visible;}'
);
sheet.insertRule('.infoTooltip {'
+ 'z-index: 100;}'
);
sheet.insertRule('.infoTooltip::after {'
);
sheet.insertRule('@media only screen and (min-width: 1026px) {'
+ 'margin-left: 3px;}}'
);
+ 'display: none;}}'
);
+ 'display: none;}}'
);
+ 'position: relative;'
+ 'left: -3px;'
+ 'font-size: 10px;'
+ 'font-weight: 400;'
+ 'letter-spacing: .1px;'
+ 'color: #8ec3ff;'
+ 'font-size: 10px;'
+ 'font-weight: 400;'
+ 'letter-spacing: .1px;'
+ 'color: #8ec3ff;'
);
+ 'display: block;}'
);
+ 'width: 40%;}'
);
+ 'width: 30%;}'
);
+ 'a[href$="pachinko.html"]>.position>span {'
+ 'width: 140px;}}'
);
+ 'a[href$="pachinko.html"]>.position>span {'
+ 'width: 110px;}}'
);
+ 'a[href$="shop.html"]>.position>span {'
+ 'width: 130px;}}'
);
+ 'a[href$="shop.html"]>.position>span {'
+ 'width: 100px;}}'
);
+ 'a[rel="clubs"]>.position>span {'
+ 'width: 130px;}}'
);
+ 'a[rel="clubs"]>.position>span {'
+ 'width: 100px;}}'
);
+ 'top: -20px;}}'
);
+ 'top: -15px;}}'
);
+ '.champions-top__inner-wrapper {'
+ 'top: 4px;}}'
);
+ '.section__battle-header {'
+ 'top: 15px;}}'
);
+ '.section__battle-header {'
+ 'top: 25px;}}'
);
+ '.special-ability-pending {'
);
+ '.special-ability-pending {'
);
+ '.trollPts_icn {'
+ 'position: absolute;'
+ 'top: 9px;'
+ 'left: 10px;'
+ 'z-index: 99;'
+ 'display: block;'
+ 'width: 29px;'
+ 'height: 31px;'
+ 'background-image: url(https://hh.hh-content.com/design/ic_BattlePts.png);'
+ 'background-size: 25px;'
+ 'background-position: center;'
+ 'background-repeat: no-repeat;'
+ 'margin: 0;'
+ 'padding: 0;}'
);
+ '.trollPts_icn {'
+ 'position: absolute;'
+ 'top: 28px;'
+ 'left: 10px;'
+ 'z-index: 99;'
+ 'display: block;'
+ 'width: 30px;'
+ 'height: 33px;'
+ 'background-image: url(https://hh.hh-content.com/design/ic_BattlePts.png);'
+ 'background-size: 25px;'
+ 'background-position: center;'
+ 'background-repeat: no-repeat;'
+ 'margin: 0;'
+ 'padding: 0;}'
);
);
+ 'visibility: visible;}'
);
+ 'visibility: visible;}'
);
+ 'visibility: visible;}'
);
+ '.energy_icn {'
+ 'position: absolute;'
+ 'top: 9px;'
+ 'left: 21px;'
+ 'z-index: 36;'
+ 'display: block;'
+ 'width: 21px;'
+ 'height: 30px;'
+ 'background-image: url(https://hh2.hh-content.com/design/ic_Energy.png);'
+ 'background-size: 21px;'
+ 'background-position: center;'
+ 'background-repeat: no-repeat;'
+ 'margin: 0;'
+ 'padding: 0;}'
);
+ '.energy_icn {'
+ 'position: absolute;'
+ 'top: 28px;'
+ 'left: 13px;'
+ 'z-index: 36;'
+ 'display: block;'
+ 'width: 19px;'
+ 'height: 31px;'
+ 'background-image: url(https://hh2.hh-content.com/design/ic_Energy.png);'
+ 'background-size: 19px;'
+ 'background-position: center;'
+ 'background-repeat: no-repeat;'
+ 'margin: 0;'
+ 'padding: 0;}'
);
sheet.insertRule('#canvas_quest_energy .energyTooltip {'
+ 'margin-left: -75px;}'
);
+ 'visibility: visible;}'
);
+ 'visibility: visible;}'
);
+ 'visibility: visible;}'
);
);
sheet.insertRule('@media only screen and (max-width: 1025px) {'
);
);
);
);
+ 'position: relative;'
);
sheet.insertRule('@media only screen and (max-width: 1025px) {'
+ 'position: relative;'
);
);
+ 'position: absolute;'
+ 'width:30px;'
+ 'height:30px;'
+ 'top:11px;'
+ 'left: 61px;}}'
);
+ 'position: absolute;'
+ 'top:46px;'
+ 'left: 154px;}}'
);
+ 'position: absolute;'
+ 'width:40px;'
+ 'height:40px;'
+ 'background-size:19px;}}'
);
+ 'margin-top:10px;}}'
);
+ 'height:400px !important;}}'
);
+ 'margin-top:-15px !important;}}'
);
);
sheet.insertRule('@media only screen and (max-width: 1025px) {'
+ '#homepage>a[rel=sex-god-path]>.position {'
);
+ '#homepage>a[rel=sex-god-path]>.position>span {'
+ 'width: 180px;}}'
);
/* ============
SEASON SIM
============ */
function moduleSeasonSim() {
var playerEgo;
var playerOriginEgo;
var playerAtk;
var playerDef;
var playerClass;
var playerTeamPower;
var playerTeamElement;
var opponentEgo;
var opponentAtk;
var opponentDef;
var opponentClass;
var opponentTeamElement
var matchRating;
var turns;
function calculateSeasonPower(idOpponent) {
// INIT
else
playerTeamPower = +playerTeamPower;
//playerAtk = Math.round(Hero.infos.caracs.primary_carac_amount +
playerTeamPower*0.25);
playerTeamElement = Array();
playerTeamElement.push(teamElement);
opponentTeamElement = Array();
opponentTeamElement.push(teamElement);
var playerBonus = 0;
var opponentBonus = 0;
switch (opponentTeamElement[i]) {
case "fire":
if (playerTeamElement[j] == "water")
playerBonus += 1;
opponentBonus += 1;
break;
case "nature":
if (playerTeamElement[j] == "fire")
playerBonus += 1;
opponentBonus += 1;
break;
case "stone":
if (playerTeamElement[j] == "nature")
playerBonus += 1;
opponentBonus += 1;
break;
case "sun":
if (playerTeamElement[j] == "stone")
playerBonus += 1;
break;
case "water":
if (playerTeamElement[j] == "sun")
playerBonus += 1;
opponentBonus += 1;
break;
let player = {
ego: playerEgo*(1+playerBonus*0.1),
originEgo: playerOriginEgo*(1+playerBonus*0.1),
atk: playerAtk*(1+playerBonus*0.1),
def: playerDef,
text: 'Player',
};
let opponent = {
ego: opponentEgo*(1+opponentBonus*0.1),
originEgo: opponentOriginEgo*(1+opponentBonus*0.1),
atk: opponentAtk*(1+opponentBonus*0.1),
def: opponentDef,
text: 'Opponent',
};
console.log(simu);
calculateSeasonPower(1);
calculateSeasonPower(2);
calculateSeasonPower(3);
button.addEventListener('click', function(){
setTimeout(function(){
calculateSeasonPower(1);
calculateSeasonPower(2);
calculateSeasonPower(3);
}, 5000);
});
//CSS
sheet.insertRule('.matchRating {'
+ 'text-shadow: 1px 1px 0 #000, -1px 1px 0 #000, -1px -1px 0 #000, 1px -1px 0
#000; '
+ 'font-size: 15px;}'
);
sheet.insertRule('.plus {'
+ 'color: #66CD00;}'
);
sheet.insertRule('.minus {'
+ 'color: #FF2F2F;}'
);
sheet.insertRule('.close {'
+ 'color: #FFA500;}'
);
sheet.insertRule('#powerLevelScouter {'
);
+ 'margin-left: -15px;}}'
);
/* ==============
SEASON STATS
============== */
function moduleSeasonStats() {
if (seasonDateEnd.hour == 0) {
seasonDateEnd.day = 1;
seasonDateEnd.month = currentMonth;
else
if (seasonDateEnd.month == 0)
seasonDateEnd.year += 1;
localStorage.setItem('SeasonDateEnd', JSON.stringify(seasonDateEnd));
localStorage.setItem('oldSeasonStats', localStorage.getItem('SeasonStats'));
localStorage.removeItem('SeasonStats');
seasonDateEnd.day = 1;
localStorage.setItem('SeasonDateEnd', JSON.stringify(seasonDateEnd));
localStorage.setItem('oldSeasonStats', localStorage.getItem('SeasonStats'));
localStorage.removeItem('SeasonStats');
seasonDateEnd.day = 1;
localStorage.setItem('SeasonDateEnd', JSON.stringify(seasonDateEnd));
localStorage.setItem('oldSeasonStats', localStorage.getItem('SeasonStats'));
localStorage.removeItem('SeasonStats');
seasonDateEnd.day = 1;
localStorage.setItem('SeasonDateEnd', JSON.stringify(seasonDateEnd));
localStorage.setItem('oldSeasonStats', localStorage.getItem('SeasonStats'));
localStorage.removeItem('SeasonStats');
seasonDateEnd.day = 1;
localStorage.setItem('SeasonDateEnd', JSON.stringify(seasonDateEnd));
localStorage.setItem('SeasonStats', JSON.stringify(seasonStats));
if (CurrentPage.indexOf('season-battle') != -1) {
mutations.forEach(function(mutation) {
if (($('#hh_hentai').attr('class') || $('#hh_gay').attr('class') || $
('#hh_comix').attr('class')).includes('battle')) {
while (i<1) {
i++;
if (fight_result == "victory_points") {
if (fight_mojo.indexOf('-') == -1) {
fights +=1;
victories += 1;
won_mojo_avg = Math.floor(won_mojo/victories*100)/100;
mojo_avg = Math.floor((won_mojo-lost_mojo)/fights*100)/100;
else {
fights +=1;
losses += 1;
lost_mojo_avg = Math.floor(lost_mojo/losses*100)/100;
mojo_avg = Math.floor((won_mojo-lost_mojo)/fights*100)/100;
seasonStats.fights = fights;
seasonStats.victories = victories;
seasonStats.won_mojo = won_mojo;
seasonStats.won_mojo_avg = won_mojo_avg;
seasonStats.losses = losses;
seasonStats.lost_mojo = lost_mojo;
seasonStats.lost_mojo_avg = lost_mojo_avg;
seasonStats.mojo_avg = mojo_avg;
localStorage.setItem('SeasonStats', JSON.stringify(seasonStats));
observer.disconnect()
})
})
childList: true
, subtree: true
, attributes: false
, characterData: false
})
if (CurrentPage.indexOf('season-arena') == -1) {
+ '</span>');
if (CurrentPage.indexOf('season-arena') != -1) {
+ '<span
class="scriptSeasonStatsTooltipArena">' + texts[lang].fights + ' : ' + fights
+ '<BR>' + texts[lang].victories +
' : ' + victories
+ '<BR><BR>' +
texts[lang].won_mojo + ' : ' + won_mojo
+ '<BR>' + texts[lang].lost_mojo
+ ' : ' + lost_mojo
+ '<BR><BR>' +
texts[lang].won_mojo_avg + ' : ' + won_mojo_avg
+ '<BR>' +
texts[lang].lost_mojo_avg + ' : ' + lost_mojo_avg
+ '<BR>' + texts[lang].mojo_avg
+ ' : ' + mojo_avg + '</span>'
+ '</span>');
}
//CSS
sheet.insertRule('.scriptSeasonStatsTooltip {'
+ 'z-index: 100;}'
);
sheet.insertRule('.scriptSeasonStatsTooltip::after {'
);
+ 'visibility: visible;}'
);
sheet.insertRule('.scriptSeasonStatsTooltipArena {'
+ 'z-index: 100;}'
);
sheet.insertRule('.scriptSeasonStatsTooltipArena::after {'
);
+ 'visibility: visible;}'
);
/* ==================================
================================== */
function modulePachinkoNames() {
if ($('#pachinko_whole').length){
if (typeof(jsonMapData) == "undefined"){
return
if (text.find('.HHMI-INFO').length != 0){
return
} else if ($('#playzone-replace-info').find('.girl_shards').length) {
const id = raw.match(/\d+/g);
if (id == 145462484)
var element;
if (window.HH_UNIVERSE == 'gay') {
else {
element = name;
if (girls != ""){
} else {
girls += element;
text = text.find('.game-rewards');
text.css("fontSize", "11px");
text.css("line-height", "13px");
text.css("margin-top", "61px");
text.css("height", "52px");
text.css("width", "410px");
text.css("position", "relative");
text.css("top", "-96px");
text.css("left", "-60px");
text.css("text-align", "center");
text.css("overflow-y", "scroll");
return
}*/
text = text.find('.game-rewards');
text.css("fontSize", "11px");
text.css("line-height", "15px");
text.css("margin-top", "55px");
text = text.find('.HHMI-INFO');
text.css("height", "60px");
text.css("width", "390px");
text.css("position", "relative");
text.css("top", "-90px");
text.css("left", "-55px");
text.css("text-align", "center");
else {
text = text.find('.game-rewards');
text.css("fontSize", "11.5px");
text.css("margin-top", "55px");
text = text.find('.HHMI-INFO');
text.css("width", "390px");
text.css("position", "relative");
text.css("top", "-85px");
text.css("left", "-55px");
text.css("text-align", "center");
};
observer.observe(targetNode, config);
//CSS
sheet.insertRule('a {'
+ 'text-decoration: none;'
+ 'color: #fa8072;}'
);
);
);
);
if ($('#hh_comix').length == 1) {
+ 'position: relative;'
);
else {
+ 'position: relative;'
);
}
);
);
/* ====================
BATTLE SIMULATION
==================== */
function moduleBattleSim() {
var playerEgo;
var playerEgoStr;
var playerOriginEgo;
var playerEgoCheck;
var playerAtk;
var playerAtkStr;
var playerDef;
var playerClass;
var playerTeamElement;
var opponentEgo;
var opponentOriginEgo;
var opponentEgoStr;
var opponentAtk;
var opponentAtkStr;
var opponentDef;
var opponentDefStr;
var opponentClass;
var opponentTeamElement;
var matchRating;
function calculatePower() {
// INIT
else
playerTeamPower = +playerTeamPower;
//playerAtk = Math.round(Hero.infos.caracs.primary_carac_amount +
playerTeamPower*0.25);
playerDef = Math.round(Hero.infos.caracs.secondary_caracs_sum/4 +
playerTeamPower*0.12);
playerTeamElement = Array();
playerTeamElement.push(teamElement);
opponentTeamElement = Array();
opponentTeamElement.push(teamElement);
var playerBonus = 0;
var opponentBonus = 0;
switch (opponentTeamElement[i]) {
case "fire":
if (playerTeamElement[j] == "water")
playerBonus += 1;
opponentBonus += 1;
break;
case "nature":
if (playerTeamElement[j] == "fire")
playerBonus += 1;
opponentBonus += 1;
break;
case "stone":
if (playerTeamElement[j] == "nature")
playerBonus += 1;
opponentBonus += 1;
break;
case "sun":
if (playerTeamElement[j] == "stone")
playerBonus += 1;
opponentBonus += 1;
break;
case "water":
if (playerTeamElement[j] == "sun")
playerBonus += 1;
opponentBonus += 1;
break;
let player = {
ego: playerEgo*(1+playerBonus*0.1),
originEgo: playerOriginEgo*(1+playerBonus*0.1),
atk: playerAtk*(1+playerBonus*0.1),
def: playerDef,
text: 'Player',
};
let opponent = {
ego: opponentEgo*(1+opponentBonus*0.1),
originEgo: opponentOriginEgo*(1+opponentBonus*0.1),
atk: opponentAtk*(1+opponentBonus*0.1),
def: opponentDef,
text: 'Opponent',
};
calculatePower();
//CSS
sheet.insertRule('.plus {'
+ 'color: #66CD00;}'
);
sheet.insertRule('.minus {'
+ 'color: #FF2F2F;}'
);
sheet.insertRule('.close {'
+ 'color: #FFA500;}'
);
/* ========================================
======================================== */
function moduleTeamsFilter() {
$(document).ready(function() {
if (CurrentPage.indexOf('edit-team') != -1) {
updateFilterGirlData("seasons");
createFilterEvents();
sheet.insertRule('a[rel="season"] {'
sheet.insertRule('.personal_info.hero {'
+ 'margin: 0; }');
+ 'position: absolute;'
+ 'top: 99px;'
+ 'right: 98px;}}'
);
+ 'position: absolute;'
+ 'top: 76px;'
+ 'right: 98px;}}'
);
);
+ 'margin-top: 17px;}}'
);
});
function updateFilterGirlData(type) {
return JSON.parse($(girl).attr("data-new-girl-tooltip"));
});
function createFilterEvents() {
$("#arena_filter").on('click', function() {
});
$("#filter_class").on('change', filterGirls);
$("#filter_rarity").on('change', filterGirls);
$("#filter_name").get(0).oninput = filterGirls;
$("#filter_blessed_attributes").on('change', filterGirls);
$("#filter_aff_category").on('change', filterGirls);
$("#filter_aff_lvl").on('change', filterGirls);
$("#filter_element").on('change', filterGirls);
function filterGirls() {
let matchesBlessedAttributes;
switch (filterBlessedAttributes) {
case 'blessed_attributes':
break;
case 'non_blessed_attributes':
break;
case 'all':
break;
});
});
$(".harem-panel-girls").css('overflow', '');
$(".harem-panel-girls").css('overflow', 'hidden');
}
function createFilterBox() {
+ 'position: absolute; width: 275px; right: 408px; z-index: 99; border-radius: 8px 10px
10px 8px; background-color: #1e261e; box-shadow: rgba(255, 255, 255, 0.73) 0px 0px;
padding: 5px; border: 1px solid #ffa23e; display: none;">';
+ '#arena_filter_box {'
+ 'top: 98px;}}'
);
+ '#arena_filter_box {'
+ 'top: 66px;}}'
);
+ '</div></div>';
+ '</select></div></div>';
+ '</select></div></div>';
+ '</select></div></div>';
+ '</select></div></div>';
totalHTML += '</div>';
return totalHTML;
}
//Display your ranking at the bottom of the screen if you are in the top 200
if (CurrentPage == '/season.html') {
let i=1;
i++;
player_row.css('position', 'fixed');
player_row.css('width', '904px');
$('#leaderboard_list').append(player_row);
//CSS
$('#leaderboard_list')[0].children[200].style.removeProperty('bottom');
+ '.leaderboard_row:nth-child(201) {'
+ 'bottom: 20px;}}'
);
+ '.leaderboard_row:nth-child(201) {'
+ 'bottom: -5px;}}'
);
}
//Stop background switching during Orgy Days event (Credit: Finderkeeper)
$("#bg_all").replaceWith( $("#bg_all").clone() );
$("#bg_all > div > img").not($("#bg_all > div > img")[Math.floor(Math.random()*$("#bg_all >
div > img").length)]).remove();
if ($('#harem_whole').length){
if (typeof(localStorage.HHPNMap) != "undefined")
if(JSON.parse(localStorage.HHPNMap)[0].length == 2)
localStorage.removeItem('HHPNMap');
shards: shards,
class: girl_class}
if (typeof(name) != "undefined")
girlNameDictionary.set(key, girlData);
localStorage.HHPNMap = json;
if (CurrentPage.indexOf('battle') != -1 || CurrentPage.indexOf('clubs') != -1 ||
CurrentPage.indexOf('pachinko') != -1 || CurrentPage.indexOf('season-arena') != -1 ||
CurrentPage.indexOf('tower-of-fame') != -1) {
if (CurrentPage.indexOf('battle') != -1 || CurrentPage.indexOf('pachinko') != -1 ||
CurrentPage.indexOf('season-arena') != -1) {
displayTrollGirlsShards();
updateTrollGirlsShards();
displayClubChampionGirlsShards();
setTimeout(function(){updateClubChampionGirlsShards();}, 2000);
}
else if (CurrentPage.indexOf('tower-of-fame') != -1 || CurrentPage.indexOf('season-battle') !
= -1) {
updateTrollGirlsShards();
function displayTrollGirlsShards() {
+ '<span class="shard_troll"></span>'
+ '</div>');
+ 'position: absolute;'
+ 'bottom: -0.25em;'
+ 'left: -5px;'
+ 'color: #80058b;'
+ 'text-shadow: 1px 1px 0 #fff,-1px 1px 0 #fff,-1px -1px 0 #fff,1px -1px 0 #fff;'
+ 'width: 28px;'
+ 'text-align: right;'
+ 'font-size: 12px !important;}'
);
+ 'background-image: url(https://hh2.hh-content.com/shards.png);'
+ 'background-repeat: no-repeat;'
+ 'background-size: contain;'
+ 'position: absolute;'
+ 'bottom: -0.25em;'
+ 'width: 20px;'
+ 'height: 20px;}'
);
if (girlsData.length > 1) {
+ 'margin-left: -1px;'
+ 'margin-top: -10px;}'
);
+ 'margin-left: 2px;'
+ 'margin-top: -11px;}'
);
else {
+ 'margin-left: -1px;'
+ 'margin-top: -14px;}'
);
+ 'margin-left: 2px;'
+ 'margin-top: -15px;}'
);
//CSS
+ 'bottom: -0.25em;'
+ 'left: -5px;'
+ 'color: #80058b;'
+ 'text-shadow: 1px 1px 0 #fff,-1px 1px 0 #fff,-1px -1px 0 #fff,1px -1px 0 #fff;'
+ 'width: 28px;'
+ 'text-align: right;'
+ 'margin-top: -14px;'
+ 'font-size: 12px;}'
);
+ 'position: absolute;'
+ 'bottom: -0.25em;'
+ 'padding-left: 10px;'
+ 'color: #80058b;'
+ 'text-shadow: 1px 1px 0 #fff,-1px 1px 0 #fff,-1px -1px 0 #fff,1px -1px 0 #fff;'
+ 'width: 24px;'
+ 'text-align: right;'
+ 'margin-top: -13px;'
+ 'margin-left: -2px;'
+ 'font-size: 11px;}'
);
if ($('.hh_tooltip_new .slot_girl').length == 0)
return;
return;
else {
return;
else {
+ '<span class="shard_troll_tooltip"
style="background-image: url(https://hh2.hh-content.com/shards.png); background-repeat:
no-repeat; background-size: contain; position: absolute; bottom: -0.25em; top: 27px; margin-
left: 2px; width: 15px; height: 15px;"></span>'
+ '<p id="shard_number_tooltip"
style="position: absolute; bottom: -0.25em; padding-left: 10px; color: #80058b; text-shadow:
1px 1px 0 #fff,-1px 1px 0 #fff,-1px -1px 0 #fff,1px -1px 0 #fff; width: 28px; text-align: right;
margin-top: -10px; margin-left: -6px; font-size: 9px;">'
+ '</p></div>');
);
})
})
if (CurrentPage.indexOf('troll-pre-battle') != -1) {
observer.observe($('.page-troll-pre-battle')[0], {
childList: true
, subtree: true
, attributes: false
, characterData: false
});
observer.observe($('.page-pachinko')[0], {
childList: true
, subtree: true
, attributes: false
, characterData: false
});
observer.observe($('.page-leaderboard')[0], {
childList: true
, subtree: true
, attributes: false
, characterData: false
});
function displayClubChampionGirlsShards() {
if(!$('.girl-shards-reward-wrapper').length)
return;
+ '<p id="club_shard_number"
style="position: relative; bottom: 5.9em; padding-left: 10px; color: #80058b; text-shadow: 1px
1px 0 #fff,-1px 1px 0 #fff,-1px -1px 0 #fff,1px -1px 0 #fff;; width: 28px; text-align: right; margin-
left: -11px; font-size: 12px;">'
+ '<span class="club_shard"
style="background-image: url(https://hh2.hh-content.com/shards.png); background-repeat:
no-repeat; background-size: contain; display: block; position: relative; bottom: 1.75em;
margin-left: 15px; width: 25px; height: 25px;"></span>'
+ '</p></div>');
function updateTrollGirlsShards() {
mutations.forEach(function(mutation) {
if ($('.shards_wrapper').length == 0)
return;
girlDictionary.set(idGirl, girlData);
localStorage.HHPNMap = JSON.stringify(Array.from(girlDictionary.entries()));
})
})
childList: true
, subtree: true
, attributes: false
, characterData: false
});
function updateClubChampionGirlsShards() {
if ($('.shards_wrapper').length == 0)
return;
girlDictionary.set(idGirl, girlData);
localStorage.HHPNMap = JSON.stringify(Array.from(girlDictionary.entries()));
$('.club_shards').remove();
displayClubChampionGirlsShards();
//Remove button to access to club champion's positions during cooldown + add some datas
about participation of club members
$('button.orange_button_L.btn_skip_team_cooldown').css('display', 'none');
if (!$('button.orange_button_L.btn_skip_champion_cooldown').length)
$('.challenge_container').css('display', 'block');
function calculateParticipation() {
let championImpress = parseInt((JSON.parse($
('.club_champions_bar_container').attr('champion-healing-tooltip')).impression_info).split('/')
[1].trim().replace(/[^0-9]/gi, ''), 10);
function highlightMembersParticipation() {
championPartipants.forEach((participant) => {
listChampionParticipantsId.push(participant.attributes.sorting_id.value);
});
clubMembers.forEach((member) => {
if (!listChampionParticipantsId.includes(member.attributes.sorting_id.value)) {
member.children[0].style.color = '#ffa07a';
member.children[2].style.color = '#ffa07a';
member.children[3].style.color = '#ffa07a';
member.children[4].style.color = '#ffa07a';
member.children[5].style.color = '#ffa07a';
});
}
calculateParticipation();
if ($('.club_champions_timer_fight span').length)
highlightMembersParticipation();
sortImpression.addEventListener('click', function(){
calculateParticipation();
});
sortChallenges.addEventListener('click', function(){
calculateParticipation();
});
sortName.addEventListener('click', function(){
calculateParticipation();
});
sortLevel.addEventListener('click', function(){
calculateParticipation();
});
let sortClubLevel = document.querySelector('.head_table > thead:nth-child(1) > tr:nth-
child(1) > th:nth-child(1) > span:nth-child(1)');
sortClubLevel.addEventListener('click', function(){
if ($('.club_champions_timer_fight span').length)
highlightMembersParticipation();
});
sortClubNames.addEventListener('click', function(){
if ($('.club_champions_timer_fight span').length)
highlightMembersParticipation();
});
sortClubMojo.addEventListener('click', function(){
if ($('.club_champions_timer_fight span').length)
highlightMembersParticipation();
});
sortClubContribution.addEventListener('click', function(){
if ($('.club_champions_timer_fight span').length)
highlightMembersParticipation();
});
}
//Add previous/next arrows in Places of Power to navigate easily between them
if (window.location.href.includes('activities.html?tab=pop&index')) {
if (!className.includes('greyed'))
popList.push(popAll[i].attributes.pop_id.nodeValue);
//CSS
+ '#previous_pop {'
+ 'position: absolute;'
+ 'bottom: 11px;'
+ 'right: 273px;}}'
);
+ '#previous_pop {'
+ 'position: absolute;'
+ 'bottom: 21px;'
+ 'right: 280px;}}'
);
sheet.insertRule('#previous_pop_img {'
+ 'display: block;'
+ 'width: 40px;'
+ 'height: 40px;'
+ 'margin: 0;'
+ 'padding: 0;'
+ 'background-image: url(https://www.flaticon.com/svg/2879/2879564.svg);'
+ 'background-size: 38px;'
+ 'background-position: center;'
+ 'background-repeat: no-repeat;}'
);
+ '#next_pop {'
+ 'position: absolute;'
+ 'bottom: 11px;'
+ 'right: 15px;}}'
);
sheet.insertRule('@media only screen and (max-width: 1025px) {'
+ '#next_pop {'
+ 'position: absolute;'
+ 'bottom: 21px;'
+ 'right: 8px;}}'
);
sheet.insertRule('#next_pop_img {'
+ 'display: block;'
+ 'width: 40px;'
+ 'height: 40px;'
+ 'margin: 0;'
+ 'padding: 0;'
+ 'background-image: url(https://www.flaticon.com/svg/2879/2879593.svg);'
+ 'background-size: 38px;'
+ 'background-position: center;'
+ 'background-repeat: no-repeat;}'
);
sheet.insertRule('button[rel=pop_finish] {'
+ 'margin-right: 16px;}'
);
+ 'button[rel=pop_auto_assign] {'
+ 'max-width: 210px;}}'
);
+ 'button[rel=pop_auto_assign] {'
+ 'min-height: 40px;'
+ 'max-width: 210px;}}'
);
//CSS
if ($('#BoosterTimer').length == 1) {
+ '.promo_profile_discount_text {'
);
+ '.promo_profile_discount_text {'
);
sheet.insertRule('@media only screen and (max-width: 1025px) {'
+ '.promo_quest_discount_text {'
);
+ '.promo_quest_discount_text {'
);
+ '.promo_fight_discount_text {'
);
+ '.promo_fight_discount_text {'
);
+
'#canvas_fight_energy .energy_counter_bar .energy_counter_icon .hudBattlePts_mix_icn {'
+ 'left: 14px;}}'
);
+ '#tower_of_fame {'
+ 'background: #222;}}'
);
);
+ '.rotate_device {'
);
);
+ 'width: 9% !important;}'
);
);
);
);
);
);
);
+ '-webkit-mask-size: contain;'
+ 'background-image: none;'
);
+ 'font-weight: bold;}'
);
+ '.redirect.comix {'
);
);
);
+ 'margin-top: -6px;}}'
);
);
+ 'z-index: -1;}'
);
if(CurrentPage.indexOf("battle") != -1) {
);
//PoP buttons
+ 'font-size: 11px;}'
);
sheet.insertRule('#pop .pop_list .pop-action-btn .pop-auto-asign-all, #pop .pop_list .pop-
action-btn .pop-claim-all {'
+ 'line-height: 16px;'
+ 'height: 51px;'
);
+ 'position: fixed;'
+ 'right: 30px;'
+ 'top: 63px;}}'
);
+ 'margin-top: 10px;}}'
);
+ 'position: fixed;'
+ 'right: 30px;'
+ 'top: 97px;}}'
);
//League display
);
);
);
+ 'margin-top: -5px;}'
);
sheet.insertRule('.hh_class_tooltip.hh_class_tooltip_click_disabled {'
);
function moduleCollectMoneyAnimation() {
sheet.insertRule('.collect_img {'
);
function moduleMissionsBackground() {
sheet.insertRule('#missions .missions_wrap .mission_object.mission_entry.common {'
+ 'background: #ffffff20;}'
);
+ 'background: #32bc4f30;}'
);
+ 'background: #ffb24440;}'
);
+ 'background: #6ebeff40;}'
);
if(CurrentPage.indexOf("battle") != -1) {
setTimeout("$('#new-battle-skip-btn').show();", 250);
if(~opt.data.search(/action=do_(league|season|troll|pantheon)_battles/i)) {
console.log(JSON.parse(xhr.responseText), opt);
if(!xhr.responseText.length)
return;
var respBattleData = JSON.parse(xhr.responseText);
if(!respBattleData || !respBattleData.success)
return;
//We already spent some combativity, let's show this to the player:
if(~location.pathname.indexOf("troll-battle") &&
~location.search.search(/number_of_battles=\d+/i)) {
if($.isNumeric(nBattlesCount))
var nPlayerFinalEgo = 0;
var nOpponentFinalEgo = 0;
if(nRoundsLen >= 2) {
if(!arrLastRounds[1].opponent_hit) {
nPlayerFinalEgo = arrLastRounds[0].opponent_hit.defender.remaining_ego;
nOpponentFinalEgo = arrLastRounds[1].hero_hit.defender.remaining_ego;
}
else if(!arrLastRounds[1].hero_hit) {
nPlayerFinalEgo = arrLastRounds[1].opponent_hit.defender.remaining_ego;
nOpponentFinalEgo = arrLastRounds[0].hero_hit.defender.remaining_ego;
else {
nPlayerFinalEgo = arrRounds[nRoundsLen -
1].opponent_hit.defender.remaining_ego;
nOpponentFinalEgo = arrRounds[nRoundsLen -
1].hero_hit.defender.remaining_ego;
else {
if(nRoundsLen == 1) {
if(!arrRounds[0].opponent_hit) {
nPlayerFinalEgo = nPlayerInitialEgo;
nOpponentFinalEgo = arrRounds[0].hero_hit.defender.remaining_ego;
else if(!arrRounds[0].hero_hit) {
nPlayerFinalEgo = arrRounds[0].opponent_hit.defender.remaining_ego;
nOpponentFinalEgo = nOpponentInitialEgo;
else {
nPlayerFinalEgo = arrRounds[0].opponent_hit.defender.remaining_ego;
nOpponentFinalEgo = arrRounds[0].hero_hit.defender.remaining_ego;
else {
$('#new-battle-skip-btn').off("click");
$('#new-battle-skip-btn').on("click", function() {
$(this).remove();
//newBattles.battleEnd();
if($.isNumeric(strPlayerCurEgo))
nPlayerCurEgo = parseInt(strPlayerCurEgo);
if($.isNumeric(strOpponentCurEgo))
nOpponentCurEgo = parseInt(strOpponentCurEgo);
var nPlayerCompleteAtk = nOpponentCurEgo - nOpponentFinalEgo;
$playerDamageDone.css("opacity", "0").text(nPlayerCompleteAtk.toString());
$opponentDamageDone.css("opacity", "0").text(nOpponentCompleteAtk.toString());
var arrPlayerAnimationSequence = [
duration: 400,
sequenceQueue: false,
complete: function(elm) {
$(elm).velocity({ translateY: 0 }, 0)
];
var arrOpponentAnimationSequence = [
duration: 400,
sequenceQueue: false,
complete: function(elm) {
$(elm).velocity({ translateY: 0 }, 0)
];
$('.velocity-animating').velocity("stop", true);
newBattles.setRounds([]);
$.Velocity.RunSequence(arrPlayerAnimationSequence);
$.Velocity.RunSequence(arrOpponentAnimationSequence);
});
});