From 279071ab916613edec11c5a4d9caae5997095df2 Mon Sep 17 00:00:00 2001 From: Arthri <41360489+Arthri@users.noreply.github.com> Date: Fri, 3 Nov 2023 19:08:38 +0800 Subject: [PATCH] Make Syringe Guns shoot Syringes in Inject mode (#23088) * Automatically set launched syringes to inject * Implement for normal syringe guns too * Put mech syringe back to draw mode if emptied when shot * Use syringe's defines * Move defines * update paradise.dme * Add comment for defines * do not set RSG syringes to inject --------- Co-authored-by: Arthri <41360489+a@users.noreply.github.com> --- code/__DEFINES/reagents_defines.dm | 5 +++++ code/game/mecha/equipment/tools/medical_tools.dm | 3 +++ code/modules/projectiles/guns/syringe_gun.dm | 2 ++ code/modules/reagents/reagent_containers/syringes.dm | 4 ---- 4 files changed, 10 insertions(+), 4 deletions(-) diff --git a/code/__DEFINES/reagents_defines.dm b/code/__DEFINES/reagents_defines.dm index eade54a1f05..14f796da040 100644 --- a/code/__DEFINES/reagents_defines.dm +++ b/code/__DEFINES/reagents_defines.dm @@ -24,3 +24,8 @@ #define UNHUSK_DAMAGE_THRESHOLD 50 ///Amount of synthflesh required to unhusk someone #define SYNTHFLESH_UNHUSK_AMOUNT 100 + +///Syringe mob interaction modes +#define SYRINGE_DRAW 0 +#define SYRINGE_INJECT 1 +#define SYRINGE_BROKEN 2 diff --git a/code/game/mecha/equipment/tools/medical_tools.dm b/code/game/mecha/equipment/tools/medical_tools.dm index faa26088e4c..d7d7597f579 100644 --- a/code/game/mecha/equipment/tools/medical_tools.dm +++ b/code/game/mecha/equipment/tools/medical_tools.dm @@ -299,6 +299,7 @@ var/turf/trg = get_turf(target) var/obj/item/reagent_containers/syringe/mechsyringe = syringes[1] mechsyringe.forceMove(get_turf(chassis)) + mechsyringe.mode = SYRINGE_INJECT reagents.trans_to(mechsyringe, min(mechsyringe.volume, reagents.total_volume)) syringes -= mechsyringe mechsyringe.icon = 'icons/obj/chemical.dmi' @@ -331,6 +332,8 @@ add_attack_logs(originaloccupant, M, "Shot with [src] containing [R], transferred [mechsyringe.reagents.total_volume] units") mechsyringe.reagents.reaction(M, REAGENT_INGEST) mechsyringe.reagents.trans_to(M, mechsyringe.reagents.total_volume) + if(!mechsyringe.reagents.total_volume) + mechsyringe.mode = SYRINGE_DRAW M.take_organ_damage(2) break else if(mechsyringe.loc == trg) diff --git a/code/modules/projectiles/guns/syringe_gun.dm b/code/modules/projectiles/guns/syringe_gun.dm index 8078188f5ec..45b30ddf7b3 100644 --- a/code/modules/projectiles/guns/syringe_gun.dm +++ b/code/modules/projectiles/guns/syringe_gun.dm @@ -28,6 +28,7 @@ chambered.BB = new S.projectile_type(src) S.reagents.trans_to(chambered.BB, S.reagents.total_volume) + S.mode = SYRINGE_INJECT chambered.BB.name = S.name syringes.Remove(S) @@ -55,6 +56,7 @@ // Remove the chambered syringe only if there's no syringe left S = new() chambered.BB.reagents.trans_to(S, chambered.BB.reagents.total_volume) + S.mode = SYRINGE_INJECT qdel(chambered.BB) chambered.BB = null process_chamber() diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm index 91a52972082..e87dec3eb58 100644 --- a/code/modules/reagents/reagent_containers/syringes.dm +++ b/code/modules/reagents/reagent_containers/syringes.dm @@ -1,7 +1,3 @@ -#define SYRINGE_DRAW 0 -#define SYRINGE_INJECT 1 -#define SYRINGE_BROKEN 2 - /obj/item/reagent_containers/syringe name = "syringe" desc = "A syringe."