Merge pull request #238 from jbox144/makes-the-cum

Ports previous changes of breasts to the penis
This commit is contained in:
Dahlular
2020-03-22 20:30:46 -06:00
committed by GitHub
10 changed files with 125 additions and 28 deletions
+1 -1
View File
@@ -316,4 +316,4 @@
id = "advancedlab"
suffix = "advancedlab.dmm"
name = "Abductor Replication Lab"
description = "Some scientists tried and almost succeeded to recreate abductor tools. Somewhat slower and a bit less modern than their originals, these tools are the best you can get if you aren't an alien."
description = "Some scientists tried and almost succeeded to recreate abductor tools. Somewhat slower and a bit less modern than their originals, these tools are the best you can get if you aren't an alien."
+1 -1
View File
@@ -471,4 +471,4 @@
// Abductor Replication Lab
/area/ruin/space/has_grav/powered/advancedlab
name = "Abductor Replication Lab"
icon_state = "yellow"
icon_state = "yellow"
+9 -2
View File
@@ -777,6 +777,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
dat += "<b>Testicles Color:</b></a><BR>"
dat += "<span style='border: 1px solid #161616; background-color: #[features["balls_color"]];'>&nbsp;&nbsp;&nbsp;</span> <a href='?_src_=prefs;preference=balls_color;task=input'>Change</a><br>"
dat += "<b>Testicles showing:</b><a style='display:block;width:50px' href='?_src_=prefs;preference=balls_shape;task=input'>[features["balls_shape"]]</a>"
dat += "<b>Produces:</b><a style='display:block;width:50px' href='?_src_=prefs;preference=balls_fluid;task=input'>[features["balls_fluid"]]</a>"
dat += APPEARANCE_CATEGORY_COLUMN
dat += "<h3>Vagina</h3>"
dat += "<a style='display:block;width:50px' href='?_src_=prefs;preference=has_vag'>[features["has_vag"] == TRUE ? "Yes" : "No"]</a>"
@@ -807,7 +808,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
dat += "<b>Lactates:</b><a style='display:block;width:50px' href='?_src_=prefs;preference=breasts_producing'>[features["breasts_producing"] == TRUE ? "Yes" : "No"]</a>"
if(features["breasts_producing"] == TRUE)
dat += "<b>Produces:</b><a style='display:block;width:50px' href='?_src_=prefs;preference=breasts_fluid;task=input'>[features["breasts_fluid"]]</a>"
dat += "</td>"
dat += "</td>"
dat += "</tr></table>"
@@ -1996,6 +1997,12 @@ GLOBAL_LIST_EMPTY(preferences_datums)
if(new_shape)
features["balls_shape"] = new_shape
if("balls_fluid")
var/new_shape
new_shape = input(user, "Balls Fluid", "Character Preference") as null|anything in GLOB.genital_fluids_list
if(new_shape)
features["balls_fluid"] = new_shape
if("egg_size")
var/new_size
var/list/egg_sizes = list(1,2,3)
@@ -2023,7 +2030,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
new_shape = input(user, "Breast Shape", "Character Preference") as null|anything in GLOB.breasts_shapes_list
if(new_shape)
features["breasts_shape"] = new_shape
if("breasts_fluid")
var/new_shape
new_shape = input(user, "Breast Fluid", "Character Preference") as null|anything in GLOB.genital_fluids_list
@@ -0,0 +1,11 @@
/datum/crafting_recipe/milking_machine
name = "Milking Machine"
reqs = list(/obj/item/stack/cable_coil = 5, /obj/item/stack/rods = 2, /obj/item/stack/sheet/cardboard = 1, /obj/item/reagent_containers/glass/beaker = 2, /obj/item/stock_parts/manipulator = 1)
result = /obj/item/milking_machine
tools = list(TOOL_WELDER, TOOL_SCREWDRIVER, TOOL_WIRECUTTER)
category = CAT_MISC
/datum/crafting_recipe/milking_machine/penis
name = "Penis Milking Machine"
reqs = list(/obj/item/stack/cable_coil = 5, /obj/item/stack/rods = 1, /obj/item/stack/sheet/cardboard = 1, /obj/item/reagent_containers/glass/beaker/large = 1, /obj/item/stock_parts/manipulator = 1)
result = /obj/item/milking_machine/penis
+83
View File
@@ -0,0 +1,83 @@
/obj/item/milking_machine
icon = 'hyperstation/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/milking_machine/examine(mob/user)
. = ..()
to_chat(user, "<span class='notice'>[src] is currently [on ? "on" : "off"].</span>")
if (inserted_item)
to_chat(user, "<span class='notice'>[inserted_item] contains [inserted_item.reagents.total_volume]/[inserted_item.reagents.maximum_volume] units</span>")
/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/milking_machine/interact(mob/user)
if(!isAI(user) && inserted_item)
add_fingerprint(user)
on = !on
if (on)
to_chat(user, "<span class='notice'>You turn [src] on.</span>")
START_PROCESSING(SSobj, src)
else
to_chat(user, "<span class='notice'>You turn [src] off.</span>")
STOP_PROCESSING(SSobj, src)
UpdateIcon()
else
..()
/obj/item/milking_machine/proc/UpdateIcon()
icon_state = "[on ? "On" : "Off"][inserted_item ? "Beaker" : ""]"
item_state = icon_state
/obj/item/milking_machine/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/milking_machine/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, "<span class='notice'>[src] stops pumping. [inserted_item] is full.</span>")
on = FALSE
STOP_PROCESSING(SSobj, src)
UpdateIcon()
/obj/item/milking_machine/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/milking_machine/penis/UpdateIcon()
icon_state = "Penis[on ? "On" : "Off"][inserted_item ? "Beaker" : ""]"
item_state = icon_state

