Path of Exile Wiki

Wiki поддерживается сообществом, поэтому подумайте над тем, чтобы внести свой вклад.

ПОДРОБНЕЕ

Path of Exile Wiki
 
(не показано 18 промежуточных версий этого же участника)
Строка 6: Строка 6:
   
 
local m_util = require('Module:Util')
 
local m_util = require('Module:Util')
  +
  +
local m_game = mw.loadData('Module:Game')
   
 
local cfg = {}
 
local cfg = {}
Строка 36: Строка 38:
 
improper_modifiers = 'Предметы с неправильными модификаторами',
 
improper_modifiers = 'Предметы с неправильными модификаторами',
 
missing_release_version = 'Предметы без параметра "release_version"',
 
missing_release_version = 'Предметы без параметра "release_version"',
  +
invalid_recipe_parts = 'Предметы с недействительными частями рецепта',
broken_upgraded_from_reference = 'Предметы со сломанными ссылками предметов в параметрах "upgraded_from"',
 
duplicate_upgraded_from_reference = 'Предметы с повторяющимися наборами в параметрах "upgraded_from"',
+
duplicate_recipes = 'Предметы с повторяющимися рецептами',
 
duplicate_query_area_ids = 'Предметы с повторяющимися идентификаторами областей из запросов',
 
duplicate_query_area_ids = 'Предметы с повторяющимися идентификаторами областей из запросов',
 
base_items = 'Базовые предметы',
 
base_items = 'Базовые предметы',
 
derived_items = 'Производные предметы',
 
derived_items = 'Производные предметы',
 
sell_prices_override = 'Предметы с изменёнными ценами продаж',
 
sell_prices_override = 'Предметы с изменёнными ценами продаж',
  +
automatic_recipes_disabled = 'Items with automatic recipes disabled',
 
deprecated_skill_parameters = 'Pages using deprecated parameters for skill data',
 
deprecated_skill_parameters = 'Pages using deprecated parameters for skill data',
   
Строка 140: Строка 143:
 
gem_quality_3 = 'Искривлённый',
 
gem_quality_3 = 'Искривлённый',
 
gem_quality_4 = 'Фантомный',
 
gem_quality_4 = 'Фантомный',
variation_singular = 'Изменений:',
+
variations = 'Изменений:',
variation_plural = 'Изменений:',
 
 
cannot_be_traded_or_modified = 'Этот предмет нельзя отдать или изменить',
 
cannot_be_traded_or_modified = 'Этот предмет нельзя отдать или изменить',
 
 
Строка 176: Строка 178:
 
 
 
acquisition = 'Получение',
 
acquisition = 'Получение',
area_level = 'Уровень области: %s',
+
drop_level = 'Уровень выпадения: %s',
  +
drop_disabled = '[[Drop disabled|Не выпадает]]',
league_restriction = m_util.html.abbr('Лига(-и):', 'Предмет может быть получен только в Лиге(-ах)') .. ' %s',
 
  +
drop_restricted = '[[Drop-restricted item|Выпадение ограничено]]',
drop_disabled = 'НЕ ВЫПАДАЕТ',
 
drop_restricted = 'ВЫПАДЕНИЕ ОГРАНИЧЕНО',
 
master = 'Мастер: %s',
 
master_level = '(level %d)',
 
favour_cost = 'Цена расположения: %s',
 
 
seal_cost = 'Стоимость печати: %s',
 
seal_cost = 'Стоимость печати: %s',
 
 
Строка 230: Строка 228:
 
['FishingRod'] = 'Удочка',
 
['FishingRod'] = 'Удочка',
 
['HideoutDoodad'] = 'Предмет для убежища',
 
['HideoutDoodad'] = 'Предмет для убежища',
  +
}
  +
  +
-- Map cosmetic types to wiki categories
  +
cfg.i18n.cosmetic_type_map = {
  +
['Расходуемое'] = {
  +
category = 'Consumable items',
  +
},
  +
['Временный эффект'] = {
  +
category = 'Apparitions',
  +
},
  +
['Заплечное украшение'] = {
  +
category = 'Armour attachments',
  +
},
  +
['Внешний вид брони'] = {
  +
category = 'Armour skins',
  +
},
  +
['Внешний вид сапог'] = {
  +
category = 'Boots skins',
  +
},
  +
['Эффект персонажа'] = {
  +
category = 'Character effects',
  +
},
  +
['Crafting Bench'] = {
  +
category = 'Hideout decorations',
  +
},
  +
['Танец'] = {
  +
category = 'Character animations',
  +
},
  +
['Следы'] = {
  +
category = 'Footprints effects',
  +
},
  +
['Внешний вид перчаток'] = {
  +
category = 'Gloves skins',
  +
},
  +
['Эффект шлема'] = {
  +
category = 'Helmet attachments',
  +
},
  +
['Внешний вид шлема'] = {
  +
category = 'Helmet skins',
  +
},
  +
['Hideout Decoration Microtransactions'] = {
  +
category = 'Hideout decorations',
  +
},
  +
['Hideout Decoration'] = {
  +
category = 'Hideout decorations',
  +
},
  +
['Challenge Trophy'] = {
  +
category = 'Hideout decorations',
  +
},
  +
['Питомец'] = {
  +
category = 'Pets',
  +
},
  +
['Портал'] = {
  +
category = 'Portal effects',
  +
},
  +
['Эффект камня умений'] = {
  +
category = 'Alternate skill effects',
  +
},
  +
['Социальная рамка'] = {
  +
category = 'Portrait frames',
  +
},
  +
['Portrait'] = {
  +
category = 'Portraits',
  +
},
  +
['Добавленный эффект оружия'] = {
  +
category = 'Weapon added effects',
  +
},
  +
['Эффект оружия'] = {
  +
category = 'Weapon effects',
  +
},
  +
['Внешний вид оружия'] = {
  +
category = 'Weapon skins',
  +
},
  +
['Внешний вид щита'] = {
  +
category = 'Shield skins',
  +
},
  +
['Разное'] = {
  +
category = 'Miscellaneous cosmetic items',
  +
},
 
}
 
}
   
Строка 250: Строка 327:
 
duplicate_base_items = 'More then one result found for the specified base item. Consider using base_item_page or base_item_id to narrow down the results.',
 
duplicate_base_items = 'More then one result found for the specified base item. Consider using base_item_page or base_item_id to narrow down the results.',
 
base_item_not_found = 'Базовый предмет не найден в базе данных. Проверьте орфографические ошибки или наличие страницы базового предмета на вики. Если страница базового предмета существует на вики, но не может быть найдена, пожалуйста, отредактируйте страницу.',
 
base_item_not_found = 'Базовый предмет не найден в базе данных. Проверьте орфографические ошибки или наличие страницы базового предмета на вики. Если страница базового предмета существует на вики, но не может быть найдена, пожалуйста, отредактируйте страницу.',
 
invalid_acquisition_tag = '%s is not a valid acquisition tag',
invalid_league = '%s не распознаётся как лига',
 
 
invalid_tag = '%s не является допустимым тегом',
 
invalid_tag = '%s не является допустимым тегом',
 
generic_argument_parameter = 'Unrecognized %s parameter "%s"',
 
generic_argument_parameter = 'Unrecognized %s parameter "%s"',
Строка 258: Строка 335:
 
duplicate_metadata = 'Дубликат metadata_id "%s" на странице "%s"',
 
duplicate_metadata = 'Дубликат metadata_id "%s" на странице "%s"',
 
invalid_influence = 'Значение influence "%s" недопустимо. Допустимые значения - "shaper", "elder", "crusader", "redeemer", "hunter" и "warlord".',
 
invalid_influence = 'Значение influence "%s" недопустимо. Допустимые значения - "shaper", "elder", "crusader", "redeemer", "hunter" и "warlord".',
invalid_class = 'The item class name "%s" is invalid.',
 
 
invalid_class_id = 'Данный class_id не верный "%s". Для правильной работы модуля Item2 и шаблона, необходимо использовать правильный идентификатор.',
 
invalid_class_id = 'Данный class_id не верный "%s". Для правильной работы модуля Item2 и шаблона, необходимо использовать правильный идентификатор.',
 
invalid_rarity_id = 'Недопустимый rarity_id "%s". Допустимые значения: "normal", "magic", "rare" и "unique".',
 
invalid_rarity_id = 'Недопустимый rarity_id "%s". Допустимые значения: "normal", "magic", "rare" и "unique".',
Строка 264: Строка 340:
 
