From b3fc5846f3a571b41b7d96c13b63d879e7e4ef56 Mon Sep 17 00:00:00 2001 From: Evan Williams Date: Fri, 7 Feb 2025 00:50:49 -0800 Subject: [PATCH] Add Collections Logged, Royal Titans --- README.md | 26 +- __tests__/b0atyStats.csv | 208 ++++----- __tests__/b0atyStats.json | 768 +++++++++++++++++----------------- __tests__/hiscores.test.ts | 4 + __tests__/lynxTitanStats.json | 158 +++---- src/hiscores.ts | 10 +- src/types.ts | 3 + src/utils/constants.ts | 2 + 8 files changed, 611 insertions(+), 568 deletions(-) diff --git a/README.md b/README.md index 49ac5fa..7103c3c 100644 --- a/README.md +++ b/README.md @@ -92,17 +92,18 @@ Activities consist of all levels of clue scrolls as well as minigames and bosses ### Minigames -| Minigame | Param | -| ------------------------------- | :---------------: | -| Bounty Hunter (Legacy - Rogue) | `rogueBH` | -| Bounty Hunter (Legacy - Hunter) | `hunterBH` | -| Bounty Hunter (Rogue) | `rogueBHV2` | -| Bounty Hunter (Hunter) | `hunterBHV2` | -| LMS - Rank | `lastManStanding` | -| PvP Arena - Rank | `pvpArena` | -| Soul Wars Zeal | `soulWarsZeal` | -| Rifts closed | `riftsClosed` | -| Colosseum Glory | `colosseumGlory` | +| Minigame | Param | +| ------------------------------- | :-----------------: | +| Bounty Hunter (Legacy - Rogue) | `rogueBH` | +| Bounty Hunter (Legacy - Hunter) | `hunterBH` | +| Bounty Hunter (Rogue) | `rogueBHV2` | +| Bounty Hunter (Hunter) | `hunterBHV2` | +| LMS - Rank | `lastManStanding` | +| PvP Arena - Rank | `pvpArena` | +| Soul Wars Zeal | `soulWarsZeal` | +| Rifts closed | `riftsClosed` | +| Colosseum Glory | `colosseumGlory` | +| Collections Logged | `collectionsLogged` | ### Points @@ -164,6 +165,7 @@ Activities consist of all levels of clue scrolls as well as minigames and bosses | The Corrupted Gauntlet | `corruptedGauntlet` | | The Hueycoatl | `hueycoatl` | | The Leviathan | `leviathan` | +| The Royal Titans | `royalTitans` | | The Whisperer | `whisperer` | | Theatre Of Blood | `theatreOfBlood` | | Theatre Of Blood: Hard Mode | `theatreOfBloodHardMode` | @@ -205,6 +207,8 @@ Activities consist of all levels of clue scrolls as well as minigames and bosses pvpArena: {}, soulWarsZeal: {}, riftsClosed: {}, + colosseumGlory: {}, + collectionsLogged: {}, bosses: {} } } diff --git a/__tests__/b0atyStats.csv b/__tests__/b0atyStats.csv index bd4b359..370869a 100644 --- a/__tests__/b0atyStats.csv +++ b/__tests__/b0atyStats.csv @@ -1,106 +1,108 @@ -2130,2277,1102428578 -22624,99,32956104 -3574,99,47147957 -1226,99,200000000 -1454,99,180249986 -3112,99,155438899 -2533,99,17520811 -2078,99,84629930 -150276,99,13378420 -23833,99,19182079 -61715,99,13456926 -24604,99,16672148 -19900,99,19161337 -53450,99,14082613 -12063,99,16553015 -32871,99,14985851 -39747,99,13346314 -8390,99,15771711 -55848,99,14322777 -1723,99,52832158 -2107,99,101923913 -5301,99,22739376 -20087,99,18044758 -1301,99,18031495 +2210,2277,1150073045 +23988,99,33320012 +3114,99,51215128 +1203,99,200000000 +1372,99,196290925 +3458,99,159426771 +2746,99,17744970 +2031,99,91566360 +161852,99,13386665 +25801,99,19461878 +64826,99,13473417 +26528,99,16672481 +20829,99,19483653 +58378,99,14103220 +13188,99,16573909 +36283,99,15061037 +17138,99,14670565 +8751,99,16169665 +60803,99,14390315 +1718,99,57850681 +2117,99,110369178 +5540,99,22739567 +22326,99,18052465 +1467,99,18050183 -1,-1 -1,-1 -32847,10 -16567,3 -147262,8 -101823,7 -382,9739 -1265,825 -131,6000 -2401,1606 -43386,311 -799,460 -945,537 -5531,5516 +38135,10 +19368,3 +146220,8 +100923,7 +433,9802 +1542,825 +158,6000 +2572,1606 +47979,311 +1081,460 +880,600 +4258,6785 -1,-1 -7538,14780 -6781,1060 -6880,43487 -3193,2192 -2932,4796 -123,6789 -37,111 -44605,143 -4023,1830 -238149,5 -47139,293 -98811,58 -10766,2657 -200557,34 -1735,692 -23548,215 -43337,116 -61439,287 -2859,2000 -53841,106 -18420,1078 -23824,1062 -18418,1088 -85908,25 -6077,1320 -21980,1228 -76561,477 -774,3642 -7917,281 -2313,2046 -52832,580 -64296,2899 -4205,1740 -2681,1444 -3424,324 -523,48 -35420,626 -4162,749 -5046,500 -1218,217 -21243,379 -40733,249 -53931,91 -4870,1245 -174877,29 -2122,49 -3471,1569 -50947,273 -236110,7 -102423,201 -2344,21039 -10174,666 -665,2072 -23177,310 -1967,419 -8495,3066 -122123,37 -240,1537 -7756,7 -140561,8 -4736,2113 -249,7096 -89194,51 -15067,2780 -975929,62 -196393,25 -227062,340 \ No newline at end of file +7596,14780 +8124,1060 +10438,43487 +1114,1155 +3497,2192 +3204,4796 +1087,984 +2230,2328 +51533,143 +4243,1830 +256985,5 +54424,293 +114691,58 +11700,2657 +211708,34 +1779,736 +24958,215 +46504,116 +66096,287 +3133,2000 +26682,198 +19337,1078 +25021,1062 +19290,1088 +89474,25 +7535,1320 +23251,1228 +82016,477 +876,3642 +7073,310 +2476,2046 +55411,580 +68801,2899 +4608,1740 +3079,1444 +8344,324 +540,53 +38395,626 +4176,749 +5519,500 +1394,217 +26127,379 +49730,249 +57206,91 +6106,1245 +185920,29 +3232,49 +4276,1569 +57314,273 +256794,7 +113862,201 +1969,538 +12346,671 +5608,149 +550,2450 +25557,310 +1391,538 +9325,3066 +131996,37 +214,1720 +8902,7 +148385,8 +6120,2113 +287,7096 +97368,51 +15591,2780 +1000407,67 +213696,25 +240082,340 \ No newline at end of file diff --git a/__tests__/b0atyStats.json b/__tests__/b0atyStats.json index 48a3c81..2f3c0d6 100644 --- a/__tests__/b0atyStats.json +++ b/__tests__/b0atyStats.json @@ -3,170 +3,170 @@ { "id": 0, "name": "Overall", - "rank": 2130, + "rank": 2210, "level": 2277, - "xp": 1102428578 + "xp": 1150073045 }, { "id": 1, "name": "Attack", - "rank": 22624, + "rank": 23988, "level": 99, - "xp": 32956104 + "xp": 33320012 }, { "id": 2, "name": "Defence", - "rank": 3574, + "rank": 3114, "level": 99, - "xp": 47147957 + "xp": 51215128 }, { "id": 3, "name": "Strength", - "rank": 1226, + "rank": 1203, "level": 99, "xp": 200000000 }, { "id": 4, "name": "Hitpoints", - "rank": 1454, + "rank": 1372, "level": 99, - "xp": 180249986 + "xp": 196290925 }, { "id": 5, "name": "Ranged", - "rank": 3112, + "rank": 3458, "level": 99, - "xp": 155438899 + "xp": 159426771 }, { "id": 6, "name": "Prayer", - "rank": 2533, + "rank": 2746, "level": 99, - "xp": 17520811 + "xp": 17744970 }, { "id": 7, "name": "Magic", - "rank": 2078, + "rank": 2031, "level": 99, - "xp": 84629930 + "xp": 91566360 }, { "id": 8, "name": "Cooking", - "rank": 150276, + "rank": 161852, "level": 99, - "xp": 13378420 + "xp": 13386665 }, { "id": 9, "name": "Woodcutting", - "rank": 23833, + "rank": 25801, "level": 99, - "xp": 19182079 + "xp": 19461878 }, { "id": 10, "name": "Fletching", - "rank": 61715, + "rank": 64826, "level": 99, - "xp": 13456926 + "xp": 13473417 }, { "id": 11, "name": "Fishing", - "rank": 24604, + "rank": 26528, "level": 99, - "xp": 16672148 + "xp": 16672481 }, { "id": 12, "name": "Firemaking", - "rank": 19900, + "rank": 20829, "level": 99, - "xp": 19161337 + "xp": 19483653 }, { "id": 13, "name": "Crafting", - "rank": 53450, + "rank": 58378, "level": 99, - "xp": 14082613 + "xp": 14103220 }, { "id": 14, "name": "Smithing", - "rank": 12063, + "rank": 13188, "level": 99, - "xp": 16553015 + "xp": 16573909 }, { "id": 15, "name": "Mining", - "rank": 32871, + "rank": 36283, "level": 99, - "xp": 14985851 + "xp": 15061037 }, { "id": 16, "name": "Herblore", - "rank": 39747, + "rank": 17137, "level": 99, - "xp": 13346314 + "xp": 14670565 }, { "id": 17, "name": "Agility", - "rank": 8390, + "rank": 8751, "level": 99, - "xp": 15771711 + "xp": 16169665 }, { "id": 18, "name": "Thieving", - "rank": 55848, + "rank": 60803, "level": 99, - "xp": 14322777 + "xp": 14390315 }, { "id": 19, "name": "Slayer", - "rank": 1723, + "rank": 1718, "level": 99, - "xp": 52832158 + "xp": 57850681 }, { "id": 20, "name": "Farming", - "rank": 2107, + "rank": 2117, "level": 99, - "xp": 101923913 + "xp": 110369178 }, { "id": 21, "name": "Runecraft", - "rank": 5301, + "rank": 5540, "level": 99, - "xp": 22739376 + "xp": 22739567 }, { "id": 22, "name": "Hunter", - "rank": 20087, + "rank": 22326, "level": 99, - "xp": 18044758 + "xp": 18052465 }, { "id": 23, "name": "Construction", - "rank": 1301, + "rank": 1467, "level": 99, - "xp": 18031495 + "xp": 18050183 } ], "activities": [ @@ -185,74 +185,74 @@ { "id": 2, "name": "Bounty Hunter - Hunter", - "rank": 32847, + "rank": 38135, "score": 10 }, { "id": 3, "name": "Bounty Hunter - Rogue", - "rank": 16567, + "rank": 19368, "score": 3 }, { "id": 4, "name": "Bounty Hunter (Legacy) - Hunter", - "rank": 147262, + "rank": 146220, "score": 8 }, { "id": 5, "name": "Bounty Hunter (Legacy) - Rogue", - "rank": 101823, + "rank": 100923, "score": 7 }, { "id": 6, "name": "Clue Scrolls (all)", - "rank": 382, - "score": 9739 + "rank": 433, + "score": 9802 }, { "id": 7, "name": "Clue Scrolls (beginner)", - "rank": 1265, + "rank": 1542, "score": 825 }, { "id": 8, "name": "Clue Scrolls (easy)", - "rank": 131, + "rank": 158, "score": 6000 }, { "id": 9, "name": "Clue Scrolls (medium)", - "rank": 2401, + "rank": 2572, "score": 1606 }, { "id": 10, "name": "Clue Scrolls (hard)", - "rank": 43386, + "rank": 47979, "score": 311 }, { "id": 11, "name": "Clue Scrolls (elite)", - "rank": 799, + "rank": 1081, "score": 460 }, { "id": 12, "name": "Clue Scrolls (master)", - "rank": 945, - "score": 537 + "rank": 880, + "score": 600 }, { "id": 13, "name": "LMS - Rank", - "rank": 5531, - "score": 5516 + "rank": 4258, + "score": 6785 }, { "id": 14, @@ -263,404 +263,416 @@ { "id": 15, "name": "Soul Wars Zeal", - "rank": 7538, + "rank": 7596, "score": 14780 }, { "id": 16, "name": "Rifts closed", - "rank": 6781, + "rank": 8124, "score": 1060 }, { "id": 17, "name": "Colosseum Glory", - "rank": 6880, + "rank": 10438, "score": 43487 }, { "id": 18, - "name": "Abyssal Sire", - "rank": 3193, - "score": 2192 + "name": "Collections Logged", + "rank": 1114, + "score": 1155 }, { "id": 19, - "name": "Alchemical Hydra", - "rank": 2932, - "score": 4796 + "name": "Abyssal Sire", + "rank": 3497, + "score": 2192 }, { "id": 20, - "name": "Amoxliatl", - "rank": 123, - "score": 6789 + "name": "Alchemical Hydra", + "rank": 3204, + "score": 4796 }, { "id": 21, - "name": "Araxxor", - "rank": 37, - "score": 111 + "name": "Amoxliatl", + "rank": 1087, + "score": 984 }, { "id": 22, - "name": "Artio", - "rank": 44605, - "score": 143 + "name": "Araxxor", + "rank": 2230, + "score": 2328 }, { "id": 23, - "name": "Barrows Chests", - "rank": 4023, - "score": 1830 + "name": "Artio", + "rank": 51533, + "score": 143 }, { "id": 24, - "name": "Bryophyta", - "rank": 238149, - "score": 5 + "name": "Barrows Chests", + "rank": 4243, + "score": 1830 }, { "id": 25, - "name": "Callisto", - "rank": 47139, - "score": 293 + "name": "Bryophyta", + "rank": 256985, + "score": 5 }, { "id": 26, - "name": "Calvar'ion", - "rank": 98811, - "score": 58 + "name": "Callisto", + "rank": 54424, + "score": 293 }, { "id": 27, - "name": "Cerberus", - "rank": 10766, - "score": 2657 + "name": "Calvar'ion", + "rank": 114691, + "score": 58 }, { "id": 28, - "name": "Chambers of Xeric", - "rank": 200557, - "score": 34 + "name": "Cerberus", + "rank": 11700, + "score": 2657 }, { "id": 29, - "name": "Chambers of Xeric: Challenge Mode", - "rank": 1735, - "score": 692 + "name": "Chambers of Xeric", + "rank": 211708, + "score": 34 }, { "id": 30, - "name": "Chaos Elemental", - "rank": 23548, - "score": 215 + "name": "Chambers of Xeric: Challenge Mode", + "rank": 1779, + "score": 736 }, { "id": 31, - "name": "Chaos Fanatic", - "rank": 43337, - "score": 116 + "name": "Chaos Elemental", + "rank": 24958, + "score": 215 }, { "id": 32, - "name": "Commander Zilyana", - "rank": 61439, - "score": 287 + "name": "Chaos Fanatic", + "rank": 46504, + "score": 116 }, { "id": 33, - "name": "Corporeal Beast", - "rank": 2859, - "score": 2000 + "name": "Commander Zilyana", + "rank": 66096, + "score": 287 }, { "id": 34, - "name": "Crazy Archaeologist", - "rank": 53841, - "score": 106 + "name": "Corporeal Beast", + "rank": 3133, + "score": 2000 }, { "id": 35, - "name": "Dagannoth Prime", - "rank": 18420, - "score": 1078 + "name": "Crazy Archaeologist", + "rank": 26682, + "score": 198 }, { "id": 36, - "name": "Dagannoth Rex", - "rank": 23824, - "score": 1062 + "name": "Dagannoth Prime", + "rank": 19337, + "score": 1078 }, { "id": 37, - "name": "Dagannoth Supreme", - "rank": 18418, - "score": 1088 + "name": "Dagannoth Rex", + "rank": 25021, + "score": 1062 }, { "id": 38, - "name": "Deranged Archaeologist", - "rank": 85908, - "score": 25 + "name": "Dagannoth Supreme", + "rank": 19290, + "score": 1088 }, { "id": 39, - "name": "Duke Sucellus", - "rank": 6077, - "score": 1320 - }, - { - "id": 40, - "name": "General Graardor", - "rank": 21980, - "score": 1228 - }, - { - "id": 41, - "name": "Giant Mole", - "rank": 76561, - "score": 477 - }, - { - "id": 42, - "name": "Grotesque Guardians", - "rank": 774, - "score": 3642 - }, - { - "id": 43, - "name": "Hespori", - "rank": 7917, - "score": 281 - }, - { - "id": 44, - "name": "Kalphite Queen", - "rank": 2313, - "score": 2046 - }, - { - "id": 45, - "name": "King Black Dragon", - "rank": 52832, - "score": 580 - }, - { - "id": 46, - "name": "Kraken", - "rank": 64296, - "score": 2899 - }, - { - "id": 47, - "name": "Kree'Arra", - "rank": 4205, - "score": 1740 - }, - { - "id": 48, - "name": "K'ril Tsutsaroth", - "rank": 2681, - "score": 1444 - }, - { - "id": 49, - "name": "Lunar Chests", - "rank": 3424, - "score": 324 - }, - { - "id": 50, - "name": "Mimic", - "rank": 523, - "score": 48 - }, - { - "id": 51, - "name": "Nex", - "rank": 35420, - "score": 626 - }, - { - "id": 52, - "name": "Nightmare", - "rank": 4162, - "score": 749 - }, - { - "id": 53, - "name": "Phosani's Nightmare", - "rank": 5046, - "score": 500 - }, - { - "id": 54, - "name": "Obor", - "rank": 1218, - "score": 217 - }, - { - "id": 55, - "name": "Phantom Muspah", - "rank": 21243, - "score": 379 - }, - { - "id": 56, - "name": "Sarachnis", - "rank": 40733, - "score": 249 - }, - { - "id": 57, - "name": "Scorpia", - "rank": 53931, - "score": 91 - }, - { - "id": 58, - "name": "Scurrius", - "rank": 4870, - "score": 1245 - }, - { - "id": 59, - "name": "Skotizo", - "rank": 174877, - "score": 29 - }, - { - "id": 60, - "name": "Sol Heredit", - "rank": 2122, - "score": 49 - }, - { - "id": 61, - "name": "Spindel", - "rank": 3471, - "score": 1569 - }, - { - "id": 62, - "name": "Tempoross", - "rank": 50947, - "score": 273 - }, - { - "id": 63, - "name": "The Gauntlet", - "rank": 236110, - "score": 7 - }, - { - "id": 64, - "name": "The Corrupted Gauntlet", - "rank": 102423, - "score": 201 - }, - { - "id": 65, - "name": "The Hueycoatl", - "rank": 2344, - "score": 21039 - }, - { - "id": 66, - "name": "The Leviathan", - "rank": 10174, - "score": 666 - }, - { - "id": 67, - "name": "The Whisperer", - "rank": 665, - "score": 2072 - }, - { - "id": 68, - "name": "Theatre of Blood", - "rank": 23177, - "score": 310 - }, - { - "id": 69, - "name": "Theatre of Blood: Hard Mode", - "rank": 1967, - "score": 419 - }, - { - "id": 70, - "name": "Thermonuclear Smoke Devil", - "rank": 8495, - "score": 3066 - }, - { - "id": 71, - "name": "Tombs of Amascut", - "rank": 122123, - "score": 37 - }, - { - "id": 72, - "name": "Tombs of Amascut: Expert Mode", - "rank": 240, - "score": 1537 - }, - { - "id": 73, - "name": "TzKal-Zuk", - "rank": 7756, - "score": 7 - }, - { - "id": 74, - "name": "TzTok-Jad", - "rank": 140561, - "score": 8 - }, - { - "id": 75, - "name": "Vardorvis", - "rank": 4736, - "score": 2113 - }, - { - "id": 76, - "name": "Venenatis", - "rank": 249, - "score": 7096 - }, - { - "id": 77, - "name": "Vet'ion", - "rank": 89194, - "score": 51 - }, - { - "id": 78, - "name": "Vorkath", - "rank": 15067, - "score": 2780 - }, - { - "id": 79, - "name": "Wintertodt", - "rank": 975929, - "score": 62 - }, - { - "id": 80, - "name": "Zalcano", - "rank": 196393, + "name": "Deranged Archaeologist", + "rank": 89474, "score": 25 }, + { + "id": 40, + "name": "Duke Sucellus", + "rank": 7535, + "score": 1320 + }, + { + "id": 41, + "name": "General Graardor", + "rank": 23251, + "score": 1228 + }, + { + "id": 42, + "name": "Giant Mole", + "rank": 82016, + "score": 477 + }, + { + "id": 43, + "name": "Grotesque Guardians", + "rank": 876, + "score": 3642 + }, + { + "id": 44, + "name": "Hespori", + "rank": 7073, + "score": 310 + }, + { + "id": 45, + "name": "Kalphite Queen", + "rank": 2476, + "score": 2046 + }, + { + "id": 46, + "name": "King Black Dragon", + "rank": 55411, + "score": 580 + }, + { + "id": 47, + "name": "Kraken", + "rank": 68801, + "score": 2899 + }, + { + "id": 48, + "name": "Kree'Arra", + "rank": 4608, + "score": 1740 + }, + { + "id": 49, + "name": "K'ril Tsutsaroth", + "rank": 3079, + "score": 1444 + }, + { + "id": 50, + "name": "Lunar Chests", + "rank": 8344, + "score": 324 + }, + { + "id": 51, + "name": "Mimic", + "rank": 540, + "score": 53 + }, + { + "id": 52, + "name": "Nex", + "rank": 38395, + "score": 626 + }, + { + "id": 53, + "name": "Nightmare", + "rank": 4176, + "score": 749 + }, + { + "id": 54, + "name": "Phosani's Nightmare", + "rank": 5519, + "score": 500 + }, + { + "id": 55, + "name": "Obor", + "rank": 1394, + "score": 217 + }, + { + "id": 56, + "name": "Phantom Muspah", + "rank": 26127, + "score": 379 + }, + { + "id": 57, + "name": "Sarachnis", + "rank": 49730, + "score": 249 + }, + { + "id": 58, + "name": "Scorpia", + "rank": 57206, + "score": 91 + }, + { + "id": 59, + "name": "Scurrius", + "rank": 6106, + "score": 1245 + }, + { + "id": 60, + "name": "Skotizo", + "rank": 185920, + "score": 29 + }, + { + "id": 61, + "name": "Sol Heredit", + "rank": 3232, + "score": 49 + }, + { + "id": 62, + "name": "Spindel", + "rank": 4276, + "score": 1569 + }, + { + "id": 63, + "name": "Tempoross", + "rank": 57314, + "score": 273 + }, + { + "id": 64, + "name": "The Gauntlet", + "rank": 256794, + "score": 7 + }, + { + "id": 65, + "name": "The Corrupted Gauntlet", + "rank": 113862, + "score": 201 + }, + { + "id": 66, + "name": "The Hueycoatl", + "rank": 1969, + "score": 538 + }, + { + "id": 67, + "name": "The Leviathan", + "rank": 12346, + "score": 671 + }, + { + "id": 68, + "name": "The Royal Titans", + "rank": 5606, + "score": 149 + }, + { + "id": 69, + "name": "The Whisperer", + "rank": 550, + "score": 2450 + }, + { + "id": 70, + "name": "Theatre of Blood", + "rank": 25557, + "score": 310 + }, + { + "id": 71, + "name": "Theatre of Blood: Hard Mode", + "rank": 1391, + "score": 538 + }, + { + "id": 72, + "name": "Thermonuclear Smoke Devil", + "rank": 9325, + "score": 3066 + }, + { + "id": 73, + "name": "Tombs of Amascut", + "rank": 131996, + "score": 37 + }, + { + "id": 74, + "name": "Tombs of Amascut: Expert Mode", + "rank": 214, + "score": 1720 + }, + { + "id": 75, + "name": "TzKal-Zuk", + "rank": 8902, + "score": 7 + }, + { + "id": 76, + "name": "TzTok-Jad", + "rank": 148385, + "score": 8 + }, + { + "id": 77, + "name": "Vardorvis", + "rank": 6120, + "score": 2113 + }, + { + "id": 78, + "name": "Venenatis", + "rank": 287, + "score": 7096 + }, + { + "id": 79, + "name": "Vet'ion", + "rank": 97368, + "score": 51 + }, + { + "id": 80, + "name": "Vorkath", + "rank": 15591, + "score": 2780 + }, { "id": 81, + "name": "Wintertodt", + "rank": 1000405, + "score": 67 + }, + { + "id": 82, + "name": "Zalcano", + "rank": 213696, + "score": 25 + }, + { + "id": 83, "name": "Zulrah", - "rank": 227062, + "rank": 240082, "score": 340 } ] -} +} \ No newline at end of file diff --git a/__tests__/hiscores.test.ts b/__tests__/hiscores.test.ts index cf1e529..5fa04ab 100644 --- a/__tests__/hiscores.test.ts +++ b/__tests__/hiscores.test.ts @@ -103,6 +103,7 @@ test('Parse CSV to json', () => { 37,225 25,1110 7827,43249 + 1114,1155 382,2780 944,3000 561,398429 @@ -152,6 +153,7 @@ test('Parse CSV to json', () => { 2870,6 891,9102 2871,7 + 5606,149 2872,8 6984,138 23,923141 @@ -208,6 +210,7 @@ test('Parse CSV to json', () => { soulWarsZeal: { rank: 37, score: 225 }, riftsClosed: { rank: 25, score: 1110 }, colosseumGlory: { rank: 7827, score: 43249 }, + collectionsLogged: { rank: 1114, score: 1155 }, clues: { all: { rank: 32, score: 12148 }, beginner: { rank: 3105, score: 76 }, @@ -267,6 +270,7 @@ test('Parse CSV to json', () => { corruptedGauntlet: { rank: 2870, score: 6 }, hueycoatl: { rank: 891, score: 9102 }, leviathan: { rank: 2871, score: 7 }, + royalTitans: { rank: 5606, score: 149 }, whisperer: { rank: 2872, score: 8 }, theatreOfBlood: { rank: 6984, score: 138 }, theatreOfBloodHardMode: { rank: 23, score: 923141 }, diff --git a/__tests__/lynxTitanStats.json b/__tests__/lynxTitanStats.json index 38a2412..80956d3 100644 --- a/__tests__/lynxTitanStats.json +++ b/__tests__/lynxTitanStats.json @@ -59,7 +59,7 @@ { "id": 8, "name": "Cooking", - "rank": 154, + "rank": 149, "level": 99, "xp": 200000000 }, @@ -108,7 +108,7 @@ { "id": 15, "name": "Mining", - "rank": 24, + "rank": 23, "level": 99, "xp": 200000000 }, @@ -157,7 +157,7 @@ { "id": 22, "name": "Hunter", - "rank": 4, + "rank": 3, "level": 99, "xp": 200000000 }, @@ -209,7 +209,7 @@ { "id": 6, "name": "Clue Scrolls (all)", - "rank": 832420, + "rank": 937868, "score": 22 }, { @@ -233,7 +233,7 @@ { "id": 10, "name": "Clue Scrolls (hard)", - "rank": 517091, + "rank": 578038, "score": 22 }, { @@ -280,387 +280,399 @@ }, { "id": 18, - "name": "Abyssal Sire", + "name": "Collections Logged", "rank": -1, "score": -1 }, { "id": 19, - "name": "Alchemical Hydra", + "name": "Abyssal Sire", "rank": -1, "score": -1 }, { "id": 20, - "name": "Amoxliatl", + "name": "Alchemical Hydra", "rank": -1, "score": -1 }, { "id": 21, - "name": "Araxxor", + "name": "Amoxliatl", "rank": -1, "score": -1 }, { "id": 22, - "name": "Artio", + "name": "Araxxor", "rank": -1, "score": -1 }, { "id": 23, - "name": "Barrows Chests", + "name": "Artio", "rank": -1, "score": -1 }, { "id": 24, - "name": "Bryophyta", + "name": "Barrows Chests", "rank": -1, "score": -1 }, { "id": 25, - "name": "Callisto", + "name": "Bryophyta", "rank": -1, "score": -1 }, { "id": 26, - "name": "Calvar'ion", + "name": "Callisto", "rank": -1, "score": -1 }, { "id": 27, - "name": "Cerberus", + "name": "Calvar'ion", "rank": -1, "score": -1 }, { "id": 28, - "name": "Chambers of Xeric", + "name": "Cerberus", "rank": -1, "score": -1 }, { "id": 29, - "name": "Chambers of Xeric: Challenge Mode", + "name": "Chambers of Xeric", "rank": -1, "score": -1 }, { "id": 30, - "name": "Chaos Elemental", + "name": "Chambers of Xeric: Challenge Mode", "rank": -1, "score": -1 }, { "id": 31, - "name": "Chaos Fanatic", + "name": "Chaos Elemental", "rank": -1, "score": -1 }, { "id": 32, - "name": "Commander Zilyana", + "name": "Chaos Fanatic", "rank": -1, "score": -1 }, { "id": 33, - "name": "Corporeal Beast", + "name": "Commander Zilyana", "rank": -1, "score": -1 }, { "id": 34, - "name": "Crazy Archaeologist", + "name": "Corporeal Beast", "rank": -1, "score": -1 }, { "id": 35, - "name": "Dagannoth Prime", + "name": "Crazy Archaeologist", "rank": -1, "score": -1 }, { "id": 36, - "name": "Dagannoth Rex", + "name": "Dagannoth Prime", "rank": -1, "score": -1 }, { "id": 37, - "name": "Dagannoth Supreme", + "name": "Dagannoth Rex", "rank": -1, "score": -1 }, { "id": 38, - "name": "Deranged Archaeologist", + "name": "Dagannoth Supreme", "rank": -1, "score": -1 }, { "id": 39, - "name": "Duke Sucellus", + "name": "Deranged Archaeologist", "rank": -1, "score": -1 }, { "id": 40, - "name": "General Graardor", + "name": "Duke Sucellus", "rank": -1, "score": -1 }, { "id": 41, - "name": "Giant Mole", + "name": "General Graardor", "rank": -1, "score": -1 }, { "id": 42, - "name": "Grotesque Guardians", + "name": "Giant Mole", "rank": -1, "score": -1 }, { "id": 43, - "name": "Hespori", + "name": "Grotesque Guardians", "rank": -1, "score": -1 }, { "id": 44, - "name": "Kalphite Queen", + "name": "Hespori", "rank": -1, "score": -1 }, { "id": 45, - "name": "King Black Dragon", + "name": "Kalphite Queen", "rank": -1, "score": -1 }, { "id": 46, - "name": "Kraken", + "name": "King Black Dragon", "rank": -1, "score": -1 }, { "id": 47, - "name": "Kree'Arra", + "name": "Kraken", "rank": -1, "score": -1 }, { "id": 48, - "name": "K'ril Tsutsaroth", + "name": "Kree'Arra", "rank": -1, "score": -1 }, { "id": 49, - "name": "Lunar Chests", + "name": "K'ril Tsutsaroth", "rank": -1, "score": -1 }, { "id": 50, - "name": "Mimic", + "name": "Lunar Chests", "rank": -1, "score": -1 }, { "id": 51, - "name": "Nex", + "name": "Mimic", "rank": -1, "score": -1 }, { "id": 52, - "name": "Nightmare", + "name": "Nex", "rank": -1, "score": -1 }, { "id": 53, - "name": "Phosani's Nightmare", + "name": "Nightmare", "rank": -1, "score": -1 }, { "id": 54, - "name": "Obor", + "name": "Phosani's Nightmare", "rank": -1, "score": -1 }, { "id": 55, - "name": "Phantom Muspah", + "name": "Obor", "rank": -1, "score": -1 }, { "id": 56, - "name": "Sarachnis", + "name": "Phantom Muspah", "rank": -1, "score": -1 }, { "id": 57, - "name": "Scorpia", + "name": "Sarachnis", "rank": -1, "score": -1 }, { "id": 58, - "name": "Scurrius", + "name": "Scorpia", "rank": -1, "score": -1 }, { "id": 59, - "name": "Skotizo", + "name": "Scurrius", "rank": -1, "score": -1 }, { "id": 60, - "name": "Sol Heredit", + "name": "Skotizo", "rank": -1, "score": -1 }, { "id": 61, - "name": "Spindel", + "name": "Sol Heredit", "rank": -1, "score": -1 }, { "id": 62, - "name": "Tempoross", + "name": "Spindel", "rank": -1, "score": -1 }, { "id": 63, - "name": "The Gauntlet", + "name": "Tempoross", "rank": -1, "score": -1 }, { "id": 64, - "name": "The Corrupted Gauntlet", + "name": "The Gauntlet", "rank": -1, "score": -1 }, { "id": 65, - "name": "The Hueycoatl", + "name": "The Corrupted Gauntlet", "rank": -1, "score": -1 }, { "id": 66, - "name": "The Leviathan", + "name": "The Hueycoatl", "rank": -1, "score": -1 }, { "id": 67, - "name": "The Whisperer", + "name": "The Leviathan", "rank": -1, "score": -1 }, { "id": 68, - "name": "Theatre of Blood", + "name": "The Royal Titans", "rank": -1, "score": -1 }, { "id": 69, - "name": "Theatre of Blood: Hard Mode", + "name": "The Whisperer", "rank": -1, "score": -1 }, { "id": 70, - "name": "Thermonuclear Smoke Devil", + "name": "Theatre of Blood", "rank": -1, "score": -1 }, { "id": 71, - "name": "Tombs of Amascut", + "name": "Theatre of Blood: Hard Mode", "rank": -1, "score": -1 }, { "id": 72, - "name": "Tombs of Amascut: Expert Mode", + "name": "Thermonuclear Smoke Devil", "rank": -1, "score": -1 }, { "id": 73, - "name": "TzKal-Zuk", + "name": "Tombs of Amascut", "rank": -1, "score": -1 }, { "id": 74, - "name": "TzTok-Jad", - "rank": 251, - "score": 186 + "name": "Tombs of Amascut: Expert Mode", + "rank": -1, + "score": -1 }, { "id": 75, - "name": "Vardorvis", + "name": "TzKal-Zuk", "rank": -1, "score": -1 }, { "id": 76, - "name": "Venenatis", - "rank": -1, - "score": -1 + "name": "TzTok-Jad", + "rank": 317, + "score": 186 }, { "id": 77, - "name": "Vet'ion", + "name": "Vardorvis", "rank": -1, "score": -1 }, { "id": 78, - "name": "Vorkath", + "name": "Venenatis", "rank": -1, "score": -1 }, { "id": 79, - "name": "Wintertodt", + "name": "Vet'ion", "rank": -1, "score": -1 }, { "id": 80, - "name": "Zalcano", + "name": "Vorkath", "rank": -1, "score": -1 }, { "id": 81, + "name": "Wintertodt", + "rank": -1, + "score": -1 + }, + { + "id": 82, + "name": "Zalcano", + "rank": -1, + "score": -1 + }, + { + "id": 83, "name": "Zulrah", "rank": -1, "score": -1 } ] -} +} \ No newline at end of file diff --git a/src/hiscores.ts b/src/hiscores.ts index c9395eb..53c4600 100644 --- a/src/hiscores.ts +++ b/src/hiscores.ts @@ -45,7 +45,8 @@ import { FORMATTED_SOUL_WARS, FORMATTED_RIFTS_CLOSED, FORMATTED_DEADMAN_POINTS, - FORMATTED_COLOSSEUM_GLORY + FORMATTED_COLOSSEUM_GLORY, + FORMATTED_COLLECTIONS_LOGGED } from './utils'; /** @@ -164,6 +165,7 @@ export function parseJsonStats(json: HiscoresResponse): Stats { const soulWarsZeal = getActivity(FORMATTED_SOUL_WARS); const riftsClosed = getActivity(FORMATTED_RIFTS_CLOSED); const colosseumGlory = getActivity(FORMATTED_COLOSSEUM_GLORY); + const collectionsLogged = getActivity(FORMATTED_COLLECTIONS_LOGGED); const stats: Stats = { skills, @@ -175,6 +177,7 @@ export function parseJsonStats(json: HiscoresResponse): Stats { soulWarsZeal, riftsClosed, colosseumGlory, + collectionsLogged, clues, bosses }; @@ -224,8 +227,8 @@ export function parseStats(csv: string): Stats { const [leaguePoints, deadmanPoints] = activityObjects.splice(0, 2); const bhObjects = activityObjects.splice(0, BH_MODES.length); const clueObjects = activityObjects.splice(0, CLUES.length); - const [lastManStanding, pvpArena, soulWarsZeal, riftsClosed, colosseumGlory] = - activityObjects.splice(0, 5); + const [lastManStanding, pvpArena, soulWarsZeal, riftsClosed, colosseumGlory, collectionsLogged] = + activityObjects.splice(0, 6); const bossObjects = activityObjects.splice(0, BOSSES.length); const skills: Skills = skillObjects.reduce((prev, curr, index) => { @@ -262,6 +265,7 @@ export function parseStats(csv: string): Stats { soulWarsZeal, riftsClosed, colosseumGlory, + collectionsLogged, clues, bosses }; diff --git a/src/types.ts b/src/types.ts index 7686333..45bd2cf 100644 --- a/src/types.ts +++ b/src/types.ts @@ -116,6 +116,7 @@ export type Boss = | 'corruptedGauntlet' | 'hueycoatl' | 'leviathan' + | 'royalTitans' | 'whisperer' | 'theatreOfBlood' | 'theatreOfBloodHardMode' @@ -153,6 +154,7 @@ export type ActivityName = | 'eliteClues' | 'masterClues' | 'colosseumGlory' + | 'collectionsLogged' | Boss; export interface Stats { @@ -172,6 +174,7 @@ export interface Stats { soulWarsZeal: Activity; riftsClosed: Activity; colosseumGlory: Activity; + collectionsLogged: Activity; bosses: Bosses; } export type Modes = { [M in Gamemode]?: Stats }; diff --git a/src/utils/constants.ts b/src/utils/constants.ts index 3ae38b9..f508ac7 100644 --- a/src/utils/constants.ts +++ b/src/utils/constants.ts @@ -215,6 +215,7 @@ export const FORMATTED_BOSS_NAMES: FormattedBossNames = { corruptedGauntlet: 'The Corrupted Gauntlet', hueycoatl: 'The Hueycoatl', leviathan: 'The Leviathan', + royalTitans: 'The Royal Titans', whisperer: 'The Whisperer', theatreOfBlood: 'Theatre of Blood', theatreOfBloodHardMode: 'Theatre of Blood: Hard Mode', @@ -295,6 +296,7 @@ export const FORMATTED_LEAGUE_POINTS = 'League Points'; export const FORMATTED_DEADMAN_POINTS = 'Deadman Points'; export const FORMATTED_RIFTS_CLOSED = 'Rifts closed'; export const FORMATTED_COLOSSEUM_GLORY = 'Colosseum Glory'; +export const FORMATTED_COLLECTIONS_LOGGED = 'Collections Logged'; export const INVALID_FORMAT_ERROR = 'Invalid hiscores format'; export const PLAYER_NOT_FOUND_ERROR = 'Player not found';