MediaWiki:Gadget-BulbaTools.js — различия между версиями

Материал из ПокеВики
Перейти к: навигация, поиск
м
м
 
(не показано 28 промежуточных версий 3 участников)
Строка 10: Строка 10:
 
             label: 'Бульба-парсер',
 
             label: 'Бульба-парсер',
 
             type: 'button',
 
             type: 'button',
             icon: 'http://pokeliga.com/pictures/icons/wikiball.png',
+
             icon: 'http://wiki.pokeliga.com/w/images/1/18/30px-Bulbapedia_bulb.png',  
 
    'action': {
 
    'action': {
 
        'type': 'callback',
 
        'type': 'callback',
Строка 21: Строка 21:
 
function BulbaParser(WikiEditorContext)
 
function BulbaParser(WikiEditorContext)
 
{
 
{
  var textarea = WikiEditorContext.$textarea;
+
  var textarea = WikiEditorContext.$textarea[0];
 
  var start = textarea.selectionStart;
 
  var start = textarea.selectionStart;
 
  var end = textarea.selectionEnd;
 
  var end = textarea.selectionEnd;
Строка 27: Строка 27:
 
  var converted = convertLearnset(selected);
 
  var converted = convertLearnset(selected);
 
  var newValue = textarea.value.substring(0, start) + converted + textarea.value.substring(end + 1);
 
  var newValue = textarea.value.substring(0, start) + converted + textarea.value.substring(end + 1);
 +
textarea.value = newValue;
 
}
 
}
  
Строка 92: Строка 93:
 
'Raichu': 'Райчу',
 
'Raichu': 'Райчу',
 
'Sandshrew': 'Сендшрю',
 
'Sandshrew': 'Сендшрю',
'Sandslash': 'Сендслэш',
+
'Sandslash': 'Сендслеш',
 
'Nidoran♀': 'Нидоранка',
 
'Nidoran♀': 'Нидоранка',
 
'Nidorina': 'Нидорина',
 
'Nidorina': 'Нидорина',
Строка 125: Строка 126:
 
'Arcanine': 'Арканин',
 
'Arcanine': 'Арканин',
 
'Poliwag': 'Поливаг',
 
'Poliwag': 'Поливаг',
'Poliwhirl': 'Поливћрл',
+
'Poliwhirl': 'Поливёрл',
 
'Poliwrath': 'Полирас',
 
'Poliwrath': 'Полирас',
 
'Abra': 'Абра',
 
'Abra': 'Абра',
Строка 189: Строка 190:
 
'Scyther': 'Сайтер',
 
'Scyther': 'Сайтер',
 
'Jynx': 'Джинкс',
 
'Jynx': 'Джинкс',
'Electabuzz': 'Электабузз',
+
'Electabuzz': 'Электабазз',
 
'Magmar': 'Магмар',
 
'Magmar': 'Магмар',
 
'Pinsir': 'Пинсир',
 
'Pinsir': 'Пинсир',
Строка 243: Строка 244:
 
'Natu': 'Нату',
 
'Natu': 'Нату',
 
'Xatu': 'Ксату',
 
'Xatu': 'Ксату',
'Mareep': 'Мариип',
+
'Mareep': 'Мэрип',
 
'Flaaffy': 'Флаафи',
 
'Flaaffy': 'Флаафи',
 
'Ampharos': 'Амфарос',
 
'Ampharos': 'Амфарос',
Строка 262: Строка 263:
 
'Espeon': 'Эспеон',
 
'Espeon': 'Эспеон',
 
'Umbreon': 'Умбреон',
 
'Umbreon': 'Умбреон',
'Murkrow': 'Мћркроу',
+
'Murkrow': 'Мёркроу',
 
'Slowking': 'Слоукинг',
 
'Slowking': 'Слоукинг',
 
'Misdreavus': 'Мисдривус',
 
'Misdreavus': 'Мисдривус',
Строка 289: Строка 290:
 
'Remoraid': 'Реморейд',
 
'Remoraid': 'Реморейд',
 
'Octillery': 'Октилерия',
 
'Octillery': 'Октилерия',
'Delibird': 'Делибћрд',
+
'Delibird': 'Делибёрд',
 
'Mantine': 'Мантин',
 
'Mantine': 'Мантин',
 
'Skarmory': 'Скармори',
 
'Skarmory': 'Скармори',
Строка 367: Строка 368:
 
'Delcatty': 'Деликатти',
 
'Delcatty': 'Деликатти',
 
'Sableye': 'Саблай',
 
'Sableye': 'Саблай',
'Mawile': 'Мавиль',
+
'Mawile': 'Мавайл',
 
'Aron': 'Арон',
 
'Aron': 'Арон',
 
'Lairon': 'Лайрон',
 
'Lairon': 'Лайрон',
Строка 479: Строка 480:
 
'Shieldon': 'Шилдон',
 
'Shieldon': 'Шилдон',
 
'Bastiodon': 'Баститодон',
 
'Bastiodon': 'Баститодон',
'Burmy': 'Бћрми',
+
'Burmy': 'Бёрми',
 
'Wormadam': 'Вормадам',
 
'Wormadam': 'Вормадам',
 
'Mothim': 'Мотим',
 
'Mothim': 'Мотим',
Строка 534: Строка 535:
 
'Tangrowth': 'Тангроу',
 
'Tangrowth': 'Тангроу',
 
'Electivire': 'Элективайр',
 
'Electivire': 'Элективайр',
'Magmortar': 'Магмотар',
+
'Magmortar': 'Магмортар',
 
'Togekiss': 'Тогекисс',
 
'Togekiss': 'Тогекисс',
 
'Yanmega': 'Янмега',
 
'Yanmega': 'Янмега',
Строка 554: Строка 555:
 
'Heatran': 'Хитран',
 
'Heatran': 'Хитран',
 
'Regigigas': 'Реджигигас',
 
'Regigigas': 'Реджигигас',
'Giratina (Altered)': 'Гиратина',
+
'Giratina': 'Гиратина',
 
'Cresselia': 'Кресселия',
 
'Cresselia': 'Кресселия',
 
'Phione': 'Фионе',
 
'Phione': 'Фионе',
Строка 611: Строка 612:
 
'Leavanny': 'Ливанни',
 
'Leavanny': 'Ливанни',
 
'Venipede': 'Венипед',
 
'Venipede': 'Венипед',
'Whirlipede': 'Вћрлипед',
+
'Whirlipede': 'Вёрлипед',
 
'Scolipede': 'Сколипед',
 
'Scolipede': 'Сколипед',
 
'Cottonee': 'Коттони',
 
'Cottonee': 'Коттони',
Строка 635: Строка 636:
 
'Archen': 'Архен',
 
'Archen': 'Архен',
 
'Archeops': 'Археопс',
 
'Archeops': 'Археопс',
'Trubbish': 'Труббиш',
+
'Trubbish': 'Траббиш',
 
'Garbodor': 'Гарбодор',
 
'Garbodor': 'Гарбодор',
 
'Zorua': 'Зоруа',
 
'Zorua': 'Зоруа',
Строка 672: Строка 673:
 
'Eelektrik': 'Илектрик',
 
'Eelektrik': 'Илектрик',
 
'Eelektross': 'Илектрос',
 
'Eelektross': 'Илектрос',
'Elgyem': 'Элгайем',
+
'Elgyem': 'Элджием',
'Beheeyem': 'Бейием',
+
'Beheeyem': 'Бихием',
 
'Litwick': 'Литвик',
 
'Litwick': 'Литвик',
 
'Lampent': 'Лампент',
 
'Lampent': 'Лампент',
Строка 686: Строка 687:
 
'Accelgor': 'Акселгор',
 
'Accelgor': 'Акселгор',
 
'Stunfisk': 'Станфиск',
 
'Stunfisk': 'Станфиск',
'Mienfoo': 'Мин-фу',
+
'Mienfoo': 'Минфу',
'Mienshao': 'Мин-сяо',
+
'Mienshao': 'Миншао',
'Druddigon': 'Друдигон',
+
'Druddigon': 'Драддигон',
 
'Golett': 'Голет',
 
'Golett': 'Голет',
 
'Golurk': 'Голюрк',
 
'Golurk': 'Голюрк',
Строка 701: Строка 702:
 
'Durant': 'Дюрант',
 
'Durant': 'Дюрант',
 
'Deino': 'Дайно',
 
'Deino': 'Дайно',
'Zweilous': 'Цвайлус',
+
'Zweilous': 'Цвайлос',
 
'Hydreigon': 'Гидрайгон',
 
'Hydreigon': 'Гидрайгон',
 
'Larvesta': 'Ларвеста',
 
'Larvesta': 'Ларвеста',
 
'Volcarona': 'Вулкарона',
 
'Volcarona': 'Вулкарона',
'Cobalion': 'Кобальћн',
+
'Cobalion': 'Кобальён',
'Terrakion': 'Терракьћн',
+
'Terrakion': 'Терракьён',
'Virizion': 'Виризьћн',
+
'Virizion': 'Виризьён',
 
'Tornadus': 'Торнадий',
 
'Tornadus': 'Торнадий',
 
'Thundurus': 'Тандерий',
 
'Thundurus': 'Тандерий',
Строка 736: Строка 737:
 
'Litleo': 'Литлео',
 
'Litleo': 'Литлео',
 
'Pyroar': 'Пироар',
 
'Pyroar': 'Пироар',
'Flabebe': 'Флабебе',
+
'Flabébé': 'Флабебе',
 
'Floette': 'Флоэтта',
 
'Floette': 'Флоэтта',
 
'Florges': 'Флорджес',
 
'Florges': 'Флорджес',
Строка 751: Строка 752:
 
'Spritzee': 'Спритзи',
 
'Spritzee': 'Спритзи',
 
'Aromatisse': 'Ароматисс',
 
'Aromatisse': 'Ароматисс',
'Swirlix': 'Свћрликс',
+
'Swirlix': 'Свёрликс',
'Slurpuff': 'Слћрпафф',
+
'Slurpuff': 'Слёрпафф',
 
'Inkay': 'Инкей',
 
'Inkay': 'Инкей',
 
'Malamar': 'Маламар',
 
'Malamar': 'Маламар',
Строка 863: Строка 864:
 
'Buzzwole': 'Баззвоул',
 
'Buzzwole': 'Баззвоул',
 
'Pheromosa': 'Феромоза',
 
'Pheromosa': 'Феромоза',
'Xurkitree': 'Зћркитри',
+
'Xurkitree': 'Зёркитри',
 
'Celesteela': 'Селестила',
 
'Celesteela': 'Селестила',
 
'Kartana': 'Картана',
 
'Kartana': 'Картана',
Строка 896: Строка 897:
 
'Nickit': 'Никит',
 
'Nickit': 'Никит',
 
'Thievul': 'Тивул',
 
'Thievul': 'Тивул',
'Gossifleur': 'Госсифлћр',
+
'Gossifleur': 'Госсифлёр',
 
'Eldegoss': 'Элдегосс',
 
'Eldegoss': 'Элдегосс',
 
'Wooloo': 'Вулу',
 
'Wooloo': 'Вулу',
Строка 931: Строка 932:
 
'Obstagoon': 'Обстагун',
 
'Obstagoon': 'Обстагун',
 
'Perrserker': 'Перрсеркер',
 
'Perrserker': 'Перрсеркер',
'Cursola': 'Кћрсола',
+
'Cursola': 'Кёрсола',
 
"Sirfetch'd": "Сэрфеч'д",
 
"Sirfetch'd": "Сэрфеч'д",
 
'Mr. Rime': 'Райм',
 
'Mr. Rime': 'Райм',
Строка 938: Строка 939:
 
'Alcremie': 'Алкрими',
 
'Alcremie': 'Алкрими',
 
'Falinks': 'Фалинкс',
 
'Falinks': 'Фалинкс',
'Pincurchin': 'Пинкћрчин',
+
'Pincurchin': 'Пинкёрчин',
 
'Snom': 'Сном',
 
'Snom': 'Сном',
 
'Frosmoth': 'Фросмос',
 
'Frosmoth': 'Фросмос',
Строка 957: Строка 958:
 
'Zacian': 'Зациан',
 
'Zacian': 'Зациан',
 
'Zamazenta': 'Замазента',
 
'Zamazenta': 'Замазента',
'Eternatus': 'Этернатий'
+
'Eternatus': 'Этернатий',
 +
'Kubfu': 'Кубфу',
 +
'Urshifu': 'Уршифу',
 +
'Zarude': 'Заруд',
 +
'Regieleki': 'Реджиэлеки',
 +
'Regidrago': 'Реджидраго',
 +
'Glastrier': 'Гластриэ',
 +
'Spectrier': 'Спектриэ',
 +
'Calyrex': 'Калирекс',
 
}
 
}
/*
+
 
 
function convertType(type) {
 
function convertType(type) {
 
return Types[type];
 
return Types[type];
Строка 969: Строка 978:
  
 
function convertPokemonAttributes(bulbapediaParams, pokewikiParams, numberOfTypes) {
 
function convertPokemonAttributes(bulbapediaParams, pokewikiParams, numberOfTypes) {
pokewikiParams.push(bulbapediaParams[1]); // dex number
+
pokewikiParams.push(bulbapediaParams[1]) // dex number
pokewikiParams.push(convertPokemonName(bulbapediaParams[2])); // name
+
pokewikiParams.push(convertPokemonName(bulbapediaParams[2])) // name
  
let types = [];
+
var types = [];
for (let i = 1; i <= numberOfTypes; i++) {
+
for (var i = 1; i <= numberOfTypes; i++) {
let prefix = 'type' + (i > 1 ? i : '') + '=';
+
var prefix = 'type' + (i > 1 ? i : '') + '=';
 
types.push(bulbapediaParams[2 + i].startsWith(prefix) ? bulbapediaParams[2 + i].substr(prefix.length) : bulbapediaParams[2 + i]);
 
types.push(bulbapediaParams[2 + i].startsWith(prefix) ? bulbapediaParams[2 + i].substr(prefix.length) : bulbapediaParams[2 + i]);
 
}
 
}
Строка 980: Строка 989:
  
 
pokewikiParams.push(numberOfTypes);
 
pokewikiParams.push(numberOfTypes);
for (let type of types) {
+
for (var index in types) {
 +
var type = types[index];
 
pokewikiParams.push(convertType(type));
 
pokewikiParams.push(convertType(type));
 
}
 
}
Строка 986: Строка 996:
 
return pokewikiParams;
 
return pokewikiParams;
 
}
 
}
*/
+
 
