From ce29218f14a35e4de3f23136834cd5812b22527e Mon Sep 17 00:00:00 2001 From: PHIDIAS Date: Sun, 8 Nov 2026 00:19:42 +0900 Subject: [PATCH] Research Milestone (#517) * new research milestone * energy * revert * minute * moving * config --- exp_scenario/features.ts | 2 + exp_scenario/module/config/research_data.lua | 231 +++++++++++++----- .../module/gui/research_milestones.lua | 9 +- 3 files changed, 184 insertions(+), 58 deletions(-) diff --git a/exp_scenario/features.ts b/exp_scenario/features.ts index 0056b691..da71dee9 100644 --- a/exp_scenario/features.ts +++ b/exp_scenario/features.ts @@ -297,6 +297,8 @@ export const features: Feature[] = [ description: "A GUI tracking research against target times, the targets live in config/research_data.lua", fields: [ str("log_file", "Log file", "Where the milestone times are written within script-output", "log/research.log"), + num("milestone_rate", "Target rate", "Targeted Milestone Science Research Rate", 45, 5, "SPM"), + num("milestone_warmup_time", "Warmup time", "Warmup time given before start counting.", 10, 0, "minutes"), ], }, { diff --git a/exp_scenario/module/config/research_data.lua b/exp_scenario/module/config/research_data.lua index ab130149..b954b47e 100644 --- a/exp_scenario/module/config/research_data.lua +++ b/exp_scenario/module/config/research_data.lua @@ -18,63 +18,184 @@ local data = { }, milestone = { ["base"] = { - ["automation"] = 600, - ["logistics"] = 300, - ["steel-processing"] = 300, - ["logistic-science-pack"] = 300, - ["electronics"] = 300, - ["fast-inserter"] = 300, - ["steel-axe"] = 300, - ["automation-2"] = 300, - ["advanced-material-processing"] = 300, - ["engine"] = 300, - ["fluid-handling"] = 300, - ["oil-processing"] = 300, - ["sulfur-processing"] = 300, - ["plastics"] = 300, - ["advanced-circuit"] = 300, - ["chemical-science-pack"] = 300, - ["modules"] = 300, - ["logistics-2"] = 300, - ["railway"] = 300, - ["research-speed-1"] = 300, - ["research-speed-2"] = 300, - ["battery"] = 300, - ["concrete"] = 300, - ["flammables"] = 300, - ["low-density-structure"] = 300, - ["advanced-material-processing-2"] = 300, - ["productivity-module"] = 300, - ["production-science-pack"] = 300, - ["processing-unit"] = 300, - ["advanced-oil-processing"] = 300, - ["electric-engine"] = 300, - ["robotics"] = 300, - ["construction-robotics"] = 300, - ["worker-robots-speed-1"] = 300, - ["worker-robots-speed-2"] = 300, - ["utility-science-pack"] = 300, - ["productivity-module-2"] = 300, - ["speed-module-2"] = 300, - ["rocket-fuel"] = 300, - ["effect-transmission"] = 300, - ["productivity-module-3"] = 300, - ["speed-module-3"] = 300, - ["rocket-silo"] = 300, - ["space-science-pack"] = 300, + "automation", + "logistics", + "steel-processing", + "logistic-science-pack", + "electronics", + "fast-inserter", + "steel-axe", + "automation-2", + "advanced-material-processing", + "engine", + "fluid-handling", + "oil-processing", + "sulfur-processing", + "plastics", + "advanced-circuit", + "chemical-science-pack", + "modules", + "logistics-2", + "railway", + "research-speed-1", + "research-speed-2", + "battery", + "concrete", + "flammables", + "low-density-structure", + "advanced-material-processing-2", + "productivity-module", + "production-science-pack", + "processing-unit", + "advanced-oil-processing", + "electric-engine", + "robotics", + "construction-robotics", + "worker-robots-speed-1", + "worker-robots-speed-2", + "utility-science-pack", + "productivity-module-2", + "speed-module-2", + "rocket-fuel", + "effect-transmission", + "productivity-module-3", + "speed-module-3", + "rocket-silo", + "space-science-pack", }, ["space-age"] = { - ["logistic-science-pack"] = 3600, - ["military-science-pack"] = 3600, - ["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, + "automation", + "electric-mining-drill", + "logistics", + "fast-inserter", + "steel-processing", + "logistic-science-pack", + "gun-turret", + "automation-2", + "advanced-material-processing", + "engine", + "logistics-2", + "automobilism", + "fluid-handling", + "oil-gathering", + "research-speed-1", + "research-speed-2", + "circuit-network", + "toolbelt", + "electric-energy-distribution-1", + "concrete", + "solar-energy", + "plastics", + "advanced-circuit", + "sulfur-processing", + "chemical-science-pack", + "battery", + "bulk-inserter", + "inserter-capacity-bonus-1", + "inserter-capacity-bonus-2", + "mining-productivity-1", + "modules", + "productivity-module", + "speed-module", + "efficiency-module", + "advanced-oil-processing", + "lubricant", + "electric-engine", + "robotics", + "construction-robotics", + "worker-robots-speed-1", + "worker-robots-speed-2", + "electric-energy-accumulators", + "explosives", + "military", + "stone-wall", + "military-2", + "military-science-pack", + "heavy-armor", + "modular-armor", + "solar-panel-equipment", + "battery-equipment", + "physical-projectile-damage-1", + "weapon-shooting-speed-1", + "repair-pack", + "radar", + "landfill", + "quality-module", + "flammables", + "processing-unit", + "low-density-structure", + "rocket-fuel", + "logistic-robotics", + "advanced-material-processing-2", + "rocket-silo", + "uranium-mining", + "research-speed-3", + "research-speed-4", + "worker-robots-storage-1", + "mining-productivity-2", + "railway", + "production-science-pack", + "utility-science-pack", + "physical-projectile-damage-2", + "weapon-shooting-speed-2", + "stronger-explosives-1", + "power-armor", + "exoskeleton-equipment", + "personal-roboport-equipment", + "nuclear-power", + "space-platform-thruster", + "planet-discovery-gleba", + "logistic-system", + "effect-transmission", + "speed-module-2", + "research-speed-5", + "worker-robots-speed-3", + "worker-robots-speed-4", + "worker-robots-storage-2", + "automation-3", + "productivity-module-2", + "efficiency-module-2", + "quality-module-2", + "planet-discovery-fulgora", + "kovarex-enrichment-process", + "military-3", + "military-4", + "power-armor-mk2", + "fission-reactor-equipment", + "battery-mk2-equipment", + "stronger-explosives-2", + "physical-projectile-damage-3", + "weapon-shooting-speed-3", + "planet-discovery-vulcanus", + "research-speed-6", + "worker-robots-speed-5", + "worker-robots-speed-6", + "worker-robots-storage-3", + "carbon-fiber", + "rocketry", + "rocket-turret", + "captivity", + "biolab", + "advanced-asteroid-processing", + "asteroid-reprocessing", + "planet-discovery-aquilo", + "physical-projectile-damage-4", + "weapon-shooting-speed-4", + "physical-projectile-damage-5", + "weapon-shooting-speed-5", + "physical-projectile-damage-6", + "weapon-shooting-speed-6", + "physical-projectile-damage-7", + "stronger-explosives-3", + "stronger-explosives-4", + "stronger-explosives-5", + "stronger-explosives-6", + "stronger-explosives-7", + "stronger-explosives-8", + "quantum-processor", + "railgun", + "fusion-reactor", + "promethium-science-pack", } }, inf_res = { diff --git a/exp_scenario/module/gui/research_milestones.lua b/exp_scenario/module/gui/research_milestones.lua index 2a84364f..71fc4662 100644 --- a/exp_scenario/module/gui/research_milestones.lua +++ b/exp_scenario/module/gui/research_milestones.lua @@ -10,6 +10,8 @@ local research_data = require("modules/exp_scenario/config/research_data") local feature, config = Feature.register("research_milestones", { log_file = "log/research.log", -- where the milestone times are written + milestone_rate = 45, -- Targeted Milestone Science Research Rate, In terms of SPM. + milestone_warmup_time = 10, -- Warmup time given before start counting. In terms of minutes. }) local table_to_json = helpers.table_to_json @@ -41,11 +43,12 @@ local research_targets = { do --- Calculate the research targets local research_index = 1 - local total_time = 0 - for name, time in pairs(research_data.milestone[research_data.mod_set]) do + local total_time = config.milestone_warmup_time * 60 + for _, name in pairs(research_data.milestone[research_data.mod_set]) do if prototypes.technology[name] and (not prototypes.technology[name].hidden) then research_targets.index_lookup[name] = research_index - total_time = total_time + time * 60 + -- The number is affected by multiplier already + total_time = total_time + math.ceil(prototypes.technology[name].research_unit_count * 60 / config.milestone_rate) research_targets.target_times[research_index] = { name = name,