diff --git a/exp_legacy/module/config/research.lua b/exp_legacy/module/config/research.lua index 41a102f0..e9e53f63 100644 --- a/exp_legacy/module/config/research.lua +++ b/exp_legacy/module/config/research.lua @@ -7,21 +7,27 @@ return { queue_amount = 3, mod_set = "base", mod_set_lookup = { - "space-age" + "space-age", }, -- this enable 20 more inventory for each mining productivity level up to 4 bonus_inventory = { enabled = true, - res = { - -- Mining Productivity + log = { ["base"] = { ["name"] = "mining-productivity-4", - ["level"] = 4, + ["level"] = 4 }, ["space-age"] = { ["name"] = "mining-productivity-3", - ["level"] = 3, - } + ["level"] = 3 + }, + }, + res = { + -- Mining Productivity + ["mining-productivity"] = true, + ["mining-productivity-2"] = true, + ["mining-productivity-3"] = true, + ["mining-productivity-4"] = true, }, name = "character_inventory_slots_bonus", rate = 5, @@ -73,20 +79,20 @@ return { ["productivity-module-3"] = 300, ["speed-module-3"] = 300, ["rocket-silo"] = 300, - ["space-science-pack"] = 300 + ["space-science-pack"] = 300, }, ["space-age"] = { ["logistic-science-pack"] = 3600, ["military-science-pack"] = 3600, - ["chemical-science-pack"] = 4500, - ["utility-science-pack"] = 5400, - ["production-science-pack"] = 5400, - ["space-science-pack"] = 5400, - ["metallurgic-science-pack"] = 6300, - ["electromagnetic-science-pack"] = 6300, - ["agricultural-science-pack"] = 6300, - ["cryogenic-science-pack"] = 6300, - ["promethium-science-pack"] = 7200 + ["chemical-science-pack"] = 5400, + ["utility-science-pack"] = 7200, + ["production-science-pack"] = 7200, + ["space-science-pack"] = 7200, + ["metallurgic-science-pack"] = 10800, + ["electromagnetic-science-pack"] = 10800, + ["agricultural-science-pack"] = 10800, + ["cryogenic-science-pack"] = 10800, + ["promethium-science-pack"] = 14400, } }, inf_res = { @@ -157,7 +163,7 @@ return { ["rocket-part-productivity"] = 1, -- Follower Robot Count ["follower-robot-count-5"] = 5, - } + }, }, -- prevent research up to a certain level limit_res = { diff --git a/exp_legacy/module/modules/gui/research.lua b/exp_legacy/module/modules/gui/research.lua index 4a8bed31..f58d5c6f 100644 --- a/exp_legacy/module/modules/gui/research.lua +++ b/exp_legacy/module/modules/gui/research.lua @@ -85,32 +85,25 @@ end local function research_notification(event) if config.inf_res[config.mod_set][event.research.name] then - if event.research.name == config.bonus_inventory.res[config.mod_set].name then - if event.research.level == config.bonus_inventory.res[config.mod_set].level + 1 then - -- Add run result to log - research_add_log() - end - - if config.bonus_inventory.enabled then - event.research.force[config.bonus_inventory.name] = math.max((event.research.level - 1) * config.bonus_inventory.rate, config.bonus_inventory.limit) - end - - if config.pollution_ageing_by_research then - game.map_settings.pollution.ageing = math.min(10, event.research.level / 5) - end + if event.research.name == config.bonus_inventory.log[config.mod_set].name + and event.research.level == config.bonus_inventory.log[config.mod_set].level + 1 then + -- Add run result to log + research_add_log() end if not (event.by_script) then game.print{ "research.inf", research_time_format(game.tick), event.research.name, event.research.level - 1 } end - else - if not (event.by_script) then - game.print{ "research.msg", research_time_format(game.tick), event.research.name } - end + elseif not (event.by_script) then + game.print{ "research.msg", research_time_format(game.tick), event.research.name } + end - if config.bonus_inventory.enabled and (event.research.name == "mining-productivity-1" or event.research.name == "mining-productivity-2" or event.research.name == "mining-productivity-3") then - event.research.force[config.bonus_inventory.name] = event.research.level * config.bonus_inventory.rate - end + if config.bonus_inventory.enabled and config.bonus_inventory.res[event.research.name] then + event.research.force[config.bonus_inventory.name] = math.min((event.research.level - 1) * config.bonus_inventory.rate, config.bonus_inventory.limit) + end + + if config.pollution_ageing_by_research and config.bonus_inventory.res[event.research.name] then + game.map_settings.pollution.ageing = math.min(10, event.research.level / 5) end end diff --git a/exp_scenario/module/commands/research.lua b/exp_scenario/module/commands/research.lua index 63939033..40b36ee4 100644 --- a/exp_scenario/module/commands/research.lua +++ b/exp_scenario/module/commands/research.lua @@ -23,7 +23,7 @@ end) --- @param silent boolean True when no message should be printed function module.res_queue(force, silent) local res_q = force.research_queue - local res = force.technologies[config.bonus_inventory.res[config.mod_set].name] + local res = force.technologies[config.bonus_inventory.log[config.mod_set].name] if #res_q < config.queue_amount then for i = #res_q, config.queue_amount - 1 do @@ -71,7 +71,7 @@ local function on_research_finished(event) if not research.res_queue_enable then return end local force = event.research.force - local research = assert(config.bonus_inventory.res[config.mod_set], "Unknown mod set: " .. tostring(config.mod_set)) + local research = assert(config.bonus_inventory.log[config.mod_set], "Unknown mod set: " .. tostring(config.mod_set)) local technology = assert(force.technologies[research.name], "Unknown technology: " .. tostring(research.name)) if technology.level > research.level then module.res_queue(force, event.by_script)