no_results_found = 'Результатов не найдено',
 
no_results_found = 'Результатов не найдено',
 
invalid_gem_tag = '%s is not a valid gem tag',
 
invalid_gem_tag = '%s is not a valid gem tag',
invalid_master = '%s is not a valid master',
 
 
invalid_cosmetic_type = '%s is not a valid cosmetic type',
 
invalid_cosmetic_type = '%s is not a valid cosmetic type',
 
}
 
}
   
 
--
 
--
  +
-- Recipes
-- Upgrade paths
 
 
--
 
--
   
cfg.i18n.upgrade_paths = {}
+
cfg.i18n.recipes = {}
   
cfg.i18n.upgrade_paths = {
+
cfg.i18n.recipes = {
 
-- Item names
 
-- Item names
agate_amulet = 'амулет с агатом',
+
agate_amulet = 'Амулет с агатом',
unset_ring = 'кольцо без камня',
+
unset_ring = 'Кольцо без камня',
gold_ring = 'золотое кольцо',
+
gold_ring = 'Золотое кольцо',
prismatic_ring = 'радужное кольцо',
+
prismatic_ring = 'Радужное кольцо',
two_stone_ring = 'кольцо с двумя камнями',
+
two_stone_ring = 'Кольцо с двумя камнями',
crystal_sceptre = 'кристальный скипетр',
+
crystal_sceptre = 'Кристальный скипетр',
rustic_sash = 'кушак',
+
rustic_sash = 'Кушак',
  +
['Leather Belt'] = 'Ремень',
nightmare_bascinet = 'кошмарный бацинет',
+
nightmare_bascinet = 'Кошмарный бацинет',
 
timeless_jewel = 'вневременной самоцвет',
 
timeless_jewel = 'вневременной самоцвет',
granite_flask = 'гранитный флакон',
+
granite_flask = 'Гранитный флакон',
 
precursors_emblem = 'Знак предтечи',
 
precursors_emblem = 'Знак предтечи',
  +
  +
['Colosseum Map'] = 'Colosseum Map',
  +
['Wasteland Map'] = 'Wasteland Map',
  +
['Forge of the Phoenix Map'] = 'Forge of the Phoenix Map',
  +
['Lair of the Hydra Map'] = 'Lair of the Hydra Map',
  +
['Maze of the Minotaur Map'] = 'Maze of the Minotaur Map',
  +
['Pit of the Chimera Map'] = 'Pit of the Chimera Map',
  +
['Strand Map'] = 'Strand Map',
  +
['Terrace Map'] = 'Terrace Map',
  +
['Chateau Map'] = 'Chateau Map',
  +
['Vaal Temple Map'] = 'Vaal Temple Map',
   
 
-- Namesakes
 
-- Namesakes
Строка 301: Строка 388:
   
 
-- Strings used in notes
 
-- Strings used in notes
  +
divination_card_set_exchange = 'Divination card set exchange: %s',
  +
incubation = 'Incubation: %s',
  +
 
item = 'предмет',
 
item = 'предмет',
 
shield = 'щит',
 
shield = 'щит',
 
map = 'карта',
 
map = 'карта',
  +
gem = 'камень',
 
belt = 'пояс',
 
belt = 'пояс',
 
armour = 'доспех',
 
armour = 'доспех',
Строка 345: Строка 436:
 
uber_elder_fragment = 'фрагмент убер-Древнего',
 
uber_elder_fragment = 'фрагмент убер-Древнего',
 
helmet = 'шлем',
 
helmet = 'шлем',
  +
delirium_orb = 'сфера делириума',
  +
shaper_guardian_map = 'Shaper Guardian map',
  +
vial = 'фиал',
   
  +
corrupted = m_util.html.poe_color('corrupted', 'осквернённый'),
  +
unidentified_corrupted = m_util.html.poe_color('corrupted', 'неопознанный осквернённый'),
  +
two_implicit_corrupted = m_util.html.poe_color('corrupted', 'с двумя собственными свойствами'),
  +
one_or_two_implicit_corrupted = m_util.html.poe_color('corrupted', '1-2 implicit corrupted'),
 
life = 'со здоровьем',
 
life = 'со здоровьем',
 
primordial = 'Первородный',
 
primordial = 'Первородный',
  +
fishing = 'fishing',
 
 
 
-- used within essences
 
-- used within essences
Строка 357: Строка 456:
 
}
 
}
   
