diff --git a/code/game/machinery/cell_charger.dm b/code/game/machinery/cell_charger.dm index 4ca074556e3..f1e565eb90a 100644 --- a/code/game/machinery/cell_charger.dm +++ b/code/game/machinery/cell_charger.dm @@ -11,6 +11,14 @@ pass_flags = PASSTABLE var/obj/item/stock_parts/cell/charging = null var/chargelevel = -1 + var/charge_rate = 500 + +/obj/machinery/cell_charger/Initialize(mapload) + . = ..() + component_parts = list() + component_parts += new /obj/item/circuitboard/cell_charger(null) + component_parts += new /obj/item/stock_parts/capacitor(null) + RefreshParts() /obj/machinery/cell_charger/deconstruct() if(charging) @@ -36,7 +44,7 @@ . += "Current charge: [round(charging.percent(), 1)]%" /obj/machinery/cell_charger/attackby(obj/item/I, mob/user, params) - if(istype(I, /obj/item/stock_parts/cell)) + if(istype(I, /obj/item/stock_parts/cell) && !panel_open) if(stat & BROKEN) to_chat(user, "[src] is broken!") return @@ -64,6 +72,14 @@ else return ..() +/obj/machinery/cell_charger/crowbar_act(mob/user, obj/item/I) + if(panel_open && !charging && default_deconstruction_crowbar(user, I)) + return TRUE + +/obj/machinery/cell_charger/screwdriver_act(mob/user, obj/item/I) + if(anchored && !charging && default_deconstruction_screwdriver(user, icon_state, icon_state, I)) + return TRUE + /obj/machinery/cell_charger/wrench_act(mob/user, obj/item/I) . = TRUE if(charging) @@ -77,7 +93,6 @@ else WRENCH_UNANCHOR_MESSAGE - /obj/machinery/cell_charger/proc/removecell() charging.update_icon() charging = null @@ -116,6 +131,10 @@ ..(severity) +/obj/machinery/cell_charger/RefreshParts() + charge_rate = 500 + for(var/obj/item/stock_parts/capacitor/C in component_parts) + charge_rate *= C.rating /obj/machinery/cell_charger/process() if(!charging || !anchored || (stat & (BROKEN|NOPOWER))) @@ -124,8 +143,8 @@ if(charging.percent() >= 100) return - use_power(200) //this used to use CELLRATE, but CELLRATE is fucking awful. feel free to fix this properly! - charging.give(175) //inefficiency. + use_power(charge_rate) + charging.give(charge_rate) if(check_level()) update_icon(UPDATE_OVERLAYS) diff --git a/code/game/machinery/constructable_frame.dm b/code/game/machinery/constructable_frame.dm index 1bcd87b81e6..3159cec72a0 100644 --- a/code/game/machinery/constructable_frame.dm +++ b/code/game/machinery/constructable_frame.dm @@ -846,6 +846,13 @@ to destroy them and players will be able to make replacements. /obj/item/stack/cable_coil = 1, /obj/item/stack/sheet/glass = 4) +/obj/item/circuitboard/cell_charger + board_name = "Cell Charger" + build_path = /obj/machinery/cell_charger + board_type = "machine" + origin_tech = "powerstorage=3;materials=2" + req_components = list(/obj/item/stock_parts/capacitor = 1) + /obj/item/circuitboard/cyborgrecharger board_name = "Cyborg Recharger" build_path = /obj/machinery/recharge_station diff --git a/code/modules/research/designs/machine_designs.dm b/code/modules/research/designs/machine_designs.dm index caef24b5237..663490496b6 100644 --- a/code/modules/research/designs/machine_designs.dm +++ b/code/modules/research/designs/machine_designs.dm @@ -13,7 +13,7 @@ category = list ("Engineering Machinery") /datum/design/recharger - name = "Machine Board(Weapon Recharger)" + name = "Machine Board (Weapon Recharger)" desc = "The circuit board for a weapon recharger" id = "recharger" build_path = /obj/item/circuitboard/recharger @@ -22,6 +22,16 @@ req_tech = list("powerstorage" = 3, "materials" = 3) category = list("Misc. Machinery") +/datum/design/cell_charger + name = "Machine Board (Cell Charger)" + desc = "The circuit board for a cell charger" + id = "cell_charger" + build_path = /obj/item/circuitboard/cell_charger + materials = list(MAT_GLASS = 1000) + build_type = IMPRINTER + req_tech = list("powerstorage" = 3, "materials" = 3) + category = list("Misc. Machinery") + /datum/design/smes name = "Machine Board (SMES)" desc = "The circuit board for a SMES."