diff --git a/i18n/_source.json b/i18n/_source.json index 9a5ceb88..3310b48a 100644 --- a/i18n/_source.json +++ b/i18n/_source.json @@ -187,6 +187,14 @@ "done": true, "msg": "By disabling consumables, you'll lose the Highest Win % skill order" }, + "options_dontdeleteold": { + "msg": "Don't Delete Outdated Item Sets", + "done": true + }, + "options_dontdeleteold_tooltip": { + "msg": "Old items sets without new patch information will not be deleted, however they will be deleted if newer item sets become available", + "done": true + }, "options_locksr": { "done": true, "msg": "Lock Summoner's Rift Item Sets To Map" diff --git a/i18n/bg.json b/i18n/bg.json index 4ed86e56..ee49e3fb 100644 --- a/i18n/bg.json +++ b/i18n/bg.json @@ -46,6 +46,8 @@ "open_log": "Open Log", "options_consumables": "Активиране на консумативи", "options_consumables_tooltip": "С блокирането консумативи, ще загубят най-високата печалба реда% умение", + "options_dontdeleteold": "Не Изтриване Остарели Елемент Комплекти", + "options_dontdeleteold_tooltip": "Стари предмети комплекти без нова информация пач няма да бъде изтрит, но въпреки това те ще бъдат изтрити, ако по-новите артикули комплекти станат достъпни", "options_locksr": "Rift т Lock Summoner Комплектите Към Карта", "options_locksr_tooltip": "Елемент комплекти, предназначени за Summoners Rift ще бъдат на разположение на картата на Summoners Rift само.", "options_skillsformat": "Използвайте съкращение за Skill Поръчка", diff --git a/i18n/cs.json b/i18n/cs.json index f3500c2a..d296b285 100644 --- a/i18n/cs.json +++ b/i18n/cs.json @@ -46,6 +46,8 @@ "open_log": "Otevřít protokol", "options_consumables": "Povolit Spotřební materiál", "options_consumables_tooltip": "Vypnutím spotřebního materiálu, ztratíte nejvyšší výhra% dovednost objednávku", + "options_dontdeleteold": "Nepoužívejte odstranění zastaralých Položka Sady", + "options_dontdeleteold_tooltip": "Staré položky nastaví bez nebudou odstraněny novou náplast informace však budou odstraněny, pokud novější položka soupravy budou k dispozici", "options_locksr": "Lock Summoner Rift Položka Slouží k Mapa", "options_locksr_tooltip": "Položka sady určeny pro Summoners Rift bude k dispozici na mapě Summoners Rift pouze.", "options_skillsformat": "Použijte zkratku pro Skill Order", diff --git a/i18n/de.json b/i18n/de.json index 4af8e2ab..8fe44aae 100644 --- a/i18n/de.json +++ b/i18n/de.json @@ -46,6 +46,8 @@ "open_log": "Open Log", "options_consumables": "Aktivieren Sie Verbrauchsmaterial", "options_consumables_tooltip": "Durch das Deaktivieren Verbrauchsmaterialien, werden Sie der höchste Gewinn% Geschicklichkeit, um zu verlieren,", + "options_dontdeleteold": "Veraltete Item Sets Nicht löschen", + "options_dontdeleteold_tooltip": "Alte Produkte setzt, ohne neue Patch-Informationen werden nicht gelöscht, aber sie werden gelöscht, wenn neuere Item Sets verfügbar", "options_locksr": "Sperre der Kluft der Beschwörer Rüstungssets, um auf der Karte anzeigen", "options_locksr_tooltip": "Artikel-Sets für Beschwörer Rift bedeutete nur auf der Beschwörer Rift Karte zur Verfügung stehen.", "options_skillsformat": "Kurzschrift verwenden für Übungsreihenfolge", diff --git a/i18n/el.json b/i18n/el.json index c56c1bef..25d36d54 100644 --- a/i18n/el.json +++ b/i18n/el.json @@ -46,6 +46,8 @@ "open_log": "Ανοικτή Σύνδεση", "options_consumables": "Ενεργοποίηση Αναλώσιμα", "options_consumables_tooltip": "Με την απενεργοποίηση αναλώσιμα, θα χάσετε το μεγαλύτερο κέρδος τάξης% δεξιοτήτων", + "options_dontdeleteold": "Μην Διαγραφή Ξεπερασμένη Σετ Θέση", + "options_dontdeleteold_tooltip": "Παλιά αντικείμενα θέτει χωρίς νέες πληροφορίες έμπλαστρο δεν θα διαγραφούν, όμως θα πρέπει να διαγραφεί εάν νεότερα σύνολα στοιχείο είναι διαθέσιμο", "options_locksr": "Rift Θέση κλειδώματος Επικαλεστών Σκηνικά για να χαρτογραφήσει", "options_locksr_tooltip": "Θέση σύνολα που προορίζονταν για Summoners Rift θα είναι διαθέσιμα στην ιστοσελίδα του Summoners Rift χάρτη μόνο.", "options_skillsformat": "Χρησιμοποιήστε Στενογραφία για Skill Παραγγελία", diff --git a/i18n/en.json b/i18n/en.json index 31007717..2c740ab2 100644 --- a/i18n/en.json +++ b/i18n/en.json @@ -46,6 +46,8 @@ "open_log": "Open Log", "options_consumables": "Enable Consumables", "options_consumables_tooltip": "By disabling consumables, you'll lose the Highest Win % skill order", + "options_dontdeleteold": "Don't Delete Outdated Item Sets", + "options_dontdeleteold_tooltip": "Old items sets without new patch information will not be deleted, however they will be deleted if newer item sets become available", "options_locksr": "Lock Summoner's Rift Item Sets To Map", "options_locksr_tooltip": "Item sets meant for Summoners Rift will only be available on the Summoners Rift map.", "options_skillsformat": "Use Shorthand for Skill Order", diff --git a/i18n/es.json b/i18n/es.json index 1876b05f..da26c89b 100644 --- a/i18n/es.json +++ b/i18n/es.json @@ -46,6 +46,8 @@ "open_log": "Abrir registro", "options_consumables": "Habilitar Consumibles", "options_consumables_tooltip": "Al desactivar consumibles, perderá el orden habilidad% más alto de victorias", + "options_dontdeleteold": "No Eliminar conjuntos de elementos que han sido superados", + "options_dontdeleteold_tooltip": "Elementos antiguos conjuntos sin no se eliminará la nueva información de parches, sin embargo, se borrarán si los conjuntos de elementos nuevos estén disponibles", "options_locksr": "Artículo Grieta del Invocador Lock Define Para mapa", "options_locksr_tooltip": "Los conjuntos de elementos destinados a invocadores Rift sólo estarán disponibles en el mapa invocadores Rift.", "options_skillsformat": "Utilice la taquigrafía de Habilidad Orden", diff --git a/i18n/fr.json b/i18n/fr.json index f1b66f32..7ed565ec 100644 --- a/i18n/fr.json +++ b/i18n/fr.json @@ -46,6 +46,8 @@ "open_log": "Ouvrir le journal", "options_consumables": "Activer Consommables", "options_consumables_tooltip": "En désactivant les consommables, vous perdrez la plus haute pour Win% des compétences", + "options_dontdeleteold": "Ne pas supprimer obsolètes ensembles d'objets", + "options_dontdeleteold_tooltip": "Éléments d'anciens jeux sans nouvelle information de patch ne sera pas supprimé, mais ils seront supprimés si les nouveaux ensembles d'objets deviennent disponibles", "options_locksr": "Rift Item Lock Summoner sets à Plan", "options_locksr_tooltip": "Ensembles d'objets destinés à Faille de l'invocateur ne seront disponibles que sur la carte Faille de l'invocateur.", "options_skillsformat": "Utilisez Raccourci pour ordonner de Skill", diff --git a/i18n/he.json b/i18n/he.json index 068a91e2..3be61719 100644 --- a/i18n/he.json +++ b/i18n/he.json @@ -46,6 +46,8 @@ "open_log": "יומן פתוח", "options_consumables": "אפשר מתכלה", "options_consumables_tooltip": "על ידי השבתה מתכלה, תאבד את סדר אחוז הגבוהה ביותר בניצחונות ו מיומנות", + "options_dontdeleteold": "אל תמחקו סטי פריט מיושנות", + "options_dontdeleteold_tooltip": "פריטים ישן קובע ללא מידע תיקון חדש לא יימחק, אבל הם יימחקו אם סטי פריט חדשים הופכים לזמינים", "options_locksr": "תינעל פריטים למפה של Summoners Rift", "options_locksr_tooltip": "סטי פריט נועדו ל Summoners Rift יהיו זמינים על מפת Summoners Rift בלבד.", "options_skillsformat": "השתמש בקצרנות ללהזמין מיומנות", diff --git a/i18n/hu.json b/i18n/hu.json index a5328139..fd151be3 100644 --- a/i18n/hu.json +++ b/i18n/hu.json @@ -46,6 +46,8 @@ "open_log": "Napló megnyitása", "options_consumables": "Engedélyezze kellékek", "options_consumables_tooltip": "Letiltásával fogyóeszközök, akkor elveszíti a Legnagyobb győzelem% ügyességi érdekében", + "options_dontdeleteold": "Ne törlése Elavult Termék szettek", + "options_dontdeleteold_tooltip": "Régi tárgyak állítja nélkül új patch információk nem kerülnek törlésre, azonban ezek törlésre kerül, ha újabb elem készletek állnak rendelkezésre", "options_locksr": "Lock Summoner Rift pont állítja, hogy feltérképezzék", "options_locksr_tooltip": "Elem készlet jelentette summoners Rift csak akkor lesz elérhető az summoners Rift térképet.", "options_skillsformat": "Használja rövidítés Tudás Rend", diff --git a/i18n/id.json b/i18n/id.json index 71081d90..2ef8c64c 100644 --- a/i18n/id.json +++ b/i18n/id.json @@ -46,6 +46,8 @@ "open_log": "Buka Log", "options_consumables": "Aktifkan Consumables", "options_consumables_tooltip": "Dengan menonaktifkan habis, Anda akan kehilangan tertinggi Win rangka% skill", + "options_dontdeleteold": "Jangan Hapus Usang Barang Set", + "options_dontdeleteold_tooltip": "Item lama set tanpa informasi Patch baru tidak akan dihapus, namun mereka akan dihapus jika item set baru menjadi tersedia", "options_locksr": "Lock Summoner ini Rift Barang Set Untuk Petakan", "options_locksr_tooltip": "Item set dimaksudkan untuk Summoners Rift hanya akan tersedia di peta Summoners Rift.", "options_skillsformat": "Gunakan Singkatan untuk Keterampilan Orde", diff --git a/i18n/it.json b/i18n/it.json index 7c21593d..b7206284 100644 --- a/i18n/it.json +++ b/i18n/it.json @@ -46,6 +46,8 @@ "open_log": "Apri registro", "options_consumables": "Abilita consumo", "options_consumables_tooltip": "Disattivando i materiali di consumo, si perde la vincita più alta dell'ordine% abilità", + "options_dontdeleteold": "Non eliminare i set obsoleti Voce", + "options_dontdeleteold_tooltip": "Oggetti vecchi apparecchi senza non sarà cancellato nuove informazioni sulle patch, tuttavia essi saranno cancellati se articolo imposta più recenti saranno disponibili", "options_locksr": "Voce Rift di blocco Summoner set a Mappa", "options_locksr_tooltip": "Set di oggetti pensati per Summoner Rift sarà disponibile sulla mappa Summoner Rift solo.", "options_skillsformat": "Utilizzare Stenografia per Skill Ordine", diff --git a/i18n/ja.json b/i18n/ja.json index 492d1f59..e7309095 100644 --- a/i18n/ja.json +++ b/i18n/ja.json @@ -46,6 +46,8 @@ "open_log": "オープンログイン", "options_consumables": "消耗品を有効にします", "options_consumables_tooltip": "消耗品を無効にすることにより、あなたは最高の勝利%スキルの順序を失います", + "options_dontdeleteold": "古いアイテムのセットを削除しないでください", + "options_dontdeleteold_tooltip": "新しいパッチ情報を持たない古いアイテムセットは、新しいアイテムセットが利用可能になっている場合しかし、彼らは削除され、削除されません", "options_locksr": "ロックサモナーの裂け目アイテムがマップするために設定します。", "options_locksr_tooltip": "サモナーの裂け目のためのものアイテムセットのみサモナー裂け目マップ上で利用できるようになります。", "options_skillsformat": "スキル注文の省略形を使用します", diff --git a/i18n/ko.json b/i18n/ko.json index e1f4373e..6a1a665e 100644 --- a/i18n/ko.json +++ b/i18n/ko.json @@ -46,6 +46,8 @@ "open_log": "로그 열기", "options_consumables": "소모품 사용", "options_consumables_tooltip": "소모품을 사용하지 않도록 설정하면 최고 승률 스킬 순서를 잃게됩니다", + "options_dontdeleteold": "오래된 항목 세트를 삭제하지 마십시오", + "options_dontdeleteold_tooltip": "새로운 아이템 세트가 제공 될 경우 오래된 항목은 새로운 패치 정보가 삭제되지 않고, 그러나 그들은 삭제됩니다 설정", "options_locksr": "잠금 소환사의 리프트 항목 MAP으로 설정", "options_locksr_tooltip": "소환사 리프트에 대한 의미 항목 세트 만 소환사 리프트 맵에서 사용할 수 있습니다.", "options_skillsformat": "스킬 주문 속기를 사용", diff --git a/i18n/ms.json b/i18n/ms.json index 15f7532f..77aaee16 100644 --- a/i18n/ms.json +++ b/i18n/ms.json @@ -46,6 +46,8 @@ "open_log": "Log Terbuka", "options_consumables": "Membolehkan Habis", "options_consumables_tooltip": "Dengan mematikan habis, anda akan kehilangan Win perintah kemahiran% Tertinggi", + "options_dontdeleteold": "Jangan Padam Set Perkara lapuk", + "options_dontdeleteold_tooltip": "Barang-barang lama menetapkan tanpa maklumat patch baru tidak akan dipadamkan, namun mereka akan dipadam jika set item baru menjadi sedia", "options_locksr": "Perkara Rift Lock Summoner Sets Untuk Peta", "options_locksr_tooltip": "Set item bertujuan untuk Summoners Rift hanya boleh didapati di peta Summoners Rift.", "options_skillsformat": "Gunakan trengkas untuk Kemahiran Order", diff --git a/i18n/nl.json b/i18n/nl.json index 2f9bf998..08bb8908 100644 --- a/i18n/nl.json +++ b/i18n/nl.json @@ -46,6 +46,8 @@ "open_log": "Open Inloggen", "options_consumables": "Inschakelen verbruiksartikelen", "options_consumables_tooltip": "Door het uitschakelen van verbruiksgoederen, vindt u de grootste overwinning% vaardigheid orde te verliezen", + "options_dontdeleteold": "Heeft Verouderde Item Sets niet verwijderen", + "options_dontdeleteold_tooltip": "Oude items zet zonder nieuwe patch gegevens niet worden verwijderd, maar ze zullen worden verwijderd als nieuwere voorwerpsetten beschikbaar komen", "options_locksr": "Lock Summoner's Rift Item sets kaart", "options_locksr_tooltip": "Voorwerpsetten bedoeld voor Summoners Rift zal alleen beschikbaar zijn op de kaart Summoners Rift zijn.", "options_skillsformat": "Gebruik afkorting voor Ervaring Bestel", diff --git a/i18n/pl.json b/i18n/pl.json index e0ad1a67..8bbd5c77 100644 --- a/i18n/pl.json +++ b/i18n/pl.json @@ -46,6 +46,8 @@ "open_log": "Rozwinąć Zaloguj", "options_consumables": "Włącz materiałów eksploatacyjnych", "options_consumables_tooltip": "Poprzez wyłączenie materiałów eksploatacyjnych, stracisz na najwyższym poziomie Win% umiejętności", + "options_dontdeleteold": "Nie Usuń przestarzałe zestawów przedmiotów", + "options_dontdeleteold_tooltip": "Stare elementy ustawia bez nowych informacji poprawki nie zostaną usunięte, jakkolwiek oni zostaną usunięte nowsze zestawów przedmiotów stają się dostępne", "options_locksr": "Rift Pozycja zamka przywoływacza Zestawy do mapy", "options_locksr_tooltip": "Pozycja zestawy przeznaczone dla przywoływaczy Rift będzie dostępna na mapie Przywoływacze Rift tylko.", "options_skillsformat": "Użyj skrótem Skill Zakonu", diff --git a/i18n/pt.json b/i18n/pt.json index a6a6063c..04137a61 100644 --- a/i18n/pt.json +++ b/i18n/pt.json @@ -46,6 +46,8 @@ "open_log": "Abrir Log", "options_consumables": "Ativar Consumíveis", "options_consumables_tooltip": "Ao desativar consumíveis, você vai perder o prêmio mais alto fim habilidade%", + "options_dontdeleteold": "Não Excluir Conjuntos de Itens desatualizados", + "options_dontdeleteold_tooltip": "Itens antigos define sem novas informações patch não serão excluídas, no entanto, eles serão excluídos se conjuntos de itens mais recentes estiverem disponíveis", "options_locksr": "Rift item de bloqueio Summoner Define mapear", "options_locksr_tooltip": "Conjuntos de itens destinados para Summoners Rift só estarão disponíveis no mapa Summoners Rift.", "options_skillsformat": "Use Abreviação para Competência Ordem", diff --git a/i18n/ro.json b/i18n/ro.json index 25bcc6a0..0fa02e67 100644 --- a/i18n/ro.json +++ b/i18n/ro.json @@ -46,6 +46,8 @@ "open_log": "Deschis Log", "options_consumables": "Activați Consumabile", "options_consumables_tooltip": "Prin dezactivarea consumabile, vei pierde cel mai mare câștig ordinul% calificare", + "options_dontdeleteold": "Nu ștergeți Seturi articol învechite", + "options_dontdeleteold_tooltip": "Elementele vechi seturi fără informații noi patch nu vor fi șterse, cu toate acestea ele vor fi șterse dacă seturi de elemente noi devin disponibile", "options_locksr": "Postul Rift Lock Summoner lui Seturi pentru a harta", "options_locksr_tooltip": "Seturi de elemente destinate pentru Summoners Rift va fi disponibil pe hartă Summoners Rift numai.", "options_skillsformat": "Utilizați prescurtarea pentru Indemanare Ordine", diff --git a/i18n/ru.json b/i18n/ru.json index 0419ec79..9b5161b5 100644 --- a/i18n/ru.json +++ b/i18n/ru.json @@ -46,6 +46,8 @@ "open_log": "Открыть Войти", "options_consumables": "Включить Расходные", "options_consumables_tooltip": "При отключении расходные, вы потеряете самый большой выигрыш в% Навык заказ", + "options_dontdeleteold": "Не удаляйте устаревшие Комплекты", + "options_dontdeleteold_tooltip": "Старые вещи устанавливает без новой информации патч не будет удален, однако они будут удалены, если новые наборы пункт становятся доступными", "options_locksr": "Замок Summoner Рифт Комплекты Чтобы Карта", "options_locksr_tooltip": "Комплекты предназначены для Заклинателей Rift будут доступны на карте Призыватели рифтовой только.", "options_skillsformat": "Использовать сокращённую для Навык ордена", diff --git a/i18n/th.json b/i18n/th.json index ff0325ed..66c45272 100644 --- a/i18n/th.json +++ b/i18n/th.json @@ -46,6 +46,8 @@ "open_log": "เปิดเข้าสู่ระบบ", "options_consumables": "เปิดการใช้งานอุปกรณ์", "options_consumables_tooltip": "หากคุณปิดการใช้งานอุปกรณ์ คุณจะไม่เห็นการอัพสกิลที่มีอัตราชนะมากที่สุด", + "options_dontdeleteold": "อย่าลบชุดรายการที่ล้าสมัย", + "options_dontdeleteold_tooltip": "รายการเก่าชุดโดยไม่มีข้อมูลแพทช์ใหม่จะไม่ถูกลบ แต่พวกเขาจะถูกลบถ้าชุดใหม่รายการกลายเป็นใช้ได้", "options_locksr": "ล็อคไอเทมสำหรับ Summoner's Rift", "options_locksr_tooltip": "ชุดไอเทมสำหรับ Summoner's Rift จะสามารถใช้งานได้เฉพาะกับ Summoner's Rift เท่านั้น", "options_skillsformat": "ใช้ลำดับสกิลแบบย่อ", @@ -76,4 +78,4 @@ "version": "รุ่น", "welcome": "ยินดีต้อนรับสู่ Championify", "wins": "ชนะ" -} +} \ No newline at end of file diff --git a/i18n/tr.json b/i18n/tr.json index 1daecaa1..357372bb 100644 --- a/i18n/tr.json +++ b/i18n/tr.json @@ -46,6 +46,8 @@ "open_log": "Açık Günlüğü", "options_consumables": "Sarf etkinleştirme", "options_consumables_tooltip": "Sarf devre dışı bırakarak en yüksek Win% beceri sırasını kaybedersiniz", + "options_dontdeleteold": "Eski Öğe Setleri Sil etmeyin", + "options_dontdeleteold_tooltip": "Yeni öğe kümeleri kullanılabilir hale varsa, eski öğeleri yeni yama bilgiler silinir olmayacak olmadan, ancak onlar silinecektir setleri", "options_locksr": "Kilit Summoner Rift Öğe haritada için Setleri", "options_locksr_tooltip": "Summoners Rift içindir Öğe setleri sadece Summoners Rift harita üzerinde sunulacak.", "options_skillsformat": "Beceri Sipariş için kestirme kullanın", diff --git a/i18n/vi.json b/i18n/vi.json index f8503644..532f63d5 100644 --- a/i18n/vi.json +++ b/i18n/vi.json @@ -46,6 +46,8 @@ "open_log": "Mở Log", "options_consumables": "Kích hoạt tính năng tiêu hao", "options_consumables_tooltip": "Bằng cách vô hiệu hàng tiêu dùng, bạn sẽ mất Win nhằm% kỹ năng cao nhất", + "options_dontdeleteold": "Đừng Xóa lỗi thời mục Sets", + "options_dontdeleteold_tooltip": "Mục cũ đặt mà không có thông tin bản vá mới sẽ không bị xóa, tuy nhiên chúng sẽ bị xóa nếu bộ item mới trở nên có sẵn", "options_locksr": "Khóa Summoner của Rift mục Sets Để đồ", "options_locksr_tooltip": "Bộ item có nghĩa là cho Summoner Rift sẽ chỉ có sẵn trên bản đồ Summoner Rift.", "options_skillsformat": "Sử dụng Shorthand cho Skill thứ tự", diff --git a/i18n/zh-CN.json b/i18n/zh-CN.json index 21e92bc3..b412a2ee 100644 --- a/i18n/zh-CN.json +++ b/i18n/zh-CN.json @@ -46,6 +46,8 @@ "open_log": "打开日志", "options_consumables": "启用耗材", "options_consumables_tooltip": "通过禁用消耗品,你将失去最高胜率的技能顺序", + "options_dontdeleteold": "不要删除过时的项目集", + "options_dontdeleteold_tooltip": "老项目不设置新的修补程序信息将不会被删除,但它们将被删除,是否有更新的项目集可用", "options_locksr": "锁定召唤的裂谷项目集要地图", "options_locksr_tooltip": "意味着召唤师裂谷项目组将只提供了召唤师裂谷地图上。", "options_skillsformat": "使用速记技能订单", diff --git a/i18n/zh-TW.json b/i18n/zh-TW.json index d103906b..de1c59e2 100644 --- a/i18n/zh-TW.json +++ b/i18n/zh-TW.json @@ -46,6 +46,8 @@ "open_log": "打開日誌", "options_consumables": "啟用耗材", "options_consumables_tooltip": "通過禁用消耗品,你將失去最高勝率的技能順序", + "options_dontdeleteold": "不要刪除過時的項目集", + "options_dontdeleteold_tooltip": "老項目不設置新的修補程序信息將不會被刪除,但它們將被刪除,是否有更新的項目集可用", "options_locksr": "鎖定召喚的裂谷項目集要地圖", "options_locksr_tooltip": "意味著召喚師裂谷項目組將只提供了召喚師裂谷地圖上。", "options_skillsformat": "使用速記技能訂單", diff --git a/lib/championify.coffee b/lib/championify.coffee index bca8786b..fcb467ae 100644 --- a/lib/championify.coffee +++ b/lib/championify.coffee @@ -1,6 +1,8 @@ async = require 'async' cheerio = require 'cheerio' +fs = require 'fs-extra' glob = require 'glob' +path = require 'path' _ = require 'lodash' hlp = require './helpers' @@ -31,6 +33,18 @@ getSettings = (step) -> preferences.save step +###* + * Function Clears electrons cache if it exists. + * @callback {Function} Callback. +### +clearCache = (step) -> + cache_directory = path.join preferences.directory(), 'Cache' + if fs.existsSync(cache_directory) + fs.remove cache_directory, (err) -> + step(err) + else + step() + ###* * Function Gets the latest Riot Version. * @callback {Function} Callback. @@ -83,7 +97,9 @@ genManaless = (step, r) -> * Function Deletes all previous Championify builds from client. * @callback {Function} Callback. ### -deleteOldBuilds = (step, deletebtn) -> +deleteOldBuilds = (step, r, deletebtn) -> + return step() if window.cSettings.dontdeleteold and !deletebtn + cl "#{T.t('deleting_old_builds')}" globbed = [ glob.sync("#{window.item_set_path}**/CGG_*.json") @@ -160,8 +176,9 @@ downloadItemSets = (done) -> async_tasks = { # Default settings: getSettings + clearCache: clearCache championTest: ['settings', permissions.championTest] - riotVer: ['championTest', getRiotVer] + riotVer: ['clearCache', 'championTest', getRiotVer] champs_json: ['riotVer', getChamps] champs: ['champs_json', champNames] manaless: ['champs_json', genManaless] diff --git a/lib/index.coffee b/lib/index.coffee index 22a02994..16660b84 100644 --- a/lib/index.coffee +++ b/lib/index.coffee @@ -153,7 +153,7 @@ deleteItemSets = -> # TODO: Verify if is Windows admin and can delete. championify.delete -> $('#cl_progress > span').append(". #{T.t('done')}") - , true + , null, true ###* diff --git a/lib/preferences.coffee b/lib/preferences.coffee index 8d6b28d2..ea16556a 100644 --- a/lib/preferences.coffee +++ b/lib/preferences.coffee @@ -96,6 +96,7 @@ get = -> trinkets_position: trinkets_position locksr: $('#options_locksr').is(':checked') sr_source: $('#options_sr_source').val() + dontdeleteold: $('#options_dontdeleteold').is(':checked') } } diff --git a/lib/sources/lolflavor.coffee b/lib/sources/lolflavor.coffee index bb833033..dbd54b8e 100644 --- a/lib/sources/lolflavor.coffee +++ b/lib/sources/lolflavor.coffee @@ -45,6 +45,7 @@ _requestData = (champs_names, process_name, riotVer, manaless, step) -> if process_name == 'ARAM' data.map = 'HA' + data.blocks[0].items.push({count: 1, id: '2047'}) if process_name != 'ARAM' data.map = 'SR' if window.cSettings.locksr data.blocks.shift() diff --git a/stylesheets/main.styl b/stylesheets/main.styl index 7fb89a93..4fcd7abc 100644 --- a/stylesheets/main.styl +++ b/stylesheets/main.styl @@ -21,6 +21,8 @@ // Options .options .rift_source + margin-bottom 10px + margin-top 10px text-align center z-index 2 diff --git a/tasks/tests.coffee b/tasks/tests.coffee index 3f4478fa..39537994 100644 --- a/tasks/tests.coffee +++ b/tasks/tests.coffee @@ -53,6 +53,7 @@ gulp.task 'jsonlint', -> return gulp.src([ './data/**/*.json' './i18n/**/*.json' + './tests/**/*.json' './.htmlhintrc' './.stylintrc' './coffeelint.json' diff --git a/tests/_init.coffee b/tests/_init.coffee index 8e6f2930..b8859671 100644 --- a/tests/_init.coffee +++ b/tests/_init.coffee @@ -1,6 +1,6 @@ # This inits the global properties within electron to prevent any errors. -champions = require './fixtures/champions.json' +champions = require './fixtures/all_champions.json' Translate = require '../lib/translate' sinon = require 'sinon' _ = require 'lodash' diff --git a/tests/fixtures/all_champions.json b/tests/fixtures/all_champions.json new file mode 100644 index 00000000..d0948ea0 --- /dev/null +++ b/tests/fixtures/all_champions.json @@ -0,0 +1 @@ +{"type":"champion","format":"standAloneComplex","version":"5.18.1","data":{"Aatrox":{"version":"5.18.1","id":"Aatrox","key":"266","name":"Aatrox","title":"the Darkin Blade","blurb":"Aatrox is a legendary warrior, one of only five that remain of an ancient race known as the Darkin. He wields his massive blade with grace and poise, slicing through legions in a style that is hypnotic to behold. With each foe felled, Aatrox's ...","info":{"attack":8,"defense":4,"magic":3,"difficulty":4},"image":{"full":"Aatrox.png","sprite":"champion0.png","group":"champion","x":0,"y":0,"w":48,"h":48},"tags":["Fighter","Tank"],"partype":"BloodWell","stats":{"hp":537.8,"hpperlevel":85.0,"mp":105.6,"mpperlevel":45.0,"movespeed":345.0,"armor":24.384,"armorperlevel":3.8,"spellblock":32.1,"spellblockperlevel":1.25,"attackrange":150.0,"hpregen":6.59,"hpregenperlevel":0.5,"mpregen":0.0,"mpregenperlevel":0.0,"crit":0.0,"critperlevel":0.0,"attackdamage":60.376,"attackdamageperlevel":3.2,"attackspeedoffset":-0.04,"attackspeedperlevel":3.0}},"Ahri":{"version":"5.18.1","id":"Ahri","key":"103","name":"Ahri","title":"the Nine-Tailed Fox","blurb":"Unlike other foxes that roamed the woods of southern Ionia, Ahri had always felt a strange connection to the magical world around her; a connection that was somehow incomplete. Deep inside, she felt the skin she had been born into was an ill fit for ...","info":{"attack":3,"defense":4,"magic":8,"difficulty":5},"image":{"full":"Ahri.png","sprite":"champion0.png","group":"champion","x":48,"y":0,"w":48,"h":48},"tags":["Mage","Assassin"],"partype":"Mana","stats":{"hp":514.4,"hpperlevel":80.0,"mp":334.0,"mpperlevel":50.0,"movespeed":330.0,"armor":20.88,"armorperlevel":3.5,"spellblock":30.0,"spellblockperlevel":0.0,"attackrange":550.0,"hpregen":6.505,"hpregenperlevel":0.6,"mpregen":6.0,"mpregenperlevel":0.8,"crit":0.0,"critperlevel":0.0,"attackdamage":53.04,"attackdamageperlevel":3.0,"attackspeedoffset":-0.065,"attackspeedperlevel":2.0}},"Akali":{"version":"5.18.1","id":"Akali","key":"84","name":"Akali","title":"the Fist of Shadow","blurb":"There exists an ancient order originating in the Ionian Isles dedicated to the preservation of balance. Order, chaos, light, darkness -- all things must exist in perfect harmony for such is the way of the universe. This order is known as the Kinkou ...","info":{"attack":5,"defense":3,"magic":8,"difficulty":7},"image":{"full":"Akali.png","sprite":"champion0.png","group":"champion","x":96,"y":0,"w":48,"h":48},"tags":["Assassin"],"partype":"Energy","stats":{"hp":587.8,"hpperlevel":85.0,"mp":200.0,"mpperlevel":0.0,"movespeed":350.0,"armor":26.38,"armorperlevel":3.5,"spellblock":32.1,"spellblockperlevel":1.25,"attackrange":125.0,"hpregen":8.34,"hpregenperlevel":0.65,"mpregen":50.0,"mpregenperlevel":0.0,"crit":0.0,"critperlevel":0.0,"attackdamage":58.376,"attackdamageperlevel":3.2,"attackspeedoffset":-0.1,"attackspeedperlevel":3.1}},"Alistar":{"version":"5.18.1","id":"Alistar","key":"12","name":"Alistar","title":"the Minotaur","blurb":"As the mightiest warrior to ever emerge from the Minotaur tribes of the Great Barrier, Alistar defended his tribe from Valoran's many dangers; that is, until the coming of the Noxian army. Alistar was lured from his village by the machinations of ...","info":{"attack":6,"defense":9,"magic":5,"difficulty":7},"image":{"full":"Alistar.png","sprite":"champion0.png","group":"champion","x":144,"y":0,"w":48,"h":48},"tags":["Tank","Support"],"partype":"Mana","stats":{"hp":613.36,"hpperlevel":106.0,"mp":278.84,"mpperlevel":38.0,"movespeed":330.0,"armor":24.38,"armorperlevel":3.5,"spellblock":32.1,"spellblockperlevel":1.25,"attackrange":125.0,"hpregen":8.675,"hpregenperlevel":0.85,"mpregen":6.0,"mpregenperlevel":0.8,"crit":0.0,"critperlevel":0.0,"attackdamage":61.1116,"attackdamageperlevel":3.62,"attackspeedoffset":0.0,"attackspeedperlevel":2.125}},"Amumu":{"version":"5.18.1","id":"Amumu","key":"32","name":"Amumu","title":"the Sad Mummy","blurb":"Amumu is a diminutive, animated cadaver who wanders the world, trying to discover his true identity. He rose from an ancient Shuriman tomb bound in corpse wrappings with no knowledge of his past, consumed with an uncontrollable sadness.","info":{"attack":2,"defense":6,"magic":8,"difficulty":3},"image":{"full":"Amumu.png","sprite":"champion0.png","group":"champion","x":192,"y":0,"w":48,"h":48},"tags":["Tank","Mage"],"partype":"Mana","stats":{"hp":613.12,"hpperlevel":84.0,"mp":287.2,"mpperlevel":40.0,"movespeed":335.0,"armor":23.544,"armorperlevel":3.8,"spellblock":32.1,"spellblockperlevel":1.25,"attackrange":125.0,"hpregen":8.875,"hpregenperlevel":0.85,"mpregen":7.38,"mpregenperlevel":0.525,"crit":0.0,"critperlevel":0.0,"attackdamage":53.384,"attackdamageperlevel":3.8,"attackspeedoffset":-0.02,"attackspeedperlevel":2.18}},"Anivia":{"version":"5.18.1","id":"Anivia","key":"34","name":"Anivia","title":"the Cryophoenix","blurb":"Anivia is a being of the coldest winter, a mystical embodiment of ice magic, and an ancient protector of the Freljord. She commands all the power and fury of the land itself, calling the snow and bitter wind to defend her home from those who would ...","info":{"attack":1,"defense":4,"magic":10,"difficulty":10},"image":{"full":"Anivia.png","sprite":"champion0.png","group":"champion","x":240,"y":0,"w":48,"h":48},"tags":["Mage","Support"],"partype":"Mana","stats":{"hp":467.6,"hpperlevel":70.0,"mp":346.04,"mpperlevel":53.0,"movespeed":325.0,"armor":21.22,"armorperlevel":4.0,"spellblock":30.0,"spellblockperlevel":0.0,"attackrange":600.0,"hpregen":5.57,"hpregenperlevel":0.55,"mpregen":6.0,"mpregenperlevel":0.8,"crit":0.0,"critperlevel":0.0,"attackdamage":51.376,"attackdamageperlevel":3.2,"attackspeedoffset":0.0,"attackspeedperlevel":1.68}},"Annie":{"version":"5.18.1","id":"Annie","key":"1","name":"Annie","title":"the Dark Child","blurb":"In the time shortly before the League, there were those within the sinister city-state of Noxus who did not agree with the evils perpetrated by the Noxian High Command. The High Command had just put down a coup attempt from the self-proclaimed Crown ...","info":{"attack":2,"defense":3,"magic":10,"difficulty":6},"image":{"full":"Annie.png","sprite":"champion0.png","group":"champion","x":288,"y":0,"w":48,"h":48},"tags":["Mage"],"partype":"Mana","stats":{"hp":511.68,"hpperlevel":76.0,"mp":334.0,"mpperlevel":50.0,"movespeed":335.0,"armor":19.22,"armorperlevel":4.0,"spellblock":30.0,"spellblockperlevel":0.0,"attackrange":575.0,"hpregen":5.42,"hpregenperlevel":0.55,"mpregen":6.0,"mpregenperlevel":0.8,"crit":0.0,"critperlevel":0.0,"attackdamage":50.41,"attackdamageperlevel":2.625,"attackspeedoffset":0.08,"attackspeedperlevel":1.36}},"Ashe":{"version":"5.18.1","id":"Ashe","key":"22","name":"Ashe","title":"the Frost Archer","blurb":"With each arrow she fires from her ancient ice-enchanted bow, Ashe proves she is a master archer. She chooses each target carefully, waits for the right moment, and then strikes with power and precision. It is with this same vision and focus that she ...","info":{"attack":7,"defense":3,"magic":2,"difficulty":4},"image":{"full":"Ashe.png","sprite":"champion0.png","group":"champion","x":336,"y":0,"w":48,"h":48},"tags":["Marksman","Support"],"partype":"Mana","stats":{"hp":527.72,"hpperlevel":79.0,"mp":231.8,"mpperlevel":35.0,"movespeed":325.0,"armor":21.212,"armorperlevel":3.4,"spellblock":30.0,"spellblockperlevel":0.0,"attackrange":600.0,"hpregen":5.42,"hpregenperlevel":0.55,"mpregen":6.97,"mpregenperlevel":0.4,"crit":0.0,"critperlevel":0.0,"attackdamage":51.088,"attackdamageperlevel":2.85,"attackspeedoffset":-0.05,"attackspeedperlevel":3.33}},"Azir":{"version":"5.18.1","id":"Azir","key":"268","name":"Azir","title":"the Emperor of the Sands","blurb":"Once a mortal man blinded by his own hubris, Azir has recently returned as an Ascended being with unmatched dominion over the burning sands. He seeks to restore Shurima to its former glory, but some dispute his right to rule them. Azir's power, ...","info":{"attack":6,"defense":3,"magic":8,"difficulty":9},"image":{"full":"Azir.png","sprite":"champion0.png","group":"champion","x":384,"y":0,"w":48,"h":48},"tags":["Mage","Marksman"],"partype":"Mana","stats":{"hp":524.4,"hpperlevel":80.0,"mp":350.56,"mpperlevel":42.0,"movespeed":325.0,"armor":19.04,"armorperlevel":3.0,"spellblock":30.0,"spellblockperlevel":0.0,"attackrange":525.0,"hpregen":6.92,"hpregenperlevel":0.55,"mpregen":6.0,"mpregenperlevel":0.8,"crit":0.0,"critperlevel":0.0,"attackdamage":52.0,"attackdamageperlevel":2.8,"attackspeedoffset":-0.02,"attackspeedperlevel":1.5}},"Bard":{"version":"5.18.1","id":"Bard","key":"432","name":"Bard","title":"the Wandering Caretaker","blurb":"Bard travels through realms beyond the imagination of mortal beings. Some of Valoran's greatest scholars have spent their lives trying to understand the mysteries he embodies. This enigmatic spirit has been given many names throughout the history of ...","info":{"attack":4,"defense":4,"magic":5,"difficulty":9},"image":{"full":"Bard.png","sprite":"champion4.png","group":"champion","x":144,"y":0,"w":48,"h":48},"tags":["Support","Mage"],"partype":"Mana","stats":{"hp":535.0,"hpperlevel":89.0,"mp":350.0,"mpperlevel":50.0,"movespeed":330.0,"armor":25.0,"armorperlevel":4.0,"spellblock":30.0,"spellblockperlevel":0.0,"attackrange":500.0,"hpregen":5.4,"hpregenperlevel":0.55,"mpregen":6.0,"mpregenperlevel":0.45,"crit":0.0,"critperlevel":0.0,"attackdamage":52.0,"attackdamageperlevel":3.0,"attackspeedoffset":0.0,"attackspeedperlevel":2.0}},"Blitzcrank":{"version":"5.18.1","id":"Blitzcrank","key":"53","name":"Blitzcrank","title":"the Great Steam Golem","blurb":"The city of Zaun is a place where both magic and science have gone awry. The unchecked nature of experimentation has taken its toll on the city. However, Zaun's lenient restrictions allow their researchers and inventors the leeway to push the bounds ...","info":{"attack":4,"defense":8,"magic":5,"difficulty":4},"image":{"full":"Blitzcrank.png","sprite":"champion0.png","group":"champion","x":432,"y":0,"w":48,"h":48},"tags":["Tank","Fighter"],"partype":"Mana","stats":{"hp":582.6,"hpperlevel":95.0,"mp":267.2,"mpperlevel":40.0,"movespeed":325.0,"armor":24.38,"armorperlevel":4.0,"spellblock":32.1,"spellblockperlevel":1.25,"attackrange":125.0,"hpregen":8.51,"hpregenperlevel":0.75,"mpregen":6.0,"mpregenperlevel":0.8,"crit":0.0,"critperlevel":0.0,"attackdamage":61.54,"attackdamageperlevel":3.5,"attackspeedoffset":0.0,"attackspeedperlevel":1.13}},"Brand":{"version":"5.18.1","id":"Brand","key":"63","name":"Brand","title":"the Burning Vengeance","blurb":"In a faraway place known as Lokfar there was a seafaring marauder called Kegan Rodhe. As was his people's way, Kegan sailed far and wide with his fellows, stealing treasures from those unlucky enough to catch their attention. To some, he was a ...","info":{"attack":2,"defense":2,"magic":9,"difficulty":4},"image":{"full":"Brand.png","sprite":"champion0.png","group":"champion","x":0,"y":48,"w":48,"h":48},"tags":["Mage"],"partype":"Mana","stats":{"hp":507.68,"hpperlevel":76.0,"mp":325.6,"mpperlevel":45.0,"movespeed":340.0,"armor":21.88,"armorperlevel":3.5,"spellblock":30.0,"spellblockperlevel":0.0,"attackrange":550.0,"hpregen":5.42,"hpregenperlevel":0.55,"mpregen":8.005,"mpregenperlevel":0.6,"crit":0.0,"critperlevel":0.0,"attackdamage":57.04,"attackdamageperlevel":3.0,"attackspeedoffset":0.0,"attackspeedperlevel":1.36}},"Braum":{"version":"5.18.1","id":"Braum","key":"201","name":"Braum","title":"the Heart of the Freljord","blurb":"''Would you like a bedtime story?''

