From 7c84514c615aec82fd05915aaeeabe113fc75aa1 Mon Sep 17 00:00:00 2001 From: Casey Date: Sat, 26 Nov 2022 17:41:09 -0500 Subject: [PATCH] Merge pull request #14137 from KillianKirilenko/kk-hacktool Simplified Hacktool --- code/game/objects/items/devices/hacktool.dm | 29 ++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/code/game/objects/items/devices/hacktool.dm b/code/game/objects/items/devices/hacktool.dm index 5d6b46c6a7..17615a0a9d 100644 --- a/code/game/objects/items/devices/hacktool.dm +++ b/code/game/objects/items/devices/hacktool.dm @@ -1,11 +1,17 @@ /obj/item/device/multitool/hacktool var/is_hacking = 0 var/max_known_targets + var/hackspeed = 1 + var/full_override = FALSE //can we override door bolts too? defaults to false for event/safety reasons var/in_hack_mode = 0 var/list/known_targets var/list/supported_types var/datum/tgui_state/default/must_hack/hack_state + +/obj/item/device/multitool/hacktool/override + hackspeed = 0.75 + full_override = TRUE /obj/item/device/multitool/hacktool/New() ..() @@ -39,7 +45,23 @@ return 0 // Note, if you ever want to expand supported_types, you must manually add the custom state argument to their tgui_interact - A.tgui_interact(user, custom_state = hack_state) + // DISABLED: too fancy, too high-effort // A.tgui_interact(user, custom_state = hack_state) + // Just brute-force it + if(istype(A, /obj/machinery/door/airlock)) + var/obj/machinery/door/airlock/D = A + if(!D.arePowerSystemsOn()) + to_chat(user, "No response from remote, check door power.") + else if(D.locked == TRUE && full_override == FALSE) + to_chat(user, "Unable to override door bolts!") + else if(D.locked == TRUE && full_override == TRUE && D.arePowerSystemsOn()) + to_chat(user, "Door bolts overridden.") + D.unlock() + else if(D.density == TRUE && D.locked == FALSE) + to_chat(user, "Overriding access. Door opening.") + D.open() + else if(D.density == FALSE && D.locked == FALSE) + to_chat(user, "Overriding access. Door closing.") + D.close() return 1 /obj/item/device/multitool/hacktool/proc/attempt_hack(var/mob/user, var/atom/target) @@ -56,8 +78,9 @@ to_chat(user, "You begin hacking \the [target]...") is_hacking = 1 - // On average hackin takes ~30 seconds. Fairly small random span to avoid people simply aborting and trying again - var/hack_result = do_after(user, (20 SECONDS + rand(0, 10 SECONDS) + rand(0, 10 SECONDS))) + // On average hackin takes ~15 seconds. Fairly small random span to avoid people simply aborting and trying again + // Reduced hack duration to compensate for the reduced functionality + var/hack_result = do_after(user, ((10 SECONDS + rand(0, 10 SECONDS))*hackspeed)) is_hacking = 0 if(hack_result && in_hack_mode)