From 142831d4e6791a72eaf041fa999096cd7ffcccc7 Mon Sep 17 00:00:00 2001 From: AlManiak Date: Thu, 19 Sep 2024 17:32:52 +0200 Subject: [PATCH 1/7] Initial commit for visual stuffed states --- .../clothing/under/jobs/modcivilian.dm | 38 +++++++++++++----- .../mob/modclothes/graymodular_stuffed.dmi | Bin 0 -> 26485 bytes .../mob/living/carbon/human/species.dm | 5 ++- .../icons/obj/genitals/belly_stuffed.dmi | Bin 0 -> 18817 bytes .../code/modules/arousal/organs/genitals.dm | 26 ++++++++++-- 5 files changed, 54 insertions(+), 15 deletions(-) create mode 100644 GainStation13/icons/mob/modclothes/graymodular_stuffed.dmi create mode 100644 hyperstation/icons/obj/genitals/belly_stuffed.dmi diff --git a/GainStation13/code/modules/clothing/under/jobs/modcivilian.dm b/GainStation13/code/modules/clothing/under/jobs/modcivilian.dm index 19a0e1bf..cfd5005b 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,33 @@ 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(0 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+2) //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(icon_location, "belly_11", GENITALS_UNDER_LAYER) + else //use the alternative adjusted sprites + if(G.size <= 9+2) + . += mutable_appearance(icon_location, "belly_[size]_d", GENITALS_UNDER_LAYER) + else + . += mutable_appearance(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 0000000000000000000000000000000000000000..99b270ce8b375a9c8a1de79241590f43a48b6295 GIT binary patch literal 26485 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 HL&X0BV6>AY literal 0 HcmV?d00001 diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index ca373f92..c06a1bfd 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -1727,7 +1727,10 @@ GLOBAL_LIST_EMPTY(roundstart_races) H.throw_alert("fullness", /obj/screen/alert/stuffed) 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/belly = H.getorganslot("belly") + belly.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 0000000000000000000000000000000000000000..23ea708b23bb372a79e80ab771416c9413c74479 GIT binary patch literal 18817 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 U*ODtCzyJUM07*qoM6N<$f}&8fC;$Ke literal 0 HcmV?d00001 diff --git a/modular_citadel/code/modules/arousal/organs/genitals.dm b/modular_citadel/code/modules/arousal/organs/genitals.dm index 6e37beef..be7cbcb0 100644 --- a/modular_citadel/code/modules/arousal/organs/genitals.dm +++ b/modular_citadel/code/modules/arousal/organs/genitals.dm @@ -474,10 +474,28 @@ colourcode = S.color_src if(G.slot == "belly") // GS13 - genital_overlay.icon = 'hyperstation/icons/obj/genitals/belly.dmi' - 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(0 to FULLNESS_LEVEL_BLOATED) + 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(FULLNESS_LEVEL_BLOATED to FULLNESS_LEVEL_BEEG) + genital_overlay.icon = 'hyperstation/icons/obj/genitals/belly_stuffed.dmi' + genital_overlay.icon_state = "belly_[size]" + genital_overlay.layer = -UNDER_BACK_LAYER + colourcode = "belly_color" + 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]" + genital_overlay.layer = -UNDER_BACK_LAYER + colourcode = "belly_color" + if(FULLNESS_LEVEL_NOMOREPLZ to INFINITY) + genital_overlay.icon = 'hyperstation/icons/obj/genitals/belly_stuffed.dmi' + genital_overlay.icon_state = "belly_[size+2]" + genital_overlay.layer = -UNDER_BACK_LAYER + colourcode = "belly_color" //sizecheck added to prevent rendering blank icons if(G.slot == "anus" && G.size > 0) // GS13 From 7d557ae7d88ce2531d6f04f1b0b73e21e1e359f0 Mon Sep 17 00:00:00 2001 From: AlManiak Date: Thu, 19 Sep 2024 18:02:24 +0200 Subject: [PATCH 2/7] isNull check --- code/modules/mob/living/carbon/human/species.dm | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index c06a1bfd..669d1517 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -1727,10 +1727,11 @@ GLOBAL_LIST_EMPTY(roundstart_races) H.throw_alert("fullness", /obj/screen/alert/stuffed) 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/belly = H.getorganslot("belly") - belly.update() + var/obj/item/organ/genital/belly/B= H.getorganslot("belly") + if(!isnull(B)) + B.update() switch(H.fatness) if(FATNESS_LEVEL_BLOB to INFINITY) From cb97148d977fcd6b942e851ff0e73b50a27c041d Mon Sep 17 00:00:00 2001 From: AlManiak Date: Thu, 19 Sep 2024 18:16:51 +0200 Subject: [PATCH 3/7] used_icon_location should be used for all --- .../code/modules/clothing/under/jobs/modcivilian.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/GainStation13/code/modules/clothing/under/jobs/modcivilian.dm b/GainStation13/code/modules/clothing/under/jobs/modcivilian.dm index cfd5005b..128985a2 100644 --- a/GainStation13/code/modules/clothing/under/jobs/modcivilian.dm +++ b/GainStation13/code/modules/clothing/under/jobs/modcivilian.dm @@ -115,12 +115,12 @@ if(G.size <= 9+2) //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(icon_location, "belly_11", GENITALS_UNDER_LAYER) + . += mutable_appearance(used_icon_location, "belly_11", GENITALS_UNDER_LAYER) else //use the alternative adjusted sprites if(G.size <= 9+2) - . += mutable_appearance(icon_location, "belly_[size]_d", GENITALS_UNDER_LAYER) + . += mutable_appearance(used_icon_location, "belly_[size]_d", GENITALS_UNDER_LAYER) else - . += mutable_appearance(icon_location, "belly_11_d", GENITALS_UNDER_LAYER) + . += 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 From 4e11595ae65c8ec6f524eec9a1223007e413724a Mon Sep 17 00:00:00 2001 From: AlManiak Date: Thu, 19 Sep 2024 22:33:32 +0200 Subject: [PATCH 4/7] Apply suggestions from code review Co-authored-by: sheepishgoat <100518708+sheepishgoat@users.noreply.github.com> --- GainStation13/code/modules/clothing/under/jobs/modcivilian.dm | 3 +++ code/modules/mob/living/carbon/human/species.dm | 2 +- modular_citadel/code/modules/arousal/organs/genitals.dm | 3 --- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/GainStation13/code/modules/clothing/under/jobs/modcivilian.dm b/GainStation13/code/modules/clothing/under/jobs/modcivilian.dm index 128985a2..0e080a56 100644 --- a/GainStation13/code/modules/clothing/under/jobs/modcivilian.dm +++ b/GainStation13/code/modules/clothing/under/jobs/modcivilian.dm @@ -99,6 +99,7 @@ var/mob/living/carbon/human/H = O.owner var/size = 0 var/used_icon_location = icon_location + switch(H.fullness) if(0 to FULLNESS_LEVEL_BLOATED) // Normal size = G.size @@ -111,6 +112,7 @@ 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+2) //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 @@ -121,6 +123,7 @@ . += 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/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index 669d1517..a47b40e9 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -1730,7 +1730,7 @@ GLOBAL_LIST_EMPTY(roundstart_races) // Update here for changing belly to match stuffed-ness var/obj/item/organ/genital/belly/B= H.getorganslot("belly") - if(!isnull(B)) + if(!isnull(B) && istype(B)) B.update() switch(H.fatness) diff --git a/modular_citadel/code/modules/arousal/organs/genitals.dm b/modular_citadel/code/modules/arousal/organs/genitals.dm index be7cbcb0..0a14b36b 100644 --- a/modular_citadel/code/modules/arousal/organs/genitals.dm +++ b/modular_citadel/code/modules/arousal/organs/genitals.dm @@ -477,10 +477,7 @@ // Change belly sprite and size based on current fullness switch(H.fullness) if(0 to FULLNESS_LEVEL_BLOATED) - 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(FULLNESS_LEVEL_BLOATED to FULLNESS_LEVEL_BEEG) genital_overlay.icon = 'hyperstation/icons/obj/genitals/belly_stuffed.dmi' genital_overlay.icon_state = "belly_[size]" From f34776f90cb7430dd7718e4b5f1cd16923e47a6e Mon Sep 17 00:00:00 2001 From: AlManiak Date: Thu, 19 Sep 2024 22:34:48 +0200 Subject: [PATCH 5/7] Added new define for max stuffed size change --- code/__DEFINES/mobs.dm | 1 + 1 file changed, 1 insertion(+) 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 From 1ab226fb27d8a2cad94941fffdc4f22dbc5b535d Mon Sep 17 00:00:00 2001 From: AlManiak Date: Thu, 19 Sep 2024 22:42:08 +0200 Subject: [PATCH 6/7] Added define for nb stuffed sprite size --- .../modules/clothing/under/jobs/modcivilian.dm | 4 ++-- .../code/modules/arousal/organs/genitals.dm | 15 +++++++-------- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/GainStation13/code/modules/clothing/under/jobs/modcivilian.dm b/GainStation13/code/modules/clothing/under/jobs/modcivilian.dm index 0e080a56..ca1e4c65 100644 --- a/GainStation13/code/modules/clothing/under/jobs/modcivilian.dm +++ b/GainStation13/code/modules/clothing/under/jobs/modcivilian.dm @@ -114,12 +114,12 @@ used_icon_location = icon_stuffed_location if(!adjusted) //check the style, if it needs to be the adjusted variants - if(G.size <= 9+2) //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) + 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+2) + 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) diff --git a/modular_citadel/code/modules/arousal/organs/genitals.dm b/modular_citadel/code/modules/arousal/organs/genitals.dm index 0a14b36b..c01f609b 100644 --- a/modular_citadel/code/modules/arousal/organs/genitals.dm +++ b/modular_citadel/code/modules/arousal/organs/genitals.dm @@ -474,25 +474,24 @@ colourcode = S.color_src if(G.slot == "belly") // GS13 + + // 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(0 to FULLNESS_LEVEL_BLOATED) - genital_overlay.icon_state = "belly_[size]" + 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' - genital_overlay.icon_state = "belly_[size]" - genital_overlay.layer = -UNDER_BACK_LAYER - colourcode = "belly_color" 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]" - genital_overlay.layer = -UNDER_BACK_LAYER - colourcode = "belly_color" if(FULLNESS_LEVEL_NOMOREPLZ to INFINITY) genital_overlay.icon = 'hyperstation/icons/obj/genitals/belly_stuffed.dmi' genital_overlay.icon_state = "belly_[size+2]" - genital_overlay.layer = -UNDER_BACK_LAYER - colourcode = "belly_color" //sizecheck added to prevent rendering blank icons if(G.slot == "anus" && G.size > 0) // GS13 From c809b64a112d77f6106ad22da5360a262dcfa170 Mon Sep 17 00:00:00 2001 From: AlManiak Date: Fri, 20 Sep 2024 12:55:21 +0200 Subject: [PATCH 7/7] Fixed fullness < 0 issue that made belly dissapear. --- GainStation13/code/modules/clothing/under/jobs/modcivilian.dm | 2 +- modular_citadel/code/modules/arousal/organs/genitals.dm | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/GainStation13/code/modules/clothing/under/jobs/modcivilian.dm b/GainStation13/code/modules/clothing/under/jobs/modcivilian.dm index ca1e4c65..bbb5b9dc 100644 --- a/GainStation13/code/modules/clothing/under/jobs/modcivilian.dm +++ b/GainStation13/code/modules/clothing/under/jobs/modcivilian.dm @@ -101,7 +101,7 @@ var/used_icon_location = icon_location switch(H.fullness) - if(0 to FULLNESS_LEVEL_BLOATED) // Normal + 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 diff --git a/modular_citadel/code/modules/arousal/organs/genitals.dm b/modular_citadel/code/modules/arousal/organs/genitals.dm index c01f609b..da28efd1 100644 --- a/modular_citadel/code/modules/arousal/organs/genitals.dm +++ b/modular_citadel/code/modules/arousal/organs/genitals.dm @@ -482,7 +482,7 @@ // Change belly sprite and size based on current fullness switch(H.fullness) - if(0 to FULLNESS_LEVEL_BLOATED) + 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'