mirror of
https://github.com/KabKebab/GS13.git
synced 2026-07-20 20:37:45 +01:00
@@ -182,7 +182,7 @@
|
||||
"has_cock" = FALSE,
|
||||
"cock_shape" = pick(GLOB.cock_shapes_list),
|
||||
"cock_length" = 6,
|
||||
"belly_size" = 1,
|
||||
"belly_size" = 1,
|
||||
"butt_size" = 1,
|
||||
"cock_girth_ratio" = COCK_GIRTH_RATIO_DEF,
|
||||
"cock_color" = pick("FFFFFF","7F7F7F", "7FFF7F", "7F7FFF", "FF7F7F", "7FFFFF", "FF7FFF", "FFFF7F"),
|
||||
@@ -190,10 +190,11 @@
|
||||
"sheath_color" = pick("FFFFFF","7F7F7F", "7FFF7F", "7F7FFF", "FF7F7F", "7FFFFF", "FF7FFF", "FFFF7F"),
|
||||
"has_belly" = FALSE,
|
||||
"hide_belly" = FALSE,
|
||||
"inflatable_belly" = FALSE,
|
||||
"inflatable_belly" = FALSE,
|
||||
"belly_color" = pick("FFFFFF","7F7F7F", "7FFF7F", "7F7FFF", "FF7F7F", "7FFFFF", "FF7FFF", "FFFF7F"),
|
||||
"has_balls" = FALSE,
|
||||
"has_anus" = FALSE,
|
||||
"butt_color" = pick("FFFFFF","7F7F7F", "7FFF7F", "7F7FFF", "FF7F7F", "7FFFFF", "FF7FFF", "FFFF7F"),
|
||||
"balls_internal" = FALSE,
|
||||
"balls_color" = pick("FFFFFF","7F7F7F", "7FFF7F", "7F7FFF", "FF7F7F", "7FFFFF", "FF7FFF", "FFFF7F"),
|
||||
"balls_amount" = 2,
|
||||
|
||||
@@ -148,6 +148,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
"inflatable_belly" = FALSE,
|
||||
"belly_color" = "fff",
|
||||
"has_anus" = FALSE,
|
||||
"butt_color" = "fff",
|
||||
"has_balls" = FALSE,
|
||||
"balls_internal" = FALSE,
|
||||
"balls_color" = "fff",
|
||||
@@ -932,6 +933,13 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
dat += "<a style='display:block;width:50px' href='?_src_=prefs;preference=has_anus'>[features["has_anus"] == TRUE ? "Yes" : "No"]</a>"
|
||||
if(features["has_anus"])
|
||||
dat += "<b>Butt Size:</b> <a style='display:block;width:120px' href='?_src_=prefs;preference=butt_size;task=input'>[features["butt_size"]]</a>"
|
||||
if(pref_species.use_skintones && features["genitals_use_skintone"] == TRUE)
|
||||
dat += "<b>Color:</b></a><BR>"
|
||||
dat += "<span style='border: 1px solid #161616; background-color: #[skintone2hex(skin_tone)];'> </span>(Skin tone overriding)<br>"
|
||||
else
|
||||
dat += "<b>Color:</b></a><BR>"
|
||||
dat += "<span style='border: 1px solid #161616; background-color: #[features["butt_color"]];'> </span> <a href='?_src_=prefs;preference=butt_color;task=input'>Change</a><br>"
|
||||
|
||||
dat += "</td>"
|
||||
|
||||
dat += "</td>"
|
||||
@@ -2274,6 +2282,17 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
else
|
||||
to_chat(user,"<span class='danger'>Invalid color. Your color is not bright enough.</span>")
|
||||
|
||||
if("butt_color")
|
||||
var/new_buttcolor = input(user, "Butt Color:", "Character Preference") as color|null
|
||||
if(new_buttcolor)
|
||||
var/temp_hsv = RGBtoHSV(new_buttcolor)
|
||||
if(new_buttcolor == "#000000")
|
||||
features["butt_color"] = pref_species.default_color
|
||||
else if((MUTCOLORS_PARTSONLY in pref_species.species_traits) || ReadHSV(temp_hsv)[3] >= ReadHSV("#202020")[3])
|
||||
features["butt_color"] = sanitize_hexcolor(new_buttcolor)
|
||||
else
|
||||
to_chat(user,"<span class='danger'>Invalid color. Your color is not bright enough.</span>")
|
||||
|
||||
if("balls_shape")
|
||||
var/new_shape
|
||||
new_shape = input(user, "Testicle Type:", "Character Preference") as null|anything in GLOB.balls_shapes_list
|
||||
@@ -2355,8 +2374,9 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
features["belly_size"] = clamp(new_bellysize, 1, 3)
|
||||
|
||||
if("butt_size")
|
||||
var/new_buttsize = input(user, "Butt size :\n(0-4)", "Character Preference") as num|null
|
||||
features["butt_size"] = clamp(new_buttsize, 0, 4)
|
||||
var/new_buttsize = input(user, "Butt size :\n(0-5)", "Character Preference") as num|null
|
||||
if(new_buttsize)
|
||||
features["butt_size"] = clamp(new_buttsize, 0, 5)
|
||||
|
||||
if("vag_shape")
|
||||
var/new_shape
|
||||
|
||||
@@ -434,13 +434,14 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
|
||||
//womb features
|
||||
S["feature_has_womb"] >> features["has_womb"]
|
||||
S["feature_can_get_preg"] >> features["can_get_preg"] //hyperstation 13
|
||||
//belly features
|
||||
//belly features
|
||||
S["feature_has_belly"] >> features["has_belly"]
|
||||
S["feature_belly_color"] >> features["belly_color"]
|
||||
S["feature_hide_belly"] >> features["hide_belly"]
|
||||
S["feature_inflatable_belly"] >> features["inflatable_belly"]
|
||||
//anus features
|
||||
S["feature_has_anus"] >> features["has_anus"]
|
||||
S["feature_butt_color"] >> features["butt_color"]
|
||||
|
||||
//flavor text
|
||||
//Let's make our players NOT cry desperately as we wipe their savefiles of their special snowflake texts:
|
||||
|
||||
@@ -44,7 +44,6 @@
|
||||
dat += "(Shrink your belly down a size)<BR>"
|
||||
|
||||
|
||||
|
||||
if(user.pulling)
|
||||
dat += "<a href='byond://?src=[REF(src)];climaxover=1'>Climax over [user.pulling]</A>" //you can cum on objects if you really want...
|
||||
dat += "(Orgasm over a person or object.)<BR>"
|
||||
@@ -127,6 +126,11 @@
|
||||
var/picked_visibility = input(usr, "Choose visibility", "Expose/Hide genitals", "Hidden by clothes") in list("Always visible", "Hidden by clothes", "Always hidden")
|
||||
E.toggle_visibility(picked_visibility)
|
||||
|
||||
if(href_list["hideanus"])
|
||||
var/obj/item/organ/genital/anus/A = usr.getorganslot("anus")
|
||||
var/picked_visibility = input(usr, "Choose visibility", "Expose/Hide genitals", "Hidden by clothes") in list("Always visible", "Hidden by clothes", "Always hidden")
|
||||
A.toggle_visibility(picked_visibility)
|
||||
|
||||
if(href_list["hidetesticles"])
|
||||
var/obj/item/organ/genital/testicles/T = usr.getorganslot("testicles")
|
||||
var/picked_visibility = input(usr, "Choose visibility", "Expose/Hide genitals", "Hidden by clothes") in list("Always visible", "Hidden by clothes", "Always hidden")
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 2.7 KiB |
@@ -1,29 +1,46 @@
|
||||
/obj/item/organ/genital/anus
|
||||
name = "anus"
|
||||
desc = "You see a butt."
|
||||
desc = "You see a pair of asscheeks."
|
||||
icon_state = "butt"
|
||||
icon = 'modular_citadel/icons/obj/genitals/breasts.dmi'
|
||||
zone = "anus"
|
||||
slot = "anus"
|
||||
w_class = 3
|
||||
size = 0
|
||||
var/size_name = "nonexistant"
|
||||
var/statuscheck = FALSE
|
||||
shape = "Pair"
|
||||
can_masturbate_with = FALSE
|
||||
masturbation_verb = "massage"
|
||||
can_climax = FALSE
|
||||
|
||||
|
||||
|
||||
|
||||
/obj/item/organ/genital/anus/on_life()
|
||||
if(QDELETED(src))
|
||||
return
|
||||
if(!owner)
|
||||
return
|
||||
|
||||
|
||||
/obj/item/organ/genital/anus/update_appearance()
|
||||
var/string
|
||||
var/lowershape = lowertext(shape)
|
||||
|
||||
//Reflect the size of dat ass on examine.
|
||||
switch(size)
|
||||
if(1)
|
||||
size_name = "average"
|
||||
if(2)
|
||||
size_name = "sizable"
|
||||
if(3)
|
||||
size_name = "squeezable"
|
||||
if(4)
|
||||
size_name = "hefty"
|
||||
if(5)
|
||||
size_name = "godly"
|
||||
else
|
||||
size_name = "nonexistant"
|
||||
|
||||
desc = "You see a [lowershape] of [size_name] asscheeks."
|
||||
|
||||
if(owner)
|
||||
var/mob/living/carbon/human/H = owner
|
||||
color = "#[skintone2hex(H.skin_tone)]"
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
var/statuscheck = FALSE
|
||||
shape = "Pair"
|
||||
masturbation_verb = "massage"
|
||||
can_masturbate_with = FALSE
|
||||
can_climax = FALSE
|
||||
var/sent_full_message = TRUE //defaults to 1 since they're full to start
|
||||
var/inflatable = FALSE //For inflation connoisseurs
|
||||
|
||||
@@ -258,8 +258,6 @@
|
||||
A.color = "#[skintone2hex(skin_tone)]"
|
||||
A.update()
|
||||
|
||||
|
||||
|
||||
/mob/living/carbon/human/proc/give_breasts()
|
||||
if(!dna)
|
||||
return FALSE
|
||||
@@ -397,6 +395,7 @@
|
||||
dna.features["cock_color"] = dna.features["breasts_color"]
|
||||
return
|
||||
|
||||
//called every time players sprite changes, ie, moves item in hands or equiped item.
|
||||
/datum/species/proc/handle_genitals(mob/living/carbon/human/H)//more like handle sadness
|
||||
if(!H)//no args
|
||||
CRASH("H = null")
|
||||
@@ -452,6 +451,10 @@
|
||||
continue
|
||||
|
||||
var/mutable_appearance/genital_overlay = mutable_appearance(S.icon, layer = -layer)
|
||||
|
||||
//creates another icon with mutable appearance, allows different layering depending on direction
|
||||
var/mutable_appearance/genital_overlay_directional = mutable_appearance(S.icon, layer = -layer)
|
||||
|
||||
//genitals bigger than 11 inches / g-cup will appear over clothing, if accepted
|
||||
//otherwise, appear under clothing
|
||||
if(G.slot == "penis" || G.slot == "testicles")
|
||||
@@ -471,17 +474,28 @@
|
||||
genital_overlay.icon_state = "belly_[size]"
|
||||
colourcode = "belly_color"
|
||||
|
||||
if(G.slot == "anus") //we have a different size system
|
||||
//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_[size]"
|
||||
genital_overlay.layer = -FRONT_MUTATIONS_LAYER
|
||||
genital_overlay.icon_state = "butt_[size]_OTHER"
|
||||
genital_overlay.layer = -ID_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_[size]_NORTH"
|
||||
genital_overlay_directional.layer = -NECK_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_[size]"
|
||||
genital_overlay.icon_state = "butt_[size]_OTHER"
|
||||
genital_overlay_directional.icon_state = "butt_[size]_NORTH"
|
||||
else
|
||||
genital_overlay.color = "#[H.dna.features["mcolor"]]"
|
||||
genital_overlay.icon_state = "butt_[size]_m"
|
||||
genital_overlay.icon_state = "butt_[size]_OTHER_m"
|
||||
genital_overlay_directional.icon_state = "butt_[size]_NORTH_m"
|
||||
|
||||
|
||||
if(S.center)
|
||||
genital_overlay = center_image(genital_overlay, S.dimension_x, S.dimension_y)
|
||||
@@ -504,10 +518,26 @@
|
||||
genital_overlay.color = "#[H.dna.features["vag_color"]]"
|
||||
if("belly_color")
|
||||
genital_overlay.color = "#[H.dna.features["belly_color"]]"
|
||||
|
||||
if("butt_color")
|
||||
genital_overlay.color = "#[H.dna.features["butt_color"]]"
|
||||
|
||||
standing += genital_overlay
|
||||
|
||||
//check whether or not there is a directional overlay
|
||||
if(genital_overlay_directional)
|
||||
if(S.center)
|
||||
genital_overlay_directional = center_image(genital_overlay_directional, S.dimension_x, S.dimension_y)
|
||||
|
||||
if(use_skintones && H.dna.features["genitals_use_skintone"])
|
||||
genital_overlay_directional.color = "#[skintone2hex(H.skin_tone)]"
|
||||
if (colourtint)
|
||||
genital_overlay_directional.color = "#[colourtint]"
|
||||
else
|
||||
genital_overlay_directional.color = "#[H.dna.features["butt_color"]]"
|
||||
|
||||
standing += genital_overlay_directional
|
||||
|
||||
|
||||
if(LAZYLEN(standing))
|
||||
H.overlays_standing[layer] = standing.Copy()
|
||||
standing = list()
|
||||
|
||||
Reference in New Issue
Block a user