Для документации этого модуля может быть создана страница Модуль:Chemistry Lookup/data/doc
local chem = "User:FireBot/chem_prototypes.json"
local react = "User:FireBot/react_prototypes.json"
local status = "User:FireBot/chem_status.json"
local flavors = "User:FireBot/flavors.json"
-- Загружаем данные из JSON файлов
local chemData = mw.text.jsonDecode(mw.title.new(chem, "User"):getContent())
local reactData = mw.text.jsonDecode(mw.title.new(react, "User"):getContent())
local statusData = mw.text.jsonDecode(mw.title.new(status, "User"):getContent())
local flavorData = mw.text.jsonDecode(mw.title.new(flavors, "User"):getContent())
-- Функция для поиска рецептов химиката
local function findRecipesForChem(chemName)
local recipes = {}
for reactionId, reactionData in pairs(reactData) do
if reactionData.products and reactionData.products[chemName] then
table.insert(recipes, reactionId)
end
end
return recipes
end
-- Обрабатываем данные химикатов
local processedChem = {}
for chemId, chemInfo in pairs(chemData) do
if type(chemInfo) == "table" and chemInfo.type == "reagent" then
-- Копируем все данные химиката
processedChem[chemId] = {}
for k, v in pairs(chemInfo) do
processedChem[chemId][k] = v
end
-- Исправляем структуру метаболизма - заменяем metabolismRate на rate
if chemInfo.metabolisms then
processedChem[chemId].metabolisms = {}
for metabType, metabData in pairs(chemInfo.metabolisms) do
processedChem[chemId].metabolisms[metabType] = {}
-- Копируем все данные метаболизма
for k, v in pairs(metabData) do
if k == "metabolismRate" then
-- Переименовываем metabolismRate в rate
processedChem[chemId].metabolisms[metabType].rate = v
else
processedChem[chemId].metabolisms[metabType][k] = v
end
end
-- Если rate не был задан, устанавливаем значение по умолчанию
if not processedChem[chemId].metabolisms[metabType].rate then
processedChem[chemId].metabolisms[metabType].rate = 1.0
end
end
end
-- Добавляем рецепты
local recipes = findRecipesForChem(chemId)
if #recipes > 0 then
processedChem[chemId].recipes = recipes
end
end
end
return {
chem = processedChem,
react = reactData,
status = statusData,
flavors = flavorData,
groupDirection = {
Drinks = "Drinks";
Foods = "Cooking";
}
}