Документация

Этот Lua-модуль содержит общие данные по псевдонимам, которые можно использовать в инвентарных слотах вместо собственных названий предметов.

Большинство псевдонимов определяются для групп предметов. Это удобно, так как не приходится перечислять все предметы. Более того, группу предметов, для которой записан псевдоним можно изменять в одном месте (данном модуле), и тогда не придётся менять те страницы, где он используется.

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

Расположенная выше документация включена из Модуль:Инвентарный слот/Псевдонимы/док.

-- Список псевдонимов названий блоков и предметов, принимаемых модулем «Инвентарный слот».

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

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

local aliases = {
	-- Списки --
	['Любой краситель'] = 'Костная мука; ' .. coloredDyes,
		['Любой цветной краситель'] = coloredDyes,
	['Любая цветная шерсть'] = 'Оранжевая шерсть; Сиреневая шерсть; Светло-синяя шерсть; Жёлтая шерсть; Лаймовая шерсть; Розовая шерсть; Серая шерсть; Светло-серая шерсть; Бирюзовая шерсть; Фиолетовая шерсть; Синяя шерсть; Коричневая шерсть; Зелёная шерсть; Красная шерсть; Чёрная шерсть',
	['Любое топливо'] = 'Уголь; Древесный уголь; Древесина; Доски',
	['Любой гриб'] = '[Гриб]Красный гриб; [Гриб]Коричневый гриб',
	['Любой кварцевый блок'] = 'Кварцевый блок; Резной кварцевый блок; Кварцевый пилон',
	['Любой красный песчаник'] = 'Красный песчаник; Декоративный красный песчаник; Гладкий красный песчаник',
	['Любой песчаник'] = 'Песчаник; Декоративный песчаник; Гладкий песчаник',
	['Любой каменный кирпич'] = 'Каменный кирпич; Замшелый каменный кирпич; Потрескавшийся каменный кирпич; Резной каменный кирпич',
	['Любая каменная плита'] = 'Каменная плита; Песчаниковая плита; Булыжниковая плита; Кирпичная плита; Плита из каменного кирпича; Плита из адского кирпича; Кварцевая плита',
	
	-- Техническое --
	['Базовый флаг'] = '[Флаг]Светло-серый флаг' .. string.rep('; Флаг', 15), -- Используется в изображении процесса нанесения на флаг фигур; первый флаг
	                                                                          -- в цепочке светло-серый (как и получаемый флаг), чтобы были видны белые фигуры
	
	-- Блоки и предметы с изменёнными отображаемыми названиями --
	['Сломанные надкрылья'] = '[Надкрылья]Сломанные надкрылья',
	['Коричневый гриб'] = '[Гриб]Коричневый гриб',
	['Огромный коричневый гриб'] = '[Гриб]Огромный коричневый гриб',
	['Глиняный блок'] = '[Глина]Глиняный блок',
	['Зачарованная книга'] = '[&e]Зачарованная книга',
	['Зачарованное золотое яблоко'] = '[&d]Золотое яблоко',
	['Рамка портала Края'] = '[Портал (Край)]Рамка портала Края',
	['Золотое яблоко'] = '[&b]Золотое яблоко',
	['Адский кирпич (предмет)'] = '[Адский кирпич]Адский кирпич (предмет)',
	['Красный гриб'] = '[Гриб]Красный гриб',
	['Огромный красный гриб'] = '[Гриб]Огромный красный гриб',
	['Снег (слой)'] = '[Снег]Снег (слой)',
	['Каменная кнопка'] = '[Кнопка]Каменная кнопка',
	['Деревянная кнопка'] = '[Кнопка]Деревянная кнопка',

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

-- Пластинки --
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] = '[Звёздочка]' .. name .. '[&7' .. color .. ']'
	table.insert( aliases['Любая звёздочка'], aliases[name] )
	for _, pattern in ipairs( patterns ) do
		name = "Флаг с " .. mw.ustring.format(pattern[1], colorsDeclensed[color][pattern[2] ]["т"])
		aliases[name] = '[Базовый флаг]' .. 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