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