-- formatters
+
-- formatters
cfg.i18n.upgrade_paths.fmt = {
+
cfg.i18n.recipes.fmt = {
 
item_level_x = 'item level %i %s',
  +
corrupted_x = string.format('%s %%s', cfg.i18n.recipes.corrupted),
  +
 
random = 'случайный %s',
 
random = 'случайный %s',
 
random_2 = 'случайная %s',
 
random_2 = 'случайная %s',
 
random_3 = 'случайное %s',
 
random_3 = 'случайное %s',
 
random_4 = 'случайные %s',
 
random_4 = 'случайные %s',
random_corrupted = string.format('случайный %s %%s', m_util.html.poe_color('corrupted', 'осквернённый')),
+
random_corrupted = string.format('случайный %s %%s', cfg.i18n.recipes.corrupted),
 
random_corrupted_2 = string.format('случайная %s %%s', m_util.html.poe_color('corrupted', 'осквернённая')),
 
random_corrupted_2 = string.format('случайная %s %%s', m_util.html.poe_color('corrupted', 'осквернённая')),
 
random_corrupted_3 = string.format('случайное %s %%s', m_util.html.poe_color('corrupted', 'осквернённое')),
 
random_corrupted_3 = string.format('случайное %s %%s', m_util.html.poe_color('corrupted', 'осквернённое')),
 
random_corrupted_4 = string.format('случайные %s %%s', m_util.html.poe_color('corrupted', 'осквернённые')),
 
random_corrupted_4 = string.format('случайные %s %%s', m_util.html.poe_color('corrupted', 'осквернённые')),
random_unidentified_corrupted = string.format('случайный %s %%s', m_util.html.poe_color('corrupted', 'неопознанный осквернённый')),
+
random_unidentified_corrupted = string.format('случайный %s %%s', cfg.i18n.recipes.unidentified_corrupted),
 
random_unidentified_corrupted_2 = string.format('случайная %s %%s', m_util.html.poe_color('corrupted', 'неопознанная осквернённая')),
 
random_unidentified_corrupted_2 = string.format('случайная %s %%s', m_util.html.poe_color('corrupted', 'неопознанная осквернённая')),
random_two_implicit_corrupted = string.format('случайный %s %%s %s', m_util.html.poe_color('corrupted', 'осквернённый'), m_util.html.poe_color('corrupted', 'с двумя собственными свойствами')),
+
random_corrupted_implicit = string.format('случайный %s %%s – собственное свойство: %%s', cfg.i18n.recipes.corrupted),
  +
random_two_implicit_corrupted = string.format('случайный %%s %s', cfg.i18n.recipes.two_implicit_corrupted),
random_two_implicit_corrupted_two_influenced_item_level_x = string.format('random %s level %%i %%s', m_util.html.poe_color('corrupted', 'two-implicit corrupted')),
 
  +
random_one_or_two_implicit_corrupted = string.format('случайный %%s %s', cfg.i18n.recipes.one_or_two_implicit_corrupted),
 
random_two_implicit_corrupted_two_influenced_item_level_x = string.format('случайный %%s %%i уровня %s', cfg.i18n.recipes.two_implicit_corrupted),
 
random_item_level_x = 'случайный %s %i уровня',
 
random_item_level_x = 'случайный %s %i уровня',
 
random_item_level_x_2 = 'случайная %s %i уровня',
 
random_item_level_x_2 = 'случайная %s %i уровня',
Строка 383: Строка 487:
 
random_x_amount_4 = 'случайные %s (%i шт.)',
 
random_x_amount_4 = 'случайные %s (%i шт.)',
 
random_influenced = 'случайный %s со случайным влиянием',
 
random_influenced = 'случайный %s со случайным влиянием',
random_two_influenced = 'случайная %s с двойным влиянием',
+
random_influenced_x_elevated = 'случайный %s с влиянием и возвышенным свойством',
 
random_shaper = 'случайный %s с влиянием Создателя',
 
random_shaper = 'случайный %s с влиянием Создателя',
 
random_shaper_item_level_x = 'случайный %s с влиянием Создателя %i уровня',
 
random_shaper_item_level_x = 'случайный %s с влиянием Создателя %i уровня',
Строка 389: Строка 493:
 
random_shaper_item_level_x_3 = 'случайное %s с влиянием Создателя %i уровня',
 
random_shaper_item_level_x_3 = 'случайное %s с влиянием Создателя %i уровня',
 
random_shaper_item_level_x_4 = 'случайные %s с влиянием Создателя %i уровня',
 
random_shaper_item_level_x_4 = 'случайные %s с влиянием Создателя %i уровня',
 
random_elder_item_level_x = 'случайный %s с влиянием Древнего %i уровня',
 
random_elder_item_level_x_2 = 'случайная %s с влиянием Древнего %i уровня',
 
random_elder_item_level_x_3 = 'случайное %s с влиянием Древнего %i уровня',
 
random_elder_item_level_x_4 = 'случайные %s с влиянием Древнего %i уровня',
 
random_shaper_hunter_item_level_x = 'случайный %s с влиянием Создателя и Охотника %i уровня',
 
random_shaper_hunter_item_level_x = 'случайный %s с влиянием Создателя и Охотника %i уровня',
 
random_shaper_hunter_item_level_x_2 = 'случайная %s с влиянием Создателя и Охотника %i уровня',
 
random_shaper_hunter_item_level_x_2 = 'случайная %s с влиянием Создателя и Охотника %i уровня',
 
random_shaper_hunter_item_level_x_3 = 'случайное %s с влиянием Создателя и Охотника %i уровня',
 
random_shaper_hunter_item_level_x_3 = 'случайное %s с влиянием Создателя и Охотника %i уровня',
 
random_shaper_hunter_item_level_x_4 = 'случайные %s с влиянием Создателя и Охотника %i уровня',
 
random_shaper_hunter_item_level_x_4 = 'случайные %s с влиянием Создателя и Охотника %i уровня',
  +
random_two_influenced_x = 'случайный %s с двойным влиянием',
  +
random_two_influenced_x_2 = 'случайная %s с двойным влиянием',
  +
random_two_influenced_x_3 = 'случайное %s с двойным влиянием',
  +
random_two_influenced_x_4 = 'случайные %s с двойным влиянием',
 
random_two_influenced_item_level_x = 'случайный %s с двойным влиянием %i уровня',
 
random_two_influenced_item_level_x = 'случайный %s с двойным влиянием %i уровня',
 
random_two_influenced_item_level_x_2 = 'случайная %s с двойным влиянием %i уровня',
 
random_two_influenced_item_level_x_2 = 'случайная %s с двойным влиянием %i уровня',
 
random_two_influenced_item_level_x_3 = 'случайное %s с двойным влиянием %i уровня',
 
random_two_influenced_item_level_x_3 = 'случайное %s с двойным влиянием %i уровня',
random_elder_item_level_x = 'случайный %s с влиянием Древнего %i уровня',
 
random_elder_item_level_x_2 = 'случайная %s с влиянием Древнего %i уровня',
 
random_elder_item_level_x_3 = 'случайное %s с влиянием Древнего %i уровня',
 
random_elder_item_level_x_4 = 'случайные %s с влиянием Древнего %i уровня',
 
random_eternal_labyrinth_enchantment = string.format('случайный %%s со случайным %s', m_util.html.poe_color('enchanted', 'зачарованием Вечного Лабиринта')),
 
random_veiled = 'случайный %s с завуалированным свойством',
 
 
random_two_veiled = 'случайный %s с двумя завуалированными свойствами',
 
random_two_veiled = 'случайный %s с двумя завуалированными свойствами',
 
random_primordial = string.format('случайный %s %%s', m_util.html.poe_color('magic', 'Первородный')),
 
random_primordial = string.format('случайный %s %%s', m_util.html.poe_color('magic', 'Первородный')),
 
random_map_level = 'случайная %s, осквернённая и %s уровня',
 
random_map_level = 'случайная %s, осквернённая и %s уровня',
  +
random_labyrinth_enchantment = string.format('случайный %%s со случайным %s', m_util.html.poe_color('enchanted', 'зачарованием Лабиринта')),
 
random_eternal_labyrinth_enchantment = string.format('случайный %%s со случайным %s', m_util.html.poe_color('enchanted', 'зачарованием Вечного Лабиринта')),
   
 
tier_x = 'tier %i %s',
 
tier_x_map = 'карта %i уровня',
 
tier_x_map = 'карта %i уровня',
  +
map_watchstone_count = '%s (%i watchstones)',
  +
map_with_x_modifiers = '%s with %i modifiers',
  +
map_with_x_percent_delirium = '%s with %i%% delirium',
 
triskaidekaphobia = '%s с 8 свойствами, с качеством 13%% и 100%% делириума',
 
triskaidekaphobia = '%s с 8 свойствами, с качеством 13%% и 100%% делириума',
 
level_x_gem = 'камень %i уровня',
 
level_x_gem = 'камень %i уровня',
Строка 414: Строка 526:
 
superior_x_gem_q_y = 'камень с меткой "%s" с качеством %i%%',
 
superior_x_gem_q_y = 'камень с меткой "%s" с качеством %i%%',
 
superior_level_x_y_gem_q_z = 'камень с меткой "%s" %i уровня с качеством %i%%',
 
superior_level_x_y_gem_q_z = 'камень с меткой "%s" %i уровня с качеством %i%%',
  +
any_quality_level_x_y_gem_q_z = 'камень с меткой "%s" %i уровня с качеством %i%% (любой тип качества)',
 
superior_level_x_support_plus_gem_q_y = 'пробужденный камень поддержки %i уровня с качеством %i%%',
 
superior_level_x_support_plus_gem_q_y = 'пробужденный камень поддержки %i уровня с качеством %i%%',
 
alt_level_x_gem_q_y = 'камень %i уровня с альтернативным качеством %i%%',
 
alt_level_x_gem_q_y = 'камень %i уровня с альтернативным качеством %i%%',
Строка 420: Строка 533:
 
}
 
}
   
--[[cfg.i18n.upgrade_paths.misc = {
+
--[[cfg.i18n.recipes.misc = {
 
upgraded_from_map = 'случайная карта уровнем выше того же региона',
 
upgraded_from_map = 'случайная карта уровнем выше того же региона',
 
}--]]
 
}--]]
   
cfg.i18n.upgrade_paths.errors = {
+
cfg.i18n.recipes.errors = {
missing_amount = 'Item amount is missing or not a number (%s)',
+
missing_amount = 'Кол-во предметов отсутствует или не указано (%s)',
  +
invalid_recipe_parts = 'Ссылка на предмет в %1$s нарушена (значение: %2$s)',
upgraded_from_broken_reference = 'Item reference in %s is broken (value: %s)',
 
  +
duplicate_recipes = 'Автоматический рецепт дублируется на странице в рецепте %s',
upgraded_from_duplicate = 'Automatic upgraded from entry is duplicated on page in upgraded_from_set%s',
 
 
}
 
}
   
Строка 446: Строка 559:
 
cfg.default_args = {
 
cfg.default_args = {
 
'rarity_id', 'rarity', 'name', 'name_list', 'size_x', 'size_y',
 
'rarity_id', 'rarity', 'name', 'name_list', 'size_x', 'size_y',
'drop_rarities_ids', 'drop_rarities', 'drop_enabled', 'drop_level', 'drop_level_maximum', 'drop_leagues', 'drop_text', 'required_level', 'required_level_final',
+
'drop_rarities_ids', 'drop_rarities', 'drop_enabled', 'drop_level', 'drop_level_maximum', 'drop_text', 'required_level', 'required_level_final',
 
'inventory_icon', 'alternate_art_inventory_icons', 'flavour_text', 'flavour_text_id',
 
'inventory_icon', 'alternate_art_inventory_icons', 'flavour_text', 'flavour_text_id',
 
'cannot_be_traded_or_modified', 'help_text', 'tags', 'metadata_id',
 
'cannot_be_traded_or_modified', 'help_text', 'tags', 'metadata_id',
Строка 453: Строка 566:
 
'drop_areas', 'drop_areas_html', 'drop_monsters',
 
'drop_areas', 'drop_areas_html', 'drop_monsters',
 
 
  +
'acquisition_tags', 'disable_automatic_recipes',
'upgraded_from_disabled',
 
 
'suppress_improper_modifiers_category',
 
'suppress_improper_modifiers_category',
 
 
Строка 493: Строка 606:
 
tables = {'armours'},
 
tables = {'armours'},
 
keys = {['Gloves'] = true, ['Boots'] = true, ['Body Armour'] = true, ['Helmet'] = true, ['Shield'] = true},
 
keys = {['Gloves'] = true, ['Boots'] = true, ['Body Armour'] = true, ['Helmet'] = true, ['Shield'] = true},
args = {'quality', 'required_dexterity', 'required_intelligence', 'required_strength', 'armour', 'energy_shield', 'evasion', 'ward', 'movement_speed'},
+
args = {'quality', 'required_dexterity', 'required_intelligence', 'required_strength', 'armour_min', 'armour_max', 'evasion_min', 'evasion_max', 'energy_shield_min', 'energy_shield_max', 'ward_min', 'ward_max', 'movement_speed'},
 
},
 
},
 
