rito 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 690356f1167c30f7662373519e4806837f61a9c63f9b5ebde867bd98d435176d
4
- data.tar.gz: 9aabb8d8a1b21d828e37594b174d938898281e056994e384da1f0261bbb69d5d
3
+ metadata.gz: 9088da4cb186a04b00b160ac7ee8ddaf8c26bb7f48e10f4db80c20bb5d2dff7b
4
+ data.tar.gz: 7323a3cf554a3f60c8f85ee05635e74101cd767d3befe47ca5e467f6bfc61cc3
5
5
  SHA512:
6
- metadata.gz: 91ed7d221b18a711a3f4370fec9c65d6092c01048a202750c6108dadfcbb4baa2c83f58fbbe658bcdd6bd8c87380f8f54904abaca5ff62e7bc5470064658ee38
7
- data.tar.gz: 5aac876d18b27fb577889e7218689c179bc04d5fcff5c0bb657d42292f0a7b9f88900e00e8613bd3b38013d1ebb1f7a664e4cdd9e372f8cac54b10742c68e166
6
+ metadata.gz: 8fa6f315096ecbf7cdb8ac2dc72b31e39c37bcaffa4f2d1a81e4b62f44737fc5611a89d253191d19835b4048c57feb608fd91ea1cdf61d02b84e3fe81e3f6998
7
+ data.tar.gz: 40775c60207a3e639c5590680285ad4ccd6271c257588c6d29bee31c998baa19efd45468bab04063e0eee52c94426aaf127c77a407f5f9159583d8b249f40fe4
data/CHANGELOG.md CHANGED
@@ -1,5 +1,39 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.3.0 (2026-09-05)
4
+
5
+ Aligned the endpoint surface with the current Riot API reference
6
+ (cross-checked against riotapi-schema). **Breaking:** phantom endpoints
7
+ Riot has removed were dropped, and outdated paths were corrected.
8
+
9
+ - **Removed (no longer in the API docs)**: summoner-v4 `by_name` /
10
+ `by_account_id` / `by_summoner_id`; TFT summoner `by_account_id` /
11
+ `by_summoner_id`; spectator-v5 and spectator-tft-v5 `featured_games`;
12
+ league-v4 `league(leagueId)` and `entries_by_summoner_id`; TFT league
13
+ `entries_by_summoner_id`; clash `players_by_summoner_id`; LoR
14
+ `decks.deck(deck_id)`; tournament-stub `update_code`.
15
+ - **Renamed/fixed paths**: spectator active games (`by-summoner-id` →
16
+ `by-summoner/{puuid}`, TFT: `by-puuid/{puuid}`), TFT league routing is
17
+ platform (`na1`), not regional; tournament-v5/stub code paths
18
+ (`codes/by-code/{code}` → `codes/{code}`); challenges leaderboard param
19
+ `top`/`page` → `limit`.
20
+ - **Added**: `lol-rso-match-v1` (`client.rso_matches` — RSO bearer token;
21
+ `ids`, `by_id`, `timeline_by_id`), `val-console-ranked-v1`
22
+ (`client.val.console_ranked` with required `platform_type:`),
23
+ match-v5 `replays`, tournament-v5 `games_by_code`, clash
24
+ `tournament(tournamentId)`, league-v4 `entries_by_puuid`, TFT league
25
+ `entries_by_puuid` / `entries(tier, division)`, challenges
26
+ `challenge_config` / `challenge_percentiles`, summoner-v4 `me` (RSO),
27
+ LoR `decks.create_deck` (POST).
28
+ - **Queues reference**: `Rito::Queues` — frozen snapshot of the League
29
+ client's game select data (408 queue ids) with name, description,
30
+ category (`:pvp` / `:bots` / `:custom`), mode, limited-time and bot
31
+ flags; `MatchInfo#queue` resolves a match's `queueId`.
32
+ - **Routing**: VALORANT platform `na1` → `na`; VALORANT platforms accept
33
+ `esports` (content/match only) and console accepts `br`/`latam`
34
+ (console match); dropped dead `ph2`/`th2`; added `pbe1` (challenges,
35
+ status) and `esports`/`esportseu` regionals (tft-match-v1).
36
+
3
37
  ## 0.2.0 (2026-09-05)
4
38
 
5
39
  - **Riot Sign On (RSO)**: new `Rito::RSO` module implementing the OAuth2
data/README.md CHANGED
@@ -44,6 +44,28 @@ Rito.rate_limiter # rate limit strategy (default: AdaptiveLimiter)
44
44
  client = Rito::Client.new(api_key: "RGAPI-...", region: :kr)
