diff --git a/code/datums/helper_datums/teleport.dm b/code/datums/helper_datums/teleport.dm
index 97905f59c7b..d1f856d954c 100644
--- a/code/datums/helper_datums/teleport.dm
+++ b/code/datums/helper_datums/teleport.dm
@@ -170,22 +170,10 @@
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(istype(teleatom, /obj/item/flag/nation)) // Don't let nation's flags get teleported either --Fox
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
-
if(!isemptylist(teleatom.search_contents_for(/obj/item/flag/nation)))
if(istype(teleatom, /mob/living))
var/mob/living/MM = teleatom
diff --git a/code/game/gamemodes/nuclear/nuclearbomb.dm b/code/game/gamemodes/nuclear/nuclearbomb.dm
index c9f28e0c47c..4e61bf3c52e 100644
--- a/code/game/gamemodes/nuclear/nuclearbomb.dm
+++ b/code/game/gamemodes/nuclear/nuclearbomb.dm
@@ -449,9 +449,34 @@ obj/machinery/nuclearbomb/proc/nukehack_win(mob/user as mob)
return
return
+
+//==========DAT FUKKEN DISK===============
+/obj/item/weapon/disk/nuclear
+ name = "nuclear authentication disk"
+ desc = "Better keep this safe."
+ icon = 'icons/obj/items.dmi'
+ 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 > ZLEVEL_CENTCOMM)
+ get(src, /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)
- var/obj/D = new /obj/item/weapon/disk/nuclear(pick(blobstart))
- message_admins("[src] has been destroyed. Spawning [D] at ([D.x], [D.y], [D.z]).")
- log_game("[src] has been destroyed. Spawning [D] at ([D.x], [D.y], [D.z]).")
- return ..()
+ var/obj/item/weapon/disk/nuclear/NEWDISK = new(pick(blobstart))
+ transfer_fingerprints_to(NEWDISK)
+ var/turf/diskturf = get_turf(src)
+ message_admins("[src] has been destroyed in ([diskturf.x], [diskturf.y] ,[diskturf.z] - JMP). Moving it to ([NEWDISK.x], [NEWDISK.y], [NEWDISK.z] - JMP).")
+ log_game("[src] has been destroyed in ([diskturf.x], [diskturf.y] ,[diskturf.z]). Moving it to ([NEWDISK.x], [NEWDISK.y], [NEWDISK.z]).")
+ return QDEL_HINT_HARDDEL_NOW
+ else
+ error("[src] was supposed to be destroyed, but we were unable to locate a blobstart landmark to spawn a new one.")
+ return QDEL_HINT_LETMELIVE // Cancel destruction.
diff --git a/code/game/machinery/recycler.dm b/code/game/machinery/recycler.dm
index 03ac7ba2460..e9c2bd18fc4 100644
--- a/code/game/machinery/recycler.dm
+++ b/code/game/machinery/recycler.dm
@@ -92,7 +92,7 @@ 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) && !istype(I,/obj/item/flag/nation))
+ if(!istype(I,/obj/item/flag/nation))
qdel(I)
if(prob(15))
new /obj/item/stack/sheet/metal(loc)
diff --git a/code/game/objects/items/weapons/disks.dm b/code/game/objects/items/weapons/disks.dm
index af88cf0bb78..1458dab9945 100644
--- a/code/game/objects/items/weapons/disks.dm
+++ b/code/game/objects/items/weapons/disks.dm
@@ -1,15 +1,3 @@
/obj/item/weapon/disk
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/disk/nuclear/pickup(mob/living/user as mob)
- if(issyndicate(user))
- set_security_level(3)*/ //Nuke Ops rework makes stealth approach significantly harder; this makes it damn near impossible; besides, it's horrendously meta.
\ No newline at end of file
diff --git a/code/game/objects/structures/morgue.dm b/code/game/objects/structures/morgue.dm
index 88ba3e7adf3..35c57a0f9f8 100644
--- a/code/game/objects/structures/morgue.dm
+++ b/code/game/objects/structures/morgue.dm
@@ -318,9 +318,6 @@
return
else
- if(!isemptylist(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
if(!isemptylist(search_contents_for(/obj/item/flag/nation)))
usr << "You get the feeling that you shouldn't cremate one of the items in the cremator."
return
diff --git a/code/game/turfs/space/space.dm b/code/game/turfs/space/space.dm
index bef369ee672..40295b5e4bb 100644
--- a/code/game/turfs/space/space.dm
+++ b/code/game/turfs/space/space.dm
@@ -106,31 +106,11 @@
if(destination_y)
A.y = destination_y
- var/mob/living/MM = null
- var/fukkendisk = A.GetTypeInAllContents(/obj/item/weapon/disk/nuclear)
var/obj/item/flag/nation/fukkenflag = A.GetTypeInAllContents(/obj/item/flag/nation)
if(fukkenflag)
fukkenflag.loc = fukkenflag.startloc
if(isliving(A))
A << "The flag you were carrying was just returned to it's base. Nice try."
- if(fukkendisk)
- if(isliving(A))
- MM = A
- if(MM.client && !MM.stat)
- MM << "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
- qdel(fukkendisk)//Make the disk respawn if it is on a clientless mob or corpse
- else
- qdel(fukkendisk)//Make the disk respawn if it is floating on its own
- return
A.z = text2num(transition)