diff --git a/code/modules/power/fusion/core/_core.dm b/code/modules/power/fusion/core/_core.dm
index 60af67cf92c..760c46ea93b 100644
--- a/code/modules/power/fusion/core/_core.dm
+++ b/code/modules/power/fusion/core/_core.dm
@@ -18,6 +18,8 @@ var/list/fusion_cores = list()
active_power_usage = 500 //multiplied by field strength
anchored = 0
+ circuit = /obj/item/weapon/circuitboard/fusion_core
+
var/obj/effect/fusion_em_field/owned_field
var/field_strength = 1//0.01
var/id_tag
@@ -27,8 +29,12 @@ var/list/fusion_cores = list()
/obj/machinery/power/fusion_core/initialize()
. = ..()
- connect_to_network()
fusion_cores += src
+ default_apply_parts()
+
+/obj/machinery/power/fusion_core/mapped/initialize()
+ . = ..()
+ connect_to_network()
/obj/machinery/power/fusion_core/Destroy()
for(var/obj/machinery/computer/fusion_core_control/FCC in machines)
@@ -47,6 +53,7 @@ var/list/fusion_cores = list()
owned_field.radiation_scale()
owned_field.temp_dump()
owned_field.temp_color()
+
/obj/machinery/power/fusion_core/Topic(href, href_list)
if(..())
return 1
@@ -106,23 +113,20 @@ var/list/fusion_cores = list()
to_chat(user,"Shut \the [src] off first!")
return
+ if(default_deconstruction_screwdriver(user, W))
+ return
+ if(default_deconstruction_crowbar(user, W))
+ return
+ if(default_part_replacement(user, W))
+ return
+
if(ismultitool(W))
var/new_ident = input("Enter a new ident tag.", "Fusion Core", id_tag) as null|text
if(new_ident && user.Adjacent(src))
id_tag = new_ident
return
- else if(iswrench(W))
- anchored = !anchored
- playsound(src, W.usesound, 75, 1)
- if(anchored)
- user.visible_message("[user.name] secures [src.name] to the floor.", \
- "You secure the [src.name] to the floor.", \
- "You hear a ratchet")
- else
- user.visible_message("[user.name] unsecures [src.name] from the floor.", \
- "You unsecure the [src.name] from the floor.", \
- "You hear a ratchet")
+ if(default_unfasten_wrench(user, W))
return
return ..()
diff --git a/code/modules/power/fusion/fuel_assembly/fuel_compressor.dm b/code/modules/power/fusion/fuel_assembly/fuel_compressor.dm
index 97afe227c48..6a0f1bc205f 100644
--- a/code/modules/power/fusion/fuel_assembly/fuel_compressor.dm
+++ b/code/modules/power/fusion/fuel_assembly/fuel_compressor.dm
@@ -6,6 +6,12 @@
anchored = 1
layer = 4
+ circuit = /obj/item/weapon/circuitboard/fusion_fuel_compressor
+
+/obj/machinery/fusion_fuel_compressor/initialize()
+ . = ..()
+ default_apply_parts()
+
/obj/machinery/fusion_fuel_compressor/MouseDrop_T(var/atom/movable/target, var/mob/user)
if(user.incapacitated() || !user.Adjacent(src))
return
@@ -34,6 +40,14 @@
return 0
/obj/machinery/fusion_fuel_compressor/attackby(var/obj/item/thing, var/mob/user)
+
+ if(default_deconstruction_screwdriver(user, thing))
+ return
+ if(default_deconstruction_crowbar(user, thing))
+ return
+ if(default_part_replacement(user, thing))
+ return
+
if(istype(thing, /obj/item/stack/material))
var/obj/item/stack/material/M = thing
var/material/mat = M.get_material()
diff --git a/code/modules/power/fusion/fuel_assembly/fuel_injector.dm b/code/modules/power/fusion/fuel_assembly/fuel_injector.dm
index bbbb1657e01..545638c7d80 100644
--- a/code/modules/power/fusion/fuel_assembly/fuel_injector.dm
+++ b/code/modules/power/fusion/fuel_assembly/fuel_injector.dm
@@ -11,15 +11,17 @@ var/list/fuel_injectors = list()
idle_power_usage = 10
active_power_usage = 500
+ circuit = /obj/item/weapon/circuitboard/fusion_injector
+
var/fuel_usage = 0.0001
var/id_tag
var/injecting = 0
var/obj/item/weapon/fuel_assembly/cur_assembly
-/obj/machinery/fusion_fuel_injector/New()
- ..()
+/obj/machinery/fusion_fuel_injector/initialize()
+ . = ..()
fuel_injectors += src
- tag = null
+ default_apply_parts()
/obj/machinery/fusion_fuel_injector/Destroy()
if(cur_assembly)
@@ -66,17 +68,18 @@ var/list/fuel_injectors = list()
cur_assembly = W
return
- if(iswrench(W))
+ if(iswrench(W) || isscrewdriver(W) || iscrowbar(W) || istype(W, /obj/item/weapon/storage/part_replacer))
if(injecting)
to_chat(user, "Shut \the [src] off first!")
return
- anchored = !anchored
- playsound(src, W.usesound, 75, 1)
- if(anchored)
- user.visible_message("\The [user] secures \the [src] to the floor.")
- else
- user.visible_message("\The [user] unsecures \the [src] from the floor.")
- return
+ if(default_unfasten_wrench(user, W))
+ return
+ if(default_deconstruction_screwdriver(user, W))
+ return
+ if(default_deconstruction_crowbar(user, W))
+ return
+ if(default_part_replacement(user, W))
+ return
return ..()
diff --git a/code/modules/power/fusion/fusion_particle_catcher.dm b/code/modules/power/fusion/fusion_particle_catcher.dm
index 7dba3d8e233..3651285485f 100644
--- a/code/modules/power/fusion/fusion_particle_catcher.dm
+++ b/code/modules/power/fusion/fusion_particle_catcher.dm
@@ -38,8 +38,6 @@
return 0
/obj/effect/fusion_particle_catcher/CanPass(var/atom/movable/mover, var/turf/target, var/height=0, var/air_group=0)
- if(istype(mover, /obj/item/projectile/beam))
- return 0
- if(istype(mover, /obj/effect/accelerated_particle))
- return 0
+ if(istype(mover, /obj/effect/accelerated_particle) || istype(mover, /obj/item/projectile/beam))
+ return !density
return 1
diff --git a/code/modules/power/fusion/gyrotron/gyrotron.dm b/code/modules/power/fusion/gyrotron/gyrotron.dm
index edf905ab061..5309b0f5b24 100644
--- a/code/modules/power/fusion/gyrotron/gyrotron.dm
+++ b/code/modules/power/fusion/gyrotron/gyrotron.dm
@@ -9,6 +9,8 @@ var/list/gyrotrons = list()
use_power = 1
active_power_usage = 50000
+ circuit = /obj/item/weapon/circuitboard/gyrotron
+
var/id_tag
var/rate = 3
var/mega_energy = 1
@@ -21,6 +23,7 @@ var/list/gyrotrons = list()
/obj/machinery/power/emitter/gyrotron/initialize()
gyrotrons += src
active_power_usage = mega_energy * 50000
+ default_apply_parts()
. = ..()
/obj/machinery/power/emitter/gyrotron/Destroy()
@@ -54,4 +57,12 @@ var/list/gyrotrons = list()
if(new_ident && user.Adjacent(src))
id_tag = new_ident
return
+
+ if(default_deconstruction_screwdriver(user, W))
+ return
+ if(default_deconstruction_crowbar(user, W))
+ return
+ if(default_part_replacement(user, W))
+ return
+
return ..()
\ No newline at end of file