dev: dump live game breeds to breed_dump.txt on mod load (for post-update enemy table diffing)

This commit is contained in:
2026-10-03 06:09:31 -04:00
parent 41a999f7d7
commit a2de1dfd1d
@@ -34,3 +34,58 @@ end
function mod:get_latest_fixed_time() function mod:get_latest_fixed_time()
return FixedFrame.get_latest_fixed_time() return FixedFrame.get_latest_fixed_time()
end end
-- Dev utility: dump all current game breeds to a file so mod hard-coded breed tables
-- can be diffed against the live game after updates. Runs once on mod load.
function mod:dump_breeds()
local Breed = require("scripts/utilities/breed")
local Breeds = require("scripts/settings/breed/breeds")
local names = {}
for breed_name, breed_data in pairs(Breeds) do
if type(breed_data) == "table" and (Breed.is_minion(breed_data) or breed_data.is_boss) then
names[#names + 1] = breed_name
end
end
table.sort(names)
local lines = {}
lines[#lines + 1] = "breed dump v1"
for _, breed_name in ipairs(names) do
local breed_data = Breeds[breed_name]
local tags = {}
for tag_name, value in pairs(breed_data.tags or {}) do
if value then
tags[#tags + 1] = tag_name
end
end
table.sort(tags)
local pounce_setting = breed_data.companion_pounce_setting
local pounce_action = pounce_setting and pounce_setting.companion_pounce_action or ""
local passes_filter = Breed.is_minion(breed_data) and breed_data.unit_template_name == "minion" and
breed_data.smart_tag_target_type == "breed" and breed_data.faction_name ~= "imperium"
lines[#lines + 1] = string.format("%s|tpl=%s|tag_type=%s|faction=%s|boss=%s|filter=%s|her=%s|hef=%s|pounce=%s|tags=%s",
breed_name,
tostring(breed_data.unit_template_name),
tostring(breed_data.smart_tag_target_type),
tostring(breed_data.faction_name),
tostring(breed_data.is_boss == true),
tostring(passes_filter),
tostring(breed_data.half_extent_right),
tostring(breed_data.half_extent_forward),
pounce_action,
table.concat(tags, ","))
end
local path = "./../mods/AutoMark/breed_dump.txt"
local file, err = io.open(path, "w")
if file then
file:write(table.concat(lines, "\n"))
file:close()
mod:echo("breed dump written:", path)
else
mod:echo("breed dump FAILED:", tostring(err))
end
end
mod:dump_breeds()