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

Материал из FIRE STATION WIKI
Нет описания правки
Метка: отменено
Нет описания правки
Метка: ручная отмена
 
(не показано 6 промежуточных версий этого же участника)
Строка 1: Строка 1:
local loader = require("Module:JsonPageLoader")
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"


local chemPage  = "User:SunriseBot/chem_prototypes.json"
-- Загружаем данные из JSON файлов
local reactPage = "User:SunriseBot/react_prototypes.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 = loader.load(chemPage),
chem = processedChem,
react = loader.load(reactPage),
react = reactData,
-- карта перенаправлений по группам для линковки
status = statusData,
flavors = flavorData,
groupDirection = {
groupDirection = {
Drinks = "Drinks";
Drinks = "Drinks";
Foods = "Cooking";
Foods = "Cooking";
}
}
}
}

Текущая версия от 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";
	}
}