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