diff --git a/GainStation13/code/modules/clothing/under/jobs/modcivilian.dm b/GainStation13/code/modules/clothing/under/jobs/modcivilian.dm index 19a0e1bf..bbb5b9dc 100644 --- a/GainStation13/code/modules/clothing/under/jobs/modcivilian.dm +++ b/GainStation13/code/modules/clothing/under/jobs/modcivilian.dm @@ -70,6 +70,7 @@ desc = "A tasteful grey jumpsuit that reminds you of the good old days. Now adjusts to the match the wearer's size!" //description same as above var/icon_location = 'GainStation13/icons/mob/modclothes/graymodular.dmi' //specify the file path where the modular overlays for those clothes are located + var/icon_stuffed_location = 'GainStation13/icons/mob/modclothes/graymodular_stuffed.dmi' var/mob/living/carbon/U //instance a variable for keeping track of the user /obj/item/clothing/under/color/grey/modular/equipped(mob/user, slot) //whenever the clothes are in someone's inventory the clothes keep track of who that user is @@ -93,16 +94,36 @@ for(O in U.internal_organs) //check the user for the organs they have if(istype(O, /obj/item/organ/genital/belly)) //if that organ is a belly G = O //treat that organ as a genital - if(!adjusted) //check the style, if it needs to be the adjusted variants - if(G.size <= 9) //check that the size is within accepted values, NOTE: these need to be removed later, better to cap organ sizes to begin with - . += mutable_appearance(icon_location, "belly_[G.size]", GENITALS_UNDER_LAYER) //add, from the clothes' icon file the overlay corresponding to that genital at that size and draw it onto the layer - else //if not an expected size value, bigger than the max, default to max size - . += mutable_appearance(icon_location, "belly_9", GENITALS_UNDER_LAYER) - else //use the alternative adjusted sprites - if(G.size <= 9) - . += mutable_appearance(icon_location, "belly_[G.size]_d", GENITALS_UNDER_LAYER) - else - . += mutable_appearance(icon_location, "belly_9_d", GENITALS_UNDER_LAYER) + // Change to visually update sprite depending on fullness. + if(ishuman(O.owner)) + var/mob/living/carbon/human/H = O.owner + var/size = 0 + var/used_icon_location = icon_location + + switch(H.fullness) + if(-100 to FULLNESS_LEVEL_BLOATED) // Normal + size = G.size + if(FULLNESS_LEVEL_BLOATED to FULLNESS_LEVEL_BEEG) // Take the stuffed sprite of the same size + size = G.size + used_icon_location = icon_stuffed_location + if(FULLNESS_LEVEL_BEEG to FULLNESS_LEVEL_NOMOREPLZ) // Take the stuffed sprite of size + 1 + size = G.size + 1 + used_icon_location = icon_stuffed_location + if(FULLNESS_LEVEL_NOMOREPLZ to INFINITY)// Take the stuffed sprite of size + 2 + size = G.size + 2 + used_icon_location = icon_stuffed_location + + if(!adjusted) //check the style, if it needs to be the adjusted variants + if(G.size <= 9+FULLNESS_STUFFED_EXTRA_SPRITE_SIZES) //check that the size is within accepted values, NOTE: these need to be removed later, better to cap organ sizes to begin with. Cap is 9 (max fat stage) + 2 (stuffed stages) + . += mutable_appearance(used_icon_location, "belly_[size]", GENITALS_UNDER_LAYER) //add, from the clothes' icon file the overlay corresponding to that genital at that size and draw it onto the layer + else //if not an expected size value, bigger than the max, default to max size + . += mutable_appearance(used_icon_location, "belly_11", GENITALS_UNDER_LAYER) + else //use the alternative adjusted sprites + if(G.size <= 9+FULLNESS_STUFFED_EXTRA_SPRITE_SIZES) + . += mutable_appearance(used_icon_location, "belly_[size]_d", GENITALS_UNDER_LAYER) + else + . += mutable_appearance(used_icon_location, "belly_11_d", GENITALS_UNDER_LAYER) + if(istype(O, /obj/item/organ/genital/anus)) //if that organ is the butt G = O if(suit_style == DIGITIGRADE_SUIT_STYLE) //check if the suit needs to use sprites for digitigrade characters diff --git a/GainStation13/icons/mob/modclothes/graymodular_stuffed.dmi b/GainStation13/icons/mob/modclothes/graymodular_stuffed.dmi new file mode 100644 index 00000000..99b270ce Binary files /dev/null and b/GainStation13/icons/mob/modclothes/graymodular_stuffed.dmi differ diff --git a/code/__DEFINES/mobs.dm b/code/__DEFINES/mobs.dm index a0d8cf94..e036ed8d 100644 --- a/code/__DEFINES/mobs.dm +++ b/code/__DEFINES/mobs.dm @@ -155,6 +155,7 @@ #define FULLNESS_LEVEL_FILLED 40 #define FULLNESS_LEVEL_HALF_FULL 20 #define FULLNESS_LEVEL_EMPTY 0 +#define FULLNESS_STUFFED_EXTRA_SPRITE_SIZES 2 //Fullness emote cooldown #define FULLNESS_REDUCTION_COOLDOWN 50 diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index ca373f92..a47b40e9 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -1728,6 +1728,10 @@ GLOBAL_LIST_EMPTY(roundstart_races) if(FULLNESS_LEVEL_NOMOREPLZ to INFINITY) H.throw_alert("fullness", /obj/screen/alert/beegbelly) + // Update here for changing belly to match stuffed-ness + var/obj/item/organ/genital/belly/B= H.getorganslot("belly") + if(!isnull(B) && istype(B)) + B.update() switch(H.fatness) if(FATNESS_LEVEL_BLOB to INFINITY) diff --git a/hyperstation/icons/obj/genitals/belly_stuffed.dmi b/hyperstation/icons/obj/genitals/belly_stuffed.dmi new file mode 100644 index 00000000..23ea708b Binary files /dev/null and b/hyperstation/icons/obj/genitals/belly_stuffed.dmi differ diff --git a/modular_citadel/code/modules/arousal/organs/genitals.dm b/modular_citadel/code/modules/arousal/organs/genitals.dm index 6e37beef..da28efd1 100644 --- a/modular_citadel/code/modules/arousal/organs/genitals.dm +++ b/modular_citadel/code/modules/arousal/organs/genitals.dm @@ -474,11 +474,25 @@ colourcode = S.color_src if(G.slot == "belly") // GS13 - genital_overlay.icon = 'hyperstation/icons/obj/genitals/belly.dmi' + + // Default settings genital_overlay.icon_state = "belly_[size]" genital_overlay.layer = -UNDER_BACK_LAYER colourcode = "belly_color" + // Change belly sprite and size based on current fullness + switch(H.fullness) + if(-100 to FULLNESS_LEVEL_BLOATED) + genital_overlay.icon = 'hyperstation/icons/obj/genitals/belly.dmi' + if(FULLNESS_LEVEL_BLOATED to FULLNESS_LEVEL_BEEG) + genital_overlay.icon = 'hyperstation/icons/obj/genitals/belly_stuffed.dmi' + if(FULLNESS_LEVEL_BEEG to FULLNESS_LEVEL_NOMOREPLZ) + genital_overlay.icon = 'hyperstation/icons/obj/genitals/belly_stuffed.dmi' + genital_overlay.icon_state = "belly_[size+1]" + if(FULLNESS_LEVEL_NOMOREPLZ to INFINITY) + genital_overlay.icon = 'hyperstation/icons/obj/genitals/belly_stuffed.dmi' + genital_overlay.icon_state = "belly_[size+2]" + //sizecheck added to prevent rendering blank icons if(G.slot == "anus" && G.size > 0) // GS13 genital_overlay.icon = 'hyperstation/icons/obj/genitals/butt.dmi'