diff --git a/code/game/objects/items/storage/belt.dm b/code/game/objects/items/storage/belt.dm
index cdff13f9ce..e354123ab9 100755
--- a/code/game/objects/items/storage/belt.dm
+++ b/code/game/objects/items/storage/belt.dm
@@ -626,14 +626,13 @@
STR.can_hold = typecacheof(list(
/obj/item/reagent_containers/syringe/dart
))
- GET_COMPONENT(STR, /datum/component/storage)
/obj/item/storage/belt/medolier/full/PopulateContents()
for(var/i in 1 to 16)
new /obj/item/reagent_containers/syringe/dart/(src)
/obj/item/storage/belt/medolier/afterattack(obj/target, mob/user , proximity)
- if(busy)
+ if(!(istype(target, /obj/item/reagent_containers/glass/beaker)))
return
if(!proximity)
return
@@ -643,13 +642,12 @@
for(var/obj/item/reagent_containers/syringe/dart/D in contents)
if(round(target.reagents.total_volume, 1) <= 0)
to_chat(user, "You soak as many of the darts as you can with the contents from [target].")
-
return
if(D.mode == SYRINGE_INJECT)
continue
D.afterattack(target, user, proximity)
- to_chat(user, "You soak all of the darts with the contents from [target].")
+
..()
/obj/item/storage/belt/holster
diff --git a/code/modules/crafting/recipes.dm b/code/modules/crafting/recipes.dm
index 7ae1c956c9..38386a2de7 100644
--- a/code/modules/crafting/recipes.dm
+++ b/code/modules/crafting/recipes.dm
@@ -899,16 +899,29 @@
/datum/crafting_recipe/smartdartgun
name = "Smart dartgun"
result = /obj/item/gun/syringe/dart
- reqs = list(/obj/item/stack/sheet/metal = 15,
- /obj/item/stack/sheet/glass = 10,
+ reqs = list(/obj/item/stack/sheet/metal = 10,
+ /obj/item/stack/sheet/glass = 5,
/obj/item/tank/internals = 1,
/obj/item/reagent_containers/glass/beaker = 1,
- /obj/item/stack/sheet/plastic = 10,
- /obj/item/stack/cable_coil = 2)
+ /obj/item/stack/sheet/plastic = 5,
+ /obj/item/stack/cable_coil = 1)
time = 150 //It's a gun
category = CAT_WEAPONRY
subcategory = CAT_WEAPON
+/datum/crafting_recipe/rapiddartgun
+ name = "Rapid Smart dartgun - larger size beaker = larger mag."
+ result = /obj/item/gun/syringe/dart/rapiddart
+ reqs = list(
+ /obj/item/gun/syringe/dart = 1,
+ /obj/item/stack/sheet/plastic = 5,
+ /obj/item/stack/cable_coil = 1
+ )
+ parts = list(/obj/item/reagent_containers/glass/beaker = 1)
+ time = 120 //Modifying your gun
+ category = CAT_WEAPONRY
+ subcategory = CAT_WEAPON
+
/datum/crafting_recipe/durathread_duffelbag
name = "Durathread Dufflebag"
result = /obj/item/storage/backpack/duffelbag/durathread
@@ -932,7 +945,7 @@
/obj/item/stack/sheet/leather = 2)
time = 50
category = CAT_CLOTHING
-
+
/datum/crafting_recipe/durathread_helmet
name = "Makeshift Durathread Helmet"
result = /obj/item/clothing/head/helmet/durathread
@@ -948,4 +961,3 @@
/obj/item/stack/sheet/leather = 3)
time = 50
category = CAT_CLOTHING
-
diff --git a/code/modules/projectiles/guns/misc/syringe_gun.dm b/code/modules/projectiles/guns/misc/syringe_gun.dm
index 26e66b1987..e3aa6fa76c 100644
--- a/code/modules/projectiles/guns/misc/syringe_gun.dm
+++ b/code/modules/projectiles/guns/misc/syringe_gun.dm
@@ -122,3 +122,36 @@
else
to_chat(user, "You can't put the [A] into \the [src]!")
return FALSE
+
+/obj/item/gun/syringe/dart/rapiddart
+ name = "Repeating dart gun"
+ icon_state = "rapiddartgun"
+ item_state = "rapiddartgun"
+ max_syringes = 1
+
+/obj/item/gun/syringe/dart/rapiddart/Initialize()
+ .=..()
+ update_capacity()
+
+/obj/item/gun/syringe/dart/rapiddart/proc/update_capacity()
+ var/obj/item/reagent_containers/glass/beaker/B = locate(/obj/item/reagent_containers/glass/beaker) in src
+
+ if(istype(B, /obj/item/reagent_containers/glass/beaker/large))
+ desc = "[initial(desc)] A modification of the dart gun's pressure chamber has been perfomed using a [B], extending it's holding size to [max_syringes]."
+ max_syringes = 2
+ return
+ else if(istype(B, /obj/item/reagent_containers/glass/beaker/plastic))
+ desc = "[initial(desc)] A modification of the dart gun's pressure chamber has been perfomed using a [B], extending it's holding size to [max_syringes]."
+ max_syringes = 3
+ return
+ else if(istype(B, /obj/item/reagent_containers/glass/beaker/meta))
+ desc = "[initial(desc)] A modification of the dart gun's pressure chamber has been perfomed using a [B], extending it's holding size to [max_syringes]."
+ max_syringes = 4
+ return
+ else if(istype(B, /obj/item/reagent_containers/glass/beaker/bluespace))
+ desc = "[initial(desc)] A modification of the dart gun's pressure chamber has been perfomed using a [B], extending it's holding size to [max_syringes]."
+ max_syringes = 6
+ return
+ else
+ max_syringes = 1
+ desc = "[initial(desc)] It has a [B] strapped to it, but it doesn't seem to be doing anything."
diff --git a/code/modules/reagents/chemistry/machinery/chem_master.dm b/code/modules/reagents/chemistry/machinery/chem_master.dm
index 8b5448641c..4bb2f8af1c 100644
--- a/code/modules/reagents/chemistry/machinery/chem_master.dm
+++ b/code/modules/reagents/chemistry/machinery/chem_master.dm
@@ -404,22 +404,22 @@
if(!name || !reagents.total_volume || !src || QDELETED(src) || !usr.canUseTopic(src, !issilicon(usr)))
return
- var/obj/item/reagent_containers/glass/bottle/vial/small/P
+ var/obj/item/reagent_containers/syringe/dart/D
for(var/i = 0; i < amount_full; i++)
- P = new /obj/item/reagent_containers/syringe/dart(drop_location())
- P.name = trim("[name] SmartDart")
- adjust_item_drop_location(P)
- reagents.trans_to(P, 20)
- P.mode=!mode
- P.update_icon()
+ D = new /obj/item/reagent_containers/syringe/dart(drop_location())
+ D.name = trim("[name] SmartDart")
+ adjust_item_drop_location(D)
+ reagents.trans_to(D, 20)
+ D.mode=!mode
+ D.update_icon()
if(vol_part)
- P = new /obj/item/reagent_containers/syringe/dart(drop_location())
- P.name = trim("[name] SmartDart")
- adjust_item_drop_location(P)
- reagents.trans_to(P, vol_part)
- P.mode=!mode
- P.update_icon()
+ D = new /obj/item/reagent_containers/syringe/dart(drop_location())
+ D.name = trim("[name] SmartDart")
+ adjust_item_drop_location(D)
+ reagents.trans_to(D, vol_part)
+ D.mode=!mode
+ D.update_icon()
. = TRUE
//END CITADEL ADDITIONS
diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm
index 245c6f0bf9..ce6cf1bb85 100644
--- a/code/modules/reagents/reagent_containers/syringes.dm
+++ b/code/modules/reagents/reagent_containers/syringes.dm
@@ -323,8 +323,9 @@
rounded_vol = "empty"
if(reagents && reagents.total_volume)
- if(volume/reagents.total_volume == 1)
+ if(round(volume,1)/reagents.total_volume == 1)
rounded_vol="full"
+ mode = SYRINGE_INJECT
icon_state = "[rounded_vol]"
item_state = "syringe_[rounded_vol]"
diff --git a/icons/obj/guns/projectile.dmi b/icons/obj/guns/projectile.dmi
index 0831d47577..6b2d9e5c06 100644
Binary files a/icons/obj/guns/projectile.dmi and b/icons/obj/guns/projectile.dmi differ