Transformation fixes (#17953)

* Transformation fixes

Fixes #17943
Fixes #17942

Removed copying of bloodtype from vanity TF procs, as if the user actually has blood it will cause organ failure.
Added secondary ears to copy form ability.

* Makes hanner not get outed by medical scanners

* Preserves bloodtype for resleeving but fixes it for TF
This commit is contained in:
SatinIsle
2025-07-14 22:58:26 +01:00
committed by GitHub
parent 84dc5535dc
commit 9eb95ff4bc
7 changed files with 16 additions and 11 deletions
@@ -119,7 +119,7 @@ var/static/icon/ingame_hud_med_vr = icon('icons/mob/hud_med_vr.dmi')
//does not really need to happen, that kinda thing will only happen when putting another person's limb onto your own body
return sorted
/mob/living/carbon/human/proc/transform_into_other_human(var/mob/living/carbon/human/character, var/copy_name, var/copy_flavour = TRUE, var/convert_to_prosthetics = FALSE)
/mob/living/carbon/human/proc/transform_into_other_human(var/mob/living/carbon/human/character, var/copy_name, var/copy_flavour = TRUE, var/convert_to_prosthetics = FALSE, var/apply_bloodtype = TRUE)
/*
name, nickname, flavour, OOC notes
gender, sex
@@ -161,7 +161,8 @@ var/static/icon/ingame_hud_med_vr = icon('icons/mob/hud_med_vr.dmi')
grad_style = character.grad_style
f_style = character.f_style
grad_style = character.grad_style
dna?.b_type = character.dna ? character.dna.b_type : DEFAULT_BLOOD_TYPE
if(apply_bloodtype)
dna?.b_type = character.dna ? character.dna.b_type : DEFAULT_BLOOD_TYPE //This actually just straight up kills whoever uses it if the blood types aren't compatible on TF
synth_color = character.synth_color
r_synth = character.r_synth
g_synth = character.g_synth
@@ -180,6 +181,9 @@ var/static/icon/ingame_hud_med_vr = icon('icons/mob/hud_med_vr.dmi')
g_ears3 = character.g_ears3
a_ears = character.a_ears
ear_secondary_style = character.ear_secondary_style
ear_secondary_colors = character.ear_secondary_colors
tail_style = character.tail_style
r_tail = character.r_tail
b_tail = character.b_tail
@@ -593,7 +593,7 @@ var/list/wrapped_species_by_ref = list()
character.visible_message(span_notify("[character] rapidly contorts and shifts!"), span_danger("You begin to reform."))
if(do_after(character, 40,exclusive = TASK_ALL_EXCLUSIVE))
if(character.client.prefs) //Make sure we didn't d/c
character.client.prefs.vanity_copy_to(src, FALSE, flavour, oocnotes, FALSE)
character.client.prefs.vanity_copy_to(src, FALSE, flavour, oocnotes, FALSE, FALSE)
character.visible_message(span_notify("[character] adopts a new form!"), span_danger("You have reformed."))
/mob/living/carbon/human/proc/shapeshifter_copy_body()
@@ -658,5 +658,5 @@ var/list/wrapped_species_by_ref = list()
to_chat(character, span_warning("You lost your grip on [victim]!"))
return
if(character.client) //Make sure we didn't d/c
transform_into_other_human(victim, FALSE, flavour, FALSE)
transform_into_other_human(victim, FALSE, flavour, FALSE, FALSE)
character.visible_message(span_notify("[character] adopts the form of [victim]!"), span_danger("You have reassembled into [victim]."))
@@ -132,7 +132,7 @@
if(do_after(protie, 40,exclusive = TASK_ALL_EXCLUSIVE))
if(protie.client.prefs) //Make sure we didn't d/c
var/obj/item/rig/protean/Rig = species?:OurRig
protie.client.prefs.vanity_copy_to(src, FALSE, flavour, oocnotes, TRUE)
protie.client.prefs.vanity_copy_to(src, FALSE, flavour, oocnotes, TRUE, FALSE)
species?:OurRig = Rig //Get a reference to our Rig and put it back after reassembling
protie.visible_message(span_notify("[protie] adopts a new form!"), span_danger("You have reassembled."))
@@ -201,7 +201,7 @@
return
if(protie.client) //Make sure we didn't d/c
var/obj/item/rig/protean/Rig = species?:OurRig
transform_into_other_human(victim, FALSE, flavour, TRUE)
transform_into_other_human(victim, FALSE, flavour, TRUE, FALSE)
species?:OurRig = Rig //Get a reference to our Rig and put it back after reassembling
protie.visible_message(span_notify("[protie] adopts the form of [victim]!"), span_danger("You have reassembled into [victim]."))