diff --git a/code/modules/power/fusion/core/_core.dm b/code/modules/power/fusion/core/_core.dm index ebe3bbb744..e7a93f71a3 100644 --- a/code/modules/power/fusion/core/_core.dm +++ b/code/modules/power/fusion/core/_core.dm @@ -2,13 +2,13 @@ TODO README */ -var/list/fusion_cores = list() +GLOBAL_LIST_EMPTY(fusion_cores) #define MAX_FIELD_STR 1000 #define MIN_FIELD_STR 1 /obj/machinery/power/fusion_core - name = "\improper R-UST Mk. 8 Tokamak core" + name = "\improper R-UST Mk. 9 Tokamak core" desc = "An enormous solenoid for generating extremely high power electromagnetic fields. It includes a kinetic energy harvester." icon = 'icons/obj/machines/power/fusion.dmi' icon_state = "core0" @@ -20,16 +20,25 @@ var/list/fusion_cores = list() circuit = /obj/item/weapon/circuitboard/fusion_core + var/obj/item/hose_connector/output/Output + var/obj/effect/fusion_em_field/owned_field var/field_strength = 1//0.01 + var/target_field_strength = 1 var/id_tag + var/reactant_dump = FALSE // Does the tokomak actively try to syphon materials? + /obj/machinery/power/fusion_core/mapped anchored = 1 /obj/machinery/power/fusion_core/Initialize() . = ..() - fusion_cores += src + GLOB.fusion_cores += src + + Output = new(src) + create_reagents(10000) + default_apply_parts() /obj/machinery/power/fusion_core/mapped/Initialize() @@ -41,14 +50,31 @@ var/list/fusion_cores = list() FCC.connected_devices -= src if(FCC.cur_viewed_device == src) FCC.cur_viewed_device = null - fusion_cores -= src + GLOB.fusion_cores -= src return ..() +/obj/machinery/power/fusion_core/proc/check_core_status() + if(stat & BROKEN) + return + if(idle_power_usage > avail()) + return + . = 1 + /obj/machinery/power/fusion_core/process() if((stat & BROKEN) || !powernet || !owned_field) Shutdown() + + if(Output.get_pairing()) + reagents.trans_to_holder(Output.reagents, Output.reagents.maximum_volume) + if(prob(5)) + visible_message("\The [src] gurgles as it exports fluid.") + if(owned_field) + + set_strength(target_field_strength) + spawn(1) + owned_field.process() owned_field.stability_monitor() owned_field.radiation_scale() owned_field.temp_dump() @@ -95,10 +121,12 @@ var/list/fusion_cores = list() /obj/machinery/power/fusion_core/proc/set_strength(var/value) value = CLAMP(value, MIN_FIELD_STR, MAX_FIELD_STR) - field_strength = value - update_active_power_usage(5 * value) - if(owned_field) - owned_field.ChangeFieldStrength(value) + + if(field_strength != value) + field_strength = value + update_active_power_usage(5 * value) + if(owned_field) + owned_field.ChangeFieldStrength(value) /obj/machinery/power/fusion_core/attack_hand(var/mob/user) if(!Adjacent(user)) // As funny as it was for the AI to hug-kill the tokamak field from a distance... diff --git a/code/modules/power/fusion/core/core_control.dm b/code/modules/power/fusion/core/core_control.dm index dc5e16c87e..c9ba42bbd5 100644 --- a/code/modules/power/fusion/core/core_control.dm +++ b/code/modules/power/fusion/core/core_control.dm @@ -1,26 +1,46 @@ /obj/machinery/computer/fusion_core_control name = "\improper R-UST Mk. 8 core control" - icon = 'icons/obj/machines/power/fusion.dmi' - icon_state = "core_control" light_color = COLOR_ORANGE circuit = /obj/item/weapon/circuitboard/fusion_core_control - var/id_tag + + icon_keyboard = "tech_key" + icon_screen = "core_control" + +// var/id_tag var/scan_range = 25 var/list/connected_devices = list() var/obj/machinery/power/fusion_core/cur_viewed_device + var/datum/tgui_module/rustcore_monitor/monitor + +/obj/machinery/computer/fusion_core_control/New() + ..() + monitor = new(src) + +/obj/machinery/computer/fusion_core_control/Destroy() + QDEL_NULL(monitor) + ..() /obj/machinery/computer/fusion_core_control/attackby(var/obj/item/thing, var/mob/user) ..() if(istype(thing, /obj/item/device/multitool)) - var/new_ident = input("Enter a new ident tag.", "Core Control", id_tag) as null|text + var/new_ident = sanitize_text(input("Enter a new ident tag.", "Core Control", monitor.core_tag) as null|text) if(new_ident && user.Adjacent(src)) - id_tag = new_ident - cur_viewed_device = null + monitor.core_tag = new_ident +// id_tag = new_ident +// cur_viewed_device = null return /obj/machinery/computer/fusion_core_control/attack_ai(mob/user) attack_hand(user) +/obj/machinery/computer/fusion_core_control/attack_hand(var/mob/user as mob) + ..() + if(stat & (BROKEN|NOPOWER)) + return + + monitor.tgui_interact(user) + +/* /obj/machinery/computer/fusion_core_control/attack_hand(mob/user) add_fingerprint(user) interact(user) @@ -47,10 +67,11 @@ if(cur_viewed_device) dat += {" Back to overview