''Grandma, I'm too old for that.''

''You're never too old to be told a story.''

The girl reluctantly crawls into bed and waits, knowing she won't win this battle. A bitter wind howls outside, ...","info":{"attack":3,"defense":9,"magic":4,"difficulty":3},"image":{"full":"Braum.png","sprite":"champion0.png","group":"champion","x":48,"y":48,"w":48,"h":48},"tags":["Support","Tank"],"partype":"Mana","stats":{"hp":576.16,"hpperlevel":87.0,"mp":310.6,"mpperlevel":45.0,"movespeed":335.0,"armor":26.72,"armorperlevel":4.5,"spellblock":32.1,"spellblockperlevel":1.25,"attackrange":125.0,"hpregen":8.18,"hpregenperlevel":1.0,"mpregen":6.0,"mpregenperlevel":0.8,"crit":0.0,"critperlevel":0.0,"attackdamage":55.376,"attackdamageperlevel":3.2,"attackspeedoffset":-0.03,"attackspeedperlevel":3.5}},"Caitlyn":{"version":"5.18.1","id":"Caitlyn","key":"51","name":"Caitlyn","title":"the Sheriff of Piltover","blurb":"One of the reasons Piltover is known as the City of Progress is because it has an extraordinarily low crime rate. This hasn't always been the case; brigands and thieves of all sorts used to find the city-state an ideal mark for plunder, primarily due ...","info":{"attack":8,"defense":2,"magic":2,"difficulty":6},"image":{"full":"Caitlyn.png","sprite":"champion0.png","group":"champion","x":96,"y":48,"w":48,"h":48},"tags":["Marksman"],"partype":"Mana","stats":{"hp":524.4,"hpperlevel":80.0,"mp":313.8,"mpperlevel":35.0,"movespeed":325.0,"armor":22.88,"armorperlevel":3.5,"spellblock":30.0,"spellblockperlevel":0.0,"attackrange":650.0,"hpregen":5.67,"hpregenperlevel":0.55,"mpregen":7.42,"mpregenperlevel":0.55,"crit":0.0,"critperlevel":0.0,"attackdamage":50.04,"attackdamageperlevel":3.0,"attackspeedoffset":0.0,"attackspeedperlevel":4.0}},"Cassiopeia":{"version":"5.18.1","id":"Cassiopeia","key":"69","name":"Cassiopeia","title":"the Serpent's Embrace","blurb":"Cassiopeia is a terrifying creature - half woman, half snake - whose slightest glance brings death. The youngest daughter of one of Noxus' most influential families, she was once a beautiful and cunning temptress capable of manipulating the hardest ...","info":{"attack":2,"defense":3,"magic":9,"difficulty":10},"image":{"full":"Cassiopeia.png","sprite":"champion0.png","group":"champion","x":144,"y":48,"w":48,"h":48},"tags":["Mage"],"partype":"Mana","stats":{"hp":506.0,"hpperlevel":75.0,"mp":370.8,"mpperlevel":60.0,"movespeed":335.0,"armor":22.22,"armorperlevel":4.0,"spellblock":30.0,"spellblockperlevel":0.0,"attackrange":550.0,"hpregen":5.69,"hpregenperlevel":0.5,"mpregen":8.36,"mpregenperlevel":0.75,"crit":0.0,"critperlevel":0.0,"attackdamage":52.376,"attackdamageperlevel":3.2,"attackspeedoffset":-0.034,"attackspeedperlevel":1.68}},"Chogath":{"version":"5.18.1","id":"Chogath","key":"31","name":"Cho'Gath","title":"the Terror of the Void","blurb":"There is a place between dimensions, between worlds. To some it is known as the Outside, to others it is the Unknown. To those that truly know, however, it is called the Void. Despite its name, the Void is not an empty place, but rather the home of ...","info":{"attack":3,"defense":7,"magic":7,"difficulty":5},"image":{"full":"Chogath.png","sprite":"champion0.png","group":"champion","x":192,"y":48,"w":48,"h":48},"tags":["Tank","Mage"],"partype":"Mana","stats":{"hp":574.4,"hpperlevel":80.0,"mp":272.2,"mpperlevel":40.0,"movespeed":345.0,"armor":28.88,"armorperlevel":3.5,"spellblock":32.1,"spellblockperlevel":1.25,"attackrange":125.0,"hpregen":8.925,"hpregenperlevel":0.85,"mpregen":7.205,"mpregenperlevel":0.45,"crit":0.0,"critperlevel":0.0,"attackdamage":61.156,"attackdamageperlevel":4.2,"attackspeedoffset":0.0,"attackspeedperlevel":1.44}},"Corki":{"version":"5.18.1","id":"Corki","key":"42","name":"Corki","title":"the Daring Bombardier","blurb":"When Heimerdinger and his yordle colleagues migrated to Piltover, they embraced science as a way of life, and they immediately made several groundbreaking contributions to the techmaturgical community. What yordles lack in stature, they make up for ...","info":{"attack":8,"defense":3,"magic":6,"difficulty":6},"image":{"full":"Corki.png","sprite":"champion0.png","group":"champion","x":240,"y":48,"w":48,"h":48},"tags":["Marksman"],"partype":"Mana","stats":{"hp":512.76,"hpperlevel":82.0,"mp":305.16,"mpperlevel":37.0,"movespeed":325.0,"armor":23.38,"armorperlevel":3.5,"spellblock":30.0,"spellblockperlevel":0.0,"attackrange":550.0,"hpregen":5.42,"hpregenperlevel":0.55,"mpregen":7.42,"mpregenperlevel":0.55,"crit":0.0,"critperlevel":0.0,"attackdamage":51.24,"attackdamageperlevel":3.0,"attackspeedoffset":0.0,"attackspeedperlevel":2.3}},"Darius":{"version":"5.18.1","id":"Darius","key":"122","name":"Darius","title":"the Hand of Noxus","blurb":"There is no greater symbol of Noxian might than Darius, the nation's most feared and battle-hardened warrior. Orphaned at a young age, Darius had to fight to keep himself and his younger brother alive. By the time he joined the military, he had ...","info":{"attack":9,"defense":5,"magic":1,"difficulty":2},"image":{"full":"Darius.png","sprite":"champion0.png","group":"champion","x":288,"y":48,"w":48,"h":48},"tags":["Fighter","Tank"],"partype":"Mana","stats":{"hp":582.24,"hpperlevel":100.0,"mp":263.0,"mpperlevel":37.5,"movespeed":340.0,"armor":30.0,"armorperlevel":4.0,"spellblock":32.1,"spellblockperlevel":1.25,"attackrange":175.0,"hpregen":9.845,"hpregenperlevel":0.95,"mpregen":6.585,"mpregenperlevel":0.35,"crit":0.0,"critperlevel":0.0,"attackdamage":56.0,"attackdamageperlevel":5.0,"attackspeedoffset":0.0,"attackspeedperlevel":1.0}},"Diana":{"version":"5.18.1","id":"Diana","key":"131","name":"Diana","title":"Scorn of the Moon","blurb":"An unyielding avatar of the moon's power, Diana wages a dark crusade against the sun-worshipping Solari. Though she once sought the acceptance of her people, years of futile struggle shaped her into a bitter, resentful warrior. She now presents her ...","info":{"attack":7,"defense":6,"magic":8,"difficulty":4},"image":{"full":"Diana.png","sprite":"champion0.png","group":"champion","x":336,"y":48,"w":48,"h":48},"tags":["Fighter","Mage"],"partype":"Mana","stats":{"hp":589.2,"hpperlevel":90.0,"mp":297.2,"mpperlevel":40.0,"movespeed":345.0,"armor":26.048,"armorperlevel":3.6,"spellblock":32.1,"spellblockperlevel":1.25,"attackrange":150.0,"hpregen":7.425,"hpregenperlevel":0.85,"mpregen":6.0,"mpregenperlevel":0.8,"crit":0.0,"critperlevel":0.0,"attackdamage":53.04,"attackdamageperlevel":3.0,"attackspeedoffset":0.0,"attackspeedperlevel":2.25}},"Draven":{"version":"5.18.1","id":"Draven","key":"119","name":"Draven","title":"the Glorious Executioner","blurb":"Unlike his brother Darius, victory in battle was never enough for Draven. He craved recognition, acclaim, and glory. He first sought greatness in the Noxian military, but his flair for the dramatic went severely underappreciated. Thirsting for a ...","info":{"attack":9,"defense":3,"magic":1,"difficulty":8},"image":{"full":"Draven.png","sprite":"champion0.png","group":"champion","x":384,"y":48,"w":48,"h":48},"tags":["Marksman"],"partype":"Mana","stats":{"hp":557.76,"hpperlevel":82.0,"mp":310.56,"mpperlevel":42.0,"movespeed":330.0,"armor":25.544,"armorperlevel":3.3,"spellblock":30.0,"spellblockperlevel":0.0,"attackrange":550.0,"hpregen":6.175,"hpregenperlevel":0.7,"mpregen":8.04,"mpregenperlevel":0.65,"crit":0.0,"critperlevel":0.0,"attackdamage":50.38,"attackdamageperlevel":3.5,"attackspeedoffset":-0.08,"attackspeedperlevel":2.7}},"DrMundo":{"version":"5.18.1","id":"DrMundo","key":"36","name":"Dr. Mundo","title":"the Madman of Zaun","blurb":"It is said that the man now known as Dr. Mundo was born without any sort of conscience. Instead, he had an unquenchable desire to inflict pain through experimentation. By the time he was five, most of the pets in the Zaun neighborhood where Mundo ...","info":{"attack":5,"defense":7,"magic":6,"difficulty":5},"image":{"full":"DrMundo.png","sprite":"champion0.png","group":"champion","x":432,"y":48,"w":48,"h":48},"tags":["Fighter","Tank"],"partype":"None","stats":{"hp":582.52,"hpperlevel":89.0,"mp":0.0,"mpperlevel":0.0,"movespeed":345.0,"armor":26.88,"armorperlevel":3.5,"spellblock":32.1,"spellblockperlevel":1.25,"attackrange":125.0,"hpregen":7.76,"hpregenperlevel":0.75,"mpregen":0.0,"mpregenperlevel":0.0,"crit":0.0,"critperlevel":0.0,"attackdamage":61.27,"attackdamageperlevel":3.0,"attackspeedoffset":0.0,"attackspeedperlevel":2.8}},"Ekko":{"version":"5.18.1","id":"Ekko","key":"245","name":"Ekko","title":"the Boy Who Shattered Time","blurb":"A prodigy from the rough streets of Zaun, Ekko manipulates time to spin any situation to his advantage. Using his own invention, the Zero-Drive, he explores the branching possibilities of reality. As well as experimenting with multi-dimensional ...","info":{"attack":5,"defense":3,"magic":7,"difficulty":8},"image":{"full":"Ekko.png","sprite":"champion4.png","group":"champion","x":192,"y":0,"w":48,"h":48},"tags":["Assassin","Fighter"],"partype":"Mana","stats":{"hp":580.0,"hpperlevel":80.0,"mp":280.0,"mpperlevel":50.0,"movespeed":340.0,"armor":27.0,"armorperlevel":3.0,"spellblock":32.0,"spellblockperlevel":1.25,"attackrange":125.0,"hpregen":9.0,"hpregenperlevel":0.9,"mpregen":6.0,"mpregenperlevel":0.8,"crit":0.0,"critperlevel":0.0,"attackdamage":59.0,"attackdamageperlevel":3.0,"attackspeedoffset":0.0,"attackspeedperlevel":3.3}},"Elise":{"version":"5.18.1","id":"Elise","key":"60","name":"Elise","title":"The Spider Queen","blurb":"Elise's entrancing beauty and grace conceal the pitiless, black heart of a deadly predator. With ruthless cunning, she lures the unsuspecting with promises of favor from the spider god. Having exchanged her humanity to become something far more ...","info":{"attack":6,"defense":5,"magic":7,"difficulty":9},"image":{"full":"Elise.png","sprite":"champion0.png","group":"champion","x":0,"y":96,"w":48,"h":48},"tags":["Mage","Fighter"],"partype":"Mana","stats":{"hp":529.4,"hpperlevel":80.0,"mp":324.0,"mpperlevel":50.0,"movespeed":330.0,"armor":22.128,"armorperlevel":3.35,"spellblock":30.0,"spellblockperlevel":0.0,"attackrange":550.0,"hpregen":5.705,"hpregenperlevel":0.6,"mpregen":6.0,"mpregenperlevel":0.8,"crit":0.0,"critperlevel":0.0,"attackdamage":50.54,"attackdamageperlevel":3.0,"attackspeedoffset":0.0,"attackspeedperlevel":1.75}},"Evelynn":{"version":"5.18.1","id":"Evelynn","key":"28","name":"Evelynn","title":"the Widowmaker","blurb":"Swift and lethal, Evelynn is one of the most deadly - and expensive - assassins in all of Runeterra. Able to merge with the shadows at will, she patiently stalks her prey, waiting for the right moment to strike. While Evelynn is clearly not entirely ...","info":{"attack":4,"defense":2,"magic":7,"difficulty":10},"image":{"full":"Evelynn.png","sprite":"champion0.png","group":"champion","x":48,"y":96,"w":48,"h":48},"tags":["Assassin","Mage"],"partype":"Mana","stats":{"hp":531.2,"hpperlevel":90.0,"mp":265.6,"mpperlevel":45.0,"movespeed":340.0,"armor":26.5,"armorperlevel":3.8,"spellblock":32.1,"spellblockperlevel":1.25,"attackrange":125.0,"hpregen":9.82,"hpregenperlevel":0.55,"mpregen":8.105,"mpregenperlevel":0.6,"crit":0.0,"critperlevel":0.0,"attackdamage":53.88,"attackdamageperlevel":3.5,"attackspeedoffset":0.0,"attackspeedperlevel":3.6}},"Ezreal":{"version":"5.18.1","id":"Ezreal","key":"81","name":"Ezreal","title":"the Prodigal Explorer","blurb":"The intrepid young adventurer Ezreal has explored some of the most remote and abandoned locations on Runeterra. During an expedition to the buried ruins of ancient Shurima, he recovered an amulet of incredible mystical power. Likely constructed to be ...","info":{"attack":7,"defense":2,"magic":6,"difficulty":7},"image":{"full":"Ezreal.png","sprite":"champion0.png","group":"champion","x":96,"y":96,"w":48,"h":48},"tags":["Marksman","Mage"],"partype":"Mana","stats":{"hp":484.4,"hpperlevel":80.0,"mp":310.6,"mpperlevel":45.0,"movespeed":325.0,"armor":21.88,"armorperlevel":3.5,"spellblock":30.0,"spellblockperlevel":0.0,"attackrange":550.0,"hpregen":6.42,"hpregenperlevel":0.55,"mpregen":8.09,"mpregenperlevel":0.65,"crit":0.0,"critperlevel":0.0,"attackdamage":50.24,"attackdamageperlevel":3.0,"attackspeedoffset":0.0,"attackspeedperlevel":2.8}},"FiddleSticks":{"version":"5.18.1","id":"FiddleSticks","key":"9","name":"Fiddlesticks","title":"the Harbinger of Doom","blurb":"For nearly twenty years, Fiddlesticks has stood alone in the easternmost summoning chamber of the Institute of War. Only the burning emerald light of his unearthly gaze pierces the musty darkness of his dust-covered home. It is here that the Harbinger ...","info":{"attack":2,"defense":3,"magic":9,"difficulty":9},"image":{"full":"FiddleSticks.png","sprite":"champion0.png","group":"champion","x":144,"y":96,"w":48,"h":48},"tags":["Mage","Support"],"partype":"Mana","stats":{"hp":524.4,"hpperlevel":80.0,"mp":350.12,"mpperlevel":59.0,"movespeed":335.0,"armor":20.88,"armorperlevel":3.5,"spellblock":30.0,"spellblockperlevel":0.0,"attackrange":480.0,"hpregen":5.605,"hpregenperlevel":0.6,"mpregen":6.0,"mpregenperlevel":0.8,"crit":0.0,"critperlevel":0.0,"attackdamage":48.36,"attackdamageperlevel":2.625,"attackspeedoffset":0.0,"attackspeedperlevel":2.11}},"Fiora":{"version":"5.18.1","id":"Fiora","key":"114","name":"Fiora","title":"the Grand Duelist","blurb":"''I have come to kill you for the sake of honor. And though you possess none, you will die just the same.''
The most feared duelist in all of Valoran, Fiora is as renowned for her indomitable will and haughty pride as she is for her skill with the ...","info":{"attack":10,"defense":4,"magic":2,"difficulty":3},"image":{"full":"Fiora.png","sprite":"champion0.png","group":"champion","x":192,"y":96,"w":48,"h":48},"tags":["Fighter","Assassin"],"partype":"Mana","stats":{"hp":550.0,"hpperlevel":85.0,"mp":300.0,"mpperlevel":40.0,"movespeed":345.0,"armor":24.0,"armorperlevel":3.5,"spellblock":32.1,"spellblockperlevel":1.25,"attackrange":150.0,"hpregen":8.25,"hpregenperlevel":0.55,"mpregen":8.0,"mpregenperlevel":0.7,"crit":0.0,"critperlevel":0.0,"attackdamage":60.0,"attackdamageperlevel":3.3,"attackspeedoffset":0.0,"attackspeedperlevel":3.2}},"Fizz":{"version":"5.18.1","id":"Fizz","key":"105","name":"Fizz","title":"the Tidal Trickster","blurb":"Centuries ago, an ancient water-dwelling race built a hidden city beneath a mountain in the sea. Though these creatures had their enemies, the city was an impenetrable fortress, and, in the safety it provided, they grew complacent. Fizz, however, ...","info":{"attack":6,"defense":4,"magic":7,"difficulty":6},"image":{"full":"Fizz.png","sprite":"champion0.png","group":"champion","x":240,"y":96,"w":48,"h":48},"tags":["Assassin","Fighter"],"partype":"Mana","stats":{"hp":558.48,"hpperlevel":86.0,"mp":267.2,"mpperlevel":40.0,"movespeed":335.0,"armor":22.412,"armorperlevel":3.4,"spellblock":32.1,"spellblockperlevel":1.25,"attackrange":175.0,"hpregen":8.175,"hpregenperlevel":0.7,"mpregen":6.0,"mpregenperlevel":0.8,"crit":0.0,"critperlevel":0.0,"attackdamage":58.04,"attackdamageperlevel":3.0,"attackspeedoffset":-0.05,"attackspeedperlevel":3.1}},"Galio":{"version":"5.18.1","id":"Galio","key":"3","name":"Galio","title":"the Sentinel's Sorrow","blurb":"Long before the League's regulation of such magic, mages experimented with the creation of artificial life. Now forbidden, instilling golems with reason was once not so uncommon a practice amongst the more expert of craftsmen. One such visionary was ...","info":{"attack":3,"defense":7,"magic":6,"difficulty":3},"image":{"full":"Galio.png","sprite":"champion0.png","group":"champion","x":288,"y":96,"w":48,"h":48},"tags":["Tank","Mage"],"partype":"Mana","stats":{"hp":577.8,"hpperlevel":85.0,"mp":319.0,"mpperlevel":50.0,"movespeed":335.0,"armor":26.88,"armorperlevel":3.5,"spellblock":32.1,"spellblockperlevel":1.25,"attackrange":125.0,"hpregen":8.71,"hpregenperlevel":0.75,"mpregen":6.0,"mpregenperlevel":0.8,"crit":0.0,"critperlevel":0.0,"attackdamage":61.97,"attackdamageperlevel":3.375,"attackspeedoffset":-0.02,"attackspeedperlevel":1.2}},"Gangplank":{"version":"5.18.1","id":"Gangplank","key":"41","name":"Gangplank","title":"the Saltwater Scourge","blurb":"''I was cutting throats and sinking Noxian war galleys when you were still pissing your britches, boy. You don't want to take me on.'' As unpredictable as he is brutal, the dethroned reaver king known as Gangplank is feared far and wide. Where he goes,...","info":{"attack":7,"defense":6,"magic":4,"difficulty":9},"image":{"full":"Gangplank.png","sprite":"champion0.png","group":"champion","x":336,"y":96,"w":48,"h":48},"tags":["Fighter"],"partype":"Mana","stats":{"hp":631.08,"hpperlevel":79.0,"mp":282.0,"mpperlevel":40.0,"movespeed":345.0,"armor":26.0,"armorperlevel":3.0,"spellblock":32.1,"spellblockperlevel":1.25,"attackrange":125.0,"hpregen":6.0,"hpregenperlevel":0.6,"mpregen":7.5,"mpregenperlevel":0.7,"crit":0.0,"critperlevel":0.0,"attackdamage":56.0,"attackdamageperlevel":3.0,"attackspeedoffset":0.0,"attackspeedperlevel":3.2}},"Garen":{"version":"5.18.1","id":"Garen","key":"86","name":"Garen","title":"The Might of Demacia","blurb":"Throughout Valoran, the resolve of Demacia's military is alternately celebrated or despised, but always respected. Their ''zero tolerance'' moral code is strictly upheld by civilians and soldiers alike. In combat, this means Demacian troops may not ...","info":{"attack":7,"defense":7,"magic":1,"difficulty":5},"image":{"full":"Garen.png","sprite":"champion0.png","group":"champion","x":384,"y":96,"w":48,"h":48},"tags":["Fighter","Tank"],"partype":"None","stats":{"hp":616.28,"hpperlevel":84.25,"mp":0.0,"mpperlevel":0.0,"movespeed":340.0,"armor":27.536,"armorperlevel":3.0,"spellblock":32.1,"spellblockperlevel":1.25,"attackrange":175.0,"hpregen":7.84,"hpregenperlevel":0.5,"mpregen":0.0,"mpregenperlevel":0.0,"crit":0.0,"critperlevel":0.0,"attackdamage":57.88,"attackdamageperlevel":4.5,"attackspeedoffset":0.0,"attackspeedperlevel":2.9}},"Gnar":{"version":"5.18.1","id":"Gnar","key":"150","name":"Gnar","title":"the Missing Link","blurb":"The jungle does not forgive blindness. Every broken branch tells a story.

