diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm
index 597fb2b94a..e1a120643f 100644
--- a/code/modules/mob/living/carbon/human/human.dm
+++ b/code/modules/mob/living/carbon/human/human.dm
@@ -1117,7 +1117,8 @@
else
usr << "You failed to check the pulse. Try again."
-/mob/living/carbon/human/proc/set_species(var/new_species, var/default_colour, var/regen_icons = TRUE)
+//TFF 14/4/19: Port VoreStation TF fix
+/mob/living/carbon/human/proc/set_species(var/new_species, var/default_colour, var/regen_icons = TRUE, var/mob/living/carbon/human/example = null) //VOREStation Edit - send an example
if(!dna)
if(!new_species)
@@ -1152,7 +1153,16 @@
if(species.default_language)
add_language(species.default_language)
- if(species.base_color) //VOREStation Edit - Always give them a basse color
+//TFF 14/4/19: Port VoreStation TF fix
+ //if(species.icon_scale != 1) //VOREStation Removal
+ // update_transform() //VOREStation Removal
+
+ if(example) //VOREStation Edit begin
+ if(!(example == src))
+ r_skin = example.r_skin
+ g_skin = example.g_skin
+ b_skin = example.b_skin
+ else if(species.base_color) //VOREStation Edit end
//Apply colour.
r_skin = hex2num(copytext(species.base_color,2,4))
g_skin = hex2num(copytext(species.base_color,4,6))
@@ -1169,10 +1179,13 @@
gender = species.genders[1]
//icon_state = lowertext(species.name) //Necessary?
+//TFF 14/4/19: Port VoreStation TF fix
+ //VOREStation Edit start: swap places of those two procs
+ species.handle_post_spawn(src)
+
species.create_organs(src)
- species.handle_post_spawn(src)
maxHealth = species.total_health
diff --git a/code/modules/reagents/Chemistry-Reagents_vr.dm b/code/modules/reagents/Chemistry-Reagents_vr.dm
index 59ad74b118..c0259fba08 100644
--- a/code/modules/reagents/Chemistry-Reagents_vr.dm
+++ b/code/modules/reagents/Chemistry-Reagents_vr.dm
@@ -9,16 +9,27 @@
if(ishuman(M))
var/mob/living/carbon/human/H = M
if(H.species.name != "Promethean")
- M << "Your flesh rapidly mutates!"
+ //TFF 14/4/19: Port VoreStation TF fix
+ to_chat(M, "Your flesh rapidly mutates!")
+
+ var/list/backup_implants = list()
+ for(var/obj/item/organ/I in H.organs)
+ for(var/obj/item/weapon/implant/backup/BI in I.contents)
+ backup_implants += BI
+ if(backup_implants.len)
+ for(var/obj/item/weapon/implant/backup/BI in backup_implants)
+ BI.forceMove(src)
+
H.set_species("Promethean")
- H.verbs += /mob/living/carbon/human/proc/shapeshifter_select_shape
- H.verbs += /mob/living/carbon/human/proc/shapeshifter_select_colour
- H.verbs += /mob/living/carbon/human/proc/shapeshifter_select_hair
- H.verbs += /mob/living/carbon/human/proc/shapeshifter_select_gender
- H.verbs += /mob/living/carbon/human/proc/regenerate
- H.verbs += /mob/living/proc/set_size
H.shapeshifter_set_colour("#05FF9B") //They can still change their color.
+ //TFF 14/4/19: Port VoreStation TF fix
+ if(backup_implants.len)
+ var/obj/item/organ/external/torso = H.get_organ(BP_TORSO)
+ for(var/obj/item/weapon/implant/backup/BI in backup_implants)
+ BI.forceMove(torso)
+ torso.implants += BI
+
/datum/chemical_reaction/slime/sapphire_mutation
name = "Slime Mutation Toxins"
id = "slime_mutation_tox"
@@ -59,14 +70,14 @@
strength = 10//Don't drink it
mrate_static = TRUE
-/datum/reagent/purplesap
+/datum/reagent/purplesap
name = "Purple sap"
id = "purplesap"
description = "Purple liquid. It is very sticky and smells of ammonia."
color = "#7a48a0"
taste_description = "Ammonia"
-/datum/reagent/orangesap
+/datum/reagent/orangesap
name = "Orange sap"
id = "orangesap"
description = "Orange liquid. It wobbles around a bit like jelly."
diff --git a/code/modules/vore/eating/bellymodes_tf_vr.dm b/code/modules/vore/eating/bellymodes_tf_vr.dm
index 1f638f4f98..fa23e95fa5 100644
--- a/code/modules/vore/eating/bellymodes_tf_vr.dm
+++ b/code/modules/vore/eating/bellymodes_tf_vr.dm
@@ -97,7 +97,7 @@
change_ears(P)
change_tail_nocolor(P)
change_wing_nocolor(P)
- change_species(P,1)
+ change_species(P,1,1) //TFF 14/4/19: Port VoreStation TF fix
///////////////////////////// DM_TRANSFORM_REPLICA /////////////////////////////
else if(mode == DM_TRANSFORM_REPLICA)
@@ -122,7 +122,7 @@
change_ears(P)
change_tail(P)
change_wing(P)
- change_species(P,1)
+ change_species(P,1,2) //TFF 14/4/19: Port VoreStation TF fix
///////////////////////////// DM_TRANSFORM_CHANGE_SPECIES_AND_TAUR_EGG /////////////////////////////
else if(mode == DM_TRANSFORM_CHANGE_SPECIES_AND_TAUR_EGG)
@@ -134,7 +134,7 @@
change_ears(P)
change_tail_nocolor(P)
change_wing_nocolor(P)
- change_species(P,1)
+ change_species(P,1,1) //TFF 14/4/19: Port VoreStation TF fix
continue
if(!P.absorbed)
@@ -177,7 +177,7 @@
change_ears(P)
change_tail(P)
change_wing(P)
- change_species(P,1)
+ change_species(P,1,2) //TFF 14/4/19: Port VoreStation TF fix
continue
if(!P.absorbed)
diff --git a/code/modules/vore/eating/transforming_vr.dm b/code/modules/vore/eating/transforming_vr.dm
index b978bf8963..a0398350fb 100644
--- a/code/modules/vore/eating/transforming_vr.dm
+++ b/code/modules/vore/eating/transforming_vr.dm
@@ -210,42 +210,44 @@
return 1
return 0
-/obj/belly/proc/change_species(var/mob/living/carbon/human/M, message=0)
+//TFF: Port VoreStation TF fix
+/obj/belly/proc/change_species(var/mob/living/carbon/human/M, message=0, color_action = 0) //color_action: 0 for default species, 1 to preserve, 2 to transfer from pred
var/mob/living/carbon/human/O = owner
if(!istype(M) || !istype(O))
return
- if (M.species == "Promethean" && O.species != "Promethean") //If the person was a promethean before TF, remove all their verbs!
- M.verbs -= /mob/living/carbon/human/proc/shapeshifter_select_shape
- M.verbs -= /mob/living/carbon/human/proc/shapeshifter_select_colour
- M.verbs -= /mob/living/carbon/human/proc/shapeshifter_select_hair
- M.verbs -= /mob/living/carbon/human/proc/shapeshifter_select_gender
- M.verbs -= /mob/living/carbon/human/proc/regenerate
- M.verbs -= /mob/living/proc/set_size
+//TFF: Port VoreStation TF fix
+ M.verbs -= M.species.inherent_verbs //Take away their unique stuff
- M.species = O.species
+ var/list/backup_implants = list()
+ for(var/obj/item/organ/I in M.organs)
+ for(var/obj/item/weapon/implant/backup/BI in I.contents)
+ backup_implants += BI
+ if(backup_implants.len)
+ for(var/obj/item/weapon/implant/backup/BI in backup_implants)
+ BI.forceMove(src)
+ if(color_action == 1)
+ M.set_species(O.species.name,0,1,M)
+ else if(color_action == 2)
+ M.set_species(O.species.name,0,1,O)
+ else
+ M.set_species(O.species.name)
M.custom_species = O.custom_species
- M.species.create_organs(M) //This is the only way to make it so Unathi TF doesn't result in people dying from organ rejection.
- for(var/obj/item/organ/I in M.organs) //This prevents organ rejection
- I.species = O.species
- for(var/obj/item/organ/I in M.internal_organs) //This prevents organ rejection
- I.species = O.species
- for(var/obj/item/organ/external/Z in M.organs)//Just in case.
- Z.sync_colour_to_human(M)
- M.fixblood()
+
+//TFF: Port VoreStation TF fix
M.update_icons_body()
M.update_tail_showing()
+
+//TFF: Port VoreStation TF fix.
+ if(backup_implants.len)
+ var/obj/item/organ/external/torso = M.get_organ(BP_TORSO)
+ for(var/obj/item/weapon/implant/backup/BI in backup_implants)
+ BI.forceMove(torso)
+ torso.implants += BI
+
if(message)
to_chat(M, "You lose sensation of your body, feeling only the warmth of everything around you... ")
to_chat(O, "Your body shifts as you make dramatic changes to your captive's body.")
- if (M.species == "Promethean") //Did they get TF'd into a promethean?
- M.verbs += /mob/living/carbon/human/proc/shapeshifter_select_shape
- M.verbs += /mob/living/carbon/human/proc/shapeshifter_select_colour
- M.verbs += /mob/living/carbon/human/proc/shapeshifter_select_hair
- M.verbs += /mob/living/carbon/human/proc/shapeshifter_select_gender
- M.verbs += /mob/living/carbon/human/proc/regenerate
- M.verbs += /mob/living/proc/set_size
- M.shapeshifter_select_shape()
/obj/belly/proc/put_in_egg(var/atom/movable/M, message=0)
var/mob/living/carbon/human/O = owner