// ==UserScript==
// @name GeoGuessr country-wise score
// @version 0.1
// @description Adds an analysis tool to the GeoGuessr website
// @match https://www.geoguessr.com/*
// @run-at document-start
// @author eru
// @license MIT
// @require https://greasyfork.org/scripts/460322-geoguessr-styles-scan/code/Geoguessr%20Styles%20Scan.js?version=1151654
// @icon https://www.google.com/s2/favicons?sz=64&domain=geoguessr.com
// @grant none
// @namespace https://greasyfork.org/users/1348455
// ==/UserScript==
/*
THIS SCRIPT WAS SUPPOSED TO WORK FOR BOTH SOLO AND MULTIPLAYER
HOWEVER, I FOUND OUT THAT IT IS NOT ALLOWED TO QUERY THE API FROM A MULTIPLAYER GAME
SO IGNORE ALL CODE SNIPPETS RELATED TO MULTIPLAYER LIKE getDuelData
*/
const AUTOMATIC = true;
// ^^^^ Replace with false for a manual counter
const API_Key = '';
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Replace INSERT_BIGDATACLOUD_API_KEY_HERE with your API key (keep the quote marks)
// THIS IS OPTIONAL: if you don't provide an API key, the script will use another method to get the country
const statsServerUrl = 'https://ggstats.eu';
const DefaultCountryDict = {
AF: {referent: 'AF', occ: 0, right: 0, diag: 1142.1295898452154, avgdist: 0, alpha: 175.3515519520104, avgscore: 0, wrong_guesses: {}},
AX: {referent: 'FI', occ: 0, right: 0, diag: 56.213877290220786, avgdist: 0, alpha: 25.63268878594707, avgscore: 0, wrong_guesses: {}},
AL: {referent: 'AL', occ: 0, right: 0, diag: 239.78323544401513, avgdist: 0, alpha: 46.309802998440105, avgscore: 0, wrong_guesses: {}},
DZ: {referent: 'DZ', occ: 0, right: 0, diag: 2182.5402630879457, avgdist: 0, alpha: 318.79648181423624, avgscore: 0, wrong_guesses: {}},
AS: {referent: 'US', occ: 0, right: 0, diag: 19.949937343260004, avgdist: 0, alpha: 20.632857031043354, avgscore: 0, wrong_guesses: {}},
AD: {referent: 'AD', occ: 0, right: 0, diag: 30.59411708155671, avgdist: 0, alpha: 22.100406004990372, avgscore: 0, wrong_guesses: {}},
AO: {referent: 'AO', occ: 0, right: 0, diag: 1579.0503475190396, avgdist: 0, alpha: 235.5912909817255, avgscore: 0, wrong_guesses: {}},
AI: {referent: 'GB', occ: 0, right: 0, diag: 13.490737563232042, avgdist: 0, alpha: 19.742305364051706, avgscore: 0, wrong_guesses: {}},
AQ: {referent: 'AQ', occ: 0, right: 0, diag: 5291.502622129181, avgdist: 0, alpha: 747.4396118842076, avgscore: 0, wrong_guesses: {}},
AG: {referent: 'AG', occ: 0, right: 0, diag: 29.732137494637012, avgdist: 0, alpha: 21.981561971025414, avgscore: 0, wrong_guesses: {}},
AR: {referent: 'AR', occ: 0, right: 0, diag: 2358.1348561946156, avgdist: 0, alpha: 396.0216955729648, avgscore: 0, wrong_guesses: {}},
AM: {referent: 'AM', occ: 0, right: 0, diag: 243.89751946258085, avgdist: 0, alpha: 51.50926577625275, avgscore: 0, wrong_guesses: {}},
AW: {referent: 'NL', occ: 0, right: 0, diag: 18.973665961010276, avgdist: 0, alpha: 20.498255201636095, avgscore: 0, wrong_guesses: {}},
AU: {referent: 'AU', occ: 0, right: 0, diag: 3922.2503744661685, avgdist: 0, alpha: 512.8761793857648, avgscore: 0, wrong_guesses: {}},
AT: {referent: 'AT', occ: 0, right: 0, diag: 409.56318193900194, avgdist: 0, alpha: 83.53194032530612, avgscore: 0, wrong_guesses: {}},
AZ: {referent: 'AZ', occ: 0, right: 0, diag: 416.17304093369626, avgdist: 0, alpha: 75.26147317852835, avgscore: 0, wrong_guesses: {}},
BS: {referent: 'BS', occ: 0, right: 0, diag: 166.99101772251106, avgdist: 0, alpha: 40.905906899060895, avgscore: 0, wrong_guesses: {}},
BH: {referent: 'BH', occ: 0, right: 0, diag: 39.11521443121589, avgdist: 0, alpha: 23.275238446742815, avgscore: 0, wrong_guesses: {}},
BD: {referent: 'BD', occ: 0, right: 0, diag: 543.2678897192434, avgdist: 0, alpha: 74.38755026777277, avgscore: 0, wrong_guesses: {}},
BB: {referent: 'BB', occ: 0, right: 0, diag: 29.32575659723036, avgdist: 0, alpha: 21.925532865572123, avgscore: 0, wrong_guesses: {}},
BY: {referent: 'BY', occ: 0, right: 0, diag: 644.3601477434805, avgdist: 0, alpha: 106.72239949695455, avgscore: 0, wrong_guesses: {}},
BE: {referent: 'BE', occ: 0, right: 0, diag: 247.09512338368802, avgdist: 0, alpha: 34.843829038514336, avgscore: 0, wrong_guesses: {}},
BZ: {referent: 'BZ', occ: 0, right: 0, diag: 214.31752144890066, avgdist: 0, alpha: 47.43097164728892, avgscore: 0, wrong_guesses: {}},
BJ: {referent: 'BJ', occ: 0, right: 0, diag: 474.59877791667355, avgdist: 0, alpha: 83.31682666461928, avgscore: 0, wrong_guesses: {}},
BM: {referent: 'GB', occ: 0, right: 0, diag: 10.392304845413264, avgdist: 0, alpha: 19.315113991144052, avgscore: 0, wrong_guesses: {}},
BT: {referent: 'BT', occ: 0, right: 0, diag: 277.10647773013176, avgdist: 0, alpha: 54.93711090892961, avgscore: 0, wrong_guesses: {}},
BO: {referent: 'BO', occ: 0, right: 0, diag: 1482.2826990827357, avgdist: 0, alpha: 163.17070120907988, avgscore: 0, wrong_guesses: {}},
BQ: {referent: 'NL', occ: 0, right: 0, diag: 25.612496949731394, avgdist: 0, alpha: 37.47968185947722, avgscore: 0, wrong_guesses: {}},
BA: {referent: 'BA', occ: 0, right: 0, diag: 320.0281237641467, avgdist: 0, alpha: 62.005649055722614, avgscore: 0, wrong_guesses: {}},
BW: {referent: 'BW', occ: 0, right: 0, diag: 1078.8883167408942, avgdist: 0, alpha: 134.95197865270416, avgscore: 0, wrong_guesses: {}},
BV: {referent: 'NO', occ: 0, right: 0, diag: 9.899494936611665, avgdist: 0, alpha: 19.247168626278533, avgscore: 0, wrong_guesses: {}},
BR: {referent: 'BR', occ: 0, right: 0, diag: 4126.927913109217, avgdist: 0, alpha: 591.9923561732209, avgscore: 0, wrong_guesses: {}},
BN: {referent: 'BN', occ: 0, right: 0, diag: 107.37783756436893, avgdist: 0, alpha: 32.68683661598056, avgscore: 0, wrong_guesses: {}},
BG: {referent: 'BG', occ: 0, right: 0, diag: 470.91188135361375, avgdist: 0, alpha: 60.05314384559996, avgscore: 0, wrong_guesses: {}},
BF: {referent: 'BF', occ: 0, right: 0, diag: 738.8734668398913, avgdist: 0, alpha: 119.75326968841003, avgscore: 0, wrong_guesses: {}},
BI: {referent: 'BI', occ: 0, right: 0, diag: 235.9406705084988, avgdist: 0, alpha: 50.41222816457079, avgscore: 0, wrong_guesses: {}},
KH: {referent: 'KH', occ: 0, right: 0, diag: 601.7225274160841, avgdist: 0, alpha: 71.12785351923642, avgscore: 0, wrong_guesses: {}},
CM: {referent: 'CM', occ: 0, right: 0, diag: 975.1328114672381, avgdist: 0, alpha: 152.3271426704479, avgscore: 0, wrong_guesses: {}},
CA: {referent: 'CA', occ: 0, right: 0, diag: 4468.706748042436, avgdist: 0, alpha: 546.2232473698027, avgscore: 0, wrong_guesses: {}},
CV: {referent: 'CV', occ: 0, right: 0, diag: 89.81091247727082, avgdist: 0, alpha: 30.26482538347385, avgscore: 0, wrong_guesses: {}},
KY: {referent: 'UK', occ: 0, right: 0, diag: 22.978250586152114, avgdist: 0, alpha: 21.050380795359988, avgscore: 0, wrong_guesses: {}},
CF: {referent: 'CF', occ: 0, right: 0, diag: 1116.2293671105415, avgdist: 0, alpha: 171.78060085631307, avgscore: 0, wrong_guesses: {}},
TD: {referent: 'TD', occ: 0, right: 0, diag: 1602.4980499208104, avgdist: 0, alpha: 238.82410482432982, avgscore: 0, wrong_guesses: {}},
CL: {referent: 'CL', occ: 0, right: 0, diag: 1229.7170406235737, avgdist: 0, alpha: 412.0259548379801, avgscore: 0, wrong_guesses: {}},
CN: {referent: 'CN', occ: 0, right: 0, diag: 4406.123239311401, avgdist: 0, alpha: 625.3693691079427, avgscore: 0, wrong_guesses: {}},
CX: {referent: 'AU', occ: 0, right: 0, diag: 16.431676725154983, avgdist: 0, alpha: 20.147782569025253, avgscore: 0, wrong_guesses: {}},
CC: {referent: 'AU', occ: 0, right: 0, diag: 5.291502622129181, avgdist: 0, alpha: 18.611849178529653, avgscore: 0, wrong_guesses: {}},
CO: {referent: 'CO', occ: 0, right: 0, diag: 1511.1240849116264, avgdist: 0, alpha: 234.99234152503587, avgscore: 0, wrong_guesses: {}},
KM: {referent: 'KM', occ: 0, right: 0, diag: 61.02458520956943, avgdist: 0, alpha: 26.295957318100648, avgscore: 0, wrong_guesses: {}},
CG: {referent: 'CG', occ: 0, right: 0, diag: 827.0429251254133, avgdist: 0, alpha: 131.90949038570238, avgscore: 0, wrong_guesses: {}},
CD: {referent: 'CD', occ: 0, right: 0, diag: 2165.575212270403, avgdist: 0, alpha: 316.45745301799496, avgscore: 0, wrong_guesses: {}},
CK: {referent: 'NZ', occ: 0, right: 0, diag: 21.72556098240043, avgdist: 0, alpha: 20.877668253120067, avgscore: 0, wrong_guesses: {}},
CR: {referent: 'CR', occ: 0, right: 0, diag: 319.68734726291564, avgdist: 0, alpha: 61.95866504971907, avgscore: 0, wrong_guesses: {}},
CI: {referent: 'CI', occ: 0, right: 0, diag: 803.072848501305, avgdist: 0, alpha: 128.60465504657546, avgscore: 0, wrong_guesses: {}},
HR: {referent: 'HR', occ: 0, right: 0, diag: 336.4342432036311, avgdist: 0, alpha: 65.25113670334214, avgscore: 0, wrong_guesses: {}},
CU: {referent: 'CU', occ: 0, right: 0, diag: 468.7941979163138, avgdist: 0, alpha: 82.51652963533552, avgscore: 0, wrong_guesses: {}},
CW: {referent: 'NL', occ: 0, right: 0, diag: 29.79932885150268, avgdist: 0, alpha: 21.990825870099904, avgscore: 0, wrong_guesses: {}},
CY: {referent: 'CY', occ: 0, right: 0, diag: 136.02205703487945, avgdist: 0, alpha: 36.63611179988381, avgscore: 0, wrong_guesses: {}},
CZ: {referent: 'CZ', occ: 0, right: 0, diag: 397.1523637094459, avgdist: 0, alpha: 58.35867535139994, avgscore: 0, wrong_guesses: {}},
DK: {referent: 'DK', occ: 0, right: 0, diag: 293.5779283256832, avgdist: 0, alpha: 55.4021156649218, avgscore: 0, wrong_guesses: {}},
DJ: {referent: 'DJ', occ: 0, right: 0, diag: 215.40659228538016, avgdist: 0, alpha: 47.58112551803583, avgscore: 0, wrong_guesses: {}},
DM: {referent: 'DM', occ: 0, right: 0, diag: 38.7556447501522, avgdist: 0, alpha: 23.22566336162762, avgscore: 0, wrong_guesses: {}},
DO: {referent: 'DO', occ: 0, right: 0, diag: 311.9967948553318, avgdist: 0, alpha: 56.78039086631456, avgscore: 0, wrong_guesses: {}},
EC: {referent: 'EC', occ: 0, right: 0, diag: 744.0981118105327, avgdist: 0, alpha: 176.45960606370554, avgscore: 0, wrong_guesses: {}},
EG: {referent: 'EG', occ: 0, right: 0, diag: 1415.9449141827517, avgdist: 0, alpha: 213.1033945704463, avgscore: 0, wrong_guesses: {}},
SV: {referent: 'SV', occ: 0, right: 0, diag: 205.1389772812568, avgdist: 0, alpha: 46.16549479451749, avgscore: 0, wrong_guesses: {}},
GQ: {referent: 'GQ', occ: 0, right: 0, diag: 236.85860761222085, avgdist: 0, alpha: 50.538787250177776, avgscore: 0, wrong_guesses: {}},
ER: {referent: 'ER', occ: 0, right: 0, diag: 484.9742261192856, avgdist: 0, alpha: 84.74732471504213, avgscore: 0, wrong_guesses: {}},
EE: {referent: 'EE', occ: 0, right: 0, diag: 300.7557148251717, avgdist: 0, alpha: 43.71043395836512, avgscore: 0, wrong_guesses: {}},
ET: {referent: 'ET', occ: 0, right: 0, diag: 1486.1359291801002, avgdist: 0, alpha: 222.7808666323886, avgscore: 0, wrong_guesses: {}},
FK: {referent: 'GB', occ: 0, right: 0, diag: 156.0320479901485, avgdist: 0, alpha: 39.39495676653159, avgscore: 0, wrong_guesses: {}},
FO: {referent: 'DK', occ: 0, right: 0, diag: 52.78257288158659, avgdist: 0, alpha: 25.159603269918684, avgscore: 0, wrong_guesses: {}},
FJ: {referent: 'FJ', occ: 0, right: 0, diag: 191.16485032557634, avgdist: 0, alpha: 44.23883476247862, avgscore: 0, wrong_guesses: {}},
FI: {referent: 'FI', occ: 0, right: 0, diag: 822.7077245291915, avgdist: 0, alpha: 123.88775064268542, avgscore: 0, wrong_guesses: {}},
FR: {referent: 'FR', occ: 0, right: 0, diag: 1050.4237240275945, avgdist: 0, alpha: 151.68231721060795, avgscore: 0, wrong_guesses: {}},
GF: {referent: 'FR', occ: 0, right: 0, diag: 408.7395258596849, avgdist: 0, alpha: 74.23658937461856, avgscore: 0, wrong_guesses: {}},
PF: {referent: 'FR', occ: 0, right: 0, diag: 91.29074432821763, avgdist: 0, alpha: 30.46885479371177, avgscore: 0, wrong_guesses: {}},
TF: {referent: 'FR', occ: 0, right: 0, diag: 124.47489706764172, avgdist: 0, alpha: 35.04406589512031, avgscore: 0, wrong_guesses: {}},
GA: {referent: 'GA', occ: 0, right: 0, diag: 731.6665907365185, avgdist: 0, alpha: 118.75963336406133, avgscore: 0, wrong_guesses: {}},
GM: {referent: 'GM', occ: 0, right: 0, diag: 146.21217459568817, avgdist: 0, alpha: 38.041057689416235, avgscore: 0, wrong_guesses: {}},
GE: {referent: 'GE', occ: 0, right: 0, diag: 373.3630940518894, avgdist: 0, alpha: 69.35912136131117, avgscore: 0, wrong_guesses: {}},
DE: {referent: 'DE', occ: 0, right: 0, diag: 845.1201098068842, avgdist: 0, alpha: 101.1560583838771, avgscore: 0, wrong_guesses: {}},
GH: {referent: 'GH', occ: 0, right: 0, diag: 690.6996452872985, avgdist: 0, alpha: 109.92069520635856, avgscore: 0, wrong_guesses: {}},
GI: {referent: 'UK', occ: 0, right: 0, diag: 3.4641016151377544, avgdist: 0, alpha: 18.359899236050648, avgscore: 0, wrong_guesses: {}},
GR: {referent: 'GR', occ: 0, right: 0, diag: 513.7898403043797, avgdist: 0, alpha: 105.77687733352258, avgscore: 0, wrong_guesses: {}},
GL: {referent: 'DK', occ: 0, right: 0, diag: 2081.3870375305023, avgdist: 0, alpha: 200.87644835734, avgscore: 0, wrong_guesses: {}},
GD: {referent: 'GD', occ: 0, right: 0, diag: 26.229754097208, avgdist: 0, alpha: 21.498676554991604, avgscore: 0, wrong_guesses: {}},
GP: {referent: 'FR', occ: 0, right: 0, diag: 57.06137047074842, avgdist: 0, alpha: 25.749535530185668, avgscore: 0, wrong_guesses: {}},
GU: {referent: 'US', occ: 0, right: 0, diag: 33.13608305156178, avgdist: 0, alpha: 22.450875429859945, avgscore: 0, wrong_guesses: {}},
GT: {referent: 'GT', occ: 0, right: 0, diag: 466.666904761844, avgdist: 0, alpha: 66.61979619942836, avgscore: 0, wrong_guesses: {}},
GG: {referent: 'GB', occ: 0, right: 0, diag: 12.489995996796797, avgdist: 0, alpha: 19.604329747788466, avgscore: 0, wrong_guesses: {}},
GN: {referent: 'GN', occ: 0, right: 0, diag: 701.2232169573394, avgdist: 0, alpha: 114.56230270528113, avgscore: 0, wrong_guesses: {}},
GW: {referent: 'GW', occ: 0, right: 0, diag: 268.79360111431225, avgdist: 0, alpha: 54.941772552876024, avgscore: 0, wrong_guesses: {}},
GY: {referent: 'GY', occ: 0, right: 0, diag: 655.6965761691912, avgdist: 0, alpha: 108.28539113308017, avgscore: 0, wrong_guesses: {}},
HT: {referent: 'HT', occ: 0, right: 0, diag: 235.58437978779492, avgdist: 0, alpha: 50.363105160783604, avgscore: 0, wrong_guesses: {}},
HM: {referent: 'AU', occ: 0, right: 0, diag: 28.705400188814647, avgdist: 0, alpha: 21.84000223446333, avgscore: 0, wrong_guesses: {}},
VA: {referent: 'VA', occ: 0, right: 0, diag: 0.938083151964686, avgdist: 0, alpha: 18.011628547754842, avgscore: 0, wrong_guesses: {}},
HN: {referent: 'HN', occ: 0, right: 0, diag: 474.3247832445612, avgdist: 0, alpha: 83.27905009471802, avgscore: 0, wrong_guesses: {}},
HK: {referent: 'CN', occ: 0, right: 0, diag: 46.98936049788292, avgdist: 0, alpha: 24.360873532297592, avgscore: 0, wrong_guesses: {}},
HU: {referent: 'HU', occ: 0, right: 0, diag: 431.34209161638745, avgdist: 0, alpha: 59.582088688244326, avgscore: 0, wrong_guesses: {}},
IS: {referent: 'IS', occ: 0, right: 0, diag: 453.8722287164087, avgdist: 0, alpha: 56.83853033920002, avgscore: 0, wrong_guesses: {}},
IN: {referent: 'IN', occ: 0, right: 0, diag: 2564.2113797423176, avgdist: 0, alpha: 371.4187664244891, avgscore: 0, wrong_guesses: {}},
ID: {referent: 'ID', occ: 0, right: 0, diag: 1951.7013091146914, avgdist: 0, alpha: 348.24172495205454, avgscore: 0, wrong_guesses: {}},
IR: {referent: 'IR', occ: 0, right: 0, diag: 1815.5963207717732, avgdist: 0, alpha: 268.2046824194295, avgscore: 0, wrong_guesses: {}},
IQ: {referent: 'IQ', occ: 0, right: 0, diag: 936.2873490547654, avgdist: 0, alpha: 146.9713877031756, avgscore: 0, wrong_guesses: {}},
IE: {referent: 'IE', occ: 0, right: 0, diag: 374.8946518690284, avgdist: 0, alpha: 69.57028240503124, avgscore: 0, wrong_guesses: {}},
IM: {referent: 'GB', occ: 0, right: 0, diag: 33.823069050575526, avgdist: 0, alpha: 22.54559250743251, avgscore: 0, wrong_guesses: {}},
IL: {referent: 'IL', occ: 0, right: 0, diag: 203.81364036786155, avgdist: 0, alpha: 42.81847201865375, avgscore: 0, wrong_guesses: {}},
IT: {referent: 'IT', occ: 0, right: 0, diag: 776.3195218465139, avgdist: 0, alpha: 161.12895676195018, avgscore: 0, wrong_guesses: {}},
JM: {referent: 'JM', occ: 0, right: 0, diag: 148.26327933780502, avgdist: 0, alpha: 38.32385042063267, avgscore: 0, wrong_guesses: {}},
JP: {referent: 'JP', occ: 0, right: 0, diag: 869.4020933952253, avgdist: 0, alpha: 212.824360424015, avgscore: 0, wrong_guesses: {}},
JE: {referent: 'GB', occ: 0, right: 0, diag: 15.231546211727817, avgdist: 0, alpha: 19.982316525902576, avgscore: 0, wrong_guesses: {}},
JO: {referent: 'JO', occ: 0, right: 0, diag: 422.71030268967894, avgdist: 0, alpha: 70.89211961461133, avgscore: 0, wrong_guesses: {}},
KZ: {referent: 'KZ', occ: 0, right: 0, diag: 2334.480670299071, avgdist: 0, alpha: 339.7450184028771, avgscore: 0, wrong_guesses: {}},
KE: {referent: 'KE', occ: 0, right: 0, diag: 1077.3736584862284, avgdist: 0, alpha: 146.3362641686688, avgscore: 0, wrong_guesses: {}},
KI: {referent: 'KI', occ: 0, right: 0, diag: 40.27406113120453, avgdist: 0, alpha: 23.435012551215273, avgscore: 0, wrong_guesses: {}},
KR: {referent: 'KR', occ: 0, right: 0, diag: 447.6829235072519, avgdist: 0, alpha: 65.55828785694067, avgscore: 0, wrong_guesses: {}},
KW: {referent: 'KW', occ: 0, right: 0, diag: 188.7749983445901, avgdist: 0, alpha: 43.90933780650718, avgscore: 0, wrong_guesses: {}},
KG: {referent: 'KG', occ: 0, right: 0, diag: 632.3780514850274, avgdist: 0, alpha: 121.69263454224145, avgscore: 0, wrong_guesses: {}},
LA: {referent: 'LA', occ: 0, right: 0, diag: 688.1860213634102, avgdist: 0, alpha: 143.57699299871368, avgscore: 0, wrong_guesses: {}},
LV: {referent: 'LV', occ: 0, right: 0, diag: 359.32993195669076, avgdist: 0, alpha: 50.97009828511159, avgscore: 0, wrong_guesses: {}},
LB: {referent: 'LB', occ: 0, right: 0, diag: 144.58215657542254, avgdist: 0, alpha: 37.81632160528668, avgscore: 0, wrong_guesses: {}},
LS: {referent: 'LS', occ: 0, right: 0, diag: 246.39399343328157, avgdist: 0, alpha: 34.56557529652339, avgscore: 0, wrong_guesses: {}},
LR: {referent: 'LR', occ: 0, right: 0, diag: 471.9512686708237, avgdist: 0, alpha: 82.95180563220632, avgscore: 0, wrong_guesses: {}},
LY: {referent: 'LY', occ: 0, right: 0, diag: 1875.9211070831311, avgdist: 0, alpha: 276.52186424381057, avgscore: 0, wrong_guesses: {}},
LI: {referent: 'LI', occ: 0, right: 0, diag: 17.88854381999832, avgdist: 0, alpha: 20.34864575085618, avgscore: 0, wrong_guesses: {}},
LT: {referent: 'LT', occ: 0, right: 0, diag: 361.386219991853, avgdist: 0, alpha: 46.406637166782296, avgscore: 0, wrong_guesses: {}},
LU: {referent: 'LU', occ: 0, right: 0, diag: 71.91661838546081, avgdist: 0, alpha: 27.797678681745545, avgscore: 0, wrong_guesses: {}},
MO: {referent: 'CN', occ: 0, right: 0, diag: 7.745966692414834, avgdist: 0, alpha: 18.950254421253778, avgscore: 0, wrong_guesses: {}},
MK: {referent: 'MK', occ: 0, right: 0, diag: 226.77301426757109, avgdist: 0, alpha: 30.07702057954948, avgscore: 0, wrong_guesses: {}},
MG: {referent: 'MG', occ: 0, right: 0, diag: 1083.5506448708338, avgdist: 0, alpha: 202.3942422420552, avgscore: 0, wrong_guesses: {}},
MW: {referent: 'MW', occ: 0, right: 0, diag: 486.7935907548496, avgdist: 0, alpha: 84.99816665587774, avgscore: 0, wrong_guesses: {}},
MY: {referent: 'MY', occ: 0, right: 0, diag: 813.3916645749451, avgdist: 0, alpha: 222.18464770088195, avgscore: 0, wrong_guesses: {}},
MV: {referent: 'MV', occ: 0, right: 0, diag: 24.49489742783178, avgdist: 0, alpha: 21.25948601258391, avgscore: 0, wrong_guesses: {}},
ML: {referent: 'ML', occ: 0, right: 0, diag: 1574.9234902051592, avgdist: 0, alpha: 235.02230723985758, avgscore: 0, wrong_guesses: {}},
MT: {referent: 'MT', occ: 0, right: 0, diag: 25.13961017995307, avgdist: 0, alpha: 21.348374734977615, avgscore: 0, wrong_guesses: {}},
MH: {referent: 'MH', occ: 0, right: 0, diag: 19.026297590440446, avgdist: 0, alpha: 20.50551170196458, avgscore: 0, wrong_guesses: {}},
MQ: {referent: 'FR', occ: 0, right: 0, diag: 47.49736834815167, avgdist: 0, alpha: 24.430914288630987, avgscore: 0, wrong_guesses: {}},
MR: {referent: 'MR', occ: 0, right: 0, diag: 1435.7576397150042, avgdist: 0, alpha: 215.8350418876499, avgscore: 0, wrong_guesses: {}},
MU: {referent: 'MU', occ: 0, right: 0, diag: 63.874877690685246, avgdist: 0, alpha: 26.68893675934971, avgscore: 0, wrong_guesses: {}},
YT: {referent: 'FR', occ: 0, right: 0, diag: 27.349588662354687, avgdist: 0, alpha: 21.653071924806586, avgscore: 0, wrong_guesses: {}},
MX: {referent: 'MX', occ: 0, right: 0, diag: 1982.1074642914798, avgdist: 0, alpha: 367.3607466315442, avgscore: 0, wrong_guesses: {}},
FM: {referent: 'FM', occ: 0, right: 0, diag: 37.469987990390386, avgdist: 0, alpha: 23.048405526357506, avgscore: 0, wrong_guesses: {}},
MD: {referent: 'MD', occ: 0, right: 0, diag: 260.1768629221284, avgdist: 0, alpha: 53.75375378547282, avgscore: 0, wrong_guesses: {}},
MC: {referent: 'MC', occ: 0, right: 0, diag: 2.009975124224178, avgdist: 0, alpha: 18.15941391053031, avgscore: 0, wrong_guesses: {}},
MN: {referent: 'MN', occ: 0, right: 0, diag: 1768.67747201122, avgdist: 0, alpha: 230.1442050070954, avgscore: 0, wrong_guesses: {}},
ME: {referent: 'ME', occ: 0, right: 0, diag: 166.20469307453385, avgdist: 0, alpha: 28.331453632251147, avgscore: 0, wrong_guesses: {}},
MS: {referent: 'GB', occ: 0, right: 0, diag: 14.2828568570857, avgdist: 0, alpha: 19.85151752370325, avgscore: 0, wrong_guesses: {}},
MA: {referent: 'MA', occ: 0, right: 0, diag: 945.0396817065408, avgdist: 0, alpha: 148.17810133621796, avgscore: 0, wrong_guesses: {}},
MZ: {referent: 'MZ', occ: 0, right: 0, diag: 1266.1674454826266, avgdist: 0, alpha: 192.45306961206452, avgscore: 0, wrong_guesses: {}},
MM: {referent: 'MM', occ: 0, right: 0, diag: 1163.2523371994573, avgdist: 0, alpha: 178.26381639782107, avgscore: 0, wrong_guesses: {}},
NA: {referent: 'NA', occ: 0, right: 0, diag: 1285.0019455238191, avgdist: 0, alpha: 195.049845680286, avgscore: 0, wrong_guesses: {}},
NR: {referent: 'NR', occ: 0, right: 0, diag: 6.48074069840786, avgdist: 0, alpha: 18.77581344459162, avgscore: 0, wrong_guesses: {}},
NP: {referent: 'NP', occ: 0, right: 0, diag: 542.5513800553824, avgdist: 0, alpha: 92.68568119334317, avgscore: 0, wrong_guesses: {}},
NL: {referent: 'NL', occ: 0, right: 0, diag: 289.30952282978865, avgdist: 0, alpha: 57.77037190044235, avgscore: 0, wrong_guesses: {}},
NC: {referent: 'FR', occ: 0, right: 0, diag: 192.74335267396384, avgdist: 0, alpha: 44.45646820711263, avgscore: 0, wrong_guesses: {}},
NZ: {referent: 'NZ', occ: 0, right: 0, diag: 735.4821547801143, avgdist: 0, alpha: 165.76579835292438, avgscore: 0, wrong_guesses: {}},
NI: {referent: 'NI', occ: 0, right: 0, diag: 510.63294057473416, avgdist: 0, alpha: 88.2849782494345, avgscore: 0, wrong_guesses: {}},
NE: {referent: 'NE', occ: 0, right: 0, diag: 1591.8542646863123, avgdist: 0, alpha: 237.35661024195255, avgscore: 0, wrong_guesses: {}},
NG: {referent: 'NG', occ: 0, right: 0, diag: 1359.2409646563776, avgdist: 0, alpha: 184.09473252281128, avgscore: 0, wrong_guesses: {}},
NU: {referent: 'NZ', occ: 0, right: 0, diag: 22.80350850198276, avgdist: 0, alpha: 21.02628851463633, avgscore: 0, wrong_guesses: {}},
NF: {referent: 'AU', occ: 0, right: 0, diag: 8.48528137423857, avgdist: 0, alpha: 19.052186230882164, avgscore: 0, wrong_guesses: {}},
MP: {referent: 'US', occ: 0, right: 0, diag: 30.463092423455635, avgdist: 0, alpha: 22.082341193301204, avgscore: 0, wrong_guesses: {}},
NO: {referent: 'NO', occ: 0, right: 0, diag: 804.738466832548, avgdist: 0, alpha: 189.7558067445318, avgscore: 0, wrong_guesses: {}},
OM: {referent: 'OM', occ: 0, right: 0, diag: 786.7655305108377, avgdist: 0, alpha: 126.35631009439152, avgscore: 0, wrong_guesses: {}},
PK: {referent: 'PK', occ: 0, right: 0, diag: 1328.0903583717488, avgdist: 0, alpha: 200.99059053979585, avgscore: 0, wrong_guesses: {}},
PW: {referent: 'PW', occ: 0, right: 0, diag: 30.298514815086232, avgdist: 0, alpha: 22.059650323150997, avgscore: 0, wrong_guesses: {}},
PS: {referent: 'IL', occ: 0, right: 0, diag: 111.53474794878949, avgdist: 0, alpha: 33.259963876082836, avgscore: 0, wrong_guesses: {}},
PA: {referent: 'PA', occ: 0, right: 0, diag: 388.37353153890393, avgdist: 0, alpha: 69.64419635716979, avgscore: 0, wrong_guesses: {}},
PG: {referent: 'PG', occ: 0, right: 0, diag: 962.1226533036212, avgdist: 0, alpha: 150.53338826819842, avgscore: 0, wrong_guesses: {}},
PY: {referent: 'PY', occ: 0, right: 0, diag: 901.9445659240927, avgdist: 0, alpha: 142.2364323205104, avgscore: 0, wrong_guesses: {}},
PE: {referent: 'PE', occ: 0, right: 0, diag: 1603.256685624607, avgdist: 0, alpha: 212.25094932780146, avgscore: 0, wrong_guesses: {}},
PH: {referent: 'PH', occ: 0, right: 0, diag: 827.4696369051858, avgdist: 0, alpha: 173.4537925435466, avgscore: 0, wrong_guesses: {}},
PN: {referent: 'GB', occ: 0, right: 0, diag: 9.695359714832659, avgdist: 0, alpha: 19.219023814500282, avgscore: 0, wrong_guesses: {}},
PL: {referent: 'PL', occ: 0, right: 0, diag: 790.7958017086332, avgdist: 0, alpha: 93.6377393081947, avgscore: 0, wrong_guesses: {}},
PT: {referent: 'PT', occ: 0, right: 0, diag: 429.1619740843776, avgdist: 0, alpha: 104.32658196010533, avgscore: 0, wrong_guesses: {}},
PR: {referent: 'US', occ: 0, right: 0, diag: 133.19159132617943, avgdist: 0, alpha: 34.953005904661474, avgscore: 0, wrong_guesses: {}},
QA: {referent: 'QA', occ: 0, right: 0, diag: 152.22351986470423, avgdist: 0, alpha: 26.61177089955384, avgscore: 0, wrong_guesses: {}},
RE: {referent: 'FR', occ: 0, right: 0, diag: 70.8660708661063, avgdist: 0, alpha: 27.6528361507082, avgscore: 0, wrong_guesses: {}},
RO: {referent: 'RO', occ: 0, right: 0, diag: 690.4940260422244, avgdist: 0, alpha: 87.61241886754098, avgscore: 0, wrong_guesses: {}},
RU: {referent: 'RU', occ: 0, right: 0, diag: 5847.775987501574, avgdist: 0, alpha: 714.131946328906, avgscore: 0, wrong_guesses: {}},
RW: {referent: 'RW', occ: 0, right: 0, diag: 229.5125268912353, avgdist: 0, alpha: 47.34913940834831, avgscore: 0, wrong_guesses: {}},
BL: {referent: 'FR', occ: 0, right: 0, diag: 6.48074069840786, avgdist: 0, alpha: 18.77581344459162, avgscore: 0, wrong_guesses: {}},
SH: {referent: 'GB', occ: 0, right: 0, diag: 28.071337695236398, avgdist: 0, alpha: 21.752581899148893, avgscore: 0, wrong_guesses: {}},
KN: {referent: 'KN', occ: 0, right: 0, diag: 22.847319317591726, avgdist: 0, alpha: 21.03232885960189, avgscore: 0, wrong_guesses: {}},
LC: {referent: 'LC', occ: 0, right: 0, diag: 35.09985754956849, avgdist: 0, alpha: 22.721627645668942, avgscore: 0, wrong_guesses: {}},
MF: {referent: 'FR', occ: 0, right: 0, diag: 10.295630140987, avgdist: 0, alpha: 19.30178512346466, avgscore: 0, wrong_guesses: {}},
PM: {referent: 'FR', occ: 0, right: 0, diag: 22.0, avgdist: 0, alpha: 20.915506086432877, avgscore: 0, wrong_guesses: {}},
VC: {referent: 'VC', occ: 0, right: 0, diag: 27.892651361962706, avgdist: 0, alpha: 21.727945811493335, avgscore: 0, wrong_guesses: {}},
WS: {referent: 'WS', occ: 0, right: 0, diag: 75.39230729988306, avgdist: 0, alpha: 28.276883639340106, avgscore: 0, wrong_guesses: {}},
SM: {referent: 'SM', occ: 0, right: 0, diag: 11.045361017187261, avgdist: 0, alpha: 19.405153048955945, avgscore: 0, wrong_guesses: {}},
ST: {referent: 'ST', occ: 0, right: 0, diag: 43.9089968002003, avgdist: 0, alpha: 23.936173396160925, avgscore: 0, wrong_guesses: {}},
SA: {referent: 'SA', occ: 0, right: 0, diag: 2073.4946346687275, avgdist: 0, alpha: 303.76199310448055, avgscore: 0, wrong_guesses: {}},
SN: {referent: 'SN', occ: 0, right: 0, diag: 627.2511458738039, avgdist: 0, alpha: 73.10745326166858, avgscore: 0, wrong_guesses: {}},
RS: {referent: 'RS', occ: 0, right: 0, diag: 420.3831585589508, avgdist: 0, alpha: 51.7064056273538, avgscore: 0, wrong_guesses: {}},
SC: {referent: 'SC', occ: 0, right: 0, diag: 30.066592756745816, avgdist: 0, alpha: 22.027674446463326, avgscore: 0, wrong_guesses: {}},
SL: {referent: 'SL', occ: 0, right: 0, diag: 378.78753939378737, avgdist: 0, alpha: 70.10700794265969, avgscore: 0, wrong_guesses: {}},
SG: {referent: 'SG', occ: 0, right: 0, diag: 37.68288736283355, avgdist: 0, alpha: 23.07775868115804, avgscore: 0, wrong_guesses: {}},
SX: {referent: 'NL', occ: 0, right: 0, diag: 8.246211251235321, avgdist: 0, alpha: 19.019224826401885, avgscore: 0, wrong_guesses: {}},
SK: {referent: 'SK', occ: 0, right: 0, diag: 313.16768671112925, avgdist: 0, alpha: 45.22964025118811, avgscore: 0, wrong_guesses: {}},
SI: {referent: 'SI', occ: 0, right: 0, diag: 201.36037346012247, avgdist: 0, alpha: 27.89763900562601, avgscore: 0, wrong_guesses: {}},
SB: {referent: 'SB', occ: 0, right: 0, diag: 240.39966722106752, avgdist: 0, alpha: 51.027005085973144, avgscore: 0, wrong_guesses: {}},
SO: {referent: 'SO', occ: 0, right: 0, diag: 1129.2980120411087, avgdist: 0, alpha: 173.58241902645614, avgscore: 0, wrong_guesses: {}},
ZA: {referent: 'ZA', occ: 0, right: 0, diag: 1562.7136653910723, avgdist: 0, alpha: 211.7170385175186, avgscore: 0, wrong_guesses: {}},
GS: {referent: 'GB', occ: 0, right: 0, diag: 88.35157044444654, avgdist: 0, alpha: 30.06362097359306, avgscore: 0, wrong_guesses: {}},
ES: {referent: 'ES', occ: 0, right: 0, diag: 1005.9741547375856, avgdist: 0, alpha: 179.63389384946177, avgscore: 0, wrong_guesses: {}},
LK: {referent: 'LK', occ: 0, right: 0, diag: 362.2430123549659, avgdist: 0, alpha: 70.56614661578718, avgscore: 0, wrong_guesses: {}},
SD: {referent: 'SD', occ: 0, right: 0, diag: 1942.1987539899205, avgdist: 0, alpha: 285.6597870434162, avgscore: 0, wrong_guesses: {}},
SR: {referent: 'SR', occ: 0, right: 0, diag: 572.3984626114924, avgdist: 0, alpha: 96.80079916931417, avgscore: 0, wrong_guesses: {}},
SJ: {referent: 'NO', occ: 0, right: 0, diag: 349.413794805, avgdist: 0, alpha: 66.05715066928423, avgscore: 0, wrong_guesses: {}},
SZ: {referent: 'SZ', occ: 0, right: 0, diag: 186.35450088473848, avgdist: 0, alpha: 30.704782861375946, avgscore: 0, wrong_guesses: {}},
SE: {referent: 'SE', occ: 0, right: 0, diag: 948.9942044080143, avgdist: 0, alpha: 143.33914546925385, avgscore: 0, wrong_guesses: {}},
CH: {referent: 'CH', occ: 0, right: 0, diag: 287.34648075102643, avgdist: 0, alpha: 39.74273384806, avgscore: 0, wrong_guesses: {}},
SY: {referent: 'SY', occ: 0, right: 0, diag: 608.5720992618706, avgdist: 0, alpha: 101.78818050403503, avgscore: 0, wrong_guesses: {}},
TW: {referent: 'TW', occ: 0, right: 0, diag: 269.04646438858845, avgdist: 0, alpha: 46.64074741475143, avgscore: 0, wrong_guesses: {}},
TJ: {referent: 'TJ', occ: 0, right: 0, diag: 534.9766350038102, avgdist: 0, alpha: 91.64132553591757, avgscore: 0, wrong_guesses: {}},
TZ: {referent: 'TZ', occ: 0, right: 0, diag: 1374.8359902184698, avgdist: 0, alpha: 207.4355685221141, avgscore: 0, wrong_guesses: {}},
TH: {referent: 'TH', occ: 0, right: 0, diag: 1013.0350438163529, avgdist: 0, alpha: 182.84593457002995, avgscore: 0, wrong_guesses: {}},
TL: {referent: 'TL', occ: 0, right: 0, diag: 172.4760852988031, avgdist: 0, alpha: 41.66215167240456, avgscore: 0, wrong_guesses: {}},
TG: {referent: 'TG', occ: 0, right: 0, diag: 337.0014836762592, avgdist: 0, alpha: 64.34582345486709, avgscore: 0, wrong_guesses: {}},
TK: {referent: 'NZ', occ: 0, right: 0, diag: 4.898979485566356, avgdist: 0, alpha: 18.55773068931994, avgscore: 0, wrong_guesses: {}},
TO: {referent: 'TO', occ: 0, right: 0, diag: 38.65229618017538, avgdist: 0, alpha: 23.211414345587176, avgscore: 0, wrong_guesses: {}},
TT: {referent: 'TT', occ: 0, right: 0, diag: 101.2916580968048, avgdist: 0, alpha: 31.84771451803763, avgscore: 0, wrong_guesses: {}},
TN: {referent: 'TN', occ: 0, right: 0, diag: 572.0314676658969, avgdist: 0, alpha: 128.11079046380638, avgscore: 0, wrong_guesses: {}},
TR: {referent: 'TR', occ: 0, right: 0, diag: 1251.8482336130046, avgdist: 0, alpha: 172.31151042579748, avgscore: 0, wrong_guesses: {}},
TM: {referent: 'TM', occ: 0, right: 0, diag: 988.0283396745257, avgdist: 0, alpha: 154.10509265385716, avgscore: 0, wrong_guesses: {}},
TC: {referent: 'GB', occ: 0, right: 0, diag: 43.54308211415448, avgdist: 0, alpha: 23.88572350380082, avgscore: 0, wrong_guesses: {}},
TV: {referent: 'TV', occ: 0, right: 0, diag: 7.211102550927978, avgdist: 0, alpha: 18.8765108974371, avgscore: 0, wrong_guesses: {}},
UG: {referent: 'UG', occ: 0, right: 0, diag: 695.0539547402058, avgdist: 0, alpha: 93.43761686271378, avgscore: 0, wrong_guesses: {}},
UA: {referent: 'UA', occ: 0, right: 0, diag: 1098.6355173577815, avgdist: 0, alpha: 131.27558206096515, avgscore: 0, wrong_guesses: {}},
AE: {referent: 'AE', occ: 0, right: 0, diag: 408.90096600521747, avgdist: 0, alpha: 74.25884767218167, avgscore: 0, wrong_guesses: {}},
GB: {referent: 'GB', occ: 0, right: 0, diag: 696.993543729065, avgdist: 0, alpha: 52.34154686594558, avgscore: 0, wrong_guesses: {}},
US: {referent: 'US', occ: 0, right: 0, diag: 4329.57503688295, avgdist: 0, alpha: 833.0938531816965, avgscore: 0, wrong_guesses: {}},
UM: {referent: 'US', occ: 0, right: 0, diag: 8.270429251254134, avgdist: 0, alpha: 19.02256384377593, avgscore: 0, wrong_guesses: {}},
UY: {referent: 'UY', occ: 0, right: 0, diag: 601.7208655182235, avgdist: 0, alpha: 68.601955692236, avgscore: 0, wrong_guesses: {}},
UZ: {referent: 'UZ', occ: 0, right: 0, diag: 945.9386872308373, avgdist: 0, alpha: 148.30205026109445, avgscore: 0, wrong_guesses: {}},
VU: {referent: 'VU', occ: 0, right: 0, diag: 156.13455735358525, avgdist: 0, alpha: 39.409090078334884, avgscore: 0, wrong_guesses: {}},
VE: {referent: 'VE', occ: 0, right: 0, diag: 1353.8426791913453, avgdist: 0, alpha: 204.54114989944085, avgscore: 0, wrong_guesses: {}},
VN: {referent: 'VN', occ: 0, right: 0, diag: 813.8943420370975, avgdist: 0, alpha: 130.09665087203942, avgscore: 0, wrong_guesses: {}},
VG: {referent: 'GB', occ: 0, right: 0, diag: 17.378147196982766, avgdist: 0, alpha: 20.278275646364467, avgscore: 0, wrong_guesses: {}},
VI: {referent: 'US', occ: 0, right: 0, diag: 26.343879744638983, avgdist: 0, alpha: 21.51441144306248, avgscore: 0, wrong_guesses: {}},
WF: {referent: 'FR', occ: 0, right: 0, diag: 16.852299546352718, avgdist: 0, alpha: 20.205775256563825, avgscore: 0, wrong_guesses: {}},
EH: {referent: 'MA', occ: 0, right: 0, diag: 729.3833011524188, avgdist: 0, alpha: 118.44482852528982, avgscore: 0, wrong_guesses: {}},
YE: {referent: 'YE', occ: 0, right: 0, diag: 1027.5874658636121, avgdist: 0, alpha: 159.55924285391046, avgscore: 0, wrong_guesses: {}},
ZM: {referent: 'ZM', occ: 0, right: 0, diag: 1226.8757068260827, avgdist: 0, alpha: 187.0357850332875, avgscore: 0, wrong_guesses: {}},
ZW: {referent: 'ZW', occ: 0, right: 0, diag: 884.0328048211786, avgdist: 0, alpha: 139.76687738302752, avgscore: 0, wrong_guesses: {}}
};
const estimate_score = (d, a) => 5000*Math.exp(-d/a);
const ERROR_RESP = -1000000;
let state = JSON.parse(localStorage.getItem("CountryData")) || DefaultCountryDict;
let userNick = null;
let userHexId = null;
let apiUrl = null;
let solo = null;
let ranked = null;
let mode = null;
let teams = null;
let updateUI = true;
function checkGameMode() {
if (location.pathname.includes("/game/")) {
solo = true;
ranked = false;
teams = false;
const gameTag = location.href.substring(location.href.lastIndexOf('/') + 1);
apiUrl = "https://www.geoguessr.com/api/v3/games/"+gameTag;
return true;
}
if (location.pathname.includes("/duels/")) {
return false; // Not possible to query the game server api from a duel game
solo = false;
const gameTag = location.href.substring(location.href.lastIndexOf('/') + 1);
apiUrl = "https://game-server.geoguessr.com/api/duels/"+gameTag;
return true;
}
return false;
};
if (updateUI) {
var style = document.createElement("style");
document.head.appendChild(style);
style.sheet.insertRule("div[class*='round-result_wrapper__'] { transform: translateX(0); justify-content: space-between }")
style.sheet.insertRule("div[class*='round-result_distanceIndicatorWrapper__'] { animation-delay: 0s, 0s; animation-duration: 0s, 0s; margin-right: 28px }")
style.sheet.insertRule("div[class*='round-result_actions__'] { animation-delay: 0s; animation-duration: 0s; margin: 0px; margin-top: 10px; margin-bottom: 10px }")
style.sheet.insertRule("div[class*='round-result_pointsIndicatorWrapper__'] { animation-delay: 0s, 0s; animation-duration: 0s, 0s; margin-right: 28px }")
}
function parseScore(number) {
const numberString = parseInt(number).toString();
if (number >= 1000) {
const firstDigit = numberString[0];
const restOfDigits = numberString.slice(1);
return firstDigit + ',' + restOfDigits;
} else {
return numberString;
}
};
const shadowStyle = `
text-shadow:
0 .25rem 0 #006400,
.125rem .125rem .5rem #32CD32,
0 -.25rem .5rem #7CFC00,
-.25rem .5rem .5rem #20B2AA,
0 .375rem 2rem #32CD32,
0 0 0 #20B2AA,
0 0 1.5rem rgba(102, 255, 102, .65),
.25rem .25rem 1rem #66CDAA;
`;
const newFormat = (score) => `
<div class="${cn("shadow-text_root__")} ${cn("shadow-text_sizeSmallMedium__")}" style="${shadowStyle}"">
${parseScore(score)}
</div>
<p class="${cn("round-result_label__")} ${cn("round-result_indicatorLabel__")}"> Country-wise </p>
`
function addCountryResult(score) {
if (document.getElementById("results-row") == null && !!document.querySelector('div[class*="round-result_distanceIndicatorWrapper__"]')) {
const resultsContainer = document.querySelector("div[class*='round-result_wrapper__']");
const topRow = document.createElement("div");
topRow.id = "results-row";
topRow.style = "display: flex;flex-direction: row";
const distanceIndicator = document.querySelector("div[class*='round-result_distanceIndicatorWrapper__']");
distanceIndicator.parentNode.removeChild(distanceIndicator);
distanceIndicator.style.marginRight = '3vw';
const pointsIndicator = document.querySelector("div[class*='round-result_pointsIndicatorWrapper__']");
pointsIndicator.parentNode.removeChild(pointsIndicator);
pointsIndicator.style.marginRight = '3vw';
const newDiv = document.createElement("div");
newDiv.id = "country-wise";
newDiv.className = cn("round-result_pointsIndicatorWrapper__");
newDiv.innerHTML = newFormat(score);
newDiv.style.marginRight = '3vw';
topRow.appendChild(distanceIndicator);
topRow.appendChild(pointsIndicator);
topRow.appendChild(newDiv);
resultsContainer.insertBefore(topRow, resultsContainer.firstChild);
if (document.querySelector("span[class*='button_label__']").textContent == 'Next') {
document.querySelector("span[class*='button_label__']").textContent += ' >';
}
const nextButton = document.querySelector("div[class*='round-result_actions__']");
nextButton.style.transform = 'translateX(-2vw)';
const clone = nextButton.cloneNode(true);
clone.style.opacity = '0';
resultsContainer.insertBefore(clone, resultsContainer.firstChild);
};
};
function updateState(guess, ans, dist) {
if ((guess === ERROR_RESP) || (ans === ERROR_RESP)) {
return;
}
let good = (guess == ans);
//state[ans].occ += 1;
let score = estimate_score(dist, state[ans].alpha);
if (updateUI) addCountryResult(score);
const data = {
username: userNick,
player_hexid: userHexId,
actualCountryCode: ans,
guessedCountryCode: guess,
mode: mode,
score: score.toFixed(1),
distance: dist,
};
fetch(statsServerUrl+'/guess', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(data)
}).then(response => response.json()).then(data => console.log('Success:', data)).catch((error) => console.error('Error:', error));
/*if (good) {
state[ans].avgdist = (state[ans].avgdist*state[ans].right + dist)/(state[ans].right+1);
console.log(score);
state[ans].avgscore = (state[ans].avgscore*state[ans].right + score)/(state[ans].right+1);
state[ans].right += 1;
} else {
if (!(guess in state[ans].wrong_guesses)) {
state[ans].wrong_guesses[guess] = 0;
}
state[ans].wrong_guesses[guess] += 1;
}
console.log(state[ans]);
localStorage.setItem("CountryData", JSON.stringify(state));*/
};
async function getCountryCode(coords) {
if (coords[0] <= -85.05) return 'AQ';
if (API_Key.toLowerCase().match("^(bdc_)?[a-f0-9]{32}$") != null) {
const api = "https://api.bigdatacloud.net/data/reverse-geocode?latitude="+coords.lat+"&longitude="+coords.lng+"&localityLanguage=en&key="+API_Key;
return await fetch(api)
.then(res => (res.status !== 200) ? ERROR_RESP : res.json())
.then(out => (out === ERROR_RESP) ? ERROR_RESP : out.countryCode);
} else {
const api = `https://nominatim.openstreetmap.org/reverse.php?lat=${coords.lat}&lon=${coords.lng}&zoom=21&format=jsonv2&accept-language=en`;
return await fetch(api)
.then(res => (res.status !== 200) ? ERROR_RESP : res.json())
.then(out => (out === ERROR_RESP) ? ERROR_RESP : state[out?.address?.country_code?.toUpperCase()].referent);
}
};
function deductMode(m, p, z) {
if (m && p && z) {
mode = 'move';
} else if (!m && p && z) {
mode = 'nm';
} else if (!m && !p && !z) {
mode = 'nmpz';
} else {
console.error("game mode not supported");
}
}
function getUserInfo() {
fetch('https://www.geoguessr.com/api/v3/profiles')
.then(res => res.json())
.then((out) => {
userHexId = out.user.id;
userNick = out.user.nick;
}).catch(err => { throw err });
}
function checkModesSolo(out) {
const m = !out.forbidMoving;
const p = !out.forbidRotating;
const z = !out.forbidZooming;
deductMode(m, p, z);
}
function checkModesDuel(out) {
const m = !out.movementOptions.forbidMoving;
const p = !out.movementOptions.forbidRotating;
const z = !out.movementOptions.forbidZooming;
deductMode(m, p, z);
teams = out.options.isTeamDuels;
ranked = out.options.isRated;
}
function checkModes() {
getUserInfo();
fetch(apiUrl)
.then(res => res.json())
.then((out) => {
if (solo) {
checkModesSolo(out);
} else {
checkModesDuel(out);
}
console.log(solo);
console.log(ranked);
console.log(mode);
console.log(teams);
console.log(apiUrl);
console.log(userHexId);
}).catch(err => { throw err });
}
function getSoloData(out) {
const guessCounter = out.player.guesses.length;
const round = out.rounds[guessCounter-1];
const guess = out.player.guesses[guessCounter-1];
let dist = parseFloat(guess.distance.meters.amount);
const unit = guess.distance.meters.unit;
if (unit === 'm') {
dist = dist/1000;
}
if (guess.lat == lastGuess.lat && guess.lng == lastGuess.lng) return;
lastGuess = guess;
const roundCountryCode = round.streakLocationCode.toUpperCase();
getCountryCode(guess).then(guessCountryCode => {
console.log(guessCountryCode);
console.log(roundCountryCode);
if (guessCountryCode == ERROR_RESP || roundCountryCode == ERROR_RESP) {
updateState(ERROR_RESP, ERROR_RESP, false, dist);
} else {
updateState(guessCountryCode, roundCountryCode, dist);
}
});
}
function getDuelData(out) {
const roundIdx = out.teams[0].roundResults.length - 1;
const round = out.rounds[roundIdx].panorama;
let guess = null;
out.teams.forEach(team => {
team.players.forEach(player => {
if (player.playerId == userHexId) {
guess = player.guesses[roundIdx];
}
});
});
let dist = parseFloat(guess.distance)/1000;
const roundCountryCode = round.countryCode.toUpperCase();
getCountryCode(guess).then(guessCountryCode => {
console.log(guessCountryCode);
console.log(roundCountryCode);
if (guessCountryCode == ERROR_RESP || roundCountryCode == ERROR_RESP) {
updateState(ERROR_RESP, ERROR_RESP, false, dist);
} else {
updateState(guessCountryCode, roundCountryCode, dist);
}
});
}
let lastGuess = { lat: 91, lng: 0 };
function run() {
fetch(apiUrl)
.then(res => res.json())
.then((out) => {
if (solo) {
getSoloData(out);
} else {
getDuelData(out);
}
}).catch(err => { throw err });
};
let lastDoCheckCall = 0;
// Any changes in the DOM triggers the MutationObserver callback
new MutationObserver(async (mutations) => {
// First make sure we are in a game
if (!checkGameMode()) {
sessionStorage.setItem("modesChecked", 0);
return;
}
if (lastDoCheckCall >= (Date.now() - 50)) return;
lastDoCheckCall = Date.now();
await scanStyles();
// Then check the different modes (solo, ranked, teams, nmpz)
if ((sessionStorage.getItem("modesChecked") || 0) == 0) { // for team duels there should be a delay because it needs time to find opponents
checkModes();
sessionStorage.setItem("modesChecked", 1);
}
// Then make sure we are in the round results screen
if (!document.querySelector('div[class*="result-layout_root__"]')) {
sessionStorage.setItem("roundChecked", 0);
return;
} else if ((sessionStorage.getItem("roundChecked") || 0) == 0) {
run();
sessionStorage.setItem("roundChecked", 1);
}
}).observe(document.body, { subtree: true, childList: true });
// document.addEventListener('keypress', (e) => {
// if (e.key == '1') {
// updateStreak(streak + 1);
// } else if (e.key == '2') {
// updateStreak(streak - 1);
// } else if (e.key == '8') {
// const streakBackup = parseInt(sessionStorage.getItem("StreakBackup") || 0, 10);
// updateStreak(streakBackup + 1);
// } else if (e.key == '0') {
// updateStreak(0);
// sessionStorage.setItem("StreakBackup", 0);
// };
// });