diff --git a/code/game/objects/items/theft_items.dm b/code/game/objects/items/theft_items.dm
index e71d9496086..53522602e8d 100644
--- a/code/game/objects/items/theft_items.dm
+++ b/code/game/objects/items/theft_items.dm
@@ -187,7 +187,7 @@
tongs.icon_state = "supermatter_tongs_loaded"
tongs.item_state = "supermatter_tongs_loaded"
to_chat(user, "You carefully pick up [src] with [tongs].")
- else if(istype(I, /obj/item/scalpel/supermatter) || istype(I, /obj/item/nuke_core_container/supermatter)) // we don't want it to dust
+ else if(istype(I, /obj/item/scalpel/supermatter) || istype(I, /obj/item/nuke_core_container/supermatter) || HAS_TRAIT(I, TRAIT_SUPERMATTER_IMMUNE)) // we don't want it to dust
return
else
if(issilicon(user))
@@ -207,7 +207,7 @@
if(!isliving(hit_atom))
return ..()
var/mob/living/victim = hit_atom
- if(victim.incorporeal_move || victim.status_flags & GODMODE) //try to keep this in sync with supermatter's consume fail conditions
+ if(victim.incorporeal_move || victim.status_flags & GODMODE || HAS_TRAIT(victim, TRAIT_SUPERMATTER_IMMUNE)) //try to keep this in sync with supermatter's consume fail conditions
return ..()
if(throwingdatum?.thrower)
var/mob/user = throwingdatum.thrower
diff --git a/code/modules/power/engines/supermatter/supermatter.dm b/code/modules/power/engines/supermatter/supermatter.dm
index 610563b17f4..ece4125c36e 100644
--- a/code/modules/power/engines/supermatter/supermatter.dm
+++ b/code/modules/power/engines/supermatter/supermatter.dm
@@ -785,7 +785,7 @@
to_chat(H, "[scalpel] isn't sharp enough to carve a sliver off of [src]!")
return
- var/obj/item/nuke_core/supermatter_sliver/sliver = carve_sliver(scalpel, H)
+ var/obj/item/nuke_core/supermatter_sliver/sliver = carve_sliver(H)
if(sliver)
scalpel.uses_left--
if(!scalpel.uses_left)
@@ -803,7 +803,7 @@
return
if(istype(I, /obj/item/supermatter_halberd))
- carve_sliver(I, user)
+ carve_sliver(user)
return
if(istype(I, /obj/item/retractor/supermatter))
@@ -931,9 +931,9 @@
remove_filter("outline")
QDEL_NULL(warp)
-/obj/machinery/atmospherics/supermatter_crystal/proc/carve_sliver(obj/item/tool, mob/living/user)
+/obj/machinery/atmospherics/supermatter_crystal/proc/carve_sliver(mob/living/user)
to_chat(user, "You begin carving a sliver off of [src]...")
- if(tool.use_tool(src, user, 10 SECONDS, volume = 100))
+ if(do_after_once(user, 4 SECONDS, FALSE, src))
to_chat(user, "You carve a sliver off of [src], and it begins to react violently!")
matter_power += 800