//Items for nuke theft, supermatter theft traitor objective // STEALING THE NUKE //the nuke core - objective item /obj/item/nuke_core name = "plutonium core" desc = "Extremely radioactive. Wear goggles." icon = 'icons/obj/nuke_tools.dmi' icon_state = "plutonium_core" item_state = "plutoniumcore" resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF var/pulse = 0 var/cooldown = 0 var/pulseicon = "plutonium_core_pulse" /obj/item/nuke_core/Initialize() . = ..() START_PROCESSING(SSobj, src) /obj/item/nuke_core/Destroy() STOP_PROCESSING(SSobj, src) return ..() /obj/item/nuke_core/attackby(obj/item/nuke_core_container/container, mob/user) if(istype(container)) container.load(src, user) else return ..() /obj/item/nuke_core/process() if(cooldown < world.time - 60) cooldown = world.time flick(pulseicon, src) radiation_pulse(get_turf(src), 1, 4, 40, 1) //nuke core box, for carrying the core /obj/item/nuke_core_container name = "nuke core container" desc = "Solid container for radioactive objects." icon = 'icons/obj/nuke_tools.dmi' icon_state = "core_container_empty" item_state = "tile" var/obj/item/nuke_core/core /obj/item/nuke_core_container/Destroy() QDEL_NULL(core) return ..() /obj/item/nuke_core_container/proc/load(obj/item/nuke_core/ncore, mob/user) if(core || !istype(ncore)) return FALSE ncore.forceMove(src) core = ncore icon_state = "core_container_loaded" to_chat(user, "Container is sealing...") addtimer(CALLBACK(src, .proc/seal), 50) return TRUE /obj/item/nuke_core_container/proc/seal() if(istype(core)) STOP_PROCESSING(SSobj, core) icon_state = "core_container_sealed" playsound(src, 'sound/items/deconstruct.ogg', 60, 1) if(ismob(loc)) to_chat(loc, "[src] is permanently sealed, [core]'s radiation is contained.") /obj/item/nuke_core_container/attackby(obj/item/nuke_core/core, mob/user) if(istype(core)) if(!user.temporarilyRemoveItemFromInventory(core)) to_chat(user, "The [core] is stuck to your hand!") return else load(core, user) else return ..() //snowflake screwdriver, works as a key to start nuke theft, traitor only /obj/item/weapon/screwdriver/nuke name = "screwdriver" desc = "A screwdriver with an ultra thin tip." icon = 'icons/obj/nuke_tools.dmi' icon_state = "screwdriver_nuke" toolspeed = 0.5 /obj/item/weapon/paper/nuke_instructions info = "How to break into a Nanotrasen self-destruct terminal and remove its plutonium core:
\ " // STEALING SUPERMATTER /obj/item/weapon/paper/supermatter_sliver_instructions info = "How to safely extract a supermatter sliver:
\ " /obj/item/nuke_core/supermatter_sliver name = "supermatter sliver" desc = "A tiny, highly volatile sliver of a supermatter crystal. Do not handle without protection!" icon_state = "supermatter_sliver" item_state = "supermattersliver" pulseicon = "supermatter_sliver_pulse" /obj/item/nuke_core/supermatter_sliver/attack_tk() // no TK dusting memes return FALSE /obj/item/nuke_core/supermatter_sliver/can_be_pulled(user) // no drag memes return FALSE /obj/item/nuke_core/supermatter_sliver/attackby(obj/item/W, mob/living/user, params) if(istype(W, /obj/item/weapon/hemostat/supermatter)) var/obj/item/weapon/hemostat/supermatter/tongs = W if (tongs.sliver) to_chat(user, "\The [tongs] is already holding a supermatter sliver!") return FALSE forceMove(tongs) tongs.sliver = src tongs.icon_state = "supermatter_tongs_loaded" to_chat(user, "You carefully pick up [src] with [tongs].") else if(istype(W, /obj/item/weapon/scalpel/supermatter) || istype(W, /obj/item/nuke_core_container/supermatter/)) // we don't want it to dust return else to_chat(user, "As it touches \the [src], both \the [src] and \the [W] burst into dust!") radiation_pulse(get_turf(user), 1, 2, 10, 1) playsound(src, 'sound/effects/supermatter.ogg', 50, 1) qdel(W) qdel(src) /obj/item/nuke_core/supermatter_sliver/pickup(mob/living/user) ..() if(!iscarbon(user)) return FALSE var/mob/ded = user to_chat(user, "You reach for the supermatter sliver with your hands. That was dumb.") radiation_pulse(get_turf(user), 2, 4, 50, 1) playsound(get_turf(user), 'sound/effects/supermatter.ogg', 50, 1) ded.dust() /obj/item/nuke_core_container/supermatter name = "supermatter bin" desc = "A tiny receptacle that releases an inert freon mix upon sealing, allowing a sliver of a supermatter crystal to be safely stored.." var/obj/item/nuke_core/supermatter_sliver/sliver /obj/item/nuke_core_container/supermatter/Destroy() QDEL_NULL(sliver) return ..() /obj/item/nuke_core_container/supermatter/load(obj/item/weapon/hemostat/supermatter/T, mob/user) if(!istype(T) || !T.sliver) return FALSE T.sliver.forceMove(src) sliver = T.sliver T.sliver = null icon_state = "core_container_loaded" to_chat(user, "Container is sealing...") addtimer(CALLBACK(src, .proc/seal), 50) return TRUE /obj/item/nuke_core_container/supermatter/seal() if(istype(sliver)) STOP_PROCESSING(SSobj, sliver) icon_state = "core_container_sealed" playsound(src, 'sound/items/Deconstruct.ogg', 60, 1) if(ismob(loc)) to_chat(loc, "[src] is permanently sealed, [sliver] is safely contained.") /obj/item/nuke_core_container/supermatter/attackby(obj/item/weapon/hemostat/supermatter/tongs, mob/user) if(istype(tongs)) if(!user.temporarilyRemoveItemFromInventory(tongs)) to_chat(user, "\The [tongs] is stuck to your hand!") else load(sliver, user) else return ..() /obj/item/weapon/scalpel/supermatter name = "supermatter scalpel" desc = "A scalpel with a tip of condensed freon gas, searingly cold to the touch, that can safely shave a sliver off a supermatter crystal." icon = 'icons/obj/nuke_tools.dmi' icon_state = "supermatter_scalpel" toolspeed = 0.5 damtype = "fire" usesound = 'sound/weapons/bladeslice.ogg' /obj/item/weapon/hemostat/supermatter name = "supermatter extraction tongs" desc = "A pair of tongs made from condensed freon gas, searingly cold to the touch, that can safely grip a supermatter sliver." icon = 'icons/obj/nuke_tools.dmi' icon_state = "supermatter_tongs" toolspeed = 0.75 damtype = "fire" var/obj/item/nuke_core/supermatter_sliver/sliver /obj/item/weapon/hemostat/supermatter/Destroy() QDEL_NULL(sliver) return ..() /obj/item/weapon/hemostat/supermatter/afterattack(atom/O, mob/user, proximity) if(!sliver) return if(ismovableatom(O)) Consume(O) to_chat(usr, "\The [sliver] is dusted along with \the [O]!") QDEL_NULL(sliver) /obj/item/weapon/hemostat/supermatter/throw_impact(atom/hit_atom) // no instakill supermatter javelins if(sliver) sliver.forceMove(loc) to_chat(usr, "\The [sliver] falls out of \the [src] as you throw them.") sliver = null ..() /obj/item/weapon/hemostat/supermatter/proc/Consume(atom/movable/AM, mob/user) if(ismob(AM)) var/mob/victim = AM victim.dust() message_admins("[src] has consumed [key_name_admin(victim)] [ADMIN_JMP(src)].") investigate_log("has consumed [key_name(victim)].", "supermatter") else investigate_log("has consumed [AM].", "supermatter") qdel(AM) user.visible_message("As [user] touches \the [AM] with \a [src], silence fills the room...",\ "You touch \the [AM] with \the [src], and everything suddenly goes silent.\n\The [AM] flashes into dust, and soon as you can register this, you do as well.",\ "Everything suddenly goes silent.") radiation_pulse(get_turf(user), 2, 4, 50, 1) playsound(src, 'sound/effects/supermatter.ogg', 50, 1) user.dust() icon_state = "supermatter_tongs" QDEL_NULL(sliver)