diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm
index d7c988bde0d..db62233fb3c 100644
--- a/code/modules/mob/living/silicon/robot/robot_modules.dm
+++ b/code/modules/mob/living/silicon/robot/robot_modules.dm
@@ -177,7 +177,7 @@
modules += L
modules += new /obj/item/weapon/tray(src)
- modules += new /obj/item/weapon/reagent_containers/food/drinks/shaker(src)
+ modules += new /obj/item/weapon/reagent_containers/borghypo/borgshaker(src)
emag = new /obj/item/weapon/reagent_containers/food/drinks/beer(src)
var/datum/reagents/R = new/datum/reagents(50)
diff --git a/code/modules/reagents/reagent_containers/borghydro.dm b/code/modules/reagents/reagent_containers/borghydro.dm
index 2b1374e34bf..1a025594a65 100644
--- a/code/modules/reagents/reagent_containers/borghydro.dm
+++ b/code/modules/reagents/reagent_containers/borghydro.dm
@@ -1,3 +1,13 @@
+/*
+Contains:
+Borg Hypospray
+Borg Shaker
+Nothing to do with hydroponics in here. Sorry to dissapoint you.
+*/
+
+/*
+Borg Hypospray
+*/
/obj/item/weapon/reagent_containers/borghypo
name = "cyborg hypospray"
desc = "An advanced chemical synthesizer and injection system, designed for heavy-duty medical equipment."
@@ -14,14 +24,16 @@
var/recharge_time = 5 //Time it takes for shots to recharge (in seconds)
var/list/datum/reagents/reagent_list = list()
- var/list/reagent_ids = list("doctorsdelight", "inaprovaline", "spaceacillin")
+ var/list/reagent_ids = list("doctorsdelight", "inaprovaline", "spac eacillin")
//var/list/reagent_ids = list("dexalin", "kelotane", "bicaridine", "anti_toxin", "inaprovaline", "spaceacillin")
+ var/list/modes = list()
/obj/item/weapon/reagent_containers/borghypo/New()
..()
for(var/R in reagent_ids)
add_reagent(R)
+ modes[R] = reagent_ids.Find(R)
processing_objects.Add(src)
@@ -82,14 +94,15 @@
return
/obj/item/weapon/reagent_containers/borghypo/attack_self(mob/user)
- playsound(loc, 'sound/effects/pop.ogg', 50, 0) //Change the mode
- mode++
- if(mode > reagent_list.len)
- mode = 1
+ mode = modes[input(user, "What reagent do you want to dispense?") as anything in reagent_ids]
+
+ /*user << "mode is [mode]"
+ user << "input result is [tempmode]"*/
+
+ playsound(loc, 'sound/effects/pop.ogg', 50, 0)
- charge_tick = 0 //Prevents wasted chems/cell charge if you're cycling through modes.
var/datum/reagent/R = chemical_reagents_list[reagent_ids[mode]]
- user << "Synthesizer is now producing '[R.name]'."
+ user << "[src] is now dispensing '[R.name]'."
return
/obj/item/weapon/reagent_containers/borghypo/examine()
@@ -107,4 +120,57 @@
empty = 0
if(empty)
- usr << "It is currently empty. Allow some time for the internal syntheszier to produce more."
\ No newline at end of file
+ usr << "It is currently empty. Allow some time for the internal syntheszier to produce more."
+/*
+Borg Shaker
+*/
+/obj/item/weapon/reagent_containers/borghypo/borgshaker
+ name = "cyborg shaker"
+ desc = "An advanced drink synthesizer and mixer."
+ icon = 'icons/obj/drinks.dmi'
+ icon_state = "shaker"
+ amount_per_transfer_from_this = 5
+ volume = 40
+ possible_transfer_amounts = list(5,10,20)
+ flags = FPRINT
+ mode = 1
+ charge_cost = 20 //Lots of reagents all regenerating at once, so the charge cost is lower.
+ charge_tick = 0
+ recharge_time = 3
+
+ reagent_ids = list("orangejuice", "limejuice", "tomatojuice", "cola", "tonic", "sodawater", "ice", "cream", "beer", "whiskey", "vodka", "rum", "gin", "tequilla", "vermouth", "wine", "kahlua", "cognac", "ale")
+
+/obj/item/weapon/reagent_containers/borghypo/borgshaker/attack(mob/M as mob, mob/user as mob)
+ return //Can't inject stuff with a shaker, can we?
+
+/obj/item/weapon/reagent_containers/borghypo/borgshaker/process()
+ charge_tick++
+ if(charge_tick < recharge_time) return 0
+ charge_tick = 0
+
+ if(isrobot(src.loc))
+ var/mob/living/silicon/robot/R = src.loc
+ if(R && R.cell)
+ for(var/i in modes) //Lots of reagents in this one, so it's best to regenrate them all at once to keep it from being tedious.
+ var/valueofi = modes[i]
+ var/datum/reagents/RG = reagent_list[valueofi]
+ if(RG.total_volume < RG.maximum_volume)
+ R.cell.use(charge_cost)
+ RG.add_reagent(reagent_ids[valueofi], 5)
+ return 1
+
+/obj/item/weapon/reagent_containers/borghypo/borgshaker/afterattack(obj/target, mob/user, proximity)
+ if(!proximity) return
+
+ else if(target.is_open_container() && target.reagents)
+ var/datum/reagents/R = reagent_list[mode]
+ if(!R.total_volume)
+ user << "[src] is empty."
+ return
+
+ if(target.reagents.total_volume >= target.reagents.maximum_volume)
+ user << "[target] is full."
+ return
+
+ var/trans = R.trans_to(target, amount_per_transfer_from_this)
+ user << "You transfer [trans] unit\s of the solution to [target]."