Изменения

Модуль:Инвентарный слот/Псевдонимы

18 505 байтов добавлено, 07:53, 3 августа 2016
Новая страница: «-- Список псевдонимов названий блоков и предметов, принимаемых модулем «Инвентарный сло…»
-- Список псевдонимов названий блоков и предметов, принимаемых модулем «Инвентарный слот».

local russian = mw.language.new('ru')

-- «Цветные» красители
local coloredDyes = 'Оранжевый краситель; Сиреневый краситель; Светло-синий краситель; Жёлтый одуванчиковый; Лаймовый краситель; Розовый краситель; Серый краситель; Светло-серый краситель; Бирюзовый краситель; Фиолетовый краситель; Лазурит; Какао-бобы; Кактусовая зелень; Красный краситель; Чернильный мешок'

local aliases = {
-- Списки --
['Любой краситель'] = 'Костная мука; ' .. coloredDyes,
['Любой цветной краситель'] = coloredDyes,
['Любая цветная шерсть'] = 'Оранжевая шерсть; Сиреневая шерсть; Светло-синяя шерсть; Жёлтая шерсть; Лаймовая шерсть; Розовая шерсть; Серая шерсть; Светло-серая шерсть; Бирюзовая шерсть; Фиолетовая шерсть; Синяя шерсть; Коричневая шерсть; Зелёная шерсть; Красная шерсть; Чёрная шерсть',
['Любое топливо'] = 'Уголь; Древесный уголь; Древесина; Доски',
['Любой гриб'] = '[Гриб]Красный гриб; [Гриб]Коричневый гриб',
['Любой кварцевый блок'] = 'Кварцевый блок; Резной кварцевый блок; Кварцевый пилон',
['Любой красный песчаник'] = 'Красный песчаник; Декоративный красный песчаник; Гладкий красный песчаник',
['Любой песчаник'] = 'Песчаник; Декоративный песчаник; Гладкий песчаник',
['Любой каменный кирпич'] = 'Каменный кирпич; Замшелый каменный кирпич; Потрескавшийся каменный кирпич; Резной каменный кирпич',
['Любая каменная плита'] = 'Каменная плита; Песчаниковая плита; Булыжниковая плита; Кирпичная плита; Плита из каменного кирпича; Плита из адского кирпича; Кварцевая плита',

-- Техническое --
['Базовый флаг'] = '[Флаг]Светло-серый флаг' .. string.rep('; Флаг', 15), -- Используется в изображении процесса нанесения на флаг фигур; первый флаг
-- в цепочке светло-серый (как и получаемый флаг), чтобы были видны белые фигуры

-- Блоки и предметы с изменёнными отображаемыми названиями --
['Сломанные надкрылья'] = '[Надкрылья]Сломанные надкрылья',
['Коричневый гриб'] = '[Гриб]Коричневый гриб',
['Огромный коричневый гриб'] = '[Гриб]Огромный коричневый гриб',
['Глиняный блок'] = '[Глина]Глиняный блок',
--['Зачарованная книга'] = '[&e]Зачарованная книга', -- minetips не поддерживаются
--['Зачарованное золотое яблоко'] = '[&d]Золотое яблоко', -- minetips не поддерживаются
['Рамка портала Края'] = '[Портал (Край)]Рамка портала Края',
--['Золотое яблоко'] = '[&b]Золотое яблоко', -- minetips не поддерживаются
['Адский кирпич (предмет)'] = '[Адский кирпич]Адский кирпич (предмет)',
['Красный гриб'] = '[Гриб]Красный гриб',
['Огромный красный гриб'] = '[Гриб]Огромный красный гриб',
['Снег (слой)'] = '[Снег]Снег (слой)',
['Каменная кнопка'] = '[Кнопка]Каменная кнопка',
['Деревянная кнопка'] = '[Кнопка]Деревянная кнопка',

-- Зелья без эффектов --
--[[ minetips не поддерживаются
['Awkward Potion'] = 'Awkward Potion[&7No effects]',
['Water Bottle'] = 'Water Bottle[&7No effects]', -- колба воды тоже относится к зельям
['Thick Potion'] = 'Thick Potion[&7No effects]',
['Mundane Potion'] = 'Mundane Potion[&7No effects]'
]]
}

