Rework genital layering

Creates a new mutable icon for the ass to allow it to overlap hands from one direction, and be occluded by them from another.  Butts DMI changed to reflect two sets of sprites, with directions split between them. Side-profiles trimmed to prevent it from occluding wrists.
TL;DR: Quote sprited the Whole Ass so I'm going to Use the Whole Ass.
This commit is contained in:
haha26
2021-08-04 04:03:25 -04:00
parent c07263a2ac
commit 0054c5b276
2 changed files with 35 additions and 4 deletions
Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

@@ -395,6 +395,7 @@
dna.features["cock_color"] = dna.features["breasts_color"]
return
//called every time players sprite changes, ie, moves item in hands or equiped item.
/datum/species/proc/handle_genitals(mob/living/carbon/human/H)//more like handle sadness
if(!H)//no args
CRASH("H = null")
@@ -450,6 +451,10 @@
continue
var/mutable_appearance/genital_overlay = mutable_appearance(S.icon, layer = -layer)
//creates another icon with mutable appearance, allows different layering depending on direction
var/mutable_appearance/genital_overlay_directional = mutable_appearance(S.icon, layer = -layer)
//genitals bigger than 11 inches / g-cup will appear over clothing, if accepted
//otherwise, appear under clothing
if(G.slot == "penis" || G.slot == "testicles")
@@ -469,17 +474,28 @@
genital_overlay.icon_state = "belly_[size]"
colourcode = "belly_color"
if(G.slot == "anus") //we have a different size system
//sizecheck added to prevent rendering blank icons
if(G.slot == "anus" && G.size > 0) //we have a different size system
genital_overlay.icon = 'hyperstation/icons/obj/genitals/butt.dmi'
genital_overlay.icon_state = "butt_[size]"
genital_overlay.icon_state = "butt_[size]_OTHER"
genital_overlay.layer = -ID_LAYER //in front of suit, behind bellies.
//creates directional layering by rendering twice. North has higher layer priority to occlude hands.
genital_overlay_directional.icon = 'hyperstation/icons/obj/genitals/butt.dmi'
genital_overlay_directional.icon_state = "butt_[size]_NORTH"
genital_overlay_directional.layer = -NECK_LAYER
colourcode = "butt_color"
if(use_skintones) //butts are forced a colour, either skin tones, or main colour. how ever, mutants use a darker version, because of their body tone.
genital_overlay.color = "#[skintone2hex(H.skin_tone)]"
genital_overlay.icon_state = "butt_[size]"
genital_overlay.icon_state = "butt_[size]_OTHER"
genital_overlay_directional.icon_state = "butt_[size]_NORTH"
else
genital_overlay.color = "#[H.dna.features["mcolor"]]"
genital_overlay.icon_state = "butt_[size]_m"
genital_overlay.icon_state = "butt_[size]_OTHER_m"
genital_overlay_directional.icon_state = "butt_[size]_NORTH_m"
if(S.center)
genital_overlay = center_image(genital_overlay, S.dimension_x, S.dimension_y)
@@ -507,6 +523,21 @@
standing += genital_overlay
//check whether or not there is a directional overlay
if(genital_overlay_directional)
if(S.center)
genital_overlay_directional = center_image(genital_overlay_directional, S.dimension_x, S.dimension_y)
if(use_skintones && H.dna.features["genitals_use_skintone"])
genital_overlay_directional.color = "#[skintone2hex(H.skin_tone)]"
if (colourtint)
genital_overlay_directional.color = "#[colourtint]"
else
genital_overlay_directional.color = "#[H.dna.features["butt_color"]]"
standing += genital_overlay_directional
if(LAZYLEN(standing))
H.overlays_standing[layer] = standing.Copy()
standing = list()