diff --git a/code/modules/mod/modules/_module.dm b/code/modules/mod/modules/_module.dm
index a3067e0c150..d3d05d205ab 100644
--- a/code/modules/mod/modules/_module.dm
+++ b/code/modules/mod/modules/_module.dm
@@ -353,6 +353,8 @@
var/list/accepted_anomalies = list(/obj/item/assembly/signaler/anomaly)
/// If this one starts with a core in.
var/prebuilt = FALSE
+ /// If the core is removable once socketed.
+ var/core_removable = TRUE
/obj/item/mod/module/anomaly_locked/Initialize(mapload)
. = ..()
@@ -371,13 +373,15 @@
if(!length(accepted_anomalies))
return
if(core)
- . += span_notice("There is a [core.name] installed in it. You could remove it with a screwdriver...")
+ . += span_notice("There is a [core.name] installed in it. [core_removable ? "You could remove it with a screwdriver..." : "Unfortunately, due to a design quirk, it's unremovable."]")
else
var/list/core_list = list()
for(var/path in accepted_anomalies)
var/atom/core_path = path
core_list += initial(core_path.name)
. += span_notice("You need to insert \a [english_list(core_list, and_text = " or ")] for this module to function.")
+ if(!core_removable)
+ . += span_notice("Due to some design quirk, once a core is inserted, it won't be removable.")
/obj/item/mod/module/anomaly_locked/on_select()
if(!core)
@@ -414,6 +418,9 @@
if(!core)
balloon_alert(user, "no core!")
return
+ if(!core_removable)
+ balloon_alert(user, "can't remove core!")
+ return
balloon_alert(user, "removing core...")
if(!do_after(user, 3 SECONDS, target = src))
balloon_alert(user, "interrupted!")
diff --git a/code/modules/mod/modules/module_kinesis.dm b/code/modules/mod/modules/module_kinesis.dm
index ff56a2329c6..0cd13871071 100644
--- a/code/modules/mod/modules/module_kinesis.dm
+++ b/code/modules/mod/modules/module_kinesis.dm
@@ -252,12 +252,16 @@
/obj/item/mod/module/anomaly_locked/kinesis/prebuilt
prebuilt = TRUE
+/obj/item/mod/module/anomaly_locked/kinesis/prebuilt/locked
+ core_removable = FALSE
+
/obj/item/mod/module/anomaly_locked/kinesis/prototype
name = "MOD prototype kinesis module"
prebuilt = TRUE
complexity = 0
use_power_cost = DEFAULT_CHARGE_DRAIN * 5
removable = FALSE
+ core_removable = FALSE
/obj/item/mod/module/anomaly_locked/kinesis/plus
name = "MOD kinesis+ module"
diff --git a/code/modules/mod/modules/modules_science.dm b/code/modules/mod/modules/modules_science.dm
index af0d43a1275..c8d3cef027a 100644
--- a/code/modules/mod/modules/modules_science.dm
+++ b/code/modules/mod/modules/modules_science.dm
@@ -90,6 +90,9 @@
/obj/item/mod/module/anomaly_locked/antigrav/prebuilt
prebuilt = TRUE
+/obj/item/mod/module/anomaly_locked/antigrav/prebuilt/locked
+ core_removable = FALSE
+
///Teleporter - Lets the user teleport to a nearby location.
/obj/item/mod/module/anomaly_locked/teleporter
name = "MOD teleporter module"
@@ -128,3 +131,6 @@
/obj/item/mod/module/anomaly_locked/teleporter/prebuilt
prebuilt = TRUE
+
+/obj/item/mod/module/anomaly_locked/teleporter/prebuilt/locked
+ core_removable = FALSE