stackable = {
 
stackable = {
 
tables = {'stackables'},
 
tables = {'stackables'},
keys = {['Currency'] = true, ['StackableCurrency'] = true, ['DivinationCard'] = true, ['DelveSocketableCurrency'] = true, ['DelveStackableSocketableCurrency'] = true, ['Incubator'] = true, ['HarvestSeed'] = true, ['HarvestPlantBooster'] = true},
+
keys = {['Currency'] = true, ['StackableCurrency'] = true, ['DivinationCard'] = true, ['DelveSocketableCurrency'] = true, ['DelveStackableSocketableCurrency'] = true, ['IncubatorStackable'] = true, ['HarvestSeed'] = true, ['HarvestPlantBooster'] = true},
 
args = {'stack_size', 'stack_size_currency_tab', 'description'},
 
args = {'stack_size', 'stack_size_currency_tab', 'description'},
 
},
 
},
Строка 604: Строка 717:
 
['HideoutDoodad'] = {
 
['HideoutDoodad'] = {
 
tables = {'hideout_doodads'},
 
tables = {'hideout_doodads'},
args = {'is_master_doodad', 'master', 'master_level_requirement', 'master_favour_cost', 'variation_count', 'description'},
+
args = {'is_master_doodad', 'variation_count', 'description'},
 
defaults = {
 
defaults = {
 
is_sellable = false,
 
is_sellable = false,
Строка 654: Строка 767:
 
frame_type = 'currency',
 
frame_type = 'currency',
 
},
 
},
['Incubator'] = {
+
['IncubatorStackable'] = {
 
tables = {'incubators'},
 
tables = {'incubators'},
 
args = {'incubator_effect'},
 
args = {'incubator_effect'},
Строка 681: Строка 794:
 
},
 
},
 
}
 
}
  +
  +
-- Acquisition tags
  +
cfg.acquisition_tags = {
  +
['league-specific'] = {
  +
name = 'Из лиги',
  +
page = 'Предмет из лиги',
  +
},
  +
['fishing'] = {
  +
name = 'Для рыбалки',
  +
page = 'Рыбалка',
  +
},
  +
['experimented base type'] = {
  +
name = 'Экспериментальный базовой тип',
  +
page = 'Экспериментальные базовые типы',
  +
},
  +
['ritual base type'] = {
  +
name = 'Базовый тип Ритуала',
  +
page = 'Базовые типы Ритуала',
  +
},
  +
['runic base type'] = {
  +
name = 'Рунический базовый тип',
  +
page = 'Рунические базовые типы',
  +
},
  +
}
  +
for k, v in pairs(m_game.constants.leagues) do
  +
cfg.acquisition_tags[k] = {
  +
name = v.name,
  +
page = string.format('Лига %s', v.name),
  +
}
  +
end
   
 
-- Prophecy stuff
 
-- Prophecy stuff

Текущая версия на 20:06, 28 ноября 2021

Документация модуля[просмотр] [править] [история] [очистить]

Это файл конфигурации для Модуля:Item2. Этот файл можно отредактировать, чтобы облегчить перевод/перенос модуля на другие вики-страницы.

-------------------------------------------------------------------------------
-- 
-- Configuration for Module:Item2 and submodules
-- 
-------------------------------------------------------------------------------

local m_util = require('Module:Util')

local m_game = mw.loadData('Module:Game')

local cfg = {}

-- ----------------------------------------------------------------------------
-- i18n
-- ----------------------------------------------------------------------------

cfg.i18n = {}

--
-- Main
--

cfg.i18n.files = {
    inventory_icon = 'File:%s inventory icon.png',
    status_icon = 'File:%s status icon.png',
    divination_card_art = 'File:%s card art.png',
}

cfg.i18n.gem_tag_category = '[[:Категория:%s (тег камня)|%s]]'

cfg.i18n.misc = {
    -- used to identify betrayal map series to avoid showing area infobox.
    betrayal = 'Предательство',
}

cfg.i18n.categories = {
    -- maintenance cats
    improper_modifiers = 'Предметы с неправильными модификаторами',
    missing_release_version = 'Предметы без параметра "release_version"',
    invalid_recipe_parts = 'Предметы с недействительными частями рецепта', 
    duplicate_recipes = 'Предметы с повторяющимися рецептами',
    duplicate_query_area_ids = 'Предметы с повторяющимися идентификаторами областей из запросов',
    base_items = 'Базовые предметы',
    derived_items = 'Производные предметы',
    sell_prices_override = 'Предметы с изменёнными ценами продаж',
    automatic_recipes_disabled = 'Items with automatic recipes disabled',
    deprecated_skill_parameters = 'Pages using deprecated parameters for skill data',

    -- regular cats
    alternate_artwork = 'Предметы с альтернативным внешним видом',
    implicit_modifier_override = 'Items with implicit modifier overrides',

    -- misc
    gem_tag_affix = '%s (тег камня)',
    unique_affix = 'Уникальные %s',
    
    prophecies = 'Пророчества',
    blight_item = 'Масла',
    talismans = 'Талисманы',
    essences = 'Сущности',
}

cfg.i18n.stat_skip_patterns = {
    maps = {
        '%d+%% увеличение количества найденных предметов в этой области',
        '%d+%% повышение редкости найденных предметов в этой области',
        '%+%d+%% увеличение размера групп монстров',
        -- ranges
        '%(%d+%-%d+%)%% увеличение количества найденных предметов в этой области',
        '%(%d+%-%d+%)%% повышение редкости найденных предметов в этой области',
        '%+%(%d+%-%d+%)%% увеличение размера групп монстров',
    },
    jewels = {
        'Limited to %d+ %(Hidden%)',
        'Jewel has a radius of %d+ %(Hidden%)',
    },
}

cfg.i18n.help_text_defaults = {
    active_gem = 'Для получения умения выберите предмет и поместите камень в гнездо соответствующего цвета. Щелкните ПКМ, чтобы вынуть камень из гнезда.',
    support_gem = 'Это камень поддержки. Он дает преимущества не герою, а камню умения в связанных гнездах. Вставьте камень поддержки в гнездо, соединенное с гнездом усиливаемого камня активного умения. Щелкните ПКМ, чтобы вынуть камень из гнезда.',
    jewel = 'Поместите самоцвет в доступное гнездо на дереве пассивных умений. Чтобы вынуть самоцвет, щёлкните по нему правой кнопкой мыши.',
    watchstone = 'Socket this into a Citadel on your Atlas to increase the Tier of Maps and reveal hidden Maps in that Citadel\'s Region. You can only socket one Crimson, Viridian, Cobalt or Golden Watchstone into each Citadel.',
}

