diff --git a/code/game/objects/items/circuitboards/machine_circuitboards.dm b/code/game/objects/items/circuitboards/machine_circuitboards.dm index 1c9e3e360f5..a87e12a14d2 100644 --- a/code/game/objects/items/circuitboards/machine_circuitboards.dm +++ b/code/game/objects/items/circuitboards/machine_circuitboards.dm @@ -358,7 +358,7 @@ /obj/item/circuitboard/machine/HFR_core name = "HFR core (Machine Board)" icon_state = "engineering" - build_path = /obj/machinery/atmospherics/components/binary/hypertorus/core + build_path = /obj/machinery/atmospherics/components/unary/hypertorus/core req_components = list( /obj/item/stack/cable_coil = 10, /obj/item/stack/sheet/glass = 10, diff --git a/code/modules/atmospherics/machinery/components/fusion/hypertorus.dm b/code/modules/atmospherics/machinery/components/fusion/hypertorus.dm index c6f39442d81..bd8ce1071c4 100644 --- a/code/modules/atmospherics/machinery/components/fusion/hypertorus.dm +++ b/code/modules/atmospherics/machinery/components/fusion/hypertorus.dm @@ -92,9 +92,6 @@ return return ..() -/obj/machinery/atmospherics/components/unary/hypertorus/getNodeConnects() - return list(dir) - /obj/machinery/atmospherics/components/unary/hypertorus/default_change_direction_wrench(mob/user, obj/item/I) . = ..() if(.) @@ -147,37 +144,29 @@ icon_state_active = "moderator_input_active" circuit = /obj/item/circuitboard/machine/HFR_moderator_input -/obj/machinery/atmospherics/components/binary/hypertorus/core +/obj/machinery/atmospherics/components/unary/hypertorus/core name = "HFR core" desc = "This is the Hypertorus Fusion Reactor core, an advanced piece of technology to finely tune the reaction inside of the machine. It has I/O for cooling gases." icon = 'icons/obj/atmospherics/components/hypertorus.dmi' icon_state = "core_off" circuit = /obj/item/circuitboard/machine/HFR_core - pipe_flags = PIPING_ONE_PER_TURF | PIPING_DEFAULT_LAYER_ONLY - layer = OBJ_LAYER - density = TRUE - resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF | FREEZE_PROOF use_power = IDLE_POWER_USE idle_power_usage = 50 ///Vars for the state of the icon of the object (open, off, active) - var/icon_state_open = "core_open" - var/icon_state_off = "core_off" - var/icon_state_active = "core_active" + icon_state_open = "core_open" + icon_state_off = "core_off" + icon_state_active = "core_active" /** * Processing checks */ - ///Checks if the machine state is active (all parts are connected) - var/active = FALSE ///Checks if the user has started the machine var/start_power = FALSE ///Checks for the cooling to start var/start_cooling = FALSE ///Checks for the fuel to be injected var/start_fuel = FALSE - ///Checks for fusion to have gone past the power level 0 - var/fusion_started = FALSE /** * Hypertorus internal objects and gasmixes @@ -317,7 +306,7 @@ ///Var used in the meltdown phase var/final_countdown = FALSE -/obj/machinery/atmospherics/components/binary/hypertorus/core/Initialize() +/obj/machinery/atmospherics/components/unary/hypertorus/core/Initialize() . = ..() internal_fusion = new internal_fusion.assert_gases(/datum/gas/hydrogen, /datum/gas/tritium) @@ -330,14 +319,7 @@ radio.recalculateChannels() investigate_log("has been created.", INVESTIGATE_HYPERTORUS) -/obj/machinery/atmospherics/components/binary/hypertorus/core/SetInitDirections() - switch(dir) - if(NORTH, SOUTH) - initialize_directions = EAST|WEST - if(EAST, WEST) - initialize_directions = NORTH|SOUTH - -/obj/machinery/atmospherics/components/binary/hypertorus/core/Destroy() +/obj/machinery/atmospherics/components/unary/hypertorus/core/Destroy() unregister_signals(TRUE) if(internal_fusion) internal_fusion = null @@ -359,68 +341,7 @@ QDEL_NULL(soundloop) return..() -/obj/machinery/atmospherics/components/binary/hypertorus/core/examine(mob/user) - . = ..() - . += "[src] can be rotated by first opening the panel with a screwdriver and then using a wrench on it." - -/obj/machinery/atmospherics/components/binary/hypertorus/core/update_icon() - . = ..() - if(panel_open) - icon_state = icon_state_open - else if(active) - icon_state = icon_state_active - else - icon_state = icon_state_off - -/obj/machinery/atmospherics/components/binary/hypertorus/core/getNodeConnects() - return list(turn(dir, 270), turn(dir, 90)) - -/obj/machinery/atmospherics/components/binary/hypertorus/core/can_be_node(obj/machinery/atmospherics/target) - if(anchored) - return ..() - return FALSE - -/obj/machinery/atmospherics/components/binary/hypertorus/core/attackby(obj/item/I, mob/user, params) - if(!fusion_started) - if(default_deconstruction_screwdriver(user, icon_state_open, icon_state_off, I)) - return - if(default_change_direction_wrench(user, I)) - return - if(default_deconstruction_crowbar(I)) - return - return ..() - -/obj/machinery/atmospherics/components/binary/hypertorus/core/default_change_direction_wrench(mob/user, obj/item/I) - . = ..() - if(!.) - return - if(!anchored) - return FALSE - var/obj/machinery/atmospherics/node1 = nodes[1] - var/obj/machinery/atmospherics/node2 = nodes[2] - if(node1) - node1.disconnect(src) - nodes[1] = null - nullifyPipenet(parents[1]) - if(node2) - node2.disconnect(src) - nodes[2] = null - nullifyPipenet(parents[1]) - - SetInitDirections() - atmosinit() - node1 = nodes[1] - if(node1) - node1.atmosinit() - node1.addMember(src) - node2 = nodes[2] - if(node2) - node2.atmosinit() - node2.addMember(src) - SSair.add_to_rebuild_queue(src) - return TRUE - -/obj/machinery/atmospherics/components/binary/hypertorus/core/proc/check_part_connectivity() +/obj/machinery/atmospherics/components/unary/hypertorus/core/proc/check_part_connectivity() . = TRUE if(!anchored || panel_open) return FALSE @@ -489,7 +410,7 @@ . = FALSE -/obj/machinery/atmospherics/components/binary/hypertorus/core/proc/activate(mob/living/user) +/obj/machinery/atmospherics/components/unary/hypertorus/core/proc/activate(mob/living/user) if(active) to_chat(user, "You already activated the machine.") return @@ -515,7 +436,7 @@ soundloop = new(list(src), TRUE) soundloop.volume = 5 -/obj/machinery/atmospherics/components/binary/hypertorus/core/proc/unregister_signals(only_signals = FALSE) +/obj/machinery/atmospherics/components/unary/hypertorus/core/proc/unregister_signals(only_signals = FALSE) UnregisterSignal(linked_interface, COMSIG_PARENT_QDELETING) UnregisterSignal(linked_input, COMSIG_PARENT_QDELETING) UnregisterSignal(linked_output, COMSIG_PARENT_QDELETING) @@ -525,7 +446,7 @@ if(!only_signals) deactivate() -/obj/machinery/atmospherics/components/binary/hypertorus/core/proc/deactivate() +/obj/machinery/atmospherics/components/unary/hypertorus/core/proc/deactivate() if(!active) return active = FALSE @@ -553,17 +474,17 @@ corners = null QDEL_NULL(soundloop) -/obj/machinery/atmospherics/components/binary/hypertorus/core/proc/check_fuel() +/obj/machinery/atmospherics/components/unary/hypertorus/core/proc/check_fuel() return (internal_fusion.gases[/datum/gas/tritium][MOLES] > FUSION_MOLE_THRESHOLD && internal_fusion.gases[/datum/gas/hydrogen][MOLES] > FUSION_MOLE_THRESHOLD) -/obj/machinery/atmospherics/components/binary/hypertorus/core/proc/check_power_use() +/obj/machinery/atmospherics/components/unary/hypertorus/core/proc/check_power_use() if(machine_stat & (NOPOWER|BROKEN)) return FALSE if(use_power == ACTIVE_POWER_USE) active_power_usage = ((power_level + 1) * MIN_POWER_USAGE) //Max around 350 KW return TRUE -/obj/machinery/atmospherics/components/binary/hypertorus/core/proc/get_status() +/obj/machinery/atmospherics/components/unary/hypertorus/core/proc/get_status() var/integrity = get_integrity() if(integrity < HYPERTORUS_MELTING_PERCENT) return HYPERTORUS_MELTING @@ -581,7 +502,7 @@ return HYPERTORUS_NOMINAL return HYPERTORUS_INACTIVE -/obj/machinery/atmospherics/components/binary/hypertorus/core/proc/alarm() +/obj/machinery/atmospherics/components/unary/hypertorus/core/proc/alarm() switch(get_status()) if(HYPERTORUS_MELTING) playsound(src, 'sound/misc/bloblarm.ogg', 100, FALSE, 40, 30, falloff_distance = 10) @@ -592,13 +513,13 @@ if(HYPERTORUS_WARNING) playsound(src, 'sound/machines/terminal_alert.ogg', 75) -/obj/machinery/atmospherics/components/binary/hypertorus/core/proc/get_integrity() +/obj/machinery/atmospherics/components/unary/hypertorus/core/proc/get_integrity() var/integrity = critical_threshold_proximity / melting_point integrity = round(100 - integrity * 100, 0.01) integrity = integrity < 0 ? 0 : integrity return integrity -/obj/machinery/atmospherics/components/binary/hypertorus/core/proc/check_alert() +/obj/machinery/atmospherics/components/unary/hypertorus/core/proc/check_alert() if(critical_threshold_proximity < warning_point) return if((REALTIMEOFDAY - lastwarning) / 10 >= WARNING_TIME_DELAY) @@ -623,7 +544,7 @@ if(critical_threshold_proximity > melting_point) countdown() -/obj/machinery/atmospherics/components/binary/hypertorus/core/proc/countdown() +/obj/machinery/atmospherics/components/unary/hypertorus/core/proc/countdown() set waitfor = FALSE if(final_countdown) // We're already doing it go away @@ -649,7 +570,7 @@ meltdown() -/obj/machinery/atmospherics/components/binary/hypertorus/core/proc/meltdown() +/obj/machinery/atmospherics/components/unary/hypertorus/core/proc/meltdown() explosion(loc, 0, 0, power_level * 5, power_level * 6, 1, 1) radiation_pulse(loc, power_level * 7000, (1 / (power_level + 5)), TRUE) empulse(loc, power_level * 5, power_level * 7) @@ -666,7 +587,7 @@ air_update_turf() qdel(src) -/obj/machinery/atmospherics/components/binary/hypertorus/core/process_atmos() +/obj/machinery/atmospherics/components/unary/hypertorus/core/process_atmos() /* *Pre-checks */ @@ -731,9 +652,8 @@ moderator_internal.temperature = max(moderator_internal.temperature + fusion_heat_amount / moderator_internal.heat_capacity(), TCMB) if(airs[1].total_moles() * 0.05 > MINIMUM_MOLE_COUNT) - var/datum/gas_mixture/cooling_in = airs[1] - var/datum/gas_mixture/cooling_out = airs[2] - var/datum/gas_mixture/cooling_remove = cooling_in.remove(0.05 * cooling_in.total_moles()) + var/datum/gas_mixture/cooling_port = airs[1] + var/datum/gas_mixture/cooling_remove = cooling_port.remove(0.05 * cooling_port.total_moles()) //Cooling of the moderator gases with the cooling loop in and out the core if(moderator_internal.total_moles() > 0) var/coolant_temperature_delta = cooling_remove.temperature - moderator_internal.temperature @@ -746,11 +666,11 @@ var/cooling_heat_amount = METALLIC_VOID_CONDUCTIVITY * coolant_temperature_delta * (cooling_remove.heat_capacity() * internal_fusion.heat_capacity() / (cooling_remove.heat_capacity() + internal_fusion.heat_capacity())) cooling_remove.temperature = max(cooling_remove.temperature - cooling_heat_amount / cooling_remove.heat_capacity(), TCMB) internal_fusion.temperature = max(internal_fusion.temperature + cooling_heat_amount / internal_fusion.heat_capacity(), TCMB) - cooling_out.merge(cooling_remove) + cooling_port.merge(cooling_remove) fusion_temperature = internal_fusion.temperature moderator_temperature = moderator_internal.temperature - coolant_temperature = airs[2].temperature + coolant_temperature = airs[1].temperature output_temperature = linked_output.airs[1].temperature //Set the power level of the fusion process @@ -792,7 +712,7 @@ buffer = linked_moderator.airs[1].remove(moderator_injection_rate * 0.1) moderator_internal.merge(buffer) -/obj/machinery/atmospherics/components/binary/hypertorus/core/process(delta_time) +/obj/machinery/atmospherics/components/unary/hypertorus/core/process(delta_time) fusion_process(delta_time) if(!active) return @@ -813,7 +733,7 @@ for(var/obj/machinery/hypertorus/corner/corner in corners) corner.fusion_started = FALSE -/obj/machinery/atmospherics/components/binary/hypertorus/core/proc/fusion_process(delta_time) +/obj/machinery/atmospherics/components/unary/hypertorus/core/proc/fusion_process(delta_time) //fusion: a terrible idea that was fun but broken. Now reworked to be less broken and more interesting. Again (and again, and again). Again! Again but with machine! //Fusion Rework Counter: Please increment this if you make a major overhaul to this system again. //7 reworks @@ -1248,7 +1168,7 @@ desc = "Interface for the HFR to control the flow of the reaction." icon_state = "interface_off" circuit = /obj/item/circuitboard/machine/HFR_interface - var/obj/machinery/atmospherics/components/binary/hypertorus/core/connected_core + var/obj/machinery/atmospherics/components/unary/hypertorus/core/connected_core icon_state_off = "interface_off" icon_state_open = "interface_open" icon_state_active = "interface_active" @@ -1261,7 +1181,7 @@ /obj/machinery/hypertorus/interface/multitool_act(mob/living/user, obj/item/I) . = ..() var/turf/T = get_step(src,turn(dir,180)) - var/obj/machinery/atmospherics/components/binary/hypertorus/core/centre = locate() in T + var/obj/machinery/atmospherics/components/unary/hypertorus/core/centre = locate() in T if(!centre || !centre.check_part_connectivity()) to_chat(user, "Check all parts and then try again.") @@ -1336,8 +1256,8 @@ data["internal_fusion_temperature"] = connected_core.fusion_temperature data["moderator_internal_temperature"] = connected_core.moderator_temperature - data["internal_output_temperature"] = connected_core.coolant_temperature - data["internal_coolant_temperature"] = connected_core.output_temperature + data["internal_output_temperature"] = connected_core.output_temperature + data["internal_coolant_temperature"] = connected_core.coolant_temperature data["waste_remove"] = connected_core.waste_remove data["filter_types"] = list() diff --git a/icons/obj/atmospherics/components/hypertorus.dmi b/icons/obj/atmospherics/components/hypertorus.dmi index 26c61062bcc..4e490cb4146 100644 Binary files a/icons/obj/atmospherics/components/hypertorus.dmi and b/icons/obj/atmospherics/components/hypertorus.dmi differ