Dantes (обсуждение | вклад) (Новая страница: «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...») |
Dantes (обсуждение | вклад) Нет описания правки |
||
| (не показана 1 промежуточная версия этого же участника) | |||
| Строка 1: | Строка 1: | ||
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 | |||
Текущая версия от 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