Buffs the SC/FISHER Saboteur Handgun. (#81553)

## About The Pull Request
The saboteur gun will now silence pAIs, toggle off radio broadcasting
(won't auto-relay nearby speech), disable turrets, chill out secbots a
little, and turn off APCs like power outages do.
The disrupt duration has also been buffed from 10/20 to 15/25 for ranged
and point-blank respectively.
Removed a conspicious chat message from an otherwise inconspicious gun.
Brought the code up to date.

## Why It's Good For The Game
The concept is cool, alas it's also undermined by how much of a joke
it's right now, and the game has plenty already.
The amount of interactions it has with things is underwhelming, so you
could barely consider it a stealth tool. The duration is also quite
scarce, I pointed that out in the original PR too.

Basically, I want to make the item cooler.

## Changelog

🆑
balance: Buffed the duration of the SC/FISHER Saboteur Handgun's
disruption effects. It's also stealthier and it won't conspiciously
alert living mobs hit by it.
add: Added saboteur interactions with radios, pAIs, turrets, secbots and
APCs.
/🆑

---------

Co-authored-by: Jacquerel <hnevard@gmail.com>
This commit is contained in:
Ghom
2024-03-13 22:25:29 +00:00
committed by GitHub
co-authored by Jacquerel
parent 0981acb23d
commit 9f4a8dfc50
21 changed files with 181 additions and 85 deletions
@@ -377,6 +377,12 @@
/// Maximum range we can set.
var/max_range = 5
/obj/item/mod/module/flashlight/on_suit_activation()
RegisterSignal(mod.wearer, COMSIG_HIT_BY_SABOTEUR, PROC_REF(on_saboteur))
/obj/item/mod/module/flashlight/on_suit_deactivation(deleting = FALSE)
UnregisterSignal(mod.wearer, COMSIG_HIT_BY_SABOTEUR)
/obj/item/mod/module/flashlight/on_activation()
. = ..()
if(!.)
@@ -392,6 +398,12 @@
set_light_flags(light_flags & ~LIGHT_ATTACHED)
set_light_on(active)
/obj/item/mod/module/flashlight/proc/on_saboteur(datum/source, disrupt_duration)
SIGNAL_HANDLER
if(active)
on_deactivation()
return COMSIG_SABOTEUR_SUCCESS
/obj/item/mod/module/flashlight/on_process(seconds_per_tick)
active_power_cost = base_power * light_range
return ..()