diff --git a/code/modules/client/preference_setup/vore/07_traits.dm b/code/modules/client/preference_setup/vore/07_traits.dm
index 8adcc7639b..5a9922dd4f 100644
--- a/code/modules/client/preference_setup/vore/07_traits.dm
+++ b/code/modules/client/preference_setup/vore/07_traits.dm
@@ -239,8 +239,8 @@
var/list/choices
var/datum/species/spec = GLOB.all_species[pref.species]
if (spec.selects_bodytype == SELECTS_BODYTYPE_SHAPESHIFTER && istype(spec, /datum/species/shapeshifter))
- var/datum/species/shapeshifter/spec_shifter = spec
- choices = spec_shifter.valid_transform_species
+ var/datum/species/spec_shifter = spec
+ choices = spec_shifter.get_valid_shapeshifter_forms()
else
choices = GLOB.custom_species_bases
if(pref.species != SPECIES_CUSTOM)
diff --git a/code/modules/mob/living/carbon/human/human_defines_vr.dm b/code/modules/mob/living/carbon/human/human_defines_vr.dm
index 39c4f11cbc..1bd8e2f392 100644
--- a/code/modules/mob/living/carbon/human/human_defines_vr.dm
+++ b/code/modules/mob/living/carbon/human/human_defines_vr.dm
@@ -4,7 +4,6 @@
b_skin = 179
var/vantag_pref = VANTAG_NONE //What's my status?
- var/impersonate_bodytype //For impersonating a bodytype
var/ability_flags = 0 //Shadekin abilities/potentially other species-based?
var/sensorpref = 5 //Suit sensor loadout pref
var/wings_hidden = FALSE
diff --git a/code/modules/mob/living/carbon/human/species/station/protean_vr/protean_powers.dm b/code/modules/mob/living/carbon/human/species/station/protean_vr/protean_powers.dm
index 8f0a9e4306..bff5a09e39 100644
--- a/code/modules/mob/living/carbon/human/species/station/protean_vr/protean_powers.dm
+++ b/code/modules/mob/living/carbon/human/species/station/protean_vr/protean_powers.dm
@@ -21,7 +21,7 @@
if(!istype(refactory))
to_chat(src,"You don't have a working refactory module!")
return
-
+
var/choice = tgui_input_list(src,"Pick the bodypart to change:", "Refactor - One Bodypart", species.has_limbs)
if(!choice)
return
@@ -61,7 +61,7 @@
var/datum/robolimb/M = chargen_robolimbs[company]
if(!(choice in M.parts))
continue
- if(impersonate_bodytype in M.species_cannot_use)
+ if(species?.base_species in M.species_cannot_use)
continue
if(M.whitelisted_to && !(ckey in M.whitelisted_to))
continue
@@ -118,7 +118,7 @@
var/datum/robolimb/M = chargen_robolimbs[company]
if(!(BP_TORSO in M.parts))
continue
- if(impersonate_bodytype in M.species_cannot_use)
+ if(species?.base_species in M.species_cannot_use)
continue
if(M.whitelisted_to && !(ckey in M.whitelisted_to))
continue
@@ -243,7 +243,7 @@
if(!isturf(to_locate.loc))
to_chat(to_locate,"You need more space to perform this action!")
return
-
+
//Blob form
if(temporary_form)
if(health < maxHealth*0.5)
@@ -274,7 +274,6 @@
var/new_species = tgui_input_list(usr, "Please select a species to emulate.", "Shapeshifter Body", GLOB.playable_species)
if(new_species)
- impersonate_bodytype = new_species
species?.base_species = new_species // Really though you better have a species
regenerate_icons() //Expensive, but we need to recrunch all the icons we're wearing
diff --git a/code/modules/mob/living/carbon/human/species/station/protean_vr/protean_species.dm b/code/modules/mob/living/carbon/human/species/station/protean_vr/protean_species.dm
index ec938c91cc..f7d154b1b8 100755
--- a/code/modules/mob/living/carbon/human/species/station/protean_vr/protean_species.dm
+++ b/code/modules/mob/living/carbon/human/species/station/protean_vr/protean_species.dm
@@ -11,6 +11,9 @@
knockout_message = "collapses inwards, forming a disordered puddle of gray goo."
remains_type = /obj/effect/decal/cleanable/ash
+ selects_bodytype = SELECTS_BODYTYPE_SHAPESHIFTER
+ base_species = SPECIES_HUMAN
+
blood_color = "#505050" //This is the same as the 80,80,80 below, but in hex
flesh_color = "#505050"
base_color = "#FFFFFF" //Color mult, start out with this
@@ -123,9 +126,12 @@
saved_nif.quick_implant(H)
/datum/species/protean/get_bodytype(var/mob/living/carbon/human/H)
- if(H)
- return H.impersonate_bodytype || ..()
- return ..()
+ if(!H || base_species == name) return ..()
+ var/datum/species/S = GLOB.all_species[base_species]
+ return S.get_bodytype(H)
+
+/datum/species/protean/get_valid_shapeshifter_forms(var/mob/living/carbon/human/H)
+ return GLOB.playable_species
/datum/species/protean/handle_post_spawn(var/mob/living/carbon/human/H)
..()
diff --git a/code/modules/organs/robolimbs_custom.dm b/code/modules/organs/robolimbs_custom.dm
index 96d80669c1..cfa9848b74 100644
--- a/code/modules/organs/robolimbs_custom.dm
+++ b/code/modules/organs/robolimbs_custom.dm
@@ -171,6 +171,7 @@ VS Edit - anyone can select these. */
species_cannot_use = GLOB.all_species.Copy()
species_cannot_use -= SPECIES_TESHARI //VOREStation add - let 'em be selected.
species_cannot_use -= SPECIES_CUSTOM //VOREStation add - let 'em be selected.
+ species_cannot_use -= SPECIES_PROTEAN //VOREStation add - let 'em be selected.
..()
/obj/item/weapon/disk/limb/dsi_teshari