From 7c77f2d2e3b7c90c8f1a54f6b4bf5b2a0835b233 Mon Sep 17 00:00:00 2001
From: Ghommie <42542238+Ghommie@users.noreply.github.com>
Date: Thu, 3 Oct 2019 08:57:35 +0200
Subject: [PATCH] testing...
---
code/__DEFINES/status_effects.dm | 2 +-
.../code/modules/arousal/genitals.dm | 14 +++++++++++---
.../code/modules/arousal/organs/breasts.dm | 4 ++--
.../code/modules/arousal/organs/penis.dm | 10 ++++++----
.../code/modules/arousal/organs/testicles.dm | 15 +++++----------
modular_citadel/icons/obj/genitals/hud.dmi | Bin 2019 -> 1992 bytes
6 files changed, 25 insertions(+), 20 deletions(-)
diff --git a/code/__DEFINES/status_effects.dm b/code/__DEFINES/status_effects.dm
index 05309333af..135a8eb679 100644
--- a/code/__DEFINES/status_effects.dm
+++ b/code/__DEFINES/status_effects.dm
@@ -74,7 +74,7 @@
#define STATUS_EFFECT_BREASTS_ENLARGEMENT /datum/status_effect/chem/breast_enlarger //Applied slowdown due to the ominous bulk.
-#define STATUS_EFFECT_PENIS_ENLARGEMENT //More applied slowdown, just like the above.
+#define STATUS_EFFECT_PENIS_ENLARGEMENT /datum/status_effect/chem/penis_enlarger //More applied slowdown, just like the above.
/////////////
// NEUTRAL //
/////////////
diff --git a/modular_citadel/code/modules/arousal/genitals.dm b/modular_citadel/code/modules/arousal/genitals.dm
index 593874496a..d94f70ecef 100644
--- a/modular_citadel/code/modules/arousal/genitals.dm
+++ b/modular_citadel/code/modules/arousal/genitals.dm
@@ -16,7 +16,7 @@
var/aroused_state = FALSE //Boolean used in icon_state strings
var/aroused_amount = 50 //This is a num from 0 to 100 for arousal percentage for when to use arousal state icons.
var/obj/item/organ/genital/linked_organ
- var/linked_organ_slot //only one of the two organs needs this to be set up. update_link() will handle linking the rest.
+ var/linked_organ_slot //used for linking an apparatus' organ to its other half on update_link().
var/layer_index = GENITAL_LAYER_INDEX //Order should be very important. FIRST vagina, THEN testicles, THEN penis, as this affects the order they are rendered in.
/obj/item/organ/genital/Initialize(mapload, mob/living/carbon/human/H)
@@ -114,7 +114,6 @@
/obj/item/organ/genital/proc/update_appearance()
if(!owner || owner.stat == DEAD)
aroused_state = FALSE
- return
/obj/item/organ/genital/on_life()
if(!reagents || !owner)
@@ -138,9 +137,13 @@
/obj/item/organ/genital/proc/update_link(removing = FALSE)
if(!removing && owner)
+ if(linked_organ)
+ return
linked_organ = owner.getorganslot(linked_organ_slot)
if(linked_organ)
linked_organ.linked_organ = src
+ linked_organ.upon_link()
+ upon_link()
return TRUE
else
if(linked_organ)
@@ -148,11 +151,15 @@
linked_organ = null
return FALSE
+//post organ duo making arrangements.
+/obj/item/organ/genital/proc/upon_link()
+ return
+
/obj/item/organ/genital/Insert(mob/living/carbon/M, special = FALSE, drop_if_replaced = TRUE)
. = ..()
if(.)
update()
- RegisterSignal(owner, COMSIG_MOB_DEATH, .proc/update)
+ RegisterSignal(owner, COMSIG_MOB_DEATH, .proc/update_appearance)
/obj/item/organ/genital/Remove(mob/living/carbon/M, special = FALSE, drop_if_replaced = TRUE)
. = ..()
@@ -313,6 +320,7 @@
genital_overlay.color = "#[H.dna.features["vag_color"]]"
if(layer == GENITALS_FRONT_LAYER && CHECK_BITFIELD(G.genital_flags, GENITAL_THROUGH_CLOTHES))
+ genital_overlay.layer = -GENITALS_EXPOSED_LAYER
LAZYADD(fully_exposed, genital_overlay) // to be added to a layer with higher priority than clothes, hence the name of the bitflag.
else
standing += genital_overlay
diff --git a/modular_citadel/code/modules/arousal/organs/breasts.dm b/modular_citadel/code/modules/arousal/organs/breasts.dm
index fe502ab66e..6299f68b6c 100644
--- a/modular_citadel/code/modules/arousal/organs/breasts.dm
+++ b/modular_citadel/code/modules/arousal/organs/breasts.dm
@@ -68,7 +68,7 @@
/obj/item/organ/genital/breasts/modify_size(modifier, min = -INFINITY, max = INFINITY)
var/new_value = CLAMP(cached_size + modifier, min, max)
- if(new_value == prev_size)
+ if(new_value == cached_size)
return
prev_size = cached_size
cached_size = new_value
@@ -97,7 +97,7 @@
var/status_effect = owner.has_status_effect(STATUS_EFFECT_BREASTS_ENLARGEMENT)
if(enlargement && !status_effect)
owner.apply_status_effect(STATUS_EFFECT_BREASTS_ENLARGEMENT)
- else if(status_effect)
+ else if(!enlargement && status_effect)
owner.remove_status_effect(STATUS_EFFECT_BREASTS_ENLARGEMENT)
if(rounded_cached < 16 && owner)//Because byond doesn't count from 0, I have to do this.
diff --git a/modular_citadel/code/modules/arousal/organs/penis.dm b/modular_citadel/code/modules/arousal/organs/penis.dm
index 5df9f30fdd..6b9e5024df 100644
--- a/modular_citadel/code/modules/arousal/organs/penis.dm
+++ b/modular_citadel/code/modules/arousal/organs/penis.dm
@@ -7,6 +7,7 @@
slot = ORGAN_SLOT_PENIS
masturbation_verb = "stroke"
genital_flags = CAN_MASTURBATE_WITH|CAN_CLIMAX_WITH
+ linked_organ_slot = ORGAN_SLOT_TESTICLES
fluid_transfer_factor = 0.5
size = 2 //arbitrary value derived from length and girth for sprites.
layer_index = PENIS_LAYER_INDEX
@@ -17,13 +18,13 @@
/obj/item/organ/genital/penis/modify_size(modifier, min = -INFINITY, max = INFINITY)
var/new_value = CLAMP(length + modifier, min, max)
- if(new_value == prev_length)
+ if(new_value == length)
return
prev_length = length
length = CLAMP(length + modifier, min, max)
update()
-/obj/item/organ/genital/penis/update_size()
+/obj/item/organ/genital/penis/update_size(modified = FALSE)
if(length < 0)//I don't actually know what round() does to negative numbers, so to be safe!!
if(owner)
to_chat(owner, "You feel your tallywacker shrinking away from your body as your groin flattens out!")
@@ -51,10 +52,11 @@
var/status_effect = owner.has_status_effect(STATUS_EFFECT_PENIS_ENLARGEMENT)
if(enlargement && !status_effect)
owner.apply_status_effect(STATUS_EFFECT_PENIS_ENLARGEMENT)
- else if(status_effect)
+ else if(!enlargement && status_effect)
owner.remove_status_effect(STATUS_EFFECT_PENIS_ENLARGEMENT)
if(linked_organ)
- linked_organ.update_size(new_size - size)
+ linked_organ.size = CLAMP(size + new_size, BALLS_SIZE_MIN, BALLS_SIZE_MAX)
+ linked_organ.update()
size = new_size
if(owner)
diff --git a/modular_citadel/code/modules/arousal/organs/testicles.dm b/modular_citadel/code/modules/arousal/organs/testicles.dm
index 06f40b5b51..547674a5f1 100644
--- a/modular_citadel/code/modules/arousal/organs/testicles.dm
+++ b/modular_citadel/code/modules/arousal/organs/testicles.dm
@@ -14,7 +14,6 @@
fluid_id = "semen"
masturbation_verb = "massage"
layer_index = TESTICLES_LAYER_INDEX
- var/size_linked = FALSE
/obj/item/organ/genital/testicles/generate_fluid()
if(!linked_organ && !update_link())
@@ -23,16 +22,12 @@
if(. && reagents.holder_full())
to_chat(owner, "Your balls finally feel full, again.")
-/obj/item/organ/genital/testicles/update_link(removing = FALSE)
- . = ..()
- if(. && !size_linked)
- size = linked_organ.size
- update()
- size_linked = TRUE
+/obj/item/organ/genital/testicles/upon_link()
+ size = linked_organ.size
+ update_size()
+ update_appearance()
-/obj/item/organ/genital/testicles/update_size(new_size)
- if(new_size)
- size = CLAMP(size + new_size, BALLS_SIZE_MIN, BALLS_SIZE_MAX)
+/obj/item/organ/genital/testicles/update_size(modified = FALSE)
switch(size)
if(BALLS_SIZE_MIN)
size_name = "average"
diff --git a/modular_citadel/icons/obj/genitals/hud.dmi b/modular_citadel/icons/obj/genitals/hud.dmi
index bf2adcb1fcdb9c7ca35d186f72e62ced787db730..f8c8643fe0c9a7fc80760f703b441094123a338e 100644
GIT binary patch
delta 1163
zcmV;61a$l356BOYBmu{YCy699jBp11#Esqz2-1Q1C?
zK~!jg?U?6VQehZ}A2X76S#Sd|E;(z}bamFdHE8JG$h|R-Z=HNzV{$fZ;O4Av(zID~
z504g}UM;=N)4QdYXA2LH=FOTman1``wHAs*K5g3iip^8(+qR95NF;3CO5mLLYv&)(
zzC*`Oox61H)*YZnx2|0}e|PHGp?!dVJHP+oB|V8=z5Dd(9VqP^M7{_7puW;T^X^6T
zlvrLszy1RT4jMdo(2(GvA;X4`7#T7&c!+rq9MHet|L}xNAeSo?a=B6w8pf4KLlsKv
z7RU&*A2oW+*l`xdPnZ}oX>!QK3FEDM?3mG`&^>30QlYY-mWPKyoOP4KQzHDjfTD)lC0{k8#B3G=m
zvx=l_t%!`k?_u?tsI?SCtyzuVLv+l#^%Sg&iN^0CcEiR^6l~lOi{Arm-m;Z~Et{F}
zuxv^XGwuOy+)TT5+rq81J8{f=fV=nZKX^#;;QqZwf0f|@9zS{d?D_L&PoF%l
z91rm5MS4a?`U{HJhu@RDeD&((A2fCk@cMP-dX}mSV&9{B)V@dcsC|#>>G~bFr|oy#
zp03|g=opNzuK6%ZOfm3r*`&*2%r
z2!G>?k@w5LB7^
zFV^|WNlYX%U!C}0JbK?3XP0FC_>onTUHoqzfB%aEWhEuDK#HH=0`C6j5(M{89)JHA
dQ@;IGmY>1YmMPi=>Q(>%002ovPDHLkV1j69TRs2)
delta 1190
zcmV;X1X=sY591GzBmv5?C9ncB0RI4yk&%v$j*^m+m6es3mzR{3lxS#Zo}QkXnwpN0
zG{yh`00DGTPE!Ct=GbNc005Aa1p|VABw8g-g~|%9elFn12LL#klEB&BPI&+T1S?5I
zK~!jg?U?6Rl3^H!?=q97Eoj)Xz>@Zk-b%7vHW=DoV0-VKrK#;{d+)vX-n*>S5JNHQ
zl#=#8^fJUu-fr^YdHo>Qx8J!q@WA05xE=rxR*Dt(DqbRYmSAVG|MA`>eM$;{a;Jcu
z-v8mfN|i2CwoJM5zP9OGz8pJCm-2Ge`&6h{sdA+%LXmBXgjLvCv4W4QzG}7VHT?W)
z)~a2nu4UG(Q@d78KffB)t5tQ)``4>4mPi5`Gz^qlrZli&g8+#{T)&>bYrawACQX|)
zZ_%<<>o#rM0km)1rgf{9Et)rfYuco7BX@XN2c~1E&Ye32$-4xzpMfa2i#*7(J2D+)
z)&q3y*1bp1UcGwu?$bA$DX(pb?d!$ZdkLc^7RTH98s$5_6J
zzILXH3DO0CSpE_l-eNLP(ejI%dGiJ`3J;%=6dGqJbo13#{&zd=dzJ~=17cF+M
zge7+^TDX9|ho#FRmU9rXY$<&YD
zrOQ{Y+PQN18t)$9`i+~nZdPh>a)MNcl+oSzX
z+hhGs+k^C-HeP5$qkRA2<9nsXKI66Tr1U+A65trHcUiJNoCAHbjNFs=y*fqDL5kWHPu%yP
z4Tcn_7!03X@#KB4O-*x3s@646z5k7A>8VagPc!EH9MbOpFDCKVe27h7ay<3^_ZFJI
ziT~o8N%+TK63_jB=YGI~=YGI*KVZdkKj5M0Li>IIfp-6YW6K)e4j==VPcY2Ty$k3rh^c>iON_C4DF7+AlPdK|3ZNj(bI
z@1!0_r~hvHkq6UviOzi<$C#eMEwhoc_