/*
 
 
function convertLearnsetHeaderLine(line) {
 
function convertLearnsetHeaderLine(line) {
 
if (line.indexOf('Learnset') >= 0) {
 
if (line.indexOf('Learnset') >= 0) {
Строка 1004: Строка 1013:
 
return line;
 
return line;
 
}
 
}
*/
+
 
/*
 
 
function convertLearnsetLine(line) {
 
function convertLearnsetLine(line) {
let bulbapediaParams = line.substr(2, line.length - 4).split('|');
+
var bulbapediaParams = line.substr(2, line.length - 4).split('|');
  
 
if (bulbapediaParams[0] === 'Movehead/Level') {
 
if (bulbapediaParams[0] === 'Movehead/Level') {
return '{{Приемышапка/уровень|' + convertType(bulbapediaParams[1]) + '|' + bulbapediaParams[2] + '}}';
+
return '{{Приёмышапка/уровень|' + convertType(bulbapediaParams[1]) + '|' + bulbapediaParams[2] + '}}';
 
}
 
}
  
 
if (bulbapediaParams[0] === 'Movehead/TM') {
 
if (bulbapediaParams[0] === 'Movehead/TM') {
let pokewikiParams = ['Приемышапка/ТМ', convertType(bulbapediaParams[1])];
+
var pokewikiParams = ['Приёмышапка/ТМ', convertType(bulbapediaParams[1])];
for (let i = 2; i < bulbapediaParams.length; i++) {
+
for (var i = 2; i < bulbapediaParams.length; i++) {
 
pokewikiParams.push(bulbapediaParams[i] === 'no' ? 'нет' : bulbapediaParams[i]);
 
pokewikiParams.push(bulbapediaParams[i] === 'no' ? 'нет' : bulbapediaParams[i]);
 
}
 
}
Строка 1022: Строка 1030:
  
 
if (bulbapediaParams[0] === 'Movefoot') {
 
if (bulbapediaParams[0] === 'Movefoot') {
return '{{Приемыниз|' + convertType(bulbapediaParams[1]) + '|1}}';
+
var gens = parseInt(bulbapediaParams[2], 10);
 +
return '{{Приёмыниз|' + convertType(bulbapediaParams[1]) + '|' + (NUMBER_OF_GENS - gens + 1) + '}}';
 
}
 
}
  
 
if (!bulbapediaParams[0].startsWith('Moveentry/')) return line;
 
if (!bulbapediaParams[0].startsWith('Moveentry/')) return line;
  
let pokewikiParams = [];
+
var gens = parseInt(bulbapediaParams[0].split('/')[1], 10);
 
+
var pokewikiParams = ['Приёмы/Поколение' + (NUMBER_OF_GENS - gens + 1)];
let gens = parseInt(bulbapediaParams[0].split('/')[1], 10);
 
pokewikiParams.push('Приемы/Поколение' + (NUMBER_OF_GENS - gens + 1));
 
  
let numberOfTypes = bulbapediaParams[4].startsWith('type2=') ? 2 : 1;
+
var numberOfTypes = bulbapediaParams[4].startsWith('type2=') ? 2 : 1;
 
pokewikiParams = convertPokemonAttributes(bulbapediaParams, pokewikiParams, numberOfTypes);
 
pokewikiParams = convertPokemonAttributes(bulbapediaParams, pokewikiParams, numberOfTypes);
  
let levelsParam = bulbapediaParams.slice(6 + numberOfTypes).join('|');
+
var levelsParam = bulbapediaParams.slice(6 + numberOfTypes).join('|');
let numberOfParams = pokewikiParams.length + gens;
+
var numberOfParams = pokewikiParams.length + gens;
  
let subParams = [''];
+
var subParams = [''];
let tagMode = false;
+
var tagMode = false;
let tag = '';
+
var tag = '';
  
for (let i = 0; i <= levelsParam.length; i++) {
+
for (var i = 0; i <= levelsParam.length; i++) {
let char = i < levelsParam.length ? levelsParam[i] : '';
+
var char = i < levelsParam.length ? levelsParam[i] : '';
let prevChar = i > 0 ? levelsParam[i - 1] : '';
+
var prevChar = i > 0 ? levelsParam[i - 1] : '';
  
 
if (char === '{' && prevChar === '{') {
 
if (char === '{' && prevChar === '{') {
Строка 1057: Строка 1064:
 
if (tag.startsWith('Learned upon evolving')) {
 
if (tag.startsWith('Learned upon evolving')) {
 
subParams[subParams.length-1] = subParams[subParams.length-1] + '{{tt|ЭВ|Изучается при эволюции}}';
 
subParams[subParams.length-1] = subParams[subParams.length-1] + '{{tt|ЭВ|Изучается при эволюции}}';
 +
} else if (subParams[subParams.length-1].startsWith('{{tt|')) {
 +
subParams[subParams.length-1] = subParams[subParams.length-1].substr(0, subParams[subParams.length-1].length - 2) + tag + '}}';
 
} else {
 
} else {
 
subParams[subParams.length-1] = '{{tt|' + subParams[subParams.length-1].replace('{{tt|ЭВ|Изучается при эволюции}}', 'ЭВ') + '|' + tag + '}}';
 
subParams[subParams.length-1] = '{{tt|' + subParams[subParams.length-1].replace('{{tt|ЭВ|Изучается при эволюции}}', 'ЭВ') + '|' + tag + '}}';
Строка 1063: Строка 1072:
 
}
 
}
  
 +
// <br> is a delimeter between different games in the same gen
 
if (!tagMode && prevChar === '>' && subParams[subParams.length-1].endsWith('<br>')) {
 
if (!tagMode && prevChar === '>' && subParams[subParams.length-1].endsWith('<br>')) {
 
subParams[subParams.length-1] = subParams[subParams.length-1].replace('<br>', '');
 
subParams[subParams.length-1] = subParams[subParams.length-1].replace('<br>', '');
Строка 1075: Строка 1085:
 
subParams[subParams.length-1] = subParams[subParams.length-1] + char;
 
subParams[subParams.length-1] = subParams[subParams.length-1] + char;
 
} else {
 
} else {
let param = subParams.join('/');
+
var param = subParams.join('<br>');
 
subParams = [''];
 
subParams = [''];
  
if (param.startsWith('STAB=')) continue;
+
if (param.startsWith('STAB=') || param.startsWith('form=')) continue;
 
if (param.length === 0) param = '-';
 
if (param.length === 0) param = '-';
 
param = param.replace('Evo.', 'ЭВ')
 
param = param.replace('Evo.', 'ЭВ')
Строка 1095: Строка 1105:
 
return '{{' + pokewikiParams.join('|') + '}}';
 
return '{{' + pokewikiParams.join('|') + '}}';
 
}
 
}
*/
 
  
 
