---- INIT ---- script.on_init(function() storage.power_entities = {} end) ---- ON EVENT ---- script.on_event({defines.events.on_robot_built_entity, defines.events.on_built_entity}, function(event) if event.entity.type == "artillery-shell" or event.entity.type == "flamethrower-turret" then event.entity.disabled_by_script = true storage.power_entities[event.entity] = event.entity.surface.create_entity{ name = event.entity.name.."-power", position = event.entity.position, force = event.entity.force, direction = event.entity.direction, destructible = false } end end) script.on_event({defines.events.on_entity_died, defines.events.on_robot_pre_mined, defines.events.on_pre_player_mined_item}, function(event) if storage.power_entities[event.entity] then storage.power_entities[event.entity].destroy() storage.power_entities[event.entity] = nil end end) local refresh_rate = 20 -- how often to check whether an out-of-power turret should be re-enabled local energy_per_shot = util.parse_energy("8kJ") -- set to whatever you want script.on_event(defines.events.on_script_trigger_effect, function (event) if event.effect_id ~= "turret-consume-energy" then return end local turret = event.cause_entity -- or should it be event.source_entity? local interface= storage.power_entities[turret] if interface.energy >= energy_per_shot then interface.energy = interface.energy - energy_per_shot else turret.disabled_by_script = true end end) script.on_nth_tick(refresh_rate, function(event) for turret, interface in pairs(storage.power_entities) do if turret.disabled_by_script and interface.energy >= energy_per_shot then interface.energy = interface.energy - energy_per_shot turret.disabled_by_script = false end end end)