/obj/machinery/power/apc/proc/has_electronics() return electronics_state != APC_ELECTRONICS_NONE /obj/machinery/power/apc/deconstruct(disassembled = TRUE) if(!(flags & NODECONSTRUCT)) if(!(stat & BROKEN)) set_broken() if(opened != APC_COVER_OFF) opened = APC_COVER_OFF coverlocked = FALSE visible_message("The APC cover is knocked down!") update_icon() /obj/machinery/power/apc/crowbar_act(mob/living/user, obj/item/I) . = TRUE if(!I.tool_start_check(src, user, 0)) return if(opened) // a) on open apc if(electronics_state == APC_ELECTRONICS_INSTALLED) if(terminal) to_chat(user, "Disconnect the wires first!") return to_chat(user, "You start trying to remove the APC electronics..." ) if(I.use_tool(src, user, 50, volume = I.tool_volume)) if(has_electronics()) electronics_state = APC_ELECTRONICS_NONE if(stat & BROKEN) user.visible_message(\ "[user.name] has broken the APC electronics inside [name]!", "You break the charred APC electronics and remove the remains.", "You hear a crack.") return //SSticker.mode:apcs-- //XSI said no and I agreed. -rastaf0 else if(emagged) // We emag board, not APC's frame emagged = FALSE user.visible_message( "[user.name] has discarded the shorted APC electronics from [name]!", "You discarded the shorted board.") return else if(malfhack) // AI hacks board, not APC's frame user.visible_message(\ "[user.name] has discarded strangely the programmed APC electronics from [name]!", "You discarded the strangely programmed board.") malfai = null malfhack = FALSE return else user.visible_message(\ "[user.name] has removed the APC electronics from [name]!", "You remove the APC electronics.") new /obj/item/apc_electronics(loc) return else if(opened != APC_COVER_OFF) //cover isn't removed opened = APC_CLOSED coverlocked = TRUE //closing cover relocks it update_icon() return else if(!(stat & BROKEN)) // b) on closed and not broken APC if(coverlocked && !(stat & MAINT)) // locked... to_chat(user, "The cover is locked and cannot be opened!") return else if(panel_open) // wires are exposed to_chat(user, "Exposed wires prevents you from opening it!") return else opened = APC_OPENED update_icon() /obj/machinery/power/apc/screwdriver_act(mob/living/user, obj/item/I) . = TRUE if(!I.use_tool(src, user, 0, volume = I.tool_volume)) return else if(opened) if(cell && !(stat & MAINT)) to_chat(user, "Close the APC first!") //Less hints more mystery! return else if(electronics_state == APC_ELECTRONICS_INSTALLED) electronics_state = APC_ELECTRONICS_SECURED stat &= ~MAINT to_chat(user, "You screw the circuit electronics into place.") else if(electronics_state == APC_ELECTRONICS_SECURED) electronics_state = APC_ELECTRONICS_INSTALLED stat |= MAINT to_chat(user, "You unfasten the electronics.") else to_chat(user, "There is nothing to secure!") return update_icon() else if(emagged) to_chat(user, "The interface is broken!") else panel_open = !panel_open to_chat(user, "The wires have been [panel_open ? "exposed" : "unexposed"]") update_icon() /obj/machinery/power/apc/wirecutter_act(mob/living/user, obj/item/I) . = TRUE if(!I.use_tool(src, user, 0, volume = I.tool_volume)) return if(panel_open && !opened) wires.Interact(user) else if(terminal && opened) terminal.dismantle(user, I) /obj/machinery/power/apc/multitool_act(mob/living/user, obj/item/I) . = TRUE if(!I.use_tool(src, user, 0, volume = I.tool_volume)) return if(panel_open && !opened) wires.Interact(user) /obj/machinery/power/apc/welder_act(mob/user, obj/item/I) if(!opened || has_electronics() || terminal) return . = TRUE if(!I.tool_use_check(user, 3)) return WELDER_ATTEMPT_SLICING_MESSAGE if(I.use_tool(src, user, 50, amount = 3, volume = I.tool_volume)) if((stat & BROKEN) || opened == APC_COVER_OFF) new /obj/item/stack/sheet/metal(loc) user.visible_message(\ "[user.name] has cut [src] apart with [I].",\ "You disassembled the broken APC frame.") else new /obj/item/mounted/frame/apc_frame(loc) user.visible_message(\ "[user.name] has cut [src] from the wall with [I].",\ "You cut the APC frame from the wall.") qdel(src)