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()