From 4d3d1e9a54c1ff440e6aafd080d6a78347675fb3 Mon Sep 17 00:00:00 2001 From: jbox1 <40789662+jbox144@users.noreply.github.com> Date: Sun, 16 Feb 2020 16:05:00 +1100 Subject: [PATCH] Create milking machine.dm --- .../reagent container/milking machine.dm | 83 +++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 modular_citadel/code/modules/reagents/reagent container/milking machine.dm diff --git a/modular_citadel/code/modules/reagents/reagent container/milking machine.dm b/modular_citadel/code/modules/reagents/reagent container/milking machine.dm new file mode 100644 index 00000000..7ff56056 --- /dev/null +++ b/modular_citadel/code/modules/reagents/reagent container/milking machine.dm @@ -0,0 +1,83 @@ +/obj/item/milker + icon = 'icons/obj/milking machine.dmi' + name = "milking machine" + icon_state = "Off" + item_state = "Off" + desc = "A pocket sized pump and tubing assembly designed to collect and store products from mammary glands." + + slot_flags = ITEM_SLOT_BELT | ITEM_SLOT_POCKET + + var/on = FALSE + var/obj/item/reagent_containers/glass/inserted_item = null + + var/transfer_rate = 0.25 // How much we transfer every 2 seconds + var/target_organ = "breasts" // What organ we are transfering from + +/obj/item/milker/examine(mob/user) + . = ..() + to_chat(user, "[src] is currently [on ? "on" : "off"].") + if (inserted_item) + to_chat(user, "[inserted_item] contains [inserted_item.reagents.total_volume]/[inserted_item.reagents.maximum_volume] units") + +/obj/item/milker/attackby(obj/item/W, mob/user, params) + add_fingerprint(user) + if(istype(W, /obj/item/reagent_containers/glass) && !inserted_item) + if(!user.transferItemToLoc(W, src)) + return ..() + inserted_item = W + UpdateIcon() + else + return ..() + +/obj/item/milker/interact(mob/user) + if(!isAI(user) && inserted_item) + add_fingerprint(user) + on = !on + if (on) + to_chat(user, "You turn [src] on.") + START_PROCESSING(SSobj, src) + else + to_chat(user, "You turn [src] off.") + STOP_PROCESSING(SSobj, src) + UpdateIcon() + else + ..() + +/obj/item/milker/proc/UpdateIcon() + icon_state = "[on ? "On" : "Off"][inserted_item ? "Beaker" : ""]" + item_state = icon_state + + +/obj/item/milker/AltClick(mob/living/user) + add_fingerprint(user) + user.put_in_hands(inserted_item) + inserted_item = null + on = FALSE + STOP_PROCESSING(SSobj, src) + UpdateIcon() + +/obj/item/milker/process() + var/mob/living/carbon/W = loc + if (W) + var/obj/item/organ/genital/breasts/O = W.getorganslot(target_organ) + if (O) + if (O.reagents.total_volume >= transfer_rate * 2) + if (inserted_item.reagents.total_volume < inserted_item.reagents.maximum_volume) + O.reagents.trans_to(inserted_item.reagents, amount = transfer_rate) + else + to_chat(W, "[src] stops pumping. [inserted_item] is full.") + on = FALSE + STOP_PROCESSING(SSobj, src) + UpdateIcon() + +/obj/item/milker/penis + name = "penis milking machine" + icon_state = "PenisOff" + item_state = "PenisOff" + desc = "A pocket sized pump and tubing assembly designed to collect and store products from the penis." + + target_organ = "testicles" // Since semen is stored in the balls + +/obj/item/milker/penis/UpdateIcon() + icon_state = "Penis[on ? "On" : "Off"][inserted_item ? "Beaker" : ""]" + item_state = icon_state