I've hunted every creature this jungle has to offer. I was certain there were no challenges left here, but now there is something new. Each track is the size of a ...","info":{"attack":6,"defense":5,"magic":5,"difficulty":8},"image":{"full":"Gnar.png","sprite":"champion0.png","group":"champion","x":432,"y":96,"w":48,"h":48},"tags":["Fighter","Tank"],"partype":"Gnarfury","stats":{"hp":540.0,"hpperlevel":65.0,"mp":100.0,"mpperlevel":0.0,"movespeed":325.0,"armor":23.0,"armorperlevel":2.5,"spellblock":30.0,"spellblockperlevel":0.0,"attackrange":150.0,"hpregen":2.5,"hpregenperlevel":0.5,"mpregen":0.0,"mpregenperlevel":0.0,"crit":0.0,"critperlevel":0.0,"attackdamage":48.0,"attackdamageperlevel":3.0,"attackspeedoffset":0.0,"attackspeedperlevel":6.0}},"Gragas":{"version":"5.18.1","id":"Gragas","key":"79","name":"Gragas","title":"the Rabble Rouser","blurb":"The only thing more important to Gragas than fighting is drinking. His unquenchable thirst for stronger ale has led him in search of the most potent and unconventional ingredients to toss in his still. Impulsive and unpredictable, this rowdy carouser ...","info":{"attack":4,"defense":7,"magic":6,"difficulty":5},"image":{"full":"Gragas.png","sprite":"champion1.png","group":"champion","x":0,"y":0,"w":48,"h":48},"tags":["Fighter","Mage"],"partype":"Mana","stats":{"hp":583.52,"hpperlevel":89.0,"mp":400.0,"mpperlevel":47.0,"movespeed":330.0,"armor":26.048,"armorperlevel":3.6,"spellblock":32.1,"spellblockperlevel":1.25,"attackrange":125.0,"hpregen":5.5,"hpregenperlevel":0.5,"mpregen":6.0,"mpregenperlevel":0.8,"crit":0.0,"critperlevel":0.0,"attackdamage":61.38,"attackdamageperlevel":3.5,"attackspeedoffset":-0.04,"attackspeedperlevel":2.05}},"Graves":{"version":"5.18.1","id":"Graves","key":"104","name":"Graves","title":"the Outlaw","blurb":"Malcolm Graves is a wanted man in every realm, city-state, and empire he has visited. Tough, strong-willed, and above all, relentless, through his life of crime he has amassed (then invariably lost) a small fortune.","info":{"attack":8,"defense":5,"magic":3,"difficulty":3},"image":{"full":"Graves.png","sprite":"champion1.png","group":"champion","x":48,"y":0,"w":48,"h":48},"tags":["Marksman"],"partype":"Mana","stats":{"hp":551.12,"hpperlevel":84.0,"mp":322.2,"mpperlevel":40.0,"movespeed":330.0,"armor":24.376,"armorperlevel":3.2,"spellblock":30.0,"spellblockperlevel":0.0,"attackrange":525.0,"hpregen":6.675,"hpregenperlevel":0.7,"mpregen":7.925,"mpregenperlevel":0.7,"crit":0.0,"critperlevel":0.0,"attackdamage":54.208,"attackdamageperlevel":3.1,"attackspeedoffset":0.0,"attackspeedperlevel":2.9}},"Hecarim":{"version":"5.18.1","id":"Hecarim","key":"120","name":"Hecarim","title":"the Shadow of War","blurb":"Hecarim is a towering, armored specter whose name is whispered fearfully across the length and breadth of Runeterra. He patrols the Shadow Isles, running down anyone foolish enough to set foot upon its cursed soil. As the vanguard of undeath, Hecarim ...","info":{"attack":8,"defense":6,"magic":4,"difficulty":6},"image":{"full":"Hecarim.png","sprite":"champion1.png","group":"champion","x":96,"y":0,"w":48,"h":48},"tags":["Fighter","Tank"],"partype":"Mana","stats":{"hp":599.6,"hpperlevel":95.0,"mp":277.2,"mpperlevel":40.0,"movespeed":345.0,"armor":26.72,"armorperlevel":4.0,"spellblock":32.1,"spellblockperlevel":1.25,"attackrange":175.0,"hpregen":7.0,"hpregenperlevel":0.75,"mpregen":6.5,"mpregenperlevel":0.6,"crit":0.0,"critperlevel":0.0,"attackdamage":61.376,"attackdamageperlevel":3.2,"attackspeedoffset":-0.0672,"attackspeedperlevel":2.5}},"Heimerdinger":{"version":"5.18.1","id":"Heimerdinger","key":"74","name":"Heimerdinger","title":"the Revered Inventor","blurb":"From the Journal of Professor Cecil B. Heimerdinger

10.14

09:15

Current meteorological conditions in Bandle City seem optimal. Atmospheric pressure is ideal for today's experiments!

