Skip to content
This repository was archived by the owner on May 22, 2025. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
172 changes: 87 additions & 85 deletions code/modules/surgery/organs/tails.dm
Original file line number Diff line number Diff line change
@@ -1,85 +1,87 @@
// Note: tails only work in humans. They use human-specific parameters and rely on human code for displaying.

/obj/item/organ/tail
name = "tail"
desc = "A severed tail. What did you cut this off of?"
icon_state = "severedtail"
zone = BODY_ZONE_PRECISE_GROIN
slot = ORGAN_SLOT_TAIL
var/tail_type = "None"

/obj/item/organ/tail/Remove(mob/living/carbon/human/H, special = 0)
..()
if(H && H.dna && H.dna.species)
H.dna.species.stop_wagging_tail(H)

/obj/item/organ/tail/cat
name = "cat tail"
desc = "A severed cat tail. Who's wagging now?"
tail_type = "Cat"

/obj/item/organ/tail/cat/Insert(mob/living/carbon/human/H, special = 0, drop_if_replaced = TRUE)
..()
if(istype(H))
if(!("tail_human" in H.dna.species.mutant_bodyparts))
H.dna.species.mutant_bodyparts |= "tail_human"
H.dna.features["tail_human"] = tail_type
H.update_body()

/obj/item/organ/tail/cat/Remove(mob/living/carbon/human/H, special = 0)
..()
if(istype(H))
H.dna.features["tail_human"] = "None"
H.dna.species.mutant_bodyparts -= "tail_human"
color = H.hair_color
H.update_body()

/obj/item/organ/tail/lizard
name = "lizard tail"
desc = "A severed lizard tail. Somewhere, no doubt, a lizard hater is very pleased with themselves."
color = "#116611"
tail_type = "Smooth"
var/spines = "None"

/obj/item/organ/tail/lizard/Insert(mob/living/carbon/human/H, special = 0, drop_if_replaced = TRUE)
..()
if(istype(H))
// Checks here are necessary so it wouldn't overwrite the tail of a lizard it spawned in
if(!("tail_lizard" in H.dna.species.mutant_bodyparts))
H.dna.features["tail_lizard"] = tail_type
H.dna.species.mutant_bodyparts |= "tail_lizard"

if(!("spines" in H.dna.species.mutant_bodyparts))
H.dna.features["spines"] = spines
H.dna.species.mutant_bodyparts |= "spines"
H.update_body()

/obj/item/organ/tail/lizard/Remove(mob/living/carbon/human/H, special = 0)
..()
if(istype(H))
H.dna.species.mutant_bodyparts -= "tail_lizard"
H.dna.species.mutant_bodyparts -= "spines"
color = "#" + H.dna.features["mcolor"]
tail_type = H.dna.features["tail_lizard"]
spines = H.dna.features["spines"]
H.update_body()

/obj/item/organ/tail/polysmorph
name = "polysmorph tail"
desc = "A severed polysmorph tail."
tail_type = "Polys"

/obj/item/organ/tail/polysmorph/Insert(mob/living/carbon/human/H, special = 0, drop_if_replaced = FALSE)
..()
if(istype(H))
if(!("tail_polysmorph" in H.dna.species.mutant_bodyparts))
H.dna.features["tail_polysmorph"] = tail_type
H.dna.species.mutant_bodyparts |= "tail_polysmorph"
H.update_body()

/obj/item/organ/tail/polysmorph/Remove(mob/living/carbon/human/H, special = 0)
..()
if(istype(H))
H.dna.species.mutant_bodyparts -= "tail_polysmorph"
tail_type = H.dna.features["tail_polysmorph"]
H.update_body()
// Note: tails only work in humans. They use human-specific parameters and rely on human code for displaying.

/obj/item/organ/tail
name = "tail"
desc = "A severed tail. What did you cut this off of?"
icon_state = "severedtail"
zone = BODY_ZONE_PRECISE_GROIN
slot = ORGAN_SLOT_TAIL
var/tail_type = "None"

/obj/item/organ/tail/Remove(mob/living/carbon/human/H, special = 0)
..()
if(H && H.dna && H.dna.species)
H.dna.species.stop_wagging_tail(H)

/obj/item/organ/tail/cat
name = "cat tail"
desc = "A severed cat tail. Who's wagging now?"
tail_type = "Cat"

/obj/item/organ/tail/cat/Insert(mob/living/carbon/human/H, special = 0, drop_if_replaced = TRUE)
..()
if(istype(H))
if(!("tail_human" in H.dna.species.mutant_bodyparts))
H.dna.species.mutant_bodyparts |= "tail_human"
H.dna.features["tail_human"] = tail_type
H.update_body()

/obj/item/organ/tail/cat/Remove(mob/living/carbon/human/H, special = 0)
..()
if(istype(H))
H.dna.features["tail_human"] = "None"
H.dna.species.mutant_bodyparts -= "tail_human"
color = H.hair_color
H.update_body()

/obj/item/organ/tail/lizard
name = "lizard tail"
desc = "A severed lizard tail. Somewhere, no doubt, a lizard hater is very pleased with themselves."
icon_state = "severedlizardtail" //yogs - so the tail uses the correct sprites
color = "#116611"
tail_type = "Smooth"
var/spines = "None"

/obj/item/organ/tail/lizard/Insert(mob/living/carbon/human/H, special = 0, drop_if_replaced = TRUE)
..()
if(istype(H))
// Checks here are necessary so it wouldn't overwrite the tail of a lizard it spawned in
if(!("tail_lizard" in H.dna.species.mutant_bodyparts))
H.dna.features["tail_lizard"] = tail_type
H.dna.species.mutant_bodyparts |= "tail_lizard"

if(!("spines" in H.dna.species.mutant_bodyparts))
H.dna.features["spines"] = spines
H.dna.species.mutant_bodyparts |= "spines"
H.update_body()

/obj/item/organ/tail/lizard/Remove(mob/living/carbon/human/H, special = 0)
..()
if(istype(H))
H.dna.species.mutant_bodyparts -= "tail_lizard"
H.dna.species.mutant_bodyparts -= "spines"
color = "#" + H.dna.features["mcolor"]
tail_type = H.dna.features["tail_lizard"]
spines = H.dna.features["spines"]
H.update_body()

/obj/item/organ/tail/polysmorph
name = "polysmorph tail"
desc = "A severed polysmorph tail."
icon_state = "severedpolytail" //yogs - so the tail uses the correct sprites
tail_type = "Polys"

/obj/item/organ/tail/polysmorph/Insert(mob/living/carbon/human/H, special = 0, drop_if_replaced = FALSE)
..()
if(istype(H))
if(!("tail_polysmorph" in H.dna.species.mutant_bodyparts))
H.dna.features["tail_polysmorph"] = tail_type
H.dna.species.mutant_bodyparts |= "tail_polysmorph"
H.update_body()

/obj/item/organ/tail/polysmorph/Remove(mob/living/carbon/human/H, special = 0)
..()
if(istype(H))
H.dna.species.mutant_bodyparts -= "tail_polysmorph"
tail_type = H.dna.features["tail_polysmorph"]
H.update_body()
Binary file modified icons/obj/surgery.dmi
Binary file not shown.