-- Пластинки --
--[[ minetips не поддерживаются
local discs = { '13', 'cat', 'blocks', 'chirp', 'far', 'mall', 'mellohi', 'stal', 'strad', 'ward', '11', 'wait' }
for _, disc in ipairs( discs ) do
local name = disc .. ' Disc'
aliases[name] = '[&bMusic Disc]' .. name .. '[&7C418 - ' .. disc .. ']'
end
]]

-- Повреждённая экипировка --

-- В отличие от английского языка в русском языке окончание прилагательных изменяется в зависимости
-- от числа и рода существительных, к которым они относятся. Поэтому элементами таблицы являются
-- подтаблицы из двух элементов — собственно названия и рода (в единственном числе) или показателя
-- множественного числа.

local damagedItems = {
{'лук', 'м'}, -- мужской род
{'кольчужный шлем', 'м'},
{'алмазный топор', 'м'},
{'алмазный шлем', 'м'},
{'алмазный меч', 'м'},
{'золотой топор', 'м'},
{'золотой шлем', 'м'},
{'золотой меч', 'м'},
{'железный топор', 'м'},
{'железный шлем', 'м'},
{'железный меч', 'м'},
{'щит', 'м'},
{'каменный топор', 'м'},
{'каменный меч', 'м'},
{'деревянный топор', 'м'},
{'деревянный меч', 'м'},
{'огниво', 'с'}, -- средний род
{"удочка с морковью", "ж"}, -- женский род
{"кольчужная кираса", "ж"},
{"алмазная кираса", "ж"},
{"алмазная мотыга", "ж"},
{"алмазная кирка", "ж"},
{"алмазная лопата", "ж"},
{"удочка", "ж"},
{"золотая кираса", "ж"},
{"золотая мотыга", "ж"},
{"золотая кирка", "ж"},
{"золотая лопата", "ж"},
{"железная кираса", "ж"},
{"железная мотыга", "ж"},
{"железная кирка", "ж"},
{"железная лопата", "ж"},
{"кожаная шапка", "ж"},
{"кожаная куртка", "ж"},
{"каменная мотыга", "ж"},
{"каменная кирка", "ж"},
{"каменная лопата", "ж"},
{"деревянная мотыга", "ж"},
{"деревянная кирка", "ж"},
{"деревянная лопата", "ж"},
{"кольчужные ботинки", "н"}, -- множественное число (н — от «несколько»)
{"кольчужные поножи", "н"},
{"алмазные ботинки", "н"},
{"алмазные поножи", "н"},
{"надкрылья", "н"},
{"золотые ботинки", "н"},
{"золотые поножи", "н"},
{"железные ботинки", "н"},
{"железные поножи", "н"},
{"кожаные сапоги", "н"},
{"кожаные штаны", "н"},
{"ножницы", "н"}
}
local damaged = {["м"] = "Повреждённый", ["ж"] = "Повреждённая", ["с"] = "Повреждённое", ["н"] = "Повреждённые"}

-- Добавление
for _, item in ipairs(damagedItems) do
local name = damaged[item[2]] .. ' ' .. item[1]
aliases[name] = '[' .. item[1] .. ']' .. name
end

-- Цветные предметы и флаги --

-- Прилагательное «любой»
local anyDeclensed = {["м"] = "Любой", ["ж"] = "Любая", ["с"] = "Любое", ["н"] = "Любые"}

-- Все цвета в начальной форме
local colors = {
"белый",
"оранжевый",
"сиреневый",
"светло-синий",
"жёлтый",
"лаймовый",
"розовый",
"серый",
"светло-серый",
"бирюзовый",
"фиолетовый",
"синий",
"коричневый",
"зелёный",
"красный",
"чёрный"
}

-- Все склонения прилагательных
local colorsDeclensed = mw.loadData("Модуль:Склонение прилагательных")

-- Шаблоны названий фигур флагов в творительном падеже. %s — цвет (тоже в творительном).
-- Значения элементов таблицы сами являются таблицами: первое значение — собственно текст, второе — род или число названия фигуры.

