32 lines
956 B
Lua
32 lines
956 B
Lua
--
|
|
-- Network overloading (incomplete cheat mitigation)
|
|
--
|
|
|
|
local overload_reset_time = technic.config:get_int("network_overload_reset_time")
|
|
local overloaded_networks = {}
|
|
local networks = technic.networks
|
|
|
|
function technic.overload_network(network_id)
|
|
local network = networks[network_id]
|
|
if network then
|
|
network.supply = 0
|
|
network.battery_charge = 0
|
|
end
|
|
overloaded_networks[network_id] = minetest.get_us_time() + (overload_reset_time * 1000 * 1000)
|
|
end
|
|
|
|
function technic.reset_overloaded(network_id)
|
|
local remaining = math.max(0, overloaded_networks[network_id] - minetest.get_us_time())
|
|
if remaining == 0 then
|
|
-- Clear cache, remove overload and restart network
|
|
technic.remove_network(network_id)
|
|
overloaded_networks[network_id] = nil
|
|
end
|
|
-- Returns 0 when network reset or remaining time if reset timer has not expired yet
|
|
return remaining
|
|
end
|
|
|
|
function technic.is_overloaded(network_id)
|
|
return overloaded_networks[network_id]
|
|
end
|