-- Used by the item info box
cfg.i18n.tooltips = {
    corrupted = m_util.html.poe_color('corrupted', 'Осквернено'),
    support_icon = 'Изображение: %s',
    radius = 'Радиус: %s',
    cost = 'Расход ресурсов: %s',
    reservation = 'Удержано ресурсов: %s',
    mana_multiplier = 'Множитель расхода и удержания ресурсов: %s',
    vaal_souls_per_use = 'Разовый расход душ: %s',
    stored_uses = 'Максимум зарядов: %s',
    stored_uses_singular = 'Максимум зарядов: %s',
    stored_uses_plural = 'Максимум зарядов: %s',
    vaal_soul_gain_prevention_time = 'Нельзя получать души: %s',
    cooldown_time = 'Перезарядка: %s',
    uses_quantity = 'uses',
    cast_time = 'Время применения: %s',
    use_time = 'Use Time: %s',
    instant_cast_time = 'Мгновенное',
    critical_strike_chance = 'Шанс критического удара: %s',
    attack_speed_multiplier = 'Скорость атаки: %s',
    damage_multiplier = 'Урон от атаки: %s',
    of_base_stat = 'от базовой',
    damage_effectiveness = 'Эффективность добавленного урона: %s',
    projectile_speed = 'Скорость снаряда: %s',
    quality = 'Качество: %s',
    physical_damage = 'Физический урон: %s',
    elemental_damage = 'Урон от стихий: %s',
    chaos_damage = 'Урон хаосом: %s',
    attacks_per_second = 'Атак в секунду: %s',
    weapon_range = 'Дальность оружия: %s',
    map_level = 'Уровень области: %s',
    map_tier = 'Уровень карты: %s',
    map_guild_character = m_util.html.abbr('Редактор тега гильдии', 'При редактировании тега гильдии эта карта может быть использована для данного символа') .. ': %s',
    item_quantity = 'Количество предметов: %s',
    item_rarity = 'Редкость предметов: %s',
    monster_pack_size = 'Размер групп монстров: %s',
    limited_to = 'Максимум: %s',
    flask_mana_recovery = 'Восстанавливает ману: %s за %s сек.',
    flask_life_recovery = 'Восстанавливает здоровье: %s за %s сек.',
    flask_duration = 'Длится %s сек.',
    flask_charges_per_use = 'Расходует %s из %s зарядов при использовании',
    chance_to_block = 'Шанс заблокировать удар: %s',
    armour = 'Броня: %s',
    evasion = 'Уклонение: %s',
    energy_shield = 'Энерг. щит: %s',
    ward = 'Барьер: %s',
    movement_speed = 'Скорость передвижения: %s',
    talisman_tier = 'Уровень талисмана: %s',
    stack_size = 'Размер стопки: %s',
    essence_level = 'Уровень сущности: %s',
    blight_item_tier = 'Уровень масла: %s',
    requires = 'Требуется %s',
    level_inline = 'Уровень %s',
    level = 'Уровень: %s',
    gem_quality = 'За 1% качества:',
    gem_quality_1 = 'По умолчанию',
    gem_quality_2 = 'Аномальный',
    gem_quality_3 = 'Искривлённый',
    gem_quality_4 = 'Фантомный',
    variations = 'Изменений:',
    cannot_be_traded_or_modified = 'Этот предмет нельзя отдать или изменить',
    
    -- harvest seeds
    seed_tier = 'Уровень семени: %s',
    seed_monster = 'При сборе появляется монстр ? уровня',
    seed_lifeforce_gained = 'При сборе даёт ? едениц(-ы) чистой %s жизненной силы',
    seed_growth_cycles = 'Можно собрать после %s циклов роста',
    
    seed_lifeforce_consumed = 'Потребляет (%s%%) единиц(-ы) конденсированной %s жизненной силы из распылителя за цикл роста',
    seed_required_seeds = 'Для роста требует соседства %s %s растений как минимум %s уровня',
    
    -- harvest plant boosters, not used at the moment
    plant_booster_extra_chances = 'Seeds in radius give the rarest of %s chosen Crafting Options when Harvested',
    plant_booster_lifeforce = 'Seeds in radius produce %s more Lifeforce when Harvested',
    plant_booster_additional_crafting_optioons = 'Seeds in radius have %s chance to generate additional Crafting Options when Harvested',
    
    -- heist
    heist_required_npc = 'Этот предмет могут использовать: %s',
    heist_required_job = 'Требуется %s %s уровня',
    heist_any_job = 'Любая роль',
    
    random_mod = '<<случайное свойство %s>>',
    
    --
    -- secondary infobox
    --
    extra_info = 'Дополнительная информация',
    header_overall = 'Диаграмма улучшения области',
    header_upgrades = 'Уровень улучшения',
    header_map_tier = 'Уровень карты',
    header_map_level = 'Уровень области',
    header_connections = 'Соединения',
    
    acquisition = 'Получение',
    drop_level = 'Уровень выпадения: %s',
    drop_disabled = '[[Drop disabled|Не выпадает]]',
    drop_restricted = '[[Drop-restricted item|Выпадение ограничено]]',
    seal_cost = 'Стоимость печати: %s',
    
    purchase_costs = m_util.html.abbr('Цены торговцев', 'Стоимость покупки этого предмета у торгующих НИП, когда он доступен в их инвентаре'),
    sell_price = m_util.html.abbr('Предложение торговца', 'Предложение, предоставленное торгующим НИП в обмен на этот предмет, когда он не используется в рецепте торговца'),
    default_vendor_offer = 'Обрывок свитка',
    
    damage_per_second = 'УВС Оружия',
    physical_dps = 'Физический: %s',
    fire_dps = 'Огонь: %s',
    cold_dps = 'Холод: %s',
    lightning_dps = 'Молния: %s',
    chaos_dps = 'Хаос: %s',
    elemental_dps = 'Стихийный: %s',
    poison_dps = 'Физ+Хаос: %s',
    dps = 'Общий: %s',
    
    metadata = 'Metadata',
    item_class = 'Класс предмета: %s',
    metadata_id = 'Metadata ID: %s',
}

-- Default inventory icons for certain types of items
-- Used with cfg.i18n.files.inventory_icon
cfg.i18n.default_inventory_icons = {
    ['DivinationCard'] = 'Divination card',
    ['Prophecy'] = 'Prophecy',
}

-- Keys are item class ids
cfg.i18n.item_class_map = {
    ['Staff'] = 'Посох',
    ['Bow'] = 'Лук',
    ['Wand'] = 'Жезл',
    ['Two Hand Axe'] = 'Двуручный топор',
    ['Two Hand Sword'] = 'Двуручный меч',
    ['Two Hand Mace'] = 'Двуручная булава',
    ['Warstaff'] = 'Воинский посох',
    ['Sceptre'] = 'Скипетр',
    ['One Hand Mace'] = 'Одноручная булава',
    ['One Hand Axe'] = 'Одноручный топор',
    ['One Hand Sword'] = 'Одноручный меч',
    ['Thrusting One Hand Sword'] = 'Одноручный меч',
    ['Claw'] = 'Когти',
    ['Dagger'] = 'Кинжал',
    ['Rune Dagger'] = 'Рунический кинжал',
    ['FishingRod'] = 'Удочка',
    ['HideoutDoodad'] = 'Предмет для убежища',
}

-- Map cosmetic types to wiki categories
cfg.i18n.cosmetic_type_map = {
    ['Расходуемое'] = {
        category = 'Consumable items',
    },
    ['Временный эффект'] = {
        category = 'Apparitions',
    },
    ['Заплечное украшение'] = {
        category = 'Armour attachments',
    },
    ['Внешний вид брони'] = {
        category = 'Armour skins',
    },
    ['Внешний вид сапог'] = {
        category = 'Boots skins',
    },
    ['Эффект персонажа'] = {
        category = 'Character effects',
    },
    ['Crafting Bench'] = {
        category = 'Hideout decorations',
    },
    ['Танец'] = {
        category = 'Character animations',
    },
    ['Следы'] = {
        category = 'Footprints effects',
    },
    ['Внешний вид перчаток'] = {
        category = 'Gloves skins',
    },
    ['Эффект шлема'] = {
        category = 'Helmet attachments',
    },
    ['Внешний вид шлема'] = {
        category = 'Helmet skins',
    },
    ['Hideout Decoration Microtransactions'] = {
        category = 'Hideout decorations',
    },
    ['Hideout Decoration'] = {
        category = 'Hideout decorations',
    },
    ['Challenge Trophy'] = {
        category = 'Hideout decorations',
    },
    ['Питомец'] = {
        category = 'Pets',
    },
    ['Портал'] = {
        category = 'Portal effects',
    },
    ['Эффект камня умений'] = {
        category = 'Alternate skill effects',
    },
    ['Социальная рамка'] = {
        category = 'Portrait frames',
    },
    ['Portrait'] = {
        category = 'Portraits',
    },
    ['Добавленный эффект оружия'] = {
        category = 'Weapon added effects',
    },
    ['Эффект оружия'] = {
        category = 'Weapon effects',
    },
    ['Внешний вид оружия'] = {
        category = 'Weapon skins',
    },
    ['Внешний вид щита'] = {
        category = 'Shield skins',
    },
    ['Разное'] = {
        category = 'Miscellaneous cosmetic items',
    },
}

-- Formatting
cfg.i18n.fmt = {
    standard_damage_range = '%s-%s',
    variable_damage_range = 'от %s до %s',
    item_count = '%dшт.',
}