Running a fifth trial for my ...","info":{"attack":2,"defense":6,"magic":8,"difficulty":8},"image":{"full":"Heimerdinger.png","sprite":"champion1.png","group":"champion","x":144,"y":0,"w":48,"h":48},"tags":["Mage","Support"],"partype":"Mana","stats":{"hp":476.0,"hpperlevel":75.0,"mp":307.2,"mpperlevel":40.0,"movespeed":340.0,"armor":19.04,"armorperlevel":3.0,"spellblock":30.0,"spellblockperlevel":0.0,"attackrange":550.0,"hpregen":11.005,"hpregenperlevel":1.75,"mpregen":6.0,"mpregenperlevel":0.8,"crit":0.0,"critperlevel":0.0,"attackdamage":55.536,"attackdamageperlevel":2.7,"attackspeedoffset":0.0,"attackspeedperlevel":1.36}},"Irelia":{"version":"5.18.1","id":"Irelia","key":"39","name":"Irelia","title":"the Will of the Blades","blurb":"The Ionians have developed some of the most breathtaking and deadly martial arts on all of Runeterra - just one manifestation of their pursuit of enlightenment. The most remarkable blade style to emerge, however, was the unusual byproduct of foreign ...","info":{"attack":7,"defense":4,"magic":5,"difficulty":5},"image":{"full":"Irelia.png","sprite":"champion1.png","group":"champion","x":192,"y":0,"w":48,"h":48},"tags":["Fighter","Assassin"],"partype":"Mana","stats":{"hp":607.2,"hpperlevel":90.0,"mp":288.8,"mpperlevel":35.0,"movespeed":345.0,"armor":25.3,"armorperlevel":3.75,"spellblock":32.1,"spellblockperlevel":1.25,"attackrange":125.0,"hpregen":8.59,"hpregenperlevel":0.65,"mpregen":8.09,"mpregenperlevel":0.65,"crit":0.0,"critperlevel":0.0,"attackdamage":61.544,"attackdamageperlevel":3.3,"attackspeedoffset":-0.06,"attackspeedperlevel":3.2}},"Janna":{"version":"5.18.1","id":"Janna","key":"40","name":"Janna","title":"the Storm's Fury","blurb":"There are those sorcerers who give themselves over to the primal powers of nature, forgoing the learned practice of magic. Such a sorceress is Janna, who first learned magic as an orphan growing up amidst the chaos that is the city-state of Zaun. ...","info":{"attack":3,"defense":5,"magic":7,"difficulty":7},"image":{"full":"Janna.png","sprite":"champion1.png","group":"champion","x":240,"y":0,"w":48,"h":48},"tags":["Support","Mage"],"partype":"Mana","stats":{"hp":487.04,"hpperlevel":78.0,"mp":409.52,"mpperlevel":64.0,"movespeed":335.0,"armor":19.384,"armorperlevel":3.8,"spellblock":30.0,"spellblockperlevel":0.0,"attackrange":475.0,"hpregen":5.42,"hpregenperlevel":0.55,"mpregen":9.0,"mpregenperlevel":0.4,"crit":0.0,"critperlevel":0.0,"attackdamage":51.956,"attackdamageperlevel":2.95,"attackspeedoffset":0.0,"attackspeedperlevel":2.61}},"JarvanIV":{"version":"5.18.1","id":"JarvanIV","key":"59","name":"Jarvan IV","title":"the Exemplar of Demacia","blurb":"As the royal family of Demacia for centuries, members of the Lightshield line have spent their lives waging war against any who opposed Demacian ethics. It is said that every Lightshield is born with anti-Noxian sentiment in his blood. Jarvan IV is no ...","info":{"attack":6,"defense":8,"magic":3,"difficulty":5},"image":{"full":"JarvanIV.png","sprite":"champion1.png","group":"champion","x":288,"y":0,"w":48,"h":48},"tags":["Tank","Fighter"],"partype":"Mana","stats":{"hp":571.2,"hpperlevel":90.0,"mp":302.2,"mpperlevel":40.0,"movespeed":340.0,"armor":29.0,"armorperlevel":3.6,"spellblock":32.1,"spellblockperlevel":1.25,"attackrange":175.0,"hpregen":8.175,"hpregenperlevel":0.7,"mpregen":6.755,"mpregenperlevel":0.45,"crit":0.0,"critperlevel":0.0,"attackdamage":55.712,"attackdamageperlevel":3.4,"attackspeedoffset":-0.05,"attackspeedperlevel":2.5}},"Jax":{"version":"5.18.1","id":"Jax","key":"24","name":"Jax","title":"Grandmaster at Arms","blurb":"It is seldom the case where a champion is defined by his actions after joining the League of Legends rather than before. Such is the case with Jax, for whom the argument could be made that he is the most prolific tournament fighter currently at the ...","info":{"attack":7,"defense":5,"magic":7,"difficulty":5},"image":{"full":"Jax.png","sprite":"champion1.png","group":"champion","x":336,"y":0,"w":48,"h":48},"tags":["Fighter","Assassin"],"partype":"Mana","stats":{"hp":592.8,"hpperlevel":85.0,"mp":288.8,"mpperlevel":35.0,"movespeed":350.0,"armor":27.04,"armorperlevel":3.0,"spellblock":32.1,"spellblockperlevel":1.25,"attackrange":125.0,"hpregen":8.37,"hpregenperlevel":0.55,"mpregen":7.575,"mpregenperlevel":0.7,"crit":0.0,"critperlevel":0.0,"attackdamage":61.97,"attackdamageperlevel":3.375,"attackspeedoffset":-0.02,"attackspeedperlevel":3.4}},"Jayce":{"version":"5.18.1","id":"Jayce","key":"126","name":"Jayce","title":"the Defender of Tomorrow","blurb":"Armed with wit, charm, and his signature transforming hammer, Jayce lives to protect his native Piltover. Long before his nation called him a hero, however, he was a promising young inventor. When Piltover commissioned him to study a rare arcane ...","info":{"attack":8,"defense":4,"magic":3,"difficulty":7},"image":{"full":"Jayce.png","sprite":"champion1.png","group":"champion","x":384,"y":0,"w":48,"h":48},"tags":["Fighter","Marksman"],"partype":"Mana","stats":{"hp":571.2,"hpperlevel":90.0,"mp":307.2,"mpperlevel":40.0,"movespeed":335.0,"armor":22.38,"armorperlevel":3.5,"spellblock":30.0,"spellblockperlevel":0.0,"attackrange":125.0,"hpregen":7.34,"hpregenperlevel":0.8,"mpregen":6.0,"mpregenperlevel":0.8,"crit":0.0,"critperlevel":0.0,"attackdamage":50.38,"attackdamageperlevel":3.5,"attackspeedoffset":-0.05,"attackspeedperlevel":3.0}},"Jinx":{"version":"5.18.1","id":"Jinx","key":"222","name":"Jinx","title":"the Loose Cannon","blurb":"Jinx lives to wreak havoc without a thought for the consequences, leaving a trail of mayhem and panic in her wake. A manic and impulsive criminal, she despises nothing more than boredom, and gleefully brings her own volatile brand of pandemonium to ...","info":{"attack":9,"defense":2,"magic":4,"difficulty":6},"image":{"full":"Jinx.png","sprite":"champion1.png","group":"champion","x":432,"y":0,"w":48,"h":48},"tags":["Marksman"],"partype":"Mana","stats":{"hp":517.76,"hpperlevel":82.0,"mp":245.6,"mpperlevel":45.0,"movespeed":325.0,"armor":22.88,"armorperlevel":3.5,"spellblock":30.0,"spellblockperlevel":0.0,"attackrange":525.0,"hpregen":5.84,"hpregenperlevel":0.5,"mpregen":6.68,"mpregenperlevel":1.0,"crit":0.0,"critperlevel":0.0,"attackdamage":53.04,"attackdamageperlevel":3.0,"attackspeedoffset":0.0,"attackspeedperlevel":1.0}},"Kalista":{"version":"5.18.1","id":"Kalista","key":"429","name":"Kalista","title":"the Spear of Vengeance","blurb":"Kalista is an eternal spirit of retribution, who possesses a cold-burning hatred for all betrayers, deceivers, and traitors. In life, she was a legendary warrior, but while trying to avert tragedy she was betrayed and slain by those she trusted most. ...","info":{"attack":8,"defense":2,"magic":4,"difficulty":7},"image":{"full":"Kalista.png","sprite":"champion1.png","group":"champion","x":0,"y":48,"w":48,"h":48},"tags":["Marksman"],"partype":"Mana","stats":{"hp":517.76,"hpperlevel":83.0,"mp":231.8,"mpperlevel":35.0,"movespeed":325.0,"armor":19.012,"armorperlevel":3.5,"spellblock":30.0,"spellblockperlevel":0.0,"attackrange":550.0,"hpregen":6.0,"hpregenperlevel":0.55,"mpregen":6.3,"mpregenperlevel":0.4,"crit":0.0,"critperlevel":0.0,"attackdamage":57.5,"attackdamageperlevel":3.5,"attackspeedoffset":-0.05,"attackspeedperlevel":3.3}},"Karma":{"version":"5.18.1","id":"Karma","key":"43","name":"Karma","title":"the Enlightened One","blurb":"Karma is a woman of indomitable will and unbound spiritual power. She is the soul of Ionia made manifest and an inspiring presence on the battlefield, shielding her allies and turning back her foes. A strong leader torn between tradition and ...","info":{"attack":1,"defense":7,"magic":8,"difficulty":5},"image":{"full":"Karma.png","sprite":"champion1.png","group":"champion","x":48,"y":48,"w":48,"h":48},"tags":["Mage","Support"],"partype":"Mana","stats":{"hp":522.44,"hpperlevel":83.0,"mp":374.0,"mpperlevel":50.0,"movespeed":335.0,"armor":20.384,"armorperlevel":3.8,"spellblock":30.0,"spellblockperlevel":0.0,"attackrange":525.0,"hpregen":5.62,"hpregenperlevel":0.55,"mpregen":6.0,"mpregenperlevel":0.8,"crit":0.0,"critperlevel":0.0,"attackdamage":53.544,"attackdamageperlevel":3.3,"attackspeedoffset":0.0,"attackspeedperlevel":2.3}},"Karthus":{"version":"5.18.1","id":"Karthus","key":"30","name":"Karthus","title":"the Deathsinger","blurb":"Karthus is a harbinger of oblivion, zealously devoted to the beauty and clarity of death. Even in his youth, he was utterly obsessed with mortality, growing ever more relentless in the pursuit of his dark desires. Yearning to be one with death itself, ...","info":{"attack":2,"defense":2,"magic":10,"difficulty":7},"image":{"full":"Karthus.png","sprite":"champion1.png","group":"champion","x":96,"y":48,"w":48,"h":48},"tags":["Mage"],"partype":"Mana","stats":{"hp":516.0,"hpperlevel":75.0,"mp":372.48,"mpperlevel":61.0,"movespeed":335.0,"armor":20.88,"armorperlevel":3.5,"spellblock":30.0,"spellblockperlevel":0.0,"attackrange":450.0,"hpregen":6.42,"hpregenperlevel":0.55,"mpregen":6.0,"mpregenperlevel":0.8,"crit":0.0,"critperlevel":0.0,"attackdamage":45.66,"attackdamageperlevel":3.25,"attackspeedoffset":0.0,"attackspeedperlevel":2.11}},"Kassadin":{"version":"5.18.1","id":"Kassadin","key":"38","name":"Kassadin","title":"the Void Walker","blurb":"There is a place between dimensions and between worlds. To some it is known as the Outside, to others it is the Unknown. To most, however, it is called the Void. Despite its name, the Void is not an empty place, but rather the home of unspeakable ...","info":{"attack":3,"defense":5,"magic":8,"difficulty":8},"image":{"full":"Kassadin.png","sprite":"champion1.png","group":"champion","x":144,"y":48,"w":48,"h":48},"tags":["Assassin","Mage"],"partype":"Mana","stats":{"hp":564.04,"hpperlevel":78.0,"mp":347.6,"mpperlevel":70.0,"movespeed":340.0,"armor":23.376,"armorperlevel":3.2,"spellblock":30.0,"spellblockperlevel":0.0,"attackrange":150.0,"hpregen":7.79,"hpregenperlevel":0.5,"mpregen":6.0,"mpregenperlevel":0.8,"crit":0.0,"critperlevel":0.0,"attackdamage":58.852,"attackdamageperlevel":3.9,"attackspeedoffset":-0.023,"attackspeedperlevel":3.7}},"Katarina":{"version":"5.18.1","id":"Katarina","key":"55","name":"Katarina","title":"the Sinister Blade","blurb":"Driven by an intense killer instinct, Katarina uses her talents as an assassin for the glory of Noxus, and the continued elevation of her family. While her fervor drives her to ever-greater feats, it can sometimes lead her astray.

