diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm
index 110188a85a..8e98e80d78 100644
--- a/code/__DEFINES/misc.dm
+++ b/code/__DEFINES/misc.dm
@@ -32,13 +32,14 @@
//Human Overlays Indexes/////////
//citadel code
-#define MUTATIONS_LAYER 30 //mutations. Tk headglows, cold resistance glow, etc
-#define BODY_BEHIND_LAYER 29 //certain mutantrace features (tail when looking south) that must appear behind the body parts
-#define GENITALS_BEHIND_LAYER 28
-#define BODYPARTS_LAYER 27 //Initially "AUGMENTS", this was repurposed to be a catch-all bodyparts flag
-#define BODY_ADJ_LAYER 26 //certain mutantrace features (snout, body markings) that must appear above the body parts
-#define GENITALS_ADJ_LAYER 25
-#define BODY_LAYER 24 //underwear, undershirts, socks, eyes, lips(makeup)
+#define MUTATIONS_LAYER 31 //mutations. Tk headglows, cold resistance glow, etc
+#define BODY_BEHIND_LAYER 30 //certain mutantrace features (tail when looking south) that must appear behind the body parts
+#define GENITALS_BEHIND_LAYER 29
+#define BODYPARTS_LAYER 28 //Initially "AUGMENTS", this was repurposed to be a catch-all bodyparts flag
+#define BODY_ADJ_LAYER 27 //certain mutantrace features (snout, body markings) that must appear above the body parts
+#define GENITALS_ADJ_LAYER 26
+#define BODY_LAYER 25 //underwear, undershirts, socks, eyes, lips(makeup)
+#define GENITALS_FRONT_LAYER 24
#define FRONT_MUTATIONS_LAYER 23 //mutations that should appear above body, body_adj and bodyparts layer (e.g. laser eyes)
#define DAMAGE_LAYER 22 //damage indicators (cuts and burns)
#define UNIFORM_LAYER 21
@@ -48,7 +49,7 @@
#define EARS_LAYER 17
#define SUIT_LAYER 16
#define BODY_TAUR_LAYER 15
-#define GENITALS_FRONT_LAYER 14 //Draws some genitalia above clothes and the TAUR body if need be.
+#define GENITALS_FRONT_LAYER 14
#define GLASSES_LAYER 13
#define BELT_LAYER 12 //Possible make this an overlay of somethign required to wear a belt?
#define SUIT_STORE_LAYER 11
@@ -62,7 +63,7 @@
#define HANDS_LAYER 3
#define BODY_FRONT_LAYER 2
#define FIRE_LAYER 1 //If you're on fire
-#define TOTAL_LAYERS 30 //KEEP THIS UP-TO-DATE OR SHIT WILL BREAK ;_;
+#define TOTAL_LAYERS 31 //KEEP THIS UP-TO-DATE OR SHIT WILL BREAK ;_;
//Human Overlay Index Shortcuts for alternate_worn_layer, layers
//Because I *KNOW* somebody will think layer+1 means "above"
diff --git a/code/__HELPERS/global_lists.dm b/code/__HELPERS/global_lists.dm
index e7fe1b354d..81881f76b5 100644
--- a/code/__HELPERS/global_lists.dm
+++ b/code/__HELPERS/global_lists.dm
@@ -55,9 +55,7 @@
init_sprite_accessory_subtypes(/datum/sprite_accessory/xeno_dorsal, xeno_dorsal_list)
//genitals
init_sprite_accessory_subtypes(/datum/sprite_accessory/penis, cock_shapes_list)
- init_sprite_accessory_subtypes(/datum/sprite_accessory/vagina, vagina_shapes_list)
- init_sprite_accessory_subtypes(/datum/sprite_accessory/breasts, breasts_shapes_list)
- breasts_size_list = list("a","b","c","d","e") //We need the list to choose from initialized, but it's no longer a sprite_accessory thing.
+ init_sprite_accessory_subtypes(/datum/sprite_accessory/breasts, breasts_size_list)
//Species
for(var/spath in subtypesof(/datum/species))
diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm
index f73220abde..61e7f9364a 100644
--- a/code/__HELPERS/mobs.dm
+++ b/code/__HELPERS/mobs.dm
@@ -138,10 +138,8 @@
"has_breasts" = FALSE,
"breasts_color" = pick("FFFFFF","7F7F7F", "7FFF7F", "7F7FFF", "FF7F7F", "7FFFFF", "FF7FFF", "FFFF7F"),
"breasts_size" = pick(breasts_size_list),
- "breasts_shape" = pick(breasts_shapes_list),
"breasts_fluid" = "milk",
"has_vag" = FALSE,
- "vag_shape" = pick(vagina_shapes_list),
"vag_color" = pick("FFFFFF","7F7F7F", "7FFF7F", "7F7FFF", "FF7F7F", "7FFFFF", "FF7FFF", "FFFF7F"),
"vag_clits" = 1,
"vag_clit_diam" = 0.25,
diff --git a/code/citadel/_cit_helpers.dm b/code/citadel/_cit_helpers.dm
index 52c2716ec2..2aed219978 100644
--- a/code/citadel/_cit_helpers.dm
+++ b/code/citadel/_cit_helpers.dm
@@ -53,9 +53,7 @@ var/global/list/xeno_dorsal_list = list()
//Genitals and Arousal Lists
var/global/list/cock_shapes_list = list()//global_lists.dm for the list initializations
-var/global/list/breasts_shapes_list = list()
var/global/list/breasts_size_list = list()
-var/global/list/vagina_shapes_list = list()
var/global/list/cum_into_containers_list = list(/obj/item/weapon/reagent_containers/food/snacks/pie)
var/global/list/dick_nouns = list("dick","cock","member","shaft")
var/global/list/cum_id_list = list("semen")
diff --git a/code/citadel/icons/breasts.dmi b/code/citadel/icons/breasts.dmi
index 7e4a631876..7735fad868 100644
Binary files a/code/citadel/icons/breasts.dmi and b/code/citadel/icons/breasts.dmi differ
diff --git a/code/citadel/icons/breasts_onmob.dmi b/code/citadel/icons/breasts_onmob.dmi
index 32d2832388..12f23ad56d 100644
Binary files a/code/citadel/icons/breasts_onmob.dmi and b/code/citadel/icons/breasts_onmob.dmi differ
diff --git a/code/citadel/icons/vagina_onmob.dmi b/code/citadel/icons/vagina_onmob.dmi
index 0f939c03f6..867ede99d5 100644
Binary files a/code/citadel/icons/vagina_onmob.dmi and b/code/citadel/icons/vagina_onmob.dmi differ
diff --git a/code/citadel/organs/breasts.dm b/code/citadel/organs/breasts.dm
index f7cbbeb527..356ef77c1a 100644
--- a/code/citadel/organs/breasts.dm
+++ b/code/citadel/organs/breasts.dm
@@ -6,11 +6,11 @@
zone = "chest"
slot = "breasts"
w_class = 3
- size = BREASTS_SIZE_DEF
+ size = "e"
fluid_id = "milk"
+ var/cup_size = BREASTS_SIZE_DEF
var/amount = 2
producing = TRUE
- shape = "pair"
/obj/item/organ/genital/breasts/Initialize()
create_reagents(fluid_max_volume)
@@ -31,23 +31,3 @@
return FALSE
reagents.isolate_reagent(fluid_id)
reagents.add_reagent(fluid_id, (fluid_mult * fluid_rate))
-
-/obj/item/organ/genital/breasts/update_appearance()
- var/string = "breasts_[lowertext(shape)]_[size]"
- icon_state = sanitize_text(string)
- var/lowershape = lowertext(shape)
- switch(lowershape)
- if("pair")
- desc = "That's a pair of breasts."
- else
- desc = "That's breasts, they seem to be quite exotic."
- if (size)
- desc += " You estimate they're about [size]-cup size."
- else
- desc += " You wouldn't measure them in cup sizes."
- if(producing)
- desc += "\nThey're leaking [fluid_id]."
- else
- desc += "\nThey do not seem to be producing liquids."
- if(owner)
- color = "#[owner.dna.features["breasts_color"]]"
\ No newline at end of file
diff --git a/code/citadel/organs/genitals.dm b/code/citadel/organs/genitals.dm
index 0a5410bd40..d5d1e8c541 100644
--- a/code/citadel/organs/genitals.dm
+++ b/code/citadel/organs/genitals.dm
@@ -100,14 +100,13 @@
// T.color = skintone2hex(skin_tone)
// else
// T.color = "#[dna.features["balls_color"]]"
- if(T)
- T.size = dna.features["balls_size"]
- T.sack_size = dna.features["balls_sack_size"]
- T.fluid_id = dna.features["balls_fluid"]
- T.fluid_rate = dna.features["balls_cum_rate"]
- T.fluid_mult = dna.features["balls_cum_mult"]
- T.fluid_efficiency = dna.features["balls_efficiency"]
- T.update()
+ T.size = dna.features["balls_size"]
+ T.sack_size = dna.features["balls_sack_size"]
+ T.fluid_id = dna.features["balls_fluid"]
+ T.fluid_rate = dna.features["balls_cum_rate"]
+ T.fluid_mult = dna.features["balls_cum_mult"]
+ T.fluid_efficiency = dna.features["balls_efficiency"]
+ T.update()
/mob/living/carbon/human/proc/give_breasts()
if(!dna)
@@ -117,15 +116,9 @@
if(!getorganslot("breasts"))
var/obj/item/organ/genital/breasts/B = new
B.Insert(src)
- if(B)
- if(dna.species.use_skintones && dna.features["genitals_use_skintone"])
- B.color = skintone2hex(skin_tone)
- else
- B.color = "#[dna.features["breasts_color"]]"
- B.size = dna.features["breasts_size"]
- B.shape = dna.features["breasts_shape"]
- B.fluid_id = dna.features["breasts_fluid"]
- B.update()
+ B.cup_size = dna.features["breasts_size"]
+ B.fluid_id = dna.features["breasts_fluid"]
+ B.update()
/mob/living/carbon/human/proc/give_ovipositor()
@@ -138,14 +131,11 @@
if(!getorganslot("vagina"))
var/obj/item/organ/genital/vagina/V = new
V.Insert(src)
- if(V)
- if(dna.species.use_skintones && dna.features["genitals_use_skintone"])
- V.color = skintone2hex(skin_tone)
- else
- V.color = "[dna.features["vag_color"]]"
- V.shape = "[dna.features["vag_shape"]]"
- V.update()
-
+ if(dna.species.use_skintones && dna.features["genitals_use_skintone"])
+ V.color = skintone2hex(skin_tone)
+ else
+ V.color = "[dna.features["vag_color"]]"
+ V.update()
/mob/living/carbon/human/proc/give_womb()
if(!dna)
return FALSE
@@ -154,8 +144,7 @@
if(!getorganslot("womb"))
var/obj/item/organ/genital/womb/W = new
W.Insert(src)
- if(W)
- W.update()
+ W.update()
/datum/species/proc/genitals_layertext(layer)
@@ -194,12 +183,13 @@
return
var/list/genitals_to_add = list()
- var/list/relevant_layers = list(GENITALS_BEHIND_LAYER, GENITALS_ADJ_LAYER, GENITALS_FRONT_LAYER)
+ var/list/relevent_layers = list(GENITALS_BEHIND_LAYER, GENITALS_ADJ_LAYER, GENITALS_FRONT_LAYER)
var/list/standing = list()
- var/size = null
+ var/size
- for(var/L in relevant_layers) //Less hardcode
- H.remove_overlay(L)
+ H.remove_overlay(GENITALS_BEHIND_LAYER)
+ H.remove_overlay(GENITALS_ADJ_LAYER)
+ H.remove_overlay(GENITALS_FRONT_LAYER)
if(H.disabilities & HUSK)
return
@@ -208,15 +198,14 @@
if(H.is_groin_exposed(worn_stuff))
if(H.has_penis())
genitals_to_add += H.getorganslot("penis")
- else
- if(H.has_vagina()) //Sadly, a penis would cover the vagina and they use the same layer, so don't draw both.
- genitals_to_add += H.getorganslot("vagina")
+ if(H.has_vagina())
+ genitals_to_add += H.getorganslot("vagina")
if(H.is_chest_exposed(worn_stuff))
if(H.has_breasts())
genitals_to_add += H.getorganslot("breasts")
var/image/I
//start applying overlays
- for(var/layer in relevant_layers)
+ for(var/layer in relevent_layers)
var/layertext = genitals_layertext(layer)
for(var/obj/item/organ/genital/G in genitals_to_add)
var/datum/sprite_accessory/S
@@ -224,12 +213,6 @@
if(/obj/item/organ/genital/penis)
S = cock_shapes_list[G.shape]
size = G.size
- if(/obj/item/organ/genital/vagina)
- S = vagina_shapes_list[G.shape]
- size = G.size
- if(/obj/item/organ/genital/breasts)
- S = breasts_shapes_list[G.shape]
- size = G.size
if(!S || S.icon_state == "none")
continue
@@ -243,8 +226,6 @@
I.color = "#[H.dna.features["cock_color"]]"
if("breasts_color")
I.color = "#[H.dna.features["breasts_color"]]"
- if("vag_color")
- I.color = "#[H.dna.features["vag_color"]]"
if(MUTCOLORS)
if(fixed_mut_color)
I.color = "#[fixed_mut_color]"
@@ -265,5 +246,6 @@
H.overlays_standing[layer] = standing.Copy()
standing = list()
- for(var/L in relevant_layers)
- H.apply_overlay(L)
\ No newline at end of file
+ H.apply_overlay(GENITALS_BEHIND_LAYER)
+ H.apply_overlay(GENITALS_ADJ_LAYER)
+ H.apply_overlay(GENITALS_FRONT_LAYER)
\ No newline at end of file
diff --git a/code/citadel/organs/genitals_sprite_accessories.dm b/code/citadel/organs/genitals_sprite_accessories.dm
index d2b802e9dd..2ec52b80c5 100644
--- a/code/citadel/organs/genitals_sprite_accessories.dm
+++ b/code/citadel/organs/genitals_sprite_accessories.dm
@@ -27,57 +27,15 @@
icon_state = "tapered"
name = "Tapered"
-//Vaginas
-/datum/sprite_accessory/vagina
- icon = 'code/citadel/icons/vagina_onmob.dmi'
- icon_state = null
- name = "vagina"
- gender_specific = 0
- color_src = "vag_color"
- locked = 0
-
-/datum/sprite_accessory/vagina/human
- icon_state = "human"
- name = "Human"
-
-/datum/sprite_accessory/vagina/gaping
- icon_state = "gaping"
- name = "Gaping"
-
-//I think this one is intended for arousal... but it would only work for human vaginas in this case...
-//So I'm leaving it as a selectable option until we can make/need variants for the sprites to change based on arousal.
-/datum/sprite_accessory/vagina/dripping
- icon_state = "dripping"
- name = "Dripping"
-
-/datum/sprite_accessory/vagina/tentacles
- icon_state = "tentacle"
- name = "Tentacle"
-
-/datum/sprite_accessory/vagina/dentata
- icon_state = "dentata"
- name = "Dentata"
-
-/datum/sprite_accessory/vagina/hairy
- icon_state = "hairy"
- name = "Hairy"
-
-
//BREASTS BE HERE
/datum/sprite_accessory/breasts
icon = 'code/citadel/icons/breasts_onmob.dmi'
icon_state = null
name = "breasts"
gender_specific = 0
- color_src = "breasts_color"
+ color_src = MUTCOLORS2 //I'll have skin_tone override this if the species uses them
locked = 0
-
-
-/datum/sprite_accessory/breasts/pair
- icon_state = "pair"
- name = "Pair"
-
-/*!!ULTRACOMPRESSEDEDITION!!
+/*!!ULTRACOMPRESSEDEDITION!!*/
/datum/sprite_accessory/breasts/a
icon_state = "a"
name = "A"
@@ -132,8 +90,6 @@
icon_state = "h"
name = "HH"
locked = 1
-*/// Sorry for ruining your things
-
//OVIPOSITORS BE HERE
/datum/sprite_accessory/ovipositor
@@ -144,6 +100,10 @@
color_src = "cock_color"
locked = 0
+/datum/sprite_accessory/ovipositor/knotted
+ icon_state = "none"
+ name = "None"
+
/datum/sprite_accessory/ovipositor/knotted
icon_state = "knotted"
name = "Knotted"
diff --git a/code/citadel/organs/penis.dm b/code/citadel/organs/penis.dm
index e47498620c..6c88f28179 100644
--- a/code/citadel/organs/penis.dm
+++ b/code/citadel/organs/penis.dm
@@ -44,7 +44,7 @@
if(lowershape in knotted_types)
if(lowershape == "barbknot")
lowershape = "barbed, knotted"
- desc = "That's a [lowershape] penis. You estimate it's about [round(length, 0.25)] inch[length > 1 ? "es" : ""] long, [round(girth, 0.25)] inch[girth > 1 ? "es" : ""] around the shaft \
+ desc = "That's a [lowershape] penis. You estimate it's about [round(length, 0.25)] inch[length > 1 ? "es" : ""] long, [round(girth, 0.25)] inch[length > 1 ? "es" : ""] around the shaft \
and [round(length * knot_girth_ratio, 0.25)] inch[length > 1 ? "es" : ""] around the knot."
else
desc = "That's a [lowershape] penis. You estimate it's about [round(length, 0.25)] inch[length > 1 ? "es" : ""] long and [round(girth, 0.25)] inch[length > 1 ? "es" : ""] around."
diff --git a/code/citadel/organs/vagina.dm b/code/citadel/organs/vagina.dm
index 50d44d3b77..bcbb23d8e9 100644
--- a/code/citadel/organs/vagina.dm
+++ b/code/citadel/organs/vagina.dm
@@ -5,60 +5,13 @@
icon_state = "vagina"
zone = "groin"
slot = "vagina"
- size = 1 //There is only 1 size right now
can_masturbate_with = 1
w_class = 3
- var/wetness = FALSE
+ var/wetness = 1
var/cap_length = 8//D E P T H (cap = capacity)
var/cap_girth = 12
var/cap_girth_ratio = 1.5
var/clits = 1
var/clit_diam = 0.25
var/clit_len = 0.25
- var/list/vag_types = list("tentacle", "dentata", "hairy")
- var/obj/item/organ/genital/womb/linked_womb
-
-
-/obj/item/organ/genital/vagina/update_appearance()
- var/string = "vagina" //Keeping this code here, so making multiple sprites for the different kinds is easier.
- icon_state = sanitize_text(string)
- var/lowershape = lowertext(shape)
-
- desc = "That's a [lowershape] vagina. You estimate it could stretch about [round(cap_length, 0.25)] inch[cap_length > 1 ? "es" : ""] deep, around something [round(cap_girth, 0.25)] inch[cap_girth > 1 ? "es" : ""] thick \
- and it has [clits > 1 ? "[clits] clits" : "a clit"], about [round(clit_len,0.25)] inch[clit_len > 1 ? "es" : ""] long and [round(clit_diam, 0.25)] inch[clit_diam > 1 ? "es" : ""] in diameter."
- switch(lowershape)
- if("tentacle")
- desc += "\nIts opening is lined with several tentacles and "
- if("dentata")
- desc += "\nThere's teeth inside it and it is "
- if("hairy")
- desc += "\nIt has quite a bit of hair growing on it and is "
- if("human")
- desc += "\nIt is taut with smooth skin, though without much hair and "
- if("gaping")
- desc += "\nIt is gaping slightly open, though without much hair and "
- if("dripping")
- desc += "\nIt is gaping slightly, inflamed and "
- else
- desc += "\nIt has an exotic shape and is "
- if(wetness)
- desc += "slick with female arousal."
- else
- desc += "not very wet."
- if(owner)
- color = "#[owner.dna.features["vag_color"]]"
-
-/obj/item/organ/genital/vagina/update_link()
- if(owner)
- linked_womb = (owner.getorganslot("womb"))
- if(linked_womb)
- linked_womb.linked_vag = src
- else
- if(linked_womb)
- linked_womb.linked_vag = null
- linked_womb = null
-
-/obj/item/organ/genital/vagina/remove_ref()
- if(linked_womb)
- linked_womb.linked_vag = null
- linked_womb = null
+ var/obj/item/organ/womb/linked_womb
diff --git a/code/citadel/organs/womb.dm b/code/citadel/organs/womb.dm
index 948bc33385..8552f20e46 100644
--- a/code/citadel/organs/womb.dm
+++ b/code/citadel/organs/womb.dm
@@ -9,20 +9,5 @@
fluid_id = "femcum"
var/obj/item/organ/genital/vagina/linked_vag
-/obj/item/organ/genital/womb/update_link()
- if(owner)
- linked_vag = (owner.getorganslot("vagina"))
- if(linked_vag)
- linked_vag.linked_womb = src
- else
- if(linked_vag)
- linked_vag.linked_womb = null
- linked_vag = null
-
-/obj/item/organ/genital/womb/remove_ref()
- if(linked_vag)
- linked_vag.linked_womb = null
- linked_vag = null
-
/obj/item/organ/genital/womb/Destroy()
return ..()
\ No newline at end of file
diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm
index c2325b2bd8..20a57f2d0e 100644
--- a/code/modules/client/preferences.dm
+++ b/code/modules/client/preferences.dm
@@ -115,10 +115,8 @@ var/list/preferences_datums = list()
"has_breasts" = FALSE,
"breasts_color" = "fff",
"breasts_size" = "C",
- "breasts_shape" = "pair",
"breasts_fluid" = "milk",
"has_vag" = FALSE,
- "vag_shape" = "human",
"vag_color" = "fff",
"vag_clits" = 1,
"vag_clit_diam" = 0.25,
@@ -355,6 +353,7 @@ var/list/preferences_datums = list()
else
dat += "High"
dat += "
"
+// dat += "Genital Colors:[features["genitals_use_skintone"] == TRUE ? "Skin Tone" : "Custom"]
"
dat += "