From c4bab6ff137d462e8b7adb603f4a9f3f3f51db47 Mon Sep 17 00:00:00 2001
From: Qwertytoforty <52090703+Qwertytoforty@users.noreply.github.com>
Date: Thu, 19 Jan 2023 15:08:01 -0500
Subject: [PATCH] Plasma pistol no longer requires the user stand still while
overloading it (#20146)
* Plasma pistol no longer requires the user stand still while charging it
* eh keep it 2.5 quite low dps
* Update code/modules/projectiles/guns/energy/special.dm
Co-authored-by: Ryan <80364400+Sirryan2002@users.noreply.github.com>
Co-authored-by: Ryan <80364400+Sirryan2002@users.noreply.github.com>
---
.../projectiles/guns/energy/special.dm | 24 +++++++++++++++----
1 file changed, 19 insertions(+), 5 deletions(-)
diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm
index e433fae4999..ff8234bb1d6 100644
--- a/code/modules/projectiles/guns/energy/special.dm
+++ b/code/modules/projectiles/guns/energy/special.dm
@@ -324,6 +324,7 @@
var/overloaded = FALSE
var/warned = FALSE
var/charging = FALSE
+ var/charge_failure = FALSE
var/mob/living/carbon/holder = null
/obj/item/gun/energy/plasma_pistol/Initialize(mapload)
@@ -354,19 +355,29 @@
to_chat(user, "[src] does not have enough charge to be overloaded.")
return
if(charging)
+ to_chat(user, "[src] is already charging!")
return
to_chat(user, "You begin to overload [src].")
charging = TRUE
- if(do_after(user, 2.5 SECONDS, target = src))
- select_fire(user)
+ charge_failure = FALSE
+ addtimer(CALLBACK(src, PROC_REF(overload)), 2.5 SECONDS)
+
+/obj/item/gun/energy/plasma_pistol/proc/overload()
+ if(ishuman(loc) && !charge_failure)
+ var/mob/living/carbon/C = loc
+ select_fire(C)
overloaded = TRUE
- cell.charge -= 125
- playsound(loc, 'sound/machines/terminal_prompt_confirm.ogg', 75, 1)
+ cell.use(125)
+ playsound(C.loc, 'sound/machines/terminal_prompt_confirm.ogg', 75, 1)
atom_say("Overloading successful.")
set_light(3) //extra visual effect to make it more noticable to user and victims alike
- holder = user
+ holder = C
RegisterSignal(holder, COMSIG_CARBON_SWAP_HANDS, PROC_REF(discharge))
+ else
+ atom_say("Overloading failure.")
+ playsound(loc, 'sound/machines/buzz-sigh.ogg', 75, 1)
charging = FALSE
+ charge_failure = FALSE
/obj/item/gun/energy/plasma_pistol/proc/reset_overloaded()
select_fire()
@@ -390,16 +401,19 @@
/obj/item/gun/energy/plasma_pistol/emp_act(severity)
..()
+ charge_failure = TRUE
if(prob(100 / severity) && overloaded)
discharge()
/obj/item/gun/energy/plasma_pistol/dropped(mob/user)
. = ..()
+ charge_failure = TRUE
if(overloaded)
discharge()
/obj/item/gun/energy/plasma_pistol/equipped(mob/user, slot, initial)
. = ..()
+ charge_failure = TRUE
if(overloaded)
discharge()