From ...","info":{"attack":4,"defense":3,"magic":9,"difficulty":8},"image":{"full":"Katarina.png","sprite":"champion1.png","group":"champion","x":192,"y":48,"w":48,"h":48},"tags":["Assassin","Mage"],"partype":"None","stats":{"hp":510.0,"hpperlevel":83.0,"mp":0.0,"mpperlevel":0.0,"movespeed":345.0,"armor":26.88,"armorperlevel":3.5,"spellblock":32.1,"spellblockperlevel":1.25,"attackrange":125.0,"hpregen":4.5,"hpregenperlevel":0.55,"mpregen":0.0,"mpregenperlevel":0.0,"crit":0.0,"critperlevel":0.0,"attackdamage":58.0,"attackdamageperlevel":3.2,"attackspeedoffset":-0.05,"attackspeedperlevel":2.74}},"Kayle":{"version":"5.18.1","id":"Kayle","key":"10","name":"Kayle","title":"The Judicator","blurb":"In a world far away where an ancient war still rages, Kayle was a great hero - the strongest of an immortal race committed to destroying evil wherever it could be found. For ten thousand years, Kayle fought tirelessly for her people, wielding her ...","info":{"attack":6,"defense":6,"magic":7,"difficulty":7},"image":{"full":"Kayle.png","sprite":"champion1.png","group":"champion","x":240,"y":48,"w":48,"h":48},"tags":["Fighter","Support"],"partype":"Mana","stats":{"hp":574.24,"hpperlevel":93.0,"mp":322.2,"mpperlevel":40.0,"movespeed":335.0,"armor":26.88,"armorperlevel":3.5,"spellblock":30.0,"spellblockperlevel":0.0,"attackrange":125.0,"hpregen":8.26,"hpregenperlevel":0.75,"mpregen":6.0,"mpregenperlevel":0.8,"crit":0.0,"critperlevel":0.0,"attackdamage":51.0,"attackdamageperlevel":2.8,"attackspeedoffset":-0.02,"attackspeedperlevel":2.2}},"Kennen":{"version":"5.18.1","id":"Kennen","key":"85","name":"Kennen","title":"the Heart of the Tempest","blurb":"There exists an ancient order originating in the Ionian Isles dedicated to the preservation of balance. Order, chaos, light, darkness -- all things must exist in perfect harmony for such is the way of the universe. This order is known as the Kinkou ...","info":{"attack":6,"defense":4,"magic":7,"difficulty":4},"image":{"full":"Kennen.png","sprite":"champion1.png","group":"champion","x":288,"y":48,"w":48,"h":48},"tags":["Mage","Marksman"],"partype":"Energy","stats":{"hp":535.72,"hpperlevel":79.0,"mp":200.0,"mpperlevel":0.0,"movespeed":335.0,"armor":24.3,"armorperlevel":3.75,"spellblock":30.0,"spellblockperlevel":0.0,"attackrange":550.0,"hpregen":5.59,"hpregenperlevel":0.65,"mpregen":50.0,"mpregenperlevel":0.0,"crit":0.0,"critperlevel":0.0,"attackdamage":50.544,"attackdamageperlevel":3.3,"attackspeedoffset":-0.0947,"attackspeedperlevel":3.4}},"Khazix":{"version":"5.18.1","id":"Khazix","key":"121","name":"Kha'Zix","title":"the Voidreaver","blurb":"A vicious Void predator, Kha'Zix infiltrated Valoran to devour the land's most promising creatures. With each kill he absorbs his prey's strength, evolving to grow more powerful. Kha'Zix hungers most to conquer and consume Rengar, the one beast he ...","info":{"attack":9,"defense":4,"magic":3,"difficulty":6},"image":{"full":"Khazix.png","sprite":"champion1.png","group":"champion","x":336,"y":48,"w":48,"h":48},"tags":["Assassin","Fighter"],"partype":"Mana","stats":{"hp":572.8,"hpperlevel":85.0,"mp":327.2,"mpperlevel":40.0,"movespeed":350.0,"armor":24.04,"armorperlevel":3.0,"spellblock":32.1,"spellblockperlevel":1.25,"attackrange":125.0,"hpregen":7.51,"hpregenperlevel":0.75,"mpregen":7.59,"mpregenperlevel":0.5,"crit":0.0,"critperlevel":0.0,"attackdamage":55.208,"attackdamageperlevel":3.1,"attackspeedoffset":-0.065,"attackspeedperlevel":2.7}},"KogMaw":{"version":"5.18.1","id":"KogMaw","key":"96","name":"Kog'Maw","title":"the Mouth of the Abyss","blurb":"When the prophet Malzahar was reborn in Icathia, he was led there by an ominous voice which thereafter anchored itself to his psyche. From within, this voice bestowed upon him terrible purpose, and though Malzahar was no longer tormented by its call, ...","info":{"attack":8,"defense":2,"magic":5,"difficulty":6},"image":{"full":"KogMaw.png","sprite":"champion1.png","group":"champion","x":384,"y":48,"w":48,"h":48},"tags":["Marksman","Mage"],"partype":"Mana","stats":{"hp":546.16,"hpperlevel":87.0,"mp":322.2,"mpperlevel":40.0,"movespeed":325.0,"armor":19.88,"armorperlevel":3.5,"spellblock":30.0,"spellblockperlevel":0.0,"attackrange":500.0,"hpregen":5.92,"hpregenperlevel":0.55,"mpregen":8.675,"mpregenperlevel":0.7,"crit":0.0,"critperlevel":0.0,"attackdamage":49.04,"attackdamageperlevel":3.0,"attackspeedoffset":-0.06,"attackspeedperlevel":2.65}},"Leblanc":{"version":"5.18.1","id":"Leblanc","key":"7","name":"LeBlanc","title":"the Deceiver","blurb":"Every city has its dark side, even one whose reputation is already of a questionable hue. Noxus - though its name is already invoked with a mixture of reverence and revulsion - is no exception to this simple truth. Deep within the winding dungeons ...","info":{"attack":1,"defense":4,"magic":10,"difficulty":9},"image":{"full":"Leblanc.png","sprite":"champion1.png","group":"champion","x":432,"y":48,"w":48,"h":48},"tags":["Assassin","Mage"],"partype":"Mana","stats":{"hp":516.0,"hpperlevel":75.0,"mp":334.0,"mpperlevel":50.0,"movespeed":335.0,"armor":21.88,"armorperlevel":3.5,"spellblock":30.0,"spellblockperlevel":0.0,"attackrange":525.0,"hpregen":7.42,"hpregenperlevel":0.55,"mpregen":6.0,"mpregenperlevel":0.8,"crit":0.0,"critperlevel":0.0,"attackdamage":54.88,"attackdamageperlevel":3.5,"attackspeedoffset":0.0,"attackspeedperlevel":1.4}},"LeeSin":{"version":"5.18.1","id":"LeeSin","key":"64","name":"Lee Sin","title":"the Blind Monk","blurb":"As a young teen, Lee Sin was intent on becoming a summoner. His will and dedication were unmatched by any of his peers, and his skill drew the attention of Reginald Ashram, the League's High Councilor at the time. While studying at the Arcanum Majoris,...","info":{"attack":8,"defense":5,"magic":3,"difficulty":6},"image":{"full":"LeeSin.png","sprite":"champion1.png","group":"champion","x":0,"y":96,"w":48,"h":48},"tags":["Fighter","Assassin"],"partype":"Energy","stats":{"hp":570.8,"hpperlevel":85.0,"mp":200.0,"mpperlevel":0.0,"movespeed":350.0,"armor":24.216,"armorperlevel":3.7,"spellblock":32.1,"spellblockperlevel":1.25,"attackrange":125.0,"hpregen":7.425,"hpregenperlevel":0.7,"mpregen":50.0,"mpregenperlevel":0.0,"crit":0.0,"critperlevel":0.0,"attackdamage":61.176,"attackdamageperlevel":3.2,"attackspeedoffset":-0.04,"attackspeedperlevel":3.0}},"Leona":{"version":"5.18.1","id":"Leona","key":"89","name":"Leona","title":"the Radiant Dawn","blurb":"On the upper slopes of Mount Targon, the warriors of Rakkor live and breathe only for war. However, Targon's peak is reserved for a special group of Rakkoran who answer to a ''higher'' calling. Members of this group, called the Solari, retire their ...","info":{"attack":4,"defense":8,"magic":3,"difficulty":4},"image":{"full":"Leona.png","sprite":"champion1.png","group":"champion","x":48,"y":96,"w":48,"h":48},"tags":["Tank","Support"],"partype":"Mana","stats":{"hp":576.16,"hpperlevel":87.0,"mp":302.2,"mpperlevel":40.0,"movespeed":335.0,"armor":27.208,"armorperlevel":3.6,"spellblock":32.1,"spellblockperlevel":1.25,"attackrange":125.0,"hpregen":8.425,"hpregenperlevel":0.85,"mpregen":6.0,"mpregenperlevel":0.8,"crit":0.0,"critperlevel":0.0,"attackdamage":60.04,"attackdamageperlevel":3.0,"attackspeedoffset":0.0,"attackspeedperlevel":2.9}},"Lissandra":{"version":"5.18.1","id":"Lissandra","key":"127","name":"Lissandra","title":"the Ice Witch","blurb":"Lissandra's magic twists the pure power of ice into something dark and terrible. With the force of her black ice, she does more than freeze - she impales and crushes those who oppose her. To the terrified denizens of the north, she is known only as ...","info":{"attack":2,"defense":5,"magic":8,"difficulty":6},"image":{"full":"Lissandra.png","sprite":"champion1.png","group":"champion","x":96,"y":96,"w":48,"h":48},"tags":["Mage"],"partype":"Mana","stats":{"hp":506.12,"hpperlevel":84.0,"mp":304.0,"mpperlevel":50.0,"movespeed":325.0,"armor":20.216,"armorperlevel":3.7,"spellblock":30.0,"spellblockperlevel":0.0,"attackrange":550.0,"hpregen":6.92,"hpregenperlevel":0.55,"mpregen":5.67,"mpregenperlevel":0.4,"crit":0.0,"critperlevel":0.0,"attackdamage":50.536,"attackdamageperlevel":2.7,"attackspeedoffset":0.0,"attackspeedperlevel":1.36}},"Lucian":{"version":"5.18.1","id":"Lucian","key":"236","name":"Lucian","title":"the Purifier","blurb":"Lucian wields relic weapons imbued with ancient power and stands a stalwart guardian against the undead. His cold conviction never wavers, even in the face of the maddening horrors he destroys beneath his hail of purifying fire. Lucian walks alone on ...","info":{"attack":8,"defense":5,"magic":3,"difficulty":6},"image":{"full":"Lucian.png","sprite":"champion1.png","group":"champion","x":144,"y":96,"w":48,"h":48},"tags":["Marksman"],"partype":"Mana","stats":{"hp":554.4,"hpperlevel":80.0,"mp":298.88,"mpperlevel":41.0,"movespeed":335.0,"armor":24.04,"armorperlevel":3.0,"spellblock":30.0,"spellblockperlevel":0.0,"attackrange":500.0,"hpregen":6.19,"hpregenperlevel":0.65,"mpregen":8.175,"mpregenperlevel":0.7,"crit":0.0,"critperlevel":0.0,"attackdamage":52.04,"attackdamageperlevel":3.0,"attackspeedoffset":-0.02,"attackspeedperlevel":3.3}},"Lulu":{"version":"5.18.1","id":"Lulu","key":"117","name":"Lulu","title":"the Fae Sorceress","blurb":"Perhaps more than any other champion in the League, Lulu marches to the beat of her own drum. During her youth in Bandle City, she spent most of her time wandering alone in the forest or lost in a daydream. It wasn't that she was antisocial; the ...","info":{"attack":4,"defense":5,"magic":7,"difficulty":5},"image":{"full":"Lulu.png","sprite":"champion1.png","group":"champion","x":192,"y":96,"w":48,"h":48},"tags":["Support","Mage"],"partype":"Mana","stats":{"hp":552.76,"hpperlevel":74.0,"mp":292.4,"mpperlevel":55.0,"movespeed":325.0,"armor":19.216,"armorperlevel":3.7,"spellblock":30.0,"spellblockperlevel":0.0,"attackrange":550.0,"hpregen":6.005,"hpregenperlevel":0.6,"mpregen":8.5,"mpregenperlevel":0.6,"crit":0.0,"critperlevel":0.0,"attackdamage":46.368,"attackdamageperlevel":2.6,"attackspeedoffset":0.0,"attackspeedperlevel":2.25}},"Lux":{"version":"5.18.1","id":"Lux","key":"99","name":"Lux","title":"the Lady of Luminosity","blurb":"Born to the prestigious Crownguards, the paragon family of Demacian service, Luxanna was destined for greatness. She grew up as the family's only daughter, and she immediately took to the advanced education and lavish parties required of families as ...","info":{"attack":2,"defense":4,"magic":9,"difficulty":5},"image":{"full":"Lux.png","sprite":"champion1.png","group":"champion","x":240,"y":96,"w":48,"h":48},"tags":["Mage","Support"],"partype":"Mana","stats":{"hp":477.72,"hpperlevel":79.0,"mp":334.0,"mpperlevel":50.0,"movespeed":330.0,"armor":18.72,"armorperlevel":4.0,"spellblock":30.0,"spellblockperlevel":0.0,"attackrange":550.0,"hpregen":5.42,"hpregenperlevel":0.55,"mpregen":6.0,"mpregenperlevel":0.8,"crit":0.0,"critperlevel":0.0,"attackdamage":53.544,"attackdamageperlevel":3.3,"attackspeedoffset":0.0,"attackspeedperlevel":1.36}},"Malphite":{"version":"5.18.1","id":"Malphite","key":"54","name":"Malphite","title":"Shard of the Monolith","blurb":"There is a world of perfect harmony, where all are part of the whole. The Monolith is the essence of all creation, and its denizens are but singular pieces of it. It is beautiful in its symmetry, and in its almost complete lack of uncertainty. The ...","info":{"attack":5,"defense":9,"magic":7,"difficulty":2},"image":{"full":"Malphite.png","sprite":"champion1.png","group":"champion","x":288,"y":96,"w":48,"h":48},"tags":["Tank","Fighter"],"partype":"Mana","stats":{"hp":574.2,"hpperlevel":90.0,"mp":282.2,"mpperlevel":40.0,"movespeed":335.0,"armor":28.3,"armorperlevel":3.75,"spellblock":32.1,"spellblockperlevel":1.25,"attackrange":125.0,"hpregen":8.37,"hpregenperlevel":0.55,"mpregen":7.32,"mpregenperlevel":0.55,"crit":0.0,"critperlevel":0.0,"attackdamage":61.97,"attackdamageperlevel":3.375,"attackspeedoffset":-0.02,"attackspeedperlevel":3.4}},"Malzahar":{"version":"5.18.1","id":"Malzahar","key":"90","name":"Malzahar","title":"the Prophet of the Void","blurb":"Many men have gone mad beneath the glare of the Shurima sun, but it was during the night's chilling embrace that Malzahar relinquished his sanity. Malzahar was born a seer, blessed with the gift of prophecy. His talent, though unrefined, promised to ...","info":{"attack":2,"defense":2,"magic":9,"difficulty":6},"image":{"full":"Malzahar.png","sprite":"champion1.png","group":"champion","x":336,"y":96,"w":48,"h":48},"tags":["Mage","Assassin"],"partype":"Mana","stats":{"hp":514.4,"hpperlevel":80.0,"mp":325.6,"mpperlevel":45.0,"movespeed":340.0,"armor":21.88,"armorperlevel":3.5,"spellblock":30.0,"spellblockperlevel":0.0,"attackrange":550.0,"hpregen":5.42,"hpregenperlevel":0.55,"mpregen":6.0,"mpregenperlevel":0.8,"crit":0.0,"critperlevel":0.0,"attackdamage":54.7,"attackdamageperlevel":3.0,"attackspeedoffset":0.0,"attackspeedperlevel":1.36}},"Maokai":{"version":"5.18.1","id":"Maokai","key":"57","name":"Maokai","title":"the Twisted Treant","blurb":"Maokai was once a peaceful nature spirit dwelling in an idyllic forest, but the arrogance of humans brought an end to that life. Now he is a gnarled shadow of his former self, twisted by dark magics that defied the natural order of life and death. ...","info":{"attack":3,"defense":8,"magic":6,"difficulty":3},"image":{"full":"Maokai.png","sprite":"champion1.png","group":"champion","x":384,"y":96,"w":48,"h":48},"tags":["Tank","Mage"],"partype":"Mana","stats":{"hp":572.2,"hpperlevel":90.0,"mp":327.28,"mpperlevel":46.0,"movespeed":335.0,"armor":28.72,"armorperlevel":4.0,"spellblock":30.0,"spellblockperlevel":0.0,"attackrange":125.0,"hpregen":8.675,"hpregenperlevel":0.85,"mpregen":7.205,"mpregenperlevel":0.45,"crit":0.0,"critperlevel":0.0,"attackdamage":63.544,"attackdamageperlevel":3.3,"attackspeedoffset":-0.1,"attackspeedperlevel":2.125}},"MasterYi":{"version":"5.18.1","id":"MasterYi","key":"11","name":"Master Yi","title":"the Wuju Bladesman","blurb":"Through the ancient martial art of Wuju, Master Yi has tempered his body and sharpened his mind until thought and action have become one. Though he chooses to enter into violence as a last resort, the grace and speed with which he wields his blade ...","info":{"attack":10,"defense":4,"magic":2,"difficulty":4},"image":{"full":"MasterYi.png","sprite":"champion1.png","group":"champion","x":432,"y":96,"w":48,"h":48},"tags":["Assassin","Fighter"],"partype":"Mana","stats":{"hp":598.56,"hpperlevel":92.0,"mp":250.56,"mpperlevel":42.0,"movespeed":355.0,"armor":24.04,"armorperlevel":3.0,"spellblock":32.1,"spellblockperlevel":1.25,"attackrange":125.0,"hpregen":7.59,"hpregenperlevel":0.65,"mpregen":7.255,"mpregenperlevel":0.45,"crit":0.0,"critperlevel":0.0,"attackdamage":60.04,"attackdamageperlevel":3.0,"attackspeedoffset":-0.08,"attackspeedperlevel":2.0}},"MissFortune":{"version":"5.18.1","id":"MissFortune","key":"21","name":"Miss Fortune","title":"the Bounty Hunter","blurb":"For those who brave the harsh seas of Runeterra, attaining one's own ship and crew is the pinnacle of success. Sarah Fortune, a well-respected (some would say legendary) bounty hunter from Bilgewater, was able to achieve this feat just after her ...","info":{"attack":8,"defense":2,"magic":5,"difficulty":1},"image":{"full":"MissFortune.png","sprite":"champion2.png","group":"champion","x":0,"y":0,"w":48,"h":48},"tags":["Marksman"],"partype":"Mana","stats":{"hp":577.8,"hpperlevel":85.0,"mp":275.84,"mpperlevel":38.0,"movespeed":325.0,"armor":24.04,"armorperlevel":3.0,"spellblock":30.0,"spellblockperlevel":0.0,"attackrange":550.0,"hpregen":6.19,"hpregenperlevel":0.65,"mpregen":8.04,"mpregenperlevel":0.65,"crit":0.0,"critperlevel":0.0,"attackdamage":49.54,"attackdamageperlevel":3.0,"attackspeedoffset":-0.04734,"attackspeedperlevel":3.01}},"MonkeyKing":{"version":"5.18.1","id":"MonkeyKing","key":"62","name":"Wukong","title":"the Monkey King","blurb":"During the chaos of the Rune Wars, an enormous runestone was lost deep within the Plague Jungles. It remained there, untouched for centuries, emanating a potent magic which infused nearby wildlife with sentience and vitality. A group of monkeys who ...","info":{"attack":8,"defense":5,"magic":2,"difficulty":3},"image":{"full":"MonkeyKing.png","sprite":"champion2.png","group":"champion","x":48,"y":0,"w":48,"h":48},"tags":["Fighter","Tank"],"partype":"Mana","stats":{"hp":577.8,"hpperlevel":85.0,"mp":265.84,"mpperlevel":38.0,"movespeed":345.0,"armor":24.88,"armorperlevel":3.5,"spellblock":32.1,"spellblockperlevel":1.25,"attackrange":175.0,"hpregen":6.19,"hpregenperlevel":0.65,"mpregen":8.04,"mpregenperlevel":0.65,"crit":0.0,"critperlevel":0.0,"attackdamage":59.876,"attackdamageperlevel":3.2,"attackspeedoffset":-0.05,"attackspeedperlevel":3.0}},"Mordekaiser":{"version":"5.18.1","id":"Mordekaiser","key":"82","name":"Mordekaiser","title":"the Master of Metal","blurb":"The vicious wraith Mordekaiser is among the most terrifying and hateful of spirits that haunt the Shadow Isles. Entombed in ancient armor, the Master of Metal is said to be the first of the unliving, a revenant who existed even before the Shadow Isles ...","info":{"attack":4,"defense":6,"magic":7,"difficulty":7},"image":{"full":"Mordekaiser.png","sprite":"champion2.png","group":"champion","x":96,"y":0,"w":48,"h":48},"tags":["Fighter","Mage"],"partype":"None","stats":{"hp":525.0,"hpperlevel":73.0,"mp":0.0,"mpperlevel":0.0,"movespeed":325.0,"armor":20.0,"armorperlevel":3.75,"spellblock":32.1,"spellblockperlevel":1.25,"attackrange":200.0,"hpregen":4.0,"hpregenperlevel":0.3,"mpregen":0.0,"mpregenperlevel":0.0,"crit":0.0,"critperlevel":0.0,"attackdamage":61.0,"attackdamageperlevel":5.0,"attackspeedoffset":0.04,"attackspeedperlevel":2.2}},"Morgana":{"version":"5.18.1","id":"Morgana","key":"25","name":"Morgana","title":"Fallen Angel","blurb":"There is a world far away populated by graceful and beautiful winged beings gifted with immortality, where an ancient conflict still rages. Like so many conflicts, this war split families. One side proclaimed themselves as beings of perfect order and ...","info":{"attack":1,"defense":6,"magic":8,"difficulty":1},"image":{"full":"Morgana.png","sprite":"champion2.png","group":"champion","x":144,"y":0,"w":48,"h":48},"tags":["Mage","Support"],"partype":"Mana","stats":{"hp":547.48,"hpperlevel":86.0,"mp":340.8,"mpperlevel":60.0,"movespeed":335.0,"armor":25.384,"armorperlevel":3.8,"spellblock":30.0,"spellblockperlevel":0.0,"attackrange":450.0,"hpregen":5.705,"hpregenperlevel":0.6,"mpregen":6.0,"mpregenperlevel":0.8,"crit":0.0,"critperlevel":0.0,"attackdamage":55.46,"attackdamageperlevel":3.5,"attackspeedoffset":0.0,"attackspeedperlevel":1.53}},"Nami":{"version":"5.18.1","id":"Nami","key":"267","name":"Nami","title":"the Tidecaller","blurb":"Nami channels the primal energies of the ocean, harnessing its mystical restorative properties and commanding the raw power of the tides themselves. Though many doubted her, Nami had the bravery and determination to take on a dangerous quest when no ...","info":{"attack":4,"defense":3,"magic":7,"difficulty":5},"image":{"full":"Nami.png","sprite":"champion2.png","group":"champion","x":192,"y":0,"w":48,"h":48},"tags":["Support","Mage"],"partype":"Mana","stats":{"hp":489.32,"hpperlevel":74.0,"mp":377.24,"mpperlevel":43.0,"movespeed":335.0,"armor":19.72,"armorperlevel":4.0,"spellblock":30.0,"spellblockperlevel":0.0,"attackrange":550.0,"hpregen":5.42,"hpregenperlevel":0.55,"mpregen":9.0,"mpregenperlevel":0.4,"crit":0.0,"critperlevel":0.0,"attackdamage":51.208,"attackdamageperlevel":3.1,"attackspeedoffset":-0.03,"attackspeedperlevel":2.61}},"Nasus":{"version":"5.18.1","id":"Nasus","key":"75","name":"Nasus","title":"the Curator of the Sands","blurb":"To some, Nasus is a demigod who walks among the ruins of an ancient civilization; to others, he is nothing more than a myth. Legend speaks of his dominion over death and time. Millennia ago, he stood at the apex of Shuriman society as curator and ...","info":{"attack":7,"defense":5,"magic":6,"difficulty":6},"image":{"full":"Nasus.png","sprite":"champion2.png","group":"champion","x":240,"y":0,"w":48,"h":48},"tags":["Fighter","Tank"],"partype":"Mana","stats":{"hp":561.2,"hpperlevel":90.0,"mp":275.6,"mpperlevel":45.0,"movespeed":350.0,"armor":24.88,"armorperlevel":3.5,"spellblock":32.1,"spellblockperlevel":1.25,"attackrange":125.0,"hpregen":9.01,"hpregenperlevel":0.9,"mpregen":7.44,"mpregenperlevel":0.5,"crit":0.0,"critperlevel":0.0,"attackdamage":59.18,"attackdamageperlevel":3.5,"attackspeedoffset":-0.02,"attackspeedperlevel":3.48}},"Nautilus":{"version":"5.18.1","id":"Nautilus","key":"111","name":"Nautilus","title":"the Titan of the Depths","blurb":"Once, Nautilus was a sailor commissioned by the Institute of War to explore the uncharted reaches of the Guardian's Sea. This expedition took him deep into unknown waters where he and his crew found a vast section of black oozing liquid that none of ...","info":{"attack":4,"defense":6,"magic":6,"difficulty":6},"image":{"full":"Nautilus.png","sprite":"champion2.png","group":"champion","x":288,"y":0,"w":48,"h":48},"tags":["Tank","Fighter"],"partype":"Mana","stats":{"hp":576.48,"hpperlevel":86.0,"mp":284.0,"mpperlevel":50.0,"movespeed":325.0,"armor":26.46,"armorperlevel":3.75,"spellblock":32.1,"spellblockperlevel":1.25,"attackrange":175.0,"hpregen":8.37,"hpregenperlevel":0.55,"mpregen":8.625,"mpregenperlevel":0.7,"crit":0.0,"critperlevel":0.0,"attackdamage":57.544,"attackdamageperlevel":3.3,"attackspeedoffset":0.02,"attackspeedperlevel":1.0}},"Nidalee":{"version":"5.18.1","id":"Nidalee","key":"76","name":"Nidalee","title":"the Bestial Huntress","blurb":"There are few dwellers, let alone champions, residing in the blasted and dangerous lands that lie south of the Great Barrier. Much of that world still bears the scars of past Runes Wars, especially the mysterious Kumungu Jungle. There are ...","info":{"attack":5,"defense":4,"magic":7,"difficulty":8},"image":{"full":"Nidalee.png","sprite":"champion2.png","group":"champion","x":336,"y":0,"w":48,"h":48},"tags":["Assassin","Fighter"],"partype":"Mana","stats":{"hp":511.2,"hpperlevel":80.0,"mp":295.6,"mpperlevel":45.0,"movespeed":335.0,"armor":22.88,"armorperlevel":3.5,"spellblock":30.0,"spellblockperlevel":0.0,"attackrange":525.0,"hpregen":6.005,"hpregenperlevel":0.6,"mpregen":6.0,"mpregenperlevel":0.8,"crit":0.0,"critperlevel":0.0,"attackdamage":47.88,"attackdamageperlevel":3.5,"attackspeedoffset":-0.02,"attackspeedperlevel":3.22}},"Nocturne":{"version":"5.18.1","id":"Nocturne","key":"56","name":"Nocturne","title":"the Eternal Nightmare","blurb":"Before Nocturne, people believed that dreams were figments of their imagination, meaningless images that flashed through the mind when one slept. This belief was put to the test when a rash of sleep-related incidents started afflicting summoners of ...","info":{"attack":9,"defense":5,"magic":2,"difficulty":4},"image":{"full":"Nocturne.png","sprite":"champion2.png","group":"champion","x":384,"y":0,"w":48,"h":48},"tags":["Assassin","Fighter"],"partype":"Mana","stats":{"hp":582.8,"hpperlevel":85.0,"mp":273.8,"mpperlevel":35.0,"movespeed":345.0,"armor":26.88,"armorperlevel":3.5,"spellblock":32.1,"spellblockperlevel":1.25,"attackrange":125.0,"hpregen":8.26,"hpregenperlevel":0.75,"mpregen":6.755,"mpregenperlevel":0.45,"crit":0.0,"critperlevel":0.0,"attackdamage":59.208,"attackdamageperlevel":3.1,"attackspeedoffset":-0.065,"attackspeedperlevel":2.7}},"Nunu":{"version":"5.18.1","id":"Nunu","key":"20","name":"Nunu","title":"the Yeti Rider","blurb":"Sometimes bonds of friendship become stronger than even bonds of blood. When those bonds link a fearless boy to a fearsome Yeti, the bond becomes a force to be reckoned with. Given the responsibility of taming a terrifying beast, Nunu forged a ...","info":{"attack":4,"defense":6,"magic":7,"difficulty":4},"image":{"full":"Nunu.png","sprite":"champion2.png","group":"champion","x":432,"y":0,"w":48,"h":48},"tags":["Support","Fighter"],"partype":"Mana","stats":{"hp":598.28,"hpperlevel":90.0,"mp":283.56,"mpperlevel":42.0,"movespeed":350.0,"armor":26.38,"armorperlevel":3.5,"spellblock":32.1,"spellblockperlevel":1.25,"attackrange":125.0,"hpregen":8.39,"hpregenperlevel":0.8,"mpregen":7.44,"mpregenperlevel":0.5,"crit":0.0,"critperlevel":0.0,"attackdamage":56.856,"attackdamageperlevel":3.45,"attackspeedoffset":0.0,"attackspeedperlevel":2.25}},"Olaf":{"version":"5.18.1","id":"Olaf","key":"2","name":"Olaf","title":"the Berserker","blurb":"Most men would say that death is a thing to be feared; none of those men would be Olaf. The Berserker lives only for the roar of a battle cry and the clash of steel. Spurred on by his hunger for glory and the looming curse of a forgettable death, Olaf ...","info":{"attack":9,"defense":5,"magic":3,"difficulty":3},"image":{"full":"Olaf.png","sprite":"champion2.png","group":"champion","x":0,"y":48,"w":48,"h":48},"tags":["Fighter","Tank"],"partype":"Mana","stats":{"hp":597.24,"hpperlevel":93.0,"mp":265.6,"mpperlevel":45.0,"movespeed":350.0,"armor":26.04,"armorperlevel":3.0,"spellblock":32.1,"spellblockperlevel":1.25,"attackrange":125.0,"hpregen":8.51,"hpregenperlevel":0.9,"mpregen":7.465,"mpregenperlevel":0.575,"crit":0.0,"critperlevel":0.0,"attackdamage":59.98,"attackdamageperlevel":3.5,"attackspeedoffset":-0.1,"attackspeedperlevel":2.7}},"Orianna":{"version":"5.18.1","id":"Orianna","key":"61","name":"Orianna","title":"the Lady of Clockwork","blurb":"There once was a Piltovian man named Corin Reveck who had a daughter named Orianna, whom he loved more than anything else in the world. Though Orianna had incredible talent for dancing, she was deeply fascinated by the champions of the League of ...","info":{"attack":4,"defense":3,"magic":9,"difficulty":7},"image":{"full":"Orianna.png","sprite":"champion2.png","group":"champion","x":48,"y":48,"w":48,"h":48},"tags":["Mage","Support"],"partype":"Mana","stats":{"hp":517.72,"hpperlevel":79.0,"mp":334.0,"mpperlevel":50.0,"movespeed":325.0,"armor":17.04,"armorperlevel":3.0,"spellblock":30.0,"spellblockperlevel":0.0,"attackrange":525.0,"hpregen":6.87,"hpregenperlevel":0.55,"mpregen":6.0,"mpregenperlevel":0.8,"crit":0.0,"critperlevel":0.0,"attackdamage":40.368,"attackdamageperlevel":2.6,"attackspeedoffset":-0.05,"attackspeedperlevel":3.5}},"Pantheon":{"version":"5.18.1","id":"Pantheon","key":"80","name":"Pantheon","title":"the Artisan of War","blurb":"Far above the clouds on Mount Targon resides a stalwart tribe of people known as the Rakkor who still revere combat and war as ultimate artforms. They remember the Rune Wars of Runeterra and know that the League of Legends can only repress the rising ...","info":{"attack":9,"defense":4,"magic":3,"difficulty":4},"image":{"full":"Pantheon.png","sprite":"champion2.png","group":"champion","x":96,"y":48,"w":48,"h":48},"tags":["Fighter","Assassin"],"partype":"Mana","stats":{"hp":579.16,"hpperlevel":87.0,"mp":267.12,"mpperlevel":34.0,"movespeed":355.0,"armor":27.652,"armorperlevel":3.9,"spellblock":32.1,"spellblockperlevel":1.25,"attackrange":150.0,"hpregen":7.84,"hpregenperlevel":0.65,"mpregen":7.355,"mpregenperlevel":0.45,"crit":0.0,"critperlevel":0.0,"attackdamage":55.572,"attackdamageperlevel":2.9,"attackspeedoffset":-0.03,"attackspeedperlevel":2.95}},"Poppy":{"version":"5.18.1","id":"Poppy","key":"78","name":"Poppy","title":"the Iron Ambassador","blurb":"While other young yordle girls played skip-step and braided wreathes out of posies, Poppy spent her youth earning calluses and grease stains in her father's armor shop. Blomgrun, her father, was Bandle City's finest smith. The only thing he loved as ...","info":{"attack":6,"defense":6,"magic":5,"difficulty":7},"image":{"full":"Poppy.png","sprite":"champion2.png","group":"champion","x":144,"y":48,"w":48,"h":48},"tags":["Fighter","Assassin"],"partype":"Mana","stats":{"hp":559.08,"hpperlevel":81.0,"mp":235.4,"mpperlevel":30.0,"movespeed":345.0,"armor":28.72,"armorperlevel":4.0,"spellblock":30.0,"spellblockperlevel":0.0,"attackrange":125.0,"hpregen":8.37,"hpregenperlevel":0.55,"mpregen":7.155,"mpregenperlevel":0.45,"crit":0.0,"critperlevel":0.0,"attackdamage":61.97,"attackdamageperlevel":3.375,"attackspeedoffset":-0.02,"attackspeedperlevel":3.35}},"Quinn":{"version":"5.18.1","id":"Quinn","key":"133","name":"Quinn","title":"Demacia's Wings","blurb":"Quinn and Valor are an elite ranger team. With crossbow and claw, they undertake their nation's most dangerous missions deep within enemy territory, from swift reconnaissance to lethal strikes. The pair's unbreakable bond is deadly on the battlefield, ...","info":{"attack":9,"defense":4,"magic":2,"difficulty":5},"image":{"full":"Quinn.png","sprite":"champion2.png","group":"champion","x":192,"y":48,"w":48,"h":48},"tags":["Marksman","Fighter"],"partype":"Mana","stats":{"hp":532.8,"hpperlevel":85.0,"mp":268.8,"mpperlevel":35.0,"movespeed":335.0,"armor":23.38,"armorperlevel":3.5,"spellblock":30.0,"spellblockperlevel":0.0,"attackrange":525.0,"hpregen":5.42,"hpregenperlevel":0.55,"mpregen":6.97,"mpregenperlevel":0.4,"crit":0.0,"critperlevel":0.0,"attackdamage":51.04,"attackdamageperlevel":3.0,"attackspeedoffset":-0.065,"attackspeedperlevel":3.1}},"Rammus":{"version":"5.18.1","id":"Rammus","key":"33","name":"Rammus","title":"the Armordillo","blurb":"The mysteries that surround Rammus are numerous. How did a simple creature of the desert suddenly become able to reason? How did he craft his vaunted suit of armor? What is he searching for as he crosses the Shuriman desert? One thing is for certain: ...","info":{"attack":4,"defense":10,"magic":5,"difficulty":5},"image":{"full":"Rammus.png","sprite":"champion2.png","group":"champion","x":240,"y":48,"w":48,"h":48},"tags":["Tank","Fighter"],"partype":"Mana","stats":{"hp":564.48,"hpperlevel":86.0,"mp":310.44,"mpperlevel":33.0,"movespeed":335.0,"armor":31.384,"armorperlevel":4.3,"spellblock":32.1,"spellblockperlevel":1.25,"attackrange":125.0,"hpregen":7.92,"hpregenperlevel":0.55,"mpregen":7.84,"mpregenperlevel":0.5,"crit":0.0,"critperlevel":0.0,"attackdamage":55.88,"attackdamageperlevel":3.5,"attackspeedoffset":0.0,"attackspeedperlevel":2.215}},"RekSai":{"version":"5.18.1","id":"RekSai","key":"421","name":"Rek'Sai","title":"the Void Burrower","blurb":"The largest and fiercest of her species, Rek'Sai is a merciless predator that tunnels through the earth to ambush and devour her prey. Her insatiable hunger has laid waste to entire regions of the once-great Shuriman empire. Merchants, traders and ...","info":{"attack":8,"defense":5,"magic":2,"difficulty":3},"image":{"full":"RekSai.png","sprite":"champion2.png","group":"champion","x":288,"y":48,"w":48,"h":48},"tags":["Fighter"],"partype":"Battlefury","stats":{"hp":570.0,"hpperlevel":90.0,"mp":100.0,"mpperlevel":0.0,"movespeed":335.0,"armor":28.3,"armorperlevel":3.75,"spellblock":32.1,"spellblockperlevel":1.25,"attackrange":175.0,"hpregen":7.34,"hpregenperlevel":0.65,"mpregen":0.0,"mpregenperlevel":0.0,"crit":0.0,"critperlevel":0.0,"attackdamage":55.628,"attackdamageperlevel":3.35,"attackspeedoffset":0.0,"attackspeedperlevel":2.0}},"Renekton":{"version":"5.18.1","id":"Renekton","key":"58","name":"Renekton","title":"the Butcher of the Sands","blurb":"Renekton was once a staunch gatekeeper of ancient Shurima, but in the centuries since the fall of that once-glorious empire, he has been consumed by madness. Now, he is little more than a rage-fueled beast who seeks to kill his brother Nasus, who he ...","info":{"attack":8,"defense":5,"magic":2,"difficulty":3},"image":{"full":"Renekton.png","sprite":"champion2.png","group":"champion","x":336,"y":48,"w":48,"h":48},"tags":["Fighter","Tank"],"partype":"Rage","stats":{"hp":572.16,"hpperlevel":87.0,"mp":100.0,"mpperlevel":0.0,"movespeed":345.0,"armor":25.584,"armorperlevel":3.8,"spellblock":32.1,"spellblockperlevel":1.25,"attackrange":125.0,"hpregen":7.96,"hpregenperlevel":0.75,"mpregen":0.0,"mpregenperlevel":0.0,"crit":0.0,"critperlevel":0.0,"attackdamage":58.328,"attackdamageperlevel":3.1,"attackspeedoffset":-0.06,"attackspeedperlevel":2.65}},"Rengar":{"version":"5.18.1","id":"Rengar","key":"107","name":"Rengar","title":"the Pridestalker","blurb":"On every wall of his den, the trophy hunter Rengar mounts the heads, horns, claws, and fangs of the most lethal creatures in Valoran. Though his collection is extensive, he remains unsatisfied, tirelessly seeking greater game. He takes time with every ...","info":{"attack":7,"defense":4,"magic":2,"difficulty":8},"image":{"full":"Rengar.png","sprite":"champion2.png","group":"champion","x":384,"y":48,"w":48,"h":48},"tags":["Assassin","Fighter"],"partype":"Ferocity","stats":{"hp":586.2,"hpperlevel":90.0,"mp":5.0,"mpperlevel":0.0,"movespeed":345.0,"armor":25.88,"armorperlevel":3.5,"spellblock":32.1,"spellblockperlevel":1.25,"attackrange":125.0,"hpregen":4.27,"hpregenperlevel":0.4,"mpregen":0.0,"mpregenperlevel":0.0,"crit":0.0,"critperlevel":0.0,"attackdamage":60.04,"attackdamageperlevel":3.0,"attackspeedoffset":-0.08,"attackspeedperlevel":2.85}},"Riven":{"version":"5.18.1","id":"Riven","key":"92","name":"Riven","title":"the Exile","blurb":"In Noxus, any citizen may rise to power regardless of race, gender, or social standing - strength is all that matters. It was with committed faith in this ideal that Riven strove to greatness. She showed early potential as a soldier, forcing herself ...","info":{"attack":8,"defense":5,"magic":1,"difficulty":8},"image":{"full":"Riven.png","sprite":"champion2.png","group":"champion","x":432,"y":48,"w":48,"h":48},"tags":["Fighter","Assassin"],"partype":"None","stats":{"hp":558.48,"hpperlevel":86.0,"mp":0.0,"mpperlevel":0.0,"movespeed":340.0,"armor":24.376,"armorperlevel":3.2,"spellblock":32.1,"spellblockperlevel":1.25,"attackrange":125.0,"hpregen":3.34,"hpregenperlevel":0.5,"mpregen":0.0,"mpregenperlevel":0.0,"crit":0.0,"critperlevel":0.0,"attackdamage":56.04,"attackdamageperlevel":3.0,"attackspeedoffset":0.0,"attackspeedperlevel":3.5}},"Rumble":{"version":"5.18.1","id":"Rumble","key":"68","name":"Rumble","title":"the Mechanized Menace","blurb":"Even amongst yordles, Rumble was always the runt of the litter. As such, he was used to being bullied. In order to survive, he had to be scrappier and more resourceful than his peers. He developed a quick temper and a reputation for getting even, no ...","info":{"attack":3,"defense":6,"magic":8,"difficulty":10},"image":{"full":"Rumble.png","sprite":"champion2.png","group":"champion","x":0,"y":96,"w":48,"h":48},"tags":["Fighter","Mage"],"partype":"Heat","stats":{"hp":584.4,"hpperlevel":80.0,"mp":100.0,"mpperlevel":0.0,"movespeed":345.0,"armor":25.88,"armorperlevel":3.5,"spellblock":32.1,"spellblockperlevel":1.25,"attackrange":125.0,"hpregen":8.005,"hpregenperlevel":0.6,"mpregen":0.0,"mpregenperlevel":0.0,"crit":0.0,"critperlevel":0.0,"attackdamage":61.036,"attackdamageperlevel":3.2,"attackspeedoffset":-0.03,"attackspeedperlevel":1.85}},"Ryze":{"version":"5.18.1","id":"Ryze","key":"13","name":"Ryze","title":"the Rogue Mage","blurb":"There are many on Runeterra who are attracted to the study of magic or, in recent times, the emerging field of techmaturgy. For most, pursuit of such knowledge is formalized in a college or university. The halls of traditional study were never for ...","info":{"attack":2,"defense":2,"magic":10,"difficulty":7},"image":{"full":"Ryze.png","sprite":"champion2.png","group":"champion","x":48,"y":96,"w":48,"h":48},"tags":["Mage","Fighter"],"partype":"Mana","stats":{"hp":558.48,"hpperlevel":86.0,"mp":342.4,"mpperlevel":55.0,"movespeed":340.0,"armor":21.552,"armorperlevel":3.0,"spellblock":30.0,"spellblockperlevel":0.0,"attackrange":550.0,"hpregen":5.27,"hpregenperlevel":0.55,"mpregen":5.0,"mpregenperlevel":1.0,"crit":0.0,"critperlevel":0.0,"attackdamage":55.04,"attackdamageperlevel":3.0,"attackspeedoffset":0.0,"attackspeedperlevel":2.112}},"Sejuani":{"version":"5.18.1","id":"Sejuani","key":"113","name":"Sejuani","title":"the Winter's Wrath","blurb":"Sejuani was weaned on hardship and reared on barbarity. Where others succumbed to the harshness of the Freljord, she was tempered by it until pain became power, hunger an encouragement, and frost an ally in culling the weak. Through her ordeals, she ...","info":{"attack":5,"defense":7,"magic":6,"difficulty":4},"image":{"full":"Sejuani.png","sprite":"champion2.png","group":"champion","x":96,"y":96,"w":48,"h":48},"tags":["Tank","Fighter"],"partype":"Mana","stats":{"hp":600.0,"hpperlevel":95.0,"mp":400.0,"mpperlevel":40.0,"movespeed":340.0,"armor":29.54,"armorperlevel":3.0,"spellblock":32.1,"spellblockperlevel":1.25,"attackrange":125.0,"hpregen":8.675,"hpregenperlevel":0.85,"mpregen":7.205,"mpregenperlevel":0.45,"crit":0.0,"critperlevel":0.0,"attackdamage":57.544,"attackdamageperlevel":3.3,"attackspeedoffset":-0.0672,"attackspeedperlevel":1.44}},"Shaco":{"version":"5.18.1","id":"Shaco","key":"35","name":"Shaco","title":"the Demon Jester","blurb":"Most would say that death isn't funny. It isn't, unless you're Shaco - then it's hysterical. He is Valoran's first fully functioning homicidal comic; he jests until someone dies, and then he laughs. The figure that has come to be known as the Demon ...","info":{"attack":8,"defense":4,"magic":6,"difficulty":9},"image":{"full":"Shaco.png","sprite":"champion2.png","group":"champion","x":144,"y":96,"w":48,"h":48},"tags":["Assassin"],"partype":"Mana","stats":{"hp":582.12,"hpperlevel":84.0,"mp":297.2,"mpperlevel":40.0,"movespeed":350.0,"armor":24.88,"armorperlevel":3.5,"spellblock":32.1,"spellblockperlevel":1.25,"attackrange":125.0,"hpregen":8.37,"hpregenperlevel":0.55,"mpregen":7.155,"mpregenperlevel":0.45,"crit":0.0,"critperlevel":0.0,"attackdamage":57.58,"attackdamageperlevel":3.5,"attackspeedoffset":-0.1,"attackspeedperlevel":3.0}},"Shen":{"version":"5.18.1","id":"Shen","key":"98","name":"Shen","title":"Eye of Twilight","blurb":"There exists an ancient order originating in the Ionian Isles dedicated to the preservation of balance. Order, chaos, light, darkness - all things must exist in perfect harmony for such is the way of the universe. This order is known as the Kinkou and ...","info":{"attack":3,"defense":9,"magic":3,"difficulty":4},"image":{"full":"Shen.png","sprite":"champion2.png","group":"champion","x":192,"y":96,"w":48,"h":48},"tags":["Tank","Fighter"],"partype":"Energy","stats":{"hp":570.8,"hpperlevel":85.0,"mp":200.0,"mpperlevel":0.0,"movespeed":335.0,"armor":25.72,"armorperlevel":4.0,"spellblock":32.1,"spellblockperlevel":1.25,"attackrange":125.0,"hpregen":8.37,"hpregenperlevel":0.55,"mpregen":50.0,"mpregenperlevel":0.0,"crit":0.0,"critperlevel":0.0,"attackdamage":60.17,"attackdamageperlevel":3.375,"attackspeedoffset":-0.04,"attackspeedperlevel":3.4}},"Shyvana":{"version":"5.18.1","id":"Shyvana","key":"102","name":"Shyvana","title":"the Half-Dragon","blurb":"A half-breed born from the union between dragon and human, Shyvana searched all her life for belonging. Persecution forged her into a brutal warrior, and those who dare stand against Shyvana face the fiery beast lurking just beneath her skin....","info":{"attack":8,"defense":6,"magic":3,"difficulty":4},"image":{"full":"Shyvana.png","sprite":"champion2.png","group":"champion","x":240,"y":96,"w":48,"h":48},"tags":["Fighter","Tank"],"partype":"Dragonfury","stats":{"hp":594.6,"hpperlevel":95.0,"mp":100.0,"mpperlevel":0.0,"movespeed":350.0,"armor":27.628,"armorperlevel":3.35,"spellblock":32.1,"spellblockperlevel":1.25,"attackrange":125.0,"hpregen":8.59,"hpregenperlevel":0.8,"mpregen":0.0,"mpregenperlevel":0.0,"crit":0.0,"critperlevel":0.0,"attackdamage":60.712,"attackdamageperlevel":3.4,"attackspeedoffset":-0.05,"attackspeedperlevel":2.5}},"Singed":{"version":"5.18.1","id":"Singed","key":"27","name":"Singed","title":"the Mad Chemist","blurb":"Singed descended from a long line of Zaun's revered chemists. Even in his youth, his talent for concocting potions far outstripped that of his peers, and he quickly distinguished himself from his less extraordinary chemist compatriots. It came as no ...","info":{"attack":4,"defense":8,"magic":7,"difficulty":5},"image":{"full":"Singed.png","sprite":"champion2.png","group":"champion","x":288,"y":96,"w":48,"h":48},"tags":["Tank","Fighter"],"partype":"Mana","stats":{"hp":542.76,"hpperlevel":82.0,"mp":290.6,"mpperlevel":45.0,"movespeed":345.0,"armor":27.88,"armorperlevel":3.5,"spellblock":32.1,"spellblockperlevel":1.25,"attackrange":125.0,"hpregen":8.02,"hpregenperlevel":0.55,"mpregen":7.52,"mpregenperlevel":0.55,"crit":0.0,"critperlevel":0.0,"attackdamage":62.32,"attackdamageperlevel":3.375,"attackspeedoffset":0.02,"attackspeedperlevel":1.81}},"Sion":{"version":"5.18.1","id":"Sion","key":"14","name":"Sion","title":"The Undead Juggernaut","blurb":"BLOOD.

