diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm
index bdbc34af..6f72bd48 100644
--- a/code/__DEFINES/misc.dm
+++ b/code/__DEFINES/misc.dm
@@ -66,10 +66,19 @@ Will print: "/mob/living/carbon/human/death" (you can optionally embed it in a s
//IT DOESN'T OK, IT MEANS "UNDER"
#define UNDER_SUIT_LAYER (SUIT_LAYER+1)
#define UNDER_HEAD_LAYER (HEAD_LAYER+1)
+#define UNDER_GENITALS_FRONT_LAYER (GENITALS_FRONT_LAYER+1)
+#define UNDER_HAIR_LAYER (HAIR_LAYER+1)
+#define UNDER_BACK_LAYER (BACK_LAYER+1)
+#define UNDER1_BACK_LAYER (BACK_LAYER+2)
+
//AND -1 MEANS "ABOVE", OK?, OK!?!
#define ABOVE_SHOES_LAYER (SHOES_LAYER-1)
+#define ABOVE_NECK_LAYER (NECK_LAYER-1)
+#define ABOVE_GENITALS_FRONT_LAYER (GENITALS_FRONT_LAYER-1)
+#define ABOVE2_GENITALS_FRONT_LAYER (GENITALS_FRONT_LAYER-2)
#define ABOVE_BODY_FRONT_LAYER (BODY_FRONT_LAYER-1)
+#define ABOVE_FIRE_LAYER (FIRE_LAYER-1)
//Security levels
diff --git a/code/__DEFINES/mobs.dm b/code/__DEFINES/mobs.dm
index e8986756..09b0618c 100644
--- a/code/__DEFINES/mobs.dm
+++ b/code/__DEFINES/mobs.dm
@@ -158,10 +158,14 @@
//Fatness levels, Here we go!
#define FATNESS_LEVEL_BLOB 3440
-#define FATNESS_LEVEL_IMMOBILE 1840
-#define FATNESS_LEVEL_MORBIDLY_OBESE 1240
+#define FATNESS_LEVEL_IMMOBILE 2540
+#define FATNESS_LEVEL_BARELYMOBILE 1840
+#define FATNESS_LEVEL_EXTREMELY_OBESE 1240
+#define FATNESS_LEVEL_MORBIDLY_OBESE 840
#define FATNESS_LEVEL_OBESE 440
-#define FATNESS_LEVEL_FAT 200
+#define FATNESS_LEVEL_VERYFAT 330
+#define FATNESS_LEVEL_FATTER 250
+#define FATNESS_LEVEL_FAT 170
//Nutrition levels for humans
#define NUTRITION_LEVEL_FULL 550
diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm
index 2ccde7b3..807c9255 100644
--- a/code/__DEFINES/traits.dm
+++ b/code/__DEFINES/traits.dm
@@ -64,8 +64,12 @@
#define TRAIT_DEAF "deaf"
#define TRAIT_NEARSIGHT "nearsighted"
#define TRAIT_FAT "fat"
+#define TRAIT_FATTER "fatter"
+#define TRAIT_VERYFAT "veryfat"
#define TRAIT_OBESE "obese"
#define TRAIT_MORBIDLYOBESE "morbildyobese"
+#define TRAIT_EXTREMELYOBESE "extremelyobese"
+#define TRAIT_BARELYMOBILE "barelymobile"
#define TRAIT_IMMOBILE "immobile"
#define TRAIT_BLOB "blobweight"
#define TRAIT_HUSK "husk"
diff --git a/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm b/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm
index dbb49901..c6449529 100644
--- a/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm
+++ b/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm
@@ -663,7 +663,7 @@ This is here to make the tiles around the station mininuke change when it's arme
if(istype(loneop))
loneop.weight += 1
if(loneop.weight % 5 == 0)
- message_admins("[src] is stationary in [ADMIN_VERBOSEJMP(newturf)]. The weight of Lone Operative is now [loneop.weight].")
+ // message_admins("[src] is stationary in [ADMIN_VERBOSEJMP(newturf)]. The weight of Lone Operative is now [loneop.weight].") // Commenting this out because it's a fucking pain for the admins - Sono
log_game("[src] is stationary for too long in [loc_name(newturf)], and has increased the weight of the Lone Operative event to [loneop.weight].")
else
lastlocation = newturf
diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm
index 1eafe550..5f796c91 100644
--- a/code/modules/mob/living/carbon/human/species.dm
+++ b/code/modules/mob/living/carbon/human/species.dm
@@ -1227,11 +1227,11 @@ GLOBAL_LIST_EMPTY(roundstart_races)
//LIFE//
////////
-/datum/species/proc/handle_digestion(mob/living/carbon/human/H)
- if(HAS_TRAIT(src, TRAIT_NOHUNGER))
- return //hunger is for BABIES
+///datum/species/proc/handle_digestion(mob/living/carbon/human/H)
+// if(HAS_TRAIT(src, TRAIT_NOHUNGER))
+// return //hunger is for BABIES
- //The fucking TRAIT_FAT mutation is the dumbest shit ever. It makes the code so difficult to work with
+/* //The fucking TRAIT_FAT mutation is the dumbest shit ever. It makes the code so difficult to work with
if(HAS_TRAIT(H, TRAIT_FAT))//I share your pain, past coder.
if(H.fatness < FATNESS_LEVEL_FAT)//this is a mess, indeed.
to_chat(H, "You feel fit again!")//GS13 Added a whole bunch of new fatness traits. Truly I am a masochist
@@ -1275,7 +1275,7 @@ GLOBAL_LIST_EMPTY(roundstart_races)
ADD_TRAIT(H, TRAIT_IMMOBILE, OBESITY)
H.update_body()
H.update_inv_w_uniform()
- H.update_inv_wear_suit()
+ H.update_inv_wear_suit()
else if(HAS_TRAIT(H, TRAIT_IMMOBILE))
if(H.fatness < FATNESS_LEVEL_IMMOBILE)
to_chat(H, "You feel less restrained by your fat!")
@@ -1306,6 +1306,276 @@ GLOBAL_LIST_EMPTY(roundstart_races)
H.update_body()
H.update_inv_w_uniform()
H.update_inv_wear_suit()
+*/
+/datum/species/proc/handle_digestion(mob/living/carbon/human/H)
+ var/obj/item/organ/genital/anus/B = H.getorganslot("anus")
+ var/obj/item/organ/genital/belly/C = H.getorganslot("belly")
+ var/obj/item/organ/genital/breasts/D = H.getorganslot("breasts")
+ if(HAS_TRAIT(src, TRAIT_NOHUNGER))
+ return //hunger is for BABIES
+
+ //The fucking TRAIT_FAT mutation is the dumbest shit ever. It makes the code so difficult to work with
+ if(HAS_TRAIT(H, TRAIT_FAT))//I share your pain, past coder.
+ if(H.fatness < FATNESS_LEVEL_FAT)//this is a mess, indeed.
+ to_chat(H, "You feel fit again!")//GS13 Added a whole bunch of new fatness traits. Truly I am a masochist
+ REMOVE_TRAIT(H, TRAIT_FAT, OBESITY)
+ B.size = B.size - 1
+ B.update()
+ C.size = 0
+ C.update()
+ D.cached_size = D.cached_size - 1
+ D.update()
+ H.genital_override = TRUE
+ H.update_body()
+ H.update_inv_w_uniform()
+ H.update_inv_wear_suit()
+ else if(H.fatness >= FATNESS_LEVEL_FATTER)
+ to_chat(H, "You feel even plumper!FATTER")
+ REMOVE_TRAIT(H, TRAIT_FAT, OBESITY)
+ ADD_TRAIT(H, TRAIT_FATTER, OBESITY)
+ B.size = B.size + 1
+ B.update()
+ C.size = C.size + 1
+ C.update()
+ D.cached_size = D.cached_size + 1
+ D.update()
+ H.genital_override = TRUE
+ H.update_body()
+ H.update_inv_w_uniform()
+ H.update_inv_wear_suit()
+ else if(HAS_TRAIT(H, TRAIT_FATTER))
+ if(H.fatness < FATNESS_LEVEL_FATTER)
+ to_chat(H, "You feel like you've lost weight! FATTER")
+ REMOVE_TRAIT(H, TRAIT_FATTER, OBESITY)
+ ADD_TRAIT(H, TRAIT_FAT, OBESITY)
+ B.size = B.size - 1
+ B.update()
+ C.size = C.size - 1
+ C.update()
+ D.cached_size = D.cached_size - 1
+ D.update()
+ H.genital_override = TRUE
+ H.update_body()
+ H.update_inv_w_uniform()
+ H.update_inv_wear_suit()
+ else if(H.fatness >= FATNESS_LEVEL_VERYFAT)
+ to_chat(H, "You feel fatter than before VERYFAT")
+ REMOVE_TRAIT(H, TRAIT_FATTER, OBESITY)
+ ADD_TRAIT(H, TRAIT_VERYFAT, OBESITY)
+ B.size = B.size + 1
+ B.update()
+ C.size = C.size + 1
+ C.update()
+ D.cached_size = D.cached_size + 1
+ D.update()
+ H.genital_override = TRUE
+ H.update_body()
+ H.update_inv_w_uniform()
+ H.update_inv_wear_suit()
+ else if(HAS_TRAIT(H, TRAIT_VERYFAT))
+ if(H.fatness < FATNESS_LEVEL_VERYFAT)
+ to_chat(H, "You feel like you've lost weight! VERYFAT")
+ REMOVE_TRAIT(H, TRAIT_VERYFAT, OBESITY)
+ ADD_TRAIT(H, TRAIT_FATTER, OBESITY)
+ B.size = B.size - 1
+ B.update()
+ C.size = C.size - 1
+ C.update()
+ D.cached_size = D.cached_size - 1
+ D.update()
+ H.genital_override = TRUE
+ H.update_body()
+ H.update_inv_w_uniform()
+ H.update_inv_wear_suit()
+ else if(H.fatness >= FATNESS_LEVEL_OBESE)
+ to_chat(H, "You feel fatter than beforeOBESE")
+ REMOVE_TRAIT(H, TRAIT_VERYFAT, OBESITY)
+ ADD_TRAIT(H, TRAIT_OBESE, OBESITY)
+ B.size = B.size + 1
+ B.update()
+ C.size = C.size + 1
+ C.update()
+ D.cached_size = D.cached_size + 1
+ D.update()
+ H.genital_override = TRUE
+ H.update_body()
+ H.update_inv_w_uniform()
+ H.update_inv_wear_suit()
+ else if(HAS_TRAIT(H, TRAIT_OBESE))
+ if(H.fatness < FATNESS_LEVEL_OBESE)
+ to_chat(H, "You feel like you've lost weight!OBESE")
+ REMOVE_TRAIT(H, TRAIT_OBESE, OBESITY)
+ ADD_TRAIT(H, TRAIT_VERYFAT, OBESITY)
+ B.size = B.size - 1
+ B.update()
+ C.size = C.size - 1
+ C.update()
+ D.cached_size = D.cached_size - 1
+ D.update()
+ H.genital_override = TRUE
+ H.update_body()
+ H.update_inv_w_uniform()
+ H.update_inv_wear_suit()
+ else if(H.fatness >= FATNESS_LEVEL_MORBIDLY_OBESE)
+ to_chat(H, "You feel a lot fatter than beforeMORBIDOBESE")
+ REMOVE_TRAIT(H, TRAIT_OBESE, OBESITY)
+ ADD_TRAIT(H, TRAIT_MORBIDLYOBESE, OBESITY)
+ B.size = B.size + 1
+ B.update()
+ C.size = C.size + 1
+ C.update()
+ D.cached_size = D.cached_size + 1
+ D.update()
+ H.genital_override = TRUE
+ H.update_body()
+ H.update_inv_w_uniform()
+ H.update_inv_wear_suit()
+ else if(HAS_TRAIT(H, TRAIT_MORBIDLYOBESE))
+ if(H.fatness < FATNESS_LEVEL_MORBIDLY_OBESE)
+ to_chat(H, "You feel a bit less fat!MORBIDLYOBESE")
+ REMOVE_TRAIT(H, TRAIT_MORBIDLYOBESE, OBESITY)
+ ADD_TRAIT(H, TRAIT_OBESE, OBESITY)
+ B.size = B.size - 1
+ B.update()
+ C.size = C.size - 1
+ C.update()
+ D.cached_size = D.cached_size - 1
+ D.update()
+ H.genital_override = TRUE
+ H.update_body()
+ H.update_inv_w_uniform()
+ H.update_inv_wear_suit()
+ else if(H.fatness >= FATNESS_LEVEL_EXTREMELY_OBESE)
+ to_chat(H, "You feel your fat belly rubbing on the floor!FATNESS_LEVEL_exob")
+ REMOVE_TRAIT(H, TRAIT_MORBIDLYOBESE, OBESITY)
+ ADD_TRAIT(H, TRAIT_EXTREMELYOBESE, OBESITY)
+ B.size = B.size + 1
+ B.update()
+ C.size = C.size + 1
+ C.update()
+ D.cached_size = D.cached_size + 1
+ D.update()
+ H.genital_override = TRUE
+ H.update_body()
+ H.update_inv_w_uniform()
+ H.update_inv_wear_suit()
+ else if(HAS_TRAIT(H, TRAIT_EXTREMELYOBESE))
+ if(H.fatness < FATNESS_LEVEL_EXTREMELY_OBESE)
+ to_chat(H, "You feel less restrained by your fat!(FATNESS_LEVEL_exeobese)")
+ REMOVE_TRAIT(H, TRAIT_EXTREMELYOBESE, OBESITY)
+ ADD_TRAIT(H, TRAIT_MORBIDLYOBESE, OBESITY)
+ B.size = B.size - 1
+ B.update()
+ C.size = C.size - 1
+ C.update()
+ D.cached_size = D.cached_size - 1
+ D.update()
+ H.genital_override = TRUE
+ H.update_body()
+ H.update_inv_w_uniform()
+ H.update_inv_wear_suit()
+ else if(H.fatness >= FATNESS_LEVEL_BARELYMOBILE)
+ to_chat(H, "You feel like you've become a mountain of fat!(FATNESS_LEVEL_barelymobile1)")
+ REMOVE_TRAIT(H, TRAIT_EXTREMELYOBESE, OBESITY)
+ ADD_TRAIT(H, TRAIT_BARELYMOBILE, OBESITY)
+ B.size = B.size + 1
+ B.update()
+ C.size = C.size + 1
+ C.update()
+ D.cached_size = D.cached_size + 1
+ D.update()
+ H.genital_override = TRUE
+ H.update_body()
+ H.update_inv_w_uniform()
+ H.update_inv_wear_suit()
+ else if(HAS_TRAIT(H, TRAIT_BARELYMOBILE))
+ if(H.fatness < FATNESS_LEVEL_BARELYMOBILE)
+ to_chat(H, "You feel less restrained by your fat!(FATNESS_LEVEL_barelymbie)")
+ REMOVE_TRAIT(H, TRAIT_BARELYMOBILE, OBESITY)
+ ADD_TRAIT(H, TRAIT_EXTREMELYOBESE, OBESITY)
+ B.size = B.size - 1
+ B.update()
+ C.size = C.size - 1
+ C.update()
+ D.cached_size = D.cached_size - 1
+ D.update()
+ H.genital_override = TRUE
+ H.update_body()
+ H.update_inv_w_uniform()
+ H.update_inv_wear_suit()
+ else if(H.fatness >= FATNESS_LEVEL_IMMOBILE)
+ to_chat(H, "You feel like you've become a mountain of fat!(FATNESS_LEVEL_IMMOBILE)")
+ REMOVE_TRAIT(H, TRAIT_BARELYMOBILE, OBESITY)
+ ADD_TRAIT(H, TRAIT_IMMOBILE, OBESITY)
+ B.size = B.size + 1
+ B.update()
+ C.size = C.size + 1
+ C.update()
+ D.cached_size = D.cached_size + 1
+ D.update()
+ H.genital_override = TRUE
+ H.update_body()
+ H.update_inv_w_uniform()
+ H.update_inv_wear_suit()
+ else if(HAS_TRAIT(H, TRAIT_IMMOBILE))
+ if(H.fatness < FATNESS_LEVEL_IMMOBILE)
+ to_chat(H, "You feel less restrained by your fat (FATNESS_LEVEL_IMMOBILE)!")
+ REMOVE_TRAIT(H, TRAIT_IMMOBILE, OBESITY)
+ ADD_TRAIT(H, TRAIT_BARELYMOBILE, OBESITY)
+ B.size = B.size - 1
+ B.update()
+ C.size = C.size - 1
+ C.update()
+ D.cached_size = D.cached_size - 1
+ D.update()
+ H.genital_override = TRUE
+ H.update_body()
+ H.update_inv_w_uniform()
+ H.update_inv_wear_suit()
+ else if(H.fatness > FATNESS_LEVEL_BLOB)
+ to_chat(H, "You feel like you've become a mountain of fat!(FATNESS_LEVEL_BLOB)")
+ REMOVE_TRAIT(H, TRAIT_IMMOBILE, OBESITY)
+ ADD_TRAIT(H, TRAIT_BLOB, OBESITY)
+ B.size = B.size + 1
+ B.update()
+ C.size = C.size + 1
+ C.update()
+ D.cached_size = D.cached_size + 1
+ D.update()
+ H.genital_override = TRUE
+ H.update_body()
+ H.update_inv_w_uniform()
+ H.update_inv_wear_suit()
+ else if(HAS_TRAIT(H, TRAIT_BLOB))
+ if(H.fatness < FATNESS_LEVEL_BLOB)
+ to_chat(H, "You feel like you've regained some mobility!BLOB")
+ REMOVE_TRAIT(H, TRAIT_BLOB, OBESITY)
+ ADD_TRAIT(H, TRAIT_IMMOBILE, OBESITY)
+ B.size = B.size - 1
+ B.update()
+ C.size = C.size - 1
+ C.update()
+ D.cached_size = D.cached_size - 1
+ D.update()
+ H.genital_override = TRUE
+ H.update_body()
+ H.update_inv_w_uniform()
+ H.update_inv_wear_suit()
+ else
+ if(H.fatness >= FATNESS_LEVEL_FAT)
+ to_chat(H, "You suddenly feel blubbery! FAT")
+ ADD_TRAIT(H, TRAIT_FAT, OBESITY)
+ B.size = B.size + 1
+ B.update()
+ C.size = C.size + 1
+ C.update()
+ D.cached_size = D.cached_size + 1
+ D.update()
+ H.genital_override = TRUE
+ H.update_body()
+ H.update_inv_w_uniform()
+ H.update_inv_wear_suit()
+
// nutrition decrease and satiety
if (H.nutrition > 0 && H.stat != DEAD && !HAS_TRAIT(H, TRAIT_NOHUNGER))
@@ -1370,7 +1640,7 @@ GLOBAL_LIST_EMPTY(roundstart_races)
H.throw_alert("nutrition", /obj/screen/alert/hungry)
if(0 to NUTRITION_LEVEL_STARVING)
H.throw_alert("nutrition", /obj/screen/alert/starving)
-
+
switch(H.fullness)
if(0 to FULLNESS_LEVEL_BLOATED)
H.clear_alert("fullness")
@@ -1533,7 +1803,7 @@ GLOBAL_LIST_EMPTY(roundstart_races)
if(SANITY_UNSTABLE to SANITY_DISTURBED)
. += 0.5
*/
- if(HAS_TRAIT(H, TRAIT_FAT))
+/* if(HAS_TRAIT(H, TRAIT_FAT))
. += (1 - flight)
if(HAS_TRAIT(H, TRAIT_OBESE))//GS13 fat levels move speed decrease
. += (1.5 - flight)
@@ -1546,7 +1816,28 @@ GLOBAL_LIST_EMPTY(roundstart_races)
if(H.bodytemperature < BODYTEMP_COLD_DAMAGE_LIMIT && !HAS_TRAIT(H, TRAIT_RESISTCOLD))
. += (BODYTEMP_COLD_DAMAGE_LIMIT - H.bodytemperature) / COLD_SLOWDOWN_FACTOR
return .
-
+*/
+ if(HAS_TRAIT(H, TRAIT_FAT))
+ . += (1 - flight)
+ if(HAS_TRAIT(H, TRAIT_FATTER))
+ . += (1.1 - flight)
+ if(HAS_TRAIT(H, TRAIT_VERYFAT))
+ . += (1.25 - flight)
+ if(HAS_TRAIT(H, TRAIT_OBESE))//GS13 fat levels move speed decrease
+ . += (1.5 - flight)
+ if(HAS_TRAIT(H, TRAIT_MORBIDLYOBESE))
+ . += (2 - flight)
+ if(HAS_TRAIT(H, TRAIT_EXTREMELYOBESE))
+ . += (2.5 - flight)
+ if(HAS_TRAIT(H, TRAIT_BARELYMOBILE))
+ . += 2.7
+ if(HAS_TRAIT(H, TRAIT_IMMOBILE))
+ . += 3 // No wings are going to lift that much off the ground
+ if(HAS_TRAIT(H, TRAIT_BLOB))
+ . += 4
+ if(H.bodytemperature < BODYTEMP_COLD_DAMAGE_LIMIT && !HAS_TRAIT(H, TRAIT_RESISTCOLD))
+ . += (BODYTEMP_COLD_DAMAGE_LIMIT - H.bodytemperature) / COLD_SLOWDOWN_FACTOR
+ return .
//////////////////
// ATTACK PROCS //
//////////////////
diff --git a/hyperstation/icons/obj/genitals/belly.dmi b/hyperstation/icons/obj/genitals/belly.dmi
index 2be35d72..5a49d985 100644
Binary files a/hyperstation/icons/obj/genitals/belly.dmi and b/hyperstation/icons/obj/genitals/belly.dmi differ
diff --git a/hyperstation/icons/obj/genitals/butt.dmi b/hyperstation/icons/obj/genitals/butt.dmi
index e4b8f5c6..3addf814 100644
Binary files a/hyperstation/icons/obj/genitals/butt.dmi and b/hyperstation/icons/obj/genitals/butt.dmi differ
diff --git a/modular_citadel/code/modules/arousal/organs/anus.dm b/modular_citadel/code/modules/arousal/organs/anus.dm
index 11a31bc6..d546326a 100644
--- a/modular_citadel/code/modules/arousal/organs/anus.dm
+++ b/modular_citadel/code/modules/arousal/organs/anus.dm
@@ -26,6 +26,8 @@
//Reflect the size of dat ass on examine.
switch(round(size))
+ if(0)
+ size_name = "normal"
if(1)
size_name = "average"
if(2)
@@ -34,8 +36,36 @@
size_name = "squeezable"
if(4)
size_name = "hefty"
- if(5)
+ if(6)
size_name = "godly"
+ if(7)
+ size_name = "huge"
+ if(8)
+ size_name = "colossal"
+ if(9)
+ size_name = "globular"
+ if(10)
+ size_name = "gargantuan"
+ if(11)
+ size_name = "gargantuan11"
+ if(12)
+ size_name = "gargantuan12"
+ if(13)
+ size_name = "gargantuan13"
+ if(14)
+ size_name = "gargantuan14"
+ if(15)
+ size_name = "gargantuan15"
+ if(16)
+ size_name = "gargantuan16"
+ if(17)
+ size_name = "gargantuan17"
+ if(18)
+ size_name = "gargantuan18"
+ if(19)
+ size_name = "gargantuan19"
+ if(20)
+ size_name = "gargantuan20"
else
size_name = "nonexistant"
diff --git a/modular_citadel/code/modules/arousal/organs/genitals.dm b/modular_citadel/code/modules/arousal/organs/genitals.dm
index 750ae3d6..49856529 100644
--- a/modular_citadel/code/modules/arousal/organs/genitals.dm
+++ b/modular_citadel/code/modules/arousal/organs/genitals.dm
@@ -464,7 +464,7 @@
if(G.slot == "penis" || G.slot == "testicles")
if(G.size < 3) //is actually "less than 11 inches"
genital_overlay.layer = -GENITALS_UNDER_LAYER
-
+
//GS13 Commented out as it clashes with the Belly Sprites and its fucking stupid and looks dumb
//if(G.slot == "breasts")
@@ -472,7 +472,7 @@
//if(B.cached_size < 8) //anything smaller than a g-cup
//genital_overlay.layer = -GENITALS_UNDER_LAYER
- //Get the icon
+/* //Get the icon
genital_overlay.icon_state = "[G.slot]_[S.icon_state]_[size]_[aroused_state]_[layertext]"
colourcode = S.color_src
@@ -502,6 +502,41 @@
genital_overlay.color = "#[H.dna.features["mcolor"]]"
genital_overlay.icon_state = "butt_[round(size)]_OTHER_m"
genital_overlay_directional.icon_state = "butt_[round(size)]_NORTH_m"
+*/
+ genital_overlay.icon_state = "[G.slot]_[S.icon_state]_[size]_[aroused_state]_[layertext]"
+ colourcode = S.color_src
+
+ if(G.slot == "belly") //we have a different size system
+ genital_overlay.icon = 'hyperstation/icons/obj/genitals/belly.dmi'
+ genital_overlay.icon_state = "belly_[size]"
+ genital_overlay.layer = -UNDER_BACK_LAYER
+ colourcode = "belly_color"
+ // if(HAS_TRAIT(src, TRAIT_BLOB))
+ // genital_overlay.icon = 'hyperstation/icons/obj/genitals/belly.dmi'
+ // genital_overlay.icon_state = "belly_10"
+ //bellyfaticon
+
+ //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_[round(size)]_OTHER"
+ genital_overlay.layer = -UNDER1_BACK_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_[round(size)]_NORTH"
+ genital_overlay_directional.layer = -UNDER1_BACK_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_[round(size)]_OTHER"
+ genital_overlay_directional.icon_state = "butt_[round(size)]_NORTH"
+ else
+ genital_overlay.color = "#[H.dna.features["mcolor"]]"
+ genital_overlay.icon_state = "butt_[round(size)]_OTHER_m"
+ genital_overlay_directional.icon_state = "butt_[round(size)]_NORTH_m"
if(S.center)