From 4aa710dba78400645582359b9b4ffd5940d1b71d Mon Sep 17 00:00:00 2001 From: Killian <49700375+KillianKirilenko@users.noreply.github.com> Date: Fri, 25 Nov 2022 03:12:52 +0000 Subject: [PATCH] simplified hacktool --- code/game/objects/items/devices/hacktool.dm | 27 ++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/code/game/objects/items/devices/hacktool.dm b/code/game/objects/items/devices/hacktool.dm index 5d6b46c6a7c..6c124485602 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,21 @@ 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 open + if(istype(A, /obj/machinery/door/airlock)) + var/obj/machinery/door/airlock/D = A + 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 +76,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)