diff --git a/code/game/gamemodes/steal_items.dm b/code/game/gamemodes/steal_items.dm index 62dfcc37eaa..77e775939fc 100644 --- a/code/game/gamemodes/steal_items.dm +++ b/code/game/gamemodes/steal_items.dm @@ -145,8 +145,8 @@ /datum/theft_objective/supermatter_sliver name = "a supermatter sliver" typepath = /obj/item/nuke_core/supermatter_sliver - protected_jobs = list("Chief Engineer", "Engineer", "Atmospheric Technician") //Unlike other steal objectives, all jobs in the department have easy access, and would not be noticed at all stealing this - location_override = "Engineering. You can use the box and instructions provided to harvest the sliver" + protected_jobs = list("Chief Engineer", "Station Engineer", "Life Support Specialist") //Unlike other steal objectives, all jobs in the department have easy access, and would not be noticed at all stealing this + location_override = "Engineering. You can use the box and instructions provided to harvest the sliver." special_equipment = /obj/item/storage/box/syndie_kit/supermatter job_possession = FALSE //The CE / engineers / atmos techs do not carry around supermater slivers. diff --git a/code/game/objects/items/theft_items.dm b/code/game/objects/items/theft_items.dm index 0a32cf90df7..4b8d9e4b51a 100644 --- a/code/game/objects/items/theft_items.dm +++ b/code/game/objects/items/theft_items.dm @@ -12,7 +12,6 @@ item_state = "plutoniumcore" resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF flags_2 = RAD_NO_CONTAMINATE_2 //Don't have the item itself become irradiated when it makes radiation. - var/pulse = 0 var/cooldown = 0 var/pulseicon = "plutonium_core_pulse" @@ -49,14 +48,42 @@ icon = 'icons/obj/nuke_tools.dmi' icon_state = "core_container_empty" item_state = "metal" + resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF //Don't want people trying to break it open with acid, then destroying the core. var/obj/item/nuke_core/plutonium/core + var/dented = FALSE + var/cracked = FALSE /obj/item/nuke_core_container/Destroy() QDEL_NULL(core) return ..() +/obj/item/nuke_core_container/ex_act(severity) + switch(severity) + if(EXPLODE_DEVASTATE) + if(!cracked) + crack_open() + if(EXPLODE_HEAVY) + if(!dented) + dented = TRUE + +/obj/item/nuke_core_container/examine(mob/user) + . = ..() + if(cracked) // Cracked open. + . += "It is broken, and can no longer store objects safely." + else if(dented) // Not cracked, but dented. + . += "[src] looks dented. Perhaps a bigger explosion may break it." + else // Not cracked or dented. + . += "Fine print on the box reads \"Cybersun Industries secure container, guaranteed thermite proof, assistant proof, and explosive resistant.\"" + +/obj/item/nuke_core_container/attack_hand(mob/user) + if(cracked && core) + unload(user) + else + return ..() + + /obj/item/nuke_core_container/proc/load(obj/item/nuke_core/plutonium/new_core, mob/user) - if(core || !istype(new_core)) + if(core || !istype(new_core) || cracked) return new_core.forceMove(src) core = new_core @@ -64,6 +91,12 @@ to_chat(user, "Container is sealing...") addtimer(CALLBACK(src, .proc/seal), 10 SECONDS) +/obj/item/nuke_core_container/proc/unload(mob/user) + core.add_fingerprint(user) + user.put_in_active_hand(core) + core = null + icon_state = "core_container_cracked_empty" + /obj/item/nuke_core_container/proc/seal() if(!QDELETED(core)) STOP_PROCESSING(SSobj, core) @@ -73,7 +106,7 @@ to_chat(loc, "[src] is permanently sealed, [core]'s radiation is contained.") /obj/item/nuke_core_container/attackby(obj/item/nuke_core/plutonium/core, mob/user) - if(!istype(core)) + if(!istype(core) || cracked) return ..() if(!user.drop_item()) @@ -82,9 +115,20 @@ else load(core, user) +/obj/item/nuke_core_container/proc/crack_open() + visible_message("[src] bursts open!") + if(core) + START_PROCESSING(SSobj, core) + icon_state = "core_container_cracked_loaded" + else + icon_state = "core_container_cracked_empty" + name = "broken nuke core container" + cracked = TRUE + /obj/item/paper/guides/antag/nuke_instructions info = "How to break into a Nanotrasen nuclear device and remove its plutonium core:
\