diff --git a/code/game/objects/items/implants/implant_hijack.dm b/code/game/objects/items/implants/implant_hijack.dm
index ddb5b2c566..0601c4a4f9 100644
--- a/code/game/objects/items/implants/implant_hijack.dm
+++ b/code/game/objects/items/implants/implant_hijack.dm
@@ -8,6 +8,8 @@
var/toggled = FALSE
icon_state = "hijack"
var/eye_color
+ var/stealthmode = FALSE
+ var/stealthcooldown = 0
/obj/item/implant/hijack/activate()
. = ..()
@@ -16,20 +18,26 @@
imp_in.click_intercept = src
imp_in.siliconaccesstoggle = TRUE
to_chat(imp_in,"You turn on [src]'s silicon interactions.")
- if (ishuman(imp_in))
- var/mob/living/carbon/human/H = imp_in
- H.eye_color = "ff0"
- H.dna.update_ui_block(DNA_EYE_COLOR_BLOCK)
- H.update_body()
+ if (ishuman(imp_in) && !stealthmode)
+ toggle_eyes(TRUE)
else
imp_in.click_intercept = null
imp_in.siliconaccesstoggle = FALSE
to_chat(imp_in,"You turn off [src]'s silicon interactions.")
- if (ishuman(imp_in))
- var/mob/living/carbon/human/H = imp_in
- H.eye_color = eye_color
- H.dna.update_ui_block(DNA_EYE_COLOR_BLOCK)
- H.update_body()
+ if (ishuman(imp_in) && !stealthmode)
+ toggle_eyes(FALSE)
+
+/obj/item/implant/hijack/proc/toggle_eyes(on)
+ if (!on)
+ var/mob/living/carbon/human/H = imp_in
+ H.eye_color = eye_color
+ H.dna.update_ui_block(DNA_EYE_COLOR_BLOCK)
+ H.update_body()
+ else
+ var/mob/living/carbon/human/H = imp_in
+ H.eye_color = "ff0"
+ H.dna.update_ui_block(DNA_EYE_COLOR_BLOCK)
+ H.update_body()
/obj/item/implant/hijack/implant(mob/living/target, mob/user, silent = FALSE)
if(..())
@@ -50,6 +58,8 @@
/obj/item/implant/hijack/proc/InterceptClickOn(mob/living/user,params,atom/object)
if (user.get_active_held_item() || isitem(object) || !toggled || user.incapacitated())
return
+ if (stealthmode == FALSE && istype(object,/obj/machinery/power/apc))
+ hijack_remotely()
var/area/a = get_area(object)
if (!hasSiliconAccessInArea(imp_in,a))
return
@@ -69,3 +79,14 @@
return TRUE
object.attack_ai(imp_in)
return TRUE
+
+/obj/item/implant/hijack/proc/hijack_remotely(/obj/machinery/power/apc/apc)
+ if (apc.hijacker)
+ return //can't remotely hijack an already hijacked APC
+ if (do_after(imp_in,25 SECONDS,target=apc))
+ apc.hijacker = imp_in
+ imp_in.toggleSiliconAccessArea(apc.area)
+ apc.update_icon()
+ cooldown = world.time + 2 MINUTES
+ toggle_eyes(TRUE)
+ stealthmode = FALSE
\ No newline at end of file