diff --git a/code/game/gamemodes/objective_items.dm b/code/game/gamemodes/objective_items.dm index f6b0c8e24b..2c19641ae0 100644 --- a/code/game/gamemodes/objective_items.dm +++ b/code/game/gamemodes/objective_items.dm @@ -94,6 +94,11 @@ targetitem = /obj/item/documents //Any set of secret documents. Doesn't have to be NT's difficulty = 5 +/datum/objective_item/steal/blackbox + name = "the black box from the onboard blackbox recording device. Take care to wear the proper safety equipment when extracting the black box as the telecommunications array is likely to be under inhospitable conditions." + targetitem = /obj/item/blackbox + difficulty = 10 + /datum/objective_item/steal/nuke_core name = "the heavily radioactive plutonium core from the onboard self-destruct. Take care to wear the proper safety equipment when extracting the core!" targetitem = /obj/item/nuke_core diff --git a/code/game/machinery/telecomms/machines/message_server.dm b/code/game/machinery/telecomms/machines/message_server.dm index 7f8872ca74..b63467d399 100644 --- a/code/game/machinery/telecomms/machines/message_server.dm +++ b/code/game/machinery/telecomms/machines/message_server.dm @@ -5,16 +5,73 @@ require the message server. */ -// A decorational representation of SSblackbox, usually placed alongside the message server. +// A decorational representation of SSblackbox, usually placed alongside the message server. Also contains a traitor theft item. /obj/machinery/blackbox_recorder icon = 'icons/obj/stationobjs.dmi' icon_state = "blackbox" - name = "Blackbox Recorder" + name = "blackbox recorder" density = TRUE use_power = IDLE_POWER_USE idle_power_usage = 10 active_power_usage = 100 armor = list("melee" = 25, "bullet" = 10, "laser" = 10, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 70) + var/obj/item/stored + +/obj/machinery/blackbox_recorder/Initialize() + . = ..() + stored = new /obj/item/blackbox(src) + +/obj/machinery/blackbox_recorder/attack_hand(mob/living/user) + . = ..() + if(stored) + to_chat(user, "You start struggling to pry the [stored] from the [src]...") + if(!do_after(user, 30 SECONDS, TRUE, src)) + to_chat(user, "Your fingers slip as you fail to pry the [stored] from the [src], clicking it right back int the slot!") + return + if(user.put_in_hands(stored)) + stored.forceMove(user.drop_location()) + stored = null + to_chat(user, "You successfully pry the [stored] from the [src], and send its overwhelming weight tumbling onto the ground! The tapes on the [src] stop spinning...") + update_icon() + return + else + to_chat(user, "It seems that the blackbox is missing...") + return + +/obj/machinery/blackbox_recorder/attackby(obj/item/I, mob/living/user, params) + . = ..() + if(istype(I, /obj/item/blackbox)) + if(HAS_TRAIT(I, TRAIT_NODROP) || !user.transferItemToLoc(I, src)) + to_chat(user, "[I] is stuck to your hand!") + return + user.visible_message("[user] clicks the [I] into the [src]!", \ + "You press [I] into [src], and it clicks into place. The tapes on the [src] begin spinning again...") + playsound(src, 'sound/machines/click.ogg', 50, TRUE) + stored = I + update_icon() + return ..() + return ..() + +/obj/machinery/blackbox_recorder/Destroy() + if(stored) + stored.forceMove(loc) + new /obj/effect/decal/cleanable/oil(loc) + return ..() + +/obj/machinery/blackbox_recorder/update_icon() + . = ..() + if(!stored) + icon_state = "blackbox_b" + else + icon_state = "blackbox" + +/obj/item/blackbox + name = "the blackbox" + desc = "A strange relic, capable of recording data on extradimensional vertices. It lives inside the blackbox recorder for safe keeping." + icon = 'icons/obj/stationobjs.dmi' + icon_state = "blackcube" + w_class = WEIGHT_CLASS_BULKY + resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF // The message server itself. @@ -140,9 +197,9 @@ ..() if(href_list["photo"]) var/mob/M = usr - - M << browse_rsc(picture.picture_image, "pda_photo.png") - + + M << browse_rsc(picture.picture_image, "pda_photo.png") + var/dat = "
" dat += "" dat += "
" diff --git a/icons/obj/stationobjs.dmi b/icons/obj/stationobjs.dmi index 67c1a59c51..16efcf262e 100644 Binary files a/icons/obj/stationobjs.dmi and b/icons/obj/stationobjs.dmi differ