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)