Skip to content

Commit

Permalink
Service and mediborg tweaks and fixes (#11441)
Browse files Browse the repository at this point in the history
* Fixes the apparatus for medi/service.

Also somewhat expands what both can carry. Neither holder starts with any container already inside of it.

* Expands service borg drinks

* beaker -> container

* more beaker -> container

* Medi/Service apparatus can now create new containers

* Optimization and polishing

* Re-organizes drinks

* Update borghydro.dm

* Update borghydro.dm
  • Loading branch information
Rukofamicom authored Sep 8, 2024
1 parent 3c88336 commit 8555c06
Show file tree
Hide file tree
Showing 4 changed files with 61 additions and 46 deletions.
60 changes: 33 additions & 27 deletions code/game/objects/items/robot/robot_items.dm
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down Expand Up @@ -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))
Expand All @@ -959,7 +954,7 @@
. += "Nothing."
. += "<span class='notice'<i>Alt-click</i> will drop the currently stored [stored].</span>"

/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)
Expand All @@ -976,17 +971,24 @@
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, "<span class='notice'>You synthesize a new [newcontainer]!</span>")
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))
loc.visible_message("<span class='notice'>[user] spills the contents of the [C] all over the floor.</span>")
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//
Expand Down Expand Up @@ -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,
Expand All @@ -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]."
. += "<span class='notice'<i>Alt-click</i> will drop the currently stored [stored].</span>"

Expand Down
9 changes: 4 additions & 5 deletions code/game/objects/items/robot/robot_upgrades.dm
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -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, "<span class='warning'>This unit has no room for additional beaker storage.</span>")
return FALSE
Expand All @@ -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"
Expand Down
5 changes: 2 additions & 3 deletions code/modules/mob/living/silicon/robot/robot_modules.dm
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -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,
Expand All @@ -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(
Expand Down
33 changes: 22 additions & 11 deletions code/modules/reagents/reagent_containers/borghydro.dm
Original file line number Diff line number Diff line change
Expand Up @@ -185,32 +185,43 @@ 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,
/datum/reagent/consumable/ethanol/cognac,
/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
Expand Down

0 comments on commit 8555c06

Please sign in to comment.