From b9bbdfdedfc6f3df27e7a0391b1dcbc5225d4f3d Mon Sep 17 00:00:00 2001 From: Putnam Date: Mon, 7 Sep 2020 01:23:31 -0700 Subject: [PATCH] Fixes genital fuid production. --- code/modules/arousal/arousal.dm | 2 +- code/modules/arousal/genitals.dm | 24 +++++++----------------- 2 files changed, 8 insertions(+), 18 deletions(-) diff --git a/code/modules/arousal/arousal.dm b/code/modules/arousal/arousal.dm index c9b2690784..97de452398 100644 --- a/code/modules/arousal/arousal.dm +++ b/code/modules/arousal/arousal.dm @@ -68,7 +68,7 @@ R.reaction(turfing ? target : target.loc, TOUCH, 1, 0) if(!turfing) R.trans_to(target, R.total_volume * (spill ? G.fluid_transfer_factor : 1)) - G.time_since_last_orgasm = 0 + G.last_orgasmed = world.time R.clear_reagents() /mob/living/carbon/human/proc/mob_climax_outside(obj/item/organ/genital/G, mb_time = 30) //This is used for forced orgasms and other hands-free climaxes diff --git a/code/modules/arousal/genitals.dm b/code/modules/arousal/genitals.dm index 8f88076af9..65eeca75fe 100644 --- a/code/modules/arousal/genitals.dm +++ b/code/modules/arousal/genitals.dm @@ -16,7 +16,7 @@ var/fluid_efficiency = 1 var/fluid_rate = CUM_RATE var/fluid_mult = 1 - var/time_since_last_orgasm = 500 + var/last_orgasmed = 0 var/aroused_state = FALSE //Boolean used in icon_state strings var/obj/item/organ/genital/linked_organ var/linked_organ_slot //used for linking an apparatus' organ to its other half on update_link(). @@ -24,10 +24,6 @@ /obj/item/organ/genital/Initialize(mapload, do_update = TRUE) . = ..() - if(fluid_id) - create_reagents(fluid_max_volume, NONE, NO_REAGENTS_VALUE) - if(CHECK_BITFIELD(genital_flags, GENITAL_FUID_PRODUCTION)) - reagents.add_reagent(fluid_id, fluid_max_volume) if(do_update) update() @@ -140,8 +136,6 @@ /obj/item/organ/genital/proc/modify_size(modifier, min = -INFINITY, max = INFINITY) fluid_max_volume += modifier*2.5 fluid_rate += modifier/10 - if(reagents) - reagents.maximum_volume = fluid_max_volume return /obj/item/organ/genital/proc/update_size() @@ -151,18 +145,14 @@ if(!owner || owner.stat == DEAD) aroused_state = FALSE -/obj/item/organ/genital/on_life() - . = ..() - if(!reagents || !.) - return - reagents.maximum_volume = fluid_max_volume - if(fluid_id && CHECK_BITFIELD(genital_flags, GENITAL_FUID_PRODUCTION)) - time_since_last_orgasm++ - /obj/item/organ/genital/proc/generate_fluid(datum/reagents/R) - var/amount = clamp(fluid_rate * time_since_last_orgasm * fluid_mult,0,fluid_max_volume) + var/amount = clamp((fluid_rate * ((world.time - last_orgasmed) / SSmobs.wait) * fluid_mult),0,fluid_max_volume) R.clear_reagents() - R.add_reagent(fluid_id,amount) + R.maximum_volume = fluid_max_volume + if(fluid_id) + R.add_reagent(fluid_id,amount) + else if(linked_organ?.fluid_id) + R.add_reagent(linked_organ.fluid_id,amount) return TRUE /obj/item/organ/genital/proc/update_link()