Перейти к содержанию

Модуль:Редкость

Материал из ARC Raiders Wiki

Цветная плашка редкости предмета. В статьях используйте шаблон Шаблон:Редкость: {{Редкость|Редкий}}. Карточка предмета вызывает модуль сама.

Понимает Обычный, Необычный, Редкий, Эпический, Легендарный в любом роде и регистре, а также английские Common, Uncommon, Rare, Epic, Legendary. Неизвестное значение выводится как есть, а статья попадает в Категория:Страницы с неизвестной редкостью.

Цвета плашек задаются в Шаблон:Инфобокс/styles.css (классы arc-rarity-*).


-- Модуль:Редкость — цветная плашка редкости предмета.
--   {{#invoke:Редкость|badge|Редкий}}  →  «Редкий» на синем фоне
-- Понимает любые формы слова («редкий», «редкая», «Rare») и английские названия.
-- Неизвестное значение выводится как есть и добавляет страницу в служебную категорию.

local p = {}

local RARITIES = {
	{ stem = 'необычн', en = 'uncommon', label = 'Необычный', class = 'uncommon' },
	{ stem = 'обычн', en = 'common', label = 'Обычный', class = 'common' },
	{ stem = 'редк', en = 'rare', label = 'Редкий', class = 'rare' },
	{ stem = 'эпическ', en = 'epic', label = 'Эпический', class = 'epic' },
	{ stem = 'легендарн', en = 'legendary', label = 'Легендарный', class = 'legendary' },
}

function p.find( value )
	local key = mw.ustring.lower( mw.text.trim( value or '' ) )
	if key == '' then
		return nil
	end
	for _, rarity in ipairs( RARITIES ) do
		if key == rarity.en or mw.ustring.find( key, '^' .. rarity.stem ) then
			return rarity
		end
	end
	return nil
end

function p.badge( frame )
	local value = frame.args[1]
	if not value or mw.text.trim( value ) == '' then
		value = frame:getParent().args[1]
	end
	value = mw.text.trim( value or '' )
	if value == '' then
		return ''
	end
	local rarity = p.find( value )
	if not rarity then
		local category = ''
		if mw.title.getCurrentTitle().namespace == 0 then
			category = '[[Категория:Страницы с неизвестной редкостью]]'
		end
		return value .. category
	end
	return string.format(
		'<span class="arc-rarity arc-rarity-%s" title="%s">%s</span>',
		rarity.class,
		rarity.en:gsub( '^%l', string.upper ),
		rarity.label
	)
end

return p