function convertLearnset(bulbapediaTable) {
 
function convertLearnset(bulbapediaTable) {
return bulbapediaTable;
+
var pokewikiTable = [];
/*
+
var lines = bulbapediaTable.split('\n');
let pokewikiTable = [];
+
for (var index in lines) {
for (let line of bulbapediaTable.split('\n')) {
+
var line = lines[index];
 
if (line.startsWith('=') && line.endsWith('=')) {
 
if (line.startsWith('=') && line.endsWith('=')) {
 
pokewikiTable.push(convertLearnsetHeaderLine(line));
 
pokewikiTable.push(convertLearnsetHeaderLine(line));
Строка 1109: Строка 1118:
 
}
 
}
 
return pokewikiTable.join('\n');
 
return pokewikiTable.join('\n');
*/
 
 
}
 
}

Текущая версия на 19:44, 8 июля 2022

var customizeToolbar = function() {
 
$( '#wpTextbox1' ).wikiEditor( 'addToToolbar', {
    'section': 'advanced',
    'group': 'insert',
    'tools':
    {
    	'bulba':
    	{
            label: 'Бульба-парсер',
            type: 'button',
            icon: 'http://wiki.pokeliga.com/w/images/1/18/30px-Bulbapedia_bulb.png', 
		    'action': {
		        'type': 'callback',
		            'execute': BulbaParser
		        }
    	}
    }
});

function BulbaParser(WikiEditorContext)
{
 var textarea = WikiEditorContext.$textarea[0];
 var start = textarea.selectionStart;
 var end = textarea.selectionEnd;
 var selected = textarea.value.substring(start, end);
 var converted = convertLearnset(selected);
 var newValue = textarea.value.substring(0, start) + converted + textarea.value.substring(end + 1);
 textarea.value = newValue;
}

};
 
if ( $.inArray( mw.config.get( 'wgAction' ), ['edit', 'submit'] ) !== -1 ) {
        mw.loader.using( 'user.options', function () {
                if ( mw.user.options.get('usebetatoolbar') ) {
                        mw.loader.using( 'ext.wikiEditor.toolbar', function () {
                                $(document).ready( customizeToolbar );
                        } );
                }
        } );
}

console.log("BulbaTools ready");

