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 1/2] 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)
From b27f3a148f72db526c581a5784e4c2b98382a8e2 Mon Sep 17 00:00:00 2001
From: Killian <49700375+KillianKirilenko@users.noreply.github.com>
Date: Fri, 25 Nov 2022 03:27:39 +0000
Subject: [PATCH 2/2] Update hacktool.dm
---
code/game/objects/items/devices/hacktool.dm | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/code/game/objects/items/devices/hacktool.dm b/code/game/objects/items/devices/hacktool.dm
index 6c124485602..17615a0a9d1 100644
--- a/code/game/objects/items/devices/hacktool.dm
+++ b/code/game/objects/items/devices/hacktool.dm
@@ -46,10 +46,12 @@
// Note, if you ever want to expand supported_types, you must manually add the custom state argument to their tgui_interact
// DISABLED: too fancy, too high-effort // A.tgui_interact(user, custom_state = hack_state)
- // Just brute-force it open
+ // Just brute-force it
if(istype(A, /obj/machinery/door/airlock))
var/obj/machinery/door/airlock/D = A
- if(D.locked == TRUE && full_override == FALSE)
+ 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.")