cfg.i18n.debug = {
    invalid_argument_key = 'Неверный ключ или отсутствующие данные для "%s"',
    base_item_field_not_found = 'Base item property not found: %s.%s',
    field_value_mismatch = 'Значение для аргумента "%s" установлено на что-то другое, чем по умолчанию: %s',
}

cfg.i18n.errors = {
    missing_base_item = 'Rarity is set to above normal, but base item is not set. A base item for rarities above normal is required!',
    missing_rarity = 'Base item parameter is set, but rarity is set to normal. A rarity above normal is required!',
    duplicate_base_items = 'More then one result found for the specified base item. Consider using base_item_page or base_item_id to narrow down the results.',
    base_item_not_found = 'Базовый предмет не найден в базе данных. Проверьте орфографические ошибки или наличие страницы базового предмета на вики. Если страница базового предмета существует на вики, но не может быть найдена, пожалуйста, отредактируйте страницу.',
    invalid_acquisition_tag = '%s is not a valid acquisition tag',
    invalid_tag = '%s не является допустимым тегом',
    generic_argument_parameter = 'Unrecognized %s parameter "%s"',
    generic_required_parameter = 'Parameter "%s" must be specified for this item type.',
    non_unique_flag = 'Only unique items can are egible for the flag "%s".',
    duplicate_area_id_from_query = 'Query found duplicate area ids that do not need to be set on the item. Duplicate ids: "%s"',
    duplicate_metadata = 'Дубликат metadata_id "%s" на странице "%s"',
    invalid_influence = 'Значение influence "%s" недопустимо. Допустимые значения - "shaper", "elder", "crusader", "redeemer", "hunter" и "warlord".',
    invalid_class_id = 'Данный class_id не верный "%s". Для правильной работы модуля Item2 и шаблона, необходимо использовать правильный идентификатор.',
    invalid_rarity_id = 'Недопустимый rarity_id "%s". Допустимые значения: "normal", "magic", "rare" и "unique".',
    invalid_region_upgrade_count = 'atlas_connection%s_tier: Invalid amount (%s) of connections, only 5 are allowed',
    no_results_found = 'Результатов не найдено',
    invalid_gem_tag = '%s is not a valid gem tag',
    invalid_cosmetic_type = '%s is not a valid cosmetic type',
}

--
-- Recipes
--

cfg.i18n.recipes = {}

cfg.i18n.recipes = {
    -- Item names
    agate_amulet = 'Амулет с агатом',
    unset_ring = 'Кольцо без камня',
    gold_ring = 'Золотое кольцо',
    prismatic_ring = 'Радужное кольцо',
    two_stone_ring = 'Кольцо с двумя камнями',
    crystal_sceptre = 'Кристальный скипетр',
    rustic_sash = 'Кушак',
    ['Leather Belt'] = 'Ремень',
    nightmare_bascinet = 'Кошмарный бацинет',
    timeless_jewel = 'вневременной самоцвет',
    granite_flask = 'Гранитный флакон',
    precursors_emblem = 'Знак предтечи',

    ['Colosseum Map'] = 'Colosseum Map',
    ['Wasteland Map'] = 'Wasteland Map',
    ['Forge of the Phoenix Map'] = 'Forge of the Phoenix Map',
    ['Lair of the Hydra Map'] = 'Lair of the Hydra Map',
    ['Maze of the Minotaur Map'] = 'Maze of the Minotaur Map',
    ['Pit of the Chimera Map'] = 'Pit of the Chimera Map',
    ['Strand Map'] = 'Strand Map',
    ['Terrace Map'] = 'Terrace Map',
    ['Chateau Map'] = 'Chateau Map',
    ['Vaal Temple Map'] = 'Vaal Temple Map',

    -- Namesakes
    atziri = 'Атзири',
    doedre = 'Доэдре',
    shavronne = 'Шавронн',
    rigwald = 'Ригвальда',
    lioneye = 'Львиного глаза',
    farrul = 'Фаррул',
    fenumus = 'Фенумы',
    saqawal = 'Сакаваля',
    craiceann = 'Краценна',
    chayula = 'Чаюлы',

    -- Strings used in notes
    divination_card_set_exchange = 'Divination card set exchange: %s',
    incubation = 'Incubation: %s',

    item = 'предмет',
    shield = 'щит',
    map = 'карта',
    gem = 'камень',
    belt = 'пояс',
    armour = 'доспех',
    weapon = 'оружие',
    sword = 'меч',
    jewellery = 'бижутерия',
    axe = 'топор',
    flask = 'флакон',
    amulet = 'амулет',
    ring = 'кольцо',
    wand = 'жезл',
    staff = 'посох',
    claw = 'когти',
    dagger = 'кинжал',
    sceptre = 'скипетр',
    bow = 'лук',
    gloves = 'перчатки',
    jewel = 'самоцвет',
    talisman = 'талисман',
    tier_1_talisman = 'талисман 1 уровня',
    breachstone_splinter = 'осколок Разлома',
    breachstone = 'камень Разлома',
    pure_breachstone = 'очищенный камень Разлома',
    scarab = 'скарабей',
    gilded_scarab = 'золочёный скарабей',
    essence = 'сущность',
    deafening_essence = 'оглушающая сущность',
    shrieking_essence = 'визжащая сущность',
    harbinger_fragment = 'фрагмент Предвестника',
    divination_card = 'гадальная карта',
    body_armour = 'нательный доспех',
    one_hand_weapon = 'одноручное оружие',
    two_hand_weapon = 'двуручное оружие',
    league_specific_item = 'предмет из лиги',
    fated_unique_item_prophecy = 'пророчество на судьбоносный уникальный предмет',
    quality_currency = 'валюта, повышающая качество',
    fossil = 'ископаемое',
    fragment = 'фрагмент',
    sacrifice_fragment = 'фрагмент жертвы',
    mortal_fragment = 'смертный фрагмент',
    uber_elder_fragment = 'фрагмент убер-Древнего',
    helmet = 'шлем',
    delirium_orb = 'сфера делириума',
    shaper_guardian_map = 'Shaper Guardian map',
    vial = 'фиал',

    corrupted = m_util.html.poe_color('corrupted', 'осквернённый'),
    unidentified_corrupted = m_util.html.poe_color('corrupted', 'неопознанный осквернённый'),
    two_implicit_corrupted = m_util.html.poe_color('corrupted', 'с двумя собственными свойствами'),
    one_or_two_implicit_corrupted = m_util.html.poe_color('corrupted', '1-2 implicit corrupted'),
    life = 'со здоровьем',
    primordial = 'Первородный',
    fishing = 'fishing',
    
    -- used within essences
    essence_plus_one_level = string.format('+1 уровень в результате %s', m_util.html.poe_color('corrupted', 'осквернения')),
    essence_type_change = string.format('изменение типа в результате %s', m_util.html.poe_color('corrupted', 'осквернения')),

    -- The Void
    the_void = 'награда случайной колоды гадальных карт',
}

