//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 Repeater" desc = "A GATO smartdart repeater rifle, modified to automatically synthesize piercing darts." //GS13 - Nanotrasen to GATO icon_state = "chemgun" item_state = "chemgun" w_class = WEIGHT_CLASS_NORMAL throw_speed = 3 throw_range = 7 force = 4 inaccuracy_modifier = 0.25 custom_materials = list(/datum/material/iron=2000) clumsy_check = FALSE fire_sound = 'sound/items/syringeproj.ogg' var/time_per_syringe = 200 var/syringes_left = 3 var/max_syringes = 6 var/last_synth = 0 var/obj/item/reagent_containers/glass/bottle/vial/vial var/list/allowed_containers = list(/obj/item/reagent_containers/glass/bottle/vial/small, /obj/item/reagent_containers/glass/bottle/vial/large) var/quickload = TRUE /obj/item/gun/chem/Initialize(mapload) . = ..() chambered = new /obj/item/ammo_casing/chemgun(src) START_PROCESSING(SSobj, src) /obj/item/gun/chem/Destroy() . = ..() STOP_PROCESSING(SSobj, src) //bunch of hypospray copy paste /obj/item/gun/chem/examine(mob/user) . = ..() if(vial) . += "[vial] has [vial.reagents.total_volume]u remaining." else . += "It has no vial loaded in." /obj/item/gun/chem/proc/unload_hypo(obj/item/I, mob/user) if((istype(I, /obj/item/reagent_containers/glass/bottle/vial))) var/obj/item/reagent_containers/glass/bottle/vial/V = I V.forceMove(user.loc) user.put_in_hands(V) to_chat(user, "You remove [vial] from [src].") vial = null update_icon() playsound(loc, 'sound/weapons/empty.ogg', 50, 1) else to_chat(user, "The weapon isn't loaded!") return /obj/item/gun/chem/attackby(obj/item/I, mob/living/user) if((istype(I, /obj/item/reagent_containers/glass/bottle/vial))) if(vial) if(!quickload) to_chat(user, "[src] can not hold more than one vial!") return FALSE unload_hypo(vial, user) var/obj/item/reagent_containers/glass/bottle/vial/V = I if(!is_type_in_list(V, allowed_containers)) to_chat(user, "[src] doesn't accept this type of vial.") return FALSE if(!user.transferItemToLoc(V,src)) return FALSE vial = V user.visible_message("[user] has loaded a vial into [src].","You have loaded [vial] into [src].") update_icon() playsound(loc, 'sound/weapons/autoguninsert.ogg', 35, 1) return TRUE else to_chat(user, "This doesn't fit in [src].") return FALSE /obj/item/gun/chem/on_attack_hand(mob/user, act_intent = user.a_intent, unarmed_attack_flags) . = ..() //Don't bother changing this or removing it from containers will break. /obj/item/gun/chem/attack_self(mob/living/user) if(user && !user.incapacitated()) if(!vial) to_chat(user, "This Hypo needs to be loaded first!") else unload_hypo(vial,user) /obj/item/gun/chem/attack(obj/item/I, mob/user, params) return /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 //Smart dart version of the reagent launcher /obj/item/gun/chem/smart name = "Smartdart repeater rifle" desc = "An experimental improved version of the smartdart rifle. It synthesizes medicinal smart darts which it fills using an inserted hypovial. It can accommodate both large and small hypovials." icon_state = "chemgunrepeater" item_state = "syringegun" obj/item/gun/chem/smart/Initialize(mapload) . = ..() chambered = new /obj/item/ammo_casing/chemgun/smart(src)