diff --git a/coal_power_station/generator.lua b/coal_power_station/generator.lua index be93515..5bb3b24 100644 --- a/coal_power_station/generator.lua +++ b/coal_power_station/generator.lua @@ -233,6 +233,9 @@ techage.register_node({"techage:generator", "techage:generator_on"}, { end end, on_node_load = function(pos) + local mem = tubelib2.get_mem(pos) + -- bug workaround, TODO: remove + mem.generating = mem.techage_state == techage.RUNNING State:on_node_load(pos) end, }) diff --git a/oil/generator.lua b/oil/generator.lua index abc9634..f05b9a9 100644 --- a/oil/generator.lua +++ b/oil/generator.lua @@ -120,6 +120,8 @@ local function node_timer(pos, elapsed) mem.trigger = (mem.trigger or 1) - 1 if mem.trigger <= 0 then power_switched(pos) + mem.generating = false + mem.provided = 0 end return true else diff --git a/power/power.lua b/power/power.lua index 77f1c51..0a9cb80 100644 --- a/power/power.lua +++ b/power/power.lua @@ -145,8 +145,8 @@ local function determine_master(pos) local hash = 0 local master = nil connection_walk(pos, function(pos, mem) - if mem.generating and mem.could_be_master then - mem.could_be_master = false + mem.generator_available = (mem.generator_available or 1) - 1 + if mem.generating and mem.generator_available > 0 then local new = minetest.hash_node_position(pos) if hash <= new then hash = new @@ -186,6 +186,8 @@ local function on_power_switch(pos) local mem = tubelib2.get_mem(pos) mem.master_pos = nil mem.is_master = nil + -- used to check if generator is active + mem.generator_available = 2 local mpos = determine_master(pos) store_master(pos, mpos) @@ -323,9 +325,8 @@ end -- Called from every generator every 2 seconds function techage.power.power_distribution(pos) local mem = tubelib2.get_mem(pos) - --print("power_distribution", S(pos), mem.is_master) - -- timer is running, which is needed to be master - mem.could_be_master = true + -- used to check if generator is active + mem.generator_available = 2 if mem.is_master then -- reset values for nect cycle mem.needed1 = 0