Before

Width:  |  Height:  |  Size: 772 B

After

Width:  |  Height:  |  Size: 772 B

@@ -9,6 +9,9 @@
var/size_name = "average"
shape = "single"
var/sack_size = BALLS_SACK_SIZE_DEF
var/cached_size = 6
fluid_mult = 0.133 // Set to a lower value due to production scaling with size (I.E. 6 inches the "normal" amount)
fluid_max_volume = 3
fluid_id = "semen"
producing = TRUE
can_masturbate_with = FALSE
@@ -19,15 +22,14 @@
/obj/item/organ/genital/testicles/on_life()
if(QDELETED(src))
return
if(reagents && producing)
if(!reagents || !owner)
return
reagents.maximum_volume = fluid_max_volume * cached_size// fluid amount is also scaled by the size of the organ
if(fluid_id && producing)
if(reagents.total_volume == 0) // Apparently, 0.015 gets rounded down to zero and no reagents are created if we don't start it with 0.1 in the tank.
fluid_rate = 0.1
else
fluid_rate = CUM_RATE
if(reagents.total_volume >= 5)
fluid_mult = 0.5
else
fluid_mult = 1
fluid_rate = CUM_RATE * cached_size * fluid_mult // fluid rate is scaled by the size of the organ
generate_cum()
/obj/item/organ/genital/testicles/proc/generate_cum()
@@ -42,7 +44,7 @@
if(!linked_organ)
return FALSE
reagents.isolate_reagent(fluid_id)//remove old reagents if it changed and just clean up generally
reagents.add_reagent(fluid_id, (fluid_mult * fluid_rate))//generate the cum
reagents.add_reagent(fluid_id, (fluid_rate))//generate the cum
/obj/item/organ/genital/testicles/update_link()
if(owner && !QDELETED(src))
@@ -50,7 +52,8 @@
if(linked_organ)
linked_organ.linked_organ = src
size = linked_organ.size
var/obj/item/organ/genital/penis/O = linked_organ
cached_size = O.length
else
if(linked_organ)
linked_organ.linked_organ = null
@@ -10,14 +10,3 @@
result = /obj/item/aicard/potato
category = CAT_ROBOT
/datum/crafting_recipe/milker
name = "Milking Machine"
reqs = list(/obj/item/stack/cable_coil = 5, /obj/item/stack/sheet/plastic = 2, /obj/item/stack/rods = 2, /obj/item/stack/sheet/cardboard = 1, /obj/item/reagent_containers/glass/beaker = 2, /obj/item/stock_parts/manipulator = 1)
result = /obj/item/milker
tools = list(TOOL_WELDER, TOOL_SCREWDRIVER, TOOL_WIRECUTTER)
category = CAT_MISC
/datum/crafting_recipe/milker/penis
name = "Penis Milking Machine"
reqs = list(/obj/item/stack/cable_coil = 5, /obj/item/stack/sheet/plastic = 2, /obj/item/stack/rods = 1, /obj/item/stack/sheet/cardboard = 1, /obj/item/reagent_containers/glass/beaker/large = 1, /obj/item/stock_parts/manipulator = 1)
result = /obj/item/milker/penis
@@ -9,7 +9,7 @@
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
@@ -42,11 +42,11 @@
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)
@@ -75,9 +75,9 @@
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
+4
View File
@@ -2875,11 +2875,14 @@
#include "code\modules\zombie\items.dm"
#include "code\modules\zombie\organs.dm"
#include "hyperstation\code\gamemode\werewolf\werewolf.dm"
#include "hyperstation\code\mobs\hugbot.dm"
#include "hyperstation\code\mobs\mimic.dm"
#include "hyperstation\code\mobs\werewolf.dm"
#include "hyperstation\code\modules\antagonists\werewolf\werewolf.dm"
#include "hyperstation\code\modules\crafting\recipes.dm"
#include "hyperstation\code\obj\decal.dm"
#include "hyperstation\code\obj\fluff.dm"
#include "hyperstation\code\obj\milking machine.dm"
#include "hyperstation\code\obj\plushes.dm"
#include "hyperstation\code\obj\pregnancytester.dm"
#include "hyperstation\code\obj\rewards.dm"
@@ -3020,6 +3023,7 @@
#include "modular_citadel\code\modules\clothing\under\trek_under.dm"
#include "modular_citadel\code\modules\clothing\under\turtlenecks.dm"
#include "modular_citadel\code\modules\clothing\under\under.dm"
#include "modular_citadel\code\modules\crafting\recipes.dm"
#include "modular_citadel\code\modules\custom_loadout\custom_items.dm"
#include "modular_citadel\code\modules\custom_loadout\load_to_mob.dm"
#include "modular_citadel\code\modules\custom_loadout\read_from_file.dm"