-- formatters 
cfg.i18n.recipes.fmt = {
    item_level_x = 'item level %i %s',
    corrupted_x = string.format('%s %%s', cfg.i18n.recipes.corrupted),

    random = 'случайный %s',
    random_2 = 'случайная %s',
    random_3 = 'случайное %s',
    random_4 = 'случайные %s',
    random_corrupted = string.format('случайный %s %%s', cfg.i18n.recipes.corrupted),
    random_corrupted_2 = string.format('случайная %s %%s', m_util.html.poe_color('corrupted', 'осквернённая')),
    random_corrupted_3 = string.format('случайное %s %%s', m_util.html.poe_color('corrupted', 'осквернённое')),
    random_corrupted_4 = string.format('случайные %s %%s', m_util.html.poe_color('corrupted', 'осквернённые')),
    random_unidentified_corrupted = string.format('случайный %s %%s', cfg.i18n.recipes.unidentified_corrupted),
    random_unidentified_corrupted_2 = string.format('случайная %s %%s', m_util.html.poe_color('corrupted', 'неопознанная осквернённая')),
    random_corrupted_implicit = string.format('случайный %s %%s – собственное свойство: %%s', cfg.i18n.recipes.corrupted),
    random_two_implicit_corrupted = string.format('случайный %%s %s', cfg.i18n.recipes.two_implicit_corrupted),
    random_one_or_two_implicit_corrupted = string.format('случайный %%s %s', cfg.i18n.recipes.one_or_two_implicit_corrupted),
    random_two_implicit_corrupted_two_influenced_item_level_x = string.format('случайный %%s %%i уровня %s', cfg.i18n.recipes.two_implicit_corrupted),
    random_item_level_x = 'случайный %s %i уровня',
    random_item_level_x_2 = 'случайная %s %i уровня',
    random_item_level_x_3 = 'случайное %s %i уровня',
    random_item_level_x_4 = 'случайные %s %i уровня',
    random_x_link = 'случайный %s с %i связанными гнёздами',
    random_x_link_item_level_y = 'случайный %s с %i связанными гнёздами %i уровня',
    random_x_link_item_level_y_random_influenced = 'случайный %s с %i связанными гнёздами %i уровня и случайным влиянием',
    random_x_amount = 'случайный %s (%i шт.)',
    random_x_amount_2 = 'случайная %s (%i шт.)',
    random_x_amount_3 = 'случайное %s (%i шт.)',
    random_x_amount_4 = 'случайные %s (%i шт.)',
    random_influenced = 'случайный %s со случайным влиянием',
    random_influenced_x_elevated = 'случайный %s с влиянием и возвышенным свойством',
    random_shaper = 'случайный %s с влиянием Создателя',
    random_shaper_item_level_x = 'случайный %s с влиянием Создателя %i уровня',
    random_shaper_item_level_x_2 = 'случайная %s с влиянием Создателя %i уровня',
    random_shaper_item_level_x_3 = 'случайное %s с влиянием Создателя %i уровня',
    random_shaper_item_level_x_4 = 'случайные %s с влиянием Создателя %i уровня',
    random_elder_item_level_x = 'случайный %s с влиянием Древнего %i уровня',
    random_elder_item_level_x_2 = 'случайная %s с влиянием Древнего %i уровня',
    random_elder_item_level_x_3 = 'случайное %s с влиянием Древнего %i уровня',
    random_elder_item_level_x_4 = 'случайные %s с влиянием Древнего %i уровня',
    random_shaper_hunter_item_level_x = 'случайный %s с влиянием Создателя и Охотника %i уровня',
    random_shaper_hunter_item_level_x_2 = 'случайная %s с влиянием Создателя и Охотника %i уровня',
    random_shaper_hunter_item_level_x_3 = 'случайное %s с влиянием Создателя и Охотника %i уровня',
    random_shaper_hunter_item_level_x_4 = 'случайные %s с влиянием Создателя и Охотника %i уровня',
    random_two_influenced_x = 'случайный %s с двойным влиянием',
    random_two_influenced_x_2 = 'случайная %s с двойным влиянием',
    random_two_influenced_x_3 = 'случайное %s с двойным влиянием',
    random_two_influenced_x_4 = 'случайные %s с двойным влиянием',
    random_two_influenced_item_level_x = 'случайный %s с двойным влиянием %i уровня',
    random_two_influenced_item_level_x_2 = 'случайная %s с двойным влиянием %i уровня',
    random_two_influenced_item_level_x_3 = 'случайное %s с двойным влиянием %i уровня',
    random_two_veiled = 'случайный %s с двумя завуалированными свойствами',
    random_primordial = string.format('случайный %s %%s', m_util.html.poe_color('magic', 'Первородный')),
    random_map_level = 'случайная %s, осквернённая и %s уровня',
    random_labyrinth_enchantment = string.format('случайный %%s со случайным %s', m_util.html.poe_color('enchanted', 'зачарованием Лабиринта')),
    random_eternal_labyrinth_enchantment = string.format('случайный %%s со случайным %s', m_util.html.poe_color('enchanted', 'зачарованием Вечного Лабиринта')),

    tier_x = 'tier %i %s',
    tier_x_map = 'карта %i уровня',
    map_watchstone_count = '%s (%i watchstones)',
    map_with_x_modifiers = '%s with %i modifiers',
    map_with_x_percent_delirium = '%s with %i%% delirium',
    triskaidekaphobia = '%s с 8 свойствами, с качеством 13%% и 100%% делириума',
    level_x_gem = 'камень %i уровня',
    level_x_y_gem = 'камень с меткой "%s" %i уровня',
    superior_gem = 'камень с качеством',
    superior_gem_q_x = 'камень с качеством %i%%',
    superior_x_gem_q_y = 'камень с меткой "%s" с качеством %i%%',
    superior_level_x_y_gem_q_z = 'камень с меткой "%s" %i уровня с качеством %i%%',
    any_quality_level_x_y_gem_q_z = 'камень с меткой "%s" %i уровня с качеством %i%% (любой тип качества)',
    superior_level_x_support_plus_gem_q_y = 'пробужденный камень поддержки %i уровня с качеством %i%%',
    alt_level_x_gem_q_y = 'камень %i уровня с альтернативным качеством %i%%',
    
    x_item = 'предмет %s',
}

--[[cfg.i18n.recipes.misc = {
    upgraded_from_map = 'случайная карта уровнем выше того же региона',
}--]]

cfg.i18n.recipes.errors = {
    missing_amount = 'Кол-во предметов отсутствует или не указано (%s)',
    invalid_recipe_parts = 'Ссылка на предмет в %1$s нарушена (значение: %2$s)',
    duplicate_recipes = 'Автоматический рецепт дублируется на странице в рецепте %s',
}

-- ----------------------------------------------------------------------------
-- Constants
-- ----------------------------------------------------------------------------

cfg.image_size = 39

cfg.image_size_full = cfg.image_size * 2

-- TODO: Second pass for i18n item classes
-- base item is default, but will be validated later
-- Notes:
--  inventory_icon must always be before alternate_art_inventory_icons 
--  drop_areas after tags
--  is_relic after rarity
cfg.default_args = {
    'rarity_id', 'rarity', 'name', 'name_list', 'size_x', 'size_y', 
    'drop_rarities_ids', 'drop_rarities', 'drop_enabled', 'drop_level', 'drop_level_maximum', 'drop_text', 'required_level', 'required_level_final', 
    'inventory_icon', 'alternate_art_inventory_icons', 'flavour_text', 'flavour_text_id',
    'cannot_be_traded_or_modified', 'help_text', 'tags', 'metadata_id',
    'influences', 'is_fractured', 'is_synthesised', 'is_veiled', 'is_replica', 'is_corrupted', 'is_relic', 'is_fated',
    'purchase_costs', 'is_sellable', 'sell_prices_override', 'mods',
    'drop_areas', 'drop_areas_html', 'drop_monsters',
    
    'acquisition_tags', 'disable_automatic_recipes',
    'suppress_improper_modifiers_category',
    
    'is_prophecy', 'is_blight_item',
    
    'class',
    'is_drop_restricted',
}

-- frame_type is needed in stat_text
cfg.late_args = {'frame_type', 'implicit_stat_text', 'explicit_stat_text', 'stat_text'}

cfg.prophecy_args = {'prophecy_id', 'prediction_text', 'seal_cost', 'prophecy_objective', 'prophecy_reward'}

cfg.tables = {'items'}

