//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:
\
\
- Use a screwdriver with a very thin tip (provided) to unscrew the terminal's front panel
\
- Dislodge and remove the front panel with a crowbar
\
- Cut the inner metal plate with a welding tool
\
- Pry off the inner plate with a crowbar to expose the radioactive core
\
- Use the core container to remove the plutonium core; the container will take some time to seal
\
- ???
\
"
// STEALING SUPERMATTER
/obj/item/weapon/paper/supermatter_sliver_instructions
info = "How to safely extract a supermatter sliver:
\
\
- Approach an active supermatter crystal with proper protective gear. DO NOT MAKE PHYSICAL CONTACT.
\
- Use a supermatter scalpel (provided) to slice off a sliver of the crystal.
\
- Use supermatter extraction tongs (also provided) to safely remove the sliver.
\
- Physical contact of any object with the sliver will dust the object, as well as yourself.
\
- Use the tongs to place the sliver into the provided container, which will take some time to seal
\
- Get the hell out before the crystal delaminates.
\
- ???
\
"
/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)