45
45
  ```
46
46
 
47
+ ## Queues
48
+
49
+ `Rito::Queues` is a frozen, built-in reference for League queue ids as
50
+ they appear in match data (match-v5 `queueId`, the `queue` filter on
51
+ match lists). Snapshot of the League client's game select data (408 ids).
52
+
53
+ ```ruby
54
+ Rito::Queues.find(420).name # => "Ranked Solo/Duo"
55
+ Rito::Queues[450].mode # => :aram
56
+ Rito::Queues.find(2450).limited_time # => true (rotating game mode)
57
+ Rito::Queues.select { |q| q.category == :bots }.map(&:name).first(3)
58
+
59
+ match = client.matches.by_id("NA1_123")
60
+ match.info.queue.name # => "Ranked Flex" (convenience on MatchInfo)
61
+ ```
62
+
63
+ Each queue is a frozen `Data` object: `id`, `name`, `short_name`,
64
+ `description`, `detailed_description`, `category` (`:pvp`, `:bots`,
65
+ `:custom`), `mode` (`:summoners_rift`, `:aram`, `:tft`, `:jade`,
66
+ `:other`), `limited_time`, `bot_honoring_allowed`. The module includes
67
+ `Enumerable`. Unknown ids return `nil` (Riot adds queues without notice).
68
+
47
69
  ## Riot Sign On (RSO)
48
70
 
49
71
  `Rito::RSO` implements the OAuth2 authorization code flow against
@@ -199,9 +221,10 @@ entry.raw # => full payload hash
199
221
 
200
222
  | Accessor | API |
201
223
  | --- | --- |
202
- | `client.account` | account-v1 |
203
- | `client.summoner` | summoner-v4 |
204
- | `client.matches` | match-v5 (matches, matchlist, timeline) |
224
+ | `client.account` | account-v1 (accounts, active shards, region, `me` for RSO) |
225
+ | `client.summoner` | summoner-v4 (`by_puuid`, `me` for RSO) |
226
+ | `client.matches` | match-v5 (matches, matchlist, timeline, replays) |
227
+ | `client.rso_matches` | lol-rso-match-v1 (RSO bearer token; player resolved from the token) |
205
228
  | `client.champion_masteries` | champion-mastery-v4 |
206
229
  | `client.champions` | champion-v3 (rotations) |
207
230
  | `client.leagues` / `client.league_exp` | league-v4 / league-exp-v4 |
@@ -211,12 +234,16 @@ entry.raw # => full payload hash
211
234
  | `client.challenges` | lol-challenges-v1 |
212
235
  | `client.tournaments` / `client.tournament_stub` | tournament-v5 / stub-v5 |
213
236
  | `client.tft.summoner` / `.leagues` / `.matches` / `.status` / `.spectator` | tft-summoner-v1, tft-league-v1, tft-match-v1, tft-status-v1, spectator-tft-v5 |
214
- | `client.val.content` / `.matches` / `.console_matches` / `.ranked` / `.status` | val-content-v1, val-match-v1, val-console-match-v1, val-ranked-v1, val-status-v1 |
237
+ | `client.val.content` / `.matches` / `.console_matches` / `.ranked` / `.console_ranked` / `.status` | val-content-v1, val-match-v1, val-console-match-v1, val-ranked-v1, val-console-ranked-v1, val-status-v1 |
215
238
  | `client.lor.matches` / `.ranked` / `.status` / `.decks` / `.inventory` | lor-match-v1, lor-ranked-v1, lor-status-v1, lor-deck-v1 / lor-inventory-v1 (RSO) |
216
239
  | `client.riftbound` | riftbound-content-v1 |
217
240
 
218
- Note: VALORANT uses its own platform routing values (`na1, eu, ap, kr, latam, br`;
219
- console: `na, eu, ap`) — the client validates against the right set per product.
241
+ Note: VALORANT uses its own platform routing values (`na, eu, ap, kr,
242
+ latam, br`; console: `na, eu, ap, br, latam`) — the client validates
243
+ against the right set per product. `esports` is a valid platform for
244
+ VALORANT content/match and a valid regional for tft-match-v1 (with
245
+ `esportseu`). The tournament endpoints only exist on the `americas`
246
+ platform — pass `region: :na1` or `:americas`.
220
247
 
221
248
  ## Testing your own app
222
249
 
data/lib/rito/client.rb CHANGED
@@ -32,6 +32,10 @@ module Rito
32
32
  Endpoints::Lol::MatchV5.new(self)
33
33
  end
34
34
 
35
+ def rso_matches
36
+ Endpoints::Lol::RsoMatchV1.new(self)
37
+ end
38
+
35
39
  def champion_masteries
36
40
  Endpoints::Lol::ChampionMasteryV4.new(self)
37
41
  end
@@ -10,14 +10,21 @@ module Rito
10
10
  get('/lol/challenges/v1/challenges/config', region)
11
11
  end
12
12
 
13
+ def challenge_config(challenge_id, region: nil)
14
+ get("/lol/challenges/v1/challenges/#{escape(challenge_id)}/config", region)
15
+ end
16
+
13
17
  def percentiles(region: nil)
14
18
  get('/lol/challenges/v1/challenges/percentiles', region)
15
19
  end
16
20
 
17
- def leaderboard(challenge_id, level, top: nil, page: nil, region: nil)
21
+ def challenge_percentiles(challenge_id, region: nil)
22
+ get("/lol/challenges/v1/challenges/#{escape(challenge_id)}/percentiles", region)
23
+ end
24
+
25
+ def leaderboard(challenge_id, level, limit: nil, region: nil)
18
26
  params = {}
19
- params['top'] = top if top
20
- params['page'] = page if page
27
+ params['limit'] = limit if limit
21
28
  get("/lol/challenges/v1/challenges/#{escape(challenge_id)}/leaderboards/by-level/#{escape(level)}", region,
22
29
  params: params)
23
30
  end
@@ -6,8 +6,8 @@ module Rito
6
6
  class ClashV1 < Base
7
7
  ROUTING = :platform
8
8
 
9
- def players_by_summoner_id(summoner_id, region: nil)
10
- get("/lol/clash/v1/players/by-summoner/#{escape(summoner_id)}", region)
9
+ def players_by_puuid(puuid, region: nil)
10
+ get("/lol/clash/v1/players/by-puuid/#{escape(puuid)}", region)
11
11
  end
12
12
 
13
13
  def team(team_id, region: nil)
@@ -18,6 +18,10 @@ module Rito
18
18
  get('/lol/clash/v1/tournaments', region)
19
19
  end
20
20
 
21
+ def tournament(tournament_id, region: nil)
22
+ get("/lol/clash/v1/tournaments/#{escape(tournament_id)}", region)
23
+ end
24
+
21
25
  def tournament_by_team(team_id, region: nil)
22
26
  get("/lol/clash/v1/tournaments/by-team/#{escape(team_id)}", region)
23
27
  end
@@ -24,8 +24,8 @@ module Rito
24
24
  )
25
25
  end
26
26
 
27
- def entries_by_summoner_id(summoner_id, region: nil)
28
- get("/lol/league/v4/entries/by-summoner/#{escape(summoner_id)}", region)
27
+ def entries_by_puuid(puuid, region: nil)
28
+ get("/lol/league/v4/entries/by-puuid/#{escape(puuid)}", region)
29
29
  .map { |hash| Models::LeagueEntry.from_api(hash) }
30
30
  end
31
31
 
@@ -35,12 +35,6 @@ module Rito
35
35
  get("/lol/league/v4/entries/#{escape(tier)}/#{escape(division)}", region, params: params)
36
36
  .map { |hash| Models::LeagueEntry.from_api(hash) }
37
37
  end
38
-
39
- def league(league_id, region: nil)
40
- Models::LeagueList.from_api(
41
- get("/lol/league/v4/leagues/#{escape(league_id)}", region)
42
- )
43
- end
44
38
  end
45
39
 
46
40
  class LeagueExpV4 < Base
@@ -28,6 +28,12 @@ module Rito
28
28
  def timeline_by_id(match_id, region: nil)
29
29
  get("/lol/match/v5/matches/#{escape(match_id)}/timeline", region)
30
30
  end
31
+
32
+ def replays(puuid, region: nil)
33
+ Models::Replay.from_api(
34
+ get("/lol/match/v5/matches/by-puuid/#{escape(puuid)}/replays", region)
35
+ )
36
+ end
31
37
  end
32
38
  end
33
39
  end
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Rito
4
+ module Endpoints
5
+ module Lol
6
+ # Requires the client to be configured with a bearer_token (RSO) instead
7
+ # of an API key. The player is identified by the token itself; payload
8
+ # shapes are the same as match-v5.
9
+ class RsoMatchV1 < Base
10
+ ROUTING = :regional
11
+
12
+ def ids(region: nil, start: nil, count: nil, queue: nil,
13
+ type: nil, start_time: nil, end_time: nil)
14
+ params = {}
15
+ params['start'] = start if start
16
+ params['count'] = count if count
17
+ params['queue'] = queue if queue
18
+ params['type'] = type if type
19
+ params['startTime'] = start_time if start_time
20
+ params['endTime'] = end_time if end_time
21
+
22
+ get('/lol/rso-match/v1/matches/ids', region, params: params)
23
+ end
24
+
25
+ def by_id(match_id, region: nil)
26
+ Models::Match.from_api(
27
+ get("/lol/rso-match/v1/matches/#{escape(match_id)}", region)
28
+ )
29
+ end
30
+
31
+ def timeline_by_id(match_id, region: nil)
32
+ get("/lol/rso-match/v1/matches/#{escape(match_id)}/timeline", region)
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
@@ -7,15 +7,11 @@ module Rito
7
7
  ROUTING = :platform
8
8
 
9
9
  # Returns nil when the summoner is not in an active game (HTTP 404).
10
- def active_game(summoner_id, region: nil)
11
- get("/lol/spectator/v5/active-games/by-summoner-id/#{escape(summoner_id)}", region)
10
+ def active_game(puuid, region: nil)
11
+ get("/lol/spectator/v5/active-games/by-summoner/#{escape(puuid)}", region)
12
12
  rescue NotFound
13
13
  nil
14
14
  end
15
-
16
- def featured_games(region: nil)
17
- get('/lol/spectator/v5/featured-games', region)
18
- end
19
15
  end
20
16
  end
21
17
  end
@@ -12,22 +12,9 @@ module Rito
12
12
  )
13
13
  end
14
14
 
15
- def by_name(name, region: nil)
16
- Models::Summoner.from_api(
17
- get("/lol/summoner/v4/summoners/by-name/#{escape(name)}", region)
18
- )
19
- end
20
-
21
- def by_account_id(account_id, region: nil)
22
- Models::Summoner.from_api(
23
- get("/lol/summoner/v4/summoners/by-account/#{escape(account_id)}", region)
24
- )
25
- end
26
-
27
- def by_summoner_id(summoner_id, region: nil)
28
- Models::Summoner.from_api(
29
- get("/lol/summoner/v4/summoners/#{escape(summoner_id)}", region)
30
- )
15
+ # Requires the client to be configured with a bearer_token (RSO).
16
+ def me(region: nil)
17
+ Models::Summoner.from_api(get('/lol/summoner/v4/summoners/me', region))
31
18
  end
32
19
  end
33
20
  end
@@ -8,7 +8,7 @@ module Rito
8
8
  PREFIX = '/lol/tournament/v5'
9
9
 
10
10
  def code(tournament_code, region: nil)
11
- get("#{PREFIX}/codes/by-code/#{escape(tournament_code)}", region)
11
+ get("#{PREFIX}/codes/#{escape(tournament_code)}", region)
12
12
  end
13
13
 
14
14
  def create_codes(tournament_id:, count: nil, body: {}, region: nil)
@@ -18,7 +18,11 @@ module Rito
18
18
  end
19
19
 
20
20
  def update_code(tournament_code, body: {}, region: nil)
21
- put("#{PREFIX}/codes/by-code/#{escape(tournament_code)}", region, body: body)
21
+ put("#{PREFIX}/codes/#{escape(tournament_code)}", region, body: body)
22
+ end
23
+
24
+ def games_by_code(tournament_code, region: nil)
25
+ get("#{PREFIX}/games/by-code/#{escape(tournament_code)}", region)
22
26
  end
23
27
 
24
28
  def lobby_events(tournament_code, region: nil)
@@ -39,7 +43,7 @@ module Rito
39
43
  PREFIX = '/lol/tournament-stub/v5'
40
44
 
41
45
  def code(tournament_code, region: nil)
42
- get("#{PREFIX}/codes/by-code/#{escape(tournament_code)}", region)
46
+ get("#{PREFIX}/codes/#{escape(tournament_code)}", region)
43
47
  end
44
48
 
45
49
  def create_codes(tournament_id:, count: nil, body: {}, region: nil)
@@ -48,10 +52,6 @@ module Rito
48
52
  post("#{PREFIX}/codes", region, params: params, body: body)
49
53
  end
50
54
 
51
- def update_code(tournament_code, body: {}, region: nil)
52
- put("#{PREFIX}/codes/by-code/#{escape(tournament_code)}", region, body: body)
53
- end
54
-
55
55
  def lobby_events(tournament_code, region: nil)
56
56
  get("#{PREFIX}/lobby-events/by-code/#{escape(tournament_code)}", region)
57
57
  end
@@ -39,8 +39,9 @@ module Rito
39
39
  get('/lor/deck/v1/decks/me', region)
40
40
  end
41
41
 
42
- def deck(deck_id, region: nil)
43
- get("/lor/deck/v1/decks/me/#{escape(deck_id)}", region)
42
+ # Requires the client to be configured with a bearer_token (RSO).
43
+ def create_deck(body:, region: nil)
44
+ post('/lor/deck/v1/decks/me', region, body: body)
44
45
  end
45
46
  end
46
47
 
@@ -11,14 +11,6 @@ module Rito
11
11
  Models::Summoner.from_api(get("#{PREFIX}/by-puuid/#{escape(puuid)}", region))
12
12
  end
13
13
 
14
- def by_account_id(account_id, region: nil)
15
- Models::Summoner.from_api(get("#{PREFIX}/by-account/#{escape(account_id)}", region))
16
- end
17
-
18
- def by_summoner_id(summoner_id, region: nil)
19
- Models::Summoner.from_api(get("#{PREFIX}/#{escape(summoner_id)}", region))
20
- end
21
-
22
14
  # Requires the client to be configured with a bearer_token (RSO).
23
15
  def me(region: nil)
24
16
  Models::Summoner.from_api(get("#{PREFIX}/me", region))
@@ -26,14 +18,17 @@ module Rito
26
18
  end
27
19
 
28
20
  class LeagueV1 < Base
29
- ROUTING = :regional
21
+ ROUTING = :platform
22
+
23
+ def entries_by_puuid(puuid, region: nil)
24
+ get("/tft/league/v1/by-puuid/#{escape(puuid)}", region)
25
+ end
30
26
 
31
- def entries_by_summoner_id(summoner_id, queue: nil, tier: nil, division: nil, region: nil)
27
+ def entries(tier, division, queue: nil, page: nil, region: nil)
32
28
  params = {}
33
29
  params['queue'] = queue if queue
34
- params['tier'] = tier if tier
35
- params['division'] = division if division
36
- get("/tft/league/v1/entries/by-summoner/#{escape(summoner_id)}", region, params: params)
30
+ params['page'] = page if page
31
+ get("/tft/league/v1/entries/#{escape(tier)}/#{escape(division)}", region, params: params)
37
32
  end
38
33
 
39
34
  def challenger(region: nil)
@@ -80,15 +75,11 @@ module Rito
80
75
  ROUTING = :platform
81
76
 
82
77
  # Returns nil when the summoner is not in an active game (HTTP 404).
83
- def active_game(summoner_id, region: nil)
84
- get("/tft/spectator/v5/active-games/by-summoner-id/#{escape(summoner_id)}", region)
78
+ def active_game(puuid, region: nil)
79
+ get("/lol/spectator/tft/v5/active-games/by-puuid/#{escape(puuid)}", region)
85
80
  rescue NotFound
86
81
  nil
87
82
  end
88
-
89
- def featured_games(region: nil)
90
- get('/tft/spectator/v5/featured-games', region)
91
- end
92
83
  end
93
84
  end
94
85
  end
@@ -52,6 +52,17 @@ module Rito
52
52
  end
53
53
  end
54
54
 
55
+ class ConsoleRankedV1 < Base
56
+ ROUTING = :valorant_console_platform
57
+
58
+ def leaderboard(act_id, platform_type:, size: nil, start_index: nil, region: nil)
59
+ params = { 'platformType' => platform_type }
60
+ params['size'] = size if size
61
+ params['startIndex'] = start_index if start_index
62
+ get("/val/console/ranked/v1/leaderboards/by-act/#{escape(act_id)}", region, params: params)
63
+ end
64
+ end
65
+
55
66
  class StatusV1 < Base
56
67
  ROUTING = :valorant_platform
57
68
 
@@ -80,6 +91,10 @@ module Rito
80
91
  Endpoints::Valorant::ConsoleMatchV1.new(@client)
81
92
  end
82
93
 
94
+ def console_ranked
95
+ Endpoints::Valorant::ConsoleRankedV1.new(@client)
96
+ end
97
+
83
98
  def ranked
84
99
  Endpoints::Valorant::RankedV1.new(@client)
85
100
  end
@@ -31,6 +31,10 @@ module Rito
31
31
  MatchInfo = Data.define(:game_creation, :game_duration, :game_end_timestamp,
32
32
  :game_id, :game_mode, :game_start_timestamp, :game_type,
33
33
  :game_version, :map_id, :participants, :queue_id, :raw) do
34
+ def queue
35
+ Rito::Queues.find(queue_id)
36
+ end
37
+
34
38
  def self.from_api(hash)
35
39
  return nil if hash.nil?
36
40
 
@@ -67,5 +71,15 @@ module Rito
67
71
  )
68
72
  end
69
73
  end
74
+
75
+ Replay = Data.define(:total, :match_file_urls, :raw) do
76
+ def self.from_api(hash)
77
+ new(
78
+ total: hash['total'],
79
+ match_file_urls: hash['matchFileURLs'],
80
+ raw: hash.freeze
81
+ )
82
+ end
83
+ end
70
84
  end
71
85
  end
@@ -0,0 +1,449 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Rito
4
+ # Static reference for League queue ids as they appear in match data
5
+ # (match-v5 `queueId`, the `queue` filter on match lists, ...). Frozen
6
+ # snapshot of the League client's game select data.
7
+ #
8
+ # Rito::Queues.find(420).name # => "Ranked Solo/Duo"
9
+ module Queues
10
+ Queue = Data.define(
11
+ :id, :name, :short_name, :description, :detailed_description,
12
+ :category, :mode, :limited_time, :bot_honoring_allowed
13
+ )
14
+
15
+ class << self
16
+ include Enumerable
17
+
18
+ def all
19
+ QUEUES
20
+ end
21
+
22
+ def find(id)
23
+ return nil if id.nil?
24
+
25
+ INDEX[id.to_i]
26
+ end
27
+
28
+ alias [] find
29
+
30
+ def each(&)
31
+ QUEUES.each(&)
32
+ end
33
+ end
34
+
35
+ ROWS = [
36
+ [0, 'Custom', 'Custom', 'Custom', '', :pvp, :other, false, false],
37
+ [1, 'Normal', 'Normal', 'Blind Pick', 'Normal (Blind Pick)', :pvp, :other, false, false],
38
+ [2, 'Normal', 'Normal', 'Blind Pick', 'Normal (Blind Pick)', :pvp, :other, false, false],
39
+ [7, '', '', '', '', :pvp, :other, false, false],
40
+ [8, 'Normal', 'Normal', 'Blind Pick', 'Normal (Blind Pick)', :pvp, :other, false, false],
41
+ [9, 'Ranked Flex', 'Ranked Flex', 'Ranked Flex', '', :pvp, :other, false, false],
42
+ [14, 'Normal', 'Normal', 'Draft Pick', 'Normal (Draft Pick)', :pvp, :other, false, false],
43
+ [16, '', '', '', '', :pvp, :other, false, false],
44
+ [25, '', '', '', '', :pvp, :other, false, false],
45
+ [31, 'Intro', 'Intro', 'Intro', '', :pvp, :other, false, false],
46
+ [32, 'Beginner', 'Beginner', 'Beginner', '', :pvp, :other, false, false],
47
+ [33, 'Intermediate', 'Intermediate', 'Intermediate', '', :pvp, :other, false, false],
48
+ [34, 'Intro', 'Intro', 'Intro', '', :pvp, :other, false, false],
49
+ [35, 'Beginner', 'Beginner', 'Beginner', '', :pvp, :other, false, false],
50
+ [36, 'Intermediate', 'Intermediate', 'Intermediate', '', :pvp, :other, false, false],
51
+ [41, 'Team', 'Team', 'Team', '', :pvp, :other, false, false],
52
+ [42, 'Team', 'Team', 'Team', '', :pvp, :other, false, false],
53
+ [52, 'Beginner', 'Beginner', 'Beginner', '', :pvp, :other, false, false],
54
+ [61, '', '', '', '', :pvp, :other, false, false],
55
+ [62, 'ARAM', 'ARAM', 'ARAM', '', :pvp, :other, false, false],
56
+ [63, 'ARAM', 'ARAM', 'ARAM', '', :pvp, :other, false, false],
57
+ [64, 'ARAM', 'ARAM', 'ARAM', '', :pvp, :other, false, false],
58
+ [65, 'ARAM', 'ARAM', 'ARAM', '', :pvp, :other, false, false],
59
+ [72, '', '', '', '', :pvp, :other, false, false],
60
+ [73, '', '', '', '', :pvp, :other, false, false],
61
+ [75, '', '', '', '', :pvp, :other, false, false],
62
+ [83, '', '', '', '', :pvp, :other, false, false],
63
+ [90, 'The Teemoing', 'The Teemoing', 'The Teemoing', '', :pvp, :other, false, false],
64
+ [91, 'The Teemoing', 'The Teemoing', 'The Teemoing', '', :pvp, :other, false, false],
65
+ [92, 'Level 100 Gauntlet', 'Level 100 Gauntlet', 'Level 100 Gauntlet', '', :pvp, :other, false, false],
66
+ [96, 'Ascension', 'Ascension', 'Ascension', '', :pvp, :other, false, false],
67
+ [97, 'Ascension', 'Ascension', 'Ascension', '', :pvp, :other, false, false],
68
+ [100, 'Normal', 'Normal', 'Blind Pick', 'Normal (Blind Pick)', :pvp, :other, false, false],
69
+ [300, 'Legend of the Poro King', 'Poro King', 'Poro King', '', :pvp, :other, false, false],
70
+ [301, 'Legend of the Poro King', 'Poro King', 'Poro King', '', :pvp, :other, false, false],
71
+ [310, '', '', '', '', :pvp, :other, false, false],
72
+ [314, 'Nexus Siege', 'Nexus Siege', 'Nexus Siege', '', :pvp, :other, false, false],
73
+ [315, 'Nexus Siege', 'Nexus Siege', 'Nexus Siege', '', :pvp, :other, false, false],
74
+ [316, 'Definitely Not Dominion', 'Definitely Not Dominion', 'Definitely Not Dominion', '', :pvp, :other, false, false],
75
+ [317, 'Definitely Not Dominion', 'Definitely Not Dominion', 'Definitely Not Dominion', '', :pvp, :other, false, false],
76
+ [318, 'AR Ultra Rapid Fire', 'ARURF', 'AR Ultra Rapid Fire', '', :pvp, :other, false, false],
77
+ [319, 'AR Ultra Rapid Fire', 'ARURF', 'AR Ultra Rapid Fire', '', :pvp, :other, false, false],
78
+ [320, 'Blood Moon', 'Blood Moon', 'Blood Moon', '', :pvp, :other, false, false],
79
+ [321, 'Blood Moon', 'Blood Moon', 'Blood Moon', '', :pvp, :other, false, false],
80
+ [324, 'ARSR', 'ARSR', 'ARSR', '', :pvp, :other, false, false],
81
+ [325, 'ARSR', 'ARSR', 'ARSR', '', :pvp, :other, false, false],
82
+ [400, 'Normal', 'Normal', 'Draft Pick', 'Normal (Draft Pick)', :pvp, :summoners_rift, false, false],
83
+ [401, 'Normal', 'Normal', 'Draft Pick', 'Normal (Draft Pick)', :pvp, :summoners_rift, false, false],
84
+ [402, 'Normal', 'Normal', 'Draft Pick', 'Normal (Draft Pick)', :pvp, :summoners_rift, false, false],
85
+ [403, 'Normal', 'Normal', 'Draft Pick', 'Normal (Draft Pick)', :pvp, :summoners_rift, false, false],
86
+ [410, 'Ranked', 'Ranked', 'Ranked Draft', '', :pvp, :other, false, false],
87
+ [411, 'Ranked', 'Ranked', 'Ranked Draft', '', :pvp, :other, false, false],
88
+ [412, 'Ranked', 'Ranked', 'Ranked Draft', '', :pvp, :other, false, false],
89
+ [413, 'Ranked', 'Ranked', 'Ranked Draft', '', :pvp, :other, false, false],
90
+ [420, 'Ranked Solo/Duo', 'Ranked Solo/Duo', 'Ranked Solo/Duo', '', :pvp, :summoners_rift, false, false],
91
+ [421, 'Ranked Solo/Duo', 'Ranked Solo/Duo', 'Ranked Solo/Duo', '', :pvp, :summoners_rift, false, false],
92
+ [422, 'Ranked Solo/Duo', 'Ranked Solo/Duo', 'Ranked Solo/Duo', '', :pvp, :summoners_rift, false, false],
93
+ [430, 'Normal', 'Normal', 'Blind Pick', 'Normal (Blind Pick)', :pvp, :summoners_rift, false, false],
94
+ [431, 'Normal', 'Normal', 'Blind Pick', '', :pvp, :summoners_rift, false, false],
95
+ [432, 'Normal', 'Normal', 'Blind Pick', '', :pvp, :summoners_rift, false, false],
96
+ [433, 'Normal', 'Normal', 'Blind Pick', 'Normal (Blind Pick)', :pvp, :summoners_rift, false, false],
97
+ [440, 'Ranked Flex', 'Ranked Flex', 'Ranked Flex', '', :pvp, :summoners_rift, false, false],
98
+ [441, 'Ranked Flex', 'Ranked Flex', 'Ranked Flex', '', :pvp, :summoners_rift, false, false],
99
+ [442, 'Ranked Flex', 'Ranked Flex', 'Ranked Flex', '', :pvp, :summoners_rift, false, false],
100
+ [450, 'ARAM', 'ARAM', 'ARAM', '', :pvp, :aram, false, false],
101
+ [451, '3v3', '3v3', '3v3', '', :pvp, :aram, false, false],
102
+ [452, '1v1', '1v1', '1v1', '', :pvp, :aram, false, false],
103
+ [460, 'Normal', 'Normal', 'Blind Pick', 'Normal (Blind Pick)', :pvp, :other, false, false],
104
+ [461, 'Twisted Treeline 1v1', 'Twisted Treeline 1v1', 'Twisted Treeline 1v1', 'Twisted Treeline 1v1', :pvp, :other, false, false],
105
+ [470, 'Ranked Flex', 'Ranked Flex', 'Ranked Flex', '', :pvp, :other, false, false],
106
+ [480, 'Swiftplay', 'Swiftplay', 'Swiftplay', 'Normal (Swiftplay)', :pvp, :summoners_rift, false, false],
107
+ [481, '', '', '', '', :pvp, :other, false, false],
108
+ [482, '', '', '', '', :pvp, :other, false, false],
109
+ [483, '', '', '', '', :pvp, :other, false, false],
110
+ [490, 'Quickplay', 'Quickplay', 'Quickplay', 'Normal (Quickplay)', :pvp, :summoners_rift, false, false],
111
+ [491, '', '', '', '', :pvp, :other, false, false],
112
+ [492, '', '', '', '', :pvp, :other, false, false],
113
+ [493, '', '', '', '', :pvp, :other, false, false],
114
+ [501, '', '', '', '', :pvp, :other, false, false],
115
+ [502, '', '', '', '', :pvp, :other, false, false],
116
+ [600, 'Blood Moon', 'Blood Moon', 'Blood Moon', '', :pvp, :other, false, false],
117
+ [601, 'Blood Moon', 'Blood Moon', 'Blood Moon', '', :pvp, :other, false, false],
118
+ [610, 'Dark Star: Singularity', 'Dark Star', 'Dark Star: Singularity', '', :pvp, :other, false, false],
119
+ [611, 'Dark Star: Singularity', 'Dark Star', 'Dark Star: Singularity', '', :pvp, :other, false, false],
120
+ [700, 'Clash', 'Clash', 'Clash', '', :pvp, :summoners_rift, false, false],
121
+ [701, 'Clash', 'Clash', 'Clash', '', :pvp, :summoners_rift, false, false],
122
+ [702, '', '', '', '', :pvp, :other, false, false],
123
+ [710, 'Ranked 5s', 'Ranked 5s', 'Ranked 5s', '', :pvp, :summoners_rift, false, false],
124
+ [720, 'Clash', 'Clash', 'Clash', '', :pvp, :aram, false, false],
125
+ [721, 'Clash', 'Clash', 'Clash', '', :pvp, :aram, false, false],
126
+ [740, 'AR Ultra Rapid Fire Clash', 'ARURF Clash', 'AR Ultra Rapid Fire Clash', '', :pvp, :other, false, false],
127
+ [741, 'AR Ultra Rapid Fire Clash', 'ARURF Clash', 'AR Ultra Rapid Fire Clash', '', :pvp, :other, false, false],
128
+ [800, 'Intermediate', 'Intermediate', 'Intermediate', '', :bots, :summoners_rift, false, false],
129
+ [801, 'Co-op vs. AI', 'Co-op vs. AI', 'Co-op vs. AI', '', :bots, :summoners_rift, false, false],
130
+ [810, 'Intro', 'Intro', 'Intro', '', :bots, :summoners_rift, false, false],
131
+ [820, 'Beginner', 'Beginner', 'Beginner', '', :bots, :summoners_rift, false, false],
132
+ [830, 'Intro', 'Intro', 'Intro', '', :bots, :summoners_rift, false, false],
133
+ [831, 'Bots Intro 3v3', 'Bots Intro 3v3', 'Bots Intro 3v3', 'Bots Intro 3v3', :bots, :summoners_rift, false, false],
134
+ [832, 'Bots Intro 1v1', 'Bots Intro 1v1', 'Bots Intro 1v1', 'Bots Intro 1v1', :bots, :summoners_rift, false, false],
135
+ [840, 'Beginner', 'Beginner', 'Beginner', '', :bots, :summoners_rift, false, false],
136
+ [841, 'Bots Easy 3v3', 'Bots Easy 3v3', 'Bots Easy 3v3', 'Bots Easy 3v3', :bots, :summoners_rift, false, false],
137
+ [842, 'Bots Easy 1v1', 'Bots Easy 1v1', 'Bots Easy 1v1', 'Bots Easy 1v1', :bots, :summoners_rift, false, false],
138
+ [850, 'Intermediate', 'Intermediate', 'Intermediate', '', :bots, :summoners_rift, false, false],
139
+ [851, 'Bots Medium 3v3', 'Bots Medium 3v3', 'Bots Medium 3v3', 'Bots Medium 3v3', :bots, :summoners_rift, false, false],
140
+ [852, 'Bots Medium 1v1', 'Bots Medium 1v1', 'Bots Medium 1v1', 'Bots Medium 1v1', :bots, :summoners_rift, false, false],
141
+ [860, 'ARAM 5v5 Bots', 'ARAM 5v5 Bots', 'ARAM 5v5 Bots', 'ARAM 5v5 Bots', :bots, :aram, false, false],
142
+ [861, 'ARAM 1v1 Bots', 'ARAM 1v1 Bots', 'ARAM 1v1 Bots', 'ARAM 1v1 Bots', :pvp, :aram, false, false],
143
+ [862, '', '', '', '', :pvp, :other, false, false],
144
+ [865, '', '', '', '', :pvp, :other, false, false],
145
+ [870, 'Intro', 'Intro', 'Intro', 'Intro', :bots, :summoners_rift, false, false],
146
+ [880, 'Beginner', 'Beginner', 'Beginner', 'Beginner', :bots, :summoners_rift, false, false],
147
+ [890, 'Intermediate', 'Intermediate', 'Intermediate', 'Intermediate', :bots, :summoners_rift, false, false],
148
+ [891, '', '', '', '', :pvp, :other, false, false],
149
+ [893, 'Bots Easy 1v1', 'Bots Easy 1v1', 'Bots Easy 1v1', 'Bots Easy 1v1', :bots, :summoners_rift, false, false],
150
+ [894, '', '', '', '', :pvp, :other, false, false],
151
+ [900, 'AR Ultra Rapid Fire', 'ARURF', 'AR Ultra Rapid Fire', '', :pvp, :other, false, false],
152
+ [901, 'Test : ARURF 1v1', 'Test : ARURF 1v1', 'Test : ARURF 1v1', '', :pvp, :other, false, false],
153
+ [902, 'Test: ARURF 2v2', 'Test: ARURF 2v2', 'Test: ARURF 2v2', '', :pvp, :other, false, false],
154
+ [903, 'Test: ARURF 3v3', 'Test: ARURF 3v3', 'Test: ARURF 3v3', '', :pvp, :other, false, false],
155
+ [904, 'Test: ARURF 4v4', 'Test: ARURF 4v4', 'Test: ARURF 4v4', '', :pvp, :other, false, false],
156
+ [905, 'Test: ARURF 5v5 - SYD', 'Test: ARURF 5v5 - SYD', 'Test: ARURF 5v5 - SYD', '', :pvp, :other, false, false],
157
+ [906, 'Test: ARURF 1v1 - SYD', 'Test: ARURF 1v1 - SYD', 'Test: ARURF 1v1 - SYD', '', :pvp, :other, false, false],
158
+ [907, 'Test: ARURF 2v2 - SYD', 'Test: ARURF 2v2 - SYD', 'Test: ARURF 2v2 - SYD', '', :pvp, :other, false, false],
159
+ [908, 'Test: ARURF 3v3 - SYD', 'Test: ARURF 3v3 - SYD', 'Test: ARURF 3v3 - SYD', '', :pvp, :other, false, false],
160
+ [909, 'Test: ARURF 4v4 - SYD', 'Test: ARURF 4v4 - SYD', 'Test: ARURF 4v4 - SYD', '', :pvp, :other, false, false],
161
+ [910, 'Ascension', 'Ascension', 'Ascension', '', :pvp, :other, false, false],
162
+ [911, 'Test: ARURF 1v0 - SYD', 'Test: ARURF 1v0 - SYD', 'Test: ARURF 1v0 - SYD', '', :pvp, :other, false, false],
163
+ [920, 'Legend of the Poro King', 'Poro King', 'Poro King', '', :pvp, :other, false, false],
164
+ [921, 'Legend of the Poro King', 'Poro King', 'Poro King', '', :pvp, :other, false, false],
165
+ [930, 'ARAM', 'ARAM', 'ARAM', '', :pvp, :aram, false, false],
166
+ [931, 'ARAM', 'ARAM', 'ARAM', '', :pvp, :aram, false, false],
167
+ [940, 'Nexus Siege', 'Nexus Siege', 'Nexus Siege', '', :pvp, :other, false, false],
168
+ [941, 'Nexus Siege', 'Nexus Siege', 'Nexus Siege', '', :pvp, :other, false, false],
169
+ [950, 'Level 100 Gauntlet', 'Level 100 Gauntlet', 'Level 100 Gauntlet', '', :pvp, :other, false, false],
170
+ [951, 'Level 100 Gauntlet', 'Level 100 Gauntlet', 'Level 100 Gauntlet', '', :pvp, :other, false, false],
171
+ [960, 'The Teemoing', 'The Teemoing', 'The Teemoing', '', :pvp, :other, false, false],
172
+ [961, 'The Teemoing', 'The Teemoing', 'The Teemoing', '', :pvp, :other, false, false],
173
+ [970, 'Hexakill', 'Hexakill', 'Hexakill', '', :pvp, :other, false, false],
174
+ [971, 'Hexakill 1v1', 'Hexakill 1v1', 'Hexakill 1v1', 'Hexakill 1v1', :pvp, :other, false, false],
175
+ [980, 'Invasion (Normal)', 'Invasion (Normal)', 'Normal', 'Invasion (Normal)', :pvp, :other, false, false],
176
+ [981, 'Invasion (Normal)', 'Invasion (Normal)', 'Normal', 'Invasion (Normal)', :pvp, :other, false, false],
177
+ [982, 'Invasion (Normal)', 'Invasion (Normal)', 'Normal', 'Invasion (Normal)', :pvp, :other, false, false],
178
+ [990, 'Invasion (Onslaught)', 'Invasion (Onslaught)', 'Onslaught', 'Invasion (Onslaught)', :pvp, :other, false, false],
179
+ [1000, 'Overcharge', 'Overcharge', 'Overcharge', '', :pvp, :other, false, false],
180
+ [1001, 'Overcharge', 'Overcharge', 'Overcharge', '', :pvp, :other, false, false],
181
+ [1010, 'Snow Battle ARURF', 'Snow ARURF', 'Snow Battle ARURF', '', :pvp, :other, false, false],
182
+ [1011, 'Snow Battle ARURF', 'Snow ARURF', 'Snow Battle ARURF', '', :pvp, :other, false, false],
183
+ [1012, 'Snow Battle ARURF', 'Snow ARURF', 'Snow Battle ARURF', '', :pvp, :other, false, false],
184
+ [1020, 'One For All', 'One For All', 'One For All', '', :pvp, :other, false, false],
185
+ [1021, '1v1', '1v1', '1v1', '', :pvp, :other, false, false],
186
+ [1022, '3v3', '3v3', '3v3', '', :pvp, :other, false, false],
187
+ [1023, '2v2', '2v2', '2v2', '', :pvp, :other, false, false],
188
+ [1024, '4v4', '4v4', '4v4', '', :pvp, :other, false, false],
189
+ [1030, 'Odyssey (Intro)', 'Odyssey (Intro)', 'Intro', 'Odyssey (Intro)', :pvp, :other, false, false],
190
+ [1031, 'Odyssey Intro 1v0', 'Odyssey Intro 1v0', 'Odyssey Intro 1v0', 'Odyssey Intro 1v0', :pvp, :other, false, false],
191
+ [1032, 'Odyssey Intro 3v0', 'Odyssey Intro 3v0', 'Odyssey Intro 3v0', 'Odyssey Intro 3v0', :pvp, :other, false, false],
192
+ [1040, 'Odyssey (Cadet)', 'Odyssey (Cadet)', 'Cadet', 'Odyssey (Cadet)', :pvp, :other, false, false],
193
+ [1041, 'Odyssey Easy 1v0', 'Odyssey Easy 1v0', 'Odyssey Easy 1v0', 'Odyssey Easy 1v0', :pvp, :other, false, false],
194
+ [1050, 'Odyssey (Crewmember)', 'Odyssey (Crewmember)', 'Crewmember', 'Odyssey (Crewmember)', :pvp, :other, false, false],
195
+ [1051, 'Odyssey Medium 1v0', 'Odyssey Medium 1v0', 'Odyssey Medium 1v0', 'Odyssey Medium 1v0', :pvp, :other, false, false],
196
+ [1060, 'Odyssey (Captain)', 'Odyssey (Captain)', 'Captain', 'Odyssey (Captain)', :pvp, :other, false, false],
197
+ [1061, 'Odyssey Hard 1v0', 'Odyssey Hard 1v0', 'Odyssey Hard 1v0', 'Odyssey Hard 1v0', :pvp, :other, false, false],
198
+ [1070, 'Odyssey (Onslaught)', 'Odyssey (Onslaught)', 'Onslaught', 'Odyssey (Onslaught)', :pvp, :other, false, false],
199
+ [1071, 'Odyssey Uber 1v0', 'Odyssey Uber 1v0', 'Odyssey Uber 1v0', 'Odyssey Uber 1v0', :pvp, :other, false, false],
200
+ [1090, 'Teamfight Tactics (Normal)', 'Teamfight Tactics (Normal)', 'Normal', 'Teamfight Tactics (Normal)', :pvp, :tft, false, false],
201
+ [1091, '1v0', '1v0', '1v0', '', :pvp, :tft, false, false],
202
+ [1092, '2v0', '2v0', '2v0', '', :pvp, :tft, false, false],
203
+ [1093, '3v0', '3v0', '3v0', '', :pvp, :tft, false, false],
204
+ [1094, '4v0', '4v0', '4v0', '', :pvp, :tft, false, false],
205
+ [1095, '1v7 Bots', '1v7 Bots', '1v7 Bots', '', :pvp, :tft, false, false],
206
+ [1100, 'Teamfight Tactics (Ranked)', 'Teamfight Tactics (Ranked)', 'Ranked', 'Teamfight Tactics (Ranked)', :pvp, :tft, false, false],
207
+ [1101, '1v0 (Ranked)', '1v0 (Ranked)', '1v0 (Ranked)', '', :pvp, :tft, false, false],
208
+ [1102, '2v0 (Ranked)', '2v0 (Ranked)', '2v0 (Ranked)', '', :pvp, :tft, false, false],
209
+ [1110, 'Teamfight Tactics (Tutorial)', 'Teamfight Tactics (Tutorial)', 'Tutorial', '', :pvp, :tft, false, false],
210
+ [1111, 'TFT Simulation', 'TFT Simulation', 'Simulation', '', :pvp, :tft, false, false],
211
+ [1112, 'TFT Simulation (Automated Testing)', 'TFT Simulation (Automated Testing)', 'Simulation (Auto Testing)', '', :pvp, :tft, false, false],
212
+ [1120, 'Teamfight Tactics (Normal Hyper Roll)', 'Teamfight Tactics (Normal Hyper Roll)', 'Normal Hyper Roll', 'Teamfight Tactics (Normal Hyper Roll)', :pvp, :tft, false, false],
213
+ [1121, '1v0 (Normal Hyper Roll)', '1v0 (Normal Hyper Roll)', '1v0 (Normal Hyper Roll)', '', :pvp, :tft, false, false],
214
+ [1122, '2v0 (Normal Hyper Roll)', '2v0 (Normal Hyper Roll)', '2v0 (Normal Hyper Roll)', '', :pvp, :tft, false, false],
215
+ [1130, 'Teamfight Tactics (Hyper Roll)', 'Teamfight Tactics (Hyper Roll)', 'Hyper Roll', 'Teamfight Tactics (Hyper Roll)', :pvp, :tft, false, false],
216
+ [1131, '1v0 (Hyper Roll)', '1v0 (Hyper Roll)', '1v0 (Hyper Roll)', '', :pvp, :tft, false, false],
217
+ [1132, '2v0 (Hyper Roll)', '2v0 (Hyper Roll)', '2v0 (Hyper Roll)', '', :pvp, :tft, false, false],
218
+ [1133, '3v0 (Hyper Roll)', '3v0 (Hyper Roll)', '3v0 (Hyper Roll)', '', :pvp, :tft, false, false],
219
+ [1135, '1v7 (Hyper Roll)', '1v7 (Hyper Roll)', '1v7 (Hyper Roll)', '', :pvp, :tft, false, false],
220
+ [1140, 'Teamfight Tactics (Normal Double Up)', 'Teamfight Tactics (Normal Double Up)', 'Normal Double Up', 'Teamfight Tactics (Normal Double Up)', :pvp, :tft, false, false],
221
+ [1141, 'Teamfight Tactics (Double Up 1v7 Bots)', 'Teamfight Tactics (Double Up 1v7 Bots)', '1v7 Bots (Double Up)', 'Teamfight Tactics (Double Up 1v7 Bots)', :pvp, :tft, false, false],
222
+ [1142, '2v0 (Normal Double Up)', '2v0 (Normal Double Up)', '2v0 (Normal Double Up)', '2v0 (Normal Double Up)', :pvp, :tft, false, false],
223
+ [1143, '4v0 (Normal Double Up)', '4v0 (Normal Double Up)', '4v0 (Normal Double Up)', '4v0 (Normal Double Up)', :pvp, :tft, false, false],
224
+ [1150, 'Teamfight Tactics (Double Up)', 'Teamfight Tactics (Double Up)', 'Double Up', 'Teamfight Tactics (Double Up)', :pvp, :tft, false, false],
225
+ [1151, '2v0 (Double Up)', '2v0 (Double Up)', '2v0 (Double Up)', '2v0 (Double Up)', :pvp, :tft, false, false],
226
+ [1152, '4v0 (Double Up)', '4v0 (Double Up)', '4v0 (Double Up)', '4v0 (Double Up)', :pvp, :tft, false, false],
227
+ [1160, 'Teamfight Tactics (Double Up)', 'Teamfight Tactics (Double Up)', 'Double Up', 'Teamfight Tactics (Double Up)', :pvp, :tft, false, false],
228
+ [1161, '2v0 (Double Up)', '2v0 (Double Up)', '2v0 (Double Up)', '2v0 (Double Up)', :pvp, :tft, false, false],
229
+ [1162, '4v0 (Double Up)', '4v0 (Double Up)', '4v0 (Double Up)', '4v0 (Double Up)', :pvp, :tft, false, false],
230
+ [1170, 'Teamfight Tactics (Fortune\'s Favor)', 'Teamfight Tactics (Fortune\'s Favor)', 'Fortune\'s Favor', 'Teamfight Tactics (Fortune\'s Favor)', :pvp, :tft, false, false],
231
+ [1171, '1v0 (Fortune\'s Favor)', '1v0 (Fortune\'s Favor)', '1v0 (Fortune\'s Favor)', '1v0 (Fortune\'s Favor)', :pvp, :tft, false, false],
232
+ [1172, '2v0 (Fortune\'s Favor)', '2v0 (Fortune\'s Favor)', '2v0 (Fortune\'s Favor)', '2v0 (Fortune\'s Favor)', :pvp, :tft, false, false],
233
+ [1175, '1v7 Bots (Fortune\'s Favor)', '1v7 Bots (Fortune\'s Favor)', '1v7 Bots (Fortune\'s Favor)', '1v7 Bots (Fortune\'s Favor)', :pvp, :tft, false, false],
234
+ [1180, 'Teamfight Tactics (Soul Brawl)', 'Teamfight Tactics (Soul Brawl)', 'Soul Brawl', 'Teamfight Tactics (Soul Brawl)', :pvp, :tft, false, false],
235
+ [1181, '1v0 (Soul Brawl)', '1v0 (Soul Brawl)', '1v0 (Soul Brawl)', '1v0 (Soul Brawl)', :pvp, :tft, false, false],
236
+ [1182, '2v0 (Soul Brawl)', '2v0 (Soul Brawl)', '2v0 (Soul Brawl)', '2v0 (Soul Brawl)', :pvp, :tft, false, false],
237
+ [1185, '1v7 Bots (Soul Brawl)', '1v7 Bots (Soul Brawl)', '1v7 Bots (Soul Brawl)', '1v7 Bots (Soul Brawl)', :pvp, :tft, false, false],
238
+ [1190, 'Teamfight Tactics (Choncc\'s Classic Treasure)', 'Teamfight Tactics (Choncc\'s Classic Treasure)', 'Choncc\'s Classic Treasure', 'Teamfight Tactics (Choncc\'s Classic Treasure)', :pvp, :tft, false, false],
239
+ [1191, '1v0 (Choncc\'s Classic Treasure)', '1v0 (Choncc\'s Classic Treasure)', '1v0 (Choncc\'s Classic Treasure)', '1v0 (Choncc\'s Classic Treasure)', :pvp, :tft, false, false],
240
+ [1192, '2v0 (Choncc\'s Classic Treasure)', '2v0 (Choncc\'s Classic Treasure)', '2v0 (Choncc\'s Classic Treasure)', '2v0 (Choncc\'s Classic Treasure)', :pvp, :tft, false, false],
241
+ [1195, '1v7 Bots (Choncc\'s Treasure)', '1v7 Bots (Choncc\'s Treasure)', '1v7 Bots (Choncc\'s Treasure)', '1v7 Bots (Choncc\'s Treasure)', :pvp, :tft, false, false],
242
+ [1200, 'Nexus Blitz', 'Nexus Blitz', 'Blind Pick', '', :pvp, :other, false, false],
243
+ [1201, '1v1', '1v1', '1v1', '1v1', :pvp, :other, false, false],
244
+ [1210, 'Teamfight Tactics (Choncc\'s Classic Treasure)', 'Teamfight Tactics (Choncc\'s Classic Treasure)', 'Choncc\'s Classic Treasure', 'Teamfight Tactics (Choncc\'s Classic Treasure)', :pvp, :tft, false, false],
245
+ [1211, '1v0 (Choncc\'s Classic Treasure)', '1v0 (Choncc\'s Classic Treasure)', '1v0 (Choncc\'s Classic Treasure)', '1v0 (Choncc\'s Classic Treasure)', :pvp, :tft, false, false],
246
+ [1212, '2v0 (Choncc\'s Classic Treasure)', '2v0 (Choncc\'s Classic Treasure)', '2v0 (Choncc\'s Classic Treasure)', '2v0 (Choncc\'s Classic Treasure)', :pvp, :tft, false, false],
247
+ [1220, 'Tocker\'s Trials', 'Tocker\'s Trials', 'Tocker\'s Trials', 'Tocker\'s Trials', :pvp, :tft, false, false],
248
+ [1271, '', '', '', '', :pvp, :other, false, false],
249
+ [1272, '', '', '', '', :pvp, :other, false, false],
250
+ [1275, '', '', '', '', :pvp, :other, false, false],
251
+ [1300, 'Nexus Blitz', 'Nexus Blitz', 'Blind Pick', '', :pvp, :other, false, false],
252
+ [1301, '1v1', '1v1', '1v1', '1v1', :pvp, :other, false, false],
253
+ [1400, 'Ultimate Spellbook', 'Ultimate Spellbook', 'Ultimate Spellbook', '', :pvp, :other, false, false],
254
+ [1401, 'UltBook 1v1', 'UltBook 1v1', 'UltBook 1v1', 'UltBook 1v1', :pvp, :other, false, false],
255
+ [1402, 'UltBook 2v2', 'UltBook 2v2', 'UltBook 2v2', 'UltBook 2v2', :pvp, :other, false, false],
256
+ [1403, 'UltBook 3v3', 'UltBook 3v3', 'UltBook 3v3', 'UltBook 3v3', :pvp, :other, false, false],
257
+ [1404, 'UltBook 4v4', 'UltBook 4v4', 'UltBook 4v4', 'UltBook 4v4', :pvp, :other, false, false],
258
+ [1405, 'UltBook OCE 5v5', 'UltBook OCE 5v5', 'UltBook OCE 5v5', 'UltBook OCE 5v5', :pvp, :other, false, false],
259
+ [1406, 'UltBook OCE 1v1', 'UltBook OCE 1v1', 'UltBook OCE 1v1', 'UltBook OCE 1v1', :pvp, :other, false, false],
260
+ [1408, 'UltBook OCE 3v3', 'UltBook OCE 3v3', 'UltBook OCE 3v3', 'UltBook OCE 3v3', :pvp, :other, false, false],
261
+ [1409, 'UltBook OCE 4v4', 'UltBook OCE 4v4', 'UltBook OCE 4v4', 'UltBook OCE 4v4', :pvp, :other, false, false],
262
+ [1411, 'UltBook 1v0', 'UltBook 1v0', 'UltBook 1v0', 'UltBook 1v0', :pvp, :other, false, false],
263
+ [1412, 'UltBook OCE 1v0', 'UltBook OCE 1v0', 'UltBook OCE 1v0', 'UltBook OCE 1v0', :pvp, :other, false, false],
264
+ [1601, '', '', '', '', :pvp, :other, false, false],
265
+ [1602, '', '', '', '', :pvp, :other, false, false],
266
+ [1603, '', '', '', '', :pvp, :other, false, false],
267
+ [1604, '', '', '', '', :pvp, :other, false, false],
268
+ [1605, '', '', '', '', :pvp, :other, false, false],
269
+ [1606, '', '', '', '', :pvp, :other, false, false],
270
+ [1607, '', '', '', '', :pvp, :other, false, false],
271
+ [1608, '', '', '', '', :pvp, :other, false, false],
272
+ [1609, '', '', '', '', :pvp, :other, false, false],
273
+ [1611, '', '', '', '', :pvp, :other, false, false],
274
+ [1612, '', '', '', '', :pvp, :other, false, false],
275
+ [1613, '', '', '', '', :pvp, :other, false, false],
276
+ [1614, '', '', '', '', :pvp, :other, false, false],
277
+ [1615, '', '', '', '', :pvp, :other, false, false],
278
+ [1616, '', '', '', '', :pvp, :other, false, false],
279
+ [1617, '', '', '', '', :pvp, :other, false, false],
280
+ [1618, '', '', '', '', :pvp, :other, false, false],
281
+ [1700, 'Arena', 'Arena', 'Arena', 'Arena', :pvp, :other, false, false],
282
+ [1701, '1v0 (Arena)', '1v0 (Arena)', '1v0 (Arena)', '1v0 (Arena)', :pvp, :other, false, false],
283
+ [1704, 'Arena (PBE 2v2)', 'Arena (PBE 2v2)', 'Arena (PBE 2v2)', 'Arena (PBE 2v2)', :pvp, :other, false, false],
284
+ [1710, 'Arena', 'Arena', 'Arena', 'Arena', :pvp, :other, false, false],
285
+ [1720, 'Arena internal', 'Arena internal', 'Arena internal', 'Arena internal', :pvp, :other, false, false],
286
+ [1731, '1v0 (Arena)', '1v0 (Arena)', '1v0 (Arena)', '1v0 (Arena)', :pvp, :other, false, false],
287
+ [1732, '1v0 (Arena)', '1v0 (Arena)', '1v0 (Arena)', '1v0 (Arena)', :pvp, :other, false, false],
288
+ [1740, 'Bravery Arena', 'Bravery Arena', 'Bravery Arena', 'Bravery Arena', :pvp, :other, false, false],
289
+ [1750, 'Arena 3x6', 'Arena 3x6', 'Arena 3x6', 'Arena 3x6', :pvp, :other, false, false],
290
+ [1767, '', '', '', '', :pvp, :other, false, false],
291
+ [1810, 'Swarm', 'Swarm', 'Swarm', 'Swarm', :pvp, :other, false, false],
292
+ [1820, 'Swarm', 'Swarm', 'Swarm', 'Swarm', :pvp, :other, false, false],
293
+ [1830, 'Swarm', 'Swarm', 'Swarm', 'Swarm', :pvp, :other, false, false],
294
+ [1840, 'Swarm', 'Swarm', 'Swarm', 'Swarm', :pvp, :other, false, false],
295
+ [1900, 'Ultra Rapid Fire', 'URF', 'Ultra Rapid Fire', '', :pvp, :other, false, false],
296
+ [2000, 'Tutorial Part 1', 'Tutorial Part 1', 'Tutorial Part 1', '', :pvp, :other, false, false],
297
+ [2010, 'Tutorial Part 2', 'Tutorial Part 2', 'Tutorial Part 2', '', :pvp, :other, false, false],
298
+ [2020, 'Tutorial Part 3', 'Tutorial Part 3', 'Tutorial Part 3', '', :pvp, :other, false, false],
299
+ [2021, '', '', '', '', :pvp, :other, false, false],
300
+ [2200, 'Teamfight Tactics (Normal)', 'Teamfight Tactics (Normal)', 'Normal', 'Teamfight Tactics (Normal)', :pvp, :tft, false, false],
301
+ [2220, '', '', '', '', :pvp, :other, false, false],
302
+ [2300, 'Brawl', 'Brawl', 'Brawl', 'Brawl', :pvp, :other, false, false],
303
+ [2301, 'Brawl 1v1', 'Brawl 1v1', 'Brawl 1v1', 'Brawl 1v1', :pvp, :other, false, false],
304
+ [2302, 'Brawl 2v2', 'Brawl 2v2', 'Brawl 2v2', 'Brawl 2v2', :pvp, :other, false, false],
305
+ [2303, 'Brawl 3v3', 'Brawl 3v3', 'Brawl 3v3', 'Brawl 3v3', :pvp, :other, false, false],
306
+ [2304, 'Brawl 4v4', 'Brawl 4v4', 'Brawl 4v4', 'Brawl 4v4', :pvp, :other, false, false],
307
+ [2305, 'Brawl 1v0', 'Brawl 1v0', 'Brawl 1v0', 'Brawl 1v0', :pvp, :other, false, false],
308
+ [2400, 'ARAM: Mayhem', 'ARAM: Mayhem', 'ARAM: Mayhem', '', :pvp, :aram, false, false],
309
+ [2401, 'ARAM: Mayhem', 'ARAM: Mayhem', 'ARAM: Mayhem', '', :pvp, :aram, false, false],
310
+ [2403, 'ARAM: Mayhem', 'ARAM: Mayhem', 'ARAM: Mayhem', '', :pvp, :aram, false, false],
311
+ [2405, 'ARAM: Mayhem', 'ARAM: Mayhem', 'ARAM: Mayhem', '', :pvp, :aram, false, false],
312
+ [2410, 'ARAM: Mayhem Tournament', 'ARAM: Mayhem Tournament', 'ARAM: Mayhem Tournament', '', :pvp, :aram, false, false],
313
+ [2450, 'ARAM: Mayhem Classic-ish', 'ARAM: Mayhem Classic-ish', 'ARAM: Mayhem Classic-ish', '', :pvp, :aram, true, false],
314
+ [3000, 'TFT Standard Custom', 'TFT Standard Custom', 'TFT Standard Custom', 'TFT Standard Custom', :pvp, :other, false, false],
315
+ [3010, 'TFT Hyper Roll Custom', 'TFT Hyper Roll Custom', 'TFT Hyper Roll Custom', 'TFT Hyper Roll Custom', :pvp, :other, false, false],
316
+ [3020, 'TFT Double Up Custom', 'TFT Double Up Custom', 'TFT Double Up Custom', 'TFT Double Up Custom', :pvp, :other, false, false],
317
+ [3100, 'SR Blind Pick Custom', 'SR Blind Pick Custom', 'SR Blind Pick Custom', 'SR Blind Pick Custom', :pvp, :other, false, false],
318
+ [3110, 'SR Draft Pick Custom', 'SR Draft Pick Custom', 'SR Draft Pick Custom', 'SR Draft Pick Custom', :pvp, :other, false, false],
319
+ [3120, 'SR All Random', 'SR All Random', 'SR All Random', 'SR All Random', :pvp, :other, false, false],
320
+ [3130, 'SR Tournament Draft', 'SR Tournament Draft', 'SR Tournament Draft', 'SR Tournament Draft', :pvp, :other, false, false],
321
+ [3140, 'Multiplayer Practice Tool Custom', 'Multiplayer Practice Tool Custom', 'Multiplayer Practice Tool Custom', 'Multiplayer Practice Tool Custom', :pvp, :other, false, false],
322
+ [3150, '', '', '', '', :pvp, :other, false, false],
323
+ [3200, 'Howling Abyss Blind Custom', 'Howling Abyss Blind Custom', 'Howling Abyss Blind Custom', 'Howling Abyss Blind Custom', :pvp, :other, false, false],
324
+ [3210, 'Howling Abyss Draft Custom', 'Howling Abyss Draft Custom', 'Howling Abyss Draft Custom', 'Howling Abyss Draft Custom', :pvp, :other, false, false],
325
+ [3220, 'Howling Abyss All Random', 'Howling Abyss All Random', 'Howling Abyss All Random', 'Howling Abyss All Random', :pvp, :other, false, false],
326
+ [3230, 'Howling Abyss Tournament Draft Custom', 'Howling Abyss Tournament Draft Custom', 'Howling Abyss Tournament Draft Custom', 'Howling Abyss Tournament Draft Custom', :pvp, :other, false, false],
327
+ [3240, 'ARAM: Mayhem', 'ARAM: Mayhem', 'ARAM: Mayhem', '', :custom, :other, false, false],
328
+ [3250, 'Howling Abyss First Blood', 'Howling Abyss First Blood', 'Howling Abyss First Blood', 'Howling Abyss First Blood', :pvp, :other, false, false],
329
+ [3260, 'Classic Rift', 'Classic (Custom Blind Pick)', 'Classic (Custom Blind Pick)', 'Classic', :custom, :jade, false, false],
330
+ [3261, 'Jade Sydney', 'Jade Sydney', 'Jade Sydney', 'Jade Sydney', :custom, :jade, false, false],
331
+ [3262, 'Classic Rift', 'Classic (Custom Draft Pick)', 'Classic (Custom Draft Pick)', 'Jade Sydney', :custom, :jade, false, false],
332
+ [3270, 'ARAM: Mayhem', 'ARAM: Mayhem', 'ARAM: Mayhem', 'ARAM: Mayhem', :custom, :other, false, false],
333
+ [3280, 'ARAM: Mayhem Classic-ish', 'ARAM: Mayhem Classic-ish', 'ARAM: Mayhem Classic-ish', 'ARAM: Mayhem Classic-ish', :custom, :aram, false, false],
334
+ [4011, '', '', '', '', :pvp, :other, false, false],
335
+ [4016, 'WIPMODEWIP', 'WIPMODEWIP', 'WIPMODEWIP', 'WIPMODEWIP', :pvp, :other, false, false],
336
+ [4017, 'WIPMODEWIP', 'WIPMODEWIP', 'WIPMODEWIP', 'WIPMODEWIP', :pvp, :other, false, false],
337
+ [4018, 'WIPMODEWIP', 'WIPMODEWIP', 'WIPMODEWIP', 'WIPMODEWIP', :pvp, :other, false, false],
338
+ [4019, 'WIPMODEWIP', 'WIPMODEWIP', 'WIPMODEWIP', 'WIPMODEWIP', :pvp, :other, false, false],
339
+ [4020, 'WIPMODEWIP', 'WIPMODEWIP', 'WIPMODEWIP', 'WIPMODEWIP', :pvp, :other, false, false],
340
+ [4033, '', '', '', '', :pvp, :other, false, false],
341
+ [4044, '', '', '', '', :pvp, :other, false, false],
342
+ [4100, '', '', '', '', :pvp, :other, false, false],
343
+ [4101, '', '', '', '', :pvp, :other, false, false],
344
+ [4102, '', '', '', '', :pvp, :other, false, false],
345
+ [4103, '', '', '', '', :pvp, :other, false, false],
346
+ [4106, '', '', '', '', :pvp, :other, false, false],
347
+ [4107, '', '', '', '', :pvp, :other, false, false],
348
+ [4121, '', '', '', '', :pvp, :other, false, false],
349
+ [4122, '', '', '', '', :pvp, :other, false, false],
350
+ [4123, '', '', '', '', :pvp, :other, false, false],
351
+ [4124, '', '', '', '', :pvp, :other, false, false],
352
+ [4126, '', '', '', '', :pvp, :other, false, false],
353
+ [4127, '', '', '', '', :pvp, :other, false, false],
354
+ [4200, 'Doom Bots 5v5', 'Doom Bots 5v5', 'Doom Bots 5v5', 'Doom Bots 5v5', :pvp, :other, false, true],
355
+ [4201, 'Doom Bots 1v1', 'Doom Bots 1v1', 'Doom Bots 1v1', 'Doom Bots 1v1', :pvp, :other, false, true],
356
+ [4202, 'Doom Bots 2v2', 'Doom Bots 2v2', 'Doom Bots 2v2', 'Doom Bots 2v2', :pvp, :other, false, true],
357
+ [4203, 'Doom Bots 3v3', 'Doom Bots 3v3', 'Doom Bots 3v3', 'Doom Bots 3v3', :pvp, :other, false, true],
358
+ [4204, 'Doom Bots 4v4', 'Doom Bots 4v4', 'Doom Bots 4v4', 'Doom Bots 4v4', :pvp, :other, false, true],
359
+ [4205, 'Doom Bots 5v5 - NA', 'Doom Bots 5v5 - NA', 'Doom Bots 5v5 - NA', 'Doom Bots 5v5 - NA', :pvp, :other, false, true],
360
+ [4210, 'Doom Bots', 'Doom Bots', 'Doom Bots', 'Doom Bots', :pvp, :other, false, true],
361
+ [4211, '', '', '', '', :pvp, :other, false, false],
362
+ [4212, '', '', '', '', :pvp, :other, false, false],
363
+ [4220, 'Doom Bots - Hard', 'Doom Bots - Hard', 'Doom Bots - Hard', 'Doom Bots - Hard', :pvp, :other, false, true],
364
+ [4221, '', '', '', '', :pvp, :other, false, false],
365
+ [4222, '', '', '', '', :pvp, :other, false, false],
366
+ [4240, 'DOOM BOTS - VEIGAR\'S CURSE!', 'DOOM BOTS - VEIGAR\'S CURSE!', 'DOOM BOTS - VEIGAR\'S CURSE!', 'DOOM BOTS - VEIGAR\'S CURSE!', :pvp, :other, true, true],
367
+ [4241, 'DOOM BOTS - VEIGAR\'S CURSE!', 'DOOM BOTS - VEIGAR\'S CURSE!', 'DOOM BOTS - VEIGAR\'S CURSE!', 'DOOM BOTS - VEIGAR\'S CURSE!', :pvp, :other, true, true],
368
+ [4242, 'DOOM BOTS - VEIGAR\'S CURSE!', 'DOOM BOTS - VEIGAR\'S CURSE!', 'DOOM BOTS - VEIGAR\'S CURSE!', 'DOOM BOTS - VEIGAR\'S CURSE!', :pvp, :other, true, true],
369
+ [4250, 'DOOM BOTS - VEIGAR\'S EVIL!', 'DOOM BOTS - VEIGAR\'S EVIL!', 'DOOM BOTS - VEIGAR\'S EVIL!', 'DOOM BOTS - VEIGAR\'S EVIL!', :pvp, :other, true, true],
370
+ [4251, 'DOOM BOTS - VEIGAR\'S EVIL!', 'DOOM BOTS - VEIGAR\'S EVIL!', 'DOOM BOTS - VEIGAR\'S EVIL!', 'DOOM BOTS - VEIGAR\'S EVIL!', :pvp, :other, true, true],
371
+ [4252, 'DOOM BOTS - VEIGAR\'S EVIL!', 'DOOM BOTS - VEIGAR\'S EVIL!', 'DOOM BOTS - VEIGAR\'S EVIL!', 'DOOM BOTS - VEIGAR\'S EVIL!', :pvp, :other, true, true],
372
+ [4260, 'DOOM BOTS - VEIGAR\'S DOOM!', 'DOOM BOTS - VEIGAR\'S DOOM!', 'DOOM BOTS - VEIGAR\'S DOOM!', 'DOOM BOTS - VEIGAR\'S DOOM!', :pvp, :other, true, true],
373
+ [4261, 'DOOM BOTS - VEIGAR\'S DOOM!', 'DOOM BOTS - VEIGAR\'S DOOM!', 'DOOM BOTS - VEIGAR\'S DOOM!', 'DOOM BOTS - VEIGAR\'S DOOM!', :pvp, :other, true, true],
374
+ [4262, 'DOOM BOTS - VEIGAR\'S DOOM!', 'DOOM BOTS - VEIGAR\'S DOOM!', 'DOOM BOTS - VEIGAR\'S DOOM!', 'DOOM BOTS - VEIGAR\'S DOOM!', :pvp, :other, true, true],
375
+ [4300, '5v5 Jade', 'Classic', '5v5 Classic', '5v5 Jade', :pvp, :jade, false, false],
376
+ [4301, '1v1 Jade', '1v1 Classic', '1v1 Classic', '1v1 Jade', :pvp, :jade, false, false],
377
+ [4302, '2v2 Jade', '2v2 Classic', '2v2 Classic', '2v2 Jade', :pvp, :jade, false, false],
378
+ [4303, '3v3 Jade', '3v3 Classic', '3v3 Classic', '3v3 Jade', :pvp, :jade, false, false],
379
+ [4304, '4v4 Jade', '4v4 Classic', '4v4 Classic', '4v4 Jade', :pvp, :jade, false, false],
380
+ [4305, '5v5 Jade Sydney', '5v5 Classic Sydney', '5v5 Classic Sydney', '5v5 Jade Sydney', :pvp, :jade, false, false],
381
+ [4306, '1v1 Jade Sydney', '1v1 Classic Sydney', '1v1 Classic Sydney', '1v1 Jade Sydney', :pvp, :jade, false, false],
382
+ [4307, '2v2 Jade Sydney', '2v2 Classic Sydney', '2v2 Classic Sydney', '2v2 Jade Sydney', :pvp, :jade, false, false],
383
+ [4308, '3v3 Jade Sydney', '3v3 Classic Sydney', '3v3 Classic Sydney', '3v3 Jade Sydney', :pvp, :jade, false, false],
384
+ [4309, '4v4 Jade Sydney', '4v4 Classic Sydney', '4v4 Classic Sydney', '4v4 Jade Sydney', :pvp, :jade, false, false],
385
+ [4310, '', 'Classic', 'Classic 5v5', '', :pvp, :jade, false, true],
386
+ [4311, '1v1 Jade Ranked', '', '', '', :pvp, :jade, false, false],
387
+ [4320, 'Jade', 'Classic', 'Classic Co-op vs. AI', 'Jade', :bots, :jade, false, false],
388
+ [4321, 'Jade', 'Classic', 'Classic Co-op vs. AI 1v1', 'Jade', :bots, :jade, false, false],
389
+ [6000, 'Teamfight Tactics (Set 3.5 Revival: Galaxies)', 'Teamfight Tactics (Set 3.5 Revival: Galaxies)', 'Set 3.5 Revival: Galaxies', 'Teamfight Tactics (Set 3.5 Revival: Galaxies)', :pvp, :tft, false, false],
390
+ [6001, '1v0 (Set 3.5 Revival: Galaxies)', '1v0 (Set 3.5 Revival: Galaxies)', '1v0 (Set 3.5 Revival: Galaxies)', '1v0 (Set 3.5 Revival: Galaxies)', :pvp, :tft, false, false],
391
+ [6002, '1v0 (Set 4.5 Revival)', '1v0 (Set 4.5 Revival)', '1v0 (Set 4.5 Revival)', '1v0 (Set 4.5 Revival)', :pvp, :tft, false, false],
392
+ [6005, '1v7 Bots (Set 3.5 Revival: Galaxies)', '1v7 Bots (Set 3.5 Revival: Galaxies)', '1v7 Bots (Set 3.5 Revival: Galaxies)', '1v7 Bots (Set 3.5 Revival: Galaxies)', :pvp, :tft, false, false],
393
+ [6010, 'Set Queue 1', 'Set Queue 1', 'Set Queue 1', 'Set Queue 1', :pvp, :tft, false, false],
394
+ [6015, 'Set Queue 1 1v7', 'Set Queue 1 1v7', 'Set Queue 1 1v7', 'Set Queue 1 1v7', :pvp, :tft, false, false],
395
+ [6020, 'Set Queue 2', 'Set Queue 2', 'Set Queue 2', 'Set Queue 2', :pvp, :tft, false, false],
396
+ [6023, 'Set Queue 2 3v0', 'Set Queue 2 3v0', 'Set Queue 2 3v0', '', :pvp, :tft, false, false],
397
+ [6025, 'Set Queue 2 1v7', 'Set Queue 2 1v7', 'Set Queue 2 1v7', 'Set Queue 2 1v7', :pvp, :tft, false, false],
398
+ [6030, 'Set Queue 3', 'Set Queue 3', 'Set Queue 3', 'Set Queue 3', :pvp, :tft, false, false],
399
+ [6031, 'Set 13 1v0', 'Set 13 1v0', 'Set 13 1v0', 'Set 13 1v0', :pvp, :tft, false, false],
400
+ [6032, 'Set 13 2v0', 'Set 13 2v0', 'Set 13 2v0', 'Set 13 2v0', :pvp, :tft, false, false],
401
+ [6033, 'Set 13 3v0', 'Set 13 3v0', 'Set 13 3v0', 'Set 13 3v0', :pvp, :tft, false, false],
402
+ [6034, 'Set 13 4v0', 'Set 13 4v0', 'Set 13 4v0', 'Set 13 4v0', :pvp, :tft, false, false],
403
+ [6035, 'Set Queue 3 1v7', 'Set Queue 3 1v7', 'Set Queue 3 1v7', 'Set Queue 3 1v7', :pvp, :tft, false, false],
404
+ [6060, 'Set 13 Normal Hyper Roll', 'Set 13 Normal Hyper Roll', 'Set 13 Normal Hyper Roll', 'Set 13 Normal Hyper Roll', :pvp, :tft, false, false],
405
+ [6061, 'Set 13 1v0 (Normal Hyper Roll)', 'Set 13 1v0 (Normal Hyper Roll)', 'Set 13 1v0 (Normal Hyper Roll)', 'Set 13 1v0 (Normal Hyper Roll)', :pvp, :tft, false, false],
406
+ [6062, 'Set 13 2v0 (Normal Hyper Roll)', 'Set 13 2v0 (Normal Hyper Roll)', 'Set 13 2v0 (Normal Hyper Roll)', 'Set 13 2v0 (Normal Hyper Roll)', :pvp, :tft, false, false],
407
+ [6063, 'Set 13 Double Up', 'Set 13 Double Up', 'Set 13 Double Up', 'Set 13 Double Up', :pvp, :tft, false, false],
408
+ [6064, 'Set 13 2v0 (Double Up)', 'Set 13 2v0 (Double Up)', 'Set 13 2v0 (Double Up)', 'Set 13 2v0 (Double Up)', :pvp, :tft, false, false],
409
+ [6065, 'Set 13 4v0 (Double Up)', 'Set 13 4v0 (Double Up)', 'Set 13 4v0 (Double Up)', 'Set 13 4v0 (Double Up)', :pvp, :tft, false, false],
410
+ [6067, 'Set 13 1v0', 'Set 13 1v0', 'Set 13 1v0', 'Set 13 1v0', :pvp, :tft, false, false],
411
+ [6071, '', '', '', '', :pvp, :other, false, false],
412
+ [6072, '', '', '', '', :pvp, :other, false, false],
413
+ [6073, '', '', '', '', :pvp, :other, false, false],
414
+ [6075, '', '', '', '', :pvp, :other, false, false],
415
+ [6081, '', '', '', '', :pvp, :other, false, false],
416
+ [6082, '', '', '', '', :pvp, :other, false, false],
417
+ [6092, '', '', '', '', :pvp, :other, false, false],
418
+ [6094, '', '', '', '', :pvp, :other, false, false],
419
+ [6100, 'CHONCC\'S K.O. COLISEUM', 'Choncc\'s K.O. Coliseum', 'Choncc\'s K.O. Coliseum', 'CHONCC\'S K.O. COLISEUM', :pvp, :tft, false, false],
420
+ [6101, 'CHONCC\'S K.O. COLISEUM (1v0)', 'CHONCC\'S K.O. COLISEUM (1v0)', 'CHONCC\'S K.O. COLISEUM (1v0)', 'CHONCC\'S K.O. COLISEUM (1v0)', :pvp, :tft, false, false],
421
+ [6102, 'CHONCC\'S K.O. COLISEUM (2v0)', 'CHONCC\'S K.O. COLISEUM (2v0)', 'CHONCC\'S K.O. COLISEUM (2v0)', 'CHONCC\'S K.O. COLISEUM (2v0)', :pvp, :tft, false, false],
422
+ [6105, '', '', '', '', :pvp, :other, false, false],
423
+ [6110, 'Set 17 (Normal)', 'Set 17 (Normal)', 'Set 17 (Normal)', 'SET 17 (NORMAL)', :pvp, :tft, true, false],
424
+ [6111, '1v0 (Set 4.5 Revival)', '1v0 (Set 4.5 Revival)', '1v0 (Set 4.5 Revival)', '1v0 (Set 4.5 Revival)', :pvp, :tft, false, false],
425
+ [6112, '2v0 (Set 4.5 Revival)', '2v0 (Set 4.5 Revival)', '2v0 (Set 4.5 Revival)', '2v0 (Set 4.5 Revival)', :pvp, :tft, false, false],
426
+ [6115, '1v7 (Set 4.5 Revival)', '1v7 (Set 4.5 Revival)', '1v7 (Set 4.5 Revival)', '1v7 (Set 4.5 Revival)', :pvp, :tft, false, false],
427
+ [6120, 'Pengu\'s Party', 'Pengu\'s Party', 'Pengu\'s Party', 'PENGU\'S PARTY', :pvp, :tft, false, false],
428
+ [6121, '1v0 (PENGU\'S PARTY)', '1v0 (PENGU\'S PARTY)', '1v0 (PENGU\'S PARTY)', '1v0 (PENGU\'S PARTY)', :pvp, :tft, false, false],
429
+ [6122, '2v0 (PENGU\'S PARTY)', '2v0 (PENGU\'S PARTY)', '2v0 (PENGU\'S PARTY)', '2v0 (PENGU\'S PARTY)', :pvp, :tft, false, false],
430
+ [6125, '1v7 Bots (PENGU\'S PARTY)', '1v7 Bots (PENGU\'S PARTY)', '1v7 Bots (PENGU\'S PARTY)', '1v7 Bots (PENGU\'S PARTY)', :pvp, :tft, false, false],
431
+ [6130, 'Ao Shin\'s Ascent', 'Ao Shin\'s Ascent', 'Ao Shin\'s Ascent', 'Ao Shin\'s Ascent', :pvp, :tft, false, false],
432
+ [6140, '', '', '', '', :pvp, :other, false, false],
433
+ [6141, '', '', '', '', :pvp, :other, false, false],
434
+ [6142, '', '', '', '', :pvp, :other, false, false],
435
+ [6220, '', '', '', '', :pvp, :other, false, false],
436
+ [6300, '', '', '', '', :pvp, :other, false, false],
437
+ [6310, '', '', '', '', :pvp, :other, false, false],
438
+ [6320, '', '', '', '', :pvp, :other, false, false],
439
+ [7001, '', '', '', '', :pvp, :other, false, false],
440
+ [7011, 'TFT Cosmetics Asset Viewer', 'TFT Cosmetics Asset Viewer', 'TFT Cosmetics Asset Viewer', '', :pvp, :tft, false, false],
441
+ [7021, '', '', '', '', :pvp, :other, false, false],
442
+ [7022, '', '', '', '', :pvp, :other, false, false],
443
+ [9001, '', '', '', '', :pvp, :other, false, false]
444
+ ].freeze
445
+
446
+ INDEX = ROWS.each_with_object({}) { |row, map| map[row[0]] = Queue.new(*row) }.freeze
447
+ QUEUES = INDEX.values.freeze
448
+ end
449
+ end
data/lib/rito/routing.rb CHANGED
@@ -3,21 +3,23 @@
3
3
  module Rito
4
4
  module Routing
5
5
  PLATFORMS = %w[
6
- br1 eun1 euw1 jp1 kr la1 la2 me1 na1 oc1 ph2 ru sg2 th2 tr1 tw2 vn2
6
+ br1 eun1 euw1 jp1 kr la1 la2 me1 na1 oc1 pbe1 ru sg2 tr1 tw2 vn2
7
7
  ].freeze
8
- REGIONALS = %w[americas asia europe sea].freeze
8
+ REGIONALS = %w[americas asia esports esportseu europe sea].freeze
9
9
 
10
10
  CLUSTERS = {
11
11
  'americas' => %w[na1 br1 la1 la2],
12
12
  'europe' => %w[euw1 eun1 tr1 ru me1],
13
13
  'asia' => %w[kr jp1],
14
- 'sea' => %w[oc1 sg2 tw2 vn2 ph2 th2]
14
+ 'sea' => %w[oc1 sg2 tw2 vn2]
15
15
  }.freeze
16
16
 
17
17
  ACCOUNT_REGIONALS = %w[americas asia europe].freeze
18
18
 
19
- VALORANT_PLATFORMS = %w[na1 eu ap kr latam br].freeze
20
- VALORANT_CONSOLE_PLATFORMS = %w[na eu ap].freeze
19
+ # esports is accepted by val-content-v1 and val-match-v1 only.
20
+ VALORANT_PLATFORMS = %w[na eu ap kr latam br esports].freeze
21
+ # br / latam are accepted by val-console-match-v1 only; console ranked is na / eu / ap.
22
+ VALORANT_CONSOLE_PLATFORMS = %w[na eu ap br latam].freeze
21
23
 
22
24
  class << self
23
25
  def platform?(value)
data/lib/rito/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Rito
4
- VERSION = '0.2.0'
4
+ VERSION = '0.3.0'
5
5
  end
data/lib/rito.rb CHANGED
@@ -11,6 +11,7 @@ require 'faraday/retry'
11
11
 
12
12
  # modules
13
13
  require_relative 'rito/routing'
14
+ require_relative 'rito/queues'
14
15
  require_relative 'rito/errors'
15
16
  require_relative 'rito/rate_limiting/header_parser'
16
17
  require_relative 'rito/rate_limiting/bucket'
@@ -33,6 +34,7 @@ require_relative 'rito/endpoints/base'
33
34
  require_relative 'rito/endpoints/account_v1'
34
35
  require_relative 'rito/endpoints/lol/summoner_v4'
35
36
  require_relative 'rito/endpoints/lol/match_v5'
37
+ require_relative 'rito/endpoints/lol/rso_match_v1'
36
38
  require_relative 'rito/endpoints/lol/champion_mastery_v4'
37
39
  require_relative 'rito/endpoints/lol/champion_v3'
38
40
  require_relative 'rito/endpoints/lol/league_v4'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rito
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - kodbilenadam
@@ -59,6 +59,7 @@ files:
59
59
  - lib/rito/endpoints/lol/clash_v1.rb
60
60
  - lib/rito/endpoints/lol/league_v4.rb
61
61
  - lib/rito/endpoints/lol/match_v5.rb
62
+ - lib/rito/endpoints/lol/rso_match_v1.rb
62
63
  - lib/rito/endpoints/lol/spectator_v5.rb
63
64
  - lib/rito/endpoints/lol/status_v4.rb
64
65
  - lib/rito/endpoints/lol/summoner_v4.rb
@@ -76,6 +77,7 @@ files:
76
77
  - lib/rito/models/lol.rb
77
78
  - lib/rito/models/match.rb
78
79
  - lib/rito/models/summoner.rb
80
+ - lib/rito/queues.rb
79
81
  - lib/rito/rate_limiting/adaptive_limiter.rb
80
82
  - lib/rito/rate_limiting/bucket.rb
81
83
  - lib/rito/rate_limiting/header_parser.rb