├── .gitattributes ├── app ├── style │ └── style.css ├── model.py └── app.py ├── README.md ├── .gitignore └── data ├── summoner_spell_info.json ├── champion_info.json └── champion_info_2.json /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /app/style/style.css: -------------------------------------------------------------------------------- 1 | .custom-button { 2 | background-color: #4CAF50; /* Green color */ 3 | border: none; 4 | color: white; 5 | padding: 15px 32px; 6 | text-align: center; 7 | text-decoration: none; 8 | display: inline-block; 9 | font-size: 16px; 10 | margin: 4px 2px; 11 | cursor: pointer; 12 | border-radius: 5px; 13 | } -------------------------------------------------------------------------------- /app/model.py: -------------------------------------------------------------------------------- 1 | import pandas as pd 2 | import json 3 | from sklearn.model_selection import train_test_split 4 | from sklearn.ensemble import RandomForestClassifier 5 | import joblib 6 | 7 | def load_json(path): 8 | with open(path, 'r') as file: 9 | return json.load(file) 10 | 11 | data = pd.read_csv('c:/Users/fares/Desktop/Ai_Goru/trainIt/league-of-legends-predector/data/games.csv') 12 | champion_data:list = load_json('c:/Users/fares/Desktop/Ai_Goru/trainIt/league-of-legends-predector/data/champion_info.json')['data'] 13 | 14 | df = data[[ 15 | 't1_champ1id', 16 | 't1_champ2id', 17 | 't1_champ3id', 18 | 't1_champ4id', 19 | 't1_champ5id', 20 | 't2_champ1id', 21 | 't2_champ2id', 22 | 't2_champ3id', 23 | 't2_champ4id', 24 | 't2_champ5id', 25 | 'winner' 26 | ]] 27 | 28 | x = df.drop('winner', axis=1) 29 | y = df['winner'] 30 | X_train, X_test, y_train, y_test = train_test_split(x, y, test_size=0.2, random_state=42) 31 | 32 | model = RandomForestClassifier() 33 | model.fit(X_train, y_train) 34 | 35 | joblib.dump(model, 'trained_model.pkl') -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # league-of-legends-winner-predector 2 | 3 | A ML Model That Predict The Percentage of Winning for Each Blue And Red Team In League Of Legends , Currently The Accuracy is quite low for The Lack of data , but It Still in Maintainance 4 | 5 | ## What is League Of Legends 6 | 7 | - League of Legends is a team-based game with over 140 champions to make epic plays with. 8 | - Moba Style Game 9 | 10 | ## Contains 11 | 12 | - Notebook For Detailled Explanation 13 | - Prod File which contain A code for a local server to test the model using the streamlit library and user friendly interface 14 | 15 | ## User Interface 16 | ![image](https://github.com/1FarZ1/league-of-legends-win-predector/assets/91225280/95a64b14-d3dd-46d8-8fc0-ccde9d61406f) 17 | 18 | 19 | ## Status 20 | 21 | ### The Model is Still in Maintainance , The Accuracy is Quite Low , But It's Still in Development , Currently Looking for More Data to Train The Model , And Trying to Find The Best Model to Use 22 | 23 | ## Installation 24 | 25 | ```bash 26 | pip install -r requirements.txt 27 | ``` 28 | 29 | ## Usage 30 | 31 | ### You can Try Custom Input by Providing The Champions Id and The Model Will Predict The Percentage of Winning for Each Blue And Red 32 | 33 | ## Contributing 34 | 35 | Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change. 36 | -------------------------------------------------------------------------------- /app/app.py: -------------------------------------------------------------------------------- 1 | import streamlit as st 2 | import joblib 3 | import json 4 | 5 | def load_json(path): 6 | with open(path, 'r') as file: 7 | return json.load(file) 8 | 9 | model = joblib.load('trained_model.pkl') 10 | 11 | champion_data:list = load_json('c:/Users/fares/Desktop/Ai_Goru/trainIt/league-of-legends-predector/data/champion_info.json')['data'] 12 | 13 | st.title('League of Legends Predictor') 14 | st.write('This is a simple web app to predict the winner of a game of League of Legends') 15 | 16 | team1 = [] 17 | team2 = [] 18 | champion_names = [champion_data[str(champion_id)]['name'] for champion_id in champion_data] 19 | 20 | col1,col2 = st.columns(2, gap='large') 21 | 22 | with col1: 23 | st.header('Team 1') 24 | for i in range(1,6): 25 | team1.append( 26 | st.selectbox( 27 | f'Champion {i}', 28 | options=champion_names, 29 | key=f'team1_champion_{i}' 30 | ) 31 | ) 32 | 33 | with col2: 34 | st.header('Team 2') 35 | for i in range(1,6): 36 | team2.append( 37 | st.selectbox( 38 | f'Champion {i}', 39 | options=champion_names, 40 | key=f'team2_champion_{i}' 41 | ) 42 | ) 43 | 44 | button_text = 'Predict' 45 | 46 | if st.markdown(f"""{st.button(button_text)}""", unsafe_allow_html=True): 47 | X = [ ] 48 | for i in range(5): 49 | X.append(int(list(champion_data.keys())[list(champion_data.values()).index(team1[i])])) 50 | for i in range(5): 51 | X.append(int(list(champion_data.keys())[list(champion_data.values()).index(team2[i])])) 52 | prob = model.predict_proba([X]) 53 | st.write(f'Team1: {prob[0][0]*100:.2f}% | Team2: {prob[0][1]*100:.2f}%') -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | *$py.class 5 | 6 | # C extensions 7 | *.so 8 | 9 | # Distribution / packaging 10 | .Python 11 | build/ 12 | develop-eggs/ 13 | dist/ 14 | downloads/ 15 | eggs/ 16 | .eggs/ 17 | lib/ 18 | lib64/ 19 | parts/ 20 | sdist/ 21 | var/ 22 | wheels/ 23 | share/python-wheels/ 24 | *.egg-info/ 25 | .installed.cfg 26 | *.egg 27 | MANIFEST 28 | 29 | # PyInstaller 30 | # Usually these files are written by a python script from a template 31 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 32 | *.manifest 33 | *.spec 34 | 35 | # Installer logs 36 | pip-log.txt 37 | pip-delete-this-directory.txt 38 | 39 | # Unit test / coverage reports 40 | htmlcov/ 41 | .tox/ 42 | .nox/ 43 | .coverage 44 | .coverage.* 45 | .cache 46 | nosetests.xml 47 | coverage.xml 48 | *.cover 49 | *.py,cover 50 | .hypothesis/ 51 | .pytest_cache/ 52 | cover/ 53 | 54 | # Translations 55 | *.mo 56 | *.pot 57 | 58 | # Django stuff: 59 | *.log 60 | local_settings.py 61 | db.sqlite3 62 | db.sqlite3-journal 63 | 64 | # Flask stuff: 65 | instance/ 66 | .webassets-cache 67 | 68 | # Scrapy stuff: 69 | .scrapy 70 | 71 | # Sphinx documentation 72 | docs/_build/ 73 | 74 | # PyBuilder 75 | .pybuilder/ 76 | target/ 77 | 78 | # Jupyter Notebook 79 | .ipynb_checkpoints 80 | 81 | # IPython 82 | profile_default/ 83 | ipython_config.py 84 | 85 | # pyenv 86 | # For a library or package, you might want to ignore these files since the code is 87 | # intended to run in multiple environments; otherwise, check them in: 88 | # .python-version 89 | 90 | # pipenv 91 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. 92 | # However, in case of collaboration, if having platform-specific dependencies or dependencies 93 | # having no cross-platform support, pipenv may install dependencies that don't work, or not 94 | # install all needed dependencies. 95 | #Pipfile.lock 96 | 97 | # poetry 98 | # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. 99 | # This is especially recommended for binary packages to ensure reproducibility, and is more 100 | # commonly ignored for libraries. 101 | # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control 102 | #poetry.lock 103 | 104 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow 105 | __pypackages__/ 106 | 107 | # Celery stuff 108 | celerybeat-schedule 109 | celerybeat.pid 110 | 111 | # SageMath parsed files 112 | *.sage.py 113 | 114 | # Environments 115 | .env 116 | .venv 117 | env/ 118 | venv/ 119 | ENV/ 120 | env.bak/ 121 | venv.bak/ 122 | 123 | # Spyder project settings 124 | .spyderproject 125 | .spyproject 126 | 127 | # Rope project settings 128 | .ropeproject 129 | 130 | # mkdocs documentation 131 | /site 132 | 133 | # mypy 134 | .mypy_cache/ 135 | .dmypy.json 136 | dmypy.json 137 | 138 | # Pyre type checker 139 | .pyre/ 140 | 141 | # pytype static type analyzer 142 | .pytype/ 143 | 144 | # Cython debug symbols 145 | cython_debug/ 146 | 147 | # PyCharm 148 | # JetBrains specific template is maintainted in a separate JetBrains.gitignore that can 149 | # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore 150 | # and can be added to the global gitignore or merged into this file. For a more nuclear 151 | # option (not recommended) you can uncomment the following to ignore the entire idea folder. 152 | #.idea/ 153 | -------------------------------------------------------------------------------- /data/summoner_spell_info.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "summoner", 3 | "version": "7.17.2", 4 | "data": { 5 | "1": { 6 | "id": 1, 7 | "summonerLevel": 6, 8 | "name": "Cleanse", 9 | "key": "SummonerBoost", 10 | "description": "Removes all disables (excluding suppression and airborne) and summoner spell debuffs affecting your champion and lowers the duration of incoming disables by 65% for 3 seconds." 11 | }, 12 | "3": { 13 | "id": 3, 14 | "summonerLevel": 4, 15 | "name": "Exhaust", 16 | "key": "SummonerExhaust", 17 | "description": "Exhausts target enemy champion, reducing their Movement Speed by 30%, and their damage dealt by 40% for 2.5 seconds." 18 | }, 19 | "4": { 20 | "id": 4, 21 | "summonerLevel": 8, 22 | "name": "Flash", 23 | "key": "SummonerFlash", 24 | "description": "Teleports your champion a short distance toward your cursor's location." 25 | }, 26 | "6": { 27 | "id": 6, 28 | "summonerLevel": 1, 29 | "name": "Ghost", 30 | "key": "SummonerHaste", 31 | "description": "Your champion gains increased Movement Speed and can move through units for 10 seconds. Grants a maximum of 28-45% (depending on champion level) Movement Speed after accelerating for 2 seconds." 32 | }, 33 | "7": { 34 | "id": 7, 35 | "summonerLevel": 1, 36 | "name": "Heal", 37 | "key": "SummonerHeal", 38 | "description": "Restores 90-345 Health (depending on champion level) and grants 30% Movement Speed for 1 second to you and target allied champion. This healing is halved for units recently affected by Summoner Heal." 39 | }, 40 | "11": { 41 | "id": 11, 42 | "summonerLevel": 10, 43 | "name": "Smite", 44 | "key": "SummonerSmite", 45 | "description": "Deals 390-1000 true damage (depending on champion level) to target epic, large, or medium monster or enemy minion. Restores Health based on your maximum life when used against monsters." 46 | }, 47 | "12": { 48 | "id": 12, 49 | "summonerLevel": 6, 50 | "name": "Teleport", 51 | "key": "SummonerTeleport", 52 | "description": "After channeling for 4.5 seconds, teleports your champion to target allied structure, minion, or ward." 53 | }, 54 | "13": { 55 | "id": 13, 56 | "summonerLevel": 1, 57 | "name": "Clarity", 58 | "key": "SummonerMana", 59 | "description": "Restores 50% of your champion's maximum Mana. Also restores allies for 25% of their maximum Mana." 60 | }, 61 | "14": { 62 | "id": 14, 63 | "summonerLevel": 10, 64 | "name": "Ignite", 65 | "key": "SummonerDot", 66 | "description": "Ignites target enemy champion, dealing 70-410 true damage (depending on champion level) over 5 seconds, grants you vision of the target, and reduces healing effects on them for the duration." 67 | }, 68 | "21": { 69 | "id": 21, 70 | "summonerLevel": 4, 71 | "name": "Barrier", 72 | "key": "SummonerBarrier", 73 | "description": "Shields your champion from 115-455 damage (depending on champion level) for 2 seconds." 74 | }, 75 | "30": { 76 | "id": 30, 77 | "summonerLevel": 1, 78 | "name": "To the King!", 79 | "key": "SummonerPoroRecall", 80 | "description": "Quickly travel to the Poro King's side." 81 | }, 82 | "31": { 83 | "id": 31, 84 | "summonerLevel": 1, 85 | "name": "Poro Toss", 86 | "key": "SummonerPoroThrow", 87 | "description": "Toss a Poro at your enemies. If it hits, you can quickly travel to your target as a follow up." 88 | }, 89 | "32": { 90 | "id": 32, 91 | "summonerLevel": 1, 92 | "name": "Mark", 93 | "key": "SummonerSnowball", 94 | "description": "Throw a snowball in a straight line at your enemies. If it hits an enemy, they become marked, granting True Sight, and your champion can quickly travel to the marked target as a follow up." 95 | }, 96 | "33": { 97 | "id": 33, 98 | "summonerLevel": 1, 99 | "name": "Nexus Siege: Siege Weapon Slot", 100 | "key": "SummonerSiegeChampSelect1", 101 | "description": "In Nexus Siege, Summoner Spells are replaced with Siege Weapon Slots. Spend Crystal Shards to buy single-use Siege Weapons from the item shop, then use your Summoner Spell keys to activate them!" 102 | }, 103 | "34": { 104 | "id": 34, 105 | "summonerLevel": 1, 106 | "name": "Nexus Siege: Siege Weapon Slot", 107 | "key": "SummonerSiegeChampSelect2", 108 | "description": "In Nexus Siege, Summoner Spells are replaced with Siege Weapon Slots. Spend Crystal Shards to buy single-use Siege Weapons from the item shop, then use your Summoner Spell keys to activate them!" 109 | }, 110 | "35": { 111 | "id": 35, 112 | "summonerLevel": 1, 113 | "name": "Disabled Summoner Spells", 114 | "key": "SummonerDarkStarChampSelect1", 115 | "description": "Summoner spells are disabled in this mode." 116 | }, 117 | "36": { 118 | "id": 36, 119 | "summonerLevel": 1, 120 | "name": "Disabled Summoner Spells", 121 | "key": "SummonerDarkStarChampSelect2", 122 | "description": "Summoner spells are disabled in this mode." 123 | } 124 | } 125 | } -------------------------------------------------------------------------------- /data/champion_info.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "champion", 3 | "version": "7.17.2", 4 | "data": { 5 | "1": { 6 | "title": "the Dark Child", 7 | "id": 1, 8 | "key": "Annie", 9 | "name": "Annie" 10 | }, 11 | "2": { 12 | "title": "the Berserker", 13 | "id": 2, 14 | "key": "Olaf", 15 | "name": "Olaf" 16 | }, 17 | "3": { 18 | "title": "the Colossus", 19 | "id": 3, 20 | "key": "Galio", 21 | "name": "Galio" 22 | }, 23 | "4": { 24 | "title": "the Card Master", 25 | "id": 4, 26 | "key": "TwistedFate", 27 | "name": "Twisted Fate" 28 | }, 29 | "5": { 30 | "title": "the Seneschal of Demacia", 31 | "id": 5, 32 | "key": "XinZhao", 33 | "name": "Xin Zhao" 34 | }, 35 | "6": { 36 | "title": "the Dreadnought", 37 | "id": 6, 38 | "key": "Urgot", 39 | "name": "Urgot" 40 | }, 41 | "7": { 42 | "title": "the Deceiver", 43 | "id": 7, 44 | "key": "Leblanc", 45 | "name": "LeBlanc" 46 | }, 47 | "8": { 48 | "title": "the Crimson Reaper", 49 | "id": 8, 50 | "key": "Vladimir", 51 | "name": "Vladimir" 52 | }, 53 | "9": { 54 | "title": "the Harbinger of Doom", 55 | "id": 9, 56 | "key": "Fiddlesticks", 57 | "name": "Fiddlesticks" 58 | }, 59 | "10": { 60 | "title": "The Judicator", 61 | "id": 10, 62 | "key": "Kayle", 63 | "name": "Kayle" 64 | }, 65 | "11": { 66 | "title": "the Wuju Bladesman", 67 | "id": 11, 68 | "key": "MasterYi", 69 | "name": "Master Yi" 70 | }, 71 | "12": { 72 | "title": "the Minotaur", 73 | "id": 12, 74 | "key": "Alistar", 75 | "name": "Alistar" 76 | }, 77 | "13": { 78 | "title": "the Rune Mage", 79 | "id": 13, 80 | "key": "Ryze", 81 | "name": "Ryze" 82 | }, 83 | "14": { 84 | "title": "The Undead Juggernaut", 85 | "id": 14, 86 | "key": "Sion", 87 | "name": "Sion" 88 | }, 89 | "15": { 90 | "title": "the Battle Mistress", 91 | "id": 15, 92 | "key": "Sivir", 93 | "name": "Sivir" 94 | }, 95 | "16": { 96 | "title": "the Starchild", 97 | "id": 16, 98 | "key": "Soraka", 99 | "name": "Soraka" 100 | }, 101 | "17": { 102 | "title": "the Swift Scout", 103 | "id": 17, 104 | "key": "Teemo", 105 | "name": "Teemo" 106 | }, 107 | "18": { 108 | "title": "the Yordle Gunner", 109 | "id": 18, 110 | "key": "Tristana", 111 | "name": "Tristana" 112 | }, 113 | "19": { 114 | "title": "the Uncaged Wrath of Zaun", 115 | "id": 19, 116 | "key": "Warwick", 117 | "name": "Warwick" 118 | }, 119 | "20": { 120 | "title": "the Yeti Rider", 121 | "id": 20, 122 | "key": "Nunu", 123 | "name": "Nunu" 124 | }, 125 | "21": { 126 | "title": "the Bounty Hunter", 127 | "id": 21, 128 | "key": "MissFortune", 129 | "name": "Miss Fortune" 130 | }, 131 | "22": { 132 | "title": "the Frost Archer", 133 | "id": 22, 134 | "key": "Ashe", 135 | "name": "Ashe" 136 | }, 137 | "23": { 138 | "title": "the Barbarian King", 139 | "id": 23, 140 | "key": "Tryndamere", 141 | "name": "Tryndamere" 142 | }, 143 | "24": { 144 | "title": "Grandmaster at Arms", 145 | "id": 24, 146 | "key": "Jax", 147 | "name": "Jax" 148 | }, 149 | "25": { 150 | "title": "Fallen Angel", 151 | "id": 25, 152 | "key": "Morgana", 153 | "name": "Morgana" 154 | }, 155 | "26": { 156 | "title": "the Chronokeeper", 157 | "id": 26, 158 | "key": "Zilean", 159 | "name": "Zilean" 160 | }, 161 | "27": { 162 | "title": "the Mad Chemist", 163 | "id": 27, 164 | "key": "Singed", 165 | "name": "Singed" 166 | }, 167 | "28": { 168 | "title": "the Widowmaker", 169 | "id": 28, 170 | "key": "Evelynn", 171 | "name": "Evelynn" 172 | }, 173 | "29": { 174 | "title": "the Plague Rat", 175 | "id": 29, 176 | "key": "Twitch", 177 | "name": "Twitch" 178 | }, 179 | "30": { 180 | "title": "the Deathsinger", 181 | "id": 30, 182 | "key": "Karthus", 183 | "name": "Karthus" 184 | }, 185 | "31": { 186 | "title": "the Terror of the Void", 187 | "id": 31, 188 | "key": "Chogath", 189 | "name": "Cho'Gath" 190 | }, 191 | "32": { 192 | "title": "the Sad Mummy", 193 | "id": 32, 194 | "key": "Amumu", 195 | "name": "Amumu" 196 | }, 197 | "33": { 198 | "title": "the Armordillo", 199 | "id": 33, 200 | "key": "Rammus", 201 | "name": "Rammus" 202 | }, 203 | "34": { 204 | "title": "the Cryophoenix", 205 | "id": 34, 206 | "key": "Anivia", 207 | "name": "Anivia" 208 | }, 209 | "35": { 210 | "title": "the Demon Jester", 211 | "id": 35, 212 | "key": "Shaco", 213 | "name": "Shaco" 214 | }, 215 | "36": { 216 | "title": "the Madman of Zaun", 217 | "id": 36, 218 | "key": "DrMundo", 219 | "name": "Dr. Mundo" 220 | }, 221 | "37": { 222 | "title": "Maven of the Strings", 223 | "id": 37, 224 | "key": "Sona", 225 | "name": "Sona" 226 | }, 227 | "38": { 228 | "title": "the Void Walker", 229 | "id": 38, 230 | "key": "Kassadin", 231 | "name": "Kassadin" 232 | }, 233 | "39": { 234 | "title": "the Will of the Blades", 235 | "id": 39, 236 | "key": "Irelia", 237 | "name": "Irelia" 238 | }, 239 | "40": { 240 | "title": "the Storm's Fury", 241 | "id": 40, 242 | "key": "Janna", 243 | "name": "Janna" 244 | }, 245 | "41": { 246 | "title": "the Saltwater Scourge", 247 | "id": 41, 248 | "key": "Gangplank", 249 | "name": "Gangplank" 250 | }, 251 | "42": { 252 | "title": "the Daring Bombardier", 253 | "id": 42, 254 | "key": "Corki", 255 | "name": "Corki" 256 | }, 257 | "43": { 258 | "title": "the Enlightened One", 259 | "id": 43, 260 | "key": "Karma", 261 | "name": "Karma" 262 | }, 263 | "44": { 264 | "title": "the Shield of Valoran", 265 | "id": 44, 266 | "key": "Taric", 267 | "name": "Taric" 268 | }, 269 | "45": { 270 | "title": "the Tiny Master of Evil", 271 | "id": 45, 272 | "key": "Veigar", 273 | "name": "Veigar" 274 | }, 275 | "48": { 276 | "title": "the Troll King", 277 | "id": 48, 278 | "key": "Trundle", 279 | "name": "Trundle" 280 | }, 281 | "50": { 282 | "title": "the Master Tactician", 283 | "id": 50, 284 | "key": "Swain", 285 | "name": "Swain" 286 | }, 287 | "51": { 288 | "title": "the Sheriff of Piltover", 289 | "id": 51, 290 | "key": "Caitlyn", 291 | "name": "Caitlyn" 292 | }, 293 | "53": { 294 | "title": "the Great Steam Golem", 295 | "id": 53, 296 | "key": "Blitzcrank", 297 | "name": "Blitzcrank" 298 | }, 299 | "54": { 300 | "title": "Shard of the Monolith", 301 | "id": 54, 302 | "key": "Malphite", 303 | "name": "Malphite" 304 | }, 305 | "55": { 306 | "title": "the Sinister Blade", 307 | "id": 55, 308 | "key": "Katarina", 309 | "name": "Katarina" 310 | }, 311 | "56": { 312 | "title": "the Eternal Nightmare", 313 | "id": 56, 314 | "key": "Nocturne", 315 | "name": "Nocturne" 316 | }, 317 | "57": { 318 | "title": "the Twisted Treant", 319 | "id": 57, 320 | "key": "Maokai", 321 | "name": "Maokai" 322 | }, 323 | "58": { 324 | "title": "the Butcher of the Sands", 325 | "id": 58, 326 | "key": "Renekton", 327 | "name": "Renekton" 328 | }, 329 | "59": { 330 | "title": "the Exemplar of Demacia", 331 | "id": 59, 332 | "key": "JarvanIV", 333 | "name": "Jarvan IV" 334 | }, 335 | "60": { 336 | "title": "the Spider Queen", 337 | "id": 60, 338 | "key": "Elise", 339 | "name": "Elise" 340 | }, 341 | "61": { 342 | "title": "the Lady of Clockwork", 343 | "id": 61, 344 | "key": "Orianna", 345 | "name": "Orianna" 346 | }, 347 | "62": { 348 | "title": "the Monkey King", 349 | "id": 62, 350 | "key": "MonkeyKing", 351 | "name": "Wukong" 352 | }, 353 | "63": { 354 | "title": "the Burning Vengeance", 355 | "id": 63, 356 | "key": "Brand", 357 | "name": "Brand" 358 | }, 359 | "64": { 360 | "title": "the Blind Monk", 361 | "id": 64, 362 | "key": "LeeSin", 363 | "name": "Lee Sin" 364 | }, 365 | "67": { 366 | "title": "the Night Hunter", 367 | "id": 67, 368 | "key": "Vayne", 369 | "name": "Vayne" 370 | }, 371 | "68": { 372 | "title": "the Mechanized Menace", 373 | "id": 68, 374 | "key": "Rumble", 375 | "name": "Rumble" 376 | }, 377 | "69": { 378 | "title": "the Serpent's Embrace", 379 | "id": 69, 380 | "key": "Cassiopeia", 381 | "name": "Cassiopeia" 382 | }, 383 | "72": { 384 | "title": "the Crystal Vanguard", 385 | "id": 72, 386 | "key": "Skarner", 387 | "name": "Skarner" 388 | }, 389 | "74": { 390 | "title": "the Revered Inventor", 391 | "id": 74, 392 | "key": "Heimerdinger", 393 | "name": "Heimerdinger" 394 | }, 395 | "75": { 396 | "title": "the Curator of the Sands", 397 | "id": 75, 398 | "key": "Nasus", 399 | "name": "Nasus" 400 | }, 401 | "76": { 402 | "title": "the Bestial Huntress", 403 | "id": 76, 404 | "key": "Nidalee", 405 | "name": "Nidalee" 406 | }, 407 | "77": { 408 | "title": "the Spirit Walker", 409 | "id": 77, 410 | "key": "Udyr", 411 | "name": "Udyr" 412 | }, 413 | "78": { 414 | "title": "Keeper of the Hammer", 415 | "id": 78, 416 | "key": "Poppy", 417 | "name": "Poppy" 418 | }, 419 | "79": { 420 | "title": "the Rabble Rouser", 421 | "id": 79, 422 | "key": "Gragas", 423 | "name": "Gragas" 424 | }, 425 | "80": { 426 | "title": "the Artisan of War", 427 | "id": 80, 428 | "key": "Pantheon", 429 | "name": "Pantheon" 430 | }, 431 | "81": { 432 | "title": "the Prodigal Explorer", 433 | "id": 81, 434 | "key": "Ezreal", 435 | "name": "Ezreal" 436 | }, 437 | "82": { 438 | "title": "the Iron Revenant", 439 | "id": 82, 440 | "key": "Mordekaiser", 441 | "name": "Mordekaiser" 442 | }, 443 | "83": { 444 | "title": "Shepherd of Souls", 445 | "id": 83, 446 | "key": "Yorick", 447 | "name": "Yorick" 448 | }, 449 | "84": { 450 | "title": "the Fist of Shadow", 451 | "id": 84, 452 | "key": "Akali", 453 | "name": "Akali" 454 | }, 455 | "85": { 456 | "title": "the Heart of the Tempest", 457 | "id": 85, 458 | "key": "Kennen", 459 | "name": "Kennen" 460 | }, 461 | "86": { 462 | "title": "The Might of Demacia", 463 | "id": 86, 464 | "key": "Garen", 465 | "name": "Garen" 466 | }, 467 | "89": { 468 | "title": "the Radiant Dawn", 469 | "id": 89, 470 | "key": "Leona", 471 | "name": "Leona" 472 | }, 473 | "90": { 474 | "title": "the Prophet of the Void", 475 | "id": 90, 476 | "key": "Malzahar", 477 | "name": "Malzahar" 478 | }, 479 | "91": { 480 | "title": "the Blade's Shadow", 481 | "id": 91, 482 | "key": "Talon", 483 | "name": "Talon" 484 | }, 485 | "92": { 486 | "title": "the Exile", 487 | "id": 92, 488 | "key": "Riven", 489 | "name": "Riven" 490 | }, 491 | "96": { 492 | "title": "the Mouth of the Abyss", 493 | "id": 96, 494 | "key": "KogMaw", 495 | "name": "Kog'Maw" 496 | }, 497 | "98": { 498 | "title": "the Eye of Twilight", 499 | "id": 98, 500 | "key": "Shen", 501 | "name": "Shen" 502 | }, 503 | "99": { 504 | "title": "the Lady of Luminosity", 505 | "id": 99, 506 | "key": "Lux", 507 | "name": "Lux" 508 | }, 509 | "101": { 510 | "title": "the Magus Ascendant", 511 | "id": 101, 512 | "key": "Xerath", 513 | "name": "Xerath" 514 | }, 515 | "102": { 516 | "title": "the Half-Dragon", 517 | "id": 102, 518 | "key": "Shyvana", 519 | "name": "Shyvana" 520 | }, 521 | "103": { 522 | "title": "the Nine-Tailed Fox", 523 | "id": 103, 524 | "key": "Ahri", 525 | "name": "Ahri" 526 | }, 527 | "104": { 528 | "title": "the Outlaw", 529 | "id": 104, 530 | "key": "Graves", 531 | "name": "Graves" 532 | }, 533 | "105": { 534 | "title": "the Tidal Trickster", 535 | "id": 105, 536 | "key": "Fizz", 537 | "name": "Fizz" 538 | }, 539 | "106": { 540 | "title": "the Thunder's Roar", 541 | "id": 106, 542 | "key": "Volibear", 543 | "name": "Volibear" 544 | }, 545 | "107": { 546 | "title": "the Pridestalker", 547 | "id": 107, 548 | "key": "Rengar", 549 | "name": "Rengar" 550 | }, 551 | "110": { 552 | "title": "the Arrow of Retribution", 553 | "id": 110, 554 | "key": "Varus", 555 | "name": "Varus" 556 | }, 557 | "111": { 558 | "title": "the Titan of the Depths", 559 | "id": 111, 560 | "key": "Nautilus", 561 | "name": "Nautilus" 562 | }, 563 | "112": { 564 | "title": "the Machine Herald", 565 | "id": 112, 566 | "key": "Viktor", 567 | "name": "Viktor" 568 | }, 569 | "113": { 570 | "title": "Fury of the North", 571 | "id": 113, 572 | "key": "Sejuani", 573 | "name": "Sejuani" 574 | }, 575 | "114": { 576 | "title": "the Grand Duelist", 577 | "id": 114, 578 | "key": "Fiora", 579 | "name": "Fiora" 580 | }, 581 | "115": { 582 | "title": "the Hexplosives Expert", 583 | "id": 115, 584 | "key": "Ziggs", 585 | "name": "Ziggs" 586 | }, 587 | "117": { 588 | "title": "the Fae Sorceress", 589 | "id": 117, 590 | "key": "Lulu", 591 | "name": "Lulu" 592 | }, 593 | "119": { 594 | "title": "the Glorious Executioner", 595 | "id": 119, 596 | "key": "Draven", 597 | "name": "Draven" 598 | }, 599 | "120": { 600 | "title": "the Shadow of War", 601 | "id": 120, 602 | "key": "Hecarim", 603 | "name": "Hecarim" 604 | }, 605 | "121": { 606 | "title": "the Voidreaver", 607 | "id": 121, 608 | "key": "Khazix", 609 | "name": "Kha'Zix" 610 | }, 611 | "122": { 612 | "title": "the Hand of Noxus", 613 | "id": 122, 614 | "key": "Darius", 615 | "name": "Darius" 616 | }, 617 | "126": { 618 | "title": "the Defender of Tomorrow", 619 | "id": 126, 620 | "key": "Jayce", 621 | "name": "Jayce" 622 | }, 623 | "127": { 624 | "title": "the Ice Witch", 625 | "id": 127, 626 | "key": "Lissandra", 627 | "name": "Lissandra" 628 | }, 629 | "131": { 630 | "title": "Scorn of the Moon", 631 | "id": 131, 632 | "key": "Diana", 633 | "name": "Diana" 634 | }, 635 | "133": { 636 | "title": "Demacia's Wings", 637 | "id": 133, 638 | "key": "Quinn", 639 | "name": "Quinn" 640 | }, 641 | "134": { 642 | "title": "the Dark Sovereign", 643 | "id": 134, 644 | "key": "Syndra", 645 | "name": "Syndra" 646 | }, 647 | "136": { 648 | "title": "The Star Forger", 649 | "id": 136, 650 | "key": "AurelionSol", 651 | "name": "Aurelion Sol" 652 | }, 653 | "141": { 654 | "title": "the Shadow Reaper", 655 | "id": 141, 656 | "key": "Kayn", 657 | "name": "Kayn" 658 | }, 659 | "143": { 660 | "title": "Rise of the Thorns", 661 | "id": 143, 662 | "key": "Zyra", 663 | "name": "Zyra" 664 | }, 665 | "150": { 666 | "title": "the Missing Link", 667 | "id": 150, 668 | "key": "Gnar", 669 | "name": "Gnar" 670 | }, 671 | "154": { 672 | "title": "the Secret Weapon", 673 | "id": 154, 674 | "key": "Zac", 675 | "name": "Zac" 676 | }, 677 | "157": { 678 | "title": "the Unforgiven", 679 | "id": 157, 680 | "key": "Yasuo", 681 | "name": "Yasuo" 682 | }, 683 | "161": { 684 | "title": "the Eye of the Void", 685 | "id": 161, 686 | "key": "Velkoz", 687 | "name": "Vel'Koz" 688 | }, 689 | "163": { 690 | "title": "the Stoneweaver", 691 | "id": 163, 692 | "key": "Taliyah", 693 | "name": "Taliyah" 694 | }, 695 | "164": { 696 | "title": "the Steel Shadow", 697 | "id": 164, 698 | "key": "Camille", 699 | "name": "Camille" 700 | }, 701 | "201": { 702 | "title": "the Heart of the Freljord", 703 | "id": 201, 704 | "key": "Braum", 705 | "name": "Braum" 706 | }, 707 | "202": { 708 | "title": "the Virtuoso", 709 | "id": 202, 710 | "key": "Jhin", 711 | "name": "Jhin" 712 | }, 713 | "203": { 714 | "title": "The Eternal Hunters", 715 | "id": 203, 716 | "key": "Kindred", 717 | "name": "Kindred" 718 | }, 719 | "222": { 720 | "title": "the Loose Cannon", 721 | "id": 222, 722 | "key": "Jinx", 723 | "name": "Jinx" 724 | }, 725 | "223": { 726 | "title": "the River King", 727 | "id": 223, 728 | "key": "TahmKench", 729 | "name": "Tahm Kench" 730 | }, 731 | "236": { 732 | "title": "the Purifier", 733 | "id": 236, 734 | "key": "Lucian", 735 | "name": "Lucian" 736 | }, 737 | "238": { 738 | "title": "the Master of Shadows", 739 | "id": 238, 740 | "key": "Zed", 741 | "name": "Zed" 742 | }, 743 | "240": { 744 | "title": "the Cantankerous Cavalier", 745 | "id": 240, 746 | "key": "Kled", 747 | "name": "Kled" 748 | }, 749 | "245": { 750 | "title": "the Boy Who Shattered Time", 751 | "id": 245, 752 | "key": "Ekko", 753 | "name": "Ekko" 754 | }, 755 | "254": { 756 | "title": "the Piltover Enforcer", 757 | "id": 254, 758 | "key": "Vi", 759 | "name": "Vi" 760 | }, 761 | "266": { 762 | "title": "the Darkin Blade", 763 | "id": 266, 764 | "key": "Aatrox", 765 | "name": "Aatrox" 766 | }, 767 | "267": { 768 | "title": "the Tidecaller", 769 | "id": 267, 770 | "key": "Nami", 771 | "name": "Nami" 772 | }, 773 | "268": { 774 | "title": "the Emperor of the Sands", 775 | "id": 268, 776 | "key": "Azir", 777 | "name": "Azir" 778 | }, 779 | "412": { 780 | "title": "the Chain Warden", 781 | "id": 412, 782 | "key": "Thresh", 783 | "name": "Thresh" 784 | }, 785 | "420": { 786 | "title": "the Kraken Priestess", 787 | "id": 420, 788 | "key": "Illaoi", 789 | "name": "Illaoi" 790 | }, 791 | "421": { 792 | "title": "the Void Burrower", 793 | "id": 421, 794 | "key": "RekSai", 795 | "name": "Rek'Sai" 796 | }, 797 | "427": { 798 | "title": "the Green Father", 799 | "id": 427, 800 | "key": "Ivern", 801 | "name": "Ivern" 802 | }, 803 | "429": { 804 | "title": "the Spear of Vengeance", 805 | "id": 429, 806 | "key": "Kalista", 807 | "name": "Kalista" 808 | }, 809 | "432": { 810 | "title": "the Wandering Caretaker", 811 | "id": 432, 812 | "key": "Bard", 813 | "name": "Bard" 814 | }, 815 | "497": { 816 | "title": "The Charmer", 817 | "id": 497, 818 | "key": "Rakan", 819 | "name": "Rakan" 820 | }, 821 | "498": { 822 | "title": "the Rebel", 823 | "id": 498, 824 | "key": "Xayah", 825 | "name": "Xayah" 826 | }, 827 | "516": { 828 | "title": "The Fire below the Mountain", 829 | "id": 516, 830 | "key": "Ornn", 831 | "name": "Ornn" 832 | } 833 | } 834 | } -------------------------------------------------------------------------------- /data/champion_info_2.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "champion", 3 | "version": "7.18.1", 4 | "data": { 5 | "None": { 6 | "tags": [ 7 | ], 8 | "title": "None", 9 | "id": -1, 10 | "key": "None", 11 | "name": "None" 12 | }, 13 | "MonkeyKing": { 14 | "tags": [ 15 | "Fighter", 16 | "Tank" 17 | ], 18 | "title": "the Monkey King", 19 | "id": 62, 20 | "key": "MonkeyKing", 21 | "name": "Wukong" 22 | }, 23 | "Jax": { 24 | "tags": [ 25 | "Fighter", 26 | "Assassin" 27 | ], 28 | "title": "Grandmaster at Arms", 29 | "id": 24, 30 | "key": "Jax", 31 | "name": "Jax" 32 | }, 33 | "Fiddlesticks": { 34 | "tags": [ 35 | "Mage", 36 | "Support" 37 | ], 38 | "title": "the Harbinger of Doom", 39 | "id": 9, 40 | "key": "Fiddlesticks", 41 | "name": "Fiddlesticks" 42 | }, 43 | "Shaco": { 44 | "tags": [ 45 | "Assassin" 46 | ], 47 | "title": "the Demon Jester", 48 | "id": 35, 49 | "key": "Shaco", 50 | "name": "Shaco" 51 | }, 52 | "Warwick": { 53 | "tags": [ 54 | "Fighter", 55 | "Tank" 56 | ], 57 | "title": "the Uncaged Wrath of Zaun", 58 | "id": 19, 59 | "key": "Warwick", 60 | "name": "Warwick" 61 | }, 62 | "Xayah": { 63 | "tags": [ 64 | "Marksman" 65 | ], 66 | "title": "the Rebel", 67 | "id": 498, 68 | "key": "Xayah", 69 | "name": "Xayah" 70 | }, 71 | "Nidalee": { 72 | "tags": [ 73 | "Assassin", 74 | "Fighter" 75 | ], 76 | "title": "the Bestial Huntress", 77 | "id": 76, 78 | "key": "Nidalee", 79 | "name": "Nidalee" 80 | }, 81 | "Zyra": { 82 | "tags": [ 83 | "Mage", 84 | "Support" 85 | ], 86 | "title": "Rise of the Thorns", 87 | "id": 143, 88 | "key": "Zyra", 89 | "name": "Zyra" 90 | }, 91 | "Kled": { 92 | "tags": [ 93 | "Fighter", 94 | "Tank" 95 | ], 96 | "title": "the Cantankerous Cavalier", 97 | "id": 240, 98 | "key": "Kled", 99 | "name": "Kled" 100 | }, 101 | "Brand": { 102 | "tags": [ 103 | "Mage" 104 | ], 105 | "title": "the Burning Vengeance", 106 | "id": 63, 107 | "key": "Brand", 108 | "name": "Brand" 109 | }, 110 | "Rammus": { 111 | "tags": [ 112 | "Tank", 113 | "Fighter" 114 | ], 115 | "title": "the Armordillo", 116 | "id": 33, 117 | "key": "Rammus", 118 | "name": "Rammus" 119 | }, 120 | "Illaoi": { 121 | "tags": [ 122 | "Fighter", 123 | "Tank" 124 | ], 125 | "title": "the Kraken Priestess", 126 | "id": 420, 127 | "key": "Illaoi", 128 | "name": "Illaoi" 129 | }, 130 | "Corki": { 131 | "tags": [ 132 | "Marksman" 133 | ], 134 | "title": "the Daring Bombardier", 135 | "id": 42, 136 | "key": "Corki", 137 | "name": "Corki" 138 | }, 139 | "Braum": { 140 | "tags": [ 141 | "Support", 142 | "Tank" 143 | ], 144 | "title": "the Heart of the Freljord", 145 | "id": 201, 146 | "key": "Braum", 147 | "name": "Braum" 148 | }, 149 | "Darius": { 150 | "tags": [ 151 | "Fighter", 152 | "Tank" 153 | ], 154 | "title": "the Hand of Noxus", 155 | "id": 122, 156 | "key": "Darius", 157 | "name": "Darius" 158 | }, 159 | "Tryndamere": { 160 | "tags": [ 161 | "Fighter", 162 | "Assassin" 163 | ], 164 | "title": "the Barbarian King", 165 | "id": 23, 166 | "key": "Tryndamere", 167 | "name": "Tryndamere" 168 | }, 169 | "MissFortune": { 170 | "tags": [ 171 | "Marksman" 172 | ], 173 | "title": "the Bounty Hunter", 174 | "id": 21, 175 | "key": "MissFortune", 176 | "name": "Miss Fortune" 177 | }, 178 | "Yorick": { 179 | "tags": [ 180 | "Fighter", 181 | "Tank" 182 | ], 183 | "title": "Shepherd of Souls", 184 | "id": 83, 185 | "key": "Yorick", 186 | "name": "Yorick" 187 | }, 188 | "Xerath": { 189 | "tags": [ 190 | "Mage", 191 | "Assassin" 192 | ], 193 | "title": "the Magus Ascendant", 194 | "id": 101, 195 | "key": "Xerath", 196 | "name": "Xerath" 197 | }, 198 | "Sivir": { 199 | "tags": [ 200 | "Marksman" 201 | ], 202 | "title": "the Battle Mistress", 203 | "id": 15, 204 | "key": "Sivir", 205 | "name": "Sivir" 206 | }, 207 | "Riven": { 208 | "tags": [ 209 | "Fighter", 210 | "Assassin" 211 | ], 212 | "title": "the Exile", 213 | "id": 92, 214 | "key": "Riven", 215 | "name": "Riven" 216 | }, 217 | "Orianna": { 218 | "tags": [ 219 | "Mage", 220 | "Support" 221 | ], 222 | "title": "the Lady of Clockwork", 223 | "id": 61, 224 | "key": "Orianna", 225 | "name": "Orianna" 226 | }, 227 | "Gangplank": { 228 | "tags": [ 229 | "Fighter" 230 | ], 231 | "title": "the Saltwater Scourge", 232 | "id": 41, 233 | "key": "Gangplank", 234 | "name": "Gangplank" 235 | }, 236 | "Malphite": { 237 | "tags": [ 238 | "Tank", 239 | "Fighter" 240 | ], 241 | "title": "Shard of the Monolith", 242 | "id": 54, 243 | "key": "Malphite", 244 | "name": "Malphite" 245 | }, 246 | "Poppy": { 247 | "tags": [ 248 | "Tank", 249 | "Fighter" 250 | ], 251 | "title": "Keeper of the Hammer", 252 | "id": 78, 253 | "key": "Poppy", 254 | "name": "Poppy" 255 | }, 256 | "Karthus": { 257 | "tags": [ 258 | "Mage" 259 | ], 260 | "title": "the Deathsinger", 261 | "id": 30, 262 | "key": "Karthus", 263 | "name": "Karthus" 264 | }, 265 | "Jayce": { 266 | "tags": [ 267 | "Fighter", 268 | "Marksman" 269 | ], 270 | "title": "the Defender of Tomorrow", 271 | "id": 126, 272 | "key": "Jayce", 273 | "name": "Jayce" 274 | }, 275 | "Nunu": { 276 | "tags": [ 277 | "Support", 278 | "Fighter" 279 | ], 280 | "title": "the Yeti Rider", 281 | "id": 20, 282 | "key": "Nunu", 283 | "name": "Nunu" 284 | }, 285 | "Trundle": { 286 | "tags": [ 287 | "Fighter", 288 | "Tank" 289 | ], 290 | "title": "the Troll King", 291 | "id": 48, 292 | "key": "Trundle", 293 | "name": "Trundle" 294 | }, 295 | "Graves": { 296 | "tags": [ 297 | "Marksman" 298 | ], 299 | "title": "the Outlaw", 300 | "id": 104, 301 | "key": "Graves", 302 | "name": "Graves" 303 | }, 304 | "Morgana": { 305 | "tags": [ 306 | "Mage", 307 | "Support" 308 | ], 309 | "title": "Fallen Angel", 310 | "id": 25, 311 | "key": "Morgana", 312 | "name": "Morgana" 313 | }, 314 | "Gnar": { 315 | "tags": [ 316 | "Fighter", 317 | "Tank" 318 | ], 319 | "title": "the Missing Link", 320 | "id": 150, 321 | "key": "Gnar", 322 | "name": "Gnar" 323 | }, 324 | "Lux": { 325 | "tags": [ 326 | "Mage", 327 | "Support" 328 | ], 329 | "title": "the Lady of Luminosity", 330 | "id": 99, 331 | "key": "Lux", 332 | "name": "Lux" 333 | }, 334 | "Shyvana": { 335 | "tags": [ 336 | "Fighter", 337 | "Tank" 338 | ], 339 | "title": "the Half-Dragon", 340 | "id": 102, 341 | "key": "Shyvana", 342 | "name": "Shyvana" 343 | }, 344 | "Renekton": { 345 | "tags": [ 346 | "Fighter", 347 | "Tank" 348 | ], 349 | "title": "the Butcher of the Sands", 350 | "id": 58, 351 | "key": "Renekton", 352 | "name": "Renekton" 353 | }, 354 | "Fiora": { 355 | "tags": [ 356 | "Fighter", 357 | "Assassin" 358 | ], 359 | "title": "the Grand Duelist", 360 | "id": 114, 361 | "key": "Fiora", 362 | "name": "Fiora" 363 | }, 364 | "Jinx": { 365 | "tags": [ 366 | "Marksman" 367 | ], 368 | "title": "the Loose Cannon", 369 | "id": 222, 370 | "key": "Jinx", 371 | "name": "Jinx" 372 | }, 373 | "Kalista": { 374 | "tags": [ 375 | "Marksman" 376 | ], 377 | "title": "the Spear of Vengeance", 378 | "id": 429, 379 | "key": "Kalista", 380 | "name": "Kalista" 381 | }, 382 | "Fizz": { 383 | "tags": [ 384 | "Assassin", 385 | "Fighter" 386 | ], 387 | "title": "the Tidal Trickster", 388 | "id": 105, 389 | "key": "Fizz", 390 | "name": "Fizz" 391 | }, 392 | "Kassadin": { 393 | "tags": [ 394 | "Assassin", 395 | "Mage" 396 | ], 397 | "title": "the Void Walker", 398 | "id": 38, 399 | "key": "Kassadin", 400 | "name": "Kassadin" 401 | }, 402 | "Sona": { 403 | "tags": [ 404 | "Support", 405 | "Mage" 406 | ], 407 | "title": "Maven of the Strings", 408 | "id": 37, 409 | "key": "Sona", 410 | "name": "Sona" 411 | }, 412 | "Irelia": { 413 | "tags": [ 414 | "Fighter", 415 | "Assassin" 416 | ], 417 | "title": "the Will of the Blades", 418 | "id": 39, 419 | "key": "Irelia", 420 | "name": "Irelia" 421 | }, 422 | "Viktor": { 423 | "tags": [ 424 | "Mage" 425 | ], 426 | "title": "the Machine Herald", 427 | "id": 112, 428 | "key": "Viktor", 429 | "name": "Viktor" 430 | }, 431 | "Rakan": { 432 | "tags": [ 433 | "Support" 434 | ], 435 | "title": "The Charmer", 436 | "id": 497, 437 | "key": "Rakan", 438 | "name": "Rakan" 439 | }, 440 | "Kindred": { 441 | "tags": [ 442 | "Marksman" 443 | ], 444 | "title": "The Eternal Hunters", 445 | "id": 203, 446 | "key": "Kindred", 447 | "name": "Kindred" 448 | }, 449 | "Cassiopeia": { 450 | "tags": [ 451 | "Mage" 452 | ], 453 | "title": "the Serpent's Embrace", 454 | "id": 69, 455 | "key": "Cassiopeia", 456 | "name": "Cassiopeia" 457 | }, 458 | "Maokai": { 459 | "tags": [ 460 | "Tank", 461 | "Mage" 462 | ], 463 | "title": "the Twisted Treant", 464 | "id": 57, 465 | "key": "Maokai", 466 | "name": "Maokai" 467 | }, 468 | "Ornn": { 469 | "tags": [ 470 | "Tank", 471 | "Fighter" 472 | ], 473 | "title": "The Fire below the Mountain", 474 | "id": 516, 475 | "key": "Ornn", 476 | "name": "Ornn" 477 | }, 478 | "Thresh": { 479 | "tags": [ 480 | "Support", 481 | "Fighter" 482 | ], 483 | "title": "the Chain Warden", 484 | "id": 412, 485 | "key": "Thresh", 486 | "name": "Thresh" 487 | }, 488 | "Kayle": { 489 | "tags": [ 490 | "Fighter", 491 | "Support" 492 | ], 493 | "title": "The Judicator", 494 | "id": 10, 495 | "key": "Kayle", 496 | "name": "Kayle" 497 | }, 498 | "Hecarim": { 499 | "tags": [ 500 | "Fighter", 501 | "Tank" 502 | ], 503 | "title": "the Shadow of War", 504 | "id": 120, 505 | "key": "Hecarim", 506 | "name": "Hecarim" 507 | }, 508 | "Khazix": { 509 | "tags": [ 510 | "Assassin", 511 | "Fighter" 512 | ], 513 | "title": "the Voidreaver", 514 | "id": 121, 515 | "key": "Khazix", 516 | "name": "Kha'Zix" 517 | }, 518 | "Olaf": { 519 | "tags": [ 520 | "Fighter", 521 | "Tank" 522 | ], 523 | "title": "the Berserker", 524 | "id": 2, 525 | "key": "Olaf", 526 | "name": "Olaf" 527 | }, 528 | "Ziggs": { 529 | "tags": [ 530 | "Mage" 531 | ], 532 | "title": "the Hexplosives Expert", 533 | "id": 115, 534 | "key": "Ziggs", 535 | "name": "Ziggs" 536 | }, 537 | "Syndra": { 538 | "tags": [ 539 | "Mage", 540 | "Support" 541 | ], 542 | "title": "the Dark Sovereign", 543 | "id": 134, 544 | "key": "Syndra", 545 | "name": "Syndra" 546 | }, 547 | "DrMundo": { 548 | "tags": [ 549 | "Fighter", 550 | "Tank" 551 | ], 552 | "title": "the Madman of Zaun", 553 | "id": 36, 554 | "key": "DrMundo", 555 | "name": "Dr. Mundo" 556 | }, 557 | "Karma": { 558 | "tags": [ 559 | "Mage", 560 | "Support" 561 | ], 562 | "title": "the Enlightened One", 563 | "id": 43, 564 | "key": "Karma", 565 | "name": "Karma" 566 | }, 567 | "Annie": { 568 | "tags": [ 569 | "Mage" 570 | ], 571 | "title": "the Dark Child", 572 | "id": 1, 573 | "key": "Annie", 574 | "name": "Annie" 575 | }, 576 | "Akali": { 577 | "tags": [ 578 | "Assassin" 579 | ], 580 | "title": "the Fist of Shadow", 581 | "id": 84, 582 | "key": "Akali", 583 | "name": "Akali" 584 | }, 585 | "Volibear": { 586 | "tags": [ 587 | "Fighter", 588 | "Tank" 589 | ], 590 | "title": "the Thunder's Roar", 591 | "id": 106, 592 | "key": "Volibear", 593 | "name": "Volibear" 594 | }, 595 | "Yasuo": { 596 | "tags": [ 597 | "Fighter", 598 | "Assassin" 599 | ], 600 | "title": "the Unforgiven", 601 | "id": 157, 602 | "key": "Yasuo", 603 | "name": "Yasuo" 604 | }, 605 | "Kennen": { 606 | "tags": [ 607 | "Mage", 608 | "Marksman" 609 | ], 610 | "title": "the Heart of the Tempest", 611 | "id": 85, 612 | "key": "Kennen", 613 | "name": "Kennen" 614 | }, 615 | "Rengar": { 616 | "tags": [ 617 | "Assassin", 618 | "Fighter" 619 | ], 620 | "title": "the Pridestalker", 621 | "id": 107, 622 | "key": "Rengar", 623 | "name": "Rengar" 624 | }, 625 | "Ryze": { 626 | "tags": [ 627 | "Mage", 628 | "Fighter" 629 | ], 630 | "title": "the Rune Mage", 631 | "id": 13, 632 | "key": "Ryze", 633 | "name": "Ryze" 634 | }, 635 | "Shen": { 636 | "tags": [ 637 | "Tank" 638 | ], 639 | "title": "the Eye of Twilight", 640 | "id": 98, 641 | "key": "Shen", 642 | "name": "Shen" 643 | }, 644 | "Zac": { 645 | "tags": [ 646 | "Tank", 647 | "Fighter" 648 | ], 649 | "title": "the Secret Weapon", 650 | "id": 154, 651 | "key": "Zac", 652 | "name": "Zac" 653 | }, 654 | "Talon": { 655 | "tags": [ 656 | "Assassin", 657 | "Fighter" 658 | ], 659 | "title": "the Blade's Shadow", 660 | "id": 91, 661 | "key": "Talon", 662 | "name": "Talon" 663 | }, 664 | "Swain": { 665 | "tags": [ 666 | "Mage", 667 | "Fighter" 668 | ], 669 | "title": "the Master Tactician", 670 | "id": 50, 671 | "key": "Swain", 672 | "name": "Swain" 673 | }, 674 | "Bard": { 675 | "tags": [ 676 | "Support", 677 | "Mage" 678 | ], 679 | "title": "the Wandering Caretaker", 680 | "id": 432, 681 | "key": "Bard", 682 | "name": "Bard" 683 | }, 684 | "Sion": { 685 | "tags": [ 686 | "Tank", 687 | "Fighter" 688 | ], 689 | "title": "The Undead Juggernaut", 690 | "id": 14, 691 | "key": "Sion", 692 | "name": "Sion" 693 | }, 694 | "Vayne": { 695 | "tags": [ 696 | "Marksman", 697 | "Assassin" 698 | ], 699 | "title": "the Night Hunter", 700 | "id": 67, 701 | "key": "Vayne", 702 | "name": "Vayne" 703 | }, 704 | "Nasus": { 705 | "tags": [ 706 | "Fighter", 707 | "Tank" 708 | ], 709 | "title": "the Curator of the Sands", 710 | "id": 75, 711 | "key": "Nasus", 712 | "name": "Nasus" 713 | }, 714 | "Kayn": { 715 | "tags": [ 716 | "Fighter", 717 | "Assassin" 718 | ], 719 | "title": "the Shadow Reaper", 720 | "id": 141, 721 | "key": "Kayn", 722 | "name": "Kayn" 723 | }, 724 | "TwistedFate": { 725 | "tags": [ 726 | "Mage" 727 | ], 728 | "title": "the Card Master", 729 | "id": 4, 730 | "key": "TwistedFate", 731 | "name": "Twisted Fate" 732 | }, 733 | "Chogath": { 734 | "tags": [ 735 | "Tank", 736 | "Mage" 737 | ], 738 | "title": "the Terror of the Void", 739 | "id": 31, 740 | "key": "Chogath", 741 | "name": "Cho'Gath" 742 | }, 743 | "Udyr": { 744 | "tags": [ 745 | "Fighter", 746 | "Tank" 747 | ], 748 | "title": "the Spirit Walker", 749 | "id": 77, 750 | "key": "Udyr", 751 | "name": "Udyr" 752 | }, 753 | "Lucian": { 754 | "tags": [ 755 | "Marksman" 756 | ], 757 | "title": "the Purifier", 758 | "id": 236, 759 | "key": "Lucian", 760 | "name": "Lucian" 761 | }, 762 | "Ivern": { 763 | "tags": [ 764 | "Support", 765 | "Mage" 766 | ], 767 | "title": "the Green Father", 768 | "id": 427, 769 | "key": "Ivern", 770 | "name": "Ivern" 771 | }, 772 | "Leona": { 773 | "tags": [ 774 | "Tank", 775 | "Support" 776 | ], 777 | "title": "the Radiant Dawn", 778 | "id": 89, 779 | "key": "Leona", 780 | "name": "Leona" 781 | }, 782 | "Caitlyn": { 783 | "tags": [ 784 | "Marksman" 785 | ], 786 | "title": "the Sheriff of Piltover", 787 | "id": 51, 788 | "key": "Caitlyn", 789 | "name": "Caitlyn" 790 | }, 791 | "Sejuani": { 792 | "tags": [ 793 | "Tank", 794 | "Fighter" 795 | ], 796 | "title": "Fury of the North", 797 | "id": 113, 798 | "key": "Sejuani", 799 | "name": "Sejuani" 800 | }, 801 | "Nocturne": { 802 | "tags": [ 803 | "Assassin", 804 | "Fighter" 805 | ], 806 | "title": "the Eternal Nightmare", 807 | "id": 56, 808 | "key": "Nocturne", 809 | "name": "Nocturne" 810 | }, 811 | "Zilean": { 812 | "tags": [ 813 | "Support", 814 | "Mage" 815 | ], 816 | "title": "the Chronokeeper", 817 | "id": 26, 818 | "key": "Zilean", 819 | "name": "Zilean" 820 | }, 821 | "Azir": { 822 | "tags": [ 823 | "Mage", 824 | "Marksman" 825 | ], 826 | "title": "the Emperor of the Sands", 827 | "id": 268, 828 | "key": "Azir", 829 | "name": "Azir" 830 | }, 831 | "Rumble": { 832 | "tags": [ 833 | "Fighter", 834 | "Mage" 835 | ], 836 | "title": "the Mechanized Menace", 837 | "id": 68, 838 | "key": "Rumble", 839 | "name": "Rumble" 840 | }, 841 | "Taliyah": { 842 | "tags": [ 843 | "Mage", 844 | "Support" 845 | ], 846 | "title": "the Stoneweaver", 847 | "id": 163, 848 | "key": "Taliyah", 849 | "name": "Taliyah" 850 | }, 851 | "Teemo": { 852 | "tags": [ 853 | "Marksman", 854 | "Assassin" 855 | ], 856 | "title": "the Swift Scout", 857 | "id": 17, 858 | "key": "Teemo", 859 | "name": "Teemo" 860 | }, 861 | "Urgot": { 862 | "tags": [ 863 | "Fighter", 864 | "Marksman" 865 | ], 866 | "title": "the Dreadnought", 867 | "id": 6, 868 | "key": "Urgot", 869 | "name": "Urgot" 870 | }, 871 | "Amumu": { 872 | "tags": [ 873 | "Tank", 874 | "Mage" 875 | ], 876 | "title": "the Sad Mummy", 877 | "id": 32, 878 | "key": "Amumu", 879 | "name": "Amumu" 880 | }, 881 | "Galio": { 882 | "tags": [ 883 | "Tank", 884 | "Mage" 885 | ], 886 | "title": "the Colossus", 887 | "id": 3, 888 | "key": "Galio", 889 | "name": "Galio" 890 | }, 891 | "Heimerdinger": { 892 | "tags": [ 893 | "Mage", 894 | "Support" 895 | ], 896 | "title": "the Revered Inventor", 897 | "id": 74, 898 | "key": "Heimerdinger", 899 | "name": "Heimerdinger" 900 | }, 901 | "Anivia": { 902 | "tags": [ 903 | "Mage", 904 | "Support" 905 | ], 906 | "title": "the Cryophoenix", 907 | "id": 34, 908 | "key": "Anivia", 909 | "name": "Anivia" 910 | }, 911 | "Ashe": { 912 | "tags": [ 913 | "Marksman", 914 | "Support" 915 | ], 916 | "title": "the Frost Archer", 917 | "id": 22, 918 | "key": "Ashe", 919 | "name": "Ashe" 920 | }, 921 | "Velkoz": { 922 | "tags": [ 923 | "Mage" 924 | ], 925 | "title": "the Eye of the Void", 926 | "id": 161, 927 | "key": "Velkoz", 928 | "name": "Vel'Koz" 929 | }, 930 | "Singed": { 931 | "tags": [ 932 | "Tank", 933 | "Fighter" 934 | ], 935 | "title": "the Mad Chemist", 936 | "id": 27, 937 | "key": "Singed", 938 | "name": "Singed" 939 | }, 940 | "Skarner": { 941 | "tags": [ 942 | "Fighter", 943 | "Tank" 944 | ], 945 | "title": "the Crystal Vanguard", 946 | "id": 72, 947 | "key": "Skarner", 948 | "name": "Skarner" 949 | }, 950 | "Varus": { 951 | "tags": [ 952 | "Marksman", 953 | "Mage" 954 | ], 955 | "title": "the Arrow of Retribution", 956 | "id": 110, 957 | "key": "Varus", 958 | "name": "Varus" 959 | }, 960 | "Twitch": { 961 | "tags": [ 962 | "Marksman", 963 | "Assassin" 964 | ], 965 | "title": "the Plague Rat", 966 | "id": 29, 967 | "key": "Twitch", 968 | "name": "Twitch" 969 | }, 970 | "Garen": { 971 | "tags": [ 972 | "Fighter", 973 | "Tank" 974 | ], 975 | "title": "The Might of Demacia", 976 | "id": 86, 977 | "key": "Garen", 978 | "name": "Garen" 979 | }, 980 | "Blitzcrank": { 981 | "tags": [ 982 | "Tank", 983 | "Fighter" 984 | ], 985 | "title": "the Great Steam Golem", 986 | "id": 53, 987 | "key": "Blitzcrank", 988 | "name": "Blitzcrank" 989 | }, 990 | "MasterYi": { 991 | "tags": [ 992 | "Assassin", 993 | "Fighter" 994 | ], 995 | "title": "the Wuju Bladesman", 996 | "id": 11, 997 | "key": "MasterYi", 998 | "name": "Master Yi" 999 | }, 1000 | "Elise": { 1001 | "tags": [ 1002 | "Mage", 1003 | "Fighter" 1004 | ], 1005 | "title": "the Spider Queen", 1006 | "id": 60, 1007 | "key": "Elise", 1008 | "name": "Elise" 1009 | }, 1010 | "Alistar": { 1011 | "tags": [ 1012 | "Tank", 1013 | "Support" 1014 | ], 1015 | "title": "the Minotaur", 1016 | "id": 12, 1017 | "key": "Alistar", 1018 | "name": "Alistar" 1019 | }, 1020 | "Katarina": { 1021 | "tags": [ 1022 | "Assassin", 1023 | "Mage" 1024 | ], 1025 | "title": "the Sinister Blade", 1026 | "id": 55, 1027 | "key": "Katarina", 1028 | "name": "Katarina" 1029 | }, 1030 | "Ekko": { 1031 | "tags": [ 1032 | "Assassin", 1033 | "Fighter" 1034 | ], 1035 | "title": "the Boy Who Shattered Time", 1036 | "id": 245, 1037 | "key": "Ekko", 1038 | "name": "Ekko" 1039 | }, 1040 | "Mordekaiser": { 1041 | "tags": [ 1042 | "Fighter" 1043 | ], 1044 | "title": "the Iron Revenant", 1045 | "id": 82, 1046 | "key": "Mordekaiser", 1047 | "name": "Mordekaiser" 1048 | }, 1049 | "Lulu": { 1050 | "tags": [ 1051 | "Support", 1052 | "Mage" 1053 | ], 1054 | "title": "the Fae Sorceress", 1055 | "id": 117, 1056 | "key": "Lulu", 1057 | "name": "Lulu" 1058 | }, 1059 | "Camille": { 1060 | "tags": [ 1061 | "Fighter", 1062 | "Tank" 1063 | ], 1064 | "title": "the Steel Shadow", 1065 | "id": 164, 1066 | "key": "Camille", 1067 | "name": "Camille" 1068 | }, 1069 | "Aatrox": { 1070 | "tags": [ 1071 | "Fighter", 1072 | "Tank" 1073 | ], 1074 | "title": "the Darkin Blade", 1075 | "id": 266, 1076 | "key": "Aatrox", 1077 | "name": "Aatrox" 1078 | }, 1079 | "Draven": { 1080 | "tags": [ 1081 | "Marksman" 1082 | ], 1083 | "title": "the Glorious Executioner", 1084 | "id": 119, 1085 | "key": "Draven", 1086 | "name": "Draven" 1087 | }, 1088 | "TahmKench": { 1089 | "tags": [ 1090 | "Support", 1091 | "Tank" 1092 | ], 1093 | "title": "the River King", 1094 | "id": 223, 1095 | "key": "TahmKench", 1096 | "name": "Tahm Kench" 1097 | }, 1098 | "Pantheon": { 1099 | "tags": [ 1100 | "Fighter", 1101 | "Assassin" 1102 | ], 1103 | "title": "the Artisan of War", 1104 | "id": 80, 1105 | "key": "Pantheon", 1106 | "name": "Pantheon" 1107 | }, 1108 | "XinZhao": { 1109 | "tags": [ 1110 | "Fighter", 1111 | "Assassin" 1112 | ], 1113 | "title": "the Seneschal of Demacia", 1114 | "id": 5, 1115 | "key": "XinZhao", 1116 | "name": "Xin Zhao" 1117 | }, 1118 | "AurelionSol": { 1119 | "tags": [ 1120 | "Mage", 1121 | "Fighter" 1122 | ], 1123 | "title": "The Star Forger", 1124 | "id": 136, 1125 | "key": "AurelionSol", 1126 | "name": "Aurelion Sol" 1127 | }, 1128 | "LeeSin": { 1129 | "tags": [ 1130 | "Fighter", 1131 | "Assassin" 1132 | ], 1133 | "title": "the Blind Monk", 1134 | "id": 64, 1135 | "key": "LeeSin", 1136 | "name": "Lee Sin" 1137 | }, 1138 | "Taric": { 1139 | "tags": [ 1140 | "Support", 1141 | "Fighter" 1142 | ], 1143 | "title": "the Shield of Valoran", 1144 | "id": 44, 1145 | "key": "Taric", 1146 | "name": "Taric" 1147 | }, 1148 | "Malzahar": { 1149 | "tags": [ 1150 | "Mage", 1151 | "Assassin" 1152 | ], 1153 | "title": "the Prophet of the Void", 1154 | "id": 90, 1155 | "key": "Malzahar", 1156 | "name": "Malzahar" 1157 | }, 1158 | "Lissandra": { 1159 | "tags": [ 1160 | "Mage" 1161 | ], 1162 | "title": "the Ice Witch", 1163 | "id": 127, 1164 | "key": "Lissandra", 1165 | "name": "Lissandra" 1166 | }, 1167 | "Diana": { 1168 | "tags": [ 1169 | "Fighter", 1170 | "Mage" 1171 | ], 1172 | "title": "Scorn of the Moon", 1173 | "id": 131, 1174 | "key": "Diana", 1175 | "name": "Diana" 1176 | }, 1177 | "Tristana": { 1178 | "tags": [ 1179 | "Marksman", 1180 | "Assassin" 1181 | ], 1182 | "title": "the Yordle Gunner", 1183 | "id": 18, 1184 | "key": "Tristana", 1185 | "name": "Tristana" 1186 | }, 1187 | "RekSai": { 1188 | "tags": [ 1189 | "Fighter" 1190 | ], 1191 | "title": "the Void Burrower", 1192 | "id": 421, 1193 | "key": "RekSai", 1194 | "name": "Rek'Sai" 1195 | }, 1196 | "Vladimir": { 1197 | "tags": [ 1198 | "Mage", 1199 | "Tank" 1200 | ], 1201 | "title": "the Crimson Reaper", 1202 | "id": 8, 1203 | "key": "Vladimir", 1204 | "name": "Vladimir" 1205 | }, 1206 | "JarvanIV": { 1207 | "tags": [ 1208 | "Tank", 1209 | "Fighter" 1210 | ], 1211 | "title": "the Exemplar of Demacia", 1212 | "id": 59, 1213 | "key": "JarvanIV", 1214 | "name": "Jarvan IV" 1215 | }, 1216 | "Nami": { 1217 | "tags": [ 1218 | "Support", 1219 | "Mage" 1220 | ], 1221 | "title": "the Tidecaller", 1222 | "id": 267, 1223 | "key": "Nami", 1224 | "name": "Nami" 1225 | }, 1226 | "Jhin": { 1227 | "tags": [ 1228 | "Marksman", 1229 | "Assassin" 1230 | ], 1231 | "title": "the Virtuoso", 1232 | "id": 202, 1233 | "key": "Jhin", 1234 | "name": "Jhin" 1235 | }, 1236 | "Soraka": { 1237 | "tags": [ 1238 | "Support", 1239 | "Mage" 1240 | ], 1241 | "title": "the Starchild", 1242 | "id": 16, 1243 | "key": "Soraka", 1244 | "name": "Soraka" 1245 | }, 1246 | "Veigar": { 1247 | "tags": [ 1248 | "Mage" 1249 | ], 1250 | "title": "the Tiny Master of Evil", 1251 | "id": 45, 1252 | "key": "Veigar", 1253 | "name": "Veigar" 1254 | }, 1255 | "Janna": { 1256 | "tags": [ 1257 | "Support", 1258 | "Mage" 1259 | ], 1260 | "title": "the Storm's Fury", 1261 | "id": 40, 1262 | "key": "Janna", 1263 | "name": "Janna" 1264 | }, 1265 | "Nautilus": { 1266 | "tags": [ 1267 | "Tank", 1268 | "Fighter" 1269 | ], 1270 | "title": "the Titan of the Depths", 1271 | "id": 111, 1272 | "key": "Nautilus", 1273 | "name": "Nautilus" 1274 | }, 1275 | "Evelynn": { 1276 | "tags": [ 1277 | "Assassin", 1278 | "Mage" 1279 | ], 1280 | "title": "the Widowmaker", 1281 | "id": 28, 1282 | "key": "Evelynn", 1283 | "name": "Evelynn" 1284 | }, 1285 | "Gragas": { 1286 | "tags": [ 1287 | "Fighter", 1288 | "Mage" 1289 | ], 1290 | "title": "the Rabble Rouser", 1291 | "id": 79, 1292 | "key": "Gragas", 1293 | "name": "Gragas" 1294 | }, 1295 | "Zed": { 1296 | "tags": [ 1297 | "Assassin", 1298 | "Fighter" 1299 | ], 1300 | "title": "the Master of Shadows", 1301 | "id": 238, 1302 | "key": "Zed", 1303 | "name": "Zed" 1304 | }, 1305 | "Vi": { 1306 | "tags": [ 1307 | "Fighter", 1308 | "Assassin" 1309 | ], 1310 | "title": "the Piltover Enforcer", 1311 | "id": 254, 1312 | "key": "Vi", 1313 | "name": "Vi" 1314 | }, 1315 | "KogMaw": { 1316 | "tags": [ 1317 | "Marksman", 1318 | "Mage" 1319 | ], 1320 | "title": "the Mouth of the Abyss", 1321 | "id": 96, 1322 | "key": "KogMaw", 1323 | "name": "Kog'Maw" 1324 | }, 1325 | "Ahri": { 1326 | "tags": [ 1327 | "Mage", 1328 | "Assassin" 1329 | ], 1330 | "title": "the Nine-Tailed Fox", 1331 | "id": 103, 1332 | "key": "Ahri", 1333 | "name": "Ahri" 1334 | }, 1335 | "Quinn": { 1336 | "tags": [ 1337 | "Marksman", 1338 | "Fighter" 1339 | ], 1340 | "title": "Demacia's Wings", 1341 | "id": 133, 1342 | "key": "Quinn", 1343 | "name": "Quinn" 1344 | }, 1345 | "Leblanc": { 1346 | "tags": [ 1347 | "Assassin", 1348 | "Mage" 1349 | ], 1350 | "title": "the Deceiver", 1351 | "id": 7, 1352 | "key": "Leblanc", 1353 | "name": "LeBlanc" 1354 | }, 1355 | "Ezreal": { 1356 | "tags": [ 1357 | "Marksman", 1358 | "Mage" 1359 | ], 1360 | "title": "the Prodigal Explorer", 1361 | "id": 81, 1362 | "key": "Ezreal", 1363 | "name": "Ezreal" 1364 | } 1365 | } 1366 | } --------------------------------------------------------------------------------