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."