Модуль:ChemCard/data: различия между версиями

Материал из Space Stories Wiki
(Новая страница: «return { Chlorine = { name = "Хлор", color = "#00ff44", border = "#0077ff", bg = "#ff0077", recipes = {"Натрий [1] > Хлор [1]", "Столовая соль [2]"}, effects = {"Poison (0.5 единиц в секунду)", "Наносит 4 Poison за единицу"}, desc = "Токсичный газ, желто-зеленый, опасен для человека." }, Fluorine = { name = "Фтор", color = "#a0ff00", bo...»)
 
Нет описания правки
 
(не показана 1 промежуточная версия этого же участника)
Строка 1: Строка 1:
return {
local prototypes = mw.loadData("Module:Chemistry Lookup/data")
Chlorine = {
 
name = "Хлор",
local p = {}
color = "#00ff44",
p.chem = prototypes.chem
border = "#0077ff",
p.react = prototypes.react
bg = "#ff0077",
p.groupDirection = prototypes.groupDirection
recipes = {"Натрий [1] > Хлор [1]", "Столовая соль [2]"},
 
effects = {"Poison (0.5 единиц в секунду)", "Наносит 4 Poison за единицу"},
local function tablelength(T)
desc = "Токсичный газ, желто-зеленый, опасен для человека."
  local count = 0
},
  for _ in pairs(T) do count = count + 1 end
Fluorine = {
  return count
name = "Фтор",
end
color = "#a0ff00",
 
border = "#70bf00",
function p.card(frame)
bg = "#101010",
local key = frame.args[1]
recipes = {"Фтор [1] > Результат F [1]"},
local chem = p.chem[key]
effects = {"Poison (0.5 единиц в секунду)", "Наносит 1 Caustic и 1 Poison за единицу"},
if not chem then return "" end
desc = "Очень реактивный бледно-жёлтый газ."
local out = '<div class="chem-card" style="background:'..chem.bg..'; border:2px solid '..chem.border..'; padding:8px; border-radius:8px; margin:4px;">'
},
out = out .. '<div class="chem-card-header" style="color:'..chem.color..'; font-weight:700; font-size:1.1em; margin-bottom:4px;">'..chem.name..'</div>'
Example3 = {
name = "Пример 3",
if chem.recipes and tablelength(chem.recipes) > 0 then
color = "#ff7f50",
out = out .. '<div class="chem-card-recipes" style="margin-bottom:4px;"><b>Рецепты:</b><br>'
border = "#bf5f40",
for _, recipe in pairs(chem.recipes) do
bg = "#101010",
local reactid = recipe.id or ""
recipes = {"Элемент A [2]", "Элемент B [1] > Результат C [1]"},
local reactdata = p.react[reactid]
effects = {},
if reactdata then
desc = "Это демонстрационная реакция: элементы смешиваются и дают результат."
out = out .. '<b>Ингредиенты:</b> '
},
for i, ing in pairs(reactdata.reactants) do
Example4 = {
out = out .. ing.name .. " [" .. ing.amount .. "]"
name = "Пример 4",
if i<#reactdata.reactants then out = out .. ", " end
color = "#7fafff",
end
border = "#5f8fbf",
out = out .. '<br><b>Продукты:</b> '
bg = "#101010",
for i, prod in pairs(reactdata.products) do
recipes = {"Элемент X [1]", "Элемент Y [2] > Результат Z [1]"},
out = out .. prod.name .. " [" .. prod.amount .. "]"
effects = {},
if i<#reactdata.products then out = out .. ", " end
desc = "Демонстрация другой реакции с кастомным описанием."
end
},
out = out .. '<br><hr style="border:1px solid #444;">'
Hydrogen = {
end
name = "Водород",
end
color = "#66ccff",
out = out .. '</div>'
border = "#3399cc",
end
bg = "#101010",
recipes = {},
if chem.metabolisms and tablelength(chem.metabolisms) > 0 then
effects = {},
out = out .. '<div class="chem-card-effects" style="margin-bottom:4px;"><b>Эффекты:</b><br>'
desc = "Простейший и самый распространенный элемент во Вселенной. Газ без цвета, запаха и вкуса."
for k, met in pairs(chem.metabolisms) do
},
for _, e in pairs(met.effects) do
Oxygen = {
out = out .. e.description .. "<br>"
name = "Кислород",
end
color = "#99ff99",
end
border = "#33cc33",
out = out .. '</div>'
bg = "#101010",
end
recipes = {},
effects = {},
out = out .. '<div class="chem-card-desc" style="font-size:0.9em;">'..chem.desc..'</div>'
desc = "Газ, необходимый для дыхания живых организмов. В нормальных условиях бесцветный и без запаха."
out = out .. '</div>'
},
return out
Gold = {
end
name = "Золото",
 
color = "#ffd700",
return p
border = "#bfa500",
bg = "#101010",
recipes = {},
effects = {},
desc = "Мягкий, желтый металл, который хорошо проводит электричество и тепло. Используется в ювелирных изделиях."
},
Carbon = {
name = "Углерод",
color = "#aaaaaa",
border = "#777777",
bg = "#101010",
recipes = {},
effects = {},
desc = "Элемент, образующий основу органической химии. Встречается в алмазах, графите и живых организмах."
}
}

Текущая версия от 08:05, 11 ноября 2025

Для документации этого модуля может быть создана страница Модуль:ChemCard/data/doc

local prototypes = mw.loadData("Module:Chemistry Lookup/data")

local p = {}
p.chem = prototypes.chem
p.react = prototypes.react
p.groupDirection = prototypes.groupDirection

local function tablelength(T)
  local count = 0
  for _ in pairs(T) do count = count + 1 end
  return count
end

function p.card(frame)
	local key = frame.args[1]
	local chem = p.chem[key]
	if not chem then return "" end
	local out = '<div class="chem-card" style="background:'..chem.bg..'; border:2px solid '..chem.border..'; padding:8px; border-radius:8px; margin:4px;">'
	out = out .. '<div class="chem-card-header" style="color:'..chem.color..'; font-weight:700; font-size:1.1em; margin-bottom:4px;">'..chem.name..'</div>'
	
	if chem.recipes and tablelength(chem.recipes) > 0 then
		out = out .. '<div class="chem-card-recipes" style="margin-bottom:4px;"><b>Рецепты:</b><br>'
		for _, recipe in pairs(chem.recipes) do
			local reactid = recipe.id or ""
			local reactdata = p.react[reactid]
			if reactdata then
				out = out .. '<b>Ингредиенты:</b> '
				for i, ing in pairs(reactdata.reactants) do
					out = out .. ing.name .. " [" .. ing.amount .. "]"
					if i<#reactdata.reactants then out = out .. ", " end
				end
				out = out .. '<br><b>Продукты:</b> '
				for i, prod in pairs(reactdata.products) do
					out = out .. prod.name .. " [" .. prod.amount .. "]"
					if i<#reactdata.products then out = out .. ", " end
				end
				out = out .. '<br><hr style="border:1px solid #444;">'
			end
		end
		out = out .. '</div>'
	end
	
	if chem.metabolisms and tablelength(chem.metabolisms) > 0 then
		out = out .. '<div class="chem-card-effects" style="margin-bottom:4px;"><b>Эффекты:</b><br>'
		for k, met in pairs(chem.metabolisms) do
			for _, e in pairs(met.effects) do
				out = out .. e.description .. "<br>"
			end
		end
		out = out .. '</div>'
	end
	
	out = out .. '<div class="chem-card-desc" style="font-size:0.9em;">'..chem.desc..'</div>'
	out = out .. '</div>'
	return out
end

return p