Example: Energy Weapons Damage is at level 21, but Lua is reporting the highest level of any tech as 7.
I am trying to determine the number of times any research has been completed in a way that handles mods being added/removed mid-playthrough (which means I can't just keep a tally of on_research_finished events).
(Yes, this is for a better "evolution tied to tech percentage" mod)
Current code in on_research_finished:
Code: Select all
local player = game.get_player(1)
local numResearched = 0
local researches = {}
local numTechs = 0
for _, tech in pairs(force.technologies) do
if tech.enabled then
numTechs = numTechs + 1
end
if tech.researched then
--numResearched = numResearched + tech.level
local base_name = string.match(tech.name, "^(%g-)%-%d+$")
if base_name == nil then base_name = tech.name end
if researches[base_name] then
if researches[base_name] < tech.level then
researches[base_name] = tech.level
end
else
researches[base_name] = tech.level
end
end
end
local highest_level = 0
for _, level in pairs(researches) do
numResearched = numResearched + level
if level > highest_level then
highest_level = level
end
end
player.print("highest level: "..highest_level)
player.print("num techs: "..numTechs)
player.print("num techs researched: "..numResearched)