local patterns = {
{'%s верхне-правым крыжем', 'м'},
{'%s верхне-левым крыжем', 'м'},
{'%s нижне-правым крыжем', 'м'},
{'%s нижне-левым крыжем', 'м'},
{'%s основанием', 'с'},
{'%s поясом', 'м'},
{'%s главой', 'ж'},
{'%s зубчатым основанием', 'с'},
{'%s зубчатой главой', 'ж'},
{'%s правосторонним столбом', 'м'},
{'%s столбом', 'м'},
{'%s левосторонним столбом', 'м'},
{'%s столбами', 'н'},
{'%s перевязью', 'ж'},
{'%s левой перевязью', 'ж'},
{'%s крестом', 'м'},
{'%s косым крестом', 'м'},
{'%s верхней половиной', 'ж'},
{'%s нижней половиной', 'ж'},
{'%s левой половиной', 'ж'},
{'%s правой половиной', 'ж'},
{'%s скошением', 'с'},
{'%s опрокинутым скошением', 'с'},
{'%s скошением слева', 'с'},
{'%s опрокинутым скошением слева', 'с'},
{'%s каймой', 'ж'},
{'%s зубчатой каймой', 'ж'},
{'%s муровкой', 'ж'},
{'%s книзу градиентом', 'м'},
{'%s кверху градиентом', 'м'},
{'%s остриём', 'с'},
{'%s опрокинутым остриём', 'с'},
{'%s ромбом', 'м'},
{'%s кругом', 'м'},
{'%s крипером', 'м'},
{'%s цветком', 'м'},
{'%s черепом', 'м'},
{'чем-то %s', 'с'},
}

aliases['Любая звёздочка'] = {}
for _, color in ipairs( colors ) do
local name = russian:ucfirst(colorsDeclensed[color]["ж"]["и"]) .. ' звёздочка'
--aliases[name] = '[Firework Star]' .. name .. '[&7' .. color .. ']' -- minetips не поддерживаются
table.insert( aliases['Любая звёздочка'], name ) -- было aliases[name], стало просто name

--[[ -- minetips не поддерживаются
for _, pattern in ipairs( patterns ) do
name = "Флаг с " .. mw.ustring.format(pattern[1], colorsDeclensed[color][pattern[2] ]["т"])
aliases[name] = '[Banner]' .. name .. '[&7' .. color .. ' ' .. pattern .. ']'
end
]]
end
aliases['Любая звёздочка'] = table.concat( aliases['Любая звёздочка'], ';' )

-- Все цветовые версии узоров флагов

-- Прилагательное «любой» в творительном падеже
local anyInstrumental = {["м"] = "любым", ["ж"] = "любой", ["с"] = "любым", ["н"] = "любыми"}

for _, pattern in ipairs(patterns) do
local name = "Флаг с " .. mw.ustring.format(pattern[1], anyInstrumental[pattern[2]])
aliases[name] = {}

for _, color in ipairs(colors) do
value = mw.ustring.gsub("Флаг с " .. mw.ustring.format(pattern[1], colorsDeclensed[color][pattern[2]]["т"]), "Флаг с с([^аоуыеяёюие])", "Флаг со с%1")
table.insert(aliases[name], value)
end

aliases[name] = table.concat(aliases[name], ";")
end

-- Предметы, использующие все 16 цветов --
local coloredItems = {
{'ковёр', 'м'},
{'окрашенная глина', 'ж'},
{'окрашенное стекло', 'с'},
{'окрашенная стеклянная панель', 'ж'},
{'флаг', 'м'},
{'шерсть', 'ж'},
{'щит', 'ж'}
}

for _, item in ipairs( coloredItems ) do
local name = anyDeclensed[item[2]] .. ' ' .. item[1]
aliases[name] = {}
for _, color in ipairs( colors ) do
table.insert( aliases[name], russian:ucfirst(colorsDeclensed[color][item[2]]["и"]) .. ' ' .. item[1] )
end
aliases[name] = table.concat( aliases[name], ';' )
end

-- Зелья --

