51 lines
2.4 KiB
Lua

local warheads_added = require("__True-Nukes__.prototypes.nukes.data-nukes-building-warheads")
local test_system = require("nuclear-test-system")
local achievement_system = require("achievement-system")
local function nukeBuildingDetonate(building)
local result = nil
for _,w in pairs(warheads_added) do
if(game.item_prototypes[w.warhead] and building.get_output_inventory().get_item_count("detonation" .. w.name .. w.label) ~= 0) then
result = w.name
test_system.testDetonation(building.force, w)
achievement_system.building_detonated(building, w)
break
end
end
building.surface.create_entity{name="warhead-util-projectile" .. result, position={building.position.x-1, building.position.y}, target=building, speed=100, max_range=1, force=building.force, source=building}
building.get_output_inventory().clear();
end
local function checkBuildings()
if(#global.nukeBuildings>0) then
for i,building in ipairs(global.nukeBuildings) do
if(building.valid) then
if(not building.get_output_inventory().is_empty()) then
nukeBuildingDetonate(building)
elseif (building.crafting_progress > 0 and building.crafting_progress < 0.01) then
-- Force map loading when a nuke is set up
if(string.match(building.get_recipe().name, ".*-atomic-2-stage-100kt")) then
if (not settings.global["optimise-100kt"].value) then
building.surface.request_to_generate_chunks(building.position, 1500/32)
else
building.surface.request_to_generate_chunks(building.position, 200/32)
end
elseif(string.match(building.get_recipe().name, ".*-atomic-15kt") or string.match(building.get_recipe().name, ".*-atomic-2-stage-15kt")) then
building.surface.request_to_generate_chunks(building.position, 1000/32)
elseif(string.match(building.get_recipe().name, ".*-atomic-1kt")) then
building.surface.request_to_generate_chunks(building.position, 800/32)
elseif(string.match(building.get_recipe().name, ".*-atomic-500t")) then
building.surface.request_to_generate_chunks(building.position, 400/32)
else
building.surface.request_to_generate_chunks(building.position, 100/32)
end
end
else
table.remove(global.nukeBuildings, i)
end
end
end
end
return {checkBuildings = checkBuildings}