diff --git a/code/__DEFINES/citadel_defines.dm b/code/__DEFINES/citadel_defines.dm index b27d2c18ab..04715aad6c 100644 --- a/code/__DEFINES/citadel_defines.dm +++ b/code/__DEFINES/citadel_defines.dm @@ -79,6 +79,8 @@ #define BELLY_SIZE_DEF 1 #define BELLY_SIZE_MAX 10 +#define DEF_ANUS_SHAPE "donut" + //visibility toggles defines to avoid errors typos code errors. #define GEN_VISIBLE_ALWAYS "Always visible" #define GEN_VISIBLE_NO_CLOTHES "Hidden by clothes" diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm index 292b501c1c..8918fddc6e 100644 --- a/code/__HELPERS/mobs.dm +++ b/code/__HELPERS/mobs.dm @@ -224,6 +224,7 @@ //SPLURT's anus stuff "has_anus" = FALSE, "anus_color" = pick("FFFFFF","7F7F7F", "7FFF7F", "7F7FFF", "FF7F7F", "7FFFFF", "FF7FFF", "FFFF7F"), + "anus_shape" = DEF_ANUS_SHAPE, //SPLURT's anus stuff "balls_visibility" = GEN_VISIBLE_NO_UNDIES, diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index e6a2b2e670..fc482e4828 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -215,6 +215,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) "has_belly" = FALSE, "has_anus" = FALSE, "anus_color" = "ffffff", +"anus_shape" = DEF_ANUS_SHAPE, "belly_color" = "ffffff", "belly_size" = BELLY_SIZE_DEF, "balls_visibility" = GEN_VISIBLE_NO_UNDIES, @@ -985,6 +986,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "[SKINTONE2HEX(skin_tone)](Skin tone overriding)
" else dat += "#[features["anus_color"]] Change
" + dat += "Butthole Shape: [features["anus_shape"]]" dat += "Butthole Visibility:[features["anus_visibility"]]" dat += "Egg Stuffing:[features["anus_stuffing"] == TRUE ? "Yes" : "No"]" dat += "" @@ -2875,6 +2877,12 @@ GLOBAL_LIST_EMPTY(preferences_datums) else to_chat(user, "Invalid color. Your color is not bright enough.") + if("anus_shape") + var/new_shape + new_shape = input(user, "Butthole Shape", "Character Preference") as null|anything in GLOB.anus_shapes_list + if(new_shape) + features["anus_shape"] = new_shape + if("belly_size") var/min_belly = CONFIG_GET(number/belly_min_size_prefs) var/max_belly = CONFIG_GET(number/belly_max_size_prefs) diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index d7a2064ffb..214b6d94b9 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -764,6 +764,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car "belly_color" = "ffffff", "has_anus" = FALSE, "anus_color" = "ffffff", +"anus_shape" = DEF_ANUS_SHAPE, "balls_visibility" = GEN_VISIBLE_NO_UNDIES, "breasts_visibility"= GEN_VISIBLE_NO_UNDIES, "cock_visibility" = GEN_VISIBLE_NO_UNDIES, @@ -963,8 +964,6 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car S["feature_balls_size"] >> features["balls_size"] S["feature_balls_visibility"] >> features["balls_visibility"] S["feature_balls_fluid"] >> features["balls_fluid"] - S["feature_womb_fluid"] >> features["womb_fluid"] - S["feature_balls_shape"] >> features["balls_shape"] //breasts features S["feature_has_breasts"] >> features["has_breasts"] S["feature_breasts_size"] >> features["breasts_size"] @@ -980,6 +979,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car S["feature_vag_visibility"] >> features["vag_visibility"] //womb features S["feature_has_womb"] >> features["has_womb"] + S["feature_womb_fluid"] >> features["womb_fluid"] //butt features S["feature_has_butt"] >> features["has_butt"] S["feature_butt_color"] >> features["butt_color"] @@ -993,6 +993,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car //anus features S["feature_has_anus"] >> features["has_anus"] S["feature_anus_color"] >> features["anus_color"] + S["feature_anus_shape"] >> features["anus_shape"] S["feature_anus_visibility"] >> features["anus_visibility"] // Flavor texts, Made into a standard. @@ -1160,6 +1161,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car features["cock_shape"] = sanitize_inlist(features["cock_shape"], GLOB.cock_shapes_list, DEF_COCK_SHAPE) features["balls_shape"] = sanitize_inlist(features["balls_shape"], GLOB.balls_shapes_list, DEF_BALLS_SHAPE) features["vag_shape"] = sanitize_inlist(features["vag_shape"], GLOB.vagina_shapes_list, DEF_VAGINA_SHAPE) + features["anus_shape"] = sanitize_inlist(features["anus_shape"], GLOB.anus_shapes_list, DEF_ANUS_SHAPE) features["breasts_color"] = sanitize_hexcolor(features["breasts_color"], 6, FALSE, "FFFFFF") features["cock_color"] = sanitize_hexcolor(features["cock_color"], 6, FALSE, "FFFFFF") features["balls_color"] = sanitize_hexcolor(features["balls_color"], 6, FALSE, "FFFFFF") @@ -1343,7 +1345,6 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car WRITE_FILE(S["feature_balls_size"], features["balls_size"]) WRITE_FILE(S["feature_balls_visibility"], features["balls_visibility"]) WRITE_FILE(S["feature_balls_stuffing"], features["balls_stuffing"]) - WRITE_FILE(S["feature_balls_shape"], features["balls_shape"]) WRITE_FILE(S["feature_balls_fluid"], features["balls_fluid"]) WRITE_FILE(S["feature_has_breasts"], features["has_breasts"]) @@ -1379,6 +1380,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car WRITE_FILE(S["feature_has_anus"], features["has_anus"]) WRITE_FILE(S["feature_anus_color"], features["anus_color"]) WRITE_FILE(S["feature_anus_visibility"], features["anus_visibility"]) + WRITE_FILE(S["feature_anus_shape"], features["anus_shape"]) WRITE_FILE(S["feature_anus_stuffing"], features["anus_stuffing"]) WRITE_FILE(S["feature_inert_eggs"], features["inert_eggs"]) diff --git a/modular_splurt/code/modules/arousal/genitals_sprite_accessories.dm b/modular_splurt/code/modules/arousal/genitals_sprite_accessories.dm index e9d7138b4e..e7674470f4 100644 --- a/modular_splurt/code/modules/arousal/genitals_sprite_accessories.dm +++ b/modular_splurt/code/modules/arousal/genitals_sprite_accessories.dm @@ -35,6 +35,10 @@ name = "anus" color_src = "anus_color" -/datum/sprite_accessory/anus/donut - icon_state = "donut" - name = "donut" +/datum/sprite_accessory/anus/gape + icon_state = DEF_ANUS_SHAPE + name = DEF_ANUS_SHAPE + +/datum/sprite_accessory/anus/squished + icon_state = "squished" + name = "squished" diff --git a/modular_splurt/code/modules/arousal/organs/anus.dm b/modular_splurt/code/modules/arousal/organs/anus.dm index 2645d91f78..08a5e1276d 100644 --- a/modular_splurt/code/modules/arousal/organs/anus.dm +++ b/modular_splurt/code/modules/arousal/organs/anus.dm @@ -20,9 +20,11 @@ update_appearance() /obj/item/organ/genital/anus/update_appearance(updates) - var/lowershape = lowertext(shape) var/u_His = owner?.p_their() || "their" + var/datum/sprite_accessory/anus/S = GLOB.anus_shapes_list[shape] + var/lowershape = lowertext(S?.icon_state || DEF_ANUS_SHAPE) + desc = "You see [u_His] squishy [lowershape] pucker parting [u_His] asscheeks" icon_state = "anus_[lowershape]_[size]" @@ -43,6 +45,7 @@ color = SKINTONE2HEX(H.skin_tone) else color = "#[D.features["anus_color"]]" + shape = D.features["anus_shape"] toggle_visibility(D.features["anus_visibility"], FALSE) if(D.features["anus_stuffing"]) toggle_visibility(GEN_ALLOW_EGG_STUFFING, FALSE) diff --git a/modular_splurt/icons/obj/genitals/anus_onmob.dmi b/modular_splurt/icons/obj/genitals/anus_onmob.dmi index 6449cf0e96..b46a582544 100644 Binary files a/modular_splurt/icons/obj/genitals/anus_onmob.dmi and b/modular_splurt/icons/obj/genitals/anus_onmob.dmi differ