You can transplant xenomorph tails onto people (#89618)

This PR allows you to extract tail organs from xenomorphs and surgically
attach xenomorph tails to people.
(Despite being a carbon the xenomorph sprite is not built out of
component overlays so this technically does not remove the tail from its
corpse sorry).

Having a xenomorph tail makes you better at tackling, changes your
tackle verb to "pounce" like if you are a felinid, and also gives you
the parkour benefits of the Freerunning quirk.

![image](https://github.com/user-attachments/assets/6eb0f825-4f23-4a22-aa4d-03cc1cbd676a)
You can also surgically attach a xenomorph _queen_'s tail to someone.
This arguably is a bad idea because it makes you slower (it's much too
heavy) but it does give you access to the queen's tail spin attack
(after which you will fall over if you aren't inhumanly strong). Also
more importantly, it is comically large.

Look I'm racking my brain but this one really mostly comes down to "it's
funny to do this".
But let's pretend that it also increases the depth and complexity of the
sandbox and promotes interesting interactions between crewmembers or
something like that.

Ideally sometimes in the future we will either decide that xenomorphs
are not carbons (is it purely because they have organs?) or decide that
they _are_ carbons and build them accordingly. In the latter case this
will have been a useful addition.

🆑
add: You can transplant xenomorph tails onto people.
/🆑
This commit is contained in:
Jacquerel
2025-03-12 16:53:40 -04:00
committed by Roxy
parent d5e597926c
commit e366ace9ec
20 changed files with 126 additions and 8 deletions
+59 -4
View File
@@ -88,7 +88,7 @@
organ_owner.clear_mood_event("tail_regained")
if(type in organ_owner.dna.species.mutant_organs)
if(type in organ_owner.dna?.species.mutant_organs)
organ_owner.add_mood_event("tail_lost", /datum/mood_event/tail_lost)
organ_owner.add_mood_event("tail_balance_lost", /datum/mood_event/tail_balance_lost)
@@ -187,10 +187,9 @@
/obj/item/organ/tail/monkey
name = "monkey tail"
preference = "feature_monkey_tail"
bodypart_overlay = /datum/bodypart_overlay/mutant/tail/monkey
icon_state = "severedmonkeytail"
dna_block = null
bodypart_overlay = /datum/bodypart_overlay/mutant/tail/monkey
///Monkey tail bodypart overlay
/datum/bodypart_overlay/mutant/tail/monkey
@@ -200,6 +199,62 @@
/datum/bodypart_overlay/mutant/tail/monkey/get_global_feature_list()
return SSaccessories.tails_list_monkey
/obj/item/organ/tail/xeno
name = "alien tail"
desc = "A long and flexible tail slightly resembling a spine, used by its original owner as both weapon and balance aid."
icon_state = "severedxenotail"
dna_block = null
bodypart_overlay = /datum/bodypart_overlay/mutant/tail/xeno
organ_traits = list(TRAIT_TACKLING_TAILED_POUNCE, TRAIT_FREERUNNING)
/obj/item/organ/tail/xeno_queen
name = "alien queen's tail"
desc = "An enormous serrated tail, used to deadly effect by its original owner but perhaps too heavy for a human spine."
icon = 'icons/mob/human/species/alien/tail_xenomorph_queen.dmi'
icon_state = "severedqueentail"
w_class = WEIGHT_CLASS_BULKY
slowdown = 2
item_flags = SLOWS_WHILE_IN_HAND
dna_block = null
bodypart_overlay = /datum/bodypart_overlay/mutant/tail/xeno/queen
/// Our tail whip action
var/datum/action/cooldown/spell/aoe/repulse/xeno/tail_whip
/obj/item/organ/tail/xeno_queen/Initialize(mapload)
. = ..()
tail_whip = new(src)
/obj/item/organ/tail/xeno_queen/on_mob_insert(mob/living/carbon/receiver, special, movement_flags)
. = ..()
tail_whip.Grant(receiver)
receiver.add_movespeed_modifier(/datum/movespeed_modifier/tail_dragger)
/obj/item/organ/tail/xeno_queen/on_mob_remove(mob/living/carbon/organ_owner, special, movement_flags)
. = ..()
tail_whip.Remove(organ_owner)
organ_owner.remove_movespeed_modifier(/datum/movespeed_modifier/tail_dragger)
///Alien tail bodypart overlay
/datum/bodypart_overlay/mutant/tail/xeno
color_source = NONE
feature_key = "tail_xeno"
imprint_on_next_insertion = FALSE
/// We don't want to bother writing this in DNA, just use this appearance
var/default_appearance = "Xeno"
/datum/bodypart_overlay/mutant/tail/xeno/New()
. = ..()
set_appearance_from_name(default_appearance)
/datum/bodypart_overlay/mutant/tail/xeno/get_global_feature_list()
return SSaccessories.tails_list_xeno
/datum/bodypart_overlay/mutant/tail/xeno/randomize_appearance()
set_appearance_from_name(default_appearance)
/datum/bodypart_overlay/mutant/tail/xeno/queen
default_appearance = "Xeno Queen"
/obj/item/organ/tail/lizard
name = "lizard tail"
desc = "A severed lizard tail. Somewhere, no doubt, a lizard hater is very pleased with themselves."