SMELL IT.

WANT. ACHING. NEED!

CLOSE NOW. THEY COME.

NO CHAINS? FREE! KILL!

IN REACH. YES! DIE! DIE!

Gone. Too quick. No fight. More. I want... more.

A voice? Unfamiliar. I see him. The Grand ...","info":{"attack":5,"defense":9,"magic":3,"difficulty":5},"image":{"full":"Sion.png","sprite":"champion2.png","group":"champion","x":336,"y":96,"w":48,"h":48},"tags":["Tank","Fighter"],"partype":"Mana","stats":{"hp":542.64,"hpperlevel":73.0,"mp":275.6,"mpperlevel":45.0,"movespeed":345.0,"armor":23.04,"armorperlevel":3.0,"spellblock":32.1,"spellblockperlevel":1.25,"attackrange":150.0,"hpregen":10.18,"hpregenperlevel":0.8,"mpregen":8.005,"mpregenperlevel":0.6,"crit":0.0,"critperlevel":0.0,"attackdamage":59.72,"attackdamageperlevel":4.0,"attackspeedoffset":-0.08,"attackspeedperlevel":1.3}},"Sivir":{"version":"5.18.1","id":"Sivir","key":"15","name":"Sivir","title":"the Battle Mistress","blurb":"Known as the Battle Mistress, Sivir is a mercenary with a ruthless reputation. Combining unflinching bravery with endless ambition, she has garnered great fame and fortune. Faced with the revelation of her mysterious heritage, Sivir must weigh her ...","info":{"attack":9,"defense":3,"magic":1,"difficulty":4},"image":{"full":"Sivir.png","sprite":"champion2.png","group":"champion","x":384,"y":96,"w":48,"h":48},"tags":["Marksman"],"partype":"Mana","stats":{"hp":515.76,"hpperlevel":82.0,"mp":284.0,"mpperlevel":50.0,"movespeed":335.0,"armor":22.21,"armorperlevel":3.25,"spellblock":30.0,"spellblockperlevel":0.0,"attackrange":500.0,"hpregen":5.17,"hpregenperlevel":0.55,"mpregen":8.01,"mpregenperlevel":0.9,"crit":0.0,"critperlevel":0.0,"attackdamage":52.04,"attackdamageperlevel":3.0,"attackspeedoffset":-0.05,"attackspeedperlevel":1.6}},"Skarner":{"version":"5.18.1","id":"Skarner","key":"72","name":"Skarner","title":"the Crystal Vanguard","blurb":"Skarner, the crystalline guardian, defends the entrance to a realm deep beneath the Shuriman wastes. The few who survive trespassing his domain describe a creature of terrifying intelligence, anger, and precision. What this merciless creature protects,...","info":{"attack":7,"defense":6,"magic":5,"difficulty":5},"image":{"full":"Skarner.png","sprite":"champion2.png","group":"champion","x":432,"y":96,"w":48,"h":48},"tags":["Fighter","Tank"],"partype":"Mana","stats":{"hp":601.28,"hpperlevel":90.0,"mp":272.2,"mpperlevel":40.0,"movespeed":335.0,"armor":29.384,"armorperlevel":3.8,"spellblock":32.1,"spellblockperlevel":1.25,"attackrange":125.0,"hpregen":8.925,"hpregenperlevel":0.85,"mpregen":7.205,"mpregenperlevel":0.45,"crit":0.0,"critperlevel":0.0,"attackdamage":57.156,"attackdamageperlevel":4.5,"attackspeedoffset":0.0,"attackspeedperlevel":2.1}},"Sona":{"version":"5.18.1","id":"Sona","key":"37","name":"Sona","title":"Maven of the Strings","blurb":"Sona has no memories of her true parents. As an infant, she was found abandoned on the doorstep of an Ionian adoption house, nestled atop an ancient instrument in an exquisite case of unknown origins. She was an unusually well-behaved child, always ...","info":{"attack":5,"defense":2,"magic":8,"difficulty":4},"image":{"full":"Sona.png","sprite":"champion3.png","group":"champion","x":0,"y":0,"w":48,"h":48},"tags":["Support","Mage"],"partype":"Mana","stats":{"hp":482.36,"hpperlevel":77.0,"mp":340.6,"mpperlevel":45.0,"movespeed":325.0,"armor":20.544,"armorperlevel":3.3,"spellblock":30.0,"spellblockperlevel":0.0,"attackrange":550.0,"hpregen":5.42,"hpregenperlevel":0.55,"mpregen":9.0,"mpregenperlevel":0.4,"crit":0.0,"critperlevel":0.0,"attackdamage":50.04,"attackdamageperlevel":3.0,"attackspeedoffset":-0.03,"attackspeedperlevel":2.3}},"Soraka":{"version":"5.18.1","id":"Soraka","key":"16","name":"Soraka","title":"the Starchild","blurb":"A healer gifted with the magic of the stars, Soraka holds all living creatures close to her heart. She was once a celestial being, but she sacrificed her immortality and entered the world of mortals. So long as evil threatens life in Valoran, Soraka ...","info":{"attack":2,"defense":5,"magic":7,"difficulty":3},"image":{"full":"Soraka.png","sprite":"champion3.png","group":"champion","x":48,"y":0,"w":48,"h":48},"tags":["Support","Mage"],"partype":"Mana","stats":{"hp":529.04,"hpperlevel":78.0,"mp":350.8,"mpperlevel":60.0,"movespeed":325.0,"armor":23.384,"armorperlevel":3.8,"spellblock":30.0,"spellblockperlevel":0.0,"attackrange":550.0,"hpregen":2.5,"hpregenperlevel":0.5,"mpregen":9.0,"mpregenperlevel":0.4,"crit":0.0,"critperlevel":0.0,"attackdamage":50.04,"attackdamageperlevel":3.0,"attackspeedoffset":0.0,"attackspeedperlevel":2.14}},"Swain":{"version":"5.18.1","id":"Swain","key":"50","name":"Swain","title":"the Master Tactician","blurb":"The earliest account of Swain's existence comes from a Noxian infirmary doctor's notes. According to them, Swain limped into the ward without cry or complaint; his right leg was snapped in half, with bone protruding from the skin. A small, scowling ...","info":{"attack":2,"defense":6,"magic":9,"difficulty":8},"image":{"full":"Swain.png","sprite":"champion3.png","group":"champion","x":96,"y":0,"w":48,"h":48},"tags":["Mage","Fighter"],"partype":"Mana","stats":{"hp":516.04,"hpperlevel":78.0,"mp":324.0,"mpperlevel":50.0,"movespeed":335.0,"armor":22.72,"armorperlevel":4.0,"spellblock":30.0,"spellblockperlevel":0.0,"attackrange":500.0,"hpregen":7.84,"hpregenperlevel":0.65,"mpregen":6.0,"mpregenperlevel":0.8,"crit":0.0,"critperlevel":0.0,"attackdamage":52.04,"attackdamageperlevel":3.0,"attackspeedoffset":0.0,"attackspeedperlevel":2.11}},"Syndra":{"version":"5.18.1","id":"Syndra","key":"134","name":"Syndra","title":"the Dark Sovereign","blurb":"Born with immense magical potential, Syndra loves nothing more than exercising the incredible power at her command. With each passing day, her mastery of magical force grows more potent and devastating. Refusing any notion of balance or restraint, ...","info":{"attack":2,"defense":3,"magic":9,"difficulty":8},"image":{"full":"Syndra.png","sprite":"champion3.png","group":"champion","x":144,"y":0,"w":48,"h":48},"tags":["Mage","Support"],"partype":"Mana","stats":{"hp":511.04,"hpperlevel":78.0,"mp":334.0,"mpperlevel":63.0,"movespeed":330.0,"armor":24.712,"armorperlevel":3.4,"spellblock":30.0,"spellblockperlevel":0.0,"attackrange":550.0,"hpregen":6.505,"hpregenperlevel":0.6,"mpregen":6.0,"mpregenperlevel":0.8,"crit":0.0,"critperlevel":0.0,"attackdamage":53.872,"attackdamageperlevel":2.9,"attackspeedoffset":0.0,"attackspeedperlevel":2.0}},"TahmKench":{"version":"5.18.1","id":"TahmKench","key":"223","name":"Tahm Kench","title":"the River King","blurb":"''The whole world's a river, and I'm its king.''
Tahm Kench travels Runeterra's waterways, feeding his insatiable appetite with the misery of the unsuspecting. The singularly charming gourmand savors every moment of his victims' suffering. A deal ...","info":{"attack":3,"defense":9,"magic":6,"difficulty":5},"image":{"full":"TahmKench.png","sprite":"champion4.png","group":"champion","x":240,"y":0,"w":48,"h":48},"tags":["Support","Tank"],"partype":"Mana","stats":{"hp":610.0,"hpperlevel":95.0,"mp":325.0,"mpperlevel":40.0,"movespeed":335.0,"armor":27.0,"armorperlevel":3.5,"spellblock":32.1,"spellblockperlevel":1.25,"attackrange":200.0,"hpregen":6.5,"hpregenperlevel":0.55,"mpregen":5.5,"mpregenperlevel":1.0,"crit":0.0,"critperlevel":0.0,"attackdamage":56.0,"attackdamageperlevel":3.2,"attackspeedoffset":0.0,"attackspeedperlevel":2.5}},"Talon":{"version":"5.18.1","id":"Talon","key":"91","name":"Talon","title":"the Blade's Shadow","blurb":"Talon's earliest memories are the darkness of Noxus' underground passages and the reassuring steel of a blade. He remembers no family, warmth, or kindness. Instead, the clink of stolen gold and the security of a wall at his back are all the kinship he ...","info":{"attack":9,"defense":3,"magic":1,"difficulty":7},"image":{"full":"Talon.png","sprite":"champion3.png","group":"champion","x":192,"y":0,"w":48,"h":48},"tags":["Assassin","Fighter"],"partype":"Mana","stats":{"hp":582.8,"hpperlevel":85.0,"mp":327.2,"mpperlevel":40.0,"movespeed":350.0,"armor":26.88,"armorperlevel":3.5,"spellblock":32.1,"spellblockperlevel":1.25,"attackrange":125.0,"hpregen":8.51,"hpregenperlevel":0.75,"mpregen":7.59,"mpregenperlevel":0.5,"crit":0.0,"critperlevel":0.0,"attackdamage":55.208,"attackdamageperlevel":3.1,"attackspeedoffset":-0.065,"attackspeedperlevel":2.7}},"Taric":{"version":"5.18.1","id":"Taric","key":"44","name":"Taric","title":"the Gem Knight","blurb":"There is a form of magic unknown to many Runeterrans and discredited by the few who are even aware of its existence. It is the magic of the earth, drawing power from the resonance of crystals and gems. Taric, the Gem Knight, is Runeterra's sole ...","info":{"attack":4,"defense":8,"magic":5,"difficulty":5},"image":{"full":"Taric.png","sprite":"champion3.png","group":"champion","x":240,"y":0,"w":48,"h":48},"tags":["Support","Fighter"],"partype":"Mana","stats":{"hp":619.2,"hpperlevel":90.0,"mp":349.08,"mpperlevel":56.0,"movespeed":340.0,"armor":25.876,"armorperlevel":3.7,"spellblock":32.1,"spellblockperlevel":1.25,"attackrange":125.0,"hpregen":7.94,"hpregenperlevel":0.5,"mpregen":6.0,"mpregenperlevel":0.8,"crit":0.0,"critperlevel":0.0,"attackdamage":57.88,"attackdamageperlevel":3.5,"attackspeedoffset":0.0,"attackspeedperlevel":2.02}},"Teemo":{"version":"5.18.1","id":"Teemo","key":"17","name":"Teemo","title":"the Swift Scout","blurb":"Teemo is a legend among his yordle brothers and sisters in Bandle City. As far as yordles are concerned, there is something just slightly off about him. While Teemo enjoys the companionship of other yordles, he also insists on frequent solo missions ...","info":{"attack":5,"defense":3,"magic":7,"difficulty":6},"image":{"full":"Teemo.png","sprite":"champion3.png","group":"champion","x":288,"y":0,"w":48,"h":48},"tags":["Marksman","Assassin"],"partype":"Mana","stats":{"hp":515.76,"hpperlevel":82.0,"mp":267.2,"mpperlevel":40.0,"movespeed":330.0,"armor":24.3,"armorperlevel":3.75,"spellblock":30.0,"spellblockperlevel":0.0,"attackrange":500.0,"hpregen":5.74,"hpregenperlevel":0.65,"mpregen":7.205,"mpregenperlevel":0.45,"crit":0.0,"critperlevel":0.0,"attackdamage":47.54,"attackdamageperlevel":3.0,"attackspeedoffset":-0.0947,"attackspeedperlevel":3.38}},"Thresh":{"version":"5.18.1","id":"Thresh","key":"412","name":"Thresh","title":"the Chain Warden","blurb":"Thresh is a sadistic, spectral reaper who relishes tormenting the living and the dead. Once a jailer who mercilessly brutalized all under his charge, Thresh was hanged from his own chains by the prisoners he had tortured. With his vicious essence ...","info":{"attack":5,"defense":6,"magic":6,"difficulty":7},"image":{"full":"Thresh.png","sprite":"champion3.png","group":"champion","x":336,"y":0,"w":48,"h":48},"tags":["Support","Fighter"],"partype":"Mana","stats":{"hp":560.52,"hpperlevel":93.0,"mp":273.92,"mpperlevel":44.0,"movespeed":335.0,"armor":16.0,"armorperlevel":0.0,"spellblock":30.0,"spellblockperlevel":0.0,"attackrange":450.0,"hpregen":6.92,"hpregenperlevel":0.55,"mpregen":6.0,"mpregenperlevel":0.8,"crit":0.0,"critperlevel":0.0,"attackdamage":47.696,"attackdamageperlevel":2.2,"attackspeedoffset":0.0,"attackspeedperlevel":3.5}},"Tristana":{"version":"5.18.1","id":"Tristana","key":"18","name":"Tristana","title":"the Yordle Gunner","blurb":"Greatness comes in all shapes and sizes, as proven by this diminutive, cannon-wielding yordle. In a world fraught with turmoil, Tristana refuses to back down from any challenge. She represents the pinnacle of martial proficiency, unwavering courage, ...","info":{"attack":9,"defense":3,"magic":5,"difficulty":4},"image":{"full":"Tristana.png","sprite":"champion3.png","group":"champion","x":384,"y":0,"w":48,"h":48},"tags":["Marksman","Assassin"],"partype":"Mana","stats":{"hp":542.76,"hpperlevel":82.0,"mp":246.76,"mpperlevel":32.0,"movespeed":325.0,"armor":22.0,"armorperlevel":3.0,"spellblock":30.0,"spellblockperlevel":0.0,"attackrange":550.0,"hpregen":6.19,"hpregenperlevel":0.65,"mpregen":7.205,"mpregenperlevel":0.45,"crit":0.0,"critperlevel":0.0,"attackdamage":51.54,"attackdamageperlevel":3.0,"attackspeedoffset":-0.04734,"attackspeedperlevel":1.5}},"Trundle":{"version":"5.18.1","id":"Trundle","key":"48","name":"Trundle","title":"the Troll King","blurb":"Trundle is a hulking and devious troll with a mischievous streak. There is nothing he can't beat into submission and bend to his will, not even the ice itself. With his massive, frozen club, he chills his enemies to the core and runs them through with ...","info":{"attack":7,"defense":6,"magic":2,"difficulty":5},"image":{"full":"Trundle.png","sprite":"champion3.png","group":"champion","x":432,"y":0,"w":48,"h":48},"tags":["Fighter","Tank"],"partype":"Mana","stats":{"hp":616.28,"hpperlevel":96.0,"mp":281.6,"mpperlevel":45.0,"movespeed":350.0,"armor":27.536,"armorperlevel":2.7,"spellblock":32.1,"spellblockperlevel":1.25,"attackrange":125.0,"hpregen":9.425,"hpregenperlevel":0.85,"mpregen":7.505,"mpregenperlevel":0.6,"crit":0.0,"critperlevel":0.0,"attackdamage":60.04,"attackdamageperlevel":3.0,"attackspeedoffset":-0.0672,"attackspeedperlevel":2.9}},"Tryndamere":{"version":"5.18.1","id":"Tryndamere","key":"23","name":"Tryndamere","title":"the Barbarian King","blurb":"Fueled by his unbridled fury and rage, Tryndamere cuts his way through the tundra, mastering the art of battle by challenging the Freljord's greatest warriors. The wrathful barbarian seeks revenge on the one who decimated his clan and strikes down all ...","info":{"attack":10,"defense":5,"magic":2,"difficulty":5},"image":{"full":"Tryndamere.png","sprite":"champion3.png","group":"champion","x":0,"y":48,"w":48,"h":48},"tags":["Fighter","Assassin"],"partype":"Battlefury","stats":{"hp":625.64,"hpperlevel":98.0,"mp":100.0,"mpperlevel":0.0,"movespeed":345.0,"armor":24.108,"armorperlevel":3.1,"spellblock":32.1,"spellblockperlevel":1.25,"attackrange":125.0,"hpregen":8.51,"hpregenperlevel":0.9,"mpregen":0.0,"mpregenperlevel":0.0,"crit":0.0,"critperlevel":0.0,"attackdamage":61.376,"attackdamageperlevel":3.2,"attackspeedoffset":-0.0672,"attackspeedperlevel":2.9}},"TwistedFate":{"version":"5.18.1","id":"TwistedFate","key":"4","name":"Twisted Fate","title":"the Card Master","blurb":"Twisted Fate is an infamous card sharp and swindler who has gambled and charmed his way across much of the known world, earning the enmity and admiration of the rich and foolish alike. He rarely takes things seriously, greeting each day with a mocking ...","info":{"attack":6,"defense":2,"magic":6,"difficulty":9},"image":{"full":"TwistedFate.png","sprite":"champion3.png","group":"champion","x":48,"y":48,"w":48,"h":48},"tags":["Mage"],"partype":"Mana","stats":{"hp":521.76,"hpperlevel":82.0,"mp":265.84,"mpperlevel":38.0,"movespeed":330.0,"armor":20.542,"armorperlevel":3.15,"spellblock":30.0,"spellblockperlevel":0.0,"attackrange":525.0,"hpregen":5.505,"hpregenperlevel":0.6,"mpregen":6.0,"mpregenperlevel":0.8,"crit":0.0,"critperlevel":0.0,"attackdamage":49.954,"attackdamageperlevel":3.3,"attackspeedoffset":-0.04,"attackspeedperlevel":3.22}},"Twitch":{"version":"5.18.1","id":"Twitch","key":"29","name":"Twitch","title":"the Plague Rat","blurb":"H.I.V.E. Incident Report
Code Violation: Industrial Homicide
Casefile Status: Unsolved
Investigating Agent: Rol, P.

