diff --git a/code/modules/mob/living/carbon/human/species/station/protean_vr/protean_blob.dm b/code/modules/mob/living/carbon/human/species/station/protean_vr/protean_blob.dm
index 4ad7416f1a..6756cf7598 100644
--- a/code/modules/mob/living/carbon/human/species/station/protean_vr/protean_blob.dm
+++ b/code/modules/mob/living/carbon/human/species/station/protean_vr/protean_blob.dm
@@ -305,7 +305,11 @@ var/global/list/disallowed_protean_accessories = list(
)
// Helpers - Unsafe, WILL perform change.
-/mob/living/carbon/human/proc/nano_intoblob()
+/mob/living/carbon/human/proc/nano_intoblob(force)
+ if(!force && !isturf(loc))
+ to_chat(src,"You can't change forms while inside something.")
+ return
+
var/panel_was_up = FALSE
if(client?.statpanel == "Protean")
panel_was_up = TRUE
@@ -398,7 +402,11 @@ var/global/list/disallowed_protean_accessories = list(
if(istype(I, /obj/item/weapon/holder))
root.remove_from_mob(I)
-/mob/living/carbon/human/proc/nano_outofblob(var/mob/living/simple_mob/protean_blob/blob)
+/mob/living/carbon/human/proc/nano_outofblob(var/mob/living/simple_mob/protean_blob/blob, force)
+ if(!force && !isturf(loc))
+ to_chat(src,"You can't change forms while inside something.")
+ return
+
if(!istype(blob))
return
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 d18ad678df..6b497de942 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
@@ -12,13 +12,16 @@
to_chat(src,"You must be awake and standing to perform this action!")
return
+ if(!isturf(loc))
+ to_chat(src,"You need more space to perform this action!")
+ return
+
var/obj/item/organ/internal/nano/refactory/refactory = nano_get_refactory()
//Missing the organ that does this
if(!istype(refactory))
to_chat(src,"You don't have a working refactory module!")
return
-
-
+
var/choice = input(src,"Pick the bodypart to change:", "Refactor - One Bodypart") as null|anything in species.has_limbs
if(!choice)
return
@@ -91,6 +94,10 @@
to_chat(src,"You must be awake and standing to perform this action!")
return
+ if(!isturf(loc))
+ to_chat(src,"You need more space to perform this action!")
+ return
+
var/obj/item/organ/internal/nano/refactory/refactory = nano_get_refactory()
//Missing the organ that does this
if(!istype(refactory))
@@ -232,6 +239,10 @@
set category = "Abilities"
set hidden = TRUE
+ if(!isturf(loc))
+ to_chat(src,"You need more space to perform this action!")
+ return
+
//Blob form
if(temporary_form)
if(health < maxHealth*0.5)
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 2713e1beec..7d971ae539 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
@@ -183,7 +183,6 @@
/datum/species/protean/handle_environment_special(var/mob/living/carbon/human/H)
if((H.getActualBruteLoss() + H.getActualFireLoss()) > H.maxHealth*0.5 && isturf(H.loc)) //So, only if we're not a blob (we're in nullspace) or in someone (or a locker, really, but whatever)
- H.nano_intoblob()
return ..() //Any instakill shot runtimes since there are no organs after this. No point to not skip these checks, going to nullspace anyway.
var/obj/item/organ/internal/nano/refactory/refactory = locate() in H.internal_organs