From 5bc348c3660e9904f70ef684b2eeda3bbb1978a3 Mon Sep 17 00:00:00 2001 From: bgobandit Date: Sat, 17 Jun 2017 22:32:38 -0400 Subject: [PATCH] Adds traitor steal objective: the Supermatter Sliver. (Fixed) (#27913) * Adds a new steal objective, the Supermatter Sliver. * actually commits theft_tools honke * i actually dk what this is * fixes v1 * Supersmatter sliver requested changes * you know what I fucking hate is unchecking shit * please does this fix it fucking dme clown shit * placates the cyberboss and the lziard * fucking clownery * I forgot to fucking check it * Hope this fixes it * will my children inherit this PR * reeeeeeeeeeeeeeee * Let's put this horse to rest now.... --- code/game/atoms_movable.dm | 9 +- code/game/gamemodes/objective_items.dm | 10 + code/game/objects/items/nuke_tools.dm | 83 ------ code/game/objects/items/theft_tools.dm | 243 ++++++++++++++++++ .../items/weapons/storage/uplink_kits.dm | 9 + code/modules/mob/living/living.dm | 3 + code/modules/mob/mob.dm | 14 +- code/modules/power/supermatter/supermatter.dm | 9 +- icons/obj/nuke_tools.dmi | Bin 2480 -> 4423 bytes tgstation.dme | 2 +- tools/tgstation-server | 2 +- 11 files changed, 287 insertions(+), 97 deletions(-) delete mode 100644 code/game/objects/items/nuke_tools.dm create mode 100644 code/game/objects/items/theft_tools.dm diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index 108d70c0b91..6a61416366e 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -197,7 +197,7 @@ QDEL_NULL(proximity_monitor) QDEL_NULL(language_holder) - + unbuckle_all_mobs(force=1) . = ..() @@ -686,3 +686,10 @@ //Returns an atom's power cell, if it has one. Overload for individual items. /atom/movable/proc/get_cell() return + +/atom/movable/proc/can_be_pulled(user) + if(src == user || !isturf(loc)) + return FALSE + if(anchored || throwing) + return FALSE + return TRUE \ No newline at end of file diff --git a/code/game/gamemodes/objective_items.dm b/code/game/gamemodes/objective_items.dm index 72baa586c74..703f1a9760c 100644 --- a/code/game/gamemodes/objective_items.dm +++ b/code/game/gamemodes/objective_items.dm @@ -83,6 +83,16 @@ /datum/objective_item/steal/nuke_core/New() special_equipment += /obj/item/weapon/storage/box/syndie_kit/nuke + ..() + +/datum/objective_item/steal/supermatter + name = "a sliver of a supermatter crystal. Be sure to use the proper safety equipment when extracting the sliver!" + targetitem = /obj/item/nuke_core/supermatter_sliver + difficulty = 15 + +/datum/objective_item/steal/supermatter/New() + special_equipment += /obj/item/weapon/storage/box/syndie_kit/supermatter + ..() //Items with special checks! /datum/objective_item/steal/plasma diff --git a/code/game/objects/items/nuke_tools.dm b/code/game/objects/items/nuke_tools.dm deleted file mode 100644 index 40c7887914c..00000000000 --- a/code/game/objects/items/nuke_tools.dm +++ /dev/null @@ -1,83 +0,0 @@ -//Items for nuke theft traitor objective - -//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 - -/obj/item/nuke_core/New() - ..() - START_PROCESSING(SSobj, src) - -/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("plutonium_core_pulse", 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 = null - -/obj/item/nuke_core_container/proc/load(obj/item/nuke_core/ncore, mob/user) - if(core || !istype(ncore)) - return 0 - ncore.forceMove(src) - core = ncore - icon_state = "core_container_loaded" - to_chat(user, "Container is sealing...") - addtimer(CALLBACK(src, .proc/seal), 50) - return 1 - -/obj/item/nuke_core_container/proc/seal() - if(istype(core)) - STOP_PROCESSING(SSobj, core) - icon_state = "core_container_sealed" - playsound(loc, '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:
\ -