From 6adcb02545075ab6ad3086d92fad9aa3cfb5620f Mon Sep 17 00:00:00 2001 From: maxswa Date: Wed, 20 Mar 2024 19:18:35 -0400 Subject: [PATCH] Add Colosseum Glory, Lunar Chests, Sol Heredit --- README.md | 3 + __tests__/b0atyStats.csv | 195 ++++++++++++++------------- __tests__/b0atyStats.json | 245 +++++++++++++++++----------------- __tests__/hiscores.test.ts | 6 + __tests__/lynxTitanStats.json | 128 +++++++++--------- src/hiscores.ts | 10 +- src/types.ts | 4 + src/utils/constants.ts | 6 + tsconfig.json | 5 +- 9 files changed, 316 insertions(+), 286 deletions(-) diff --git a/README.md b/README.md index b52ecbc..494b633 100644 --- a/README.md +++ b/README.md @@ -102,6 +102,7 @@ Activities consist of all levels of clue scrolls as well as minigames and bosses | PvP Arena - Rank | `pvpArena` | | Soul Wars Zeal | `soulWarsZeal` | | Rifts closed | `riftsClosed` | +| Colosseum Glory | `colosseumGlory` | ### Points @@ -143,6 +144,7 @@ Activities consist of all levels of clue scrolls as well as minigames and bosses | Kraken | `kraken` | | Kreearra | `kreeArra` | | K'ril Tsutsaroth | `krilTsutsaroth` | +| Lunar Chests | `lunarChests` | | Mimic | `mimic` | | Nex | `nex` | | Nightmare | `nightmare` | @@ -153,6 +155,7 @@ Activities consist of all levels of clue scrolls as well as minigames and bosses | Scorpia | `scorpia` | | Scurrius | `scurrius` | | Skotizo | `skotizo` | +| Sol Heredit | `solHeredit` | | Spindel | `spindel` | | Tempoross | `tempoross` | | The Gauntlet | `gauntlet` | diff --git a/__tests__/b0atyStats.csv b/__tests__/b0atyStats.csv index 388c5bc..0f952b4 100644 --- a/__tests__/b0atyStats.csv +++ b/__tests__/b0atyStats.csv @@ -1,100 +1,103 @@ -3745,2277,840426611 -24080,99,30276246 -9559,99,31228199 -2212,99,143599407 -3550,99,123248914 -6564,99,109953707 -4244,99,15144846 -4107,99,57072224 -135556,99,13353511 -25855,99,16903268 -53472,99,13456850 -22453,99,16654917 -17690,99,19118307 -45816,99,14059776 -10409,99,16530015 -27702,99,14765145 -39430,99,13235063 -6722,99,15754877 -51813,99,14023027 -5324,99,33835543 -3154,99,69527777 -4719,99,22733384 -15135,99,17952893 -1089,99,17998715 +2910,2277,943515557 +24996,99,30606377 +4759,99,40283500 +1523,99,171953134 +2244,99,147696928 +5929,99,118171038 +4560,99,15170201 +2503,99,71406360 +141823,99,13354119 +22348,99,18680181 +56125,99,13456850 +23026,99,16655688 +18672,99,19123987 +48108,99,14072560 +10956,99,16552060 +27980,99,14967150 +40661,99,13252766 +7114,99,15760818 +53839,99,14058762 +5352,99,34669574 +2456,99,84892847 +4849,99,22734071 +16368,99,17968711 +1147,99,18027875 -1,-1 -1,-1 -26164,10 -12886,3 -148658,8 -103161,7 -377,9556 -862,825 -148,6000 -2153,1606 -42107,298 -504,459 -1816,368 -14701,2521 +28384,10 +14076,3 +148183,8 +102684,7 +338,9641 +1002,825 +114,6000 +2246,1606 +44261,298 +603,460 +1238,452 +15827,2521 -1,-1 -6776,14780 -4773,1060 -2741,2192 -90203,594 -29573,143 -3668,1830 -206778,5 -32897,293 -64112,58 -18492,1905 -178941,34 -2379,501 -82902,50 -147358,26 -51973,287 -2377,2000 -147406,41 -32225,707 -42229,698 -32212,714 -79605,25 -9517,688 -19125,1228 -65849,474 -2080,2140 -16433,182 -2006,2046 -48575,580 -115056,1908 -10406,920 -2196,1444 -1005,33 -28413,620 -4157,744 -4261,500 -993,217 -21848,251 -66260,119 -108898,26 -23958,90 -373975,9 -2005,1569 -40001,273 -192608,7 -78367,201 -5679,583 -478,1760 -22932,250 -15059,7 -7161,3066 -101555,35 -610,933 -15733,2 +7898,14780 +5421,1060 +7,24522 +2902,2192 +94883,594 +34000,143 +3834,1830 +218428,5 +36717,293 +74959,58 +19421,1905 +186551,34 +2571,515 +85921,50 +154580,26 +54677,287 +2586,2000 +153371,41 +33154,707 +43433,698 +33088,714 +81968,25 +12249,731 +20424,1228 +70188,474 +2248,2140 +11128,226 +2117,2046 +50095,580 +120438,1908 +10997,920 +2326,1444 -1,-1 -2051,2078 -194,7096 -69260,51 -14039,2780 -876367,62 -165341,25 -226318,275 \ No newline at end of file +700,40 +31471,626 +4119,749 +4349,500 +1078,217 +20126,301 +70523,119 +114632,26 +2945,1245 +385801,9 +-1,-1 +2412,1569 +43814,273 +207949,7 +86335,201 +7905,601 +732,1783 +21039,310 +4949,192 +7584,3066 +109360,36 +160,1500 +6733,7 +131888,8 +3128,2113 +209,7096 +75591,51 +15167,2780 +911570,62 +173436,25 +233645,275 \ No newline at end of file diff --git a/__tests__/b0atyStats.json b/__tests__/b0atyStats.json index 1f91974..f21f6ad 100644 --- a/__tests__/b0atyStats.json +++ b/__tests__/b0atyStats.json @@ -3,200 +3,203 @@ { "id": 0, "name": "Overall", - "rank": 3745, + "rank": 2910, "level": 2277, - "xp": 840426611 + "xp": 943515557 }, - { "id": 1, "name": "Attack", "rank": 24080, "level": 99, "xp": 30276246 }, - { "id": 2, "name": "Defence", "rank": 9559, "level": 99, "xp": 31228199 }, - { "id": 3, "name": "Strength", "rank": 2212, "level": 99, "xp": 143599407 }, + { "id": 1, "name": "Attack", "rank": 24996, "level": 99, "xp": 30606377 }, + { "id": 2, "name": "Defence", "rank": 4759, "level": 99, "xp": 40283500 }, + { "id": 3, "name": "Strength", "rank": 1523, "level": 99, "xp": 171953134 }, { "id": 4, "name": "Hitpoints", - "rank": 3550, + "rank": 2244, "level": 99, - "xp": 123248914 + "xp": 147696928 }, - { "id": 5, "name": "Ranged", "rank": 6564, "level": 99, "xp": 109953707 }, - { "id": 6, "name": "Prayer", "rank": 4244, "level": 99, "xp": 15144846 }, - { "id": 7, "name": "Magic", "rank": 4107, "level": 99, "xp": 57072224 }, - { "id": 8, "name": "Cooking", "rank": 135556, "level": 99, "xp": 13353511 }, + { "id": 5, "name": "Ranged", "rank": 5929, "level": 99, "xp": 118171038 }, + { "id": 6, "name": "Prayer", "rank": 4560, "level": 99, "xp": 15170201 }, + { "id": 7, "name": "Magic", "rank": 2503, "level": 99, "xp": 71406360 }, + { "id": 8, "name": "Cooking", "rank": 141823, "level": 99, "xp": 13354119 }, { "id": 9, "name": "Woodcutting", - "rank": 25855, + "rank": 22348, "level": 99, - "xp": 16903268 + "xp": 18680181 }, { "id": 10, "name": "Fletching", - "rank": 53472, + "rank": 56125, "level": 99, "xp": 13456850 }, - { "id": 11, "name": "Fishing", "rank": 22453, "level": 99, "xp": 16654917 }, + { "id": 11, "name": "Fishing", "rank": 23026, "level": 99, "xp": 16655688 }, { "id": 12, "name": "Firemaking", - "rank": 17690, + "rank": 18672, "level": 99, - "xp": 19118307 + "xp": 19123987 }, { "id": 13, "name": "Crafting", - "rank": 45816, + "rank": 48108, "level": 99, - "xp": 14059776 + "xp": 14072560 }, { "id": 14, "name": "Smithing", - "rank": 10409, + "rank": 10956, "level": 99, - "xp": 16530015 + "xp": 16552060 }, - { "id": 15, "name": "Mining", "rank": 27702, "level": 99, "xp": 14765145 }, + { "id": 15, "name": "Mining", "rank": 27980, "level": 99, "xp": 14967150 }, { "id": 16, "name": "Herblore", - "rank": 39430, + "rank": 40661, "level": 99, - "xp": 13235063 + "xp": 13252766 }, - { "id": 17, "name": "Agility", "rank": 6722, "level": 99, "xp": 15754877 }, + { "id": 17, "name": "Agility", "rank": 7114, "level": 99, "xp": 15760818 }, { "id": 18, "name": "Thieving", - "rank": 51813, + "rank": 53839, "level": 99, - "xp": 14023027 + "xp": 14058762 }, - { "id": 19, "name": "Slayer", "rank": 5324, "level": 99, "xp": 33835543 }, - { "id": 20, "name": "Farming", "rank": 3154, "level": 99, "xp": 69527777 }, + { "id": 19, "name": "Slayer", "rank": 5352, "level": 99, "xp": 34669574 }, + { "id": 20, "name": "Farming", "rank": 2456, "level": 99, "xp": 84892847 }, { "id": 21, "name": "Runecraft", - "rank": 4719, + "rank": 4849, "level": 99, - "xp": 22733384 + "xp": 22734071 }, - { "id": 22, "name": "Hunter", "rank": 15135, "level": 99, "xp": 17952893 }, + { "id": 22, "name": "Hunter", "rank": 16368, "level": 99, "xp": 17968711 }, { "id": 23, "name": "Construction", - "rank": 1089, + "rank": 1147, "level": 99, - "xp": 17998715 + "xp": 18027875 } ], "activities": [ { "id": 0, "name": "League Points", "rank": -1, "score": -1 }, { "id": 1, "name": "Deadman Points", "rank": -1, "score": -1 }, - { "id": 2, "name": "Bounty Hunter - Hunter", "rank": 26164, "score": 10 }, - { "id": 3, "name": "Bounty Hunter - Rogue", "rank": 12886, "score": 3 }, + { "id": 2, "name": "Bounty Hunter - Hunter", "rank": 28384, "score": 10 }, + { "id": 3, "name": "Bounty Hunter - Rogue", "rank": 14076, "score": 3 }, { "id": 4, "name": "Bounty Hunter (Legacy) - Hunter", - "rank": 148658, + "rank": 148183, "score": 8 }, { "id": 5, "name": "Bounty Hunter (Legacy) - Rogue", - "rank": 103161, + "rank": 102684, "score": 7 }, - { "id": 6, "name": "Clue Scrolls (all)", "rank": 377, "score": 9556 }, - { "id": 7, "name": "Clue Scrolls (beginner)", "rank": 862, "score": 825 }, - { "id": 8, "name": "Clue Scrolls (easy)", "rank": 148, "score": 6000 }, - { "id": 9, "name": "Clue Scrolls (medium)", "rank": 2153, "score": 1606 }, - { "id": 10, "name": "Clue Scrolls (hard)", "rank": 42107, "score": 298 }, - { "id": 11, "name": "Clue Scrolls (elite)", "rank": 504, "score": 459 }, - { "id": 12, "name": "Clue Scrolls (master)", "rank": 1816, "score": 368 }, - { "id": 13, "name": "LMS - Rank", "rank": 14701, "score": 2521 }, + { "id": 6, "name": "Clue Scrolls (all)", "rank": 338, "score": 9641 }, + { "id": 7, "name": "Clue Scrolls (beginner)", "rank": 1002, "score": 825 }, + { "id": 8, "name": "Clue Scrolls (easy)", "rank": 114, "score": 6000 }, + { "id": 9, "name": "Clue Scrolls (medium)", "rank": 2246, "score": 1606 }, + { "id": 10, "name": "Clue Scrolls (hard)", "rank": 44261, "score": 298 }, + { "id": 11, "name": "Clue Scrolls (elite)", "rank": 603, "score": 460 }, + { "id": 12, "name": "Clue Scrolls (master)", "rank": 1238, "score": 452 }, + { "id": 13, "name": "LMS - Rank", "rank": 15827, "score": 2521 }, { "id": 14, "name": "PvP Arena - Rank", "rank": -1, "score": -1 }, - { "id": 15, "name": "Soul Wars Zeal", "rank": 6776, "score": 14780 }, - { "id": 16, "name": "Rifts closed", "rank": 4773, "score": 1060 }, - { "id": 17, "name": "Abyssal Sire", "rank": 2741, "score": 2192 }, - { "id": 18, "name": "Alchemical Hydra", "rank": 90203, "score": 594 }, - { "id": 19, "name": "Artio", "rank": 29573, "score": 143 }, - { "id": 20, "name": "Barrows Chests", "rank": 3668, "score": 1830 }, - { "id": 21, "name": "Bryophyta", "rank": 206778, "score": 5 }, - { "id": 22, "name": "Callisto", "rank": 32897, "score": 293 }, - { "id": 23, "name": "Calvar'ion", "rank": 64112, "score": 58 }, - { "id": 24, "name": "Cerberus", "rank": 18492, "score": 1905 }, - { "id": 25, "name": "Chambers of Xeric", "rank": 178941, "score": 34 }, + { "id": 15, "name": "Soul Wars Zeal", "rank": 7898, "score": 14780 }, + { "id": 16, "name": "Rifts closed", "rank": 5421, "score": 1060 }, + { "id": 17, "name": "Colosseum Glory", "rank": 7, "score": 24522 }, + { "id": 18, "name": "Abyssal Sire", "rank": 2902, "score": 2192 }, + { "id": 19, "name": "Alchemical Hydra", "rank": 94883, "score": 594 }, + { "id": 20, "name": "Artio", "rank": 34000, "score": 143 }, + { "id": 21, "name": "Barrows Chests", "rank": 3834, "score": 1830 }, + { "id": 22, "name": "Bryophyta", "rank": 218428, "score": 5 }, + { "id": 23, "name": "Callisto", "rank": 36717, "score": 293 }, + { "id": 24, "name": "Calvar'ion", "rank": 74959, "score": 58 }, + { "id": 25, "name": "Cerberus", "rank": 19421, "score": 1905 }, + { "id": 26, "name": "Chambers of Xeric", "rank": 186551, "score": 34 }, { - "id": 26, + "id": 27, "name": "Chambers of Xeric: Challenge Mode", - "rank": 2379, - "score": 501 + "rank": 2571, + "score": 515 }, - { "id": 27, "name": "Chaos Elemental", "rank": 82902, "score": 50 }, - { "id": 28, "name": "Chaos Fanatic", "rank": 147358, "score": 26 }, - { "id": 29, "name": "Commander Zilyana", "rank": 51973, "score": 287 }, - { "id": 30, "name": "Corporeal Beast", "rank": 2377, "score": 2000 }, - { "id": 31, "name": "Crazy Archaeologist", "rank": 147406, "score": 41 }, - { "id": 32, "name": "Dagannoth Prime", "rank": 32225, "score": 707 }, - { "id": 33, "name": "Dagannoth Rex", "rank": 42229, "score": 698 }, - { "id": 34, "name": "Dagannoth Supreme", "rank": 32212, "score": 714 }, - { "id": 35, "name": "Deranged Archaeologist", "rank": 79605, "score": 25 }, - { "id": 36, "name": "Duke Sucellus", "rank": 9517, "score": 688 }, - { "id": 37, "name": "General Graardor", "rank": 19125, "score": 1228 }, - { "id": 38, "name": "Giant Mole", "rank": 65849, "score": 474 }, - { "id": 39, "name": "Grotesque Guardians", "rank": 2080, "score": 2140 }, - { "id": 40, "name": "Hespori", "rank": 16433, "score": 182 }, - { "id": 41, "name": "Kalphite Queen", "rank": 2006, "score": 2046 }, - { "id": 42, "name": "King Black Dragon", "rank": 48575, "score": 580 }, - { "id": 43, "name": "Kraken", "rank": 115056, "score": 1908 }, - { "id": 44, "name": "Kree'Arra", "rank": 10406, "score": 920 }, - { "id": 45, "name": "K'ril Tsutsaroth", "rank": 2196, "score": 1444 }, - { "id": 46, "name": "Mimic", "rank": 1005, "score": 33 }, - { "id": 47, "name": "Nex", "rank": 28413, "score": 620 }, - { "id": 48, "name": "Nightmare", "rank": 4157, "score": 744 }, - { "id": 49, "name": "Phosani's Nightmare", "rank": 4261, "score": 500 }, - { "id": 50, "name": "Obor", "rank": 993, "score": 217 }, - { "id": 51, "name": "Phantom Muspah", "rank": 21848, "score": 251 }, - { "id": 52, "name": "Sarachnis", "rank": 66260, "score": 119 }, - { "id": 53, "name": "Scorpia", "rank": 108898, "score": 26 }, - { "id": 54, "name": "Scurrius", "rank": 23958, "score": 90 }, - { "id": 55, "name": "Skotizo", "rank": 373975, "score": 9 }, - { "id": 56, "name": "Spindel", "rank": 2005, "score": 1569 }, - { "id": 57, "name": "Tempoross", "rank": 40001, "score": 273 }, - { "id": 58, "name": "The Gauntlet", "rank": 192608, "score": 7 }, - { "id": 59, "name": "The Corrupted Gauntlet", "rank": 78367, "score": 201 }, - { "id": 60, "name": "The Leviathan", "rank": 5679, "score": 583 }, - { "id": 61, "name": "The Whisperer", "rank": 478, "score": 1760 }, - { "id": 62, "name": "Theatre of Blood", "rank": 22932, "score": 250 }, - { - "id": 63, - "name": "Theatre of Blood: Hard Mode", - "rank": 15059, - "score": 7 - }, - { - "id": 64, - "name": "Thermonuclear Smoke Devil", - "rank": 7161, - "score": 3066 - }, - { "id": 65, "name": "Tombs of Amascut", "rank": 101555, "score": 35 }, + { "id": 28, "name": "Chaos Elemental", "rank": 85921, "score": 50 }, + { "id": 29, "name": "Chaos Fanatic", "rank": 154580, "score": 26 }, + { "id": 30, "name": "Commander Zilyana", "rank": 54677, "score": 287 }, + { "id": 31, "name": "Corporeal Beast", "rank": 2586, "score": 2000 }, + { "id": 32, "name": "Crazy Archaeologist", "rank": 153371, "score": 41 }, + { "id": 33, "name": "Dagannoth Prime", "rank": 33154, "score": 707 }, + { "id": 34, "name": "Dagannoth Rex", "rank": 43433, "score": 698 }, + { "id": 35, "name": "Dagannoth Supreme", "rank": 33088, "score": 714 }, + { "id": 36, "name": "Deranged Archaeologist", "rank": 81968, "score": 25 }, + { "id": 37, "name": "Duke Sucellus", "rank": 12249, "score": 731 }, + { "id": 38, "name": "General Graardor", "rank": 20424, "score": 1228 }, + { "id": 39, "name": "Giant Mole", "rank": 70188, "score": 474 }, + { "id": 40, "name": "Grotesque Guardians", "rank": 2248, "score": 2140 }, + { "id": 41, "name": "Hespori", "rank": 11128, "score": 226 }, + { "id": 42, "name": "Kalphite Queen", "rank": 2117, "score": 2046 }, + { "id": 43, "name": "King Black Dragon", "rank": 50095, "score": 580 }, + { "id": 44, "name": "Kraken", "rank": 120438, "score": 1908 }, + { "id": 45, "name": "Kree'Arra", "rank": 10997, "score": 920 }, + { "id": 46, "name": "K'ril Tsutsaroth", "rank": 2326, "score": 1444 }, + { "id": 47, "name": "Lunar Chests", "rank": -1, "score": -1 }, + { "id": 48, "name": "Mimic", "rank": 700, "score": 40 }, + { "id": 49, "name": "Nex", "rank": 31471, "score": 626 }, + { "id": 50, "name": "Nightmare", "rank": 4119, "score": 749 }, + { "id": 51, "name": "Phosani's Nightmare", "rank": 4349, "score": 500 }, + { "id": 52, "name": "Obor", "rank": 1078, "score": 217 }, + { "id": 53, "name": "Phantom Muspah", "rank": 20126, "score": 301 }, + { "id": 54, "name": "Sarachnis", "rank": 70523, "score": 119 }, + { "id": 55, "name": "Scorpia", "rank": 114632, "score": 26 }, + { "id": 56, "name": "Scurrius", "rank": 2945, "score": 1245 }, + { "id": 57, "name": "Skotizo", "rank": 385801, "score": 9 }, + { "id": 58, "name": "Sol Heredit", "rank": -1, "score": -1 }, + { "id": 59, "name": "Spindel", "rank": 2412, "score": 1569 }, + { "id": 60, "name": "Tempoross", "rank": 43814, "score": 273 }, + { "id": 61, "name": "The Gauntlet", "rank": 207949, "score": 7 }, + { "id": 62, "name": "The Corrupted Gauntlet", "rank": 86335, "score": 201 }, + { "id": 63, "name": "The Leviathan", "rank": 7905, "score": 601 }, + { "id": 64, "name": "The Whisperer", "rank": 732, "score": 1783 }, + { "id": 65, "name": "Theatre of Blood", "rank": 21039, "score": 310 }, { "id": 66, - "name": "Tombs of Amascut: Expert Mode", - "rank": 610, - "score": 933 + "name": "Theatre of Blood: Hard Mode", + "rank": 4949, + "score": 192 }, - { "id": 67, "name": "TzKal-Zuk", "rank": 15733, "score": 2 }, - { "id": 68, "name": "TzTok-Jad", "rank": -1, "score": -1 }, - { "id": 69, "name": "Vardorvis", "rank": 2051, "score": 2078 }, - { "id": 70, "name": "Venenatis", "rank": 194, "score": 7096 }, - { "id": 71, "name": "Vet'ion", "rank": 69260, "score": 51 }, - { "id": 72, "name": "Vorkath", "rank": 14039, "score": 2780 }, - { "id": 73, "name": "Wintertodt", "rank": 876367, "score": 62 }, - { "id": 74, "name": "Zalcano", "rank": 165341, "score": 25 }, - { "id": 75, "name": "Zulrah", "rank": 226318, "score": 275 } + { + "id": 67, + "name": "Thermonuclear Smoke Devil", + "rank": 7584, + "score": 3066 + }, + { "id": 68, "name": "Tombs of Amascut", "rank": 109360, "score": 36 }, + { + "id": 69, + "name": "Tombs of Amascut: Expert Mode", + "rank": 160, + "score": 1500 + }, + { "id": 70, "name": "TzKal-Zuk", "rank": 6733, "score": 7 }, + { "id": 71, "name": "TzTok-Jad", "rank": 131888, "score": 8 }, + { "id": 72, "name": "Vardorvis", "rank": 3128, "score": 2113 }, + { "id": 73, "name": "Venenatis", "rank": 209, "score": 7096 }, + { "id": 74, "name": "Vet'ion", "rank": 75591, "score": 51 }, + { "id": 75, "name": "Vorkath", "rank": 15167, "score": 2780 }, + { "id": 76, "name": "Wintertodt", "rank": 911570, "score": 62 }, + { "id": 77, "name": "Zalcano", "rank": 173436, "score": 25 }, + { "id": 78, "name": "Zulrah", "rank": 233645, "score": 275 } ] } diff --git a/__tests__/hiscores.test.ts b/__tests__/hiscores.test.ts index 6e18904..8ec6b3b 100644 --- a/__tests__/hiscores.test.ts +++ b/__tests__/hiscores.test.ts @@ -102,6 +102,7 @@ test('Parse CSV to json', () => { 13,4057 37,225 25,1110 + 7827,43249 382,2780 944,3000 704,892 @@ -131,6 +132,7 @@ test('Parse CSV to json', () => { 41643,1477 625,2391 120,2981 + 54,2958 1,109 99,39002 3,22666 @@ -141,6 +143,7 @@ test('Parse CSV to json', () => { 82,3404 555,7079 5085,61 + 8731,1423 678,903 18823,23 63,375 @@ -201,6 +204,7 @@ test('Parse CSV to json', () => { pvpArena: { rank: 13, score: 4057 }, soulWarsZeal: { rank: 37, score: 225 }, riftsClosed: { rank: 25, score: 1110 }, + colosseumGlory: { rank: 7827, score: 43249 }, clues: { all: { rank: 32, score: 12148 }, beginner: { rank: 3105, score: 76 }, @@ -240,6 +244,7 @@ test('Parse CSV to json', () => { kraken: { rank: 41643, score: 1477 }, kreeArra: { rank: 625, score: 2391 }, krilTsutsaroth: { rank: 120, score: 2981 }, + lunarChests: { rank: 54, score: 2958 }, mimic: { rank: 1, score: 109 }, nex: { rank: 99, score: 39002 }, nightmare: { rank: 3, score: 22666 }, @@ -250,6 +255,7 @@ test('Parse CSV to json', () => { scorpia: { rank: 82, score: 3404 }, scurrius: { rank: 555, score: 7079 }, skotizo: { rank: 5085, score: 61 }, + solHeredit: { rank: 8731, score: 1423 }, spindel: { rank: 678, score: 903 }, tempoross: { rank: 18823, score: 23 }, gauntlet: { rank: 63, score: 375 }, diff --git a/__tests__/lynxTitanStats.json b/__tests__/lynxTitanStats.json index 4161f87..95c4264 100644 --- a/__tests__/lynxTitanStats.json +++ b/__tests__/lynxTitanStats.json @@ -7,8 +7,8 @@ { "id": 4, "name": "Hitpoints", "rank": 7, "level": 99, "xp": 200000000 }, { "id": 5, "name": "Ranged", "rank": 8, "level": 99, "xp": 200000000 }, { "id": 6, "name": "Prayer", "rank": 11, "level": 99, "xp": 200000000 }, - { "id": 7, "name": "Magic", "rank": 31, "level": 99, "xp": 200000000 }, - { "id": 8, "name": "Cooking", "rank": 155, "level": 99, "xp": 200000000 }, + { "id": 7, "name": "Magic", "rank": 30, "level": 99, "xp": 200000000 }, + { "id": 8, "name": "Cooking", "rank": 154, "level": 99, "xp": 200000000 }, { "id": 9, "name": "Woodcutting", @@ -60,89 +60,93 @@ "rank": -1, "score": -1 }, - { "id": 6, "name": "Clue Scrolls (all)", "rank": 805212, "score": 22 }, + { "id": 6, "name": "Clue Scrolls (all)", "rank": 832420, "score": 22 }, { "id": 7, "name": "Clue Scrolls (beginner)", "rank": -1, "score": -1 }, { "id": 8, "name": "Clue Scrolls (easy)", "rank": -1, "score": -1 }, { "id": 9, "name": "Clue Scrolls (medium)", "rank": -1, "score": -1 }, - { "id": 10, "name": "Clue Scrolls (hard)", "rank": 502504, "score": 22 }, + { "id": 10, "name": "Clue Scrolls (hard)", "rank": 517091, "score": 22 }, { "id": 11, "name": "Clue Scrolls (elite)", "rank": -1, "score": -1 }, { "id": 12, "name": "Clue Scrolls (master)", "rank": -1, "score": -1 }, { "id": 13, "name": "LMS - Rank", "rank": -1, "score": -1 }, { "id": 14, "name": "PvP Arena - Rank", "rank": -1, "score": -1 }, { "id": 15, "name": "Soul Wars Zeal", "rank": -1, "score": -1 }, { "id": 16, "name": "Rifts closed", "rank": -1, "score": -1 }, - { "id": 17, "name": "Abyssal Sire", "rank": -1, "score": -1 }, - { "id": 18, "name": "Alchemical Hydra", "rank": -1, "score": -1 }, - { "id": 19, "name": "Artio", "rank": -1, "score": -1 }, - { "id": 20, "name": "Barrows Chests", "rank": -1, "score": -1 }, - { "id": 21, "name": "Bryophyta", "rank": -1, "score": -1 }, - { "id": 22, "name": "Callisto", "rank": -1, "score": -1 }, - { "id": 23, "name": "Calvar'ion", "rank": -1, "score": -1 }, - { "id": 24, "name": "Cerberus", "rank": -1, "score": -1 }, - { "id": 25, "name": "Chambers of Xeric", "rank": -1, "score": -1 }, + { "id": 17, "name": "Colosseum Glory", "rank": -1, "score": -1 }, + { "id": 18, "name": "Abyssal Sire", "rank": -1, "score": -1 }, + { "id": 19, "name": "Alchemical Hydra", "rank": -1, "score": -1 }, + { "id": 20, "name": "Artio", "rank": -1, "score": -1 }, + { "id": 21, "name": "Barrows Chests", "rank": -1, "score": -1 }, + { "id": 22, "name": "Bryophyta", "rank": -1, "score": -1 }, + { "id": 23, "name": "Callisto", "rank": -1, "score": -1 }, + { "id": 24, "name": "Calvar'ion", "rank": -1, "score": -1 }, + { "id": 25, "name": "Cerberus", "rank": -1, "score": -1 }, + { "id": 26, "name": "Chambers of Xeric", "rank": -1, "score": -1 }, { - "id": 26, + "id": 27, "name": "Chambers of Xeric: Challenge Mode", "rank": -1, "score": -1 }, - { "id": 27, "name": "Chaos Elemental", "rank": -1, "score": -1 }, - { "id": 28, "name": "Chaos Fanatic", "rank": -1, "score": -1 }, - { "id": 29, "name": "Commander Zilyana", "rank": -1, "score": -1 }, - { "id": 30, "name": "Corporeal Beast", "rank": -1, "score": -1 }, - { "id": 31, "name": "Crazy Archaeologist", "rank": -1, "score": -1 }, - { "id": 32, "name": "Dagannoth Prime", "rank": -1, "score": -1 }, - { "id": 33, "name": "Dagannoth Rex", "rank": -1, "score": -1 }, - { "id": 34, "name": "Dagannoth Supreme", "rank": -1, "score": -1 }, - { "id": 35, "name": "Deranged Archaeologist", "rank": -1, "score": -1 }, - { "id": 36, "name": "Duke Sucellus", "rank": -1, "score": -1 }, - { "id": 37, "name": "General Graardor", "rank": -1, "score": -1 }, - { "id": 38, "name": "Giant Mole", "rank": -1, "score": -1 }, - { "id": 39, "name": "Grotesque Guardians", "rank": -1, "score": -1 }, - { "id": 40, "name": "Hespori", "rank": -1, "score": -1 }, - { "id": 41, "name": "Kalphite Queen", "rank": -1, "score": -1 }, - { "id": 42, "name": "King Black Dragon", "rank": -1, "score": -1 }, - { "id": 43, "name": "Kraken", "rank": -1, "score": -1 }, - { "id": 44, "name": "Kree'Arra", "rank": -1, "score": -1 }, - { "id": 45, "name": "K'ril Tsutsaroth", "rank": -1, "score": -1 }, - { "id": 46, "name": "Mimic", "rank": -1, "score": -1 }, - { "id": 47, "name": "Nex", "rank": -1, "score": -1 }, - { "id": 48, "name": "Nightmare", "rank": -1, "score": -1 }, - { "id": 49, "name": "Phosani's Nightmare", "rank": -1, "score": -1 }, - { "id": 50, "name": "Obor", "rank": -1, "score": -1 }, - { "id": 51, "name": "Phantom Muspah", "rank": -1, "score": -1 }, - { "id": 52, "name": "Sarachnis", "rank": -1, "score": -1 }, - { "id": 53, "name": "Scorpia", "rank": -1, "score": -1 }, - { "id": 54, "name": "Skotizo", "rank": -1, "score": -1 }, - { "id": 55, "name": "Spindel", "rank": -1, "score": -1 }, - { "id": 56, "name": "Tempoross", "rank": -1, "score": -1 }, - { "id": 57, "name": "The Gauntlet", "rank": -1, "score": -1 }, - { "id": 58, "name": "The Corrupted Gauntlet", "rank": -1, "score": -1 }, - { "id": 59, "name": "The Leviathan", "rank": -1, "score": -1 }, - { "id": 60, "name": "The Whisperer", "rank": -1, "score": -1 }, - { "id": 61, "name": "Theatre of Blood", "rank": -1, "score": -1 }, + { "id": 28, "name": "Chaos Elemental", "rank": -1, "score": -1 }, + { "id": 29, "name": "Chaos Fanatic", "rank": -1, "score": -1 }, + { "id": 30, "name": "Commander Zilyana", "rank": -1, "score": -1 }, + { "id": 31, "name": "Corporeal Beast", "rank": -1, "score": -1 }, + { "id": 32, "name": "Crazy Archaeologist", "rank": -1, "score": -1 }, + { "id": 33, "name": "Dagannoth Prime", "rank": -1, "score": -1 }, + { "id": 34, "name": "Dagannoth Rex", "rank": -1, "score": -1 }, + { "id": 35, "name": "Dagannoth Supreme", "rank": -1, "score": -1 }, + { "id": 36, "name": "Deranged Archaeologist", "rank": -1, "score": -1 }, + { "id": 37, "name": "Duke Sucellus", "rank": -1, "score": -1 }, + { "id": 38, "name": "General Graardor", "rank": -1, "score": -1 }, + { "id": 39, "name": "Giant Mole", "rank": -1, "score": -1 }, + { "id": 40, "name": "Grotesque Guardians", "rank": -1, "score": -1 }, + { "id": 41, "name": "Hespori", "rank": -1, "score": -1 }, + { "id": 42, "name": "Kalphite Queen", "rank": -1, "score": -1 }, + { "id": 43, "name": "King Black Dragon", "rank": -1, "score": -1 }, + { "id": 44, "name": "Kraken", "rank": -1, "score": -1 }, + { "id": 45, "name": "Kree'Arra", "rank": -1, "score": -1 }, + { "id": 46, "name": "K'ril Tsutsaroth", "rank": -1, "score": -1 }, + { "id": 47, "name": "Lunar Chests", "rank": -1, "score": -1 }, + { "id": 48, "name": "Mimic", "rank": -1, "score": -1 }, + { "id": 49, "name": "Nex", "rank": -1, "score": -1 }, + { "id": 50, "name": "Nightmare", "rank": -1, "score": -1 }, + { "id": 51, "name": "Phosani's Nightmare", "rank": -1, "score": -1 }, + { "id": 52, "name": "Obor", "rank": -1, "score": -1 }, + { "id": 53, "name": "Phantom Muspah", "rank": -1, "score": -1 }, + { "id": 54, "name": "Sarachnis", "rank": -1, "score": -1 }, + { "id": 55, "name": "Scorpia", "rank": -1, "score": -1 }, + { "id": 56, "name": "Scurrius", "rank": -1, "score": -1 }, + { "id": 57, "name": "Skotizo", "rank": -1, "score": -1 }, + { "id": 58, "name": "Sol Heredit", "rank": -1, "score": -1 }, + { "id": 59, "name": "Spindel", "rank": -1, "score": -1 }, + { "id": 60, "name": "Tempoross", "rank": -1, "score": -1 }, + { "id": 61, "name": "The Gauntlet", "rank": -1, "score": -1 }, + { "id": 62, "name": "The Corrupted Gauntlet", "rank": -1, "score": -1 }, + { "id": 63, "name": "The Leviathan", "rank": -1, "score": -1 }, + { "id": 64, "name": "The Whisperer", "rank": -1, "score": -1 }, + { "id": 65, "name": "Theatre of Blood", "rank": -1, "score": -1 }, { - "id": 62, + "id": 66, "name": "Theatre of Blood: Hard Mode", "rank": -1, "score": -1 }, - { "id": 63, "name": "Thermonuclear Smoke Devil", "rank": -1, "score": -1 }, - { "id": 64, "name": "Tombs of Amascut", "rank": -1, "score": -1 }, + { "id": 67, "name": "Thermonuclear Smoke Devil", "rank": -1, "score": -1 }, + { "id": 68, "name": "Tombs of Amascut", "rank": -1, "score": -1 }, { - "id": 65, + "id": 69, "name": "Tombs of Amascut: Expert Mode", "rank": -1, "score": -1 }, - { "id": 66, "name": "TzKal-Zuk", "rank": -1, "score": -1 }, - { "id": 67, "name": "TzTok-Jad", "rank": 225, "score": 186 }, - { "id": 68, "name": "Vardorvis", "rank": -1, "score": -1 }, - { "id": 69, "name": "Venenatis", "rank": -1, "score": -1 }, - { "id": 70, "name": "Vet'ion", "rank": -1, "score": -1 }, - { "id": 71, "name": "Vorkath", "rank": -1, "score": -1 }, - { "id": 72, "name": "Wintertodt", "rank": -1, "score": -1 }, - { "id": 73, "name": "Zalcano", "rank": -1, "score": -1 }, - { "id": 74, "name": "Zulrah", "rank": -1, "score": -1 } + { "id": 70, "name": "TzKal-Zuk", "rank": -1, "score": -1 }, + { "id": 71, "name": "TzTok-Jad", "rank": 251, "score": 186 }, + { "id": 72, "name": "Vardorvis", "rank": -1, "score": -1 }, + { "id": 73, "name": "Venenatis", "rank": -1, "score": -1 }, + { "id": 74, "name": "Vet'ion", "rank": -1, "score": -1 }, + { "id": 75, "name": "Vorkath", "rank": -1, "score": -1 }, + { "id": 76, "name": "Wintertodt", "rank": -1, "score": -1 }, + { "id": 77, "name": "Zalcano", "rank": -1, "score": -1 }, + { "id": 78, "name": "Zulrah", "rank": -1, "score": -1 } ] } diff --git a/src/hiscores.ts b/src/hiscores.ts index fce4459..c9395eb 100644 --- a/src/hiscores.ts +++ b/src/hiscores.ts @@ -44,7 +44,8 @@ import { FORMATTED_PVP_ARENA, FORMATTED_SOUL_WARS, FORMATTED_RIFTS_CLOSED, - FORMATTED_DEADMAN_POINTS + FORMATTED_DEADMAN_POINTS, + FORMATTED_COLOSSEUM_GLORY } from './utils'; /** @@ -162,6 +163,7 @@ export function parseJsonStats(json: HiscoresResponse): Stats { const pvpArena = getActivity(FORMATTED_PVP_ARENA); const soulWarsZeal = getActivity(FORMATTED_SOUL_WARS); const riftsClosed = getActivity(FORMATTED_RIFTS_CLOSED); + const colosseumGlory = getActivity(FORMATTED_COLOSSEUM_GLORY); const stats: Stats = { skills, @@ -172,6 +174,7 @@ export function parseJsonStats(json: HiscoresResponse): Stats { pvpArena, soulWarsZeal, riftsClosed, + colosseumGlory, clues, bosses }; @@ -221,8 +224,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] = - activityObjects.splice(0, 4); + const [lastManStanding, pvpArena, soulWarsZeal, riftsClosed, colosseumGlory] = + activityObjects.splice(0, 5); const bossObjects = activityObjects.splice(0, BOSSES.length); const skills: Skills = skillObjects.reduce((prev, curr, index) => { @@ -258,6 +261,7 @@ export function parseStats(csv: string): Stats { pvpArena, soulWarsZeal, riftsClosed, + colosseumGlory, clues, bosses }; diff --git a/src/types.ts b/src/types.ts index a5ab330..70ea204 100644 --- a/src/types.ts +++ b/src/types.ts @@ -96,6 +96,7 @@ export type Boss = | 'kraken' | 'kreeArra' | 'krilTsutsaroth' + | 'lunarChests' | 'mimic' | 'nex' | 'nightmare' @@ -106,6 +107,7 @@ export type Boss = | 'scorpia' | 'scurrius' | 'skotizo' + | 'solHeredit' | 'spindel' | 'tempoross' | 'gauntlet' @@ -147,6 +149,7 @@ export type ActivityName = | 'hardClues' | 'eliteClues' | 'masterClues' + | 'colosseumGlory' | Boss; export interface Stats { @@ -165,6 +168,7 @@ export interface Stats { pvpArena: Activity; soulWarsZeal: Activity; riftsClosed: Activity; + colosseumGlory: Activity; bosses: Bosses; } export type Modes = { [M in Gamemode]?: Stats }; diff --git a/src/utils/constants.ts b/src/utils/constants.ts index 2e01be8..28c8524 100644 --- a/src/utils/constants.ts +++ b/src/utils/constants.ts @@ -103,6 +103,7 @@ export const BOSSES: Boss[] = [ 'kraken', 'kreeArra', 'krilTsutsaroth', + 'lunarChests', 'mimic', 'nex', 'nightmare', @@ -113,6 +114,7 @@ export const BOSSES: Boss[] = [ 'scorpia', 'scurrius', 'skotizo', + 'solHeredit', 'spindel', 'tempoross', 'gauntlet', @@ -152,6 +154,7 @@ export const ACTIVITIES: ActivityName[] = [ 'pvpArena', 'soulWarsZeal', 'riftsClosed', + 'colosseumGlory', ...BOSSES ]; @@ -189,6 +192,7 @@ export const FORMATTED_BOSS_NAMES: FormattedBossNames = { kraken: 'Kraken', kreeArra: "Kree'Arra", krilTsutsaroth: "K'ril Tsutsaroth", + lunarChests: 'Lunar Chests', mimic: 'Mimic', nex: 'Nex', nightmare: 'Nightmare', @@ -199,6 +203,7 @@ export const FORMATTED_BOSS_NAMES: FormattedBossNames = { scorpia: 'Scorpia', scurrius: 'Scurrius', skotizo: 'Skotizo', + solHeredit: 'Sol Heredit', spindel: 'Spindel', tempoross: 'Tempoross', gauntlet: 'The Gauntlet', @@ -283,6 +288,7 @@ export const FORMATTED_SOUL_WARS = 'Soul Wars Zeal'; 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 INVALID_FORMAT_ERROR = 'Invalid hiscores format'; export const PLAYER_NOT_FOUND_ERROR = 'Player not found'; diff --git a/tsconfig.json b/tsconfig.json index cf7f094..8193196 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -6,10 +6,7 @@ "outDir": "./lib", "strict": true, "lib": ["ES2015", "DOM", "DOM.Iterable"], - "typeRoots": [ - "./node_modules/@types", - "./src/@types" - ] + "typeRoots": ["./node_modules/@types", "./src/@types"] }, "include": ["src"], "exclude": ["node_modules", "**/__tests__/*"]