diff --git a/code/modules/projectiles/guns/syringe_gun.dm b/code/modules/projectiles/guns/syringe_gun.dm index 04cf2d248d3..72c60277dec 100644 --- a/code/modules/projectiles/guns/syringe_gun.dm +++ b/code/modules/projectiles/guns/syringe_gun.dm @@ -18,62 +18,61 @@ ..() chambered = new /obj/item/ammo_casing/syringegun(src) -/obj/item/gun/syringe/newshot() - if(!syringes.len) +/obj/item/gun/syringe/process_chamber() + if(!length(syringes) || chambered.BB) return var/obj/item/reagent_containers/syringe/S = syringes[1] - if(!S) return - chambered.BB = new S.projectile_type (src) - + chambered.BB = new S.projectile_type(src) S.reagents.trans_to(chambered.BB, S.reagents.total_volume) chambered.BB.name = S.name + syringes.Remove(S) - qdel(S) - return -/obj/item/gun/syringe/process_chamber() - return - -/obj/item/gun/syringe/afterattack(atom/target as mob|obj|turf, mob/living/user as mob|obj, params) +/obj/item/gun/syringe/afterattack(atom/target, mob/living/user, flag, params) if(target == loc) return - newshot() ..() /obj/item/gun/syringe/examine(mob/user) . = ..() - . += "Can hold [max_syringes] syringe\s. Has [syringes.len] syringe\s remaining." + var/num_syringes = syringes.len + (chambered.BB ? 1 : 0) + . += "Can hold [max_syringes] syringe\s. Has [num_syringes] syringe\s remaining." -/obj/item/gun/syringe/attack_self(mob/living/user as mob) - if(!syringes.len) +/obj/item/gun/syringe/attack_self(mob/living/user) + if(!length(syringes) && !chambered.BB) to_chat(user, "[src] is empty.") - return 0 + return FALSE - var/obj/item/reagent_containers/syringe/S = syringes[syringes.len] - - if(!S) - return 0 - S.loc = user.loc + var/obj/item/reagent_containers/syringe/S + if(chambered.BB) // Remove the chambered syringe first + S = new() + chambered.BB.reagents.trans_to(S, chambered.BB.reagents.total_volume) + qdel(chambered.BB) + chambered.BB = null + else + S = syringes[length(syringes)] + user.put_in_hands(S) syringes.Remove(S) + process_chamber() to_chat(user, "You unload [S] from \the [src]!") + return TRUE - return 1 - -/obj/item/gun/syringe/attackby(obj/item/A, mob/user, params, show_msg = 1) +/obj/item/gun/syringe/attackby(obj/item/A, mob/user, params, show_msg = TRUE) if(istype(A, /obj/item/reagent_containers/syringe)) - if(syringes.len < max_syringes) + if(length(syringes) < max_syringes) if(!user.unEquip(A)) return to_chat(user, "You load [A] into \the [src]!") syringes.Add(A) A.loc = src - return 1 + process_chamber() // Chamber the syringe if none is already + return TRUE else to_chat(user, "[src] cannot hold more syringes.") else