-- Названия эффектов в родительном падеже
local effectsGenitive = {
"регенерации",
"ускорения",
"огнестойкости",
"отравления",
"лечения",
"ночного зрения",
"слабости",
"силы",
"замедления",
"прыгучести",
"урона",
"подводного дыхания",
"невидимости",
"удачи"
}
aliases['Любое зелье'] = {
"Колба воды",
"Грубое зелье",
"Густое зелье",
"Непримечательное зелье"
}
aliases['Любое взрывающееся зелье'] = {
"Взрывающаяся колба воды",
"Взрывающееся грубое зелье",
"Взрывающееся густое зелье",
"Взрывающееся непримечательное зелье"
}
aliases['Любое оседающее зелье'] = {
"Оседающая колба воды", -- хоть и звучит странно, но это так
"Оседающее грубое зелье",
"Оседающее густое зелье",
"Оседающее непримечательное зелье"
}
aliases['Любая стрела с эффектом'] = {
"Стрела разбрызгивания",
"Стрела с эффектом",
"Стрела с эффектом",
"Стрела с эффектом"
}
for _, ofEffect in ipairs( effectsGenitive ) do
table.insert( aliases['Любое зелье'], 'Зелье ' .. ofEffect )
table.insert( aliases['Любое взрывающееся зелье'], 'Взрывающееся зелье ' .. ofEffect )
table.insert( aliases['Любое оседающее зелье'], 'Оседающее зелье ' .. ofEffect )
table.insert( aliases['Любая стрела с эффектом'], 'Стрела ' .. ofEffect )
end
aliases['Любое зелье'] = table.concat( aliases['Любое зелье'], ';' )
aliases['Любое взрывающееся зелье'] = table.concat( aliases['Любое взрывающееся зелье'], ';' )
aliases['Любое оседающее зелье'] = table.concat( aliases['Любое оседающее зелье'], ';' )
aliases['Любая стрела с эффектом'] = table.concat( aliases['Любая стрела с эффектом'], ';' )

-- Древесина --

-- Список сортов дерева. По умолчанию подразумевается прилагательное, но если указано поле genitiveOnly,
-- то указывается существительное в родительном падеже.
local woods = {
{["м"] = 'дубовый', ["ж"] = 'дубовая', ["с"] = 'дубовое', ["н"] = 'дубовые'},
{["м"] = 'еловый', ["ж"] = 'еловая', ["с"] = 'еловое', ["н"] = 'еловые'},
{["м"] = 'берёзовый', ["ж"] = 'берёзовая', ["с"] = 'берёзовое', ["н"] = 'берёзовые'},
{["м"] = 'джунглевый', ["ж"] = 'джунглевая', ["с"] = 'джунглевое', ["н"] = 'джунглевые'},
{["м"] = 'акациевый', ["ж"] = 'акациевая', ["с"] = 'акациевое', ["н"] = 'акациевые'},
{genitiveOnly = "тёмного дуба"},
}

-- Список предметов из дерева
local woodItems = {
{'ворота', 'н'},
{'доски', 'н'},
{'древесина', 'ж'},
{'деревянная дверь', 'ж'},
{'деревянный забор', 'м'},
{'лодка', 'ж'},
{'деревянная плита', 'ж'},
{'деревянные ступени', 'н'},
}

-- Некоторые предметы имеют своих собратьев не из дерева, но в названиях их деревянных вариантов нет слова «деревянный», которое требуется
-- в обобщающем псевдониме.
local woodNames = {
['деревянная дверь'] = 'дверь',
['деревянный забор'] = 'забор',
['деревянная плита'] = 'плита',
['деревянные ступени'] = 'ступени',
}

for _, item in ipairs( woodItems ) do
local itemName = woodNames[item[1]] or item[1]
local woodAliases = {}
for _, wood in ipairs( woods ) do
local name = ""
if wood.genitiveOnly then
if item[1] == "древесина" then
name = itemName .. " " .. wood.genitiveOnly
else
name = itemName .. " из " .. wood.genitiveOnly
end
else
name = wood[item[2]] .. " " .. itemName
end
table.insert( woodAliases, russian:ucfirst(name) )
end
woodAliases = table.concat( woodAliases, ';' )
aliases[anyDeclensed[item[2]] .. " " .. item[1]] = woodAliases
end

return aliases