const Types = {
	'Bug': 'Насекомый',
	'Dark': 'Тёмный',
	'Dragon': 'Драконий',
	'Electric': 'Электрический',
	'Fairy': 'Волшебный',
	'Fighting': 'Боевой',
	'Fire': 'Огненный',
	'Flying': 'Летающий',
	'Ghost': 'Призрачный',
	'Grass': 'Травяной',
	'Ground': 'Земляной',
	'Ice': 'Ледяной',
	'Normal': 'Нормальный',
	'Poison': 'Ядовитый',
	'Psychic': 'Психический',
	'Rock': 'Каменный',
	'Steel': 'Стальной',
	'Water': 'Водный',
};
const NUMBER_OF_GENS = 8;
const PokemonNames = {
	'Bulbasaur': 'Бульбазавр',
	'Ivysaur': 'Ивизавр',
	'Venusaur': 'Венузавр',
	'Charmander': 'Чармандер',
	'Charmeleon': 'Чармилион',
	'Charizard': 'Чаризард',
	'Squirtle': 'Сквиртл',
	'Wartortle': 'Вортортл',
	'Blastoise': 'Бластойз',
	'Caterpie': 'Катерпи',
	'Metapod': 'Метапод',
	'Butterfree': 'Баттерфри',
	'Weedle': 'Видл',
	'Kakuna': 'Какуна',
	'Beedrill': 'Бидрилла',
	'Pidgey': 'Пиджи',
	'Pidgeotto': 'Пиджеотто',
	'Pidgeot': 'Пиджеот',
	'Rattata': 'Раттата',
	'Raticate': 'Ратикат',
	'Spearow': 'Спироу',
	'Fearow': 'Фироу',
	'Ekans': 'Иканс',
	'Arbok': 'Эрбок',
	'Pikachu': 'Пикачу',
	'Raichu': 'Райчу',
	'Sandshrew': 'Сендшрю',
	'Sandslash': 'Сендслеш',
	'Nidoran♀': 'Нидоранка',
	'Nidorina': 'Нидорина',
	'Nidoqueen': 'Нидоквин',
	'Nidoran♂': 'Нидоран',
	'Nidorino': 'Нидорино',
	'Nidoking': 'Нидокинг',
	'Clefairy': 'Клефейри',
	'Clefable': 'Клефабл',
	'Vulpix': 'Вульпикс',
	'Ninetales': 'Найнтэйлз',
	'Jigglypuff': 'Джигглипуф',
	'Wigglytuff': 'Вигглитуф',
	'Zubat': 'Зубат',
	'Golbat': 'Голбат',
	'Oddish': 'Оддиш',
	'Gloom': 'Глум',
	'Vileplume': 'Вилплум',
	'Paras': 'Парас',
	'Parasect': 'Парасект',
	'Venonat': 'Венонат',
	'Venomoth': 'Веномот',
	'Diglett': 'Диглетт',
	'Dugtrio': 'Дагтрио',
	'Meowth': 'Мяут',
	'Persian': 'Перс',
	'Psyduck': 'Псидак',
	'Golduck': 'Голдак',
	'Mankey': 'Мэнки',
	'Primeape': 'Примап',
	'Growlithe': 'Гроулит',
	'Arcanine': 'Арканин',
	'Poliwag': 'Поливаг',
	'Poliwhirl': 'Поливёрл',
	'Poliwrath': 'Полирас',
	'Abra': 'Абра',
	'Kadabra': 'Кадабра',
	'Alakazam': 'Алаказам',
	'Machop': 'Мачоп',
	'Machoke': 'Мачок',
	'Machamp': 'Мачемп',
	'Bellsprout': 'Беллспраут',
	'Weepinbell': 'Випинбелл',
	'Victreebel': 'Виктрибел',
	'Tentacool': 'Тентакул',
	'Tentacruel': 'Тентакруэль',
	'Geodude': 'Джеодуд',
	'Graveler': 'Гравелер',
	'Golem': 'Голем',
	'Ponyta': 'Понита',
	'Rapidash': 'Рапидаш',
	'Slowpoke': 'Слоупок',
	'Slowbro': 'Слоубро',
	'Magnemite': 'Магнемайт',
	'Magneton': 'Магнетон',
	"Farfetch'd": "Фарфеч'д",
	'Doduo': 'Додуо',
	'Dodrio': 'Додрио',
	'Seel': 'Силл',
	'Dewgong': 'Дюгонг',
	'Grimer': 'Граймер',
	'Muk': 'Макк',
	'Shellder': 'Шеллдер',
	'Cloyster': 'Клойстер',
	'Gastly': 'Гастли',
	'Haunter': 'Хонтер',
	'Gengar': 'Генгар',
	'Onix': 'Оникс',
	'Drowzee': 'Дроузи',
	'Hypno': 'Гипно',
	'Krabby': 'Крабби',
	'Kingler': 'Кинглер',
	'Voltorb': 'Волторб',
	'Electrode': 'Электрод',
	'Exeggcute': 'Экзегкут',
	'Exeggutor': 'Экзеггутор',
	'Cubone': 'Кубон',
	'Marowak': 'Маровак',
	'Hitmonlee': 'Хитмонли',
	'Hitmonchan': 'Хитмончан',
	'Lickitung': 'Ликитунг',
	'Koffing': 'Коффинг',
	'Weezing': 'Визинг',
	'Rhyhorn': 'Райхорн',
	'Rhydon': 'Райдон',
	'Chansey': 'Ченси',
	'Tangela': 'Тангела',
	'Kangaskhan': 'Кангасханна',
	'Horsea': 'Хорси',
	'Seadra': 'Сидра',
	'Goldeen': 'Голдин',
	'Seaking': 'Сикинг',
	'Staryu': 'Старью',
	'Starmie': 'Старми',
	'Mr. Mime': 'Майм',
	'Scyther': 'Сайтер',
	'Jynx': 'Джинкс',
	'Electabuzz': 'Электабазз',
	'Magmar': 'Магмар',
	'Pinsir': 'Пинсир',
	'Tauros': 'Таурос',
	'Magikarp': 'Магикарп',
	'Gyarados': 'Гярадос',
	'Lapras': 'Лапрас',
	'Ditto': 'Дитто',
	'Eevee': 'Иви',
	'Vaporeon': 'Вапореон',
	'Jolteon': 'Джолтеон',
	'Flareon': 'Флареон',
	'Porygon': 'Поригон',
	'Omanyte': 'Оманит',
	'Omastar': 'Омастар',
	'Kabuto': 'Кабуто',
	'Kabutops': 'Кабутопс',
	'Aerodactyl': 'Аэродактиль',
	'Snorlax': 'Снорлакс',
	'Articuno': 'Артикуно',
	'Zapdos': 'Запдос',
	'Moltres': 'Молтрес',
	'Dratini': 'Дратини',
	'Dragonair': 'Драгонир',
	'Dragonite': 'Драгонит',
	'Mewtwo': 'Мьюту',
	'Mew': 'Мью',
	'Chikorita': 'Чикорита',
	'Bayleef': 'Бэйлиф',
	'Meganium': 'Меганиум',
	'Cyndaquil': 'Синдаквил',
	'Quilava': 'Квилава',
	'Typhlosion': 'Тифложн',
	'Totodile': 'Тотодил',
	'Croconaw': 'Кроконав',
	'Feraligatr': 'Фералигатр',
	'Sentret': 'Сентрет',
	'Furret': 'Фуррет',
	'Hoothoot': 'Хут-хут',
	'Noctowl': 'Ноктаул',
	'Ledyba': 'Ледиба',
	'Ledian': 'Ледиан',
	'Spinarak': 'Спинарак',
	'Ariados': 'Ариадос',
	'Crobat': 'Кробат',
	'Chinchou': 'Чинчоу',
	'Lanturn': 'Лантурн',
	'Pichu': 'Пичу',
	'Cleffa': 'Клеффа',
	'Igglybuff': 'Игглибуф',
	'Togepi': 'Тогепи',
	'Togetic': 'Тогетик',
	'Natu': 'Нату',
	'Xatu': 'Ксату',
	'Mareep': 'Мэрип',
	'Flaaffy': 'Флаафи',
	'Ampharos': 'Амфарос',
	'Bellossom': 'Беллоссом',
	'Marill': 'Мэрилл',
	'Azumarill': 'Азумэрилл',
	'Sudowoodo': 'Судовудо',
	'Politoed': 'Политоед',
	'Hoppip': 'Хоппип',
	'Skiploom': 'Скиплум',
	'Jumpluff': 'Джамплафф',
	'Aipom': 'Айпом',
	'Sunkern': 'Санкерн',
	'Sunflora': 'Санфлора',
	'Yanma': 'Янма',
	'Wooper': 'Вупер',
	'Quagsire': 'Квагсир',
	'Espeon': 'Эспеон',
	'Umbreon': 'Умбреон',
	'Murkrow': 'Мёркроу',
	'Slowking': 'Слоукинг',
	'Misdreavus': 'Мисдривус',
	'Unown': 'Аноун',
	'Wobbuffet': 'Воббуффет',
	'Girafarig': 'Жирафариж',
	'Pineco': 'Пинеко',
	'Forretress': 'Форретресс',
	'Dunsparce': 'Данспарс',
	'Gligar': 'Глигар',
	'Steelix': 'Стиликс',
	'Snubbull': 'Снаббул',
	'Granbull': 'Грэнбул',
	'Qwilfish': 'Квилфиш',
	'Scizor': 'Сизор',
	'Shuckle': 'Шакл',
	'Heracross': 'Геракросс',
	'Sneasel': 'Снизил',
	'Teddiursa': 'Теддиурса',
	'Ursaring': 'Урсаринг',
	'Slugma': 'Слагма',
	'Magcargo': 'Магкарго',
	'Swinub': 'Свинуб',
	'Piloswine': 'Пилосвин',
	'Corsola': 'Корсола',
	'Remoraid': 'Реморейд',
	'Octillery': 'Октилерия',
	'Delibird': 'Делибёрд',
	'Mantine': 'Мантин',
	'Skarmory': 'Скармори',
	'Houndour': 'Хондар',
	'Houndoom': 'Хондум',
	'Kingdra': 'Кингдра',
	'Phanpy': 'Фанпи',
	'Donphan': 'Донфан',
	'Porygon2': 'Поригон2',
	'Stantler': 'Стантлер',
	'Smeargle': 'Смиргл',
	'Tyrogue': 'Тирог',
	'Hitmontop': 'Хитмонтоп',
	'Smoochum': 'Смучум',
	'Elekid': 'Элекид',
	'Magby': 'Магби',
	'Miltank': 'Милтанк',
	'Blissey': 'Блисси',
	'Raikou': 'Райко',
	'Entei': 'Энтей',
	'Suicune': 'Суйкун',
	'Larvitar': 'Ларвитар',
	'Pupitar': 'Пупитар',
	'Tyranitar': 'Тиранитар',
	'Lugia': 'Лугия',
	'Ho-Oh': 'Хо-ох',
	'Celebi': 'Селеби',
	'Treecko': 'Трикко',
	'Grovyle': 'Гроувил',
	'Sceptile': 'Септил',
	'Torchic': 'Торчик',
	'Combusken': 'Комбускен',
	'Blaziken': 'Блазикен',
	'Mudkip': 'Мадкип',
	'Marshtomp': 'Марштомп',
	'Swampert': 'Свамперт',
	'Poochyena': 'Почена',
	'Mightyena': 'Майтена',
	'Zigzagoon': 'Зигзагун',
	'Linoone': 'Линун',
	'Wurmple': 'Вурмпл',
	'Silcoon': 'Силкун',
	'Beautifly': 'Бьютифлай',
	'Cascoon': 'Каскун',
	'Dustox': 'Дастокс',
	'Lotad': 'Лотад',
	'Lombre': 'Ломбрэ',
	'Ludicolo': 'Лудиколо',
	'Seedot': 'Сидот',
	'Nuzleaf': 'Назлиф',
	'Shiftry': 'Шифтри',
	'Taillow': 'Тэйллоу',
	'Swellow': 'Свеллоу',
	'Wingull': 'Вингал',
	'Pelipper': 'Пелиппер',
	'Ralts': 'Ральтс',
	'Kirlia': 'Кирлия',
	'Gardevoir': 'Гардевуар',
	'Surskit': 'Сурскит',
	'Masquerain': 'Маскирейн',
	'Shroomish': 'Шрумиш',
	'Breloom': 'Брелум',
	'Slakoth': 'Слакос',
	'Vigoroth': 'Вигорос',
	'Slaking': 'Слакинг',
	'Nincada': 'Нинкада',
	'Ninjask': 'Нинджаск',
	'Shedinja': 'Шединья',
	'Whismur': 'Висмур',
	'Loudred': 'Лаудред',
	'Exploud': 'Эксплауд',
	'Makuhita': 'Макухита',
	'Hariyama': 'Харияма',
	'Azurill': 'Азурилл',
	'Nosepass': 'Носпасс',
	'Skitty': 'Скитти',
	'Delcatty': 'Деликатти',
	'Sableye': 'Саблай',
	'Mawile': 'Мавайл',
	'Aron': 'Арон',
	'Lairon': 'Лайрон',
	'Aggron': 'Аггрон',
	'Meditite': 'Медитит',
	'Medicham': 'Медичам',
	'Electrike': 'Электрайк',
	'Manectric': 'Манектрик',
	'Plusle': 'Плюсл',
	'Minun': 'Минун',
	'Volbeat': 'Волбит',
	'Illumise': 'Иллюмайз',
	'Roselia': 'Розалия',
	'Gulpin': 'Гульпин',
	'Swalot': 'Свалот',
	'Carvanha': 'Карванья',
	'Sharpedo': 'Шарпедо',
	'Wailmer': 'Вэйлмир',
	'Wailord': 'Вэйлорд',
	'Numel': 'Нумель',
	'Camerupt': 'Камерупт',
	'Torkoal': 'Торкол',
	'Spoink': 'Споинк',
	'Grumpig': 'Грумпиг',
	'Spinda': 'Спинда',
	'Trapinch': 'Трапинч',
	'Vibrava': 'Вибрава',
	'Flygon': 'Флайгон',
	'Cacnea': 'Какнея',
	'Cacturne': 'Кактурн',
	'Swablu': 'Сваблю',
	'Altaria': 'Алтария',
	'Zangoose': 'Зангус',
	'Seviper': 'Севипер',
	'Lunatone': 'Лунатон',
	'Solrock': 'Солрок',
	'Barboach': 'Барбоч',
	'Whiscash': 'Вискаш',
	'Corphish': 'Корфиш',
	'Crawdaunt': 'Крадонт',
	'Baltoy': 'Балтой',
	'Claydol': 'Клэйдол',
	'Lileep': 'Лилип',
	'Cradily': 'Крадили',
	'Anorith': 'Анорит',
	'Armaldo': 'Армальдо',
	'Feebas': 'Фибас',
	'Milotic': 'Милотик',
	'Castform': 'Кастформ',
	'Kecleon': 'Кеклеон',
	'Shuppet': 'Шаппет',
	'Banette': 'Банетта',
	'Duskull': 'Даскалл',
	'Dusclops': 'Дасклопс',
	'Tropius': 'Тропиус',
	'Chimecho': 'Чимеко',
	'Absol': 'Абсол',
	'Wynaut': 'Вайнот',
	'Snorunt': 'Снорант',
	'Glalie': 'Глали',
	'Spheal': 'Сфил',
	'Sealeo': 'Силео',
	'Walrein': 'Валрейн',
	'Clamperl': 'Кламперл',
	'Huntail': 'Хантейл',
	'Gorebyss': 'Горбисс',
	'Relicanth': 'Реликант',
	'Luvdisc': 'Лавдиск',
	'Bagon': 'Багон',
	'Shelgon': 'Шеллгон',
	'Salamence': 'Саламенс',
	'Beldum': 'Белдам',
	'Metang': 'Метанг',
	'Metagross': 'Метагросс',
	'Regirock': 'Реджирок',
	'Regice': 'Реджиайс',
	'Registeel': 'Реджистил',
	'Latias': 'Латиас',
	'Latios': 'Латиос',
	'Kyogre': 'Кайогр',
	'Groudon': 'Градон',
	'Rayquaza': 'Рекваза',
	'Jirachi': 'Джирачи',
	'Deoxys': 'Деоксис',
	'Deoxys': 'Деоксис',
	'Deoxys': 'Деоксис',
	'Deoxys': 'Деоксис',
	'Turtwig': 'Туртвиг',
	'Grotle': 'Гротл',
	'Torterra': 'Тортерра',
	'Chimchar': 'Чимчар',
	'Monferno': 'Монферно',
	'Infernape': 'Инфернейп',
	'Piplup': 'Пиплап',
	'Prinplup': 'Принплап',
	'Empoleon': 'Эмполеон',
	'Starly': 'Старли',
	'Staravia': 'Старэвия',
	'Staraptor': 'Стараптор',
	'Bidoof': 'Бидуф',
	'Bibarel': 'Бибарель',
	'Kricketot': 'Крикетот',
	'Kricketune': 'Крикетьюн',
	'Shinx': 'Шинкс',
	'Luxio': 'Люксио',
	'Luxray': 'Люксрэй',
	'Budew': 'Бадью',
	'Roserade': 'Роузрейд',
	'Cranidos': 'Крэнидос',
	'Rampardos': 'Рампардос',
	'Shieldon': 'Шилдон',
	'Bastiodon': 'Баститодон',
	'Burmy': 'Бёрми',
	'Wormadam': 'Вормадам',
	'Mothim': 'Мотим',
	'Combee': 'Комби',
	'Vespiquen': 'Веспиквин',
	'Pachirisu': 'Пачирису',
	'Buizel': 'Буизель',
	'Floatzel': 'Флотзел',
	'Cherubi': 'Черуби',
	'Cherrim': 'Черрим',
	'Shellos': 'Шеллос',
	'Gastrodon': 'Гастродон',
	'Ambipom': 'Эмбипом',
	'Drifloon': 'Дрифлун',
	'Drifblim': 'Дрифблим',
	'Buneary': 'Банири',
	'Lopunny': 'Лопанни',
	'Mismagius': 'Мисмагиус',
	'Honchkrow': 'Ханчкроу',
	'Glameow': 'Глэймяу',
	'Purugly': 'Парагли',
	'Chingling': 'Чинлинг',
	'Stunky': 'Станки',
	'Skuntank': 'Скантанк',
	'Bronzor': 'Бронзор',
	'Bronzong': 'Бронзонг',
	'Bonsly': 'Бонслай',
	'Mime Jr.': 'Майм Мл.',
	'Happiny': 'Хэппини',
	'Chatot': 'Чатот',
	'Spiritomb': 'Спиритомб',
	'Gible': 'Гибл',
	'Gabite': 'Габит',
	'Garchomp': 'Гарчомп',
	'Munchlax': 'Манчлакс',
	'Riolu': 'Риолу',
	'Lucario': 'Лукарио',
	'Hippopotas': 'Гиппопотас',
	'Hippowdon': 'Гипподон',
	'Skorupi': 'Скорупи',
	'Drapion': 'Драпион',
	'Croagunk': 'Кроганк',
	'Toxicroak': 'Токсикроук',
	'Carnivine': 'Карнивайн',
	'Finneon': 'Финнеон',
	'Lumineon': 'Люминеон',
	'Mantyke': 'Мэнтайк',
	'Snover': 'Сновер',
	'Abomasnow': 'Абомасноу',
	'Weavile': 'Вивайл',
	'Magnezone': 'Магнезон',
	'Lickilicky': 'Ликилики',
	'Rhyperior': 'Райпериор',
	'Tangrowth': 'Тангроу',
	'Electivire': 'Элективайр',
	'Magmortar': 'Магмортар',
	'Togekiss': 'Тогекисс',
	'Yanmega': 'Янмега',
	'Leafeon': 'Лифеон',
	'Glaceon': 'Глэсеон',
	'Gliscor': 'Глайскор',
	'Mamoswine': 'Мамосвин',
	'Porygon-Z': 'Поригон-Z',
	'Gallade': 'Галлэйд',
	'Probopass': 'Пробопасс',
	'Dusknoir': 'Даскнуар',
	'Froslass': 'Фросласс',
	'Rotom': 'Ротом',
	'Uxie': 'Юкси',
	'Mesprit': 'Месприт',
	'Azelf': 'Азелф',
	'Dialga': 'Диалга',
	'Palkia': 'Палкиа',
	'Heatran': 'Хитран',
	'Regigigas': 'Реджигигас',
	'Giratina': 'Гиратина',
	'Cresselia': 'Кресселия',
	'Phione': 'Фионе',
	'Manaphy': 'Манафи',
	'Darkrai': 'Даркрай',
	'Shaymin': 'Шеймин',
	'Arceus': 'Арсеус',
	'Victini': 'Виктини',
	'Snivy': 'Снайви',
	'Servine': 'Сервайн',
	'Serperior': 'Серпериор',
	'Tepig': 'Тепиг',
	'Pignite': 'Пигнит',
	'Emboar': 'Эмбор',
	'Oshawott': 'Ошавот',
	'Dewott': 'Девот',
	'Samurott': 'Самурот',
	'Patrat': 'Патрат',
	'Watchog': 'Вачог',
	'Lillipup': 'Лилипап',
	'Herdier': 'Гердьер',
	'Stoutland': 'Штотланд',
	'Purrloin': 'Пурлойн',
	'Liepard': 'Лайпард',
	'Pansage': 'Пансейж',
	'Simisage': 'Симисейж',
	'Pansear': 'Пансир',
	'Simisear': 'Симисир',
	'Panpour': 'Панпур',
	'Simipour': 'Симипур',
	'Munna': 'Мунна',
	'Musharna': 'Мушарна',
	'Pidove': 'Пидав',
	'Tranquill': 'Транквил',
	'Unfezant': 'Анфезант',
	'Blitzle': 'Блицил',
	'Zebstrika': 'Зебстрика',
	'Roggenrola': 'Роггенрола',
	'Boldore': 'Болдор',
	'Gigalith': 'Гигалит',
	'Woobat': 'Вубат',
	'Swoobat': 'Свубат',
	'Drilbur': 'Дрилбур',
	'Excadrill': 'Эскадрил',
	'Audino': 'Аудино',
	'Timburr': 'Тимбур',
	'Gurdurr': 'Гурдур',
	'Conkeldurr': 'Конкельдур',
	'Tympole': 'Таймпол',
	'Palpitoad': 'Палпитод',
	'Seismitoad': 'Сейсмитод',
	'Throh': 'Тро',
	'Sawk': 'Соук',
	'Sewaddle': 'Сивадл',
	'Swadloon': 'Свадлун',
	'Leavanny': 'Ливанни',
	'Venipede': 'Венипед',
	'Whirlipede': 'Вёрлипед',
	'Scolipede': 'Сколипед',
	'Cottonee': 'Коттони',
	'Whimsicott': 'Вимсикотт',
	'Petilil': 'Питилил',
	'Lilligant': 'Лилигант',
	'Basculin': 'Баскулин',
	'Sandile': 'Сандил',
	'Krokorok': 'Крокорок',
	'Krookodile': 'Крукодил',
	'Darumaka': 'Дарумака',
	'Darmanitan': 'Дарманитан',
	'Maractus': 'Марактус',
	'Dwebble': 'Двебл',
	'Crustle': 'Крастл',
	'Scraggy': 'Скрагги',
	'Scrafty': 'Скрафти',
	'Sigilyph': 'Сигилиф',
	'Yamask': 'Ямаск',
	'Cofagrigus': 'Кофагриг',
	'Tirtouga': 'Тиртога',
	'Carracosta': 'Карракоста',
	'Archen': 'Архен',
	'Archeops': 'Археопс',
	'Trubbish': 'Траббиш',
	'Garbodor': 'Гарбодор',
	'Zorua': 'Зоруа',
	'Zoroark': 'Зороарк',
	'Minccino': 'Минцино',
	'Cinccino': 'Синцино',
	'Gothita': 'Готита',
	'Gothorita': 'Готорита',
	'Gothitelle': 'Готитель',
	'Solosis': 'Солосий',
	'Duosion': 'Дуосион',
	'Reuniclus': 'Реюниклий',
	'Ducklett': 'Даклетта',
	'Swanna': 'Свана',
	'Vanillite': 'Ванилит',
	'Vanillish': 'Ванилиш',
	'Vanilluxe': 'Ванилюкс',
	'Deerling': 'Дирлинг',
	'Sawsbuck': 'Сосбак',
	'Emolga': 'Эмолга',
	'Karrablast': 'Каррабласт',
	'Escavalier': 'Эскавальер',
	'Foongus': 'Фунг',
	'Amoonguss': 'Амунг',
	'Frillish': 'Фриллиш',
	'Jellicent': 'Желесент',
	'Alomomola': 'Аломомола',
	'Joltik': 'Джолтик',
	'Galvantula': 'Гальвантул',
	'Ferroseed': 'Ферросид',
	'Ferrothorn': 'Ферроторн',
	'Klink': 'Клинк',
	'Klang': 'Кланг',
	'Klinklang': 'Клинкланг',
	'Tynamo': 'Тайнамо',
	'Eelektrik': 'Илектрик',
	'Eelektross': 'Илектрос',
	'Elgyem': 'Элджием',
	'Beheeyem': 'Бихием',
	'Litwick': 'Литвик',
	'Lampent': 'Лампент',
	'Chandelure': 'Канделюр',
	'Axew': 'Аксю',
	'Fraxure': 'Фраксюр',
	'Haxorus': 'Гаксорий',
	'Cubchoo': 'Кабчу',
	'Beartic': 'Беартик',
	'Cryogonal': 'Криогонал',
	'Shelmet': 'Шелм',
	'Accelgor': 'Акселгор',
	'Stunfisk': 'Станфиск',
	'Mienfoo': 'Минфу',
	'Mienshao': 'Миншао',
	'Druddigon': 'Драддигон',
	'Golett': 'Голет',
	'Golurk': 'Голюрк',
	'Pawniard': 'Поньярд',
	'Bisharp': 'Бишарп',
	'Bouffalant': 'Буфалант',
	'Rufflet': 'Рафлет',
	'Braviary': 'Бравьяри',
	'Vullaby': 'Вуллаби',
	'Mandibuzz': 'Мандибазз',
	'Heatmor': 'Хитмор',
	'Durant': 'Дюрант',
	'Deino': 'Дайно',
	'Zweilous': 'Цвайлос',
	'Hydreigon': 'Гидрайгон',
	'Larvesta': 'Ларвеста',
	'Volcarona': 'Вулкарона',
	'Cobalion': 'Кобальён',
	'Terrakion': 'Терракьён',
	'Virizion': 'Виризьён',
	'Tornadus': 'Торнадий',
	'Thundurus': 'Тандерий',
	'Reshiram': 'Реширам',
	'Zekrom': 'Зекром',
	'Landorus': 'Ландорий',
	'Kyurem': 'Кюрем',
	'Keldeo': 'Келдио',
	'Meloetta': 'Мелоэтта',
	'Genesect': 'Генесект',
	'Chespin': 'Чеспин',
	'Quilladin': 'Квилладин',
	'Chesnaught': 'Чеснаут',
	'Fennekin': 'Феннекин',
	'Braixen': 'Брейксен',
	'Delphox': 'Дельфокс',
	'Froakie': 'Фроки',
	'Frogadier': 'Фрогадир',
	'Greninja': 'Грениндзя',
	'Bunnelby': 'Баннелби',
	'Diggersby': 'Диггерсби',
	'Fletchling': 'Флетчлинг',
	'Fletchinder': 'Флетчиндер',
	'Talonflame': 'Тэлонфлейм',
	'Scatterbug': 'Скаттербаг',
	'Spewpa': 'Спьюпа',
	'Vivillon': 'Вивийон',
	'Litleo': 'Литлео',
	'Pyroar': 'Пироар',
	'Flabébé': 'Флабебе',
	'Floette': 'Флоэтта',
	'Florges': 'Флорджес',
	'Skiddo': 'Скиддо',
	'Gogoat': 'Гогоат',
	'Pancham': 'Панчем',
	'Pangoro': 'Пангоро',
	'Furfrou': 'Фурфру',
	'Espurr': 'Эспурр',
	'Meowstic': 'Мяустик',
	'Honedge': 'Хонэдж',
	'Doublade': 'Даблэйд',
	'Aegislash': 'Эгислэш',
	'Spritzee': 'Спритзи',
	'Aromatisse': 'Ароматисс',
	'Swirlix': 'Свёрликс',
	'Slurpuff': 'Слёрпафф',
	'Inkay': 'Инкей',
	'Malamar': 'Маламар',
	'Binacle': 'Бинакл',
	'Barbaracle': 'Барбаракл',
	'Skrelp': 'Скрелп',
	'Dragalge': 'Драгалге',
	'Clauncher': 'Клончер',
	'Clawitzer': 'Кловитцер',
	'Helioptile': 'Гелиоптил',
	'Heliolisk': 'Гелиолиск',
	'Tyrunt': 'Тирант',
	'Tyrantrum': 'Тирантрум',
	'Amaura': 'Амаура',
	'Aurorus': 'Аврорий',
	'Sylveon': 'Сильвеон',
	'Hawlucha': 'Холуча',
	'Dedenne': 'Деденне',
	'Carbink': 'Карбинк',
	'Goomy': 'Гуми',
	'Sliggoo': 'Слиггу',
	'Goodra': 'Гудра',
	'Klefki': 'Клефки',
	'Phantump': 'Фантамп',
	'Trevenant': 'Тревенант',
	'Pumpkaboo': 'Пампкабу',
	'Gourgeist': 'Горгайст',
	'Bergmite': 'Бергмайт',
	'Avalugg': 'Авалагг',
	'Noibat': 'Нойбат',
	'Noivern': 'Нойверн',
	'Xerneas': 'Ксерний',
	'Yveltal': 'Ивелталь',
	'Zygarde': 'Зигард',
	'Diancie': 'Дианси',
	'Hoopa': 'Хупа',
	'Volcanion': 'Вулканьон',
	'Rowlet': 'Раулет',
	'Dartrix': 'Дартрикс',
	'Decidueye': 'Десиджуай',
	'Litten': 'Литтен',
	'Torracat': 'Торракэт',
	'Incineroar': 'Инсинероар',
	'Popplio': 'Попплио',
	'Brionne': 'Брионна',
	'Primarina': 'Примарина',
	'Pikipek': 'Пикипек',
	'Trumbeak': 'Трамбик',
	'Toucannon': 'Тукэннон',
	'Yungoos': 'Янгус',
	'Gumshoos': 'Гамшус',
	'Grubbin': 'Граббин',
	'Charjabug': 'Чарджабаг',
	'Vikavolt': 'Викавольт',
	'Crabrawler': 'Краброулер',
	'Crabominable': 'Крабоминэбл',
	'Oricorio': 'Орикорио',
	'Cutiefly': 'Кьютифлай',
	'Ribombee': 'Рибомби',
	'Rockruff': 'Рокрафф',
	'Lycanroc': 'Ликанрок',
	'Wishiwashi': 'Вишиваши',
	'Mareanie': 'Марини',
	'Toxapex': 'Токсапекс',
	'Mudbray': 'Мадбрэй',
	'Mudsdale': 'Мадсдэйл',
	'Dewpider': 'Дьюпайдер',
	'Araquanid': 'Аракванид',
	'Fomantis': 'Фомантис',
	'Lurantis': 'Лурантис',
	'Morelull': 'Морелалл',
	'Shiinotic': 'Шиинотик',
	'Salandit': 'Саландит',
	'Salazzle': 'Салаззл',
	'Stufful': 'Стаффул',
	'Bewear': 'Бевеар',
	'Bounsweet': 'Баунсвит',
	'Steenee': 'Стини',
	'Tsareena': 'Царина',
	'Comfey': 'Комфей',
	'Oranguru': 'Орангуру',
	'Passimian': 'Пассимиан',
	'Wimpod': 'Вимпод',
	'Golisopod': 'Голизопод',
	'Sandygast': 'Сэндигаст',
	'Palossand': 'Палоссэнд',
	'Pyukumuku': 'Пюкумуку',
	'Type: Null': 'Тип: Нуль',
	'Silvally': 'Сильвалли',
	'Minior': 'Миниор',
	'Komala': 'Комала',
	'Turtonator': 'Туртонатор',
	'Togedemaru': 'Тогедемару',
	'Mimikyu': 'Мимикю',
	'Bruxish': 'Браксиш',
	'Drampa': 'Дрампа',
	'Dhelmise': 'Делмайз',
	'Jangmo-o': 'Джангмо-о',
	'Hakamo-o': 'Хакамо-о',
	'Kommo-o': 'Коммо-о',
	'Tapu Koko': 'Тапу Коко',
	'Tapu Lele': 'Тапу Леле',
	'Tapu Bulu': 'Тапу Булу',
	'Tapu Fini': 'Тапу Фини',
	'Cosmog': 'Космог',
	'Cosmoem': 'Космоэм',
	'Solgaleo': 'Солгалео',
	'Lunala': 'Лунала',
	'Nihilego': 'Нихилэго',
	'Buzzwole': 'Баззвоул',
	'Pheromosa': 'Феромоза',
	'Xurkitree': 'Зёркитри',
	'Celesteela': 'Селестила',
	'Kartana': 'Картана',
	'Guzzlord': 'Газзлорд',
	'Necrozma': 'Некрозма',
	'Magearna': 'Магиана',
	'Marshadow': 'Маршедоу',
	'Poipole': 'Пойпоул',
	'Naganadel': 'Наганадел',
	'Stakataka': 'Стакатака',
	'Blacephalon': 'Блацефалон',
	'Zeraora': 'Зераора',
	'Meltan': 'Мелтан',
	'Melmetal': 'Мелметал',
	'Grookey': 'Груки',
	'Thwackey': 'Твеки',
	'Rillaboom': 'Риллабум',
	'Scorbunny': 'Скорбанни',
	'Raboot': 'Рэбут',
	'Cinderace': 'Синдерейс',
	'Sobble': 'Соббл',
	'Drizzile': 'Дриззайл',
	'Inteleon': 'Интелеон',
	'Skwovet': 'Сквовет',
	'Greedent': 'Гридент',
	'Rookidee': 'Рукиди',
	'Corvisquire': 'Корвисквайр',
	'Corviknight': 'Корвинайт',
	'Blipbug': 'Блипбаг',
	'Dottler': 'Доттлер',
	'Orbeetle': 'Орбитл',
	'Nickit': 'Никит',
	'Thievul': 'Тивул',
	'Gossifleur': 'Госсифлёр',
	'Eldegoss': 'Элдегосс',
	'Wooloo': 'Вулу',
	'Dubwool': 'Дабвул',
	'Chewtle': 'Чьютл',
	'Drednaw': 'Дредно',
	'Yamper': 'Ямпер',
	'Boltund': 'Болтунд',
	'Rolycoly': 'Роликоли',
	'Carkol': 'Каркол',
	'Coalossal': 'Коалоссал',
	'Applin': 'Эпплин',
	'Flapple': 'Флэппл',
	'Appletun': 'Эпплтан',
	'Silicobra': 'Силикобра',
	'Sandaconda': 'Сандаконда',
	'Cramorant': 'Краморант',
	'Arrokuda': 'Аррокуда',
	'Barraskewda': 'Барраскюда',
	'Toxel': 'Токсел',
	'Toxtricity': 'Токстрисити',
	'Sizzlipede': 'Сиззлипед',
	'Centiskorch': 'Сентискорч',
	'Clobbopus': 'Клоббопус',
	'Grapploct': 'Грапплокт',
	'Sinistea': 'Синисти',
	'Polteageist': 'Полтигейст',
	'Hatenna': 'Хаттена',
	'Hattrem': 'Хаттрем',
	'Hatterene': 'Хаттерин',
	'Impidimp': 'Импидимп',
	'Morgrem': 'Моргрем',
	'Grimmsnarl': 'Гриммснарл',
	'Obstagoon': 'Обстагун',
	'Perrserker': 'Перрсеркер',
	'Cursola': 'Кёрсола',
	"Sirfetch'd": "Сэрфеч'д",
	'Mr. Rime': 'Райм',
	'Runerigus': 'Рунриг',
	'Milcery': 'Милсери',
	'Alcremie': 'Алкрими',
	'Falinks': 'Фалинкс',
	'Pincurchin': 'Пинкёрчин',
	'Snom': 'Сном',
	'Frosmoth': 'Фросмос',
	'Stonjourner': 'Стонджорнер',
	'Eiscue': 'Айскью',
	'Indeedee': 'Индиди',
	'Morpeko': 'Морпеко',
	'Cufant': 'Куфант',
	'Copperajah': 'Коппераджа',
	'Dracozolt': 'Дракозолт',
	'Arctozolt': 'Арктозолт',
	'Dracovish': 'Драковиш',
	'Arctovish': 'Арктовиш',
	'Duraludon': 'Дюралудон',
	'Dreepy': 'Дрипи',
	'Drakloak': 'Драклоук',
	'Dragapult': 'Драгапульт',
	'Zacian': 'Зациан',
	'Zamazenta': 'Замазента',
	'Eternatus': 'Этернатий',
	'Kubfu': 'Кубфу',
	'Urshifu': 'Уршифу',
	'Zarude': 'Заруд',
	'Regieleki': 'Реджиэлеки',
	'Regidrago': 'Реджидраго',
	'Glastrier': 'Гластриэ',
	'Spectrier': 'Спектриэ',
	'Calyrex': 'Калирекс',
}