Team responded to report of suspicious character, criminal activity; proceeded to Sump Works, Sector 90TZ. Sector 90TZ ...","info":{"attack":9,"defense":2,"magic":3,"difficulty":6},"image":{"full":"Twitch.png","sprite":"champion3.png","group":"champion","x":96,"y":48,"w":48,"h":48},"tags":["Marksman","Assassin"],"partype":"Mana","stats":{"hp":525.08,"hpperlevel":81.0,"mp":287.2,"mpperlevel":40.0,"movespeed":330.0,"armor":23.04,"armorperlevel":3.0,"spellblock":30.0,"spellblockperlevel":0.0,"attackrange":550.0,"hpregen":6.005,"hpregenperlevel":0.6,"mpregen":7.255,"mpregenperlevel":0.45,"crit":0.0,"critperlevel":0.0,"attackdamage":49.04,"attackdamageperlevel":3.0,"attackspeedoffset":-0.08,"attackspeedperlevel":3.38}},"Udyr":{"version":"5.18.1","id":"Udyr","key":"77","name":"Udyr","title":"the Spirit Walker","blurb":"Udyr is more than a man; he is a vessel for the untamed power of four primal animal spirits. When tapping into the spirits' bestial natures, Udyr can harness their unique strengths: the tiger grants him speed and ferocity, the turtle resilience, the ...","info":{"attack":8,"defense":7,"magic":4,"difficulty":7},"image":{"full":"Udyr.png","sprite":"champion3.png","group":"champion","x":144,"y":48,"w":48,"h":48},"tags":["Fighter","Tank"],"partype":"Mana","stats":{"hp":593.32,"hpperlevel":99.0,"mp":270.4,"mpperlevel":30.0,"movespeed":345.0,"armor":25.47,"armorperlevel":4.0,"spellblock":32.1,"spellblockperlevel":1.25,"attackrange":125.0,"hpregen":8.71,"hpregenperlevel":0.75,"mpregen":7.505,"mpregenperlevel":0.45,"crit":0.0,"critperlevel":0.0,"attackdamage":58.286,"attackdamageperlevel":3.2,"attackspeedoffset":-0.05,"attackspeedperlevel":2.67}},"Urgot":{"version":"5.18.1","id":"Urgot","key":"6","name":"Urgot","title":"the Headsman's Pride","blurb":"There are warriors who become great for their strength, cunning, or skill with arms. Others simply refuse to die. Urgot, once a great soldier of Noxus, may constitute a case in support of the latter. Prone to diving headlong into enemy battle lines, ...","info":{"attack":8,"defense":5,"magic":3,"difficulty":8},"image":{"full":"Urgot.png","sprite":"champion3.png","group":"champion","x":192,"y":48,"w":48,"h":48},"tags":["Marksman","Fighter"],"partype":"Mana","stats":{"hp":586.52,"hpperlevel":89.0,"mp":312.4,"mpperlevel":55.0,"movespeed":335.0,"armor":24.544,"armorperlevel":3.3,"spellblock":30.0,"spellblockperlevel":0.0,"attackrange":425.0,"hpregen":6.505,"hpregenperlevel":0.6,"mpregen":8.59,"mpregenperlevel":0.65,"crit":0.0,"critperlevel":0.0,"attackdamage":52.048,"attackdamageperlevel":3.6,"attackspeedoffset":-0.03,"attackspeedperlevel":2.9}},"Varus":{"version":"5.18.1","id":"Varus","key":"110","name":"Varus","title":"the Arrow of Retribution","blurb":"For his incomparable skill with the bow and his unquestioned sense of honor, Varus was chosen to be the warden of a sacred Ionian temple. The temple was built to contain an ancient pit of corruption so vile that Ionian Elders feared it could envelop ...","info":{"attack":7,"defense":3,"magic":4,"difficulty":2},"image":{"full":"Varus.png","sprite":"champion3.png","group":"champion","x":240,"y":48,"w":48,"h":48},"tags":["Marksman","Mage"],"partype":"Mana","stats":{"hp":537.76,"hpperlevel":82.0,"mp":310.48,"mpperlevel":36.0,"movespeed":330.0,"armor":23.212,"armorperlevel":3.4,"spellblock":30.0,"spellblockperlevel":0.0,"attackrange":575.0,"hpregen":5.42,"hpregenperlevel":0.55,"mpregen":7.34,"mpregenperlevel":0.8,"crit":0.0,"critperlevel":0.0,"attackdamage":49.04,"attackdamageperlevel":3.0,"attackspeedoffset":-0.05,"attackspeedperlevel":3.0}},"Vayne":{"version":"5.18.1","id":"Vayne","key":"67","name":"Vayne","title":"the Night Hunter","blurb":"The world is not always as civilized as people might think. There are still those who would follow the blackest paths of magic and become corrupted by the darker powers that flow through Runeterra. Shauna Vayne knows this fact well. As a young ...","info":{"attack":10,"defense":1,"magic":1,"difficulty":8},"image":{"full":"Vayne.png","sprite":"champion3.png","group":"champion","x":288,"y":48,"w":48,"h":48},"tags":["Marksman","Assassin"],"partype":"Mana","stats":{"hp":498.44,"hpperlevel":83.0,"mp":231.8,"mpperlevel":35.0,"movespeed":330.0,"armor":19.012,"armorperlevel":3.4,"spellblock":30.0,"spellblockperlevel":0.0,"attackrange":550.0,"hpregen":5.42,"hpregenperlevel":0.55,"mpregen":6.97,"mpregenperlevel":0.4,"crit":0.0,"critperlevel":0.0,"attackdamage":53.46,"attackdamageperlevel":3.25,"attackspeedoffset":-0.05,"attackspeedperlevel":4.0}},"Veigar":{"version":"5.18.1","id":"Veigar","key":"45","name":"Veigar","title":"the Tiny Master of Evil","blurb":"To most, thoughts of yordles do not conjure images to be feared. The easygoing half-pint race, though fierce, is often regarded with some degree of joviality. Their high-pitched voices and naturally cute forms inspire something of a protective ...","info":{"attack":2,"defense":2,"magic":10,"difficulty":7},"image":{"full":"Veigar.png","sprite":"champion3.png","group":"champion","x":336,"y":48,"w":48,"h":48},"tags":["Mage"],"partype":"Mana","stats":{"hp":492.76,"hpperlevel":82.0,"mp":342.4,"mpperlevel":55.0,"movespeed":340.0,"armor":22.55,"armorperlevel":3.75,"spellblock":30.0,"spellblockperlevel":0.0,"attackrange":525.0,"hpregen":5.42,"hpregenperlevel":0.55,"mpregen":6.0,"mpregenperlevel":0.8,"crit":0.0,"critperlevel":0.0,"attackdamage":50.71,"attackdamageperlevel":2.625,"attackspeedoffset":0.0,"attackspeedperlevel":2.24}},"Velkoz":{"version":"5.18.1","id":"Velkoz","key":"161","name":"Vel'Koz","title":"the Eye of the Void","blurb":"I pass into the sudden glare. Blink. Blink, blink, blink. My eyes adjust and evaluate the landscape before me.

