diff --git a/code/datums/helper_datums/teleport.dm b/code/datums/helper_datums/teleport.dm
index 4052e88180f..af91ef10d27 100644
--- a/code/datums/helper_datums/teleport.dm
+++ b/code/datums/helper_datums/teleport.dm
@@ -157,19 +157,4 @@
if(istype(teleatom, /mob/living))
var/mob/living/MM = teleatom
MM << "The bluespace interface on your bag of holding interferes with the teleport!"
- return 1
-
-/datum/teleport/instant/science/teleportChecks()
- if(istype(teleatom, /obj/item/weapon/disk/nuclear)) // Don't let nuke disks get teleported --NeoFite
- teleatom.visible_message("The portal rejects [teleatom]!")
- return 0
-
- if(!isemptylist(teleatom.search_contents_for(/obj/item/weapon/disk/nuclear)))
- if(istype(teleatom, /mob/living))
- var/mob/living/MM = teleatom
- MM.visible_message("The portal rejects [MM]!","The nuclear disk that you're carrying seems to be unable to pass through the portal. Better drop it if you want to go through.")
- else
- teleatom.visible_message("The portal rejects [teleatom]!")
- return 0
-
- return 1
+ return 1
\ No newline at end of file
diff --git a/code/defines/obj/weapon.dm b/code/defines/obj/weapon.dm
index bab328c9464..7a9223e27ba 100644
--- a/code/defines/obj/weapon.dm
+++ b/code/defines/obj/weapon.dm
@@ -134,13 +134,6 @@
name = "disk"
icon = 'icons/obj/items.dmi'
-/obj/item/weapon/disk/nuclear
- name = "nuclear authentication disk"
- desc = "Better keep this safe."
- icon_state = "nucleardisk"
- item_state = "card-id"
- w_class = 1.0
-
/*
/obj/item/weapon/game_kit
name = "Gaming Kit"
diff --git a/code/game/gamemodes/nuclear/nuclearbomb.dm b/code/game/gamemodes/nuclear/nuclearbomb.dm
index bd0600a7496..af52c88edf4 100644
--- a/code/game/gamemodes/nuclear/nuclearbomb.dm
+++ b/code/game/gamemodes/nuclear/nuclearbomb.dm
@@ -210,9 +210,32 @@ var/bomb_set
return
return
+
+//==========DAT FUKKEN DISK===============
+/obj/item/weapon/disk/nuclear
+ name = "nuclear authentication disk"
+ desc = "Better keep this safe."
+ icon_state = "nucleardisk"
+ item_state = "card-id"
+ w_class = 1.0
+
+/obj/item/weapon/disk/nuclear/New()
+ processing_objects.Add(src)
+
+/obj/item/weapon/disk/nuclear/process()
+ var/turf/disk_loc = get_turf(src)
+ if(disk_loc.z >2)
+ for(var/mob/MOB in disk_loc)
+ MOB << "You can't help but feel that you just lost something back there..."
+ qdel(src)
+
/obj/item/weapon/disk/nuclear/Destroy()
if(blobstart.len > 0)
- loc = pick(blobstart)
- message_admins("[src] has been destroyed. Moving it to ([x], [y], [z]).")
- log_game("[src] has been destroyed. Moving it to ([x], [y], [z]).")
- return 1 // Cancel destruction.
+ var/obj/item/weapon/disk/nuclear/NEWDISK = new(pick(blobstart))
+ transfer_fingerprints_to(NEWDISK)
+ message_admins("[src] has been destroyed. Moving it to ([NEWDISK.x], [NEWDISK.y], [NEWDISK.z]).")
+ log_game("[src] has been destroyed. Moving it to ([NEWDISK.x], [NEWDISK.y], [NEWDISK.z]).")
+ Del(src) //Needed to clear all references to it
+ else
+ ERROR("[src] was supposed to be destroyed, but we were unable to locate a blobstart landmark to spawn a new one.")
+ return 1 // Cancel destruction.
\ No newline at end of file
diff --git a/code/game/machinery/recycler.dm b/code/game/machinery/recycler.dm
index 1daa307ba85..5c7f1851bce 100644
--- a/code/game/machinery/recycler.dm
+++ b/code/game/machinery/recycler.dm
@@ -93,18 +93,17 @@ var/const/SAFETY_COOLDOWN = 100
/obj/machinery/recycler/proc/recycle(var/obj/item/I, var/sound = 1)
I.loc = src.loc
- if(!istype(I, /obj/item/weapon/disk/nuclear))
- qdel(I)
- if(prob(15))
- new /obj/item/stack/sheet/metal(loc)
- if(prob(10))
- new /obj/item/stack/sheet/glass(loc)
- if(prob(2))
- new /obj/item/stack/sheet/plasteel(loc)
- if(prob(1))
- new /obj/item/stack/sheet/rglass(loc)
- if(sound)
- playsound(src.loc, 'sound/items/Welder.ogg', 50, 1)
+ qdel(I)
+ if(prob(15))
+ new /obj/item/stack/sheet/metal(loc)
+ if(prob(10))
+ new /obj/item/stack/sheet/glass(loc)
+ if(prob(2))
+ new /obj/item/stack/sheet/plasteel(loc)
+ if(prob(1))
+ new /obj/item/stack/sheet/rglass(loc)
+ if(sound)
+ playsound(src.loc, 'sound/items/Welder.ogg', 50, 1)
/obj/machinery/recycler/proc/stop(var/mob/living/L)
diff --git a/code/game/objects/structures/morgue.dm b/code/game/objects/structures/morgue.dm
index 32f8c739a20..50a4c2579cb 100644
--- a/code/game/objects/structures/morgue.dm
+++ b/code/game/objects/structures/morgue.dm
@@ -240,10 +240,6 @@
return
else
- if(!isemptylist(src.search_contents_for(/obj/item/weapon/disk/nuclear)))
- usr << "You get the feeling that you shouldn't cremate one of the items in the cremator."
- return
-
for (var/mob/M in viewers(src))
M.show_message("\red You hear a roar as the crematorium activates.", 1)
diff --git a/code/game/turfs/space/space.dm b/code/game/turfs/space/space.dm
index 7f743f88f04..b60fd355982 100644
--- a/code/game/turfs/space/space.dm
+++ b/code/game/turfs/space/space.dm
@@ -62,32 +62,6 @@
qdel(A)
return
- if(istype(A, /obj/item/weapon/disk/nuclear)) // Don't let nuke disks travel Z levels ... And moving this shit down here so it only fires when they're actually trying to change z-level.
- qdel(A) //The disk's Del() proc ensures a new one is created
- return
-
- var/list/disk_search = A.search_contents_for(/obj/item/weapon/disk/nuclear)
- if(!isemptylist(disk_search))
- if(istype(A, /mob/living))
- var/mob/living/MM = A
- if(MM.client && !MM.stat)
- MM << "\red Something you are carrying is preventing you from leaving. Don't play stupid; you know exactly what it is."
- if(MM.x <= TRANSITIONEDGE)
- MM.inertia_dir = 4
- else if(MM.x >= world.maxx -TRANSITIONEDGE)
- MM.inertia_dir = 8
- else if(MM.y <= TRANSITIONEDGE)
- MM.inertia_dir = 1
- else if(MM.y >= world.maxy -TRANSITIONEDGE)
- MM.inertia_dir = 2
- else
- for(var/obj/item/weapon/disk/nuclear/N in disk_search)
- qdel(N)//Make the disk respawn it is on a clientless mob or corpse
- else
- for(var/obj/item/weapon/disk/nuclear/N in disk_search)
- qdel(N)//Make the disk respawn if it is floating on its own
- return
-
var/move_to_z = src.z
var/safety = 1
diff --git a/code/modules/awaymissions/gateway.dm b/code/modules/awaymissions/gateway.dm
index 9c8d10a3921..4245bf5e056 100644
--- a/code/modules/awaymissions/gateway.dm
+++ b/code/modules/awaymissions/gateway.dm
@@ -119,15 +119,6 @@ obj/machinery/gateway/centerstation/process()
if(!active) return
if(!awaygate) return
- if(istype(M, /obj/item/weapon/disk/nuclear))
- return
-
- if(M.GetTypeInAllContents(/obj/item/weapon/disk/nuclear))
- if(ismob(M))
- var/mob/MOB = M
- MOB << "You are forbidden from taking the nuclear authentication disk off station."
- return
-
if(awaygate.calibrated)
M.loc = get_step(awaygate.loc, SOUTH)
M.dir = SOUTH