diff --git a/code/modules/projectiles/ammunition/special.dm b/code/modules/projectiles/ammunition/special.dm index de103b399e..b378d7fa6c 100644 --- a/code/modules/projectiles/ammunition/special.dm +++ b/code/modules/projectiles/ammunition/special.dm @@ -65,6 +65,24 @@ qdel(S) ..() +/obj/item/ammo_casing/chemgun + name = "dart synthesiser" + desc = "A high-power spring, linked to an energy-based dart synthesiser." + projectile_type = /obj/item/projectile/bullet/dart + firing_effect_type = null + +/obj/item/ammo_casing/chemgun/ready_proj(atom/target, mob/living/user, quiet, zone_override = "") + if(!BB) + return + if(istype(loc, /obj/item/gun/chem)) + var/obj/item/gun/chem/CG = loc + if(CG.syringes_left <= 0) + return + CG.reagents.trans_to(BB, 15) + BB.name = "chemical dart" + CG.syringes_left-- + ..() + /obj/item/ammo_casing/dnainjector name = "rigged syringe gun spring" desc = "A high-power spring that throws DNA injectors." diff --git a/code/modules/projectiles/guns/chem_gun.dm b/code/modules/projectiles/guns/chem_gun.dm new file mode 100644 index 0000000000..b928abafef --- /dev/null +++ b/code/modules/projectiles/guns/chem_gun.dm @@ -0,0 +1,47 @@ +//his isn't a subtype of the syringe gun because the syringegun subtype is made to hold syringes +//this is meant to hold reagents/obj/item/gun/syringe +/obj/item/gun/chem + name = "reagent gun" + desc = "A Nanotrasen syringe gun, modified to automatically synthesise chemical darts, and instead hold reagents." + icon_state = "chemgun" + item_state = "chemgun" + w_class = WEIGHT_CLASS_NORMAL + throw_speed = 3 + throw_range = 7 + force = 4 + materials = list(MAT_METAL=2000) + clumsy_check = FALSE + fire_sound = 'sound/items/syringeproj.ogg' + container_type = OPENCONTAINER + var/time_per_syringe = 250 + var/syringes_left = 4 + var/max_syringes = 4 + var/last_synth = 0 + +/obj/item/gun/chem/Initialize() + . = ..() + chambered = new /obj/item/ammo_casing/chemgun(src) + START_PROCESSING(SSobj, src) + create_reagents(100) + +/obj/item/gun/chem/Destroy() + . = ..() + STOP_PROCESSING(SSobj, src) + +/obj/item/gun/chem/can_shoot() + return syringes_left + +/obj/item/gun/chem/process_chamber() + if(chambered && !chambered.BB && syringes_left) + chambered.newshot() + +/obj/item/gun/chem/process() + if(syringes_left >= max_syringes) + return + if(world.time < last_synth+time_per_syringe) + return + to_chat(loc, "You hear a click as [src] synthesizes a new dart.") + syringes_left++ + if(chambered && !chambered.BB) + chambered.newshot() + last_synth = world.time \ No newline at end of file diff --git a/code/modules/uplink/uplink_items.dm b/code/modules/uplink/uplink_items.dm index 8475a6593e..e3da5aba80 100644 --- a/code/modules/uplink/uplink_items.dm +++ b/code/modules/uplink/uplink_items.dm @@ -1275,6 +1275,13 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) cost = 14 restricted_roles = list("Geneticist", "Chief Medical Officer") +/datum/uplink_item/role_restricted/chemical_gun + name = "Reagent Dartgun" + desc = "A heavily modified syringe gun which is capable of synthesizing its own chemical darts using input reagents. Can hold 100u of reagents." + item = /obj/item/gun/chem + cost = 12 + restricted_roles = list("Chemist", "Chief Medical Officer") + /datum/uplink_item/role_restricted/magillitis_serum name = "Magillitis Serum Autoinjector" desc = "A single-use autoinjector which contains an experimental serum that causes rapid muscular growth in Hominidae. Side-affects may include hypertrichosis, violent outbursts, and an unending affinity for bananas." diff --git a/icons/mob/inhands/weapons/guns_lefthand.dmi b/icons/mob/inhands/weapons/guns_lefthand.dmi index de77656a15..f29b0149d2 100644 Binary files a/icons/mob/inhands/weapons/guns_lefthand.dmi and b/icons/mob/inhands/weapons/guns_lefthand.dmi differ diff --git a/icons/mob/inhands/weapons/guns_righthand.dmi b/icons/mob/inhands/weapons/guns_righthand.dmi index 33f88d0d96..d1039c2a84 100644 Binary files a/icons/mob/inhands/weapons/guns_righthand.dmi and b/icons/mob/inhands/weapons/guns_righthand.dmi differ diff --git a/icons/obj/guns/projectile.dmi b/icons/obj/guns/projectile.dmi index 0939ae772c..6309e5c084 100644 Binary files a/icons/obj/guns/projectile.dmi and b/icons/obj/guns/projectile.dmi differ diff --git a/tgstation.dme b/tgstation.dme index 05b04a8285..47e4e3b2c4 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -2206,6 +2206,7 @@ #include "code\modules\projectiles\boxes_magazines\internal_mag.dm" #include "code\modules\projectiles\guns\ballistic.dm" #include "code\modules\projectiles\guns\beam_rifle.dm" +#include "code\modules\projectiles\guns\chem_gun.dm" #include "code\modules\projectiles\guns\energy.dm" #include "code\modules\projectiles\guns\grenade_launcher.dm" #include "code\modules\projectiles\guns\magic.dm"