diff --git a/code/game/machinery/computer/apc_control.dm b/code/game/machinery/computer/apc_control.dm index 4d4f1cb71f0..222e8725873 100644 --- a/code/game/machinery/computer/apc_control.dm +++ b/code/game/machinery/computer/apc_control.dm @@ -105,12 +105,6 @@ authenticated = TRUE auth_id = "[ID.registered_name] ([ID.assignment])" log_activity("logged in") - if(!authenticated) //Check for emags - var/obj/item/card/emag/E = usr.get_active_held_item() - if(E && istype(E) && usr.Adjacent(src)) - to_chat(usr, "You bypass [src]'s access requirements using your emag.") - authenticated = TRUE - log_activity("logged in") //Auth ID doesn't change, hinting that it was illicit if(href_list["log_out"]) log_activity("logged out") authenticated = FALSE @@ -193,12 +187,15 @@ interact(usr) //Refresh the UI after a filter changes /obj/machinery/computer/apc_control/emag_act(mob/user) - if(obj_flags & EMAGGED) - return - user.visible_message("You emag [src], disabling precise logging and allowing you to clear logs.") - log_game("[key_name(user)] emagged [src] at [get_area(src)], disabling operator tracking.") + if(!authenticated) + to_chat(user, "You bypass [src]'s access requirements using your emag.") + authenticated = TRUE + log_activity("logged in") + else if(!(obj_flags & EMAGGED)) + user.visible_message("You emag [src], disabling precise logging and allowing you to clear logs.") + log_game("[key_name(user)] emagged [src] at [get_area(src)], disabling operator tracking.") + obj_flags |= EMAGGED playsound(src, "sparks", 50, 1) - obj_flags |= EMAGGED /obj/machinery/computer/apc_control/proc/log_activity(log_text) var/op_string = operator && !(obj_flags & EMAGGED) ? operator : "\[NULL OPERATOR\]" diff --git a/code/game/machinery/computer/arcade.dm b/code/game/machinery/computer/arcade.dm index e97046794c5..17fea3cbfb1 100644 --- a/code/game/machinery/computer/arcade.dm +++ b/code/game/machinery/computer/arcade.dm @@ -48,7 +48,8 @@ /obj/item/toy/clockwork_watch = 2, /obj/item/toy/toy_dagger = 2, /obj/item/extendohand/acme = 1, - /obj/item/hot_potato/harmless/toy = 1) + /obj/item/hot_potato/harmless/toy = 1, + /obj/item/card/emagfake = 1) light_color = LIGHT_COLOR_GREEN diff --git a/code/game/objects/items/cards_ids.dm b/code/game/objects/items/cards_ids.dm index 49d37b05f51..75f280b656c 100644 --- a/code/game/objects/items/cards_ids.dm +++ b/code/game/objects/items/cards_ids.dm @@ -78,6 +78,18 @@ return A.emag_act(user) +/obj/item/card/emagfake + desc = "It's a card with a magnetic strip attached to some circuitry." + name = "cryptographic sequencer" + icon_state = "emag" + item_state = "card-id" + lefthand_file = 'icons/mob/inhands/equipment/idcards_lefthand.dmi' + righthand_file = 'icons/mob/inhands/equipment/idcards_righthand.dmi' + +/obj/item/card/emagfake/afterattack() + . = ..() + playsound(src, 'sound/items/bikehorn.ogg', 50, 1) + /obj/item/card/id name = "identification card" desc = "A card used to provide ID and determine access across the station." diff --git a/code/game/objects/items/storage/secure.dm b/code/game/objects/items/storage/secure.dm index bc92c609353..1a0474b94d6 100644 --- a/code/game/objects/items/storage/secure.dm +++ b/code/game/objects/items/storage/secure.dm @@ -38,7 +38,7 @@ open =! open to_chat(user, "You [open ? "open" : "close"] the service panel.") return - if (istype(W, /obj/item/wirecutters) || istype(W, /obj/item/card/emag)) + if (istype(W, /obj/item/wirecutters)) to_chat(user, "[src] is protected from this sort of tampering, yet it appears the internal memory wires can still be pulsed.") if ((istype(W, /obj/item/device/multitool)) && (!l_hacking)) if(src.open == 1) diff --git a/code/modules/mining/abandoned_crates.dm b/code/modules/mining/abandoned_crates.dm index c20971fe9dd..27afc374ca7 100644 --- a/code/modules/mining/abandoned_crates.dm +++ b/code/modules/mining/abandoned_crates.dm @@ -186,10 +186,7 @@ /obj/structure/closet/crate/secure/loot/attackby(obj/item/W, mob/user) if(locked) - if(istype(W, /obj/item/card/emag)) - boom(user) - return - else if(istype(W, /obj/item/device/multitool)) + if(istype(W, /obj/item/device/multitool)) to_chat(user, "DECA-CODE LOCK REPORT:") if(attempts == 1) to_chat(user, "* Anti-Tamper Bomb will activate on next failed access attempt.") @@ -215,6 +212,10 @@ return return ..() +/obj/structure/closet/crate/secure/loot/emag_act(mob/user) + if(locked) + boom(user) + /obj/structure/closet/crate/secure/loot/togglelock(mob/user) if(locked) boom(user) diff --git a/code/modules/surgery/organs/augments_arms.dm b/code/modules/surgery/organs/augments_arms.dm index 8b48989c3f1..51449976cce 100644 --- a/code/modules/surgery/organs/augments_arms.dm +++ b/code/modules/surgery/organs/augments_arms.dm @@ -51,16 +51,11 @@ SetSlotFromZone() to_chat(user, "You modify [src] to be installed on the [zone == "r_arm" ? "right" : "left"] arm.") update_icon() - else if(istype(W, /obj/item/card/emag)) - emag_act() /obj/item/organ/cyberimp/arm/Remove(mob/living/carbon/M, special = 0) Retract() ..() -/obj/item/organ/cyberimp/arm/emag_act() - return 0 - /obj/item/organ/cyberimp/arm/emp_act(severity) if(prob(15/severity) && owner) to_chat(owner, "[src] is hit by EMP!") @@ -126,10 +121,6 @@ to_chat(owner, "The implant doesn't respond. It seems to be broken...") return - // You can emag the arm-mounted implant by activating it while holding emag in it's hand. - if(istype(owner.get_active_held_item(), /obj/item/card/emag) && emag_act()) - return - if(!holder || (holder in src)) holder = null if(contents.len == 1) @@ -176,7 +167,6 @@ /obj/item/organ/cyberimp/arm/gun/taser/l zone = "l_arm" - /obj/item/organ/cyberimp/arm/toolset name = "integrated toolset implant" desc = "A stripped-down version of the engineering cyborg toolset, designed to be installed on subject's arm. Contains all necessary tools."