diff --git a/code/modules/antagonists/traitor/objectives/bug_room.dm b/code/modules/antagonists/traitor/objectives/bug_room.dm index a0f327b24db..6ac99c3244c 100644 --- a/code/modules/antagonists/traitor/objectives/bug_room.dm +++ b/code/modules/antagonists/traitor/objectives/bug_room.dm @@ -8,7 +8,11 @@ /datum/traitor_objective/bug_room name = "Bug the %DEPARTMENT HEAD%'s office" - description = "Use the button below to materialize the bug within your hand, where you'll then be able to place it down in the %DEPARTMENT HEAD%'s office. If it gets destroyed before you are able to plant it, this objective will fail." + description = "Use the button below to materialize the bug within your hand, \ + where you'll then be able to place it down in the %DEPARTMENT HEAD%'s office. \ + If it gets destroyed before you are able to plant it, this objective will fail. \ + Remember, planting the bug may leave behind fibers and fingerprints - \ + be sure to clean it off with soap (or similar) to be safe!" progression_reward = list(2 MINUTES, 8 MINUTES) telecrystal_reward = list(0, 1) @@ -101,21 +105,33 @@ /obj/item/traitor_bug name = "suspicious device" - desc = "It looks dangerous" + desc = "It looks dangerous." item_flags = EXAMINE_SKIP icon = 'icons/obj/items_and_weapons.dmi' icon_state = "bug" - /// The area at which this bug can be planted at Has to be a type. + /// The area at which this bug can be planted at. Has to be a type. var/area/target_area_type /// The object on which this bug can be planted on. Has to be a type. var/obj/target_object_type - /// The object this bug is currently planted on + /// The object this bug is currently planted on. var/obj/planted_on - + /// The time it takes to place this bug. var/deploy_time = 10 SECONDS +/obj/item/traitor_bug/examine(mob/user) + . = ..() + if(planted_on) + return + + if(user.mind?.has_antag_datum(/datum/antagonist/traitor)) + if(target_area_type) + . += span_notice("This device must be placed by using it in hand inside the [initial(target_area_type.name)].") + else if(target_object_type) + . += span_notice("This device must be placed by clicking on the [initial(target_object_type.name)] with it.") + . += span_notice("Remember, you may leave behind fingerprints or fibers on the device. Use soap or similar to scrub it clean to be safe!") + /obj/item/traitor_bug/interact(mob/user) . = ..() if(!target_area_type) @@ -129,7 +145,9 @@ return if(!do_after(user, deploy_time, src)) return - new /obj/structure/traitor_bug(location) + var/obj/structure/traitor_bug/new_bug = new(location) + transfer_fingerprints_to(new_bug) + transfer_fibers_to(new_bug) SEND_SIGNAL(src, COMSIG_TRAITOR_BUG_PLANTED_GROUND, location) qdel(src) @@ -172,7 +190,7 @@ /obj/structure/traitor_bug name = "suspicious device" - desc = "It looks dangerous. Best you leave this alone" + desc = "It looks dangerous. Best you leave this alone." anchored = TRUE diff --git a/code/modules/detectivework/detective_work.dm b/code/modules/detectivework/detective_work.dm index d8e1daeae50..036ed2c4c47 100644 --- a/code/modules/detectivework/detective_work.dm +++ b/code/modules/detectivework/detective_work.dm @@ -99,7 +99,16 @@ update_inv_gloves() //handles bloody hands overlays and updating return TRUE -/atom/proc/transfer_fingerprints_to(atom/A) - A.add_fingerprint_list(return_fingerprints()) - A.add_hiddenprint_list(return_hiddenprints()) - A.fingerprintslast = fingerprintslast +/* + * Transfer all the fingerprints and hidden prints from [src] to [transfer_to]. + */ +/atom/proc/transfer_fingerprints_to(atom/transfer_to) + transfer_to.add_fingerprint_list(return_fingerprints()) + transfer_to.add_hiddenprint_list(return_hiddenprints()) + transfer_to.fingerprintslast = fingerprintslast + +/* + * Transfer all the fibers from [src] to [transfer_to]. + */ +/atom/proc/transfer_fibers_to(atom/transfer_to) + transfer_to.add_fiber_list(return_fibers())