Модуль:Chemistry Lookup
Материал из SS14 Backmen
Для документации этого модуля может быть создана страница Модуль:Chemistry Lookup/doc
-- Модуль Chemistry Lookup local ChemistryLookup = {} -- Импорт JSON-данных local chemData = mw.text.jsonDecode(mw.title.new("User:BKM-Head/chem_prototypes.json", "User"):getContent()) or {} -- Временное хранилище для несохранённых изменений local tempData = {} -- Функция для добавления временных данных function ChemistryLookup:setTempData(prototype, field, value) tempData[prototype] = tempData[prototype] or {} tempData[prototype][field] = value end -- Функция для получения данных с учётом временных изменений function ChemistryLookup:getChemData(prototype, field) -- Проверяем временные данные if tempData[prototype] and tempData[prototype][field] then return tempData[prototype][field] end -- Если временных данных нет, возвращаем из оригинального источника local chem = chemData[prototype] if not chem then return nil end return chem[field] or nil end -- Получение цвета реагента function ChemistryLookup:getcolor(prototype) return self:getChemData(prototype, "color") or "#000000FF" end -- Получение цвета текста function ChemistryLookup:gettextcolor(prototype) return self:getChemData(prototype, "textColor") or "#FFFFFFFF" end -- Получение имени реагента function ChemistryLookup:getname(prototype) return self:getChemData(prototype, "name") or "Неизвестное вещество" end -- Получение описания реагента function ChemistryLookup:getdesc(prototype) return self:getChemData(prototype, "desc") or "Описание отсутствует." end -- Проверка на наличие рецептов function ChemistryLookup:hasrecipe(prototype) local recipes = self:getChemData(prototype, "recipes") return recipes and #recipes > 0 end -- Генерация списка рецептов function ChemistryLookup:buildrecipes(prototype) local recipes = self:getChemData(prototype, "recipes") if not recipes or #recipes == 0 then return "" end return table.concat(recipes, ", ") end -- Проверка на наличие эффектов function ChemistryLookup:haseffects(prototype) local metabolisms = self:getChemData(prototype, "metabolisms") return metabolisms ~= nil end -- Генерация описания эффектов function ChemistryLookup:geneffects(prototype) local metabolisms = self:getChemData(prototype, "metabolisms") if not metabolisms then return "" end local effects = {} for _, metabolism in pairs(metabolisms) do for _, effect in ipairs(metabolism.effects or {}) do table.insert(effects, effect.description or "") end end return table.concat(effects, "<br/>") end -- Экспорт функций return ChemistryLookup