function convertType(type) {
	return Types[type];
}

function convertPokemonName(pokemonName) {
	return PokemonNames[pokemonName];
}

function convertPokemonAttributes(bulbapediaParams, pokewikiParams, numberOfTypes) {
	pokewikiParams.push(bulbapediaParams[1]) // dex number
	pokewikiParams.push(convertPokemonName(bulbapediaParams[2])) // name

	var types = [];
	for (var i = 1; i <= numberOfTypes; i++) {
		var prefix = 'type' + (i > 1 ? i : '') + '=';
		types.push(bulbapediaParams[2 + i].startsWith(prefix) ? bulbapediaParams[2 + i].substr(prefix.length) : bulbapediaParams[2 + i]);
	}
	if (types.length === 1) types.push(types[0]);

	pokewikiParams.push(numberOfTypes);
	for (var index in types) {
		var type = types[index];
		pokewikiParams.push(convertType(type));
	}

	return pokewikiParams;
}

function convertLearnsetHeaderLine(line) {
	if (line.indexOf('Learnset') >= 0) {
		return '==Изучение==';
	}

	if (line.indexOf('By [[Level|leveling up]]') >= 0) {
		return '===При [[Уровень|повышении уровня]]===';
	}

	if (line.indexOf('By [[TM]]') >= 0 || line.indexOf('By [[HM]]') >= 0 || line.indexOf('By [[TR]]') >= 0) {
		source = line.split('By ')[1].split('=')[0];
		return '===С помощью ' + source + '===';
	}

	return line;
}

