From 3a3e4db19267afc7ea42beffeb4ac5a6049128b1 Mon Sep 17 00:00:00 2001 From: MMMiracles Date: Wed, 12 Feb 2020 07:08:18 -0500 Subject: [PATCH] MultiZ Deck Relay Tweaks (#49053) * relays now properly update powernet when being disconnected/destroyed, doesn't use processing anymore * parents * no break thx --- code/modules/power/multiz.dm | 110 ++++++++++++++++++++++++++++------- icons/obj/power.dmi | Bin 33487 -> 33936 bytes 2 files changed, 88 insertions(+), 22 deletions(-) diff --git a/code/modules/power/multiz.dm b/code/modules/power/multiz.dm index d5f28462930..6ad239d3b88 100644 --- a/code/modules/power/multiz.dm +++ b/code/modules/power/multiz.dm @@ -1,42 +1,106 @@ +#define RELAY_OK 1 +#define RELAY_ADD_CABLE 2 +#define RELAY_ADD_METAL 3 + /obj/machinery/power/deck_relay //This bridges powernets name = "Multi-deck power adapter" desc = "A huge bundle of double insulated cabling which seems to run up into the ceiling." icon = 'icons/obj/power.dmi' icon_state = "cablerelay-off" + max_integrity = 350 + integrity_failure = 0.25 + var/broken_status = RELAY_OK var/obj/machinery/power/deck_relay/below ///The relay that's below us (for bridging powernets) var/obj/machinery/power/deck_relay/above ///The relay that's above us (for bridging powernets) anchored = TRUE density = FALSE -/obj/machinery/power/deck_relay/attackby(obj/item/I,mob/user) +/obj/machinery/power/deck_relay/examine(mob/user) + . += ..() + if(!anchored) + . += "The securing bolts are undone." + if(broken_status == RELAY_ADD_CABLE) + . += "The cable insulation is torn apart and the wires are frayed beyond use." + if(broken_status == RELAY_ADD_METAL) + . += "The cable insulation is torn apart and the wiring is exposed." + +/obj/machinery/power/deck_relay/attackby(obj/item/I, mob/user, params) if(default_unfasten_wrench(user, I)) + if(!anchored && broken_status == RELAY_OK) + break_connections() + return return FALSE + . = ..() + if(istype(I, /obj/item/stack/cable_coil) && broken_status == RELAY_ADD_CABLE) + var/obj/item/stack/C = I + if(C.use(15)) + to_chat(user, "You fix the frayed wires inside [src].") + icon_state = "cablerelay-broken-cable" + broken_status = RELAY_ADD_METAL + return + else + to_chat(user, "You need 15 cables to rewire [src].") + return + if(istype(I, /obj/item/stack/sheet/metal) && broken_status == RELAY_ADD_METAL) + var/obj/item/stack/S = I + if(S.use(10)) + to_chat(user, "You reseal the insulation for [src].") + icon_state = "cablerelay" + broken_status = RELAY_OK + obj_integrity = max_integrity + return + else + to_chat(user, "You need 10 metal to mend [src].") + return . = ..() -/obj/machinery/power/deck_relay/process() - if(!anchored) - icon_state = "cablerelay-off" - if(above) //Lose connections - above.below = null - if(below) - below.above = null - return - refresh() //Sometimes the powernets get lost, so we need to keep checking. - if(powernet && (powernet.avail <= 0)) // is it powered? - icon_state = "cablerelay-off" - else - icon_state = "cablerelay-on" - if(!below || QDELETED(below) || !above || QDELETED(above)) - icon_state = "cablerelay-off" - find_relays() +/obj/machinery/power/deck_relay/obj_break() + ..() + if(broken_status == RELAY_OK) + break_connections() + visible_message("[src]'s insulation breaks, fraying and severing the cable bundle!") + playsound(loc, 'sound/effects/glassbr3.ogg', 100, TRUE) + icon_state = "cablerelay-broken" + broken_status = RELAY_ADD_CABLE -///Allows you to scan the relay with a multitool to see stats. +/obj/machinery/power/deck_relay/obj_destruction() + return //this shouldn't break under usual means + +/obj/machinery/power/deck_relay/Destroy() + break_connections() + return ..() + +///Lose connections and reset the merged powernet so it makes 2 new seperated ones +/obj/machinery/power/deck_relay/proc/break_connections() + if(above) + var/turf/above_deck_relay = get_turf(above) + var/obj/structure/cable/above_cable = above_deck_relay.get_cable_node() + if(above_cable) + var/datum/powernet/above_powernet = new() + propagate_network(above_cable, above_powernet) + above.below = null + above = null + if(below) + var/turf/below_deck_relay = get_turf(below) + var/obj/structure/cable/below_cable = below_deck_relay.get_cable_node() + if(below_cable) + var/datum/powernet/below_powernet = new() + propagate_network(below_cable, below_powernet) + below.above = null + below = null + +///Allows you to scan the relay with a multitool to see stats/reconnect relays /obj/machinery/power/deck_relay/multitool_act(mob/user, obj/item/I) - if(powernet && (powernet.avail > 0)) // is it powered? + if(!anchored) + to_chat(user, "You need to wrench this into place before getting a reading!") + return TRUE + if(broken_status == RELAY_ADD_CABLE || broken_status == RELAY_ADD_METAL) + to_chat(user, "The [src] isn't in proper shape to get a reading!") + return TRUE + if(powernet && (above || below))//we have a powernet and at least one connected relay to_chat(user, "Total power: [DisplayPower(powernet.avail)]\nLoad: [DisplayPower(powernet.load)]\nExcess power: [DisplayPower(surplus())]") - if(!powernet || below.powernet != powernet) - icon_state = "cablerelay-off" - to_chat(user, "Powernet connection lost. Attempting to re-establish. Ensure the relays below this one are connected too.") + if(!above && !below) + to_chat(user, "Cannot access valid powernet. Attempting to re-establish. Ensure any relays above and below are aligned properly and on cable nodes.") find_relays() addtimer(CALLBACK(src, .proc/refresh), 20) //Wait a bit so we can find the one below, then get powering return TRUE @@ -53,6 +117,7 @@ if(below) below.merge(src) +///Merges the two powernets connected to the deck relays /obj/machinery/power/deck_relay/proc/merge(var/obj/machinery/power/deck_relay/DR) if(!DR) return @@ -69,6 +134,7 @@ if(!T || !istype(T)) return FALSE below = null //in case we're re-establishing + above = null var/obj/structure/cable/C = T.get_cable_node() //check if we have a node cable on the machine turf, the first found is picked if(C && C.powernet) C.powernet.add_machine(src) //Nice we're in. diff --git a/icons/obj/power.dmi b/icons/obj/power.dmi index 9175252cd394824ad689c24b121a884508284cab..615621fcce3b9a0b06624ab6f10b50d8b810b68c 100644 GIT binary patch delta 11226 zcmZv?1yodD)HghYl+uby4G03#NJ==AfP#R4bfc7%h=c+c5JW^uq$CDJN$Cz5Qo5uh zN9k?`W|(;I_aYccnnbdnbqVW3^OQBk^Lg9VL~rrQPCh6J=vJY;R|3? z=#xu+C;2^8=qUy&3#>M$-}hGj=KWFAgv?KE73aJ^WV(01psN7NFzL{CBmB<0qH>9t zlPt*C?pOshm3}N{({6wBaMsT`A@b~Pr;b;v+nb|S_OK%#jW5xY{>2LEdF99Z zn&Lb5K2bwQ>mR>$b68cjYKWKU(u%K<^{B~)4rX{iW~n*B05K)My=$>rsn2yUN=D^G z9F@^r{i;7`WOl}I!=hs4;E{94(yx7nn?1MU)8EXIE+=#OU3~tSMy!@hZ6S0{FaA72 zG)h^;>)-=~=kwf%rh>=aber(uvop)27jVP0Cv~sp<2=MgtXS1pS!by|+1wZOEp
XxH{ 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 Vc3GqxPzd;U|DLXTsj6+*{{b>FZqEP! delta 10773 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

Gv^Cle81Kg5kwW9u6+9{DMwpSgDr= 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