From 1fdde02a5416e594e2b954b554250a259c01b37b Mon Sep 17 00:00:00 2001 From: Aaron Veden Date: Tue, 19 Apr 2022 19:54:15 -0700 Subject: [PATCH] FACTO-108: Fixed wasps and drones deaths affecting AI stats --- Upgrade.lua | 4 ++-- changelog.txt | 2 +- control.lua | 8 +++++--- libs/BaseUtils.lua | 34 +++++++++++++++++++++++++--------- 4 files changed, 33 insertions(+), 15 deletions(-) diff --git a/Upgrade.lua b/Upgrade.lua index 1cfea88..506addf 100644 --- a/Upgrade.lua +++ b/Upgrade.lua @@ -436,8 +436,8 @@ end function upgrade.attempt(universe) local starting = global.version - if not global.version or global.version < 301 then - global.version = 301 + if not global.version or global.version < 302 then + global.version = 302 if not universe then universe = {} diff --git a/changelog.txt b/changelog.txt index 15a2a10..6b056ef 100644 --- a/changelog.txt +++ b/changelog.txt @@ -36,7 +36,7 @@ Version: 3.0.0 - Fixed base recycling on invalid surfaces - Fixed base chunk count not being decremented when chunks are removed - Fixed base iterator processing being nil - - Fixed spawner spawns and wasp drones being included in kill stats + - Fixed spawner spawns and wasp drones being included in kill stats, death pheromones, and AI stats --------------------------------------------------------------------------------------------------- Version: 2.2.0 diff --git a/control.lua b/control.lua index 3852cf0..7bf4713 100644 --- a/control.lua +++ b/control.lua @@ -409,11 +409,13 @@ local function onDeath(event) end local artilleryBlast = (cause and ((cause.type == "artillery-wagon") or (cause.type == "artillery-turret"))) - if entityType == "unit" then + if (entityType == "unit") and not universe.entitySkipCountLookup[entity.name] then if base then base.lostEnemyUnits = base.lostEnemyUnits + 1 - base.damagedBy[damageTypeName] = (base.damagedBy[damageTypeName] or 0) + 0.01 - base.deathEvents = base.deathEvents + 1 + if damageTypeName then + base.damagedBy[damageTypeName] = (base.damagedBy[damageTypeName] or 0) + 0.01 + base.deathEvents = base.deathEvents + 1 + end base.unitPoints = base.unitPoints - UNIT_DEATH_POINT_COST if universe.aiPointsPrintSpendingToChat then game.print(map.surface.name .. ": Points: -" .. UNIT_DEATH_POINT_COST .. ". [Unit Lost] Total: " .. string.format("%.2f", base.unitPoints)) diff --git a/libs/BaseUtils.lua b/libs/BaseUtils.lua index 73cf4e9..0f77b4c 100644 --- a/libs/BaseUtils.lua +++ b/libs/BaseUtils.lua @@ -517,6 +517,15 @@ function baseUtils.createBase(map, chunk, tick) return base end +local function isMember(lst, x) + for _,l in pairs(lst) do + if l == x then + return true + end + end + return false +end + function baseUtils.rebuildNativeTables(universe, rg) local alignmentSet = {} universe.evolutionTableAlignment = alignmentSet @@ -534,8 +543,10 @@ function baseUtils.rebuildNativeTables(universe, rg) universe.buildingHiveTypeLookup = buildingHiveTypeLookup local proxyEntityLookup = {} universe.proxyEntityLookup = proxyEntityLookup - local vanillaEntityLookups = {} - universe.vanillaEntityTypeLookup = vanillaEntityLookups + local vanillaEntityLookup = {} + universe.vanillaEntityTypeLookup = vanillaEntityLookup + local entitySkipCountLookup = {} + universe.entitySkipCountLookup = entitySkipCountLookup buildingHiveTypeLookup["biter-spawner"] = "biter-spawner" buildingHiveTypeLookup["spitter-spawner"] = "spitter-spawner" @@ -544,12 +555,12 @@ function baseUtils.rebuildNativeTables(universe, rg) buildingHiveTypeLookup["big-worm-turret"] = "turret" buildingHiveTypeLookup["behemoth-worm-turret"] = "turret" - vanillaEntityLookups["biter-spawner"] = true - vanillaEntityLookups["spitter-spawner"] = true - vanillaEntityLookups["small-worm-turret"] = true - vanillaEntityLookups["medium-worm-turret"] = true - vanillaEntityLookups["big-worm-turret"] = true - vanillaEntityLookups["behemoth-worm-turret"] = true + vanillaEntityLookup["biter-spawner"] = true + vanillaEntityLookup["spitter-spawner"] = true + vanillaEntityLookup["small-worm-turret"] = true + vanillaEntityLookup["medium-worm-turret"] = true + vanillaEntityLookup["big-worm-turret"] = true + vanillaEntityLookup["behemoth-worm-turret"] = true for i=1,#FACTION_SET do local faction = FACTION_SET[i] @@ -620,6 +631,12 @@ function baseUtils.rebuildNativeTables(universe, rg) buildingHiveTypeLookup[proxyEntity] = building.type end variationSet[#variationSet+1] = entry + for _,unit in pairs(faction.units) do + if isMember(unit.attributes, "skipKillCount") then + local name = faction.type .. "-" .. unit.name .. "-v" .. v .. "-t" .. t .. "-rampant" + universe.entitySkipCountLookup[name] = true + end + end end local buildingAcceptRate = building.acceptRate @@ -640,7 +657,6 @@ function baseUtils.rebuildNativeTables(universe, rg) building.type } end - end end end