function convertLearnsetLine(line) {
	var bulbapediaParams = line.substr(2, line.length - 4).split('|');

	if (bulbapediaParams[0] === 'Movehead/Level') {
		return '{{Приёмышапка/уровень|' + convertType(bulbapediaParams[1]) + '|' + bulbapediaParams[2] + '}}';
	}

	if (bulbapediaParams[0] === 'Movehead/TM') {
		var pokewikiParams = ['Приёмышапка/ТМ', convertType(bulbapediaParams[1])];
		for (var i = 2; i < bulbapediaParams.length; i++) {
			pokewikiParams.push(bulbapediaParams[i] === 'no' ? 'нет' : bulbapediaParams[i]);
		}
		return '{{' + pokewikiParams.join('|') + '}}';
	}

	if (bulbapediaParams[0] === 'Movefoot') {
		var gens = parseInt(bulbapediaParams[2], 10);
		return '{{Приёмыниз|' + convertType(bulbapediaParams[1]) + '|' + (NUMBER_OF_GENS - gens + 1) + '}}';
	}

	if (!bulbapediaParams[0].startsWith('Moveentry/')) return line;

	var gens = parseInt(bulbapediaParams[0].split('/')[1], 10);
	var pokewikiParams = ['Приёмы/Поколение' + (NUMBER_OF_GENS - gens + 1)];

	var numberOfTypes = bulbapediaParams[4].startsWith('type2=') ? 2 : 1;
	pokewikiParams = convertPokemonAttributes(bulbapediaParams, pokewikiParams, numberOfTypes);

	var levelsParam = bulbapediaParams.slice(6 + numberOfTypes).join('|');
	var numberOfParams = pokewikiParams.length + gens;

	var subParams = [''];
	var tagMode = false;
	var tag = '';

	for (var i = 0; i <= levelsParam.length; i++) {
		var char = i < levelsParam.length ? levelsParam[i] : '';
		var prevChar = i > 0 ? levelsParam[i - 1] : '';

		if (char === '{' && prevChar === '{') {
			while (subParams[subParams.length-1].endsWith('{')) {
				subParams[subParams.length-1] = subParams[subParams.length-1].substr(0, subParams.length - 1);
			}
			tagMode = true;
			tag = '';
		}

		if (tagMode && char === '}' && prevChar === '}') {
			if (tag.startsWith('Learned upon evolving')) {
				subParams[subParams.length-1] = subParams[subParams.length-1] + '{{tt|ЭВ|Изучается при эволюции}}';
			} else if (subParams[subParams.length-1].startsWith('{{tt|')) {
				subParams[subParams.length-1] = subParams[subParams.length-1].substr(0, subParams[subParams.length-1].length - 2) + tag + '}}';
			} else {
				subParams[subParams.length-1] = '{{tt|' + subParams[subParams.length-1].replace('{{tt|ЭВ|Изучается при эволюции}}', 'ЭВ') + '|' + tag + '}}';
			}
			tagMode = false;
		}

		// <br> is a delimeter between different games in the same gen
		if (!tagMode && prevChar === '>' && subParams[subParams.length-1].endsWith('<br>')) {
			subParams[subParams.length-1] = subParams[subParams.length-1].replace('<br>', '');
			subParams.push('');
		}

		if (!(char in {'{':1, '}':1})) {
			if (tagMode) {
				tag = (char === '|' ? '' : tag + char);
			} else {
				if (!(char in {'|':1, '':1})) {
					subParams[subParams.length-1] = subParams[subParams.length-1] + char;
				} else {
					var param = subParams.join('<br>');
					subParams = [''];

					if (param.startsWith('STAB=') || param.startsWith('form=')) continue;
					if (param.length === 0) param = '-';
					param = param.replace('Evo.', 'ЭВ')

					pokewikiParams.push(param);
					if (pokewikiParams.length >= numberOfParams) break;
				}
			}
		}
	}

	while (pokewikiParams.length < numberOfParams) {
		pokewikiParams.push('-');
	}

	return '{{' + pokewikiParams.join('|') + '}}';
}

function convertLearnset(bulbapediaTable) {
	var pokewikiTable = [];
	var lines = bulbapediaTable.split('\n');
	for (var index in lines) {
		var line = lines[index];
		if (line.startsWith('=') && line.endsWith('=')) {
			pokewikiTable.push(convertLearnsetHeaderLine(line));
		} else if (line.startsWith('{{') && line.endsWith('}}')) {
			pokewikiTable.push(convertLearnsetLine(line));
		} else pokewikiTable.push(line);
	}
	return pokewikiTable.join('\n');
}