* Added flared taur penises FIRST STEP ONLY DO NOT PULL REQUEST THIS!!!! The files are still messy and the penis is just another shape to choose from right now for testing purposes! Flipped the order of GENITALS_BEHIND_LAYER and BODY_BEHIND_LAYER, as taurs need to be drawn on top of the genitalia, and I don't think anything else uses this that would need genitals drawn on top of them. * Adds More shapes Adds Tapered and Knotted shapes to the Taur cocks. * Fixes on-ground sprites The OLD bug barbed knotted cocks being invisible when not inside a body is fixed. This fix solves why taur cocks were invisible when cut off or gibbed the body. This also removes the lowershape() workaround that was being used. I'll get around a bigger refactor of other genitalia in another PR, as the scope of this was just to add taur cocks to begin with...
70 lines
2.5 KiB
Plaintext
70 lines
2.5 KiB
Plaintext
/obj/item/organ/genital/penis
|
|
name = "Penis"
|
|
desc = "A male reproductive organ."
|
|
icon_state = "penis"
|
|
icon = 'code/citadel/icons/penis.dmi'
|
|
zone = "groin"
|
|
slot = "penis"
|
|
w_class = 3
|
|
can_masturbate_with = 1
|
|
size = 2 //arbitrary value derived from length and girth for sprites.
|
|
var/length = 6 //inches
|
|
var/cached_length //used to detect a change in length
|
|
var/girth = 0
|
|
var/girth_ratio = COCK_GIRTH_RATIO_DEF //0.73; check citadel_defines.dm
|
|
var/knot_girth_ratio = KNOT_GIRTH_RATIO_DEF
|
|
var/list/dickflags = list()
|
|
var/list/knotted_types = list("knotted", "barbknot")
|
|
var/obj/item/organ/genital/testicles/linked_balls
|
|
|
|
/obj/item/organ/genital/penis/update_size()
|
|
if(length == cached_length)
|
|
return
|
|
switch(length)
|
|
if(-INFINITY to 5)
|
|
size = 1
|
|
if(5 to 9)
|
|
size = 2
|
|
if(9 to INFINITY)
|
|
size = 3//no new sprites for anything larger yet
|
|
/* if(9 to 15)
|
|
size = 3
|
|
if(15 to INFINITY)
|
|
size = 3*/
|
|
girth = (length * girth_ratio)
|
|
cached_length = length
|
|
|
|
/obj/item/organ/genital/penis/update_appearance()
|
|
var/string = "penis_[GLOB.cock_shapes_icons[shape]]_[size]"
|
|
icon_state = sanitize_text(string)
|
|
var/lowershape = lowertext(shape)
|
|
if(lowershape in knotted_types)
|
|
if(lowershape == "barbknot")
|
|
lowershape = "barbed, knotted"
|
|
desc = "That's a [lowershape] penis. You estimate it's about [round(length, 0.25)] inch[length > 1 ? "es" : ""] long, [round(girth, 0.25)] inch[girth > 1 ? "es" : ""] around the shaft \
|
|
and [round(length * knot_girth_ratio, 0.25)] inch[length > 1 ? "es" : ""] around the knot."
|
|
else
|
|
desc = "That's a [lowershape] penis. You estimate it's about [round(length, 0.25)] inch[length > 1 ? "es" : ""] long and [round(girth, 0.25)] inch[length > 1 ? "es" : ""] around."
|
|
if(owner)
|
|
if(owner.dna.species.use_skintones && owner.dna.features["genitals_use_skintone"])
|
|
if(ishuman(owner)) // Check before recasting type, although someone fucked up if you're not human AND have use_skintones somehow...
|
|
var/mob/living/carbon/human/H = owner // only human mobs have skin_tone, which we need.
|
|
color = "#[skintone2hex(H.skin_tone)]"
|
|
else
|
|
color = "#[owner.dna.features["cock_color"]]"
|
|
|
|
/obj/item/organ/genital/penis/update_link()
|
|
if(owner)
|
|
linked_balls = (owner.getorganslot("testicles"))
|
|
if(linked_balls)
|
|
linked_balls.linked_penis = src
|
|
else
|
|
if(linked_balls)
|
|
linked_balls.linked_penis = null
|
|
linked_balls = null
|
|
|
|
/obj/item/organ/genital/penis/remove_ref()
|
|
if(linked_balls)
|
|
linked_balls.linked_penis = null
|
|
linked_balls = null
|