diff --git a/code/game/objects/items/robot/robot_items.dm b/code/game/objects/items/robot/robot_items.dm index eed38a704e5b2..2d53fad04d176 100644 --- a/code/game/objects/items/robot/robot_items.dm +++ b/code/game/objects/items/robot/robot_items.dm @@ -841,7 +841,7 @@ /********************************************************************** Borg apparatus ***********************************************************************/ -//These are tools that can hold only specific items. For example, the mediborg gets one that can only hold beakers and bottles. +//These are tools that can hold only specific items. For example, the mediborg and service borg get one that can only hold reagent containers /obj/item/borg/apparatus/ name = "unknown storage apparatus" @@ -923,33 +923,28 @@ return . = ..() -///////////////// -//beaker holder// -///////////////// +//////////////////// +//container holder// +//////////////////// -/obj/item/borg/apparatus/beaker - name = "beaker storage apparatus" - desc = "A special apparatus for carrying beakers without spilling the contents." +/obj/item/borg/apparatus/container + name = "container storage apparatus" + desc = "A special apparatus for carrying containers without spilling the contents. It can also synthesize new beakers!" icon_state = "borg_beaker_apparatus" - storable = list(/obj/item/reagent_containers/glass/beaker, - /obj/item/reagent_containers/glass/bottle) - -/obj/item/borg/apparatus/beaker/Initialize(mapload) - . = ..() - stored = new /obj/item/reagent_containers/glass/beaker/large(src) - RegisterSignal(stored, COMSIG_ATOM_UPDATE_ICON, TYPE_PROC_REF(/atom, update_icon)) - update_icon() + storable = list(/obj/item/reagent_containers/glass) + var/defaultcontainer = /obj/item/reagent_containers/glass/beaker -/obj/item/borg/apparatus/beaker/Destroy() +/obj/item/borg/apparatus/container/Destroy() if(stored) var/obj/item/reagent_containers/C = stored C.SplashReagents(get_turf(src)) QDEL_NULL(stored) . = ..() -/obj/item/borg/apparatus/beaker/examine() +/obj/item/borg/apparatus/container/examine() . = ..() - if(stored) + //apparatus/container/service means this will not always be true. + if(istype(stored, /obj/item/reagent_containers/glass)) var/obj/item/reagent_containers/C = stored . += "The apparatus currently has [C] secured, which contains:" if(length(C.reagents.reagent_list)) @@ -959,7 +954,7 @@ . += "Nothing." . += "Alt-click will drop the currently stored [stored]." -/obj/item/borg/apparatus/beaker/update_overlays() +/obj/item/borg/apparatus/container/update_overlays() . = ..() var/mutable_appearance/arm = mutable_appearance(icon = icon, icon_state = "borg_beaker_apparatus_arm") if(stored) @@ -976,7 +971,14 @@ arm.pixel_y = arm.pixel_y - 5 . += arm -/obj/item/borg/apparatus/beaker/attack_self(mob/living/silicon/robot/user) +/obj/item/borg/apparatus/container/attack_self(mob/living/silicon/robot/user) + if(!stored) + var/newcontainer = new defaultcontainer(src) + stored = newcontainer + to_chat(user, "You synthesize a new [newcontainer]!") + playsound(src, 'sound/machines/click.ogg', 10, 1) + update_icon() + return if(stored && !user.client?.keys_held["Alt"] && user.a_intent != "help") var/obj/item/reagent_containers/C = stored C.SplashReagents(get_turf(user)) @@ -984,9 +986,9 @@ return . = ..() -/obj/item/borg/apparatus/beaker/extra - name = "secondary beaker storage apparatus" - desc = "A supplementary beaker storage apparatus." +/obj/item/borg/apparatus/container/extra + name = "container storage apparatus" + desc = "A supplementary container storage apparatus." //////////////////// //engi part holder// @@ -1033,10 +1035,11 @@ //versatile service holder// //////////////////// -/obj/item/borg/apparatus/beaker/service +/obj/item/borg/apparatus/container/service name = "versatile service grasper" - desc = "Specially designed for carrying glasses, food and seeds." + desc = "Specially designed for carrying glasses, food and seeds. It can also synthesize glasses for drinks!" storable = list(/obj/item/reagent_containers/food, + /obj/item/reagent_containers/glass, /obj/item/seeds, /obj/item/storage/fancy/donut_box, /obj/item/storage/fancy/egg_box, @@ -1046,10 +1049,13 @@ /obj/item/reagent_containers/glass/bottle, /obj/item/reagent_containers/glass/bucket ) + defaultcontainer = /obj/item/reagent_containers/food/drinks/drinkingglass -/obj/item/borg/apparatus/beaker/service/examine() + +/obj/item/borg/apparatus/container/service/examine() . = ..() - if(stored) + //Parent type handles this type. All other objects held are handled here. + if(!istype(stored, /obj/item/reagent_containers/glass)) . += "You are currently holding [stored]." . += "Alt-click will drop the currently stored [stored]." diff --git a/code/game/objects/items/robot/robot_upgrades.dm b/code/game/objects/items/robot/robot_upgrades.dm index c8a6796c9d501..42c09695b12c5 100644 --- a/code/game/objects/items/robot/robot_upgrades.dm +++ b/code/game/objects/items/robot/robot_upgrades.dm @@ -742,8 +742,8 @@ R.module.remove_module(C, TRUE) /obj/item/borg/upgrade/beaker_app - name = "beaker storage apparatus" - desc = "A supplementary beaker storage apparatus for medical cyborgs." + name = "container storage apparatus" + desc = "A supplementary container storage apparatus for medical cyborgs." icon_state = "cyborg_upgrade3" require_module = TRUE module_type = list(/obj/item/robot_module/medical) @@ -752,7 +752,7 @@ /obj/item/borg/upgrade/beaker_app/action(mob/living/silicon/robot/R, user = usr) . = ..() if(.) - var/obj/item/borg/apparatus/beaker/extra/E = locate() in R.module.modules + var/obj/item/borg/apparatus/container/extra/E = locate() in R.module.modules if(E) to_chat(user, "This unit has no room for additional beaker storage.") return FALSE @@ -764,11 +764,10 @@ /obj/item/borg/upgrade/beaker_app/deactivate(mob/living/silicon/robot/R, user = usr) . = ..() if (.) - var/obj/item/borg/apparatus/beaker/extra/E = locate() in R.module.modules + var/obj/item/borg/apparatus/container/extra/E = locate() in R.module.modules if (E) R.module.remove_module(E, TRUE) - /obj/item/borg/upgrade/speciality name = "Speciality Module" icon_state = "cyborg_upgrade3" diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index 7030ffef05079..4135e320427ed 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -271,7 +271,7 @@ /obj/item/borg/charger, /obj/item/weldingtool/cyborg/mini, /obj/item/reagent_containers/borghypo, - /obj/item/borg/apparatus/beaker, + /obj/item/borg/apparatus/container, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/syringe, /obj/item/surgical_drapes, @@ -508,7 +508,6 @@ name = "Service" basic_modules = list( /obj/item/assembly/flash/cyborg, - /obj/item/reagent_containers/food/drinks/drinkingglass, /obj/item/pen, /obj/item/toy/crayon/spraycan/borg, /obj/item/extinguisher/mini, @@ -521,7 +520,7 @@ /obj/item/instrument/piano_synth, /obj/item/reagent_containers/dropper, /obj/item/lighter, - /obj/item/borg/apparatus/beaker/service, + /obj/item/borg/apparatus/container/service, /obj/item/reagent_containers/borghypo/borgshaker) emag_modules = list(/obj/item/reagent_containers/borghypo/borgshaker/hacked) ratvar_modules = list( diff --git a/code/modules/reagents/reagent_containers/borghydro.dm b/code/modules/reagents/reagent_containers/borghydro.dm index d6f0ca14de7ec..a406ccf40967c 100644 --- a/code/modules/reagents/reagent_containers/borghydro.dm +++ b/code/modules/reagents/reagent_containers/borghydro.dm @@ -185,6 +185,21 @@ Borg Shaker accepts_reagent_upgrades = FALSE reagent_ids = list( + //Non-alcoholic + /datum/reagent/water, + /datum/reagent/consumable/coffee, + /datum/reagent/consumable/tea, + /datum/reagent/consumable/space_cola, + /datum/reagent/consumable/dr_gibb, + /datum/reagent/consumable/spacemountainwind, + /datum/reagent/consumable/space_up, + //Fruit Juice + /datum/reagent/consumable/banana, + /datum/reagent/consumable/lemonjuice, + /datum/reagent/consumable/limejuice, + /datum/reagent/consumable/orangejuice, + /datum/reagent/consumable/tomatojuice, + //Alcoholic /datum/reagent/consumable/ethanol/absinthe, /datum/reagent/consumable/ethanol/ale, /datum/reagent/consumable/ethanol/beer, @@ -192,25 +207,21 @@ Borg Shaker /datum/reagent/consumable/ethanol/gin, /datum/reagent/consumable/ethanol/kahlua, /datum/reagent/consumable/ethanol/rum, + /datum/reagent/consumable/ethanol/sake, /datum/reagent/consumable/ethanol/tequila, /datum/reagent/consumable/ethanol/triple_sec, /datum/reagent/consumable/ethanol/vermouth, /datum/reagent/consumable/ethanol/vodka, /datum/reagent/consumable/ethanol/whiskey, /datum/reagent/consumable/ethanol/wine, - /datum/reagent/consumable/banana, - /datum/reagent/consumable/coffee, - /datum/reagent/consumable/cream, - /datum/reagent/consumable/grenadine, + //Other stuff for mixing /datum/reagent/consumable/ice, - /datum/reagent/consumable/lemonjuice, - /datum/reagent/consumable/limejuice, - /datum/reagent/consumable/milk, - /datum/reagent/consumable/orangejuice, /datum/reagent/consumable/sodawater, - /datum/reagent/consumable/space_cola, - /datum/reagent/consumable/tomatojuice, - /datum/reagent/consumable/tonic) + /datum/reagent/consumable/tonic, + /datum/reagent/consumable/grenadine, + /datum/reagent/consumable/cream, + /datum/reagent/consumable/milk, + /datum/reagent/consumable/sugar) /obj/item/reagent_containers/borghypo/borgshaker/attack(mob/M, mob/user) return //Can't inject stuff with a shaker, can we? //not with that attitude