From 0b1cb9db6db72025cc7489aa3d0922840a3b503a Mon Sep 17 00:00:00 2001 From: Seris02 Date: Sat, 8 Feb 2020 15:25:11 +0800 Subject: [PATCH] timer'd --- code/game/objects/items/implants/implant_hijack.dm | 7 ++++++- code/modules/power/apc.dm | 7 +++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/code/game/objects/items/implants/implant_hijack.dm b/code/game/objects/items/implants/implant_hijack.dm index 8f96e5e619..8a08232859 100644 --- a/code/game/objects/items/implants/implant_hijack.dm +++ b/code/game/objects/items/implants/implant_hijack.dm @@ -10,6 +10,7 @@ var/eye_color var/stealthmode = FALSE var/stealthcooldown = 0 + var/hijacking = FALSE /obj/item/implant/hijack/activate() . = ..() @@ -84,14 +85,17 @@ return TRUE /obj/item/implant/hijack/proc/hijack_remotely(obj/machinery/power/apc/apc) - if (apc.hijacker) + if (apc.hijacker || hijacking) return FALSE //can't remotely hijack an already hijacked APC + hijacking = TRUE to_chat(imp_in, "Establishing remote connection with APC.") if (!do_after(imp_in, 4 SECONDS,target=apc)) to_chat(imp_in, "Aborting.") + hijacking = FALSE return TRUE if (LAZYLEN(imp_in.siliconaccessareas) >= HIJACK_APC_MAX_AMOUNT) to_chat(src,"You are connected to too many APCs! Too many more will fry your brain.") + hijacking = FALSE return TRUE imp_in.light_power = 2 imp_in.light_range = 2 @@ -109,6 +113,7 @@ toggle_eyes() else to_chat(imp_in, "Aborting.") + hijacking = FALSE imp_in.light_power = 0 imp_in.light_range = 0 imp_in.light_color = COLOR_YELLOW diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index 6ad2cf5ec9..b15b701272 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -1081,26 +1081,33 @@ if (!istype(L)) return if (hijacker && hijacker != L) + var/obj/item/implant/hijack/H = L.getImplant(/obj/item/implant/hijack) to_chat(L, "Someone already has control of this APC. Beginning counter-hijack.") + H.hijacking = TRUE if (do_after(L,20 SECONDS,target=src)) hijacker.toggleSiliconAccessArea(area) if (L.toggleSiliconAccessArea(area)) hijacker = L update_icon() set_hijacked_lighting() + H.hijacking = FALSE return else to_chat(L, "Aborting.") + H.hijacking = FALSE return to_chat(L, "Beginning hijack of APC.") var/obj/item/implant/hijack/H = L.getImplant(/obj/item/implant/hijack) + H.hijacking = TRUE if (do_after(L,H.stealthmode ? 12 SECONDS : 5 SECONDS,target=src)) if (L.toggleSiliconAccessArea(area)) hijacker = L update_icon() set_hijacked_lighting() + H.hijacking = FALSE else to_chat(L, "Aborting.") + H.hijacking = FALSE return /obj/machinery/power/apc/proc/malfhack(mob/living/silicon/ai/malf)