There's a scurrying. I look down to find a small, white creature standing on its hind legs, sniffing at my body. It intrigues me....","info":{"attack":2,"defense":2,"magic":10,"difficulty":8},"image":{"full":"Velkoz.png","sprite":"champion3.png","group":"champion","x":384,"y":48,"w":48,"h":48},"tags":["Mage"],"partype":"Mana","stats":{"hp":507.68,"hpperlevel":76.0,"mp":325.6,"mpperlevel":45.0,"movespeed":340.0,"armor":21.88,"armorperlevel":3.5,"spellblock":30.0,"spellblockperlevel":0.0,"attackrange":525.0,"hpregen":5.42,"hpregenperlevel":0.55,"mpregen":6.0,"mpregenperlevel":0.8,"crit":0.0,"critperlevel":0.0,"attackdamage":54.937875658,"attackdamageperlevel":3.14159265359,"attackspeedoffset":0.0,"attackspeedperlevel":1.36}},"Vi":{"version":"5.18.1","id":"Vi","key":"254","name":"Vi","title":"the Piltover Enforcer","blurb":"To Vi, every problem is just another brick wall to punch through with her gigantic hextech gauntlets. Though she grew up on the wrong side of the law, Vi now uses her criminal know-how to serve Piltover's police force. Vi's brash attitude, abrasive ...","info":{"attack":8,"defense":5,"magic":3,"difficulty":4},"image":{"full":"Vi.png","sprite":"champion3.png","group":"champion","x":432,"y":48,"w":48,"h":48},"tags":["Fighter","Assassin"],"partype":"Mana","stats":{"hp":582.8,"hpperlevel":85.0,"mp":295.6,"mpperlevel":45.0,"movespeed":345.0,"armor":25.88,"armorperlevel":3.5,"spellblock":32.1,"spellblockperlevel":1.25,"attackrange":125.0,"hpregen":9.01,"hpregenperlevel":0.9,"mpregen":8.09,"mpregenperlevel":0.65,"crit":0.0,"critperlevel":0.0,"attackdamage":55.88,"attackdamageperlevel":3.5,"attackspeedoffset":-0.03,"attackspeedperlevel":2.5}},"Viktor":{"version":"5.18.1","id":"Viktor","key":"112","name":"Viktor","title":"the Machine Herald","blurb":"Early in life, Viktor discovered his passion for science and invention, particularly in the field of mechanical automation. He attended Zaun's prestigious College of Techmaturgy and led the team that constructed Blitzcrank - a scientific breakthrough ...","info":{"attack":2,"defense":4,"magic":10,"difficulty":9},"image":{"full":"Viktor.png","sprite":"champion3.png","group":"champion","x":0,"y":96,"w":48,"h":48},"tags":["Mage"],"partype":"Mana","stats":{"hp":516.04,"hpperlevel":78.0,"mp":324.0,"mpperlevel":50.0,"movespeed":335.0,"armor":22.72,"armorperlevel":4.0,"spellblock":30.0,"spellblockperlevel":0.0,"attackrange":525.0,"hpregen":7.84,"hpregenperlevel":0.65,"mpregen":6.0,"mpregenperlevel":0.8,"crit":0.0,"critperlevel":0.0,"attackdamage":52.04,"attackdamageperlevel":3.0,"attackspeedoffset":-0.05,"attackspeedperlevel":2.11}},"Vladimir":{"version":"5.18.1","id":"Vladimir","key":"8","name":"Vladimir","title":"the Crimson Reaper","blurb":"There is a temple hidden in the mountains between Noxus and the Tempest Flats, where the secrets of an ancient and terrifying sorcery are kept. The area surrounding the temple is littered with the exsanguinated corpses of those who have mistakenly ...","info":{"attack":2,"defense":6,"magic":8,"difficulty":7},"image":{"full":"Vladimir.png","sprite":"champion3.png","group":"champion","x":48,"y":96,"w":48,"h":48},"tags":["Mage","Tank"],"partype":"None","stats":{"hp":542.8,"hpperlevel":85.0,"mp":0.0,"mpperlevel":0.0,"movespeed":335.0,"armor":21.88,"armorperlevel":3.5,"spellblock":30.0,"spellblockperlevel":0.0,"attackrange":450.0,"hpregen":7.005,"hpregenperlevel":0.6,"mpregen":0.0,"mpregenperlevel":0.0,"crit":0.0,"critperlevel":0.0,"attackdamage":48.04,"attackdamageperlevel":3.0,"attackspeedoffset":-0.05,"attackspeedperlevel":2.0}},"Volibear":{"version":"5.18.1","id":"Volibear","key":"106","name":"Volibear","title":"the Thunder's Roar","blurb":"The unforgiving northern reaches of the Freljord are home to the Ursine, a fierce and warlike race that has endured the barren tundra for thousands of years. Their leader is a furious adversary who commands the force of lightning to strike fear within ...","info":{"attack":7,"defense":7,"magic":4,"difficulty":3},"image":{"full":"Volibear.png","sprite":"champion3.png","group":"champion","x":96,"y":96,"w":48,"h":48},"tags":["Fighter","Tank"],"partype":"Mana","stats":{"hp":584.48,"hpperlevel":86.0,"mp":270.4,"mpperlevel":30.0,"movespeed":345.0,"armor":26.38,"armorperlevel":3.5,"spellblock":32.1,"spellblockperlevel":1.25,"attackrange":125.0,"hpregen":8.09,"hpregenperlevel":0.65,"mpregen":8.09,"mpregenperlevel":0.65,"crit":0.0,"critperlevel":0.0,"attackdamage":59.544,"attackdamageperlevel":3.3,"attackspeedoffset":-0.05,"attackspeedperlevel":2.67}},"Warwick":{"version":"5.18.1","id":"Warwick","key":"19","name":"Warwick","title":"the Blood Hunter","blurb":"Warwick was once a man revered for his ability to track down human specimens for the darkest types of scientific research. When his ambitions exceeded his physical limits, he drank a dangerous elixir to transform himself into an unstoppable manhunter. ...","info":{"attack":7,"defense":4,"magic":4,"difficulty":3},"image":{"full":"Warwick.png","sprite":"champion3.png","group":"champion","x":144,"y":96,"w":48,"h":48},"tags":["Fighter","Tank"],"partype":"Mana","stats":{"hp":592.64,"hpperlevel":98.0,"mp":240.4,"mpperlevel":30.0,"movespeed":345.0,"armor":25.88,"armorperlevel":3.5,"spellblock":32.1,"spellblockperlevel":1.25,"attackrange":125.0,"hpregen":8.39,"hpregenperlevel":0.8,"mpregen":8.105,"mpregenperlevel":0.6,"crit":0.0,"critperlevel":0.0,"attackdamage":62.43,"attackdamageperlevel":3.375,"attackspeedoffset":-0.08,"attackspeedperlevel":2.88}},"Xerath":{"version":"5.18.1","id":"Xerath","key":"101","name":"Xerath","title":"the Magus Ascendant","blurb":"Powerful beyond reckoning, the Ascended being known as Xerath was once a mortal of flesh and blood. He is now something vastly different - a being of writhing arcane energy. Having emerged from millennia-spanning imprisonment, he is now ready to ...","info":{"attack":1,"defense":3,"magic":10,"difficulty":8},"image":{"full":"Xerath.png","sprite":"champion3.png","group":"champion","x":192,"y":96,"w":48,"h":48},"tags":["Mage","Assassin"],"partype":"Mana","stats":{"hp":514.4,"hpperlevel":80.0,"mp":316.96,"mpperlevel":47.0,"movespeed":340.0,"armor":21.88,"armorperlevel":3.5,"spellblock":30.0,"spellblockperlevel":0.0,"attackrange":525.0,"hpregen":5.42,"hpregenperlevel":0.55,"mpregen":6.0,"mpregenperlevel":0.8,"crit":0.0,"critperlevel":0.0,"attackdamage":54.7,"attackdamageperlevel":3.0,"attackspeedoffset":0.0,"attackspeedperlevel":1.36}},"XinZhao":{"version":"5.18.1","id":"XinZhao","key":"5","name":"Xin Zhao","title":"the Seneschal of Demacia","blurb":"Whenever Jarvan III, the king of Demacia, delivers one of his rallying speeches from the glinting marble balcony atop the Royal Palace, Xin Zhao is at his side. Coined the Seneschal of Demacia, Xin Zhao is the personal steward of the Lightshield ...","info":{"attack":8,"defense":6,"magic":3,"difficulty":2},"image":{"full":"XinZhao.png","sprite":"champion3.png","group":"champion","x":240,"y":96,"w":48,"h":48},"tags":["Fighter","Assassin"],"partype":"Mana","stats":{"hp":591.16,"hpperlevel":87.0,"mp":273.8,"mpperlevel":35.0,"movespeed":345.0,"armor":25.88,"armorperlevel":3.5,"spellblock":32.1,"spellblockperlevel":1.25,"attackrange":175.0,"hpregen":8.175,"hpregenperlevel":0.7,"mpregen":7.255,"mpregenperlevel":0.45,"crit":0.0,"critperlevel":0.0,"attackdamage":57.544,"attackdamageperlevel":3.3,"attackspeedoffset":-0.07,"attackspeedperlevel":2.6}},"Yasuo":{"version":"5.18.1","id":"Yasuo","key":"157","name":"Yasuo","title":"the Unforgiven","blurb":"Yasuo is a man of resolve, an agile swordsman who wields the wind itself to cut down his foes. This once-proud warrior has been disgraced by a false accusation and forced into a desperate fight for survival. With the world turned against him, he will ...","info":{"attack":8,"defense":4,"magic":4,"difficulty":10},"image":{"full":"Yasuo.png","sprite":"champion3.png","group":"champion","x":288,"y":96,"w":48,"h":48},"tags":["Fighter","Assassin"],"partype":"Wind","stats":{"hp":517.76,"hpperlevel":82.0,"mp":100.0,"mpperlevel":0.0,"movespeed":345.0,"armor":24.712,"armorperlevel":3.4,"spellblock":30.0,"spellblockperlevel":0.0,"attackrange":175.0,"hpregen":6.51,"hpregenperlevel":0.9,"mpregen":0.0,"mpregenperlevel":0.0,"crit":0.0,"critperlevel":0.0,"attackdamage":55.376,"attackdamageperlevel":3.2,"attackspeedoffset":-0.05,"attackspeedperlevel":3.2}},"Yorick":{"version":"5.18.1","id":"Yorick","key":"83","name":"Yorick","title":"the Gravedigger","blurb":"A terrifying and tragic figure, Yorick is a ghoulish being that exists on the edge of mortality. Some say he was the last of his family line, dying without an heir to continue its legacy, and that he was cursed to continue his family's duty even after ...","info":{"attack":6,"defense":6,"magic":6,"difficulty":4},"image":{"full":"Yorick.png","sprite":"champion3.png","group":"champion","x":336,"y":96,"w":48,"h":48},"tags":["Fighter","Mage"],"partype":"Mana","stats":{"hp":563.8,"hpperlevel":85.0,"mp":293.8,"mpperlevel":35.0,"movespeed":345.0,"armor":25.048,"armorperlevel":3.6,"spellblock":32.1,"spellblockperlevel":1.25,"attackrange":125.0,"hpregen":8.175,"hpregenperlevel":0.7,"mpregen":6.755,"mpregenperlevel":0.45,"crit":0.0,"critperlevel":0.0,"attackdamage":57.58,"attackdamageperlevel":3.5,"attackspeedoffset":0.0,"attackspeedperlevel":3.0}},"Zac":{"version":"5.18.1","id":"Zac","key":"154","name":"Zac","title":"the Secret Weapon","blurb":"Zac is the product of a Zaun experiment to manufacture a hexchem-engineered supersoldier - the Zaun Amorphous Combatant. Combining brute strength with limitless flexibility, he is a versatile juggernaut: a creative fighter who bounces over obstacles ...","info":{"attack":3,"defense":7,"magic":7,"difficulty":8},"image":{"full":"Zac.png","sprite":"champion3.png","group":"champion","x":384,"y":96,"w":48,"h":48},"tags":["Tank","Fighter"],"partype":"None","stats":{"hp":614.6,"hpperlevel":95.0,"mp":0.0,"mpperlevel":0.0,"movespeed":335.0,"armor":23.88,"armorperlevel":3.5,"spellblock":32.1,"spellblockperlevel":1.25,"attackrange":125.0,"hpregen":7.92,"hpregenperlevel":0.55,"mpregen":0.0,"mpregenperlevel":0.0,"crit":0.0,"critperlevel":0.0,"attackdamage":59.67,"attackdamageperlevel":3.375,"attackspeedoffset":-0.02,"attackspeedperlevel":1.6}},"Zed":{"version":"5.18.1","id":"Zed","key":"238","name":"Zed","title":"the Master of Shadows","blurb":"Zed is the first ninja in 200 years to unlock the ancient, forbidden ways. He defied his clan and master, casting off the balance and discipline that had shackled him all his life. Zed now offers power to those who embrace knowledge of the shadows, ...","info":{"attack":9,"defense":2,"magic":1,"difficulty":7},"image":{"full":"Zed.png","sprite":"champion3.png","group":"champion","x":432,"y":96,"w":48,"h":48},"tags":["Assassin","Fighter"],"partype":"Energy","stats":{"hp":579.4,"hpperlevel":80.0,"mp":200.0,"mpperlevel":0.0,"movespeed":345.0,"armor":26.88,"armorperlevel":3.5,"spellblock":32.1,"spellblockperlevel":1.25,"attackrange":125.0,"hpregen":7.09,"hpregenperlevel":0.65,"mpregen":50.0,"mpregenperlevel":0.0,"crit":0.0,"critperlevel":0.0,"attackdamage":54.712,"attackdamageperlevel":3.4,"attackspeedoffset":-0.03,"attackspeedperlevel":2.1}},"Ziggs":{"version":"5.18.1","id":"Ziggs","key":"115","name":"Ziggs","title":"the Hexplosives Expert","blurb":"Ziggs was born with a talent for tinkering, but his chaotic, hyperactive nature was unusual among yordle scientists. Aspiring to be a revered inventor like Heimerdinger, he rattled through ambitious projects with manic zeal, emboldened by both his ...","info":{"attack":2,"defense":4,"magic":9,"difficulty":4},"image":{"full":"Ziggs.png","sprite":"champion4.png","group":"champion","x":0,"y":0,"w":48,"h":48},"tags":["Mage"],"partype":"Mana","stats":{"hp":524.4,"hpperlevel":80.0,"mp":334.0,"mpperlevel":50.0,"movespeed":325.0,"armor":21.544,"armorperlevel":3.3,"spellblock":30.0,"spellblockperlevel":0.0,"attackrange":550.0,"hpregen":6.255,"hpregenperlevel":0.6,"mpregen":6.0,"mpregenperlevel":0.8,"crit":0.0,"critperlevel":0.0,"attackdamage":54.208,"attackdamageperlevel":3.1,"attackspeedoffset":-0.04734,"attackspeedperlevel":2.0}},"Zilean":{"version":"5.18.1","id":"Zilean","key":"26","name":"Zilean","title":"the Chronokeeper","blurb":"In the wastelands of Urtistan, there was once a great city. It perished long ago in a terrible Rune War, like most of the lands below the Great Barrier. Nevertheless, one man survived: a sorcerer named Zilean. Being obsessed with time, it was only ...","info":{"attack":2,"defense":5,"magic":8,"difficulty":6},"image":{"full":"Zilean.png","sprite":"champion4.png","group":"champion","x":48,"y":0,"w":48,"h":48},"tags":["Support","Mage"],"partype":"Mana","stats":{"hp":499.28,"hpperlevel":77.0,"mp":360.8,"mpperlevel":60.0,"movespeed":335.0,"armor":19.134,"armorperlevel":3.8,"spellblock":30.0,"spellblockperlevel":0.0,"attackrange":550.0,"hpregen":5.44,"hpregenperlevel":0.5,"mpregen":6.0,"mpregenperlevel":0.8,"crit":0.0,"critperlevel":0.0,"attackdamage":51.64,"attackdamageperlevel":3.0,"attackspeedoffset":0.0,"attackspeedperlevel":2.13}},"Zyra":{"version":"5.18.1","id":"Zyra","key":"143","name":"Zyra","title":"Rise of the Thorns","blurb":"Longing to take control of her fate, the ancient, dying plant Zyra transferred her consciousness into a human body for a second chance at life. Centuries ago, she and her kind dominated the Kumungu Jungle, using thorns and vines to consume any animal ...","info":{"attack":4,"defense":3,"magic":8,"difficulty":7},"image":{"full":"Zyra.png","sprite":"champion4.png","group":"champion","x":96,"y":0,"w":48,"h":48},"tags":["Mage","Support"],"partype":"Mana","stats":{"hp":479.32,"hpperlevel":74.0,"mp":334.0,"mpperlevel":50.0,"movespeed":325.0,"armor":20.04,"armorperlevel":3.0,"spellblock":30.0,"spellblockperlevel":0.0,"attackrange":575.0,"hpregen":5.69,"hpregenperlevel":0.5,"mpregen":6.0,"mpregenperlevel":0.8,"crit":0.0,"critperlevel":0.0,"attackdamage":53.376,"attackdamageperlevel":3.2,"attackspeedoffset":0.0,"attackspeedperlevel":2.11}}}} \ No newline at end of file diff --git a/tests/sources/championgg.coffee b/tests/sources/championgg.coffee index b41985c6..92babc03 100644 --- a/tests/sources/championgg.coffee +++ b/tests/sources/championgg.coffee @@ -1,32 +1,26 @@ require('../_init') fs = require 'fs' +glob = require 'glob' nock = require 'nock' path = require 'path' should = require('chai').should() _ = require('lodash') championgg = require '../../lib/sources/championgg' - nocked = null -loadFixture = (file_name) -> - data = fs.readFileSync path.join(__dirname, "fixtures/championgg/#{file_name}") - data = JSON.parse(data) if _.contains(file_name, '.json') - return data - -FIXTURES = { - champions: JSON.parse fs.readFileSync(path.join(__dirname, '../fixtures/champions.json')) - faq: loadFixture('faq.html') - brand: loadFixture('brand.html') - brand_support: loadFixture('brand_support.html') - brand_result_default: loadFixture('brand_result_default.json') - brand_result_splititems: loadFixture('brand_result_splititems.json') - brand_result_consumables_beginning: loadFixture('brand_result_consumables_beginning.json') - brand_result_consumables_end: loadFixture('brand_result_consumables_end.json') - brand_result_trinkets_beginning: loadFixture('brand_result_trinkets_beginning.json') - brand_result_trinkets_end: loadFixture('brand_result_trinkets_end.json'), - brand_result_locksr: loadFixture('brand_result_locksr.json') + +RESPONSES_FIXTURES = { + champions: JSON.parse fs.readFileSync(path.join(__dirname, 'fixtures/championgg/responses/champions.json')) } +_.each glob.sync(path.join(__dirname, 'fixtures/championgg/responses/*.html')), (fixture) -> + var_name = path.basename(fixture).replace('.html', '') + RESPONSES_FIXTURES[var_name] = fs.readFileSync(fixture) + +RESULTS_FIXTURES = {} +_.each glob.sync(path.join(__dirname, 'fixtures/championgg/results/*.json')), (fixture) -> + var_name = path.basename(fixture).replace('.json', '') + RESULTS_FIXTURES[var_name] = require(fixture) testWithFixture = (fixture, done) -> championgg.sr (err, results) -> @@ -34,7 +28,7 @@ testWithFixture = (fixture, done) -> results.should.eql(fixture) done() - , {champs: _.keys(FIXTURES.champions.data)} + , {champs: _.keys(RESPONSES_FIXTURES.champions.data)} describe 'lib/sources/championgg.coffee', -> before -> @@ -43,11 +37,11 @@ describe 'lib/sources/championgg.coffee', -> afterEach -> nock.cleanAll() - describe 'getVersion', -> + describe 'version', -> it 'should get the stubbed championgg version', (done) -> nocked .get('/faq/') - .reply(200, FIXTURES.faq) + .reply(200, RESPONSES_FIXTURES.faq) championgg.version (err, version) -> should.not.exist(err) @@ -61,45 +55,45 @@ describe 'lib/sources/championgg.coffee', -> nock.cleanAll() nocked .get('/champion/Brand') - .reply(200, FIXTURES.brand) + .reply(200, RESPONSES_FIXTURES.brand) .get('/champion/Brand/support') - .reply(200, FIXTURES.brand_support) + .reply(200, RESPONSES_FIXTURES.brand_support) it 'should return default item sets', (done) -> - testWithFixture(FIXTURES.brand_result_default, done) + testWithFixture(RESULTS_FIXTURES.brand_result_default, done) it 'should return split item sets', (done) -> window.cSettings = {splititems: true} - testWithFixture(FIXTURES.brand_result_splititems, done) + testWithFixture(RESULTS_FIXTURES.brand_result_splititems, done) it 'should return with consumables enabled and at the beginning', (done) -> window.cSettings = { consumables: true consumables_position: 'beginning' } - testWithFixture(FIXTURES.brand_result_consumables_beginning, done) + testWithFixture(RESULTS_FIXTURES.brand_result_consumables_beginning, done) it 'should return with consumables enabled and at the end', (done) -> window.cSettings = { consumables: true consumables_position: 'end' } - testWithFixture(FIXTURES.brand_result_consumables_end, done) + testWithFixture(RESULTS_FIXTURES.brand_result_consumables_end, done) it 'should return with trinkets enabled and at the beginning', (done) -> window.cSettings = { trinkets: true trinkets_position: 'beginning' } - testWithFixture(FIXTURES.brand_result_trinkets_beginning, done) + testWithFixture(RESULTS_FIXTURES.brand_result_trinkets_beginning, done) it 'should return with trinkets enabled and at the end', (done) -> window.cSettings = { trinkets: true trinkets_position: 'end' } - testWithFixture(FIXTURES.brand_result_trinkets_end, done) + testWithFixture(RESULTS_FIXTURES.brand_result_trinkets_end, done) it 'should return with item sets locked to Summoners Rift map', (done) -> window.cSettings = {locksr: true} - testWithFixture(FIXTURES.brand_result_locksr, done) + testWithFixture(RESULTS_FIXTURES.brand_result_locksr, done) diff --git a/tests/sources/fixtures/championgg/brand.html b/tests/sources/fixtures/championgg/responses/brand.html similarity index 100% rename from tests/sources/fixtures/championgg/brand.html rename to tests/sources/fixtures/championgg/responses/brand.html diff --git a/tests/sources/fixtures/championgg/brand_support.html b/tests/sources/fixtures/championgg/responses/brand_support.html similarity index 100% rename from tests/sources/fixtures/championgg/brand_support.html rename to tests/sources/fixtures/championgg/responses/brand_support.html diff --git a/tests/fixtures/champions.json b/tests/sources/fixtures/championgg/responses/champions.json similarity index 100% rename from tests/fixtures/champions.json rename to tests/sources/fixtures/championgg/responses/champions.json diff --git a/tests/sources/fixtures/championgg/faq.html b/tests/sources/fixtures/championgg/responses/faq.html similarity index 100% rename from tests/sources/fixtures/championgg/faq.html rename to tests/sources/fixtures/championgg/responses/faq.html diff --git a/tests/sources/fixtures/championgg/brand_result_consumables_beginning.json b/tests/sources/fixtures/championgg/results/brand_result_consumables_beginning.json similarity index 100% rename from tests/sources/fixtures/championgg/brand_result_consumables_beginning.json rename to tests/sources/fixtures/championgg/results/brand_result_consumables_beginning.json diff --git a/tests/sources/fixtures/championgg/brand_result_consumables_end.json b/tests/sources/fixtures/championgg/results/brand_result_consumables_end.json similarity index 100% rename from tests/sources/fixtures/championgg/brand_result_consumables_end.json rename to tests/sources/fixtures/championgg/results/brand_result_consumables_end.json diff --git a/tests/sources/fixtures/championgg/brand_result_default.json b/tests/sources/fixtures/championgg/results/brand_result_default.json similarity index 100% rename from tests/sources/fixtures/championgg/brand_result_default.json rename to tests/sources/fixtures/championgg/results/brand_result_default.json diff --git a/tests/sources/fixtures/championgg/brand_result_locksr.json b/tests/sources/fixtures/championgg/results/brand_result_locksr.json similarity index 100% rename from tests/sources/fixtures/championgg/brand_result_locksr.json rename to tests/sources/fixtures/championgg/results/brand_result_locksr.json diff --git a/tests/sources/fixtures/championgg/brand_result_splititems.json b/tests/sources/fixtures/championgg/results/brand_result_splititems.json similarity index 100% rename from tests/sources/fixtures/championgg/brand_result_splititems.json rename to tests/sources/fixtures/championgg/results/brand_result_splititems.json diff --git a/tests/sources/fixtures/championgg/brand_result_trinkets_beginning.json b/tests/sources/fixtures/championgg/results/brand_result_trinkets_beginning.json similarity index 100% rename from tests/sources/fixtures/championgg/brand_result_trinkets_beginning.json rename to tests/sources/fixtures/championgg/results/brand_result_trinkets_beginning.json diff --git a/tests/sources/fixtures/championgg/brand_result_trinkets_end.json b/tests/sources/fixtures/championgg/results/brand_result_trinkets_end.json similarity index 100% rename from tests/sources/fixtures/championgg/brand_result_trinkets_end.json rename to tests/sources/fixtures/championgg/results/brand_result_trinkets_end.json diff --git a/tests/sources/fixtures/lolflavor/responses/ahri_lane_scrape.json b/tests/sources/fixtures/lolflavor/responses/ahri_lane_scrape.json new file mode 100644 index 00000000..88fd5069 --- /dev/null +++ b/tests/sources/fixtures/lolflavor/responses/ahri_lane_scrape.json @@ -0,0 +1 @@ +{"isGlobalForChampions":false,"associatedChampions":[],"mode":"any","blocks":[{"items":[{"count":1,"id":"2003"},{"count":1,"id":"2004"},{"count":1,"id":"2041"},{"count":1,"id":"2044"},{"count":1,"id":"2043"},{"count":1,"id":"2137"},{"count":1,"id":"2138"},{"count":1,"id":"2139"},{"count":1,"id":"2140"}],"type":"Consumable"},{"items":[{"count":1,"id":"1056"},{"count":1,"id":"1029"},{"count":1,"id":"1028"},{"count":1,"id":"3340"},{"count":1,"id":"3342"},{"count":1,"id":"3341"}],"type":"Starter"},{"items":[{"count":1,"id":"3165"},{"count":1,"id":"3285"},{"count":1,"id":"3089"},{"count":1,"id":"1001"}],"type":"Core Items - Max Skill: Q>W>E"},{"items":[{"count":1,"id":"3157"},{"count":1,"id":"3361"},{"count":1,"id":"3135"},{"count":1,"id":"3001"},{"count":1,"id":"3364"},{"count":1,"id":"3174"},{"count":1,"id":"3116"}],"type":"Core Alternatives - Endgame Items "},{"items":[{"count":1,"id":"3020"},{"count":1,"id":"1314"}],"type":"Boots"},{"items":[{"count":1,"id":"3362"},{"count":1,"id":"3041"},{"count":1,"id":"3100"},{"count":1,"id":"3136"},{"count":1,"id":"3140"},{"count":1,"id":"3151"},{"count":1,"id":"3363"}],"type":"Situational Items"}],"associatedMaps":[],"map":"any","title":"Lane FOTM - 9/21/2015","isGlobalForMaps":true,"sortrank":2,"type":"custom","champion":"Ahri","priority":false} \ No newline at end of file diff --git a/tests/sources/fixtures/lolflavor/responses/katarina_aram_scrape.json b/tests/sources/fixtures/lolflavor/responses/katarina_aram_scrape.json new file mode 100644 index 00000000..b7c497b7 --- /dev/null +++ b/tests/sources/fixtures/lolflavor/responses/katarina_aram_scrape.json @@ -0,0 +1 @@ +{"isGlobalForChampions":false,"associatedChampions":[],"mode":"any","blocks":[{"items":[{"count":1,"id":"2003"},{"count":1,"id":"2137"},{"count":1,"id":"2138"},{"count":1,"id":"2139"},{"count":1,"id":"2140"}],"type":"Consumable"},{"items":[{"count":1,"id":"3303"},{"count":1,"id":"1029"},{"count":1,"id":"1028"}],"type":"Starter"},{"items":[{"count":1,"id":"3285"},{"count":1,"id":"3157"},{"count":1,"id":"3089"},{"count":1,"id":"1001"}],"type":"Core Items - Max Skill: Q>W>E"},{"items":[{"count":1,"id":"3001"},{"count":1,"id":"3135"},{"count":1,"id":"3136"},{"count":1,"id":"3151"},{"count":1,"id":"3116"},{"count":1,"id":"3146"},{"count":1,"id":"3152"}],"type":"Core Alternatives - Endgame Items "},{"items":[{"count":1,"id":"3020"},{"count":1,"id":"1311"}],"type":"Boots"},{"items":[{"count":1,"id":"3098"},{"count":1,"id":"3140"},{"count":1,"id":"3092"},{"count":1,"id":"3102"},{"count":1,"id":"3165"},{"count":1,"id":"3065"},{"count":1,"id":"3083"}],"type":"Situational Items"}],"associatedMaps":[],"map":"any","title":"ARAM FOTM - 9/21/2015","isGlobalForMaps":true,"sortrank":4,"type":"custom","champion":"Katarina","priority":false} \ No newline at end of file diff --git a/tests/sources/fixtures/lolflavor/responses/statsARAM.json b/tests/sources/fixtures/lolflavor/responses/statsARAM.json new file mode 100644 index 00000000..f78123b1 --- /dev/null +++ b/tests/sources/fixtures/lolflavor/responses/statsARAM.json @@ -0,0 +1 @@ +{"champions":[{"Id":178,"champID":55,"totalGames":7563,"buildType":"ARAM","winPercent":55.0,"name":"Katarina"}]} diff --git a/tests/sources/fixtures/lolflavor/results/katarina_aram.json b/tests/sources/fixtures/lolflavor/results/katarina_aram.json new file mode 100644 index 00000000..d07f8953 --- /dev/null +++ b/tests/sources/fixtures/lolflavor/results/katarina_aram.json @@ -0,0 +1 @@ +{"Katarina":{"aram":{"isGlobalForChampions":false,"associatedChampions":[],"mode":"any","blocks":[{"items":[{"count":1,"id":"2003"},{"count":1,"id":"2137"},{"count":1,"id":"2138"},{"count":1,"id":"2139"},{"count":1,"id":"2140"},{"count": 1,"id": "2047"}],"type":"Consumable"},{"items":[{"count":1,"id":"3303"},{"count":1,"id":"1029"},{"count":1,"id":"1028"}],"type":"Starter"},{"items":[{"count":1,"id":"3285"},{"count":1,"id":"3157"},{"count":1,"id":"3089"},{"count":1,"id":"1001"}],"type":"Core Items - Max Skill: Q>W>E"},{"items":[{"count":1,"id":"3001"},{"count":1,"id":"3135"},{"count":1,"id":"3136"},{"count":1,"id":"3151"},{"count":1,"id":"3116"},{"count":1,"id":"3146"},{"count":1,"id":"3152"}],"type":"Core Alternatives - Endgame Items "},{"items":[{"count":1,"id":"3020"},{"count":1,"id":"1311"}],"type":"Boots"},{"items":[{"count":1,"id":"3098"},{"count":1,"id":"3140"},{"count":1,"id":"3092"},{"count":1,"id":"3102"},{"count":1,"id":"3165"},{"count":1,"id":"3065"},{"count":1,"id":"3083"}],"type":"Situational Items"}],"associatedMaps":[],"map":"HA","title":"ARAM 5.18","isGlobalForMaps":true,"sortrank":4,"type":"custom","champion":"Katarina","priority":false}}} diff --git a/tests/sources/lolflavor.coffee b/tests/sources/lolflavor.coffee new file mode 100644 index 00000000..ce1ad24e --- /dev/null +++ b/tests/sources/lolflavor.coffee @@ -0,0 +1,58 @@ +require('../_init') + +fs = require 'fs' +glob = require 'glob' +nock = require 'nock' +path = require 'path' +should = require('chai').should() +_ = require('lodash') + +nocked = null +lolflavor = require '../../lib/sources/lolflavor' + +RESPONSES_FIXTURES = {} +_.each glob.sync(path.join(__dirname, 'fixtures/lolflavor/responses/*.json')), (fixture) -> + var_name = path.basename(fixture).replace('.json', '') + RESPONSES_FIXTURES[var_name] = require(fixture) + +RESULTS_FIXTURES = {} +_.each glob.sync(path.join(__dirname, 'fixtures/lolflavor/results/*.json')), (fixture) -> + var_name = path.basename(fixture).replace('.json', '') + RESULTS_FIXTURES[var_name] = require(fixture) + +describe 'lib/sources/lolflavor.coffee', -> + before -> + nocked = nock('http://www.lolflavor.com') + + afterEach -> + nock.cleanAll() + + describe 'version', -> + it 'should get the stubbed lolflavor version', (done) -> + nocked + .get('/champions/Ahri/Recommended/Ahri_lane_scrape.json') + .reply(200, RESPONSES_FIXTURES.ahri_lane_scrape) + + lolflavor.version (err, version) -> + should.not.exist(err) + version.should.equal('9/21/2015') + done() + + describe 'aram', -> + beforeEach -> + window.cSettings = {} + nock.cleanAll() + + it 'should get default ARAM item sets for Katarina', (done) -> + nocked + .get('/data/statsARAM.json') + .reply(200, RESPONSES_FIXTURES.statsARAM) + .get('/champions/Katarina/Recommended/Katarina_aram_scrape.json') + .reply(200, RESPONSES_FIXTURES.katarina_aram_scrape) + + lolflavor.aram (err, results) -> + should.not.exist(err) + results.should.eql(RESULTS_FIXTURES.katarina_aram) + done() + + , {riotVer: '5.18', manaless: ['katarina']} diff --git a/views/main.jade b/views/main.jade index 72bf3749..8d64c280 100644 --- a/views/main.jade +++ b/views/main.jade @@ -9,14 +9,23 @@ .lol_dir_input_msg span#input_msg -br - .one.column.row .column.options + .rift_source + #sr_source.ui.selection.dropdown + input#options_sr_source(type='hidden', value='championgg') + i.dropdown.icon + #sr_source_text.text Champion.gg + .menu + .header #{T.t('summoners_rift_source')} + .item(data-value='championgg') Champion.gg + .item(data-value='lolflavor') Lolflavor + .ui.checkbox.left input#options_splititems(type='checkbox') label.options_tooltip(data-content="#{T.t('options_splititems_tooltip')}") #{T.t('options_splititems')} - + + //- Fix for some languages br .ui.checkbox.left @@ -53,18 +62,10 @@ br .ui.checkbox.left input#options_locksr(type='checkbox') label.options_tooltip(data-content="#{T.t('options_locksr_tooltip')}") #{T.t('options_locksr')} - br - - .rift_source - #sr_source.ui.selection.dropdown - input#options_sr_source(type='hidden', value='championgg') - i.dropdown.icon - #sr_source_text.text Champion.gg - .menu - .header #{T.t('summoners_rift_source')} - .item(data-value='championgg') Champion.gg - .item(data-value='lolflavor') Lolflavor - + + .ui.checkbox.left + input#options_dontdeleteold(type='checkbox') + label.options_tooltip(data-content="#{T.t('options_dontdeleteold_tooltip')}") #{T.t('options_dontdeleteold')} .one.column.row #btns_versions