Reach7 (обсуждение | вклад) Нет описания правки |
Нет описания правки Метка: ручная отмена |
||
(не показано 7 промежуточных версий этого же участника) | |||
Строка 1: | Строка 1: | ||
local chem = "User: | local chem = "User:FireBot/chem_prototypes.json" | ||
local react = "User: | 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 { | return { | ||
chem = | chem = processedChem, | ||
react = reactData, | |||
status = statusData, | |||
flavors = flavorData, | |||
groupDirection = { | groupDirection = { | ||
Drinks = "Drinks"; | Drinks = "Drinks"; |
Текущая версия от 23:57, 6 сентября 2025
Для документации этого модуля может быть создана страница Модуль: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";
}
}