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]."