diff --git a/GainStation13/code/modules/cargo/packs.dm b/GainStation13/code/modules/cargo/packs.dm index b9e3bcd9fc..3836cb713a 100644 --- a/GainStation13/code/modules/cargo/packs.dm +++ b/GainStation13/code/modules/cargo/packs.dm @@ -4,3 +4,10 @@ cost = 10000 contains = list(/obj/item/vending_refill/mealdor) crate_name = "meal vendor supply crate" + +/datum/supply_pack/engineering/energy_harvester_board + name = "Energy Harvester Board" + desc = "Engineering made some crazy power device that seems to be creating massive amounts of energy out of thin air? With the parts found in this crate, you'll be able to make some sweet cash out of the engineers hard labor. Half of the credits made by this machine go to the engineering budget." + cost = 5000 + contains = list(/obj/item/circuitboard/machine/energy_harvester) + crate_name = "Energy Harvester Board supply crate" diff --git a/GainStation13/code/modules/power/energy_harvester.dm b/GainStation13/code/modules/power/energy_harvester.dm index 13140aac73..54af763bb1 100644 --- a/GainStation13/code/modules/power/energy_harvester.dm +++ b/GainStation13/code/modules/power/energy_harvester.dm @@ -19,11 +19,16 @@ var/power_available = 0 var/active = FALSE -/obj/machinery/power/energy_harvester/Initialize(mapload) // TODO: make sure we can only place 4 of those +/obj/machinery/power/energy_harvester/Initialize(mapload) . = ..() RefreshParts() if(anchored) connect_to_network() + if(too_many_harvesters_in_network()) + src.visible_message("[src] buzzes. Seems like there are too many energy harvesters connected to this powernet.") + playsound(src, 'sound/machines/buzz-two.ogg', 50) + disconnect_from_network() + return power_available = avail() /obj/machinery/power/energy_harvester/RefreshParts() @@ -46,10 +51,14 @@ return if(!powernet) + src.visible_message("[src] buzzes. Seems like it's not connected to a powernet.") + playsound(src, 'sound/machines/buzz-two.ogg', 50) return power_available = avail() if(power_available <= 0) + src.visible_message("[src] buzzes. Seems like there is no energy in the connected powernet.") + playsound(src, 'sound/machines/buzz-two.ogg', 50) return var/power_drain = power_available * set_power_drain @@ -71,6 +80,11 @@ if(. == SUCCESSFUL_UNFASTEN) if(anchored) connect_to_network() + if(too_many_harvesters_in_network()) + src.visible_message("[src] buzzes. Seems like there are too many energy harvesters connected to this powernet.") + playsound(src, 'sound/machines/buzz-two.ogg', 50) + disconnect_from_network() + return power_available = avail() else disconnect_from_network() @@ -79,9 +93,11 @@ /obj/machinery/power/energy_harvester/screwdriver_act(mob/living/user, obj/item/I) if(..()) return TRUE + if(!active) default_deconstruction_screwdriver(user, "state_open", "state_off", I) return TRUE + return FALSE /obj/machinery/power/energy_harvester/wrench_act(mob/living/user, obj/item/I) @@ -91,6 +107,16 @@ return FALSE +/obj/machinery/power/energy_harvester/proc/too_many_harvesters_in_network() + var/counter = 0 + for(var/machine in powernet.nodes) + if(istype(machine, /obj/machinery/power/energy_harvester)) + counter += 1 + if(counter > 4) + return TRUE + + return FALSE + /obj/machinery/power/energy_harvester/ui_interact(mob/user, datum/tgui/ui) ui = SStgui.try_update_ui(user, src, ui) if(!ui) @@ -119,7 +145,9 @@ return if(!anchored) return - if(!powernet) + if(!active && !powernet) + src.visible_message("[src] buzzes. Seems like it's not connected to a powernet.") + playsound(src, 'sound/machines/buzz-two.ogg', 50) return active = !active . = TRUE