cfg.class_groups = {
    flasks = {
        tables = {'flasks'},
        keys = {['LifeFlask'] = true, ['ManaFlask'] = true, ['HybridFlask'] = true, ['UtilityFlask'] = true, ['UtilityFlaskCritical'] = true},
        args = {'quality', 'flask_duration', 'charges_max', 'charges_per_use'},
    },
    weapons = {
        tables = {'weapons'},
        keys = {['Claw'] = true, ['Dagger'] = true, ['Wand'] = true, ['One Hand Sword'] = true, ['Thrusting One Hand Sword'] = true, ['One Hand Axe'] = true, ['One Hand Mace'] = true, ['Bow'] = true, ['Staff'] = true, ['Two Hand Sword'] = true, ['Two Hand Axe'] = true, ['Two Hand Mace'] = true, ['Sceptre'] = true, ['FishingRod'] = true, ['Rune Dagger'] = true, ['Warstaff'] = true},
        args = {'quality', 'required_dexterity', 'required_intelligence', 'required_strength', 'critical_strike_chance', 'attack_speed', 'physical_damage_min', 'physical_damage_max', 'lightning_damage_min', 'lightning_damage_max', 'cold_damage_min', 'cold_damage_max', 'fire_damage_min', 'fire_damage_max', 'chaos_damage_min', 'chaos_damage_max', 'weapon_range'},
        late_args = {'physical_damage_html', 'fire_damage_html', 'cold_damage_html', 'lightning_damage_html', 'chaos_damage_html', 'damage_avg', 'damage_html'},
    },
    gems = {
        tables = {'skill_gems'},
        keys = {['Active Skill Gem'] = true, ['Support Skill Gem'] = true},
        args = {'dexterity_percent', 'strength_percent', 'intelligence_percent', 'primary_attribute', 'gem_tags'},
        defaults = {
            size_x = 1,
            size_y = 1,
        },
    },
    armor = {
        tables = {'armours'},
        keys = {['Gloves'] = true, ['Boots'] = true, ['Body Armour'] = true, ['Helmet'] = true, ['Shield'] = true},
        args = {'quality', 'required_dexterity', 'required_intelligence', 'required_strength', 'armour_min', 'armour_max', 'evasion_min', 'evasion_max', 'energy_shield_min', 'energy_shield_max', 'ward_min', 'ward_max', 'movement_speed'},
    },
    stackable = {
        tables = {'stackables'},
        keys = {['Currency'] = true, ['StackableCurrency'] = true, ['DivinationCard'] = true, ['DelveSocketableCurrency'] = true, ['DelveStackableSocketableCurrency'] = true, ['IncubatorStackable'] = true, ['HarvestSeed'] = true, ['HarvestPlantBooster'] = true},
        args = {'stack_size', 'stack_size_currency_tab', 'description'},
    },
    heist_equipment = {
        tables = {'heist_equipment'},
        keys = {['HeistEquipmentWeapon'] = true, ['HeistEquipmentTool'] = true, ['HeistEquipmentUtility'] = true, ['HeistEquipmentReward'] = true},
        args = {'heist_required_job_id', 'heist_required_job_level', 'heist_data'},
    },
    jewellery = {
        keys = {['Amulet'] = true, ['Ring'] = true, ['Belt'] = true},
    },
}

-- Parameters for specific item classes
cfg.class_specifics = {
    ['Amulet'] = {
        tables = {'amulets'},
        args = {'is_talisman', 'talisman_tier'},
    },
    ['LifeFlask'] = {
        args = {'flask_life'},
    },
    ['ManaFlask'] = {
        args = {'flask_mana'},
    },
    ['HybridFlask'] = {
        args = {'flask_life', 'flask_mana'},
    },
    ['UtilityFlask'] = {
        tables = {'item_buffs'},
        args = {'buff_id', 'buff_values', 'buff_stat_text', 'buff_icon'},
    },
    ['UtilityFlaskCritical'] = {
        tables = {'item_buffs'},
        args = {'buff_id', 'buff_values', 'buff_stat_text', 'buff_icon'},
    },
    ['Active Skill Gem'] = {
        defaults = {
            help_text = cfg.i18n.help_text_defaults.active_gem,
        },
        frame_type = 'gem',
    },
    ['Support Skill Gem'] = {
        args = {'support_gem_letter', 'support_gem_letter_html'},
        defaults = {
            help_text = cfg.i18n.help_text_defaults.support_gem,
        },
        frame_type = 'gem',
    },
    ['Shield'] = {
        tables = {'shields'},
        args = {'block'},
    },
    ['Map'] = {
        tables = {'maps', 'atlas_maps'},
        args = {
            'quality', 
            
            'map_tier', 
            'map_guild_character', 
            'map_area_id', 
            'map_area_level', 
            'unique_map_area_id', 
            'unique_map_area_level', 
            'unique_map_guild_character', 
            'map_series', 
            
            'atlas_x', 
            'atlas_y',
            'atlas_region_id',
            'atlas_x0',
            'atlas_x1', 
            'atlas_x2', 
            'atlas_x3', 
            'atlas_x4', 
            'atlas_y0',
            'atlas_y1', 
            'atlas_y2', 
            'atlas_y3', 
            'atlas_y4', 
            'atlas_map_tier0',
            'atlas_map_tier1',
            'atlas_map_tier2',
            'atlas_map_tier3',
            'atlas_map_tier4',
            'atlas_connections', -- pseudo to fill connections table
        },
        skip_stat_lines = cfg.i18n.stat_skip_patterns.maps,
    },
    ['Currency'] = {
        frame_type = 'currency',
    },
    ['StackableCurrency'] = {
        tables = {'essences', 'prophecies', 'blight_items'},
        args = {'is_essence', 'essence_level_restriction', 'essence_level', 'essence_type', 'essence_category', 'blight_item_tier'},
        frame_type = 'currency',
    },
    ['Microtransaction'] = {
        tables = {'cosmetic_items'},
        args = {'description', 'cosmetic_type'},
        defaults = {
            is_sellable = false,
        },
        frame_type = 'currency',        
    },
    ['HideoutDoodad'] = {
        tables = {'hideout_doodads'},
        args = {'is_master_doodad', 'variation_count', 'description'},
        defaults = {
            is_sellable = false,
        },
        frame_type = 'currency',
    },
    ['Jewel'] = {
        tables = {'jewels'},
        late_args = {'item_limit', 'jewel_radius_html'},
        defaults = {
            help_text = cfg.i18n.help_text_defaults.jewel,
        },
        skip_stat_lines = cfg.i18n.stat_skip_patterns.jewels,
    },
    ['AbyssJewel'] = {
        tables = {'jewels'},
        late_args = {'item_limit', 'jewel_radius_html'},
        skip_stat_lines = cfg.i18n.stat_skip_patterns.jewels,
    },
    ['QuestItem'] = {
        args = {'description'},
        defaults = {
            is_sellable = false,
        },
        frame_type = 'quest',
    },
    ['DivinationCard'] = {
        tables = {'divination_cards'},
        args = {'card_art',},
        frame_type = 'divicard',
    },
    ['LabyrinthItem'] = {
        defaults = {
            is_sellable = false,
        },
        frame_type = 'currency',
    },
    ['LabyrinthTrinket'] = {
        tables = {'item_buffs'},
        args = {'description', 'buff_icon'},
        frame_type = 'currency',
    },
    ['PantheonSoul'] = {
        defaults = {
            cannot_be_traded_or_modified = true,
        },
    },
    ['IncursionItem'] = {
        frame_type = 'currency',
    },
    ['IncubatorStackable'] = {
        tables = {'incubators'},
        args = {'incubator_effect'},
        defaults = {
            is_drop_restricted = true,
        },
        frame_type = 'currency',
    },
    ['HarvestSeed'] = {
        tables = {'harvest_seeds'},
        args = {'seed_effect', 'seed_type_id', 'seed_effect', 'seed_type', 'seed_type_html', 'seed_tier', 'seed_growth_cycles', 'seed_required_nearby_seed_tier', 'seed_required_nearby_seed_amount', 'seed_consumed_wild_lifeforce_percentage', 'seed_consumed_vivid_lifeforce_percentage', 'seed_consumed_primal_lifeforce_percentage', 'seed_granted_craft_option_ids'},
        frame_type = 'currency',
    },
    ['HarvestPlantBooster'] = {
        tables = {'harvest_plant_boosters'},
        args = {'plant_booster_radius', 'plant_booster_lifeforce', 'plant_booster_additional_crafting_options', 'plant_booster_extra_chances'},
        defaults = {
            is_sellable = false,
        },
        frame_type = 'currency',
    },
    ['AtlasRegionUpgradeItem'] = {
        defaults = {
            help_text = cfg.i18n.help_text_defaults.watchstone,
        },
    },
}

-- Acquisition tags
cfg.acquisition_tags = {
    ['league-specific'] = {
        name = 'Из лиги',
        page = 'Предмет из лиги',
    },
    ['fishing'] = {
        name = 'Для рыбалки',
        page = 'Рыбалка',
    },
    ['experimented base type'] = {
        name = 'Экспериментальный базовой тип',
        page = 'Экспериментальные базовые типы',
    },
    ['ritual base type'] = {
        name = 'Базовый тип Ритуала',
        page = 'Базовые типы Ритуала',
    },
    ['runic base type'] = {
        name = 'Рунический базовый тип',
        page = 'Рунические базовые типы',
    },
}
for k, v in pairs(m_game.constants.leagues) do
    cfg.acquisition_tags[k] = {
        name = v.name,
        page = string.format('Лига %s', v.name),
    }
end

-- Prophecy stuff
cfg.prophecy_base_item = 'Пророчество'
cfg.prophecy_base_item_page = 'Пророчество'

--
-- Required level
--

-- An item's base level requirement is waived unless it is at least this value.
cfg.base_item_required_level_threshold = 5

-- Modifiers contribute this much of their level requirement to an item's level requirement.
cfg.item_required_level_modifier_contribution = 0.8

return cfg