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