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